or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

tessl/npm-medusa-core-utils

Core utilities for Medusa e-commerce platform including error handling, DI container, amount calculations, and configuration parsing

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/medusa-core-utils@1.2.x

To install, run

npx @tessl/cli install tessl/npm-medusa-core-utils@1.2.0

0

# Medusa Core Utils

1

2

Medusa Core Utils provides essential utilities for the Medusa e-commerce platform. It includes standardized error handling, dependency injection container functionality, amount computation utilities for financial calculations, country code and currency handling, configuration file parsing, graceful server shutdown mechanisms, CORS origin parsing, and various data transformation utilities.

3

4

## Package Information

5

6

- **Package Name**: medusa-core-utils

7

- **Package Type**: npm

8

- **Language**: TypeScript

9

- **Installation**: `npm install medusa-core-utils`

10

11

## Core Imports

12

13

```typescript

14

import {

15

MedusaError,

16

createMedusaContainer,

17

computerizeAmount,

18

humanizeAmount,

19

countries,

20

isoCountryLookup,

21

getConfigFile,

22

GracefulShutdownServer,

23

buildRegexpIfValid,

24

isDefined,

25

parseCorsOrigins,

26

transformIdableFields,

27

zeroDecimalCurrencies,

28

getMedusaVersion,

29

indexTypes,

30

createRequireFromPath

31

} from "medusa-core-utils";

32

```

33

34

For CommonJS:

35

36

```javascript

37

const {

38

MedusaError,

39

createMedusaContainer,

40

computerizeAmount,

41

humanizeAmount,

42

countries,

43

isoCountryLookup,

44

getConfigFile,

45

GracefulShutdownServer,

46

buildRegexpIfValid,

47

isDefined,

48

parseCorsOrigins,

49

transformIdableFields,

50

zeroDecimalCurrencies,

51

getMedusaVersion,

52

indexTypes,

53

createRequireFromPath

54

} = require("medusa-core-utils");

55

```

56

57

## Basic Usage

58

59

```typescript

60

import {

61

MedusaError,

62

createMedusaContainer,

63

computerizeAmount,

64

humanizeAmount,

65

countries,

66

isoCountryLookup

67

} from "medusa-core-utils";

68

69

// Error handling

70

throw new MedusaError(

71

MedusaError.Types.INVALID_DATA,

72

"Invalid user input",

73

MedusaError.Codes.INSUFFICIENT_INVENTORY

74

);

75

76

// Dependency injection

77

const container = createMedusaContainer();

78

container.register("userService", asClass(UserService));

79

80

// Amount calculations

81

const dbAmount = computerizeAmount(19.99, "usd"); // 1999 (cents)

82

const displayAmount = humanizeAmount(1999, "usd"); // 19.99

83

84

// Country lookup

85

const countryCode = isoCountryLookup("United States"); // "US"

86

```

87

88

## Architecture

89

90

Medusa Core Utils is organized around several key functional areas:

91

92

- **Error Management**: Standardized error classes and types for consistent error handling across Medusa services

93

- **Dependency Injection**: Enhanced Awilix container with additional registration patterns for service management

94

- **Financial Utilities**: Currency-aware amount conversion between display and storage formats

95

- **Internationalization**: Complete country code lookup and validation utilities

96

- **Configuration Management**: Dynamic configuration file loading with error handling

97

- **Server Lifecycle**: Graceful shutdown patterns for HTTP servers

98

- **Data Processing**: Utilities for data transformation, validation, and parsing

99

100

## Capabilities

101

102

### Error Handling

103

104

Standardized error handling with predefined error types and codes for consistent error management across Medusa applications.

105

106

```typescript { .api }

107

class MedusaError extends Error {

108

constructor(type: string, message: string, code?: string, ...params: any);

109

public type: string;

110

public message: string;

111

public code?: string;

112

public date: Date;

113

114

public static Types: {

115

DB_ERROR: "database_error";

116

DUPLICATE_ERROR: "duplicate_error";

117

INVALID_ARGUMENT: "invalid_argument";

118

INVALID_DATA: "invalid_data";

119

UNAUTHORIZED: "unauthorized";

120

NOT_FOUND: "not_found";

121

NOT_ALLOWED: "not_allowed";

122

UNEXPECTED_STATE: "unexpected_state";

123

CONFLICT: "conflict";

124

PAYMENT_AUTHORIZATION_ERROR: "payment_authorization_error";

125

};

126

127

public static Codes: {

128

INSUFFICIENT_INVENTORY: "insufficient_inventory";

129

CART_INCOMPATIBLE_STATE: "cart_incompatible_state";

130

};

131

}

132

```

133

134

[Error Handling](./error-handling.md)

135

136

### Container & Dependency Injection

137

138

Enhanced Awilix dependency injection container with additional registration patterns optimized for Medusa's service architecture.

139

140

```typescript { .api }

141

type MedusaContainer = AwilixContainer & {

142

registerAdd: <T>(name: string, registration: T) => MedusaContainer;

143

createScope: () => MedusaContainer;

144

};

145

146

function createMedusaContainer(...args): MedusaContainer;

147

```

148

149

[Container & Dependency Injection](./container-di.md)

150

151

### Amount Utilities

152

153

Currency-aware financial calculation utilities for converting between display and database storage formats, with support for zero-decimal currencies.

154

155

```typescript { .api }

156

function computerizeAmount(amount: number, currency: string): number;

157

function humanizeAmount(amount: number, currency: string): number;

158

const zeroDecimalCurrencies: string[];

159

```

160

161

[Amount Utilities](./amount-utilities.md)

162

163

### Data Utilities

164

165

Comprehensive data processing utilities including country code lookup, CORS origin parsing, field transformations, and validation functions.

166

167

```typescript { .api }

168

type Country = {

169

alpha2: string;

170

name: string;

171

alpha3: string;

172

numeric: string;

173

};

174

175

const countries: Country[];

176

function isoCountryLookup(country: string): string;

177

function parseCorsOrigins(str: string): (string | RegExp)[];

178

function transformIdableFields<T, TFields, TOutput>(

179

obj: T,

180

fields: TFields

181

): TOutput;

182

function isDefined<T>(val: T): val is T extends undefined ? never : T;

183

```

184

185

[Data Utilities](./data-utilities.md)

186

187

### Server Utilities

188

189

Server lifecycle management including graceful shutdown patterns, configuration file loading, and version detection utilities.

190

191

```typescript { .api }

192

abstract class GracefulShutdownServer {

193

public isShuttingDown: boolean;

194

public abstract shutdown(timeout?: number): Promise<void>;

195

public static create<T extends Server>(

196

originalServer: T,

197

waitingResponseTime?: number

198

): T & GracefulShutdownServer;

199

}

200

201

function getConfigFile<TConfig = unknown>(

202

rootDir: string,

203

configName: string

204

): { configModule: TConfig; configFilePath: string; error?: any };

205

206

function getMedusaVersion(): string;

207

```

208

209

[Server Utilities](./server-utilities.md)

210

211

### Utility Functions

212

213

General-purpose utility functions for regular expression validation, require path creation, and type indexing.

214

215

```typescript { .api }

216

function buildRegexpIfValid(str: string): RegExp | undefined;

217

function createRequireFromPath(filename: string): NodeRequire;

218

const indexTypes: {

219

products: "products";

220

};

221

```

222

223

[Utility Functions](./utility-functions.md)