@perseidesjs/notification-nodemailer 2.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,11 +10,13 @@ const formModule = { customFields: {} };
10
10
  const displayModule = {
11
11
  displays: {}
12
12
  };
13
+ const i18nModule = { resources: {} };
13
14
  const plugin = {
14
15
  widgetModule,
15
16
  routeModule,
16
17
  menuItemModule,
17
18
  formModule,
18
- displayModule
19
+ displayModule,
20
+ i18nModule
19
21
  };
20
22
  module.exports = plugin;
@@ -9,12 +9,14 @@ const formModule = { customFields: {} };
9
9
  const displayModule = {
10
10
  displays: {}
11
11
  };
12
+ const i18nModule = { resources: {} };
12
13
  const plugin = {
13
14
  widgetModule,
14
15
  routeModule,
15
16
  menuItemModule,
16
17
  formModule,
17
- displayModule
18
+ displayModule,
19
+ i18nModule
18
20
  };
19
21
  export {
20
22
  plugin as default
@@ -1 +1 @@
1
- export { NodemailerNotificationProviderService, PluginOptions, } from './providers/nodemailer/service';
1
+ export { NodemailerNotificationProviderService, PluginOptions, } from "./providers/nodemailer/service";
@@ -1,8 +1,30 @@
1
- import { type ProviderSendNotificationDTO, type ProviderSendNotificationResultsDTO } from '@medusajs/framework/types';
2
- import { AbstractNotificationProviderService } from '@medusajs/framework/utils';
3
- import { type Transporter } from 'nodemailer';
4
- import type SMTPConnection from 'nodemailer/lib/smtp-connection';
5
- import type SMTPTransport from 'nodemailer/lib/smtp-transport';
1
+ import type { ProviderSendNotificationDTO, ProviderSendNotificationResultsDTO } from "@medusajs/framework/types";
2
+ import { AbstractNotificationProviderService } from "@medusajs/framework/utils";
3
+ import { type Transporter } from "nodemailer";
4
+ import type SMTPConnection from "nodemailer/lib/smtp-connection";
5
+ import type SMTPTransport from "nodemailer/lib/smtp-transport";
6
+ /**
7
+ * Checks if a string is in binary digit format.
8
+ * This format is created by converting a Buffer using:
9
+ * [...buffer].map((byte) => byte.toString(2).padStart(8, "0")).join("")
10
+ *
11
+ * This results in a string containing only 0s and 1s with length divisible by 8.
12
+ */
13
+ export declare function isBinaryString(content: string): boolean;
14
+ /**
15
+ * Converts a binary digit string back to a Buffer.
16
+ * The binary string format is a sequence of 8-character binary representations
17
+ * of each byte, e.g., "0100100001101001" represents "Hi".
18
+ */
19
+ export declare function binaryStringToBuffer(binaryString: string): Buffer;
20
+ /**
21
+ * Processes attachment content to ensure it's in a format Nodemailer can handle.
22
+ * Supports:
23
+ * - Buffer: Passed through as-is
24
+ * - Binary digit string: Converted to Buffer
25
+ * - Regular string: Passed through as-is (assumed to be base64 or text content)
26
+ */
27
+ export declare function processAttachmentContent(content: string | Buffer): string | Buffer;
6
28
  export type PluginOptions = SMTPConnection.Options & SMTPTransport.MailOptions & {
7
29
  from: string;
8
30
  };
@@ -4,8 +4,59 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.NodemailerNotificationProviderService = void 0;
7
+ exports.isBinaryString = isBinaryString;
8
+ exports.binaryStringToBuffer = binaryStringToBuffer;
9
+ exports.processAttachmentContent = processAttachmentContent;
7
10
  const utils_1 = require("@medusajs/framework/utils");
8
11
  const nodemailer_1 = __importDefault(require("nodemailer"));
12
+ /**
13
+ * Checks if a string is in binary digit format.
14
+ * This format is created by converting a Buffer using:
15
+ * [...buffer].map((byte) => byte.toString(2).padStart(8, "0")).join("")
16
+ *
17
+ * This results in a string containing only 0s and 1s with length divisible by 8.
18
+ */
19
+ function isBinaryString(content) {
20
+ // Must only contain 0s and 1s
21
+ if (!/^[01]+$/.test(content)) {
22
+ return false;
23
+ }
24
+ // Must be divisible by 8 (each byte = 8 bits)
25
+ if (content.length % 8 !== 0) {
26
+ return false;
27
+ }
28
+ // Must be reasonably long (at least 1 byte worth)
29
+ return content.length >= 8;
30
+ }
31
+ /**
32
+ * Converts a binary digit string back to a Buffer.
33
+ * The binary string format is a sequence of 8-character binary representations
34
+ * of each byte, e.g., "0100100001101001" represents "Hi".
35
+ */
36
+ function binaryStringToBuffer(binaryString) {
37
+ const bytes = [];
38
+ for (let i = 0; i < binaryString.length; i += 8) {
39
+ const byteStr = binaryString.slice(i, i + 8);
40
+ bytes.push(parseInt(byteStr, 2));
41
+ }
42
+ return Buffer.from(bytes);
43
+ }
44
+ /**
45
+ * Processes attachment content to ensure it's in a format Nodemailer can handle.
46
+ * Supports:
47
+ * - Buffer: Passed through as-is
48
+ * - Binary digit string: Converted to Buffer
49
+ * - Regular string: Passed through as-is (assumed to be base64 or text content)
50
+ */
51
+ function processAttachmentContent(content) {
52
+ if (Buffer.isBuffer(content)) {
53
+ return content;
54
+ }
55
+ if (typeof content === "string" && isBinaryString(content)) {
56
+ return binaryStringToBuffer(content);
57
+ }
58
+ return content;
59
+ }
9
60
  class NodemailerNotificationProviderService extends utils_1.AbstractNotificationProviderService {
10
61
  constructor(_, options) {
11
62
  super();
@@ -14,10 +65,10 @@ class NodemailerNotificationProviderService extends utils_1.AbstractNotification
14
65
  }
15
66
  static validateOptions(options) {
16
67
  if (!options.host) {
17
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `"host" is required in the ${this.identifier} provider's options.`);
68
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `"host" is required in the ${NodemailerNotificationProviderService.identifier} provider's options.`);
18
69
  }
19
70
  if (!options.port) {
20
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `"port" is required in the ${this.identifier} provider's options.`);
71
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `"port" is required in the ${NodemailerNotificationProviderService.identifier} provider's options.`);
21
72
  }
22
73
  }
23
74
  async send(notification) {
@@ -34,17 +85,17 @@ class NodemailerNotificationProviderService extends utils_1.AbstractNotification
34
85
  Array.isArray(notification.attachments) &&
35
86
  notification.attachments.length > 0) {
36
87
  attachments = notification.attachments.map((attachment) => ({
37
- content: attachment.content,
88
+ content: processAttachmentContent(attachment.content),
38
89
  filename: attachment.filename,
39
90
  contentType: attachment.content_type,
40
- contentDisposition: attachment.disposition === 'inline' ||
41
- attachment.disposition === 'attachment'
91
+ contentDisposition: attachment.disposition === "inline" ||
92
+ attachment.disposition === "attachment"
42
93
  ? attachment.disposition
43
94
  : undefined,
44
95
  cid: attachment.id,
45
- contentTransferEncoding: attachment.content_type === 'text/html'
46
- ? 'quoted-printable'
47
- : 'base64',
96
+ contentTransferEncoding: attachment.content_type === "text/html"
97
+ ? "quoted-printable"
98
+ : "base64",
48
99
  }));
49
100
  }
50
101
  const mailOptions = {
@@ -65,6 +116,6 @@ class NodemailerNotificationProviderService extends utils_1.AbstractNotification
65
116
  }
66
117
  }
67
118
  exports.NodemailerNotificationProviderService = NodemailerNotificationProviderService;
68
- NodemailerNotificationProviderService.identifier = 'nodemailer';
119
+ NodemailerNotificationProviderService.identifier = "nodemailer";
69
120
  exports.default = NodemailerNotificationProviderService;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbm9kZW1haWxlci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUlBLHFEQUlrQztBQUNsQyw0REFBeUQ7QUFVekQsTUFBYSxxQ0FBc0MsU0FBUSwyQ0FBbUM7SUFNN0YsWUFBWSxDQUFDLEVBQUUsT0FBc0I7UUFDcEMsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQXlCO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsNkJBQTZCLElBQUksQ0FBQyxVQUFVLHNCQUFzQixDQUNsRSxDQUFBO1FBQ0YsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsNkJBQTZCLElBQUksQ0FBQyxVQUFVLHNCQUFzQixDQUNsRSxDQUFBO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUNULFlBQXlDO1FBRXpDLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsWUFBWSxDQUFBO1FBRXBDLElBQUksQ0FBQyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUEsaUJBQVMsRUFBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxNQUFNLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qiw2QkFBNkIscUNBQXFDLENBQUMsVUFBVSxzQkFBc0IsQ0FDbkcsQ0FBQTtRQUNGLENBQUM7UUFFRCxJQUFJLElBQXdCLENBQUE7UUFDNUIsSUFBSSxJQUFBLGlCQUFTLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUEsaUJBQVMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxRCxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksSUFBSSxPQUFPLEVBQUUsSUFBSSxDQUFBO1FBQ3RDLENBQUM7UUFFRCxJQUFJLFdBQVcsR0FBc0IsRUFBRSxDQUFBO1FBQ3ZDLElBQ0MsSUFBQSxpQkFBUyxFQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDbkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQ3ZDLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDbEMsQ0FBQztZQUNGLFdBQVcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDM0QsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO2dCQUMzQixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQzdCLFdBQVcsRUFBRSxVQUFVLENBQUMsWUFBWTtnQkFDcEMsa0JBQWtCLEVBQ2pCLFVBQVUsQ0FBQyxXQUFXLEtBQUssUUFBUTtvQkFDbkMsVUFBVSxDQUFDLFdBQVcsS0FBSyxZQUFZO29CQUN0QyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVc7b0JBQ3hCLENBQUMsQ0FBQyxTQUFTO2dCQUNiLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDbEIsdUJBQXVCLEVBQ3RCLFVBQVUsQ0FBQyxZQUFZLEtBQUssV0FBVztvQkFDdEMsQ0FBQyxDQUFDLGtCQUFrQjtvQkFDcEIsQ0FBQyxDQUFDLFFBQVE7YUFDWixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBaUI7WUFDakMsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzdDLEVBQUU7WUFDRixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU87U0FDekIsQ0FBQTtRQUVELElBQUksSUFBQSxpQkFBUyxFQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDeEIsQ0FBQztRQUVELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixXQUFXLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUN0QyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUV6RCxPQUFPO1lBQ04sRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ2xCLENBQUE7SUFDRixDQUFDOztBQXZGRixzRkF3RkM7QUF2Rk8sZ0RBQVUsR0FBRyxZQUFZLENBQUE7QUF5RmpDLGtCQUFlLHFDQUFxQyxDQUFBIn0=
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbm9kZW1haWxlci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQXFCQSx3Q0FXQztBQU9ELG9EQU9DO0FBU0QsNERBVUM7QUE3REQscURBSWtDO0FBQ2xDLDREQUF5RDtBQUt6RDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBZTtJQUM3Qyw4QkFBOEI7SUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQTtJQUNiLENBQUM7SUFDRCw4Q0FBOEM7SUFDOUMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQTtJQUNiLENBQUM7SUFDRCxrREFBa0Q7SUFDbEQsT0FBTyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQTtBQUMzQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLFlBQW9CO0lBQ3hELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQTtJQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNI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
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 adevinwild ( Adil BASRI )
3
+ Copyright (c) 2025 perseidesjs - adevinwild ( Adil BASRI )
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -11,8 +11,17 @@
11
11
  @perseidesjs/notification-nodemailer
12
12
  </h1>
13
13
 
14
+ <p align="center">
15
+ <a href="https://www.npmjs.com/package/@perseidesjs/notification-nodemailer"><img src="https://img.shields.io/npm/v/@perseidesjs/notification-nodemailer.svg" alt="npm version"></a>
16
+ <a href="https://www.npmjs.com/package/@perseidesjs/notification-nodemailer"><img src="https://img.shields.io/npm/dm/@perseidesjs/notification-nodemailer.svg" alt="npm downloads"></a>
17
+ <a href="https://github.com/perseidesjs/notification-nodemailer/blob/develop/LICENSE.md"><img src="https://img.shields.io/npm/l/@perseidesjs/notification-nodemailer.svg" alt="license"></a>
18
+ <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
19
+ <img src="https://img.shields.io/badge/TypeScript-5.x-blue" alt="typescript">
20
+ </p>
21
+
14
22
  <h4 align="center">
15
23
  <a href="https://perseides.org">Website</a> |
24
+ <a href="https://docs.perseides.org/plugins/notification-nodemailer/getting-started">Documentation</a> |
16
25
  <a href="https://www.medusajs.com">Medusa</a>
17
26
  </h4>
18
27
 
@@ -20,6 +29,20 @@
20
29
  A Medusa plugin for sending notifications via Nodemailer (SMTP)
21
30
  </p>
22
31
 
23
- # [Documentation](https://docs.perseides.org/plugins/notification-nodemailer/getting-started)
32
+ ## Installation
33
+
34
+ ```bash
35
+ npm install @perseidesjs/notification-nodemailer
36
+ # or
37
+ yarn add @perseidesjs/notification-nodemailer
38
+ # or
39
+ pnpm add @perseidesjs/notification-nodemailer
40
+ ```
41
+
42
+ ## Documentation
43
+
44
+ Access the full documentation at [docs.perseides.org/plugins/notification-nodemailer](https://docs.perseides.org/plugins/notification-nodemailer/getting-started)
45
+
46
+ ## License
24
47
 
25
- Access the documentation for the package, by clicking ["here"](https://docs.perseides.org/plugins/notification-nodemailer/getting-started)
48
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perseidesjs/notification-nodemailer",
3
- "version": "2.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "A Medusa plugin for sending notifications via Nodemailer (SMTP)",
5
5
  "author": "adevinwild",
6
6
  "license": "MIT",
@@ -32,76 +32,37 @@
32
32
  "changeset": "changeset",
33
33
  "version": "changeset version",
34
34
  "release": "yarn build && changeset publish",
35
- "lint": "eslint .",
36
- "lint:fix": "eslint . --fix",
37
- "format": "prettier --write .",
38
- "format:check": "prettier --check .",
35
+ "lint": "biome lint --write",
36
+ "lint:check": "biome lint",
37
+ "format": "biome format --write",
38
+ "format:check": "biome format",
39
39
  "typecheck": "tsc --noEmit",
40
- "prepare": "husky"
40
+ "test": "vitest run",
41
+ "test:watch": "vitest"
41
42
  },
42
43
  "devDependencies": {
44
+ "@biomejs/biome": "2.3.11",
43
45
  "@changesets/cli": "^2.29.5",
44
- "@epic-web/config": "^1.21.0",
45
- "@medusajs/admin-sdk": "2.10.3",
46
- "@medusajs/cli": "2.10.3",
47
- "@medusajs/framework": "2.10.3",
48
- "@medusajs/icons": "2.10.3",
49
- "@medusajs/medusa": "2.10.3",
50
- "@medusajs/test-utils": "2.10.3",
51
- "@medusajs/ui": "4.0.23",
52
- "@mikro-orm/cli": "6.4.3",
53
- "@mikro-orm/core": "6.4.3",
54
- "@mikro-orm/knex": "6.4.3",
55
- "@mikro-orm/migrations": "6.4.3",
56
- "@mikro-orm/postgresql": "6.4.3",
46
+ "@medusajs/cli": "2.13.0",
47
+ "@medusajs/framework": "2.13.0",
48
+ "@medusajs/medusa": "2.13.0",
57
49
  "@swc/core": "1.5.7",
58
50
  "@types/node": "^20.0.0",
59
51
  "@types/nodemailer": "^6.4.17",
60
- "@types/react": "^18.3.2",
61
- "@types/react-dom": "^18.2.25",
62
- "awilix": "^8.0.1",
63
- "eslint": "^9.30.1",
64
- "husky": "^9.1.7",
65
- "lint-staged": "^16.1.2",
66
52
  "nodemailer": "^7.0.5",
67
- "pg": "^8.13.0",
68
- "prettier": "^3.6.2",
69
- "prop-types": "^15.8.1",
70
- "react": "^18.2.0",
71
- "react-dom": "^18.2.0",
72
53
  "ts-node": "^10.9.2",
73
54
  "typescript": "^5.6.2",
74
- "vite": "^5.2.11",
55
+ "vitest": "^4.0.16",
75
56
  "yalc": "^1.0.0-pre.53"
76
57
  },
77
58
  "peerDependencies": {
78
- "@medusajs/admin-sdk": "2.10.3",
79
- "@medusajs/cli": "2.10.3",
80
- "@medusajs/framework": "2.10.3",
81
- "@medusajs/icons": "2.10.3",
82
- "@medusajs/medusa": "2.10.3",
83
- "@medusajs/test-utils": "2.10.3",
84
- "@medusajs/ui": "4.0.23",
85
- "@mikro-orm/cli": "6.4.3",
86
- "@mikro-orm/core": "6.4.3",
87
- "@mikro-orm/knex": "6.4.3",
88
- "@mikro-orm/migrations": "6.4.3",
89
- "@mikro-orm/postgresql": "6.4.3",
90
- "awilix": "^8.0.1",
91
- "nodemailer": "^7.0.5",
92
- "pg": "^8.13.0"
59
+ "@medusajs/cli": ">=2.13.0",
60
+ "@medusajs/framework": ">=2.13.0",
61
+ "@medusajs/medusa": ">=2.13.0",
62
+ "nodemailer": "^7.0.5"
93
63
  },
94
64
  "engines": {
95
65
  "node": ">=20"
96
66
  },
97
- "packageManager": "yarn@4.9.2",
98
- "lint-staged": {
99
- "*.{js,jsx,ts,tsx,mjs,cjs}": [
100
- "eslint --fix",
101
- "prettier --write"
102
- ],
103
- "*.{json,md,yml,yaml}": [
104
- "prettier --write"
105
- ]
106
- }
67
+ "packageManager": "yarn@4.9.2"
107
68
  }