medusa-storefront-data 1.0.0 → 2.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.
Files changed (110) hide show
  1. package/dist/cookies.d.ts +2 -2
  2. package/dist/cookies.d.ts.map +1 -1
  3. package/dist/edge.d.ts +3 -0
  4. package/dist/edge.d.ts.map +1 -0
  5. package/dist/edge.js +1 -0
  6. package/dist/middleware.d.ts +3 -0
  7. package/dist/middleware.d.ts.map +1 -0
  8. package/dist/middleware.js +1 -0
  9. package/dist/server/cart.d.ts +9 -5
  10. package/dist/server/cart.d.ts.map +1 -1
  11. package/dist/server/cart.js +164 -194
  12. package/dist/server/categories.d.ts +3 -2
  13. package/dist/server/categories.d.ts.map +1 -1
  14. package/dist/server/categories.js +14 -51
  15. package/dist/server/collections.d.ts.map +1 -1
  16. package/dist/server/collections.js +16 -61
  17. package/dist/server/contact.d.ts +34 -0
  18. package/dist/server/contact.d.ts.map +1 -0
  19. package/dist/server/contact.js +57 -0
  20. package/dist/server/customer.d.ts +7 -7
  21. package/dist/server/customer.d.ts.map +1 -1
  22. package/dist/server/customer.js +96 -145
  23. package/dist/server/dynamic-config.d.ts.map +1 -1
  24. package/dist/server/dynamic-config.js +38 -12
  25. package/dist/server/fulfillment.d.ts +4 -3
  26. package/dist/server/fulfillment.d.ts.map +1 -1
  27. package/dist/server/fulfillment.js +16 -41
  28. package/dist/server/guest.d.ts +35 -63
  29. package/dist/server/guest.d.ts.map +1 -1
  30. package/dist/server/guest.js +81 -202
  31. package/dist/server/home.d.ts +15 -0
  32. package/dist/server/home.d.ts.map +1 -0
  33. package/dist/server/home.js +45 -0
  34. package/dist/server/index.d.ts +2 -0
  35. package/dist/server/index.d.ts.map +1 -1
  36. package/dist/server/index.js +2 -0
  37. package/dist/server/locale-actions.d.ts +1 -1
  38. package/dist/server/locale-actions.d.ts.map +1 -1
  39. package/dist/server/locale-actions.js +8 -13
  40. package/dist/server/locales.d.ts +2 -4
  41. package/dist/server/locales.d.ts.map +1 -1
  42. package/dist/server/locales.js +5 -13
  43. package/dist/server/orders.d.ts +5 -11
  44. package/dist/server/orders.d.ts.map +1 -1
  45. package/dist/server/orders.js +126 -267
  46. package/dist/server/payment-details.d.ts +4 -4
  47. package/dist/server/payment-details.d.ts.map +1 -1
  48. package/dist/server/payment-details.js +17 -42
  49. package/dist/server/payment.d.ts +2 -1
  50. package/dist/server/payment.d.ts.map +1 -1
  51. package/dist/server/payment.js +9 -21
  52. package/dist/server/pincode.d.ts +7 -0
  53. package/dist/server/pincode.d.ts.map +1 -0
  54. package/dist/server/pincode.js +30 -0
  55. package/dist/server/products.d.ts +15 -19
  56. package/dist/server/products.d.ts.map +1 -1
  57. package/dist/server/products.js +47 -178
  58. package/dist/server/regions.d.ts +1 -1
  59. package/dist/server/regions.d.ts.map +1 -1
  60. package/dist/server/regions.js +6 -3
  61. package/dist/server/returns.d.ts +4 -4
  62. package/dist/server/returns.d.ts.map +1 -1
  63. package/dist/server/returns.js +50 -154
  64. package/dist/server/swaps.d.ts +7 -6
  65. package/dist/server/swaps.d.ts.map +1 -1
  66. package/dist/server/swaps.js +23 -57
  67. package/dist/server/variants.d.ts.map +1 -1
  68. package/dist/server/variants.js +11 -22
  69. package/dist/server/wishlist.d.ts +11 -0
  70. package/dist/server/wishlist.d.ts.map +1 -0
  71. package/dist/server/wishlist.js +49 -0
  72. package/dist/util/get-locale-header.d.ts +1 -1
  73. package/dist/util/revalidate-cart.d.ts +2 -0
  74. package/dist/util/revalidate-cart.d.ts.map +1 -0
  75. package/dist/util/revalidate-cart.js +8 -0
  76. package/dist/util/sort-products.d.ts +3 -0
  77. package/dist/util/sort-products.d.ts.map +1 -0
  78. package/dist/util/sort-products.js +1 -0
  79. package/dist/util/store-client.d.ts +13 -0
  80. package/dist/util/store-client.d.ts.map +1 -0
  81. package/dist/util/store-client.js +77 -0
  82. package/package.json +95 -37
  83. package/src/edge.ts +2 -0
  84. package/src/middleware.ts +2 -2
  85. package/src/server/cart.ts +214 -267
  86. package/src/server/categories.ts +19 -72
  87. package/src/server/collections.ts +25 -82
  88. package/src/server/contact.ts +92 -0
  89. package/src/server/customer.ts +146 -190
  90. package/src/server/dynamic-config.ts +38 -12
  91. package/src/server/fulfillment.ts +27 -53
  92. package/src/server/guest.ts +159 -276
  93. package/src/server/home.ts +68 -0
  94. package/src/server/index.ts +1 -0
  95. package/src/server/locale-actions.ts +8 -15
  96. package/src/server/locales.ts +6 -18
  97. package/src/server/orders.ts +167 -337
  98. package/src/server/payment-details.ts +24 -52
  99. package/src/server/payment.ts +8 -28
  100. package/src/server/pincode.ts +49 -0
  101. package/src/server/products.ts +72 -235
  102. package/src/server/regions.ts +10 -6
  103. package/src/server/returns.ts +75 -189
  104. package/src/server/swaps.ts +94 -123
  105. package/src/server/variants.ts +9 -28
  106. package/src/server/wishlist.ts +1 -1
  107. package/src/util/revalidate-cart.ts +10 -0
  108. package/src/util/sort-products.ts +2 -47
  109. package/src/util/store-client.ts +93 -0
  110. package/src/services/middleware.ts +0 -54
@@ -1,34 +1,13 @@
1
- import { sdk } from "../config";
2
- import { getCacheOptions } from "../cookies";
1
+ import { medusaCategoryByHandle, medusaCategoryList } from "medusa-services/categories";
2
+ import { getStoreClientOptions } from "../util/store-client";
3
3
  export const listCategories = async (query) => {
4
4
  try {
5
- const next = {
6
- ...(await getCacheOptions("categories")),
7
- };
8
- const limit = query?.limit || 100;
9
- return sdk.client
10
- .fetch("/store/product-categories", {
11
- query: {
12
- fields: "*category_children, *products, *parent_category, *parent_category.parent_category",
13
- limit,
14
- ...query,
15
- },
16
- next: {
17
- ...next,
18
- revalidate: 0,
19
- },
20
- cache: "no-store",
21
- })
22
- .then(({ product_categories }) => product_categories)
23
- .catch((error) => {
24
- if (process.env.NODE_ENV === 'production' || process.env.CI) {
25
- return [];
26
- }
27
- throw error;
28
- });
5
+ const options = await getStoreClientOptions();
6
+ const { product_categories } = await medusaCategoryList(options, query);
7
+ return product_categories;
29
8
  }
30
9
  catch (error) {
31
- if (process.env.NODE_ENV === 'production' || process.env.CI) {
10
+ if (process.env.NODE_ENV === "production" || process.env.CI) {
32
11
  return [];
33
12
  }
34
13
  throw error;
@@ -38,34 +17,18 @@ export const getCategoryByHandle = async (categoryHandle) => {
38
17
  try {
39
18
  const handle = `${categoryHandle.join("/")}`;
40
19
  const decodedHandle = decodeURIComponent(handle);
41
- const next = {
42
- ...(await getCacheOptions("categories")),
43
- };
44
- const result = await sdk.client
45
- .fetch(`/store/product-categories`, {
46
- query: {
47
- handle: [decodedHandle],
48
- },
49
- next: {
50
- ...next,
51
- revalidate: 0,
52
- },
53
- cache: "no-store",
54
- });
55
- if (result.product_categories && result.product_categories.length > 0) {
56
- return result.product_categories[0];
20
+ const options = await getStoreClientOptions();
21
+ const matched = await medusaCategoryByHandle(decodedHandle, options);
22
+ if (matched) {
23
+ return matched;
57
24
  }
58
- // Fallback: Fetch all categories and find manually
59
- const allCategories = await listCategories({ limit: "200" });
60
- const matchedCategory = allCategories.find(c => c.handle === decodedHandle ||
25
+ const allCategories = await listCategories({ limit: 200 });
26
+ const fallback = allCategories.find((c) => c.handle === decodedHandle ||
61
27
  c.handle === handle ||
62
28
  c.handle?.replace(/-/g, " ") === decodedHandle);
63
- if (matchedCategory) {
64
- return matchedCategory;
65
- }
66
- return null;
29
+ return fallback ?? null;
67
30
  }
68
- catch (error) {
31
+ catch {
69
32
  return null;
70
33
  }
71
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/server/collections.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAG3C,eAAO,MAAM,kBAAkB,GAAU,IAAI,MAAM,uCAiBlD,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,cAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,KACvC,OAAO,CAAC;IAAE,WAAW,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkCrE,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,QAAQ,MAAM,KACb,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CA+C1C,CAAA"}
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/server/collections.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,eAAO,MAAM,kBAAkB,GAAU,IAAI,MAAM,uCAIlD,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,cAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,KACvC,OAAO,CAAC;IAAE,WAAW,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAWrE,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,QAAQ,MAAM,KACb,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAsB1C,CAAA"}
@@ -1,46 +1,19 @@
1
1
  "use server";
2
- import { sdk } from "../config";
3
- import { getCacheOptions } from "../cookies";
2
+ import { medusaCollectionByHandle, medusaCollectionList, medusaCollectionRetrieve, } from "medusa-services/collections";
3
+ import { getStoreClientOptions } from "../util/store-client";
4
4
  export const retrieveCollection = async (id) => {
5
- const next = {
6
- ...(await getCacheOptions("collections")),
7
- };
8
- return sdk.client
9
- .fetch(`/store/collections/${id}`, {
10
- next: {
11
- ...next,
12
- revalidate: 0,
13
- },
14
- cache: "no-store",
15
- })
16
- .then(({ collection }) => collection);
5
+ const options = await getStoreClientOptions();
6
+ const { collection } = await medusaCollectionRetrieve(id, options);
7
+ return collection;
17
8
  };
18
9
  export const listCollections = async (queryParams = {}) => {
19
10
  try {
20
- const next = {
21
- ...(await getCacheOptions("collections")),
22
- };
23
- queryParams.limit = queryParams.limit || "100";
24
- queryParams.offset = queryParams.offset || "0";
25
- return sdk.client
26
- .fetch("/store/collections", {
27
- query: queryParams,
28
- next: {
29
- ...next,
30
- revalidate: 0,
31
- },
32
- cache: "no-store",
33
- })
34
- .then(({ collections }) => ({ collections, count: collections.length }))
35
- .catch((error) => {
36
- if (process.env.NODE_ENV === 'production' || process.env.CI) {
37
- return { collections: [], count: 0 };
38
- }
39
- throw error;
40
- });
11
+ const options = await getStoreClientOptions();
12
+ const { collections } = await medusaCollectionList(options, queryParams);
13
+ return { collections: collections, count: collections.length };
41
14
  }
42
15
  catch (error) {
43
- if (process.env.NODE_ENV === 'production' || process.env.CI) {
16
+ if (process.env.NODE_ENV === "production" || process.env.CI) {
44
17
  return { collections: [], count: 0 };
45
18
  }
46
19
  throw error;
@@ -48,37 +21,19 @@ export const listCollections = async (queryParams = {}) => {
48
21
  };
49
22
  export const getCollectionByHandle = async (handle) => {
50
23
  try {
51
- const next = {
52
- ...(await getCacheOptions("collections")),
53
- };
54
- // Ensure handle is decoded
55
24
  const decodedHandle = decodeURIComponent(handle);
56
- // Try array-based handle filter (standard for v2)
57
- const result = await sdk.client
58
- .fetch(`/store/collections`, {
59
- query: {
60
- handle: [decodedHandle],
61
- },
62
- next: {
63
- ...next,
64
- revalidate: 0,
65
- },
66
- cache: "no-store",
67
- });
68
- if (result.collections && result.collections.length > 0) {
69
- return result.collections[0];
25
+ const options = await getStoreClientOptions();
26
+ const matched = await medusaCollectionByHandle(decodedHandle, options);
27
+ if (matched) {
28
+ return matched;
70
29
  }
71
- // Fallback: Fetch all and find manually (useful for handles with spaces/special chars)
72
30
  const { collections } = await listCollections({ limit: "100" });
73
- const matchedCollection = collections.find(c => c.handle === decodedHandle ||
31
+ const fallback = collections.find((c) => c.handle === decodedHandle ||
74
32
  c.handle === handle ||
75
33
  c.handle?.replace(/-/g, " ") === decodedHandle);
76
- if (matchedCollection) {
77
- return matchedCollection;
78
- }
79
- return null;
34
+ return fallback ?? null;
80
35
  }
81
- catch (error) {
36
+ catch {
82
37
  return null;
83
38
  }
84
39
  };
@@ -0,0 +1,34 @@
1
+ export declare function submitContactRequest({ email, payload, metadata, source, }: {
2
+ email: string;
3
+ payload: {
4
+ full_name?: string;
5
+ phone?: string;
6
+ topic?: string;
7
+ subject?: string;
8
+ message: string;
9
+ };
10
+ metadata?: Record<string, unknown>;
11
+ source?: string;
12
+ }): Promise<{
13
+ success: false;
14
+ error: string;
15
+ data?: undefined;
16
+ } | {
17
+ success: true;
18
+ data: any;
19
+ error?: undefined;
20
+ }>;
21
+ export declare function subscribeToNewsletter({ email, status, source, }: {
22
+ email: string;
23
+ status?: "subscribed" | "unsubscribed";
24
+ source?: string;
25
+ }): Promise<{
26
+ success: false;
27
+ message: string;
28
+ data?: undefined;
29
+ } | {
30
+ success: true;
31
+ message: string;
32
+ data: any;
33
+ }>;
34
+ //# sourceMappingURL=contact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact.d.ts","sourceRoot":"","sources":["../../src/server/contact.ts"],"names":[],"mappings":"AAgBA,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAqB,GACtB,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;;;;;;;;GAsBA;AAED,wBAAsB,qBAAqB,CAAC,EAC1C,KAAK,EACL,MAAqB,EACrB,MAAiB,GAClB,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,YAAY,GAAG,cAAc,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;;;;;;;;GA2BA"}
@@ -0,0 +1,57 @@
1
+ "use server";
2
+ import { sendContactRequest, subscribeToNewsletter as subscribeNewsletterApi, } from "medusa-services/contact-action";
3
+ function getStoreConfig() {
4
+ const backendUrl = process.env.MEDUSA_BACKEND_URL ||
5
+ process.env.NEXT_PUBLIC_MEDUSA_BACKEND_URL ||
6
+ "http://localhost:9000";
7
+ const publishableApiKey = process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY || "";
8
+ return { backendUrl, publishableApiKey };
9
+ }
10
+ export async function submitContactRequest({ email, payload, metadata, source = "storefront", }) {
11
+ try {
12
+ const { backendUrl, publishableApiKey } = getStoreConfig();
13
+ if (!publishableApiKey) {
14
+ return {
15
+ success: false,
16
+ error: "Configuration error: Publishable API key is missing.",
17
+ };
18
+ }
19
+ const data = await sendContactRequest({
20
+ backendUrl,
21
+ publishableKey: publishableApiKey,
22
+ data: { email, payload, metadata, source },
23
+ });
24
+ return { success: true, data };
25
+ }
26
+ catch (error) {
27
+ const message = error instanceof Error ? error.message : "Failed to submit contact request";
28
+ return { success: false, error: message };
29
+ }
30
+ }
31
+ export async function subscribeToNewsletter({ email, status = "subscribed", source = "footer", }) {
32
+ try {
33
+ const { backendUrl, publishableApiKey } = getStoreConfig();
34
+ if (!publishableApiKey) {
35
+ return {
36
+ success: false,
37
+ message: "Server configuration error (missing key)",
38
+ };
39
+ }
40
+ const data = await subscribeNewsletterApi({
41
+ backendUrl,
42
+ publishableApiKey,
43
+ email,
44
+ status,
45
+ source,
46
+ });
47
+ return {
48
+ success: true,
49
+ message: "Thank you for subscribing!",
50
+ data,
51
+ };
52
+ }
53
+ catch (error) {
54
+ const message = error instanceof Error ? error.message : "Something went wrong";
55
+ return { success: false, message };
56
+ }
57
+ }
@@ -2,7 +2,7 @@ import { HttpTypes } from "@medusajs/types";
2
2
  export declare const retrieveCustomer: () => Promise<HttpTypes.StoreCustomer | null>;
3
3
  export declare const updateCustomer: (body: HttpTypes.StoreUpdateCustomer) => Promise<HttpTypes.StoreCustomer>;
4
4
  export declare function signup(_currentState: unknown, formData: FormData): Promise<any>;
5
- export declare function login(_currentState: unknown, formData: FormData): Promise<any>;
5
+ export declare function login(_currentState: string | null, formData: FormData): Promise<string | null>;
6
6
  export declare function signout(countryCode: string): Promise<void>;
7
7
  export declare function transferCart(token?: string): Promise<void>;
8
8
  export declare const addCustomerAddress: (currentState: Record<string, unknown>, formData: FormData) => Promise<any>;
@@ -10,10 +10,10 @@ export declare const deleteCustomerAddress: (addressId: string) => Promise<void>
10
10
  export declare const updateCustomerAddress: (currentState: Record<string, unknown>, formData: FormData) => Promise<any>;
11
11
  export declare const setDefaultAddress: (addressId: string) => Promise<{
12
12
  success: boolean;
13
- error: any;
13
+ error: null;
14
14
  } | {
15
15
  success: boolean;
16
- error: any;
16
+ error: string;
17
17
  }>;
18
18
  export declare function initiateGoogleAuth(): Promise<{
19
19
  redirectUrl: any;
@@ -37,12 +37,12 @@ export declare function handleGoogleCallback(token: string, email?: string, firs
37
37
  success?: undefined;
38
38
  }>;
39
39
  export declare function uploadProfileImage(formData: FormData): Promise<{
40
+ success: boolean;
41
+ imageUrl: string;
42
+ error?: undefined;
43
+ } | {
40
44
  error: any;
41
45
  success?: undefined;
42
46
  imageUrl?: undefined;
43
- } | {
44
- success: boolean;
45
- imageUrl: any;
46
- error?: undefined;
47
47
  }>;
48
48
  //# sourceMappingURL=customer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../src/server/customer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAkB3C,eAAO,MAAM,gBAAgB,QACjB,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAgCjD,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,MAAM,SAAS,CAAC,mBAAmB,qCAcvE,CAAA;AAED,wBAAsB,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,gBA2CtE;AAED,wBAAsB,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,gBA8ErE;AAED,wBAAsB,OAAO,CAAC,WAAW,EAAE,MAAM,iBAgBhD;AAED,wBAAsB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,iBA4DhD;AAED,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,UAAU,QAAQ,KACjB,OAAO,CAAC,GAAG,CAoCb,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,KAChB,OAAO,CAAC,IAAI,CAed,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,cAAc,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,UAAU,QAAQ,KACjB,OAAO,CAAC,GAAG,CA2Cb,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAU,WAAW,MAAM;;;;;;EAexD,CAAA;AAED,wBAAsB,kBAAkB;;;;;;GAoDvC;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;GAsC5E;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;;GAoChH;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;GA6C1D"}
1
+ {"version":3,"file":"customer.d.ts","sourceRoot":"","sources":["../../src/server/customer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AA4C3C,eAAO,MAAM,gBAAgB,QACjB,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAkBjD,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,MAAM,SAAS,CAAC,mBAAmB,qCAYvE,CAAA;AAED,wBAAsB,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,gBAqCtE;AAED,wBAAsB,KAAK,CACzB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsExB;AAED,wBAAsB,OAAO,CAAC,WAAW,EAAE,MAAM,iBAqBhD;AAED,wBAAsB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,iBAwChD;AAED,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,UAAU,QAAQ,KACjB,OAAO,CAAC,GAAG,CAgCb,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,KAChB,OAAO,CAAC,IAAI,CAWd,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,cAAc,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,UAAU,QAAQ,KACjB,OAAO,CAAC,GAAG,CAuCb,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAU,WAAW,MAAM;;;;;;EAWxD,CAAA;AAED,wBAAsB,kBAAkB;;;;;;GA8CvC;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;GAsC5E;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;;GAmChH;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;GAyC1D"}