@lodashventure/medusa-quotation 1.5.5 → 1.5.6

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.
@@ -1941,15 +1941,51 @@ pdfMake__default.default.fonts = {
1941
1941
  const cmToPt = (cm) => {
1942
1942
  return cm * 28.35;
1943
1943
  };
1944
- const imageUrlToBase64 = (url) => {
1945
- return fetch(url).then((response) => response.blob()).then(
1946
- (blob) => new Promise((resolve, reject) => {
1947
- const reader = new FileReader();
1948
- reader.onloadend = () => resolve(reader.result);
1949
- reader.onerror = reject;
1950
- reader.readAsDataURL(blob);
1951
- })
1952
- );
1944
+ const fetchImageAsDataUrl = async (url) => {
1945
+ const response = await fetch(url);
1946
+ if (!response.ok) {
1947
+ throw new Error(`Failed to fetch image (${response.status})`);
1948
+ }
1949
+ const blob = await response.blob();
1950
+ return await new Promise((resolve, reject) => {
1951
+ const reader = new FileReader();
1952
+ reader.onloadend = () => resolve(reader.result);
1953
+ reader.onerror = reject;
1954
+ reader.readAsDataURL(blob);
1955
+ });
1956
+ };
1957
+ const fetchImageViaProxy = async (url) => {
1958
+ try {
1959
+ const response = await sdk.client.fetch(
1960
+ `/admin/quote-store/logo-proxy`,
1961
+ {
1962
+ query: {
1963
+ url
1964
+ }
1965
+ }
1966
+ );
1967
+ return response.dataUrl;
1968
+ } catch (error) {
1969
+ console.error("Unable to fetch logo through proxy", error);
1970
+ return void 0;
1971
+ }
1972
+ };
1973
+ const imageUrlToBase64 = async (url) => {
1974
+ if (!url) {
1975
+ return "";
1976
+ }
1977
+ if (url.startsWith("data:")) {
1978
+ return url;
1979
+ }
1980
+ try {
1981
+ return await fetchImageAsDataUrl(url);
1982
+ } catch (error) {
1983
+ const proxied = await fetchImageViaProxy(url);
1984
+ if (proxied) {
1985
+ return proxied;
1986
+ }
1987
+ throw error;
1988
+ }
1953
1989
  };
1954
1990
  const colors = {
1955
1991
  primary: "#4169e1",
@@ -1961,6 +1997,14 @@ const useQuotePdf = () => {
1961
1997
  const [pdfUrl, setPdfUrl] = react.useState(void 0);
1962
1998
  const generatePdf = async (data) => {
1963
1999
  const { companyInfo, clientInfo, quotation, items, totals, note } = data;
2000
+ let logoDataUrl = "";
2001
+ if (companyInfo.logoUrl) {
2002
+ try {
2003
+ logoDataUrl = await imageUrlToBase64(companyInfo.logoUrl);
2004
+ } catch (error) {
2005
+ console.warn("Unable to load logo for quote PDF", error);
2006
+ }
2007
+ }
1964
2008
  const formatAddress = (info) => [
1965
2009
  { text: info.name, bold: true },
1966
2010
  info.address1,
@@ -1971,15 +2015,22 @@ const useQuotePdf = () => {
1971
2015
  info.website ? `Website: ${info.website}` : "",
1972
2016
  info.taxId ? `Tax ID: ${info.taxId}` : ""
1973
2017
  ].filter(Boolean);
2018
+ const horizontalMargin = cmToPt(3.1);
2019
+ const verticalMargin = 40;
1974
2020
  const docDefinition = {
1975
2021
  pageSize: "A4",
1976
- pageMargins: [cmToPt(3.1), 40, 40, 40],
2022
+ pageMargins: [
2023
+ horizontalMargin,
2024
+ verticalMargin,
2025
+ horizontalMargin,
2026
+ verticalMargin
2027
+ ],
1977
2028
  defaultStyle: {
1978
2029
  font: "Sarabun",
1979
2030
  fontSize: 10
1980
2031
  },
1981
2032
  images: {
1982
- logoUrl: data.companyInfo.logoUrl ?? ""
2033
+ logoUrl: logoDataUrl
1983
2034
  },
1984
2035
  content: [
1985
2036
  // Issue Company Info and Logo
@@ -1997,6 +2048,13 @@ const useQuotePdf = () => {
1997
2048
  ]
1998
2049
  },
1999
2050
  { text: "\n" },
2051
+ {
2052
+ text: "Quotation / ใบเสนอราคา",
2053
+ alignment: "center",
2054
+ fontSize: 16,
2055
+ bold: true
2056
+ },
2057
+ { text: "\n" },
2000
2058
  // Quotation To
2001
2059
  {
2002
2060
  table: {
@@ -2252,13 +2310,21 @@ const useQuotePdf = () => {
2252
2310
  };
2253
2311
  const imagePromises = [];
2254
2312
  Object.entries(docDefinition.images ?? {}).forEach(([key, value]) => {
2255
- if (typeof value === "string") {
2313
+ if (typeof value === "string" && value) {
2256
2314
  imagePromises.push(
2257
- imageUrlToBase64(value).then((data2) => {
2258
- if (docDefinition.images) {
2259
- docDefinition.images[key] = data2;
2315
+ (async () => {
2316
+ try {
2317
+ const data2 = await imageUrlToBase64(value);
2318
+ if (docDefinition.images) {
2319
+ docDefinition.images[key] = data2;
2320
+ }
2321
+ } catch (error) {
2322
+ console.warn(`Failed to load image for ${key}`, error);
2323
+ if (docDefinition.images) {
2324
+ delete docDefinition.images[key];
2325
+ }
2260
2326
  }
2261
- })
2327
+ })()
2262
2328
  );
2263
2329
  }
2264
2330
  });
@@ -1937,15 +1937,51 @@ pdfMake.fonts = {
1937
1937
  const cmToPt = (cm) => {
1938
1938
  return cm * 28.35;
1939
1939
  };
1940
- const imageUrlToBase64 = (url) => {
1941
- return fetch(url).then((response) => response.blob()).then(
1942
- (blob) => new Promise((resolve, reject) => {
1943
- const reader = new FileReader();
1944
- reader.onloadend = () => resolve(reader.result);
1945
- reader.onerror = reject;
1946
- reader.readAsDataURL(blob);
1947
- })
1948
- );
1940
+ const fetchImageAsDataUrl = async (url) => {
1941
+ const response = await fetch(url);
1942
+ if (!response.ok) {
1943
+ throw new Error(`Failed to fetch image (${response.status})`);
1944
+ }
1945
+ const blob = await response.blob();
1946
+ return await new Promise((resolve, reject) => {
1947
+ const reader = new FileReader();
1948
+ reader.onloadend = () => resolve(reader.result);
1949
+ reader.onerror = reject;
1950
+ reader.readAsDataURL(blob);
1951
+ });
1952
+ };
1953
+ const fetchImageViaProxy = async (url) => {
1954
+ try {
1955
+ const response = await sdk.client.fetch(
1956
+ `/admin/quote-store/logo-proxy`,
1957
+ {
1958
+ query: {
1959
+ url
1960
+ }
1961
+ }
1962
+ );
1963
+ return response.dataUrl;
1964
+ } catch (error) {
1965
+ console.error("Unable to fetch logo through proxy", error);
1966
+ return void 0;
1967
+ }
1968
+ };
1969
+ const imageUrlToBase64 = async (url) => {
1970
+ if (!url) {
1971
+ return "";
1972
+ }
1973
+ if (url.startsWith("data:")) {
1974
+ return url;
1975
+ }
1976
+ try {
1977
+ return await fetchImageAsDataUrl(url);
1978
+ } catch (error) {
1979
+ const proxied = await fetchImageViaProxy(url);
1980
+ if (proxied) {
1981
+ return proxied;
1982
+ }
1983
+ throw error;
1984
+ }
1949
1985
  };
1950
1986
  const colors = {
1951
1987
  primary: "#4169e1",
@@ -1957,6 +1993,14 @@ const useQuotePdf = () => {
1957
1993
  const [pdfUrl, setPdfUrl] = useState(void 0);
1958
1994
  const generatePdf = async (data) => {
1959
1995
  const { companyInfo, clientInfo, quotation, items, totals, note } = data;
1996
+ let logoDataUrl = "";
1997
+ if (companyInfo.logoUrl) {
1998
+ try {
1999
+ logoDataUrl = await imageUrlToBase64(companyInfo.logoUrl);
2000
+ } catch (error) {
2001
+ console.warn("Unable to load logo for quote PDF", error);
2002
+ }
2003
+ }
1960
2004
  const formatAddress = (info) => [
1961
2005
  { text: info.name, bold: true },
1962
2006
  info.address1,
@@ -1967,15 +2011,22 @@ const useQuotePdf = () => {
1967
2011
  info.website ? `Website: ${info.website}` : "",
1968
2012
  info.taxId ? `Tax ID: ${info.taxId}` : ""
1969
2013
  ].filter(Boolean);
2014
+ const horizontalMargin = cmToPt(3.1);
2015
+ const verticalMargin = 40;
1970
2016
  const docDefinition = {
1971
2017
  pageSize: "A4",
1972
- pageMargins: [cmToPt(3.1), 40, 40, 40],
2018
+ pageMargins: [
2019
+ horizontalMargin,
2020
+ verticalMargin,
2021
+ horizontalMargin,
2022
+ verticalMargin
2023
+ ],
1973
2024
  defaultStyle: {
1974
2025
  font: "Sarabun",
1975
2026
  fontSize: 10
1976
2027
  },
1977
2028
  images: {
1978
- logoUrl: data.companyInfo.logoUrl ?? ""
2029
+ logoUrl: logoDataUrl
1979
2030
  },
1980
2031
  content: [
1981
2032
  // Issue Company Info and Logo
@@ -1993,6 +2044,13 @@ const useQuotePdf = () => {
1993
2044
  ]
1994
2045
  },
1995
2046
  { text: "\n" },
2047
+ {
2048
+ text: "Quotation / ใบเสนอราคา",
2049
+ alignment: "center",
2050
+ fontSize: 16,
2051
+ bold: true
2052
+ },
2053
+ { text: "\n" },
1996
2054
  // Quotation To
1997
2055
  {
1998
2056
  table: {
@@ -2248,13 +2306,21 @@ const useQuotePdf = () => {
2248
2306
  };
2249
2307
  const imagePromises = [];
2250
2308
  Object.entries(docDefinition.images ?? {}).forEach(([key, value]) => {
2251
- if (typeof value === "string") {
2309
+ if (typeof value === "string" && value) {
2252
2310
  imagePromises.push(
2253
- imageUrlToBase64(value).then((data2) => {
2254
- if (docDefinition.images) {
2255
- docDefinition.images[key] = data2;
2311
+ (async () => {
2312
+ try {
2313
+ const data2 = await imageUrlToBase64(value);
2314
+ if (docDefinition.images) {
2315
+ docDefinition.images[key] = data2;
2316
+ }
2317
+ } catch (error) {
2318
+ console.warn(`Failed to load image for ${key}`, error);
2319
+ if (docDefinition.images) {
2320
+ delete docDefinition.images[key];
2321
+ }
2256
2322
  }
2257
- })
2323
+ })()
2258
2324
  );
2259
2325
  }
2260
2326
  });
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const quote_1 = require("../../../../modules/quote");
6
+ const normalizeUrl = (url) => {
7
+ return new URL(url).toString();
8
+ };
9
+ const getQueryValue = (value) => {
10
+ if (!value) {
11
+ return undefined;
12
+ }
13
+ return Array.isArray(value) ? value[0] : value;
14
+ };
15
+ const GET = async (req, res) => {
16
+ try {
17
+ const { url } = (req.query ?? {});
18
+ const requestedUrl = getQueryValue(url);
19
+ if (!requestedUrl) {
20
+ return res.status(400).json({
21
+ error: "The 'url' query parameter is required.",
22
+ });
23
+ }
24
+ let normalizedRequestedUrl;
25
+ try {
26
+ normalizedRequestedUrl = normalizeUrl(requestedUrl);
27
+ }
28
+ catch {
29
+ return res.status(400).json({
30
+ error: "Invalid logo URL.",
31
+ });
32
+ }
33
+ const parsed = new URL(normalizedRequestedUrl);
34
+ if (!["http:", "https:"].includes(parsed.protocol)) {
35
+ return res.status(400).json({
36
+ error: "Only http/https schemes are supported for the logo URL.",
37
+ });
38
+ }
39
+ const storeService = req.scope.resolve(utils_1.Modules.STORE);
40
+ const stores = await storeService.listStores();
41
+ if (!stores.length) {
42
+ return res.status(404).json({
43
+ error: "No store configured.",
44
+ });
45
+ }
46
+ const storeId = stores[0].id;
47
+ const quoteModuleService = req.scope.resolve(quote_1.QUOTE_MODULE);
48
+ const [storeDetails] = await quoteModuleService.listQuoteStoreDetails({
49
+ store_id: storeId,
50
+ });
51
+ if (!storeDetails?.logoUrl) {
52
+ return res.status(404).json({
53
+ error: "Store logo URL is not configured.",
54
+ });
55
+ }
56
+ let normalizedConfiguredUrl;
57
+ try {
58
+ normalizedConfiguredUrl = normalizeUrl(storeDetails.logoUrl.trim());
59
+ }
60
+ catch {
61
+ return res.status(400).json({
62
+ error: "Configured store logo URL is invalid.",
63
+ });
64
+ }
65
+ if (normalizedConfiguredUrl !== normalizedRequestedUrl) {
66
+ return res.status(403).json({
67
+ error: "Requested URL does not match the configured store logo.",
68
+ });
69
+ }
70
+ const response = await fetch(normalizedRequestedUrl);
71
+ if (!response.ok) {
72
+ return res.status(response.status).json({
73
+ error: `Unable to fetch logo (${response.status} ${response.statusText}).`,
74
+ });
75
+ }
76
+ const contentType = response.headers.get("content-type") || "application/octet-stream";
77
+ const buffer = Buffer.from(await response.arrayBuffer());
78
+ const dataUrl = `data:${contentType};base64,${buffer.toString("base64")}`;
79
+ return res.status(200).json({
80
+ dataUrl,
81
+ contentType,
82
+ });
83
+ }
84
+ catch (error) {
85
+ return res.status(500).json({
86
+ error: error instanceof Error
87
+ ? error.message
88
+ : "Unexpected error fetching logo.",
89
+ });
90
+ }
91
+ };
92
+ exports.GET = GET;
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3F1b3RlLXN0b3JlL2xvZ28tcHJveHkvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQW9EO0FBQ3BELHFEQUF5RDtBQU96RCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQ25DLE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFvQyxFQUFFLEVBQUU7SUFDN0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDakQsQ0FBQyxDQUFDO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFnQixDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV4QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDMUIsS0FBSyxFQUFFLHdDQUF3QzthQUNoRCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxzQkFBOEIsQ0FBQztRQUNuQyxJQUFJLENBQUM7WUFDSCxzQkFBc0IsR0FBRyxZQUFZLENB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
@@ -26,5 +26,9 @@ exports.merchantSendQuoteWorkflow = (0, workflows_sdk_1.createWorkflow)("merchan
26
26
  status: quote_status_enum_1.QuoteStatus.PENDING_CUSTOMER,
27
27
  },
28
28
  ]);
29
+ (0, core_flows_1.emitEventStep)({
30
+ eventName: "quote.sent",
31
+ data: { id: input.quote_id },
32
+ });
29
33
  });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2hhbnQtc2VuZC1xdW90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbWVyY2hhbnQtc2VuZC1xdW90ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBZ0U7QUFDaEUscUVBQW1FO0FBQ25FLHlEQUF5RDtBQUN6RCxxRkFBK0U7QUFDL0UsZ0ZBQXVFO0FBTTFELFFBQUEseUJBQXlCLEdBQUcsSUFBQSw4QkFBYyxFQUNyRCw4QkFBOEIsRUFDOUIsQ0FBQyxLQUFvQixFQUFFLEVBQUU7SUFDdkIsYUFBYTtJQUNiLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN6QyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7UUFDeEIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDL0IsT0FBTyxFQUFFO1lBQ1Asa0JBQWtCLEVBQUUsSUFBSTtTQUN6QjtLQUNGLENBQUMsQ0FBQztJQUVILElBQUEsc0RBQXdCLEVBQUM7UUFDdkIsYUFBYTtRQUNiLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQ2pCLENBQUMsQ0FBQztJQUVILElBQUEsZ0NBQWdCLEVBQUM7UUFDZjtZQUNFLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUNsQixNQUFNLEVBQUUsK0JBQVcsQ0FBQyxnQkFBZ0I7U0FDckM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2hhbnQtc2VuZC1xdW90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbWVyY2hhbnQtc2VuZC1xdW90ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBK0U7QUFDL0UscUVBQW1FO0FBQ25FLHlEQUF5RDtBQUN6RCxxRkFBK0U7QUFDL0UsZ0ZBQXVFO0FBTTFELFFBQUEseUJBQXlCLEdBQUcsSUFBQSw4QkFBYyxFQUNyRCw4QkFBOEIsRUFDOUIsQ0FBQyxLQUFvQixFQUFFLEVBQUU7SUFDdkIsYUFBYTtJQUNiLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN6QyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7UUFDeEIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDL0IsT0FBTyxFQUFFO1lBQ1Asa0JBQWtCLEVBQUUsSUFBSTtTQUN6QjtLQUNGLENBQUMsQ0FBQztJQUVILElBQUEsc0RBQXdCLEVBQUM7UUFDdkIsYUFBYTtRQUNiLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQ2pCLENBQUMsQ0FBQztJQUVILElBQUEsZ0NBQWdCLEVBQUM7UUFDZjtZQUNFLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUNsQixNQUFNLEVBQUUsK0JBQVcsQ0FBQyxnQkFBZ0I7U0FDckM7S0FDRixDQUFDLENBQUM7SUFFSCxJQUFBLDBCQUFhLEVBQUM7UUFDWixTQUFTLEVBQUUsWUFBWTtRQUN2QixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtLQUM3QixDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodashventure/medusa-quotation",
3
- "version": "1.5.5",
3
+ "version": "1.5.6",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",
@@ -29,27 +29,27 @@
29
29
  "prepublishOnly": "medusa plugin:build"
30
30
  },
31
31
  "devDependencies": {
32
- "@medusajs/admin-sdk": "2.11.2",
33
- "@medusajs/admin-shared": "2.11.2",
34
- "@medusajs/cli": "^2.11.2",
35
- "@medusajs/framework": "2.11.2",
36
- "@medusajs/icons": "^2.11.2",
37
- "@medusajs/medusa": "2.11.2",
38
- "@medusajs/test-utils": "2.11.2",
39
- "@medusajs/ui": "4.0.4",
40
- "@swc/core": "1.5.7",
41
- "@types/lodash": "^4",
42
- "@types/node": "^20.0.0",
43
- "@types/pdfmake": "^0",
44
- "@types/react": "^18.3.2",
45
- "@types/react-dom": "^18.2.25",
32
+ "@medusajs/admin-sdk": "2.11.3",
33
+ "@medusajs/admin-shared": "2.11.3",
34
+ "@medusajs/cli": "^2.11.3",
35
+ "@medusajs/framework": "2.11.3",
36
+ "@medusajs/icons": "^2.11.3",
37
+ "@medusajs/medusa": "2.11.3",
38
+ "@medusajs/test-utils": "2.11.3",
39
+ "@medusajs/ui": "4.0.27",
40
+ "@swc/core": "1.15.0",
41
+ "@types/lodash": "^4.17.20",
42
+ "@types/node": "^24.10.0",
43
+ "@types/pdfmake": "^0.2.12",
44
+ "@types/react": "^19.2.2",
45
+ "@types/react-dom": "^19.2.2",
46
46
  "prop-types": "^15.8.1",
47
- "react": "^18.2.0",
48
- "react-dom": "^18.2.0",
47
+ "react": "^19.2.0",
48
+ "react-dom": "^19.2.0",
49
49
  "ts-node": "^10.9.2",
50
- "typescript": "^5.6.2",
51
- "vite": "^5.2.11",
52
- "yalc": "^1.0.0-pre.53"
50
+ "typescript": "^5.9.3",
51
+ "vite": "^7.2.2",
52
+ "yalc": "1.0.0-pre.53"
53
53
  },
54
54
  "peerDependencies": {
55
55
  "@hookform/resolvers": "*",
@@ -73,6 +73,6 @@
73
73
  "node": ">=20"
74
74
  },
75
75
  "dependencies": {
76
- "pdfmake": "^0.2.18"
76
+ "pdfmake": "^0.2.20"
77
77
  }
78
78
  }