@unchainedshop/core-payment 4.3.4 → 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/PaymentProvidersCollection.d.ts.map +0 -1
- package/lib/db/PaymentProvidersCollection.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
package/README.md
CHANGED
|
@@ -1,3 +1,99 @@
|
|
|
1
|
-
|
|
1
|
+
[](https://npmjs.com/package/@unchainedshop/core-payment)
|
|
2
|
+
[](https://opensource.org/licenses/EUPL-1.2)
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
# @unchainedshop/core-payment
|
|
5
|
+
|
|
6
|
+
Payment provider module for the Unchained Engine. Manages payment providers, credentials, and payment processing.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install @unchainedshop/core-payment
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { configurePaymentModule, PaymentProviderType } from '@unchainedshop/core-payment';
|
|
18
|
+
|
|
19
|
+
const paymentModule = await configurePaymentModule({ db });
|
|
20
|
+
|
|
21
|
+
// Create a payment provider
|
|
22
|
+
const providerId = await paymentModule.create({
|
|
23
|
+
type: PaymentProviderType.CARD,
|
|
24
|
+
adapterKey: 'shop.unchained.payment.stripe',
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// Find providers for a context
|
|
28
|
+
const providers = await paymentModule.findSupported({
|
|
29
|
+
order: orderObject,
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## API Overview
|
|
34
|
+
|
|
35
|
+
### Module Configuration
|
|
36
|
+
|
|
37
|
+
| Export | Description |
|
|
38
|
+
|--------|-------------|
|
|
39
|
+
| `configurePaymentModule` | Configure and return the payment module |
|
|
40
|
+
|
|
41
|
+
### Queries
|
|
42
|
+
|
|
43
|
+
| Method | Description |
|
|
44
|
+
|--------|-------------|
|
|
45
|
+
| `findProvider` | Find provider by ID |
|
|
46
|
+
| `findProviders` | Find providers with filtering |
|
|
47
|
+
| `count` | Count providers |
|
|
48
|
+
| `providerExists` | Check if provider exists |
|
|
49
|
+
| `findSupported` | Find providers supported for context |
|
|
50
|
+
| `findInterface` | Get provider interface definition |
|
|
51
|
+
|
|
52
|
+
### Mutations
|
|
53
|
+
|
|
54
|
+
| Method | Description |
|
|
55
|
+
|--------|-------------|
|
|
56
|
+
| `create` | Create a new payment provider |
|
|
57
|
+
| `update` | Update provider configuration |
|
|
58
|
+
| `delete` | Soft delete a provider |
|
|
59
|
+
|
|
60
|
+
### Credentials
|
|
61
|
+
|
|
62
|
+
| Method | Description |
|
|
63
|
+
|--------|-------------|
|
|
64
|
+
| `findCredentials` | Find stored credentials for user |
|
|
65
|
+
| `createCredentials` | Store payment credentials |
|
|
66
|
+
| `deleteCredentials` | Remove stored credentials |
|
|
67
|
+
| `markPreferred` | Mark credentials as preferred |
|
|
68
|
+
|
|
69
|
+
### Constants
|
|
70
|
+
|
|
71
|
+
| Export | Description |
|
|
72
|
+
|--------|-------------|
|
|
73
|
+
| `PaymentProviderType` | Provider types (CARD, INVOICE, GENERIC) |
|
|
74
|
+
|
|
75
|
+
### Settings
|
|
76
|
+
|
|
77
|
+
| Export | Description |
|
|
78
|
+
|--------|-------------|
|
|
79
|
+
| `paymentSettings` | Access payment module settings |
|
|
80
|
+
|
|
81
|
+
### Types
|
|
82
|
+
|
|
83
|
+
| Export | Description |
|
|
84
|
+
|--------|-------------|
|
|
85
|
+
| `PaymentProvider` | Provider document type |
|
|
86
|
+
| `PaymentCredentials` | Credentials document type |
|
|
87
|
+
| `PaymentModule` | Module interface type |
|
|
88
|
+
|
|
89
|
+
## Events
|
|
90
|
+
|
|
91
|
+
| Event | Description |
|
|
92
|
+
|-------|-------------|
|
|
93
|
+
| `PAYMENT_PROVIDER_CREATE` | Provider created |
|
|
94
|
+
| `PAYMENT_PROVIDER_UPDATE` | Provider updated |
|
|
95
|
+
| `PAYMENT_PROVIDER_REMOVE` | Provider deleted |
|
|
96
|
+
|
|
97
|
+
## License
|
|
98
|
+
|
|
99
|
+
EUPL-1.2
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mongodb, TimestampFields } from '@unchainedshop/mongodb';
|
|
1
|
+
import { mongodb, type TimestampFields } from '@unchainedshop/mongodb';
|
|
2
2
|
export type PaymentCredentials = {
|
|
3
3
|
_id: string;
|
|
4
4
|
paymentProviderId: string;
|
|
@@ -8,4 +8,3 @@ export type PaymentCredentials = {
|
|
|
8
8
|
meta: any;
|
|
9
9
|
} & TimestampFields;
|
|
10
10
|
export declare const PaymentCredentialsCollection: (db: mongodb.Db) => Promise<mongodb.Collection<PaymentCredentials>>;
|
|
11
|
-
//# sourceMappingURL=PaymentCredentialsCollection.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buildDbIndexes } from '@unchainedshop/mongodb';
|
|
1
|
+
import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
2
2
|
export const PaymentCredentialsCollection = async (db) => {
|
|
3
3
|
const PaymentCredentialsCol = db.collection('payment_credentials');
|
|
4
4
|
await buildDbIndexes(PaymentCredentialsCol, [
|
|
@@ -7,4 +7,3 @@ export const PaymentCredentialsCollection = async (db) => {
|
|
|
7
7
|
]);
|
|
8
8
|
return PaymentCredentialsCol;
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=PaymentCredentialsCollection.js.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { mongodb, TimestampFields } from '@unchainedshop/mongodb';
|
|
2
|
-
export declare
|
|
3
|
-
INVOICE
|
|
4
|
-
GENERIC
|
|
5
|
-
}
|
|
1
|
+
import { mongodb, type TimestampFields } from '@unchainedshop/mongodb';
|
|
2
|
+
export declare const PaymentProviderType: {
|
|
3
|
+
readonly INVOICE: "INVOICE";
|
|
4
|
+
readonly GENERIC: "GENERIC";
|
|
5
|
+
};
|
|
6
|
+
export type PaymentProviderType = (typeof PaymentProviderType)[keyof typeof PaymentProviderType];
|
|
6
7
|
export type PaymentConfiguration = {
|
|
7
8
|
key: string;
|
|
8
9
|
value: string | null;
|
|
@@ -14,4 +15,3 @@ export type PaymentProvider = {
|
|
|
14
15
|
configuration: PaymentConfiguration;
|
|
15
16
|
} & TimestampFields;
|
|
16
17
|
export declare const PaymentProvidersCollection: (db: mongodb.Db) => Promise<mongodb.Collection<PaymentProvider>>;
|
|
17
|
-
//# sourceMappingURL=PaymentProvidersCollection.d.ts.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { buildDbIndexes } from '@unchainedshop/mongodb';
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
})(PaymentProviderType || (PaymentProviderType = {}));
|
|
1
|
+
import { mongodb, buildDbIndexes } from '@unchainedshop/mongodb';
|
|
2
|
+
export const PaymentProviderType = {
|
|
3
|
+
INVOICE: 'INVOICE',
|
|
4
|
+
GENERIC: 'GENERIC',
|
|
5
|
+
};
|
|
7
6
|
export const PaymentProvidersCollection = async (db) => {
|
|
8
7
|
const PaymentProviders = db.collection('payment-providers');
|
|
9
8
|
await buildDbIndexes(PaymentProviders, [
|
|
@@ -21,4 +20,3 @@ export const PaymentProvidersCollection = async (db) => {
|
|
|
21
20
|
]);
|
|
22
21
|
return PaymentProviders;
|
|
23
22
|
};
|
|
24
|
-
//# sourceMappingURL=PaymentProvidersCollection.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mongodb } from '@unchainedshop/mongodb';
|
|
2
|
-
import { PaymentCredentials as PaymentCredentialsType } from '../db/PaymentCredentialsCollection.
|
|
2
|
+
import type { PaymentCredentials as PaymentCredentialsType } from '../db/PaymentCredentialsCollection.ts';
|
|
3
3
|
export declare const configurePaymentCredentialsModule: (PaymentCredentials: mongodb.Collection<PaymentCredentialsType>) => {
|
|
4
4
|
markPreferred: ({ userId, paymentCredentialsId, }: {
|
|
5
5
|
userId: string;
|
|
@@ -20,4 +20,3 @@ export declare const configurePaymentCredentialsModule: (PaymentCredentials: mon
|
|
|
20
20
|
deleteUserPaymentCredentials: (userId: string) => Promise<number>;
|
|
21
21
|
};
|
|
22
22
|
export type PaymentCredentialsModule = ReturnType<typeof configurePaymentCredentialsModule>;
|
|
23
|
-
//# sourceMappingURL=configurePaymentCredentialsModule.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
|
|
1
|
+
import { mongodb, generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
|
|
2
2
|
export const configurePaymentCredentialsModule = (PaymentCredentials) => {
|
|
3
3
|
const markPreferred = async ({ userId, paymentCredentialsId, }) => {
|
|
4
4
|
const paymentCredentials = await PaymentCredentials.findOneAndUpdate({
|
|
@@ -78,4 +78,3 @@ export const configurePaymentCredentialsModule = (PaymentCredentials) => {
|
|
|
78
78
|
},
|
|
79
79
|
};
|
|
80
80
|
};
|
|
81
|
-
//# sourceMappingURL=configurePaymentCredentialsModule.js.map
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { PaymentSettingsOptions } from '../payment-settings.
|
|
2
|
-
import { ModuleInput } from '@unchainedshop/mongodb';
|
|
1
|
+
import { type PaymentSettingsOptions } from '../payment-settings.ts';
|
|
2
|
+
import type { ModuleInput } from '@unchainedshop/mongodb';
|
|
3
3
|
export declare const configurePaymentModule: ({ db, options: paymentOptions, }: ModuleInput<PaymentSettingsOptions>) => Promise<{
|
|
4
4
|
paymentProviders: {
|
|
5
|
-
count: (query: import("mongodb").Filter<import("../db/PaymentProvidersCollection.
|
|
6
|
-
findProvider: ({ paymentProviderId, ...query }: import("mongodb").Filter<import("../db/PaymentProvidersCollection.
|
|
5
|
+
count: (query: import("mongodb").Filter<import("../db/PaymentProvidersCollection.ts").PaymentProvider>) => Promise<number>;
|
|
6
|
+
findProvider: ({ paymentProviderId, ...query }: import("mongodb").Filter<import("../db/PaymentProvidersCollection.ts").PaymentProvider> & {
|
|
7
7
|
paymentProviderId: string;
|
|
8
|
-
}, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentProvidersCollection.
|
|
9
|
-
findProviders: (query: import("mongodb").Filter<import("../db/PaymentProvidersCollection.
|
|
8
|
+
}, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentProvidersCollection.ts").PaymentProvider | null>;
|
|
9
|
+
findProviders: (query: import("mongodb").Filter<import("../db/PaymentProvidersCollection.ts").PaymentProvider> & {
|
|
10
10
|
includeDeleted?: boolean;
|
|
11
|
-
}, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentProvidersCollection.
|
|
12
|
-
allProviders: () => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.
|
|
11
|
+
}, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentProvidersCollection.ts").PaymentProvider[]>;
|
|
12
|
+
allProviders: () => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.ts").PaymentProvider>[]>;
|
|
13
13
|
providerExists: ({ paymentProviderId }: {
|
|
14
14
|
paymentProviderId: string;
|
|
15
15
|
}) => Promise<boolean>;
|
|
16
|
-
create: (doc: Omit<import("../db/PaymentProvidersCollection.
|
|
17
|
-
update: (_id: string, doc: import("../db/PaymentProvidersCollection.
|
|
18
|
-
delete: (_id: string) => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.
|
|
16
|
+
create: (doc: Omit<import("../db/PaymentProvidersCollection.ts").PaymentProvider, "_id" | "created"> & Pick<Partial<import("../db/PaymentProvidersCollection.ts").PaymentProvider>, "_id" | "created">) => Promise<import("../db/PaymentProvidersCollection.ts").PaymentProvider>;
|
|
17
|
+
update: (_id: string, doc: import("../db/PaymentProvidersCollection.ts").PaymentProvider) => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.ts").PaymentProvider> | null>;
|
|
18
|
+
delete: (_id: string) => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.ts").PaymentProvider> | null>;
|
|
19
19
|
};
|
|
20
20
|
paymentCredentials: {
|
|
21
21
|
markPreferred: ({ userId, paymentCredentialsId, }: {
|
|
22
22
|
userId: string;
|
|
23
23
|
paymentCredentialsId: string;
|
|
24
|
-
}) => Promise<import("mongodb").WithId<import("../db/PaymentCredentialsCollection.
|
|
25
|
-
count(query: import("mongodb").Filter<import("../db/PaymentCredentialsCollection.
|
|
24
|
+
}) => Promise<import("mongodb").WithId<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials> | null>;
|
|
25
|
+
count(query: import("mongodb").Filter<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials>): Promise<number>;
|
|
26
26
|
credentialsExists: ({ paymentCredentialsId, }: {
|
|
27
27
|
paymentCredentialsId: string;
|
|
28
28
|
}) => Promise<boolean>;
|
|
@@ -30,12 +30,11 @@ export declare const configurePaymentModule: ({ db, options: paymentOptions, }:
|
|
|
30
30
|
paymentCredentialsId?: string;
|
|
31
31
|
userId?: string;
|
|
32
32
|
paymentProviderId?: string;
|
|
33
|
-
}, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentCredentialsCollection.
|
|
34
|
-
findPaymentCredentials: (query: import("mongodb").Filter<import("../db/PaymentCredentialsCollection.
|
|
35
|
-
upsertCredentials: ({ userId, paymentProviderId, _id, token, ...meta }: Pick<import("../db/PaymentCredentialsCollection.
|
|
36
|
-
removeCredentials: (paymentCredentialsId: string) => Promise<import("mongodb").WithId<import("../db/PaymentCredentialsCollection.
|
|
33
|
+
}, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials | null>;
|
|
34
|
+
findPaymentCredentials: (query: import("mongodb").Filter<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials>, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials[]>;
|
|
35
|
+
upsertCredentials: ({ userId, paymentProviderId, _id, token, ...meta }: Pick<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials, "userId" | "paymentProviderId" | "_id" | "token"> & Record<string, any>) => Promise<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials>;
|
|
36
|
+
removeCredentials: (paymentCredentialsId: string) => Promise<import("mongodb").WithId<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials> | null>;
|
|
37
37
|
deleteUserPaymentCredentials: (userId: string) => Promise<number>;
|
|
38
38
|
};
|
|
39
39
|
}>;
|
|
40
40
|
export type PaymentModule = Awaited<ReturnType<typeof configurePaymentModule>>;
|
|
41
|
-
//# sourceMappingURL=configurePaymentModule.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { PaymentCredentialsCollection } from
|
|
2
|
-
import { PaymentProvidersCollection } from
|
|
3
|
-
import { configurePaymentCredentialsModule } from
|
|
4
|
-
import { configurePaymentProvidersModule } from
|
|
5
|
-
import { paymentSettings } from
|
|
1
|
+
import { PaymentCredentialsCollection } from "../db/PaymentCredentialsCollection.js";
|
|
2
|
+
import { PaymentProvidersCollection } from "../db/PaymentProvidersCollection.js";
|
|
3
|
+
import { configurePaymentCredentialsModule } from "./configurePaymentCredentialsModule.js";
|
|
4
|
+
import { configurePaymentProvidersModule } from "./configurePaymentProvidersModule.js";
|
|
5
|
+
import { paymentSettings } from "../payment-settings.js";
|
|
6
6
|
export const configurePaymentModule = async ({ db, options: paymentOptions = {}, }) => {
|
|
7
7
|
const PaymentProviders = await PaymentProvidersCollection(db);
|
|
8
8
|
const PaymentCredentials = await PaymentCredentialsCollection(db);
|
|
@@ -14,4 +14,3 @@ export const configurePaymentModule = async ({ db, options: paymentOptions = {},
|
|
|
14
14
|
paymentCredentials,
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=configurePaymentModule.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mongodb } from '@unchainedshop/mongodb';
|
|
2
|
-
import { PaymentProvider } from '../db/PaymentProvidersCollection.
|
|
2
|
+
import type { PaymentProvider } from '../db/PaymentProvidersCollection.ts';
|
|
3
3
|
export interface PaymentInterface {
|
|
4
4
|
_id: string;
|
|
5
5
|
label: string;
|
|
@@ -8,12 +8,12 @@ export interface PaymentInterface {
|
|
|
8
8
|
export declare const buildFindSelector: ({ includeDeleted, ...rest }?: mongodb.Filter<PaymentProvider> & {
|
|
9
9
|
includeDeleted?: boolean;
|
|
10
10
|
}) => {
|
|
11
|
-
type?: mongodb.Condition<import("../db/PaymentProvidersCollection.
|
|
11
|
+
type?: mongodb.Condition<import("../db/PaymentProvidersCollection.ts").PaymentProviderType> | undefined;
|
|
12
12
|
created?: mongodb.Condition<Date> | undefined;
|
|
13
13
|
deleted?: Date | mongodb.FilterOperators<Date | null | undefined> | null | undefined;
|
|
14
14
|
updated?: mongodb.Condition<Date | undefined>;
|
|
15
15
|
adapterKey?: mongodb.Condition<string> | undefined;
|
|
16
|
-
configuration?: mongodb.Condition<import("../db/PaymentProvidersCollection.
|
|
16
|
+
configuration?: mongodb.Condition<import("../db/PaymentProvidersCollection.ts").PaymentConfiguration> | undefined;
|
|
17
17
|
_id?: mongodb.Condition<string> | undefined;
|
|
18
18
|
$and?: mongodb.Filter<mongodb.WithId<PaymentProvider>>[] | undefined;
|
|
19
19
|
$nor?: mongodb.Filter<mongodb.WithId<PaymentProvider>>[] | undefined;
|
|
@@ -44,4 +44,3 @@ export declare const configurePaymentProvidersModule: (PaymentProviders: mongodb
|
|
|
44
44
|
delete: (_id: string) => Promise<mongodb.WithId<PaymentProvider> | null>;
|
|
45
45
|
};
|
|
46
46
|
export type PaymentProvidersModule = ReturnType<typeof configurePaymentProvidersModule>;
|
|
47
|
-
//# sourceMappingURL=configurePaymentProvidersModule.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
-
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
|
|
2
|
+
import { generateDbFilterById, generateDbObjectId, mongodb } from '@unchainedshop/mongodb';
|
|
3
3
|
import pMemoize from 'p-memoize';
|
|
4
4
|
import ExpiryMap from 'expiry-map';
|
|
5
5
|
const PAYMENT_PROVIDER_EVENTS = [
|
|
@@ -14,7 +14,6 @@ export const buildFindSelector = ({ includeDeleted = false, ...rest } = {}) => {
|
|
|
14
14
|
export const configurePaymentProvidersModule = (PaymentProviders) => {
|
|
15
15
|
registerEvents(PAYMENT_PROVIDER_EVENTS);
|
|
16
16
|
return {
|
|
17
|
-
// Queries
|
|
18
17
|
count: async (query) => {
|
|
19
18
|
const providerCount = await PaymentProviders.countDocuments(buildFindSelector(query));
|
|
20
19
|
return providerCount;
|
|
@@ -35,7 +34,6 @@ export const configurePaymentProvidersModule = (PaymentProviders) => {
|
|
|
35
34
|
const providerCount = await PaymentProviders.countDocuments(generateDbFilterById(paymentProviderId, { deleted: null }), { limit: 1 });
|
|
36
35
|
return !!providerCount;
|
|
37
36
|
},
|
|
38
|
-
// Mutations
|
|
39
37
|
create: async (doc) => {
|
|
40
38
|
const { insertedId: paymentProviderId } = await PaymentProviders.insertOne({
|
|
41
39
|
_id: generateDbObjectId(),
|
|
@@ -74,4 +72,3 @@ export const configurePaymentProvidersModule = (PaymentProviders) => {
|
|
|
74
72
|
},
|
|
75
73
|
};
|
|
76
74
|
};
|
|
77
|
-
//# sourceMappingURL=configurePaymentProvidersModule.js.map
|
package/lib/payment-index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export * from './module/configurePaymentModule.
|
|
2
|
-
export * from './payment-settings.
|
|
3
|
-
export * from './db/PaymentCredentialsCollection.
|
|
4
|
-
export * from './db/PaymentProvidersCollection.
|
|
5
|
-
//# sourceMappingURL=payment-index.d.ts.map
|
|
1
|
+
export * from './module/configurePaymentModule.ts';
|
|
2
|
+
export * from './payment-settings.ts';
|
|
3
|
+
export * from './db/PaymentCredentialsCollection.ts';
|
|
4
|
+
export * from './db/PaymentProvidersCollection.ts';
|
package/lib/payment-index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
//# sourceMappingURL=payment-index.js.map
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import { PaymentCredentials } from './db/PaymentCredentialsCollection.
|
|
2
|
-
import { PaymentProvider } from './db/PaymentProvidersCollection.
|
|
1
|
+
import type { PaymentCredentials } from './db/PaymentCredentialsCollection.ts';
|
|
2
|
+
import type { PaymentProvider } from './db/PaymentProvidersCollection.ts';
|
|
3
3
|
export type FilterProviders<Order = unknown, UnchainedAPI = unknown> = (params: {
|
|
4
4
|
providers: PaymentProvider[];
|
|
5
5
|
order: Order;
|
|
@@ -16,4 +16,3 @@ export interface PaymentSettings {
|
|
|
16
16
|
}
|
|
17
17
|
export type PaymentSettingsOptions = Omit<Partial<PaymentSettings>, 'configureSettings'>;
|
|
18
18
|
export declare const paymentSettings: PaymentSettings;
|
|
19
|
-
//# sourceMappingURL=payment-settings.d.ts.map
|
package/lib/payment-settings.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-payment",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"main": "lib/payment-index.js",
|
|
5
5
|
"types": "lib/payment-index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"build": "tsc -b",
|
|
10
10
|
"prepublishOnly": "npm run clean && npm run build",
|
|
11
11
|
"watch": "tsc -w",
|
|
12
|
-
"test": "
|
|
13
|
-
"test:watch": "
|
|
12
|
+
"test": "node --test",
|
|
13
|
+
"test:watch": "node --test --watch"
|
|
14
14
|
},
|
|
15
15
|
"repository": {
|
|
16
16
|
"type": "git",
|
|
@@ -22,8 +22,10 @@
|
|
|
22
22
|
"core"
|
|
23
23
|
],
|
|
24
24
|
"authors": [
|
|
25
|
-
"
|
|
26
|
-
"
|
|
25
|
+
"Pascal Kaufmann",
|
|
26
|
+
"Mikael Araya",
|
|
27
|
+
"Vedran Rudelj",
|
|
28
|
+
"Joël Meiller"
|
|
27
29
|
],
|
|
28
30
|
"license": "EUPL-1.2",
|
|
29
31
|
"bugs": {
|
|
@@ -31,15 +33,14 @@
|
|
|
31
33
|
},
|
|
32
34
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
35
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^4.
|
|
35
|
-
"@unchainedshop/logger": "^4.
|
|
36
|
-
"@unchainedshop/utils": "^4.
|
|
36
|
+
"@unchainedshop/events": "^4.4.0",
|
|
37
|
+
"@unchainedshop/logger": "^4.4.0",
|
|
38
|
+
"@unchainedshop/utils": "^4.4.0",
|
|
37
39
|
"expiry-map": "^2.0.0",
|
|
38
40
|
"p-memoize": "^8.0.0"
|
|
39
41
|
},
|
|
40
42
|
"devDependencies": {
|
|
41
|
-
"@types/node": "^
|
|
42
|
-
"tsx": "^4.20.3",
|
|
43
|
+
"@types/node": "^25.0.0",
|
|
43
44
|
"typescript": "^5.8.3"
|
|
44
45
|
}
|
|
45
46
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentCredentialsCollection.d.ts","sourceRoot":"","sources":["../../src/db/PaymentCredentialsCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAElF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,GAAG,CAAC;CACX,GAAG,eAAe,CAAC;AAEpB,eAAO,MAAM,4BAA4B,GAAU,IAAI,OAAO,CAAC,EAAE,oDAShE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentCredentialsCollection.js","sourceRoot":"","sources":["../../src/db/PaymentCredentialsCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAmB,MAAM,wBAAwB,CAAC;AAWlF,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,EAAc,EAAE,EAAE;IACnE,MAAM,qBAAqB,GAAG,EAAE,CAAC,UAAU,CAAqB,qBAAqB,CAAC,CAAC;IAEvF,MAAM,cAAc,CAAqB,qBAAqB,EAAE;QAC9D,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE;QACnC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;KACzB,CAAC,CAAC;IAEH,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentProvidersCollection.d.ts","sourceRoot":"","sources":["../../src/db/PaymentProvidersCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAElF,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,EAAE,CAAC;AAEJ,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,mBAAmB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,oBAAoB,CAAC;CACrC,GAAG,eAAe,CAAC;AAEpB,eAAO,MAAM,0BAA0B,GAAU,IAAI,OAAO,CAAC,EAAE,iDAkB9D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentProvidersCollection.js","sourceRoot":"","sources":["../../src/db/PaymentProvidersCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAmB,MAAM,wBAAwB,CAAC;AAElF,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B;AAcD,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAAE,EAAc,EAAE,EAAE;IACjE,MAAM,gBAAgB,GAAG,EAAE,CAAC,UAAU,CAAkB,mBAAmB,CAAC,CAAC;IAE7E,MAAM,cAAc,CAAkB,gBAAgB,EAAE;QACtD,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;QACtB;YACE,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC;aACX;SACF;QACD;YACE,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC;aACX;SACF;KACF,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configurePaymentCredentialsModule.d.ts","sourceRoot":"","sources":["../../src/module/configurePaymentCredentialsModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA4C,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAErG,eAAO,MAAM,iCAAiC,GAC5C,oBAAoB,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC;uDAK3D;QACD,MAAM,EAAE,MAAM,CAAC;QACf,oBAAoB,EAAE,MAAM,CAAC;KAC9B;iBA4BoB,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;mDAMxE;QACD,oBAAoB,EAAE,MAAM,CAAC;KAC9B,KAAG,OAAO,CAAC,OAAO,CAAC;kFAaf;QACD,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,YACS,OAAO,CAAC,WAAW;oCAWtB,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,YACnC,OAAO,CAAC,WAAW,KAC5B,OAAO,CAAC,sBAAsB,EAAE,CAAC;4EAWjC,IAAI,CAAC,sBAAsB,EAAE,QAAQ,GAAG,mBAAmB,GAAG,KAAK,GAAG,OAAO,CAAC,GAC/E,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;8CAqC2B,MAAM;2CAKT,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;CAKxE,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,iCAAiC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configurePaymentCredentialsModule.js","sourceRoot":"","sources":["../../src/module/configurePaymentCredentialsModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configurePaymentModule.d.ts","sourceRoot":"","sources":["../../src/module/configurePaymentModule.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,eAAO,MAAM,sBAAsB,GAAU,kCAG1C,WAAW,CAAC,sBAAsB,CAAC;;;;;;;0BAgBmhB,CAAC;;;;;;;;;;;;;;;;;;;;gCAAxC,CAAC;kBAAwB,CAAC;6BAAmC,CAAC;;;;;;;EAH/kB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configurePaymentModule.js","sourceRoot":"","sources":["../../src/module/configurePaymentModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,eAAe,EAA0B,MAAM,wBAAwB,CAAC;AAGjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,EAAE,EACF,OAAO,EAAE,cAAc,GAAG,EAAE,GACQ,EAAE,EAAE;IACxC,MAAM,gBAAgB,GAAG,MAAM,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,MAAM,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAElD,MAAM,gBAAgB,GAAG,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;IAC3E,MAAM,kBAAkB,GAAG,iCAAiC,CAAC,kBAAkB,CAAC,CAAC;IAEjF,OAAO;QACL,gBAAgB;QAChB,kBAAkB;KACnB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configurePaymentProvidersModule.d.ts","sourceRoot":"","sources":["../../src/module/configurePaymentProvidersModule.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAItE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,eAAO,MAAM,iBAAiB,GAAI,8BAG/B,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;;;;;;;;;iBA+Gym3S,CAAC;sBAAgC,CAAC;2BAAsC,CAAC;;;;CA7Gvv3S,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,kBAAkB,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;mBAM9B,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC;oDASjE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG;QACnC,iBAAiB,EAAE,MAAM,CAAC;KAC3B,YACS,OAAO,CAAC,WAAW;2BAStB,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,YAC5D,OAAO,CAAC,WAAW,KAC3B,OAAO,CAAC,eAAe,EAAE,CAAC;;4CAciB;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,OAAO,CAAC;kBAUvF,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,KAChG,OAAO,CAAC,eAAe,CAAC;kBAgBP,MAAM,OAAO,eAAe;kBAiB5B,MAAM;CAgB7B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configurePaymentProvidersModule.js","sourceRoot":"","sources":["../../src/module/configurePaymentProvidersModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAW,MAAM,wBAAwB,CAAC;AAE3F,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,SAAS,MAAM,YAAY,CAAC;AAQnC,MAAM,uBAAuB,GAAa;IACxC,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;CAC1B,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,cAAc,GAAG,KAAK,EACtB,GAAG,IAAI,KAC2D,EAAE,EAAE,EAAE;IACxE,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,gBAAqD,EACrD,EAAE;IACF,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAExC,OAAO;QACL,UAAU;QACV,KAAK,EAAE,KAAK,EAAE,KAAsC,EAAmB,EAAE;YACvE,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YACtF,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,YAAY,EAAE,KAAK,EACjB,EACE,iBAAiB,EACjB,GAAG,KAAK,EAGT,EACD,OAA6B,EAC7B,EAAE;YACF,OAAO,gBAAgB,CAAC,OAAO,CAC7B,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EACnE,OAAO,CACR,CAAC;QACJ,CAAC;QAED,aAAa,EAAE,KAAK,EAClB,KAAqE,EACrE,UAA+B,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAC3B,EAAE;YAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3E,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,YAAY,EAAE,QAAQ,CACpB,KAAK;YACH,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACtF,CAAC,EACD;YACE,KAAK,EAAE,iBAAiB;SACzB,CACF;QAED,cAAc,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAiC,EAAoB,EAAE;YAC/F,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,cAAc,CACzD,oBAAoB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAC1D,EAAE,KAAK,EAAE,CAAC,EAAE,CACb,CAAC;YACF,OAAO,CAAC,CAAC,aAAa,CAAC;QACzB,CAAC;QAED,YAAY;QACZ,MAAM,EAAE,KAAK,EACX,GAAiG,EACvE,EAAE;YAC5B,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC;gBACzE,GAAG,EAAE,kBAAkB,EAAE;gBACzB,OAAO,EAAE,IAAI,IAAI,EAAE;gBACnB,GAAG,GAAG;aACP,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,CAAC,MAAM,gBAAgB,CAAC,OAAO,CACrD,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,EAAE,CACH,CAAoB,CAAC;YACtB,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;YAC3D,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAW,EAAE,GAAoB,EAAE,EAAE;YAClD,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,CAC7D,oBAAoB,CAAC,GAAG,CAAC,EACzB;gBACE,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI,IAAI,EAAE;oBACnB,GAAG,GAAG;iBACP;aACF,EACD,EAAE,cAAc,EAAE,OAAO,EAAE,CAC5B,CAAC;YACF,IAAI,CAAC,eAAe;gBAAE,OAAO,IAAI,CAAC;YAClC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;YAC3D,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;YAC5B,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,CAC7D,oBAAoB,CAAC,GAAG,CAAC,EACzB;gBACE,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI,IAAI,EAAE;iBACpB;aACF,EACD,EAAE,cAAc,EAAE,OAAO,EAAE,CAC5B,CAAC;YACF,IAAI,CAAC,eAAe;gBAAE,OAAO,IAAI,CAAC;YAClC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,yBAAyB,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;YAC3D,OAAO,eAAe,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payment-index.d.ts","sourceRoot":"","sources":["../src/payment-index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC"}
|
package/lib/payment-index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payment-index.js","sourceRoot":"","sources":["../src/payment-index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payment-settings.d.ts","sourceRoot":"","sources":["../src/payment-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,MAAM,eAAe,CAAC,KAAK,GAAG,OAAO,EAAE,YAAY,GAAG,OAAO,IAAI,CACrE,MAAM,EAAE;IACN,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC;CACd,EACD,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AAEhC,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,OAAO,EAAE,YAAY,GAAG,OAAO,IAAI,CAC9E,MAAM,EAAE;IACN,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC3C,EACD,YAAY,EAAE,YAAY,KACvB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AAErC,MAAM,WAAW,eAAe;IAC9B,wBAAwB,EAAE,eAAe,CAAC;IAC1C,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC/D;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAoBzF,eAAO,MAAM,eAAe,EAAE,eAO7B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payment-settings.js","sourceRoot":"","sources":["../src/payment-settings.ts"],"names":[],"mappings":"AA4BA,MAAM,kBAAkB,GAAG,CAAC,IAAqB,EAAE,KAAsB,EAAE,EAAE;IAC3E,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,YAAY,GAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IAC5D,OAAO,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAA6B,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,EAAE;IACnG,MAAM,+BAA+B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE,EAAE;QAClF,OAAO,kBAAkB,EAAE,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE;YACpD,OAAO,wBAAwB,CAAC,GAAG,KAAK,iBAAiB,CAAC,iBAAiB,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,+BAA+B;QAAE,OAAO,+BAA+B,CAAC;IAC5E,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,wBAAwB,EAAE,YAAY;IACtC,wBAAwB,EAAE,sBAAsB;IAChD,iBAAiB,CAAC,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,GAAG,EAAE;QAC3E,eAAe,CAAC,wBAAwB,GAAG,wBAAwB,IAAI,YAAY,CAAC;QACpF,eAAe,CAAC,wBAAwB,GAAG,wBAAwB,IAAI,sBAAsB,CAAC;IAChG,CAAC;CACF,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { mongodb, buildDbIndexes, TimestampFields } from '@unchainedshop/mongodb';
|
|
2
|
-
|
|
3
|
-
export type PaymentCredentials = {
|
|
4
|
-
_id: string;
|
|
5
|
-
paymentProviderId: string;
|
|
6
|
-
userId: string;
|
|
7
|
-
token?: string;
|
|
8
|
-
isPreferred?: boolean;
|
|
9
|
-
meta: any;
|
|
10
|
-
} & TimestampFields;
|
|
11
|
-
|
|
12
|
-
export const PaymentCredentialsCollection = async (db: mongodb.Db) => {
|
|
13
|
-
const PaymentCredentialsCol = db.collection<PaymentCredentials>('payment_credentials');
|
|
14
|
-
|
|
15
|
-
await buildDbIndexes<PaymentCredentials>(PaymentCredentialsCol, [
|
|
16
|
-
{ index: { paymentProviderId: 1 } },
|
|
17
|
-
{ index: { userId: 1 } },
|
|
18
|
-
]);
|
|
19
|
-
|
|
20
|
-
return PaymentCredentialsCol;
|
|
21
|
-
};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { mongodb, buildDbIndexes, TimestampFields } from '@unchainedshop/mongodb';
|
|
2
|
-
|
|
3
|
-
export enum PaymentProviderType {
|
|
4
|
-
INVOICE = 'INVOICE',
|
|
5
|
-
GENERIC = 'GENERIC',
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export type PaymentConfiguration = {
|
|
9
|
-
key: string;
|
|
10
|
-
value: string | null;
|
|
11
|
-
}[];
|
|
12
|
-
|
|
13
|
-
export type PaymentProvider = {
|
|
14
|
-
_id: string;
|
|
15
|
-
type: PaymentProviderType;
|
|
16
|
-
adapterKey: string;
|
|
17
|
-
configuration: PaymentConfiguration;
|
|
18
|
-
} & TimestampFields;
|
|
19
|
-
|
|
20
|
-
export const PaymentProvidersCollection = async (db: mongodb.Db) => {
|
|
21
|
-
const PaymentProviders = db.collection<PaymentProvider>('payment-providers');
|
|
22
|
-
|
|
23
|
-
await buildDbIndexes<PaymentProvider>(PaymentProviders, [
|
|
24
|
-
{ index: { type: 1 } },
|
|
25
|
-
{
|
|
26
|
-
index: {
|
|
27
|
-
created: 1,
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
index: {
|
|
32
|
-
deleted: 1,
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
]);
|
|
36
|
-
|
|
37
|
-
return PaymentProviders;
|
|
38
|
-
};
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { mongodb, generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
|
|
2
|
-
import { PaymentCredentials as PaymentCredentialsType } from '../db/PaymentCredentialsCollection.js';
|
|
3
|
-
|
|
4
|
-
export const configurePaymentCredentialsModule = (
|
|
5
|
-
PaymentCredentials: mongodb.Collection<PaymentCredentialsType>,
|
|
6
|
-
) => {
|
|
7
|
-
const markPreferred = async ({
|
|
8
|
-
userId,
|
|
9
|
-
paymentCredentialsId,
|
|
10
|
-
}: {
|
|
11
|
-
userId: string;
|
|
12
|
-
paymentCredentialsId: string;
|
|
13
|
-
}) => {
|
|
14
|
-
const paymentCredentials = await PaymentCredentials.findOneAndUpdate(
|
|
15
|
-
{
|
|
16
|
-
_id: paymentCredentialsId,
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
$set: {
|
|
20
|
-
isPreferred: true,
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
{ returnDocument: 'after' },
|
|
24
|
-
);
|
|
25
|
-
await PaymentCredentials.updateMany(
|
|
26
|
-
{
|
|
27
|
-
_id: { $ne: paymentCredentialsId },
|
|
28
|
-
userId,
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
$set: {
|
|
32
|
-
isPreferred: false,
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
);
|
|
36
|
-
return paymentCredentials;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
return {
|
|
40
|
-
markPreferred,
|
|
41
|
-
async count(query: mongodb.Filter<PaymentCredentialsType>): Promise<number> {
|
|
42
|
-
const credentials = await PaymentCredentials.countDocuments(query);
|
|
43
|
-
return credentials;
|
|
44
|
-
},
|
|
45
|
-
credentialsExists: async ({
|
|
46
|
-
paymentCredentialsId,
|
|
47
|
-
}: {
|
|
48
|
-
paymentCredentialsId: string;
|
|
49
|
-
}): Promise<boolean> => {
|
|
50
|
-
const credentialsCount = await PaymentCredentials.countDocuments(
|
|
51
|
-
generateDbFilterById(paymentCredentialsId),
|
|
52
|
-
{ limit: 1 },
|
|
53
|
-
);
|
|
54
|
-
return !!credentialsCount;
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
findPaymentCredential: async (
|
|
58
|
-
{
|
|
59
|
-
paymentCredentialsId,
|
|
60
|
-
userId,
|
|
61
|
-
paymentProviderId,
|
|
62
|
-
}: {
|
|
63
|
-
paymentCredentialsId?: string;
|
|
64
|
-
userId?: string;
|
|
65
|
-
paymentProviderId?: string;
|
|
66
|
-
},
|
|
67
|
-
options?: mongodb.FindOptions,
|
|
68
|
-
) => {
|
|
69
|
-
return PaymentCredentials.findOne(
|
|
70
|
-
paymentCredentialsId
|
|
71
|
-
? generateDbFilterById(paymentCredentialsId)
|
|
72
|
-
: { userId, paymentProviderId },
|
|
73
|
-
options,
|
|
74
|
-
);
|
|
75
|
-
},
|
|
76
|
-
|
|
77
|
-
findPaymentCredentials: async (
|
|
78
|
-
query: mongodb.Filter<PaymentCredentialsType>,
|
|
79
|
-
options?: mongodb.FindOptions,
|
|
80
|
-
): Promise<PaymentCredentialsType[]> => {
|
|
81
|
-
const credentials = await PaymentCredentials.find(query, options).toArray();
|
|
82
|
-
return credentials;
|
|
83
|
-
},
|
|
84
|
-
|
|
85
|
-
upsertCredentials: async ({
|
|
86
|
-
userId,
|
|
87
|
-
paymentProviderId,
|
|
88
|
-
_id,
|
|
89
|
-
token,
|
|
90
|
-
...meta
|
|
91
|
-
}: Pick<PaymentCredentialsType, 'userId' | 'paymentProviderId' | '_id' | 'token'> &
|
|
92
|
-
Record<string, any>) => {
|
|
93
|
-
const insertedId = _id || generateDbObjectId();
|
|
94
|
-
await PaymentCredentials.findOneAndUpdate(
|
|
95
|
-
_id
|
|
96
|
-
? generateDbFilterById(_id)
|
|
97
|
-
: {
|
|
98
|
-
userId,
|
|
99
|
-
paymentProviderId,
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
$setOnInsert: {
|
|
103
|
-
_id: insertedId,
|
|
104
|
-
userId,
|
|
105
|
-
paymentProviderId,
|
|
106
|
-
isPreferred: false,
|
|
107
|
-
created: new Date(),
|
|
108
|
-
},
|
|
109
|
-
$set: {
|
|
110
|
-
updated: new Date(),
|
|
111
|
-
token,
|
|
112
|
-
meta,
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
upsert: true,
|
|
117
|
-
returnDocument: 'after',
|
|
118
|
-
},
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
const paymentCredentials = await markPreferred({
|
|
122
|
-
userId,
|
|
123
|
-
paymentCredentialsId: insertedId,
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
return paymentCredentials as PaymentCredentialsType;
|
|
127
|
-
},
|
|
128
|
-
|
|
129
|
-
removeCredentials: async (paymentCredentialsId: string) => {
|
|
130
|
-
const selector = generateDbFilterById(paymentCredentialsId);
|
|
131
|
-
const paymentCredentials = await PaymentCredentials.findOneAndDelete(selector, {});
|
|
132
|
-
return paymentCredentials;
|
|
133
|
-
},
|
|
134
|
-
deleteUserPaymentCredentials: async (userId: string): Promise<number> => {
|
|
135
|
-
const { deletedCount } = await PaymentCredentials.deleteMany({ userId }, {});
|
|
136
|
-
return deletedCount;
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
export type PaymentCredentialsModule = ReturnType<typeof configurePaymentCredentialsModule>;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { PaymentCredentialsCollection } from '../db/PaymentCredentialsCollection.js';
|
|
2
|
-
import { PaymentProvidersCollection } from '../db/PaymentProvidersCollection.js';
|
|
3
|
-
import { configurePaymentCredentialsModule } from './configurePaymentCredentialsModule.js';
|
|
4
|
-
import { configurePaymentProvidersModule } from './configurePaymentProvidersModule.js';
|
|
5
|
-
import { paymentSettings, PaymentSettingsOptions } from '../payment-settings.js';
|
|
6
|
-
import { ModuleInput } from '@unchainedshop/mongodb';
|
|
7
|
-
|
|
8
|
-
export const configurePaymentModule = async ({
|
|
9
|
-
db,
|
|
10
|
-
options: paymentOptions = {},
|
|
11
|
-
}: ModuleInput<PaymentSettingsOptions>) => {
|
|
12
|
-
const PaymentProviders = await PaymentProvidersCollection(db);
|
|
13
|
-
const PaymentCredentials = await PaymentCredentialsCollection(db);
|
|
14
|
-
|
|
15
|
-
paymentSettings.configureSettings(paymentOptions);
|
|
16
|
-
|
|
17
|
-
const paymentProviders = configurePaymentProvidersModule(PaymentProviders);
|
|
18
|
-
const paymentCredentials = configurePaymentCredentialsModule(PaymentCredentials);
|
|
19
|
-
|
|
20
|
-
return {
|
|
21
|
-
paymentProviders,
|
|
22
|
-
paymentCredentials,
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export type PaymentModule = Awaited<ReturnType<typeof configurePaymentModule>>;
|
|
@@ -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
|
-
};
|