better-convex-nuxt 0.2.6 → 0.2.7
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.d.mts +2 -1
- package/dist/module.json +1 -1
- package/dist/runtime/devtools/ui/dist/200.html +1 -1
- package/dist/runtime/devtools/ui/dist/404.html +1 -1
- package/dist/runtime/devtools/ui/dist/_nuxt/builds/latest.json +1 -1
- package/dist/runtime/devtools/ui/dist/_nuxt/builds/meta/bb1b6fab-3dad-4ebb-bedd-8a7e8492b357.json +1 -0
- package/dist/runtime/devtools/ui/dist/index.html +1 -1
- package/dist/runtime/plugin.client.js +4 -6
- package/dist/runtime/server/api/auth/[...].js +16 -12
- package/package.json +1 -1
- package/dist/runtime/devtools/ui/dist/_nuxt/builds/meta/ed8d70b7-40e1-4de1-88fa-bfcb37bd15e0.json +0 -1
package/dist/module.d.mts
CHANGED
|
@@ -71,7 +71,8 @@ interface ModuleOptions {
|
|
|
71
71
|
authRoute?: string;
|
|
72
72
|
/**
|
|
73
73
|
* Additional trusted origins for CORS validation on the auth proxy.
|
|
74
|
-
*
|
|
74
|
+
* Same-origin requests are always allowed automatically.
|
|
75
|
+
* Use this for cross-origin scenarios like iframes or separate frontend domains.
|
|
75
76
|
* Supports wildcards for preview deployments (e.g., 'https://preview-*.vercel.app').
|
|
76
77
|
* @default []
|
|
77
78
|
*/
|
package/dist/module.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Convex DevTools</title><link rel="stylesheet" href="/__convex_devtools__/_nuxt/entry.BiOLMZBG.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/BhO0ov6K.js"><script type="module" src="/__convex_devtools__/_nuxt/BhO0ov6K.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Convex DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__convex_devtools__",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Convex DevTools</title><link rel="stylesheet" href="/__convex_devtools__/_nuxt/entry.BiOLMZBG.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/BhO0ov6K.js"><script type="module" src="/__convex_devtools__/_nuxt/BhO0ov6K.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Convex DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__convex_devtools__",buildId:"bb1b6fab-3dad-4ebb-bedd-8a7e8492b357",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1769017710929,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Convex DevTools</title><link rel="stylesheet" href="/__convex_devtools__/_nuxt/entry.BiOLMZBG.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/BhO0ov6K.js"><script type="module" src="/__convex_devtools__/_nuxt/BhO0ov6K.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Convex DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__convex_devtools__",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Convex DevTools</title><link rel="stylesheet" href="/__convex_devtools__/_nuxt/entry.BiOLMZBG.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/BhO0ov6K.js"><script type="module" src="/__convex_devtools__/_nuxt/BhO0ov6K.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Convex DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__convex_devtools__",buildId:"bb1b6fab-3dad-4ebb-bedd-8a7e8492b357",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1769017710929,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"bb1b6fab-3dad-4ebb-bedd-8a7e8492b357","timestamp":1769017708682}
|
package/dist/runtime/devtools/ui/dist/_nuxt/builds/meta/bb1b6fab-3dad-4ebb-bedd-8a7e8492b357.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"bb1b6fab-3dad-4ebb-bedd-8a7e8492b357","timestamp":1769017708682,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Convex DevTools</title><link rel="stylesheet" href="/__convex_devtools__/_nuxt/entry.BiOLMZBG.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/BhO0ov6K.js"><script type="module" src="/__convex_devtools__/_nuxt/BhO0ov6K.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Convex DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__convex_devtools__",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Convex DevTools</title><link rel="stylesheet" href="/__convex_devtools__/_nuxt/entry.BiOLMZBG.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/BhO0ov6K.js"><script type="module" src="/__convex_devtools__/_nuxt/BhO0ov6K.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Convex DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__convex_devtools__",buildId:"bb1b6fab-3dad-4ebb-bedd-8a7e8492b357",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1769017710929,false]</script></body></html>
|
|
@@ -139,15 +139,13 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
139
139
|
if (authClient) {
|
|
140
140
|
nuxtApp.provide("auth", authClient);
|
|
141
141
|
}
|
|
142
|
-
if (typeof window !== "undefined") {
|
|
142
|
+
if (typeof window !== "undefined" && import.meta.dev) {
|
|
143
143
|
;
|
|
144
144
|
window.__convex_client__ = client;
|
|
145
145
|
if (authClient) window.__auth_client__ = authClient;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
});
|
|
150
|
-
}
|
|
146
|
+
import("./devtools/bridge-setup.js").then(({ setupDevToolsBridge }) => {
|
|
147
|
+
setupDevToolsBridge(client, convexToken, convexUser, convexAuthWaterfall);
|
|
148
|
+
});
|
|
151
149
|
}
|
|
152
150
|
endInit();
|
|
153
151
|
if (convexToken.value) {
|
|
@@ -9,13 +9,11 @@ import {
|
|
|
9
9
|
} from "h3";
|
|
10
10
|
import { useRuntimeConfig } from "#imports";
|
|
11
11
|
import { recordAuthProxyRequest } from "../../../devtools/auth-proxy-registry.js";
|
|
12
|
-
function isOriginAllowed(origin,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} catch {
|
|
18
|
-
}
|
|
12
|
+
function isOriginAllowed(origin, requestHost, trustedOrigins) {
|
|
13
|
+
try {
|
|
14
|
+
const originUrl = new URL(origin);
|
|
15
|
+
if (originUrl.host === requestHost) return true;
|
|
16
|
+
} catch {
|
|
19
17
|
}
|
|
20
18
|
for (const trusted of trustedOrigins) {
|
|
21
19
|
if (trusted.includes("*")) {
|
|
@@ -29,9 +27,10 @@ function isOriginAllowed(origin, siteUrl, trustedOrigins) {
|
|
|
29
27
|
}
|
|
30
28
|
export default defineEventHandler(async (event) => {
|
|
31
29
|
const config = useRuntimeConfig();
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
30
|
+
const convexConfig = config.public.convex;
|
|
31
|
+
const siteUrl = convexConfig?.siteUrl;
|
|
32
|
+
const trustedOrigins = convexConfig?.trustedOrigins ?? [];
|
|
33
|
+
const rawAuthRoute = convexConfig?.authRoute || "/api/auth";
|
|
35
34
|
const authRoute = (rawAuthRoute.startsWith("/") ? rawAuthRoute : `/${rawAuthRoute}`).replace(/\/+$/, "");
|
|
36
35
|
const startTime = import.meta.dev ? Date.now() : 0;
|
|
37
36
|
const requestId = import.meta.dev ? crypto.randomUUID() : "";
|
|
@@ -48,7 +47,7 @@ export default defineEventHandler(async (event) => {
|
|
|
48
47
|
const target = `${siteUrl}/api/auth${normalizedPath}${requestUrl.search}`;
|
|
49
48
|
if (event.method === "OPTIONS") {
|
|
50
49
|
const origin2 = event.headers.get("origin");
|
|
51
|
-
if (!origin2 || !isOriginAllowed(origin2,
|
|
50
|
+
if (!origin2 || !isOriginAllowed(origin2, requestUrl.host, trustedOrigins)) {
|
|
52
51
|
setResponseStatus(event, 403);
|
|
53
52
|
return null;
|
|
54
53
|
}
|
|
@@ -63,13 +62,18 @@ export default defineEventHandler(async (event) => {
|
|
|
63
62
|
return null;
|
|
64
63
|
}
|
|
65
64
|
const origin = event.headers.get("origin");
|
|
66
|
-
|
|
65
|
+
const isAllowedOrigin = origin ? isOriginAllowed(origin, requestUrl.host, trustedOrigins) : true;
|
|
66
|
+
if (origin && isAllowedOrigin) {
|
|
67
67
|
setHeaders(event, {
|
|
68
68
|
"Access-Control-Allow-Origin": origin,
|
|
69
69
|
"Access-Control-Allow-Credentials": "true",
|
|
70
70
|
"Access-Control-Expose-Headers": "Set-Cookie"
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
+
if (origin && !isAllowedOrigin) {
|
|
74
|
+
setResponseStatus(event, 403);
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
73
77
|
try {
|
|
74
78
|
const originalHost = event.headers.get("host") || requestUrl.host;
|
|
75
79
|
const originalProto = requestUrl.protocol.replace(":", "");
|
package/package.json
CHANGED
package/dist/runtime/devtools/ui/dist/_nuxt/builds/meta/ed8d70b7-40e1-4de1-88fa-bfcb37bd15e0.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"ed8d70b7-40e1-4de1-88fa-bfcb37bd15e0","timestamp":1768699825754,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|