Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 22 additions & 24 deletions .cursorrules
Original file line number Diff line number Diff line change
Expand Up @@ -17,40 +17,40 @@
- **상태 관리**: Legend State
- **코드 에디터**: Monaco Editor
- **Backend**: Rust, Tauri 2.0
- **JavaScript Engine**: Deno Core 0.323 (V8 기반)
- **JavaScript Engine**: Node.js v24.12.0 (V8 기반)
- **Package Manager**: pnpm
- **Linting**: oxlint (JavaScript)
- **Formatting**: Prettier (JavaScript), rustfmt (Rust)
- **Documentation**: RSPress

### JavaScript 런타임 아키텍처

#### Deno Core 통합
- **엔진**: `deno_core` 0.323 (V8 JavaScript 엔진)
- **실행 방식**: `tokio::task::spawn_blocking`으로 별도 스레드에서 실행
- **호환성**: Tauri 2.0과 완전 호환 (Send 트레이트 문제 해결)
#### Node.js 통합
- **엔진**: Node.js v24.12.0 (V8 JavaScript 엔진)
- **실행 방식**: `tokio::process::Command`로 서브프로세스 실행
- **호환성**: Tauri 2.0과 완전 호환

#### 핵심 컴포넌트
```
apps/executeJS/src-tauri/src/
├── deno_runtime.rs # Deno Core 런타임 구현
├── bootstrap.js # JavaScript API 정의
├── js_executor.rs # 실행 결과 관리
└── commands.rs # Tauri 명령어

crates/node-runtime/
├── src/lib.rs # Node.js 런타임 구현
└── Cargo.toml
```

#### 실행 흐름
1. **초기화**: `DenoExecutor::new()` - 출력 버퍼 설정
2. **실행**: `execute_script()` - 별도 스레드에서 Deno Core 실행
3. **API 연결**: `bootstrap.js` - console.log, alert 등 커스텀 API
4. **결과 처리**: 출력 버퍼에서 결과 수집 및 반환
1. **초기화**: `NodeExecutor::new()` - Node.js 바이너리 경로 찾기
2. **실행**: `execute_script()` - 서브프로세스로 Node.js 실행
3. **결과 처리**: stdout/stderr에서 결과 수집 및 반환

#### 지원 기능
- ✅ `console.log()` - 다중 인자, 객체 직렬화
- ✅ `alert()` - 사용자 알림
- ✅ `console.log()` - 표준 출력
- ✅ 변수 할당 및 계산
- ✅ 문법 오류 감지 (실제 JavaScript 엔진 수준)
- ✅ Chrome DevTools 수준의 출력
- ✅ Node.js 표준 기능 지원

## FSD 아키텍처 규칙

Expand Down Expand Up @@ -196,10 +196,9 @@ chore: 빌드 설정 변경
- 네이티브 로그 확인

### JavaScript 런타임
- `cargo test deno_runtime::tests` - 런타임 테스트
- `bootstrap.js` 수정 시 재컴파일 필요
- op 함수 추가 시 `extension!` 매크로 업데이트
- 전역 상태(`OUTPUT_BUFFER`) 주의
- `cargo test node_runtime::tests` - 런타임 테스트
- Node.js 바이너리 경로 확인 필요
- 리소스 번들링 확인 (`tauri.conf.json`)

## 주의사항

Expand Down Expand Up @@ -227,9 +226,8 @@ chore: 빌드 설정 변경
2. `cargo fmt` 실행
3. 수동으로 규칙에 맞게 수정

### Deno Core 관련 문제
1. **Send 트레이트 오류**: `tokio::task::spawn_blocking` 사용 확인
2. **op 함수 오류**: `#[op2(fast)]` 속성 및 `extension!` 매크로 확인
3. **bootstrap.js 오류**: `include_str!` 매크로로 올바르게 포함되었는지 확인
4. **전역 상태 충돌**: 테스트 간 격리 락 사용
5. **V8 엔진 오류**: `deno_core` 버전 호환성 확인
### Node.js 런타임 관련 문제
1. **바이너리 경로 오류**: 개발/프로덕션 모드 경로 확인
2. **리소스 번들링 오류**: `tauri.conf.json`의 `resources` 설정 확인
3. **권한 오류**: Unix 시스템에서 실행 권한 설정 확인
4. **서브프로세스 오류**: `tokio::process::Command` 실행 확인
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,10 @@ temp/

# Tauri generated files
**/src-tauri/gen

# Node.js 바이너리 (자동 다운로드됨)
apps/executeJS/src-tauri/resources/node-runtime/**/node
apps/executeJS/src-tauri/resources/node-runtime/**/node.exe

# 임시 다운로드 디렉토리
.temp-node-download/
148 changes: 18 additions & 130 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading