@firfi/voila-sdk 0.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 (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/dist/src/domain/cart.d.ts +10 -0
  4. package/dist/src/domain/cart.d.ts.map +1 -0
  5. package/dist/src/domain/cart.js +14 -0
  6. package/dist/src/domain/cart.js.map +1 -0
  7. package/dist/src/domain/checkout-readiness.d.ts +3 -0
  8. package/dist/src/domain/checkout-readiness.d.ts.map +1 -0
  9. package/dist/src/domain/checkout-readiness.js +18 -0
  10. package/dist/src/domain/checkout-readiness.js.map +1 -0
  11. package/dist/src/domain/parse.d.ts +5 -0
  12. package/dist/src/domain/parse.d.ts.map +1 -0
  13. package/dist/src/domain/parse.js +11 -0
  14. package/dist/src/domain/parse.js.map +1 -0
  15. package/dist/src/domain/schemas/auth.d.ts +123 -0
  16. package/dist/src/domain/schemas/auth.d.ts.map +1 -0
  17. package/dist/src/domain/schemas/auth.js +36 -0
  18. package/dist/src/domain/schemas/auth.js.map +1 -0
  19. package/dist/src/domain/schemas/cart.d.ts +1224 -0
  20. package/dist/src/domain/schemas/cart.d.ts.map +1 -0
  21. package/dist/src/domain/schemas/cart.js +123 -0
  22. package/dist/src/domain/schemas/cart.js.map +1 -0
  23. package/dist/src/domain/schemas/category-page.d.ts +187 -0
  24. package/dist/src/domain/schemas/category-page.d.ts.map +1 -0
  25. package/dist/src/domain/schemas/category-page.js +43 -0
  26. package/dist/src/domain/schemas/category-page.js.map +1 -0
  27. package/dist/src/domain/schemas/category.d.ts +25 -0
  28. package/dist/src/domain/schemas/category.d.ts.map +1 -0
  29. package/dist/src/domain/schemas/category.js +30 -0
  30. package/dist/src/domain/schemas/category.js.map +1 -0
  31. package/dist/src/domain/schemas/checkout-summary.d.ts +1035 -0
  32. package/dist/src/domain/schemas/checkout-summary.d.ts.map +1 -0
  33. package/dist/src/domain/schemas/checkout-summary.js +103 -0
  34. package/dist/src/domain/schemas/checkout-summary.js.map +1 -0
  35. package/dist/src/domain/schemas/delivery-destination.d.ts +176 -0
  36. package/dist/src/domain/schemas/delivery-destination.d.ts.map +1 -0
  37. package/dist/src/domain/schemas/delivery-destination.js +52 -0
  38. package/dist/src/domain/schemas/delivery-destination.js.map +1 -0
  39. package/dist/src/domain/schemas/index.d.ts +13 -0
  40. package/dist/src/domain/schemas/index.d.ts.map +1 -0
  41. package/dist/src/domain/schemas/index.js +13 -0
  42. package/dist/src/domain/schemas/index.js.map +1 -0
  43. package/dist/src/domain/schemas/money.d.ts +18 -0
  44. package/dist/src/domain/schemas/money.d.ts.map +1 -0
  45. package/dist/src/domain/schemas/money.js +11 -0
  46. package/dist/src/domain/schemas/money.js.map +1 -0
  47. package/dist/src/domain/schemas/product.d.ts +230 -0
  48. package/dist/src/domain/schemas/product.d.ts.map +1 -0
  49. package/dist/src/domain/schemas/product.js +32 -0
  50. package/dist/src/domain/schemas/product.js.map +1 -0
  51. package/dist/src/domain/schemas/proposition.d.ts +746 -0
  52. package/dist/src/domain/schemas/proposition.d.ts.map +1 -0
  53. package/dist/src/domain/schemas/proposition.js +110 -0
  54. package/dist/src/domain/schemas/proposition.js.map +1 -0
  55. package/dist/src/domain/schemas/search.d.ts +31 -0
  56. package/dist/src/domain/schemas/search.d.ts.map +1 -0
  57. package/dist/src/domain/schemas/search.js +16 -0
  58. package/dist/src/domain/schemas/search.js.map +1 -0
  59. package/dist/src/domain/schemas/session.d.ts +1341 -0
  60. package/dist/src/domain/schemas/session.d.ts.map +1 -0
  61. package/dist/src/domain/schemas/session.js +140 -0
  62. package/dist/src/domain/schemas/session.js.map +1 -0
  63. package/dist/src/domain/schemas/slot.d.ts +844 -0
  64. package/dist/src/domain/schemas/slot.d.ts.map +1 -0
  65. package/dist/src/domain/schemas/slot.js +130 -0
  66. package/dist/src/domain/schemas/slot.js.map +1 -0
  67. package/dist/src/index.d.ts +26 -0
  68. package/dist/src/index.d.ts.map +1 -0
  69. package/dist/src/index.js +26 -0
  70. package/dist/src/index.js.map +1 -0
  71. package/dist/src/voila/browser-login-adapter.d.ts +108 -0
  72. package/dist/src/voila/browser-login-adapter.d.ts.map +1 -0
  73. package/dist/src/voila/browser-login-adapter.js +128 -0
  74. package/dist/src/voila/browser-login-adapter.js.map +1 -0
  75. package/dist/src/voila/browser-login.d.ts +32 -0
  76. package/dist/src/voila/browser-login.d.ts.map +1 -0
  77. package/dist/src/voila/browser-login.js +86 -0
  78. package/dist/src/voila/browser-login.js.map +1 -0
  79. package/dist/src/voila/cart-mutation.d.ts +23 -0
  80. package/dist/src/voila/cart-mutation.d.ts.map +1 -0
  81. package/dist/src/voila/cart-mutation.js +52 -0
  82. package/dist/src/voila/cart-mutation.js.map +1 -0
  83. package/dist/src/voila/cart-view.d.ts +14 -0
  84. package/dist/src/voila/cart-view.d.ts.map +1 -0
  85. package/dist/src/voila/cart-view.js +45 -0
  86. package/dist/src/voila/cart-view.js.map +1 -0
  87. package/dist/src/voila/catalog-search.d.ts +27 -0
  88. package/dist/src/voila/catalog-search.d.ts.map +1 -0
  89. package/dist/src/voila/catalog-search.js +40 -0
  90. package/dist/src/voila/catalog-search.js.map +1 -0
  91. package/dist/src/voila/categories.d.ts +4 -0
  92. package/dist/src/voila/categories.d.ts.map +1 -0
  93. package/dist/src/voila/categories.js +22 -0
  94. package/dist/src/voila/categories.js.map +1 -0
  95. package/dist/src/voila/category-products.d.ts +22 -0
  96. package/dist/src/voila/category-products.d.ts.map +1 -0
  97. package/dist/src/voila/category-products.js +32 -0
  98. package/dist/src/voila/category-products.js.map +1 -0
  99. package/dist/src/voila/checkout-summary.d.ts +15 -0
  100. package/dist/src/voila/checkout-summary.d.ts.map +1 -0
  101. package/dist/src/voila/checkout-summary.js +93 -0
  102. package/dist/src/voila/checkout-summary.js.map +1 -0
  103. package/dist/src/voila/checkout-urls.d.ts +11 -0
  104. package/dist/src/voila/checkout-urls.d.ts.map +1 -0
  105. package/dist/src/voila/checkout-urls.js +23 -0
  106. package/dist/src/voila/checkout-urls.js.map +1 -0
  107. package/dist/src/voila/delivery-destinations.d.ts +22 -0
  108. package/dist/src/voila/delivery-destinations.d.ts.map +1 -0
  109. package/dist/src/voila/delivery-destinations.js +70 -0
  110. package/dist/src/voila/delivery-destinations.js.map +1 -0
  111. package/dist/src/voila/guest-bootstrap.d.ts +40 -0
  112. package/dist/src/voila/guest-bootstrap.d.ts.map +1 -0
  113. package/dist/src/voila/guest-bootstrap.js +108 -0
  114. package/dist/src/voila/guest-bootstrap.js.map +1 -0
  115. package/dist/src/voila/headers.d.ts +5 -0
  116. package/dist/src/voila/headers.d.ts.map +1 -0
  117. package/dist/src/voila/headers.js +20 -0
  118. package/dist/src/voila/headers.js.map +1 -0
  119. package/dist/src/voila/http-client.d.ts +60 -0
  120. package/dist/src/voila/http-client.d.ts.map +1 -0
  121. package/dist/src/voila/http-client.js +124 -0
  122. package/dist/src/voila/http-client.js.map +1 -0
  123. package/dist/src/voila/initial-state.d.ts +19 -0
  124. package/dist/src/voila/initial-state.d.ts.map +1 -0
  125. package/dist/src/voila/initial-state.js +117 -0
  126. package/dist/src/voila/initial-state.js.map +1 -0
  127. package/dist/src/voila/session-health.d.ts +10 -0
  128. package/dist/src/voila/session-health.d.ts.map +1 -0
  129. package/dist/src/voila/session-health.js +176 -0
  130. package/dist/src/voila/session-health.js.map +1 -0
  131. package/dist/src/voila/session-snapshot.d.ts +41 -0
  132. package/dist/src/voila/session-snapshot.d.ts.map +1 -0
  133. package/dist/src/voila/session-snapshot.js +101 -0
  134. package/dist/src/voila/session-snapshot.js.map +1 -0
  135. package/dist/src/voila/session-storage.d.ts +22 -0
  136. package/dist/src/voila/session-storage.d.ts.map +1 -0
  137. package/dist/src/voila/session-storage.js +54 -0
  138. package/dist/src/voila/session-storage.js.map +1 -0
  139. package/dist/src/voila/shopping-context.d.ts +33 -0
  140. package/dist/src/voila/shopping-context.d.ts.map +1 -0
  141. package/dist/src/voila/shopping-context.js +159 -0
  142. package/dist/src/voila/shopping-context.js.map +1 -0
  143. package/dist/src/voila/slot-urls.d.ts +22 -0
  144. package/dist/src/voila/slot-urls.d.ts.map +1 -0
  145. package/dist/src/voila/slot-urls.js +51 -0
  146. package/dist/src/voila/slot-urls.js.map +1 -0
  147. package/dist/src/voila/slots.d.ts +41 -0
  148. package/dist/src/voila/slots.d.ts.map +1 -0
  149. package/dist/src/voila/slots.js +137 -0
  150. package/dist/src/voila/slots.js.map +1 -0
  151. package/dist/src/voila/urls.d.ts +114 -0
  152. package/dist/src/voila/urls.d.ts.map +1 -0
  153. package/dist/src/voila/urls.js +197 -0
  154. package/dist/src/voila/urls.js.map +1 -0
  155. package/package.json +66 -0
@@ -0,0 +1,159 @@
1
+ import { Either } from "effect";
2
+ import { parseUnknown } from "../domain/parse.js";
3
+ import { ActiveShoppingContextResponseSchema, DeliveryContextChangeResultSchema, DeliveryContextPreviewResponseSchema, DeliveryPropositionDetailsResponseSchema, NormalizedActiveShoppingContextSchema, NormalizedDeliveryContextPreviewSchema, NormalizedDeliveryPropositionDetailsSchema } from "../domain/schemas/index.js";
4
+ import { requestVoilaJson } from "./http-client.js";
5
+ import { makeActiveShoppingContextRequest, makeDeliveryContextPreviewRequest, makeDeliveryPropositionDetailsRequest, makeSetActiveCartPropositionRequest, makeSetActiveDeliveryDestinationRequest, parseApplyDeliveryContextChangeInput } from "./urls.js";
6
+ const emptyLength = 0;
7
+ const shoppingContextSchemaMismatch = () => ({
8
+ _tag: "ShoppingContextSchemaMismatch",
9
+ message: "Voila shopping context response does not match the SDK schema"
10
+ });
11
+ export const normalizeActiveShoppingContext = (response) => ({
12
+ ...(response.cartPropositionId === undefined ? {} : { cartPropositionId: response.cartPropositionId }),
13
+ ...(response.deliveryDestinationId === undefined ? {} : { deliveryDestinationId: response.deliveryDestinationId }),
14
+ ...(response.deliveryMethod === undefined ? {} : { deliveryMethod: response.deliveryMethod }),
15
+ ...(response.propositionType === undefined ? {} : { propositionType: response.propositionType }),
16
+ ...(response.regionId === undefined ? {} : { regionId: response.regionId }),
17
+ ...(response.type === undefined ? {} : { type: response.type })
18
+ });
19
+ export const normalizeDeliveryPropositionDetailsResponse = (response) => ({
20
+ propositions: "propositions" in response ? response.propositions : response
21
+ });
22
+ const getProductsFromCartProposition = (proposition, key) => (proposition?.assignedCheckoutGroups ?? []).flatMap((group) => group[key] ?? []);
23
+ const makeCartImpactWarning = (kind, products) => products.length === emptyLength
24
+ ? undefined
25
+ : {
26
+ kind,
27
+ products
28
+ };
29
+ const collectCartImpactWarnings = (response) => [
30
+ makeCartImpactWarning("origin-cart-items", getProductsFromCartProposition(response.originCartProposition, "products")),
31
+ makeCartImpactWarning("destination-cart-items", getProductsFromCartProposition(response.destinationCartProposition, "products")),
32
+ makeCartImpactWarning("limited-cart-items", getProductsFromCartProposition(response.destinationCartProposition, "limitedItems"))
33
+ ].filter((warning) => warning !== undefined);
34
+ export const normalizeDeliveryContextPreviewResponse = (response) => {
35
+ const cartImpactWarnings = collectCartImpactWarnings(response);
36
+ return {
37
+ cartImpactWarnings,
38
+ ...(response.destinationCartProposition.cartPropositionId === undefined
39
+ ? {}
40
+ : { destinationCartPropositionId: response.destinationCartProposition.cartPropositionId }),
41
+ ...(response.destinationCartProposition.regionId === undefined
42
+ ? {}
43
+ : { destinationRegionId: response.destinationCartProposition.regionId }),
44
+ ...(response.originCartProposition?.cartPropositionId === undefined
45
+ ? {}
46
+ : { originCartPropositionId: response.originCartProposition.cartPropositionId }),
47
+ ...(response.originCartProposition?.regionId === undefined
48
+ ? {}
49
+ : { originRegionId: response.originCartProposition.regionId }),
50
+ requiresConfirmation: cartImpactWarnings.length > emptyLength
51
+ };
52
+ };
53
+ export const parseActiveShoppingContextResponse = (input) => Either.flatMap(Either.mapLeft(parseUnknown(ActiveShoppingContextResponseSchema, input), shoppingContextSchemaMismatch), (response) => Either.mapLeft(parseUnknown(NormalizedActiveShoppingContextSchema, normalizeActiveShoppingContext(response)), shoppingContextSchemaMismatch));
54
+ export const parseDeliveryPropositionDetailsResponse = (input) => Either.flatMap(Either.mapLeft(parseUnknown(DeliveryPropositionDetailsResponseSchema, input), shoppingContextSchemaMismatch), (response) => Either.mapLeft(parseUnknown(NormalizedDeliveryPropositionDetailsSchema, normalizeDeliveryPropositionDetailsResponse(response)), shoppingContextSchemaMismatch));
55
+ export const parseDeliveryContextPreviewResponse = (input) => Either.flatMap(Either.mapLeft(parseUnknown(DeliveryContextPreviewResponseSchema, input), shoppingContextSchemaMismatch), (response) => Either.mapLeft(parseUnknown(NormalizedDeliveryContextPreviewSchema, normalizeDeliveryContextPreviewResponse(response)), shoppingContextSchemaMismatch));
56
+ export const getActiveShoppingContext = async (session, input, transport, cookieJarPort) => {
57
+ const request = makeActiveShoppingContextRequest(input);
58
+ if (Either.isLeft(request)) {
59
+ return Either.left(request.left);
60
+ }
61
+ return requestNormalizedActiveShoppingContext(session, request.right, transport, cookieJarPort);
62
+ };
63
+ const requestNormalizedActiveShoppingContext = async (session, request, transport, cookieJarPort) => Either.map(await requestVoilaJson(ActiveShoppingContextResponseSchema, session, request, transport, cookieJarPort), (result) => ({
64
+ session: result.session,
65
+ value: normalizeActiveShoppingContext(result.value)
66
+ }));
67
+ export const getDeliveryPropositionDetails = async (session, input, transport, cookieJarPort) => {
68
+ const request = makeDeliveryPropositionDetailsRequest(input);
69
+ if (Either.isLeft(request)) {
70
+ return Either.left(request.left);
71
+ }
72
+ const response = await requestVoilaJson(DeliveryPropositionDetailsResponseSchema, session, request.right, transport, cookieJarPort);
73
+ return Either.map(response, (result) => ({
74
+ session: result.session,
75
+ value: normalizeDeliveryPropositionDetailsResponse(result.value)
76
+ }));
77
+ };
78
+ export const previewDeliveryContextChange = async (session, input, transport, cookieJarPort) => {
79
+ const request = makeDeliveryContextPreviewRequest(input);
80
+ if (Either.isLeft(request)) {
81
+ return Either.left(request.left);
82
+ }
83
+ const response = await requestVoilaJson(DeliveryContextPreviewResponseSchema, session, request.right, transport, cookieJarPort);
84
+ return Either.map(response, (result) => ({
85
+ session: result.session,
86
+ value: normalizeDeliveryContextPreviewResponse(result.value)
87
+ }));
88
+ };
89
+ export const setActiveDeliveryDestinationContext = async (session, input, transport, cookieJarPort) => {
90
+ const request = makeSetActiveDeliveryDestinationRequest(input);
91
+ if (Either.isLeft(request)) {
92
+ return Either.left(request.left);
93
+ }
94
+ return requestNormalizedActiveShoppingContext(session, request.right, transport, cookieJarPort);
95
+ };
96
+ export const setActiveCartPropositionContext = async (session, input, transport, cookieJarPort) => {
97
+ const request = makeSetActiveCartPropositionRequest(input);
98
+ if (Either.isLeft(request)) {
99
+ return Either.left(request.left);
100
+ }
101
+ return requestNormalizedActiveShoppingContext(session, request.right, transport, cookieJarPort);
102
+ };
103
+ const makeRequiresConfirmationResult = (session, preview) => Either.map(Either.mapLeft(parseUnknown(DeliveryContextChangeResultSchema, {
104
+ applied: false,
105
+ preview,
106
+ status: "requires-confirmation"
107
+ }), shoppingContextSchemaMismatch), (value) => ({
108
+ session,
109
+ value
110
+ }));
111
+ const makeAppliedResult = (session, preview, context) => Either.map(Either.mapLeft(parseUnknown(DeliveryContextChangeResultSchema, {
112
+ applied: true,
113
+ context,
114
+ preview,
115
+ status: "applied"
116
+ }), shoppingContextSchemaMismatch), (value) => ({
117
+ session,
118
+ value
119
+ }));
120
+ export const applyDeliveryContextChange = async (session, input, transport, cookieJarPort) => {
121
+ const parsedInput = parseApplyDeliveryContextChangeInput(input);
122
+ if (Either.isLeft(parsedInput)) {
123
+ return Either.left(parsedInput.left);
124
+ }
125
+ const preview = await previewDeliveryContextChange(session, {
126
+ deliveryDestinationId: parsedInput.right.deliveryDestinationId,
127
+ destinationRegionId: parsedInput.right.destinationRegionId
128
+ }, transport, cookieJarPort);
129
+ if (Either.isLeft(preview)) {
130
+ return Either.left(preview.left);
131
+ }
132
+ if (preview.right.value.requiresConfirmation && !parsedInput.right.allowCartImpact) {
133
+ return makeRequiresConfirmationResult(preview.right.session, preview.right.value);
134
+ }
135
+ const accountContext = {
136
+ ...(parsedInput.right.customerId === undefined ? {} : { customerId: parsedInput.right.customerId }),
137
+ ...(parsedInput.right.visitorId === undefined ? {} : { visitorId: parsedInput.right.visitorId })
138
+ };
139
+ if (preview.right.value.destinationCartPropositionId !== undefined
140
+ && preview.right.value.originCartPropositionId !== undefined) {
141
+ const context = await setActiveCartPropositionContext(preview.right.session, {
142
+ ...accountContext,
143
+ destinationCartPropositionId: preview.right.value.destinationCartPropositionId,
144
+ originCartPropositionId: preview.right.value.originCartPropositionId
145
+ }, transport, cookieJarPort);
146
+ return Either.isLeft(context)
147
+ ? Either.left(context.left)
148
+ : makeAppliedResult(context.right.session, preview.right.value, context.right.value);
149
+ }
150
+ const context = await setActiveDeliveryDestinationContext(preview.right.session, {
151
+ ...accountContext,
152
+ deliveryDestinationId: parsedInput.right.deliveryDestinationId,
153
+ regionId: parsedInput.right.destinationRegionId
154
+ }, transport, cookieJarPort);
155
+ return Either.isLeft(context)
156
+ ? Either.left(context.left)
157
+ : makeAppliedResult(context.right.session, preview.right.value, context.right.value);
158
+ };
159
+ //# sourceMappingURL=shopping-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopping-context.js","sourceRoot":"","sources":["../../../src/voila/shopping-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Either } from "effect";
2
+ export interface SlotListingRequest {
3
+ readonly body: string;
4
+ readonly method: "POST";
5
+ readonly url: URL;
6
+ }
7
+ export interface SlotReservationRequest {
8
+ readonly body: string;
9
+ readonly method: "POST";
10
+ readonly url: URL;
11
+ }
12
+ export type SlotListingRequestError = {
13
+ readonly _tag: "SlotListingInputInvalid";
14
+ readonly message: string;
15
+ };
16
+ export type SlotReservationRequestError = {
17
+ readonly _tag: "SlotReservationInputInvalid";
18
+ readonly message: string;
19
+ };
20
+ export declare const makeSlotListingRequest: (input: unknown) => Either.Either<SlotListingRequest, SlotListingRequestError>;
21
+ export declare const makeSlotReservationRequest: (input: unknown) => Either.Either<SlotReservationRequest, SlotReservationRequestError>;
22
+ //# sourceMappingURL=slot-urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-urls.d.ts","sourceRoot":"","sources":["../../../src/voila/slot-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAS/B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;CAClB;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AA2BD,eAAO,MAAM,sBAAsB,GACjC,OAAO,OAAO,KACb,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAmBzD,CAAA;AAEH,eAAO,MAAM,0BAA0B,GACrC,OAAO,OAAO,KACb,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,CAajE,CAAA"}
@@ -0,0 +1,51 @@
1
+ import { Either } from "effect";
2
+ import { parseUnknown } from "../domain/parse.js";
3
+ import { SlotListingInputSchema, SlotReservationInputSchema } from "../domain/schemas/index.js";
4
+ import { VOILA_BASE_URL } from "./urls.js";
5
+ const SLOT_LISTING_PATH = "/api/ecomslots/v2/slots";
6
+ const SLOT_RESERVATION_PATH = "/api/ecomslots/v1/slots/reservation";
7
+ const slotListingInputInvalid = () => ({
8
+ _tag: "SlotListingInputInvalid",
9
+ message: "Slot listing request input does not match the SDK schema"
10
+ });
11
+ const slotReservationInputInvalid = () => ({
12
+ _tag: "SlotReservationInputInvalid",
13
+ message: "Slot reservation request input does not match the SDK schema"
14
+ });
15
+ const makeSlotAnalyticsData = (input) => {
16
+ if (input.sessionId === undefined) {
17
+ return undefined;
18
+ }
19
+ return {
20
+ ...(input.pageViewId === undefined ? {} : { pageViewId: input.pageViewId }),
21
+ platform: "WEB",
22
+ sessionId: input.sessionId,
23
+ ...(input.viewingLocation === undefined ? {} : { viewingLocation: input.viewingLocation })
24
+ };
25
+ };
26
+ export const makeSlotListingRequest = (input) => Either.map(Either.mapLeft(parseUnknown(SlotListingInputSchema, input), slotListingInputInvalid), (slotInput) => {
27
+ const analyticsData = makeSlotAnalyticsData(slotInput);
28
+ return {
29
+ body: JSON.stringify({
30
+ deliveryDestinationId: slotInput.deliveryDestinationId,
31
+ displayConfiguration: slotInput.displayConfiguration,
32
+ ...(analyticsData === undefined ? {} : { analyticsData }),
33
+ ...(slotInput.numberOfDays === undefined ? {} : { numberOfDays: slotInput.numberOfDays }),
34
+ regionId: slotInput.regionId,
35
+ shippingGroupType: slotInput.shippingGroupType
36
+ }),
37
+ method: "POST",
38
+ url: new URL(SLOT_LISTING_PATH, VOILA_BASE_URL)
39
+ };
40
+ });
41
+ export const makeSlotReservationRequest = (input) => Either.map(Either.mapLeft(parseUnknown(SlotReservationInputSchema, input), slotReservationInputInvalid), (slotInput) => ({
42
+ body: JSON.stringify({
43
+ deliveryDestinationId: slotInput.deliveryDestinationId,
44
+ ...(slotInput.externalAddress === undefined ? {} : { externalAddress: slotInput.externalAddress }),
45
+ regionId: slotInput.regionId,
46
+ slotId: slotInput.slotId
47
+ }),
48
+ method: "POST",
49
+ url: new URL(SLOT_RESERVATION_PATH, VOILA_BASE_URL)
50
+ }));
51
+ //# sourceMappingURL=slot-urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot-urls.js","sourceRoot":"","sources":["../../../src/voila/slot-urls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { Either } from "effect";
2
+ import { type NormalizedSlotListing, type NormalizedSlotReservation, type RawSlotListingResponse, type RawSlotReservationResponse, type SessionSnapshot, type SlotReservationInput } from "../domain/schemas/index.js";
3
+ import type { VoilaJsonResult, VoilaSdkError, VoilaTransport } from "./http-client.js";
4
+ import type { CookieJarPort } from "./session-snapshot.js";
5
+ import type { SlotListingRequestError, SlotReservationRequestError } from "./slot-urls.js";
6
+ export type SlotListingNormalizationError = {
7
+ readonly _tag: "SlotListingSchemaMismatch";
8
+ readonly message: string;
9
+ };
10
+ export type SlotReservationNormalizationError = {
11
+ readonly _tag: "SlotReservationSchemaMismatch";
12
+ readonly message: string;
13
+ };
14
+ export type SlotReservationSelectionError = {
15
+ readonly _tag: "SlotReservationSelectionInvalid";
16
+ readonly message: string;
17
+ } | {
18
+ readonly _tag: "SlotReservationSlotIdMissing";
19
+ readonly message: string;
20
+ } | {
21
+ readonly _tag: "SlotReservationSlotUnavailable";
22
+ readonly message: string;
23
+ } | {
24
+ readonly _tag: "SlotReservationSlotExpired";
25
+ readonly message: string;
26
+ } | {
27
+ readonly _tag: "SlotReservationSlotEndTimeInvalid";
28
+ readonly message: string;
29
+ };
30
+ export type GetSlotListingsError = SlotListingRequestError | VoilaSdkError;
31
+ export type GetSlotListingsResult = VoilaJsonResult<NormalizedSlotListing>;
32
+ export type ReserveSlotError = SlotReservationRequestError | VoilaSdkError;
33
+ export type ReserveSlotResult = VoilaJsonResult<NormalizedSlotReservation>;
34
+ export declare const normalizeSlotListingResponse: (response: RawSlotListingResponse) => NormalizedSlotListing;
35
+ export declare const normalizeSlotReservationResponse: (response: RawSlotReservationResponse) => NormalizedSlotReservation;
36
+ export declare const makeSlotReservationInputFromSlot: (input: unknown, now: Date) => Either.Either<SlotReservationInput, SlotReservationSelectionError>;
37
+ export declare const parseSlotListingResponse: (input: unknown) => Either.Either<NormalizedSlotListing, SlotListingNormalizationError>;
38
+ export declare const parseSlotReservationResponse: (input: unknown) => Either.Either<NormalizedSlotReservation, SlotReservationNormalizationError>;
39
+ export declare const getSlotListings: (session: SessionSnapshot, input: unknown, transport: VoilaTransport, cookieJarPort?: CookieJarPort) => Promise<Either.Either<GetSlotListingsResult, GetSlotListingsError>>;
40
+ export declare const reserveSlot: (session: SessionSnapshot, input: unknown, transport: VoilaTransport, cookieJarPort?: CookieJarPort) => Promise<Either.Either<ReserveSlotResult, ReserveSlotError>>;
41
+ //# sourceMappingURL=slots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../src/voila/slots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EAGL,KAAK,qBAAqB,EAE1B,KAAK,yBAAyB,EAI9B,KAAK,sBAAsB,EAE3B,KAAK,0BAA0B,EAE/B,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAG1B,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAG1F,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAA;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,6BAA6B,GACrC;IACA,QAAQ,CAAC,IAAI,EAAE,iCAAiC,CAAA;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAA;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,gCAAgC,CAAA;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAA;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,mCAAmC,CAAA;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAEH,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,GAAG,aAAa,CAAA;AAE1E,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAA;AAE1E,MAAM,MAAM,gBAAgB,GAAG,2BAA2B,GAAG,aAAa,CAAA;AAE1E,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAA;AA2E1E,eAAO,MAAM,4BAA4B,GACvC,UAAU,sBAAsB,KAC/B,qBAQF,CAAA;AAED,eAAO,MAAM,gCAAgC,GAC3C,UAAU,0BAA0B,KACnC,yBAYD,CAAA;AAmBF,eAAO,MAAM,gCAAgC,GAC3C,OAAO,OAAO,EACd,KAAK,IAAI,KACR,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAgCnE,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,OAAO,OAAO,KACb,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,6BAA6B,CAQlE,CAAA;AAEH,eAAO,MAAM,4BAA4B,GACvC,OAAO,OAAO,KACb,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,iCAAiC,CAQ1E,CAAA;AAEH,eAAO,MAAM,eAAe,GAC1B,SAAS,eAAe,EACxB,OAAO,OAAO,EACd,WAAW,cAAc,EACzB,gBAAgB,aAAa,KAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAmBpE,CAAA;AAED,eAAO,MAAM,WAAW,GACtB,SAAS,eAAe,EACxB,OAAO,OAAO,EACd,WAAW,cAAc,EACzB,gBAAgB,aAAa,KAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAmB5D,CAAA"}
@@ -0,0 +1,137 @@
1
+ import { Either } from "effect";
2
+ import { parseUnknown } from "../domain/parse.js";
3
+ import { NormalizedSlotListingSchema, NormalizedSlotReservationSchema, RawSlotListingResponseSchema, RawSlotReservationResponseSchema, SlotReservationSelectionInputSchema } from "../domain/schemas/index.js";
4
+ import { requestVoilaJson } from "./http-client.js";
5
+ import { makeSlotListingRequest, makeSlotReservationRequest } from "./slot-urls.js";
6
+ const availableAttribute = "AVAILABLE";
7
+ const slotListingSchemaMismatch = () => ({
8
+ _tag: "SlotListingSchemaMismatch",
9
+ message: "Voila slot listing response does not match the SDK schema"
10
+ });
11
+ const slotReservationSchemaMismatch = () => ({
12
+ _tag: "SlotReservationSchemaMismatch",
13
+ message: "Voila slot reservation response does not match the SDK schema"
14
+ });
15
+ const slotReservationSelectionInvalid = () => ({
16
+ _tag: "SlotReservationSelectionInvalid",
17
+ message: "Slot reservation selection input does not match the SDK schema"
18
+ });
19
+ const slotReservationSlotIdMissing = () => ({
20
+ _tag: "SlotReservationSlotIdMissing",
21
+ message: "Slot reservation requires a listed slot with a slot ID"
22
+ });
23
+ const slotReservationSlotUnavailable = () => ({
24
+ _tag: "SlotReservationSlotUnavailable",
25
+ message: "Slot reservation requires an available listed slot"
26
+ });
27
+ const slotReservationSlotExpired = () => ({
28
+ _tag: "SlotReservationSlotExpired",
29
+ message: "Slot reservation requires a listed slot that has not already ended"
30
+ });
31
+ const slotReservationSlotEndTimeInvalid = () => ({
32
+ _tag: "SlotReservationSlotEndTimeInvalid",
33
+ message: "Slot reservation slot end time is not a valid timestamp"
34
+ });
35
+ const normalizeSlot = (carrier, date, slotListingId, slot) => ({
36
+ attributes: slot.attributes ?? [],
37
+ available: (slot.attributes ?? []).includes(availableAttribute),
38
+ ...(carrier.carrierId === undefined ? {} : { carrierId: carrier.carrierId }),
39
+ date,
40
+ ...(slot.deliveryPrice === undefined ? {} : { deliveryPrice: slot.deliveryPrice }),
41
+ ...(slot.slotWindow?.endTime === undefined ? {} : { endTime: slot.slotWindow.endTime }),
42
+ ...(slot.onDemandProperties === undefined ? {} : { onDemandProperties: slot.onDemandProperties }),
43
+ ...(slot.slotId === undefined ? {} : { slotId: slot.slotId }),
44
+ ...(slotListingId === undefined ? {} : { slotListingId }),
45
+ ...(slot.slotWindow?.startTime === undefined ? {} : { startTime: slot.slotWindow.startTime }),
46
+ ...(slot.timeZoneId === undefined ? {} : { timeZoneId: slot.timeZoneId }),
47
+ ...(slot.title === undefined ? {} : { title: slot.title }),
48
+ ...(slot.type === undefined ? {} : { type: slot.type })
49
+ });
50
+ const dayListingId = (carrier, day) => (carrier.daysMapping ?? []).find((mapping) => mapping.day === day)?.slotListingId;
51
+ const normalizeCarrierSlots = (carrier) => (carrier.gridSlots ?? []).flatMap((gridDay) => gridDay.slots.map((slot) => normalizeSlot(carrier, gridDay.day, dayListingId(carrier, gridDay.day), slot)));
52
+ const normalizeCarrier = (carrier) => ({
53
+ ...(carrier.carrierId === undefined ? {} : { carrierId: carrier.carrierId }),
54
+ ...(carrier.carrierName === undefined ? {} : { carrierName: carrier.carrierName }),
55
+ days: carrier.daysMapping ?? [],
56
+ ...(carrier.title === undefined ? {} : { title: carrier.title })
57
+ });
58
+ export const normalizeSlotListingResponse = (response) => {
59
+ const slots = response.carriers.flatMap(normalizeCarrierSlots);
60
+ return {
61
+ availableSlotCount: slots.filter((slot) => slot.available).length,
62
+ carriers: response.carriers.map(normalizeCarrier),
63
+ slots
64
+ };
65
+ };
66
+ export const normalizeSlotReservationResponse = (response) => ({
67
+ ...(response.confirmationData === undefined ? {} : { confirmationData: response.confirmationData }),
68
+ ...(response.slot.expiryTime === undefined ? {} : { expiryTime: response.slot.expiryTime }),
69
+ ...(response.slot.minimumCheckoutThreshold === undefined
70
+ ? {}
71
+ : { minimumCheckoutThreshold: response.slot.minimumCheckoutThreshold }),
72
+ ...(response.slot.originalMinimumCheckoutThreshold === undefined
73
+ ? {}
74
+ : { originalMinimumCheckoutThreshold: response.slot.originalMinimumCheckoutThreshold }),
75
+ reserved: true,
76
+ ...(response.slot.slotId === undefined ? {} : { slotId: response.slot.slotId }),
77
+ ...(response.slot.timeZoneId === undefined ? {} : { timeZoneId: response.slot.timeZoneId })
78
+ });
79
+ const checkSlotEndTime = (input, now) => {
80
+ if (input.slot.endTime === undefined) {
81
+ return Either.right(undefined);
82
+ }
83
+ const endTime = Date.parse(input.slot.endTime);
84
+ if (Number.isNaN(endTime)) {
85
+ return Either.left(slotReservationSlotEndTimeInvalid());
86
+ }
87
+ return endTime <= now.getTime() ? Either.left(slotReservationSlotExpired()) : Either.right(undefined);
88
+ };
89
+ export const makeSlotReservationInputFromSlot = (input, now) => {
90
+ const selection = Either.mapLeft(parseUnknown(SlotReservationSelectionInputSchema, input), slotReservationSelectionInvalid);
91
+ if (Either.isLeft(selection)) {
92
+ return Either.left(selection.left);
93
+ }
94
+ if (!selection.right.slot.available) {
95
+ return Either.left(slotReservationSlotUnavailable());
96
+ }
97
+ if (selection.right.slot.slotId === undefined) {
98
+ return Either.left(slotReservationSlotIdMissing());
99
+ }
100
+ const endTimeCheck = checkSlotEndTime(selection.right, now);
101
+ if (Either.isLeft(endTimeCheck)) {
102
+ return Either.left(endTimeCheck.left);
103
+ }
104
+ return Either.right({
105
+ allowReservationOverwrite: true,
106
+ confirmSlotReservation: true,
107
+ deliveryDestinationId: selection.right.deliveryDestinationId,
108
+ ...(selection.right.externalAddress === undefined ? {} : { externalAddress: selection.right.externalAddress }),
109
+ regionId: selection.right.regionId,
110
+ slotId: selection.right.slot.slotId
111
+ });
112
+ };
113
+ export const parseSlotListingResponse = (input) => Either.flatMap(Either.mapLeft(parseUnknown(RawSlotListingResponseSchema, input), slotListingSchemaMismatch), (response) => Either.mapLeft(parseUnknown(NormalizedSlotListingSchema, normalizeSlotListingResponse(response)), slotListingSchemaMismatch));
114
+ export const parseSlotReservationResponse = (input) => Either.flatMap(Either.mapLeft(parseUnknown(RawSlotReservationResponseSchema, input), slotReservationSchemaMismatch), (response) => Either.mapLeft(parseUnknown(NormalizedSlotReservationSchema, normalizeSlotReservationResponse(response)), slotReservationSchemaMismatch));
115
+ export const getSlotListings = async (session, input, transport, cookieJarPort) => {
116
+ const request = makeSlotListingRequest(input);
117
+ if (Either.isLeft(request)) {
118
+ return Either.left(request.left);
119
+ }
120
+ const response = await requestVoilaJson(RawSlotListingResponseSchema, session, request.right, transport, cookieJarPort);
121
+ return Either.map(response, (result) => ({
122
+ session: result.session,
123
+ value: normalizeSlotListingResponse(result.value)
124
+ }));
125
+ };
126
+ export const reserveSlot = async (session, input, transport, cookieJarPort) => {
127
+ const request = makeSlotReservationRequest(input);
128
+ if (Either.isLeft(request)) {
129
+ return Either.left(request.left);
130
+ }
131
+ const response = await requestVoilaJson(RawSlotReservationResponseSchema, session, request.right, transport, cookieJarPort);
132
+ return Either.map(response, (result) => ({
133
+ session: result.session,
134
+ value: normalizeSlotReservationResponse(result.value)
135
+ }));
136
+ };
137
+ //# sourceMappingURL=slots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slots.js","sourceRoot":"","sources":["../../../src/voila/slots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import { Either } from "effect";
2
+ import type { ApplyDeliveryContextChangeInput } from "../domain/schemas/index.js";
3
+ export declare const VOILA_BASE_URL = "https://voila.ca";
4
+ export interface SearchRequest {
5
+ readonly method: "GET";
6
+ readonly url: URL;
7
+ }
8
+ export interface CategoryProductsRequest {
9
+ readonly method: "GET";
10
+ readonly url: URL;
11
+ }
12
+ export interface CartViewRequest {
13
+ readonly method: "GET";
14
+ readonly url: URL;
15
+ }
16
+ export interface ActiveCustomerSessionRequest {
17
+ readonly method: "GET";
18
+ readonly url: URL;
19
+ }
20
+ export interface ActiveShoppingContextRequest {
21
+ readonly method: "GET";
22
+ readonly url: URL;
23
+ }
24
+ export interface DeliveryPropositionDetailsRequest {
25
+ readonly method: "GET";
26
+ readonly url: URL;
27
+ }
28
+ export interface DeliveryContextPreviewRequest {
29
+ readonly body: string;
30
+ readonly method: "POST";
31
+ readonly url: URL;
32
+ }
33
+ export interface SetActiveDeliveryDestinationRequest {
34
+ readonly body: string;
35
+ readonly headers?: Readonly<Record<string, string>>;
36
+ readonly method: "PUT";
37
+ readonly url: URL;
38
+ }
39
+ export interface SetActiveCartPropositionRequest {
40
+ readonly body: string;
41
+ readonly headers?: Readonly<Record<string, string>>;
42
+ readonly method: "POST";
43
+ readonly url: URL;
44
+ }
45
+ export interface DeliveryDestinationsRequest {
46
+ readonly method: "GET";
47
+ readonly url: URL;
48
+ }
49
+ export interface DeliveryDestinationRequest {
50
+ readonly method: "GET";
51
+ readonly url: URL;
52
+ }
53
+ export type SearchRequestError = {
54
+ readonly _tag: "SearchInputInvalid";
55
+ readonly message: string;
56
+ };
57
+ export type CategoryProductsRequestError = {
58
+ readonly _tag: "CategoryPageInputInvalid";
59
+ readonly message: string;
60
+ };
61
+ export type CartQuantityRequestError = {
62
+ readonly _tag: "CartQuantityInputInvalid";
63
+ readonly message: string;
64
+ };
65
+ export type DeliveryDestinationsRequestError = {
66
+ readonly _tag: "DeliveryDestinationsInputInvalid";
67
+ readonly message: string;
68
+ };
69
+ export type DeliveryDestinationRequestError = {
70
+ readonly _tag: "DeliveryDestinationInputInvalid";
71
+ readonly message: string;
72
+ };
73
+ export type ActiveShoppingContextRequestError = {
74
+ readonly _tag: "ActiveShoppingContextInputInvalid";
75
+ readonly message: string;
76
+ };
77
+ export type DeliveryPropositionDetailsRequestError = {
78
+ readonly _tag: "DeliveryPropositionDetailsInputInvalid";
79
+ readonly message: string;
80
+ };
81
+ export type DeliveryContextPreviewRequestError = {
82
+ readonly _tag: "DeliveryContextPreviewInputInvalid";
83
+ readonly message: string;
84
+ };
85
+ export type SetActiveDeliveryDestinationRequestError = {
86
+ readonly _tag: "SetActiveDeliveryDestinationInputInvalid";
87
+ readonly message: string;
88
+ };
89
+ export type SetActiveCartPropositionRequestError = {
90
+ readonly _tag: "SetActiveCartPropositionInputInvalid";
91
+ readonly message: string;
92
+ };
93
+ export type ApplyDeliveryContextChangeRequestError = {
94
+ readonly _tag: "ApplyDeliveryContextChangeInputInvalid";
95
+ readonly message: string;
96
+ };
97
+ export declare const makeSearchRequest: (input: unknown) => Either.Either<SearchRequest, SearchRequestError>;
98
+ export declare const makeCategoryProductsRequest: (input: unknown) => Either.Either<CategoryProductsRequest, CategoryProductsRequestError>;
99
+ export declare const makeCartViewRequest: () => CartViewRequest;
100
+ export declare const makeActiveCustomerSessionRequest: () => ActiveCustomerSessionRequest;
101
+ export declare const makeActiveShoppingContextRequest: (input?: unknown) => Either.Either<ActiveShoppingContextRequest, ActiveShoppingContextRequestError>;
102
+ export declare const makeDeliveryDestinationsRequest: (input?: unknown) => Either.Either<DeliveryDestinationsRequest, DeliveryDestinationsRequestError>;
103
+ export declare const makeDeliveryDestinationRequest: (input: unknown) => Either.Either<DeliveryDestinationRequest, DeliveryDestinationRequestError>;
104
+ export declare const makeDeliveryPropositionDetailsRequest: (input: unknown) => Either.Either<DeliveryPropositionDetailsRequest, DeliveryPropositionDetailsRequestError>;
105
+ export declare const makeDeliveryContextPreviewRequest: (input: unknown) => Either.Either<DeliveryContextPreviewRequest, DeliveryContextPreviewRequestError>;
106
+ export declare const makeSetActiveDeliveryDestinationRequest: (input: unknown) => Either.Either<SetActiveDeliveryDestinationRequest, SetActiveDeliveryDestinationRequestError>;
107
+ export declare const makeSetActiveCartPropositionRequest: (input: unknown) => Either.Either<SetActiveCartPropositionRequest, SetActiveCartPropositionRequestError>;
108
+ export declare const parseApplyDeliveryContextChangeInput: (input: unknown) => Either.Either<ApplyDeliveryContextChangeInput, ApplyDeliveryContextChangeRequestError>;
109
+ export declare const makeApplyQuantityRequest: (deltas: unknown) => Either.Either<Readonly<{
110
+ body: string;
111
+ method: "POST";
112
+ url: URL;
113
+ }>, CartQuantityRequestError>;
114
+ //# sourceMappingURL=urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../../src/voila/urls.ts"],"names":[],"mappings":"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"}