@holo-js/adapter-nuxt 0.3.8 → 0.3.11

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": "@holo-js/adapter-nuxt",
3
3
  "configKey": "@holo-js/adapter-nuxt",
4
- "version": "0.3.8",
4
+ "version": "0.3.11",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "unknown"
@@ -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
- if (event.headers instanceof Headers) {
49
- return event.headers.get(name) ?? void 0;
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
- return initializeHoloAdapterProject(resolveRuntimeProjectRoot(config), {
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: createNuxtAuthRequestAccessors(),
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.8",
3
+ "version": "0.3.11",
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.8",
41
+ "@holo-js/adapter-shared": "^0.3.11",
42
42
  "@nuxt/kit": "^4.4.4",
43
- "@holo-js/config": "^0.3.8",
44
- "@holo-js/core": "^0.3.8",
45
- "@holo-js/db": "^0.3.8",
46
- "@holo-js/validation": "^0.3.8",
47
- "h3": "^1.15.11"
43
+ "@holo-js/config": "^0.3.11",
44
+ "@holo-js/core": "^0.3.11",
45
+ "@holo-js/db": "^0.3.11",
46
+ "@holo-js/validation": "^0.3.11",
47
+ "h3": "^1.15.11",
48
+ "nitropack": "^2.13.4"
48
49
  },
49
50
  "peerDependencies": {
50
- "@holo-js/broadcast": "^0.3.8",
51
- "@holo-js/forms": "^0.3.8",
52
- "@holo-js/realtime": "^0.3.8",
53
- "@holo-js/storage": "^0.3.8",
54
- "@holo-js/storage-s3": "^0.3.8"
51
+ "@holo-js/broadcast": "^0.3.11",
52
+ "@holo-js/forms": "^0.3.11",
53
+ "@holo-js/realtime": "^0.3.11",
54
+ "@holo-js/storage": "^0.3.11",
55
+ "@holo-js/storage-s3": "^0.3.11"
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.8",
75
- "@holo-js/realtime": "^0.3.8",
76
- "@holo-js/storage-s3": "^0.3.8",
75
+ "@holo-js/broadcast": "^0.3.11",
76
+ "@holo-js/realtime": "^0.3.11",
77
+ "@holo-js/storage-s3": "^0.3.11",
77
78
  "@nuxt/module-builder": "^1.0.2",
78
79
  "@types/node": "^22.10.2",
79
80
  "nuxt": "^4.4.4",