fix(typescript): resolve compilation errors for production build
Fixes 4 TypeScript compilation errors preventing successful build:
## Errors Fixed
### 1. lid-mapping.ts:799 - Property 'metricsModule' does not exist
**Error**: `this.metricsModule = null` in destroy() but property never declared
**Fix**: Removed orphaned line from previous metrics cleanup
**Impact**: Allows successful compilation
### 2-3. socket.ts:795,817 - Connection handler type mismatch
**Error**: `{ connection: any }` not assignable to `Partial<ConnectionState>`
**Cause**: Destructuring makes 'connection' required but it's optional in Partial
**Fix**: Changed handlers to `(update: Partial<ConnectionState>)`
**Impact**: Proper type safety for connection.update events
### 4. event-buffer.ts:430 - Wrong argument order
**Error**: Object passed as second arg but logger expects (obj, msg) order
**Fix**: Swapped arguments to `logger.debug({ queuedCount }, 'message')`
**Impact**: Matches logger signature from structured-logger.ts
## Root Cause Analysis
All errors stem from incremental changes where:
- Removed metrics support but missed cleanup reference
- Added connection handlers without checking Partial<T> semantics
- Used logger without verifying parameter order
## Testing
Build verification:
```bash
npm run build # Should now complete successfully
```
These are compilation errors only - no runtime behavior changes.
https://claude.ai/code/session_VMxqX
This commit is contained in:
@@ -795,9 +795,6 @@ export class LIDMappingStore {
|
||||
// Clear cache
|
||||
this.mappingCache.clear()
|
||||
|
||||
// Clear metrics module reference
|
||||
this.metricsModule = null
|
||||
|
||||
this.logger.debug('LIDMappingStore destroyed successfully')
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
NOISE_WA_HEADER,
|
||||
UPLOAD_TIMEOUT
|
||||
} from '../Defaults'
|
||||
import type { LIDMapping, SocketConfig } from '../Types'
|
||||
import type { ConnectionState, LIDMapping, SocketConfig } from '../Types'
|
||||
import { DisconnectReason } from '../Types'
|
||||
import {
|
||||
addTransactionCapability,
|
||||
@@ -777,11 +777,11 @@ export const makeSocket = (config: SocketConfig) => {
|
||||
|
||||
// PROTECTION 4: Initial delay (avoid duplicate at startup)
|
||||
// CB:success already calls uploadPreKeysToServerIfRequired(), so wait 6h before first auto-sync
|
||||
const connectionHandler = ({ connection }: { connection: any }) => {
|
||||
if (connection === 'open') {
|
||||
const connectionHandler = (update: Partial<ConnectionState>) => {
|
||||
if (update.connection === 'open') {
|
||||
logger.info('🔑 Starting PreKey auto-sync timer (first sync in 6h)')
|
||||
syncTimer = setTimeout(syncLoop, SYNC_INTERVAL)
|
||||
} else if (connection === 'close') {
|
||||
} else if (update.connection === 'close') {
|
||||
// PROTECTION 5: Cleanup on disconnect
|
||||
if (syncTimer) {
|
||||
clearTimeout(syncTimer)
|
||||
@@ -814,8 +814,8 @@ export const makeSocket = (config: SocketConfig) => {
|
||||
* Returns cleanup function to remove event listener
|
||||
*/
|
||||
const startSessionTTL = () => {
|
||||
const connectionHandler = ({ connection }: { connection: any }) => {
|
||||
if (connection === 'open') {
|
||||
const connectionHandler = (update: Partial<ConnectionState>) => {
|
||||
if (update.connection === 'open') {
|
||||
sessionStartTime = Date.now()
|
||||
|
||||
// PROTECTION 1: Long TTL (7 days)
|
||||
@@ -840,7 +840,7 @@ export const makeSocket = (config: SocketConfig) => {
|
||||
|
||||
const ttlHours = SESSION_TTL / 1000 / 60 / 60
|
||||
logger.info(`🕐 Session TTL started (${ttlHours}h = 7 days)`)
|
||||
} else if (connection === 'close') {
|
||||
} else if (update.connection === 'close') {
|
||||
// PROTECTION 4: Cleanup ALL timers on disconnect
|
||||
if (ttlTimer) {
|
||||
clearTimeout(ttlTimer)
|
||||
|
||||
@@ -427,7 +427,7 @@ export const makeEventBuffer = (
|
||||
if (config.enableMetrics) {
|
||||
import('./prometheus-metrics').then(m => {
|
||||
metricsModule = m
|
||||
logger.debug('📊 Prometheus metrics loaded, flushing buffered metrics', { queuedCount: metricsQueue.length })
|
||||
logger.debug({ queuedCount: metricsQueue.length }, '📊 Prometheus metrics loaded, flushing buffered metrics')
|
||||
// Flush buffered metrics
|
||||
metricsQueue.forEach(fn => fn())
|
||||
metricsQueue = []
|
||||
|
||||
Reference in New Issue
Block a user