diff --git a/README.md b/README.md index 84ae5542..be00c33c 100644 --- a/README.md +++ b/README.md @@ -160,23 +160,22 @@ order to add our new field. Of course, you can do everything typeorm provides (i Step 1 Extend the product entity
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/product.entity.ts - - import { Column, Entity } from "typeorm"; - import { Product as MedusaProduct } from '@medusa/medusa/dist'; - import { Entity as MedusaEntity } from "medusa-extender"; - - @MedusaEntity({ override: MedusaProduct }) - @Entity() - export class Product extends MedusaProduct { - @Column() - customField: string; - } - ``` +```typescript +// src/modules/product/product.entity.ts + +import { Column, Entity } from "typeorm"; +import { Product as MedusaProduct } from '@medusa/medusa/dist'; +import { Entity as MedusaEntity } from "medusa-extender"; + +@MedusaEntity({ override: MedusaProduct }) +@Entity() +export class Product extends MedusaProduct { + @Column() + customField: string; +} +```
@@ -188,23 +187,22 @@ order to reflect our custom entity. Step 2: Extend the product repository
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/product.repository.ts - - import { ProductRepository as MedusaProductRepository } from '@medusa/medusa/dist/repositories/order'; - import { EntityRepository } from "typeorm"; - import { Repository as MedusaRepository, Utils } from "medusa-extender"; - import { Product } from "./product.entity"; - - @MedusaRepository({ override: MedusaProductRepository }) - @EntityRepository(Product) - export class ProductRepository extends Utils.repositoryMixin(MedusaProductRepository) { - /* You can implement custom repository methods here. */ - } - ``` +```typescript +// src/modules/product/product.repository.ts + +import { ProductRepository as MedusaProductRepository } from '@medusa/medusa/dist/repositories/order'; +import { EntityRepository } from "typeorm"; +import { Repository as MedusaRepository, Utils } from "medusa-extender"; +import { Product } from "./product.entity"; + +@MedusaRepository({ override: MedusaProductRepository }) +@EntityRepository(Product) +export class ProductRepository extends Utils.repositoryMixin(MedusaProductRepository) { + /* You can implement custom repository methods here. */ +} +```
@@ -217,53 +215,52 @@ of our extended product entity. Step 3: Extend the product service
+Click to see the raw example! + +```typescript +// src/modules/product/product.service.ts + +import { Service, OnMedusaEntityEvent, MedusaEventHandlerParams, EntityEventType } from 'medusa-extender'; +import { ProductService as MedusaProductService } from '@medusa/medusa/dist/services'; +import { EntityManager } from "typeorm"; + +type ConstructorParams = /* ... */ - Click to see the raw example! - - ```typescript - // src/modules/product/product.service.ts +@Service({ scope: 'SCOPED', override: MedusaProductService }) +export class ProductService extends MedusaProductService { + readonly #manager: EntityManager; - import { Service, OnMedusaEntityEvent, MedusaEventHandlerParams, EntityEventType } from 'medusa-extender'; - import { ProductService as MedusaProductService } from '@medusa/medusa/dist/services'; - import { EntityManager } from "typeorm"; + constructor(private readonly container: ConstructorParams) { + super(container); + this.#manager = container.manager; + } - type ConstructorParams = /* ... */ + /** + * In that example, the customField could represent a static value + * such as a store_id which depends on the loggedInUser store_id. + **/ + @OnMedusaEntityEvent.Before.Insert(Product, { async: true }) + public async attachStoreToProduct( + params: MedusaEventHandlerParams + ): Promise> { + const { event } = params; + event.entity.customField = 'custom_value'; + return event; + } - @Service({ scope: 'SCOPED', override: MedusaProductService }) - export class ProductService extends MedusaProductService { - readonly #manager: EntityManager; - - constructor(private readonly container: ConstructorParams) { - super(container); - this.#manager = container.manager; - } - - /** - * In that example, the customField could represent a static value - * such as a store_id which depends on the loggedInUser store_id. - **/ - @OnMedusaEntityEvent.Before.Insert(Product, { async: true }) - public async attachStoreToProduct( - params: MedusaEventHandlerParams - ): Promise> { - const { event } = params; - event.entity.customField = 'custom_value'; - return event; - } - - /** - * This is an example. you must not necessarly keep that implementation. - * Here, we are overriding the existing method to add a custom constraint. - * For example, if you add a store_id on a product, that value - * will probably depends on the loggedInUser store_id which is a static - * value. - **/ - public prepareListQuery_(selector: Record, config: FindConfig): object { - selector['customField'] = 'custom_value'; - return super.prepareListQuery_(selector, config); - } + /** + * This is an example. you must not necessarly keep that implementation. + * Here, we are overriding the existing method to add a custom constraint. + * For example, if you add a store_id on a product, that value + * will probably depends on the loggedInUser store_id which is a static + * value. + **/ + public prepareListQuery_(selector: Record, config: FindConfig): object { + selector['customField'] = 'custom_value'; + return super.prepareListQuery_(selector, config); } - ``` +} +```
@@ -276,18 +273,17 @@ the constraint on the new custom field. Step 4: Extend the product validator class to reflect the new field
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/adminPostProductsReq.validator.ts - - @Validator({ override: AdminPostProductsReq }) - class ExtendedClassValidator extends AdminPostProductsReq { - @IsString() - customField: string; - } - ``` +```typescript +// src/modules/product/adminPostProductsReq.validator.ts + +@Validator({ override: AdminPostProductsReq }) +class ExtendedClassValidator extends AdminPostProductsReq { + @IsString() + customField: string; +} +```
@@ -299,28 +295,27 @@ As normal, write a new migration, except this time, you decorate it with the `@M Step 5: Create the migration
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/customField.migration.ts +```typescript +// src/modules/product/customField.migration.ts + +import { Migration } from 'medusa-extender'; +import { MigrationInterface, QueryRunner } from 'typeorm'; + +@Migration() +export default class addCustomFieldToProduct1611063162649 implements MigrationInterface { + name = 'addCustomFieldToProduct1611063162649'; - import { Migration } from 'medusa-extender'; - import { MigrationInterface, QueryRunner } from 'typeorm'; + public async up(queryRunner: QueryRunner): Promise { + /* Write your query there. */ + } - @Migration() - export default class addCustomFieldToProduct1611063162649 implements MigrationInterface { - name = 'addCustomFieldToProduct1611063162649'; - - public async up(queryRunner: QueryRunner): Promise { - /* Write your query there. */ - } - - public async down(queryRunner: QueryRunner): Promise { - /* Write your query there. */ - } + public async down(queryRunner: QueryRunner): Promise { + /* Write your query there. */ } - ``` +} +```
@@ -332,30 +327,29 @@ that will be loaded by Medusa. Step 4: Create the product module
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/product.module.ts - - import { Module } from 'medusa-extender'; - import { Product } from './product.entity'; - import { ProductRepository } from './product.repository'; - import { ProductService } from './product.service'; - import { ExtendedClassValidator } from './adminPostProductsReq.validator'; - import { addCustomFieldToProduct1611063162649 } from './customField.migration'; - - @Module({ - imports: [ - Product, - ProductRepository, - ProductService, - ExtendedClassValidator, - addCustomFieldToProduct1611063162649 - ] - }) - export class ProductModule {} - ``` +```typescript +// src/modules/product/product.module.ts + +import { Module } from 'medusa-extender'; +import { Product } from './product.entity'; +import { ProductRepository } from './product.repository'; +import { ProductService } from './product.service'; +import { ExtendedClassValidator } from './adminPostProductsReq.validator'; +import { addCustomFieldToProduct1611063162649 } from './customField.migration'; + +@Module({ + imports: [ + Product, + ProductRepository, + ProductService, + ExtendedClassValidator, + addCustomFieldToProduct1611063162649 + ] +}) +export class ProductModule {} +```
@@ -367,74 +361,72 @@ your entity subscriber and to be able to handle those events easily. To be able to achieve this, here is an example.
+Click to see the example! - Click to see the example! - - ```typescript - // src/modules/product/product.subscriber.ts +```typescript +// src/modules/product/product.subscriber.ts + +import { Connection, EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm'; +import { eventEmitter, Utils, OnMedusaEntityEvent } from 'medusa-extender'; +import { Product } from './product.entity'; + +@EventSubscriber() +export default class ProductSubscriber implements EntitySubscriberInterface { + static attachTo(connection: Connection): void { + Utils.attachOrReplaceEntitySubscriber(connection, ProductSubscriber); + } - import { Connection, EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm'; - import { eventEmitter, Utils, OnMedusaEntityEvent } from 'medusa-extender'; - import { Product } from './product.entity'; + public listenTo(): typeof Product { + return Product; + } - @EventSubscriber() - export default class ProductSubscriber implements EntitySubscriberInterface { - static attachTo(connection: Connection): void { - Utils.attachOrReplaceEntitySubscriber(connection, ProductSubscriber); - } - - public listenTo(): typeof Product { - return Product; - } - - /** - * Relay the event to the handlers. - * @param event Event to pass to the event handler - */ - public async beforeInsert(event: InsertEvent): Promise { - return await eventEmitter.emitAsync(OnMedusaEntityEvent.Before.InsertEvent(Product), { - event, - transactionalEntityManager: event.manager, - }); - } + /** + * Relay the event to the handlers. + * @param event Event to pass to the event handler + */ + public async beforeInsert(event: InsertEvent): Promise { + return await eventEmitter.emitAsync(OnMedusaEntityEvent.Before.InsertEvent(Product), { + event, + transactionalEntityManager: event.manager, + }); } - ``` +} +```
And then create a new handler.
+Click to see the example! - Click to see the example! - - ```typescript - // src/modules/product/product.service.ts - - import { Service, OnMedusaEntityEvent } from 'medusa-extender'; - /* ... */ +```typescript +// src/modules/product/product.service.ts + +import { Service, OnMedusaEntityEvent } from 'medusa-extender'; +/* ... */ + +interface ConstructorParams { /* ... */ } + +@Service({ scope: 'SCOPED', override: MedusaProductService }) +export default class ProductService extends MedusaProductService { + readonly #manager: EntityManager; - interface ConstructorParams { /* ... */ } + constructor(private readonly container: ConstructorParams) { + super(container); + this.#manager = container.manager; + } - @Service({ scope: 'SCOPED', override: MedusaProductService }) - export default class ProductService extends MedusaProductService { - readonly #manager: EntityManager; - - constructor(private readonly container: ConstructorParams) { - super(container); - this.#manager = container.manager; - } - - @OnMedusaEntityEvent.Before.Insert(Product, { async: true }) - public async attachStoreToProduct( - params: MedusaEventHandlerParams - ): Promise> { - const { event } = params; - event.entity.customField = 'custom_value'; - return event; - } + @OnMedusaEntityEvent.Before.Insert(Product, { async: true }) + public async attachStoreToProduct( + params: MedusaEventHandlerParams + ): Promise> { + const { event } = params; + event.entity.customField = 'custom_value'; + return event; } - ``` +} +```
@@ -442,85 +434,82 @@ And finally, we need to add the subscriber to the connection. There are differen this. We will see, as an example below, a way to attach a request scoped subscribers.
+Click to see the example! - Click to see the example! - - ```typescript - // src/modules/product/attachSubscriber.middleware.ts - - import { Express, NextFunction, Request, Response } from 'express'; - import { - Middleware, - MedusaAuthenticatedRequest, - Utils as MedusaUtils, - MEDUSA_RESOLVER_KEYS, - MedusaRouteOptions, - } from 'medusa-extender'; - import { Connection } from 'typeorm'; - import UserSubscriber from './product.subscriber'; - - @Middleware({ requireAuth: true, routerOptions: [{ method: 'post', path: '/admin/products/' }] }) - export default class AttachProductSubscribersMiddleware { - public static get routesOptions(): MedusaRouteOptions { - return { - path: '/admin/products/', - method: 'post', - }; - } - - public consume(options: { - app: Express; - }): (req: MedusaAuthenticatedRequest | Request, res: Response, next: NextFunction) => void | Promise { - const routeOptions = AttachUserSubscribersMiddleware.routesOptions; - options.app.use((req: MedusaAuthenticatedRequest, res: Response, next: NextFunction): void => { - if (this.isExpectedRoute([routeOptions], req)) { - const { connection } = req.scope.resolve(MEDUSA_RESOLVER_KEYS.manager) as { connection: Connection }; - MedusaUtils.attachOrReplaceEntitySubscriber(connection, UserSubscriber); - } - return next(); - }); - - return (req: MedusaAuthenticatedRequest | Request, res: Response, next: NextFunction) => next(); - } - - private isExpectedRoute( - routesOptions: MedusaRouteOptions[], - req: MedusaAuthenticatedRequest | Request - ): boolean { - return routesOptions.some((routeOption) => { - return ( - req.method.toLowerCase() === routeOption.method && - req.originalUrl.toLowerCase() === routeOption.path.toLowerCase() - ); - }); - } - +```typescript +// src/modules/product/attachSubscriber.middleware.ts + +import { Express, NextFunction, Request, Response } from 'express'; +import { + Middleware, + MedusaAuthenticatedRequest, + Utils as MedusaUtils, + MEDUSA_RESOLVER_KEYS, + MedusaRouteOptions, +} from 'medusa-extender'; +import { Connection } from 'typeorm'; +import UserSubscriber from './product.subscriber'; + +@Middleware({ requireAuth: true, routerOptions: [{ method: 'post', path: '/admin/products/' }] }) +export default class AttachProductSubscribersMiddleware { + public static get routesOptions(): MedusaRouteOptions { + return { + path: '/admin/products/', + method: 'post', + }; } - - ``` + + public consume(options: { + app: Express; + }): (req: MedusaAuthenticatedRequest | Request, res: Response, next: NextFunction) => void | Promise { + const routeOptions = AttachUserSubscribersMiddleware.routesOptions; + options.app.use((req: MedusaAuthenticatedRequest, res: Response, next: NextFunction): void => { + if (this.isExpectedRoute([routeOptions], req)) { + const { connection } = req.scope.resolve(MEDUSA_RESOLVER_KEYS.manager) as { connection: Connection }; + MedusaUtils.attachOrReplaceEntitySubscriber(connection, UserSubscriber); + } + return next(); + }); + + return (req: MedusaAuthenticatedRequest | Request, res: Response, next: NextFunction) => next(); + } + + private isExpectedRoute( + routesOptions: MedusaRouteOptions[], + req: MedusaAuthenticatedRequest | Request + ): boolean { + return routesOptions.some((routeOption) => { + return ( + req.method.toLowerCase() === routeOption.method && + req.originalUrl.toLowerCase() === routeOption.path.toLowerCase() + ); + }); + } + +} +```
Now, you only need to add that middleware to the previous module we've created.
+Click to see the example! - Click to see the example! - - ```typescript - // src/modules/products/product.module.ts - - import { Module } from 'medusa-extender'; - import { AttachProductSubscribersMiddleware } from './attachSubscriber.middleware' - - @Module({ - imports: [ - /* ... */ - AttachProductSubscribersMiddleware - ] - }) - export class ProductModule {} - ``` +```typescript +// src/modules/products/product.module.ts + +import { Module } from 'medusa-extender'; +import { AttachProductSubscribersMiddleware } from './attachSubscriber.middleware' + +@Module({ + imports: [ + /* ... */ + AttachProductSubscribersMiddleware + ] +}) +export class ProductModule {} +```
diff --git a/docs/README.md b/docs/README.md index 1883e630..7ddbc956 100644 --- a/docs/README.md +++ b/docs/README.md @@ -162,23 +162,22 @@ order to add our new field. Of course, you can do everything typeorm provides (i Step 1 Extend the product entity
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/product.entity.ts - - import { Column, Entity } from "typeorm"; - import { Product as MedusaProduct } from '@medusa/medusa/dist'; - import { Entity as MedusaEntity } from "medusa-extender"; - - @MedusaEntity({ override: MedusaProduct }) - @Entity() - export class Product extends MedusaProduct { - @Column() - customField: string; - } - ``` +```typescript +// src/modules/product/product.entity.ts + +import { Column, Entity } from "typeorm"; +import { Product as MedusaProduct } from '@medusa/medusa/dist'; +import { Entity as MedusaEntity } from "medusa-extender"; + +@MedusaEntity({ override: MedusaProduct }) +@Entity() +export class Product extends MedusaProduct { + @Column() + customField: string; +} +```
@@ -190,23 +189,22 @@ order to reflect our custom entity. Step 2: Extend the product repository
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/product.repository.ts - - import { ProductRepository as MedusaProductRepository } from '@medusa/medusa/dist/repositories/order'; - import { EntityRepository } from "typeorm"; - import { Repository as MedusaRepository, Utils } from "medusa-extender"; - import { Product } from "./product.entity"; - - @MedusaRepository({ override: MedusaProductRepository }) - @EntityRepository(Product) - export class ProductRepository extends Utils.repositoryMixin(MedusaProductRepository) { - /* You can implement custom repository methods here. */ - } - ``` +```typescript +// src/modules/product/product.repository.ts + +import { ProductRepository as MedusaProductRepository } from '@medusa/medusa/dist/repositories/order'; +import { EntityRepository } from "typeorm"; +import { Repository as MedusaRepository, Utils } from "medusa-extender"; +import { Product } from "./product.entity"; + +@MedusaRepository({ override: MedusaProductRepository }) +@EntityRepository(Product) +export class ProductRepository extends Utils.repositoryMixin(MedusaProductRepository) { + /* You can implement custom repository methods here. */ +} +```
@@ -219,53 +217,52 @@ of our extended product entity. Step 3: Extend the product service
+Click to see the raw example! + +```typescript +// src/modules/product/product.service.ts + +import { Service, OnMedusaEntityEvent, MedusaEventHandlerParams, EntityEventType } from 'medusa-extender'; +import { ProductService as MedusaProductService } from '@medusa/medusa/dist/services'; +import { EntityManager } from "typeorm"; + +type ConstructorParams = /* ... */ - Click to see the raw example! - - ```typescript - // src/modules/product/product.service.ts +@Service({ scope: 'SCOPED', override: MedusaProductService }) +export class ProductService extends MedusaProductService { + readonly #manager: EntityManager; - import { Service, OnMedusaEntityEvent, MedusaEventHandlerParams, EntityEventType } from 'medusa-extender'; - import { ProductService as MedusaProductService } from '@medusa/medusa/dist/services'; - import { EntityManager } from "typeorm"; + constructor(private readonly container: ConstructorParams) { + super(container); + this.#manager = container.manager; + } - type ConstructorParams = /* ... */ + /** + * In that example, the customField could represent a static value + * such as a store_id which depends on the loggedInUser store_id. + **/ + @OnMedusaEntityEvent.Before.Insert(Product, { async: true }) + public async attachStoreToProduct( + params: MedusaEventHandlerParams + ): Promise> { + const { event } = params; + event.entity.customField = 'custom_value'; + return event; + } - @Service({ scope: 'SCOPED', override: MedusaProductService }) - export class ProductService extends MedusaProductService { - readonly #manager: EntityManager; - - constructor(private readonly container: ConstructorParams) { - super(container); - this.#manager = container.manager; - } - - /** - * In that example, the customField could represent a static value - * such as a store_id which depends on the loggedInUser store_id. - **/ - @OnMedusaEntityEvent.Before.Insert(Product, { async: true }) - public async attachStoreToProduct( - params: MedusaEventHandlerParams - ): Promise> { - const { event } = params; - event.entity.customField = 'custom_value'; - return event; - } - - /** - * This is an example. you must not necessarly keep that implementation. - * Here, we are overriding the existing method to add a custom constraint. - * For example, if you add a store_id on a product, that value - * will probably depends on the loggedInUser store_id which is a static - * value. - **/ - public prepareListQuery_(selector: Record, config: FindConfig): object { - selector['customField'] = 'custom_value'; - return super.prepareListQuery_(selector, config); - } + /** + * This is an example. you must not necessarly keep that implementation. + * Here, we are overriding the existing method to add a custom constraint. + * For example, if you add a store_id on a product, that value + * will probably depends on the loggedInUser store_id which is a static + * value. + **/ + public prepareListQuery_(selector: Record, config: FindConfig): object { + selector['customField'] = 'custom_value'; + return super.prepareListQuery_(selector, config); } - ``` +} +```
@@ -278,18 +275,17 @@ the constraint on the new custom field. Step 4: Extend the product validator class to reflect the new field
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/adminPostProductsReq.validator.ts - - @Validator({ override: AdminPostProductsReq }) - class ExtendedClassValidator extends AdminPostProductsReq { - @IsString() - customField: string; - } - ``` +```typescript +// src/modules/product/adminPostProductsReq.validator.ts + +@Validator({ override: AdminPostProductsReq }) +class ExtendedClassValidator extends AdminPostProductsReq { + @IsString() + customField: string; +} +```
@@ -301,28 +297,27 @@ As normal, write a new migration, except this time, you decorate it with the `@M Step 5: Create the migration
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/customField.migration.ts +```typescript +// src/modules/product/customField.migration.ts + +import { Migration } from 'medusa-extender'; +import { MigrationInterface, QueryRunner } from 'typeorm'; + +@Migration() +export default class addCustomFieldToProduct1611063162649 implements MigrationInterface { + name = 'addCustomFieldToProduct1611063162649'; - import { Migration } from 'medusa-extender'; - import { MigrationInterface, QueryRunner } from 'typeorm'; + public async up(queryRunner: QueryRunner): Promise { + /* Write your query there. */ + } - @Migration() - export default class addCustomFieldToProduct1611063162649 implements MigrationInterface { - name = 'addCustomFieldToProduct1611063162649'; - - public async up(queryRunner: QueryRunner): Promise { - /* Write your query there. */ - } - - public async down(queryRunner: QueryRunner): Promise { - /* Write your query there. */ - } + public async down(queryRunner: QueryRunner): Promise { + /* Write your query there. */ } - ``` +} +```
@@ -334,30 +329,29 @@ that will be loaded by Medusa. Step 4: Create the product module
+Click to see the raw example! - Click to see the raw example! - - ```typescript - // src/modules/product/product.module.ts - - import { Module } from 'medusa-extender'; - import { Product } from './product.entity'; - import { ProductRepository } from './product.repository'; - import { ProductService } from './product.service'; - import { ExtendedClassValidator } from './adminPostProductsReq.validator'; - import { addCustomFieldToProduct1611063162649 } from './customField.migration'; - - @Module({ - imports: [ - Product, - ProductRepository, - ProductService, - ExtendedClassValidator, - addCustomFieldToProduct1611063162649 - ] - }) - export class ProductModule {} - ``` +```typescript +// src/modules/product/product.module.ts + +import { Module } from 'medusa-extender'; +import { Product } from './product.entity'; +import { ProductRepository } from './product.repository'; +import { ProductService } from './product.service'; +import { ExtendedClassValidator } from './adminPostProductsReq.validator'; +import { addCustomFieldToProduct1611063162649 } from './customField.migration'; + +@Module({ + imports: [ + Product, + ProductRepository, + ProductService, + ExtendedClassValidator, + addCustomFieldToProduct1611063162649 + ] +}) +export class ProductModule {} +```
@@ -369,74 +363,72 @@ your entity subscriber and to be able to handle those events easily. To be able to achieve this, here is an example.
+Click to see the example! - Click to see the example! - - ```typescript - // src/modules/product/product.subscriber.ts +```typescript +// src/modules/product/product.subscriber.ts + +import { Connection, EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm'; +import { eventEmitter, Utils, OnMedusaEntityEvent } from 'medusa-extender'; +import { Product } from './product.entity'; + +@EventSubscriber() +export default class ProductSubscriber implements EntitySubscriberInterface { + static attachTo(connection: Connection): void { + Utils.attachOrReplaceEntitySubscriber(connection, ProductSubscriber); + } - import { Connection, EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm'; - import { eventEmitter, Utils, OnMedusaEntityEvent } from 'medusa-extender'; - import { Product } from './product.entity'; + public listenTo(): typeof Product { + return Product; + } - @EventSubscriber() - export default class ProductSubscriber implements EntitySubscriberInterface { - static attachTo(connection: Connection): void { - Utils.attachOrReplaceEntitySubscriber(connection, ProductSubscriber); - } - - public listenTo(): typeof Product { - return Product; - } - - /** - * Relay the event to the handlers. - * @param event Event to pass to the event handler - */ - public async beforeInsert(event: InsertEvent): Promise { - return await eventEmitter.emitAsync(OnMedusaEntityEvent.Before.InsertEvent(Product), { - event, - transactionalEntityManager: event.manager, - }); - } + /** + * Relay the event to the handlers. + * @param event Event to pass to the event handler + */ + public async beforeInsert(event: InsertEvent): Promise { + return await eventEmitter.emitAsync(OnMedusaEntityEvent.Before.InsertEvent(Product), { + event, + transactionalEntityManager: event.manager, + }); } - ``` +} +```
And then create a new handler.
+Click to see the example! - Click to see the example! - - ```typescript - // src/modules/product/product.service.ts - - import { Service, OnMedusaEntityEvent } from 'medusa-extender'; - /* ... */ +```typescript +// src/modules/product/product.service.ts + +import { Service, OnMedusaEntityEvent } from 'medusa-extender'; +/* ... */ + +interface ConstructorParams { /* ... */ } + +@Service({ scope: 'SCOPED', override: MedusaProductService }) +export default class ProductService extends MedusaProductService { + readonly #manager: EntityManager; - interface ConstructorParams { /* ... */ } + constructor(private readonly container: ConstructorParams) { + super(container); + this.#manager = container.manager; + } - @Service({ scope: 'SCOPED', override: MedusaProductService }) - export default class ProductService extends MedusaProductService { - readonly #manager: EntityManager; - - constructor(private readonly container: ConstructorParams) { - super(container); - this.#manager = container.manager; - } - - @OnMedusaEntityEvent.Before.Insert(Product, { async: true }) - public async attachStoreToProduct( - params: MedusaEventHandlerParams - ): Promise> { - const { event } = params; - event.entity.customField = 'custom_value'; - return event; - } + @OnMedusaEntityEvent.Before.Insert(Product, { async: true }) + public async attachStoreToProduct( + params: MedusaEventHandlerParams + ): Promise> { + const { event } = params; + event.entity.customField = 'custom_value'; + return event; } - ``` +} +```
@@ -444,85 +436,82 @@ And finally, we need to add the subscriber to the connection. There are differen this. We will see, as an example below, a way to attach a request scoped subscribers.
+Click to see the example! - Click to see the example! - - ```typescript - // src/modules/product/attachSubscriber.middleware.ts - - import { Express, NextFunction, Request, Response } from 'express'; - import { - Middleware, - MedusaAuthenticatedRequest, - Utils as MedusaUtils, - MEDUSA_RESOLVER_KEYS, - MedusaRouteOptions, - } from 'medusa-extender'; - import { Connection } from 'typeorm'; - import UserSubscriber from './product.subscriber'; - - @Middleware({ requireAuth: true, routerOptions: [{ method: 'post', path: '/admin/products/' }] }) - export default class AttachProductSubscribersMiddleware { - public static get routesOptions(): MedusaRouteOptions { - return { - path: '/admin/products/', - method: 'post', - }; - } - - public consume(options: { - app: Express; - }): (req: MedusaAuthenticatedRequest | Request, res: Response, next: NextFunction) => void | Promise { - const routeOptions = AttachUserSubscribersMiddleware.routesOptions; - options.app.use((req: MedusaAuthenticatedRequest, res: Response, next: NextFunction): void => { - if (this.isExpectedRoute([routeOptions], req)) { - const { connection } = req.scope.resolve(MEDUSA_RESOLVER_KEYS.manager) as { connection: Connection }; - MedusaUtils.attachOrReplaceEntitySubscriber(connection, UserSubscriber); - } - return next(); - }); - - return (req: MedusaAuthenticatedRequest | Request, res: Response, next: NextFunction) => next(); - } - - private isExpectedRoute( - routesOptions: MedusaRouteOptions[], - req: MedusaAuthenticatedRequest | Request - ): boolean { - return routesOptions.some((routeOption) => { - return ( - req.method.toLowerCase() === routeOption.method && - req.originalUrl.toLowerCase() === routeOption.path.toLowerCase() - ); - }); - } - +```typescript +// src/modules/product/attachSubscriber.middleware.ts + +import { Express, NextFunction, Request, Response } from 'express'; +import { + Middleware, + MedusaAuthenticatedRequest, + Utils as MedusaUtils, + MEDUSA_RESOLVER_KEYS, + MedusaRouteOptions, +} from 'medusa-extender'; +import { Connection } from 'typeorm'; +import UserSubscriber from './product.subscriber'; + +@Middleware({ requireAuth: true, routerOptions: [{ method: 'post', path: '/admin/products/' }] }) +export default class AttachProductSubscribersMiddleware { + public static get routesOptions(): MedusaRouteOptions { + return { + path: '/admin/products/', + method: 'post', + }; } - - ``` + + public consume(options: { + app: Express; + }): (req: MedusaAuthenticatedRequest | Request, res: Response, next: NextFunction) => void | Promise { + const routeOptions = AttachUserSubscribersMiddleware.routesOptions; + options.app.use((req: MedusaAuthenticatedRequest, res: Response, next: NextFunction): void => { + if (this.isExpectedRoute([routeOptions], req)) { + const { connection } = req.scope.resolve(MEDUSA_RESOLVER_KEYS.manager) as { connection: Connection }; + MedusaUtils.attachOrReplaceEntitySubscriber(connection, UserSubscriber); + } + return next(); + }); + + return (req: MedusaAuthenticatedRequest | Request, res: Response, next: NextFunction) => next(); + } + + private isExpectedRoute( + routesOptions: MedusaRouteOptions[], + req: MedusaAuthenticatedRequest | Request + ): boolean { + return routesOptions.some((routeOption) => { + return ( + req.method.toLowerCase() === routeOption.method && + req.originalUrl.toLowerCase() === routeOption.path.toLowerCase() + ); + }); + } + +} +```
Now, you only need to add that middleware to the previous module we've created.
+Click to see the example! - Click to see the example! - - ```typescript - // src/modules/products/product.module.ts - - import { Module } from 'medusa-extender'; - import { AttachProductSubscribersMiddleware } from './attachSubscriber.middleware' - - @Module({ - imports: [ - /* ... */ - AttachProductSubscribersMiddleware - ] - }) - export class ProductModule {} - ``` +```typescript +// src/modules/products/product.module.ts + +import { Module } from 'medusa-extender'; +import { AttachProductSubscribersMiddleware } from './attachSubscriber.middleware' + +@Module({ + imports: [ + /* ... */ + AttachProductSubscribersMiddleware + ] +}) +export class ProductModule {} +```
diff --git a/docs/classes/Medusa.Medusa-1.md b/docs/classes/Medusa.Medusa-1.md index abc19d52..42740be0 100644 --- a/docs/classes/Medusa.Medusa-1.md +++ b/docs/classes/Medusa.Medusa-1.md @@ -37,7 +37,7 @@ internal container and database connection. #### Defined in -[src/Medusa.ts:37](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/Medusa.ts#L37) +[src/Medusa.ts:37](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/Medusa.ts#L37) ## Properties @@ -47,7 +47,7 @@ internal container and database connection. #### Defined in -[src/Medusa.ts:30](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/Medusa.ts#L30) +[src/Medusa.ts:30](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/Medusa.ts#L30) ___ @@ -57,7 +57,7 @@ ___ #### Defined in -[src/Medusa.ts:31](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/Medusa.ts#L31) +[src/Medusa.ts:31](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/Medusa.ts#L31) ## Methods @@ -77,4 +77,4 @@ ___ #### Defined in -[src/Medusa.ts:45](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/Medusa.ts#L45) +[src/Medusa.ts:45](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/Medusa.ts#L45) diff --git a/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md b/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md index 03b85529..31a74860 100644 --- a/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md +++ b/docs/classes/decorators_onMedusaEntityEvent_decorator.OnMedusaEntityEvent.md @@ -45,7 +45,7 @@ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:42](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L42) +[src/decorators/onMedusaEntityEvent.decorator.ts:42](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L42) ## Properties @@ -55,7 +55,7 @@ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:40](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L40) +[src/decorators/onMedusaEntityEvent.decorator.ts:40](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L40) ___ @@ -65,7 +65,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:39](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L39) +[src/decorators/onMedusaEntityEvent.decorator.ts:39](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L39) ## Accessors @@ -79,7 +79,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:50](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L50) +[src/decorators/onMedusaEntityEvent.decorator.ts:50](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L50) ___ @@ -93,7 +93,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:46](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L46) +[src/decorators/onMedusaEntityEvent.decorator.ts:46](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L46) ## Methods @@ -120,7 +120,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:70](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L70) +[src/decorators/onMedusaEntityEvent.decorator.ts:70](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L70) ___ @@ -146,7 +146,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:58](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L58) +[src/decorators/onMedusaEntityEvent.decorator.ts:58](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L58) ___ @@ -173,7 +173,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:84](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L84) +[src/decorators/onMedusaEntityEvent.decorator.ts:84](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L84) ___ @@ -199,7 +199,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:66](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L66) +[src/decorators/onMedusaEntityEvent.decorator.ts:66](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L66) ___ @@ -226,7 +226,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:77](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L77) +[src/decorators/onMedusaEntityEvent.decorator.ts:77](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L77) ___ @@ -252,7 +252,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:62](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L62) +[src/decorators/onMedusaEntityEvent.decorator.ts:62](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L62) ___ @@ -280,7 +280,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:91](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L91) +[src/decorators/onMedusaEntityEvent.decorator.ts:91](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L91) ___ @@ -300,4 +300,4 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:54](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L54) +[src/decorators/onMedusaEntityEvent.decorator.ts:54](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L54) diff --git a/docs/classes/event_emmiter.Internals.CustomEventEmmiter.md b/docs/classes/event_emmiter.Internals.CustomEventEmmiter.md index 009cec69..a2a6c583 100644 --- a/docs/classes/event_emmiter.Internals.CustomEventEmmiter.md +++ b/docs/classes/event_emmiter.Internals.CustomEventEmmiter.md @@ -41,7 +41,7 @@ EventEmitter.constructor #### Defined in -[src/event-emmiter.ts:21](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/event-emmiter.ts#L21) +[src/event-emmiter.ts:21](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/event-emmiter.ts#L21) ## Properties @@ -51,7 +51,7 @@ EventEmitter.constructor #### Defined in -[src/event-emmiter.ts:19](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/event-emmiter.ts#L19) +[src/event-emmiter.ts:19](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/event-emmiter.ts#L19) ## Methods @@ -80,7 +80,7 @@ Emit an asynchrone event entity based and wait for the result. #### Defined in -[src/event-emmiter.ts:80](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/event-emmiter.ts#L80) +[src/event-emmiter.ts:80](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/event-emmiter.ts#L80) ___ @@ -110,7 +110,7 @@ Register a new event handler. #### Defined in -[src/event-emmiter.ts:31](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/event-emmiter.ts#L31) +[src/event-emmiter.ts:31](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/event-emmiter.ts#L31) ___ @@ -132,7 +132,7 @@ Apply all event handlers hold by the `listenerDescriptor`. #### Defined in -[src/event-emmiter.ts:43](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/event-emmiter.ts#L43) +[src/event-emmiter.ts:43](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/event-emmiter.ts#L43) ___ @@ -146,4 +146,4 @@ ___ #### Defined in -[src/event-emmiter.ts:68](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/event-emmiter.ts#L68) +[src/event-emmiter.ts:68](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/event-emmiter.ts#L68) diff --git a/docs/classes/metadata_reader.Internals.CustomMap.md b/docs/classes/metadata_reader.Internals.CustomMap.md index 5d2c7ef7..ba42bc99 100644 --- a/docs/classes/metadata_reader.Internals.CustomMap.md +++ b/docs/classes/metadata_reader.Internals.CustomMap.md @@ -84,4 +84,4 @@ Map.get #### Defined in -[src/metadata-reader.ts:5](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/metadata-reader.ts#L5) +[src/metadata-reader.ts:5](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/metadata-reader.ts#L5) diff --git a/docs/classes/utils.Utils.md b/docs/classes/utils.Utils.md index b29afc7a..34b7d4bb 100644 --- a/docs/classes/utils.Utils.md +++ b/docs/classes/utils.Utils.md @@ -56,7 +56,7 @@ Attach a new subscriber to a specific entities. #### Defined in -[src/utils.ts:36](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/utils.ts#L36) +[src/utils.ts:36](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/utils.ts#L36) ___ @@ -80,7 +80,7 @@ Prepare the log to be shown to be consistent everywhere. #### Defined in -[src/utils.ts:67](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/utils.ts#L67) +[src/utils.ts:67](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/utils.ts#L67) ___ @@ -102,7 +102,7 @@ Log all the routes from the express instance. #### Defined in -[src/utils.ts:57](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/utils.ts#L57) +[src/utils.ts:57](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/utils.ts#L57) ___ @@ -123,7 +123,7 @@ ___ #### Defined in -[src/utils.ts:81](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/utils.ts#L81) +[src/utils.ts:81](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/utils.ts#L81) ___ @@ -153,7 +153,7 @@ Since it is not possible to use multiple extend, you can use that utilities to a #### Defined in -[src/utils.ts:16](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/utils.ts#L16) +[src/utils.ts:16](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/utils.ts#L16) ___ @@ -173,4 +173,4 @@ ___ #### Defined in -[src/utils.ts:101](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/utils.ts#L101) +[src/utils.ts:101](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/utils.ts#L101) diff --git a/docs/interfaces/types.MedusaMiddleware.md b/docs/interfaces/types.MedusaMiddleware.md index e3b7be5b..7e41af60 100644 --- a/docs/interfaces/types.MedusaMiddleware.md +++ b/docs/interfaces/types.MedusaMiddleware.md @@ -46,4 +46,4 @@ Describe a custom middleware instance. #### Defined in -[src/types.ts:152](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L152) +[src/types.ts:152](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L152) diff --git a/docs/interfaces/types.Type.md b/docs/interfaces/types.Type.md index 2b865d5d..7fe5cbfe 100644 --- a/docs/interfaces/types.Type.md +++ b/docs/interfaces/types.Type.md @@ -40,4 +40,4 @@ Function.constructor #### Defined in -[src/types.ts:6](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L6) +[src/types.ts:6](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L6) diff --git a/docs/modules/constants.md b/docs/modules/constants.md index 2ec5e831..dc349f97 100644 --- a/docs/modules/constants.md +++ b/docs/modules/constants.md @@ -20,7 +20,7 @@ Metadata key to store config from decorated injectables. #### Defined in -[src/constants.ts:9](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/constants.ts#L9) +[src/constants.ts:9](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/constants.ts#L9) ___ @@ -66,7 +66,7 @@ Hold the name of the medusa services registered into the container for later on #### Defined in -[src/constants.ts:14](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/constants.ts#L14) +[src/constants.ts:14](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/constants.ts#L14) ___ @@ -78,4 +78,4 @@ Metadata key to store config from decorated injectables. #### Defined in -[src/constants.ts:4](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/constants.ts#L4) +[src/constants.ts:4](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/constants.ts#L4) diff --git a/docs/modules/decorators_components_decorator.md b/docs/modules/decorators_components_decorator.md index 851b7ee1..37a08a97 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/65c2ff4/src/decorators/components.decorator.ts#L16) +[src/decorators/components.decorator.ts:16](https://github.com/adrien2p/medusa-extender/blob/6b3601b/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/65c2ff4/src/decorators/components.decorator.ts#L43) +[src/decorators/components.decorator.ts:43](https://github.com/adrien2p/medusa-extender/blob/6b3601b/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/65c2ff4/src/decorators/components.decorator.ts#L51) +[src/decorators/components.decorator.ts:51](https://github.com/adrien2p/medusa-extender/blob/6b3601b/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/65c2ff4/src/decorators/components.decorator.ts#L34) +[src/decorators/components.decorator.ts:34](https://github.com/adrien2p/medusa-extender/blob/6b3601b/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/65c2ff4/src/decorators/components.decorator.ts#L60) +[src/decorators/components.decorator.ts:60](https://github.com/adrien2p/medusa-extender/blob/6b3601b/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/65c2ff4/src/decorators/components.decorator.ts#L25) +[src/decorators/components.decorator.ts:25](https://github.com/adrien2p/medusa-extender/blob/6b3601b/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/65c2ff4/src/decorators/components.decorator.ts#L69) +[src/decorators/components.decorator.ts:69](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/components.decorator.ts#L69) diff --git a/docs/modules/decorators_module_decorator.md b/docs/modules/decorators_module_decorator.md index 10b4fe55..9baece5d 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/65c2ff4/src/decorators/module.decorator.ts#L9) +[src/decorators/module.decorator.ts:9](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/module.decorator.ts#L9) diff --git a/docs/modules/decorators_onMedusaEntityEvent_decorator.md b/docs/modules/decorators_onMedusaEntityEvent_decorator.md index c7d378bf..cd6abf9d 100644 --- a/docs/modules/decorators_onMedusaEntityEvent_decorator.md +++ b/docs/modules/decorators_onMedusaEntityEvent_decorator.md @@ -24,7 +24,7 @@ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:11](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L11) +[src/decorators/onMedusaEntityEvent.decorator.ts:11](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L11) ___ @@ -41,7 +41,7 @@ ___ #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:6](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L6) +[src/decorators/onMedusaEntityEvent.decorator.ts:6](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L6) ___ @@ -60,7 +60,7 @@ Event types that can be emitted. #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:16](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L16) +[src/decorators/onMedusaEntityEvent.decorator.ts:16](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L16) ___ @@ -86,7 +86,7 @@ The arguments expected by the [OnMedusaEntityEvent](../classes/decorators_onMedu #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:25](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L25) +[src/decorators/onMedusaEntityEvent.decorator.ts:25](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L25) ___ @@ -112,4 +112,4 @@ The arguments expected by the event handler. #### Defined in -[src/decorators/onMedusaEntityEvent.decorator.ts:33](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/onMedusaEntityEvent.decorator.ts#L33) +[src/decorators/onMedusaEntityEvent.decorator.ts:33](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/onMedusaEntityEvent.decorator.ts#L33) diff --git a/docs/modules/decorators_utils.md b/docs/modules/decorators_utils.md index 302f57c2..1c6c6258 100644 --- a/docs/modules/decorators_utils.md +++ b/docs/modules/decorators_utils.md @@ -32,4 +32,4 @@ #### Defined in -[src/decorators/utils.ts:4](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/decorators/utils.ts#L4) +[src/decorators/utils.ts:4](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/decorators/utils.ts#L4) diff --git a/docs/modules/event_emmiter.Internals.md b/docs/modules/event_emmiter.Internals.md index a4303547..99253099 100644 --- a/docs/modules/event_emmiter.Internals.md +++ b/docs/modules/event_emmiter.Internals.md @@ -38,4 +38,4 @@ A listener descriptor. #### Defined in -[src/event-emmiter.ts:9](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/event-emmiter.ts#L9) +[src/event-emmiter.ts:9](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/event-emmiter.ts#L9) diff --git a/docs/modules/event_emmiter.md b/docs/modules/event_emmiter.md index 62476640..595171eb 100644 --- a/docs/modules/event_emmiter.md +++ b/docs/modules/event_emmiter.md @@ -23,4 +23,4 @@ Export the instance of the event emmiter. #### Defined in -[src/event-emmiter.ts:102](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/event-emmiter.ts#L102) +[src/event-emmiter.ts:102](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/event-emmiter.ts#L102) diff --git a/docs/modules/index.md b/docs/modules/index.md index a89acbd4..5596f7ae 100644 --- a/docs/modules/index.md +++ b/docs/modules/index.md @@ -285,4 +285,4 @@ Renames and re-exports [customEventEmitter](event_emmiter.md#customeventemitter) #### Defined in -[src/index.ts:25](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/index.ts#L25) +[src/index.ts:25](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/index.ts#L25) diff --git a/docs/modules/loaders_api_loader.md b/docs/modules/loaders_api_loader.md index 1be56334..6586153f 100644 --- a/docs/modules/loaders_api_loader.md +++ b/docs/modules/loaders_api_loader.md @@ -30,4 +30,4 @@ Decorate the original api loader to apply our custom middleware first. #### Defined in -[src/loaders/api.loader.ts:12](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/api.loader.ts#L12) +[src/loaders/api.loader.ts:12](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/api.loader.ts#L12) diff --git a/docs/modules/loaders_database_loader.md b/docs/modules/loaders_database_loader.md index 81da5e49..e804a6d2 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/65c2ff4/src/loaders/database.loader.ts#L5) +[src/loaders/database.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/database.loader.ts#L5) diff --git a/docs/modules/loaders_entities_loader.md b/docs/modules/loaders_entities_loader.md index f3a639ee..8dceba5b 100644 --- a/docs/modules/loaders_entities_loader.md +++ b/docs/modules/loaders_entities_loader.md @@ -30,7 +30,7 @@ #### Defined in -[src/loaders/entities.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/entities.loader.ts#L5) +[src/loaders/entities.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/entities.loader.ts#L5) ___ @@ -50,7 +50,7 @@ ___ #### Defined in -[src/loaders/entities.loader.ts:16](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/entities.loader.ts#L16) +[src/loaders/entities.loader.ts:16](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/entities.loader.ts#L16) ___ @@ -73,7 +73,7 @@ Load custom entity and override existing ones. #### Defined in -[src/loaders/entities.loader.ts:49](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/entities.loader.ts#L49) +[src/loaders/entities.loader.ts:49](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/entities.loader.ts#L49) ___ @@ -97,4 +97,4 @@ Load custom entity into the container. #### Defined in -[src/loaders/entities.loader.ts:30](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/entities.loader.ts#L30) +[src/loaders/entities.loader.ts:30](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/entities.loader.ts#L30) diff --git a/docs/modules/loaders_middlewares_loader.md b/docs/modules/loaders_middlewares_loader.md index 2ceb1b10..475f7056 100644 --- a/docs/modules/loaders_middlewares_loader.md +++ b/docs/modules/loaders_middlewares_loader.md @@ -31,4 +31,4 @@ Register custom middlewares into the middlewareRegistery. #### Defined in -[src/loaders/middlewares.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/middlewares.loader.ts#L13) +[src/loaders/middlewares.loader.ts:13](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/middlewares.loader.ts#L13) diff --git a/docs/modules/loaders_migrations_loader.md b/docs/modules/loaders_migrations_loader.md index 029644fe..1512dec3 100644 --- a/docs/modules/loaders_migrations_loader.md +++ b/docs/modules/loaders_migrations_loader.md @@ -30,4 +30,4 @@ Run custom migrations that are find from the provided directory and stored in a #### Defined in -[src/loaders/migrations.loader.ts:10](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/migrations.loader.ts#L10) +[src/loaders/migrations.loader.ts:10](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/migrations.loader.ts#L10) diff --git a/docs/modules/loaders_plugins_loader.md b/docs/modules/loaders_plugins_loader.md index 29f26acc..8757e939 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/65c2ff4/src/loaders/plugins.loader.ts#L11) +[src/loaders/plugins.loader.ts:11](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/plugins.loader.ts#L11) diff --git a/docs/modules/loaders_repository_loader.md b/docs/modules/loaders_repository_loader.md index 56737ecb..994f2866 100644 --- a/docs/modules/loaders_repository_loader.md +++ b/docs/modules/loaders_repository_loader.md @@ -29,7 +29,7 @@ #### Defined in -[src/loaders/repository.loader.ts:16](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/repository.loader.ts#L16) +[src/loaders/repository.loader.ts:16](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/repository.loader.ts#L16) ___ @@ -52,7 +52,7 @@ Load custom repositories and override existing ones. #### Defined in -[src/loaders/repository.loader.ts:48](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/repository.loader.ts#L48) +[src/loaders/repository.loader.ts:48](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/repository.loader.ts#L48) ___ @@ -76,7 +76,7 @@ Load custom repository into the container. #### Defined in -[src/loaders/repository.loader.ts:30](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/repository.loader.ts#L30) +[src/loaders/repository.loader.ts:30](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/repository.loader.ts#L30) ___ @@ -97,4 +97,4 @@ ___ #### Defined in -[src/loaders/repository.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/repository.loader.ts#L5) +[src/loaders/repository.loader.ts:5](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/repository.loader.ts#L5) diff --git a/docs/modules/loaders_routes_loader.md b/docs/modules/loaders_routes_loader.md index 12985d37..4ed620c9 100644 --- a/docs/modules/loaders_routes_loader.md +++ b/docs/modules/loaders_routes_loader.md @@ -28,7 +28,7 @@ #### Defined in -[src/loaders/routes.loader.ts:4](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/routes.loader.ts#L4) +[src/loaders/routes.loader.ts:4](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/routes.loader.ts#L4) ___ @@ -49,4 +49,4 @@ ___ #### Defined in -[src/loaders/routes.loader.ts:14](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/routes.loader.ts#L14) +[src/loaders/routes.loader.ts:14](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/routes.loader.ts#L14) diff --git a/docs/modules/loaders_services_loader.md b/docs/modules/loaders_services_loader.md index 7e287472..d5b008fe 100644 --- a/docs/modules/loaders_services_loader.md +++ b/docs/modules/loaders_services_loader.md @@ -33,7 +33,7 @@ Load custom service and override existing ones. #### Defined in -[src/loaders/services.loader.ts:55](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/services.loader.ts#L55) +[src/loaders/services.loader.ts:55](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/services.loader.ts#L55) ___ @@ -58,7 +58,7 @@ Load custom service into the container. #### Defined in -[src/loaders/services.loader.ts:31](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/services.loader.ts#L31) +[src/loaders/services.loader.ts:31](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/services.loader.ts#L31) ___ @@ -81,4 +81,4 @@ Load custom services from the rootDir. #### Defined in -[src/loaders/services.loader.ts:9](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/services.loader.ts#L9) +[src/loaders/services.loader.ts:9](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/services.loader.ts#L9) diff --git a/docs/modules/loaders_validators_loader.md b/docs/modules/loaders_validators_loader.md index 76b83a7b..b904bcad 100644 --- a/docs/modules/loaders_validators_loader.md +++ b/docs/modules/loaders_validators_loader.md @@ -26,4 +26,4 @@ #### Defined in -[src/loaders/validators.loader.ts:4](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/loaders/validators.loader.ts#L4) +[src/loaders/validators.loader.ts:4](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/loaders/validators.loader.ts#L4) diff --git a/docs/modules/metadata_reader.md b/docs/modules/metadata_reader.md index 081a2449..481cd0d6 100644 --- a/docs/modules/metadata_reader.md +++ b/docs/modules/metadata_reader.md @@ -40,7 +40,7 @@ Return the options from components. #### Defined in -[src/metadata-reader.ts:36](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/metadata-reader.ts#L36) +[src/metadata-reader.ts:36](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/metadata-reader.ts#L36) ___ @@ -62,4 +62,4 @@ Read all metadata from the imported modules and extract components that will be #### Defined in -[src/metadata-reader.ts:14](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/metadata-reader.ts#L14) +[src/metadata-reader.ts:14](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/metadata-reader.ts#L14) diff --git a/docs/modules/types.md b/docs/modules/types.md index cf6ffb44..2cbd2082 100644 --- a/docs/modules/types.md +++ b/docs/modules/types.md @@ -53,7 +53,7 @@ #### Defined in -[src/types.ts:9](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L9) +[src/types.ts:9](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L9) ___ @@ -78,7 +78,7 @@ Defines the injection options for entities. #### Defined in -[src/types.ts:26](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L26) +[src/types.ts:26](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L26) ___ @@ -96,7 +96,7 @@ Determine which options type it actually is depending on the component type. #### Defined in -[src/types.ts:94](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L94) +[src/types.ts:94](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L94) ___ @@ -114,7 +114,7 @@ Determine which options type it actually is depending on the component type. #### Defined in -[src/types.ts:117](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L117) +[src/types.ts:117](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L117) ___ @@ -126,7 +126,7 @@ Components that does not required any other options that Type. #### Defined in -[src/types.ts:14](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L14) +[src/types.ts:14](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L14) ___ @@ -144,7 +144,7 @@ Union of all options type possible for injectable. #### Defined in -[src/types.ts:83](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L83) +[src/types.ts:83](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L83) ___ @@ -156,7 +156,7 @@ Describe the expected request from a middleware [MedusaMiddleware](../interfaces #### Defined in -[src/types.ts:130](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L130) +[src/types.ts:130](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L130) ___ @@ -175,7 +175,7 @@ Medusa request extended. #### Defined in -[src/types.ts:123](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L123) +[src/types.ts:123](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L123) ___ @@ -185,7 +185,7 @@ ___ #### Defined in -[src/types.ts:137](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L137) +[src/types.ts:137](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L137) ___ @@ -204,7 +204,7 @@ Describe all the available options for the Route [MedusaMiddleware](../interface #### Defined in -[src/types.ts:142](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L142) +[src/types.ts:142](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L142) ___ @@ -223,7 +223,7 @@ Defines the injection options for middlewares. #### Defined in -[src/types.ts:68](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L68) +[src/types.ts:68](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L68) ___ @@ -242,7 +242,7 @@ Mix the return type of two objects. #### Defined in -[src/types.ts:160](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L160) +[src/types.ts:160](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L160) ___ @@ -267,7 +267,7 @@ Defines the injection options for services, entities, repositories. #### Defined in -[src/types.ts:43](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L43) +[src/types.ts:43](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L43) ___ @@ -285,7 +285,7 @@ Defines the injection options for routes. #### Defined in -[src/types.ts:61](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L61) +[src/types.ts:61](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L61) ___ @@ -306,7 +306,7 @@ Define a router and its configuration. #### Defined in -[src/types.ts:51](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L51) +[src/types.ts:51](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L51) ___ @@ -332,7 +332,7 @@ Defines the injection options for service. #### Defined in -[src/types.ts:34](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L34) +[src/types.ts:34](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L34) ___ @@ -356,4 +356,4 @@ Defines the injection options for routes. #### Defined in -[src/types.ts:76](https://github.com/adrien2p/medusa-extender/blob/65c2ff4/src/types.ts#L76) +[src/types.ts:76](https://github.com/adrien2p/medusa-extender/blob/6b3601b/src/types.ts#L76)