@downcity/services 0.1.67 → 0.1.71
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/bin/accounts/index.d.ts +1 -5
- package/bin/accounts/index.d.ts.map +1 -1
- package/bin/accounts/index.js +1 -4
- package/bin/accounts/index.js.map +1 -1
- package/bin/balance/index.d.ts +3 -3
- package/bin/balance/index.d.ts.map +1 -1
- package/bin/balance/index.js +2 -2
- package/bin/balance/index.js.map +1 -1
- package/bin/balance/routes.d.ts.map +1 -1
- package/bin/balance/routes.js +36 -0
- package/bin/balance/routes.js.map +1 -1
- package/bin/balance/schema.d.ts +161 -0
- package/bin/balance/schema.d.ts.map +1 -1
- package/bin/balance/schema.js +38 -0
- package/bin/balance/schema.js.map +1 -1
- package/bin/balance/service.d.ts +171 -5
- package/bin/balance/service.d.ts.map +1 -1
- package/bin/balance/service.js +77 -11
- package/bin/balance/service.js.map +1 -1
- package/bin/balance/types.d.ts +81 -1
- package/bin/balance/types.d.ts.map +1 -1
- package/bin/balance/utils.d.ts +5 -1
- package/bin/balance/utils.d.ts.map +1 -1
- package/bin/balance/utils.js +17 -0
- package/bin/balance/utils.js.map +1 -1
- package/bin/index.d.ts +8 -10
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +6 -7
- package/bin/index.js.map +1 -1
- package/bin/payment/helpers.d.ts +68 -0
- package/bin/payment/helpers.d.ts.map +1 -0
- package/bin/payment/helpers.js +148 -0
- package/bin/payment/helpers.js.map +1 -0
- package/bin/payment/index.d.ts +10 -28
- package/bin/payment/index.d.ts.map +1 -1
- package/bin/payment/index.js +9 -890
- package/bin/payment/index.js.map +1 -1
- package/bin/payment/providers.d.ts +25 -0
- package/bin/payment/providers.d.ts.map +1 -0
- package/bin/payment/providers.js +415 -0
- package/bin/payment/providers.js.map +1 -0
- package/bin/payment/routes.d.ts +29 -0
- package/bin/payment/routes.d.ts.map +1 -0
- package/bin/payment/routes.js +394 -0
- package/bin/payment/routes.js.map +1 -0
- package/bin/{billing → payment}/service.d.ts +99 -278
- package/bin/payment/service.d.ts.map +1 -0
- package/bin/payment/service.js +72 -0
- package/bin/payment/service.js.map +1 -0
- package/bin/payment/types.d.ts +11 -18
- package/bin/payment/types.d.ts.map +1 -1
- package/bin/usage/index.d.ts +3 -174
- package/bin/usage/index.d.ts.map +1 -1
- package/bin/usage/index.js +2 -117
- package/bin/usage/index.js.map +1 -1
- package/bin/usage/service.d.ts +353 -0
- package/bin/usage/service.d.ts.map +1 -0
- package/bin/usage/service.js +140 -0
- package/bin/usage/service.js.map +1 -0
- package/package.json +2 -2
- package/bin/billing/index.d.ts +0 -7
- package/bin/billing/index.d.ts.map +0 -1
- package/bin/billing/index.js +0 -6
- package/bin/billing/index.js.map +0 -1
- package/bin/billing/routes.d.ts +0 -14
- package/bin/billing/routes.d.ts.map +0 -1
- package/bin/billing/routes.js +0 -61
- package/bin/billing/routes.js.map +0 -1
- package/bin/billing/schema.d.ts +0 -582
- package/bin/billing/schema.d.ts.map +0 -1
- package/bin/billing/schema.js +0 -81
- package/bin/billing/schema.js.map +0 -1
- package/bin/billing/service.d.ts.map +0 -1
- package/bin/billing/service.js +0 -492
- package/bin/billing/service.js.map +0 -1
- package/bin/billing/types.d.ts +0 -226
- package/bin/billing/types.d.ts.map +0 -1
- package/bin/billing/types.js +0 -10
- package/bin/billing/types.js.map +0 -1
package/bin/index.d.ts
CHANGED
|
@@ -3,23 +3,21 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 关键说明(中文)
|
|
5
5
|
* - 对外统一暴露 Downcity 官方服务
|
|
6
|
-
* -
|
|
6
|
+
* - 对外统一暴露 accounts / balance / payment / usage 等官方服务
|
|
7
7
|
* - Stripe / Creem / Dodo / Waffo 统一作为 payment provider 暴露
|
|
8
8
|
* - 业务侧只需要从一个包完成导入
|
|
9
9
|
*/
|
|
10
10
|
export { accountsOAuthStates, userProfiles } from "./accounts/schema.js";
|
|
11
|
-
export { AccountsService
|
|
11
|
+
export { AccountsService } from "./accounts/index.js";
|
|
12
12
|
export type { AccountsServiceOptions } from "./accounts/index.js";
|
|
13
|
-
export { balanceAccounts, balanceLedger, balanceRedeemCodes, balanceTopups } from "./balance/schema.js";
|
|
14
|
-
export { BalanceService
|
|
15
|
-
export type { BalanceAccount, BalanceCreditsConversion, BalanceCreateRedeemCodeInput, BalanceExtra, BalanceHistoryQuery, BalanceLedgerEntry, BalanceLedgerKind, BalanceRedeemCode, BalanceRedeemCodeIssueResult, BalanceRedeemCodeQuery, BalanceRedeemCodeRedeemResult, BalanceRedeemCodeStatus, BalanceServiceOptions, BalanceTopup, BalanceTopupQuery, BalanceTopupStatus, BalanceUserBalance, } from "./balance/types.js";
|
|
13
|
+
export { balanceAccounts, balanceCharges, balanceLedger, balanceRedeemCodes, balanceTopups } from "./balance/schema.js";
|
|
14
|
+
export { BalanceService } from "./balance/service.js";
|
|
15
|
+
export type { BalanceAccount, BalanceCharge, BalanceChargeInput, BalanceChargeQuery, BalanceChargeStatus, BalanceCreditsConversion, BalanceCreateRedeemCodeInput, BalanceExtra, BalanceHistoryQuery, BalanceLedgerEntry, BalanceLedgerKind, BalanceRedeemCode, BalanceRedeemCodeIssueResult, BalanceRedeemCodeQuery, BalanceRedeemCodeRedeemResult, BalanceRedeemCodeStatus, BalanceServiceOptions, BalanceTopup, BalanceTopupQuery, BalanceTopupStatus, BalanceUserBalance, } from "./balance/types.js";
|
|
16
16
|
export { CREDIT_DECIMAL_PLACES, MICROCREDITS_PER_CREDIT, } from "./types/Amount.js";
|
|
17
17
|
export type { Credits, Microcredits, } from "./types/Amount.js";
|
|
18
|
-
export {
|
|
19
|
-
export type {
|
|
20
|
-
export { creemPaymentProvider, dodoPaymentProvider, paymentService, stripePaymentProvider, waffoPaymentProvider, } from "./payment/index.js";
|
|
21
|
-
export type { PaymentCheckoutCreateResult, PaymentCreateCheckoutInput, PaymentEventRecord, PaymentEventSyncStatus, PaymentMethodItem, PaymentMethodReason, PaymentMethodType, PaymentProvider, PaymentProviderCheckoutInput, PaymentProviderCheckoutResult, PaymentProviderContext, PaymentProviderWebhookEvent, PaymentProviderWebhookInput, PaymentRecord, PaymentServiceBalanceBridge, PaymentServiceOptions, PaymentStatus, PaymentTopupRecord, } from "./payment/types.js";
|
|
18
|
+
export { creemPaymentProvider, dodoPaymentProvider, PaymentService, stripePaymentProvider, waffoPaymentProvider, } from "./payment/index.js";
|
|
19
|
+
export type { PaymentCheckoutCreateResult, PaymentCreateCheckoutInput, PaymentEventRecord, PaymentEventSyncStatus, PaymentMethodItem, PaymentMethodReason, PaymentMethodType, PaymentProvider, PaymentProviderCheckoutInput, PaymentProviderCheckoutResult, PaymentProviderContext, PaymentProviderWebhookEvent, PaymentProviderWebhookInput, PaymentRecord, PaymentServiceOptions, PaymentTopupRecord, PaymentStatus, } from "./payment/types.js";
|
|
22
20
|
export type { CreemPaymentProviderOptions, DodoPaymentProviderOptions, StripePaymentProviderOptions, WaffoPaymentProviderOptions, } from "./payment/types.js";
|
|
23
|
-
export { usageEvents,
|
|
21
|
+
export { usageEvents, UsageService } from "./usage/index.js";
|
|
24
22
|
export type { UsageServiceOptions } from "./usage/index.js";
|
|
25
23
|
//# sourceMappingURL=index.d.ts.map
|
package/bin/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,OAAO,EACP,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACd,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/bin/index.js
CHANGED
|
@@ -3,16 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 关键说明(中文)
|
|
5
5
|
* - 对外统一暴露 Downcity 官方服务
|
|
6
|
-
* -
|
|
6
|
+
* - 对外统一暴露 accounts / balance / payment / usage 等官方服务
|
|
7
7
|
* - Stripe / Creem / Dodo / Waffo 统一作为 payment provider 暴露
|
|
8
8
|
* - 业务侧只需要从一个包完成导入
|
|
9
9
|
*/
|
|
10
10
|
export { accountsOAuthStates, userProfiles } from "./accounts/schema.js";
|
|
11
|
-
export { AccountsService
|
|
12
|
-
export { balanceAccounts, balanceLedger, balanceRedeemCodes, balanceTopups } from "./balance/schema.js";
|
|
13
|
-
export { BalanceService
|
|
11
|
+
export { AccountsService } from "./accounts/index.js";
|
|
12
|
+
export { balanceAccounts, balanceCharges, balanceLedger, balanceRedeemCodes, balanceTopups } from "./balance/schema.js";
|
|
13
|
+
export { BalanceService } from "./balance/service.js";
|
|
14
14
|
export { CREDIT_DECIMAL_PLACES, MICROCREDITS_PER_CREDIT, } from "./types/Amount.js";
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export { usageEvents, usageService } from "./usage/index.js";
|
|
15
|
+
export { creemPaymentProvider, dodoPaymentProvider, PaymentService, stripePaymentProvider, waffoPaymentProvider, } from "./payment/index.js";
|
|
16
|
+
export { usageEvents, UsageService } from "./usage/index.js";
|
|
18
17
|
//# sourceMappingURL=index.js.map
|
package/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAwBtD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AA2B5B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payment 子模块通用工具函数。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 被 service、routes、providers 共享的纯工具函数集中在这里。
|
|
6
|
+
* - 不包含任何路由或 provider 特定逻辑。
|
|
7
|
+
*/
|
|
8
|
+
import type { EnvRequirement } from "@downcity/city";
|
|
9
|
+
import type { PaymentMethodItem, PaymentProvider } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* 校验并去重 provider 列表。
|
|
12
|
+
*/
|
|
13
|
+
export declare function normalizeProviders(providers: PaymentProvider[]): PaymentProvider[];
|
|
14
|
+
/**
|
|
15
|
+
* 合并 env 配置,按 key 去重。
|
|
16
|
+
*/
|
|
17
|
+
export declare function mergeEnvRequirements(items: EnvRequirement[]): EnvRequirement[];
|
|
18
|
+
/**
|
|
19
|
+
* 生成标准支付方式返回项。
|
|
20
|
+
*/
|
|
21
|
+
export declare function paymentMethodItem(input: {
|
|
22
|
+
id: string;
|
|
23
|
+
enabled: boolean;
|
|
24
|
+
label: string;
|
|
25
|
+
currency: string;
|
|
26
|
+
}): PaymentMethodItem;
|
|
27
|
+
/**
|
|
28
|
+
* 读取对象 ID。
|
|
29
|
+
*/
|
|
30
|
+
export declare function readObjectId(object: Record<string, unknown>): string;
|
|
31
|
+
/**
|
|
32
|
+
* 读取必填字符串。
|
|
33
|
+
*/
|
|
34
|
+
export declare function normalizeRequired(value: unknown, label: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* 读取可选字符串。
|
|
37
|
+
*/
|
|
38
|
+
export declare function normalizeOptionalText(value: unknown): string;
|
|
39
|
+
/**
|
|
40
|
+
* 读取币种字符串。
|
|
41
|
+
*/
|
|
42
|
+
export declare function normalizeCurrency(value: unknown): string;
|
|
43
|
+
/**
|
|
44
|
+
* 读取错误消息。
|
|
45
|
+
*/
|
|
46
|
+
export declare function errorMessage(error: unknown): string;
|
|
47
|
+
/**
|
|
48
|
+
* 返回 HTML Response。
|
|
49
|
+
*/
|
|
50
|
+
export declare function htmlResponse(html: string): Response;
|
|
51
|
+
/**
|
|
52
|
+
* 渲染 payment 重定向结果页。
|
|
53
|
+
*/
|
|
54
|
+
export declare function renderRedirectPage(input: {
|
|
55
|
+
title: string;
|
|
56
|
+
heading: string;
|
|
57
|
+
description: string;
|
|
58
|
+
request: Request;
|
|
59
|
+
}): string;
|
|
60
|
+
/**
|
|
61
|
+
* 转义 HTML。
|
|
62
|
+
*/
|
|
63
|
+
export declare function escapeHTML(value: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* 生成随机 ID(兼容 Node 和 Workers)。
|
|
66
|
+
*/
|
|
67
|
+
export declare function randomId(): string;
|
|
68
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/payment/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAErE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAUlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAO9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,iBAAiB,CAYpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAKnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,MAAM,CA8BT;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAOjC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payment 子模块通用工具函数。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 被 service、routes、providers 共享的纯工具函数集中在这里。
|
|
6
|
+
* - 不包含任何路由或 provider 特定逻辑。
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* 校验并去重 provider 列表。
|
|
10
|
+
*/
|
|
11
|
+
export function normalizeProviders(providers) {
|
|
12
|
+
const normalized = [];
|
|
13
|
+
for (const provider of providers) {
|
|
14
|
+
if (!provider?.id?.trim())
|
|
15
|
+
throw new TypeError("payment provider id is required");
|
|
16
|
+
if (normalized.find((item) => item.id === provider.id)) {
|
|
17
|
+
throw new TypeError(`Duplicate payment provider: ${provider.id}`);
|
|
18
|
+
}
|
|
19
|
+
normalized.push(provider);
|
|
20
|
+
}
|
|
21
|
+
return normalized;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 合并 env 配置,按 key 去重。
|
|
25
|
+
*/
|
|
26
|
+
export function mergeEnvRequirements(items) {
|
|
27
|
+
const result = [];
|
|
28
|
+
for (const item of items) {
|
|
29
|
+
if (result.find((existing) => existing.key === item.key))
|
|
30
|
+
continue;
|
|
31
|
+
result.push(item);
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 生成标准支付方式返回项。
|
|
37
|
+
*/
|
|
38
|
+
export function paymentMethodItem(input) {
|
|
39
|
+
return {
|
|
40
|
+
id: input.id,
|
|
41
|
+
type: "checkout",
|
|
42
|
+
enabled: input.enabled,
|
|
43
|
+
label: input.label,
|
|
44
|
+
service: "payment",
|
|
45
|
+
action: "checkout/create",
|
|
46
|
+
requires_user: true,
|
|
47
|
+
currency: input.currency,
|
|
48
|
+
reason: input.enabled ? undefined : "not_configured",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 读取对象 ID。
|
|
53
|
+
*/
|
|
54
|
+
export function readObjectId(object) {
|
|
55
|
+
return normalizeOptionalText(object.id);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 读取必填字符串。
|
|
59
|
+
*/
|
|
60
|
+
export function normalizeRequired(value, label) {
|
|
61
|
+
const normalized = String(value ?? "").trim();
|
|
62
|
+
if (!normalized)
|
|
63
|
+
throw new TypeError(`${label} is required`);
|
|
64
|
+
return normalized;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 读取可选字符串。
|
|
68
|
+
*/
|
|
69
|
+
export function normalizeOptionalText(value) {
|
|
70
|
+
return typeof value === "string" ? value.trim() : "";
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 读取币种字符串。
|
|
74
|
+
*/
|
|
75
|
+
export function normalizeCurrency(value) {
|
|
76
|
+
return normalizeOptionalText(value).toLowerCase();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 读取错误消息。
|
|
80
|
+
*/
|
|
81
|
+
export function errorMessage(error) {
|
|
82
|
+
return error instanceof Error ? error.message : String(error);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 返回 HTML Response。
|
|
86
|
+
*/
|
|
87
|
+
export function htmlResponse(html) {
|
|
88
|
+
return new Response(html, {
|
|
89
|
+
status: 200,
|
|
90
|
+
headers: { "content-type": "text/html; charset=utf-8" },
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 渲染 payment 重定向结果页。
|
|
95
|
+
*/
|
|
96
|
+
export function renderRedirectPage(input) {
|
|
97
|
+
const homeURL = escapeHTML(new URL("/", input.request.url).toString());
|
|
98
|
+
const title = escapeHTML(input.title);
|
|
99
|
+
const heading = escapeHTML(input.heading);
|
|
100
|
+
const description = escapeHTML(input.description);
|
|
101
|
+
return `<!doctype html>
|
|
102
|
+
<html lang="en">
|
|
103
|
+
<head>
|
|
104
|
+
<meta charset="utf-8" />
|
|
105
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
106
|
+
<title>${title}</title>
|
|
107
|
+
<style>
|
|
108
|
+
:root { color-scheme: light; --bg: #f5f7fb; --card: #fff; --text: #142033; --muted: #5a6a85; --border: #d9e2f1; --accent: #1f6feb; }
|
|
109
|
+
* { box-sizing: border-box; }
|
|
110
|
+
body { margin: 0; min-height: 100vh; display: grid; place-items: center; padding: 24px; background: linear-gradient(180deg, #f8fbff 0%, var(--bg) 100%); color: var(--text); font: 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
|
|
111
|
+
main { width: min(100%, 560px); padding: 32px; border: 1px solid var(--border); border-radius: 20px; background: var(--card); box-shadow: 0 18px 60px rgba(16, 24, 40, 0.08); }
|
|
112
|
+
h1 { margin: 0 0 12px; font-size: 28px; line-height: 1.2; }
|
|
113
|
+
p { margin: 0; color: var(--muted); }
|
|
114
|
+
a { display: inline-block; margin-top: 24px; color: #fff; background: var(--accent); text-decoration: none; padding: 12px 16px; border-radius: 999px; font-weight: 600; }
|
|
115
|
+
</style>
|
|
116
|
+
</head>
|
|
117
|
+
<body>
|
|
118
|
+
<main>
|
|
119
|
+
<h1>${heading}</h1>
|
|
120
|
+
<p>${description}</p>
|
|
121
|
+
<a href="${homeURL}">Return to Downcity</a>
|
|
122
|
+
</main>
|
|
123
|
+
</body>
|
|
124
|
+
</html>`;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 转义 HTML。
|
|
128
|
+
*/
|
|
129
|
+
export function escapeHTML(value) {
|
|
130
|
+
return value
|
|
131
|
+
.replaceAll("&", "&")
|
|
132
|
+
.replaceAll("<", "<")
|
|
133
|
+
.replaceAll(">", ">")
|
|
134
|
+
.replaceAll('"', """)
|
|
135
|
+
.replaceAll("'", "'");
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 生成随机 ID(兼容 Node 和 Workers)。
|
|
139
|
+
*/
|
|
140
|
+
export function randomId() {
|
|
141
|
+
const buffer = new Uint8Array(12);
|
|
142
|
+
crypto.getRandomValues(buffer);
|
|
143
|
+
return btoa(String.fromCharCode(...buffer))
|
|
144
|
+
.replace(/\+/g, "-")
|
|
145
|
+
.replace(/\//g, "_")
|
|
146
|
+
.replace(/=+$/u, "");
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/payment/helpers.ts"],"names":[],"mappings":"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"}
|
package/bin/payment/index.d.ts
CHANGED
|
@@ -1,31 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Payment 子模块公共入口。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*/
|
|
14
|
-
export declare function paymentService(options: PaymentServiceOptions): ServiceDefinition;
|
|
15
|
-
/**
|
|
16
|
-
* 创建 Stripe payment provider。
|
|
17
|
-
*/
|
|
18
|
-
export declare function stripePaymentProvider(options?: StripePaymentProviderOptions): PaymentProvider;
|
|
19
|
-
/**
|
|
20
|
-
* 创建 Creem payment provider。
|
|
21
|
-
*/
|
|
22
|
-
export declare function creemPaymentProvider(options?: CreemPaymentProviderOptions): PaymentProvider;
|
|
23
|
-
/**
|
|
24
|
-
* 创建 Dodo Payments provider。
|
|
25
|
-
*/
|
|
26
|
-
export declare function dodoPaymentProvider(options?: DodoPaymentProviderOptions): PaymentProvider;
|
|
27
|
-
/**
|
|
28
|
-
* 创建 Waffo Pancake provider。
|
|
29
|
-
*/
|
|
30
|
-
export declare function waffoPaymentProvider(options?: WaffoPaymentProviderOptions): PaymentProvider;
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - PaymentService class 在 service.ts
|
|
6
|
+
* - 路由注册逻辑在 routes.ts
|
|
7
|
+
* - provider 工厂函数在 providers.ts
|
|
8
|
+
*/
|
|
9
|
+
export { PaymentService } from "./service.js";
|
|
10
|
+
export type { PaymentServiceOptions } from "./types.js";
|
|
11
|
+
export { paymentPayments, paymentEvents } from "./schema.js";
|
|
12
|
+
export { creemPaymentProvider, dodoPaymentProvider, stripePaymentProvider, waffoPaymentProvider, } from "./providers.js";
|
|
31
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payment/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payment/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC"}
|