@getruba/nextjs 0.9.7 → 0.9.8

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/index.cjs CHANGED
@@ -30,7 +30,7 @@ module.exports = __toCommonJS(index_exports);
30
30
 
31
31
  // src/checkout/checkout.ts
32
32
  var import_sdk = require("@getruba/sdk");
33
- var import_server = require("next/server");
33
+ var import_server = require("next/server.js");
34
34
  var Checkout = ({
35
35
  accessToken,
36
36
  successUrl,
@@ -89,7 +89,7 @@ var Checkout = ({
89
89
 
90
90
  // src/customerPortal/customerPortal.ts
91
91
  var import_sdk2 = require("@getruba/sdk");
92
- var import_server2 = require("next/server");
92
+ var import_server2 = require("next/server.js");
93
93
  function configIsExternalCustomerIdConfig(config) {
94
94
  return typeof config.getExternalCustomerId === "function";
95
95
  }
@@ -143,7 +143,7 @@ var CustomerPortal = (config) => {
143
143
  // src/webhooks/webhooks.ts
144
144
  var import_adapter_utils = require("@getruba/adapter-utils");
145
145
  var import_webhooks = require("@getruba/sdk/webhooks");
146
- var import_server3 = require("next/server");
146
+ var import_server3 = require("next/server.js");
147
147
  var import_adapter_utils2 = require("@getruba/adapter-utils");
148
148
  var Webhooks = ({
149
149
  webhookSecret,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/checkout/checkout.ts","../src/customerPortal/customerPortal.ts","../src/webhooks/webhooks.ts"],"sourcesContent":["export * from \"./checkout/checkout\";\nexport * from \"./customerPortal/customerPortal\";\nexport * from \"./webhooks/webhooks\";\n","import { Ruba } from \"@getruba/sdk\";\nimport { NextResponse } from \"next/server\";\nimport type { NextRequest } from \"next/server\";\n\nexport interface CheckoutConfig {\n\taccessToken?: string;\n\tsuccessUrl?: string;\n\treturnUrl?: string;\n\tincludeCheckoutId?: boolean;\n\tserver?: \"sandbox\" | \"production\";\n\ttheme?: \"light\" | \"dark\";\n}\n\nexport const Checkout = ({\n\taccessToken,\n\tsuccessUrl,\n\treturnUrl,\n\tserver,\n\ttheme,\n\tincludeCheckoutId = true,\n}: CheckoutConfig) => {\n\tconst ruba = new Ruba({\n\t\taccessToken,\n\t\tserver,\n\t});\n\n\treturn async (req: NextRequest) => {\n\t\tconst url = new URL(req.url);\n\t\tconst products = url.searchParams.getAll(\"products\");\n\n\t\tif (products.length === 0) {\n\t\t\treturn NextResponse.json(\n\t\t\t\t{ error: \"Missing products in query params\" },\n\t\t\t\t{ status: 400 },\n\t\t\t);\n\t\t}\n\n\t\tconst success = successUrl ? new URL(successUrl) : undefined;\n\n\t\tif (success && includeCheckoutId) {\n\t\t\tsuccess.searchParams.set(\"checkoutId\", \"{CHECKOUT_ID}\");\n\t\t}\n\n\t\tconst retUrl = returnUrl ? new URL(returnUrl) : undefined;\n\n\t\ttry {\n\t\t\tconst result = await ruba.checkouts.create({\n\t\t\t\tproducts,\n\t\t\t\tsuccessUrl: success ? decodeURI(success.toString()) : undefined,\n\t\t\t\tcustomerId: url.searchParams.get(\"customerId\") ?? undefined,\n\t\t\t\texternalCustomerId:\n\t\t\t\t\turl.searchParams.get(\"customerExternalId\") ?? undefined,\n\t\t\t\tcustomerEmail: url.searchParams.get(\"customerEmail\") ?? undefined,\n\t\t\t\tcustomerName: url.searchParams.get(\"customerName\") ?? undefined,\n\t\t\t\tcustomerBillingAddress: url.searchParams.has(\"customerBillingAddress\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"customerBillingAddress\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tcustomerTaxId: url.searchParams.get(\"customerTaxId\") ?? undefined,\n\t\t\t\tcustomerIpAddress:\n\t\t\t\t\turl.searchParams.get(\"customerIpAddress\") ?? undefined,\n\t\t\t\tcustomerMetadata: url.searchParams.has(\"customerMetadata\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"customerMetadata\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tallowDiscountCodes: url.searchParams.has(\"allowDiscountCodes\")\n\t\t\t\t\t? url.searchParams.get(\"allowDiscountCodes\") === \"true\"\n\t\t\t\t\t: undefined,\n\t\t\t\tdiscountId: url.searchParams.get(\"discountId\") ?? undefined,\n\t\t\t\tmetadata: url.searchParams.has(\"metadata\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"metadata\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tseats: url.searchParams.has(\"seats\")\n\t\t\t\t\t? Number.parseInt(url.searchParams.get(\"seats\") ?? \"1\", 10)\n\t\t\t\t\t: undefined,\n\t\t\t\treturnUrl: retUrl ? decodeURI(retUrl.toString()) : undefined,\n\t\t\t});\n\n\t\t\tconst redirectUrl = new URL(result.url);\n\n\t\t\tif (theme) {\n\t\t\t\tredirectUrl.searchParams.set(\"theme\", theme);\n\t\t\t}\n\n\t\t\treturn NextResponse.redirect(redirectUrl.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn NextResponse.error();\n\t\t}\n\t};\n};\n","import { Ruba } from \"@getruba/sdk\";\nimport { type NextRequest, NextResponse } from \"next/server\";\n\ninterface CustomerPortalBaseConfig {\n\taccessToken: string;\n\tserver: \"sandbox\" | \"production\";\n\treturnUrl?: string;\n}\n\ninterface CustomerPortalCustomerIdConfig extends CustomerPortalBaseConfig {\n\tgetCustomerId: (req: NextRequest) => Promise<string>;\n\tgetExternalCustomerId?: never;\n}\n\ninterface CustomerPortalExternalCustomerIdConfig\n\textends CustomerPortalBaseConfig {\n\tgetCustomerId?: never;\n\tgetExternalCustomerId: (req: NextRequest) => Promise<string>;\n}\n\nfunction configIsExternalCustomerIdConfig(\n\tconfig: CustomerPortalConfig,\n): config is CustomerPortalExternalCustomerIdConfig {\n\treturn typeof config.getExternalCustomerId === \"function\";\n}\n\nexport type CustomerPortalConfig =\n\t| CustomerPortalCustomerIdConfig\n\t| CustomerPortalExternalCustomerIdConfig;\n\nexport const CustomerPortal = (config: CustomerPortalConfig) => {\n\tconst { accessToken, server, returnUrl } = config;\n\n\tconst ruba = new Ruba({\n\t\taccessToken,\n\t\tserver,\n\t});\n\n\treturn async (req: NextRequest) => {\n\t\tconst decodedReturnUrl = returnUrl\n\t\t\t? decodeURI(new URL(returnUrl).toString())\n\t\t\t: undefined;\n\n\t\tif (configIsExternalCustomerIdConfig(config)) {\n\t\t\tconst externalCustomerId = await config.getExternalCustomerId(req);\n\n\t\t\tif (!externalCustomerId) {\n\t\t\t\treturn NextResponse.json(\n\t\t\t\t\t{ error: \"externalCustomerId not defined\" },\n\t\t\t\t\t{ status: 400 },\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { customerPortalUrl } = await ruba.customerSessions.create({\n\t\t\t\t\treturnUrl: decodedReturnUrl,\n\t\t\t\t\texternalCustomerId,\n\t\t\t\t});\n\n\t\t\t\treturn NextResponse.redirect(customerPortalUrl);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t\treturn NextResponse.error();\n\t\t\t}\n\t\t}\n\n\t\tconst customerId = await config.getCustomerId(req);\n\n\t\tif (!customerId) {\n\t\t\treturn NextResponse.json(\n\t\t\t\t{ error: \"customerId not defined\" },\n\t\t\t\t{ status: 400 },\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst { customerPortalUrl } = await ruba.customerSessions.create({\n\t\t\t\treturnUrl: decodedReturnUrl,\n\t\t\t\tcustomerId,\n\t\t\t});\n\n\t\t\treturn NextResponse.redirect(customerPortalUrl);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn NextResponse.error();\n\t\t}\n\t};\n};\n","import {\n\ttype WebhooksConfig,\n\thandleWebhookPayload,\n} from \"@getruba/adapter-utils\";\nimport { WebhookVerificationError, validateEvent } from \"@getruba/sdk/webhooks\";\nimport { type NextRequest, NextResponse } from \"next/server\";\n\nexport {\n\ttype EntitlementContext,\n\ttype EntitlementHandler,\n\ttype EntitlementProperties,\n\tEntitlementStrategy,\n\tEntitlements,\n} from \"@getruba/adapter-utils\";\n\nexport const Webhooks = ({\n\twebhookSecret,\n\tentitlements,\n\tonPayload,\n\t...eventHandlers\n}: WebhooksConfig) => {\n\treturn async (request: NextRequest) => {\n\t\tconst requestBody = await request.text();\n\n\t\tconst webhookHeaders = {\n\t\t\t\"webhook-id\": request.headers.get(\"webhook-id\") ?? \"\",\n\t\t\t\"webhook-timestamp\": request.headers.get(\"webhook-timestamp\") ?? \"\",\n\t\t\t\"webhook-signature\": request.headers.get(\"webhook-signature\") ?? \"\",\n\t\t};\n\n\t\tlet webhookPayload: ReturnType<typeof validateEvent>;\n\t\ttry {\n\t\t\twebhookPayload = validateEvent(\n\t\t\t\trequestBody,\n\t\t\t\twebhookHeaders,\n\t\t\t\twebhookSecret,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof WebhookVerificationError) {\n\t\t\t\treturn NextResponse.json({ received: false }, { status: 403 });\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\n\t\tawait handleWebhookPayload(webhookPayload, {\n\t\t\twebhookSecret,\n\t\t\tentitlements,\n\t\t\tonPayload,\n\t\t\t...eventHandlers,\n\t\t});\n\n\t\treturn NextResponse.json({ received: true });\n\t};\n};\n"],"mappings":"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","names":["import_sdk","import_server","import_server","import_adapter_utils"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/checkout/checkout.ts","../src/customerPortal/customerPortal.ts","../src/webhooks/webhooks.ts"],"sourcesContent":["export * from \"./checkout/checkout\";\nexport * from \"./customerPortal/customerPortal\";\nexport * from \"./webhooks/webhooks\";\n","import { Ruba } from \"@getruba/sdk\";\nimport { NextResponse } from \"next/server.js\";\nimport type { NextRequest } from \"next/server.js\";\n\nexport interface CheckoutConfig {\n\taccessToken?: string;\n\tsuccessUrl?: string;\n\treturnUrl?: string;\n\tincludeCheckoutId?: boolean;\n\tserver?: \"sandbox\" | \"production\";\n\ttheme?: \"light\" | \"dark\";\n}\n\nexport const Checkout = ({\n\taccessToken,\n\tsuccessUrl,\n\treturnUrl,\n\tserver,\n\ttheme,\n\tincludeCheckoutId = true,\n}: CheckoutConfig) => {\n\tconst ruba = new Ruba({\n\t\taccessToken,\n\t\tserver,\n\t});\n\n\treturn async (req: NextRequest) => {\n\t\tconst url = new URL(req.url);\n\t\tconst products = url.searchParams.getAll(\"products\");\n\n\t\tif (products.length === 0) {\n\t\t\treturn NextResponse.json(\n\t\t\t\t{ error: \"Missing products in query params\" },\n\t\t\t\t{ status: 400 },\n\t\t\t);\n\t\t}\n\n\t\tconst success = successUrl ? new URL(successUrl) : undefined;\n\n\t\tif (success && includeCheckoutId) {\n\t\t\tsuccess.searchParams.set(\"checkoutId\", \"{CHECKOUT_ID}\");\n\t\t}\n\n\t\tconst retUrl = returnUrl ? new URL(returnUrl) : undefined;\n\n\t\ttry {\n\t\t\tconst result = await ruba.checkouts.create({\n\t\t\t\tproducts,\n\t\t\t\tsuccessUrl: success ? decodeURI(success.toString()) : undefined,\n\t\t\t\tcustomerId: url.searchParams.get(\"customerId\") ?? undefined,\n\t\t\t\texternalCustomerId:\n\t\t\t\t\turl.searchParams.get(\"customerExternalId\") ?? undefined,\n\t\t\t\tcustomerEmail: url.searchParams.get(\"customerEmail\") ?? undefined,\n\t\t\t\tcustomerName: url.searchParams.get(\"customerName\") ?? undefined,\n\t\t\t\tcustomerBillingAddress: url.searchParams.has(\"customerBillingAddress\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"customerBillingAddress\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tcustomerTaxId: url.searchParams.get(\"customerTaxId\") ?? undefined,\n\t\t\t\tcustomerIpAddress:\n\t\t\t\t\turl.searchParams.get(\"customerIpAddress\") ?? undefined,\n\t\t\t\tcustomerMetadata: url.searchParams.has(\"customerMetadata\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"customerMetadata\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tallowDiscountCodes: url.searchParams.has(\"allowDiscountCodes\")\n\t\t\t\t\t? url.searchParams.get(\"allowDiscountCodes\") === \"true\"\n\t\t\t\t\t: undefined,\n\t\t\t\tdiscountId: url.searchParams.get(\"discountId\") ?? undefined,\n\t\t\t\tmetadata: url.searchParams.has(\"metadata\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"metadata\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tseats: url.searchParams.has(\"seats\")\n\t\t\t\t\t? Number.parseInt(url.searchParams.get(\"seats\") ?? \"1\", 10)\n\t\t\t\t\t: undefined,\n\t\t\t\treturnUrl: retUrl ? decodeURI(retUrl.toString()) : undefined,\n\t\t\t});\n\n\t\t\tconst redirectUrl = new URL(result.url);\n\n\t\t\tif (theme) {\n\t\t\t\tredirectUrl.searchParams.set(\"theme\", theme);\n\t\t\t}\n\n\t\t\treturn NextResponse.redirect(redirectUrl.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn NextResponse.error();\n\t\t}\n\t};\n};\n","import { Ruba } from \"@getruba/sdk\";\nimport { type NextRequest, NextResponse } from \"next/server.js\";\n\ninterface CustomerPortalBaseConfig {\n\taccessToken: string;\n\tserver: \"sandbox\" | \"production\";\n\treturnUrl?: string;\n}\n\ninterface CustomerPortalCustomerIdConfig extends CustomerPortalBaseConfig {\n\tgetCustomerId: (req: NextRequest) => Promise<string>;\n\tgetExternalCustomerId?: never;\n}\n\ninterface CustomerPortalExternalCustomerIdConfig\n\textends CustomerPortalBaseConfig {\n\tgetCustomerId?: never;\n\tgetExternalCustomerId: (req: NextRequest) => Promise<string>;\n}\n\nfunction configIsExternalCustomerIdConfig(\n\tconfig: CustomerPortalConfig,\n): config is CustomerPortalExternalCustomerIdConfig {\n\treturn typeof config.getExternalCustomerId === \"function\";\n}\n\nexport type CustomerPortalConfig =\n\t| CustomerPortalCustomerIdConfig\n\t| CustomerPortalExternalCustomerIdConfig;\n\nexport const CustomerPortal = (config: CustomerPortalConfig) => {\n\tconst { accessToken, server, returnUrl } = config;\n\n\tconst ruba = new Ruba({\n\t\taccessToken,\n\t\tserver,\n\t});\n\n\treturn async (req: NextRequest) => {\n\t\tconst decodedReturnUrl = returnUrl\n\t\t\t? decodeURI(new URL(returnUrl).toString())\n\t\t\t: undefined;\n\n\t\tif (configIsExternalCustomerIdConfig(config)) {\n\t\t\tconst externalCustomerId = await config.getExternalCustomerId(req);\n\n\t\t\tif (!externalCustomerId) {\n\t\t\t\treturn NextResponse.json(\n\t\t\t\t\t{ error: \"externalCustomerId not defined\" },\n\t\t\t\t\t{ status: 400 },\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { customerPortalUrl } = await ruba.customerSessions.create({\n\t\t\t\t\treturnUrl: decodedReturnUrl,\n\t\t\t\t\texternalCustomerId,\n\t\t\t\t});\n\n\t\t\t\treturn NextResponse.redirect(customerPortalUrl);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t\treturn NextResponse.error();\n\t\t\t}\n\t\t}\n\n\t\tconst customerId = await config.getCustomerId(req);\n\n\t\tif (!customerId) {\n\t\t\treturn NextResponse.json(\n\t\t\t\t{ error: \"customerId not defined\" },\n\t\t\t\t{ status: 400 },\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst { customerPortalUrl } = await ruba.customerSessions.create({\n\t\t\t\treturnUrl: decodedReturnUrl,\n\t\t\t\tcustomerId,\n\t\t\t});\n\n\t\t\treturn NextResponse.redirect(customerPortalUrl);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn NextResponse.error();\n\t\t}\n\t};\n};\n","import {\n\ttype WebhooksConfig,\n\thandleWebhookPayload,\n} from \"@getruba/adapter-utils\";\nimport { WebhookVerificationError, validateEvent } from \"@getruba/sdk/webhooks\";\nimport { type NextRequest, NextResponse } from \"next/server.js\";\n\nexport {\n\ttype EntitlementContext,\n\ttype EntitlementHandler,\n\ttype EntitlementProperties,\n\tEntitlementStrategy,\n\tEntitlements,\n} from \"@getruba/adapter-utils\";\n\nexport const Webhooks = ({\n\twebhookSecret,\n\tentitlements,\n\tonPayload,\n\t...eventHandlers\n}: WebhooksConfig) => {\n\treturn async (request: NextRequest) => {\n\t\tconst requestBody = await request.text();\n\n\t\tconst webhookHeaders = {\n\t\t\t\"webhook-id\": request.headers.get(\"webhook-id\") ?? \"\",\n\t\t\t\"webhook-timestamp\": request.headers.get(\"webhook-timestamp\") ?? \"\",\n\t\t\t\"webhook-signature\": request.headers.get(\"webhook-signature\") ?? \"\",\n\t\t};\n\n\t\tlet webhookPayload: ReturnType<typeof validateEvent>;\n\t\ttry {\n\t\t\twebhookPayload = validateEvent(\n\t\t\t\trequestBody,\n\t\t\t\twebhookHeaders,\n\t\t\t\twebhookSecret,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof WebhookVerificationError) {\n\t\t\t\treturn NextResponse.json({ received: false }, { status: 403 });\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\n\t\tawait handleWebhookPayload(webhookPayload, {\n\t\t\twebhookSecret,\n\t\t\tentitlements,\n\t\t\tonPayload,\n\t\t\t...eventHandlers,\n\t\t});\n\n\t\treturn NextResponse.json({ received: true });\n\t};\n};\n"],"mappings":"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","names":["import_sdk","import_server","import_server","import_adapter_utils"]}
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { NextRequest, NextResponse } from 'next/server';
1
+ import { NextRequest, NextResponse } from 'next/server.js';
2
2
  import { WebhooksConfig } from '@getruba/adapter-utils';
3
3
  export { EntitlementContext, EntitlementHandler, EntitlementProperties, EntitlementStrategy, Entitlements } from '@getruba/adapter-utils';
4
4
 
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { NextRequest, NextResponse } from 'next/server';
1
+ import { NextRequest, NextResponse } from 'next/server.js';
2
2
  import { WebhooksConfig } from '@getruba/adapter-utils';
3
3
  export { EntitlementContext, EntitlementHandler, EntitlementProperties, EntitlementStrategy, Entitlements } from '@getruba/adapter-utils';
4
4
 
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/checkout/checkout.ts
2
2
  import { Ruba } from "@getruba/sdk";
3
- import { NextResponse } from "next/server";
3
+ import { NextResponse } from "next/server.js";
4
4
  var Checkout = ({
5
5
  accessToken,
6
6
  successUrl,
@@ -59,7 +59,7 @@ var Checkout = ({
59
59
 
60
60
  // src/customerPortal/customerPortal.ts
61
61
  import { Ruba as Ruba2 } from "@getruba/sdk";
62
- import { NextResponse as NextResponse2 } from "next/server";
62
+ import { NextResponse as NextResponse2 } from "next/server.js";
63
63
  function configIsExternalCustomerIdConfig(config) {
64
64
  return typeof config.getExternalCustomerId === "function";
65
65
  }
@@ -115,7 +115,7 @@ import {
115
115
  handleWebhookPayload
116
116
  } from "@getruba/adapter-utils";
117
117
  import { WebhookVerificationError, validateEvent } from "@getruba/sdk/webhooks";
118
- import { NextResponse as NextResponse3 } from "next/server";
118
+ import { NextResponse as NextResponse3 } from "next/server.js";
119
119
  import {
120
120
  EntitlementStrategy,
121
121
  Entitlements
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/checkout/checkout.ts","../src/customerPortal/customerPortal.ts","../src/webhooks/webhooks.ts"],"sourcesContent":["import { Ruba } from \"@getruba/sdk\";\nimport { NextResponse } from \"next/server\";\nimport type { NextRequest } from \"next/server\";\n\nexport interface CheckoutConfig {\n\taccessToken?: string;\n\tsuccessUrl?: string;\n\treturnUrl?: string;\n\tincludeCheckoutId?: boolean;\n\tserver?: \"sandbox\" | \"production\";\n\ttheme?: \"light\" | \"dark\";\n}\n\nexport const Checkout = ({\n\taccessToken,\n\tsuccessUrl,\n\treturnUrl,\n\tserver,\n\ttheme,\n\tincludeCheckoutId = true,\n}: CheckoutConfig) => {\n\tconst ruba = new Ruba({\n\t\taccessToken,\n\t\tserver,\n\t});\n\n\treturn async (req: NextRequest) => {\n\t\tconst url = new URL(req.url);\n\t\tconst products = url.searchParams.getAll(\"products\");\n\n\t\tif (products.length === 0) {\n\t\t\treturn NextResponse.json(\n\t\t\t\t{ error: \"Missing products in query params\" },\n\t\t\t\t{ status: 400 },\n\t\t\t);\n\t\t}\n\n\t\tconst success = successUrl ? new URL(successUrl) : undefined;\n\n\t\tif (success && includeCheckoutId) {\n\t\t\tsuccess.searchParams.set(\"checkoutId\", \"{CHECKOUT_ID}\");\n\t\t}\n\n\t\tconst retUrl = returnUrl ? new URL(returnUrl) : undefined;\n\n\t\ttry {\n\t\t\tconst result = await ruba.checkouts.create({\n\t\t\t\tproducts,\n\t\t\t\tsuccessUrl: success ? decodeURI(success.toString()) : undefined,\n\t\t\t\tcustomerId: url.searchParams.get(\"customerId\") ?? undefined,\n\t\t\t\texternalCustomerId:\n\t\t\t\t\turl.searchParams.get(\"customerExternalId\") ?? undefined,\n\t\t\t\tcustomerEmail: url.searchParams.get(\"customerEmail\") ?? undefined,\n\t\t\t\tcustomerName: url.searchParams.get(\"customerName\") ?? undefined,\n\t\t\t\tcustomerBillingAddress: url.searchParams.has(\"customerBillingAddress\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"customerBillingAddress\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tcustomerTaxId: url.searchParams.get(\"customerTaxId\") ?? undefined,\n\t\t\t\tcustomerIpAddress:\n\t\t\t\t\turl.searchParams.get(\"customerIpAddress\") ?? undefined,\n\t\t\t\tcustomerMetadata: url.searchParams.has(\"customerMetadata\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"customerMetadata\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tallowDiscountCodes: url.searchParams.has(\"allowDiscountCodes\")\n\t\t\t\t\t? url.searchParams.get(\"allowDiscountCodes\") === \"true\"\n\t\t\t\t\t: undefined,\n\t\t\t\tdiscountId: url.searchParams.get(\"discountId\") ?? undefined,\n\t\t\t\tmetadata: url.searchParams.has(\"metadata\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"metadata\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tseats: url.searchParams.has(\"seats\")\n\t\t\t\t\t? Number.parseInt(url.searchParams.get(\"seats\") ?? \"1\", 10)\n\t\t\t\t\t: undefined,\n\t\t\t\treturnUrl: retUrl ? decodeURI(retUrl.toString()) : undefined,\n\t\t\t});\n\n\t\t\tconst redirectUrl = new URL(result.url);\n\n\t\t\tif (theme) {\n\t\t\t\tredirectUrl.searchParams.set(\"theme\", theme);\n\t\t\t}\n\n\t\t\treturn NextResponse.redirect(redirectUrl.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn NextResponse.error();\n\t\t}\n\t};\n};\n","import { Ruba } from \"@getruba/sdk\";\nimport { type NextRequest, NextResponse } from \"next/server\";\n\ninterface CustomerPortalBaseConfig {\n\taccessToken: string;\n\tserver: \"sandbox\" | \"production\";\n\treturnUrl?: string;\n}\n\ninterface CustomerPortalCustomerIdConfig extends CustomerPortalBaseConfig {\n\tgetCustomerId: (req: NextRequest) => Promise<string>;\n\tgetExternalCustomerId?: never;\n}\n\ninterface CustomerPortalExternalCustomerIdConfig\n\textends CustomerPortalBaseConfig {\n\tgetCustomerId?: never;\n\tgetExternalCustomerId: (req: NextRequest) => Promise<string>;\n}\n\nfunction configIsExternalCustomerIdConfig(\n\tconfig: CustomerPortalConfig,\n): config is CustomerPortalExternalCustomerIdConfig {\n\treturn typeof config.getExternalCustomerId === \"function\";\n}\n\nexport type CustomerPortalConfig =\n\t| CustomerPortalCustomerIdConfig\n\t| CustomerPortalExternalCustomerIdConfig;\n\nexport const CustomerPortal = (config: CustomerPortalConfig) => {\n\tconst { accessToken, server, returnUrl } = config;\n\n\tconst ruba = new Ruba({\n\t\taccessToken,\n\t\tserver,\n\t});\n\n\treturn async (req: NextRequest) => {\n\t\tconst decodedReturnUrl = returnUrl\n\t\t\t? decodeURI(new URL(returnUrl).toString())\n\t\t\t: undefined;\n\n\t\tif (configIsExternalCustomerIdConfig(config)) {\n\t\t\tconst externalCustomerId = await config.getExternalCustomerId(req);\n\n\t\t\tif (!externalCustomerId) {\n\t\t\t\treturn NextResponse.json(\n\t\t\t\t\t{ error: \"externalCustomerId not defined\" },\n\t\t\t\t\t{ status: 400 },\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { customerPortalUrl } = await ruba.customerSessions.create({\n\t\t\t\t\treturnUrl: decodedReturnUrl,\n\t\t\t\t\texternalCustomerId,\n\t\t\t\t});\n\n\t\t\t\treturn NextResponse.redirect(customerPortalUrl);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t\treturn NextResponse.error();\n\t\t\t}\n\t\t}\n\n\t\tconst customerId = await config.getCustomerId(req);\n\n\t\tif (!customerId) {\n\t\t\treturn NextResponse.json(\n\t\t\t\t{ error: \"customerId not defined\" },\n\t\t\t\t{ status: 400 },\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst { customerPortalUrl } = await ruba.customerSessions.create({\n\t\t\t\treturnUrl: decodedReturnUrl,\n\t\t\t\tcustomerId,\n\t\t\t});\n\n\t\t\treturn NextResponse.redirect(customerPortalUrl);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn NextResponse.error();\n\t\t}\n\t};\n};\n","import {\n\ttype WebhooksConfig,\n\thandleWebhookPayload,\n} from \"@getruba/adapter-utils\";\nimport { WebhookVerificationError, validateEvent } from \"@getruba/sdk/webhooks\";\nimport { type NextRequest, NextResponse } from \"next/server\";\n\nexport {\n\ttype EntitlementContext,\n\ttype EntitlementHandler,\n\ttype EntitlementProperties,\n\tEntitlementStrategy,\n\tEntitlements,\n} from \"@getruba/adapter-utils\";\n\nexport const Webhooks = ({\n\twebhookSecret,\n\tentitlements,\n\tonPayload,\n\t...eventHandlers\n}: WebhooksConfig) => {\n\treturn async (request: NextRequest) => {\n\t\tconst requestBody = await request.text();\n\n\t\tconst webhookHeaders = {\n\t\t\t\"webhook-id\": request.headers.get(\"webhook-id\") ?? \"\",\n\t\t\t\"webhook-timestamp\": request.headers.get(\"webhook-timestamp\") ?? \"\",\n\t\t\t\"webhook-signature\": request.headers.get(\"webhook-signature\") ?? \"\",\n\t\t};\n\n\t\tlet webhookPayload: ReturnType<typeof validateEvent>;\n\t\ttry {\n\t\t\twebhookPayload = validateEvent(\n\t\t\t\trequestBody,\n\t\t\t\twebhookHeaders,\n\t\t\t\twebhookSecret,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof WebhookVerificationError) {\n\t\t\t\treturn NextResponse.json({ received: false }, { status: 403 });\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\n\t\tawait handleWebhookPayload(webhookPayload, {\n\t\t\twebhookSecret,\n\t\t\tentitlements,\n\t\t\tonPayload,\n\t\t\t...eventHandlers,\n\t\t});\n\n\t\treturn NextResponse.json({ received: true });\n\t};\n};\n"],"mappings":"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","names":["Ruba","NextResponse","NextResponse"]}
1
+ {"version":3,"sources":["../src/checkout/checkout.ts","../src/customerPortal/customerPortal.ts","../src/webhooks/webhooks.ts"],"sourcesContent":["import { Ruba } from \"@getruba/sdk\";\nimport { NextResponse } from \"next/server.js\";\nimport type { NextRequest } from \"next/server.js\";\n\nexport interface CheckoutConfig {\n\taccessToken?: string;\n\tsuccessUrl?: string;\n\treturnUrl?: string;\n\tincludeCheckoutId?: boolean;\n\tserver?: \"sandbox\" | \"production\";\n\ttheme?: \"light\" | \"dark\";\n}\n\nexport const Checkout = ({\n\taccessToken,\n\tsuccessUrl,\n\treturnUrl,\n\tserver,\n\ttheme,\n\tincludeCheckoutId = true,\n}: CheckoutConfig) => {\n\tconst ruba = new Ruba({\n\t\taccessToken,\n\t\tserver,\n\t});\n\n\treturn async (req: NextRequest) => {\n\t\tconst url = new URL(req.url);\n\t\tconst products = url.searchParams.getAll(\"products\");\n\n\t\tif (products.length === 0) {\n\t\t\treturn NextResponse.json(\n\t\t\t\t{ error: \"Missing products in query params\" },\n\t\t\t\t{ status: 400 },\n\t\t\t);\n\t\t}\n\n\t\tconst success = successUrl ? new URL(successUrl) : undefined;\n\n\t\tif (success && includeCheckoutId) {\n\t\t\tsuccess.searchParams.set(\"checkoutId\", \"{CHECKOUT_ID}\");\n\t\t}\n\n\t\tconst retUrl = returnUrl ? new URL(returnUrl) : undefined;\n\n\t\ttry {\n\t\t\tconst result = await ruba.checkouts.create({\n\t\t\t\tproducts,\n\t\t\t\tsuccessUrl: success ? decodeURI(success.toString()) : undefined,\n\t\t\t\tcustomerId: url.searchParams.get(\"customerId\") ?? undefined,\n\t\t\t\texternalCustomerId:\n\t\t\t\t\turl.searchParams.get(\"customerExternalId\") ?? undefined,\n\t\t\t\tcustomerEmail: url.searchParams.get(\"customerEmail\") ?? undefined,\n\t\t\t\tcustomerName: url.searchParams.get(\"customerName\") ?? undefined,\n\t\t\t\tcustomerBillingAddress: url.searchParams.has(\"customerBillingAddress\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"customerBillingAddress\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tcustomerTaxId: url.searchParams.get(\"customerTaxId\") ?? undefined,\n\t\t\t\tcustomerIpAddress:\n\t\t\t\t\turl.searchParams.get(\"customerIpAddress\") ?? undefined,\n\t\t\t\tcustomerMetadata: url.searchParams.has(\"customerMetadata\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"customerMetadata\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tallowDiscountCodes: url.searchParams.has(\"allowDiscountCodes\")\n\t\t\t\t\t? url.searchParams.get(\"allowDiscountCodes\") === \"true\"\n\t\t\t\t\t: undefined,\n\t\t\t\tdiscountId: url.searchParams.get(\"discountId\") ?? undefined,\n\t\t\t\tmetadata: url.searchParams.has(\"metadata\")\n\t\t\t\t\t? JSON.parse(url.searchParams.get(\"metadata\") ?? \"{}\")\n\t\t\t\t\t: undefined,\n\t\t\t\tseats: url.searchParams.has(\"seats\")\n\t\t\t\t\t? Number.parseInt(url.searchParams.get(\"seats\") ?? \"1\", 10)\n\t\t\t\t\t: undefined,\n\t\t\t\treturnUrl: retUrl ? decodeURI(retUrl.toString()) : undefined,\n\t\t\t});\n\n\t\t\tconst redirectUrl = new URL(result.url);\n\n\t\t\tif (theme) {\n\t\t\t\tredirectUrl.searchParams.set(\"theme\", theme);\n\t\t\t}\n\n\t\t\treturn NextResponse.redirect(redirectUrl.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn NextResponse.error();\n\t\t}\n\t};\n};\n","import { Ruba } from \"@getruba/sdk\";\nimport { type NextRequest, NextResponse } from \"next/server.js\";\n\ninterface CustomerPortalBaseConfig {\n\taccessToken: string;\n\tserver: \"sandbox\" | \"production\";\n\treturnUrl?: string;\n}\n\ninterface CustomerPortalCustomerIdConfig extends CustomerPortalBaseConfig {\n\tgetCustomerId: (req: NextRequest) => Promise<string>;\n\tgetExternalCustomerId?: never;\n}\n\ninterface CustomerPortalExternalCustomerIdConfig\n\textends CustomerPortalBaseConfig {\n\tgetCustomerId?: never;\n\tgetExternalCustomerId: (req: NextRequest) => Promise<string>;\n}\n\nfunction configIsExternalCustomerIdConfig(\n\tconfig: CustomerPortalConfig,\n): config is CustomerPortalExternalCustomerIdConfig {\n\treturn typeof config.getExternalCustomerId === \"function\";\n}\n\nexport type CustomerPortalConfig =\n\t| CustomerPortalCustomerIdConfig\n\t| CustomerPortalExternalCustomerIdConfig;\n\nexport const CustomerPortal = (config: CustomerPortalConfig) => {\n\tconst { accessToken, server, returnUrl } = config;\n\n\tconst ruba = new Ruba({\n\t\taccessToken,\n\t\tserver,\n\t});\n\n\treturn async (req: NextRequest) => {\n\t\tconst decodedReturnUrl = returnUrl\n\t\t\t? decodeURI(new URL(returnUrl).toString())\n\t\t\t: undefined;\n\n\t\tif (configIsExternalCustomerIdConfig(config)) {\n\t\t\tconst externalCustomerId = await config.getExternalCustomerId(req);\n\n\t\t\tif (!externalCustomerId) {\n\t\t\t\treturn NextResponse.json(\n\t\t\t\t\t{ error: \"externalCustomerId not defined\" },\n\t\t\t\t\t{ status: 400 },\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { customerPortalUrl } = await ruba.customerSessions.create({\n\t\t\t\t\treturnUrl: decodedReturnUrl,\n\t\t\t\t\texternalCustomerId,\n\t\t\t\t});\n\n\t\t\t\treturn NextResponse.redirect(customerPortalUrl);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t\treturn NextResponse.error();\n\t\t\t}\n\t\t}\n\n\t\tconst customerId = await config.getCustomerId(req);\n\n\t\tif (!customerId) {\n\t\t\treturn NextResponse.json(\n\t\t\t\t{ error: \"customerId not defined\" },\n\t\t\t\t{ status: 400 },\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst { customerPortalUrl } = await ruba.customerSessions.create({\n\t\t\t\treturnUrl: decodedReturnUrl,\n\t\t\t\tcustomerId,\n\t\t\t});\n\n\t\t\treturn NextResponse.redirect(customerPortalUrl);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn NextResponse.error();\n\t\t}\n\t};\n};\n","import {\n\ttype WebhooksConfig,\n\thandleWebhookPayload,\n} from \"@getruba/adapter-utils\";\nimport { WebhookVerificationError, validateEvent } from \"@getruba/sdk/webhooks\";\nimport { type NextRequest, NextResponse } from \"next/server.js\";\n\nexport {\n\ttype EntitlementContext,\n\ttype EntitlementHandler,\n\ttype EntitlementProperties,\n\tEntitlementStrategy,\n\tEntitlements,\n} from \"@getruba/adapter-utils\";\n\nexport const Webhooks = ({\n\twebhookSecret,\n\tentitlements,\n\tonPayload,\n\t...eventHandlers\n}: WebhooksConfig) => {\n\treturn async (request: NextRequest) => {\n\t\tconst requestBody = await request.text();\n\n\t\tconst webhookHeaders = {\n\t\t\t\"webhook-id\": request.headers.get(\"webhook-id\") ?? \"\",\n\t\t\t\"webhook-timestamp\": request.headers.get(\"webhook-timestamp\") ?? \"\",\n\t\t\t\"webhook-signature\": request.headers.get(\"webhook-signature\") ?? \"\",\n\t\t};\n\n\t\tlet webhookPayload: ReturnType<typeof validateEvent>;\n\t\ttry {\n\t\t\twebhookPayload = validateEvent(\n\t\t\t\trequestBody,\n\t\t\t\twebhookHeaders,\n\t\t\t\twebhookSecret,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof WebhookVerificationError) {\n\t\t\t\treturn NextResponse.json({ received: false }, { status: 403 });\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\n\t\tawait handleWebhookPayload(webhookPayload, {\n\t\t\twebhookSecret,\n\t\t\tentitlements,\n\t\t\tonPayload,\n\t\t\t...eventHandlers,\n\t\t});\n\n\t\treturn NextResponse.json({ received: true });\n\t};\n};\n"],"mappings":"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","names":["Ruba","NextResponse","NextResponse"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getruba/nextjs",
3
- "version": "0.9.7",
3
+ "version": "0.9.8",
4
4
  "description": "Ruba checkout, customer portal, and webhook helpers for Next.js.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -32,8 +32,8 @@
32
32
  "dist"
33
33
  ],
34
34
  "dependencies": {
35
- "@getruba/adapter-utils": "0.4.7",
36
- "@getruba/sdk": "^0.48.3"
35
+ "@getruba/sdk": "^0.48.3",
36
+ "@getruba/adapter-utils": "0.4.7"
37
37
  },
38
38
  "devDependencies": {
39
39
  "typescript": "5.9.3",
@@ -55,7 +55,7 @@
55
55
  "next": "^15.0.0 || ^16.0.0"
56
56
  },
57
57
  "scripts": {
58
- "build": "tsup ./src/index.ts --format esm,cjs --dts --clean --sourcemap",
58
+ "build": "tsup ./src/index.ts --format esm,cjs --dts --clean --sourcemap && node -e \"import('./dist/index.js')\" && node -e \"require('./dist/index.cjs')\"",
59
59
  "dev": "tsc --watch",
60
60
  "check": "biome check --write ./src",
61
61
  "test": "vitest"