@firfi/voila-sdk 0.1.2 → 0.1.4

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 (44) hide show
  1. package/README.md +5 -3
  2. package/dist/src/domain/schemas/discount.d.ts +439 -0
  3. package/dist/src/domain/schemas/discount.d.ts.map +1 -0
  4. package/dist/src/domain/schemas/discount.js +59 -0
  5. package/dist/src/domain/schemas/discount.js.map +1 -0
  6. package/dist/src/domain/schemas/index.d.ts +2 -0
  7. package/dist/src/domain/schemas/index.d.ts.map +1 -1
  8. package/dist/src/domain/schemas/index.js +2 -0
  9. package/dist/src/domain/schemas/index.js.map +1 -1
  10. package/dist/src/domain/schemas/order-details.d.ts +2623 -0
  11. package/dist/src/domain/schemas/order-details.d.ts.map +1 -0
  12. package/dist/src/domain/schemas/order-details.js +148 -0
  13. package/dist/src/domain/schemas/order-details.js.map +1 -0
  14. package/dist/src/domain/schemas/order-history.d.ts +237 -60
  15. package/dist/src/domain/schemas/order-history.d.ts.map +1 -1
  16. package/dist/src/domain/schemas/order-history.js +17 -12
  17. package/dist/src/domain/schemas/order-history.js.map +1 -1
  18. package/dist/src/domain/schemas/slot.d.ts +4 -4
  19. package/dist/src/index.d.ts +3 -0
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +3 -0
  22. package/dist/src/index.js.map +1 -1
  23. package/dist/src/voila/browser-login-adapter.d.ts +2 -2
  24. package/dist/src/voila/discount-urls.d.ts +13 -0
  25. package/dist/src/voila/discount-urls.d.ts.map +1 -0
  26. package/dist/src/voila/discount-urls.js +33 -0
  27. package/dist/src/voila/discount-urls.js.map +1 -0
  28. package/dist/src/voila/discounted-products.d.ts +53 -0
  29. package/dist/src/voila/discounted-products.d.ts.map +1 -0
  30. package/dist/src/voila/discounted-products.js +195 -0
  31. package/dist/src/voila/discounted-products.js.map +1 -0
  32. package/dist/src/voila/order-details.d.ts +22 -0
  33. package/dist/src/voila/order-details.d.ts.map +1 -0
  34. package/dist/src/voila/order-details.js +267 -0
  35. package/dist/src/voila/order-details.js.map +1 -0
  36. package/dist/src/voila/order-history.d.ts +9 -5
  37. package/dist/src/voila/order-history.d.ts.map +1 -1
  38. package/dist/src/voila/order-history.js +23 -5
  39. package/dist/src/voila/order-history.js.map +1 -1
  40. package/dist/src/voila/order-urls.d.ts +10 -0
  41. package/dist/src/voila/order-urls.d.ts.map +1 -1
  42. package/dist/src/voila/order-urls.js +12 -1
  43. package/dist/src/voila/order-urls.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,267 @@
1
+ import { Either } from "effect";
2
+ import { parseUnknown } from "../domain/parse.js";
3
+ import { CompletedOrderItemsInputSchema, RawDecoratedOrderResponseSchema } from "../domain/schemas/index.js";
4
+ import { requestVoilaJson } from "./http-client.js";
5
+ import { getCompletedOrders } from "./order-history.js";
6
+ import { makeOrderDetailsRequest } from "./order-urls.js";
7
+ const receivedKind = "received";
8
+ const substitutedKind = "substituted";
9
+ const missingKind = "missing";
10
+ const returnedKind = "returned";
11
+ const atRiskKind = "atRisk";
12
+ const decimalRadix = 10;
13
+ const centsPerUnit = 100;
14
+ const firstOrder = 0;
15
+ const inputInvalid = () => ({
16
+ _tag: "CompletedOrderItemsInputInvalid",
17
+ message: "Completed order items request input does not match the SDK schema"
18
+ });
19
+ const orderDetailsUnavailable = () => ({
20
+ _tag: "OrderDetailsUnavailable",
21
+ message: "Voila decorated order details are unavailable for the requested order"
22
+ });
23
+ const firstRecordValue = (record) => {
24
+ for (const value of Object.values(record)) {
25
+ return value;
26
+ }
27
+ return undefined;
28
+ };
29
+ const resolveProduct = (reference, products) => {
30
+ if (reference === undefined) {
31
+ return undefined;
32
+ }
33
+ return typeof reference === "string" ? products[reference] : reference;
34
+ };
35
+ const productIdFor = (item, product) => product?.productId ?? item.productId;
36
+ const quantityFor = (item) => item.quantity ?? 1;
37
+ const unitPriceFor = (item, product) => item.price ?? product?.price?.current;
38
+ const makeNormalizedItem = (item, groupKind, products, substitutionForProductId, substitutionRole) => {
39
+ const product = resolveProduct(item.product, products);
40
+ const productId = productIdFor(item, product);
41
+ const totalPrice = item.finalPrice ?? item.totalPrice;
42
+ const unitPrice = unitPriceFor(item, product);
43
+ const isInCurrentCatalog = item.isInCurrentCatalog ?? product?.isInCurrentCatalog;
44
+ const sellerId = product?.sellerId ?? product?.seller?.id;
45
+ const sellerName = product?.sellerName ?? product?.seller?.name;
46
+ return {
47
+ groupKind,
48
+ quantity: quantityFor(item),
49
+ ...(product?.brand === undefined ? {} : { brand: product.brand }),
50
+ ...(isInCurrentCatalog === undefined ? {} : { isInCurrentCatalog }),
51
+ ...(product?.name === undefined ? {} : { name: product.name }),
52
+ ...(productId === undefined ? {} : { productId }),
53
+ ...(product?.retailerProductId === undefined ? {} : { retailerProductId: product.retailerProductId }),
54
+ ...(item.sample === undefined ? {} : { sample: item.sample }),
55
+ ...(sellerId === undefined ? {} : { sellerId }),
56
+ ...(sellerName === undefined ? {} : { sellerName }),
57
+ ...(substitutionForProductId === undefined ? {} : { substitutionForProductId }),
58
+ ...(substitutionRole === undefined ? {} : { substitutionRole }),
59
+ ...(totalPrice === undefined ? {} : { totalPrice }),
60
+ ...(unitPrice === undefined ? {} : { unitPrice })
61
+ };
62
+ };
63
+ const normalizePlainGroup = (kind, items, products) => ({
64
+ items: (items ?? []).map((item) => makeNormalizedItem(item, kind, products)),
65
+ kind
66
+ });
67
+ const normalizeSubstitutionGroup = (items, products) => ({
68
+ items: (items ?? []).flatMap((item) => {
69
+ const requested = makeNormalizedItem(item, substitutedKind, products, undefined, "requested");
70
+ const substitutes = (item.substitutes ?? []).map((substitute) => makeNormalizedItem(substitute, substitutedKind, products, requested.productId, "substitute"));
71
+ return [requested, ...substitutes];
72
+ }),
73
+ kind: substitutedKind
74
+ });
75
+ const normalizeItemGroups = (order, products) => [
76
+ normalizePlainGroup(receivedKind, order.items, products),
77
+ normalizeSubstitutionGroup(order.substitutedItems, products),
78
+ normalizePlainGroup(missingKind, order.missingItems, products),
79
+ normalizePlainGroup(returnedKind, order.returnedItems, products),
80
+ normalizePlainGroup(atRiskKind, order.itemsOnCheckout, products)
81
+ ].filter((group) => group.items.length > 0);
82
+ const datesFor = (order) => order.slot?.start === undefined && order.slot?.end === undefined && order.slot?.timeZone === undefined
83
+ ? {}
84
+ : {
85
+ dates: {
86
+ ...(order.slot.start === undefined ? {} : { deliveryStartDate: order.slot.start }),
87
+ ...(order.slot.end === undefined ? {} : { deliveryEndDate: order.slot.end }),
88
+ ...(order.slot.timeZone === undefined ? {} : { timeZoneId: order.slot.timeZone })
89
+ }
90
+ };
91
+ export const normalizeOrderDetailsResponse = (response, orderId) => {
92
+ const order = response.entities.order[orderId] ?? firstRecordValue(response.entities.order);
93
+ if (order === undefined) {
94
+ return Either.left(orderDetailsUnavailable());
95
+ }
96
+ const products = response.entities.product ?? {};
97
+ const itemGroups = normalizeItemGroups(order, products);
98
+ const items = itemGroups.flatMap((group) => group.items);
99
+ return Either.right({
100
+ ...datesFor(order),
101
+ itemGroups,
102
+ items,
103
+ orderId: order.orderId,
104
+ ...(order.orderReference === undefined ? {} : { orderReference: order.orderReference }),
105
+ ...(order.prices?.total === undefined ? {} : { orderTotals: { totalPrice: order.prices.total } }),
106
+ ...(order.region?.regionId === undefined ? {} : { regionId: order.region.regionId }),
107
+ ...(order.region?.retailerRegionId === undefined ? {} : { retailerRegionId: order.region.retailerRegionId }),
108
+ ...(order.status === undefined ? {} : { status: order.status })
109
+ });
110
+ };
111
+ const parseCents = (money) => {
112
+ const match = /^([0-9]+)(?:\.([0-9]{1,2}))?$/.exec(money.amount);
113
+ const whole = match?.[1];
114
+ if (whole === undefined) {
115
+ return undefined;
116
+ }
117
+ const fractional = match?.[2] ?? "";
118
+ const centsText = fractional.length === 1 ? `${fractional}0` : fractional.padEnd(2, "0");
119
+ return (Number.parseInt(whole, decimalRadix) * centsPerUnit) + Number.parseInt(centsText, decimalRadix);
120
+ };
121
+ const formatCents = (cents) => {
122
+ const whole = Math.trunc(cents / centsPerUnit);
123
+ const fractional = `${cents % centsPerUnit}`.padStart(2, "0");
124
+ return `${whole}.${fractional}`;
125
+ };
126
+ const datePart = (value) => {
127
+ if (value === undefined || value.length < "yyyy-mm-dd".length) {
128
+ return undefined;
129
+ }
130
+ return value.slice(0, "yyyy-mm-dd".length);
131
+ };
132
+ const isInRange = (order, input) => {
133
+ const deliveredAt = datePart(order.dates.deliveryEndDate);
134
+ if (deliveredAt === undefined) {
135
+ return false;
136
+ }
137
+ if (input.fromDate !== undefined && deliveredAt < input.fromDate) {
138
+ return false;
139
+ }
140
+ return input.toDate === undefined || deliveredAt <= input.toDate;
141
+ };
142
+ const itemKeyFor = (item) => item.productId ?? item.retailerProductId ?? item.name ?? "unknown-product";
143
+ const aggregateItem = (aggregate, item, order) => {
144
+ const orderIds = new Set(aggregate?.orderIds ?? []);
145
+ orderIds.add(order.orderId);
146
+ const cents = item.totalPrice === undefined ? undefined : parseCents(item.totalPrice);
147
+ const nextSpend = aggregate?.spendCents === undefined || cents === undefined
148
+ || aggregate.spendCurrency !== item.totalPrice?.currency
149
+ ? undefined
150
+ : aggregate.spendCents + cents;
151
+ const initialSpend = aggregate === undefined && cents !== undefined && item.totalPrice !== undefined
152
+ ? cents
153
+ : nextSpend;
154
+ const brand = item.brand ?? aggregate?.brand;
155
+ const name = item.name ?? aggregate?.name;
156
+ const productId = item.productId ?? aggregate?.productId;
157
+ const retailerProductId = item.retailerProductId ?? aggregate?.retailerProductId;
158
+ const spendCurrency = item.totalPrice?.currency ?? aggregate?.spendCurrency;
159
+ const lastOrderId = aggregate?.lastOrderId ?? order.orderId;
160
+ const lastOrderedAt = aggregate?.lastOrderedAt ?? order.dates.deliveryEndDate;
161
+ return {
162
+ itemKey: itemKeyFor(item),
163
+ orderIds,
164
+ totalQuantity: (aggregate?.totalQuantity ?? 0) + item.quantity,
165
+ ...(brand === undefined ? {} : { brand }),
166
+ lastOrderId,
167
+ lastOrderedAt,
168
+ ...(name === undefined ? {} : { name }),
169
+ ...(productId === undefined ? {} : { productId }),
170
+ ...(retailerProductId === undefined ? {} : { retailerProductId }),
171
+ ...(initialSpend === undefined ? {} : { spendCents: initialSpend }),
172
+ ...(spendCurrency === undefined ? {} : { spendCurrency })
173
+ };
174
+ };
175
+ const toCompletedOrderItem = (aggregate) => ({
176
+ itemKey: aggregate.itemKey,
177
+ orderCount: aggregate.orderIds.size,
178
+ orderIds: Array.from(aggregate.orderIds),
179
+ totalQuantity: aggregate.totalQuantity,
180
+ ...(aggregate.brand === undefined ? {} : { brand: aggregate.brand }),
181
+ lastOrderId: aggregate.lastOrderId,
182
+ lastOrderedAt: aggregate.lastOrderedAt,
183
+ ...(aggregate.name === undefined ? {} : { name: aggregate.name }),
184
+ ...(aggregate.productId === undefined ? {} : { productId: aggregate.productId }),
185
+ ...(aggregate.retailerProductId === undefined ? {} : { retailerProductId: aggregate.retailerProductId }),
186
+ ...(aggregate.spendCents === undefined || aggregate.spendCurrency === undefined
187
+ ? {}
188
+ : {
189
+ totalSpend: {
190
+ amount: formatCents(aggregate.spendCents),
191
+ currency: aggregate.spendCurrency
192
+ }
193
+ })
194
+ });
195
+ export const getOrderDetails = async (session, input, transport, cookieJarPort) => {
196
+ const request = makeOrderDetailsRequest(input);
197
+ if (Either.isLeft(request)) {
198
+ return Either.left(request.left);
199
+ }
200
+ const response = await requestVoilaJson(RawDecoratedOrderResponseSchema, session, request.right, transport, cookieJarPort);
201
+ return Either.flatMap(response, (result) => Either.map(normalizeOrderDetailsResponse(result.value, request.right.orderId), (value) => ({
202
+ session: result.session,
203
+ value
204
+ })));
205
+ };
206
+ const makeOrderPageInput = (input, pageToken, remainingOrders) => ({
207
+ pageSize: Math.min(input.pageSize ?? input.maxOrders, remainingOrders),
208
+ ...(pageToken === undefined ? {} : { pageToken })
209
+ });
210
+ export const getCompletedOrderItems = async (session, input, transport, cookieJarPort) => {
211
+ const parsed = Either.mapLeft(parseUnknown(CompletedOrderItemsInputSchema, input), inputInvalid);
212
+ if (Either.isLeft(parsed)) {
213
+ return Either.left(parsed.left);
214
+ }
215
+ const matchingOrders = [];
216
+ let currentSession = session;
217
+ let ordersScanned = 0;
218
+ let pageToken = parsed.right.pageToken;
219
+ let pagination = {
220
+ hasNextPage: false
221
+ };
222
+ do {
223
+ const ordersResult = await getCompletedOrders(currentSession, makeOrderPageInput(parsed.right, pageToken, parsed.right.maxOrders - matchingOrders.length), transport, cookieJarPort);
224
+ if (Either.isLeft(ordersResult)) {
225
+ return Either.left(ordersResult.left);
226
+ }
227
+ currentSession = ordersResult.right.session;
228
+ pagination = ordersResult.right.value.pagination;
229
+ ordersScanned += ordersResult.right.value.orders.length;
230
+ for (const order of ordersResult.right.value.orders) {
231
+ if (matchingOrders.length < parsed.right.maxOrders && isInRange(order, parsed.right)) {
232
+ matchingOrders.push(order);
233
+ }
234
+ }
235
+ if (pagination.nextPageToken === pageToken) {
236
+ pageToken = undefined;
237
+ }
238
+ else {
239
+ pageToken = pagination.nextPageToken;
240
+ }
241
+ } while (matchingOrders.length < parsed.right.maxOrders && pagination.hasNextPage && pageToken !== undefined);
242
+ const aggregates = new Map();
243
+ for (const order of matchingOrders.slice(firstOrder, parsed.right.maxOrders)) {
244
+ const details = await getOrderDetails(currentSession, { orderId: order.orderId }, transport, cookieJarPort);
245
+ if (Either.isLeft(details)) {
246
+ return Either.left(details.left);
247
+ }
248
+ currentSession = details.right.session;
249
+ for (const item of details.right.value.items.filter((detailItem) => detailItem.groupKind === receivedKind)) {
250
+ const key = itemKeyFor(item);
251
+ aggregates.set(key, aggregateItem(aggregates.get(key), item, order));
252
+ }
253
+ }
254
+ const items = Array.from(aggregates.values()).map(toCompletedOrderItem)
255
+ .sort((left, right) => right.totalQuantity - left.totalQuantity || left.itemKey.localeCompare(right.itemKey));
256
+ return Either.right({
257
+ session: currentSession,
258
+ value: {
259
+ itemCount: items.length,
260
+ items,
261
+ ordersMatched: matchingOrders.length,
262
+ ordersScanned,
263
+ pagination
264
+ }
265
+ });
266
+ };
267
+ //# sourceMappingURL=order-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-details.js","sourceRoot":"","sources":["../../../src/voila/order-details.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
1
  import { Either } from "effect";
2
- import { type NormalizedCompletedOrdersResult, type RawCompletedOrdersGraphqlResponse, type SessionSnapshot } from "../domain/schemas/index.js";
2
+ import { type NormalizedCompletedOrdersResult, type RawCompletedOrdersConnection, type SessionSnapshot } from "../domain/schemas/index.js";
3
3
  import type { VoilaJsonResult, VoilaSdkError, VoilaTransport } from "./http-client.js";
4
4
  import type { CompletedOrdersRequestError } from "./order-urls.js";
5
5
  import type { CookieJarPort } from "./session-snapshot.js";
6
- export type CompletedOrdersResponseNormalizationError = {
7
- readonly _tag: "CompletedOrdersResponseSchemaMismatch";
6
+ export type CompletedOrdersGraphqlError = {
7
+ readonly _tag: "CompletedOrdersGraphqlError";
8
8
  readonly message: string;
9
9
  };
10
- export type GetCompletedOrdersError = CompletedOrdersRequestError | VoilaSdkError;
10
+ export type CompletedOrdersUnavailableError = {
11
+ readonly _tag: "CompletedOrdersUnavailable";
12
+ readonly message: string;
13
+ };
14
+ export type GetCompletedOrdersError = CompletedOrdersGraphqlError | CompletedOrdersRequestError | CompletedOrdersUnavailableError | VoilaSdkError;
11
15
  export type GetCompletedOrdersResult = VoilaJsonResult<NormalizedCompletedOrdersResult>;
12
- export declare const normalizeCompletedOrdersResponse: (response: RawCompletedOrdersGraphqlResponse) => NormalizedCompletedOrdersResult;
16
+ export declare const normalizeCompletedOrdersResponse: (connection: RawCompletedOrdersConnection) => NormalizedCompletedOrdersResult;
13
17
  export declare const getCompletedOrders: (session: SessionSnapshot, input: unknown, transport: VoilaTransport, cookieJarPort?: CookieJarPort) => Promise<Either.Either<GetCompletedOrdersResult, GetCompletedOrdersError>>;
14
18
  //# sourceMappingURL=order-history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"order-history.d.ts","sourceRoot":"","sources":["../../../src/voila/order-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAEL,KAAK,+BAA+B,EAEpC,KAAK,iCAAiC,EAGtC,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,MAAM,MAAM,yCAAyC,GAAG;IACtD,QAAQ,CAAC,IAAI,EAAE,uCAAuC,CAAA;IACtD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,2BAA2B,GAAG,aAAa,CAAA;AAEjF,MAAM,MAAM,wBAAwB,GAAG,eAAe,CAAC,+BAA+B,CAAC,CAAA;AA2DvF,eAAO,MAAM,gCAAgC,GAC3C,UAAU,iCAAiC,KAC1C,+BAgBF,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,SAAS,eAAe,EACxB,OAAO,OAAO,EACd,WAAW,cAAc,EACzB,gBAAgB,aAAa,KAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CAmB1E,CAAA"}
1
+ {"version":3,"file":"order-history.d.ts","sourceRoot":"","sources":["../../../src/voila/order-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAEL,KAAK,+BAA+B,EAEpC,KAAK,4BAA4B,EAIjC,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAA;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAC/B,2BAA2B,GAC3B,2BAA2B,GAC3B,+BAA+B,GAC/B,aAAa,CAAA;AAEjB,MAAM,MAAM,wBAAwB,GAAG,eAAe,CAAC,+BAA+B,CAAC,CAAA;AA2DvF,eAAO,MAAM,gCAAgC,GAC3C,YAAY,4BAA4B,KACvC,+BAeF,CAAA;AA8BD,eAAO,MAAM,kBAAkB,GAC7B,SAAS,eAAe,EACxB,OAAO,OAAO,EACd,WAAW,cAAc,EACzB,gBAAgB,aAAa,KAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CAuB1E,CAAA"}
@@ -56,8 +56,7 @@ const normalizeCompletedOrder = (order) => ({
56
56
  retailerRegionId: order.region.retailerRegionId,
57
57
  status: order.status
58
58
  });
59
- export const normalizeCompletedOrdersResponse = (response) => {
60
- const connection = response.data.completedOrders;
59
+ export const normalizeCompletedOrdersResponse = (connection) => {
61
60
  const orders = connection.edges.flatMap((edge) => edge?.node === undefined || edge.node === null
62
61
  ? []
63
62
  : [normalizeCompletedOrder(edge.node)]);
@@ -70,15 +69,34 @@ export const normalizeCompletedOrdersResponse = (response) => {
70
69
  }
71
70
  };
72
71
  };
72
+ const graphqlError = () => ({
73
+ _tag: "CompletedOrdersGraphqlError",
74
+ message: "Voila completed orders returned a GraphQL error; account login may be required"
75
+ });
76
+ const completedOrdersUnavailable = () => ({
77
+ _tag: "CompletedOrdersUnavailable",
78
+ message: "Voila completed orders are unavailable for the current session"
79
+ });
80
+ const getCompletedOrdersConnection = (response) => {
81
+ if (response.errors !== undefined && response.errors.length > 0) {
82
+ return Either.left(graphqlError());
83
+ }
84
+ if (response.data === undefined
85
+ || response.data === null
86
+ || response.data.completedOrders === null) {
87
+ return Either.left(completedOrdersUnavailable());
88
+ }
89
+ return Either.right(response.data.completedOrders);
90
+ };
73
91
  export const getCompletedOrders = async (session, input, transport, cookieJarPort) => {
74
92
  const request = makeCompletedOrdersRequest(input);
75
93
  if (Either.isLeft(request)) {
76
94
  return Either.left(request.left);
77
95
  }
78
96
  const response = await requestVoilaJson(RawCompletedOrdersGraphqlResponseSchema, session, request.right, transport, cookieJarPort);
79
- return Either.map(response, (result) => ({
97
+ return Either.flatMap(response, (result) => Either.map(getCompletedOrdersConnection(result.value), (connection) => ({
80
98
  session: result.session,
81
- value: normalizeCompletedOrdersResponse(result.value)
82
- }));
99
+ value: normalizeCompletedOrdersResponse(connection)
100
+ })));
83
101
  };
84
102
  //# sourceMappingURL=order-history.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"order-history.js","sourceRoot":"","sources":["../../../src/voila/order-history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order-history.js","sourceRoot":"","sources":["../../../src/voila/order-history.ts"],"names":[],"mappings":"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"}
@@ -9,5 +9,15 @@ export type CompletedOrdersRequestError = {
9
9
  readonly _tag: "CompletedOrdersInputInvalid";
10
10
  readonly message: string;
11
11
  };
12
+ export interface OrderDetailsRequest {
13
+ readonly method: "GET";
14
+ readonly orderId: string;
15
+ readonly url: URL;
16
+ }
17
+ export type OrderDetailsRequestError = {
18
+ readonly _tag: "OrderDetailsInputInvalid";
19
+ readonly message: string;
20
+ };
12
21
  export declare const makeCompletedOrdersRequest: (input?: unknown) => Either.Either<CompletedOrdersRequest, CompletedOrdersRequestError>;
22
+ export declare const makeOrderDetailsRequest: (input: unknown) => Either.Either<OrderDetailsRequest, OrderDetailsRequestError>;
13
23
  //# sourceMappingURL=order-urls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"order-urls.d.ts","sourceRoot":"","sources":["../../../src/voila/order-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAQ/B,eAAO,MAAM,sBAAsB,mnCAuDjC,CAAA;AAEF,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,2BAA2B,GAAG;IACxC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAYD,eAAO,MAAM,0BAA0B,GACrC,QAAO,OAAY,KAClB,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,CAYjE,CAAA"}
1
+ {"version":3,"file":"order-urls.d.ts","sourceRoot":"","sources":["../../../src/voila/order-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAc/B,eAAO,MAAM,sBAAsB,mnCAuDjC,CAAA;AAEF,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,2BAA2B,GAAG;IACxC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;CAClB;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAiBD,eAAO,MAAM,0BAA0B,GACrC,QAAO,OAAY,KAClB,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,CAYjE,CAAA;AAKH,eAAO,MAAM,uBAAuB,GAClC,OAAO,OAAO,KACb,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAQ3D,CAAA"}
@@ -1,8 +1,9 @@
1
1
  import { Either } from "effect";
2
2
  import { parseUnknown } from "../domain/parse.js";
3
- import { CompletedOrdersInputSchema } from "../domain/schemas/index.js";
3
+ import { CompletedOrdersInputSchema, OrderDetailsInputSchema } from "../domain/schemas/index.js";
4
4
  import { VOILA_BASE_URL } from "./urls.js";
5
5
  const COMPLETED_ORDERS_GRAPHQL_PATH = "/graphql";
6
+ const ORDER_PATH_PREFIX = "/api/order/v6/orders/";
6
7
  export const COMPLETED_ORDERS_QUERY = `query GetCompletedOrders($first: Int!, $after: String) {
7
8
  completedOrders(first: $first, after: $after) {
8
9
  retentionPeriod
@@ -63,6 +64,10 @@ const completedOrdersInputInvalid = () => ({
63
64
  _tag: "CompletedOrdersInputInvalid",
64
65
  message: "Completed orders request input does not match the SDK schema"
65
66
  });
67
+ const orderDetailsInputInvalid = () => ({
68
+ _tag: "OrderDetailsInputInvalid",
69
+ message: "Order details request input does not match the SDK schema"
70
+ });
66
71
  const makeVariables = (input) => ({
67
72
  ...(input.pageToken === undefined ? {} : { after: input.pageToken }),
68
73
  first: input.pageSize
@@ -76,4 +81,10 @@ export const makeCompletedOrdersRequest = (input = {}) => Either.map(Either.mapL
76
81
  method: "POST",
77
82
  url: new URL(COMPLETED_ORDERS_GRAPHQL_PATH, VOILA_BASE_URL)
78
83
  }));
84
+ const makeOrderDetailsUrl = (input) => new URL(`${ORDER_PATH_PREFIX}${encodeURIComponent(input.orderId)}/decorated`, VOILA_BASE_URL);
85
+ export const makeOrderDetailsRequest = (input) => Either.map(Either.mapLeft(parseUnknown(OrderDetailsInputSchema, input), orderDetailsInputInvalid), (orderDetailsInput) => ({
86
+ method: "GET",
87
+ orderId: orderDetailsInput.orderId,
88
+ url: makeOrderDetailsUrl(orderDetailsInput)
89
+ }));
79
90
  //# sourceMappingURL=order-urls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"order-urls.js","sourceRoot":"","sources":["../../../src/voila/order-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAA6B,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,6BAA6B,GAAG,UAAU,CAAA;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDpC,CAAA;AAaF,MAAM,2BAA2B,GAAG,GAAgC,EAAE,CAAC,CAAC;IACtE,IAAI,EAAE,6BAA6B;IACnC,OAAO,EAAE,8DAA8D;CACxE,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,CAAC,KAA2B,EAAE,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACpE,KAAK,EAAE,KAAK,CAAC,QAAQ;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,QAAiB,EAAE,EACiD,EAAE,CACtE,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,2BAA2B,CAAC,EAC5F,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;QACnB,aAAa,EAAE,oBAAoB;QACnC,KAAK,EAAE,sBAAsB;QAC7B,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC;KAC/C,CAAC;IACF,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,IAAI,GAAG,CAAC,6BAA6B,EAAE,cAAc,CAAC;CAC5D,CAAC,CACH,CAAA"}
1
+ {"version":3,"file":"order-urls.js","sourceRoot":"","sources":["../../../src/voila/order-urls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAEL,0BAA0B,EAE1B,uBAAuB,EACxB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,6BAA6B,GAAG,UAAU,CAAA;AAChD,MAAM,iBAAiB,GAAG,uBAAuB,CAAA;AAEjD,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDpC,CAAA;AAwBF,MAAM,2BAA2B,GAAG,GAAgC,EAAE,CAAC,CAAC;IACtE,IAAI,EAAE,6BAA6B;IACnC,OAAO,EAAE,8DAA8D;CACxE,CAAC,CAAA;AAEF,MAAM,wBAAwB,GAAG,GAA6B,EAAE,CAAC,CAAC;IAChE,IAAI,EAAE,0BAA0B;IAChC,OAAO,EAAE,2DAA2D;CACrE,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,CAAC,KAA2B,EAAE,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACpE,KAAK,EAAE,KAAK,CAAC,QAAQ;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,QAAiB,EAAE,EACiD,EAAE,CACtE,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,2BAA2B,CAAC,EAC5F,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;QACnB,aAAa,EAAE,oBAAoB;QACnC,KAAK,EAAE,sBAAsB;QAC7B,SAAS,EAAE,aAAa,CAAC,oBAAoB,CAAC;KAC/C,CAAC;IACF,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,IAAI,GAAG,CAAC,6BAA6B,EAAE,cAAc,CAAC;CAC5D,CAAC,CACH,CAAA;AAEH,MAAM,mBAAmB,GAAG,CAAC,KAAwB,EAAO,EAAE,CAC5D,IAAI,GAAG,CAAC,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;AAE/F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,KAAc,EACgD,EAAE,CAChE,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,uBAAuB,EAAE,KAAK,CAAC,EAAE,wBAAwB,CAAC,EACtF,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACtB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,iBAAiB,CAAC,OAAO;IAClC,GAAG,EAAE,mBAAmB,CAAC,iBAAiB,CAAC;CAC5C,CAAC,CACH,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firfi/voila-sdk",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "TypeScript SDK for Voila grocery search, sessions, and cart workflows",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",