@unchainedshop/core-payment 4.3.3 → 4.4.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.
- package/README.md +98 -2
- package/lib/db/PaymentCredentialsCollection.d.ts +1 -2
- package/lib/db/PaymentCredentialsCollection.js +1 -2
- package/lib/db/PaymentProvidersCollection.d.ts +6 -6
- package/lib/db/PaymentProvidersCollection.js +5 -7
- package/lib/module/configurePaymentCredentialsModule.d.ts +1 -2
- package/lib/module/configurePaymentCredentialsModule.js +1 -2
- package/lib/module/configurePaymentModule.d.ts +17 -18
- package/lib/module/configurePaymentModule.js +5 -6
- package/lib/module/configurePaymentProvidersModule.d.ts +3 -4
- package/lib/module/configurePaymentProvidersModule.js +1 -4
- package/lib/payment-index.d.ts +4 -5
- package/lib/payment-index.js +4 -5
- package/lib/payment-settings.d.ts +2 -3
- package/lib/payment-settings.js +0 -1
- package/package.json +11 -10
- package/lib/db/PaymentCredentialsCollection.d.ts.map +0 -1
- package/lib/db/PaymentCredentialsCollection.js.map +0 -1
- package/lib/db/PaymentCredentialsSchema.d.ts +0 -3
- package/lib/db/PaymentCredentialsSchema.d.ts.map +0 -1
- package/lib/db/PaymentCredentialsSchema.js +0 -11
- package/lib/db/PaymentCredentialsSchema.js.map +0 -1
- package/lib/db/PaymentProvidersCollection.d.ts.map +0 -1
- package/lib/db/PaymentProvidersCollection.js.map +0 -1
- package/lib/db/PaymentProvidersSchema.d.ts +0 -3
- package/lib/db/PaymentProvidersSchema.d.ts.map +0 -1
- package/lib/db/PaymentProvidersSchema.js +0 -12
- package/lib/db/PaymentProvidersSchema.js.map +0 -1
- package/lib/director/PaymentAdapter.d.ts +0 -3
- package/lib/director/PaymentAdapter.d.ts.map +0 -1
- package/lib/director/PaymentAdapter.js +0 -49
- package/lib/director/PaymentAdapter.js.map +0 -1
- package/lib/director/PaymentDirector.d.ts +0 -3
- package/lib/director/PaymentDirector.d.ts.map +0 -1
- package/lib/director/PaymentDirector.js +0 -84
- package/lib/director/PaymentDirector.js.map +0 -1
- package/lib/director/PaymentError.d.ts +0 -7
- package/lib/director/PaymentError.d.ts.map +0 -1
- package/lib/director/PaymentError.js +0 -8
- package/lib/director/PaymentError.js.map +0 -1
- package/lib/director/PaymentPricingAdapter.d.ts +0 -4
- package/lib/director/PaymentPricingAdapter.d.ts.map +0 -1
- package/lib/director/PaymentPricingAdapter.js +0 -25
- package/lib/director/PaymentPricingAdapter.js.map +0 -1
- package/lib/director/PaymentPricingDirector.d.ts +0 -3
- package/lib/director/PaymentPricingDirector.d.ts.map +0 -1
- package/lib/director/PaymentPricingDirector.js +0 -58
- package/lib/director/PaymentPricingDirector.js.map +0 -1
- package/lib/director/PaymentPricingSheet.d.ts +0 -4
- package/lib/director/PaymentPricingSheet.d.ts.map +0 -1
- package/lib/director/PaymentPricingSheet.js +0 -69
- package/lib/director/PaymentPricingSheet.js.map +0 -1
- package/lib/director/PaymentProviderType.d.ts +0 -6
- package/lib/director/PaymentProviderType.d.ts.map +0 -1
- package/lib/director/PaymentProviderType.js +0 -7
- package/lib/director/PaymentProviderType.js.map +0 -1
- package/lib/module/configurePaymentCredentialsModule.d.ts.map +0 -1
- package/lib/module/configurePaymentCredentialsModule.js.map +0 -1
- package/lib/module/configurePaymentModule.d.ts.map +0 -1
- package/lib/module/configurePaymentModule.js.map +0 -1
- package/lib/module/configurePaymentProvidersModule.d.ts.map +0 -1
- package/lib/module/configurePaymentProvidersModule.js.map +0 -1
- package/lib/payment-index.d.ts.map +0 -1
- package/lib/payment-index.js.map +0 -1
- package/lib/payment-settings.d.ts.map +0 -1
- package/lib/payment-settings.js.map +0 -1
- package/src/db/PaymentCredentialsCollection.ts +0 -21
- package/src/db/PaymentProvidersCollection.ts +0 -38
- package/src/module/configurePaymentCredentialsModule.ts +0 -141
- package/src/module/configurePaymentModule.ts +0 -26
- package/src/module/configurePaymentProvidersModule.ts +0 -134
- package/src/module/payment-index.test.ts +0 -19
- package/src/payment-index.ts +0 -4
- package/src/payment-settings.ts +0 -54
- package/tsconfig.json +0 -10
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
-
import { generateDbFilterById, generateDbObjectId, mongodb } from '@unchainedshop/mongodb';
|
|
3
|
-
import { PaymentProvider } from '../db/PaymentProvidersCollection.js';
|
|
4
|
-
import pMemoize from 'p-memoize';
|
|
5
|
-
import ExpiryMap from 'expiry-map';
|
|
6
|
-
|
|
7
|
-
export interface PaymentInterface {
|
|
8
|
-
_id: string;
|
|
9
|
-
label: string;
|
|
10
|
-
version: string;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const PAYMENT_PROVIDER_EVENTS: string[] = [
|
|
14
|
-
'PAYMENT_PROVIDER_CREATE',
|
|
15
|
-
'PAYMENT_PROVIDER_UPDATE',
|
|
16
|
-
'PAYMENT_PROVIDER_REMOVE',
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
const allProvidersCache = new ExpiryMap(process.env.NODE_ENV === 'production' ? 60000 : 1);
|
|
20
|
-
|
|
21
|
-
export const buildFindSelector = ({
|
|
22
|
-
includeDeleted = false,
|
|
23
|
-
...rest
|
|
24
|
-
}: mongodb.Filter<PaymentProvider> & { includeDeleted?: boolean } = {}) => {
|
|
25
|
-
return { ...(includeDeleted ? {} : { deleted: null }), ...rest };
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const configurePaymentProvidersModule = (
|
|
29
|
-
PaymentProviders: mongodb.Collection<PaymentProvider>,
|
|
30
|
-
) => {
|
|
31
|
-
registerEvents(PAYMENT_PROVIDER_EVENTS);
|
|
32
|
-
|
|
33
|
-
return {
|
|
34
|
-
// Queries
|
|
35
|
-
count: async (query: mongodb.Filter<PaymentProvider>): Promise<number> => {
|
|
36
|
-
const providerCount = await PaymentProviders.countDocuments(buildFindSelector(query));
|
|
37
|
-
return providerCount;
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
findProvider: async (
|
|
41
|
-
{
|
|
42
|
-
paymentProviderId,
|
|
43
|
-
...query
|
|
44
|
-
}: mongodb.Filter<PaymentProvider> & {
|
|
45
|
-
paymentProviderId: string;
|
|
46
|
-
},
|
|
47
|
-
options?: mongodb.FindOptions,
|
|
48
|
-
) => {
|
|
49
|
-
return PaymentProviders.findOne(
|
|
50
|
-
paymentProviderId ? generateDbFilterById(paymentProviderId) : query,
|
|
51
|
-
options,
|
|
52
|
-
);
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
findProviders: async (
|
|
56
|
-
query: mongodb.Filter<PaymentProvider> & { includeDeleted?: boolean },
|
|
57
|
-
options: mongodb.FindOptions = { sort: { created: 1 } },
|
|
58
|
-
): Promise<PaymentProvider[]> => {
|
|
59
|
-
const providers = PaymentProviders.find(buildFindSelector(query), options);
|
|
60
|
-
return providers.toArray();
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
allProviders: pMemoize(
|
|
64
|
-
async function () {
|
|
65
|
-
return PaymentProviders.find({ deleted: null }, { sort: { created: 1 } }).toArray();
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
cache: allProvidersCache,
|
|
69
|
-
},
|
|
70
|
-
),
|
|
71
|
-
|
|
72
|
-
providerExists: async ({ paymentProviderId }: { paymentProviderId: string }): Promise<boolean> => {
|
|
73
|
-
const providerCount = await PaymentProviders.countDocuments(
|
|
74
|
-
generateDbFilterById(paymentProviderId, { deleted: null }),
|
|
75
|
-
{ limit: 1 },
|
|
76
|
-
);
|
|
77
|
-
return !!providerCount;
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
// Mutations
|
|
81
|
-
create: async (
|
|
82
|
-
doc: Omit<PaymentProvider, '_id' | 'created'> & Pick<Partial<PaymentProvider>, '_id' | 'created'>,
|
|
83
|
-
): Promise<PaymentProvider> => {
|
|
84
|
-
const { insertedId: paymentProviderId } = await PaymentProviders.insertOne({
|
|
85
|
-
_id: generateDbObjectId(),
|
|
86
|
-
created: new Date(),
|
|
87
|
-
...doc,
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
const paymentProvider = (await PaymentProviders.findOne(
|
|
91
|
-
generateDbFilterById(paymentProviderId),
|
|
92
|
-
{},
|
|
93
|
-
)) as PaymentProvider;
|
|
94
|
-
allProvidersCache.clear();
|
|
95
|
-
await emit('PAYMENT_PROVIDER_CREATE', { paymentProvider });
|
|
96
|
-
return paymentProvider;
|
|
97
|
-
},
|
|
98
|
-
|
|
99
|
-
update: async (_id: string, doc: PaymentProvider) => {
|
|
100
|
-
const paymentProvider = await PaymentProviders.findOneAndUpdate(
|
|
101
|
-
generateDbFilterById(_id),
|
|
102
|
-
{
|
|
103
|
-
$set: {
|
|
104
|
-
updated: new Date(),
|
|
105
|
-
...doc,
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
{ returnDocument: 'after' },
|
|
109
|
-
);
|
|
110
|
-
if (!paymentProvider) return null;
|
|
111
|
-
allProvidersCache.clear();
|
|
112
|
-
await emit('PAYMENT_PROVIDER_UPDATE', { paymentProvider });
|
|
113
|
-
return paymentProvider;
|
|
114
|
-
},
|
|
115
|
-
|
|
116
|
-
delete: async (_id: string) => {
|
|
117
|
-
const paymentProvider = await PaymentProviders.findOneAndUpdate(
|
|
118
|
-
generateDbFilterById(_id),
|
|
119
|
-
{
|
|
120
|
-
$set: {
|
|
121
|
-
deleted: new Date(),
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
{ returnDocument: 'after' },
|
|
125
|
-
);
|
|
126
|
-
if (!paymentProvider) return null;
|
|
127
|
-
allProvidersCache.clear();
|
|
128
|
-
await emit('PAYMENT_PROVIDER_REMOVE', { paymentProvider });
|
|
129
|
-
return paymentProvider;
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
export type PaymentProvidersModule = ReturnType<typeof configurePaymentProvidersModule>;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { describe, it } from 'node:test';
|
|
2
|
-
import assert from 'node:assert';
|
|
3
|
-
import { PaymentProviderType } from '../db/PaymentProvidersCollection.js';
|
|
4
|
-
import { buildFindSelector } from './configurePaymentProvidersModule.js';
|
|
5
|
-
|
|
6
|
-
describe('Payment', () => {
|
|
7
|
-
describe('buildFindSelector', () => {
|
|
8
|
-
it('Return correct filter object when passed no argument', () => {
|
|
9
|
-
assert.deepStrictEqual(buildFindSelector({}), { deleted: null });
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('Return correct filter object when passed type argument', () => {
|
|
13
|
-
assert.deepStrictEqual(buildFindSelector({ type: PaymentProviderType.GENERIC }), {
|
|
14
|
-
type: 'GENERIC',
|
|
15
|
-
deleted: null,
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
});
|
package/src/payment-index.ts
DELETED
package/src/payment-settings.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { PaymentCredentials } from './db/PaymentCredentialsCollection.js';
|
|
2
|
-
import { PaymentProvider } from './db/PaymentProvidersCollection.js';
|
|
3
|
-
|
|
4
|
-
export type FilterProviders<Order = unknown, UnchainedAPI = unknown> = (
|
|
5
|
-
params: {
|
|
6
|
-
providers: PaymentProvider[];
|
|
7
|
-
order: Order;
|
|
8
|
-
},
|
|
9
|
-
unchainedAPI: UnchainedAPI,
|
|
10
|
-
) => Promise<PaymentProvider[]>;
|
|
11
|
-
|
|
12
|
-
export type DetermineDefaultProvider<Order = unknown, UnchainedAPI = unknown> = (
|
|
13
|
-
params: {
|
|
14
|
-
providers: PaymentProvider[];
|
|
15
|
-
order: Order;
|
|
16
|
-
paymentCredentials?: PaymentCredentials[];
|
|
17
|
-
},
|
|
18
|
-
unchainedAPI: UnchainedAPI,
|
|
19
|
-
) => Promise<PaymentProvider | null>;
|
|
20
|
-
|
|
21
|
-
export interface PaymentSettings {
|
|
22
|
-
filterSupportedProviders: FilterProviders;
|
|
23
|
-
determineDefaultProvider: DetermineDefaultProvider;
|
|
24
|
-
configureSettings: (options?: PaymentSettingsOptions) => void;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export type PaymentSettingsOptions = Omit<Partial<PaymentSettings>, 'configureSettings'>;
|
|
28
|
-
|
|
29
|
-
const sortByCreationDate = (left: PaymentProvider, right: PaymentProvider) => {
|
|
30
|
-
return new Date(left.created).getTime() - new Date(right.created).getTime();
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const allProviders: FilterProviders = async ({ providers }) => {
|
|
34
|
-
return providers.toSorted(sortByCreationDate);
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
const firstProviderIsDefault: DetermineDefaultProvider = async ({ providers, paymentCredentials }) => {
|
|
38
|
-
const foundSupportedPreferredProvider = providers.find((supportedPaymentProvider) => {
|
|
39
|
-
return paymentCredentials?.some((paymentCredential) => {
|
|
40
|
-
return supportedPaymentProvider._id === paymentCredential.paymentProviderId;
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
if (foundSupportedPreferredProvider) return foundSupportedPreferredProvider;
|
|
44
|
-
return (providers?.length > 0 && providers[0]) || null;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
export const paymentSettings: PaymentSettings = {
|
|
48
|
-
filterSupportedProviders: allProviders,
|
|
49
|
-
determineDefaultProvider: firstProviderIsDefault,
|
|
50
|
-
configureSettings({ filterSupportedProviders, determineDefaultProvider } = {}) {
|
|
51
|
-
paymentSettings.filterSupportedProviders = filterSupportedProviders || allProviders;
|
|
52
|
-
paymentSettings.determineDefaultProvider = determineDefaultProvider || firstProviderIsDefault;
|
|
53
|
-
},
|
|
54
|
-
};
|