|
6 | 6 | defineNuxtModule, |
7 | 7 | resolveAlias, |
8 | 8 | } from "@nuxt/kit"; |
9 | | -import type { Nuxt } from "@nuxt/schema"; |
| 9 | +import type { Nuxt, NuxtModule } from "@nuxt/schema"; |
10 | 10 | import type { H3Event } from "h3"; |
11 | 11 |
|
12 | 12 | /** |
@@ -40,75 +40,76 @@ export interface ModuleOptions { |
40 | 40 | /** |
41 | 41 | * Nuxt module to integrate Fedify with Nuxt/Nitro request handling. |
42 | 42 | */ |
43 | | -const fedifyNuxtModule = defineNuxtModule<ModuleOptions>({ |
44 | | - meta: { |
45 | | - name: "@fedify/nuxt", |
46 | | - configKey: "fedify", |
47 | | - }, |
48 | | - defaults: { |
49 | | - federationModule: "~/server/federation", |
50 | | - contextDataFactoryModule: undefined, |
51 | | - }, |
52 | | - setup(options: ModuleOptions, nuxt: Nuxt) { |
53 | | - const resolver = createResolver(import.meta.url); |
54 | | - const federationModule = resolveAlias( |
55 | | - options.federationModule, |
56 | | - nuxt.options.alias, |
57 | | - ); |
58 | | - const contextDataFactoryModule = options.contextDataFactoryModule == null |
59 | | - ? undefined |
60 | | - : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); |
| 43 | +const fedifyNuxtModule: NuxtModule<ModuleOptions, ModuleOptions, false> = |
| 44 | + defineNuxtModule<ModuleOptions>({ |
| 45 | + meta: { |
| 46 | + name: "@fedify/nuxt", |
| 47 | + configKey: "fedify", |
| 48 | + }, |
| 49 | + defaults: { |
| 50 | + federationModule: "~/server/federation", |
| 51 | + contextDataFactoryModule: undefined, |
| 52 | + }, |
| 53 | + setup(options: ModuleOptions, nuxt: Nuxt) { |
| 54 | + const resolver = createResolver(import.meta.url); |
| 55 | + const federationModule = resolveAlias( |
| 56 | + options.federationModule, |
| 57 | + nuxt.options.alias, |
| 58 | + ); |
| 59 | + const contextDataFactoryModule = options.contextDataFactoryModule == null |
| 60 | + ? undefined |
| 61 | + : resolveAlias(options.contextDataFactoryModule, nuxt.options.alias); |
61 | 62 |
|
62 | | - const middlewareFilename = "fedify-nuxt-options.mjs"; |
| 63 | + const middlewareFilename = "fedify-nuxt-options.mjs"; |
63 | 64 |
|
64 | | - addServerTemplate({ |
65 | | - filename: middlewareFilename, |
66 | | - getContents: () => { |
67 | | - const imports = [ |
68 | | - `import * as federationModule from ${ |
69 | | - JSON.stringify(federationModule) |
70 | | - };`, |
71 | | - `import { createFedifyMiddleware } from ${ |
72 | | - JSON.stringify( |
73 | | - resolver.resolve("../src/runtime/server/middleware.ts"), |
74 | | - ) |
75 | | - };`, |
76 | | - ]; |
77 | | - |
78 | | - if (contextDataFactoryModule != null) { |
79 | | - imports.push( |
80 | | - `import * as contextFactoryModule from ${ |
81 | | - JSON.stringify(contextDataFactoryModule) |
| 65 | + addServerTemplate({ |
| 66 | + filename: middlewareFilename, |
| 67 | + getContents: () => { |
| 68 | + const imports = [ |
| 69 | + `import * as federationModule from ${ |
| 70 | + JSON.stringify(federationModule) |
| 71 | + };`, |
| 72 | + `import { createFedifyMiddleware } from ${ |
| 73 | + JSON.stringify( |
| 74 | + resolver.resolve("../src/runtime/server/middleware.ts"), |
| 75 | + ) |
82 | 76 | };`, |
83 | | - ); |
84 | | - } |
| 77 | + ]; |
85 | 78 |
|
86 | | - const contextFactoryResolver = contextDataFactoryModule == null |
87 | | - ? "const contextDataFactory = undefined;" |
88 | | - : [ |
89 | | - "const contextDataFactory =", |
90 | | - " contextFactoryModule.default ??", |
91 | | - " contextFactoryModule.contextDataFactory;", |
92 | | - ].join("\n"); |
| 79 | + if (contextDataFactoryModule != null) { |
| 80 | + imports.push( |
| 81 | + `import * as contextFactoryModule from ${ |
| 82 | + JSON.stringify(contextDataFactoryModule) |
| 83 | + };`, |
| 84 | + ); |
| 85 | + } |
93 | 86 |
|
94 | | - return [ |
95 | | - ...imports, |
96 | | - "const federation = federationModule.default ?? federationModule.federation;", |
97 | | - contextFactoryResolver, |
98 | | - "export default createFedifyMiddleware(federation, contextDataFactory);", |
99 | | - "", |
100 | | - ].join("\n"); |
101 | | - }, |
102 | | - }); |
| 87 | + const contextFactoryResolver = contextDataFactoryModule == null |
| 88 | + ? "const contextDataFactory = undefined;" |
| 89 | + : [ |
| 90 | + "const contextDataFactory =", |
| 91 | + " contextFactoryModule.default ??", |
| 92 | + " contextFactoryModule.contextDataFactory;", |
| 93 | + ].join("\n"); |
| 94 | + |
| 95 | + return [ |
| 96 | + ...imports, |
| 97 | + "const federation = federationModule.default ?? federationModule.federation;", |
| 98 | + contextFactoryResolver, |
| 99 | + "export default createFedifyMiddleware(federation, contextDataFactory);", |
| 100 | + "", |
| 101 | + ].join("\n"); |
| 102 | + }, |
| 103 | + }); |
103 | 104 |
|
104 | | - addServerHandler({ |
105 | | - route: "", |
106 | | - middleware: true, |
107 | | - handler: middlewareFilename, |
108 | | - }); |
| 105 | + addServerHandler({ |
| 106 | + route: "", |
| 107 | + middleware: true, |
| 108 | + handler: middlewareFilename, |
| 109 | + }); |
109 | 110 |
|
110 | | - addServerPlugin(resolver.resolve("../src/runtime/server/plugin.ts")); |
111 | | - }, |
112 | | -}); |
| 111 | + addServerPlugin(resolver.resolve("../src/runtime/server/plugin.ts")); |
| 112 | + }, |
| 113 | + }); |
113 | 114 |
|
114 | 115 | export default fedifyNuxtModule; |
0 commit comments