chore: Remove FlagRouter from core (#4710)
* Allow nested feature flags * clean up * Create loud-wombats-shave.md * add warning * Add more tests * Address PR comments * add back boolean check * Replace core flag router with utils one * lol - actually remove it * Create eleven-doors-roll.md --------- Co-authored-by: carlos-r-l-rodrigues <rodrigolr@gmail.com>
This commit is contained in:
co-authored by
carlos-r-l-rodrigues
parent
281b0746cf
commit
d1e298f5dc
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@medusajs/medusa": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
chore: Remove FlagRouter from core
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { NextFunction, Request, Response } from "express"
|
import { NextFunction, Request, Response } from "express"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
|
||||||
|
|
||||||
export function isFeatureFlagEnabled(
|
export function isFeatureFlagEnabled(
|
||||||
flagKey: string
|
flagKey: string
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { NextFunction, Request, Response } from "express"
|
import { NextFunction, Request, Response } from "express"
|
||||||
import SalesChannelFeatureFlag from "../../loaders/feature-flags/sales-channels"
|
import SalesChannelFeatureFlag from "../../loaders/feature-flags/sales-channels"
|
||||||
import { SalesChannelService } from "../../services"
|
import { SalesChannelService } from "../../services"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Middleware that includes the default sales channel on the request, if no sales channels present
|
* Middleware that includes the default sales channel on the request, if no sales channels present
|
||||||
|
|||||||
@@ -1,81 +1,81 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { Router } from "express"
|
import { Router } from "express"
|
||||||
import "reflect-metadata"
|
import "reflect-metadata"
|
||||||
import { Order } from "../../../.."
|
import { Order } from "../../../.."
|
||||||
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels"
|
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels"
|
||||||
import { FindParams, PaginatedResponse } from "../../../../types/common"
|
import { FindParams, PaginatedResponse } from "../../../../types/common"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
import {
|
||||||
|
defaultAdminOrdersFields,
|
||||||
|
defaultAdminOrdersRelations,
|
||||||
|
} from "../../../../types/orders"
|
||||||
import middlewares, {
|
import middlewares, {
|
||||||
transformBody,
|
transformBody,
|
||||||
transformIncludesOptions,
|
transformIncludesOptions,
|
||||||
transformQuery,
|
transformQuery,
|
||||||
} from "../../../middlewares"
|
} from "../../../middlewares"
|
||||||
import { checkRegisteredModules } from "../../../middlewares/check-registered-modules"
|
import { checkRegisteredModules } from "../../../middlewares/check-registered-modules"
|
||||||
import { AdminOrdersOrderLineItemReservationReq } from "./create-reservation-for-line-item"
|
|
||||||
import { AdminGetOrdersOrderReservationsParams } from "./get-reservations"
|
|
||||||
import { AdminGetOrdersParams } from "./list-orders"
|
|
||||||
import {
|
|
||||||
AdminPostOrdersOrderSwapsParams,
|
|
||||||
AdminPostOrdersOrderSwapsReq,
|
|
||||||
} from "./create-swap"
|
|
||||||
import {
|
|
||||||
AdminPostOrdersOrderParams,
|
|
||||||
AdminPostOrdersOrderReq,
|
|
||||||
} from "./update-order"
|
|
||||||
import { AdminPostOrdersOrderCompleteParams } from "./complete-order"
|
|
||||||
import {
|
|
||||||
AdminPostOrdersOrderRefundsParams,
|
|
||||||
AdminPostOrdersOrderRefundsReq,
|
|
||||||
} from "./refund-payment"
|
|
||||||
import { AdminPostOrdersOrderCaptureParams } from "./capture-payment"
|
|
||||||
import {
|
|
||||||
AdminPostOrdersOrderFulfillmentsParams,
|
|
||||||
AdminPostOrdersOrderFulfillmentsReq,
|
|
||||||
} from "./create-fulfillment"
|
|
||||||
import { AdminPostOrdersOrderFulfillementsCancelParams } from "./cancel-fulfillment"
|
|
||||||
import { AdminPostOrdersOrderSwapFulfillementsCancelParams } from "./cancel-fulfillment-swap"
|
|
||||||
import { AdminPostOrdersClaimFulfillmentsCancelParams } from "./cancel-fulfillment-claim"
|
|
||||||
import {
|
|
||||||
AdminPostOrdersOrderShipmentParams,
|
|
||||||
AdminPostOrdersOrderShipmentReq,
|
|
||||||
} from "./create-shipment"
|
|
||||||
import {
|
|
||||||
AdminPostOrdersOrderReturnsParams,
|
|
||||||
AdminPostOrdersOrderReturnsReq,
|
|
||||||
} from "./request-return"
|
|
||||||
import { AdminPostOrdersOrderCancel } from "./cancel-order"
|
|
||||||
import {
|
import {
|
||||||
AdminPostOrdersOrderShippingMethodsParams,
|
AdminPostOrdersOrderShippingMethodsParams,
|
||||||
AdminPostOrdersOrderShippingMethodsReq,
|
AdminPostOrdersOrderShippingMethodsReq,
|
||||||
} from "./add-shipping-method"
|
} from "./add-shipping-method"
|
||||||
import { AdminPostOrdersOrderArchiveParams } from "./archive-order"
|
import { AdminPostOrdersOrderArchiveParams } from "./archive-order"
|
||||||
|
import { AdminPostOrdersClaimCancel } from "./cancel-claim"
|
||||||
|
import { AdminPostOrdersOrderFulfillementsCancelParams } from "./cancel-fulfillment"
|
||||||
|
import { AdminPostOrdersClaimFulfillmentsCancelParams } from "./cancel-fulfillment-claim"
|
||||||
|
import { AdminPostOrdersOrderSwapFulfillementsCancelParams } from "./cancel-fulfillment-swap"
|
||||||
|
import { AdminPostOrdersOrderCancel } from "./cancel-order"
|
||||||
import { AdminPostOrdersSwapCancelParams } from "./cancel-swap"
|
import { AdminPostOrdersSwapCancelParams } from "./cancel-swap"
|
||||||
import { AdminPostOrdersOrderSwapsSwapFulfillmentsParams } from "./fulfill-swap"
|
import { AdminPostOrdersOrderCaptureParams } from "./capture-payment"
|
||||||
import {
|
import { AdminPostOrdersOrderCompleteParams } from "./complete-order"
|
||||||
AdminPostOrdersOrderSwapsSwapShipmentsParams,
|
|
||||||
AdminPostOrdersOrderSwapsSwapShipmentsReq,
|
|
||||||
} from "./create-swap-shipment"
|
|
||||||
import { AdminPostOrdersOrderSwapsSwapProcessPaymentParams } from "./process-swap-payment"
|
|
||||||
import {
|
import {
|
||||||
AdminPostOrdersOrderClaimsParams,
|
AdminPostOrdersOrderClaimsParams,
|
||||||
AdminPostOrdersOrderClaimsReq,
|
AdminPostOrdersOrderClaimsReq,
|
||||||
} from "./create-claim"
|
} from "./create-claim"
|
||||||
import { AdminPostOrdersClaimCancel } from "./cancel-claim"
|
|
||||||
import {
|
|
||||||
AdminPostOrdersOrderClaimsClaimParams,
|
|
||||||
AdminPostOrdersOrderClaimsClaimReq,
|
|
||||||
} from "./update-claim"
|
|
||||||
import {
|
|
||||||
AdminPostOrdersOrderClaimsClaimFulfillmentsParams,
|
|
||||||
AdminPostOrdersOrderClaimsClaimFulfillmentsReq,
|
|
||||||
} from "./fulfill-claim"
|
|
||||||
import {
|
import {
|
||||||
AdminPostOrdersOrderClaimsClaimShipmentsParams,
|
AdminPostOrdersOrderClaimsClaimShipmentsParams,
|
||||||
AdminPostOrdersOrderClaimsClaimShipmentsReq,
|
AdminPostOrdersOrderClaimsClaimShipmentsReq,
|
||||||
} from "./create-claim-shipment"
|
} from "./create-claim-shipment"
|
||||||
import {
|
import {
|
||||||
defaultAdminOrdersFields,
|
AdminPostOrdersOrderFulfillmentsParams,
|
||||||
defaultAdminOrdersRelations,
|
AdminPostOrdersOrderFulfillmentsReq,
|
||||||
} from "../../../../types/orders"
|
} from "./create-fulfillment"
|
||||||
|
import { AdminOrdersOrderLineItemReservationReq } from "./create-reservation-for-line-item"
|
||||||
|
import {
|
||||||
|
AdminPostOrdersOrderShipmentParams,
|
||||||
|
AdminPostOrdersOrderShipmentReq,
|
||||||
|
} from "./create-shipment"
|
||||||
|
import {
|
||||||
|
AdminPostOrdersOrderSwapsParams,
|
||||||
|
AdminPostOrdersOrderSwapsReq,
|
||||||
|
} from "./create-swap"
|
||||||
|
import {
|
||||||
|
AdminPostOrdersOrderSwapsSwapShipmentsParams,
|
||||||
|
AdminPostOrdersOrderSwapsSwapShipmentsReq,
|
||||||
|
} from "./create-swap-shipment"
|
||||||
|
import {
|
||||||
|
AdminPostOrdersOrderClaimsClaimFulfillmentsParams,
|
||||||
|
AdminPostOrdersOrderClaimsClaimFulfillmentsReq,
|
||||||
|
} from "./fulfill-claim"
|
||||||
|
import { AdminPostOrdersOrderSwapsSwapFulfillmentsParams } from "./fulfill-swap"
|
||||||
|
import { AdminGetOrdersOrderReservationsParams } from "./get-reservations"
|
||||||
|
import { AdminGetOrdersParams } from "./list-orders"
|
||||||
|
import { AdminPostOrdersOrderSwapsSwapProcessPaymentParams } from "./process-swap-payment"
|
||||||
|
import {
|
||||||
|
AdminPostOrdersOrderRefundsParams,
|
||||||
|
AdminPostOrdersOrderRefundsReq,
|
||||||
|
} from "./refund-payment"
|
||||||
|
import {
|
||||||
|
AdminPostOrdersOrderReturnsParams,
|
||||||
|
AdminPostOrdersOrderReturnsReq,
|
||||||
|
} from "./request-return"
|
||||||
|
import {
|
||||||
|
AdminPostOrdersOrderClaimsClaimParams,
|
||||||
|
AdminPostOrdersOrderClaimsClaimReq,
|
||||||
|
} from "./update-claim"
|
||||||
|
import {
|
||||||
|
AdminPostOrdersOrderParams,
|
||||||
|
AdminPostOrdersOrderReq,
|
||||||
|
} from "./update-order"
|
||||||
|
|
||||||
const route = Router()
|
const route = Router()
|
||||||
|
|
||||||
@@ -779,3 +779,4 @@ export * from "./refund-payment"
|
|||||||
export * from "./request-return"
|
export * from "./request-return"
|
||||||
export * from "./update-claim"
|
export * from "./update-claim"
|
||||||
export * from "./update-order"
|
export * from "./update-order"
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { Router } from "express"
|
import { Router } from "express"
|
||||||
import "reflect-metadata"
|
import "reflect-metadata"
|
||||||
import { PriceList, Product } from "../../../.."
|
import { PriceList, Product } from "../../../.."
|
||||||
|
import TaxInclusivePricingFeatureFlag from "../../../../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { DeleteResponse, PaginatedResponse } from "../../../../types/common"
|
import { DeleteResponse, PaginatedResponse } from "../../../../types/common"
|
||||||
import middlewares, {
|
import middlewares, {
|
||||||
transformBody,
|
transformBody,
|
||||||
transformQuery,
|
transformQuery,
|
||||||
} from "../../../middlewares"
|
} from "../../../middlewares"
|
||||||
import { AdminGetPriceListPaginationParams } from "./list-price-lists"
|
|
||||||
import { AdminGetPriceListsPriceListProductsParams } from "./list-price-list-products"
|
|
||||||
import {
|
import {
|
||||||
defaultAdminProductFields,
|
defaultAdminProductFields,
|
||||||
defaultAdminProductRelations,
|
defaultAdminProductRelations,
|
||||||
} from "../products"
|
} from "../products"
|
||||||
import { AdminPostPriceListsPriceListReq } from "./create-price-list"
|
import { AdminPostPriceListsPriceListReq } from "./create-price-list"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
import { AdminGetPriceListsPriceListProductsParams } from "./list-price-list-products"
|
||||||
import TaxInclusivePricingFeatureFlag from "../../../../loaders/feature-flags/tax-inclusive-pricing"
|
import { AdminGetPriceListPaginationParams } from "./list-price-lists"
|
||||||
|
|
||||||
const route = Router()
|
const route = Router()
|
||||||
|
|
||||||
@@ -280,8 +280,9 @@ export type AdminPriceListsProductsListRes = PaginatedResponse & {
|
|||||||
export * from "./add-prices-batch"
|
export * from "./add-prices-batch"
|
||||||
export * from "./create-price-list"
|
export * from "./create-price-list"
|
||||||
export * from "./delete-price-list"
|
export * from "./delete-price-list"
|
||||||
|
export * from "./delete-prices-batch"
|
||||||
export * from "./get-price-list"
|
export * from "./get-price-list"
|
||||||
|
export * from "./list-price-list-products"
|
||||||
export * from "./list-price-lists"
|
export * from "./list-price-lists"
|
||||||
export * from "./update-price-list"
|
export * from "./update-price-list"
|
||||||
export * from "./delete-prices-batch"
|
|
||||||
export * from "./list-price-list-products"
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import "reflect-metadata"
|
import "reflect-metadata"
|
||||||
|
|
||||||
import { FindParams, PaginatedResponse } from "../../../../types/common"
|
|
||||||
import { Product, ProductTag, ProductType, ProductVariant } from "../../../.."
|
import { Product, ProductTag, ProductType, ProductVariant } from "../../../.."
|
||||||
|
import { FindParams, PaginatedResponse } from "../../../../types/common"
|
||||||
import middlewares, { transformQuery } from "../../../middlewares"
|
import middlewares, { transformQuery } from "../../../middlewares"
|
||||||
|
|
||||||
import { AdminGetProductsParams } from "./list-products"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
|
||||||
import { Router } from "express"
|
import { Router } from "express"
|
||||||
import { validateSalesChannelsExist } from "../../../middlewares/validators/sales-channel-existence"
|
|
||||||
import { PricedProduct } from "../../../../types/pricing"
|
import { PricedProduct } from "../../../../types/pricing"
|
||||||
|
import { validateSalesChannelsExist } from "../../../middlewares/validators/sales-channel-existence"
|
||||||
|
import { AdminGetProductsParams } from "./list-products"
|
||||||
|
|
||||||
const route = Router()
|
const route = Router()
|
||||||
|
|
||||||
@@ -407,3 +407,4 @@ export * from "./set-metadata"
|
|||||||
export * from "./update-option"
|
export * from "./update-option"
|
||||||
export * from "./update-product"
|
export * from "./update-product"
|
||||||
export * from "./update-variant"
|
export * from "./update-variant"
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { Router } from "express"
|
import { Router } from "express"
|
||||||
|
import "reflect-metadata"
|
||||||
import { Region } from "../../../.."
|
import { Region } from "../../../.."
|
||||||
|
import TaxInclusivePricingFeatureFlag from "../../../../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { DeleteResponse, PaginatedResponse } from "../../../../types/common"
|
import { DeleteResponse, PaginatedResponse } from "../../../../types/common"
|
||||||
import middlewares from "../../../middlewares"
|
import middlewares from "../../../middlewares"
|
||||||
import "reflect-metadata"
|
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
|
||||||
import TaxInclusivePricingFeatureFlag from "../../../../loaders/feature-flags/tax-inclusive-pricing"
|
|
||||||
|
|
||||||
const route = Router()
|
const route = Router()
|
||||||
|
|
||||||
@@ -204,9 +204,10 @@ export class AdminGetRegionsRegionFulfillmentOptionsRes {
|
|||||||
fulfillment_options: FulfillmentOption[]
|
fulfillment_options: FulfillmentOption[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export * from "./add-country"
|
||||||
|
export * from "./add-fulfillment-provider"
|
||||||
|
export * from "./add-payment-provider"
|
||||||
|
export * from "./create-region"
|
||||||
export * from "./list-regions"
|
export * from "./list-regions"
|
||||||
export * from "./update-region"
|
export * from "./update-region"
|
||||||
export * from "./create-region"
|
|
||||||
export * from "./add-country"
|
|
||||||
export * from "./add-payment-provider"
|
|
||||||
export * from "./add-fulfillment-provider"
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { Router } from "express"
|
import { Router } from "express"
|
||||||
import { ShippingOption } from "../../../.."
|
import { ShippingOption } from "../../../.."
|
||||||
|
import TaxInclusivePricingFeatureFlag from "../../../../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { DeleteResponse, PaginatedResponse } from "../../../../types/common"
|
import { DeleteResponse, PaginatedResponse } from "../../../../types/common"
|
||||||
import middlewares from "../../../middlewares"
|
import middlewares from "../../../middlewares"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
|
||||||
import TaxInclusivePricingFeatureFlag from "../../../../loaders/feature-flags/tax-inclusive-pricing"
|
|
||||||
|
|
||||||
const route = Router()
|
const route = Router()
|
||||||
|
|
||||||
@@ -139,3 +139,4 @@ export * from "./delete-shipping-option"
|
|||||||
export * from "./get-shipping-option"
|
export * from "./get-shipping-option"
|
||||||
export * from "./list-shipping-options"
|
export * from "./list-shipping-options"
|
||||||
export * from "./update-shipping-option"
|
export * from "./update-shipping-option"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { ModulesHelper } from "@medusajs/modules-sdk"
|
import { ModulesHelper } from "@medusajs/modules-sdk"
|
||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { defaultRelationsExtended } from "."
|
import { defaultRelationsExtended } from "."
|
||||||
import {
|
import {
|
||||||
FulfillmentProviderService,
|
FulfillmentProviderService,
|
||||||
@@ -6,7 +7,6 @@ import {
|
|||||||
StoreService,
|
StoreService,
|
||||||
} from "../../../../services"
|
} from "../../../../services"
|
||||||
import { ExtendedStoreDTO } from "../../../../types/store"
|
import { ExtendedStoreDTO } from "../../../../types/store"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @oas [get] /admin/store
|
* @oas [get] /admin/store
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import reqIp from "request-ip"
|
|||||||
import { EntityManager } from "typeorm"
|
import { EntityManager } from "typeorm"
|
||||||
|
|
||||||
import { Logger } from "@medusajs/types"
|
import { Logger } from "@medusajs/types"
|
||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { defaultStoreCartFields, defaultStoreCartRelations } from "."
|
import { defaultStoreCartFields, defaultStoreCartRelations } from "."
|
||||||
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels"
|
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels"
|
||||||
import { Cart, LineItem } from "../../../../models"
|
import { Cart, LineItem } from "../../../../models"
|
||||||
@@ -28,7 +29,6 @@ import {
|
|||||||
import { CartCreateProps } from "../../../../types/cart"
|
import { CartCreateProps } from "../../../../types/cart"
|
||||||
import { cleanResponseData } from "../../../../utils/clean-response-data"
|
import { cleanResponseData } from "../../../../utils/clean-response-data"
|
||||||
import { FeatureFlagDecorators } from "../../../../utils/feature-flag-decorators"
|
import { FeatureFlagDecorators } from "../../../../utils/feature-flag-decorators"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @oas [post] /store/carts
|
* @oas [post] /store/carts
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { AwilixContainer } from "awilix"
|
import { AwilixContainer } from "awilix"
|
||||||
import { EntityManager } from "typeorm"
|
import { EntityManager } from "typeorm"
|
||||||
import { Cart } from "../../../../../../models"
|
import { Cart } from "../../../../../../models"
|
||||||
import { CartService, LineItemService } from "../../../../../../services"
|
import { CartService, LineItemService } from "../../../../../../services"
|
||||||
import { WithRequiredProperty } from "../../../../../../types/common"
|
import { WithRequiredProperty } from "../../../../../../types/common"
|
||||||
import { IdempotencyCallbackResult } from "../../../../../../types/idempotency-key"
|
import { IdempotencyCallbackResult } from "../../../../../../types/idempotency-key"
|
||||||
import { FlagRouter } from "../../../../../../utils/flag-router"
|
|
||||||
import { defaultStoreCartFields, defaultStoreCartRelations } from "../../index"
|
import { defaultStoreCartFields, defaultStoreCartRelations } from "../../index"
|
||||||
|
|
||||||
export const CreateLineItemSteps = {
|
export const CreateLineItemSteps = {
|
||||||
|
|||||||
@@ -2,17 +2,17 @@ import "reflect-metadata"
|
|||||||
|
|
||||||
import middlewares, { transformStoreQuery } from "../../../middlewares"
|
import middlewares, { transformStoreQuery } from "../../../middlewares"
|
||||||
|
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
import { Router } from "express"
|
||||||
|
import { Product } from "../../../.."
|
||||||
import { PaginatedResponse } from "../../../../types/common"
|
import { PaginatedResponse } from "../../../../types/common"
|
||||||
import { PricedProduct } from "../../../../types/pricing"
|
import { PricedProduct } from "../../../../types/pricing"
|
||||||
import { Product } from "../../../.."
|
|
||||||
import { Router } from "express"
|
|
||||||
import { StoreGetProductsParams } from "./list-products"
|
|
||||||
import { StoreGetProductsProductParams } from "./get-product"
|
|
||||||
import { extendRequestParams } from "../../../middlewares/publishable-api-key/extend-request-params"
|
import { extendRequestParams } from "../../../middlewares/publishable-api-key/extend-request-params"
|
||||||
import { validateProductSalesChannelAssociation } from "../../../middlewares/publishable-api-key/validate-product-sales-channel-association"
|
import { validateProductSalesChannelAssociation } from "../../../middlewares/publishable-api-key/validate-product-sales-channel-association"
|
||||||
import { validateSalesChannelParam } from "../../../middlewares/publishable-api-key/validate-sales-channel-param"
|
import { validateSalesChannelParam } from "../../../middlewares/publishable-api-key/validate-sales-channel-param"
|
||||||
import { withDefaultSalesChannel } from "../../../middlewares/with-default-sales-channel"
|
import { withDefaultSalesChannel } from "../../../middlewares/with-default-sales-channel"
|
||||||
|
import { StoreGetProductsProductParams } from "./get-product"
|
||||||
|
import { StoreGetProductsParams } from "./list-products"
|
||||||
|
|
||||||
const route = Router()
|
const route = Router()
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,18 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
import { AwilixContainer } from "awilix"
|
||||||
import {
|
import {
|
||||||
BaseFulfillmentService,
|
BaseFulfillmentService,
|
||||||
BaseNotificationService,
|
BaseNotificationService,
|
||||||
BasePaymentService,
|
BasePaymentService,
|
||||||
} from "medusa-interfaces"
|
} from "medusa-interfaces"
|
||||||
import { currencies } from "../utils/currencies"
|
|
||||||
import { countries } from "../utils/countries"
|
|
||||||
import { AwilixContainer } from "awilix"
|
|
||||||
import { Logger } from "../types/global"
|
|
||||||
import { EntityManager } from "typeorm"
|
import { EntityManager } from "typeorm"
|
||||||
|
import {
|
||||||
|
AbstractPaymentProcessor,
|
||||||
|
AbstractPaymentService,
|
||||||
|
AbstractTaxService,
|
||||||
|
} from "../interfaces"
|
||||||
import { CountryRepository } from "../repositories/country"
|
import { CountryRepository } from "../repositories/country"
|
||||||
|
import { CurrencyRepository } from "../repositories/currency"
|
||||||
import {
|
import {
|
||||||
FulfillmentProviderService,
|
FulfillmentProviderService,
|
||||||
NotificationService,
|
NotificationService,
|
||||||
@@ -18,14 +22,10 @@ import {
|
|||||||
StoreService,
|
StoreService,
|
||||||
TaxProviderService,
|
TaxProviderService,
|
||||||
} from "../services"
|
} from "../services"
|
||||||
import { CurrencyRepository } from "../repositories/currency"
|
import { Logger } from "../types/global"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
import { countries } from "../utils/countries"
|
||||||
|
import { currencies } from "../utils/currencies"
|
||||||
import SalesChannelFeatureFlag from "./feature-flags/sales-channels"
|
import SalesChannelFeatureFlag from "./feature-flags/sales-channels"
|
||||||
import {
|
|
||||||
AbstractPaymentProcessor,
|
|
||||||
AbstractPaymentService,
|
|
||||||
AbstractTaxService,
|
|
||||||
} from "../interfaces"
|
|
||||||
|
|
||||||
const silentResolution = <T>(
|
const silentResolution = <T>(
|
||||||
container: AwilixContainer,
|
container: AwilixContainer,
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { asClass, asValue, createContainer } from "awilix"
|
import { asClass, asValue, createContainer } from "awilix"
|
||||||
import { IdMap, MockManager } from "medusa-test-utils"
|
import { IdMap, MockManager } from "medusa-test-utils"
|
||||||
import { taxProviderServiceMock } from "../__mocks__/tax-provider"
|
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
|
||||||
import {
|
import {
|
||||||
GiftCard,
|
GiftCard,
|
||||||
LineItem,
|
LineItem,
|
||||||
@@ -10,6 +9,7 @@ import {
|
|||||||
ShippingMethodTaxLine,
|
ShippingMethodTaxLine,
|
||||||
} from "../../models"
|
} from "../../models"
|
||||||
import TaxCalculationStrategy from "../../strategies/tax-calculation"
|
import TaxCalculationStrategy from "../../strategies/tax-calculation"
|
||||||
|
import { taxProviderServiceMock } from "../__mocks__/tax-provider"
|
||||||
|
|
||||||
export const defaultContainerMock = createContainer()
|
export const defaultContainerMock = createContainer()
|
||||||
defaultContainerMock.register("manager", asValue(MockManager))
|
defaultContainerMock.register("manager", asValue(MockManager))
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { asClass, asFunction, asValue, createContainer } from "awilix"
|
import { asClass, asFunction, asValue, createContainer } from "awilix"
|
||||||
import { MockManager, MockRepository } from "medusa-test-utils"
|
import { MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import PaymentProviderService from "../payment-provider"
|
|
||||||
import { PaymentProviderServiceMock } from "../__mocks__/payment-provider"
|
|
||||||
import { CustomerServiceMock } from "../__mocks__/customer"
|
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
|
||||||
import Logger from "../../loaders/logger"
|
|
||||||
import {
|
import {
|
||||||
AbstractPaymentProcessor,
|
AbstractPaymentProcessor,
|
||||||
PaymentProcessorContext,
|
PaymentProcessorContext,
|
||||||
PaymentProcessorError,
|
PaymentProcessorError,
|
||||||
PaymentProcessorSessionResponse,
|
PaymentProcessorSessionResponse,
|
||||||
} from "../../interfaces"
|
} from "../../interfaces"
|
||||||
|
import Logger from "../../loaders/logger"
|
||||||
import { PaymentSessionStatus } from "../../models"
|
import { PaymentSessionStatus } from "../../models"
|
||||||
|
import { CustomerServiceMock } from "../__mocks__/customer"
|
||||||
import { PaymentServiceMock } from "../__mocks__/payment"
|
import { PaymentServiceMock } from "../__mocks__/payment"
|
||||||
|
import { PaymentProviderServiceMock } from "../__mocks__/payment-provider"
|
||||||
|
import PaymentProviderService from "../payment-provider"
|
||||||
|
|
||||||
export const defaultContainer = createContainer()
|
export const defaultContainer = createContainer()
|
||||||
defaultContainer.register(
|
defaultContainer.register(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import _ from "lodash"
|
|||||||
import { asClass, asValue, createContainer } from "awilix"
|
import { asClass, asValue, createContainer } from "awilix"
|
||||||
import { MedusaError } from "medusa-core-utils"
|
import { MedusaError } from "medusa-core-utils"
|
||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import CartService from "../cart"
|
import CartService from "../cart"
|
||||||
import { ProductVariantInventoryServiceMock } from "../__mocks__/product-variant-inventory"
|
import { ProductVariantInventoryServiceMock } from "../__mocks__/product-variant-inventory"
|
||||||
import { LineItemAdjustmentServiceMock } from "../__mocks__/line-item-adjustment"
|
import { LineItemAdjustmentServiceMock } from "../__mocks__/line-item-adjustment"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { Currency } from "../../models"
|
import { Currency } from "../../models"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
|
||||||
import CurrencyService from "../currency"
|
import CurrencyService from "../currency"
|
||||||
import EventBusService from "../event-bus"
|
import EventBusService from "../event-bus"
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import DiscountService from "../discount"
|
import DiscountService from "../discount"
|
||||||
import { TotalsServiceMock } from "../__mocks__/totals"
|
import { TotalsServiceMock } from "../__mocks__/totals"
|
||||||
import { newTotalsServiceMock } from "../__mocks__/new-totals"
|
import { newTotalsServiceMock } from "../__mocks__/new-totals"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import LineItemService from "../line-item"
|
import LineItemService from "../line-item"
|
||||||
import { PricingServiceMock } from "../__mocks__/pricing"
|
import { PricingServiceMock } from "../__mocks__/pricing"
|
||||||
import { ProductVariantServiceMock } from "../__mocks__/product-variant"
|
import { ProductVariantServiceMock } from "../__mocks__/product-variant"
|
||||||
|
|||||||
@@ -1,14 +1,7 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { asClass, asValue, createContainer } from "awilix"
|
import { asClass, asValue, createContainer } from "awilix"
|
||||||
import {
|
|
||||||
defaultContainerMock,
|
|
||||||
giftCards,
|
|
||||||
giftCardsWithTaxRate,
|
|
||||||
lineItems,
|
|
||||||
shippingMethods,
|
|
||||||
} from "../__fixtures__/new-totals"
|
|
||||||
import { NewTotalsService } from "../index"
|
|
||||||
import { TaxCalculationContext } from "../../interfaces"
|
import { TaxCalculationContext } from "../../interfaces"
|
||||||
import { taxProviderServiceMock } from "../__mocks__/tax-provider"
|
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import {
|
import {
|
||||||
Discount,
|
Discount,
|
||||||
DiscountRuleType,
|
DiscountRuleType,
|
||||||
@@ -17,8 +10,15 @@ import {
|
|||||||
Region,
|
Region,
|
||||||
ShippingMethod,
|
ShippingMethod,
|
||||||
} from "../../models"
|
} from "../../models"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
import {
|
||||||
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
defaultContainerMock,
|
||||||
|
giftCards,
|
||||||
|
giftCardsWithTaxRate,
|
||||||
|
lineItems,
|
||||||
|
shippingMethods,
|
||||||
|
} from "../__fixtures__/new-totals"
|
||||||
|
import { taxProviderServiceMock } from "../__mocks__/tax-provider"
|
||||||
|
import { NewTotalsService } from "../index"
|
||||||
|
|
||||||
describe("New totals service", () => {
|
describe("New totals service", () => {
|
||||||
describe("Without [MEDUSA_FF_TAX_INCLUSIVE_PRICING]", () => {
|
describe("Without [MEDUSA_FF_TAX_INCLUSIVE_PRICING]", () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { MedusaError } from "medusa-core-utils"
|
import { MedusaError } from "medusa-core-utils"
|
||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import { MoneyAmountRepository } from "../../repositories/money-amount"
|
import { MoneyAmountRepository } from "../../repositories/money-amount"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import PriceListService from "../price-list"
|
import PriceListService from "../price-list"
|
||||||
import { RegionServiceMock } from "../__mocks__/region"
|
import { RegionServiceMock } from "../__mocks__/region"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import ProductService from "../product"
|
import ProductService from "../product"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
|
||||||
const eventBusService = {
|
const eventBusService = {
|
||||||
emit: jest.fn(),
|
emit: jest.fn(),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import { CreateRegionInput } from "../../types/region"
|
import { CreateRegionInput } from "../../types/region"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
|
||||||
import EventBusService from "../event-bus"
|
import EventBusService from "../event-bus"
|
||||||
import {
|
import {
|
||||||
FulfillmentProviderService,
|
FulfillmentProviderService,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import ShippingOptionService from "../shipping-option"
|
import ShippingOptionService from "../shipping-option"
|
||||||
|
|
||||||
describe("ShippingOptionService", () => {
|
describe("ShippingOptionService", () => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { IdMap } from "medusa-test-utils"
|
import { IdMap } from "medusa-test-utils"
|
||||||
import TotalsService from "../totals"
|
import TotalsService from "../totals"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
|
||||||
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { calculatePriceTaxAmount } from "../../utils"
|
import { calculatePriceTaxAmount } from "../../utils"
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { isEmpty, isEqual } from "lodash"
|
import { isEmpty, isEqual } from "lodash"
|
||||||
import { isDefined, MedusaError } from "medusa-core-utils"
|
import { MedusaError, isDefined } from "medusa-core-utils"
|
||||||
import { DeepPartial, EntityManager, In, IsNull, Not } from "typeorm"
|
import { DeepPartial, EntityManager, In, IsNull, Not } from "typeorm"
|
||||||
import {
|
import {
|
||||||
CustomerService,
|
|
||||||
CustomShippingOptionService,
|
CustomShippingOptionService,
|
||||||
|
CustomerService,
|
||||||
DiscountService,
|
DiscountService,
|
||||||
EventBusService,
|
EventBusService,
|
||||||
GiftCardService,
|
GiftCardService,
|
||||||
@@ -26,8 +27,8 @@ import SalesChannelFeatureFlag from "../loaders/feature-flags/sales-channels"
|
|||||||
import {
|
import {
|
||||||
Address,
|
Address,
|
||||||
Cart,
|
Cart,
|
||||||
Customer,
|
|
||||||
CustomShippingOption,
|
CustomShippingOption,
|
||||||
|
Customer,
|
||||||
Discount,
|
Discount,
|
||||||
DiscountRule,
|
DiscountRule,
|
||||||
DiscountRuleType,
|
DiscountRuleType,
|
||||||
@@ -46,9 +47,9 @@ import {
|
|||||||
CartCreateProps,
|
CartCreateProps,
|
||||||
CartUpdateProps,
|
CartUpdateProps,
|
||||||
FilterableCartProps,
|
FilterableCartProps,
|
||||||
isCart,
|
|
||||||
LineItemUpdate,
|
LineItemUpdate,
|
||||||
LineItemValidateData,
|
LineItemValidateData,
|
||||||
|
isCart,
|
||||||
} from "../types/cart"
|
} from "../types/cart"
|
||||||
import {
|
import {
|
||||||
AddressPayload,
|
AddressPayload,
|
||||||
@@ -58,7 +59,6 @@ import {
|
|||||||
} from "../types/common"
|
} from "../types/common"
|
||||||
import { PaymentSessionInput } from "../types/payment"
|
import { PaymentSessionInput } from "../types/payment"
|
||||||
import { buildQuery, isString, setMetadata } from "../utils"
|
import { buildQuery, isString, setMetadata } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import { validateEmail } from "../utils/is-email"
|
import { validateEmail } from "../utils/is-email"
|
||||||
|
|
||||||
type InjectedDependencies = {
|
type InjectedDependencies = {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { MedusaError } from "medusa-core-utils"
|
import { MedusaError } from "medusa-core-utils"
|
||||||
import { EntityManager } from "typeorm"
|
import { EntityManager } from "typeorm"
|
||||||
import { TransactionBaseService } from "../interfaces"
|
import { TransactionBaseService } from "../interfaces"
|
||||||
@@ -7,7 +8,6 @@ import { CurrencyRepository } from "../repositories/currency"
|
|||||||
import { FindConfig, Selector } from "../types/common"
|
import { FindConfig, Selector } from "../types/common"
|
||||||
import { UpdateCurrencyInput } from "../types/currency"
|
import { UpdateCurrencyInput } from "../types/currency"
|
||||||
import { buildQuery } from "../utils"
|
import { buildQuery } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import EventBusService from "./event-bus"
|
import EventBusService from "./event-bus"
|
||||||
|
|
||||||
type InjectedDependencies = {
|
type InjectedDependencies = {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { parse, toSeconds } from "iso8601-duration"
|
import { parse, toSeconds } from "iso8601-duration"
|
||||||
import { isEmpty, omit } from "lodash"
|
import { isEmpty, omit } from "lodash"
|
||||||
import { MedusaError, isDefined } from "medusa-core-utils"
|
import { MedusaError, isDefined } from "medusa-core-utils"
|
||||||
@@ -44,7 +45,6 @@ import {
|
|||||||
import { CalculationContextData } from "../types/totals"
|
import { CalculationContextData } from "../types/totals"
|
||||||
import { buildQuery, setMetadata } from "../utils"
|
import { buildQuery, setMetadata } from "../utils"
|
||||||
import { isFuture, isPast } from "../utils/date-helpers"
|
import { isFuture, isPast } from "../utils/date-helpers"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import CustomerService from "./customer"
|
import CustomerService from "./customer"
|
||||||
import DiscountConditionService from "./discount-condition"
|
import DiscountConditionService from "./discount-condition"
|
||||||
import EventBusService from "./event-bus"
|
import EventBusService from "./event-bus"
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { MedusaError } from "medusa-core-utils"
|
|||||||
import { EntityManager, In } from "typeorm"
|
import { EntityManager, In } from "typeorm"
|
||||||
import { DeepPartial } from "typeorm/common/DeepPartial"
|
import { DeepPartial } from "typeorm/common/DeepPartial"
|
||||||
|
|
||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { TransactionBaseService } from "../interfaces"
|
import { TransactionBaseService } from "../interfaces"
|
||||||
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import {
|
import {
|
||||||
@@ -17,7 +18,6 @@ import { FindConfig, Selector } from "../types/common"
|
|||||||
import { GenerateInputData, GenerateLineItemContext } from "../types/line-item"
|
import { GenerateInputData, GenerateLineItemContext } from "../types/line-item"
|
||||||
import { ProductVariantPricing } from "../types/pricing"
|
import { ProductVariantPricing } from "../types/pricing"
|
||||||
import { buildQuery, isString, setMetadata } from "../utils"
|
import { buildQuery, isString, setMetadata } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import {
|
import {
|
||||||
PricingService,
|
PricingService,
|
||||||
ProductService,
|
ProductService,
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
import { MedusaError, isDefined } from "medusa-core-utils"
|
||||||
|
import { EntityManager } from "typeorm"
|
||||||
import {
|
import {
|
||||||
ITaxCalculationStrategy,
|
ITaxCalculationStrategy,
|
||||||
TaxCalculationContext,
|
TaxCalculationContext,
|
||||||
TransactionBaseService,
|
TransactionBaseService,
|
||||||
} from "../interfaces"
|
} from "../interfaces"
|
||||||
import { EntityManager } from "typeorm"
|
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import {
|
import {
|
||||||
Discount,
|
Discount,
|
||||||
DiscountRuleType,
|
DiscountRuleType,
|
||||||
@@ -14,12 +17,9 @@ import {
|
|||||||
ShippingMethod,
|
ShippingMethod,
|
||||||
ShippingMethodTaxLine,
|
ShippingMethodTaxLine,
|
||||||
} from "../models"
|
} from "../models"
|
||||||
import { TaxProviderService } from "./index"
|
|
||||||
import { LineAllocationsMap } from "../types/totals"
|
import { LineAllocationsMap } from "../types/totals"
|
||||||
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import { calculatePriceTaxAmount } from "../utils"
|
import { calculatePriceTaxAmount } from "../utils"
|
||||||
import { isDefined, MedusaError } from "medusa-core-utils"
|
import { TaxProviderService } from "./index"
|
||||||
|
|
||||||
type LineItemTotals = {
|
type LineItemTotals = {
|
||||||
unit_price: number
|
unit_price: number
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { IInventoryService } from "@medusajs/types"
|
|||||||
import {
|
import {
|
||||||
buildRelations,
|
buildRelations,
|
||||||
buildSelects,
|
buildSelects,
|
||||||
|
FlagRouter,
|
||||||
isDefined,
|
isDefined,
|
||||||
MedusaError,
|
MedusaError,
|
||||||
} from "@medusajs/utils"
|
} from "@medusajs/utils"
|
||||||
@@ -32,6 +33,7 @@ import {
|
|||||||
TaxProviderService,
|
TaxProviderService,
|
||||||
TotalsService,
|
TotalsService,
|
||||||
} from "."
|
} from "."
|
||||||
|
import { TransactionBaseService } from "../interfaces"
|
||||||
import SalesChannelFeatureFlag from "../loaders/feature-flags/sales-channels"
|
import SalesChannelFeatureFlag from "../loaders/feature-flags/sales-channels"
|
||||||
import {
|
import {
|
||||||
Address,
|
Address,
|
||||||
@@ -50,7 +52,6 @@ import {
|
|||||||
Swap,
|
Swap,
|
||||||
TrackingLink,
|
TrackingLink,
|
||||||
} from "../models"
|
} from "../models"
|
||||||
import { TransactionBaseService } from "../interfaces"
|
|
||||||
import { AddressRepository } from "../repositories/address"
|
import { AddressRepository } from "../repositories/address"
|
||||||
import { OrderRepository } from "../repositories/order"
|
import { OrderRepository } from "../repositories/order"
|
||||||
import { FindConfig, QuerySelector, Selector } from "../types/common"
|
import { FindConfig, QuerySelector, Selector } from "../types/common"
|
||||||
@@ -61,7 +62,6 @@ import {
|
|||||||
import { TotalsContext, UpdateOrderInput } from "../types/orders"
|
import { TotalsContext, UpdateOrderInput } from "../types/orders"
|
||||||
import { CreateShippingMethodDto } from "../types/shipping-options"
|
import { CreateShippingMethodDto } from "../types/shipping-options"
|
||||||
import { buildQuery, isString, setMetadata } from "../utils"
|
import { buildQuery, isString, setMetadata } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import EventBusService from "./event-bus"
|
import EventBusService from "./event-bus"
|
||||||
|
|
||||||
export const ORDER_CART_ALREADY_EXISTS_ERROR = "Order from cart already exists"
|
export const ORDER_CART_ALREADY_EXISTS_ERROR = "Order from cart already exists"
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { isDefined, MedusaError } from "medusa-core-utils"
|
import { isDefined, MedusaError } from "medusa-core-utils"
|
||||||
import { BasePaymentService } from "medusa-interfaces"
|
import { BasePaymentService } from "medusa-interfaces"
|
||||||
|
import { EOL } from "os"
|
||||||
import { EntityManager } from "typeorm"
|
import { EntityManager } from "typeorm"
|
||||||
import {
|
import {
|
||||||
AbstractPaymentProcessor,
|
AbstractPaymentProcessor,
|
||||||
@@ -26,10 +28,8 @@ import { FindConfig, Selector } from "../types/common"
|
|||||||
import { Logger } from "../types/global"
|
import { Logger } from "../types/global"
|
||||||
import { CreatePaymentInput, PaymentSessionInput } from "../types/payment"
|
import { CreatePaymentInput, PaymentSessionInput } from "../types/payment"
|
||||||
import { buildQuery, isString } from "../utils"
|
import { buildQuery, isString } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import { CustomerService } from "./index"
|
import { CustomerService } from "./index"
|
||||||
import PaymentService from "./payment"
|
import PaymentService from "./payment"
|
||||||
import { EOL } from "os"
|
|
||||||
|
|
||||||
type PaymentProviderKey = `pp_${string}` | "systemPaymentProviderService"
|
type PaymentProviderKey = `pp_${string}` | "systemPaymentProviderService"
|
||||||
type InjectedDependencies = {
|
type InjectedDependencies = {
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { isDefined, MedusaError } from "medusa-core-utils"
|
import { isDefined, MedusaError } from "medusa-core-utils"
|
||||||
import { DeepPartial, EntityManager } from "typeorm"
|
import { DeepPartial, EntityManager } from "typeorm"
|
||||||
import { CustomerGroupService } from "."
|
import { CustomerGroupService } from "."
|
||||||
|
import { TransactionBaseService } from "../interfaces"
|
||||||
|
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { CustomerGroup, PriceList, Product, ProductVariant } from "../models"
|
import { CustomerGroup, PriceList, Product, ProductVariant } from "../models"
|
||||||
import { MoneyAmountRepository } from "../repositories/money-amount"
|
import { MoneyAmountRepository } from "../repositories/money-amount"
|
||||||
import { PriceListRepository } from "../repositories/price-list"
|
import { PriceListRepository } from "../repositories/price-list"
|
||||||
|
import { ProductVariantRepository } from "../repositories/product-variant"
|
||||||
import { FindConfig, Selector } from "../types/common"
|
import { FindConfig, Selector } from "../types/common"
|
||||||
import {
|
import {
|
||||||
CreatePriceListInput,
|
CreatePriceListInput,
|
||||||
@@ -12,16 +16,12 @@ import {
|
|||||||
PriceListPriceUpdateInput,
|
PriceListPriceUpdateInput,
|
||||||
UpdatePriceListInput,
|
UpdatePriceListInput,
|
||||||
} from "../types/price-list"
|
} from "../types/price-list"
|
||||||
import ProductService from "./product"
|
|
||||||
import RegionService from "./region"
|
|
||||||
import { TransactionBaseService } from "../interfaces"
|
|
||||||
import { buildQuery } from "../utils"
|
|
||||||
import { FilterableProductProps } from "../types/product"
|
import { FilterableProductProps } from "../types/product"
|
||||||
import ProductVariantService from "./product-variant"
|
|
||||||
import { FilterableProductVariantProps } from "../types/product-variant"
|
import { FilterableProductVariantProps } from "../types/product-variant"
|
||||||
import { ProductVariantRepository } from "../repositories/product-variant"
|
import { buildQuery } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
import ProductService from "./product"
|
||||||
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
import ProductVariantService from "./product-variant"
|
||||||
|
import RegionService from "./region"
|
||||||
|
|
||||||
type PriceListConstructorProps = {
|
type PriceListConstructorProps = {
|
||||||
manager: EntityManager
|
manager: EntityManager
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { MedusaError } from "medusa-core-utils"
|
import { MedusaError } from "medusa-core-utils"
|
||||||
import { EntityManager } from "typeorm"
|
import { EntityManager } from "typeorm"
|
||||||
import { ProductVariantService, RegionService, TaxProviderService } from "."
|
import { ProductVariantService, RegionService, TaxProviderService } from "."
|
||||||
@@ -18,7 +19,6 @@ import {
|
|||||||
} from "../types/pricing"
|
} from "../types/pricing"
|
||||||
import { TaxServiceRate } from "../types/tax-service"
|
import { TaxServiceRate } from "../types/tax-service"
|
||||||
import { calculatePriceTaxAmount } from "../utils"
|
import { calculatePriceTaxAmount } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
|
|
||||||
type InjectedDependencies = {
|
type InjectedDependencies = {
|
||||||
manager: EntityManager
|
manager: EntityManager
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
import {
|
||||||
|
buildRelations,
|
||||||
|
buildSelects, FlagRouter, objectToStringPath
|
||||||
|
} from "@medusajs/utils"
|
||||||
import { isDefined, MedusaError } from "medusa-core-utils"
|
import { isDefined, MedusaError } from "medusa-core-utils"
|
||||||
import { EntityManager, In } from "typeorm"
|
import { EntityManager, In } from "typeorm"
|
||||||
import { ProductVariantService, SearchService } from "."
|
import { ProductVariantService, SearchService } from "."
|
||||||
@@ -33,13 +37,7 @@ import {
|
|||||||
UpdateProductInput,
|
UpdateProductInput,
|
||||||
} from "../types/product"
|
} from "../types/product"
|
||||||
import { buildQuery, isString, setMetadata } from "../utils"
|
import { buildQuery, isString, setMetadata } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import EventBusService from "./event-bus"
|
import EventBusService from "./event-bus"
|
||||||
import {
|
|
||||||
buildRelations,
|
|
||||||
buildSelects,
|
|
||||||
objectToStringPath,
|
|
||||||
} from "@medusajs/utils"
|
|
||||||
|
|
||||||
type InjectedDependencies = {
|
type InjectedDependencies = {
|
||||||
manager: EntityManager
|
manager: EntityManager
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
import { Country, Currency, Region } from "../models"
|
|
||||||
import { CreateRegionInput, UpdateRegionInput } from "../types/region"
|
|
||||||
import { DeepPartial, EntityManager } from "typeorm"
|
|
||||||
import { FindConfig, Selector } from "../types/common"
|
|
||||||
import { MedusaError, isDefined } from "medusa-core-utils"
|
import { MedusaError, isDefined } from "medusa-core-utils"
|
||||||
|
import { DeepPartial, EntityManager } from "typeorm"
|
||||||
|
import { Country, Currency, Region } from "../models"
|
||||||
|
import { FindConfig, Selector } from "../types/common"
|
||||||
|
import { CreateRegionInput, UpdateRegionInput } from "../types/region"
|
||||||
import { buildQuery, setMetadata } from "../utils"
|
import { buildQuery, setMetadata } from "../utils"
|
||||||
|
|
||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
import { TransactionBaseService } from "../interfaces"
|
||||||
|
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { CountryRepository } from "../repositories/country"
|
import { CountryRepository } from "../repositories/country"
|
||||||
import { CurrencyRepository } from "../repositories/currency"
|
import { CurrencyRepository } from "../repositories/currency"
|
||||||
import EventBusService from "./event-bus"
|
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import { FulfillmentProviderRepository } from "../repositories/fulfillment-provider"
|
import { FulfillmentProviderRepository } from "../repositories/fulfillment-provider"
|
||||||
import FulfillmentProviderService from "./fulfillment-provider"
|
|
||||||
import { PaymentProviderRepository } from "../repositories/payment-provider"
|
import { PaymentProviderRepository } from "../repositories/payment-provider"
|
||||||
import { PaymentProviderService } from "./index"
|
|
||||||
import { RegionRepository } from "../repositories/region"
|
import { RegionRepository } from "../repositories/region"
|
||||||
import StoreService from "./store"
|
|
||||||
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
|
||||||
import { TaxProviderRepository } from "../repositories/tax-provider"
|
import { TaxProviderRepository } from "../repositories/tax-provider"
|
||||||
import { TransactionBaseService } from "../interfaces"
|
|
||||||
import { countries } from "../utils/countries"
|
import { countries } from "../utils/countries"
|
||||||
|
import EventBusService from "./event-bus"
|
||||||
|
import FulfillmentProviderService from "./fulfillment-provider"
|
||||||
|
import { PaymentProviderService } from "./index"
|
||||||
|
import StoreService from "./store"
|
||||||
|
|
||||||
type InjectedDependencies = {
|
type InjectedDependencies = {
|
||||||
manager: EntityManager
|
manager: EntityManager
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { isDefined, MedusaError } from "medusa-core-utils"
|
import { isDefined, MedusaError } from "medusa-core-utils"
|
||||||
import { EntityManager } from "typeorm"
|
import { EntityManager } from "typeorm"
|
||||||
import { TransactionBaseService } from "../interfaces"
|
import { TransactionBaseService } from "../interfaces"
|
||||||
@@ -22,7 +23,6 @@ import {
|
|||||||
ValidatePriceTypeAndAmountInput,
|
ValidatePriceTypeAndAmountInput,
|
||||||
} from "../types/shipping-options"
|
} from "../types/shipping-options"
|
||||||
import { buildQuery, isString, setMetadata } from "../utils"
|
import { buildQuery, isString, setMetadata } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import FulfillmentProviderService from "./fulfillment-provider"
|
import FulfillmentProviderService from "./fulfillment-provider"
|
||||||
import RegionService from "./region"
|
import RegionService from "./region"
|
||||||
|
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ import {
|
|||||||
} from "../types/totals"
|
} from "../types/totals"
|
||||||
import { NewTotalsService, TaxProviderService } from "./index"
|
import { NewTotalsService, TaxProviderService } from "./index"
|
||||||
|
|
||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { calculatePriceTaxAmount } from "../utils"
|
import { calculatePriceTaxAmount } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
|
|
||||||
type ShippingMethodTotals = {
|
type ShippingMethodTotals = {
|
||||||
price: number
|
price: number
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import jwt from "jsonwebtoken"
|
import jwt from "jsonwebtoken"
|
||||||
import { isDefined, MedusaError } from "medusa-core-utils"
|
import { isDefined, MedusaError } from "medusa-core-utils"
|
||||||
import Scrypt from "scrypt-kdf"
|
import Scrypt from "scrypt-kdf"
|
||||||
@@ -13,7 +14,6 @@ import {
|
|||||||
UpdateUserInput,
|
UpdateUserInput,
|
||||||
} from "../types/user"
|
} from "../types/user"
|
||||||
import { buildQuery, setMetadata } from "../utils"
|
import { buildQuery, setMetadata } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import { validateEmail } from "../utils/is-email"
|
import { validateEmail } from "../utils/is-email"
|
||||||
import AnalyticsConfigService from "./analytics-config"
|
import AnalyticsConfigService from "./analytics-config"
|
||||||
import EventBusService from "./event-bus"
|
import EventBusService from "./event-bus"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import OrderExportStrategy from "../../../batch-jobs/order/export"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { IdMap, MockManager } from "medusa-test-utils"
|
import { IdMap, MockManager } from "medusa-test-utils"
|
||||||
|
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels"
|
||||||
import { User } from "../../../../models"
|
import { User } from "../../../../models"
|
||||||
import { BatchJobStatus } from "../../../../types/batch-job"
|
import { BatchJobStatus } from "../../../../types/batch-job"
|
||||||
import { ordersToExport } from "../../../__fixtures__/order-export-data"
|
import { ordersToExport } from "../../../__fixtures__/order-export-data"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router";
|
import OrderExportStrategy from "../../../batch-jobs/order/export"
|
||||||
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels";
|
|
||||||
|
|
||||||
const orderServiceMock = {
|
const orderServiceMock = {
|
||||||
withTransaction: function (): any {
|
withTransaction: function (): any {
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import ProductExportStrategy from "../../../batch-jobs/product/export"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
import { Request } from "express"
|
||||||
import { IdMap, MockManager } from "medusa-test-utils"
|
import { IdMap, MockManager } from "medusa-test-utils"
|
||||||
|
import { AdminPostBatchesReq, defaultAdminProductRelations, } from "../../../../api"
|
||||||
|
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels"
|
||||||
import { User } from "../../../../models"
|
import { User } from "../../../../models"
|
||||||
import { BatchJobStatus } from "../../../../types/batch-job"
|
import { BatchJobStatus } from "../../../../types/batch-job"
|
||||||
import { productsToExport } from "../../../__fixtures__/product-export-data"
|
import { productsToExport } from "../../../__fixtures__/product-export-data"
|
||||||
import { AdminPostBatchesReq, defaultAdminProductRelations, } from "../../../../api"
|
import ProductExportStrategy from "../../../batch-jobs/product/export"
|
||||||
import { ProductExportBatchJob } from "../../../batch-jobs/product/types"
|
import { ProductExportBatchJob } from "../../../batch-jobs/product/types"
|
||||||
import { Request } from "express"
|
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
|
||||||
import SalesChannelFeatureFlag from "../../../../loaders/feature-flags/sales-channels"
|
|
||||||
|
|
||||||
const productServiceMock = {
|
const productServiceMock = {
|
||||||
withTransaction: function () {
|
withTransaction: function () {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { EntityManager } from "typeorm"
|
|||||||
import { FileService } from "medusa-interfaces"
|
import { FileService } from "medusa-interfaces"
|
||||||
import { IdMap, MockManager } from "medusa-test-utils"
|
import { IdMap, MockManager } from "medusa-test-utils"
|
||||||
|
|
||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { User } from "../../../../models"
|
import { User } from "../../../../models"
|
||||||
import {
|
import {
|
||||||
BatchJobService,
|
BatchJobService,
|
||||||
@@ -13,7 +14,6 @@ import {
|
|||||||
ShippingProfileService,
|
ShippingProfileService,
|
||||||
} from "../../../../services"
|
} from "../../../../services"
|
||||||
import { BatchJobStatus } from "../../../../types/batch-job"
|
import { BatchJobStatus } from "../../../../types/batch-job"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
|
||||||
import ProductImportStrategy from "../../../batch-jobs/product/import"
|
import ProductImportStrategy from "../../../batch-jobs/product/import"
|
||||||
import { ProductImportInjectedProps } from "../../../batch-jobs/product/types"
|
import { ProductImportInjectedProps } from "../../../batch-jobs/product/types"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { FlagRouter } from "../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import PriceSelectionStrategy from "../price-selection"
|
import PriceSelectionStrategy from "../price-selection"
|
||||||
import { cacheServiceMock } from "../../services/__mocks__/cache"
|
import { cacheServiceMock } from "../../services/__mocks__/cache"
|
||||||
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import TaxCalculationStrategy from "../tax-calculation"
|
import TaxCalculationStrategy from "../tax-calculation"
|
||||||
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
import TaxInclusivePricingFeatureFlag from "../../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
|
||||||
const toTest = [
|
const toTest = [
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { EntityManager } from "typeorm"
|
import { EntityManager } from "typeorm"
|
||||||
import {
|
import {
|
||||||
OrderDescriptor,
|
OrderDescriptor,
|
||||||
@@ -13,7 +14,6 @@ import { OrderService } from "../../../services"
|
|||||||
import BatchJobService from "../../../services/batch-job"
|
import BatchJobService from "../../../services/batch-job"
|
||||||
import { BatchJobStatus } from "../../../types/batch-job"
|
import { BatchJobStatus } from "../../../types/batch-job"
|
||||||
import { FindConfig } from "../../../types/common"
|
import { FindConfig } from "../../../types/common"
|
||||||
import { FlagRouter } from "../../../utils/flag-router"
|
|
||||||
import { prepareListQuery } from "../../../utils/get-query-config"
|
import { prepareListQuery } from "../../../utils/get-query-config"
|
||||||
|
|
||||||
type InjectedDependencies = {
|
type InjectedDependencies = {
|
||||||
|
|||||||
@@ -2,11 +2,16 @@ import { EntityManager } from "typeorm"
|
|||||||
|
|
||||||
import { humanizeAmount } from "medusa-core-utils"
|
import { humanizeAmount } from "medusa-core-utils"
|
||||||
|
|
||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
import { defaultAdminProductRelations } from "../../../api"
|
||||||
import { AbstractBatchJobStrategy, IFileService } from "../../../interfaces"
|
import { AbstractBatchJobStrategy, IFileService } from "../../../interfaces"
|
||||||
|
import ProductCategoryFeatureFlag from "../../../loaders/feature-flags/product-categories"
|
||||||
|
import SalesChannelFeatureFlag from "../../../loaders/feature-flags/sales-channels"
|
||||||
import { Product, ProductVariant } from "../../../models"
|
import { Product, ProductVariant } from "../../../models"
|
||||||
import { BatchJobService, ProductService } from "../../../services"
|
import { BatchJobService, ProductService } from "../../../services"
|
||||||
import { BatchJobStatus, CreateBatchJobInput } from "../../../types/batch-job"
|
import { BatchJobStatus, CreateBatchJobInput } from "../../../types/batch-job"
|
||||||
import { defaultAdminProductRelations } from "../../../api"
|
import { FindProductConfig } from "../../../types/product"
|
||||||
|
import { csvCellContentFormatter } from "../../../utils"
|
||||||
import { prepareListQuery } from "../../../utils/get-query-config"
|
import { prepareListQuery } from "../../../utils/get-query-config"
|
||||||
import {
|
import {
|
||||||
DynamicProductExportDescriptor,
|
DynamicProductExportDescriptor,
|
||||||
@@ -15,16 +20,11 @@ import {
|
|||||||
ProductExportInjectedDependencies,
|
ProductExportInjectedDependencies,
|
||||||
ProductExportPriceData,
|
ProductExportPriceData,
|
||||||
} from "./types"
|
} from "./types"
|
||||||
import { FindProductConfig } from "../../../types/product"
|
|
||||||
import { FlagRouter } from "../../../utils/flag-router"
|
|
||||||
import SalesChannelFeatureFlag from "../../../loaders/feature-flags/sales-channels"
|
|
||||||
import { csvCellContentFormatter } from "../../../utils"
|
|
||||||
import {
|
import {
|
||||||
productCategoriesColumnsDefinition,
|
productCategoriesColumnsDefinition,
|
||||||
productColumnsDefinition,
|
productColumnsDefinition,
|
||||||
productSalesChannelColumnsDefinition,
|
productSalesChannelColumnsDefinition,
|
||||||
} from "./types/columns-definition"
|
} from "./types/columns-definition"
|
||||||
import ProductCategoryFeatureFlag from "../../../loaders/feature-flags/product-categories"
|
|
||||||
|
|
||||||
export default class ProductExportStrategy extends AbstractBatchJobStrategy {
|
export default class ProductExportStrategy extends AbstractBatchJobStrategy {
|
||||||
public static identifier = "product-export-strategy"
|
public static identifier = "product-export-strategy"
|
||||||
|
|||||||
@@ -2,7 +2,9 @@
|
|||||||
import { computerizeAmount, MedusaError } from "medusa-core-utils"
|
import { computerizeAmount, MedusaError } from "medusa-core-utils"
|
||||||
import { EntityManager } from "typeorm"
|
import { EntityManager } from "typeorm"
|
||||||
|
|
||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { AbstractBatchJobStrategy, IFileService } from "../../../interfaces"
|
import { AbstractBatchJobStrategy, IFileService } from "../../../interfaces"
|
||||||
|
import ProductCategoryFeatureFlag from "../../../loaders/feature-flags/product-categories"
|
||||||
import SalesChannelFeatureFlag from "../../../loaders/feature-flags/sales-channels"
|
import SalesChannelFeatureFlag from "../../../loaders/feature-flags/sales-channels"
|
||||||
import { BatchJob, SalesChannel } from "../../../models"
|
import { BatchJob, SalesChannel } from "../../../models"
|
||||||
import {
|
import {
|
||||||
@@ -18,7 +20,6 @@ import {
|
|||||||
import CsvParser from "../../../services/csv-parser"
|
import CsvParser from "../../../services/csv-parser"
|
||||||
import { CreateProductInput } from "../../../types/product"
|
import { CreateProductInput } from "../../../types/product"
|
||||||
import { CreateProductVariantInput } from "../../../types/product-variant"
|
import { CreateProductVariantInput } from "../../../types/product-variant"
|
||||||
import { FlagRouter } from "../../../utils/flag-router"
|
|
||||||
import {
|
import {
|
||||||
OperationType,
|
OperationType,
|
||||||
ProductImportBatchJob,
|
ProductImportBatchJob,
|
||||||
@@ -29,11 +30,10 @@ import {
|
|||||||
} from "./types"
|
} from "./types"
|
||||||
import {
|
import {
|
||||||
productImportColumnsDefinition,
|
productImportColumnsDefinition,
|
||||||
productImportSalesChannelsColumnsDefinition,
|
|
||||||
productImportProductCategoriesColumnsDefinition,
|
productImportProductCategoriesColumnsDefinition,
|
||||||
|
productImportSalesChannelsColumnsDefinition,
|
||||||
} from "./types/columns-definition"
|
} from "./types/columns-definition"
|
||||||
import { transformProductData, transformVariantData } from "./utils"
|
import { transformProductData, transformVariantData } from "./utils"
|
||||||
import ProductCategoryFeatureFlag from "../../../loaders/feature-flags/product-categories"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process this many variant rows before reporting progress.
|
* Process this many variant rows before reporting progress.
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
import { BatchJob, Product, ProductVariant } from "../../../../models"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { Selector } from "../../../../types/common"
|
import { FileService } from "medusa-interfaces"
|
||||||
|
import { EntityManager } from "typeorm"
|
||||||
|
import { IFileService } from "../../../../interfaces"
|
||||||
import { CsvSchema, CsvSchemaColumn } from "../../../../interfaces/csv-parser"
|
import { CsvSchema, CsvSchemaColumn } from "../../../../interfaces/csv-parser"
|
||||||
|
import { BatchJob, Product, ProductVariant } from "../../../../models"
|
||||||
import {
|
import {
|
||||||
BatchJobService,
|
BatchJobService,
|
||||||
ProductCategoryService,
|
ProductCategoryService,
|
||||||
@@ -11,10 +14,7 @@ import {
|
|||||||
SalesChannelService,
|
SalesChannelService,
|
||||||
ShippingProfileService,
|
ShippingProfileService,
|
||||||
} from "../../../../services"
|
} from "../../../../services"
|
||||||
import { FileService } from "medusa-interfaces"
|
import { Selector } from "../../../../types/common"
|
||||||
import { FlagRouter } from "../../../../utils/flag-router"
|
|
||||||
import { EntityManager } from "typeorm"
|
|
||||||
import { IFileService } from "../../../../interfaces"
|
|
||||||
|
|
||||||
export type ProductExportInjectedDependencies = {
|
export type ProductExportInjectedDependencies = {
|
||||||
manager: EntityManager
|
manager: EntityManager
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ import {
|
|||||||
PriceType,
|
PriceType,
|
||||||
} from "../interfaces"
|
} from "../interfaces"
|
||||||
|
|
||||||
import { EntityManager } from "typeorm"
|
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import { ICacheService } from "@medusajs/types"
|
import { ICacheService } from "@medusajs/types"
|
||||||
import { MoneyAmountRepository } from "../repositories/money-amount"
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
|
||||||
import { TaxServiceRate } from "../types/tax-service"
|
|
||||||
import { isDefined } from "medusa-core-utils"
|
import { isDefined } from "medusa-core-utils"
|
||||||
|
import { EntityManager } from "typeorm"
|
||||||
|
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
|
import { MoneyAmountRepository } from "../repositories/money-amount"
|
||||||
|
import { TaxServiceRate } from "../types/tax-service"
|
||||||
|
|
||||||
class PriceSelectionStrategy extends AbstractPriceSelectionStrategy {
|
class PriceSelectionStrategy extends AbstractPriceSelectionStrategy {
|
||||||
protected manager_: EntityManager
|
protected manager_: EntityManager
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
|
import { ITaxCalculationStrategy, TaxCalculationContext } from "../interfaces"
|
||||||
|
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
||||||
import {
|
import {
|
||||||
LineItem,
|
LineItem,
|
||||||
LineItemTaxLine,
|
LineItemTaxLine,
|
||||||
ShippingMethod,
|
ShippingMethod,
|
||||||
ShippingMethodTaxLine,
|
ShippingMethodTaxLine,
|
||||||
} from "../models"
|
} from "../models"
|
||||||
import { ITaxCalculationStrategy, TaxCalculationContext } from "../interfaces"
|
|
||||||
import { calculatePriceTaxAmount } from "../utils"
|
import { calculatePriceTaxAmount } from "../utils"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
import TaxInclusivePricingFeatureFlag from "../loaders/feature-flags/tax-inclusive-pricing"
|
|
||||||
|
|
||||||
class TaxCalculationStrategy implements ITaxCalculationStrategy {
|
class TaxCalculationStrategy implements ITaxCalculationStrategy {
|
||||||
protected readonly featureFlagRouter_: FlagRouter
|
protected readonly featureFlagRouter_: FlagRouter
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
import { IEventBusService, ISearchService } from "@medusajs/types"
|
import { IEventBusService, ISearchService } from "@medusajs/types"
|
||||||
import { defaultSearchIndexingProductRelations } from "@medusajs/utils"
|
import { FlagRouter, defaultSearchIndexingProductRelations } from "@medusajs/utils"
|
||||||
import { indexTypes } from "medusa-core-utils"
|
import { indexTypes } from "medusa-core-utils"
|
||||||
import ProductCategoryFeatureFlag from "../loaders/feature-flags/product-categories"
|
import ProductCategoryFeatureFlag from "../loaders/feature-flags/product-categories"
|
||||||
import { SEARCH_INDEX_EVENT } from "../loaders/search-index"
|
import { SEARCH_INDEX_EVENT } from "../loaders/search-index"
|
||||||
import { Product } from "../models"
|
import { Product } from "../models"
|
||||||
import ProductService from "../services/product"
|
import ProductService from "../services/product"
|
||||||
import { FlagRouter } from "../utils/flag-router"
|
|
||||||
|
|
||||||
type InjectedDependencies = {
|
type InjectedDependencies = {
|
||||||
eventBusService: IEventBusService
|
eventBusService: IEventBusService
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import { FlagRouter } from "@medusajs/utils"
|
||||||
import { calculatePriceTaxAmount } from "../calculate-price-tax-amount"
|
import { calculatePriceTaxAmount } from "../calculate-price-tax-amount"
|
||||||
import { FlagRouter } from "../../utils/flag-router"
|
|
||||||
|
|
||||||
describe("calculatePriceTaxAmount", () => {
|
describe("calculatePriceTaxAmount", () => {
|
||||||
describe("Calculate taxes from a given price", () => {
|
describe("Calculate taxes from a given price", () => {
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
import { FlagRouter } from "../flag-router"
|
|
||||||
|
|
||||||
describe("Flag Router", () => {
|
|
||||||
describe("listFlags", () => {
|
|
||||||
it("should list all feature flags", () => {
|
|
||||||
const flagRouter = new FlagRouter({})
|
|
||||||
|
|
||||||
flagRouter.setFlag("test", false)
|
|
||||||
flagRouter.setFlag("test2", true)
|
|
||||||
flagRouter.setFlag("test3", false)
|
|
||||||
|
|
||||||
const listOfFlags = flagRouter.listFlags()
|
|
||||||
|
|
||||||
expect(listOfFlags).toEqual([
|
|
||||||
{
|
|
||||||
key: "test",
|
|
||||||
value: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "test2",
|
|
||||||
value: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "test3",
|
|
||||||
value: false,
|
|
||||||
},
|
|
||||||
])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
import { FeatureFlagTypes } from "@medusajs/types"
|
|
||||||
import { isObject, isString } from "@medusajs/utils"
|
|
||||||
|
|
||||||
export class FlagRouter implements FeatureFlagTypes.IFlagRouter {
|
|
||||||
private readonly flags: Record<string, boolean | Record<string, boolean>> = {}
|
|
||||||
|
|
||||||
constructor(flags: Record<string, boolean | Record<string, boolean>>) {
|
|
||||||
this.flags = flags
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if a feature flag is enabled.
|
|
||||||
* There are two ways of using this method:
|
|
||||||
* 1. `isFeatureEnabled("myFeatureFlag")`
|
|
||||||
* 2. `isFeatureEnabled({ myNestedFeatureFlag: "someNestedFlag" })`
|
|
||||||
* We use 1. for top-level feature flags and 2. for nested feature flags. Almost all flags are top-level.
|
|
||||||
* An example of a nested flag is workflows. To use it, you would do:
|
|
||||||
* `isFeatureEnabled({ workflows: Workflows.CreateCart })`
|
|
||||||
* @param flag - The flag to check
|
|
||||||
* @return {boolean} - Whether the flag is enabled or not
|
|
||||||
*/
|
|
||||||
public isFeatureEnabled(flag: string | Record<string, string>): boolean {
|
|
||||||
if (isString(flag)) {
|
|
||||||
return !!this.flags[flag]
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isObject(flag)) {
|
|
||||||
const [nestedFlag, value] = Object.entries(flag)[0]
|
|
||||||
|
|
||||||
if (typeof this.flags[nestedFlag] === "boolean") {
|
|
||||||
return this.flags[nestedFlag] as boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
return !!this.flags[nestedFlag]?.[value]
|
|
||||||
}
|
|
||||||
|
|
||||||
throw Error("Flag must be a string or an object")
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a feature flag.
|
|
||||||
* Flags take two shapes:
|
|
||||||
* setFlag("myFeatureFlag", true)
|
|
||||||
* setFlag("myFeatureFlag", { nestedFlag: true })
|
|
||||||
* These shapes are used for top-level and nested flags respectively, as explained in isFeatureEnabled.
|
|
||||||
* @param key - The key of the flag to set.
|
|
||||||
* @param value - The value of the flag to set.
|
|
||||||
* @return {void} - void
|
|
||||||
*/
|
|
||||||
public setFlag(
|
|
||||||
key: string,
|
|
||||||
value: boolean | { [key: string]: boolean }
|
|
||||||
): void {
|
|
||||||
if (isObject(value)) {
|
|
||||||
const existing = this.flags[key]
|
|
||||||
|
|
||||||
if (!existing) {
|
|
||||||
this.flags[key] = value
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
this.flags[key] = { ...(this.flags[key] as object), ...value }
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
this.flags[key] = value
|
|
||||||
}
|
|
||||||
|
|
||||||
public listFlags(): FeatureFlagTypes.FeatureFlagsResponse {
|
|
||||||
return Object.entries(this.flags || {}).map(([key, value]) => ({
|
|
||||||
key,
|
|
||||||
value,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user