@ecomiq/storefront 1.1.5 → 1.1.9

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 (33) hide show
  1. package/README.md +3 -2
  2. package/dist/{chunk-QRR7EPCH.js → chunk-AKD5IDEB.js} +4 -3
  3. package/dist/chunk-AKD5IDEB.js.map +1 -0
  4. package/dist/{chunk-ZG2XUYGZ.js → chunk-EFEVJJWF.js} +85 -21
  5. package/dist/chunk-EFEVJJWF.js.map +1 -0
  6. package/dist/{chunk-3QGB55R6.js → chunk-NAJQB5DN.js} +4 -6
  7. package/dist/chunk-NAJQB5DN.js.map +1 -0
  8. package/dist/{chunk-ASFU32ZM.js → chunk-OABDGTBI.js} +25 -8
  9. package/dist/chunk-OABDGTBI.js.map +1 -0
  10. package/dist/chunks/client.d.ts +850 -132
  11. package/dist/chunks/client.js +47 -12
  12. package/dist/chunks/client.js.map +1 -1
  13. package/dist/chunks/config.js +1 -1
  14. package/dist/chunks/core-public.d.ts +2 -2
  15. package/dist/chunks/core-public.js +2 -2
  16. package/dist/chunks/server-nextjs.d.ts +3 -3
  17. package/dist/chunks/server-nextjs.js +17 -5
  18. package/dist/chunks/server-nextjs.js.map +1 -1
  19. package/dist/chunks/server-tanstack.d.ts +3 -3
  20. package/dist/chunks/server-tanstack.js +13 -7
  21. package/dist/chunks/server-tanstack.js.map +1 -1
  22. package/dist/{collection-C6bWDLiw.d.ts → collection-DU7gREXS.d.ts} +174 -38
  23. package/dist/{ecomiq-oauth-password-plugin-J5wDFqzL.d.ts → ecomiq-oauth-password-plugin-B_gMdGuc.d.ts} +32 -30
  24. package/dist/nextjs/api.js +1 -1
  25. package/dist/nextjs.server.d.ts +17 -0
  26. package/dist/tanstack/api.js +2 -2
  27. package/dist/tanstack.d.ts +0 -1
  28. package/dist/tanstack.server.d.ts +17 -0
  29. package/package.json +12 -2
  30. package/dist/chunk-3QGB55R6.js.map +0 -1
  31. package/dist/chunk-ASFU32ZM.js.map +0 -1
  32. package/dist/chunk-QRR7EPCH.js.map +0 -1
  33. package/dist/chunk-ZG2XUYGZ.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { S as StorefrontSettings, m as StorefrontProductDetail, p as StorefrontProductsParamsInput, r as StorefrontProductsResponse, e as StorefrontCollectionDetail, d as StorefrontCollection, a as StorefrontPageDetail, j as StorefrontPageListItem } from './collection-C6bWDLiw.js';
1
+ import { S as StorefrontSettings, o as StorefrontProductDetail, r as StorefrontProductsParamsInput, t as StorefrontProductsResponse, e as StorefrontCollectionDetail, d as StorefrontCollection, a as StorefrontPageDetail, l as StorefrontPageListItem } from './collection-DU7gREXS.js';
2
2
  import { z } from 'zod';
3
3
  import { BetterAuthPlugin } from 'better-auth';
4
4
 
@@ -149,7 +149,9 @@ declare function getStorefrontSettingsFromKv(hostHeader: string): Promise<Storef
149
149
  * El proxy resuelve la tienda por cookie.
150
150
  */
151
151
  declare function getStorefrontProducts(params?: StorefrontProductsParamsInput, cacheKey?: string): Promise<StorefrontProductsResponse>;
152
- declare function getStorefrontProductBySlug(slug: string): Promise<StorefrontProductDetail>;
152
+ declare function getStorefrontProductBySlug(slug: string, options?: {
153
+ cacheKey?: string;
154
+ }): Promise<StorefrontProductDetail>;
153
155
 
154
156
  /**
155
157
  * Servicio de colecciones vía proxy /api/store.
@@ -549,8 +551,8 @@ declare const CartResponseSchema: z.ZodObject<{
549
551
  thumbnail?: string | null | undefined;
550
552
  variantSku?: string | null | undefined;
551
553
  }[];
552
- currencyCode: string;
553
554
  metadata: Record<string, unknown>;
555
+ currencyCode: string;
554
556
  promotionCodes: string[];
555
557
  shippingMethods: unknown[];
556
558
  totals: {
@@ -605,6 +607,7 @@ declare const CartResponseSchema: z.ZodObject<{
605
607
  variantSku?: string | null | undefined;
606
608
  }[] | undefined;
607
609
  email?: string | null | undefined;
610
+ metadata?: Record<string, unknown> | undefined;
608
611
  firstName?: string | null | undefined;
609
612
  lastName?: string | null | undefined;
610
613
  salesChannelId?: string | null | undefined;
@@ -612,7 +615,6 @@ declare const CartResponseSchema: z.ZodObject<{
612
615
  billingAddress?: unknown;
613
616
  regionId?: string | null | undefined;
614
617
  completedAt?: string | null | undefined;
615
- metadata?: Record<string, unknown> | undefined;
616
618
  promotionCodes?: string[] | undefined;
617
619
  shippingMethods?: unknown[] | undefined;
618
620
  }>;
@@ -1654,8 +1656,8 @@ declare const CartCheckoutReadResponseSchema: z.ZodObject<{
1654
1656
  thumbnail?: string | null | undefined;
1655
1657
  variantSku?: string | null | undefined;
1656
1658
  }[];
1657
- currencyCode: string;
1658
1659
  metadata: Record<string, unknown>;
1660
+ currencyCode: string;
1659
1661
  promotionCodes: string[];
1660
1662
  shippingMethods: unknown[];
1661
1663
  totals: {
@@ -1710,6 +1712,7 @@ declare const CartCheckoutReadResponseSchema: z.ZodObject<{
1710
1712
  variantSku?: string | null | undefined;
1711
1713
  }[] | undefined;
1712
1714
  email?: string | null | undefined;
1715
+ metadata?: Record<string, unknown> | undefined;
1713
1716
  firstName?: string | null | undefined;
1714
1717
  lastName?: string | null | undefined;
1715
1718
  salesChannelId?: string | null | undefined;
@@ -1717,7 +1720,6 @@ declare const CartCheckoutReadResponseSchema: z.ZodObject<{
1717
1720
  billingAddress?: unknown;
1718
1721
  regionId?: string | null | undefined;
1719
1722
  completedAt?: string | null | undefined;
1720
- metadata?: Record<string, unknown> | undefined;
1721
1723
  promotionCodes?: string[] | undefined;
1722
1724
  shippingMethods?: unknown[] | undefined;
1723
1725
  }>;
@@ -1811,8 +1813,8 @@ declare const CartCheckoutReadResponseSchema: z.ZodObject<{
1811
1813
  thumbnail?: string | null | undefined;
1812
1814
  variantSku?: string | null | undefined;
1813
1815
  }[];
1814
- currencyCode: string;
1815
1816
  metadata: Record<string, unknown>;
1817
+ currencyCode: string;
1816
1818
  promotionCodes: string[];
1817
1819
  shippingMethods: unknown[];
1818
1820
  totals: {
@@ -1884,6 +1886,7 @@ declare const CartCheckoutReadResponseSchema: z.ZodObject<{
1884
1886
  variantSku?: string | null | undefined;
1885
1887
  }[] | undefined;
1886
1888
  email?: string | null | undefined;
1889
+ metadata?: Record<string, unknown> | undefined;
1887
1890
  firstName?: string | null | undefined;
1888
1891
  lastName?: string | null | undefined;
1889
1892
  salesChannelId?: string | null | undefined;
@@ -1891,7 +1894,6 @@ declare const CartCheckoutReadResponseSchema: z.ZodObject<{
1891
1894
  billingAddress?: unknown;
1892
1895
  regionId?: string | null | undefined;
1893
1896
  completedAt?: string | null | undefined;
1894
- metadata?: Record<string, unknown> | undefined;
1895
1897
  promotionCodes?: string[] | undefined;
1896
1898
  shippingMethods?: unknown[] | undefined;
1897
1899
  };
@@ -2195,22 +2197,22 @@ declare const CartShippingMethodPutRequestSchema: z.ZodObject<{
2195
2197
  shippingMethodId: string;
2196
2198
  rateId: string;
2197
2199
  sellerId?: string | null | undefined;
2200
+ locationId?: string | null | undefined;
2198
2201
  pickupPointId?: string | null | undefined;
2199
2202
  scheduledDate?: string | null | undefined;
2200
2203
  scheduledTime?: string | null | undefined;
2201
2204
  serviceCode?: string | null | undefined;
2202
2205
  shippingProfileId?: string | null | undefined;
2203
- locationId?: string | null | undefined;
2204
2206
  }, {
2205
2207
  shippingMethodId: string;
2206
2208
  rateId: string;
2207
2209
  sellerId?: string | null | undefined;
2210
+ locationId?: string | null | undefined;
2208
2211
  pickupPointId?: string | null | undefined;
2209
2212
  scheduledDate?: string | null | undefined;
2210
2213
  scheduledTime?: string | null | undefined;
2211
2214
  serviceCode?: string | null | undefined;
2212
2215
  shippingProfileId?: string | null | undefined;
2213
- locationId?: string | null | undefined;
2214
2216
  }>;
2215
2217
  type CartShippingMethodPutRequest = z.input<typeof CartShippingMethodPutRequestSchema>;
2216
2218
 
@@ -2453,6 +2455,7 @@ declare const CustomerMeSchema: z.ZodObject<{
2453
2455
  createdOn: string;
2454
2456
  storeId: string;
2455
2457
  email: string;
2458
+ role: string | null;
2456
2459
  firstName: string;
2457
2460
  lastName: string;
2458
2461
  countryIsoCode: string;
@@ -2461,7 +2464,6 @@ declare const CustomerMeSchema: z.ZodObject<{
2461
2464
  entityName: string | null;
2462
2465
  dateOfBirth: string | null;
2463
2466
  gender: string | null;
2464
- role: string | null;
2465
2467
  companyName: string | null;
2466
2468
  consent: boolean;
2467
2469
  userId: string;
@@ -2499,6 +2501,7 @@ declare const CustomerMeSchema: z.ZodObject<{
2499
2501
  createdOn: string;
2500
2502
  storeId: string;
2501
2503
  email: string;
2504
+ role: string | null;
2502
2505
  firstName: string;
2503
2506
  lastName: string;
2504
2507
  countryIsoCode: string;
@@ -2507,7 +2510,6 @@ declare const CustomerMeSchema: z.ZodObject<{
2507
2510
  entityName: string | null;
2508
2511
  dateOfBirth: string | null;
2509
2512
  gender: string | null;
2510
- role: string | null;
2511
2513
  companyName: string | null;
2512
2514
  consent: boolean;
2513
2515
  userId: string;
@@ -2556,6 +2558,7 @@ declare const CustomerProfilePatchSchema: z.ZodObject<{
2556
2558
  countryIsoCode: z.ZodString;
2557
2559
  }, "strip", z.ZodTypeAny, {
2558
2560
  phone: string;
2561
+ role: string | null;
2559
2562
  firstName: string;
2560
2563
  lastName: string;
2561
2564
  countryIsoCode: string;
@@ -2564,12 +2567,12 @@ declare const CustomerProfilePatchSchema: z.ZodObject<{
2564
2567
  entityName: string | null;
2565
2568
  dateOfBirth: string | null;
2566
2569
  gender: string | null;
2567
- role: string | null;
2568
2570
  companyName: string | null;
2569
2571
  consent: boolean;
2570
2572
  entityIdentificationNumber: string | null;
2571
2573
  }, {
2572
2574
  phone: string;
2575
+ role: string | null;
2573
2576
  firstName: string;
2574
2577
  lastName: string;
2575
2578
  countryIsoCode: string;
@@ -2578,7 +2581,6 @@ declare const CustomerProfilePatchSchema: z.ZodObject<{
2578
2581
  entityName: string | null;
2579
2582
  dateOfBirth: string | null;
2580
2583
  gender: string | null;
2581
- role: string | null;
2582
2584
  companyName: string | null;
2583
2585
  consent: boolean;
2584
2586
  entityIdentificationNumber: string | null;
@@ -2984,16 +2986,16 @@ declare const CustomerOrderDetailSchema: z.ZodObject<{
2984
2986
  source: z.ZodString;
2985
2987
  }, "strip", z.ZodTypeAny, {
2986
2988
  status: string;
2989
+ label: string;
2987
2990
  key: string;
2988
2991
  source: string;
2989
- label: string;
2990
2992
  occurredAt: string;
2991
2993
  description?: string | null | undefined;
2992
2994
  }, {
2993
2995
  status: string;
2996
+ label: string;
2994
2997
  key: string;
2995
2998
  source: string;
2996
- label: string;
2997
2999
  occurredAt: string;
2998
3000
  description?: string | null | undefined;
2999
3001
  }>, "many">;
@@ -3041,9 +3043,9 @@ declare const CustomerOrderDetailSchema: z.ZodObject<{
3041
3043
  }[];
3042
3044
  statusTimeline: {
3043
3045
  status: string;
3046
+ label: string;
3044
3047
  key: string;
3045
3048
  source: string;
3046
- label: string;
3047
3049
  occurredAt: string;
3048
3050
  description?: string | null | undefined;
3049
3051
  }[];
@@ -3124,9 +3126,9 @@ declare const CustomerOrderDetailSchema: z.ZodObject<{
3124
3126
  }[];
3125
3127
  statusTimeline: {
3126
3128
  status: string;
3129
+ label: string;
3127
3130
  key: string;
3128
3131
  source: string;
3129
- label: string;
3130
3132
  occurredAt: string;
3131
3133
  description?: string | null | undefined;
3132
3134
  }[];
@@ -3296,10 +3298,10 @@ declare const OrderDraftSchema: z.ZodObject<{
3296
3298
  quantity: number;
3297
3299
  unitPrice: number;
3298
3300
  requiresShipping: boolean;
3301
+ metadata: Record<string, unknown>;
3299
3302
  discount: number;
3300
3303
  tax: number;
3301
3304
  warranty: number;
3302
- metadata: Record<string, unknown>;
3303
3305
  subTotal: number;
3304
3306
  shipping: number;
3305
3307
  isTaxInclusive: boolean;
@@ -3319,11 +3321,11 @@ declare const OrderDraftSchema: z.ZodObject<{
3319
3321
  variantId?: string | null | undefined;
3320
3322
  unitPrice?: number | undefined;
3321
3323
  requiresShipping?: boolean | undefined;
3324
+ metadata?: Record<string, unknown> | undefined;
3322
3325
  discount?: number | undefined;
3323
3326
  tax?: number | undefined;
3324
3327
  warranty?: number | undefined;
3325
3328
  thumbnail?: string | null | undefined;
3326
- metadata?: Record<string, unknown> | undefined;
3327
3329
  shippingProfileId?: string | null | undefined;
3328
3330
  subtitle?: string | null | undefined;
3329
3331
  subTotal?: number | undefined;
@@ -3363,13 +3365,13 @@ declare const OrderDraftSchema: z.ZodObject<{
3363
3365
  isTaxInclusive: boolean;
3364
3366
  description?: string | null | undefined;
3365
3367
  sellerId?: string | null | undefined;
3368
+ locationId?: string | null | undefined;
3366
3369
  estimatedDays?: number | null | undefined;
3367
3370
  pickupPointId?: string | null | undefined;
3368
3371
  scheduledDate?: string | null | undefined;
3369
3372
  scheduledTime?: string | null | undefined;
3370
3373
  shippingMethodId?: string | null | undefined;
3371
3374
  shippingProfileId?: string | null | undefined;
3372
- locationId?: string | null | undefined;
3373
3375
  connectionId?: string | null | undefined;
3374
3376
  providerName?: string | null | undefined;
3375
3377
  trackingCode?: string | null | undefined;
@@ -3381,6 +3383,7 @@ declare const OrderDraftSchema: z.ZodObject<{
3381
3383
  data?: Record<string, unknown> | undefined;
3382
3384
  sellerId?: string | null | undefined;
3383
3385
  total?: number | undefined;
3386
+ locationId?: string | null | undefined;
3384
3387
  subtotal?: number | undefined;
3385
3388
  estimatedDays?: number | null | undefined;
3386
3389
  pickupPointId?: string | null | undefined;
@@ -3390,7 +3393,6 @@ declare const OrderDraftSchema: z.ZodObject<{
3390
3393
  taxTotal?: number | undefined;
3391
3394
  shippingMethodId?: string | null | undefined;
3392
3395
  shippingProfileId?: string | null | undefined;
3393
- locationId?: string | null | undefined;
3394
3396
  isTaxInclusive?: boolean | undefined;
3395
3397
  connectionId?: string | null | undefined;
3396
3398
  providerName?: string | null | undefined;
@@ -3409,10 +3411,10 @@ declare const OrderDraftSchema: z.ZodObject<{
3409
3411
  quantity: number;
3410
3412
  unitPrice: number;
3411
3413
  requiresShipping: boolean;
3414
+ metadata: Record<string, unknown>;
3412
3415
  discount: number;
3413
3416
  tax: number;
3414
3417
  warranty: number;
3415
- metadata: Record<string, unknown>;
3416
3418
  subTotal: number;
3417
3419
  shipping: number;
3418
3420
  isTaxInclusive: boolean;
@@ -3424,11 +3426,11 @@ declare const OrderDraftSchema: z.ZodObject<{
3424
3426
  subtitle?: string | null | undefined;
3425
3427
  }[];
3426
3428
  total: number;
3429
+ metadata: Record<string, unknown>;
3427
3430
  currencyCode: string;
3428
3431
  discount: number;
3429
3432
  tax: number;
3430
3433
  warranty: number;
3431
- metadata: Record<string, unknown>;
3432
3434
  shippingMethods: {
3433
3435
  name: string;
3434
3436
  id: string;
@@ -3440,13 +3442,13 @@ declare const OrderDraftSchema: z.ZodObject<{
3440
3442
  isTaxInclusive: boolean;
3441
3443
  description?: string | null | undefined;
3442
3444
  sellerId?: string | null | undefined;
3445
+ locationId?: string | null | undefined;
3443
3446
  estimatedDays?: number | null | undefined;
3444
3447
  pickupPointId?: string | null | undefined;
3445
3448
  scheduledDate?: string | null | undefined;
3446
3449
  scheduledTime?: string | null | undefined;
3447
3450
  shippingMethodId?: string | null | undefined;
3448
3451
  shippingProfileId?: string | null | undefined;
3449
- locationId?: string | null | undefined;
3450
3452
  connectionId?: string | null | undefined;
3451
3453
  providerName?: string | null | undefined;
3452
3454
  trackingCode?: string | null | undefined;
@@ -3462,8 +3464,8 @@ declare const OrderDraftSchema: z.ZodObject<{
3462
3464
  updatedOn?: string | null | undefined;
3463
3465
  createdOn?: string | undefined;
3464
3466
  storeId?: string | undefined;
3465
- source?: string | null | undefined;
3466
3467
  email?: string | null | undefined;
3468
+ source?: string | null | undefined;
3467
3469
  firstName?: string | null | undefined;
3468
3470
  lastName?: string | null | undefined;
3469
3471
  shippingAddress?: z.objectOutputType<{
@@ -3524,11 +3526,11 @@ declare const OrderDraftSchema: z.ZodObject<{
3524
3526
  variantId?: string | null | undefined;
3525
3527
  unitPrice?: number | undefined;
3526
3528
  requiresShipping?: boolean | undefined;
3529
+ metadata?: Record<string, unknown> | undefined;
3527
3530
  discount?: number | undefined;
3528
3531
  tax?: number | undefined;
3529
3532
  warranty?: number | undefined;
3530
3533
  thumbnail?: string | null | undefined;
3531
- metadata?: Record<string, unknown> | undefined;
3532
3534
  shippingProfileId?: string | null | undefined;
3533
3535
  subtitle?: string | null | undefined;
3534
3536
  subTotal?: number | undefined;
@@ -3536,8 +3538,9 @@ declare const OrderDraftSchema: z.ZodObject<{
3536
3538
  isTaxInclusive?: boolean | undefined;
3537
3539
  }[] | undefined;
3538
3540
  total?: number | undefined;
3539
- source?: string | null | undefined;
3540
3541
  email?: string | null | undefined;
3542
+ source?: string | null | undefined;
3543
+ metadata?: Record<string, unknown> | undefined;
3541
3544
  firstName?: string | null | undefined;
3542
3545
  lastName?: string | null | undefined;
3543
3546
  currencyCode?: string | undefined;
@@ -3566,7 +3569,6 @@ declare const OrderDraftSchema: z.ZodObject<{
3566
3569
  discount?: number | undefined;
3567
3570
  tax?: number | undefined;
3568
3571
  warranty?: number | undefined;
3569
- metadata?: Record<string, unknown> | undefined;
3570
3572
  shippingMethods?: {
3571
3573
  id: string;
3572
3574
  name?: string | undefined;
@@ -3574,6 +3576,7 @@ declare const OrderDraftSchema: z.ZodObject<{
3574
3576
  data?: Record<string, unknown> | undefined;
3575
3577
  sellerId?: string | null | undefined;
3576
3578
  total?: number | undefined;
3579
+ locationId?: string | null | undefined;
3577
3580
  subtotal?: number | undefined;
3578
3581
  estimatedDays?: number | null | undefined;
3579
3582
  pickupPointId?: string | null | undefined;
@@ -3583,7 +3586,6 @@ declare const OrderDraftSchema: z.ZodObject<{
3583
3586
  taxTotal?: number | undefined;
3584
3587
  shippingMethodId?: string | null | undefined;
3585
3588
  shippingProfileId?: string | null | undefined;
3586
- locationId?: string | null | undefined;
3587
3589
  isTaxInclusive?: boolean | undefined;
3588
3590
  connectionId?: string | null | undefined;
3589
3591
  providerName?: string | null | undefined;
@@ -1,4 +1,4 @@
1
- import { handleStoreProxyRequest } from '../chunk-QRR7EPCH.js';
1
+ import { handleStoreProxyRequest } from '../chunk-AKD5IDEB.js';
2
2
  import '../chunk-S7CPZ4UE.js';
3
3
  import '../chunk-Q4U5OEUT.js';
4
4
  import { NextResponse } from 'next/server';
@@ -1 +1,18 @@
1
1
  export * from "./chunks/server-nextjs";
2
+ export type {
3
+ StorefrontSettings,
4
+ StorefrontStore,
5
+ StorefrontCmsSettings,
6
+ StorefrontCmsPage,
7
+ StorefrontProduct,
8
+ StorefrontFacet,
9
+ StorefrontSearchFilter,
10
+ StorefrontProductDetail,
11
+ StorefrontProductsResponse,
12
+ StorefrontProductsParamsInput,
13
+ StorefrontVariant,
14
+ StorefrontCollection,
15
+ StorefrontCollectionDetail,
16
+ StorefrontPageDetail,
17
+ StorefrontPageListItem,
18
+ } from "./chunks/core-public";
@@ -1,5 +1,5 @@
1
- import { handleStoreProxyRequest } from '../chunk-QRR7EPCH.js';
2
- export { handleStoreProxyRequest } from '../chunk-QRR7EPCH.js';
1
+ import { handleStoreProxyRequest } from '../chunk-AKD5IDEB.js';
2
+ export { handleStoreProxyRequest } from '../chunk-AKD5IDEB.js';
3
3
  import '../chunk-S7CPZ4UE.js';
4
4
  import '../chunk-Q4U5OEUT.js';
5
5
 
@@ -1,2 +1 @@
1
- export * from "./chunks/server-tanstack";
2
1
  export * from "./react";
@@ -1 +1,18 @@
1
1
  export * from "./chunks/server-tanstack";
2
+ export type {
3
+ StorefrontSettings,
4
+ StorefrontStore,
5
+ StorefrontCmsSettings,
6
+ StorefrontCmsPage,
7
+ StorefrontProduct,
8
+ StorefrontFacet,
9
+ StorefrontSearchFilter,
10
+ StorefrontProductDetail,
11
+ StorefrontProductsResponse,
12
+ StorefrontProductsParamsInput,
13
+ StorefrontVariant,
14
+ StorefrontCollection,
15
+ StorefrontCollectionDetail,
16
+ StorefrontPageDetail,
17
+ StorefrontPageListItem,
18
+ } from "./chunks/core-public";
package/package.json CHANGED
@@ -50,6 +50,11 @@
50
50
  "types": "./dist/nextjs/api.d.ts",
51
51
  "import": "./dist/nextjs/api.js"
52
52
  },
53
+ "./nextjs/server": {
54
+ "types": "./dist/nextjs.server.d.ts",
55
+ "import": "./dist/nextjs.server.js",
56
+ "default": "./dist/nextjs.server.js"
57
+ },
53
58
  "./nextjs/css": "./dist/nextjs/globals.css",
54
59
  "./nextjs/postcss": "./dist/postcss.config.mjs",
55
60
  "./tanstack": {
@@ -60,6 +65,11 @@
60
65
  },
61
66
  "import": "./dist/tanstack.js"
62
67
  },
68
+ "./tanstack/server": {
69
+ "types": "./dist/tanstack.server.d.ts",
70
+ "import": "./dist/tanstack.server.js",
71
+ "default": "./dist/tanstack.server.js"
72
+ },
63
73
  "./tanstack/api": {
64
74
  "types": "./dist/tanstack/api.d.ts",
65
75
  "import": "./dist/tanstack/api.js"
@@ -79,12 +89,12 @@
79
89
  "optional": true
80
90
  }
81
91
  },
82
- "version": "1.1.5",
92
+ "version": "1.1.9",
83
93
  "dependencies": {
84
94
  "@hookform/resolvers": "^5.2.2",
85
95
  "@tanstack/react-query": "^5.66.9",
86
96
  "axios": "^1.8.2",
87
- "better-auth": "^1.6.0",
97
+ "better-auth": "^1.6.16",
88
98
  "canvas-confetti": "^1.9.3",
89
99
  "embla-carousel": "8.5.1",
90
100
  "embla-carousel-autoplay": "8.5.1",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/config/ecomiq-config.schema.ts","../src/core/client/storefront-settings-kv.service.ts","../src/core/config/ecomiq-config.load.ts"],"names":[],"mappings":"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","file":"chunk-3QGB55R6.js","sourcesContent":["import { z } from \"zod\";\n\nexport const EcomiqConfigSchema = z.object({\n /**\n * Slug de tienda en Ecomiq (p. ej. `mi-tienda` para `mi-tienda.ecomiq.app`).\n * Opcional: si se omite, la tienda se resuelve por el header `Host`.\n */\n slugStore: z.string().min(1).optional(),\n});\n\nexport type EcomiqConfig = z.infer<typeof EcomiqConfigSchema>;\n\nexport function parseExportedEcomiqConfig(raw: unknown): EcomiqConfig | null {\n const candidate =\n raw && typeof raw === \"object\" && \"default\" in (raw as object)\n ? (raw as { default: unknown }).default\n : raw;\n const parsed = EcomiqConfigSchema.safeParse(candidate);\n if (!parsed.success) {\n console.warn(\n \"[ecomiq] ecomiq.config.* inválido:\",\n parsed.error.flatten().fieldErrors,\n );\n return null;\n }\n const slugStore = parsed.data.slugStore?.trim();\n return slugStore ? { slugStore } : {};\n}\n","import { StorefrontSettingsSchema } from \"../models/store\";\nimport type { StorefrontSettings } from \"../models/store\";\n\n/** KV Cloudflare: el consumidor instala @opennextjs/cloudflare en su proyecto (no viene con el SDK). */\nasync function getCloudflareEnv(): Promise<unknown> {\n try {\n const { getCloudflareContext } = await import(\"@opennextjs/cloudflare\");\n const { env } = await getCloudflareContext({ async: true });\n return env;\n } catch {\n throw Object.assign(\n new Error(\n 'Modo KV requiere @opennextjs/cloudflare en tu proyecto. ' +\n \"Instálalo y configura el binding KV, o usa PUBLIC_STORE_SETTINGS_SOURCE=api.\",\n ),\n { status: 500 },\n );\n }\n}\n\n/** Debe coincidir con el `binding` en wrangler.jsonc (`kv_namespaces`). */\nexport const ECOMIQ_CLIENTS_STORE_KV_BINDING = \"ecomiq_clients_store\" as const;\n\nconst ECOMIQ_APP_APEX = \"ecomiq.app\";\nconst ECOMIQ_APP_SUFFIX = [`.${ECOMIQ_APP_APEX}`, `.localhost`];\n\ntype KvJsonGet = {\n get(key: string, options: { type: \"json\" }): Promise<unknown>;\n};\n\n/** Host sin puerto, minúsculas, sin `www.`. */\nexport function normalizeStoreHost(hostHeader: string): string {\n let h = hostHeader.trim().toLowerCase();\n const colon = h.indexOf(\":\");\n if (colon !== -1) h = h.slice(0, colon);\n if (h.startsWith(\"www.\")) h = h.slice(4);\n return h;\n}\n\n/**\n * Identificador de tienda a partir del `Host`: slug en `*.ecomiq.app`, FQDN en dominio propio.\n * Misma semántica que el sufijo de `buildStorefrontKvSnapshotKey` (sin el prefijo KV).\n */\nexport function resolveStorefrontSettingsHost(hostHeader: string): string {\n const host = normalizeStoreHost(hostHeader);\n if (!host) {\n throw Object.assign(new Error(\"Host inválido para tienda\"), { status: 400 });\n }\n if (host === ECOMIQ_APP_APEX) {\n throw Object.assign(new Error(\"Host apex ecomiq.app sin slug de tienda\"), { status: 400 });\n }\n if (ECOMIQ_APP_SUFFIX.some(suffix => host.endsWith(suffix))) {\n const slug = host.slice(0, -(ECOMIQ_APP_SUFFIX.find(suffix => host.endsWith(suffix))?.length ?? 0));\n if (!slug) {\n throw Object.assign(new Error(\"Host sin slug para ecomiq.app\"), { status: 400 });\n }\n return slug;\n }\n return host;\n}\n\n/**\n * Clave KV del snapshot de tienda.\n * - `*.ecomiq.app` → `storefront:snapshots:store:<slug>` (todo lo que va antes de `.ecomiq.app`, p. ej. `plata950`).\n * - Dominio propio (p. ej. `plata950.com`) → `storefront:snapshots:store:<dominio completo>`.\n */\nexport function buildStorefrontKvSnapshotKeyFromStoreKey(storeKey: string): string {\n const key = storeKey.trim();\n if (!key) {\n throw Object.assign(new Error(\"Store key vacío para KV\"), { status: 400 });\n }\n return `storefront:snapshots:store:${key}`;\n}\n\nexport function buildStorefrontKvSnapshotKey(hostHeader: string): string {\n return buildStorefrontKvSnapshotKeyFromStoreKey(\n resolveStorefrontSettingsHost(hostHeader),\n );\n}\n\nfunction getKvNamespace(env: unknown): KvJsonGet | undefined {\n if (!env || typeof env !== \"object\") return undefined;\n const ns = (env as Record<string, unknown>)[ECOMIQ_CLIENTS_STORE_KV_BINDING];\n if (!ns || typeof ns !== \"object\" || typeof (ns as KvJsonGet).get !== \"function\") {\n return undefined;\n }\n return ns as KvJsonGet;\n}\n\n/**\n * Lee settings desde KV con clave ya resuelta (slug o dominio).\n */\nexport async function getStorefrontSettingsFromKvByStoreKey(\n storeKey: string,\n): Promise<StorefrontSettings> {\n const env = await getCloudflareEnv();\n const kv = getKvNamespace(env);\n if (!kv) {\n const err = new Error(\n `Binding KV \"${ECOMIQ_CLIENTS_STORE_KV_BINDING}\" no encontrado. Configura kv_namespaces en wrangler.`\n );\n throw Object.assign(err, { status: 500 });\n }\n\n const cacheKey = buildStorefrontKvSnapshotKeyFromStoreKey(storeKey);\n const raw = await kv.get(cacheKey, { type: \"json\" });\n if (raw == null) {\n const err = new Error(\"Store settings not found in KV\");\n throw Object.assign(err, { status: 404 });\n }\n\n return StorefrontSettingsSchema.parse(raw);\n}\n\n/**\n * Lee settings desde KV (`ecomiq_clients_store`) usando la clave según el host.\n */\nexport async function getStorefrontSettingsFromKv(hostHeader: string): Promise<StorefrontSettings> {\n return getStorefrontSettingsFromKvByStoreKey(\n resolveStorefrontSettingsHost(hostHeader),\n );\n}\n","import { existsSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { join } from \"node:path\";\nimport { resolveStorefrontSettingsHost } from \"../client/storefront-settings-kv.service\";\nimport {\n type EcomiqConfig,\n parseExportedEcomiqConfig,\n} from \"./ecomiq-config.schema\";\n\nexport type { EcomiqConfig } from \"./ecomiq-config.schema\";\nexport { EcomiqConfigSchema } from \"./ecomiq-config.schema\";\n\nconst CONFIG_FILENAMES = [\n \"ecomiq.config.js\",\n \"ecomiq.config.cjs\",\n \"ecomiq.config.mjs\",\n] as const;\n\nlet cachedConfig: EcomiqConfig | null | undefined;\n\n/**\n * Carga `ecomiq.config.js` (o `.cjs` / `.mjs`) desde `cwd` si existe.\n * Si no hay archivo, devuelve `null` (resolución por `Host` en `resolvePublicStoreKey`).\n */\nexport function loadEcomiqConfig(cwd = process.cwd()): EcomiqConfig | null {\n if (cachedConfig !== undefined) return cachedConfig;\n\n for (const filename of CONFIG_FILENAMES) {\n const configPath = join(cwd, filename);\n if (!existsSync(configPath)) continue;\n\n try {\n const requireFromApp = createRequire(join(cwd, \"package.json\"));\n const loaded = requireFromApp(configPath) as unknown;\n cachedConfig = parseExportedEcomiqConfig(loaded);\n return cachedConfig;\n } catch (error) {\n console.warn(`[ecomiq] No se pudo cargar ${configPath}:`, error);\n }\n }\n\n cachedConfig = null;\n return null;\n}\n\n/** Limpia la caché (tests o recarga en dev). */\nexport function clearEcomiqConfigCache(): void {\n cachedConfig = undefined;\n}\n\n/**\n * Identificador de tienda para settings (API / KV).\n * 1. `slugStore` en `ecomiq.config.*` si el archivo existe.\n * 2. Si no, deriva del header `Host`.\n */\nexport function resolvePublicStoreKey(\n hostHeader: string | null | undefined,\n cwd?: string,\n): string {\n const slugFromConfig = loadEcomiqConfig(cwd)?.slugStore?.trim();\n if (slugFromConfig) return slugFromConfig;\n\n if (!hostHeader?.trim()) {\n throw Object.assign(\n new Error(\n \"No se pudo resolver la tienda: falta el header Host. En local puedes definir slugStore en ecomiq.config.js (opcional).\",\n ),\n { status: 400 },\n );\n }\n\n return resolveStorefrontSettingsHost(hostHeader);\n}\n\nexport function hasEcomiqSlugStoreConfig(cwd?: string): boolean {\n return Boolean(loadEcomiqConfig(cwd)?.slugStore?.trim());\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/models/page.ts","../src/core/models/product.ts","../src/core/models/collection.ts"],"names":["z"],"mappings":"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","file":"chunk-ASFU32ZM.js","sourcesContent":["import { z } from \"zod\";\n\n/** Page list item from GET /v1/pages */\nexport const StorefrontPageListItemSchema = z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n layout: z.string(),\n});\n\nexport type StorefrontPageListItem = z.infer<typeof StorefrontPageListItemSchema>;\n\n/** SEO settings within page settings */\nexport const StorefrontPageSeoSchema = z.object({\n title: z.string().optional(),\n description: z.string().optional(),\n}).optional();\n\n/** Page settings (layout-specific; flexible) */\nexport const StorefrontPageSettingsSchema = z.object({\n seo: StorefrontPageSeoSchema,\n html: z.string().optional(),\n title: z.string().optional(),\n}).catchall(z.unknown());\n\n/** Section block (item, widget, etc.) */\nexport const StorefrontPageBlockSchema = z.object({\n id: z.string(),\n type: z.string(),\n order: z.number(),\n settings: z.record(z.unknown()).optional(),\n});\n\n/** Page section (page-hero, faq, widget-row, etc.) */\nexport const StorefrontPageSectionSchema = z.object({\n id: z.string(),\n type: z.string(),\n order: z.number(),\n settings: z.record(z.unknown()).optional(),\n blocks: z.array(StorefrontPageBlockSchema).optional().default([]),\n});\n\n/** Page detail from GET /v1/pages/{slug}; sections is optional */\nexport const StorefrontPageDetailSchema = z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n layout: z.string(),\n settings: StorefrontPageSettingsSchema.optional(),\n sections: z.array(StorefrontPageSectionSchema).optional(),\n});\n\nexport type StorefrontPageDetail = z.infer<typeof StorefrontPageDetailSchema>;\nexport type StorefrontPageSection = z.infer<typeof StorefrontPageSectionSchema>;\nexport type StorefrontPageBlock = z.infer<typeof StorefrontPageBlockSchema>;\n","import { z } from 'zod';\n\nexport const ProductVariantSchema = z.object({\n id: z.coerce.string(),\n name: z.string(),\n storeId: z.string(),\n productId: z.coerce.string(),\n basePrice: z.number().positive().optional().nullable(),\n comparePrice: z.number().positive().optional().nullable(), //TODO: remove this field\n originalPrice: z.number().positive().optional().nullable(),\n costPrice: z.number().positive().optional().nullable(),\n isDefault: z.boolean().optional().nullable(),\n reserveStock: z.number().nonnegative().optional().nullable(),\n weight: z.number().nonnegative().optional().nullable().default(0),\n width: z.number().nonnegative().optional().nullable(),\n height: z.number().nonnegative().optional().nullable(),\n unitOfMeasure: z.string().optional().nullable(),\n order: z.number().nonnegative().optional().nullable().default(0),\n sku: z.string().optional().nullable(),\n stock: z.number().nonnegative().optional().nullable(),\n leadTime: z.string().optional().nullable(),\n barCode: z.string().optional().nullable(),\n shippingWeight: z.number().nonnegative().optional().nullable(),\n images: z.array(z.string()).optional().nullable(),\n attributes: z.array(z.string()).optional().nullable(),\n variantStatus: z.string().optional().nullable(),\n status: z.string().optional().nullable(),\n createdOn: z.string().optional().nullable(),\n updatedOn: z.string().optional().nullable(),\n deletedOn: z.string().optional().nullable(),\n});\n\nexport const ProductSchema = z.object({\n id: z.coerce.string(),\n name: z.string(),\n images: z.array(z.object({\n url: z.string().url(),\n name: z.string().optional(),\n isPrimary: z.boolean().optional(),\n })),\n basePrice: z.number().positive().optional(),\n salePrice: z.number().positive().optional(),\n slug: z.string(),\n description: z.string().optional(),\n categories: z.array(z.object({\n id: z.coerce.string(),\n name: z.string(),\n slug: z.string(),\n logo: z.string().optional(),\n icon: z.string().optional(),\n })).optional(),\n tags: z.array(z.string()).optional(),\n inStock: z.boolean().optional(),\n variants: z.array(ProductVariantSchema).optional(),\n});\n\nexport const ProductsResponseSchema = z.object({\n items: z.array(ProductSchema),\n meta: z.object({\n total: z.number().int().positive(),\n page: z.number().int().positive(),\n pageSize: z.number().int().positive(),\n hasNextPage: z.boolean(),\n }),\n});\n\nexport const ProductsFiltersSchema = z.object({\n category: z.string().optional(),\n search: z.string().optional(),\n minPrice: z.number().positive().optional(),\n maxPrice: z.number().positive().optional(),\n inStock: z.boolean().optional(),\n sortBy: z.enum(['name', 'price', 'createdAt']).optional(),\n sortOrder: z.enum(['asc', 'desc']).optional(),\n page: z.number().int().positive().optional(),\n limit: z.number().int().positive().optional(),\n});\n\n// --- Storefront API (v1/storefront/products) ---\n\nexport const StorefrontProductSchema = z.object({\n id: z.coerce.string(),\n name: z.string(),\n slug: z.string(),\n productType: z.string().optional().nullable(),\n imageUrl: z.string().optional().nullable(),\n price: z.number().nonnegative(),\n compareAtPrice: z.number().nonnegative().optional().nullable(),\n variantCount: z.number().int().nonnegative().optional().default(0),\n isAvailable: z.boolean(),\n totalInventory: z.number().int().nonnegative(),\n bundleItemsCount: z.number().int().nonnegative().optional().default(0),\n brand: z.string().optional().nullable(),\n category: z.string().optional().nullable(),\n status: z.string().optional().nullable(),\n tags: z.array(z.string()).optional().nullable(),\n});\n\nexport const StorefrontFacetSchema = z.object({\n value: z.string(),\n count: z.number().int().nonnegative(),\n});\n\nexport const StorefrontProductsResponseSchema = z.object({\n pageIndex: z.number().int().positive(),\n pageSize: z.number().int().positive(),\n totalCount: z.number().int().nonnegative(),\n totalPages: z.number().int().nonnegative(),\n products: z.array(StorefrontProductSchema),\n categories: z.array(StorefrontFacetSchema).optional().default([]),\n brands: z.array(StorefrontFacetSchema).optional().default([]),\n minPrice: z.number().nonnegative().optional().nullable(),\n maxPrice: z.number().nonnegative().optional().nullable(),\n});\n\nexport const StorefrontProductsParamsSchema = z.object({\n page: z.number().int().positive().optional().default(1),\n pageSize: z.number().int().positive().optional().default(20),\n sort: z\n .enum(['price_asc', 'price_desc', 'name_asc', 'name_desc', 'newest'])\n .optional()\n .default('price_asc'),\n sellerId: z.string().optional(),\n search: z.string().optional(),\n collection: z.string().optional(),\n category: z.string().optional(),\n brand: z.string().optional(),\n productType: z.string().optional(),\n inStock: z.boolean().optional(),\n minPrice: z.number().nonnegative().optional(),\n maxPrice: z.number().nonnegative().optional(),\n});\n\n// --- Storefront product by slug (v1/storefront/products/by-slug/:slug) ---\n\nexport const StorefrontVariantOptionSchema = z.object({\n key: z.string(),\n name: z.string(),\n value: z.string(),\n});\n\nexport const StorefrontProductImageSchema = z.object({\n url: z.string(),\n name: z.string().optional().nullable(),\n order: z.number().int().nonnegative().optional(),\n});\n\nexport const StorefrontVariantSchema = z.object({\n id: z.coerce.string().optional().default(''),\n sku: z.string(),\n status: z.string().optional().nullable(),\n price: z.number().nonnegative(),\n compareAtPrice: z.number().nonnegative().optional().nullable(),\n quantity: z.number().int().nonnegative(),\n options: z.array(StorefrontVariantOptionSchema).optional().default([]),\n images: z.array(StorefrontProductImageSchema).optional().default([]),\n});\n\nexport const StorefrontPriceTierSchema = z.object({\n variantId: z.coerce.string(),\n minQuantity: z.number().int().positive(),\n maxQuantity: z.number().int().positive().optional().nullable(),\n unitPrice: z.number().nonnegative(),\n});\n\nexport const StorefrontBundleItemSchema = z.object({\n productId: z.coerce.string(),\n variantId: z.coerce.string(),\n productName: z.string(),\n variantName: z.string().optional().nullable(),\n sku: z.string().optional().nullable(),\n brand: z.string().optional().nullable(),\n imageUrl: z.string().optional().nullable(),\n quantity: z.number().int(),\n availableStock: z.number().int().optional().default(0),\n allowBackorders: z.boolean().optional().default(false),\n requiresShipping: z.boolean().optional().default(true),\n});\n\nexport const StorefrontProductDetailSchema = z.object({\n id: z.coerce.string(),\n name: z.string(),\n slug: z.string(),\n description: z.string().optional().nullable(),\n productType: z.string().optional().nullable(),\n status: z.string().optional().nullable(),\n imageUrl: z.string().optional().nullable(),\n price: z.number().nonnegative(),\n compareAtPrice: z.number().nonnegative().optional().nullable(),\n isAvailable: z.boolean(),\n totalInventory: z.number().int().nonnegative(),\n brand: z.string().optional().nullable(),\n category: z.string().optional().nullable(),\n categoryId: z.coerce.string().optional().nullable(),\n tags: z.array(z.string()).optional().nullable(),\n specifications: z.array(z.record(z.string(), z.unknown())).optional().default([]),\n variants: z.array(StorefrontVariantSchema).optional().default([]),\n images: z.array(StorefrontProductImageSchema).optional().default([]),\n bundleItems: z.array(StorefrontBundleItemSchema).optional().default([]),\n priceTiers: z.array(StorefrontPriceTierSchema).optional().default([]),\n createdAt: z.string().optional().nullable(),\n updatedAt: z.string().optional().nullable(),\n});\n\n// Tipos TypeScript inferidos de los esquemas Zod\nexport type Product = z.infer<typeof ProductSchema>;\nexport type ProductVariant = z.infer<typeof ProductVariantSchema>;\nexport type ProductsResponse = z.infer<typeof ProductsResponseSchema>;\nexport type ProductsFilters = z.infer<typeof ProductsFiltersSchema>;\n\nexport type StorefrontProduct = z.infer<typeof StorefrontProductSchema>;\nexport type StorefrontFacet = z.infer<typeof StorefrontFacetSchema>;\nexport type StorefrontProductsResponse = z.infer<typeof StorefrontProductsResponseSchema>;\nexport type StorefrontProductsParams = z.infer<typeof StorefrontProductsParamsSchema>;\n/** Params de entrada (sort/page/pageSize opcionales con defaults en el schema) */\nexport type StorefrontProductsParamsInput = z.input<typeof StorefrontProductsParamsSchema>;\n\nexport type StorefrontVariantOption = z.infer<typeof StorefrontVariantOptionSchema>;\nexport type StorefrontVariant = z.infer<typeof StorefrontVariantSchema>;\nexport type StorefrontProductImage = z.infer<typeof StorefrontProductImageSchema>;\nexport type StorefrontPriceTier = z.infer<typeof StorefrontPriceTierSchema>;\nexport type StorefrontBundleItem = z.infer<typeof StorefrontBundleItemSchema>;\nexport type StorefrontProductDetail = z.infer<typeof StorefrontProductDetailSchema>; \n","import { z } from \"zod\";\n\nexport const StorefrontCollectionSchema = z.object({\n id: z.coerce.string(),\n slug: z.string(),\n name: z.string(),\n description: z.string().nullable().optional(),\n imageUrl: z.string().nullable().optional(),\n type: z.string(),\n productCount: z.number().int().nonnegative(),\n});\n\nexport const StorefrontCollectionsResponseSchema = z.array(StorefrontCollectionSchema);\nexport const StorefrontCollectionDetailSchema = StorefrontCollectionSchema;\n\nexport type StorefrontCollection = z.infer<typeof StorefrontCollectionSchema>;\nexport type StorefrontCollectionsResponse = z.infer<\n typeof StorefrontCollectionsResponseSchema\n>;\nexport type StorefrontCollectionDetail = z.infer<typeof StorefrontCollectionDetailSchema>;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/constants/storefront-ecomiq-oauth-cookie.ts","../src/core/server/store-proxy-handler.ts"],"names":[],"mappings":"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","file":"chunk-QRR7EPCH.js","sourcesContent":["/** Cookie HttpOnly con el bearer OAuth storefront; solo path `/api/store` (no navega a todo el sitio). */\nexport const STOREFRONT_ECOMIQ_OAUTH_COOKIE_NAME = \"ecomiq_sf_oauth_at\";\n\n/** Debe coincidir con el prefijo de la ruta proxy en Next (`app/api/store/...`). */\nexport const STOREFRONT_ECOMIQ_OAUTH_COOKIE_PATH = \"/api/store\";\n","import { STOREFRONT_API_PATH_PREFIX } from \"../constants/api-paths\";\nimport { STOREFRONT_HEADERS } from \"../constants/currency\";\nimport { STOREFRONT_ECOMIQ_OAUTH_COOKIE_NAME } from \"../constants/storefront-ecomiq-oauth-cookie\";\n\nconst DEFAULT_API_BASE_URL = \"https://storefront.ecomiq.pe\";\n\nexport type StoreProxyHandlerConfig = {\n /** Base URL del API de storefront. Default: `https://storefront.ecomiq.pe` */\n apiBaseUrl?: string;\n};\n\ntype StoreContextResult =\n | {\n ok: true;\n storeId: string;\n storeDomain: string | null;\n }\n | { ok: false; response: Response };\n\nfunction jsonError(status: number, message: string, error: string): Response {\n return Response.json({ error, message, status }, { status });\n}\n\nasync function readStoreContext(request: Request): Promise<StoreContextResult> {\n const xStoreId = request.headers.get(STOREFRONT_HEADERS.storeIdLower)?.trim();\n const xStoreDomain = request.headers.get(STOREFRONT_HEADERS.storeDomainLower)?.trim();\n if (xStoreDomain) {\n return {\n ok: true,\n storeId: xStoreId || \"\",\n storeDomain: xStoreDomain || null,\n };\n }\n if (!xStoreId) {\n return {\n ok: false,\n response: jsonError(\n 400,\n `${STOREFRONT_HEADERS.storeId} is required`,\n \"Store context required\",\n ),\n };\n }\n\n return {\n ok: true,\n storeId: xStoreId || \"\",\n storeDomain: xStoreDomain || null,\n };\n}\n\nconst SKIP_FORWARD_HEADERS = new Set([\n \"host\",\n \"connection\",\n \"content-length\",\n \"transfer-encoding\",\n STOREFRONT_HEADERS.storeIdLower,\n STOREFRONT_HEADERS.storeDomainLower,\n \"authorization\",\n \"cookie\",\n \"cookie2\",\n \"set-cookie\",\n \"x-forwarded-for\",\n \"x-forwarded-proto\",\n \"x-forwarded-host\",\n \"x-real-ip\",\n \"forwarded\",\n \"cf-connecting-ip\",\n \"cf-connecting-ipv6\",\n \"true-client-ip\",\n \"cf-ipcountry\",\n \"cf-ray\",\n \"cf-visitor\",\n]);\n\nfunction getClientIp(request: Request): string | null {\n const candidates = [\n request.headers.get(\"cf-connecting-ip\"),\n request.headers.get(\"true-client-ip\"),\n request.headers.get(\"x-real-ip\"),\n ];\n for (const value of candidates) {\n const trimmed = value?.trim();\n if (trimmed) return trimmed;\n }\n const xff = request.headers.get(\"x-forwarded-for\");\n if (xff?.trim()) {\n const first = xff.split(\",\")[0]?.trim();\n if (first) return first;\n }\n return null;\n}\n\nfunction getCookieValue(request: Request, name: string): string | undefined {\n const cookieHeader = request.headers.get(\"cookie\");\n if (!cookieHeader) return undefined;\n for (const part of cookieHeader.split(\";\")) {\n const [rawKey, ...rest] = part.trim().split(\"=\");\n if (rawKey?.trim() === name) {\n return decodeURIComponent(rest.join(\"=\"));\n }\n }\n return undefined;\n}\n\nfunction buildUpstreamRequest(\n request: Request,\n pathSegments: string[],\n config: StoreProxyHandlerConfig,\n storeId: string,\n storeDomain: string | null,\n): { url: string; init: RequestInit & { duplex?: \"half\" } } {\n const requestUrl = new URL(request.url);\n const base = (config.apiBaseUrl ?? DEFAULT_API_BASE_URL).replace(/\\/$/, \"\");\n const userPath = pathSegments.length ? pathSegments.join(\"/\") : \"\";\n const path = userPath\n ? `${STOREFRONT_API_PATH_PREFIX}/${userPath}`\n : STOREFRONT_API_PATH_PREFIX;\n const search = requestUrl.searchParams.toString();\n const url = search ? `${base}/${path}?${search}` : `${base}/${path}`;\n\n const headers = new Headers();\n request.headers.forEach((value, key) => {\n const lower = key.toLowerCase();\n if (!SKIP_FORWARD_HEADERS.has(lower)) {\n headers.set(key, value);\n }\n });\n headers.set(STOREFRONT_HEADERS.storeId, storeId);\n if (storeDomain) {\n headers.set(STOREFRONT_HEADERS.storeDomain, storeDomain);\n }\n\n const clientIp = getClientIp(request);\n if (clientIp) {\n headers.set(\"X-Forwarded-For\", clientIp);\n }\n const forwardedProto =\n request.headers.get(\"cf-visitor\")?.match(/\"scheme\":\"(https?)\"/)?.[1] ??\n requestUrl.protocol.replace(\":\", \"\") ??\n \"https\";\n headers.set(\"X-Forwarded-Proto\", forwardedProto);\n const forwardedHost = request.headers.get(\"host\") ?? requestUrl.host;\n if (forwardedHost) {\n headers.set(\"X-Forwarded-Host\", forwardedHost);\n }\n\n const incomingAuth = request.headers.get(\"authorization\")?.trim();\n const storefrontOAuth = getCookieValue(request, STOREFRONT_ECOMIQ_OAUTH_COOKIE_NAME)?.trim();\n\n if (incomingAuth && /^Bearer\\s+\\S+/i.test(incomingAuth)) {\n headers.set(\"Authorization\", incomingAuth);\n } else if (storefrontOAuth) {\n headers.set(\"Authorization\", `Bearer ${storefrontOAuth}`);\n }\n headers.set(\"Accept-Encoding\", \"identity\");\n\n const init: RequestInit & { duplex?: \"half\" } = {\n method: request.method,\n headers,\n cache: \"no-store\",\n };\n\n const bodyMethods = [\"POST\", \"PUT\", \"PATCH\"];\n if (bodyMethods.includes(request.method) && request.body) {\n init.body = request.body;\n init.duplex = \"half\";\n }\n\n return { url, init };\n}\n\nfunction isResponseBodyForbidden(status: number): boolean {\n return status === 204 || status === 205 || status === 304;\n}\n\n/**\n * Proxy BFF `/api/store/*` → upstream Ecomiq. Usa Web Fetch API (`Request` / `Response`).\n */\nexport async function handleStoreProxyRequest(\n request: Request,\n pathSegments: string[],\n config: StoreProxyHandlerConfig = {},\n): Promise<Response> {\n const storeContext = await readStoreContext(request);\n if (!storeContext.ok) {\n return storeContext.response;\n }\n\n const { storeId, storeDomain } = storeContext;\n const { url, init } = buildUpstreamRequest(\n request,\n pathSegments,\n config,\n storeId,\n storeDomain,\n );\n\n const upstream = await fetch(url, init);\n const responseHeaders = new Headers(upstream.headers);\n const status = upstream.status;\n\n if (isResponseBodyForbidden(status)) {\n responseHeaders.delete(\"content-length\");\n responseHeaders.delete(\"content-type\");\n return new Response(null, {\n status,\n statusText: upstream.statusText,\n headers: responseHeaders,\n });\n }\n\n const body = await upstream.text();\n return new Response(body, {\n status,\n statusText: upstream.statusText,\n headers: responseHeaders,\n });\n}\n"]}