@holo-js/adapter-nuxt 0.3.7 → 0.3.10
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 +1 -1
- package/dist/runtime/composables/index.d.ts +21 -0
- package/dist/runtime/composables/index.js +20 -12
- package/package.json +16 -15
package/dist/module.json
CHANGED
|
@@ -26,6 +26,27 @@ export interface HoloRuntimeDefaultConnection extends HoloRuntimeConnection {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
export declare const holo: HoloAdapterProjectAccessors
|
|
29
|
+
export type NuxtAuthRequestEvent = {
|
|
30
|
+
readonly headers?: Pick<Headers, 'get'>
|
|
31
|
+
readonly request?: {
|
|
32
|
+
readonly headers?: Pick<Headers, 'get'>
|
|
33
|
+
}
|
|
34
|
+
readonly web?: {
|
|
35
|
+
readonly request?: {
|
|
36
|
+
readonly headers?: Pick<Headers, 'get'>
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
readonly node?: {
|
|
40
|
+
readonly req?: {
|
|
41
|
+
readonly headers?: Readonly<Record<string, string | readonly string[] | undefined>>
|
|
42
|
+
}
|
|
43
|
+
readonly res?: {
|
|
44
|
+
getHeader(name: string): number | string | readonly string[] | undefined
|
|
45
|
+
setHeader(name: string, value: number | string | readonly string[]): void
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export declare function runWithNuxtRequest<TValue>(event: NuxtAuthRequestEvent, callback: () => TValue): Promise<Awaited<TValue>>
|
|
29
50
|
export declare function useHoloDb(): HoloRuntimeDatabaseGroup | HoloRuntimeDefaultConnection
|
|
30
51
|
export declare function useHoloEnv(): 'production' | 'development' | 'test'
|
|
31
52
|
export declare function useHoloDebug(): boolean
|
|
@@ -30,7 +30,7 @@ function resolveRuntimeProjectRoot(config) {
|
|
|
30
30
|
async function loadNitroContextModule() {
|
|
31
31
|
return await import("nitropack/runtime/context");
|
|
32
32
|
}
|
|
33
|
-
export function createNuxtAuthRequestAccessors() {
|
|
33
|
+
export function createNuxtAuthRequestAccessors(requestEvent) {
|
|
34
34
|
function safeDecode(value) {
|
|
35
35
|
try {
|
|
36
36
|
return decodeURIComponent(value);
|
|
@@ -40,16 +40,14 @@ export function createNuxtAuthRequestAccessors() {
|
|
|
40
40
|
}
|
|
41
41
|
async function readHeader(name) {
|
|
42
42
|
const nitroContext = await loadNitroContextModule();
|
|
43
|
-
const event = nitroContext.useEvent();
|
|
43
|
+
const event = requestEvent ?? nitroContext.useEvent();
|
|
44
44
|
if (!event) {
|
|
45
45
|
return void 0;
|
|
46
46
|
}
|
|
47
47
|
const normalizedName = name.toLowerCase();
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (event.request?.headers instanceof Headers) {
|
|
52
|
-
return event.request.headers.get(name) ?? void 0;
|
|
48
|
+
const headerSources = [event.headers, event.web?.request?.headers, event.request?.headers];
|
|
49
|
+
for (const headers of headerSources) {
|
|
50
|
+
if (headers && typeof headers.get === "function") return headers.get(name) ?? void 0;
|
|
53
51
|
}
|
|
54
52
|
const value = event.node?.req?.headers?.[normalizedName];
|
|
55
53
|
if (Array.isArray(value)) {
|
|
@@ -85,7 +83,7 @@ export function createNuxtAuthRequestAccessors() {
|
|
|
85
83
|
}
|
|
86
84
|
async function appendCookie(cookie) {
|
|
87
85
|
const nitroContext = await loadNitroContextModule();
|
|
88
|
-
const event = nitroContext.useEvent();
|
|
86
|
+
const event = requestEvent ?? nitroContext.useEvent();
|
|
89
87
|
const response = event?.node?.res;
|
|
90
88
|
if (!response) {
|
|
91
89
|
return;
|
|
@@ -112,7 +110,7 @@ export function createNuxtAuthRequestAccessors() {
|
|
|
112
110
|
};
|
|
113
111
|
const redirectResponse = async (url, status) => {
|
|
114
112
|
const nitroContext = await loadNitroContextModule();
|
|
115
|
-
const event = nitroContext.useEvent();
|
|
113
|
+
const event = requestEvent ?? nitroContext.useEvent();
|
|
116
114
|
if (!event) {
|
|
117
115
|
throw new TypeError("Holo Nuxt auth redirect requires an active Nitro event.");
|
|
118
116
|
}
|
|
@@ -126,18 +124,28 @@ export function createNuxtAuthRequestAccessors() {
|
|
|
126
124
|
redirectResponse
|
|
127
125
|
};
|
|
128
126
|
}
|
|
127
|
+
export async function runWithNuxtRequest(event, callback) {
|
|
128
|
+
const accessors = createNuxtAuthRequestAccessors(event);
|
|
129
|
+
await holo.getApp();
|
|
130
|
+
const runner = globalThis.__holoNuxtAuthRequestRunner;
|
|
131
|
+
return await (runner ? runner(accessors, callback) : callback());
|
|
132
|
+
}
|
|
129
133
|
export const holo = createHoloProjectAccessors(async () => {
|
|
130
134
|
const config = getRuntimeConfig();
|
|
131
|
-
|
|
135
|
+
const authRequest = createNuxtAuthRequestAccessors();
|
|
136
|
+
const project = await initializeHoloAdapterProject(resolveRuntimeProjectRoot(config), {
|
|
132
137
|
envName: resolveRuntimeEnvName(config.holo.appEnv),
|
|
133
138
|
preferCache: process.env.NODE_ENV === "production",
|
|
134
139
|
processEnv: process.env,
|
|
135
|
-
authRequest
|
|
140
|
+
authRequest,
|
|
136
141
|
authorizationError: {
|
|
137
142
|
createError: createNuxtAuthorizationError
|
|
138
143
|
}
|
|
139
144
|
});
|
|
140
|
-
|
|
145
|
+
const runtimeGlobals = globalThis;
|
|
146
|
+
runtimeGlobals.__holoNuxtAuthRequestRunner = (accessors, callback) => project.runtime.runWithAuthRequestAccessors(accessors, callback);
|
|
147
|
+
return project;
|
|
148
|
+
}, { cache: process.env.NODE_ENV === "production" });
|
|
141
149
|
function resolveDefaultConnectionName(group) {
|
|
142
150
|
if (group.defaultConnection) {
|
|
143
151
|
return group.defaultConnection;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@holo-js/adapter-nuxt",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.10",
|
|
4
4
|
"description": "Holo-JS Framework - Nuxt adapter",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,20 +38,21 @@
|
|
|
38
38
|
"test": "vitest --run"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@holo-js/adapter-shared": "^0.3.
|
|
41
|
+
"@holo-js/adapter-shared": "^0.3.10",
|
|
42
42
|
"@nuxt/kit": "^4.4.4",
|
|
43
|
-
"@holo-js/config": "^0.3.
|
|
44
|
-
"@holo-js/core": "^0.3.
|
|
45
|
-
"@holo-js/db": "^0.3.
|
|
46
|
-
"@holo-js/validation": "^0.3.
|
|
47
|
-
"h3": "^1.15.11"
|
|
43
|
+
"@holo-js/config": "^0.3.10",
|
|
44
|
+
"@holo-js/core": "^0.3.10",
|
|
45
|
+
"@holo-js/db": "^0.3.10",
|
|
46
|
+
"@holo-js/validation": "^0.3.10",
|
|
47
|
+
"h3": "^1.15.11",
|
|
48
|
+
"nitropack": "^2.13.4"
|
|
48
49
|
},
|
|
49
50
|
"peerDependencies": {
|
|
50
|
-
"@holo-js/broadcast": "^0.3.
|
|
51
|
-
"@holo-js/forms": "^0.3.
|
|
52
|
-
"@holo-js/realtime": "^0.3.
|
|
53
|
-
"@holo-js/storage": "^0.3.
|
|
54
|
-
"@holo-js/storage-s3": "^0.3.
|
|
51
|
+
"@holo-js/broadcast": "^0.3.10",
|
|
52
|
+
"@holo-js/forms": "^0.3.10",
|
|
53
|
+
"@holo-js/realtime": "^0.3.10",
|
|
54
|
+
"@holo-js/storage": "^0.3.10",
|
|
55
|
+
"@holo-js/storage-s3": "^0.3.10"
|
|
55
56
|
},
|
|
56
57
|
"peerDependenciesMeta": {
|
|
57
58
|
"@holo-js/broadcast": {
|
|
@@ -71,9 +72,9 @@
|
|
|
71
72
|
}
|
|
72
73
|
},
|
|
73
74
|
"devDependencies": {
|
|
74
|
-
"@holo-js/broadcast": "^0.3.
|
|
75
|
-
"@holo-js/realtime": "^0.3.
|
|
76
|
-
"@holo-js/storage-s3": "^0.3.
|
|
75
|
+
"@holo-js/broadcast": "^0.3.10",
|
|
76
|
+
"@holo-js/realtime": "^0.3.10",
|
|
77
|
+
"@holo-js/storage-s3": "^0.3.10",
|
|
77
78
|
"@nuxt/module-builder": "^1.0.2",
|
|
78
79
|
"@types/node": "^22.10.2",
|
|
79
80
|
"nuxt": "^4.4.4",
|