@unchainedshop/core-payment 4.3.4 → 4.5.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 (39) 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 +16 -19
  9. package/lib/module/configurePaymentModule.js +5 -6
  10. package/lib/module/configurePaymentProvidersModule.d.ts +9 -27
  11. package/lib/module/configurePaymentProvidersModule.js +16 -8
  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 +12 -10
  17. package/lib/db/PaymentCredentialsCollection.d.ts.map +0 -1
  18. package/lib/db/PaymentCredentialsCollection.js.map +0 -1
  19. package/lib/db/PaymentProvidersCollection.d.ts.map +0 -1
  20. package/lib/db/PaymentProvidersCollection.js.map +0 -1
  21. package/lib/module/configurePaymentCredentialsModule.d.ts.map +0 -1
  22. package/lib/module/configurePaymentCredentialsModule.js.map +0 -1
  23. package/lib/module/configurePaymentModule.d.ts.map +0 -1
  24. package/lib/module/configurePaymentModule.js.map +0 -1
  25. package/lib/module/configurePaymentProvidersModule.d.ts.map +0 -1
  26. package/lib/module/configurePaymentProvidersModule.js.map +0 -1
  27. package/lib/payment-index.d.ts.map +0 -1
  28. package/lib/payment-index.js.map +0 -1
  29. package/lib/payment-settings.d.ts.map +0 -1
  30. package/lib/payment-settings.js.map +0 -1
  31. package/src/db/PaymentCredentialsCollection.ts +0 -21
  32. package/src/db/PaymentProvidersCollection.ts +0 -38
  33. package/src/module/configurePaymentCredentialsModule.ts +0 -141
  34. package/src/module/configurePaymentModule.ts +0 -26
  35. package/src/module/configurePaymentProvidersModule.ts +0 -134
  36. package/src/module/payment-index.test.ts +0 -19
  37. package/src/payment-index.ts +0 -4
  38. package/src/payment-settings.ts +0 -54
  39. package/tsconfig.json +0 -10
package/README.md CHANGED
@@ -1,3 +1,99 @@
1
- # Payment (Unchained Engine)
1
+ [![npm version](https://img.shields.io/npm/v/@unchainedshop/core-payment.svg)](https://npmjs.com/package/@unchainedshop/core-payment)
2
+ [![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](https://opensource.org/licenses/EUPL-1.2)
2
3
 
3
- This package contains business logic and database abstraction for payment in Unchained.
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 enum PaymentProviderType {
3
- INVOICE = "INVOICE",
4
- GENERIC = "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 var PaymentProviderType;
3
- (function (PaymentProviderType) {
4
- PaymentProviderType["INVOICE"] = "INVOICE";
5
- PaymentProviderType["GENERIC"] = "GENERIC";
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.js';
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,26 @@
1
- import { PaymentSettingsOptions } from '../payment-settings.js';
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.js").PaymentProvider>) => Promise<number>;
6
- findProvider: ({ paymentProviderId, ...query }: import("mongodb").Filter<import("../db/PaymentProvidersCollection.js").PaymentProvider> & {
5
+ count: (query?: import("./configurePaymentProvidersModule.ts").PaymentProviderQuery) => 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.js").PaymentProvider | null>;
9
- findProviders: (query: import("mongodb").Filter<import("../db/PaymentProvidersCollection.js").PaymentProvider> & {
10
- includeDeleted?: boolean;
11
- }, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentProvidersCollection.js").PaymentProvider[]>;
12
- allProviders: () => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.js").PaymentProvider>[]>;
8
+ }, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentProvidersCollection.ts").PaymentProvider | null>;
9
+ findProviders: (query?: import("./configurePaymentProvidersModule.ts").PaymentProviderQuery, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentProvidersCollection.ts").PaymentProvider[]>;
10
+ allProviders: () => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.ts").PaymentProvider>[]>;
13
11
  providerExists: ({ paymentProviderId }: {
14
12
  paymentProviderId: string;
15
13
  }) => Promise<boolean>;
16
- create: (doc: Omit<import("../db/PaymentProvidersCollection.js").PaymentProvider, "_id" | "created"> & Pick<Partial<import("../db/PaymentProvidersCollection.js").PaymentProvider>, "_id" | "created">) => Promise<import("../db/PaymentProvidersCollection.js").PaymentProvider>;
17
- update: (_id: string, doc: import("../db/PaymentProvidersCollection.js").PaymentProvider) => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.js").PaymentProvider> | null>;
18
- delete: (_id: string) => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.js").PaymentProvider> | null>;
14
+ 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>;
15
+ update: (_id: string, doc: import("../db/PaymentProvidersCollection.ts").PaymentProvider) => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.ts").PaymentProvider> | null>;
16
+ delete: (_id: string) => Promise<import("mongodb").WithId<import("../db/PaymentProvidersCollection.ts").PaymentProvider> | null>;
19
17
  };
20
18
  paymentCredentials: {
21
19
  markPreferred: ({ userId, paymentCredentialsId, }: {
22
20
  userId: string;
23
21
  paymentCredentialsId: string;
24
- }) => Promise<import("mongodb").WithId<import("../db/PaymentCredentialsCollection.js").PaymentCredentials> | null>;
25
- count(query: import("mongodb").Filter<import("../db/PaymentCredentialsCollection.js").PaymentCredentials>): Promise<number>;
22
+ }) => Promise<import("mongodb").WithId<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials> | null>;
23
+ count(query: import("mongodb").Filter<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials>): Promise<number>;
26
24
  credentialsExists: ({ paymentCredentialsId, }: {
27
25
  paymentCredentialsId: string;
28
26
  }) => Promise<boolean>;
@@ -30,12 +28,11 @@ export declare const configurePaymentModule: ({ db, options: paymentOptions, }:
30
28
  paymentCredentialsId?: string;
31
29
  userId?: string;
32
30
  paymentProviderId?: string;
33
- }, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentCredentialsCollection.js").PaymentCredentials | null>;
34
- findPaymentCredentials: (query: import("mongodb").Filter<import("../db/PaymentCredentialsCollection.js").PaymentCredentials>, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentCredentialsCollection.js").PaymentCredentials[]>;
35
- upsertCredentials: ({ userId, paymentProviderId, _id, token, ...meta }: Pick<import("../db/PaymentCredentialsCollection.js").PaymentCredentials, "userId" | "paymentProviderId" | "_id" | "token"> & Record<string, any>) => Promise<import("../db/PaymentCredentialsCollection.js").PaymentCredentials>;
36
- removeCredentials: (paymentCredentialsId: string) => Promise<import("mongodb").WithId<import("../db/PaymentCredentialsCollection.js").PaymentCredentials> | null>;
31
+ }, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials | null>;
32
+ findPaymentCredentials: (query: import("mongodb").Filter<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials>, options?: import("mongodb").FindOptions) => Promise<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials[]>;
33
+ 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>;
34
+ removeCredentials: (paymentCredentialsId: string) => Promise<import("mongodb").WithId<import("../db/PaymentCredentialsCollection.ts").PaymentCredentials> | null>;
37
35
  deleteUserPaymentCredentials: (userId: string) => Promise<number>;
38
36
  };
39
37
  }>;
40
38
  export type PaymentModule = Awaited<ReturnType<typeof configurePaymentModule>>;
41
- //# sourceMappingURL=configurePaymentModule.d.ts.map
@@ -1,8 +1,8 @@
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';
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,40 +1,23 @@
1
1
  import { mongodb } from '@unchainedshop/mongodb';
2
- import { PaymentProvider } from '../db/PaymentProvidersCollection.js';
2
+ import type { PaymentProvider, PaymentProviderType } from '../db/PaymentProvidersCollection.ts';
3
3
  export interface PaymentInterface {
4
4
  _id: string;
5
5
  label: string;
6
6
  version: string;
7
7
  }
8
- export declare const buildFindSelector: ({ includeDeleted, ...rest }?: mongodb.Filter<PaymentProvider> & {
8
+ export interface PaymentProviderQuery {
9
+ paymentProviderIds?: string[];
10
+ type?: PaymentProviderType;
9
11
  includeDeleted?: boolean;
10
- }) => {
11
- type?: mongodb.Condition<import("../db/PaymentProvidersCollection.js").PaymentProviderType> | undefined;
12
- created?: mongodb.Condition<Date> | undefined;
13
- deleted?: Date | mongodb.FilterOperators<Date | null | undefined> | null | undefined;
14
- updated?: mongodb.Condition<Date | undefined>;
15
- adapterKey?: mongodb.Condition<string> | undefined;
16
- configuration?: mongodb.Condition<import("../db/PaymentProvidersCollection.js").PaymentConfiguration> | undefined;
17
- _id?: mongodb.Condition<string> | undefined;
18
- $and?: mongodb.Filter<mongodb.WithId<PaymentProvider>>[] | undefined;
19
- $nor?: mongodb.Filter<mongodb.WithId<PaymentProvider>>[] | undefined;
20
- $or?: mongodb.Filter<mongodb.WithId<PaymentProvider>>[] | undefined;
21
- $text?: {
22
- $search: string;
23
- $language?: string;
24
- $caseSensitive?: boolean;
25
- $diacriticSensitive?: boolean;
26
- };
27
- $where?: string | ((this: mongodb.WithId<PaymentProvider>) => boolean) | undefined;
28
- $comment?: string | mongodb.BSON.Document;
29
- };
12
+ queryString?: string;
13
+ }
14
+ export declare const buildFindSelector: ({ includeDeleted, queryString, paymentProviderIds, type, }?: PaymentProviderQuery) => mongodb.Filter<PaymentProvider>;
30
15
  export declare const configurePaymentProvidersModule: (PaymentProviders: mongodb.Collection<PaymentProvider>) => {
31
- count: (query: mongodb.Filter<PaymentProvider>) => Promise<number>;
16
+ count: (query?: PaymentProviderQuery) => Promise<number>;
32
17
  findProvider: ({ paymentProviderId, ...query }: mongodb.Filter<PaymentProvider> & {
33
18
  paymentProviderId: string;
34
19
  }, options?: mongodb.FindOptions) => Promise<PaymentProvider | null>;
35
- findProviders: (query: mongodb.Filter<PaymentProvider> & {
36
- includeDeleted?: boolean;
37
- }, options?: mongodb.FindOptions) => Promise<PaymentProvider[]>;
20
+ findProviders: (query?: PaymentProviderQuery, options?: mongodb.FindOptions) => Promise<PaymentProvider[]>;
38
21
  allProviders: () => Promise<mongodb.WithId<PaymentProvider>[]>;
39
22
  providerExists: ({ paymentProviderId }: {
40
23
  paymentProviderId: string;
@@ -44,4 +27,3 @@ export declare const configurePaymentProvidersModule: (PaymentProviders: mongodb
44
27
  delete: (_id: string) => Promise<mongodb.WithId<PaymentProvider> | null>;
45
28
  };
46
29
  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 = [
@@ -8,21 +8,31 @@ const PAYMENT_PROVIDER_EVENTS = [
8
8
  'PAYMENT_PROVIDER_REMOVE',
9
9
  ];
10
10
  const allProvidersCache = new ExpiryMap(process.env.NODE_ENV === 'production' ? 60000 : 1);
11
- export const buildFindSelector = ({ includeDeleted = false, ...rest } = {}) => {
12
- return { ...(includeDeleted ? {} : { deleted: null }), ...rest };
11
+ export const buildFindSelector = ({ includeDeleted = false, queryString, paymentProviderIds, type, } = {}) => {
12
+ const selector = includeDeleted ? {} : { deleted: null };
13
+ if (paymentProviderIds) {
14
+ selector._id = { $in: paymentProviderIds };
15
+ }
16
+ if (type) {
17
+ selector.type = type;
18
+ }
19
+ if (queryString) {
20
+ const regex = new RegExp(queryString, 'i');
21
+ selector.$or = [{ _id: regex }, { adapterKey: regex }];
22
+ }
23
+ return selector;
13
24
  };
14
25
  export const configurePaymentProvidersModule = (PaymentProviders) => {
15
26
  registerEvents(PAYMENT_PROVIDER_EVENTS);
16
27
  return {
17
- // Queries
18
- count: async (query) => {
28
+ count: async (query = {}) => {
19
29
  const providerCount = await PaymentProviders.countDocuments(buildFindSelector(query));
20
30
  return providerCount;
21
31
  },
22
32
  findProvider: async ({ paymentProviderId, ...query }, options) => {
23
33
  return PaymentProviders.findOne(paymentProviderId ? generateDbFilterById(paymentProviderId) : query, options);
24
34
  },
25
- findProviders: async (query, options = { sort: { created: 1 } }) => {
35
+ findProviders: async (query = {}, options = { sort: { created: 1 } }) => {
26
36
  const providers = PaymentProviders.find(buildFindSelector(query), options);
27
37
  return providers.toArray();
28
38
  },
@@ -35,7 +45,6 @@ export const configurePaymentProvidersModule = (PaymentProviders) => {
35
45
  const providerCount = await PaymentProviders.countDocuments(generateDbFilterById(paymentProviderId, { deleted: null }), { limit: 1 });
36
46
  return !!providerCount;
37
47
  },
38
- // Mutations
39
48
  create: async (doc) => {
40
49
  const { insertedId: paymentProviderId } = await PaymentProviders.insertOne({
41
50
  _id: generateDbObjectId(),
@@ -74,4 +83,3 @@ export const configurePaymentProvidersModule = (PaymentProviders) => {
74
83
  },
75
84
  };
76
85
  };
77
- //# sourceMappingURL=configurePaymentProvidersModule.js.map
@@ -1,5 +1,4 @@
1
- export * from './module/configurePaymentModule.js';
2
- export * from './payment-settings.js';
3
- export * from './db/PaymentCredentialsCollection.js';
4
- export * from './db/PaymentProvidersCollection.js';
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';
@@ -1,5 +1,4 @@
1
- export * from './module/configurePaymentModule.js';
2
- export * from './payment-settings.js';
3
- export * from './db/PaymentCredentialsCollection.js';
4
- export * from './db/PaymentProvidersCollection.js';
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.js';
2
- import { PaymentProvider } from './db/PaymentProvidersCollection.js';
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
@@ -22,4 +22,3 @@ export const paymentSettings = {
22
22
  paymentSettings.determineDefaultProvider = determineDefaultProvider || firstProviderIsDefault;
23
23
  },
24
24
  };
25
- //# sourceMappingURL=payment-settings.js.map
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "@unchainedshop/core-payment",
3
- "version": "4.3.4",
3
+ "version": "4.5.0",
4
4
  "main": "lib/payment-index.js",
5
5
  "types": "lib/payment-index.d.ts",
6
6
  "type": "module",
7
+ "sideEffects": false,
7
8
  "scripts": {
8
9
  "clean": "tsc -b --clean",
9
10
  "build": "tsc -b",
10
11
  "prepublishOnly": "npm run clean && npm run build",
11
12
  "watch": "tsc -w",
12
- "test": "tsx --test",
13
- "test:watch": "tsx --test --watch"
13
+ "test": "node --test",
14
+ "test:watch": "node --test --watch"
14
15
  },
15
16
  "repository": {
16
17
  "type": "git",
@@ -22,8 +23,10 @@
22
23
  "core"
23
24
  ],
24
25
  "authors": [
25
- "Joël Meiller",
26
- "Pascal Kaufmann"
26
+ "Pascal Kaufmann",
27
+ "Mikael Araya",
28
+ "Vedran Rudelj",
29
+ "Joël Meiller"
27
30
  ],
28
31
  "license": "EUPL-1.2",
29
32
  "bugs": {
@@ -31,15 +34,14 @@
31
34
  },
32
35
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
36
  "dependencies": {
34
- "@unchainedshop/events": "^4.3.0",
35
- "@unchainedshop/logger": "^4.3.0",
36
- "@unchainedshop/utils": "^4.3.0",
37
+ "@unchainedshop/events": "^4.5.0",
38
+ "@unchainedshop/logger": "^4.5.0",
39
+ "@unchainedshop/utils": "^4.5.0",
37
40
  "expiry-map": "^2.0.0",
38
41
  "p-memoize": "^8.0.0"
39
42
  },
40
43
  "devDependencies": {
41
- "@types/node": "^24.0.13",
42
- "tsx": "^4.20.3",
44
+ "@types/node": "^25.0.0",
43
45
  "typescript": "^5.8.3"
44
46
  }
45
47
  }
@@ -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":"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"}
@@ -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"}
@@ -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
- });
@@ -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
- }