@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.
Files changed (75) hide show
  1. package/README.md +98 -2
  2. package/lib/db/PaymentCredentialsCollection.d.ts +1 -2
  3. package/lib/db/PaymentCredentialsCollection.js +1 -2
  4. package/lib/db/PaymentProvidersCollection.d.ts +6 -6
  5. package/lib/db/PaymentProvidersCollection.js +5 -7
  6. package/lib/module/configurePaymentCredentialsModule.d.ts +1 -2
  7. package/lib/module/configurePaymentCredentialsModule.js +1 -2
  8. package/lib/module/configurePaymentModule.d.ts +17 -18
  9. package/lib/module/configurePaymentModule.js +5 -6
  10. package/lib/module/configurePaymentProvidersModule.d.ts +3 -4
  11. package/lib/module/configurePaymentProvidersModule.js +1 -4
  12. package/lib/payment-index.d.ts +4 -5
  13. package/lib/payment-index.js +4 -5
  14. package/lib/payment-settings.d.ts +2 -3
  15. package/lib/payment-settings.js +0 -1
  16. package/package.json +11 -10
  17. package/lib/db/PaymentCredentialsCollection.d.ts.map +0 -1
  18. package/lib/db/PaymentCredentialsCollection.js.map +0 -1
  19. package/lib/db/PaymentCredentialsSchema.d.ts +0 -3
  20. package/lib/db/PaymentCredentialsSchema.d.ts.map +0 -1
  21. package/lib/db/PaymentCredentialsSchema.js +0 -11
  22. package/lib/db/PaymentCredentialsSchema.js.map +0 -1
  23. package/lib/db/PaymentProvidersCollection.d.ts.map +0 -1
  24. package/lib/db/PaymentProvidersCollection.js.map +0 -1
  25. package/lib/db/PaymentProvidersSchema.d.ts +0 -3
  26. package/lib/db/PaymentProvidersSchema.d.ts.map +0 -1
  27. package/lib/db/PaymentProvidersSchema.js +0 -12
  28. package/lib/db/PaymentProvidersSchema.js.map +0 -1
  29. package/lib/director/PaymentAdapter.d.ts +0 -3
  30. package/lib/director/PaymentAdapter.d.ts.map +0 -1
  31. package/lib/director/PaymentAdapter.js +0 -49
  32. package/lib/director/PaymentAdapter.js.map +0 -1
  33. package/lib/director/PaymentDirector.d.ts +0 -3
  34. package/lib/director/PaymentDirector.d.ts.map +0 -1
  35. package/lib/director/PaymentDirector.js +0 -84
  36. package/lib/director/PaymentDirector.js.map +0 -1
  37. package/lib/director/PaymentError.d.ts +0 -7
  38. package/lib/director/PaymentError.d.ts.map +0 -1
  39. package/lib/director/PaymentError.js +0 -8
  40. package/lib/director/PaymentError.js.map +0 -1
  41. package/lib/director/PaymentPricingAdapter.d.ts +0 -4
  42. package/lib/director/PaymentPricingAdapter.d.ts.map +0 -1
  43. package/lib/director/PaymentPricingAdapter.js +0 -25
  44. package/lib/director/PaymentPricingAdapter.js.map +0 -1
  45. package/lib/director/PaymentPricingDirector.d.ts +0 -3
  46. package/lib/director/PaymentPricingDirector.d.ts.map +0 -1
  47. package/lib/director/PaymentPricingDirector.js +0 -58
  48. package/lib/director/PaymentPricingDirector.js.map +0 -1
  49. package/lib/director/PaymentPricingSheet.d.ts +0 -4
  50. package/lib/director/PaymentPricingSheet.d.ts.map +0 -1
  51. package/lib/director/PaymentPricingSheet.js +0 -69
  52. package/lib/director/PaymentPricingSheet.js.map +0 -1
  53. package/lib/director/PaymentProviderType.d.ts +0 -6
  54. package/lib/director/PaymentProviderType.d.ts.map +0 -1
  55. package/lib/director/PaymentProviderType.js +0 -7
  56. package/lib/director/PaymentProviderType.js.map +0 -1
  57. package/lib/module/configurePaymentCredentialsModule.d.ts.map +0 -1
  58. package/lib/module/configurePaymentCredentialsModule.js.map +0 -1
  59. package/lib/module/configurePaymentModule.d.ts.map +0 -1
  60. package/lib/module/configurePaymentModule.js.map +0 -1
  61. package/lib/module/configurePaymentProvidersModule.d.ts.map +0 -1
  62. package/lib/module/configurePaymentProvidersModule.js.map +0 -1
  63. package/lib/payment-index.d.ts.map +0 -1
  64. package/lib/payment-index.js.map +0 -1
  65. package/lib/payment-settings.d.ts.map +0 -1
  66. package/lib/payment-settings.js.map +0 -1
  67. package/src/db/PaymentCredentialsCollection.ts +0 -21
  68. package/src/db/PaymentProvidersCollection.ts +0 -38
  69. package/src/module/configurePaymentCredentialsModule.ts +0 -141
  70. package/src/module/configurePaymentModule.ts +0 -26
  71. package/src/module/configurePaymentProvidersModule.ts +0 -134
  72. package/src/module/payment-index.test.ts +0 -19
  73. package/src/payment-index.ts +0 -4
  74. package/src/payment-settings.ts +0 -54
  75. 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
- });
@@ -1,4 +0,0 @@
1
- export * from './module/configurePaymentModule.js';
2
- export * from './payment-settings.js';
3
- export * from './db/PaymentCredentialsCollection.js';
4
- export * from './db/PaymentProvidersCollection.js';
@@ -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
- };
package/tsconfig.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "../shared/base.tsconfig.json",
3
- "compilerOptions": {
4
- "declarationDir": "./lib",
5
- "rootDir": "./src",
6
- "outDir": "./lib",
7
-
8
- },
9
- "exclude": ["**/*.test.ts", "**/*.test.js", "tests", "lib"]
10
- }