@moneydevkit/core 0.7.0-beta.1 → 0.7.0-beta.11

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 (45) hide show
  1. package/dist/actions.d.ts +50 -8
  2. package/dist/actions.js +22 -10
  3. package/dist/actions.js.map +1 -1
  4. package/dist/checkout-utils.d.ts +31 -0
  5. package/dist/checkout-utils.js +61 -0
  6. package/dist/checkout-utils.js.map +1 -0
  7. package/dist/client-actions.d.ts +2 -1
  8. package/dist/client-actions.js +7 -0
  9. package/dist/client-actions.js.map +1 -1
  10. package/dist/client.d.ts +1 -0
  11. package/dist/client.js +1 -0
  12. package/dist/client.js.map +1 -1
  13. package/dist/components/Checkout.d.ts +1 -1
  14. package/dist/components/Checkout.js +36 -1
  15. package/dist/components/Checkout.js.map +1 -1
  16. package/dist/components/checkout/PendingPaymentCheckout.js +27 -7
  17. package/dist/components/checkout/PendingPaymentCheckout.js.map +1 -1
  18. package/dist/components/checkout/UnconfirmedCheckout.js +38 -23
  19. package/dist/components/checkout/UnconfirmedCheckout.js.map +1 -1
  20. package/dist/handlers/checkout.d.ts +52 -0
  21. package/dist/handlers/checkout.js +191 -4
  22. package/dist/handlers/checkout.js.map +1 -1
  23. package/dist/handlers/products.d.ts +1 -0
  24. package/dist/handlers/products.js +18 -0
  25. package/dist/handlers/products.js.map +1 -0
  26. package/dist/hooks/useCheckout.d.ts +18 -0
  27. package/dist/hooks/useCheckout.js +18 -0
  28. package/dist/hooks/useCheckout.js.map +1 -1
  29. package/dist/hooks/useProducts.d.ts +17 -0
  30. package/dist/hooks/useProducts.js +34 -0
  31. package/dist/hooks/useProducts.js.map +1 -0
  32. package/dist/lightning-node.js +3 -3
  33. package/dist/lightning-node.js.map +1 -1
  34. package/dist/mdk-client.d.ts +18 -2
  35. package/dist/mdk-client.js +10 -1
  36. package/dist/mdk-client.js.map +1 -1
  37. package/dist/preview.js +10 -1
  38. package/dist/preview.js.map +1 -1
  39. package/dist/route.d.ts +17 -2
  40. package/dist/route.js +67 -1
  41. package/dist/route.js.map +1 -1
  42. package/dist/startup-validation.d.ts +3 -3
  43. package/dist/startup-validation.js +4 -30
  44. package/dist/startup-validation.js.map +1 -1
  45. package/package.json +3 -4
@@ -1,8 +1,19 @@
1
- import { Checkout, CreateCheckout, ConfirmCheckout, RegisterInvoice, PaymentReceived } from '@moneydevkit/api-contract';
1
+ import { Checkout, CreateCheckout, ConfirmCheckout, RegisterInvoice, PaymentReceived, Product } from '@moneydevkit/api-contract';
2
2
  export type MoneyDevKitClientOptions = {
3
3
  accessToken: string;
4
4
  baseUrl: string;
5
5
  };
6
+ /**
7
+ * SDK-level checkout creation options.
8
+ * Uses `product` (singular) for simplicity - multi-product support coming soon.
9
+ */
10
+ export type CreateCheckoutOptions = Omit<CreateCheckout, 'nodeId' | 'products'> & {
11
+ /**
12
+ * Product ID to include in this checkout.
13
+ * @example 'prod_123abc'
14
+ */
15
+ product?: string;
16
+ };
6
17
  export declare class MoneyDevKitClient {
7
18
  private client;
8
19
  constructor(options: MoneyDevKitClientOptions);
@@ -10,11 +21,16 @@ export declare class MoneyDevKitClient {
10
21
  get: (params: {
11
22
  id: string;
12
23
  }) => Promise<Checkout>;
13
- create: (fields: Omit<CreateCheckout, "nodeId">, nodeId: string) => Promise<Checkout>;
24
+ create: (fields: CreateCheckoutOptions, nodeId: string) => Promise<Checkout>;
14
25
  confirm: (params: ConfirmCheckout) => Promise<Checkout>;
15
26
  registerInvoice: (params: RegisterInvoice) => Promise<Checkout>;
16
27
  paymentReceived: (params: PaymentReceived) => Promise<{
17
28
  ok: boolean;
18
29
  }>;
19
30
  };
31
+ get products(): {
32
+ list: () => Promise<{
33
+ products: Product[];
34
+ }>;
35
+ };
20
36
  }
@@ -17,8 +17,10 @@ export class MoneyDevKitClient {
17
17
  return await this.client.checkout.get(params);
18
18
  },
19
19
  create: async (fields, nodeId) => {
20
+ const { product, ...rest } = fields;
20
21
  return await this.client.checkout.create({
21
- ...fields,
22
+ ...rest,
23
+ products: product ? [product] : undefined,
22
24
  nodeId,
23
25
  });
24
26
  },
@@ -33,5 +35,12 @@ export class MoneyDevKitClient {
33
35
  },
34
36
  };
35
37
  }
38
+ get products() {
39
+ return {
40
+ list: async () => {
41
+ return await this.client.products.list({});
42
+ },
43
+ };
44
+ }
36
45
  }
37
46
  //# sourceMappingURL=mdk-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mdk-client.js","sourceRoot":"","sources":["../src/mdk-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAU5C,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAuC;IAErD,YAAY,OAAiC;QAC3C,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC;YACvB,GAAG,EAAE,OAAO,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gBACd,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC;SACH,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,SAAS;QACX,OAAO;YACL,GAAG,EAAE,KAAK,EAAE,MAAsB,EAAqB,EAAE;gBACvD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC/C,CAAC;YACD,MAAM,EAAE,KAAK,EACX,MAAsC,EACtC,MAAc,EACK,EAAE;gBACrB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACvC,GAAG,MAAM;oBACT,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAqB,EAAE;gBAC5D,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACnD,CAAC;YACD,eAAe,EAAE,KAAK,EAAE,MAAuB,EAAqB,EAAE;gBACpE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YAC3D,CAAC;YACD,eAAe,EAAE,KAAK,EAAE,MAAuB,EAA4B,EAAE;gBAC3E,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YAC3D,CAAC;SACF,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"mdk-client.js","sourceRoot":"","sources":["../src/mdk-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAsB5C,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAuC;IAErD,YAAY,OAAiC;QAC3C,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC;YACvB,GAAG,EAAE,OAAO,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gBACd,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC;SACH,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,SAAS;QACX,OAAO;YACL,GAAG,EAAE,KAAK,EAAE,MAAsB,EAAqB,EAAE;gBACvD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC/C,CAAC;YACD,MAAM,EAAE,KAAK,EACX,MAA6B,EAC7B,MAAc,EACK,EAAE;gBACrB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;gBACnC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACvC,GAAG,IAAI;oBACP,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;oBACzC,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,MAAuB,EAAqB,EAAE;gBAC5D,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACnD,CAAC;YACD,eAAe,EAAE,KAAK,EAAE,MAAuB,EAAqB,EAAE;gBACpE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YAC3D,CAAC;YACD,eAAe,EAAE,KAAK,EAAE,MAAuB,EAA4B,EAAE;gBAC3E,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YAC3D,CAAC;SACF,CAAA;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO;YACL,IAAI,EAAE,KAAK,IAAsC,EAAE;gBACjD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC5C,CAAC;SACF,CAAA;IACH,CAAC;CACF"}
package/dist/preview.js CHANGED
@@ -1,4 +1,6 @@
1
+ // Helper to get env var - Next.js requires direct access for client-side inlining
1
2
  function getEnvFlag(key) {
3
+ // For server-side or non-Next.js environments, dynamic access works
2
4
  if (typeof process !== 'undefined' && typeof process.env !== 'undefined') {
3
5
  const value = process.env[key];
4
6
  if (value !== undefined) {
@@ -18,7 +20,14 @@ function isTruthyFlag(value) {
18
20
  return value === '1' || value === 'true';
19
21
  }
20
22
  export function is_preview_environment() {
21
- // Explicit preview/sandbox flag (check both MDK_PREVIEW and NEXT_PUBLIC_MDK_PREVIEW)
23
+ // Explicit preview/sandbox flag - use direct access for Next.js client-side inlining
24
+ // Next.js only inlines NEXT_PUBLIC_* vars when accessed directly (not via process.env[key])
25
+ if (typeof process !== 'undefined' && typeof process.env !== 'undefined') {
26
+ if (isTruthyFlag(process.env.NEXT_PUBLIC_MDK_PREVIEW)) {
27
+ return true;
28
+ }
29
+ }
30
+ // Fallback to dynamic access for server-side and non-Next.js environments (e.g., Vite)
22
31
  if (isTruthyFlag(getEnvFlag('MDK_PREVIEW')) || isTruthyFlag(getEnvFlag('NEXT_PUBLIC_MDK_PREVIEW'))) {
23
32
  return true;
24
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAAA,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAK,MAAM,CAAC,IAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;QACxF,OAAQ,MAAM,CAAC,IAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,OAAO,UAAU,KAAK,WAAW,IAAK,UAAkB,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;QAChF,OAAQ,UAAkB,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,qFAAqF;IACrF,IAAI,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qDAAqD;IACrD,IAAI,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,+DAA+D;IAC/D,MAAM,SAAS,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAA;IACjD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+EAA+E;IAC/E,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAA;IAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAA;QAEhD,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,SAAS,UAAU,CAAC,GAAW;IAC7B,oEAAoE;IACpE,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAK,MAAM,CAAC,IAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;QACxF,OAAQ,MAAM,CAAC,IAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACtC,CAAC;IAED,IAAI,OAAO,UAAU,KAAK,WAAW,IAAK,UAAkB,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;QAChF,OAAQ,UAAkB,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,qFAAqF;IACrF,4FAA4F;IAC5F,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACzE,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACtD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,uFAAuF;IACvF,IAAI,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qDAAqD;IACrD,IAAI,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,+DAA+D;IAC/D,MAAM,SAAS,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAA;IACjD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+EAA+E;IAC/E,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAA;IAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAA;QAEhD,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
package/dist/route.d.ts CHANGED
@@ -1,9 +1,24 @@
1
1
  import { z } from 'zod';
2
+ export { createCheckoutUrl } from './handlers/checkout';
3
+ export type { CreateCheckoutUrlOptions } from './handlers/checkout';
2
4
  export type RouteHandler = (request: Request) => Promise<Response>;
3
- declare const routeSchema: z.ZodEnum<["webhook", "webhooks", "pay_bolt_12", "balance", "ping", "pay_ln_url", "list_channels", "pay_bolt11", "create_checkout", "get_checkout", "confirm_checkout", "pay_invoice", "sync_rgs"]>;
5
+ declare const routeSchema: z.ZodEnum<["webhook", "webhooks", "pay_bolt_12", "balance", "ping", "pay_ln_url", "list_channels", "pay_bolt11", "create_checkout", "get_checkout", "confirm_checkout", "pay_invoice", "sync_rgs", "list_products"]>;
4
6
  export type UnifiedRoute = z.infer<typeof routeSchema>;
5
7
  export declare function __setHandlerForTest(route: UnifiedRoute, handler: RouteHandler | null): void;
6
8
  export declare function __resetHandlersForTest(): void;
7
9
  export declare function createUnifiedHandler(): (request: Request) => Promise<Response>;
8
10
  export declare function POST(request: Request): Promise<Response>;
9
- export {};
11
+ /**
12
+ * GET handler for URL-based checkout creation.
13
+ *
14
+ * Creates a checkout from signed URL query params and redirects to the checkout page.
15
+ *
16
+ * @example
17
+ * GET /api/mdk?action=createCheckout&title=Product&amount=2999&signature=abc123
18
+ * -> Verifies signature
19
+ * -> Creates checkout
20
+ * -> 302 redirect to /checkout/{id}
21
+ *
22
+ * Users should generate URLs using the `createCheckoutUrl` helper to ensure proper signing.
23
+ */
24
+ export declare function GET(request: Request): Promise<Response>;
package/dist/route.js CHANGED
@@ -1,12 +1,15 @@
1
1
  import { z } from 'zod';
2
2
  import { handleBalance } from './handlers/balance';
3
- import { handleConfirmCheckout, handleCreateCheckout, handleGetCheckout } from './handlers/checkout';
3
+ import { handleConfirmCheckout, handleCreateCheckout, handleGetCheckout, handleCreateCheckoutFromUrl, parseCheckoutQueryParams, verifyCheckoutSignature, sanitizeCheckoutPath, } from './handlers/checkout';
4
+ // Re-export for use in nextjs package
5
+ export { createCheckoutUrl } from './handlers/checkout';
4
6
  import { listChannels } from './handlers/list_channels';
5
7
  import { handlePayBolt11 } from './handlers/pay_bolt_11';
6
8
  import { handlePayBolt12 } from './handlers/pay_bolt_12';
7
9
  import { handlePreviewPayInvoice } from './handlers/pay_invoice';
8
10
  import { handlePayLNUrl } from './handlers/pay_ln_url';
9
11
  import { handlePing } from './handlers/ping';
12
+ import { handleListProducts } from './handlers/products';
10
13
  import { handleSyncRgs } from './handlers/sync_rgs';
11
14
  import { handleMdkWebhook } from './handlers/webhooks';
12
15
  import { error, log } from './logging';
@@ -25,6 +28,7 @@ const routeSchema = z.enum([
25
28
  'confirm_checkout',
26
29
  'pay_invoice',
27
30
  'sync_rgs',
31
+ 'list_products',
28
32
  ]);
29
33
  const ROUTE_CONFIG = {
30
34
  webhook: { handler: handleMdkWebhook, auth: 'secret' },
@@ -40,6 +44,7 @@ const ROUTE_CONFIG = {
40
44
  confirm_checkout: { handler: handleConfirmCheckout, auth: 'csrf' },
41
45
  pay_invoice: { handler: handlePreviewPayInvoice, auth: 'csrf' },
42
46
  sync_rgs: { handler: handleSyncRgs, auth: 'secret' },
47
+ list_products: { handler: handleListProducts, auth: 'csrf' },
43
48
  };
44
49
  const HANDLERS = {};
45
50
  const CSRF_HEADER = 'x-moneydevkit-csrf-token';
@@ -191,4 +196,65 @@ export async function POST(request) {
191
196
  const handler = createUnifiedHandler();
192
197
  return handler(request);
193
198
  }
199
+ /**
200
+ * Safely join a base path with a segment, avoiding double slashes.
201
+ * e.g., joinPath('/', 'abc') -> '/abc', joinPath('/checkout', 'abc') -> '/checkout/abc'
202
+ */
203
+ function joinPath(base, segment) {
204
+ if (base === '/')
205
+ return `/${segment}`;
206
+ return `${base}/${segment}`;
207
+ }
208
+ /**
209
+ * Helper to redirect to checkout error page.
210
+ * Uses 'error' as a placeholder ID so it matches the /checkout/[id] route.
211
+ */
212
+ function redirectToCheckoutError(baseUrl, checkoutPath, code, message) {
213
+ const errorUrl = new URL(joinPath(checkoutPath, 'error'), baseUrl.origin);
214
+ errorUrl.searchParams.set('error', code);
215
+ errorUrl.searchParams.set('message', message);
216
+ return Response.redirect(errorUrl.toString(), 302);
217
+ }
218
+ /**
219
+ * GET handler for URL-based checkout creation.
220
+ *
221
+ * Creates a checkout from signed URL query params and redirects to the checkout page.
222
+ *
223
+ * @example
224
+ * GET /api/mdk?action=createCheckout&title=Product&amount=2999&signature=abc123
225
+ * -> Verifies signature
226
+ * -> Creates checkout
227
+ * -> 302 redirect to /checkout/{id}
228
+ *
229
+ * Users should generate URLs using the `createCheckoutUrl` helper to ensure proper signing.
230
+ */
231
+ export async function GET(request) {
232
+ const url = new URL(request.url);
233
+ const params = url.searchParams;
234
+ // Only handle createCheckout action
235
+ if (params.get('action') !== 'createCheckout') {
236
+ return new Response('Not found', { status: 404 });
237
+ }
238
+ // Sanitize checkoutPath early to prevent open redirect attacks
239
+ const checkoutPath = sanitizeCheckoutPath(params.get('checkoutPath'));
240
+ // Verify signature is present
241
+ const signature = params.get('signature');
242
+ if (!signature) {
243
+ return redirectToCheckoutError(url, checkoutPath, 'missing_signature', 'Missing signature');
244
+ }
245
+ // Verify signature is valid
246
+ const isValid = verifyCheckoutSignature(params, signature);
247
+ if (!isValid) {
248
+ return redirectToCheckoutError(url, checkoutPath, 'invalid_signature', 'Invalid signature');
249
+ }
250
+ // Parse and validate params
251
+ const checkoutParams = parseCheckoutQueryParams(params);
252
+ const result = await handleCreateCheckoutFromUrl(checkoutParams);
253
+ if ('error' in result) {
254
+ return redirectToCheckoutError(url, checkoutPath, result.error.code, result.error.message);
255
+ }
256
+ // Success - redirect to checkout page (use sanitized checkoutPath, not result.data.checkoutPath)
257
+ const checkoutUrl = new URL(joinPath(checkoutPath, result.data.id), url.origin);
258
+ return Response.redirect(checkoutUrl.toString(), 302);
259
+ }
194
260
  //# sourceMappingURL=route.js.map
package/dist/route.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import type { Result } from './types';
8
8
  /**
9
- * Validates that the mnemonic is a valid BIP39 mnemonic.
10
- * Uses the bip39 library for proper validation including checksum verification.
9
+ * Validates that the mnemonic is provided.
10
+ * Note: Full BIP39 validation is done server-side.
11
11
  */
12
- export declare function validateMnemonic(mnemonic: string): Result<void>;
12
+ export declare function validateMnemonic(_mnemonic: string): Result<void>;
@@ -4,38 +4,12 @@
4
4
  * These checks help developers identify configuration issues early,
5
5
  * before the Lightning node attempts to connect to services.
6
6
  */
7
- import * as bip39 from 'bip39';
8
- import { failure, success } from './types';
7
+ import { success } from './types';
9
8
  /**
10
- * Validates that the mnemonic is a valid BIP39 mnemonic.
11
- * Uses the bip39 library for proper validation including checksum verification.
9
+ * Validates that the mnemonic is provided.
10
+ * Note: Full BIP39 validation is done server-side.
12
11
  */
13
- export function validateMnemonic(mnemonic) {
14
- if (!mnemonic || typeof mnemonic !== 'string') {
15
- return failure({
16
- code: 'mnemonic_missing',
17
- message: 'MDK_MNEMONIC environment variable is not set.',
18
- suggestion: 'Set MDK_MNEMONIC to a valid 12 or 24 word BIP39 mnemonic phrase.',
19
- });
20
- }
21
- // Normalize whitespace: trim and collapse multiple spaces to single space
22
- const normalized = mnemonic.trim().split(/\s+/).join(' ');
23
- if (!bip39.validateMnemonic(normalized)) {
24
- const words = normalized.split(' ');
25
- // Provide more specific error messages
26
- if (words.length !== 12 && words.length !== 24) {
27
- return failure({
28
- code: 'mnemonic_invalid_word_count',
29
- message: `Mnemonic has ${words.length} words, but must have 12 or 24 words.`,
30
- suggestion: 'Check that MDK_MNEMONIC contains a valid BIP39 mnemonic with exactly 12 or 24 words.',
31
- });
32
- }
33
- return failure({
34
- code: 'mnemonic_invalid',
35
- message: 'Mnemonic is not a valid BIP39 mnemonic. Words may be misspelled or the checksum is invalid.',
36
- suggestion: 'Check that MDK_MNEMONIC contains valid BIP39 words. You can generate a new mnemonic using the generateMnemonic() function from @moneydevkit/lightning-js.',
37
- });
38
- }
12
+ export function validateMnemonic(_mnemonic) {
39
13
  return success(undefined);
40
14
  }
41
15
  //# sourceMappingURL=startup-validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"startup-validation.js","sourceRoot":"","sources":["../src/startup-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAE1C;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,+CAA+C;YACxD,UAAU,EAAE,kEAAkE;SAC/E,CAAC,CAAA;IACJ,CAAC;IAED,0EAA0E;IAC1E,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEzD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEnC,uCAAuC;QACvC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,6BAA6B;gBACnC,OAAO,EAAE,gBAAgB,KAAK,CAAC,MAAM,uCAAuC;gBAC5E,UAAU,EAAE,sFAAsF;aACnG,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,6FAA6F;YACtG,UAAU,EAAE,2JAA2J;SACxK,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;AAC3B,CAAC"}
1
+ {"version":3,"file":"startup-validation.js","sourceRoot":"","sources":["../src/startup-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAA;AAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moneydevkit/core",
3
- "version": "0.7.0-beta.1",
3
+ "version": "0.7.0-beta.11",
4
4
  "description": "Shared moneydevkit checkout core utilities",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,8 +42,8 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@hookform/resolvers": "^5.0.1",
45
- "@moneydevkit/api-contract": "0.1.13",
46
- "@moneydevkit/lightning-js": "^0.1.59",
45
+ "@moneydevkit/api-contract": "^0.1.17",
46
+ "@moneydevkit/lightning-js": "^0.1.60",
47
47
  "@orpc/client": "1.3.0",
48
48
  "@orpc/contract": "1.3.0",
49
49
  "@radix-ui/react-collapsible": "^1.1.11",
@@ -52,7 +52,6 @@
52
52
  "@radix-ui/react-select": "^2.2.5",
53
53
  "@radix-ui/react-slot": "^1.2.3",
54
54
  "@tanstack/react-query": "^5.79.0",
55
- "bip39": "^3.1.0",
56
55
  "class-variance-authority": "^0.7.1",
57
56
  "clsx": "^2.1.1",
58
57
  "lucide-react": "^0.511.0",