@birtalanrobert/commerce 1.0.0 → 3.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.
Files changed (46) hide show
  1. package/README.md +9 -1
  2. package/dist/index.d.ts +8 -6
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +20 -7
  5. package/dist/index.js.map +1 -1
  6. package/dist/migrations/1790000000000-AddSavedCardsAndKind.d.ts +30 -0
  7. package/dist/migrations/1790000000000-AddSavedCardsAndKind.d.ts.map +1 -0
  8. package/dist/migrations/1790000000000-AddSavedCardsAndKind.js +89 -0
  9. package/dist/migrations/1790000000000-AddSavedCardsAndKind.js.map +1 -0
  10. package/dist/nestjs/commerce.service.d.ts +65 -1
  11. package/dist/nestjs/commerce.service.d.ts.map +1 -1
  12. package/dist/nestjs/commerce.service.js +98 -2
  13. package/dist/nestjs/commerce.service.js.map +1 -1
  14. package/dist/nestjs/index.d.ts +6 -3
  15. package/dist/nestjs/index.d.ts.map +1 -1
  16. package/dist/nestjs/index.js +9 -3
  17. package/dist/nestjs/index.js.map +1 -1
  18. package/dist/nestjs/payment.entity.d.ts +11 -19
  19. package/dist/nestjs/payment.entity.d.ts.map +1 -1
  20. package/dist/nestjs/payment.entity.js +13 -0
  21. package/dist/nestjs/payment.entity.js.map +1 -1
  22. package/dist/nestjs/saved-card.entity.d.ts +42 -0
  23. package/dist/nestjs/saved-card.entity.d.ts.map +1 -0
  24. package/dist/nestjs/saved-card.entity.js +109 -0
  25. package/dist/nestjs/saved-card.entity.js.map +1 -0
  26. package/dist/payments.d.ts +54 -0
  27. package/dist/payments.d.ts.map +1 -0
  28. package/dist/payments.js +30 -0
  29. package/dist/payments.js.map +1 -0
  30. package/dist/providers/port.d.ts +68 -0
  31. package/dist/providers/port.d.ts.map +1 -1
  32. package/dist/providers/stripe.d.ts +12 -1
  33. package/dist/providers/stripe.d.ts.map +1 -1
  34. package/dist/providers/stripe.js +71 -1
  35. package/dist/providers/stripe.js.map +1 -1
  36. package/package.json +16 -3
  37. package/src/index.ts +27 -5
  38. package/src/migrations/1790000000000-AddSavedCardsAndKind.ts +92 -0
  39. package/src/nestjs/commerce.service.ts +170 -3
  40. package/src/nestjs/index.ts +15 -3
  41. package/src/nestjs/payment.entity.ts +17 -25
  42. package/src/nestjs/saved-card.entity.ts +69 -0
  43. package/src/payments.ts +67 -0
  44. package/src/providers/port.ts +74 -0
  45. package/src/providers/stripe.ts +90 -1
  46. package/stripe/package.json +5 -0
package/README.md CHANGED
@@ -27,7 +27,7 @@ canTakeMoney('pending'); // false — the provider has not verified them yet
27
27
  ## Using it in a NestJS application
28
28
 
29
29
  ```ts
30
- import { StripeConnect } from '@birtalanrobert/commerce';
30
+ import { StripeConnect } from '@birtalanrobert/commerce/stripe';
31
31
  import {
32
32
  COMMERCE_PROVIDER,
33
33
  CommerceService,
@@ -55,6 +55,14 @@ export class PaymentsModule {}
55
55
  Register `commerceEntities` and `commerceMigrations` with the data source, as
56
56
  with every other package here.
57
57
 
58
+ **Three entry points, and the split is deliberate.** The root is pure — what a
59
+ deposit comes to, whether a business may sell yet, whether a payment can still
60
+ be refunded — because a console decides all three while somebody drags a
61
+ slider. `/nestjs` holds the service, the entities and the migrations.
62
+ `/stripe` holds the vendor's client on its own, because importing it pulls in
63
+ the whole SDK, and a barrel that re-exported it once put a payments SDK into a
64
+ booking console's first load.
65
+
58
66
  ## The parts worth knowing before using it
59
67
 
60
68
  - **A business cannot be charged for until the provider says it may be paid
package/dist/index.d.ts CHANGED
@@ -12,12 +12,14 @@
12
12
  * the mistake that makes both hard to reason about — they differ in who pays
13
13
  * whom, in which Stripe account, and in what happens when one fails.
14
14
  *
15
- * **This entry point is pure.** What a deposit comes to and whether a business
16
- * may sell yet are decided without a database or a provider, because a console
17
- * shows both while somebody drags a slider. Everything needing storage or
18
- * somebody else's money-moving licence is behind `/nestjs`.
15
+ * **This entry point is pure**, and stays that way by leaving things out. What
16
+ * a deposit comes to and whether a business may sell yet are decided without a
17
+ * database or a provider, because a console shows both while somebody drags a
18
+ * slider. Storage and the container are behind `/nestjs`; the Stripe client is
19
+ * behind `/stripe`, because a barrel that re-exports it puts the vendor's whole
20
+ * SDK into every bundle that wanted to divide a price by three.
19
21
  */
20
22
  export { balanceAfter, canTakeMoney, depositFor, payoutBlockReason, type DepositKind, type DepositPolicy, type PayoutStatus, } from './deposits';
21
- export type { ChargeRequest, ChargeResult, OnboardingLink, PaymentProvider, ProviderAccount, ProviderEvent, RefundRequest, } from './providers/port';
22
- export { StripeConnect, type StripeConnectOptions } from './providers/stripe';
23
+ export { isRefundable, refundableAmount, type PaymentKind, type PaymentMethod, type PaymentState, } from './payments';
24
+ export type { ChargeRequest, ChargeResult, OnboardingLink, PaymentProvider, ProviderAccount, ProviderEvent, RefundRequest, SaveCardRequest, SaveCardResult, StoredCard, } from './providers/port';
23
25
  //# sourceMappingURL=index.d.ts.map
@@ -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,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;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"}
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.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
  *
@@ -15,16 +15,29 @@ exports.StripeConnect = exports.payoutBlockReason = exports.depositFor = exports
15
15
  * the mistake that makes both hard to reason about — they differ in who pays
16
16
  * whom, in which Stripe account, and in what happens when one fails.
17
17
  *
18
- * **This entry point is pure.** What a deposit comes to and whether a business
19
- * may sell yet are decided without a database or a provider, because a console
20
- * shows both while somebody drags a slider. Everything needing storage or
21
- * somebody else's money-moving licence is behind `/nestjs`.
18
+ * **This entry point is pure**, and stays that way by leaving things out. What
19
+ * a deposit comes to and whether a business may sell yet are decided without a
20
+ * database or a provider, because a console shows both while somebody drags a
21
+ * slider. Storage and the container are behind `/nestjs`; the Stripe client is
22
+ * behind `/stripe`, because a barrel that re-exports it puts the vendor's whole
23
+ * SDK into every bundle that wanted to divide a price by three.
22
24
  */
23
25
  var deposits_1 = require("./deposits");
24
26
  Object.defineProperty(exports, "balanceAfter", { enumerable: true, get: function () { return deposits_1.balanceAfter; } });
25
27
  Object.defineProperty(exports, "canTakeMoney", { enumerable: true, get: function () { return deposits_1.canTakeMoney; } });
26
28
  Object.defineProperty(exports, "depositFor", { enumerable: true, get: function () { return deposits_1.depositFor; } });
27
29
  Object.defineProperty(exports, "payoutBlockReason", { enumerable: true, get: function () { return deposits_1.payoutBlockReason; } });
28
- var stripe_1 = require("./providers/stripe");
29
- Object.defineProperty(exports, "StripeConnect", { enumerable: true, get: function () { return stripe_1.StripeConnect; } });
30
+ var payments_1 = require("./payments");
31
+ Object.defineProperty(exports, "isRefundable", { enumerable: true, get: function () { return payments_1.isRefundable; } });
32
+ Object.defineProperty(exports, "refundableAmount", { enumerable: true, get: function () { return payments_1.refundableAmount; } });
33
+ /*
34
+ * `StripeConnect` is deliberately NOT re-exported here.
35
+ *
36
+ * It lives at `@birtalanrobert/commerce/stripe`, because importing it pulls in
37
+ * the vendor's whole SDK — and this entry point is imported by browser code
38
+ * that only wants to know what a deposit comes to. Re-exporting it put 30 KB of
39
+ * a payments SDK into a console's first load for a screen that never calls it:
40
+ * a barrel is a bundling decision, and the only way to keep this one pure is to
41
+ * leave the heavy thing out of it.
42
+ */
30
43
  //# 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;AAgBnB,6CAA8E;AAArE,uGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;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;;;;;;;;;GASG"}
@@ -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<Payment>;
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;AAE9E,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,qBACa,eAAe;IAEJ,OAAO,CAAC,QAAQ,CAAC,UAAU;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADf,UAAU,EAAE,UAAU,EACf,QAAQ,EAAE,eAAe;IAKvE,gFAAgF;IAC1E,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAW9D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI3D;;;;;;OAMG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAClF,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC;IAc5C,yEAAyE;IACnE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAYnE;;;;;;;OAOG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAuDlE;;;;;;;;OAQG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAsCtE;;;;;;OAMG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBrF,mDAAmD;IAC7C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcpE;;;;;OAKG;IACG,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;IAmEnB,kEAAkE;IAC5D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAWvE,kDAAkD;IAC5C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAa/E;;;;;;;OAOG;IACG,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC;YAyClE,IAAI;YAWJ,MAAM;YAcN,WAAW;CAkC1B"}
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
- return (0, tenancy_1.runInTenantTransaction)(this.dataSource, async (scoped) => {
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 (payment.state !== 'captured' && payment.state !== 'partially_refunded') {
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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"}
@@ -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 { COMMERCE_PROVIDER, CommerceService, type RecordPayment, type TakePayment, } from './commerce.service';
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,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAEzF,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,kEAA0C,CAAC;AACxE,eAAO,MAAM,kBAAkB,wCAAgC,CAAC"}
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"}
@@ -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
@@ -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,mDAAiG;AAAxF,yGAAA,OAAO,OAAA;AAAE,+GAAA,aAAa,OAAA;AAC/B,uDAK4B;AAJ1B,qHAAA,iBAAiB,OAAA;AACjB,mHAAA,eAAe,OAAA;AAIjB,4FAAyF;AAAhF,4IAAA,2BAA2B,OAAA;AAEpC,mEAAwD;AACxD,qDAA0D;AAC1D,8FAAyF;AAEzF,4EAA4E;AAC/D,QAAA,gBAAgB,GAAG,CAAC,qCAAa,EAAE,wBAAO,EAAE,8BAAa,CAAC,CAAC;AAC3D,QAAA,kBAAkB,GAAG,CAAC,2DAA2B,CAAC,CAAC"}
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"}