chore(8.0): final pre-RC1 sweep — API consistency, named errors, orphans, zero-cast codebase

This commit is contained in:
David Snelling 2026-06-11 14:51:00 -07:00
parent 970e08c466
commit 1f7e365a4e
237 changed files with 1951 additions and 49413 deletions

View file

@ -1,119 +0,0 @@
/**
* Universal Events implementation
* Framework-friendly: Trusts that frameworks provide events polyfills
* Works in all environments: Browser (via framework), Node.js, Serverless
*/
import { isNode } from '../utils/environment.js'
let nodeEvents: any = null
// Dynamic import for Node.js events (only in Node.js environment)
if (isNode()) {
try {
nodeEvents = await import('node:events')
} catch {
// Ignore import errors in non-Node environments
}
}
/**
* Universal EventEmitter interface
*/
export interface UniversalEventEmitter {
on(event: string, listener: (...args: any[]) => void): this
off(event: string, listener: (...args: any[]) => void): this
emit(event: string, ...args: any[]): boolean
once(event: string, listener: (...args: any[]) => void): this
removeAllListeners(event?: string): this
listenerCount(event: string): number
}
/**
* Node.js implementation using events.EventEmitter
*/
class NodeEventEmitter implements UniversalEventEmitter {
private emitter: any
constructor() {
this.emitter = new nodeEvents.EventEmitter()
}
on(event: string, listener: (...args: any[]) => void): this {
this.emitter.on(event, listener)
return this
}
off(event: string, listener: (...args: any[]) => void): this {
this.emitter.off(event, listener)
return this
}
emit(event: string, ...args: any[]): boolean {
return this.emitter.emit(event, ...args)
}
once(event: string, listener: (...args: any[]) => void): this {
this.emitter.once(event, listener)
return this
}
removeAllListeners(event?: string): this {
this.emitter.removeAllListeners(event)
return this
}
listenerCount(event: string): number {
return this.emitter.listenerCount(event)
}
}
/**
* Universal EventEmitter class
* Framework-friendly: Assumes events API is available via framework polyfills
*/
export class EventEmitter implements UniversalEventEmitter {
private emitter: UniversalEventEmitter
constructor() {
if (isNode() && nodeEvents) {
this.emitter = new NodeEventEmitter()
} else {
throw new Error('Events operations not available. Framework bundlers should provide events polyfills.')
}
}
on(event: string, listener: (...args: any[]) => void): this {
this.emitter.on(event, listener)
return this
}
off(event: string, listener: (...args: any[]) => void): this {
this.emitter.off(event, listener)
return this
}
emit(event: string, ...args: any[]): boolean {
return this.emitter.emit(event, ...args)
}
once(event: string, listener: (...args: any[]) => void): this {
this.emitter.once(event, listener)
return this
}
removeAllListeners(event?: string): this {
this.emitter.removeAllListeners(event)
return this
}
listenerCount(event: string): number {
return this.emitter.listenerCount(event)
}
}
// Named export for compatibility
export { EventEmitter as default }
// Re-export Node.js EventEmitter class if available
export const NodeEventEmitterClass = nodeEvents?.EventEmitter || null

View file

@ -1,28 +0,0 @@
/**
* Universal adapters for cross-environment compatibility
* Provides consistent APIs across Browser, Node.js, and Serverless environments
*/
// UUID adapter
export * from './uuid.js'
export { default as uuid } from './uuid.js'
// Crypto adapter
export * from './crypto.js'
export { default as crypto } from './crypto.js'
// File system adapter
export * from './fs.js'
export { default as fs } from './fs.js'
// Path adapter
export * from './path.js'
export { default as path } from './path.js'
// Events adapter
export * from './events.js'
export { default as events } from './events.js'
// Convenience re-exports for common patterns
export { v4 as uuidv4 } from './uuid.js'
export { EventEmitter } from './events.js'