wexts 4.1.6 → 4.1.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/chunk-IRRJJ7KL.js +273 -0
- package/dist/chunk-IRRJJ7KL.js.map +1 -0
- package/dist/chunk-VJY6PHYF.mjs +273 -0
- package/dist/chunk-VJY6PHYF.mjs.map +1 -0
- package/dist/cli/index.js +83 -194
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +81 -192
- package/dist/cli/index.mjs.map +1 -1
- package/dist/dev-server/index.d.mts +1 -1
- package/dist/dev-server/index.d.ts +1 -1
- package/dist/dev-server/index.js +2 -2
- package/dist/dev-server/index.mjs +1 -1
- package/dist/index-BsafLP-a.d.mts +70 -0
- package/dist/index-BsafLP-a.d.ts +70 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/templates/nestjs-api/src/app.module.ts +2 -0
- package/templates/nestjs-api/src/hello.service.ts +11 -0
- package/templates/nextjs-web/app/page.tsx +123 -13
- package/templates/nextjs-web/next-env.d.ts +1 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
interface ProcessConfig {
|
|
2
|
+
name: string;
|
|
3
|
+
command: string;
|
|
4
|
+
args: string[];
|
|
5
|
+
cwd: string;
|
|
6
|
+
color: 'cyan' | 'green' | 'yellow' | 'magenta' | 'blue';
|
|
7
|
+
env?: Record<string, string>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Run multiple processes concurrently with colored output
|
|
11
|
+
*/
|
|
12
|
+
declare class ProcessRunner {
|
|
13
|
+
private processes;
|
|
14
|
+
private colors;
|
|
15
|
+
run(configs: ProcessConfig[]): Promise<void>;
|
|
16
|
+
private startProcess;
|
|
17
|
+
stopAll(): void;
|
|
18
|
+
isRunning(name: string): boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface DevServerConfig {
|
|
22
|
+
apiPath: string;
|
|
23
|
+
webPath: string;
|
|
24
|
+
webPort?: number;
|
|
25
|
+
apiPort?: number;
|
|
26
|
+
useProxy?: boolean;
|
|
27
|
+
rootDir?: string;
|
|
28
|
+
runtimeConfigPath?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Unified development server for Fusion projects
|
|
32
|
+
*/
|
|
33
|
+
declare class FusionDevServer {
|
|
34
|
+
private processRunner;
|
|
35
|
+
constructor();
|
|
36
|
+
start(config: DevServerConfig): Promise<void>;
|
|
37
|
+
createProcessConfigs(config: Required<Pick<DevServerConfig, 'apiPath' | 'webPath' | 'webPort' | 'apiPort' | 'rootDir' | 'runtimeConfigPath'>>): ProcessConfig[];
|
|
38
|
+
private createApiCompilerProcess;
|
|
39
|
+
stop(): void;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
interface ProxyConfig {
|
|
43
|
+
port: number;
|
|
44
|
+
apiTarget: string;
|
|
45
|
+
apiPrefix: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Proxy server to forward API requests from Next.js to NestJS
|
|
49
|
+
*/
|
|
50
|
+
declare class ProxyServer {
|
|
51
|
+
private server;
|
|
52
|
+
private proxy;
|
|
53
|
+
start(config: ProxyConfig): Promise<void>;
|
|
54
|
+
stop(): void;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
type index_DevServerConfig = DevServerConfig;
|
|
58
|
+
type index_FusionDevServer = FusionDevServer;
|
|
59
|
+
declare const index_FusionDevServer: typeof FusionDevServer;
|
|
60
|
+
type index_ProcessConfig = ProcessConfig;
|
|
61
|
+
type index_ProcessRunner = ProcessRunner;
|
|
62
|
+
declare const index_ProcessRunner: typeof ProcessRunner;
|
|
63
|
+
type index_ProxyConfig = ProxyConfig;
|
|
64
|
+
type index_ProxyServer = ProxyServer;
|
|
65
|
+
declare const index_ProxyServer: typeof ProxyServer;
|
|
66
|
+
declare namespace index {
|
|
67
|
+
export { type index_DevServerConfig as DevServerConfig, index_FusionDevServer as FusionDevServer, type index_ProcessConfig as ProcessConfig, index_ProcessRunner as ProcessRunner, type index_ProxyConfig as ProxyConfig, index_ProxyServer as ProxyServer };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { type DevServerConfig as D, FusionDevServer as F, type ProcessConfig as P, ProcessRunner as a, type ProxyConfig as b, ProxyServer as c, index as i };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
interface ProcessConfig {
|
|
2
|
+
name: string;
|
|
3
|
+
command: string;
|
|
4
|
+
args: string[];
|
|
5
|
+
cwd: string;
|
|
6
|
+
color: 'cyan' | 'green' | 'yellow' | 'magenta' | 'blue';
|
|
7
|
+
env?: Record<string, string>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Run multiple processes concurrently with colored output
|
|
11
|
+
*/
|
|
12
|
+
declare class ProcessRunner {
|
|
13
|
+
private processes;
|
|
14
|
+
private colors;
|
|
15
|
+
run(configs: ProcessConfig[]): Promise<void>;
|
|
16
|
+
private startProcess;
|
|
17
|
+
stopAll(): void;
|
|
18
|
+
isRunning(name: string): boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface DevServerConfig {
|
|
22
|
+
apiPath: string;
|
|
23
|
+
webPath: string;
|
|
24
|
+
webPort?: number;
|
|
25
|
+
apiPort?: number;
|
|
26
|
+
useProxy?: boolean;
|
|
27
|
+
rootDir?: string;
|
|
28
|
+
runtimeConfigPath?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Unified development server for Fusion projects
|
|
32
|
+
*/
|
|
33
|
+
declare class FusionDevServer {
|
|
34
|
+
private processRunner;
|
|
35
|
+
constructor();
|
|
36
|
+
start(config: DevServerConfig): Promise<void>;
|
|
37
|
+
createProcessConfigs(config: Required<Pick<DevServerConfig, 'apiPath' | 'webPath' | 'webPort' | 'apiPort' | 'rootDir' | 'runtimeConfigPath'>>): ProcessConfig[];
|
|
38
|
+
private createApiCompilerProcess;
|
|
39
|
+
stop(): void;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
interface ProxyConfig {
|
|
43
|
+
port: number;
|
|
44
|
+
apiTarget: string;
|
|
45
|
+
apiPrefix: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Proxy server to forward API requests from Next.js to NestJS
|
|
49
|
+
*/
|
|
50
|
+
declare class ProxyServer {
|
|
51
|
+
private server;
|
|
52
|
+
private proxy;
|
|
53
|
+
start(config: ProxyConfig): Promise<void>;
|
|
54
|
+
stop(): void;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
type index_DevServerConfig = DevServerConfig;
|
|
58
|
+
type index_FusionDevServer = FusionDevServer;
|
|
59
|
+
declare const index_FusionDevServer: typeof FusionDevServer;
|
|
60
|
+
type index_ProcessConfig = ProcessConfig;
|
|
61
|
+
type index_ProcessRunner = ProcessRunner;
|
|
62
|
+
declare const index_ProcessRunner: typeof ProcessRunner;
|
|
63
|
+
type index_ProxyConfig = ProxyConfig;
|
|
64
|
+
type index_ProxyServer = ProxyServer;
|
|
65
|
+
declare const index_ProxyServer: typeof ProxyServer;
|
|
66
|
+
declare namespace index {
|
|
67
|
+
export { type index_DevServerConfig as DevServerConfig, index_FusionDevServer as FusionDevServer, type index_ProcessConfig as ProcessConfig, index_ProcessRunner as ProcessRunner, type index_ProxyConfig as ProxyConfig, index_ProxyServer as ProxyServer };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { type DevServerConfig as D, FusionDevServer as F, type ProcessConfig as P, ProcessRunner as a, type ProxyConfig as b, ProxyServer as c, index as i };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { i as Codegen } from './index-h66Vq9dK.mjs';
|
|
2
|
-
export { i as DevServer } from './index-
|
|
2
|
+
export { i as DevServer } from './index-BsafLP-a.mjs';
|
|
3
3
|
export { i as Nest } from './index-tqmYsTUn.mjs';
|
|
4
4
|
import React, { ReactNode } from 'react';
|
|
5
5
|
import { R as RpcAuthPolicy, b as RpcInvocationRequest, c as RpcInvocationResponse, a as RpcManifest, d as RpcMethodManifest, e as RpcParameterManifest, f as RpcServiceManifest } from './types-CQ_aexOX.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { i as Codegen } from './index-CJKs4wtN.js';
|
|
2
|
-
export { i as DevServer } from './index-
|
|
2
|
+
export { i as DevServer } from './index-BsafLP-a.js';
|
|
3
3
|
export { i as Nest } from './index-CUR6CnLk.js';
|
|
4
4
|
import React, { ReactNode } from 'react';
|
|
5
5
|
import { R as RpcAuthPolicy, b as RpcInvocationRequest, c as RpcInvocationResponse, a as RpcManifest, d as RpcMethodManifest, e as RpcParameterManifest, f as RpcServiceManifest } from './types-CQ_aexOX.js';
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ var _chunk75HBI2XGjs = require('./chunk-75HBI2XG.js');
|
|
|
16
16
|
var _chunkAVMQJWYDjs = require('./chunk-AVMQJWYD.js');
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunkIRRJJ7KLjs = require('./chunk-IRRJJ7KL.js');
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
@@ -540,5 +540,5 @@ var rpc_exports = {};
|
|
|
540
540
|
|
|
541
541
|
|
|
542
542
|
|
|
543
|
-
exports.Codegen = _chunk75HBI2XGjs.codegen_exports; exports.Config = config_exports; exports.Core = core_exports; exports.CreateFusion = create_fusion_exports; exports.DevServer =
|
|
543
|
+
exports.Codegen = _chunk75HBI2XGjs.codegen_exports; exports.Config = config_exports; exports.Core = core_exports; exports.CreateFusion = create_fusion_exports; exports.DevServer = _chunkIRRJJ7KLjs.dev_server_exports; exports.Insight = insight_exports; exports.Nest = _chunkHLT3IHJYjs.nest_exports; exports.Next = next_exports; exports.Rpc = rpc_exports; exports.WextsCodegenError = _chunkAVMQJWYDjs.WextsCodegenError; exports.WextsError = _chunkAVMQJWYDjs.WextsError; exports.WextsRpcError = _chunkAVMQJWYDjs.WextsRpcError; exports.WextsRuntimeError = _chunkAVMQJWYDjs.WextsRuntimeError; exports.WextsSecurityError = _chunkAVMQJWYDjs.WextsSecurityError; exports.formatWextsError = _chunkAVMQJWYDjs.formatWextsError;
|
|
544
544
|
//# sourceMappingURL=index.js.map
|
package/dist/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ import { PrismaModule } from './prisma/prisma.module';
|
|
|
4
4
|
import { AuthModule } from './auth/auth.module';
|
|
5
5
|
import { UsersModule } from './users/users.module';
|
|
6
6
|
import { TodosModule } from './todos/todos.module';
|
|
7
|
+
import { HelloService } from './hello.service';
|
|
7
8
|
|
|
8
9
|
@Module({
|
|
9
10
|
imports: [
|
|
@@ -13,5 +14,6 @@ import { TodosModule } from './todos/todos.module';
|
|
|
13
14
|
UsersModule,
|
|
14
15
|
TodosModule,
|
|
15
16
|
],
|
|
17
|
+
providers: [HelloService],
|
|
16
18
|
})
|
|
17
19
|
export class AppModule { }
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { RpcMethod, RpcService } from 'wexts/nest';
|
|
3
|
+
|
|
4
|
+
@Injectable()
|
|
5
|
+
@RpcService({ name: 'hello', requireAuth: false })
|
|
6
|
+
export class HelloService {
|
|
7
|
+
@RpcMethod()
|
|
8
|
+
async sayHello(name: string): Promise<string> {
|
|
9
|
+
return `Hello, ${name} from RPC!`;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -2,27 +2,137 @@
|
|
|
2
2
|
|
|
3
3
|
import { useAuth } from '@/lib/wexts-client';
|
|
4
4
|
import { useRouter } from 'next/navigation';
|
|
5
|
-
import {
|
|
5
|
+
import { Button } from '@/components/ui/button';
|
|
6
|
+
import { motion } from 'framer-motion';
|
|
7
|
+
import { ArrowRight, Layers, Shield, Zap, Terminal, Code2 } from 'lucide-react';
|
|
8
|
+
import Link from 'next/link';
|
|
6
9
|
|
|
7
10
|
export default function Home() {
|
|
8
|
-
const { isAuthenticated,
|
|
11
|
+
const { isAuthenticated, loading } = useAuth();
|
|
9
12
|
const router = useRouter();
|
|
10
13
|
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
if (!loading && !isAuthenticated) {
|
|
13
|
-
router.push('/login');
|
|
14
|
-
} else if (!loading && isAuthenticated) {
|
|
15
|
-
router.push('/dashboard');
|
|
16
|
-
}
|
|
17
|
-
}, [isAuthenticated, loading, router]);
|
|
18
|
-
|
|
19
14
|
if (loading) {
|
|
20
15
|
return (
|
|
21
|
-
<div className="min-h-screen flex items-center justify-center">
|
|
22
|
-
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-
|
|
16
|
+
<div className="min-h-screen flex items-center justify-center bg-background">
|
|
17
|
+
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-primary"></div>
|
|
23
18
|
</div>
|
|
24
19
|
);
|
|
25
20
|
}
|
|
26
21
|
|
|
27
|
-
return
|
|
22
|
+
return (
|
|
23
|
+
<div className="min-h-screen bg-background relative overflow-hidden flex flex-col">
|
|
24
|
+
{/* Background elements */}
|
|
25
|
+
<div className="absolute top-0 left-0 w-full h-full overflow-hidden -z-10 pointer-events-none">
|
|
26
|
+
<div className="absolute top-[-10%] left-[-10%] w-[40%] h-[40%] rounded-full bg-violet-600/20 blur-[120px]" />
|
|
27
|
+
<div className="absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] rounded-full bg-indigo-600/20 blur-[120px]" />
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
{/* Navbar */}
|
|
31
|
+
<header className="w-full border-b border-border/40 backdrop-blur-md bg-background/80 sticky top-0 z-50">
|
|
32
|
+
<div className="container mx-auto px-4 h-16 flex items-center justify-between">
|
|
33
|
+
<div className="flex items-center space-x-2">
|
|
34
|
+
<div className="w-8 h-8 rounded-lg bg-gradient-to-br from-violet-600 to-indigo-600 flex items-center justify-center">
|
|
35
|
+
<Layers className="w-5 h-5 text-white" />
|
|
36
|
+
</div>
|
|
37
|
+
<span className="font-bold text-xl tracking-tight">Wexts</span>
|
|
38
|
+
</div>
|
|
39
|
+
<nav className="flex items-center space-x-4">
|
|
40
|
+
{isAuthenticated ? (
|
|
41
|
+
<Button variant="default" onClick={() => router.push('/dashboard')}>
|
|
42
|
+
Dashboard
|
|
43
|
+
</Button>
|
|
44
|
+
) : (
|
|
45
|
+
<>
|
|
46
|
+
<Link href="/login">
|
|
47
|
+
<Button variant="ghost">Sign In</Button>
|
|
48
|
+
</Link>
|
|
49
|
+
<Link href="/register">
|
|
50
|
+
<Button variant="default">Get Started</Button>
|
|
51
|
+
</Link>
|
|
52
|
+
</>
|
|
53
|
+
)}
|
|
54
|
+
</nav>
|
|
55
|
+
</div>
|
|
56
|
+
</header>
|
|
57
|
+
|
|
58
|
+
{/* Hero Section */}
|
|
59
|
+
<main className="flex-1 flex flex-col items-center justify-center px-4 py-20 relative">
|
|
60
|
+
<motion.div
|
|
61
|
+
initial={{ opacity: 0, y: 20 }}
|
|
62
|
+
animate={{ opacity: 1, y: 0 }}
|
|
63
|
+
transition={{ duration: 0.5 }}
|
|
64
|
+
className="text-center max-w-4xl mx-auto"
|
|
65
|
+
>
|
|
66
|
+
<div className="inline-flex items-center rounded-full border border-primary/20 bg-primary/10 px-3 py-1 text-sm font-medium text-primary mb-8">
|
|
67
|
+
<span className="flex h-2 w-2 rounded-full bg-primary mr-2"></span>
|
|
68
|
+
Production-ready Fullstack Toolkit
|
|
69
|
+
</div>
|
|
70
|
+
<h1 className="text-5xl md:text-7xl font-extrabold tracking-tight mb-8">
|
|
71
|
+
The Ultimate <br className="hidden md:block" />
|
|
72
|
+
<span className="text-gradient">Next.js + NestJS</span> Bridge
|
|
73
|
+
</h1>
|
|
74
|
+
<p className="text-lg md:text-xl text-muted-foreground mb-10 max-w-2xl mx-auto leading-relaxed">
|
|
75
|
+
Wexts brings together the power of Next.js and NestJS into a seamless, type-safe, single-runtime experience. Build faster, scale better, and never worry about RPC generation again.
|
|
76
|
+
</p>
|
|
77
|
+
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
|
|
78
|
+
{isAuthenticated ? (
|
|
79
|
+
<Button size="lg" className="h-12 px-8 text-base shadow-lg shadow-primary/20" onClick={() => router.push('/dashboard')}>
|
|
80
|
+
Go to Dashboard <ArrowRight className="ml-2 w-5 h-5" />
|
|
81
|
+
</Button>
|
|
82
|
+
) : (
|
|
83
|
+
<Link href="/register">
|
|
84
|
+
<Button size="lg" className="h-12 px-8 text-base shadow-lg shadow-primary/20">
|
|
85
|
+
Start Building <ArrowRight className="ml-2 w-5 h-5" />
|
|
86
|
+
</Button>
|
|
87
|
+
</Link>
|
|
88
|
+
)}
|
|
89
|
+
<a href="https://github.com/wexts" target="_blank" rel="noreferrer">
|
|
90
|
+
<Button size="lg" variant="outline" className="h-12 px-8 text-base border-border bg-background/50 backdrop-blur-md hover:bg-accent/50">
|
|
91
|
+
<Terminal className="mr-2 w-5 h-5" /> Documentation
|
|
92
|
+
</Button>
|
|
93
|
+
</a>
|
|
94
|
+
</div>
|
|
95
|
+
</motion.div>
|
|
96
|
+
|
|
97
|
+
{/* Features Section */}
|
|
98
|
+
<motion.div
|
|
99
|
+
initial={{ opacity: 0, y: 40 }}
|
|
100
|
+
animate={{ opacity: 1, y: 0 }}
|
|
101
|
+
transition={{ duration: 0.7, delay: 0.2 }}
|
|
102
|
+
className="grid grid-cols-1 md:grid-cols-3 gap-6 mt-32 max-w-5xl mx-auto w-full px-4"
|
|
103
|
+
>
|
|
104
|
+
<div className="glass p-6 rounded-2xl flex flex-col items-start dark:glass-dark transition-transform hover:-translate-y-1 duration-300">
|
|
105
|
+
<div className="w-12 h-12 rounded-xl bg-violet-100 dark:bg-violet-900/50 flex items-center justify-center mb-4 text-violet-600 dark:text-violet-400">
|
|
106
|
+
<Code2 className="w-6 h-6" />
|
|
107
|
+
</div>
|
|
108
|
+
<h3 className="text-xl font-bold mb-2">Typed RPC Bridge</h3>
|
|
109
|
+
<p className="text-muted-foreground">Deterministic codegen that keeps your frontend and backend in perfect sync. No more broken API contracts.</p>
|
|
110
|
+
</div>
|
|
111
|
+
|
|
112
|
+
<div className="glass p-6 rounded-2xl flex flex-col items-start dark:glass-dark transition-transform hover:-translate-y-1 duration-300">
|
|
113
|
+
<div className="w-12 h-12 rounded-xl bg-blue-100 dark:bg-blue-900/50 flex items-center justify-center mb-4 text-blue-600 dark:text-blue-400">
|
|
114
|
+
<Zap className="w-6 h-6" />
|
|
115
|
+
</div>
|
|
116
|
+
<h3 className="text-xl font-bold mb-2">Single Runtime</h3>
|
|
117
|
+
<p className="text-muted-foreground">Run Next.js, NestJS, and Fastify in one process. Radically simple deployments without complex microservices.</p>
|
|
118
|
+
</div>
|
|
119
|
+
|
|
120
|
+
<div className="glass p-6 rounded-2xl flex flex-col items-start dark:glass-dark transition-transform hover:-translate-y-1 duration-300">
|
|
121
|
+
<div className="w-12 h-12 rounded-xl bg-emerald-100 dark:bg-emerald-900/50 flex items-center justify-center mb-4 text-emerald-600 dark:text-emerald-400">
|
|
122
|
+
<Shield className="w-6 h-6" />
|
|
123
|
+
</div>
|
|
124
|
+
<h3 className="text-xl font-bold mb-2">Strict Security</h3>
|
|
125
|
+
<p className="text-muted-foreground">Built-in DDoS protection, strict request parsing, and rate-limiting designed for production from day one.</p>
|
|
126
|
+
</div>
|
|
127
|
+
</motion.div>
|
|
128
|
+
</main>
|
|
129
|
+
|
|
130
|
+
{/* Footer */}
|
|
131
|
+
<footer className="py-8 border-t border-border/40 mt-auto">
|
|
132
|
+
<div className="container mx-auto px-4 text-center text-muted-foreground text-sm">
|
|
133
|
+
<p>© {new Date().getFullYear()} Wexts. Built with precision for production environments.</p>
|
|
134
|
+
</div>
|
|
135
|
+
</footer>
|
|
136
|
+
</div>
|
|
137
|
+
);
|
|
28
138
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="next" />
|
|
2
2
|
/// <reference types="next/image-types/global" />
|
|
3
|
-
import "./.next/dev/types/routes.
|
|
3
|
+
import "./.next/dev/types/routes.d.ts";
|
|
4
4
|
|
|
5
5
|
// NOTE: This file should not be edited
|
|
6
6
|
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|