@bash-app/bash-common 30.272.0 → 30.274.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/utils/__tests__/orgPromotionalPackageUtils.test.js +33 -1
- package/dist/utils/__tests__/orgPromotionalPackageUtils.test.js.map +1 -1
- package/dist/utils/orgPromotionalPackageUtils.d.ts +25 -0
- package/dist/utils/orgPromotionalPackageUtils.d.ts.map +1 -1
- package/dist/utils/orgPromotionalPackageUtils.js +50 -0
- package/dist/utils/orgPromotionalPackageUtils.js.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +1 -1
- package/src/utils/__tests__/orgPromotionalPackageUtils.test.ts +42 -0
- package/src/utils/orgPromotionalPackageUtils.ts +66 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buildOrgPromoPackageTerms, chunkArray, isBashEventEligibleForOrgPromo, orgPromoPackageTotalCents, parseOrgPromotionalPackageRates, selectMembersForOrgPromoReach, } from "../orgPromotionalPackageUtils.js";
|
|
1
|
+
import { buildOrgPromoPackageTerms, chunkArray, isBashEventEligibleForOrgPromo, orgPromoPackageTermsFromPaymentIntent, orgPromoPackageTotalCents, ORG_PROMO_PI_METADATA_TYPE, parseOrgPromotionalPackageRates, selectMembersForOrgPromoReach, } from "../orgPromotionalPackageUtils.js";
|
|
2
2
|
describe("orgPromotionalPackageUtils", () => {
|
|
3
3
|
it("parses valid rates", () => {
|
|
4
4
|
const rates = parseOrgPromotionalPackageRates({
|
|
@@ -43,6 +43,38 @@ describe("orgPromotionalPackageUtils", () => {
|
|
|
43
43
|
expect(orgOnly.reason).toBe("event_org_only");
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
|
+
it("builds terms from payment intent metadata", () => {
|
|
47
|
+
const result = orgPromoPackageTermsFromPaymentIntent({
|
|
48
|
+
amount: 5300,
|
|
49
|
+
metadata: {
|
|
50
|
+
type: ORG_PROMO_PI_METADATA_TYPE,
|
|
51
|
+
tierId: "community",
|
|
52
|
+
orgFeeCents: "5000",
|
|
53
|
+
bashPlatformFeeCents: "300",
|
|
54
|
+
},
|
|
55
|
+
}, "community");
|
|
56
|
+
expect(result.ok).toBe(true);
|
|
57
|
+
if (result.ok) {
|
|
58
|
+
expect(result.totalCents).toBe(5300);
|
|
59
|
+
expect(result.terms.orgFeeCents).toBe(5000);
|
|
60
|
+
expect(result.terms.bashPlatformFeeCents).toBe(300);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
it("rejects payment intent amount mismatch", () => {
|
|
64
|
+
const result = orgPromoPackageTermsFromPaymentIntent({
|
|
65
|
+
amount: 9999,
|
|
66
|
+
metadata: {
|
|
67
|
+
type: ORG_PROMO_PI_METADATA_TYPE,
|
|
68
|
+
tierId: "community",
|
|
69
|
+
orgFeeCents: "5000",
|
|
70
|
+
bashPlatformFeeCents: "300",
|
|
71
|
+
},
|
|
72
|
+
}, "community");
|
|
73
|
+
expect(result.ok).toBe(false);
|
|
74
|
+
if (!result.ok) {
|
|
75
|
+
expect(result.error).toBe("payment_amount_mismatch");
|
|
76
|
+
}
|
|
77
|
+
});
|
|
46
78
|
it("accepts published ticketed events", () => {
|
|
47
79
|
expect(isBashEventEligibleForOrgPromo({
|
|
48
80
|
status: "Published",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orgPromotionalPackageUtils.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/orgPromotionalPackageUtils.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orgPromotionalPackageUtils.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/orgPromotionalPackageUtils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,31 @@ export declare function assertOrgPromoRatesAllowEnable(rates: OrgPromotionalPack
|
|
|
45
45
|
};
|
|
46
46
|
export declare function buildOrgPromoPackageTerms(tierId: OrgPromotionalPackageTierId, rates: OrgPromotionalPackageRates): OrgPromotionalPackageTerms | null;
|
|
47
47
|
export declare function orgPromoPackageTotalCents(terms: OrgPromotionalPackageTerms): number;
|
|
48
|
+
/** PaymentIntent.metadata shape written by createOrgPromoPaymentIntent. */
|
|
49
|
+
export type OrgPromoPaymentIntentMetadata = {
|
|
50
|
+
type?: string;
|
|
51
|
+
organizationId?: string;
|
|
52
|
+
bashEventId?: string;
|
|
53
|
+
tierId?: string;
|
|
54
|
+
hostUserId?: string;
|
|
55
|
+
orgFeeCents?: string;
|
|
56
|
+
bashPlatformFeeCents?: string;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Build package fee snapshot from an authorized PI (confirm-paid).
|
|
60
|
+
* Amount and metadata must match what was set at intent time.
|
|
61
|
+
*/
|
|
62
|
+
export declare function orgPromoPackageTermsFromPaymentIntent(pi: {
|
|
63
|
+
amount: number | null;
|
|
64
|
+
metadata?: OrgPromoPaymentIntentMetadata | null;
|
|
65
|
+
}, expectedTierId: OrgPromotionalPackageTierId): {
|
|
66
|
+
ok: true;
|
|
67
|
+
terms: OrgPromotionalPackageTerms;
|
|
68
|
+
totalCents: number;
|
|
69
|
+
} | {
|
|
70
|
+
ok: false;
|
|
71
|
+
error: string;
|
|
72
|
+
};
|
|
48
73
|
export declare function selectMembersForOrgPromoReach<T extends {
|
|
49
74
|
joinedAt?: Date | string | null;
|
|
50
75
|
}>(members: T[], maxReach: number): T[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orgPromotionalPackageUtils.d.ts","sourceRoot":"","sources":["../../src/utils/orgPromotionalPackageUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orgPromotionalPackageUtils.d.ts","sourceRoot":"","sources":["../../src/utils/orgPromotionalPackageUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,6 +81,56 @@ export function buildOrgPromoPackageTerms(tierId, rates) {
|
|
|
81
81
|
export function orgPromoPackageTotalCents(terms) {
|
|
82
82
|
return terms.orgFeeCents + terms.bashPlatformFeeCents;
|
|
83
83
|
}
|
|
84
|
+
function parseMetadataInt(value) {
|
|
85
|
+
if (value === undefined || value === "")
|
|
86
|
+
return null;
|
|
87
|
+
const n = Number.parseInt(value, 10);
|
|
88
|
+
if (!Number.isInteger(n) || n < 0)
|
|
89
|
+
return null;
|
|
90
|
+
return n;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Build package fee snapshot from an authorized PI (confirm-paid).
|
|
94
|
+
* Amount and metadata must match what was set at intent time.
|
|
95
|
+
*/
|
|
96
|
+
export function orgPromoPackageTermsFromPaymentIntent(pi, expectedTierId) {
|
|
97
|
+
const m = pi.metadata ?? {};
|
|
98
|
+
if (m.type !== ORG_PROMO_PI_METADATA_TYPE) {
|
|
99
|
+
return { ok: false, error: "invalid_payment_type" };
|
|
100
|
+
}
|
|
101
|
+
if (!isOrgPromoTierId(m.tierId ?? "") || m.tierId !== expectedTierId) {
|
|
102
|
+
return { ok: false, error: "payment_tier_mismatch" };
|
|
103
|
+
}
|
|
104
|
+
const orgFeeCents = parseMetadataInt(m.orgFeeCents);
|
|
105
|
+
const bashPlatformFeeCents = parseMetadataInt(m.bashPlatformFeeCents);
|
|
106
|
+
if (orgFeeCents === null || bashPlatformFeeCents === null) {
|
|
107
|
+
return { ok: false, error: "invalid_payment_amounts" };
|
|
108
|
+
}
|
|
109
|
+
if (orgFeeCents > ORG_PROMO_MAX_ORG_FEE_CENTS) {
|
|
110
|
+
return { ok: false, error: "invalid_payment_amounts" };
|
|
111
|
+
}
|
|
112
|
+
const expectedPlatform = ORG_PROMO_PLATFORM_FEES_CENTS[expectedTierId];
|
|
113
|
+
if (bashPlatformFeeCents !== expectedPlatform) {
|
|
114
|
+
return { ok: false, error: "invalid_platform_fee" };
|
|
115
|
+
}
|
|
116
|
+
const totalCents = orgFeeCents + bashPlatformFeeCents;
|
|
117
|
+
if (totalCents < 50) {
|
|
118
|
+
return { ok: false, error: "invalid_payment_amounts" };
|
|
119
|
+
}
|
|
120
|
+
if (pi.amount !== null && pi.amount !== totalCents) {
|
|
121
|
+
return { ok: false, error: "payment_amount_mismatch" };
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
ok: true,
|
|
125
|
+
totalCents,
|
|
126
|
+
terms: {
|
|
127
|
+
tierId: expectedTierId,
|
|
128
|
+
maxReach: ORG_PROMO_MAX_REACH[expectedTierId],
|
|
129
|
+
orgFeeCents,
|
|
130
|
+
bashPlatformFeeCents,
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
84
134
|
export function selectMembersForOrgPromoReach(members, maxReach) {
|
|
85
135
|
const sorted = [...members].sort((a, b) => {
|
|
86
136
|
const ta = a.joinedAt ? new Date(a.joinedAt).getTime() : 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orgPromotionalPackageUtils.js","sourceRoot":"","sources":["../../src/utils/orgPromotionalPackageUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orgPromotionalPackageUtils.js","sourceRoot":"","sources":["../../src/utils/orgPromotionalPackageUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -644,7 +644,7 @@ model BashEvent {
|
|
|
644
644
|
/// GlutenFreeOptions, VeganOptions). Stored as an array of `DietaryOption`
|
|
645
645
|
/// enum values; surfaced on the wizard "Allowed/Not Allowed" step and used
|
|
646
646
|
/// for the homepage filter so guests can find bashes matching their needs.
|
|
647
|
-
dietaryOptions DietaryOption[]
|
|
647
|
+
dietaryOptions DietaryOption[] @default([])
|
|
648
648
|
eventFormat EventFormat? // Derived from location and videoLink: In-Person, Virtual, or Hybrid
|
|
649
649
|
nonProfit Boolean?
|
|
650
650
|
nonProfitId String?
|
|
@@ -2,7 +2,9 @@ import {
|
|
|
2
2
|
buildOrgPromoPackageTerms,
|
|
3
3
|
chunkArray,
|
|
4
4
|
isBashEventEligibleForOrgPromo,
|
|
5
|
+
orgPromoPackageTermsFromPaymentIntent,
|
|
5
6
|
orgPromoPackageTotalCents,
|
|
7
|
+
ORG_PROMO_PI_METADATA_TYPE,
|
|
6
8
|
parseOrgPromotionalPackageRates,
|
|
7
9
|
selectMembersForOrgPromoReach,
|
|
8
10
|
} from "../orgPromotionalPackageUtils.js";
|
|
@@ -59,6 +61,46 @@ describe("orgPromotionalPackageUtils", () => {
|
|
|
59
61
|
}
|
|
60
62
|
});
|
|
61
63
|
|
|
64
|
+
it("builds terms from payment intent metadata", () => {
|
|
65
|
+
const result = orgPromoPackageTermsFromPaymentIntent(
|
|
66
|
+
{
|
|
67
|
+
amount: 5300,
|
|
68
|
+
metadata: {
|
|
69
|
+
type: ORG_PROMO_PI_METADATA_TYPE,
|
|
70
|
+
tierId: "community",
|
|
71
|
+
orgFeeCents: "5000",
|
|
72
|
+
bashPlatformFeeCents: "300",
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
"community"
|
|
76
|
+
);
|
|
77
|
+
expect(result.ok).toBe(true);
|
|
78
|
+
if (result.ok) {
|
|
79
|
+
expect(result.totalCents).toBe(5300);
|
|
80
|
+
expect(result.terms.orgFeeCents).toBe(5000);
|
|
81
|
+
expect(result.terms.bashPlatformFeeCents).toBe(300);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it("rejects payment intent amount mismatch", () => {
|
|
86
|
+
const result = orgPromoPackageTermsFromPaymentIntent(
|
|
87
|
+
{
|
|
88
|
+
amount: 9999,
|
|
89
|
+
metadata: {
|
|
90
|
+
type: ORG_PROMO_PI_METADATA_TYPE,
|
|
91
|
+
tierId: "community",
|
|
92
|
+
orgFeeCents: "5000",
|
|
93
|
+
bashPlatformFeeCents: "300",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
"community"
|
|
97
|
+
);
|
|
98
|
+
expect(result.ok).toBe(false);
|
|
99
|
+
if (!result.ok) {
|
|
100
|
+
expect(result.error).toBe("payment_amount_mismatch");
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
|
|
62
104
|
it("accepts published ticketed events", () => {
|
|
63
105
|
expect(
|
|
64
106
|
isBashEventEligibleForOrgPromo({
|
|
@@ -115,6 +115,72 @@ export function orgPromoPackageTotalCents(terms: OrgPromotionalPackageTerms): nu
|
|
|
115
115
|
return terms.orgFeeCents + terms.bashPlatformFeeCents;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
/** PaymentIntent.metadata shape written by createOrgPromoPaymentIntent. */
|
|
119
|
+
export type OrgPromoPaymentIntentMetadata = {
|
|
120
|
+
type?: string;
|
|
121
|
+
organizationId?: string;
|
|
122
|
+
bashEventId?: string;
|
|
123
|
+
tierId?: string;
|
|
124
|
+
hostUserId?: string;
|
|
125
|
+
orgFeeCents?: string;
|
|
126
|
+
bashPlatformFeeCents?: string;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
function parseMetadataInt(value: string | undefined): number | null {
|
|
130
|
+
if (value === undefined || value === "") return null;
|
|
131
|
+
const n = Number.parseInt(value, 10);
|
|
132
|
+
if (!Number.isInteger(n) || n < 0) return null;
|
|
133
|
+
return n;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Build package fee snapshot from an authorized PI (confirm-paid).
|
|
138
|
+
* Amount and metadata must match what was set at intent time.
|
|
139
|
+
*/
|
|
140
|
+
export function orgPromoPackageTermsFromPaymentIntent(
|
|
141
|
+
pi: { amount: number | null; metadata?: OrgPromoPaymentIntentMetadata | null },
|
|
142
|
+
expectedTierId: OrgPromotionalPackageTierId
|
|
143
|
+
):
|
|
144
|
+
| { ok: true; terms: OrgPromotionalPackageTerms; totalCents: number }
|
|
145
|
+
| { ok: false; error: string } {
|
|
146
|
+
const m = pi.metadata ?? {};
|
|
147
|
+
if (m.type !== ORG_PROMO_PI_METADATA_TYPE) {
|
|
148
|
+
return { ok: false, error: "invalid_payment_type" };
|
|
149
|
+
}
|
|
150
|
+
if (!isOrgPromoTierId(m.tierId ?? "") || m.tierId !== expectedTierId) {
|
|
151
|
+
return { ok: false, error: "payment_tier_mismatch" };
|
|
152
|
+
}
|
|
153
|
+
const orgFeeCents = parseMetadataInt(m.orgFeeCents);
|
|
154
|
+
const bashPlatformFeeCents = parseMetadataInt(m.bashPlatformFeeCents);
|
|
155
|
+
if (orgFeeCents === null || bashPlatformFeeCents === null) {
|
|
156
|
+
return { ok: false, error: "invalid_payment_amounts" };
|
|
157
|
+
}
|
|
158
|
+
if (orgFeeCents > ORG_PROMO_MAX_ORG_FEE_CENTS) {
|
|
159
|
+
return { ok: false, error: "invalid_payment_amounts" };
|
|
160
|
+
}
|
|
161
|
+
const expectedPlatform = ORG_PROMO_PLATFORM_FEES_CENTS[expectedTierId];
|
|
162
|
+
if (bashPlatformFeeCents !== expectedPlatform) {
|
|
163
|
+
return { ok: false, error: "invalid_platform_fee" };
|
|
164
|
+
}
|
|
165
|
+
const totalCents = orgFeeCents + bashPlatformFeeCents;
|
|
166
|
+
if (totalCents < 50) {
|
|
167
|
+
return { ok: false, error: "invalid_payment_amounts" };
|
|
168
|
+
}
|
|
169
|
+
if (pi.amount !== null && pi.amount !== totalCents) {
|
|
170
|
+
return { ok: false, error: "payment_amount_mismatch" };
|
|
171
|
+
}
|
|
172
|
+
return {
|
|
173
|
+
ok: true,
|
|
174
|
+
totalCents,
|
|
175
|
+
terms: {
|
|
176
|
+
tierId: expectedTierId,
|
|
177
|
+
maxReach: ORG_PROMO_MAX_REACH[expectedTierId],
|
|
178
|
+
orgFeeCents,
|
|
179
|
+
bashPlatformFeeCents,
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
|
|
118
184
|
export function selectMembersForOrgPromoReach<T extends { joinedAt?: Date | string | null }>(
|
|
119
185
|
members: T[],
|
|
120
186
|
maxReach: number
|