@moneydevkit/nextjs 0.1.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/README.md +78 -0
- package/dist/components/Checkout.d.ts +12 -0
- package/dist/components/Checkout.js +133 -0
- package/dist/components/Checkout.js.map +1 -0
- package/dist/components/checkout/ExpiredCheckout.d.ts +10 -0
- package/dist/components/checkout/ExpiredCheckout.js +25 -0
- package/dist/components/checkout/ExpiredCheckout.js.map +1 -0
- package/dist/components/checkout/PaymentReceivedCheckout.d.ts +6 -0
- package/dist/components/checkout/PaymentReceivedCheckout.js +31 -0
- package/dist/components/checkout/PaymentReceivedCheckout.js.map +1 -0
- package/dist/components/checkout/PendingPaymentCheckout.d.ts +9 -0
- package/dist/components/checkout/PendingPaymentCheckout.js +69 -0
- package/dist/components/checkout/PendingPaymentCheckout.js.map +1 -0
- package/dist/components/checkout/UnconfirmedCheckout.d.ts +9 -0
- package/dist/components/checkout/UnconfirmedCheckout.js +54 -0
- package/dist/components/checkout/UnconfirmedCheckout.js.map +1 -0
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/button.js +32 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/card.d.ts +9 -0
- package/dist/components/ui/card.js +25 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/collapsible.d.ts +5 -0
- package/dist/components/ui/collapsible.js +14 -0
- package/dist/components/ui/collapsible.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +15 -0
- package/dist/components/ui/dialog.js +37 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/drawer.d.ts +13 -0
- package/dist/components/ui/drawer.js +36 -0
- package/dist/components/ui/drawer.js.map +1 -0
- package/dist/components/ui/form.d.ts +24 -0
- package/dist/components/ui/form.js +60 -0
- package/dist/components/ui/form.js.map +1 -0
- package/dist/components/ui/input.d.ts +3 -0
- package/dist/components/ui/input.js +7 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/components/ui/label.js +9 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/select.d.ts +15 -0
- package/dist/components/ui/select.js +39 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/textarea.d.ts +3 -0
- package/dist/components/ui/textarea.js +7 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/hooks/useCheckout.d.ts +19 -0
- package/dist/hooks/useCheckout.js +42 -0
- package/dist/hooks/useCheckout.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/mdk-styles.css +2436 -0
- package/dist/next-plugin.d.ts +31 -0
- package/dist/next-plugin.js +107 -0
- package/dist/next-plugin.js.map +1 -0
- package/dist/providers.d.ts +7 -0
- package/dist/providers.js +17 -0
- package/dist/providers.js.map +1 -0
- package/dist/server/actions.d.ts +2507 -0
- package/dist/server/actions.js +71 -0
- package/dist/server/actions.js.map +1 -0
- package/dist/server/handlers/balance.d.ts +1 -0
- package/dist/server/handlers/balance.js +19 -0
- package/dist/server/handlers/balance.js.map +1 -0
- package/dist/server/handlers/pay_bolt_12.d.ts +1 -0
- package/dist/server/handlers/pay_bolt_12.js +19 -0
- package/dist/server/handlers/pay_bolt_12.js.map +1 -0
- package/dist/server/handlers/ping.d.ts +1 -0
- package/dist/server/handlers/ping.js +13 -0
- package/dist/server/handlers/ping.js.map +1 -0
- package/dist/server/handlers/webhooks.d.ts +1 -0
- package/dist/server/handlers/webhooks.js +44 -0
- package/dist/server/handlers/webhooks.js.map +1 -0
- package/dist/server/index.d.ts +2501 -0
- package/dist/server/index.js +15 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/lightning-logs.d.ts +5 -0
- package/dist/server/lightning-logs.js +170 -0
- package/dist/server/lightning-logs.js.map +1 -0
- package/dist/server/logging.d.ts +3 -0
- package/dist/server/logging.js +17 -0
- package/dist/server/logging.js.map +1 -0
- package/dist/server/mdk.d.ts +7 -0
- package/dist/server/mdk.js +81 -0
- package/dist/server/mdk.js.map +1 -0
- package/dist/server/money-dev-kit.d.ts +3374 -0
- package/dist/server/money-dev-kit.js +165 -0
- package/dist/server/money-dev-kit.js.map +1 -0
- package/dist/server/payment-state.d.ts +3 -0
- package/dist/server/payment-state.js +32 -0
- package/dist/server/payment-state.js.map +1 -0
- package/dist/server/route.d.ts +8 -0
- package/dist/server/route.js +98 -0
- package/dist/server/route.js.map +1 -0
- package/dist/server/runtime.d.ts +3 -0
- package/dist/server/runtime.js +4 -0
- package/dist/server/runtime.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { createORPCClient } from '@orpc/client';
|
|
2
|
+
import { RPCLink } from '@orpc/client/fetch';
|
|
3
|
+
import { createRequire } from 'module';
|
|
4
|
+
import { DEFAULT_MDK_BASE_URL, DEFAULT_MDK_NODE_OPTIONS } from './mdk';
|
|
5
|
+
import { Agent, setGlobalDispatcher } from 'undici';
|
|
6
|
+
import { lightningLogErrorHandler, lightningLogHandler } from './lightning-logs';
|
|
7
|
+
process.env.RUST_LOG ??= 'ldk_node=trace,lightning_background_processor=trace,vss_client=trace,reqwest=debug';
|
|
8
|
+
setGlobalDispatcher(new Agent({
|
|
9
|
+
keepAliveTimeout: 1,
|
|
10
|
+
keepAliveTimeoutThreshold: 1,
|
|
11
|
+
}));
|
|
12
|
+
const OPTIONAL_LIGHTNING_PACKAGES = [
|
|
13
|
+
'@moneydevkit/lightning-js-linux-x64-gnu',
|
|
14
|
+
'@moneydevkit/lightning-js-linux-x64-musl',
|
|
15
|
+
'@moneydevkit/lightning-js-linux-arm64-gnu',
|
|
16
|
+
'@moneydevkit/lightning-js-linux-arm64-musl',
|
|
17
|
+
'@moneydevkit/lightning-js-linux-arm-gnueabihf',
|
|
18
|
+
'@moneydevkit/lightning-js-android-arm64',
|
|
19
|
+
'@moneydevkit/lightning-js-android-arm-eabi',
|
|
20
|
+
'@moneydevkit/lightning-js-win32-x64-msvc',
|
|
21
|
+
'@moneydevkit/lightning-js-win32-ia32-msvc',
|
|
22
|
+
'@moneydevkit/lightning-js-win32-arm64-msvc',
|
|
23
|
+
'@moneydevkit/lightning-js-darwin-x64',
|
|
24
|
+
'@moneydevkit/lightning-js-darwin-arm64',
|
|
25
|
+
'@moneydevkit/lightning-js-freebsd-x64',
|
|
26
|
+
];
|
|
27
|
+
let cachedLightningModule;
|
|
28
|
+
const getRuntimeRequire = () => {
|
|
29
|
+
if (typeof __non_webpack_require__ === 'function') {
|
|
30
|
+
return __non_webpack_require__;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
return createRequire(import.meta.url);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (typeof require === 'function') {
|
|
37
|
+
return require;
|
|
38
|
+
}
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const ensureLightningPackagesForTracing = () => {
|
|
43
|
+
const runtimeRequire = getRuntimeRequire();
|
|
44
|
+
const specifiers = ['@moneydevkit/lightning-js', ...OPTIONAL_LIGHTNING_PACKAGES];
|
|
45
|
+
for (const specifier of specifiers) {
|
|
46
|
+
try {
|
|
47
|
+
if (typeof runtimeRequire.resolve === 'function') {
|
|
48
|
+
runtimeRequire.resolve(specifier);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Ignore resolution errors; only needed to hint bundlers about the dependency graph.
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
ensureLightningPackagesForTracing();
|
|
57
|
+
const loadLightningModule = () => {
|
|
58
|
+
// Resolve the native binding at runtime to keep Next.js bundlers from trying to bundle it.
|
|
59
|
+
if (!cachedLightningModule) {
|
|
60
|
+
const runtimeRequire = getRuntimeRequire();
|
|
61
|
+
cachedLightningModule = runtimeRequire('@moneydevkit/lightning-js');
|
|
62
|
+
}
|
|
63
|
+
return cachedLightningModule;
|
|
64
|
+
};
|
|
65
|
+
const RECEIVE_PAYMENTS_MIN_THRESHOLD_MS = 3000;
|
|
66
|
+
const RECEIVE_PAYMENTS_QUIET_THRESHOLD_MS = 3000;
|
|
67
|
+
export class MoneyDevKit {
|
|
68
|
+
client;
|
|
69
|
+
node;
|
|
70
|
+
constructor(options) {
|
|
71
|
+
const link = new RPCLink({
|
|
72
|
+
url: options.baseUrl || DEFAULT_MDK_BASE_URL,
|
|
73
|
+
headers: () => ({
|
|
74
|
+
"x-api-key": options.accessToken,
|
|
75
|
+
}),
|
|
76
|
+
});
|
|
77
|
+
this.client = createORPCClient(link);
|
|
78
|
+
const { MdkNode, setLogListener } = loadLightningModule();
|
|
79
|
+
setLogListener((err, entry) => {
|
|
80
|
+
if (err) {
|
|
81
|
+
lightningLogErrorHandler(err);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
lightningLogHandler(entry);
|
|
85
|
+
}, 'TRACE');
|
|
86
|
+
this.node = new MdkNode({
|
|
87
|
+
network: options.nodeOptions?.network ?? DEFAULT_MDK_NODE_OPTIONS.network,
|
|
88
|
+
mdkApiKey: options.accessToken,
|
|
89
|
+
vssUrl: options.nodeOptions?.vssUrl ?? DEFAULT_MDK_NODE_OPTIONS.vssUrl,
|
|
90
|
+
esploraUrl: options.nodeOptions?.esploraUrl ?? DEFAULT_MDK_NODE_OPTIONS.esploraUrl,
|
|
91
|
+
rgsUrl: options.nodeOptions?.rgsUrl ?? DEFAULT_MDK_NODE_OPTIONS.rgsUrl,
|
|
92
|
+
mnemonic: options.mnemonic,
|
|
93
|
+
lspNodeId: options.nodeOptions?.lspNodeId ?? DEFAULT_MDK_NODE_OPTIONS.lspNodeId,
|
|
94
|
+
lspAddress: options.nodeOptions?.lspAddress ?? DEFAULT_MDK_NODE_OPTIONS.lspAddress,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
getNodeId() {
|
|
98
|
+
return this.node.getNodeId();
|
|
99
|
+
}
|
|
100
|
+
receivePayments() {
|
|
101
|
+
return this.node.receivePayment(RECEIVE_PAYMENTS_MIN_THRESHOLD_MS, RECEIVE_PAYMENTS_QUIET_THRESHOLD_MS);
|
|
102
|
+
}
|
|
103
|
+
payBolt12Offer(bolt12) {
|
|
104
|
+
return this.node.payBolt12Offer(bolt12);
|
|
105
|
+
}
|
|
106
|
+
syncWallets() {
|
|
107
|
+
return this.node.syncWallets();
|
|
108
|
+
}
|
|
109
|
+
async getBalance() {
|
|
110
|
+
return this.node.getBalance();
|
|
111
|
+
}
|
|
112
|
+
get invoices() {
|
|
113
|
+
return {
|
|
114
|
+
create: (amountSats) => {
|
|
115
|
+
const expirySecs = 15 * 60;
|
|
116
|
+
const description = "mdk invoice";
|
|
117
|
+
const invoice = amountSats === null
|
|
118
|
+
? this.node.getVariableAmountJitInvoice(description, expirySecs)
|
|
119
|
+
: this.node.getInvoice(amountSats * 1000, description, expirySecs);
|
|
120
|
+
return {
|
|
121
|
+
invoice: invoice.bolt11,
|
|
122
|
+
paymentHash: invoice.paymentHash,
|
|
123
|
+
scid: invoice.scid,
|
|
124
|
+
expiresAt: new Date(invoice.expiresAt * 1000),
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
createWithScid: (scid, amountSats) => {
|
|
128
|
+
const expirySecs = 15 * 60;
|
|
129
|
+
const description = "mdk invoice";
|
|
130
|
+
const invoice = amountSats === null
|
|
131
|
+
? this.node.getVariableAmountJitInvoiceWithScid(scid, description, expirySecs)
|
|
132
|
+
: this.node.getInvoiceWithScid(scid, amountSats * 1000, description, expirySecs);
|
|
133
|
+
return {
|
|
134
|
+
invoice: invoice.bolt11,
|
|
135
|
+
paymentHash: invoice.paymentHash,
|
|
136
|
+
scid: invoice.scid,
|
|
137
|
+
expiresAt: new Date(invoice.expiresAt * 1000),
|
|
138
|
+
};
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
get checkouts() {
|
|
143
|
+
return {
|
|
144
|
+
get: async (params) => {
|
|
145
|
+
return await this.client.checkout.get(params);
|
|
146
|
+
},
|
|
147
|
+
create: async (fields) => {
|
|
148
|
+
return await this.client.checkout.create({
|
|
149
|
+
...fields,
|
|
150
|
+
nodeId: this.getNodeId(),
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
confirm: async (params) => {
|
|
154
|
+
return await this.client.checkout.confirm(params);
|
|
155
|
+
},
|
|
156
|
+
registerInvoice: async (params) => {
|
|
157
|
+
return await this.client.checkout.registerInvoice(params);
|
|
158
|
+
},
|
|
159
|
+
paymentReceived: async (params) => {
|
|
160
|
+
return await this.client.checkout.paymentReceived(params);
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=money-dev-kit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"money-dev-kit.js","sourceRoot":"","sources":["../../src/server/money-dev-kit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { log } from './logging';
|
|
2
|
+
const globalKey = Symbol.for('mdk-checkout:payment-state');
|
|
3
|
+
function getGlobalPaymentState() {
|
|
4
|
+
const globalObject = globalThis;
|
|
5
|
+
if (!globalObject[globalKey]) {
|
|
6
|
+
globalObject[globalKey] = {
|
|
7
|
+
receivedPaymentHashes: new Set(),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
return globalObject[globalKey];
|
|
11
|
+
}
|
|
12
|
+
export function markPaymentReceived(paymentHash) {
|
|
13
|
+
if (!paymentHash)
|
|
14
|
+
return;
|
|
15
|
+
const state = getGlobalPaymentState();
|
|
16
|
+
state.receivedPaymentHashes.add(paymentHash);
|
|
17
|
+
}
|
|
18
|
+
export function hasPaymentBeenReceived(paymentHash) {
|
|
19
|
+
if (!paymentHash)
|
|
20
|
+
return false;
|
|
21
|
+
log('hasPaymentBeenReceived. Checking payment received for', paymentHash);
|
|
22
|
+
const state = getGlobalPaymentState();
|
|
23
|
+
log('hasPaymentBeenReceived. Current received payments:', Array.from(state.receivedPaymentHashes));
|
|
24
|
+
return state.receivedPaymentHashes.has(paymentHash);
|
|
25
|
+
}
|
|
26
|
+
export function clearPayment(paymentHash) {
|
|
27
|
+
if (!paymentHash)
|
|
28
|
+
return;
|
|
29
|
+
const state = getGlobalPaymentState();
|
|
30
|
+
state.receivedPaymentHashes.delete(paymentHash);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=payment-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-state.js","sourceRoot":"","sources":["../../src/server/payment-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAM1D,SAAS,qBAAqB;IAC5B,MAAM,YAAY,GAAG,UAEpB,CAAA;IAED,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,YAAY,CAAC,SAAS,CAAC,GAAG;YACxB,qBAAqB,EAAE,IAAI,GAAG,EAAU;SACzC,CAAA;IACH,CAAC;IAED,OAAO,YAAY,CAAC,SAAS,CAAE,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAA;IACrC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAA;IAC9B,GAAG,CAAC,uDAAuD,EAAE,WAAW,CAAC,CAAA;IACzE,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAA;IACrC,GAAG,CAAC,oDAAoD,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;IAClG,OAAO,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,IAAI,CAAC,WAAW;QAAE,OAAM;IACxB,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAA;IACrC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;AACjD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
type RouteHandler = (request: Request) => Promise<Response>;
|
|
3
|
+
declare const routeSchema: z.ZodEnum<["webhook", "webhooks", "pay_bolt_12", "balance", "ping"]>;
|
|
4
|
+
export type UnifiedRoute = z.infer<typeof routeSchema>;
|
|
5
|
+
export declare function __setHandlerForTest(route: UnifiedRoute, handler: RouteHandler | null): void;
|
|
6
|
+
export declare function __resetHandlersForTest(): void;
|
|
7
|
+
export declare function POST(request: Request): Promise<Response>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleBalance } from "./handlers/balance";
|
|
3
|
+
import { handlePayBolt12 } from "./handlers/pay_bolt_12";
|
|
4
|
+
import { handlePing } from "./handlers/ping";
|
|
5
|
+
import { handleMdkWebhook } from "./handlers/webhooks";
|
|
6
|
+
import { log } from "./logging";
|
|
7
|
+
const WEBHOOK_SECRET_HEADER = "x-moneydevkit-webhook-secret";
|
|
8
|
+
const routeSchema = z.enum(["webhook", "webhooks", "pay_bolt_12", "balance", "ping"]);
|
|
9
|
+
const HANDLERS = {};
|
|
10
|
+
function assignDefaultHandlers() {
|
|
11
|
+
HANDLERS.webhook = handleMdkWebhook;
|
|
12
|
+
HANDLERS.webhooks = handleMdkWebhook;
|
|
13
|
+
HANDLERS.pay_bolt_12 = handlePayBolt12;
|
|
14
|
+
HANDLERS.balance = handleBalance;
|
|
15
|
+
HANDLERS.ping = handlePing;
|
|
16
|
+
}
|
|
17
|
+
assignDefaultHandlers();
|
|
18
|
+
const ROUTE_BODY_KEYS = ["handler", "route", "target"];
|
|
19
|
+
function jsonResponse(status, body) {
|
|
20
|
+
return new Response(JSON.stringify(body), {
|
|
21
|
+
status,
|
|
22
|
+
headers: { "content-type": "application/json" },
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function validateWebhookSecret(request) {
|
|
26
|
+
const expectedSecret = process.env.MDK_WEBHOOK_SECRET;
|
|
27
|
+
if (!expectedSecret) {
|
|
28
|
+
console.error("MDK_WEBHOOK_SECRET environment variable is not configured.");
|
|
29
|
+
return jsonResponse(500, { error: "Webhook secret is not configured." });
|
|
30
|
+
}
|
|
31
|
+
const providedSecret = request.headers.get(WEBHOOK_SECRET_HEADER);
|
|
32
|
+
if (!providedSecret || providedSecret !== expectedSecret) {
|
|
33
|
+
log("Unauthorized webhook request received.");
|
|
34
|
+
log(`Expected secret: ${expectedSecret}`);
|
|
35
|
+
log(`Provided secret: ${providedSecret}`);
|
|
36
|
+
return jsonResponse(401, { error: "Unauthorized" });
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
export function __setHandlerForTest(route, handler) {
|
|
41
|
+
if (handler) {
|
|
42
|
+
HANDLERS[route] = handler;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
delete HANDLERS[route];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function __resetHandlersForTest() {
|
|
49
|
+
assignDefaultHandlers();
|
|
50
|
+
}
|
|
51
|
+
async function resolveRoute(request) {
|
|
52
|
+
const contentType = request.headers.get("content-type") ?? "";
|
|
53
|
+
if (!contentType.includes("application/json")) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const body = (await request.clone().json());
|
|
58
|
+
for (const key of ROUTE_BODY_KEYS) {
|
|
59
|
+
const value = body?.[key];
|
|
60
|
+
if (typeof value === "string") {
|
|
61
|
+
const parsed = routeSchema.safeParse(value.toLowerCase());
|
|
62
|
+
if (parsed.success) {
|
|
63
|
+
return parsed.data;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Ignore JSON parse errors; downstream handlers will try again if needed.
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
export async function POST(request) {
|
|
74
|
+
const authError = validateWebhookSecret(request);
|
|
75
|
+
if (authError) {
|
|
76
|
+
return authError;
|
|
77
|
+
}
|
|
78
|
+
const route = await resolveRoute(request);
|
|
79
|
+
if (!route) {
|
|
80
|
+
return jsonResponse(400, {
|
|
81
|
+
error: `Missing or invalid handler. Include a JSON body with a "handler" property set to one of ${routeSchema.options.join(", ")}.`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
const handler = HANDLERS[route];
|
|
85
|
+
if (!handler) {
|
|
86
|
+
return jsonResponse(501, {
|
|
87
|
+
error: `Handler "${route}" is not implemented in this version of mdk-checkout.`,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
return await handler(request);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error(error);
|
|
95
|
+
return jsonResponse(500, { error: "Internal Server Error" });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/server/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/server/runtime.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@moneydevkit/nextjs",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Money Dev Kit checkout components and server helpers for Next.js.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./server": {
|
|
15
|
+
"types": "./dist/server/index.d.ts",
|
|
16
|
+
"import": "./dist/server/index.js",
|
|
17
|
+
"default": "./dist/server/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./mdk-styles.css": "./dist/mdk-styles.css",
|
|
20
|
+
"./package.json": "./package.json",
|
|
21
|
+
"./server/runtime": {
|
|
22
|
+
"types": "./dist/server/runtime.d.ts",
|
|
23
|
+
"import": "./dist/server/runtime.js",
|
|
24
|
+
"default": "./dist/server/runtime.js"
|
|
25
|
+
},
|
|
26
|
+
"./server/route": {
|
|
27
|
+
"types": "./dist/server/route.d.ts",
|
|
28
|
+
"import": "./dist/server/route.js",
|
|
29
|
+
"default": "./dist/server/route.js"
|
|
30
|
+
},
|
|
31
|
+
"./next-plugin": {
|
|
32
|
+
"types": "./dist/next-plugin.d.ts",
|
|
33
|
+
"import": "./dist/next-plugin.js",
|
|
34
|
+
"default": "./dist/next-plugin.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist"
|
|
39
|
+
],
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "rm -rf dist && tsc -p tsconfig.json && npm run copy-css",
|
|
42
|
+
"copy-css": "node scripts/copy-styles.mjs",
|
|
43
|
+
"clean": "rm -rf dist",
|
|
44
|
+
"typecheck": "tsc --noEmit",
|
|
45
|
+
"test": "npm run build && node --test --experimental-loader ./tests/test-loader.mjs tests/route.test.js",
|
|
46
|
+
"pack:local": "npm pack"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"next": "^14 || ^15 || ^16",
|
|
50
|
+
"react": "^18 || ^19",
|
|
51
|
+
"react-dom": "^18 || ^19"
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"@hookform/resolvers": "^5.0.1",
|
|
55
|
+
"@moneydevkit/api-contract": "^0.1.10",
|
|
56
|
+
"@moneydevkit/lightning-js": "^0.1.34",
|
|
57
|
+
"@orpc/client": "1.3.0",
|
|
58
|
+
"@orpc/contract": "1.3.0",
|
|
59
|
+
"@radix-ui/react-collapsible": "^1.1.11",
|
|
60
|
+
"@radix-ui/react-dialog": "^1.1.14",
|
|
61
|
+
"@radix-ui/react-label": "^2.1.7",
|
|
62
|
+
"@radix-ui/react-select": "^2.2.5",
|
|
63
|
+
"@radix-ui/react-slot": "^1.2.3",
|
|
64
|
+
"@tanstack/react-query": "^5.79.0",
|
|
65
|
+
"class-variance-authority": "^0.7.1",
|
|
66
|
+
"clsx": "^2.1.1",
|
|
67
|
+
"lucide-react": "^0.511.0",
|
|
68
|
+
"qrcode.react": "^4.2.0",
|
|
69
|
+
"react-hook-form": "^7.56.4",
|
|
70
|
+
"tailwind-merge": "^3.3.0",
|
|
71
|
+
"undici": "^7.16.0",
|
|
72
|
+
"vaul": "^1.1.2",
|
|
73
|
+
"zod": "^3.25.42"
|
|
74
|
+
},
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"@types/node": "^20.10.5",
|
|
77
|
+
"@types/react": "^19.0.1",
|
|
78
|
+
"@types/react-dom": "^19.0.2",
|
|
79
|
+
"typescript": "^5.6.3"
|
|
80
|
+
},
|
|
81
|
+
"module": "./dist/index.js"
|
|
82
|
+
}
|