cee65bbd87
- Move workflow IPC types (StartThread, ResumeThread, etc.) to workflow/ipc.ts - Move workflow-worker.ts, workflow-manager.ts, workflow-manager-support.ts - Move worker-runtime.ts and worker-signals.ts (shared infrastructure) - Daemon now imports workflow runtime from @uncaged/workflow - Export WORKFLOW_WORKER_PATH for daemon to spawn workers Phase 3+4 of #320, Testing: #322
35 lines
1.1 KiB
Plaintext
35 lines
1.1 KiB
Plaintext
---
|
|
description: Ban dynamic import() in production code — use static imports instead
|
|
globs: packages/*/src/**/*.ts
|
|
alwaysApply: true
|
|
---
|
|
|
|
# No Dynamic Import in Production Code
|
|
|
|
## Rule
|
|
|
|
Do NOT use `await import()` or dynamic `import()` expressions in production source code.
|
|
Always use static top-level `import` statements.
|
|
|
|
## Why
|
|
|
|
- Static imports enable tree-shaking and bundler optimizations
|
|
- They make dependencies explicit and discoverable at a glance
|
|
- Dynamic imports of Node built-ins or project modules add unnecessary async overhead
|
|
|
|
## Exceptions (must include a comment explaining why)
|
|
|
|
1. **`sense-runtime.ts`** — loads user-authored sense modules whose paths are only known at runtime
|
|
2. **`packages/workflow/src/worker.ts`** — loads user-authored workflow modules whose paths are only known at runtime
|
|
|
|
When suppressing, add a comment directly above:
|
|
|
|
```ts
|
|
// Dynamic import required: user module path resolved at runtime
|
|
const mod = await import(senseIndexPath);
|
|
```
|
|
|
|
## Test Files
|
|
|
|
Test files (`__tests__/**`) are exempt — dynamic import after `vi.mock()` is standard vitest practice.
|