diff --git a/blueprint.json b/blueprint.json index ee699a8c..11cf8f20 100644 --- a/blueprint.json +++ b/blueprint.json @@ -134,14 +134,15 @@ ], "cliGenerateOptionsSchematics": [ ["Name", "Alias", "Description"], - ["`--module `", "`-m`", "Generate a new module."], - ["`--middleware `", "`-mi`", "Generate a new middleware."], - ["`--service `", "`-s`", "Generate a new service."], - ["`--router `", "`-r`", "Generate a new router."], - ["`--entity `", "`-e`", "Generate a new entity."], - ["`--repository `", "`-re`", "Generate a new repository."], - ["`--migration `", "`-mi`", "Generate a new migration."], - ["`--validator `", "`-va`", "Generate a new validator."], + [">", "", "Component name to generate"], + ["`--module`", "`-m`", "Generate a new module."], + ["`--middleware`", "`-mi`", "Generate a new middleware."], + ["`--service`", "`-s`", "Generate a new service."], + ["`--router`", "`-r`", "Generate a new router."], + ["`--entity`", "`-e`", "Generate a new entity."], + ["`--repository`", "`-re`", "Generate a new repository."], + ["`--migration`", "`-mi`", "Generate a new migration."], + ["`--validator`", "`-va`", "Generate a new validator."], ["`--path`", "`-p`", "specify the path where the component must be generated (by default the component will be generated at [`src/modules//..ts`]."] ] } \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 37cf054d..6fe7d29a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -58,6 +58,7 @@ * [Command `generate` reference](#command-generate-reference) * [Usage](#usage) * [Options](#options) + * [Examples](#examples) * [Command `migrate` reference](#command-migrate-reference) * [Usage](#usage-1) * [Options](#options-1) @@ -310,6 +311,9 @@ to be able to run the migrations and show the list of applied and to be applied ### Command `generate` reference +Each time a component is generated, the cli will try to find the closest module to +that newly created component and add it to the `imports` list automatically. + #### Usage ```bash @@ -319,36 +323,31 @@ to be able to run the migrations and show the list of applied and to be applied #### Options -| Name | Alias | Description | -|-----------------------|-------|--------------------------------------------------| -| `--module ` | `-m` | Generate a new module. | -| `--middleware ` | `-mi` | Generate a new middleware. | -| `--service ` | `-s` | Generate a new service. | -| `--router ` | `-r` | Generate a new router. | -| `--entity ` | `-e` | Generate a new entity. | -| `--repository ` | `-re` | Generate a new repository. | -| `--migration ` | `-mi` | Generate a new migration. | -| `--validator ` | `-va` | Generate a new validator. | -| `--path` | `-p` | specify the path where the component must be generated (by default the component will be generated at [`src/modules//..ts`]. | - - -:point_right: __Examples__ +| Name | Alias | Description | +|----------------|-------|--------------------------------------------------| +| > | | Component name to generate | +| `--module` | `-m` | Generate a new module. | +| `--middleware` | `-mi` | Generate a new middleware. | +| `--service` | `-s` | Generate a new service. | +| `--router` | `-r` | Generate a new router. | +| `--entity` | `-e` | Generate a new entity. | +| `--repository` | `-re` | Generate a new repository. | +| `--migration` | `-mi` | Generate a new migration. | +| `--validator` | `-va` | Generate a new validator. | +| `--path` | `-p` | specify the path where the component must be generated (by default the component will be generated at [`src/modules//..ts`]. | -Without specifying the location `-p` - -```bash -./node_modules/.bin/medex g -m store -``` -> Generate the store modules at `src/modules/store/store.module.ts` +#### Examples -With specifying the location `-p` +Lets run the following command ```bash -./node_modules/.bin/medex g -m store -p src/modules +./node_modules/.bin/medex g -m myModule ``` -> Generate the store modules at `src/modules/store.module.ts` +This command will generate a new `myModule` component. Without specifying the path (`-p`) +where to generate the component, the cli will automatically create the directory `myModule` under `src`. +The result will be the generation of the module component at `src/modules/myModule/myModule.module.ts`. ### Command `migrate` reference diff --git a/docs/classes/Medusa.Medusa-1.md b/docs/classes/Medusa.Medusa-1.md index 814ace72..219ab1cd 100644 --- a/docs/classes/Medusa.Medusa-1.md +++ b/docs/classes/Medusa.Medusa-1.md @@ -36,7 +36,7 @@ Load medusa and apply all components #### Defined in -[src/Medusa.ts:38](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/Medusa.ts#L38) +[src/Medusa.ts:38](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/Medusa.ts#L38) ## Properties @@ -46,7 +46,7 @@ Load medusa and apply all components #### Defined in -[src/Medusa.ts:31](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/Medusa.ts#L31) +[src/Medusa.ts:31](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/Medusa.ts#L31) ___ @@ -56,7 +56,7 @@ ___ #### Defined in -[src/Medusa.ts:32](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/Medusa.ts#L32) +[src/Medusa.ts:32](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/Medusa.ts#L32) ## Methods @@ -76,4 +76,4 @@ ___ #### Defined in -[src/Medusa.ts:46](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/Medusa.ts#L46) +[src/Medusa.ts:46](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/Medusa.ts#L46) diff --git a/docs/classes/core_event_emmiter.Internals.CustomEventEmmiter.md b/docs/classes/core_event_emmiter.Internals.CustomEventEmmiter.md index 11fcc6f0..41b53ed2 100644 --- a/docs/classes/core_event_emmiter.Internals.CustomEventEmmiter.md +++ b/docs/classes/core_event_emmiter.Internals.CustomEventEmmiter.md @@ -41,7 +41,7 @@ EventEmitter.constructor #### Defined in -[src/core/event-emmiter.ts:21](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/event-emmiter.ts#L21) +[src/core/event-emmiter.ts:21](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/event-emmiter.ts#L21) ## Properties @@ -51,7 +51,7 @@ EventEmitter.constructor #### Defined in -[src/core/event-emmiter.ts:19](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/event-emmiter.ts#L19) +[src/core/event-emmiter.ts:19](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/event-emmiter.ts#L19) ## Methods @@ -80,7 +80,7 @@ Emit an asynchrone event entity based and wait for the result. #### Defined in -[src/core/event-emmiter.ts:80](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/event-emmiter.ts#L80) +[src/core/event-emmiter.ts:80](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/event-emmiter.ts#L80) ___ @@ -110,7 +110,7 @@ Register a new event handler. #### Defined in -[src/core/event-emmiter.ts:31](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/event-emmiter.ts#L31) +[src/core/event-emmiter.ts:31](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/event-emmiter.ts#L31) ___ @@ -132,7 +132,7 @@ Apply all event handlers hold by the `listenerDescriptor`. #### Defined in -[src/core/event-emmiter.ts:43](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/event-emmiter.ts#L43) +[src/core/event-emmiter.ts:43](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/event-emmiter.ts#L43) ___ @@ -146,4 +146,4 @@ ___ #### Defined in -[src/core/event-emmiter.ts:68](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/event-emmiter.ts#L68) +[src/core/event-emmiter.ts:68](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/event-emmiter.ts#L68) diff --git a/docs/classes/core_logger.Logger.md b/docs/classes/core_logger.Logger.md index 3b6e10b7..a2f2bfda 100644 --- a/docs/classes/core_logger.Logger.md +++ b/docs/classes/core_logger.Logger.md @@ -15,46 +15,61 @@ Internal logger to display information about the build. ### Properties +- [\_app](core_logger.Logger.md#_app) - [\_context](core_logger.Logger.md#_context) - [logsQueue](core_logger.Logger.md#logsqueue) ### Accessors +- [app](core_logger.Logger.md#app) - [context](core_logger.Logger.md#context) ### Methods +- [buildLog](core_logger.Logger.md#buildlog) - [error](core_logger.Logger.md#error) - [flush](core_logger.Logger.md#flush) - [log](core_logger.Logger.md#log) - [push](core_logger.Logger.md#push) +- [warn](core_logger.Logger.md#warn) - [contextualize](core_logger.Logger.md#contextualize) ## Constructors ### constructor -• **new Logger**(`context`) +• **new Logger**(`context`, `app`) #### Parameters | Name | Type | | :------ | :------ | | `context` | `string` | +| `app` | `string` | #### Defined in -[src/core/logger.ts:15](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/logger.ts#L15) +[src/core/logger.ts:20](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L20) ## Properties +### \_app + +• `Private` `Readonly` **\_app**: `string` + +#### Defined in + +[src/core/logger.ts:10](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L10) + +___ + ### \_context • `Private` `Readonly` **\_context**: `string` #### Defined in -[src/core/logger.ts:9](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/logger.ts#L9) +[src/core/logger.ts:9](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L9) ___ @@ -64,10 +79,24 @@ ___ #### Defined in -[src/core/logger.ts:8](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/logger.ts#L8) +[src/core/logger.ts:8](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L8) ## Accessors +### app + +• `get` **app**(): `string` + +#### Returns + +`string` + +#### Defined in + +[src/core/logger.ts:16](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L16) + +___ + ### context • `get` **context**(): `string` @@ -78,10 +107,34 @@ ___ #### Defined in -[src/core/logger.ts:11](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/logger.ts#L11) +[src/core/logger.ts:12](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L12) ## Methods +### buildLog + +▸ `Private` **buildLog**(`color`, `description`, ...`variables`): [`Logger`](core_logger.Logger.md) + +Build logs taking in count the level color + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `color` | `Chalk` | +| `description` | `string` | +| `...variables` | `string`[] | + +#### Returns + +[`Logger`](core_logger.Logger.md) + +#### Defined in + +[src/core/logger.ts:89](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L89) + +___ + ### error ▸ **error**(`description`, ...`variables`): [`Logger`](core_logger.Logger.md) @@ -101,7 +154,7 @@ Display error logs in red immediately #### Defined in -[src/core/logger.ts:56](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/logger.ts#L56) +[src/core/logger.ts:66](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L66) ___ @@ -109,7 +162,7 @@ ___ ▸ **flush**(): [`Logger`](core_logger.Logger.md) -Show all queues logs and then reset the queue. +display all queues logs and then reset the queue. #### Returns @@ -117,7 +170,7 @@ Show all queues logs and then reset the queue. #### Defined in -[src/core/logger.ts:68](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/logger.ts#L68) +[src/core/logger.ts:73](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L73) ___ @@ -140,7 +193,7 @@ Display log immediately. #### Defined in -[src/core/logger.ts:42](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/logger.ts#L42) +[src/core/logger.ts:48](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L48) ___ @@ -163,19 +216,43 @@ Push new logs to queue and then show them later on. #### Defined in -[src/core/logger.ts:28](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/logger.ts#L28) +[src/core/logger.ts:34](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L34) ___ -### contextualize +### warn -▸ `Static` **contextualize**(`context`): [`Logger`](core_logger.Logger.md) +▸ **warn**(`description`, ...`variables`): [`Logger`](core_logger.Logger.md) + +Display warning immediately. #### Parameters | Name | Type | | :------ | :------ | -| `context` | `string` | +| `description` | `string` | +| `...variables` | `string`[] | + +#### Returns + +[`Logger`](core_logger.Logger.md) + +#### Defined in + +[src/core/logger.ts:57](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L57) + +___ + +### contextualize + +▸ `Static` **contextualize**(`context`, `app?`): [`Logger`](core_logger.Logger.md) + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `context` | `string` | `undefined` | +| `app` | `string` | `'Server'` | #### Returns @@ -183,4 +260,4 @@ ___ #### Defined in -[src/core/logger.ts:19](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/logger.ts#L19) +[src/core/logger.ts:25](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/logger.ts#L25) diff --git a/docs/classes/core_metadata_reader.Internals.CustomMap.md b/docs/classes/core_metadata_reader.Internals.CustomMap.md index 8159979d..bf8d5ff2 100644 --- a/docs/classes/core_metadata_reader.Internals.CustomMap.md +++ b/docs/classes/core_metadata_reader.Internals.CustomMap.md @@ -84,4 +84,4 @@ Map.get #### Defined in -[src/core/metadata-reader.ts:5](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/metadata-reader.ts#L5) +[src/core/metadata-reader.ts:5](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/metadata-reader.ts#L5) diff --git a/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md b/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md index a7757f54..205ce1ee 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:41](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L41) +[src/decorators/onMedusaEntityEvent.decorator.ts:41](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L41) ## Properties @@ -55,7 +55,7 @@ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:39](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L39) +[src/decorators/onMedusaEntityEvent.decorator.ts:39](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L39) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:38](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L38) +[src/decorators/onMedusaEntityEvent.decorator.ts:38](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L38) ## Accessors @@ -79,7 +79,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:49](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L49) +[src/decorators/onMedusaEntityEvent.decorator.ts:49](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L49) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:45](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L45) +[src/decorators/onMedusaEntityEvent.decorator.ts:45](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L45) ## Methods @@ -120,7 +120,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:69](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L69) +[src/decorators/onMedusaEntityEvent.decorator.ts:69](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L69) ___ @@ -146,7 +146,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:57](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L57) +[src/decorators/onMedusaEntityEvent.decorator.ts:57](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L57) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:83](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L83) +[src/decorators/onMedusaEntityEvent.decorator.ts:83](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L83) ___ @@ -199,7 +199,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:65](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L65) +[src/decorators/onMedusaEntityEvent.decorator.ts:65](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L65) ___ @@ -226,7 +226,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:76](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L76) +[src/decorators/onMedusaEntityEvent.decorator.ts:76](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L76) ___ @@ -252,7 +252,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:61](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L61) +[src/decorators/onMedusaEntityEvent.decorator.ts:61](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L61) ___ @@ -280,7 +280,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:90](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L90) +[src/decorators/onMedusaEntityEvent.decorator.ts:90](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L90) ___ @@ -300,4 +300,4 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:53](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L53) +[src/decorators/onMedusaEntityEvent.decorator.ts:53](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L53) diff --git a/docs/interfaces/core_types.MedusaMiddleware.md b/docs/interfaces/core_types.MedusaMiddleware.md index a38ce9bb..19246dff 100644 --- a/docs/interfaces/core_types.MedusaMiddleware.md +++ b/docs/interfaces/core_types.MedusaMiddleware.md @@ -33,4 +33,4 @@ Describe a custom middleware instance. #### Defined in -[src/core/types.ts:152](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L152) +[src/core/types.ts:152](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L152) diff --git a/docs/interfaces/core_types.Type.md b/docs/interfaces/core_types.Type.md index 73d2e06c..addfd6cf 100644 --- a/docs/interfaces/core_types.Type.md +++ b/docs/interfaces/core_types.Type.md @@ -40,4 +40,4 @@ Function.constructor #### Defined in -[src/core/types.ts:6](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L6) +[src/core/types.ts:6](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L6) diff --git a/docs/interfaces/modules_monitoring.MonitoringOptions.md b/docs/interfaces/modules_monitoring.MonitoringOptions.md index a697f461..fd2ec57a 100644 --- a/docs/interfaces/modules_monitoring.MonitoringOptions.md +++ b/docs/interfaces/modules_monitoring.MonitoringOptions.md @@ -35,7 +35,7 @@ #### Defined in -[src/modules/monitoring.ts:15](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L15) +[src/modules/monitoring.ts:15](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L15) ___ @@ -45,7 +45,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:17](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L17) +[src/modules/monitoring.ts:17](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L17) ___ @@ -55,7 +55,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:12](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L12) +[src/modules/monitoring.ts:12](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L12) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:19](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L19) +[src/modules/monitoring.ts:19](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L19) ___ @@ -75,7 +75,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:7](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L7) +[src/modules/monitoring.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L7) ___ @@ -85,7 +85,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:8](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L8) +[src/modules/monitoring.ts:8](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L8) ___ @@ -95,7 +95,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:13](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L13) +[src/modules/monitoring.ts:13](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L13) ___ @@ -105,7 +105,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:14](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L14) +[src/modules/monitoring.ts:14](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L14) ___ @@ -115,7 +115,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:18](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L18) +[src/modules/monitoring.ts:18](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L18) ___ @@ -125,7 +125,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:10](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L10) +[src/modules/monitoring.ts:10](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L10) ___ @@ -135,7 +135,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:9](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L9) +[src/modules/monitoring.ts:9](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L9) ___ @@ -145,7 +145,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:11](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L11) +[src/modules/monitoring.ts:11](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L11) ___ @@ -155,7 +155,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:6](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L6) +[src/modules/monitoring.ts:6](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L6) ## Methods @@ -177,7 +177,7 @@ ___ #### Defined in -[src/modules/monitoring.ts:20](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L20) +[src/modules/monitoring.ts:20](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L20) ___ @@ -199,4 +199,4 @@ ___ #### Defined in -[src/modules/monitoring.ts:16](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L16) +[src/modules/monitoring.ts:16](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L16) diff --git a/docs/modules.md b/docs/modules.md index dde547c7..040f1d43 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -7,8 +7,8 @@ ### Modules - [Medusa](modules/Medusa.md) -- [cli/command/generate-component](modules/cli_command_generate_component.md) -- [cli/command/migrate](modules/cli_command_migrate.md) +- [cli/commands/generate-component](modules/cli_commands_generate_component.md) +- [cli/commands/migrate](modules/cli_commands_migrate.md) - [cli/templates](modules/cli_templates.md) - [cli/templates/entity-template](modules/cli_templates_entity_template.md) - [cli/templates/middleware-template](modules/cli_templates_middleware_template.md) @@ -18,8 +18,8 @@ - [cli/templates/router-template](modules/cli_templates_router_template.md) - [cli/templates/service-template](modules/cli_templates_service_template.md) - [cli/templates/validator-template](modules/cli_templates_validator_template.md) -- [cli/utils/check-file-exists](modules/cli_utils_check_file_exists.md) - [cli/utils/create-directory](modules/cli_utils_create_directory.md) +- [cli/utils/lookup-closest-module](modules/cli_utils_lookup_closest_module.md) - [cli/utils/parse-component-value](modules/cli_utils_parse_component_value.md) - [core](modules/core.md) - [core/constants](modules/core_constants.md) diff --git a/docs/modules/cli_command_generate_component.Internals.md b/docs/modules/cli_command_generate_component.Internals.md deleted file mode 100644 index 3e88b247..00000000 --- a/docs/modules/cli_command_generate_component.Internals.md +++ /dev/null @@ -1,35 +0,0 @@ -[medusa-extender](../README.md) / [Exports](../modules.md) / [cli/command/generate-component](cli_command_generate_component.md) / Internals - -# Namespace: Internals - -[cli/command/generate-component](cli_command_generate_component.md).Internals - -## Table of contents - -### Type aliases - -- [Options](cli_command_generate_component.Internals.md#options) - -## Type aliases - -### Options - -Ƭ **Options**: `Object` - -#### Type declaration - -| Name | Type | -| :------ | :------ | -| `entity?` | `string` | -| `middleware?` | `string` | -| `migration?` | `string` | -| `module?` | `string` | -| `path?` | `string` | -| `repository?` | `string` | -| `router?` | `string` | -| `service?` | `string` | -| `validator?` | `string` | - -#### Defined in - -[src/cli/command/generate-component.ts:17](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/command/generate-component.ts#L17) diff --git a/docs/modules/cli_command_generate_component.md b/docs/modules/cli_command_generate_component.md deleted file mode 100644 index 2d37b66e..00000000 --- a/docs/modules/cli_command_generate_component.md +++ /dev/null @@ -1,59 +0,0 @@ -[medusa-extender](../README.md) / [Exports](../modules.md) / cli/command/generate-component - -# Module: cli/command/generate-component - -## Table of contents - -### Namespaces - -- [Internals](cli_command_generate_component.Internals.md) - -### Functions - -- [createComponentIfNecessary](cli_command_generate_component.md#createcomponentifnecessary) -- [generateComponent](cli_command_generate_component.md#generatecomponent) - -## Functions - -### createComponentIfNecessary - -▸ **createComponentIfNecessary**(`__namedParameters`, `content`): `void` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `__namedParameters` | `Object` | -| `__namedParameters.componentFileName` | `string` | -| `__namedParameters.componentName` | `string` | -| `__namedParameters.fullDestinationPath` | `string` | -| `__namedParameters.relativeDestinationPath` | `string` | -| `content` | `string` | - -#### Returns - -`void` - -#### Defined in - -[src/cli/command/generate-component.ts:91](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/command/generate-component.ts#L91) - -___ - -### generateComponent - -▸ **generateComponent**(`__namedParameters`): `void` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `__namedParameters` | [`Options`](cli_command_generate_component.Internals.md#options) | - -#### Returns - -`void` - -#### Defined in - -[src/cli/command/generate-component.ts:29](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/command/generate-component.ts#L29) diff --git a/docs/modules/cli_commands_generate_component.Internals.md b/docs/modules/cli_commands_generate_component.Internals.md new file mode 100644 index 00000000..089822a0 --- /dev/null +++ b/docs/modules/cli_commands_generate_component.Internals.md @@ -0,0 +1,35 @@ +[medusa-extender](../README.md) / [Exports](../modules.md) / [cli/commands/generate-component](cli_commands_generate_component.md) / Internals + +# Namespace: Internals + +[cli/commands/generate-component](cli_commands_generate_component.md).Internals + +## Table of contents + +### Type aliases + +- [Options](cli_commands_generate_component.Internals.md#options) + +## Type aliases + +### Options + +Ƭ **Options**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `entity?` | `boolean` | +| `middleware?` | `boolean` | +| `migration?` | `boolean` | +| `module?` | `boolean` | +| `path?` | `string` | +| `repository?` | `boolean` | +| `router?` | `boolean` | +| `service?` | `boolean` | +| `validator?` | `boolean` | + +#### Defined in + +[src/cli/commands/generate-component.ts:18](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/commands/generate-component.ts#L18) diff --git a/docs/modules/cli_commands_generate_component.md b/docs/modules/cli_commands_generate_component.md new file mode 100644 index 00000000..75dd851f --- /dev/null +++ b/docs/modules/cli_commands_generate_component.md @@ -0,0 +1,86 @@ +[medusa-extender](../README.md) / [Exports](../modules.md) / cli/commands/generate-component + +# Module: cli/commands/generate-component + +## Table of contents + +### Namespaces + +- [Internals](cli_commands_generate_component.Internals.md) + +### Functions + +- [createComponentIfNecessary](cli_commands_generate_component.md#createcomponentifnecessary) +- [generateComponent](cli_commands_generate_component.md#generatecomponent) +- [updateModuleImports](cli_commands_generate_component.md#updatemoduleimports) + +## Functions + +### createComponentIfNecessary + +▸ **createComponentIfNecessary**(`__namedParameters`, `content`): `void` + +Create the component file and fill it with the template content. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `__namedParameters` | `Object` | +| `__namedParameters.componentFileName` | `string` | +| `__namedParameters.componentName` | `string` | +| `__namedParameters.fullDestinationPath` | `string` | +| `content` | `string` | + +#### Returns + +`void` + +#### Defined in + +[src/cli/commands/generate-component.ts:106](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/commands/generate-component.ts#L106) + +___ + +### generateComponent + +▸ **generateComponent**(`name`, `__namedParameters`): `void` + +Generate the required components from the user command. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `name` | `string` | +| `__namedParameters` | [`Options`](cli_commands_generate_component.Internals.md#options) | + +#### Returns + +`void` + +#### Defined in + +[src/cli/commands/generate-component.ts:45](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/commands/generate-component.ts#L45) + +___ + +### updateModuleImports + +▸ **updateModuleImports**(`fullDestinationPath`): `void` + +Lookup for the closest module from the component and update its imports. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `fullDestinationPath` | `string` | + +#### Returns + +`void` + +#### Defined in + +[src/cli/commands/generate-component.ts:133](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/commands/generate-component.ts#L133) diff --git a/docs/modules/cli_command_migrate.md b/docs/modules/cli_commands_migrate.md similarity index 55% rename from docs/modules/cli_command_migrate.md rename to docs/modules/cli_commands_migrate.md index d432db98..e483d4f0 100644 --- a/docs/modules/cli_command_migrate.md +++ b/docs/modules/cli_commands_migrate.md @@ -1,12 +1,12 @@ -[medusa-extender](../README.md) / [Exports](../modules.md) / cli/command/migrate +[medusa-extender](../README.md) / [Exports](../modules.md) / cli/commands/migrate -# Module: cli/command/migrate +# Module: cli/commands/migrate ## Table of contents ### Functions -- [migrate](cli_command_migrate.md#migrate) +- [migrate](cli_commands_migrate.md#migrate) ## Functions @@ -14,6 +14,8 @@ ▸ **migrate**(`__namedParameters`): `Promise`<`void`\> +Run the migrations using the medusa-config.js config. + #### Parameters | Name | Type | @@ -26,4 +28,4 @@ #### Defined in -[src/cli/command/migrate.ts:4](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/command/migrate.ts#L4) +[src/cli/commands/migrate.ts:9](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/commands/migrate.ts#L9) diff --git a/docs/modules/cli_templates_entity_template.md b/docs/modules/cli_templates_entity_template.md index b0ae141c..d820f1c2 100644 --- a/docs/modules/cli_templates_entity_template.md +++ b/docs/modules/cli_templates_entity_template.md @@ -14,6 +14,8 @@ ▸ **getEntityTemplate**(`entityName`): `string` +Provide a basic template for the entity component generation. + #### Parameters | Name | Type | @@ -26,4 +28,4 @@ #### Defined in -[src/cli/templates/entity-template.ts:3](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/templates/entity-template.ts#L3) +[src/cli/templates/entity-template.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/templates/entity-template.ts#L7) diff --git a/docs/modules/cli_templates_middleware_template.md b/docs/modules/cli_templates_middleware_template.md index 666d2c47..78fb34a6 100644 --- a/docs/modules/cli_templates_middleware_template.md +++ b/docs/modules/cli_templates_middleware_template.md @@ -14,6 +14,8 @@ ▸ **getMiddlewareTemplate**(`middlewareName`): `string` +Provide a basic template for the middleware component generation. + #### Parameters | Name | Type | @@ -26,4 +28,4 @@ #### Defined in -[src/cli/templates/middleware-template.ts:3](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/templates/middleware-template.ts#L3) +[src/cli/templates/middleware-template.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/templates/middleware-template.ts#L7) diff --git a/docs/modules/cli_templates_migration_template.md b/docs/modules/cli_templates_migration_template.md index 0c2d78cc..bc51381e 100644 --- a/docs/modules/cli_templates_migration_template.md +++ b/docs/modules/cli_templates_migration_template.md @@ -14,6 +14,8 @@ ▸ **getMigrationTemplate**(`migrationName`): `string` +Provide a basic template for the migration component generation. + #### Parameters | Name | Type | @@ -26,4 +28,4 @@ #### Defined in -[src/cli/templates/migration-template.ts:3](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/templates/migration-template.ts#L3) +[src/cli/templates/migration-template.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/templates/migration-template.ts#L7) diff --git a/docs/modules/cli_templates_module_template.md b/docs/modules/cli_templates_module_template.md index 719c30b4..8685fb87 100644 --- a/docs/modules/cli_templates_module_template.md +++ b/docs/modules/cli_templates_module_template.md @@ -14,6 +14,8 @@ ▸ **getModuleTemplate**(`moduleName`): `string` +Provide a basic template for the module component generation. + #### Parameters | Name | Type | @@ -26,4 +28,4 @@ #### Defined in -[src/cli/templates/module-template.ts:3](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/templates/module-template.ts#L3) +[src/cli/templates/module-template.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/templates/module-template.ts#L7) diff --git a/docs/modules/cli_templates_repository_template.md b/docs/modules/cli_templates_repository_template.md index 7bd48a4f..96e17b36 100644 --- a/docs/modules/cli_templates_repository_template.md +++ b/docs/modules/cli_templates_repository_template.md @@ -14,6 +14,8 @@ ▸ **getRepositoryTemplate**(`repositoryName`): `string` +Provide a basic template for the repository component generation. + #### Parameters | Name | Type | @@ -26,4 +28,4 @@ #### Defined in -[src/cli/templates/repository-template.ts:3](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/templates/repository-template.ts#L3) +[src/cli/templates/repository-template.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/templates/repository-template.ts#L7) diff --git a/docs/modules/cli_templates_router_template.md b/docs/modules/cli_templates_router_template.md index 845d4e68..18c2e2a7 100644 --- a/docs/modules/cli_templates_router_template.md +++ b/docs/modules/cli_templates_router_template.md @@ -14,6 +14,8 @@ ▸ **getRouterTemplate**(`routerName`): `string` +Provide a basic template for the router component generation. + #### Parameters | Name | Type | @@ -26,4 +28,4 @@ #### Defined in -[src/cli/templates/router-template.ts:3](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/templates/router-template.ts#L3) +[src/cli/templates/router-template.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/templates/router-template.ts#L7) diff --git a/docs/modules/cli_templates_service_template.md b/docs/modules/cli_templates_service_template.md index b7246aad..15721914 100644 --- a/docs/modules/cli_templates_service_template.md +++ b/docs/modules/cli_templates_service_template.md @@ -14,6 +14,8 @@ ▸ **getServiceTemplate**(`serviceName`): `string` +Provide a basic template for the service component generation. + #### Parameters | Name | Type | @@ -26,4 +28,4 @@ #### Defined in -[src/cli/templates/service-template.ts:3](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/templates/service-template.ts#L3) +[src/cli/templates/service-template.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/templates/service-template.ts#L7) diff --git a/docs/modules/cli_templates_validator_template.md b/docs/modules/cli_templates_validator_template.md index e781c249..4e23eaf0 100644 --- a/docs/modules/cli_templates_validator_template.md +++ b/docs/modules/cli_templates_validator_template.md @@ -14,6 +14,8 @@ ▸ **getValidatorTemplate**(`validatorName`): `string` +Provide a basic template for the validator component generation. + #### Parameters | Name | Type | @@ -26,4 +28,4 @@ #### Defined in -[src/cli/templates/validator-template.ts:3](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/templates/validator-template.ts#L3) +[src/cli/templates/validator-template.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/templates/validator-template.ts#L7) diff --git a/docs/modules/cli_utils_check_file_exists.md b/docs/modules/cli_utils_check_file_exists.md deleted file mode 100644 index 5963490f..00000000 --- a/docs/modules/cli_utils_check_file_exists.md +++ /dev/null @@ -1,30 +0,0 @@ -[medusa-extender](../README.md) / [Exports](../modules.md) / cli/utils/check-file-exists - -# Module: cli/utils/check-file-exists - -## Table of contents - -### Functions - -- [doesFileExists](cli_utils_check_file_exists.md#doesfileexists) - -## Functions - -### doesFileExists - -▸ **doesFileExists**(`path`, `componentName`): `boolean` - -#### Parameters - -| Name | Type | -| :------ | :------ | -| `path` | `string` | -| `componentName` | `string` | - -#### Returns - -`boolean` - -#### Defined in - -[src/cli/utils/check-file-exists.ts:4](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/utils/check-file-exists.ts#L4) diff --git a/docs/modules/cli_utils_create_directory.md b/docs/modules/cli_utils_create_directory.md index a54c615f..15bd8491 100644 --- a/docs/modules/cli_utils_create_directory.md +++ b/docs/modules/cli_utils_create_directory.md @@ -12,14 +12,17 @@ ### createDirectoryIfNecessary -▸ **createDirectoryIfNecessary**(`relativeDestinationPath`, `fullDestinationPath`): `void` +▸ **createDirectoryIfNecessary**(`relativeDestinationPath`, `fullDestinationPath`, `logger?`): `void` + +Create the new directory, if necessary, that will receive the components. #### Parameters -| Name | Type | -| :------ | :------ | -| `relativeDestinationPath` | `string` | -| `fullDestinationPath` | `string` | +| Name | Type | Default value | +| :------ | :------ | :------ | +| `relativeDestinationPath` | `string` | `undefined` | +| `fullDestinationPath` | `string` | `undefined` | +| `logger` | [`Logger`](../classes/core_logger.Logger.md) \| `Console` | `console` | #### Returns @@ -27,4 +30,4 @@ #### Defined in -[src/cli/utils/create-directory.ts:4](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/utils/create-directory.ts#L4) +[src/cli/utils/create-directory.ts:10](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/utils/create-directory.ts#L10) diff --git a/docs/modules/cli_utils_lookup_closest_module.md b/docs/modules/cli_utils_lookup_closest_module.md new file mode 100644 index 00000000..06bd124e --- /dev/null +++ b/docs/modules/cli_utils_lookup_closest_module.md @@ -0,0 +1,32 @@ +[medusa-extender](../README.md) / [Exports](../modules.md) / cli/utils/lookup-closest-module + +# Module: cli/utils/lookup-closest-module + +## Table of contents + +### Functions + +- [lookupClosestModule](cli_utils_lookup_closest_module.md#lookupclosestmodule) + +## Functions + +### lookupClosestModule + +▸ **lookupClosestModule**(`fullDestinationPath`, `isMain?`): `string` \| `undefined` + +Lookup for the closest module component from the destination path. + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `fullDestinationPath` | `string` | `undefined` | +| `isMain` | `boolean` | `true` | + +#### Returns + +`string` \| `undefined` + +#### Defined in + +[src/cli/utils/lookup-closest-module.ts:9](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/utils/lookup-closest-module.ts#L9) diff --git a/docs/modules/cli_utils_parse_component_value.md b/docs/modules/cli_utils_parse_component_value.md index 34c1572b..5bfa2977 100644 --- a/docs/modules/cli_utils_parse_component_value.md +++ b/docs/modules/cli_utils_parse_component_value.md @@ -14,6 +14,8 @@ ▸ **parseComponentValue**(`name`, `componentType`, `path?`): `Object` +Parse the component information to create a kind of descriptor. + #### Parameters | Name | Type | @@ -35,4 +37,4 @@ #### Defined in -[src/cli/utils/parse-component-value.ts:1](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/cli/utils/parse-component-value.ts#L1) +[src/cli/utils/parse-component-value.ts:7](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/cli/utils/parse-component-value.ts#L7) diff --git a/docs/modules/core_constants.md b/docs/modules/core_constants.md index 7f8866fc..9bc9a7fe 100644 --- a/docs/modules/core_constants.md +++ b/docs/modules/core_constants.md @@ -20,7 +20,7 @@ Metadata key to store config from decorated injectables. #### Defined in -[src/core/constants.ts:9](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/constants.ts#L9) +[src/core/constants.ts:9](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/constants.ts#L9) ___ @@ -66,7 +66,7 @@ Hold the name of the medusa services registered into the container for later on #### Defined in -[src/core/constants.ts:14](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/constants.ts#L14) +[src/core/constants.ts:14](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/constants.ts#L14) ___ @@ -78,4 +78,4 @@ Metadata key to store config from decorated injectables. #### Defined in -[src/core/constants.ts:4](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/constants.ts#L4) +[src/core/constants.ts:4](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/constants.ts#L4) diff --git a/docs/modules/core_event_emmiter.Internals.md b/docs/modules/core_event_emmiter.Internals.md index a1506f36..c16f228d 100644 --- a/docs/modules/core_event_emmiter.Internals.md +++ b/docs/modules/core_event_emmiter.Internals.md @@ -38,4 +38,4 @@ A listener descriptor. #### Defined in -[src/core/event-emmiter.ts:9](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/event-emmiter.ts#L9) +[src/core/event-emmiter.ts:9](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/event-emmiter.ts#L9) diff --git a/docs/modules/core_event_emmiter.md b/docs/modules/core_event_emmiter.md index a1ed5466..34695d8a 100644 --- a/docs/modules/core_event_emmiter.md +++ b/docs/modules/core_event_emmiter.md @@ -23,4 +23,4 @@ Export the instance of the event emmiter. #### Defined in -[src/core/event-emmiter.ts:102](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/event-emmiter.ts#L102) +[src/core/event-emmiter.ts:102](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/event-emmiter.ts#L102) diff --git a/docs/modules/core_metadata_reader.md b/docs/modules/core_metadata_reader.md index 4a876e58..8e01f656 100644 --- a/docs/modules/core_metadata_reader.md +++ b/docs/modules/core_metadata_reader.md @@ -41,7 +41,7 @@ Return the options from components. #### Defined in -[src/core/metadata-reader.ts:49](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/metadata-reader.ts#L49) +[src/core/metadata-reader.ts:49](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/metadata-reader.ts#L49) ___ @@ -65,4 +65,4 @@ Read all metadata from the imported modules and extract components that will be #### Defined in -[src/core/metadata-reader.ts:16](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/metadata-reader.ts#L16) +[src/core/metadata-reader.ts:16](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/metadata-reader.ts#L16) diff --git a/docs/modules/core_package_loader.md b/docs/modules/core_package_loader.md index 0f7a83a3..72eb37a8 100644 --- a/docs/modules/core_package_loader.md +++ b/docs/modules/core_package_loader.md @@ -24,7 +24,7 @@ Return the install command from the user package manager. #### Defined in -[src/core/package-loader.ts:41](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/package-loader.ts#L41) +[src/core/package-loader.ts:41](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/package-loader.ts#L41) ___ @@ -48,4 +48,4 @@ Load packages at run time. #### Defined in -[src/core/package-loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/package-loader.ts#L13) +[src/core/package-loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/package-loader.ts#L13) diff --git a/docs/modules/core_types.md b/docs/modules/core_types.md index c73e2e78..086b4d1a 100644 --- a/docs/modules/core_types.md +++ b/docs/modules/core_types.md @@ -53,7 +53,7 @@ #### Defined in -[src/core/types.ts:9](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L9) +[src/core/types.ts:9](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L9) ___ @@ -78,7 +78,7 @@ Defines the injection options for entities. #### Defined in -[src/core/types.ts:26](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L26) +[src/core/types.ts:26](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L26) ___ @@ -96,7 +96,7 @@ Determine which options type it actually is depending on the component type. #### Defined in -[src/core/types.ts:94](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L94) +[src/core/types.ts:94](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L94) ___ @@ -114,7 +114,7 @@ Determine which options type it actually is depending on the component type. #### Defined in -[src/core/types.ts:117](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L117) +[src/core/types.ts:117](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L117) ___ @@ -126,7 +126,7 @@ Components that does not required any other options that Type. #### Defined in -[src/core/types.ts:14](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L14) +[src/core/types.ts:14](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L14) ___ @@ -144,7 +144,7 @@ Union of all options type possible for injectable. #### Defined in -[src/core/types.ts:83](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L83) +[src/core/types.ts:83](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L83) ___ @@ -156,7 +156,7 @@ Describe the expected request from a middleware [MedusaMiddleware](../interfaces #### Defined in -[src/core/types.ts:130](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L130) +[src/core/types.ts:130](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L130) ___ @@ -175,7 +175,7 @@ Medusa request extended. #### Defined in -[src/core/types.ts:123](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L123) +[src/core/types.ts:123](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L123) ___ @@ -185,7 +185,7 @@ ___ #### Defined in -[src/core/types.ts:137](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L137) +[src/core/types.ts:137](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L137) ___ @@ -204,7 +204,7 @@ Describe all the available options for the Route [MedusaMiddleware](../interface #### Defined in -[src/core/types.ts:142](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L142) +[src/core/types.ts:142](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L142) ___ @@ -223,7 +223,7 @@ Defines the injection options for middlewares. #### Defined in -[src/core/types.ts:68](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L68) +[src/core/types.ts:68](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L68) ___ @@ -242,7 +242,7 @@ Mix the return type of two objects. #### Defined in -[src/core/types.ts:158](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L158) +[src/core/types.ts:158](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L158) ___ @@ -267,7 +267,7 @@ Defines the injection options for services, entities, repositories. #### Defined in -[src/core/types.ts:43](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L43) +[src/core/types.ts:43](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L43) ___ @@ -285,7 +285,7 @@ Defines the injection options for routes. #### Defined in -[src/core/types.ts:61](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L61) +[src/core/types.ts:61](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L61) ___ @@ -306,7 +306,7 @@ Define a router and its configuration. #### Defined in -[src/core/types.ts:51](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L51) +[src/core/types.ts:51](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L51) ___ @@ -332,7 +332,7 @@ Defines the injection options for service. #### Defined in -[src/core/types.ts:34](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L34) +[src/core/types.ts:34](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L34) ___ @@ -356,4 +356,4 @@ Defines the injection options for routes. #### Defined in -[src/core/types.ts:76](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/types.ts#L76) +[src/core/types.ts:76](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/types.ts#L76) diff --git a/docs/modules/core_utils.md b/docs/modules/core_utils.md index ba3aede8..0bcfcc25 100644 --- a/docs/modules/core_utils.md +++ b/docs/modules/core_utils.md @@ -37,7 +37,7 @@ Attach a new subscriber to a specific entities. #### Defined in -[src/core/utils.ts:30](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/utils.ts#L30) +[src/core/utils.ts:30](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/utils.ts#L30) ___ @@ -67,4 +67,4 @@ Since it is not possible to use multiple extend, you can use that utilities to a #### Defined in -[src/core/utils.ts:10](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/core/utils.ts#L10) +[src/core/utils.ts:10](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/core/utils.ts#L10) diff --git a/docs/modules/decorators_components_decorator.md b/docs/modules/decorators_components_decorator.md index 317db17c..ce295841 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/8d611e7/src/decorators/components.decorator.ts#L16) +[src/decorators/components.decorator.ts:16](https://github.com/adrien2p/medusa-extender/blob/30feff3/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/8d611e7/src/decorators/components.decorator.ts#L43) +[src/decorators/components.decorator.ts:43](https://github.com/adrien2p/medusa-extender/blob/30feff3/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/8d611e7/src/decorators/components.decorator.ts#L51) +[src/decorators/components.decorator.ts:51](https://github.com/adrien2p/medusa-extender/blob/30feff3/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/8d611e7/src/decorators/components.decorator.ts#L34) +[src/decorators/components.decorator.ts:34](https://github.com/adrien2p/medusa-extender/blob/30feff3/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/8d611e7/src/decorators/components.decorator.ts#L60) +[src/decorators/components.decorator.ts:60](https://github.com/adrien2p/medusa-extender/blob/30feff3/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/8d611e7/src/decorators/components.decorator.ts#L25) +[src/decorators/components.decorator.ts:25](https://github.com/adrien2p/medusa-extender/blob/30feff3/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/8d611e7/src/decorators/components.decorator.ts#L69) +[src/decorators/components.decorator.ts:69](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/components.decorator.ts#L69) diff --git a/docs/modules/decorators_helpers_build_component_decorator.md b/docs/modules/decorators_helpers_build_component_decorator.md index b73463ef..b5ee9414 100644 --- a/docs/modules/decorators_helpers_build_component_decorator.md +++ b/docs/modules/decorators_helpers_build_component_decorator.md @@ -32,4 +32,4 @@ #### Defined in -[src/decorators/helpers/build-component-decorator.ts:4](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/helpers/build-component-decorator.ts#L4) +[src/decorators/helpers/build-component-decorator.ts:4](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/helpers/build-component-decorator.ts#L4) diff --git a/docs/modules/decorators_module_decorator.md b/docs/modules/decorators_module_decorator.md index 5fe5e2c6..89adc8b0 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/8d611e7/src/decorators/module.decorator.ts#L9) +[src/decorators/module.decorator.ts:9](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/module.decorator.ts#L9) diff --git a/docs/modules/decorators_onMedusaEntityEvent_decorator.md b/docs/modules/decorators_onMedusaEntityEvent_decorator.md index 28b995ba..87792d1d 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:10](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L10) +[src/decorators/onMedusaEntityEvent.decorator.ts:10](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L10) ___ @@ -41,7 +41,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:5](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L5) +[src/decorators/onMedusaEntityEvent.decorator.ts:5](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L5) ___ @@ -60,7 +60,7 @@ Event types that can be emitted. #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:15](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L15) +[src/decorators/onMedusaEntityEvent.decorator.ts:15](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L15) ___ @@ -86,7 +86,7 @@ The arguments expected by the [OnMedusaEntityEvent](../classes/decorators_onMedu #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:24](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L24) +[src/decorators/onMedusaEntityEvent.decorator.ts:24](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L24) ___ @@ -112,4 +112,4 @@ The arguments expected by the event handler. #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:32](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/decorators/onMedusaEntityEvent.decorator.ts#L32) +[src/decorators/onMedusaEntityEvent.decorator.ts:32](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/decorators/onMedusaEntityEvent.decorator.ts#L32) diff --git a/docs/modules/loaders_admin_api_loader.md b/docs/modules/loaders_admin_api_loader.md index 4f7457e7..52033724 100644 --- a/docs/modules/loaders_admin_api_loader.md +++ b/docs/modules/loaders_admin_api_loader.md @@ -31,4 +31,4 @@ Apply middlewares and routes on the underlying @medusajs admin API. #### Defined in -[src/loaders/admin-api.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/admin-api.loader.ts#L13) +[src/loaders/admin-api.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/admin-api.loader.ts#L13) diff --git a/docs/modules/loaders_database_loader.md b/docs/modules/loaders_database_loader.md index 08eaf79d..8ad30e0a 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/8d611e7/src/loaders/database.loader.ts#L5) +[src/loaders/database.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/database.loader.ts#L5) diff --git a/docs/modules/loaders_entities_loader.md b/docs/modules/loaders_entities_loader.md index 77f574e6..c682ed44 100644 --- a/docs/modules/loaders_entities_loader.md +++ b/docs/modules/loaders_entities_loader.md @@ -33,7 +33,7 @@ Load all custom entities into the underlying @medusajs instance. #### Defined in -[src/loaders/entities.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/entities.loader.ts#L13) +[src/loaders/entities.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/entities.loader.ts#L13) ___ @@ -56,7 +56,7 @@ Load all custom entities that override @medusajs instance entities. #### Defined in -[src/loaders/entities.loader.ts:36](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/entities.loader.ts#L36) +[src/loaders/entities.loader.ts:36](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/entities.loader.ts#L36) ___ @@ -76,7 +76,7 @@ ___ #### Defined in -[src/loaders/entities.loader.ts:63](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/entities.loader.ts#L63) +[src/loaders/entities.loader.ts:63](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/entities.loader.ts#L63) ___ @@ -97,4 +97,4 @@ ___ #### Defined in -[src/loaders/entities.loader.ts:51](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/entities.loader.ts#L51) +[src/loaders/entities.loader.ts:51](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/entities.loader.ts#L51) diff --git a/docs/modules/loaders_helpers_apply_middlewares.md b/docs/modules/loaders_helpers_apply_middlewares.md index 02d4645d..c29ad8b0 100644 --- a/docs/modules/loaders_helpers_apply_middlewares.md +++ b/docs/modules/loaders_helpers_apply_middlewares.md @@ -31,7 +31,7 @@ Apply all middlewares on the app that must be applied after the @medusajs authen #### Defined in -[src/loaders/helpers/apply-middlewares.ts:40](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/helpers/apply-middlewares.ts#L40) +[src/loaders/helpers/apply-middlewares.ts:40](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/helpers/apply-middlewares.ts#L40) ___ @@ -55,4 +55,4 @@ Apply all middlewares on the app that must be applied before the @medusajs authe #### Defined in -[src/loaders/helpers/apply-middlewares.ts:18](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/helpers/apply-middlewares.ts#L18) +[src/loaders/helpers/apply-middlewares.ts:18](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/helpers/apply-middlewares.ts#L18) diff --git a/docs/modules/loaders_helpers_apply_routers.md b/docs/modules/loaders_helpers_apply_routers.md index 9c13e13c..13665aa0 100644 --- a/docs/modules/loaders_helpers_apply_routers.md +++ b/docs/modules/loaders_helpers_apply_routers.md @@ -31,7 +31,7 @@ Apply all routes on the app that must be applied after the @medusajs authenticat #### Defined in -[src/loaders/helpers/apply-routers.ts:26](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/helpers/apply-routers.ts#L26) +[src/loaders/helpers/apply-routers.ts:26](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/helpers/apply-routers.ts#L26) ___ @@ -55,4 +55,4 @@ Apply all routes on the app that must be applied before the @medusajs authentica #### Defined in -[src/loaders/helpers/apply-routers.ts:10](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/helpers/apply-routers.ts#L10) +[src/loaders/helpers/apply-routers.ts:10](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/helpers/apply-routers.ts#L10) diff --git a/docs/modules/loaders_migrations_loader.md b/docs/modules/loaders_migrations_loader.md index c126135d..88a808c6 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:13](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/migrations.loader.ts#L13) +[src/loaders/migrations.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/migrations.loader.ts#L13) diff --git a/docs/modules/loaders_plugins_loader.md b/docs/modules/loaders_plugins_loader.md index a4692097..314a456b 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/8d611e7/src/loaders/plugins.loader.ts#L11) +[src/loaders/plugins.loader.ts:11](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/plugins.loader.ts#L11) diff --git a/docs/modules/loaders_repository_loader.md b/docs/modules/loaders_repository_loader.md index 4ed7c3f3..eaebbb09 100644 --- a/docs/modules/loaders_repository_loader.md +++ b/docs/modules/loaders_repository_loader.md @@ -30,7 +30,7 @@ Load all custom repositories that override @medusajs instance entities. #### Defined in -[src/loaders/repository.loader.ts:37](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/repository.loader.ts#L37) +[src/loaders/repository.loader.ts:37](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/repository.loader.ts#L37) ___ @@ -54,4 +54,4 @@ Load all custom repositories into the underlying @medusajs instance. #### Defined in -[src/loaders/repository.loader.ts:14](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/repository.loader.ts#L14) +[src/loaders/repository.loader.ts:14](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/repository.loader.ts#L14) diff --git a/docs/modules/loaders_services_loader.md b/docs/modules/loaders_services_loader.md index c2ef49be..23cc4501 100644 --- a/docs/modules/loaders_services_loader.md +++ b/docs/modules/loaders_services_loader.md @@ -30,7 +30,7 @@ #### Defined in -[src/loaders/services.loader.ts:55](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/services.loader.ts#L55) +[src/loaders/services.loader.ts:55](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/services.loader.ts#L55) ___ @@ -52,7 +52,7 @@ ___ #### Defined in -[src/loaders/services.loader.ts:40](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/services.loader.ts#L40) +[src/loaders/services.loader.ts:40](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/services.loader.ts#L40) ___ @@ -75,4 +75,4 @@ Load all custom services and overridden services into the underlying @medusajs i #### Defined in -[src/loaders/services.loader.ts:12](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/services.loader.ts#L12) +[src/loaders/services.loader.ts:12](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/services.loader.ts#L12) diff --git a/docs/modules/loaders_store_api_loader.md b/docs/modules/loaders_store_api_loader.md index 3308d8bf..5b627bd4 100644 --- a/docs/modules/loaders_store_api_loader.md +++ b/docs/modules/loaders_store_api_loader.md @@ -31,4 +31,4 @@ Apply middlewares and routes on store API. #### Defined in -[src/loaders/store-api.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/store-api.loader.ts#L13) +[src/loaders/store-api.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/store-api.loader.ts#L13) diff --git a/docs/modules/loaders_validators_loader.md b/docs/modules/loaders_validators_loader.md index 3d85c58d..5cdb4813 100644 --- a/docs/modules/loaders_validators_loader.md +++ b/docs/modules/loaders_validators_loader.md @@ -29,4 +29,4 @@ Load all custom extended validators into the underlying @medusajs instance. #### Defined in -[src/loaders/validators.loader.ts:11](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/loaders/validators.loader.ts#L11) +[src/loaders/validators.loader.ts:11](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/loaders/validators.loader.ts#L11) diff --git a/docs/modules/modules_monitoring.md b/docs/modules/modules_monitoring.md index 92c299b8..3327e78f 100644 --- a/docs/modules/modules_monitoring.md +++ b/docs/modules/modules_monitoring.md @@ -31,4 +31,4 @@ #### Defined in -[src/modules/monitoring.ts:25](https://github.com/adrien2p/medusa-extender/blob/8d611e7/src/modules/monitoring.ts#L25) +[src/modules/monitoring.ts:25](https://github.com/adrien2p/medusa-extender/blob/30feff3/src/modules/monitoring.ts#L25) diff --git a/documentation/11-cli.md b/documentation/11-cli.md index 7911d4c4..e2f84b7c 100644 --- a/documentation/11-cli.md +++ b/documentation/11-cli.md @@ -10,6 +10,9 @@ to be able to run the migrations and show the list of applied and to be applied ### Command `generate` reference +Each time a component is generated, the cli will try to find the closest module to +that newly created component and add it to the `imports` list automatically. + #### Usage ```bash @@ -20,23 +23,17 @@ to be able to run the migrations and show the list of applied and to be applied {{ cliGenerateOptionsSchematics }} -:point_right: __Examples__ - -Without specifying the location `-p` - -```bash -./node_modules/.bin/medex g -m store -``` - -> Generate the store modules at `src/modules/store/store.module.ts` +#### Examples -With specifying the location `-p` +Lets run the following command ```bash -./node_modules/.bin/medex g -m store -p src/modules +./node_modules/.bin/medex g -m myModule ``` -> Generate the store modules at `src/modules/store.module.ts` +This command will generate a new `myModule` component. Without specifying the path (`-p`) +where to generate the component, the cli will automatically create the directory `myModule` under `src`. +The result will be the generation of the module component at `src/modules/myModule/myModule.module.ts`. ### Command `migrate` reference diff --git a/documentation/_README_BUILT.md b/documentation/_README_BUILT.md index 37cf054d..6fe7d29a 100644 --- a/documentation/_README_BUILT.md +++ b/documentation/_README_BUILT.md @@ -58,6 +58,7 @@ * [Command `generate` reference](#command-generate-reference) * [Usage](#usage) * [Options](#options) + * [Examples](#examples) * [Command `migrate` reference](#command-migrate-reference) * [Usage](#usage-1) * [Options](#options-1) @@ -310,6 +311,9 @@ to be able to run the migrations and show the list of applied and to be applied ### Command `generate` reference +Each time a component is generated, the cli will try to find the closest module to +that newly created component and add it to the `imports` list automatically. + #### Usage ```bash @@ -319,36 +323,31 @@ to be able to run the migrations and show the list of applied and to be applied #### Options -| Name | Alias | Description | -|-----------------------|-------|--------------------------------------------------| -| `--module ` | `-m` | Generate a new module. | -| `--middleware ` | `-mi` | Generate a new middleware. | -| `--service ` | `-s` | Generate a new service. | -| `--router ` | `-r` | Generate a new router. | -| `--entity ` | `-e` | Generate a new entity. | -| `--repository ` | `-re` | Generate a new repository. | -| `--migration ` | `-mi` | Generate a new migration. | -| `--validator ` | `-va` | Generate a new validator. | -| `--path` | `-p` | specify the path where the component must be generated (by default the component will be generated at [`src/modules//..ts`]. | - - -:point_right: __Examples__ +| Name | Alias | Description | +|----------------|-------|--------------------------------------------------| +| > | | Component name to generate | +| `--module` | `-m` | Generate a new module. | +| `--middleware` | `-mi` | Generate a new middleware. | +| `--service` | `-s` | Generate a new service. | +| `--router` | `-r` | Generate a new router. | +| `--entity` | `-e` | Generate a new entity. | +| `--repository` | `-re` | Generate a new repository. | +| `--migration` | `-mi` | Generate a new migration. | +| `--validator` | `-va` | Generate a new validator. | +| `--path` | `-p` | specify the path where the component must be generated (by default the component will be generated at [`src/modules//..ts`]. | -Without specifying the location `-p` - -```bash -./node_modules/.bin/medex g -m store -``` -> Generate the store modules at `src/modules/store/store.module.ts` +#### Examples -With specifying the location `-p` +Lets run the following command ```bash -./node_modules/.bin/medex g -m store -p src/modules +./node_modules/.bin/medex g -m myModule ``` -> Generate the store modules at `src/modules/store.module.ts` +This command will generate a new `myModule` component. Without specifying the path (`-p`) +where to generate the component, the cli will automatically create the directory `myModule` under `src`. +The result will be the generation of the module component at `src/modules/myModule/myModule.module.ts`. ### Command `migrate` reference diff --git a/jest.config.js b/jest.config.js index 8efd0dbf..f4d2c7b6 100644 --- a/jest.config.js +++ b/jest.config.js @@ -4,15 +4,15 @@ module.exports = { "json", "ts" ], + "testTimeout": 100000, "preset": 'ts-jest', "rootDir": "src", "testRegex": ".*\\.spec\\.ts$", "transformIgnorePatterns": ["/node_modules/"], "collectCoverageFrom": [ "**/*.(t|j)s", - "!**/cli/index.(t|j)s", - "!**/cli/utils/check-file-exists.(t|j)s", - "!**/cli/utils/create-directory.(t|j)s" + "!**/__*__/*.(t|j)s", + "!**/cli/index.(t|j)s" ], "coverageReporters": [ "json-summary", diff --git a/package.json b/package.json index 4d2d2b7f..9d848a74 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,8 @@ "build:readme": "npx @appnest/readme generate", "build:doc": "npm run build:readme && rm -rf docs && ./node_modules/.bin/typedoc && cp .github/docs/* docs/ && cp documentation/_README_BUILT.md docs/README.md", "serve:doc": "./node_modules/.bin/docsify serve docs", - "test": "NODE_ENV=test ./node_modules/.bin/jest --collect-coverage --config ./jest.config.js && npm run coverage:badges", + "test": "NODE_ENV=test ./node_modules/.bin/jest -i --collect-coverage && npm run coverage:badges", + "test:local": "NODE_ENV=test ./node_modules/.bin/jest --maxWorkers=75% --collect-coverage && npm run coverage:badges", "coverage:badges": "./node_modules/.bin/jest-coverage-badges --output coverage-badges", "release": "standard-version", "release:minor": "standard-version --release-as minor", diff --git a/src/cli/command/generate-component.ts b/src/cli/command/generate-component.ts deleted file mode 100644 index 8136300c..00000000 --- a/src/cli/command/generate-component.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { green, yellow } from 'chalk'; -import { parseComponentValue } from '../utils/parse-component-value'; -import { createDirectoryIfNecessary } from '../utils/create-directory'; -import { doesFileExists } from '../utils/check-file-exists'; -import { writeFileSync } from 'fs'; -import { - getEntityTemplate, - getMiddlewareTemplate, - getMigrationTemplate, - getModuleTemplate, - getRepositoryTemplate, - getRouterTemplate, - getServiceTemplate, - getValidatorTemplate, -} from '../templates'; - -type Options = { - module?: string; - middleware?: string; - service?: string; - router?: string; - validator?: string; - entity?: string; - repository?: string; - migration?: string; - path?: string; -}; - -export function generateComponent({ - module, - middleware, - service, - router, - validator, - entity, - repository, - migration, - path, -}: Options) { - if (module) { - const componentDescriptor = parseComponentValue(module, 'module', path); - return createComponentIfNecessary(componentDescriptor, getModuleTemplate(componentDescriptor.componentName)); - } - - if (middleware) { - const componentDescriptor = parseComponentValue(middleware, 'middleware', path); - return createComponentIfNecessary( - componentDescriptor, - getMiddlewareTemplate(componentDescriptor.componentName) - ); - } - - if (service) { - const componentDescriptor = parseComponentValue(service, 'service', path); - return createComponentIfNecessary(componentDescriptor, getServiceTemplate(componentDescriptor.componentName)); - } - - if (router) { - const componentDescriptor = parseComponentValue(router, 'router', path); - return createComponentIfNecessary(componentDescriptor, getRouterTemplate(componentDescriptor.componentName)); - } - - if (validator) { - const componentDescriptor = parseComponentValue(validator, 'validator', path); - return createComponentIfNecessary(componentDescriptor, getValidatorTemplate(componentDescriptor.componentName)); - } - - if (entity) { - const componentDescriptor = parseComponentValue(entity, 'entity', path); - return createComponentIfNecessary(componentDescriptor, getEntityTemplate(componentDescriptor.componentName)); - } - - if (repository) { - const componentDescriptor = parseComponentValue(repository, 'repository', path); - return createComponentIfNecessary( - componentDescriptor, - getRepositoryTemplate(componentDescriptor.componentName) - ); - } - - if (migration) { - const componentDescriptor = parseComponentValue(migration, 'migration', path); - return createComponentIfNecessary(componentDescriptor, getMigrationTemplate(componentDescriptor.componentName)); - } - - console.info( - yellow(`ATTENTION! Check the newly created component to validate the config and update it if needed.`) - ); -} - -export function createComponentIfNecessary( - { - relativeDestinationPath, - fullDestinationPath, - componentName, - componentFileName, - }: { - relativeDestinationPath: string; - fullDestinationPath: string; - componentName: string; - componentFileName: string; - }, - content: string -): void { - createDirectoryIfNecessary(relativeDestinationPath, fullDestinationPath); - - const exists = doesFileExists(fullDestinationPath + '/' + componentName, componentName); - if (exists) return; - - writeFileSync(fullDestinationPath + '/' + componentFileName, content); - console.info(green(`${componentFileName} successfully generated at ${fullDestinationPath}.`)); -} diff --git a/src/cli/commands/generate-component.ts b/src/cli/commands/generate-component.ts new file mode 100644 index 00000000..38a56a89 --- /dev/null +++ b/src/cli/commands/generate-component.ts @@ -0,0 +1,188 @@ +import { parseComponentValue } from '../utils/parse-component-value'; +import { createDirectoryIfNecessary } from '../utils/create-directory'; +import { existsSync, readdirSync, readFileSync, writeFileSync } from 'fs'; +import { parse, resolve } from 'path'; +import { + getEntityTemplate, + getMiddlewareTemplate, + getMigrationTemplate, + getModuleTemplate, + getRepositoryTemplate, + getRouterTemplate, + getServiceTemplate, + getValidatorTemplate, +} from '../templates'; +import { Logger } from '../../core'; +import { lookupClosestModule } from '../utils/lookup-closest-module'; + +type Options = { + module?: boolean; + middleware?: boolean; + service?: boolean; + router?: boolean; + validator?: boolean; + entity?: boolean; + repository?: boolean; + migration?: boolean; + path?: string; +}; + +const logger = Logger.contextualize('Generate command', 'MEDEX-CLI'); + +/** + * Generate the required components from the user command. + * @param name + * @param module + * @param middleware + * @param service + * @param router + * @param validator + * @param entity + * @param repository + * @param migration + * @param path + */ +export function generateComponent( + name: string, + { module, middleware, service, router, validator, entity, repository, migration, path }: Options +): void { + logger.log(`Start generating component(s)`); + + const { relativeDestinationPath, fullDestinationPath } = parseComponentValue(name, 'module', path); + createDirectoryIfNecessary(relativeDestinationPath, fullDestinationPath, logger); + + if (module) { + const componentDescriptor = parseComponentValue(name, 'module', path); + createComponentIfNecessary(componentDescriptor, getModuleTemplate(componentDescriptor.componentName)); + } + + if (middleware) { + const componentDescriptor = parseComponentValue(name, 'middleware', path); + createComponentIfNecessary(componentDescriptor, getMiddlewareTemplate(componentDescriptor.componentName)); + } + + if (service) { + const componentDescriptor = parseComponentValue(name, 'service', path); + createComponentIfNecessary(componentDescriptor, getServiceTemplate(componentDescriptor.componentName)); + } + + if (router) { + const componentDescriptor = parseComponentValue(name, 'router', path); + createComponentIfNecessary(componentDescriptor, getRouterTemplate(componentDescriptor.componentName)); + } + + if (validator) { + const componentDescriptor = parseComponentValue(name, 'validator', path); + createComponentIfNecessary(componentDescriptor, getValidatorTemplate(componentDescriptor.componentName)); + } + + if (entity) { + const componentDescriptor = parseComponentValue(name, 'entity', path); + createComponentIfNecessary(componentDescriptor, getEntityTemplate(componentDescriptor.componentName)); + } + + if (repository) { + const componentDescriptor = parseComponentValue(name, 'repository', path); + createComponentIfNecessary(componentDescriptor, getRepositoryTemplate(componentDescriptor.componentName)); + } + + if (migration) { + const componentDescriptor = parseComponentValue(name, 'migration', path); + createComponentIfNecessary(componentDescriptor, getMigrationTemplate(componentDescriptor.componentName)); + } + + updateModuleImports(fullDestinationPath); + + logger.warn(`!!ATTENTION!! Check the newly created component(s) to validate the config and update it if needed.`); +} + +/** + * Create the component file and fill it with the template content. + * @param fullDestinationPath + * @param componentName + * @param componentFileName + * @param content + */ +export function createComponentIfNecessary( + { + fullDestinationPath, + componentName, + componentFileName, + }: { + fullDestinationPath: string; + componentName: string; + componentFileName: string; + }, + content: string +): void { + const componentFullPath = resolve(fullDestinationPath, componentFileName); + const exists = existsSync(componentFullPath); + if (exists) { + logger.warn(`Component ${componentName} already exists. Skipping component creation`); + return; + } + + writeFileSync(componentFullPath, content); + logger.log(`Component ${componentFileName} successfully generated at ${fullDestinationPath}`); +} + +/** + * Lookup for the closest module from the component and update its imports. + * @param fullDestinationPath + */ +export function updateModuleImports(fullDestinationPath: string): void { + const resolvedModulePath = lookupClosestModule(fullDestinationPath); + if (!resolvedModulePath) { + logger.warn('Unable to resolve the closest module from your component. Skipping module imports update'); + return; + } + + const moduleFileName = resolvedModulePath.split('/').slice(-1).pop(); + logger.log(`Updating module ${moduleFileName}`); + + const updateModuleImportsContent = (_fullDestinationPath: string) => { + const components = readdirSync(_fullDestinationPath, { withFileTypes: true }); + const files = components.filter((component) => component.isFile()); + for (const file of files) { + if (file.name.includes('.module.')) continue; + + const componentFullPath = resolve(_fullDestinationPath, file.name); + const componentContent = readFileSync(componentFullPath).toString(); + + const componentClassName = componentContent.match(/class\s(\w+)/)?.pop(); + if (!componentClassName) continue; + + const moduleContent = readFileSync(resolvedModulePath).toString(); + + const shouldUpdateModuleImport = !moduleContent.match(`${componentClassName}`); + if (!shouldUpdateModuleImport) continue; + + const isComponentInSubDirectory = + _fullDestinationPath.split('/').slice(-1).pop() !== resolvedModulePath.split('/').slice(-2).shift(); + + const updatedModuleContent = moduleContent + .replace(/imports: \[(.*)\]/, (str: string, match: string) => { + return `imports: [${match ? `${match}, ` : ''}${componentClassName}]`; + }) + .replace(/(import\s+.*\s+from\s+.*(?!;))/, (str: string, matches: string) => { + const subDirectoryRelativePath = isComponentInSubDirectory + ? _fullDestinationPath.split('/').slice(-1).pop() + : null; + return `${matches ? `${matches}\n` : ''}import { ${componentClassName} } from './${ + subDirectoryRelativePath ? subDirectoryRelativePath + '/' : '' + }${parse(file.name).name}';`; + }); + + writeFileSync(resolvedModulePath, updatedModuleContent); + logger.log(`Module ${moduleFileName} imports updated from ${file.name} component`); + } + + const directories = components.filter((component) => component.isDirectory()); + directories.forEach((directory) => updateModuleImportsContent(resolve(_fullDestinationPath, directory.name))); + }; + + const resolvedModuleLocationPath = resolvedModulePath.split('/').slice(0, -1).join('/'); + updateModuleImportsContent(resolvedModuleLocationPath); + + logger.log(`Module ${moduleFileName} updated`); +} diff --git a/src/cli/command/migrate.ts b/src/cli/commands/migrate.ts similarity index 90% rename from src/cli/command/migrate.ts rename to src/cli/commands/migrate.ts index 3ec9655c..dc0d3845 100644 --- a/src/cli/command/migrate.ts +++ b/src/cli/commands/migrate.ts @@ -1,6 +1,11 @@ import { createConnection } from 'typeorm'; import { getConfigFile } from 'medusa-core-utils/dist'; +/** + * Run the migrations using the medusa-config.js config. + * @param run + * @param show + */ export async function migrate({ run, show }): Promise { const { configModule } = getConfigFile(process.cwd(), `medusa-config`) as { configModule: any }; diff --git a/src/cli/index.ts b/src/cli/index.ts index 343d0c66..f3d24fea 100644 --- a/src/cli/index.ts +++ b/src/cli/index.ts @@ -1,9 +1,9 @@ #! /usr/bin/env node import { Command } from 'commander'; -import { generateComponent } from './command/generate-component'; +import { generateComponent } from './commands/generate-component'; import { green } from 'chalk'; -import { migrate } from './command/migrate'; +import { migrate } from './commands/migrate'; const program = new Command(); @@ -30,28 +30,27 @@ program .command('generate') .alias('g') .description('Generate a new component') - .option('-m, --module ', 'Generate a new module') - .option('-md, --middleware ', 'Generate a new middleware') - .option('-s, --service ', 'Generate a new service') - .option('-r, --router ', 'Generate a new router') - .option('-e, --entity ', 'Generate a new entity') - .option('-re, --repository ', 'Generate a new repository') - .option('-mi, --migration ', 'Generate a new migration') - .option('-va, --validator ', 'Generate a new validator') + .option('-m, --module', 'Generate a new module') + .option('-md, --middleware', 'Generate a new middleware') + .option('-s, --service', 'Generate a new service') + .option('-r, --router', 'Generate a new router') + .option('-e, --entity', 'Generate a new entity') + .option('-re, --repository', 'Generate a new repository') + .option('-mi, --migration', 'Generate a new migration') + .option('-va, --validator', 'Generate a new validator') .option( '-p, --path ', 'specify the path where the component must be generated (by default the component will be generated at [src/modules//..ts]' ) - .action((options, program) => { - console.time(green('Component generated successfully')); + .argument('', 'specify the name of the component(s) to create') + .action((name: string, options: any, program: Command) => { const { path, ...componentOptions } = options; if (Object.values(componentOptions).every((value) => !value)) { return program .showHelpAfterError(true) .error(`You must specify one of the options.${path ? ' --path only is not sufficient.' : ''}`); } - generateComponent(options); - console.timeEnd(green('Component generated successfully')); + generateComponent(name, options); }); program.parse(); diff --git a/src/cli/templates/entity-template.ts b/src/cli/templates/entity-template.ts index a53dd905..48b182d0 100644 --- a/src/cli/templates/entity-template.ts +++ b/src/cli/templates/entity-template.ts @@ -1,5 +1,9 @@ import * as dedent from 'dedent'; +/** + * Provide a basic template for the entity component generation. + * @param entityName + */ export function getEntityTemplate(entityName: string): string { return dedent` import { Column, Entity } from "typeorm"; diff --git a/src/cli/templates/middleware-template.ts b/src/cli/templates/middleware-template.ts index af28cdac..6fd742a0 100644 --- a/src/cli/templates/middleware-template.ts +++ b/src/cli/templates/middleware-template.ts @@ -1,5 +1,9 @@ import * as dedent from 'dedent'; +/** + * Provide a basic template for the middleware component generation. + * @param middlewareName + */ export function getMiddlewareTemplate(middlewareName: string): string { return dedent` import { diff --git a/src/cli/templates/migration-template.ts b/src/cli/templates/migration-template.ts index 084af910..b666841a 100644 --- a/src/cli/templates/migration-template.ts +++ b/src/cli/templates/migration-template.ts @@ -1,5 +1,9 @@ import * as dedent from 'dedent'; +/** + * Provide a basic template for the migration component generation. + * @param migrationName + */ export function getMigrationTemplate(migrationName: string): string { const timestamp = Date.now(); return dedent` diff --git a/src/cli/templates/module-template.ts b/src/cli/templates/module-template.ts index 37152c79..a8387376 100644 --- a/src/cli/templates/module-template.ts +++ b/src/cli/templates/module-template.ts @@ -1,5 +1,9 @@ import * as dedent from 'dedent'; +/** + * Provide a basic template for the module component generation. + * @param moduleName + */ export function getModuleTemplate(moduleName: string): string { return dedent` import { Module } from 'medusa-extender'; diff --git a/src/cli/templates/repository-template.ts b/src/cli/templates/repository-template.ts index 5b9497c9..d4c15a70 100644 --- a/src/cli/templates/repository-template.ts +++ b/src/cli/templates/repository-template.ts @@ -1,5 +1,9 @@ import * as dedent from 'dedent'; +/** + * Provide a basic template for the repository component generation. + * @param repositoryName + */ export function getRepositoryTemplate(repositoryName: string): string { return dedent` import { Repository as MedusaRepository } from "medusa-extender"; diff --git a/src/cli/templates/router-template.ts b/src/cli/templates/router-template.ts index b0b0bdb4..848ad332 100644 --- a/src/cli/templates/router-template.ts +++ b/src/cli/templates/router-template.ts @@ -1,5 +1,9 @@ import * as dedent from 'dedent'; +/** + * Provide a basic template for the router component generation. + * @param routerName + */ export function getRouterTemplate(routerName: string): string { return dedent` import { MedusaAuthenticatedRequest, Router } from 'medusa-extender'; diff --git a/src/cli/templates/service-template.ts b/src/cli/templates/service-template.ts index af5f2437..5fa3192a 100644 --- a/src/cli/templates/service-template.ts +++ b/src/cli/templates/service-template.ts @@ -1,5 +1,9 @@ import * as dedent from 'dedent'; +/** + * Provide a basic template for the service component generation. + * @param serviceName + */ export function getServiceTemplate(serviceName: string): string { return dedent` import { Service } from 'medusa-extender'; diff --git a/src/cli/templates/validator-template.ts b/src/cli/templates/validator-template.ts index 4b0538bb..a0655005 100644 --- a/src/cli/templates/validator-template.ts +++ b/src/cli/templates/validator-template.ts @@ -1,5 +1,9 @@ import * as dedent from 'dedent'; +/** + * Provide a basic template for the validator component generation. + * @param validatorName + */ export function getValidatorTemplate(validatorName: string): string { return dedent` import { Validator } from 'medusa-extender'; diff --git a/src/cli/tests/__utils__/normalizeString.ts b/src/cli/tests/__utils__/normalizeString.ts new file mode 100644 index 00000000..441992ca --- /dev/null +++ b/src/cli/tests/__utils__/normalizeString.ts @@ -0,0 +1,5 @@ +import * as dedent from 'dedent'; + +export function normalizeString(str: string): string { + return dedent(str).replace(/r?\n|\r|\t|\s/g, ''); +} diff --git a/src/cli/tests/cli.spec.ts b/src/cli/tests/cli.spec.ts index e871b18a..a8934490 100644 --- a/src/cli/tests/cli.spec.ts +++ b/src/cli/tests/cli.spec.ts @@ -1,8 +1,6 @@ import * as path from 'path'; import { exec } from 'child_process'; -import * as dedent from 'dedent'; - -jest.setTimeout(10000); +import { normalizeString } from './__utils__/normalizeString'; function cli(args, cwd): Promise<{ code: number; error: any; stdout: any; stderr: any }> { return new Promise((resolve) => { @@ -21,10 +19,6 @@ function cli(args, cwd): Promise<{ code: number; error: any; stdout: any; stderr }); } -function normalizeString(str: string): string { - return dedent(str).replace(/r?\n|\r|\t|\s/g, ''); -} - describe('CLI', () => { it('should failed on missing command', async () => { const { error, stderr } = await cli([''], '.'); @@ -36,45 +30,54 @@ describe('CLI', () => { Medusa extender CLI Options: - -V, --version output the version number - -h, --help display help for command + -V, --version output the version number + -h, --help display help for command Commands: - migrate|m [options] Migrate all migrations from ['src/**/*.migration.js', - 'src/**/migrations/*.js', 'dist/**/*.migration.js', - 'dist/**/migrations/*.js'] - generate|g [options] Generate a new component - help [command] display help for command + migrate|m [options] Migrate all migrations from ['src/**/*.migration.js', + 'src/**/migrations/*.js', 'dist/**/*.migration.js', + 'dist/**/migrations/*.js'] + generate|g [options] Generate a new component + help [command] display help for command `) ); }); it('should failed on generate command with missing options', async () => { - const { error, stderr } = await cli(['generate'], '.'); + const { error, stderr } = await cli(['generate name'], '.'); expect(error.code).toBe(1); expect(normalizeString(stderr)).toBe( normalizeString(` You must specify one of the options. - - Usage: medex generate|g [options] + + Usage: medex generate|g [options] Generate a new component + Arguments: + name specify the name of the component(s) to create + Options: - -m, --module Generate a new module - -md, --middleware Generate a new middleware - -s, --service Generate a new service - -r, --router Generate a new router - -e, --entity Generate a new entity - -re, --repository Generate a new repository - -mi, --migration Generate a new migration - -va, --validator Generate a new validator - -p, --path specify the path where the component must be generated (by default the component will be generated at [src/modules//..ts] - -h, --help display help for command + -m, --module Generate a new module + -md, --middleware Generate a new middleware + -s, --service Generate a new service + -r, --router Generate a new router + -e, --entity Generate a new entity + -re, --repository Generate a new repository + -mi, --migration Generate a new migration + -va, --validator Generate a new validator + -p, --path specify the path where the component must be generated (by default the component will be generated at [src/modules//..ts] + -h, --help display help for command `) ); }); + it('should failed on generate command with missing argument', async () => { + const { error, stderr } = await cli(['generate -m'], '.'); + expect(error.code).toBe(1); + expect(normalizeString(stderr)).toBe(normalizeString("error: missing required argument 'name'")); + }); + it('should failed on migrate command with missing options', async () => { const { error, stderr } = await cli(['migrate'], '.'); expect(error.code).toBe(1); @@ -93,14 +96,4 @@ describe('CLI', () => { `) ); }); - - it('should failed on generate command with missing options value', async () => { - const { error, stderr } = await cli(['generate -m'], '.'); - expect(error.code).toBe(1); - expect(normalizeString(stderr)).toBe( - normalizeString(` - error: option '-m, --module ' argument missing - `) - ); - }); }); diff --git a/src/cli/tests/command/generate-component.spec.ts b/src/cli/tests/command/generate-component.spec.ts deleted file mode 100644 index 51cfc745..00000000 --- a/src/cli/tests/command/generate-component.spec.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { generateComponent } from '../../command/generate-component'; -import { existsSync, readFileSync, unlinkSync } from 'fs'; -import { - getEntityTemplate, - getMiddlewareTemplate, - getMigrationTemplate, - getModuleTemplate, - getRepositoryTemplate, - getRouterTemplate, - getServiceTemplate, - getValidatorTemplate, -} from '../../templates'; - -function cleanup(path: string): void { - unlinkSync(path); -} - -const path = '.'; -const componentName = 'test'; - -describe('generateComponent', () => { - it('should generate a module', () => { - generateComponent({ module: componentName, path }); - - const expectedComponentFile = `${componentName}.module.ts`; - expect(existsSync(expectedComponentFile)); - - const componentContent = readFileSync(expectedComponentFile).toString(); - expect(componentContent).toEqual(getModuleTemplate('TestModule')); - - cleanup(expectedComponentFile); - }); - - it('should generate a middleware', () => { - generateComponent({ middleware: componentName, path }); - - const expectedComponentFile = `${componentName}.middleware.ts`; - expect(existsSync(expectedComponentFile)); - - const componentContent = readFileSync(expectedComponentFile).toString(); - expect(componentContent).toEqual(getMiddlewareTemplate('TestMiddleware')); - - cleanup(expectedComponentFile); - }); - - it('should generate a service', () => { - generateComponent({ service: componentName, path }); - - const expectedComponentFile = `${componentName}.service.ts`; - expect(existsSync(expectedComponentFile)); - - const componentContent = readFileSync(expectedComponentFile).toString(); - expect(componentContent).toEqual(getServiceTemplate('TestService')); - - cleanup(expectedComponentFile); - }); - - it('should generate a router', () => { - generateComponent({ router: componentName, path }); - - const expectedComponentFile = `${componentName}.router.ts`; - expect(existsSync(expectedComponentFile)); - - const componentContent = readFileSync(expectedComponentFile).toString(); - expect(componentContent).toEqual(getRouterTemplate('TestRouter')); - - cleanup(expectedComponentFile); - }); - - it('should generate a validator', () => { - generateComponent({ validator: componentName, path }); - - const expectedComponentFile = `${componentName}.validator.ts`; - expect(existsSync(expectedComponentFile)); - - const componentContent = readFileSync(expectedComponentFile).toString(); - expect(componentContent).toEqual(getValidatorTemplate('TestValidator')); - - cleanup(expectedComponentFile); - }); - - it('should generate a entity', () => { - generateComponent({ entity: componentName, path }); - - const expectedComponentFile = `${componentName}.entity.ts`; - expect(existsSync(expectedComponentFile)); - - const componentContent = readFileSync(expectedComponentFile).toString(); - expect(componentContent).toEqual(getEntityTemplate('TestEntity')); - - cleanup(expectedComponentFile); - }); - - it('should generate a repository', () => { - generateComponent({ repository: componentName, path }); - - const expectedComponentFile = `${componentName}.repository.ts`; - expect(existsSync(expectedComponentFile)); - - const componentContent = readFileSync(expectedComponentFile).toString(); - expect(componentContent).toEqual(getRepositoryTemplate('TestRepository')); - - cleanup(expectedComponentFile); - }); - - it('should generate a migration', () => { - generateComponent({ migration: componentName, path }); - - const expectedComponentFile = `${componentName}.migration.ts`; - expect(existsSync(expectedComponentFile)); - - const componentContent = readFileSync(expectedComponentFile).toString(); - expect(componentContent.replace(/\d+/g, '')).toEqual(getMigrationTemplate('TestMigration').replace(/\d+/g, '')); - - cleanup(expectedComponentFile); - }); -}); diff --git a/src/cli/tests/commands/generate-component.spec.ts b/src/cli/tests/commands/generate-component.spec.ts new file mode 100644 index 00000000..ddcf9672 --- /dev/null +++ b/src/cli/tests/commands/generate-component.spec.ts @@ -0,0 +1,159 @@ +import { generateComponent } from '../../commands/generate-component'; +import { existsSync, readFileSync, rmdirSync, rmSync, unlinkSync } from 'fs'; +import { + getEntityTemplate, + getMiddlewareTemplate, + getMigrationTemplate, + getModuleTemplate, + getRepositoryTemplate, + getRouterTemplate, + getServiceTemplate, + getValidatorTemplate, +} from '../../templates'; +import { normalizeString } from '../__utils__/normalizeString'; + +const parentPath = './modules'; +const path = parentPath + '/test'; +const componentName = 'test'; + +function cleanup(path: string): void { + unlinkSync(path); +} + +function getExpectedComponentPath(componentName: string, type: string): string { + return process.cwd() + `/${path}/${componentName}.${type}.ts`; +} + +describe('generateComponent', () => { + afterAll(() => { + rmSync(path, { recursive: true, force: true }); + rmdirSync(parentPath); + }); + + it('should generate a module', () => { + generateComponent(componentName, { module: true, path }); + + const expectedComponentFile = getExpectedComponentPath(componentName, 'module'); + expect(existsSync(expectedComponentFile)).toBeTruthy(); + + const componentContent = readFileSync(expectedComponentFile).toString(); + cleanup(expectedComponentFile); + + expect(componentContent).toEqual(getModuleTemplate('TestModule')); + }); + + it('should generate a middleware', () => { + generateComponent(componentName, { middleware: true, path }); + + const expectedComponentFile = getExpectedComponentPath(componentName, 'middleware'); + expect(existsSync(expectedComponentFile)).toBeTruthy(); + + const componentContent = readFileSync(expectedComponentFile).toString(); + cleanup(expectedComponentFile); + + expect(componentContent).toEqual(getMiddlewareTemplate('TestMiddleware')); + }); + + it('should generate a service', () => { + generateComponent(componentName, { service: true, path }); + + const expectedComponentFile = getExpectedComponentPath(componentName, 'service'); + expect(existsSync(expectedComponentFile)).toBeTruthy(); + + const componentContent = readFileSync(expectedComponentFile).toString(); + cleanup(expectedComponentFile); + + expect(componentContent).toEqual(getServiceTemplate('TestService')); + }); + + it('should generate a router', () => { + generateComponent(componentName, { router: true, path }); + + const expectedComponentFile = getExpectedComponentPath(componentName, 'router'); + expect(existsSync(expectedComponentFile)).toBeTruthy(); + + const componentContent = readFileSync(expectedComponentFile).toString(); + cleanup(expectedComponentFile); + + expect(componentContent).toEqual(getRouterTemplate('TestRouter')); + }); + + it('should generate a validator', () => { + generateComponent(componentName, { validator: true, path }); + + const expectedComponentFile = getExpectedComponentPath(componentName, 'validator'); + expect(existsSync(expectedComponentFile)).toBeTruthy(); + + const componentContent = readFileSync(expectedComponentFile).toString(); + cleanup(expectedComponentFile); + + expect(componentContent).toEqual(getValidatorTemplate('TestValidator')); + }); + + it('should generate a entity', () => { + generateComponent(componentName, { entity: true, path }); + + const expectedComponentFile = getExpectedComponentPath(componentName, 'entity'); + expect(existsSync(expectedComponentFile)).toBeTruthy(); + + const componentContent = readFileSync(expectedComponentFile).toString(); + cleanup(expectedComponentFile); + + expect(componentContent).toEqual(getEntityTemplate('TestEntity')); + }); + + it('should generate a repository', () => { + generateComponent(componentName, { repository: true, path }); + + const expectedComponentFile = getExpectedComponentPath(componentName, 'repository'); + expect(existsSync(expectedComponentFile)).toBeTruthy(); + + const componentContent = readFileSync(expectedComponentFile).toString(); + cleanup(expectedComponentFile); + + expect(componentContent).toEqual(getRepositoryTemplate('TestRepository')); + }); + + it('should generate a migration', () => { + generateComponent(componentName, { migration: true, path }); + + const expectedComponentFile = getExpectedComponentPath(componentName, 'migration'); + expect(existsSync(expectedComponentFile)).toBeTruthy(); + + const componentContent = readFileSync(expectedComponentFile).toString(); + cleanup(expectedComponentFile); + + expect(componentContent.replace(/\d+/g, '')).toEqual(getMigrationTemplate('TestMigration').replace(/\d+/g, '')); + }); + + it('should generate a module that includes other generated components automatically', () => { + generateComponent(componentName, { middleware: true, path }); + generateComponent(componentName, { service: true, path }); + generateComponent(componentName, { module: true, path }); + generateComponent(componentName, { repository: true, path }); + generateComponent(componentName, { router: true, path }); + + const subDirectory = 'subDirectory'; + generateComponent(componentName, { validator: true, path: path + '/' + subDirectory }); + + const expectedComponentFile = getExpectedComponentPath(componentName, 'module'); + expect(existsSync(expectedComponentFile)).toBeTruthy(); + + const componentContent = readFileSync(expectedComponentFile).toString(); + expect(normalizeString(componentContent)).toEqual( + normalizeString(` + import { Module } from 'medusa-extender'; + import { TestValidator } from './${subDirectory}/test.validator'; + import { TestRouter } from './test.router'; + import { TestRepository } from './test.repository'; + import { TestService } from './test.service'; + import { TestMiddleware } from './test.middleware'; + + @Module({ + imports: [TestMiddleware, TestService, TestRepository, TestRouter, TestValidator] + }) + export class TestModule {} + `) + ); + }); +}); diff --git a/src/cli/utils/check-file-exists.ts b/src/cli/utils/check-file-exists.ts deleted file mode 100644 index 439ff04c..00000000 --- a/src/cli/utils/check-file-exists.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { existsSync } from 'fs'; -import { yellow } from 'chalk'; - -export function doesFileExists(path: string, componentName: string): boolean { - if (existsSync(path)) { - console.log(yellow(`${componentName} already exists. Skipping.`)); - return true; - } - - return false; -} diff --git a/src/cli/utils/create-directory.ts b/src/cli/utils/create-directory.ts index 716fac2d..02e89b94 100644 --- a/src/cli/utils/create-directory.ts +++ b/src/cli/utils/create-directory.ts @@ -1,11 +1,22 @@ import { existsSync, mkdirSync } from 'fs'; -import { blue, yellow } from 'chalk'; +import { Logger } from '../../core'; -export function createDirectoryIfNecessary(relativeDestinationPath: string, fullDestinationPath: string): void { - if (!existsSync(fullDestinationPath)) { - console.info(blue(`Creating directory ${fullDestinationPath}.`)); - return mkdirSync(fullDestinationPath); +/** + * Create the new directory, if necessary, that will receive the components. + * @param relativeDestinationPath + * @param fullDestinationPath + * @param logger + */ +export function createDirectoryIfNecessary( + relativeDestinationPath: string, + fullDestinationPath: string, + logger: Logger | typeof console = console +): void { + if (existsSync(fullDestinationPath)) { + logger.log(`Directory ${relativeDestinationPath} already exists. Skipping directory creation`); + return; } - console.info(yellow(`Directory ${relativeDestinationPath} already exists. Skipping.`)); + logger.log(`Creating directory ${fullDestinationPath}`); + mkdirSync(fullDestinationPath, { recursive: true }); } diff --git a/src/cli/utils/lookup-closest-module.ts b/src/cli/utils/lookup-closest-module.ts new file mode 100644 index 00000000..3b46afb9 --- /dev/null +++ b/src/cli/utils/lookup-closest-module.ts @@ -0,0 +1,55 @@ +import { readdirSync, readFileSync } from 'fs'; +import { resolve } from 'path'; + +/** + * Lookup for the closest module component from the destination path. + * @param fullDestinationPath + * @param isMain + */ +export function lookupClosestModule(fullDestinationPath: string, isMain = true): string | undefined { + let resolvedModulePath = undefined; + + const isRootDir = !!readdirSync(fullDestinationPath, { withFileTypes: true }).some( + (component) => component.name === 'package.json' + ); + if (isRootDir) { + return resolvedModulePath; + } + + const components = readdirSync(fullDestinationPath, { withFileTypes: true }); + const files = components.filter((component) => component.isFile()); + for (const file of files) { + const componentFullDestinationPath = resolve(fullDestinationPath, file.name); + const componentContent = readFileSync(componentFullDestinationPath).toString(); + const containsModuleDecorator = !!componentContent.match(/@Module\(/g); + if (containsModuleDecorator) { + resolvedModulePath = componentFullDestinationPath; + break; + } + } + + const directories = components.filter((component) => component.isDirectory()); + if (!resolvedModulePath) { + for (const directory of directories) { + const childFullDestinationPath = resolve(fullDestinationPath, directory.name); + resolvedModulePath = lookupClosestModule(childFullDestinationPath, false); + if (resolvedModulePath) { + break; + } + } + } + + /* + * At this point, the module was not found in the current and children directories, + * so we will look into the parent directory until the root is reached. + */ + if (isMain && !resolvedModulePath) { + const parentFullDestinationPath = fullDestinationPath.split('/').slice(0, -1).join('/'); + const modulePath = lookupClosestModule(parentFullDestinationPath); + if (modulePath) { + resolvedModulePath = modulePath; + } + } + + return resolvedModulePath; +} diff --git a/src/cli/utils/parse-component-value.ts b/src/cli/utils/parse-component-value.ts index 91d954e7..afde69c8 100644 --- a/src/cli/utils/parse-component-value.ts +++ b/src/cli/utils/parse-component-value.ts @@ -1,3 +1,9 @@ +/** + * Parse the component information to create a kind of descriptor. + * @param name + * @param componentType + * @param path + */ export function parseComponentValue( name: string, componentType: string, diff --git a/src/core/logger.ts b/src/core/logger.ts index 1f9508a7..dd6aea44 100644 --- a/src/core/logger.ts +++ b/src/core/logger.ts @@ -1,4 +1,4 @@ -import { blue, red, yellow } from 'chalk'; +import { blue, Chalk, red, yellow } from 'chalk'; /** * @internal @@ -7,17 +7,23 @@ import { blue, red, yellow } from 'chalk'; export class Logger { private logsQueue = []; private readonly _context: string; + private readonly _app: string; public get context() { return this._context; } - constructor(context: string) { + public get app() { + return this._app; + } + + constructor(context: string, app: string) { this._context = context; + this._app = app; } - static contextualize(context: string): Logger { - return new Logger(context); + static contextualize(context: string, app = 'Server'): Logger { + return new Logger(context, app); } /** @@ -28,7 +34,7 @@ export class Logger { public push(description: string, ...variables: string[]): this { const date = new Date().toLocaleString('en-US', { hour12: true }); this.logsQueue.push([ - `${blue(`[Server] -`)} ${date} ${yellow(`[${this._context}]`)} ${blue(description)}`, + `${blue(`[${this._app}] -`)} ${date} ${yellow(`[${this._context}]`)} ${blue(description)}`, ...variables, ]); return this; @@ -40,12 +46,16 @@ export class Logger { * @param variables */ public log(description: string, ...variables: string[]): this { - const date = new Date().toLocaleString('en-US', { hour12: true }); - console.log( - `${blue(`[Server] -`)} ${date} ${yellow(`[${this._context}]`)} ${blue(description)}`, - ...variables - ); - return this; + return this.buildLog(blue, description, ...variables); + } + + /** + * Display warning immediately. + * @param description + * @param variables + */ + public warn(description: string, ...variables: string[]): this { + return this.buildLog(yellow, description, ...variables); } /** @@ -54,16 +64,11 @@ export class Logger { * @param variables */ public error(description: string, ...variables: string[]): this { - const date = new Date().toLocaleString('en-US', { hour12: true }); - console.log( - `${red(`[Server] -`)} ${date} ${red(`[${this._context}]`)} ${red(description)}`, - ...variables - ); - return this; + return this.buildLog(red, description, ...variables); } /** - * Show all queues logs and then reset the queue. + * display all queues logs and then reset the queue. */ public flush(): this { if (this.logsQueue.length) { @@ -74,4 +79,19 @@ export class Logger { } return this; } + + /** + * Build logs taking in count the level color + * @param color + * @param description + * @param variables + */ + private buildLog(color: Chalk, description: string, ...variables: string[]) { + const date = new Date().toLocaleString('en-US', { hour12: true }); + console.log( + `${blue(`[${this._app}] -`)} ${date} ${yellow(`[${this._context}]`)} ${color(description)}`, + ...variables + ); + return this; + } } diff --git a/src/core/package-loader.ts b/src/core/package-loader.ts index 7470817a..6794f650 100644 --- a/src/core/package-loader.ts +++ b/src/core/package-loader.ts @@ -16,7 +16,7 @@ export async function loadPackages(logger: Logger, packages: { name: string; ver const installCommand = await getPackageManagerCommand(); for (const { name, version } of packages) { if (packageJson.dependencies[name]) { - logger.log(`Skipping installation of ${name}@${version}. package already installed.`); + logger.log(`Skipping installation of ${name}@${version}. package already installed`); continue; } @@ -26,7 +26,7 @@ export async function loadPackages(logger: Logger, packages: { name: string; ver packageJson.dependencies[name] = `^${version}`; writeFileSync(`${process.cwd()}/package.json`, JSON.stringify(packageJson, null, 2)); } catch (e) { - logger.error(`Unable to install ${name}@${version}.`); + logger.error(`Unable to install ${name}@${version}`); process.exit(1); } }