@bash-app/bash-common 30.186.0 → 30.196.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 (53) hide show
  1. package/dist/__tests__/stripeListingSubscriptionMessages.test.d.ts +2 -0
  2. package/dist/__tests__/stripeListingSubscriptionMessages.test.d.ts.map +1 -0
  3. package/dist/__tests__/stripeListingSubscriptionMessages.test.js +18 -0
  4. package/dist/__tests__/stripeListingSubscriptionMessages.test.js.map +1 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/stripeListingSubscriptionMessages.d.ts +13 -0
  10. package/dist/stripeListingSubscriptionMessages.d.ts.map +1 -0
  11. package/dist/stripeListingSubscriptionMessages.js +21 -0
  12. package/dist/stripeListingSubscriptionMessages.js.map +1 -0
  13. package/dist/utils/__tests__/cancellationPolicyRefundResolver.test.d.ts +6 -0
  14. package/dist/utils/__tests__/cancellationPolicyRefundResolver.test.d.ts.map +1 -0
  15. package/dist/utils/__tests__/cancellationPolicyRefundResolver.test.js +104 -0
  16. package/dist/utils/__tests__/cancellationPolicyRefundResolver.test.js.map +1 -0
  17. package/dist/utils/addressUtils.d.ts.map +1 -1
  18. package/dist/utils/addressUtils.js +157 -54
  19. package/dist/utils/addressUtils.js.map +1 -1
  20. package/dist/utils/discountEngine/__tests__/eligibilityValidator.test.js +6 -2
  21. package/dist/utils/discountEngine/__tests__/eligibilityValidator.test.js.map +1 -1
  22. package/dist/utils/mediaClientDefaults.d.ts +7 -0
  23. package/dist/utils/mediaClientDefaults.d.ts.map +1 -0
  24. package/dist/utils/mediaClientDefaults.js +7 -0
  25. package/dist/utils/mediaClientDefaults.js.map +1 -0
  26. package/dist/utils/service/__tests__/partnerServiceProfileWizardPaymentMethod.test.d.ts +2 -0
  27. package/dist/utils/service/__tests__/partnerServiceProfileWizardPaymentMethod.test.d.ts.map +1 -0
  28. package/dist/utils/service/__tests__/partnerServiceProfileWizardPaymentMethod.test.js +18 -0
  29. package/dist/utils/service/__tests__/partnerServiceProfileWizardPaymentMethod.test.js.map +1 -0
  30. package/dist/utils/service/cancellationPolicyRefundResolver.d.ts +30 -0
  31. package/dist/utils/service/cancellationPolicyRefundResolver.d.ts.map +1 -0
  32. package/dist/utils/service/cancellationPolicyRefundResolver.js +82 -0
  33. package/dist/utils/service/cancellationPolicyRefundResolver.js.map +1 -0
  34. package/dist/utils/service/serviceUtils.d.ts +7 -0
  35. package/dist/utils/service/serviceUtils.d.ts.map +1 -1
  36. package/dist/utils/service/serviceUtils.js +178 -16
  37. package/dist/utils/service/serviceUtils.js.map +1 -1
  38. package/dist/utils/slugUtils.d.ts +5 -0
  39. package/dist/utils/slugUtils.d.ts.map +1 -1
  40. package/dist/utils/slugUtils.js +12 -0
  41. package/dist/utils/slugUtils.js.map +1 -1
  42. package/package.json +3 -2
  43. package/prisma/schema.prisma +6 -0
  44. package/src/__tests__/stripeListingSubscriptionMessages.test.ts +37 -0
  45. package/src/index.ts +3 -0
  46. package/src/stripeListingSubscriptionMessages.ts +29 -0
  47. package/src/utils/addressUtils.ts +175 -59
  48. package/src/utils/discountEngine/__tests__/eligibilityValidator.test.ts +6 -2
  49. package/src/utils/mediaClientDefaults.ts +6 -0
  50. package/src/utils/service/__tests__/partnerServiceProfileWizardPaymentMethod.test.ts +29 -0
  51. package/src/utils/service/cancellationPolicyRefundResolver.ts +112 -0
  52. package/src/utils/service/serviceUtils.ts +220 -20
  53. package/src/utils/slugUtils.ts +16 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stripeListingSubscriptionMessages.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripeListingSubscriptionMessages.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/stripeListingSubscriptionMessages.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { isListingSubscriptionPaymentAlreadyAttachedError, LISTING_SUBSCRIPTION_PAYMENT_ALREADY_LINKING_USER_MESSAGE, userFacingMessageForListingSubscriptionStripeError, } from "../stripeListingSubscriptionMessages";
2
+ describe("userFacingMessageForListingSubscriptionStripeError", () => {
3
+ it("maps Stripe already-attached wording to actionable copy", () => {
4
+ expect(userFacingMessageForListingSubscriptionStripeError("The payment method has already been attached to a customer.")).toBe(LISTING_SUBSCRIPTION_PAYMENT_ALREADY_LINKING_USER_MESSAGE);
5
+ });
6
+ it("passes through other messages", () => {
7
+ expect(userFacingMessageForListingSubscriptionStripeError("Something else went wrong.")).toBe("Something else went wrong.");
8
+ });
9
+ });
10
+ describe("isListingSubscriptionPaymentAlreadyAttachedError", () => {
11
+ it("returns true for Stripe already-attached wording", () => {
12
+ expect(isListingSubscriptionPaymentAlreadyAttachedError("The payment method you provided has already been attached to a customer.")).toBe(true);
13
+ });
14
+ it("returns false for unrelated errors", () => {
15
+ expect(isListingSubscriptionPaymentAlreadyAttachedError("Card declined")).toBe(false);
16
+ });
17
+ });
18
+ //# sourceMappingURL=stripeListingSubscriptionMessages.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripeListingSubscriptionMessages.test.js","sourceRoot":"","sources":["../../src/__tests__/stripeListingSubscriptionMessages.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gDAAgD,EAChD,yDAAyD,EACzD,kDAAkD,GACnD,MAAM,sCAAsC,CAAC;AAE9C,QAAQ,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAClE,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CACJ,kDAAkD,CAChD,6DAA6D,CAC9D,CACF,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CACJ,kDAAkD,CAAC,4BAA4B,CAAC,CACjF,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAChE,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CACJ,gDAAgD,CAC9C,0EAA0E,CAC3E,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CACJ,gDAAgD,CAAC,eAAe,CAAC,CAClE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./definitions.js";
2
+ export * from "./stripeListingSubscriptionMessages.js";
2
3
  export * from "./extendedSchemas.js";
3
4
  export * from "./bashFeedTypes.js";
4
5
  export * from "./membershipDefinitions.js";
@@ -21,6 +22,7 @@ export * from "./utils/recurrenceUtils.js";
21
22
  export * from "./utils/service/attendeeOptionUtils.js";
22
23
  export * from "./utils/service/regexUtils.js";
23
24
  export * from "./utils/service/serviceUtils.js";
25
+ export * from "./utils/service/cancellationPolicyRefundResolver.js";
24
26
  export * from "./utils/slugUtils.js";
25
27
  export * from "./utils/sortUtils.js";
26
28
  export * from "./utils/stringUtils.js";
@@ -33,6 +35,7 @@ export * from "./utils/blogUtils.js";
33
35
  export * from "./utils/entityUtils.js";
34
36
  export * from "./utils/generalDateTimeUtils.js";
35
37
  export * from "./utils/luxonUtils.js";
38
+ export * from "./utils/mediaClientDefaults.js";
36
39
  export * from "./utils/mathUtils.js";
37
40
  export * from "./utils/birthdayExperienceQuality.js";
38
41
  export * from "./utils/service/apiServiceBookingApiUtils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAG3C,YAAY,EACV,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,OAAO,GACR,MAAM,gBAAgB,CAAC;AAExB,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAEhD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EACR,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,cAAc,EACjE,MAAM,sBAAsB,CAAC;AAG9B,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wCAAwC,CAAC;AACvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAG3C,YAAY,EACV,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,OAAO,GACR,MAAM,gBAAgB,CAAC;AAExB,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qDAAqD,CAAC;AAEpE,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EACR,WAAW,EAAE,YAAY,EACzB,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,cAAc,EACjE,MAAM,sBAAsB,CAAC;AAG9B,cAAc,+BAA+B,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./definitions.js";
2
+ export * from "./stripeListingSubscriptionMessages.js";
2
3
  export * from "./extendedSchemas.js";
3
4
  export * from "./bashFeedTypes.js";
4
5
  export * from "./membershipDefinitions.js";
@@ -20,6 +21,7 @@ export * from "./utils/recurrenceUtils.js";
20
21
  export * from "./utils/service/attendeeOptionUtils.js";
21
22
  export * from "./utils/service/regexUtils.js";
22
23
  export * from "./utils/service/serviceUtils.js";
24
+ export * from "./utils/service/cancellationPolicyRefundResolver.js";
23
25
  // Venue utils moved to paymentUtils.ts for better organization
24
26
  export * from "./utils/slugUtils.js";
25
27
  export * from "./utils/sortUtils.js";
@@ -33,6 +35,7 @@ export * from "./utils/blogUtils.js";
33
35
  export * from "./utils/entityUtils.js";
34
36
  export * from "./utils/generalDateTimeUtils.js";
35
37
  export * from "./utils/luxonUtils.js";
38
+ export * from "./utils/mediaClientDefaults.js";
36
39
  export * from "./utils/mathUtils.js";
37
40
  export * from "./utils/birthdayExperienceQuality.js";
38
41
  export * from "./utils/service/apiServiceBookingApiUtils.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAa3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,+DAA+D;AAC/D,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAE9C,iFAAiF;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAM3D,kBAAkB;AAClB,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wCAAwC,CAAC;AACvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAa3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qDAAqD,CAAC;AACpE,+DAA+D;AAC/D,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sCAAsC,CAAC;AACrD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAE9C,iFAAiF;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAM3D,kBAAkB;AAClB,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * User-facing copy for listing-subscription (Connect billing customer) payment flows.
3
+ * Kept in bash-common so api and bash-app stay aligned without casts.
4
+ */
5
+ export declare const LISTING_SUBSCRIPTION_PAYMENT_ALREADY_LINKING_USER_MESSAGE = "Your card is still linking to billing. Wait a few seconds and try again.";
6
+ /**
7
+ * Stripe returns this when attaching a PM that is already on the listing-subscription
8
+ * (Connect billing) customer. The card is already linked — callers should refresh
9
+ * subscription readiness instead of treating this as a failure.
10
+ */
11
+ export declare function isListingSubscriptionPaymentAlreadyAttachedError(raw: string): boolean;
12
+ export declare function userFacingMessageForListingSubscriptionStripeError(raw: string): string;
13
+ //# sourceMappingURL=stripeListingSubscriptionMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripeListingSubscriptionMessages.d.ts","sourceRoot":"","sources":["../src/stripeListingSubscriptionMessages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,yDAAyD,6EACM,CAAC;AAE7E;;;;GAIG;AACH,wBAAgB,gDAAgD,CAC9D,GAAG,EAAE,MAAM,GACV,OAAO,CAET;AAED,wBAAgB,kDAAkD,CAChE,GAAG,EAAE,MAAM,GACV,MAAM,CAKR"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * User-facing copy for listing-subscription (Connect billing customer) payment flows.
3
+ * Kept in bash-common so api and bash-app stay aligned without casts.
4
+ */
5
+ const STRIPE_ALREADY_ATTACHED_SUBSTR = /already been attached to a customer/i;
6
+ export const LISTING_SUBSCRIPTION_PAYMENT_ALREADY_LINKING_USER_MESSAGE = "Your card is still linking to billing. Wait a few seconds and try again.";
7
+ /**
8
+ * Stripe returns this when attaching a PM that is already on the listing-subscription
9
+ * (Connect billing) customer. The card is already linked — callers should refresh
10
+ * subscription readiness instead of treating this as a failure.
11
+ */
12
+ export function isListingSubscriptionPaymentAlreadyAttachedError(raw) {
13
+ return STRIPE_ALREADY_ATTACHED_SUBSTR.test(raw);
14
+ }
15
+ export function userFacingMessageForListingSubscriptionStripeError(raw) {
16
+ if (STRIPE_ALREADY_ATTACHED_SUBSTR.test(raw)) {
17
+ return LISTING_SUBSCRIPTION_PAYMENT_ALREADY_LINKING_USER_MESSAGE;
18
+ }
19
+ return raw;
20
+ }
21
+ //# sourceMappingURL=stripeListingSubscriptionMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripeListingSubscriptionMessages.js","sourceRoot":"","sources":["../src/stripeListingSubscriptionMessages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,8BAA8B,GAAG,sCAAsC,CAAC;AAE9E,MAAM,CAAC,MAAM,yDAAyD,GACpE,0EAA0E,CAAC;AAE7E;;;;GAIG;AACH,MAAM,UAAU,gDAAgD,CAC9D,GAAW;IAEX,OAAO,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kDAAkD,CAChE,GAAW;IAEX,IAAI,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,yDAAyD,CAAC;IACnE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tests for cancellation refund resolution (single source of truth:
3
+ * SERVICE_CANCELLATION_POLICY_DATA).
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=cancellationPolicyRefundResolver.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancellationPolicyRefundResolver.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/cancellationPolicyRefundResolver.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Tests for cancellation refund resolution (single source of truth:
3
+ * SERVICE_CANCELLATION_POLICY_DATA).
4
+ */
5
+ import { ServiceCancellationPolicy } from "@prisma/client";
6
+ import { cancellationRuleThresholdHours, getMatchingCancellationRefundRule, hoursUntilEventStart, resolveCancellationRefundFraction, } from "../service/cancellationPolicyRefundResolver.js";
7
+ describe("cancellationPolicyRefundResolver", () => {
8
+ const fixedNow = new Date("2026-01-01T12:00:00.000Z");
9
+ describe("hoursUntilEventStart", () => {
10
+ test("returns 0 when event is in the past", () => {
11
+ expect(hoursUntilEventStart(new Date("2025-12-01T12:00:00.000Z"), fixedNow)).toBe(0);
12
+ });
13
+ test("returns positive hours until start", () => {
14
+ const start = new Date("2026-01-03T12:00:00.000Z");
15
+ expect(hoursUntilEventStart(start, fixedNow)).toBe(48);
16
+ });
17
+ });
18
+ describe("cancellationRuleThresholdHours", () => {
19
+ test("converts days to hours", () => {
20
+ expect(cancellationRuleThresholdHours({ days: 7, refundPercentage: 100 })).toBe(168);
21
+ });
22
+ test("uses hours when set", () => {
23
+ expect(cancellationRuleThresholdHours({ hours: 24, refundPercentage: 50 })).toBe(24);
24
+ });
25
+ });
26
+ describe("VendorStandard (14d full, 3d partial)", () => {
27
+ test("20 days before: 100%", () => {
28
+ const eventStart = new Date("2026-01-21T12:00:00.000Z");
29
+ expect(resolveCancellationRefundFraction(ServiceCancellationPolicy.VendorStandard, {
30
+ eventStart,
31
+ now: fixedNow,
32
+ })).toBe(1);
33
+ });
34
+ test("10 days before: 50%", () => {
35
+ const eventStart = new Date("2026-01-11T12:00:00.000Z");
36
+ expect(resolveCancellationRefundFraction(ServiceCancellationPolicy.VendorStandard, {
37
+ eventStart,
38
+ now: fixedNow,
39
+ })).toBe(0.5);
40
+ });
41
+ test("2 days before: 0%", () => {
42
+ const eventStart = new Date("2026-01-03T12:00:00.000Z");
43
+ expect(resolveCancellationRefundFraction(ServiceCancellationPolicy.VendorStandard, {
44
+ eventStart,
45
+ now: fixedNow,
46
+ })).toBe(0);
47
+ });
48
+ });
49
+ describe("VendorFlexible (7d full, 24h partial)", () => {
50
+ test("8 days before: 100%", () => {
51
+ const eventStart = new Date("2026-01-09T12:00:00.000Z");
52
+ expect(resolveCancellationRefundFraction(ServiceCancellationPolicy.VendorFlexible, {
53
+ eventStart,
54
+ now: fixedNow,
55
+ })).toBe(1);
56
+ });
57
+ test("5 days before: 50%", () => {
58
+ const eventStart = new Date("2026-01-06T12:00:00.000Z");
59
+ expect(resolveCancellationRefundFraction(ServiceCancellationPolicy.VendorFlexible, {
60
+ eventStart,
61
+ now: fixedNow,
62
+ })).toBe(0.5);
63
+ });
64
+ test("12 hours before: 0%", () => {
65
+ const eventStart = new Date("2026-01-02T00:00:00.000Z");
66
+ expect(resolveCancellationRefundFraction(ServiceCancellationPolicy.VendorFlexible, {
67
+ eventStart,
68
+ now: fixedNow,
69
+ })).toBe(0);
70
+ });
71
+ test("6d 23h before (~167h): still 50% tier, not full 7d", () => {
72
+ const eventStart = new Date("2026-01-08T11:00:00.000Z");
73
+ expect(hoursUntilEventStart(eventStart, fixedNow)).toBeCloseTo(167, 0);
74
+ expect(resolveCancellationRefundFraction(ServiceCancellationPolicy.VendorFlexible, {
75
+ eventStart,
76
+ now: fixedNow,
77
+ })).toBe(0.5);
78
+ });
79
+ });
80
+ describe("VeryFlexible (24h full only)", () => {
81
+ test("2 days before: 100%", () => {
82
+ const eventStart = new Date("2026-01-03T12:00:00.000Z");
83
+ expect(resolveCancellationRefundFraction(ServiceCancellationPolicy.VeryFlexible, {
84
+ eventStart,
85
+ now: fixedNow,
86
+ })).toBe(1);
87
+ });
88
+ test("12 hours before: 0%", () => {
89
+ const eventStart = new Date("2026-01-02T00:00:00.000Z");
90
+ expect(resolveCancellationRefundFraction(ServiceCancellationPolicy.VeryFlexible, {
91
+ eventStart,
92
+ now: fixedNow,
93
+ })).toBe(0);
94
+ });
95
+ });
96
+ describe("getMatchingCancellationRefundRule", () => {
97
+ test("returns the winning tier rule object", () => {
98
+ const eventStart = new Date("2026-01-11T12:00:00.000Z");
99
+ const rule = getMatchingCancellationRefundRule(ServiceCancellationPolicy.VendorStandard, { eventStart, now: fixedNow });
100
+ expect(rule).toEqual({ days: 3, refundPercentage: 50 });
101
+ });
102
+ });
103
+ });
104
+ //# sourceMappingURL=cancellationPolicyRefundResolver.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancellationPolicyRefundResolver.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/cancellationPolicyRefundResolver.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"addressUtils.d.ts","sourceRoot":"","sources":["../../src/utils/addressUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAE7E;AAED,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAGpF;AAED,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,CAavG;AAGD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAKR;AAED,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAgCrG;AAED,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAerG;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAKhE;AAGD,wBAAsB,yBAAyB,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAI,OAAO,CAAC,QAAQ,CAAC,CAwC7F;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,iBAAiB;IACzB,kBAAkB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,QAAQ,CA0C3E;AAGD,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAAC,CAuBrH"}
1
+ {"version":3,"file":"addressUtils.d.ts","sourceRoot":"","sources":["../../src/utils/addressUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAE7E;AAED,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,CAGpF;AAoED,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,CA4BvG;AAGD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,CAKR;AAED,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CA2BrG;AAED,wBAAgB,oCAAoC,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAWrG;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAKhE;AA0BD,wBAAsB,yBAAyB,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAI,OAAO,CAAC,QAAQ,CAAC,CA6D7F;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,iBAAiB;IACzB,kBAAkB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,QAAQ,CA0C3E;AAGD,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAAC,CAuBrH"}
@@ -7,16 +7,89 @@ export function addressValuesToDatabaseAddressString(addressValues) {
7
7
  const { place = '', street, city, state, zipCode, country } = addressValues;
8
8
  return [place, street, city, state, zipCode, country].join(ADDRESS_DELIM);
9
9
  }
10
+ /**
11
+ * Older Where step saved locations with a " • " join and dropped empty segments,
12
+ * so the value no longer contained `|` and the full address was mis-parsed as `place`.
13
+ */
14
+ function parseLegacyBulletDelimitedAddress(trimmed) {
15
+ if (!trimmed.includes(' • ')) {
16
+ return null;
17
+ }
18
+ const parts = trimmed.split(' • ').map((p) => p.trim()).filter((p) => p.length > 0);
19
+ const zipLike = (s) => /^\d{5}(-\d{4})?$/.test(s);
20
+ if (parts.length === 6) {
21
+ return {
22
+ place: parts[0] ?? '',
23
+ street: parts[1] ?? '',
24
+ city: parts[2] ?? '',
25
+ state: parts[3] ?? '',
26
+ zipCode: parts[4] ?? '',
27
+ country: parts[5] ?? 'USA',
28
+ };
29
+ }
30
+ const zip3 = parts[3] ?? '';
31
+ const zip4 = parts[4] ?? '';
32
+ // Typical corruption: empty place dropped → "street • city • state • zip • USA"
33
+ if (parts.length === 5 &&
34
+ zipLike(zip3) &&
35
+ /^(USA|United States)$/i.test(zip4)) {
36
+ return {
37
+ place: '',
38
+ street: parts[0] ?? '',
39
+ city: parts[1] ?? '',
40
+ state: parts[2] ?? '',
41
+ zipCode: parts[3] ?? '',
42
+ country: 'USA',
43
+ };
44
+ }
45
+ // "place • street • city • state • zip" (no country segment)
46
+ if (parts.length === 5 && zipLike(zip4)) {
47
+ return {
48
+ place: parts[0] ?? '',
49
+ street: parts[1] ?? '',
50
+ city: parts[2] ?? '',
51
+ state: parts[3] ?? '',
52
+ zipCode: parts[4] ?? '',
53
+ country: 'USA',
54
+ };
55
+ }
56
+ if (parts.length === 4 && zipLike(parts[3] ?? '')) {
57
+ return {
58
+ place: '',
59
+ street: parts[0] ?? '',
60
+ city: parts[1] ?? '',
61
+ state: parts[2] ?? '',
62
+ zipCode: parts[3] ?? '',
63
+ country: 'USA',
64
+ };
65
+ }
66
+ return null;
67
+ }
10
68
  export function databaseAddressStringToAddressValues(addressString) {
11
69
  if (addressString) {
12
- const addressArray = addressString.split(ADDRESS_DELIM);
70
+ const trimmed = addressString.trim();
71
+ if (trimmed.includes(ADDRESS_DELIM)) {
72
+ const addressArray = trimmed.split(ADDRESS_DELIM);
73
+ return {
74
+ place: addressArray[0] ?? '',
75
+ street: addressArray[1] ?? '',
76
+ city: addressArray[2] ?? '',
77
+ state: addressArray[3] ?? '',
78
+ zipCode: addressArray[4] ?? '',
79
+ country: addressArray[5]?.trim() || 'USA',
80
+ };
81
+ }
82
+ const legacyBullet = parseLegacyBulletDelimitedAddress(trimmed);
83
+ if (legacyBullet) {
84
+ return legacyBullet;
85
+ }
13
86
  return {
14
- place: addressArray[0],
15
- street: addressArray[1],
16
- city: addressArray[2],
17
- state: addressArray[3],
18
- zipCode: addressArray[4],
19
- country: 'USA'
87
+ place: trimmed,
88
+ street: '',
89
+ city: '',
90
+ state: '',
91
+ zipCode: '',
92
+ country: '',
20
93
  };
21
94
  }
22
95
  return { place: '', street: '', city: '', state: '', zipCode: '', country: '' };
@@ -30,49 +103,40 @@ export function formatLocalityForCardDisplay(city, state, country) {
30
103
  return parts.join(", ");
31
104
  }
32
105
  export function databaseAddressStringToOneLineString(addressString) {
33
- if (addressString) {
34
- // Special handling for place-only addresses
35
- if (!addressString.includes(ADDRESS_DELIM)) {
36
- return addressString.trim();
37
- }
38
- const address = databaseAddressStringToAddressValues(addressString);
39
- // If only place exists, just return it
40
- if (address.place &&
41
- (!address.street || address.street === 'undefined') &&
42
- (!address.city || address.city === 'undefined') &&
43
- (!address.state || address.state === 'undefined')) {
44
- return address.place.trim();
45
- }
46
- let addressArr = address.place ? [address.place] : [];
47
- // Add non-empty and non-undefined parts
48
- if (address.street && address.street !== 'undefined')
49
- addressArr.push(address.street);
50
- if (address.city && address.city !== 'undefined')
51
- addressArr.push(address.city);
52
- if (address.state && address.state !== 'undefined')
53
- addressArr.push(address.state);
54
- const addressStr = addressArr.filter(str => !!str && str !== 'undefined').join(', ');
55
- // Only add zip code if it exists and isn't 'undefined'
56
- return address.zipCode && address.zipCode !== 'undefined'
57
- ? `${addressStr} ${address.zipCode}`
58
- : addressStr;
106
+ if (!addressString) {
107
+ return '';
59
108
  }
60
- return '';
109
+ const address = databaseAddressStringToAddressValues(addressString);
110
+ // If only place exists, just return it (includes place-only strings with no delimiters)
111
+ if (address.place &&
112
+ (!address.street || address.street === 'undefined') &&
113
+ (!address.city || address.city === 'undefined') &&
114
+ (!address.state || address.state === 'undefined')) {
115
+ return address.place.trim();
116
+ }
117
+ let addressArr = address.place ? [address.place] : [];
118
+ if (address.street && address.street !== 'undefined')
119
+ addressArr.push(address.street);
120
+ if (address.city && address.city !== 'undefined')
121
+ addressArr.push(address.city);
122
+ if (address.state && address.state !== 'undefined')
123
+ addressArr.push(address.state);
124
+ const addressStr = addressArr.filter((str) => !!str && str !== 'undefined').join(', ');
125
+ return address.zipCode && address.zipCode !== 'undefined'
126
+ ? `${addressStr} ${address.zipCode}`
127
+ : addressStr;
61
128
  }
62
129
  export function databaseAddressStringToDisplayString(addressString) {
63
- if (addressString) {
64
- // Special handling for place-only addresses (no delimiters)
65
- if (!addressString.includes(ADDRESS_DELIM)) {
66
- return addressString.trim();
67
- }
68
- const oneLineString = databaseAddressStringToOneLineString(addressString);
69
- const formatted = oneLineString.replace(/([A-Z])(?=[A-Z][a-z])/g, "$1 ") // Add space between a single uppercase letter and a capitalized word
70
- .replace(/(\d)(?=[A-Z])/g, "$1 ") // Add space between numbers and letters
71
- .replace(/,/g, ", ") // Add space after commas
72
- .replace(/undefined/g, ""); // Remove any "undefined" strings
73
- return formatted;
130
+ if (!addressString) {
131
+ return '';
74
132
  }
75
- return '';
133
+ const oneLineString = databaseAddressStringToOneLineString(addressString);
134
+ const formatted = oneLineString
135
+ .replace(/([A-Z])(?=[A-Z][a-z])/g, '$1 ') // Add space between a single uppercase letter and a capitalized word
136
+ .replace(/(\d)(?=[A-Z])/g, '$1 ') // Add space between numbers and letters
137
+ .replace(/,/g, ', ') // Add space after commas
138
+ .replace(/undefined/g, ''); // Remove any "undefined" strings
139
+ return formatted;
76
140
  }
77
141
  export function addressToDisplayString(address) {
78
142
  let addressArr = address.place ? [address.place] : [];
@@ -80,32 +144,71 @@ export function addressToDisplayString(address) {
80
144
  const addressStr = addressArr.filter((str) => !!str).join(', ');
81
145
  return `${addressStr} ${address.zipCode}`;
82
146
  }
147
+ /** Prefer a precise street-level result; `results[0]` is often a coarse area (wrong street line). */
148
+ function pickBestGeocodeResult(results) {
149
+ if (!results?.length)
150
+ return undefined;
151
+ const streetAddress = results.find((r) => r.types?.includes("street_address"));
152
+ if (streetAddress)
153
+ return streetAddress;
154
+ const premise = results.find((r) => r.types?.includes("premise"));
155
+ if (premise)
156
+ return premise;
157
+ const rooftop = results.find((r) => r.geometry?.location_type === "ROOFTOP");
158
+ if (rooftop)
159
+ return rooftop;
160
+ const interpolated = results.find((r) => r.geometry?.location_type === "RANGE_INTERPOLATED");
161
+ if (interpolated)
162
+ return interpolated;
163
+ return results[0];
164
+ }
83
165
  export async function getAddressFromCoordinates(lat, lng) {
84
166
  const apiUrl = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&key=${googleMapsApiKey}&loading=async`;
85
167
  try {
86
168
  const response = await fetch(apiUrl);
87
169
  const data = await response.json();
88
170
  if (data.results.length > 0) {
89
- const addressComponents = data.results[0].address_components;
90
- let street = "";
171
+ const firstResult = pickBestGeocodeResult(data.results);
172
+ if (!firstResult?.address_components) {
173
+ throw new Error("No address found");
174
+ }
175
+ const addressComponents = firstResult.address_components;
176
+ let streetNumber = "";
177
+ let route = "";
91
178
  let city = "";
92
179
  let state = "";
93
180
  let zipCode = "";
94
181
  addressComponents.forEach((component) => {
95
- if (component.types.includes("route")) {
96
- street = component.long_name;
182
+ const types = component.types;
183
+ if (types.includes("street_number")) {
184
+ streetNumber = component.long_name;
185
+ }
186
+ if (types.includes("route")) {
187
+ route = component.long_name;
97
188
  }
98
- else if (component.types.includes("locality")) {
189
+ else if (types.includes("locality")) {
99
190
  city = component.long_name;
100
191
  }
101
- else if (component.types.includes("administrative_area_level_1")) {
192
+ else if (types.includes("administrative_area_level_1")) {
102
193
  state = component.short_name;
103
194
  }
104
- else if (component.types.includes("postal_code")) {
195
+ else if (types.includes("postal_code")) {
105
196
  zipCode = component.long_name;
106
197
  }
107
198
  });
108
- return { place: '', street, city, state, zipCode, country: 'USA' };
199
+ // Match extractAddressComponents: US addresses split street across street_number + route.
200
+ let street = `${streetNumber} ${route}`.trim();
201
+ if (!street && firstResult.formatted_address) {
202
+ const firstSeg = firstResult.formatted_address.split(",")[0]?.trim() ?? "";
203
+ if (firstSeg && city && !firstSeg.toLowerCase().includes(city.toLowerCase())) {
204
+ street = firstSeg;
205
+ }
206
+ else if (firstSeg && !city) {
207
+ street = firstSeg;
208
+ }
209
+ }
210
+ // Place is intentionally empty here — only filled when user picks a Place in Maps UI or types it.
211
+ return { place: "", street, city, state, zipCode, country: "USA" };
109
212
  }
110
213
  else {
111
214
  throw new Error("No address found");
@@ -1 +1 @@
1
- {"version":3,"file":"addressUtils.js","sourceRoot":"","sources":["../../src/utils/addressUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addressUtils.js","sourceRoot":"","sources":["../../src/utils/addressUtils.ts"],"names":[],"mappings":"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"}
@@ -471,9 +471,13 @@ describe("eligibilityValidator", () => {
471
471
  it("should handle timezone differences in dates", () => {
472
472
  const currentDate = new Date("2024-07-15T23:59:59Z");
473
473
  const expiryDate = new Date("2024-07-16T00:00:01Z");
474
- const offer = { id: "offer-1", endDate: expiryDate };
474
+ const offer = {
475
+ id: "offer-1",
476
+ isActive: true,
477
+ endDate: expiryDate,
478
+ };
475
479
  const result = validateOfferEligibility(offer, "user-1", 2, currentDate, 0);
476
- expect(result.eligible).toBe(true); // Still valid by 2 seconds
480
+ expect(result.eligible).toBe(true); // Still valid by 2 seconds (UTC)
477
481
  });
478
482
  });
479
483
  });