@frigear-nu/stripe 0.0.6 → 0.0.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/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@frigear-nu/stripe",
3
3
  "configKey": "stripe",
4
- "version": "0.0.6",
4
+ "version": "0.0.8",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.3",
7
7
  "unbuild": "unknown"
package/dist/module.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { defineNuxtModule, createResolver, addServerHandler, addServerImportsDir, addServerImports, addTypeTemplate, addServerTemplate } from '@nuxt/kit';
2
- import { registerModule, extendDatabaseTable } from '@frigear-nu/module-kit/utils';
1
+ import { defineNuxtModule, createResolver, addServerHandler, addServerImportsDir, addServerImports, addTypeTemplate } from '@nuxt/kit';
2
+ import { registerModule, defineVirtualRegistry, extendDatabaseTable } from '@frigear-nu/module-kit/utils';
3
3
 
4
4
  const STRIPE_API_VERSION = "2026-09-30.endive";
5
5
  const DEFAULT_WEBHOOK_PATH = "/api/stripe/webhook";
@@ -58,17 +58,16 @@ const module$1 = defineNuxtModule({
58
58
  }
59
59
  `
60
60
  });
61
- nuxt.hook("modules:done", () => {
62
- const registered = Array.isArray(nuxt.options.stripe?._handlers) ? nuxt.options.stripe._handlers : [];
63
- addServerTemplate({
64
- filename: "#stripe/handlers",
65
- getContents: () => `
61
+ defineVirtualRegistry(nuxt, {
62
+ filename: "#stripe/handlers",
63
+ target: "server",
64
+ collect: () => Array.isArray(nuxt.options.stripe?._handlers) ? nuxt.options.stripe._handlers : [],
65
+ contents: (registered) => `
66
66
  ${registered.map((entry, index) => `import handler${index} from ${JSON.stringify(entry.handler)}`).join("\n")}
67
67
  export const handlers = [${registered.map(
68
- (entry, index) => `{ events: ${JSON.stringify(entry.events)}, order: ${entry.order ?? DEFAULT_HANDLER_ORDER}, handler: handler${index} }`
69
- ).join(", ")}]
68
+ (entry, index) => `{ events: ${JSON.stringify(entry.events)}, order: ${entry.order ?? DEFAULT_HANDLER_ORDER}, handler: handler${index} }`
69
+ ).join(", ")}]
70
70
  `
71
- });
72
71
  });
73
72
  extendDatabaseTable(nuxt, {
74
73
  resolver,
@@ -1,4 +1,5 @@
1
1
  export { registerStripeEventHandler, defineStripeEventHandler } from './handlers.js';
2
2
  export type { RegisterStripeEventHandlerOptions } from './handlers.js';
3
3
  export { onStripeEvent } from './registry.js';
4
+ export { resolveSameOriginUrl } from './url.js';
4
5
  export type { ModuleOptions, StripeEventType, StripeEventOf, StripeEventHandler, StripeEventHandlerContext, RegisteredStripeEventHandler, StripeRuntimeConfig, StripePublicRuntimeConfig, } from '../../types.js';
@@ -1,2 +1,3 @@
1
1
  export { registerStripeEventHandler, defineStripeEventHandler } from "./handlers.js";
2
2
  export { onStripeEvent } from "./registry.js";
3
+ export { resolveSameOriginUrl } from "./url.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Validates a redirect URL supplied by a client (a Stripe return URL): it must be a relative path (`/x`) or an absolute
3
+ * URL on `origin`. Returns an absolute URL on that origin, or `null` when it is unsafe. Shared by every module that
4
+ * sends people through Stripe so the open-redirect guard exists once.
5
+ */
6
+ export declare function resolveSameOriginUrl(input: string, origin: string): string | null;
@@ -0,0 +1,11 @@
1
+ export function resolveSameOriginUrl(input, origin) {
2
+ if (input.startsWith("/")) {
3
+ if (input.startsWith("//") || input.startsWith("/\\")) return null;
4
+ return `${origin}${input}`;
5
+ }
6
+ try {
7
+ return new URL(input).origin === new URL(origin).origin ? input : null;
8
+ } catch {
9
+ return null;
10
+ }
11
+ }
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@frigear-nu/stripe",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "Core Stripe plumbing for the frigear ecosystem: SDK access, customer linking, and a verified, idempotent webhook that other modules can subscribe to.",
5
+ "homepage": "https://docs.frigear.dev/modules/stripe",
5
6
  "repository": {
6
7
  "type": "git",
7
8
  "url": "git+https://github.com/frigear-nu/frigear-nu.git",
@@ -29,8 +30,8 @@
29
30
  "playground"
30
31
  ],
31
32
  "dependencies": {
32
- "@frigear-nu/module-kit": "0.1.5",
33
- "@frigear-nu/users": "1.0.7",
33
+ "@frigear-nu/module-kit": "0.1.7",
34
+ "@frigear-nu/users": "1.0.9",
34
35
  "@libsql/client": "^0.18.0",
35
36
  "@nuxt/kit": "^4.6.0",
36
37
  "h3": "^1.15.11",