From 5c14d283d06df3066afe06983ef03a28b72479d8 Mon Sep 17 00:00:00 2001 From: Stevche Radevski Date: Wed, 15 May 2024 09:42:06 +0200 Subject: [PATCH] chore: More cleanup of medusa package (#7332) --- .../customizations/medusa-config.js | 9 -- .../customizations/models/product.ts | 11 -- packages/medusa/src/loaders/api.ts | 2 +- packages/medusa/src/loaders/config.ts | 2 +- packages/medusa/src/loaders/database.ts | 71 ----------- packages/medusa/src/loaders/express.ts | 2 +- .../helpers/get-model-extension-map.ts | 58 --------- .../src/loaders/helpers/routing/index.ts | 2 +- .../src/loaders/load-medusa-project-apis.ts | 3 +- packages/medusa/src/loaders/passport.ts | 2 +- packages/medusa/src/loaders/pg-connection.ts | 2 +- packages/medusa/src/loaders/redis.ts | 3 +- packages/medusa/src/types/common.ts | 120 ------------------ packages/medusa/src/types/global.ts | 7 +- packages/medusa/src/types/request.ts | 3 - packages/medusa/src/utils/date-helpers.ts | 11 -- packages/medusa/src/utils/index.ts | 4 - packages/medusa/src/utils/is-date.ts | 4 - packages/medusa/src/utils/is-object.ts | 3 - packages/medusa/src/utils/is-string.ts | 3 - .../medusa/src/utils/merge-modules-config.ts | 29 ----- .../src/utils/middlewares/await-middleware.ts | 39 ------ .../middlewares/check-registered-modules.ts | 15 --- .../utils/middlewares/feature-flag-enabled.ts | 18 --- .../medusa/src/utils/middlewares/index.ts | 2 - packages/medusa/src/utils/omit-deep.ts | 2 +- packages/medusa/src/utils/set-metadata.ts | 45 ------- packages/medusa/src/utils/sleep.ts | 3 - 28 files changed, 12 insertions(+), 463 deletions(-) delete mode 100644 packages/medusa/src/loaders/__tests__/__fixtures__/customizations/medusa-config.js delete mode 100644 packages/medusa/src/loaders/__tests__/__fixtures__/customizations/models/product.ts delete mode 100644 packages/medusa/src/loaders/database.ts delete mode 100644 packages/medusa/src/loaders/helpers/get-model-extension-map.ts delete mode 100644 packages/medusa/src/types/request.ts delete mode 100644 packages/medusa/src/utils/date-helpers.ts delete mode 100644 packages/medusa/src/utils/is-date.ts delete mode 100644 packages/medusa/src/utils/is-object.ts delete mode 100644 packages/medusa/src/utils/is-string.ts delete mode 100644 packages/medusa/src/utils/merge-modules-config.ts delete mode 100644 packages/medusa/src/utils/middlewares/await-middleware.ts delete mode 100644 packages/medusa/src/utils/middlewares/check-registered-modules.ts delete mode 100644 packages/medusa/src/utils/middlewares/feature-flag-enabled.ts delete mode 100644 packages/medusa/src/utils/set-metadata.ts delete mode 100644 packages/medusa/src/utils/sleep.ts diff --git a/packages/medusa/src/loaders/__tests__/__fixtures__/customizations/medusa-config.js b/packages/medusa/src/loaders/__tests__/__fixtures__/customizations/medusa-config.js deleted file mode 100644 index 7ec24e6c1e..0000000000 --- a/packages/medusa/src/loaders/__tests__/__fixtures__/customizations/medusa-config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - featureFlags: {}, - projectConfig: { - database_url: "postgres://localhost/medusa-store", - database_logging: false - }, - plugins: [], - modules: {}, -}; diff --git a/packages/medusa/src/loaders/__tests__/__fixtures__/customizations/models/product.ts b/packages/medusa/src/loaders/__tests__/__fixtures__/customizations/models/product.ts deleted file mode 100644 index c08cb0c008..0000000000 --- a/packages/medusa/src/loaders/__tests__/__fixtures__/customizations/models/product.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Column, Entity } from "typeorm" -import { - // alias the core entity to not cause a naming conflict - Product as MedusaProduct, -} from "@medusajs/medusa" - -@Entity() -export class Product extends MedusaProduct { - @Column() - custom_attribute: string = 'test' -} diff --git a/packages/medusa/src/loaders/api.ts b/packages/medusa/src/loaders/api.ts index 128e75e740..7a500c2780 100644 --- a/packages/medusa/src/loaders/api.ts +++ b/packages/medusa/src/loaders/api.ts @@ -3,8 +3,8 @@ import { AwilixContainer } from "awilix" import { Express } from "express" import path from "path" import qs from "qs" -import { ConfigModule } from "../types/global" import { RoutesLoader } from "./helpers/routing" +import { ConfigModule } from "@medusajs/types" type Options = { app: Express diff --git a/packages/medusa/src/loaders/config.ts b/packages/medusa/src/loaders/config.ts index eebcd488d1..ea39deae22 100644 --- a/packages/medusa/src/loaders/config.ts +++ b/packages/medusa/src/loaders/config.ts @@ -1,6 +1,6 @@ import { getConfigFile, isDefined } from "medusa-core-utils" -import { ConfigModule } from "../types/global" import logger from "./logger" +import { ConfigModule } from "@medusajs/types" const isProduction = ["production", "prod"].includes(process.env.NODE_ENV || "") diff --git a/packages/medusa/src/loaders/database.ts b/packages/medusa/src/loaders/database.ts deleted file mode 100644 index f356c3d780..0000000000 --- a/packages/medusa/src/loaders/database.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { handlePostgresDatabaseError } from "@medusajs/utils" -import { AwilixContainer } from "awilix" -import { - DataSource, - DataSourceOptions, - Repository, - TreeRepository, -} from "typeorm" -import { ConfigModule } from "../types/global" - -type Options = { - configModule: ConfigModule - container: AwilixContainer - customOptions?: { - migrations: DataSourceOptions["migrations"] - logging: DataSourceOptions["logging"] - } -} - -export let dataSource: DataSource - -// TODO: With the latest version of typeorm, the datasource is expected to be -// available globally. During the integration test, the medusa -// files are imported from @medusajs/medusa, therefore, the repositories are -// evaluated at the same time, unfortunately, the integration tests have their -// own way to load and at the moment, the datasource does not exists. This is -// why we are mocking them here -if (process.env.NODE_ENV === "test") { - dataSource = { - getRepository: (target) => new Repository(target, {} as any) as any, - getTreeRepository: (target) => new TreeRepository(target, {} as any) as any, - } as unknown as DataSource -} - -export default async ({ - container, - configModule, - customOptions, -}: Options): Promise => { - const entities = container.resolve("db_entities") - - const connectionString = configModule.projectConfig.database_url - const database = configModule.projectConfig.database_database - const extra: any = configModule.projectConfig.database_extra || {} - const schema = configModule.projectConfig.database_schema || "public" - - dataSource = new DataSource({ - type: "postgres", - url: connectionString, - database: database, - extra, - schema, - entities, - migrations: customOptions?.migrations, - logging: - customOptions?.logging ?? - (configModule.projectConfig.database_logging || false), - } as DataSourceOptions) - - await dataSource.initialize().catch(handlePostgresDatabaseError) - - // If migrations are not included in the config, we assume you are attempting to start the server - // Therefore, throw if the database is not migrated - if (!dataSource.migrations?.length) { - await dataSource - .query(`select * from migrations`) - .catch(handlePostgresDatabaseError) - } - - return dataSource -} diff --git a/packages/medusa/src/loaders/express.ts b/packages/medusa/src/loaders/express.ts index 407d04b54b..8de3c14e01 100644 --- a/packages/medusa/src/loaders/express.ts +++ b/packages/medusa/src/loaders/express.ts @@ -4,7 +4,7 @@ import { Express } from "express" import session from "express-session" import morgan from "morgan" import Redis from "ioredis" -import { ConfigModule } from "../types/global" +import { ConfigModule } from "@medusajs/types" type Options = { app: Express diff --git a/packages/medusa/src/loaders/helpers/get-model-extension-map.ts b/packages/medusa/src/loaders/helpers/get-model-extension-map.ts deleted file mode 100644 index bc0ac0f626..0000000000 --- a/packages/medusa/src/loaders/helpers/get-model-extension-map.ts +++ /dev/null @@ -1,58 +0,0 @@ -import glob from "glob" -import path from "path" -import { EntitySchema } from "typeorm" - -import { formatRegistrationName } from "../../utils/format-registration-name" -import { ClassConstructor } from "../../types/global" - -type GetModelExtensionMapParams = { - directory?: string - pathGlob?: string - config: Record -} - -export function getModelExtensionsMap({ - directory, - pathGlob, - config = {}, -}: GetModelExtensionMapParams): Map< - string, - ClassConstructor | EntitySchema -> { - const modelExtensionsMap = new Map< - string, - ClassConstructor | EntitySchema - >() - const fullPathGlob = - directory && pathGlob ? path.join(directory, pathGlob) : null - - const modelExtensions = fullPathGlob - ? glob.sync(fullPathGlob, { - cwd: directory, - ignore: ["index.js", "index.js.map"], - }) - : [] - - modelExtensions.forEach((modelExtensionPath) => { - const extendedModel = require(modelExtensionPath) as - | ClassConstructor - | EntitySchema - | undefined - - if (extendedModel) { - Object.entries(extendedModel).map( - ([_key, val]: [string, ClassConstructor | EntitySchema]) => { - if (typeof val === "function" || val instanceof EntitySchema) { - if (config.register) { - const name = formatRegistrationName(modelExtensionPath) - - modelExtensionsMap.set(name, val) - } - } - } - ) - } - }) - - return modelExtensionsMap -} diff --git a/packages/medusa/src/loaders/helpers/routing/index.ts b/packages/medusa/src/loaders/helpers/routing/index.ts index 933cce0e8a..b44cef13a3 100644 --- a/packages/medusa/src/loaders/helpers/routing/index.ts +++ b/packages/medusa/src/loaders/helpers/routing/index.ts @@ -10,7 +10,6 @@ import { errorHandler, requireCustomerAuthentication, } from "../../../utils/middlewares" -import { ConfigModule } from "../../../types/global" import { MedusaRequest, MedusaResponse } from "../../../types/routing" import logger from "../../logger" import { @@ -25,6 +24,7 @@ import { RouteDescriptor, RouteVerb, } from "./types" +import { ConfigModule } from "@medusajs/types" const log = ({ activityId, diff --git a/packages/medusa/src/loaders/load-medusa-project-apis.ts b/packages/medusa/src/loaders/load-medusa-project-apis.ts index 52f9e7dec3..a98e7a355f 100644 --- a/packages/medusa/src/loaders/load-medusa-project-apis.ts +++ b/packages/medusa/src/loaders/load-medusa-project-apis.ts @@ -4,11 +4,12 @@ import glob from "glob" import { trackInstallation } from "medusa-telemetry" import { EOL } from "os" import path from "path" -import { ConfigModule, Logger, MedusaContainer } from "../types/global" +import { Logger, MedusaContainer } from "../types/global" import { getResolvedPlugins } from "./helpers/resolve-plugins" import { RoutesLoader } from "./helpers/routing" import { SubscriberLoader } from "./helpers/subscribers" import logger from "./logger" +import { ConfigModule } from "@medusajs/types" type Options = { rootDirectory: string diff --git a/packages/medusa/src/loaders/passport.ts b/packages/medusa/src/loaders/passport.ts index 2a8898fa14..ff27bca95f 100644 --- a/packages/medusa/src/loaders/passport.ts +++ b/packages/medusa/src/loaders/passport.ts @@ -1,9 +1,9 @@ +import { ConfigModule } from "@medusajs/types" import { Express } from "express" import passport from "passport" import { Strategy as CustomStrategy } from "passport-custom" import { ExtractJwt, Strategy as JWTStrategy } from "passport-jwt" /* import { AuthService } from "../services"*/ -import { ConfigModule } from "../types/global" export default async ({ app, diff --git a/packages/medusa/src/loaders/pg-connection.ts b/packages/medusa/src/loaders/pg-connection.ts index a8a66a3547..7cb73970fb 100644 --- a/packages/medusa/src/loaders/pg-connection.ts +++ b/packages/medusa/src/loaders/pg-connection.ts @@ -1,6 +1,6 @@ +import { ConfigModule } from "@medusajs/types" import { ContainerRegistrationKeys, ModulesSdkUtils } from "@medusajs/utils" import { asValue, AwilixContainer } from "awilix" -import { ConfigModule } from "../types/global" type Options = { configModule: ConfigModule diff --git a/packages/medusa/src/loaders/redis.ts b/packages/medusa/src/loaders/redis.ts index 5d89aad40d..1349786c2f 100644 --- a/packages/medusa/src/loaders/redis.ts +++ b/packages/medusa/src/loaders/redis.ts @@ -2,7 +2,8 @@ import { asValue } from "awilix" import Redis from "ioredis" import FakeRedis from "ioredis-mock" import { EOL } from "os" -import { ConfigModule, Logger, MedusaContainer } from "../types/global" +import { Logger, MedusaContainer } from "../types/global" +import { ConfigModule } from "@medusajs/types" type Options = { container: MedusaContainer diff --git a/packages/medusa/src/types/common.ts b/packages/medusa/src/types/common.ts index bf5d1d76e8..c07bd2c1c5 100644 --- a/packages/medusa/src/types/common.ts +++ b/packages/medusa/src/types/common.ts @@ -1,35 +1,4 @@ import "reflect-metadata" -import { - FindManyOptions, - FindOneOptions, - FindOperator, - FindOptionsSelect, - FindOptionsWhere, - OrderByCondition, -} from "typeorm" - -import { FindOptionsOrder } from "typeorm/find-options/FindOptionsOrder" -import { FindOptionsRelations } from "typeorm/find-options/FindOptionsRelations" - -/** - * Utility type used to remove some optional attributes (coming from K) from a type T - */ -export type WithRequiredProperty = T & { - // -? removes 'optional' from a property - [Property in K]-?: T[Property] -} - -export type PartialPick = { - [P in K]?: T[P] -} - -export type Writable = { - -readonly [key in keyof T]: - | T[key] - | FindOperator - | FindOperator - | FindOperator -} export interface FindConfig { select?: (keyof Entity)[] @@ -39,55 +8,6 @@ export interface FindConfig { order?: { [K: string]: "ASC" | "DESC" } } -export type ExtendedFindConfig = ( - | Omit, "where" | "relations" | "select"> - | Omit, "where" | "relations" | "select"> -) & { - select?: FindOptionsSelect - relations?: FindOptionsRelations - where: FindOptionsWhere | FindOptionsWhere[] - order?: FindOptionsOrder - skip?: number - take?: number -} - -export type QuerySelector = Selector & { q?: string } -export type TreeQuerySelector = QuerySelector & { - include_descendants_tree?: boolean -} - -type InnerSelector = { - [key in keyof TEntity]?: - | TEntity[key] - | TEntity[key][] - | FindOperator -} - -export type Selector = - | InnerSelector - | InnerSelector[] - -export type TotalField = - | "shipping_total" - | "discount_total" - | "tax_total" - | "refunded_total" - | "total" - | "subtotal" - | "refundable_amount" - | "gift_card_total" - | "gift_card_tax_total" - -export interface CustomFindOptions { - select?: FindManyOptions["select"] - where?: FindManyOptions["where"] & { - [P in InKeys]?: TModel[P][] - } - order?: OrderByCondition - skip?: number - take?: number -} - export type QueryConfig = { /** * Default fields and relations to return @@ -116,43 +36,3 @@ export type QueryConfig = { defaultLimit?: number isList?: boolean } - -/** - * @interface - * - * Pagination fields returned in the response of an API route. - */ -export type PaginatedResponse = { - /** - * The maximum number of items that can be returned in the list. - */ - limit: number - /** - * The number of items skipped before the returned items in the list. - */ - offset: number - /** - * The total number of items available. - */ - count: number -} - -/** - * @interface - * - * The response returned for a `DELETE` request. - */ -export type DeleteResponse = { - /** - * The ID of the deleted item. - */ - id: string - /** - * The type of the deleted item. - */ - object: string - /** - * Whether the item was deleted successfully. - */ - deleted: boolean -} diff --git a/packages/medusa/src/types/global.ts b/packages/medusa/src/types/global.ts index 659001a97e..5bd10457d9 100644 --- a/packages/medusa/src/types/global.ts +++ b/packages/medusa/src/types/global.ts @@ -1,5 +1,4 @@ -import { CommonTypes, RequestQueryFields } from "@medusajs/types" -import { Request } from "express" +import { RequestQueryFields } from "@medusajs/types" import { MedusaContainer as coreMedusaContainer } from "medusa-core-utils" import { FindConfig } from "./common" @@ -57,8 +56,6 @@ declare global { } } -export type ExtendedRequest = Request & { resource: TEntity } - export type ClassConstructor = { new (...args: unknown[]): T } @@ -82,5 +79,3 @@ export type Logger = { } export type Constructor = new (...args: any[]) => T - -export type ConfigModule = CommonTypes.ConfigModule diff --git a/packages/medusa/src/types/request.ts b/packages/medusa/src/types/request.ts deleted file mode 100644 index 5a8cc58830..0000000000 --- a/packages/medusa/src/types/request.ts +++ /dev/null @@ -1,3 +0,0 @@ -export type RequestContext = { - ip: string -} diff --git a/packages/medusa/src/utils/date-helpers.ts b/packages/medusa/src/utils/date-helpers.ts deleted file mode 100644 index 8b18b58594..0000000000 --- a/packages/medusa/src/utils/date-helpers.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { isDate } from "lodash" - -export const isPast = (date: Date | null) => { - const now = new Date() - return isDate(date) && now > date -} - -export const isFuture = (date: Date | null) => { - const now = new Date() - return isDate(date) && date > now -} diff --git a/packages/medusa/src/utils/index.ts b/packages/medusa/src/utils/index.ts index 6b41e538ef..1526616ba2 100644 --- a/packages/medusa/src/utils/index.ts +++ b/packages/medusa/src/utils/index.ts @@ -1,10 +1,6 @@ export * from "./clean-response-data" export * from "./exception-formatter" -export * from "./is-date" -export * from "./is-object" -export * from "./is-string" export * from "./omit-deep" export * from "./remote-query-fetch-data" export * from "./remove-undefined-properties" -export * from "./set-metadata" export * from "./middlewares" diff --git a/packages/medusa/src/utils/is-date.ts b/packages/medusa/src/utils/is-date.ts deleted file mode 100644 index 97e98072d3..0000000000 --- a/packages/medusa/src/utils/is-date.ts +++ /dev/null @@ -1,4 +0,0 @@ -export function isDate(value: any): value is Date { - const date = new Date(value) - return !isNaN(date.valueOf()) -} diff --git a/packages/medusa/src/utils/is-object.ts b/packages/medusa/src/utils/is-object.ts deleted file mode 100644 index e577671adc..0000000000 --- a/packages/medusa/src/utils/is-object.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function isObject(obj: any): obj is object { - return obj != null && obj?.constructor?.name === "Object" -} diff --git a/packages/medusa/src/utils/is-string.ts b/packages/medusa/src/utils/is-string.ts deleted file mode 100644 index 7529d697ad..0000000000 --- a/packages/medusa/src/utils/is-string.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function isString(val: any): val is string { - return val != null && typeof val === "string" -} diff --git a/packages/medusa/src/utils/merge-modules-config.ts b/packages/medusa/src/utils/merge-modules-config.ts deleted file mode 100644 index d6b54df770..0000000000 --- a/packages/medusa/src/utils/merge-modules-config.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { ConfigModule } from "@medusajs/types" - -/** - * Merge the modules config from the medusa-config file with the modules config from medusa package - * @param modules - * @param medusaInternalModulesConfig - */ -export function mergeModulesConfig( - modules: ConfigModule["modules"] = {}, - medusaInternalModulesConfig = {} -) { - const modules_ = ({ ...modules } as ConfigModule["modules"])! - - const userModulesConfigKeys = Object.keys(modules) - const internalModulesConfigKeys = Object.keys(medusaInternalModulesConfig) - - const allModulesKeys = new Set([ - ...userModulesConfigKeys, - ...internalModulesConfigKeys, - ]) - - for (const moduleName of allModulesKeys) { - const internalModuleConfig = medusaInternalModulesConfig[moduleName] - - modules_[moduleName] ??= internalModuleConfig - } - - return modules_ -} diff --git a/packages/medusa/src/utils/middlewares/await-middleware.ts b/packages/medusa/src/utils/middlewares/await-middleware.ts deleted file mode 100644 index fec27d568c..0000000000 --- a/packages/medusa/src/utils/middlewares/await-middleware.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { NextFunction, Request, RequestHandler, Response } from "express" - -type handler = (req: Request, res: Response) => Promise - -/** - * @deprecated use `import { wrapHandler } from "@medusajs/utils"` - */ -export default (fn: handler): RequestHandler => { - return async (req: Request, res: Response, next: NextFunction) => { - if (req?.errors?.length) { - return res.status(400).json({ - errors: req.errors, - message: - "Provided request body contains errors. Please check the data and retry the request", - }) - } - - try { - return await fn(req, res) - } catch (err) { - next(err) - } - } -} - -/** - * @schema MultipleErrors - * title: "Multiple Errors" - * type: object - * properties: - * errors: - * type: array - * description: Array of errors - * items: - * $ref: "#/components/schemas/Error" - * message: - * type: string - * default: "Provided request body contains errors. Please check the data and retry the request" - */ diff --git a/packages/medusa/src/utils/middlewares/check-registered-modules.ts b/packages/medusa/src/utils/middlewares/check-registered-modules.ts deleted file mode 100644 index 18347d7110..0000000000 --- a/packages/medusa/src/utils/middlewares/check-registered-modules.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NextFunction, Request, Response } from "express" - -export function checkRegisteredModules(services: { - [serviceName: string]: string -}): (req: Request, res: Response, next: NextFunction) => Promise { - return async (req: Request, res: Response, next: NextFunction) => { - for (const service of Object.keys(services)) { - if (!req.scope.resolve(service, { allowUnregistered: true })) { - return next(new Error(services[service])) - } - } - - next() - } -} diff --git a/packages/medusa/src/utils/middlewares/feature-flag-enabled.ts b/packages/medusa/src/utils/middlewares/feature-flag-enabled.ts deleted file mode 100644 index 15a90c04dd..0000000000 --- a/packages/medusa/src/utils/middlewares/feature-flag-enabled.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { FlagRouter } from "@medusajs/utils" -import { NextFunction, Request, Response } from "express" - -export function isFeatureFlagEnabled( - flagKey: string -): (req: Request, res: Response, next: NextFunction) => Promise { - return async (req: Request, res: Response, next: NextFunction) => { - const featureFlagRouter = req.scope.resolve( - "featureFlagRouter" - ) as FlagRouter - - if (!featureFlagRouter.isFeatureEnabled(flagKey)) { - res.sendStatus(404) - } else { - next() - } - } -} diff --git a/packages/medusa/src/utils/middlewares/index.ts b/packages/medusa/src/utils/middlewares/index.ts index 0811ad6134..1c584e17df 100644 --- a/packages/medusa/src/utils/middlewares/index.ts +++ b/packages/medusa/src/utils/middlewares/index.ts @@ -1,7 +1,5 @@ export { default as authenticateLegacy } from "./authenticate" export { authenticate } from "./authenticate-middleware" export { default as authenticateCustomer } from "./authenticate-customer" -export { default as wrapHandler } from "./await-middleware" export { default as errorHandler } from "./error-handler" -export { isFeatureFlagEnabled } from "./feature-flag-enabled" export { default as requireCustomerAuthentication } from "./require-customer-authentication" diff --git a/packages/medusa/src/utils/omit-deep.ts b/packages/medusa/src/utils/omit-deep.ts index a86453c0a7..0c3639e3f7 100644 --- a/packages/medusa/src/utils/omit-deep.ts +++ b/packages/medusa/src/utils/omit-deep.ts @@ -1,4 +1,4 @@ -import { isObject } from "./is-object" +import { isObject } from "@medusajs/utils" export function omitDeep( input: object, diff --git a/packages/medusa/src/utils/set-metadata.ts b/packages/medusa/src/utils/set-metadata.ts deleted file mode 100644 index 5d7bf658b3..0000000000 --- a/packages/medusa/src/utils/set-metadata.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { MedusaError } from "medusa-core-utils/dist" - -/** - * Dedicated method to set metadata. - * @param metadata - the metadata to set - * @param obj - the entity to apply metadata to. - * @return resolves to the updated result. - */ -export function setMetadata( - obj: { metadata: Record | null } | null | undefined, - metadata: Record -): Record { - const existing = obj?.metadata || {} - const newData = {} - - for (const [key, value] of Object.entries(metadata)) { - if (typeof key !== "string") { - throw new MedusaError( - MedusaError.Types.INVALID_ARGUMENT, - "Key type is invalid. Metadata keys must be strings" - ) - } - - /** - * We reserve the empty string as a way to delete a key. - * If the value is an empty string, we don't - * set it, and if it exists in the existing metadata, we - * unset the field. - */ - if (value === "") { - if (key in existing) { - delete existing[key] - } - - continue - } - - newData[key] = value - } - - return { - ...existing, - ...newData, - } -} diff --git a/packages/medusa/src/utils/sleep.ts b/packages/medusa/src/utils/sleep.ts deleted file mode 100644 index a30eb4b386..0000000000 --- a/packages/medusa/src/utils/sleep.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { promisify } from "util" - -export const sleep = promisify(setTimeout)