better-convex-nuxt 0.2.1 → 0.2.3
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 +0 -8
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -1
- package/dist/runtime/devtools/ui/components/JsonViewer.vue +2 -0
- 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/2402f38c-d12f-4c0b-846f-2ad2f104951f.json +1 -0
- package/dist/runtime/devtools/ui/dist/index.html +1 -1
- package/dist/runtime/plugin.client.js +7 -0
- package/dist/runtime/plugin.server.js +2 -1
- package/package.json +1 -1
- package/dist/runtime/devtools/ui/dist/_nuxt/builds/meta/ed68c5ea-0511-4166-9328-de64627268f7.json +0 -1
package/README.md
CHANGED
|
@@ -32,14 +32,6 @@ Install the module:
|
|
|
32
32
|
pnpm add better-convex-nuxt
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
Add your Convex URL to `.env`:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
CONVEX_URL=https://your-project.convex.cloud
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
That's it! Start using Convex in your Nuxt app.
|
|
42
|
-
|
|
43
35
|
## Usage
|
|
44
36
|
|
|
45
37
|
### Queries
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -193,7 +193,7 @@ export {}
|
|
|
193
193
|
}
|
|
194
194
|
});
|
|
195
195
|
function setupDevTools(nuxt, resolver) {
|
|
196
|
-
const devtoolsOutputPath = resolver.resolve("./runtime/devtools
|
|
196
|
+
const devtoolsOutputPath = resolver.resolve("./runtime/devtools/ui/dist");
|
|
197
197
|
nuxt.options.runtimeConfig.convexDevtoolsPath = devtoolsOutputPath;
|
|
198
198
|
nuxt.hook("devtools:customTabs", (tabs) => {
|
|
199
199
|
tabs.push({
|
|
@@ -45,9 +45,11 @@ const formattedJson = computed(() => {
|
|
|
45
45
|
</script>
|
|
46
46
|
|
|
47
47
|
<template>
|
|
48
|
+
<!-- eslint-disable vue/no-v-html -- Safe: all dynamic content is escaped via escapeHtml() -->
|
|
48
49
|
<div
|
|
49
50
|
class="json-viewer"
|
|
50
51
|
:style="{ maxHeight: maxHeight || '200px' }"
|
|
51
52
|
v-html="formattedJson"
|
|
52
53
|
/>
|
|
54
|
+
<!-- eslint-enable vue/no-v-html -->
|
|
53
55
|
</template>
|
|
@@ -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.CXPHzcHp.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/DRR5kXdS.js"><script type="module" src="/__convex_devtools__/_nuxt/DRR5kXdS.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.CXPHzcHp.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/DRR5kXdS.js"><script type="module" src="/__convex_devtools__/_nuxt/DRR5kXdS.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:"2402f38c-d12f-4c0b-846f-2ad2f104951f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1768333345265,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.CXPHzcHp.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/DRR5kXdS.js"><script type="module" src="/__convex_devtools__/_nuxt/DRR5kXdS.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.CXPHzcHp.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/DRR5kXdS.js"><script type="module" src="/__convex_devtools__/_nuxt/DRR5kXdS.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:"2402f38c-d12f-4c0b-846f-2ad2f104951f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1768333345266,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"2402f38c-d12f-4c0b-846f-2ad2f104951f","timestamp":1768333343049}
|
package/dist/runtime/devtools/ui/dist/_nuxt/builds/meta/2402f38c-d12f-4c0b-846f-2ad2f104951f.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"2402f38c-d12f-4c0b-846f-2ad2f104951f","timestamp":1768333343049,"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.CXPHzcHp.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/DRR5kXdS.js"><script type="module" src="/__convex_devtools__/_nuxt/DRR5kXdS.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.CXPHzcHp.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__convex_devtools__/_nuxt/DRR5kXdS.js"><script type="module" src="/__convex_devtools__/_nuxt/DRR5kXdS.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:"2402f38c-d12f-4c0b-846f-2ad2f104951f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1768333345266,false]</script></body></html>
|
|
@@ -61,7 +61,9 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
61
61
|
fetchOptions: { credentials: "include" }
|
|
62
62
|
});
|
|
63
63
|
let lastTokenValidation = Date.now();
|
|
64
|
+
let lastNullTokenCheck = 0;
|
|
64
65
|
const TOKEN_CACHE_MS = 1e4;
|
|
66
|
+
const NULL_TOKEN_CACHE_MS = 5e3;
|
|
65
67
|
const skipRoutes = config.public.convex?.skipAuthRoutes || [];
|
|
66
68
|
const router = useRouter();
|
|
67
69
|
const fetchToken = async ({ forceRefreshToken }) => {
|
|
@@ -84,11 +86,15 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
84
86
|
if (wasServerRendered && !convexToken.value && !convexUser.value) {
|
|
85
87
|
return null;
|
|
86
88
|
}
|
|
89
|
+
if (!convexToken.value && Date.now() - lastNullTokenCheck < NULL_TOKEN_CACHE_MS) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
87
92
|
try {
|
|
88
93
|
const response = await authClient.convex.token();
|
|
89
94
|
if (response.error || !response.data?.token) {
|
|
90
95
|
convexToken.value = null;
|
|
91
96
|
convexUser.value = null;
|
|
97
|
+
lastNullTokenCheck = Date.now();
|
|
92
98
|
return null;
|
|
93
99
|
}
|
|
94
100
|
const token = response.data.token;
|
|
@@ -101,6 +107,7 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
101
107
|
} catch {
|
|
102
108
|
convexToken.value = null;
|
|
103
109
|
convexUser.value = null;
|
|
110
|
+
lastNullTokenCheck = Date.now();
|
|
104
111
|
return null;
|
|
105
112
|
}
|
|
106
113
|
};
|
|
@@ -3,6 +3,7 @@ import { createModuleLogger, getLoggingOptions, createTimer } from "./utils/logg
|
|
|
3
3
|
import { getCachedAuthToken, setCachedAuthToken } from "./server/utils/auth-cache.js";
|
|
4
4
|
import { getCookie } from "./utils/shared-helpers.js";
|
|
5
5
|
const SESSION_COOKIE_NAME = "better-auth.session_token";
|
|
6
|
+
const SECURE_SESSION_COOKIE_NAME = "__Secure-better-auth.session_token";
|
|
6
7
|
function buildPhase(name, startTime, waterfallStart, result, details) {
|
|
7
8
|
const end = Date.now();
|
|
8
9
|
return {
|
|
@@ -70,7 +71,7 @@ export default defineNuxtPlugin(async () => {
|
|
|
70
71
|
let cacheHit = false;
|
|
71
72
|
const sessionCheckStart = Date.now();
|
|
72
73
|
const cookieHeader = event.headers.get("cookie");
|
|
73
|
-
const sessionToken = getCookie(cookieHeader, SESSION_COOKIE_NAME);
|
|
74
|
+
const sessionToken = getCookie(cookieHeader, SECURE_SESSION_COOKIE_NAME) || getCookie(cookieHeader, SESSION_COOKIE_NAME);
|
|
74
75
|
if (!cookieHeader || !sessionToken) {
|
|
75
76
|
phases.push(buildPhase("session-check", sessionCheckStart, waterfallStart, "miss", "No session cookie"));
|
|
76
77
|
convexAuthWaterfall.value = {
|
package/package.json
CHANGED
package/dist/runtime/devtools/ui/dist/_nuxt/builds/meta/ed68c5ea-0511-4166-9328-de64627268f7.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"ed68c5ea-0511-4166-9328-de64627268f7","timestamp":1768309766642,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|