Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 57 additions & 4 deletions src/PaymentMethod.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,60 @@
import { toStartCase } from './internal/toStartCase';

export type PaymentMethod =
| 'superpay'
| 'cash'
| 'check'
| 'cashiers_check'
| 'money_order'
| 'comchek'
| 'credit_card'
| 'ach'
| 'direct_deposit'
| 'venmo'
| 'cashapp'
| 'uship'
| 'zelle'
| 'other';

export const SUPERPAY_PAYMENT_METHODS: PaymentMethod[] = ['superpay'];

export const CASH_PAYMENT_METHODS: PaymentMethod[] = ['cash'];

export const CHECK_PAYMENT_METHODS: PaymentMethod[] = [
'check',
'cashiers_check',
'money_order',
'comchek',
];

export const ACH_PAYMENT_METHODS: PaymentMethod[] = ['ach', 'direct_deposit'];

export const CREDIT_CARD_PAYMENT_METHODS: PaymentMethod[] = ['credit_card'];

export const ELECTRONIC_PAYMENT_METHODS: PaymentMethod[] = [
'venmo',
'cashapp',
'uship',
'zelle',
];

export const OTHER_PAYMENT_METHODS: PaymentMethod[] = ['other'];

const ALL_PAYMENT_METHODS_SET = new Set([
...SUPERPAY_PAYMENT_METHODS,
...CASH_PAYMENT_METHODS,
...CHECK_PAYMENT_METHODS,
...ACH_PAYMENT_METHODS,
...CREDIT_CARD_PAYMENT_METHODS,
...ELECTRONIC_PAYMENT_METHODS,
...OTHER_PAYMENT_METHODS,
]);

export const ALL_PAYMENT_METHODS: PaymentMethod[] = Array.from(
ALL_PAYMENT_METHODS_SET,
);

// @deprecated – use `ALL_PAYMENT_METHODS`
export const PAYMENT_METHODS = [
'superpay',
'cash',
Expand All @@ -17,13 +72,11 @@ export const PAYMENT_METHODS = [
'other',
] as const;

export type PaymentMethod = typeof PAYMENT_METHODS[number];

export function isValidPaymentMethod(input: unknown): input is PaymentMethod {
return PAYMENT_METHODS.includes(input as PaymentMethod);
return ALL_PAYMENT_METHODS_SET.has(input as PaymentMethod);
}

/** @deprecated – use `PAYMENT_METHODS` */
/** @deprecated – use `ALL_PAYMENT_METHODS` */
export function listPaymentMethods(): readonly PaymentMethod[] {
return PAYMENT_METHODS;
}
Expand Down
44 changes: 44 additions & 0 deletions src/__tests__/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,26 @@ import * as api from '../index';
it('exports public api', () => {
expect(api).toMatchInlineSnapshot(`
Object {
"ACH_PAYMENT_METHODS": Array [
"ach",
"direct_deposit",
],
"ALL_PAYMENT_METHODS": Array [
"superpay",
"cash",
"check",
"cashiers_check",
"money_order",
"comchek",
"ach",
"direct_deposit",
"credit_card",
"venmo",
"cashapp",
"uship",
"zelle",
"other",
],
"ALL_PAYMENT_TERMS": Array [
"other",
"superpay",
Expand All @@ -26,12 +46,21 @@ it('exports public api', () => {
"on_delivery",
"on_pickup",
],
"CASH_PAYMENT_METHODS": Array [
"cash",
],
"CASH_TERMS": Array [
"cash_on_pickup",
"cash_on_delivery",
"2_days",
"5_days",
],
"CHECK_PAYMENT_METHODS": Array [
"check",
"cashiers_check",
"money_order",
"comchek",
],
"CHECK_TERMS": Array [
"check_on_delivery",
"check_on_pickup",
Expand All @@ -45,6 +74,9 @@ it('exports public api', () => {
"45_days",
"60_days",
],
"CREDIT_CARD_PAYMENT_METHODS": Array [
"credit_card",
],
"CUSTOMER_TYPES": Array [
"BUSINESS",
"DEALER",
Expand All @@ -60,6 +92,12 @@ it('exports public api', () => {
"not_earlier_than",
"not_later_than",
],
"ELECTRONIC_PAYMENT_METHODS": Array [
"venmo",
"cashapp",
"uship",
"zelle",
],
"ELECTRONIC_PAYMENT_TERMS": Array [
"on_delivery",
"on_pickup",
Expand Down Expand Up @@ -99,6 +137,9 @@ it('exports public api', () => {
"60_days",
"other",
],
"OTHER_PAYMENT_METHODS": Array [
"other",
],
"OTHER_PAYMENT_TERMS": Array [
"other",
"superpay",
Expand Down Expand Up @@ -153,6 +194,9 @@ it('exports public api', () => {
"45_days",
"60_days",
],
"SUPERPAY_PAYMENT_METHODS": Array [
"superpay",
],
"SUPERPAY_TERMS": Array [
"1_3_days",
"5_days",
Expand Down
Loading