feat: auth & admin
This commit is contained in:
@@ -12,6 +12,7 @@ Build tools work best when import and file-system paths are obvious at build tim
|
||||
Prefer explicit maps or literal paths so the set of reachable files stays narrow and predictable. This is the same rule whether you are choosing modules with `import()` or reading files in server/build code.
|
||||
|
||||
When analysis becomes too broad, the cost is real:
|
||||
|
||||
- Larger server bundles
|
||||
- Slower builds
|
||||
- Worse cold starts
|
||||
@@ -25,9 +26,9 @@ When analysis becomes too broad, the cost is real:
|
||||
const PAGE_MODULES = {
|
||||
home: './pages/home',
|
||||
settings: './pages/settings',
|
||||
} as const
|
||||
} as const;
|
||||
|
||||
const Page = await import(PAGE_MODULES[pageName])
|
||||
const Page = await import(PAGE_MODULES[pageName]);
|
||||
```
|
||||
|
||||
**Correct (use an explicit map of allowed modules):**
|
||||
@@ -36,9 +37,9 @@ const Page = await import(PAGE_MODULES[pageName])
|
||||
const PAGE_MODULES = {
|
||||
home: () => import('./pages/home'),
|
||||
settings: () => import('./pages/settings'),
|
||||
} as const
|
||||
} as const;
|
||||
|
||||
const Page = await PAGE_MODULES[pageName]()
|
||||
const Page = await PAGE_MODULES[pageName]();
|
||||
```
|
||||
|
||||
### File-System Paths
|
||||
@@ -46,7 +47,7 @@ const Page = await PAGE_MODULES[pageName]()
|
||||
**Incorrect (a 2-value enum still hides the final path from static analysis):**
|
||||
|
||||
```ts
|
||||
const baseDir = path.join(process.cwd(), 'content/' + contentKind)
|
||||
const baseDir = path.join(process.cwd(), 'content/' + contentKind);
|
||||
```
|
||||
|
||||
**Correct (make each final path literal at the callsite):**
|
||||
@@ -55,7 +56,7 @@ const baseDir = path.join(process.cwd(), 'content/' + contentKind)
|
||||
const baseDir =
|
||||
kind === ContentKind.Blog
|
||||
? path.join(process.cwd(), 'content/blog')
|
||||
: path.join(process.cwd(), 'content/docs')
|
||||
: path.join(process.cwd(), 'content/docs');
|
||||
```
|
||||
|
||||
In Next.js server code, this matters for output file tracing too. `path.join(process.cwd(), someVar)` can widen the traced file set because Next.js statically analyze `import`, `require`, and `fs` usage.
|
||||
|
||||
Reference in New Issue
Block a user