@birtalanrobert/commerce 1.0.0 → 2.0.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/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/migrations/1790000000000-AddSavedCardsAndKind.d.ts +30 -0
- package/dist/migrations/1790000000000-AddSavedCardsAndKind.d.ts.map +1 -0
- package/dist/migrations/1790000000000-AddSavedCardsAndKind.js +89 -0
- package/dist/migrations/1790000000000-AddSavedCardsAndKind.js.map +1 -0
- package/dist/nestjs/commerce.service.d.ts +65 -1
- package/dist/nestjs/commerce.service.d.ts.map +1 -1
- package/dist/nestjs/commerce.service.js +98 -2
- package/dist/nestjs/commerce.service.js.map +1 -1
- package/dist/nestjs/index.d.ts +6 -3
- package/dist/nestjs/index.d.ts.map +1 -1
- package/dist/nestjs/index.js +9 -3
- package/dist/nestjs/index.js.map +1 -1
- package/dist/nestjs/payment.entity.d.ts +11 -19
- package/dist/nestjs/payment.entity.d.ts.map +1 -1
- package/dist/nestjs/payment.entity.js +13 -0
- package/dist/nestjs/payment.entity.js.map +1 -1
- package/dist/nestjs/saved-card.entity.d.ts +42 -0
- package/dist/nestjs/saved-card.entity.d.ts.map +1 -0
- package/dist/nestjs/saved-card.entity.js +109 -0
- package/dist/nestjs/saved-card.entity.js.map +1 -0
- package/dist/payments.d.ts +54 -0
- package/dist/payments.d.ts.map +1 -0
- package/dist/payments.js +30 -0
- package/dist/payments.js.map +1 -0
- package/dist/providers/port.d.ts +68 -0
- package/dist/providers/port.d.ts.map +1 -1
- package/dist/providers/stripe.d.ts +12 -1
- package/dist/providers/stripe.d.ts.map +1 -1
- package/dist/providers/stripe.js +71 -1
- package/dist/providers/stripe.js.map +1 -1
- package/package.json +12 -4
- package/src/index.ts +11 -0
- package/src/migrations/1790000000000-AddSavedCardsAndKind.ts +92 -0
- package/src/nestjs/commerce.service.ts +170 -3
- package/src/nestjs/index.ts +15 -3
- package/src/nestjs/payment.entity.ts +17 -25
- package/src/nestjs/saved-card.entity.ts +69 -0
- package/src/payments.ts +67 -0
- package/src/providers/port.ts +74 -0
- package/src/providers/stripe.ts +90 -1
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* somebody else's money-moving licence is behind `/nestjs`.
|
|
19
19
|
*/
|
|
20
20
|
export { balanceAfter, canTakeMoney, depositFor, payoutBlockReason, type DepositKind, type DepositPolicy, type PayoutStatus, } from './deposits';
|
|
21
|
-
export
|
|
21
|
+
export { isRefundable, refundableAmount, type PaymentKind, type PaymentMethod, type PaymentState, } from './payments';
|
|
22
|
+
export type { ChargeRequest, ChargeResult, OnboardingLink, PaymentProvider, ProviderAccount, ProviderEvent, RefundRequest, SaveCardRequest, SaveCardResult, StoredCard, } from './providers/port';
|
|
22
23
|
export { StripeConnect, type StripeConnectOptions } from './providers/stripe';
|
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StripeConnect = exports.payoutBlockReason = exports.depositFor = exports.canTakeMoney = exports.balanceAfter = void 0;
|
|
3
|
+
exports.StripeConnect = exports.refundableAmount = exports.isRefundable = exports.payoutBlockReason = exports.depositFor = exports.canTakeMoney = exports.balanceAfter = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Taking money on a business's behalf.
|
|
6
6
|
*
|
|
@@ -25,6 +25,9 @@ Object.defineProperty(exports, "balanceAfter", { enumerable: true, get: function
|
|
|
25
25
|
Object.defineProperty(exports, "canTakeMoney", { enumerable: true, get: function () { return deposits_1.canTakeMoney; } });
|
|
26
26
|
Object.defineProperty(exports, "depositFor", { enumerable: true, get: function () { return deposits_1.depositFor; } });
|
|
27
27
|
Object.defineProperty(exports, "payoutBlockReason", { enumerable: true, get: function () { return deposits_1.payoutBlockReason; } });
|
|
28
|
+
var payments_1 = require("./payments");
|
|
29
|
+
Object.defineProperty(exports, "isRefundable", { enumerable: true, get: function () { return payments_1.isRefundable; } });
|
|
30
|
+
Object.defineProperty(exports, "refundableAmount", { enumerable: true, get: function () { return payments_1.refundableAmount; } });
|
|
28
31
|
var stripe_1 = require("./providers/stripe");
|
|
29
32
|
Object.defineProperty(exports, "StripeConnect", { enumerable: true, get: function () { return stripe_1.StripeConnect; } });
|
|
30
33
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,uCAQoB;AAPlB,wGAAA,YAAY,OAAA;AACZ,wGAAA,YAAY,OAAA;AACZ,sGAAA,UAAU,OAAA;AACV,6GAAA,iBAAiB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,uCAQoB;AAPlB,wGAAA,YAAY,OAAA;AACZ,wGAAA,YAAY,OAAA;AACZ,sGAAA,UAAU,OAAA;AACV,6GAAA,iBAAiB,OAAA;AAMnB,uCAMoB;AALlB,wGAAA,YAAY,OAAA;AACZ,4GAAA,gBAAgB,OAAA;AAmBlB,6CAA8E;AAArE,uGAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
/**
|
|
3
|
+
* A card kept for later, and what each payment was actually for.
|
|
4
|
+
*
|
|
5
|
+
* ## `mortar_saved_cards`
|
|
6
|
+
*
|
|
7
|
+
* The strongest thing a business can do about people not turning up short of
|
|
8
|
+
* taking their money: nothing leaves the customer's account, and the card is
|
|
9
|
+
* there if a fee is later decided on. A **hold is not a substitute** — providers
|
|
10
|
+
* expire an authorisation within days and an appointment is usually further
|
|
11
|
+
* away than that — which is why this is a table and not a longer-lived hold.
|
|
12
|
+
*
|
|
13
|
+
* The consent is stored as **text with a time**, not as a boolean. A flag says
|
|
14
|
+
* somebody clicked; the sentence says what they were told they were agreeing
|
|
15
|
+
* to, and only the second is worth anything when they say they were not told.
|
|
16
|
+
*
|
|
17
|
+
* ## `kind` on a payment
|
|
18
|
+
*
|
|
19
|
+
* A tip belongs to the person who earned it and a product to neither the
|
|
20
|
+
* service nor the diary. Counting all three as service income tells a business
|
|
21
|
+
* its haircuts are more profitable than they are, and nothing computed
|
|
22
|
+
* afterwards can separate them again — so the distinction goes in the row, with
|
|
23
|
+
* `sale` as the default so every existing payment keeps meaning what it meant.
|
|
24
|
+
*/
|
|
25
|
+
export declare class AddSavedCardsAndKind1790000000000 implements MigrationInterface {
|
|
26
|
+
name: string;
|
|
27
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
28
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=1790000000000-AddSavedCardsAndKind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1790000000000-AddSavedCardsAndKind.d.ts","sourceRoot":"","sources":["../../src/migrations/1790000000000-AddSavedCardsAndKind.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,iCAAkC,YAAW,kBAAkB;IAC1E,IAAI,SAAuC;IAE9B,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAuD3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAO3D"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AddSavedCardsAndKind1790000000000 = void 0;
|
|
4
|
+
const tenancy_1 = require("@birtalanrobert/tenancy");
|
|
5
|
+
/**
|
|
6
|
+
* A card kept for later, and what each payment was actually for.
|
|
7
|
+
*
|
|
8
|
+
* ## `mortar_saved_cards`
|
|
9
|
+
*
|
|
10
|
+
* The strongest thing a business can do about people not turning up short of
|
|
11
|
+
* taking their money: nothing leaves the customer's account, and the card is
|
|
12
|
+
* there if a fee is later decided on. A **hold is not a substitute** — providers
|
|
13
|
+
* expire an authorisation within days and an appointment is usually further
|
|
14
|
+
* away than that — which is why this is a table and not a longer-lived hold.
|
|
15
|
+
*
|
|
16
|
+
* The consent is stored as **text with a time**, not as a boolean. A flag says
|
|
17
|
+
* somebody clicked; the sentence says what they were told they were agreeing
|
|
18
|
+
* to, and only the second is worth anything when they say they were not told.
|
|
19
|
+
*
|
|
20
|
+
* ## `kind` on a payment
|
|
21
|
+
*
|
|
22
|
+
* A tip belongs to the person who earned it and a product to neither the
|
|
23
|
+
* service nor the diary. Counting all three as service income tells a business
|
|
24
|
+
* its haircuts are more profitable than they are, and nothing computed
|
|
25
|
+
* afterwards can separate them again — so the distinction goes in the row, with
|
|
26
|
+
* `sale` as the default so every existing payment keeps meaning what it meant.
|
|
27
|
+
*/
|
|
28
|
+
class AddSavedCardsAndKind1790000000000 {
|
|
29
|
+
name = 'AddSavedCardsAndKind1790000000000';
|
|
30
|
+
async up(queryRunner) {
|
|
31
|
+
await queryRunner.query(`
|
|
32
|
+
ALTER TABLE "mortar_payments"
|
|
33
|
+
ADD COLUMN "kind" varchar(16) NOT NULL DEFAULT 'sale'
|
|
34
|
+
`);
|
|
35
|
+
await queryRunner.query(`
|
|
36
|
+
ALTER TABLE "mortar_payments"
|
|
37
|
+
ADD CONSTRAINT "ck_payments_kind"
|
|
38
|
+
CHECK ("kind" IN ('sale', 'deposit', 'fee', 'tip', 'product'))
|
|
39
|
+
`);
|
|
40
|
+
await queryRunner.query(`
|
|
41
|
+
CREATE TABLE "mortar_saved_cards" (
|
|
42
|
+
"id" uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
43
|
+
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
44
|
+
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
45
|
+
"tenant_id" uuid NOT NULL,
|
|
46
|
+
-- Whose card it is, as the owning product names it. No foreign key, for
|
|
47
|
+
-- the same reason a payment has none: one product hangs a card off a
|
|
48
|
+
-- salon's client, another off a tenant's guest.
|
|
49
|
+
"subject" varchar(160) NOT NULL,
|
|
50
|
+
"provider" varchar(32) NOT NULL DEFAULT 'stripe',
|
|
51
|
+
-- The customer on *our* account. Under a destination charge the money
|
|
52
|
+
-- lands on the business's account while the card stays ours to charge,
|
|
53
|
+
-- and one created on the business's account cannot be used from here.
|
|
54
|
+
"customer_ref" varchar(128) NOT NULL,
|
|
55
|
+
"payment_method_ref" varchar(128) NOT NULL,
|
|
56
|
+
-- Enough to recognise it, and nothing more. We never see the number.
|
|
57
|
+
"brand" varchar(24),
|
|
58
|
+
"last4" varchar(4),
|
|
59
|
+
"expiry_month" int,
|
|
60
|
+
"expiry_year" int,
|
|
61
|
+
-- What they were told they were agreeing to, in the language they read
|
|
62
|
+
-- it in. Required: a card charged on a consent nobody can produce is an
|
|
63
|
+
-- argument the business loses.
|
|
64
|
+
"consent_text" varchar(1000) NOT NULL,
|
|
65
|
+
"consented_at" timestamptz NOT NULL,
|
|
66
|
+
"stored_by" uuid,
|
|
67
|
+
CONSTRAINT "pk_saved_cards" PRIMARY KEY ("id"),
|
|
68
|
+
CONSTRAINT "uq_saved_cards_tenant_id" UNIQUE ("tenant_id", "id"),
|
|
69
|
+
CONSTRAINT "uq_saved_cards_method" UNIQUE ("tenant_id", "payment_method_ref")
|
|
70
|
+
)
|
|
71
|
+
`);
|
|
72
|
+
await queryRunner.query(`
|
|
73
|
+
CREATE INDEX "ix_saved_cards_subject"
|
|
74
|
+
ON "mortar_saved_cards" ("tenant_id", "subject")
|
|
75
|
+
`);
|
|
76
|
+
for (const statement of (0, tenancy_1.enableRlsSql)('mortar_saved_cards')) {
|
|
77
|
+
await queryRunner.query(statement);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async down(queryRunner) {
|
|
81
|
+
await queryRunner.query(`DROP TABLE IF EXISTS "mortar_saved_cards" CASCADE`);
|
|
82
|
+
await queryRunner.query(`
|
|
83
|
+
ALTER TABLE "mortar_payments" DROP CONSTRAINT IF EXISTS "ck_payments_kind"
|
|
84
|
+
`);
|
|
85
|
+
await queryRunner.query(`ALTER TABLE "mortar_payments" DROP COLUMN IF EXISTS "kind"`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.AddSavedCardsAndKind1790000000000 = AddSavedCardsAndKind1790000000000;
|
|
89
|
+
//# sourceMappingURL=1790000000000-AddSavedCardsAndKind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1790000000000-AddSavedCardsAndKind.js","sourceRoot":"","sources":["../../src/migrations/1790000000000-AddSavedCardsAndKind.ts"],"names":[],"mappings":";;;AACA,qDAAuD;AAEvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAa,iCAAiC;IAC5C,IAAI,GAAG,mCAAmC,CAAC;IAEpC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC;;;KAGvB,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,KAAK,CAAC;;;;KAIvB,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+BvB,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,KAAK,CAAC;;;KAGvB,CAAC,CAAC;QAEH,KAAK,MAAM,SAAS,IAAI,IAAA,sBAAY,EAAC,oBAAoB,CAAC,EAAE,CAAC;YAC3D,MAAM,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC7E,MAAM,WAAW,CAAC,KAAK,CAAC;;KAEvB,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IACxF,CAAC;CACF;AAjED,8EAiEC"}
|
|
@@ -2,7 +2,9 @@ import type { DataSource } from 'typeorm';
|
|
|
2
2
|
import { type PayoutStatus } from '../deposits';
|
|
3
3
|
import type { PaymentProvider, ProviderEvent } from '../providers/port';
|
|
4
4
|
import { PayoutAccount } from './payout-account.entity';
|
|
5
|
+
import { type PaymentKind } from '../payments';
|
|
5
6
|
import { Payment, PaymentRefund, type PaymentMethod } from './payment.entity';
|
|
7
|
+
import { SavedCard } from './saved-card.entity';
|
|
6
8
|
/** The provider this deployment uses, injected so tests can supply their own. */
|
|
7
9
|
export declare const COMMERCE_PROVIDER: unique symbol;
|
|
8
10
|
export interface TakePayment {
|
|
@@ -11,6 +13,15 @@ export interface TakePayment {
|
|
|
11
13
|
readonly currency: string;
|
|
12
14
|
readonly applicationFee?: number;
|
|
13
15
|
readonly description?: string;
|
|
16
|
+
/** What it is for. `sale` unless said otherwise. */
|
|
17
|
+
readonly kind?: PaymentKind;
|
|
18
|
+
/**
|
|
19
|
+
* A stored card to charge without anybody present.
|
|
20
|
+
*
|
|
21
|
+
* The whole reason for keeping one: a fee is decided days after the fact, and
|
|
22
|
+
* the customer is not there to be asked.
|
|
23
|
+
*/
|
|
24
|
+
readonly savedCardId?: string;
|
|
14
25
|
/** False holds the money instead of taking it. See `capture`. */
|
|
15
26
|
readonly capture?: boolean;
|
|
16
27
|
/**
|
|
@@ -26,8 +37,29 @@ export interface RecordPayment {
|
|
|
26
37
|
readonly amount: number;
|
|
27
38
|
readonly currency: string;
|
|
28
39
|
readonly method: Exclude<PaymentMethod, 'card'>;
|
|
40
|
+
readonly kind?: PaymentKind;
|
|
29
41
|
readonly detail?: string;
|
|
30
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* A charge, and what the browser needs to finish it.
|
|
45
|
+
*
|
|
46
|
+
* The secret is returned rather than stored: a charge created on the server has
|
|
47
|
+
* no card attached to it yet, and the card is entered against the provider's own
|
|
48
|
+
* script so the number never reaches us. Without handing it back, a payment can
|
|
49
|
+
* be created and never paid — which a customer reads as "it took my booking and
|
|
50
|
+
* lost my money".
|
|
51
|
+
*/
|
|
52
|
+
export interface TakenPayment {
|
|
53
|
+
readonly payment: Payment;
|
|
54
|
+
readonly clientSecret?: string;
|
|
55
|
+
}
|
|
56
|
+
/** A card being stored, and what the browser confirms it with. */
|
|
57
|
+
export interface CardToSave {
|
|
58
|
+
readonly subject: string;
|
|
59
|
+
readonly reference: string;
|
|
60
|
+
/** What the customer was told they were agreeing to, in their own language. */
|
|
61
|
+
readonly consentText: string;
|
|
62
|
+
}
|
|
31
63
|
/**
|
|
32
64
|
* Money between a customer and a business, and the record of it.
|
|
33
65
|
*
|
|
@@ -74,7 +106,39 @@ export declare class CommerceService {
|
|
|
74
106
|
* customer debited and the money nowhere anybody can see it, and the first
|
|
75
107
|
* the business hears is asking where it went.
|
|
76
108
|
*/
|
|
77
|
-
take(tenantId: string, input: TakePayment): Promise<
|
|
109
|
+
take(tenantId: string, input: TakePayment): Promise<TakenPayment>;
|
|
110
|
+
/**
|
|
111
|
+
* Starts storing a card without charging it, and records what was agreed.
|
|
112
|
+
*
|
|
113
|
+
* Two steps, because there is a browser in the middle: this creates the
|
|
114
|
+
* intent and hands back a secret, and `confirmCard` writes the row once the
|
|
115
|
+
* provider says a card really is stored. Believing the browser instead would
|
|
116
|
+
* mean a business holding a card reference that charges nothing.
|
|
117
|
+
*/
|
|
118
|
+
saveCard(tenantId: string, input: CardToSave): Promise<{
|
|
119
|
+
externalId: string;
|
|
120
|
+
clientSecret: string;
|
|
121
|
+
}>;
|
|
122
|
+
/**
|
|
123
|
+
* Writes down the card the provider says is now stored.
|
|
124
|
+
*
|
|
125
|
+
* Read back from the provider rather than taken from the browser: what a page
|
|
126
|
+
* reports is what a page was told to report, and this row is what a business
|
|
127
|
+
* will later charge real money against.
|
|
128
|
+
*/
|
|
129
|
+
confirmCard(tenantId: string, externalId: string, input: CardToSave): Promise<SavedCard | null>;
|
|
130
|
+
/** Every card kept for somebody, newest first. */
|
|
131
|
+
savedCards(tenantId: string, subject: string): Promise<SavedCard[]>;
|
|
132
|
+
savedCard(tenantId: string, id: string): Promise<SavedCard | null>;
|
|
133
|
+
/**
|
|
134
|
+
* Forgets a card, at the customer's request or the business's.
|
|
135
|
+
*
|
|
136
|
+
* The provider is told first. A row deleted while the provider still holds
|
|
137
|
+
* the card is a card nobody can see and anybody with the reference can
|
|
138
|
+
* charge; the reverse — a detached card with a row still here — is merely a
|
|
139
|
+
* charge that fails.
|
|
140
|
+
*/
|
|
141
|
+
forgetCard(tenantId: string, id: string): Promise<void>;
|
|
78
142
|
/**
|
|
79
143
|
* Writes down money that arrived some other way.
|
|
80
144
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commerce.service.d.ts","sourceRoot":"","sources":["../../src/nestjs/commerce.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,SAAS,CAAC;AAKzD,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"commerce.service.d.ts","sourceRoot":"","sources":["../../src/nestjs/commerce.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,9 @@ const context_1 = require("@birtalanrobert/context");
|
|
|
20
20
|
const http_1 = require("@birtalanrobert/http");
|
|
21
21
|
const deposits_1 = require("../deposits");
|
|
22
22
|
const payout_account_entity_1 = require("./payout-account.entity");
|
|
23
|
+
const payments_1 = require("../payments");
|
|
23
24
|
const payment_entity_1 = require("./payment.entity");
|
|
25
|
+
const saved_card_entity_1 = require("./saved-card.entity");
|
|
24
26
|
/** The provider this deployment uses, injected so tests can supply their own. */
|
|
25
27
|
exports.COMMERCE_PROVIDER = Symbol('COMMERCE_PROVIDER');
|
|
26
28
|
/**
|
|
@@ -89,6 +91,10 @@ let CommerceService = class CommerceService {
|
|
|
89
91
|
if (!account || !(0, deposits_1.canTakeMoney)(account.status)) {
|
|
90
92
|
throw new http_1.ConflictError('This business cannot take card payments yet.');
|
|
91
93
|
}
|
|
94
|
+
const saved = input.savedCardId ? await this.savedCard(tenantId, input.savedCardId) : null;
|
|
95
|
+
if (input.savedCardId && !saved) {
|
|
96
|
+
throw new http_1.NotFoundError('SavedCard', input.savedCardId);
|
|
97
|
+
}
|
|
92
98
|
if (input.amount <= 0) {
|
|
93
99
|
throw new http_1.ValidationError([{ field: 'amount', message: 'There is nothing to charge.' }], 'There is nothing to charge.');
|
|
94
100
|
}
|
|
@@ -100,14 +106,16 @@ let CommerceService = class CommerceService {
|
|
|
100
106
|
subject: input.subject,
|
|
101
107
|
capture: input.capture ?? true,
|
|
102
108
|
...(input.description ? { description: input.description } : {}),
|
|
109
|
+
...(saved ? { customer: saved.customerRef, paymentMethod: saved.paymentMethodRef } : {}),
|
|
103
110
|
reference: input.reference,
|
|
104
111
|
});
|
|
105
|
-
|
|
112
|
+
const payment = await (0, tenancy_1.runInTenantTransaction)(this.dataSource, async (scoped) => {
|
|
106
113
|
const repository = scoped.getRepository(payment_entity_1.Payment);
|
|
107
114
|
return repository.save(repository.create({
|
|
108
115
|
tenantId,
|
|
109
116
|
subject: input.subject,
|
|
110
117
|
method: 'card',
|
|
118
|
+
kind: input.kind ?? 'sale',
|
|
111
119
|
state: result.state,
|
|
112
120
|
amount: String(input.amount),
|
|
113
121
|
currency: input.currency,
|
|
@@ -123,6 +131,93 @@ let CommerceService = class CommerceService {
|
|
|
123
131
|
recordedBy: (0, context_1.getActor)()?.id ?? null,
|
|
124
132
|
}));
|
|
125
133
|
}, { tenantId });
|
|
134
|
+
/*
|
|
135
|
+
* The secret is handed back and never written down.
|
|
136
|
+
*
|
|
137
|
+
* It authorises whoever holds it to pay this one charge, so it belongs in
|
|
138
|
+
* the response to the person paying and nowhere else — not in a column, not
|
|
139
|
+
* in a log line, and not in an error.
|
|
140
|
+
*/
|
|
141
|
+
return { payment, ...(result.clientSecret ? { clientSecret: result.clientSecret } : {}) };
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Starts storing a card without charging it, and records what was agreed.
|
|
145
|
+
*
|
|
146
|
+
* Two steps, because there is a browser in the middle: this creates the
|
|
147
|
+
* intent and hands back a secret, and `confirmCard` writes the row once the
|
|
148
|
+
* provider says a card really is stored. Believing the browser instead would
|
|
149
|
+
* mean a business holding a card reference that charges nothing.
|
|
150
|
+
*/
|
|
151
|
+
async saveCard(tenantId, input) {
|
|
152
|
+
const existing = await this.savedCards(tenantId, input.subject);
|
|
153
|
+
const result = await this.provider.saveCard({
|
|
154
|
+
subject: input.subject,
|
|
155
|
+
reference: input.reference,
|
|
156
|
+
// Reuse the customer this person already has, so a second card joins the
|
|
157
|
+
// first rather than creating a stranger with the same name.
|
|
158
|
+
...(existing[0] ? { customer: existing[0].customerRef } : {}),
|
|
159
|
+
});
|
|
160
|
+
return { externalId: result.externalId, clientSecret: result.clientSecret };
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Writes down the card the provider says is now stored.
|
|
164
|
+
*
|
|
165
|
+
* Read back from the provider rather than taken from the browser: what a page
|
|
166
|
+
* reports is what a page was told to report, and this row is what a business
|
|
167
|
+
* will later charge real money against.
|
|
168
|
+
*/
|
|
169
|
+
async confirmCard(tenantId, externalId, input) {
|
|
170
|
+
const stored = await this.provider.storedCard(externalId);
|
|
171
|
+
if (!stored)
|
|
172
|
+
return null;
|
|
173
|
+
return (0, tenancy_1.runInTenantTransaction)(this.dataSource, async (scoped) => {
|
|
174
|
+
const repository = scoped.getRepository(saved_card_entity_1.SavedCard);
|
|
175
|
+
const already = await repository.findOne({
|
|
176
|
+
where: { tenantId, paymentMethodRef: stored.paymentMethod },
|
|
177
|
+
});
|
|
178
|
+
// Confirming twice is the ordinary case on a slow connection, not an
|
|
179
|
+
// exotic one, and it must not leave two rows for one card.
|
|
180
|
+
if (already)
|
|
181
|
+
return already;
|
|
182
|
+
return repository.save(repository.create({
|
|
183
|
+
tenantId,
|
|
184
|
+
subject: input.subject,
|
|
185
|
+
provider: this.provider.name,
|
|
186
|
+
customerRef: stored.customer,
|
|
187
|
+
paymentMethodRef: stored.paymentMethod,
|
|
188
|
+
brand: stored.brand ?? null,
|
|
189
|
+
last4: stored.last4 ?? null,
|
|
190
|
+
expiryMonth: stored.expiryMonth ?? null,
|
|
191
|
+
expiryYear: stored.expiryYear ?? null,
|
|
192
|
+
consentText: input.consentText,
|
|
193
|
+
consentedAt: new Date(),
|
|
194
|
+
storedBy: (0, context_1.getActor)()?.id ?? null,
|
|
195
|
+
}));
|
|
196
|
+
}, { tenantId });
|
|
197
|
+
}
|
|
198
|
+
/** Every card kept for somebody, newest first. */
|
|
199
|
+
async savedCards(tenantId, subject) {
|
|
200
|
+
return (0, tenancy_1.runInTenantTransaction)(this.dataSource, (scoped) => scoped
|
|
201
|
+
.getRepository(saved_card_entity_1.SavedCard)
|
|
202
|
+
.find({ where: { tenantId, subject }, order: { createdAt: 'DESC' } }), { tenantId });
|
|
203
|
+
}
|
|
204
|
+
async savedCard(tenantId, id) {
|
|
205
|
+
return (0, tenancy_1.runInTenantTransaction)(this.dataSource, (scoped) => scoped.getRepository(saved_card_entity_1.SavedCard).findOne({ where: { tenantId, id } }), { tenantId });
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Forgets a card, at the customer's request or the business's.
|
|
209
|
+
*
|
|
210
|
+
* The provider is told first. A row deleted while the provider still holds
|
|
211
|
+
* the card is a card nobody can see and anybody with the reference can
|
|
212
|
+
* charge; the reverse — a detached card with a row still here — is merely a
|
|
213
|
+
* charge that fails.
|
|
214
|
+
*/
|
|
215
|
+
async forgetCard(tenantId, id) {
|
|
216
|
+
const card = await this.savedCard(tenantId, id);
|
|
217
|
+
if (!card)
|
|
218
|
+
return;
|
|
219
|
+
await this.provider.forgetCard(card.paymentMethodRef);
|
|
220
|
+
await (0, tenancy_1.runInTenantTransaction)(this.dataSource, (scoped) => scoped.getRepository(saved_card_entity_1.SavedCard).delete({ tenantId, id }), { tenantId });
|
|
126
221
|
}
|
|
127
222
|
/**
|
|
128
223
|
* Writes down money that arrived some other way.
|
|
@@ -143,6 +238,7 @@ let CommerceService = class CommerceService {
|
|
|
143
238
|
tenantId,
|
|
144
239
|
subject: input.subject,
|
|
145
240
|
method: input.method,
|
|
241
|
+
kind: input.kind ?? 'sale',
|
|
146
242
|
// Captured immediately: the money is in the till. There is no
|
|
147
243
|
// provider to wait for and nothing that can fail later.
|
|
148
244
|
state: 'captured',
|
|
@@ -197,7 +293,7 @@ let CommerceService = class CommerceService {
|
|
|
197
293
|
*/
|
|
198
294
|
async refund(tenantId, paymentId, amount, reason) {
|
|
199
295
|
const payment = await this.find(tenantId, paymentId);
|
|
200
|
-
if (
|
|
296
|
+
if (!(0, payments_1.isRefundable)(payment.state)) {
|
|
201
297
|
throw new http_1.ConflictError('That payment cannot be refunded.');
|
|
202
298
|
}
|
|
203
299
|
const already = Number(payment.refunded);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commerce.service.js","sourceRoot":"","sources":["../../src/nestjs/commerce.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commerce.service.js","sourceRoot":"","sources":["../../src/nestjs/commerce.service.ts"],"names":[],"mappings":"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"}
|
package/dist/nestjs/index.d.ts
CHANGED
|
@@ -6,13 +6,16 @@
|
|
|
6
6
|
* browser bundle.
|
|
7
7
|
*/
|
|
8
8
|
export { PayoutAccount } from './payout-account.entity';
|
|
9
|
-
export { Payment, PaymentRefund, type PaymentMethod, type PaymentState } from './payment.entity';
|
|
10
|
-
export {
|
|
9
|
+
export { Payment, PaymentRefund, type PaymentKind, type PaymentMethod, type PaymentState, } from './payment.entity';
|
|
10
|
+
export { SavedCard } from './saved-card.entity';
|
|
11
|
+
export { COMMERCE_PROVIDER, CommerceService, type CardToSave, type RecordPayment, type TakenPayment, type TakePayment, } from './commerce.service';
|
|
11
12
|
export { CreateCommerce1789800000000 } from '../migrations/1789800000000-CreateCommerce';
|
|
13
|
+
export { AddSavedCardsAndKind1790000000000 } from '../migrations/1790000000000-AddSavedCardsAndKind';
|
|
12
14
|
import { PayoutAccount } from './payout-account.entity';
|
|
13
15
|
import { Payment, PaymentRefund } from './payment.entity';
|
|
16
|
+
import { SavedCard } from './saved-card.entity';
|
|
14
17
|
import { CreateCommerce1789800000000 } from '../migrations/1789800000000-CreateCommerce';
|
|
15
18
|
/** Register with the data source, the way every other mortar package is. */
|
|
16
|
-
export declare const commerceEntities: (typeof PayoutAccount | typeof Payment | typeof PaymentRefund)[];
|
|
19
|
+
export declare const commerceEntities: (typeof PayoutAccount | typeof Payment | typeof PaymentRefund | typeof SavedCard)[];
|
|
17
20
|
export declare const commerceMigrations: (typeof CreateCommerce1789800000000)[];
|
|
18
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACL,OAAO,EACP,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,kDAAkD,CAAC;AAErG,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAGzF,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,qFAAqD,CAAC;AACnF,eAAO,MAAM,kBAAkB,wCAAmE,CAAC"}
|
package/dist/nestjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.commerceMigrations = exports.commerceEntities = exports.CreateCommerce1789800000000 = exports.CommerceService = exports.COMMERCE_PROVIDER = exports.PaymentRefund = exports.Payment = exports.PayoutAccount = void 0;
|
|
3
|
+
exports.commerceMigrations = exports.commerceEntities = exports.AddSavedCardsAndKind1790000000000 = exports.CreateCommerce1789800000000 = exports.CommerceService = exports.COMMERCE_PROVIDER = exports.SavedCard = exports.PaymentRefund = exports.Payment = exports.PayoutAccount = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* The parts that need a database and a container.
|
|
6
6
|
*
|
|
@@ -13,15 +13,21 @@ Object.defineProperty(exports, "PayoutAccount", { enumerable: true, get: functio
|
|
|
13
13
|
var payment_entity_1 = require("./payment.entity");
|
|
14
14
|
Object.defineProperty(exports, "Payment", { enumerable: true, get: function () { return payment_entity_1.Payment; } });
|
|
15
15
|
Object.defineProperty(exports, "PaymentRefund", { enumerable: true, get: function () { return payment_entity_1.PaymentRefund; } });
|
|
16
|
+
var saved_card_entity_1 = require("./saved-card.entity");
|
|
17
|
+
Object.defineProperty(exports, "SavedCard", { enumerable: true, get: function () { return saved_card_entity_1.SavedCard; } });
|
|
16
18
|
var commerce_service_1 = require("./commerce.service");
|
|
17
19
|
Object.defineProperty(exports, "COMMERCE_PROVIDER", { enumerable: true, get: function () { return commerce_service_1.COMMERCE_PROVIDER; } });
|
|
18
20
|
Object.defineProperty(exports, "CommerceService", { enumerable: true, get: function () { return commerce_service_1.CommerceService; } });
|
|
19
21
|
var _1789800000000_CreateCommerce_1 = require("../migrations/1789800000000-CreateCommerce");
|
|
20
22
|
Object.defineProperty(exports, "CreateCommerce1789800000000", { enumerable: true, get: function () { return _1789800000000_CreateCommerce_1.CreateCommerce1789800000000; } });
|
|
23
|
+
var _1790000000000_AddSavedCardsAndKind_1 = require("../migrations/1790000000000-AddSavedCardsAndKind");
|
|
24
|
+
Object.defineProperty(exports, "AddSavedCardsAndKind1790000000000", { enumerable: true, get: function () { return _1790000000000_AddSavedCardsAndKind_1.AddSavedCardsAndKind1790000000000; } });
|
|
21
25
|
const payout_account_entity_2 = require("./payout-account.entity");
|
|
22
26
|
const payment_entity_2 = require("./payment.entity");
|
|
27
|
+
const saved_card_entity_2 = require("./saved-card.entity");
|
|
23
28
|
const _1789800000000_CreateCommerce_2 = require("../migrations/1789800000000-CreateCommerce");
|
|
29
|
+
const _1790000000000_AddSavedCardsAndKind_2 = require("../migrations/1790000000000-AddSavedCardsAndKind");
|
|
24
30
|
/** Register with the data source, the way every other mortar package is. */
|
|
25
|
-
exports.commerceEntities = [payout_account_entity_2.PayoutAccount, payment_entity_2.Payment, payment_entity_2.PaymentRefund];
|
|
26
|
-
exports.commerceMigrations = [_1789800000000_CreateCommerce_2.CreateCommerce1789800000000];
|
|
31
|
+
exports.commerceEntities = [payout_account_entity_2.PayoutAccount, payment_entity_2.Payment, payment_entity_2.PaymentRefund, saved_card_entity_2.SavedCard];
|
|
32
|
+
exports.commerceMigrations = [_1789800000000_CreateCommerce_2.CreateCommerce1789800000000, _1790000000000_AddSavedCardsAndKind_2.AddSavedCardsAndKind1790000000000];
|
|
27
33
|
//# sourceMappingURL=index.js.map
|
package/dist/nestjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,iEAAwD;AAA/C,sHAAA,aAAa,OAAA;AACtB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,iEAAwD;AAA/C,sHAAA,aAAa,OAAA;AACtB,mDAM0B;AALxB,yGAAA,OAAO,OAAA;AACP,+GAAA,aAAa,OAAA;AAKf,yDAAgD;AAAvC,8GAAA,SAAS,OAAA;AAClB,uDAO4B;AAN1B,qHAAA,iBAAiB,OAAA;AACjB,mHAAA,eAAe,OAAA;AAMjB,4FAAyF;AAAhF,4IAAA,2BAA2B,OAAA;AACpC,wGAAqG;AAA5F,wJAAA,iCAAiC,OAAA;AAE1C,mEAAwD;AACxD,qDAA0D;AAC1D,2DAAgD;AAChD,8FAAyF;AACzF,0GAAqG;AAErG,4EAA4E;AAC/D,QAAA,gBAAgB,GAAG,CAAC,qCAAa,EAAE,wBAAO,EAAE,8BAAa,EAAE,6BAAS,CAAC,CAAC;AACtE,QAAA,kBAAkB,GAAG,CAAC,2DAA2B,EAAE,uEAAiC,CAAC,CAAC"}
|
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
import { BaseEntity } from '@birtalanrobert/database';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
* `card` is the only one this package processes. The rest are **recorded, not
|
|
6
|
-
* taken** — and recording them is not a lesser feature: a salon is mostly cash
|
|
7
|
-
* at the counter, a restaurant's till takes meal vouchers, and a box office
|
|
8
|
-
* takes notes. A report that only counts what a provider processed tells a
|
|
9
|
-
* business a fraction of its own takings, which is worse than telling it
|
|
10
|
-
* nothing because it looks complete.
|
|
11
|
-
*/
|
|
12
|
-
export type PaymentMethod = 'card' | 'cash' | 'terminal' | 'voucher' | 'transfer';
|
|
13
|
-
/**
|
|
14
|
-
* Where a payment is.
|
|
15
|
-
*
|
|
16
|
-
* `authorized` is separate from `captured` on purpose: a card held against a
|
|
17
|
-
* no-show fee is authorised and never captured unless the fee is applied, and
|
|
18
|
-
* that decision is a human one.
|
|
19
|
-
*/
|
|
20
|
-
export type PaymentState = 'pending' | 'authorized' | 'captured' | 'failed' | 'refunded' | 'partially_refunded' | 'cancelled';
|
|
2
|
+
import type { PaymentKind, PaymentMethod, PaymentState } from '../payments';
|
|
3
|
+
export type { PaymentKind, PaymentMethod, PaymentState } from '../payments';
|
|
21
4
|
/**
|
|
22
5
|
* One movement of money between a customer and a business.
|
|
23
6
|
*
|
|
@@ -36,6 +19,15 @@ export declare class Payment extends BaseEntity {
|
|
|
36
19
|
/** What it was for, as the owning product names it: `booking:<id>`. */
|
|
37
20
|
subject: string;
|
|
38
21
|
method: PaymentMethod;
|
|
22
|
+
/**
|
|
23
|
+
* What it was for.
|
|
24
|
+
*
|
|
25
|
+
* A tip belongs to the person who earned it and a product to neither the
|
|
26
|
+
* service nor the diary — a report counting all three as service income tells
|
|
27
|
+
* a business its haircuts are more profitable than they are, and no amount of
|
|
28
|
+
* arithmetic afterwards can separate them again.
|
|
29
|
+
*/
|
|
30
|
+
kind: PaymentKind;
|
|
39
31
|
state: PaymentState;
|
|
40
32
|
/** Minor units, and the currency it was taken in. Never a float. */
|
|
41
33
|
amount: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.entity.d.ts","sourceRoot":"","sources":["../../src/nestjs/payment.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAuB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"payment.entity.d.ts","sourceRoot":"","sources":["../../src/nestjs/payment.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAuB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ5E,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACH,qBAKa,OAAQ,SAAQ,UAAU;IAErC,QAAQ,EAAG,MAAM,CAAC;IAElB,uEAAuE;IAEvE,OAAO,EAAG,MAAM,CAAC;IAGjB,MAAM,EAAG,aAAa,CAAC;IAEvB;;;;;;;OAOG;IAEH,IAAI,EAAG,WAAW,CAAC;IAGnB,KAAK,EAAG,YAAY,CAAC;IAErB,oEAAoE;IAEpE,MAAM,EAAG,MAAM,CAAC;IAGhB,QAAQ,EAAG,MAAM,CAAC;IAElB;;;;;;OAMG;IAEH,cAAc,EAAG,MAAM,CAAC;IAExB,8DAA8D;IAE9D,QAAQ,EAAG,MAAM,CAAC;IAGlB,QAAQ,EAAG,MAAM,GAAG,IAAI,CAAC;IAEzB,2EAA2E;IAE3E,UAAU,EAAG,MAAM,GAAG,IAAI,CAAC;IAE3B;;;;;;OAMG;IAEH,UAAU,EAAG,MAAM,GAAG,IAAI,CAAC;IAE3B,4EAA4E;IAE5E,OAAO,EAAG,IAAI,GAAG,IAAI,CAAC;IAEtB,qEAAqE;IAErE,MAAM,EAAG,MAAM,GAAG,IAAI,CAAC;IAEvB,kEAAkE;IAElE,UAAU,EAAG,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,qBAEa,aAAc,SAAQ,UAAU;IAE3C,QAAQ,EAAG,MAAM,CAAC;IAGlB,SAAS,EAAG,MAAM,CAAC;IAGnB,MAAM,EAAG,MAAM,CAAC;IAEhB;;;;;;OAMG;IAEH,MAAM,EAAG,MAAM,CAAC;IAGhB,UAAU,EAAG,MAAM,GAAG,IAAI,CAAC;IAG3B,UAAU,EAAG,MAAM,GAAG,IAAI,CAAC;CAC5B"}
|