@lookiero/checkout 0.3.3 → 0.3.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.
package/README.md CHANGED
@@ -26,25 +26,15 @@ Once we can replace the build of Jenkins for NPM one, we are going to be able to
26
26
  ```json
27
27
  {
28
28
  (...)
29
- "devDependencies": {
29
+ "dependencies": {
30
30
  (...)
31
- "pino-std-serializers": "^6.0.0",
31
+ "@expo/dev-server": "0.1.120",
32
32
  (...)
33
- }
34
- }
35
- ```
36
-
37
- We are hiding the node compatibility deprecation warnings in order to obtain a success message from
38
- the terminal. Remove it once we drop Yarn compatibility.
39
-
40
- ```json
41
- {
42
- (...)
43
- "scripts": {
33
+ },
34
+ "devDependencies": {
44
35
  (...)
45
- "build:app": "tsc -p ./tsconfig.build-app.json --noemit && ENTRY_POINT='./src/Expo.tsx' NODE_ENV=production expo export:web --clear 2> /dev/null"
36
+ "pino-std-serializers": "^6.0.0",
46
37
  (...)
47
38
  }
48
- (...)
49
39
  }
50
40
  ```
@@ -14,6 +14,7 @@ import { FirstAvailableCheckoutByCustomerIdView } from "../../projection/checkou
14
14
  import { FiveItemsDiscountByCustomerIdView } from "../../projection/checkout/viewFiveItemsDiscountByCustomerId";
15
15
  import { IsCheckoutEnabledByCustomerIdView } from "../../projection/checkout/viewIsCheckoutEnabledByCustomerId";
16
16
  import { CheckoutItemByIdView } from "../../projection/checkoutItem/viewCheckoutItemById";
17
+ import { PaymentFlowPayloadByCheckoutIdView } from "../../projection/payment/viewPaymentFlowPayloadByCheckoutId";
17
18
  import { PricingByCheckoutIdView } from "../../projection/pricing/viewPricingByCheckoutId";
18
19
  import { ReturnQuestionsByCheckoutItemIdView } from "../../projection/returnQuestion/listReturnQuestionsByCheckoutItemId";
19
20
  import { UiSettingByKeyView } from "../../projection/uiSetting/viewUiSettingByKey";
@@ -30,6 +31,7 @@ interface BaseBootstrapFunctionArgs<UiSettingGetFunctionArgs extends RepositoryG
30
31
  readonly returnQuestionsByCheckoutItemIdView: ReturnQuestionsByCheckoutItemIdView;
31
32
  readonly bookedSizeChangeProductsVariantsForCheckoutItemView: BookedSizeChangeProductsVariantsForCheckoutItemView;
32
33
  readonly pricingByCheckoutIdView: PricingByCheckoutIdView;
34
+ readonly paymentFlowPayloadByCheckoutIdView: PaymentFlowPayloadByCheckoutIdView;
33
35
  readonly getUiSetting: UiSettingGetFunction<UiSettingGetFunctionArgs>;
34
36
  readonly saveUiSetting: UiSettingSaveFunction<UiSettingSaveFunctionArgs>;
35
37
  readonly uiSettingsDependencies: NeverWhenEmptyRecord<[
@@ -17,11 +17,12 @@ import { viewFiveItemsDiscountByCustomerIdHandler, VIEW_FIVE_ITEMS_DISCOUNT_BY_C
17
17
  import { viewIsCheckoutAccessibleByCustomerIdHandler, VIEW_IS_CHECKOUT_ACCESSIBLE_BY_CUSTOMER_ID, } from "../../projection/checkout/viewIsCheckoutAccessibleByCustomerId";
18
18
  import { viewIsCheckoutEnabledByCustomerIdHandler, VIEW_IS_CHECKOUT_ENABLED_BY_CUSTOMER_ID, } from "../../projection/checkout/viewIsCheckoutEnabledByCustomerId";
19
19
  import { viewCheckoutItemByIdHandler, VIEW_CHECKOUT_ITEM_BY_ID, } from "../../projection/checkoutItem/viewCheckoutItemById";
20
+ import { viewPaymentFlowPayloadByCheckoutIdHandler, VIEW_PAYMENT_FLOW_PAYLOAD_BY_CHECKOUT_ID, } from "../../projection/payment/viewPaymentFlowPayloadByCheckoutId";
20
21
  import { viewPricingByCheckoutIdHandler, VIEW_PRICING_BY_CHECKOUT_ID, } from "../../projection/pricing/viewPricingByCheckoutId";
21
22
  import { listReturnQuestionsByCheckoutItemIdHandler, LIST_RETURN_QUESTIONS_BY_CHECKOUT_ITEM_ID, } from "../../projection/returnQuestion/listReturnQuestionsByCheckoutItemId";
22
23
  import { viewUiSettingByKeyHandler, VIEW_UI_SETTING_BY_KEY, } from "../../projection/uiSetting/viewUiSettingByKey";
23
24
  const MESSAGING_CONTEXT_ID = "Checkout";
24
- const baseBootstrap = ({ checkoutByIdView, firstAvailableCheckoutByCustomerIdView, isCheckoutEnabledByCustomerIdView, fiveItemsDiscountByCustomerIdView, uiSettingByKeyView, checkoutItemByIdView, returnQuestionsByCheckoutItemIdView, bookedSizeChangeProductsVariantsForCheckoutItemView, pricingByCheckoutIdView, getUiSetting, saveUiSetting, uiSettingsDependencies, getCheckout, saveCheckout, checkoutsDependencies, getCheckoutItem, saveCheckoutItem, checkoutItemsDependencies, getCheckoutBooking, saveCheckoutBooking, checkoutBookingsDependencies, }) => messagingBootstrap({ id: MESSAGING_CONTEXT_ID })
25
+ const baseBootstrap = ({ checkoutByIdView, firstAvailableCheckoutByCustomerIdView, isCheckoutEnabledByCustomerIdView, fiveItemsDiscountByCustomerIdView, uiSettingByKeyView, checkoutItemByIdView, returnQuestionsByCheckoutItemIdView, bookedSizeChangeProductsVariantsForCheckoutItemView, pricingByCheckoutIdView, paymentFlowPayloadByCheckoutIdView, getUiSetting, saveUiSetting, uiSettingsDependencies, getCheckout, saveCheckout, checkoutsDependencies, getCheckoutItem, saveCheckoutItem, checkoutItemsDependencies, getCheckoutBooking, saveCheckoutBooking, checkoutBookingsDependencies, }) => messagingBootstrap({ id: MESSAGING_CONTEXT_ID })
25
26
  .query(VIEW_FIVE_ITEMS_DISCOUNT_BY_CUSTOMER_ID, viewFiveItemsDiscountByCustomerIdHandler, {
26
27
  view: fiveItemsDiscountByCustomerIdView,
27
28
  })
@@ -48,6 +49,9 @@ const baseBootstrap = ({ checkoutByIdView, firstAvailableCheckoutByCustomerIdVie
48
49
  .command(REPLACE_CHECKOUT_ITEM, replaceCheckoutItemHandler)(getCheckoutItem, saveCheckoutItem, ...checkoutItemsDependencies)
49
50
  .query(VIEW_PRICING_BY_CHECKOUT_ID, viewPricingByCheckoutIdHandler, {
50
51
  view: pricingByCheckoutIdView,
52
+ })
53
+ .query(VIEW_PAYMENT_FLOW_PAYLOAD_BY_CHECKOUT_ID, viewPaymentFlowPayloadByCheckoutIdHandler, {
54
+ view: paymentFlowPayloadByCheckoutIdView,
51
55
  })
52
56
  .query(VIEW_BOOKED_SIZE_CHANGE_PRODUCT_VARIANTS_FOR_CHECKOUT_ITEM, viewBookedSizeChangeProductsVariantsForCheckoutItemHandler, {
53
57
  view: bookedSizeChangeProductsVariantsForCheckoutItemView,
@@ -9,6 +9,7 @@ import { httpFirstAvailableCheckoutByCustomerIdView } from "../projection/checko
9
9
  import { httpFiveItemsDiscountByCustomerIdView } from "../projection/checkout/httpFiveItemsDiscountByCustomerIdView";
10
10
  import { httpIsCheckoutEnabledByCustomerIdView } from "../projection/checkout/httpIsCheckoutEnabledByCustomerIdView";
11
11
  import { httpCheckoutItemByIdView } from "../projection/checkoutItem/httpCheckoutItemByIdView";
12
+ import { httpPaymentFlowPayloadByCheckoutIdView } from "../projection/payment/httpPaymentFlowPayloadByCheckoutIdView";
12
13
  import { httpPricingByCheckoutIdView } from "../projection/pricing/httpPricingByCheckoutIdView";
13
14
  import { httpReturnQuestionsByCheckoutItemIdView } from "../projection/returnQuestion/httpReturnQuestionsByCheckoutItemIdView";
14
15
  import { storageUiSettingByKeyView } from "../projection/uiSetting/storageUiSettingByKeyView";
@@ -31,6 +32,9 @@ const bootstrap = ({ apiUrl, getAuthToken }) => {
31
32
  pricingByCheckoutIdView: httpPricingByCheckoutIdView({
32
33
  httpPost,
33
34
  }),
35
+ paymentFlowPayloadByCheckoutIdView: httpPaymentFlowPayloadByCheckoutIdView({
36
+ httpPost,
37
+ }),
34
38
  getUiSetting,
35
39
  saveUiSetting,
36
40
  uiSettingsDependencies: [{ read, write }],
@@ -0,0 +1,12 @@
1
+ import { PaymentFlowPayloadByCheckoutIdView } from "../../../projection/payment/viewPaymentFlowPayloadByCheckoutId";
2
+ import { HttpPostFunction } from "../../delivery/http/httpClient";
3
+ interface HttpPaymentFlowPayloadByCheckoutIdView extends PaymentFlowPayloadByCheckoutIdView {
4
+ }
5
+ interface HttpPaymentFlowPayloadByCheckoutIdViewFunctionArgs {
6
+ readonly httpPost: HttpPostFunction;
7
+ }
8
+ interface HttpPaymentFlowPayloadByCheckoutIdViewFunction {
9
+ (args: HttpPaymentFlowPayloadByCheckoutIdViewFunctionArgs): HttpPaymentFlowPayloadByCheckoutIdView;
10
+ }
11
+ declare const httpPaymentFlowPayloadByCheckoutIdView: HttpPaymentFlowPayloadByCheckoutIdViewFunction;
12
+ export { httpPaymentFlowPayloadByCheckoutIdView };
@@ -0,0 +1,9 @@
1
+ const httpPaymentFlowPayloadByCheckoutIdView = ({ httpPost }) => async ({ checkoutId, signal }) => {
2
+ const response = await httpPost({
3
+ endpoint: "/view-payment-flow-payload-by-checkout-id",
4
+ body: { checkoutId },
5
+ signal,
6
+ });
7
+ return !response.ok || response.status === 404 ? null : (await response.json()).result;
8
+ };
9
+ export { httpPaymentFlowPayloadByCheckoutIdView };
@@ -0,0 +1,10 @@
1
+ import { UseQueryFunctionResult } from "@lookiero/messaging-react";
2
+ import { PaymentFlowPayloadProjection } from "../../../../projection/payment/paymentFlowPayload";
3
+ interface UseViewPaymentFlowPayloadByCheckoutIdFunctionArgs {
4
+ readonly checkoutId: string;
5
+ }
6
+ interface UseViewPaymentFlowPayloadByCheckoutIdFunction {
7
+ (args: UseViewPaymentFlowPayloadByCheckoutIdFunctionArgs): UseQueryFunctionResult<PaymentFlowPayloadProjection>;
8
+ }
9
+ declare const useViewPaymentFlowPayloadByCheckoutId: UseViewPaymentFlowPayloadByCheckoutIdFunction;
10
+ export { useViewPaymentFlowPayloadByCheckoutId };
@@ -0,0 +1,17 @@
1
+ import { useQuery } from "@lookiero/messaging-react";
2
+ import { CHECKOUT_ITEM_KEPT } from "../../../../domain/checkoutItem/model/checkoutItemKept";
3
+ import { CHECKOUT_ITEM_REPLACED, } from "../../../../domain/checkoutItem/model/checkoutItemReplaced";
4
+ import { CHECKOUT_ITEM_RETURNED, } from "../../../../domain/checkoutItem/model/checkoutItemReturned";
5
+ import { viewPaymentFlowPayloadByCheckoutId } from "../../../../projection/payment/viewPaymentFlowPayloadByCheckoutId";
6
+ import { MESSAGING_CONTEXT_ID } from "../../../delivery/baseBootstrap";
7
+ const isCheckoutItemKept = (event) => event.name === CHECKOUT_ITEM_KEPT;
8
+ const isCheckoutItemReturned = (event) => event.name === CHECKOUT_ITEM_RETURNED;
9
+ const isCheckoutItemReplaced = (event) => event.name === CHECKOUT_ITEM_REPLACED;
10
+ const shouldInvalidate = (event) => isCheckoutItemKept(event) || isCheckoutItemReplaced(event) || isCheckoutItemReturned(event);
11
+ const useViewPaymentFlowPayloadByCheckoutId = ({ checkoutId }) => useQuery({
12
+ query: viewPaymentFlowPayloadByCheckoutId({ checkoutId }),
13
+ contextId: MESSAGING_CONTEXT_ID,
14
+ invalidation: shouldInvalidate,
15
+ options: { staleTime: Infinity, retry: false, refetchOnWindowFocus: false },
16
+ });
17
+ export { useViewPaymentFlowPayloadByCheckoutId };
@@ -0,0 +1,39 @@
1
+ interface PaymentFlowPayloadItem {
2
+ readonly reference: string;
3
+ }
4
+ interface PaymentFlowPayloadReturnedItemFeedback {
5
+ readonly name: string;
6
+ readonly value: string;
7
+ }
8
+ interface PaymentFlowPayloadReturnedItem extends PaymentFlowPayloadItem {
9
+ readonly feedback: {
10
+ readonly comment?: PaymentFlowPayloadReturnedItemFeedback;
11
+ readonly price?: PaymentFlowPayloadReturnedItemFeedback;
12
+ readonly quality?: PaymentFlowPayloadReturnedItemFeedback;
13
+ readonly shape?: PaymentFlowPayloadReturnedItemFeedback;
14
+ readonly size?: PaymentFlowPayloadReturnedItemFeedback;
15
+ readonly style?: PaymentFlowPayloadReturnedItemFeedback;
16
+ };
17
+ }
18
+ interface PaymentFlowPayloadReplacedItem extends PaymentFlowPayloadItem {
19
+ readonly sizeChange: {
20
+ readonly brand: string;
21
+ readonly color: string;
22
+ readonly description: string;
23
+ readonly id: string;
24
+ readonly reference: string;
25
+ readonly size: string;
26
+ readonly title: string;
27
+ };
28
+ }
29
+ interface PaymentFlowPayloadKeptItem extends PaymentFlowPayloadItem {
30
+ }
31
+ interface PaymentFlowPayloadProjection {
32
+ readonly checkout: {
33
+ readonly bookingId: string;
34
+ readonly orderId: string;
35
+ readonly comment: string;
36
+ readonly items: (PaymentFlowPayloadKeptItem | PaymentFlowPayloadReplacedItem | PaymentFlowPayloadReturnedItem)[];
37
+ };
38
+ }
39
+ export type { PaymentFlowPayloadProjection };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ import { CancelableQueryViewArgs, Query, QueryHandlerFunction, QueryHandlerFunctionArgs } from "@lookiero/messaging";
2
+ import { PaymentFlowPayloadProjection } from "./paymentFlowPayload";
3
+ declare const VIEW_PAYMENT_FLOW_PAYLOAD_BY_CHECKOUT_ID = "view_payment_flow_payload_by_checkout_id";
4
+ interface ViewPaymentFlowPayloadByCheckoutIdPayload {
5
+ readonly checkoutId: string;
6
+ }
7
+ interface ViewPaymentFlowPayloadByCheckoutId extends Query<typeof VIEW_PAYMENT_FLOW_PAYLOAD_BY_CHECKOUT_ID>, ViewPaymentFlowPayloadByCheckoutIdPayload {
8
+ }
9
+ interface ViewPaymentFlowPayloadByCheckoutIdFunction {
10
+ (payload: ViewPaymentFlowPayloadByCheckoutIdPayload): ViewPaymentFlowPayloadByCheckoutId;
11
+ }
12
+ declare const viewPaymentFlowPayloadByCheckoutId: ViewPaymentFlowPayloadByCheckoutIdFunction;
13
+ declare type ViewPaymentFlowPayloadByCheckoutIdResult = PaymentFlowPayloadProjection | null;
14
+ interface PaymentFlowPayloadByCheckoutIdViewArgs extends CancelableQueryViewArgs {
15
+ readonly checkoutId: string;
16
+ }
17
+ interface PaymentFlowPayloadByCheckoutIdView {
18
+ (args: PaymentFlowPayloadByCheckoutIdViewArgs): Promise<ViewPaymentFlowPayloadByCheckoutIdResult>;
19
+ }
20
+ interface ViewPaymentFlowPayloadByCheckoutIdHandlerFunctionArgs extends QueryHandlerFunctionArgs {
21
+ readonly view: PaymentFlowPayloadByCheckoutIdView;
22
+ }
23
+ declare const viewPaymentFlowPayloadByCheckoutIdHandler: QueryHandlerFunction<ViewPaymentFlowPayloadByCheckoutId, ViewPaymentFlowPayloadByCheckoutIdResult, ViewPaymentFlowPayloadByCheckoutIdHandlerFunctionArgs>;
24
+ export type { ViewPaymentFlowPayloadByCheckoutId, PaymentFlowPayloadByCheckoutIdView, ViewPaymentFlowPayloadByCheckoutIdResult, };
25
+ export { VIEW_PAYMENT_FLOW_PAYLOAD_BY_CHECKOUT_ID, viewPaymentFlowPayloadByCheckoutId, viewPaymentFlowPayloadByCheckoutIdHandler, };
@@ -0,0 +1,8 @@
1
+ import { query, } from "@lookiero/messaging";
2
+ const VIEW_PAYMENT_FLOW_PAYLOAD_BY_CHECKOUT_ID = "view_payment_flow_payload_by_checkout_id";
3
+ const viewPaymentFlowPayloadByCheckoutId = (payload) => ({
4
+ ...query({ name: VIEW_PAYMENT_FLOW_PAYLOAD_BY_CHECKOUT_ID }),
5
+ ...payload,
6
+ });
7
+ const viewPaymentFlowPayloadByCheckoutIdHandler = ({ view, signal }) => async ({ checkoutId }) => view({ checkoutId, signal });
8
+ export { VIEW_PAYMENT_FLOW_PAYLOAD_BY_CHECKOUT_ID, viewPaymentFlowPayloadByCheckoutId, viewPaymentFlowPayloadByCheckoutIdHandler, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lookiero/checkout",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [
@@ -16,7 +16,7 @@
16
16
  "web": "expo start --web",
17
17
  "export-analyze-web": "BUNDLE_ANALYZE=true NODE_ENV=production expo export:web",
18
18
  "build": "tsc -b tsconfig.build.json",
19
- "build:app": "tsc -p ./tsconfig.build-app.json --noemit && ENTRY_POINT='./src/Expo.tsx' NODE_ENV=production expo export:web --clear 2> /dev/null",
19
+ "build:app": "tsc -p ./tsconfig.build-app.json --noemit && ENTRY_POINT='./src/Expo.tsx' NODE_ENV=production expo export:web --clear",
20
20
  "lint": "eslint --fix --cache --cache-location ./node_modules/.cache/.eslintcache --ext ts,tsx .",
21
21
  "format": "prettier --write \"**/*.+(json|css|ts|tsx|md)\"",
22
22
  "test": "tsc -p ./tsconfig.test.json --noemit && jest",
@@ -26,6 +26,7 @@
26
26
  "prepare": "husky install"
27
27
  },
28
28
  "dependencies": {
29
+ "@expo/dev-server": "0.1.120",
29
30
  "@gorhom/portal": "^1.0.14",
30
31
  "@lookiero/i18n": "^0.8.1",
31
32
  "@lookiero/i18n-react": "^0.8.1",