@nice2dev/ui-audio 0.1.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +217 -1
- package/dist/__benchmarks__/audio-latency.bench.d.ts +2 -0
- package/dist/__benchmarks__/audio-latency.bench.d.ts.map +1 -0
- package/dist/constants/index.d.ts +6 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/karaokeScoringConfig.d.ts.map +1 -1
- package/dist/core/NiceAudioErrorBoundary.d.ts +28 -0
- package/dist/core/NiceAudioErrorBoundary.d.ts.map +1 -0
- package/dist/editor/NiceSampleBrowser.d.ts +79 -0
- package/dist/editor/NiceSampleBrowser.d.ts.map +1 -0
- package/dist/editor/Waveform.d.ts +53 -1
- package/dist/editor/Waveform.d.ts.map +1 -1
- package/dist/editor/hooks/useProjectCRUD.d.ts.map +1 -1
- package/dist/editor/nav/SaveLoadControls.d.ts.map +1 -1
- package/dist/editor/useEditorRecording.d.ts.map +1 -1
- package/dist/engine/NiceAudioEffects.d.ts +186 -0
- package/dist/engine/NiceAudioEffects.d.ts.map +1 -0
- package/dist/engine/NiceAudioEffectsRack.d.ts +17 -0
- package/dist/engine/NiceAudioEffectsRack.d.ts.map +1 -0
- package/dist/engine/NiceAudioWorklet.d.ts +184 -0
- package/dist/engine/NiceAudioWorklet.d.ts.map +1 -0
- package/dist/engine/NiceMultitrackExport.d.ts +165 -0
- package/dist/engine/NiceMultitrackExport.d.ts.map +1 -0
- package/dist/engine/audioContext.d.ts.map +1 -1
- package/dist/engine/audioKeyboard.d.ts.map +1 -1
- package/dist/engine/audioPlaybackEngine.d.ts.map +1 -1
- package/dist/index.cjs +373 -34
- package/dist/index.d.ts +95 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +9988 -5652
- package/dist/karaoke/AudioPitchAnalyzer.d.ts.map +1 -1
- package/dist/karaoke/KaraokeSummaryOverlay.d.ts +22 -0
- package/dist/karaoke/KaraokeSummaryOverlay.d.ts.map +1 -0
- package/dist/karaoke/rendering/fontCatalog.d.ts.map +1 -1
- package/dist/karaoke/rendering/glossyBarRenderer.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeLyrics.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeNoteParsing.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeSettings.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeTimelineRenderer.d.ts.map +1 -1
- package/dist/karaoke/rendering/karaokeTimelineTypes.d.ts.map +1 -1
- package/dist/lighting/NiceDMXTimeline.d.ts +226 -0
- package/dist/lighting/NiceDMXTimeline.d.ts.map +1 -0
- package/dist/models/index.d.ts +16 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/modelsAiVideo.d.ts.map +1 -1
- package/dist/player/GenericPlayer.d.ts +34 -1
- package/dist/player/GenericPlayer.d.ts.map +1 -1
- package/dist/playlist/GenericPlaylist.d.ts.map +1 -1
- package/dist/playlist/PlaylistBrowser.d.ts.map +1 -1
- package/dist/playlist/PlaylistImportWizard.d.ts +42 -0
- package/dist/playlist/PlaylistImportWizard.d.ts.map +1 -0
- package/dist/playlist/PlaylistList.d.ts.map +1 -1
- package/dist/radio/NiceRadioPlayer.d.ts +141 -0
- package/dist/radio/NiceRadioPlayer.d.ts.map +1 -0
- package/dist/streaming/NiceStreamingVisualizer.d.ts +86 -0
- package/dist/streaming/NiceStreamingVisualizer.d.ts.map +1 -0
- package/dist/streaming/NiceVoiceChatOverlay.d.ts +97 -0
- package/dist/streaming/NiceVoiceChatOverlay.d.ts.map +1 -0
- package/dist/streaming/index.d.ts +11 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/liveStreamManager.d.ts +194 -0
- package/dist/streaming/liveStreamManager.d.ts.map +1 -0
- package/dist/streaming/useLiveStream.d.ts +19 -0
- package/dist/streaming/useLiveStream.d.ts.map +1 -0
- package/dist/streaming/webrtcAudio.d.ts +111 -0
- package/dist/streaming/webrtcAudio.d.ts.map +1 -0
- package/dist/ui-audio.css +1 -1
- package/dist/utils/BaseStreamClient.d.ts.map +1 -1
- package/dist/utils/audioDragDrop.d.ts +72 -0
- package/dist/utils/audioDragDrop.d.ts.map +1 -0
- package/dist/utils/crepeStreaming.d.ts.map +1 -1
- package/dist/utils/index.d.ts +40 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/latencyEstimate.d.ts +1 -1
- package/dist/utils/latencyEstimate.d.ts.map +1 -1
- package/dist/utils/midiCCMapping.d.ts +93 -0
- package/dist/utils/midiCCMapping.d.ts.map +1 -0
- package/dist/utils/musicPlayerUtils.d.ts.map +1 -1
- package/dist/utils/pianoRollUtils.d.ts +58 -0
- package/dist/utils/pianoRollUtils.d.ts.map +1 -0
- package/dist/utils/sanitize.d.ts +24 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/shortcutManager.d.ts +81 -0
- package/dist/utils/shortcutManager.d.ts.map +1 -0
- package/dist/utils/undoRedoUtils.d.ts +45 -0
- package/dist/utils/undoRedoUtils.d.ts.map +1 -1
- package/dist/workers/audioWorkletProcessor.d.ts +92 -0
- package/dist/workers/audioWorkletProcessor.d.ts.map +1 -0
- package/dist/workers/useAudioWorklet.d.ts +82 -0
- package/dist/workers/useAudioWorklet.d.ts.map +1 -0
- package/dist/workers/useWorker.d.ts +1 -0
- package/dist/workers/useWorker.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undoRedoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/undoRedoUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,YAAY,GAAG,IAAI,EAC5B,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,EAClE,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,EAClE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,QAKxE;AAED,wBAAgB,UAAU,CACtB,OAAO,EAAE,YAAY,GAAG,IAAI,EAC5B,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,EAClE,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,EAClE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,QASxE;AAED,wBAAgB,UAAU,CACtB,OAAO,EAAE,YAAY,GAAG,IAAI,EAC5B,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,EAClE,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,EAClE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,QASxE"}
|
|
1
|
+
{"version":3,"file":"undoRedoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/undoRedoUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AudioWorklet Processor — Replaces deprecated ScriptProcessorNode.
|
|
3
|
+
*
|
|
4
|
+
* This file contains the AudioWorkletProcessor classes that run in the
|
|
5
|
+
* audio rendering thread for low-latency, glitch-free audio processing.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* 1. Register processor: audioContext.audioWorklet.addModule('audioWorkletProcessor.js')
|
|
9
|
+
* 2. Create node: new AudioWorkletNode(audioContext, 'nice-processor')
|
|
10
|
+
*
|
|
11
|
+
* Note: This code runs in AudioWorkletGlobalScope, not the main thread.
|
|
12
|
+
*/
|
|
13
|
+
export interface AudioWorkletMessage {
|
|
14
|
+
type: string;
|
|
15
|
+
payload?: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface ProcessorOptions {
|
|
18
|
+
/** FFT size for frequency analysis. */
|
|
19
|
+
fftSize?: number;
|
|
20
|
+
/** Smoothing factor for frequency data (0-1). */
|
|
21
|
+
smoothingTimeConstant?: number;
|
|
22
|
+
/** Enable pitch detection. */
|
|
23
|
+
enablePitchDetection?: boolean;
|
|
24
|
+
/** Enable beat detection. */
|
|
25
|
+
enableBeatDetection?: boolean;
|
|
26
|
+
/** Enable RMS level metering. */
|
|
27
|
+
enableLevelMeter?: boolean;
|
|
28
|
+
/** Threshold for beat detection (0-1). */
|
|
29
|
+
beatThreshold?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface AudioAnalysisResult {
|
|
32
|
+
/** RMS level (0-1). */
|
|
33
|
+
rms: number;
|
|
34
|
+
/** Peak level (0-1). */
|
|
35
|
+
peak: number;
|
|
36
|
+
/** Detected pitch in Hz (0 if not detected). */
|
|
37
|
+
pitch: number;
|
|
38
|
+
/** Pitch confidence (0-1). */
|
|
39
|
+
pitchConfidence: number;
|
|
40
|
+
/** Beat detected this frame. */
|
|
41
|
+
beatDetected: boolean;
|
|
42
|
+
/** Frequency data (Uint8Array as regular array for transfer). */
|
|
43
|
+
frequencyData?: number[];
|
|
44
|
+
/** Time domain data. */
|
|
45
|
+
timeDomainData?: number[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns the AudioWorkletProcessor code as a string that can be loaded
|
|
49
|
+
* via Blob URL when audioWorklet.addModule() is called.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getAudioWorkletProcessorCode(): string;
|
|
52
|
+
/**
|
|
53
|
+
* Load AudioWorklet module into AudioContext.
|
|
54
|
+
* Call this once before creating AudioWorkletNodes.
|
|
55
|
+
*/
|
|
56
|
+
export declare function loadAudioWorkletModule(audioContext: AudioContext): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Create NiceAudioProcessor node for audio analysis.
|
|
59
|
+
*/
|
|
60
|
+
export declare function createAnalyserNode(audioContext: AudioContext, options?: ProcessorOptions, onAnalysis?: (result: AudioAnalysisResult) => void): AudioWorkletNode;
|
|
61
|
+
/**
|
|
62
|
+
* Create NiceGainProcessor node for volume control.
|
|
63
|
+
*/
|
|
64
|
+
export declare function createGainNode(audioContext: AudioContext, initialGain?: number): AudioWorkletNode;
|
|
65
|
+
/**
|
|
66
|
+
* Create NiceCompressorProcessor node for dynamics.
|
|
67
|
+
*/
|
|
68
|
+
export declare function createCompressorNode(audioContext: AudioContext, options?: {
|
|
69
|
+
threshold?: number;
|
|
70
|
+
ratio?: number;
|
|
71
|
+
attack?: number;
|
|
72
|
+
release?: number;
|
|
73
|
+
makeupGain?: number;
|
|
74
|
+
}): AudioWorkletNode;
|
|
75
|
+
/**
|
|
76
|
+
* Create NiceVocoderProcessor node for voice effects.
|
|
77
|
+
*/
|
|
78
|
+
export declare function createVocoderNode(audioContext: AudioContext, options?: {
|
|
79
|
+
pitchShift?: number;
|
|
80
|
+
formantShift?: number;
|
|
81
|
+
mix?: number;
|
|
82
|
+
}): AudioWorkletNode;
|
|
83
|
+
declare const _default: {
|
|
84
|
+
loadAudioWorkletModule: typeof loadAudioWorkletModule;
|
|
85
|
+
createAnalyserNode: typeof createAnalyserNode;
|
|
86
|
+
createGainNode: typeof createGainNode;
|
|
87
|
+
createCompressorNode: typeof createCompressorNode;
|
|
88
|
+
createVocoderNode: typeof createVocoderNode;
|
|
89
|
+
getAudioWorkletProcessorCode: typeof getAudioWorkletProcessorCode;
|
|
90
|
+
};
|
|
91
|
+
export default _default;
|
|
92
|
+
//# sourceMappingURL=audioWorkletProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioWorkletProcessor.d.ts","sourceRoot":"","sources":["../../src/workers/audioWorkletProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,8BAA8B;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6BAA6B;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAChC,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,wBAAwB;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAmBD;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAkVrD;AASD;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtF;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAC9B,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,gBAAgB,EAC1B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GACnD,gBAAgB,CAclB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,SAAM,GAAG,gBAAgB,CAI9F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GACF,gBAAgB,CAQlB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE;IACN,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,GACF,gBAAgB,CAMlB;;;;;;;;;AAED,wBAOE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ProcessorOptions, AudioAnalysisResult } from './audioWorkletProcessor';
|
|
2
|
+
export interface UseAudioWorkletOptions {
|
|
3
|
+
/** Enable audio analysis (pitch, beat, levels). */
|
|
4
|
+
enableAnalysis?: boolean;
|
|
5
|
+
/** Analysis processor options. */
|
|
6
|
+
analysisOptions?: ProcessorOptions;
|
|
7
|
+
/** Enable gain control. */
|
|
8
|
+
enableGain?: boolean;
|
|
9
|
+
/** Initial gain value (0-2). */
|
|
10
|
+
initialGain?: number;
|
|
11
|
+
/** Enable compressor. */
|
|
12
|
+
enableCompressor?: boolean;
|
|
13
|
+
/** Compressor settings. */
|
|
14
|
+
compressorOptions?: {
|
|
15
|
+
threshold?: number;
|
|
16
|
+
ratio?: number;
|
|
17
|
+
attack?: number;
|
|
18
|
+
release?: number;
|
|
19
|
+
makeupGain?: number;
|
|
20
|
+
};
|
|
21
|
+
/** Enable vocoder/pitch shift. */
|
|
22
|
+
enableVocoder?: boolean;
|
|
23
|
+
/** Vocoder settings. */
|
|
24
|
+
vocoderOptions?: {
|
|
25
|
+
pitchShift?: number;
|
|
26
|
+
formantShift?: number;
|
|
27
|
+
mix?: number;
|
|
28
|
+
};
|
|
29
|
+
/** Callback for analysis results. */
|
|
30
|
+
onAnalysis?: (result: AudioAnalysisResult) => void;
|
|
31
|
+
}
|
|
32
|
+
export interface UseAudioWorkletReturn {
|
|
33
|
+
/** Whether the worklet module is loaded and ready. */
|
|
34
|
+
isReady: boolean;
|
|
35
|
+
/** Error if worklet failed to load. */
|
|
36
|
+
error: Error | null;
|
|
37
|
+
/** Current audio analysis results. */
|
|
38
|
+
analysis: AudioAnalysisResult | null;
|
|
39
|
+
/** Connect source to worklet chain. */
|
|
40
|
+
connectSource: (source: AudioNode) => void;
|
|
41
|
+
/** Disconnect source from worklet chain. */
|
|
42
|
+
disconnectSource: () => void;
|
|
43
|
+
/** Get the final output node to connect to destination. */
|
|
44
|
+
getOutputNode: () => AudioNode | null;
|
|
45
|
+
/** Set gain value (if enableGain is true). */
|
|
46
|
+
setGain: (value: number) => void;
|
|
47
|
+
/** Set compressor parameter (if enableCompressor is true). */
|
|
48
|
+
setCompressorParam: (param: 'threshold' | 'ratio' | 'attack' | 'release' | 'makeupGain', value: number) => void;
|
|
49
|
+
/** Set vocoder parameter (if enableVocoder is true). */
|
|
50
|
+
setVocoderParam: (param: 'pitchShift' | 'formantShift' | 'mix', value: number) => void;
|
|
51
|
+
/** Audio context being used. */
|
|
52
|
+
audioContext: AudioContext | null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* React hook for AudioWorklet-based audio processing.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```tsx
|
|
59
|
+
* function AudioProcessor() {
|
|
60
|
+
* const { isReady, analysis, connectSource, setGain } = useAudioWorklet({
|
|
61
|
+
* enableAnalysis: true,
|
|
62
|
+
* enableGain: true,
|
|
63
|
+
* onAnalysis: (result) => console.log('RMS:', result.rms),
|
|
64
|
+
* });
|
|
65
|
+
*
|
|
66
|
+
* // Connect microphone
|
|
67
|
+
* useEffect(() => {
|
|
68
|
+
* if (!isReady) return;
|
|
69
|
+
* navigator.mediaDevices.getUserMedia({ audio: true })
|
|
70
|
+
* .then(stream => {
|
|
71
|
+
* const source = audioContext.createMediaStreamSource(stream);
|
|
72
|
+
* connectSource(source);
|
|
73
|
+
* });
|
|
74
|
+
* }, [isReady]);
|
|
75
|
+
*
|
|
76
|
+
* return <div>RMS: {analysis?.rms.toFixed(3)}</div>;
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function useAudioWorklet(options?: UseAudioWorkletOptions): UseAudioWorkletReturn;
|
|
81
|
+
export default useAudioWorklet;
|
|
82
|
+
//# sourceMappingURL=useAudioWorklet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAudioWorklet.d.ts","sourceRoot":"","sources":["../../src/workers/useAudioWorklet.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAMH,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EAC3B,MAAM,yBAAyB,CAAC;AAMjC,MAAM,WAAW,sBAAsB;IACnC,mDAAmD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kCAAkC;IAClC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,2BAA2B;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2BAA2B;IAC3B,iBAAiB,CAAC,EAAE;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,kCAAkC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wBAAwB;IACxB,cAAc,CAAC,EAAE;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,qCAAqC;IACrC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,qBAAqB;IAClC,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,sCAAsC;IACtC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,uCAAuC;IACvC,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAC3C,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,2DAA2D;IAC3D,aAAa,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;IACtC,8CAA8C;IAC9C,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,8DAA8D;IAC9D,kBAAkB,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChH,wDAAwD;IACxD,eAAe,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvF,gCAAgC;IAChC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CACrC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,qBAAqB,CA+K3F;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* - Lazily creates the worker on first call
|
|
4
4
|
* - Auto-terminates on unmount
|
|
5
5
|
* - Returns an `invoke(data)` function that returns a promise
|
|
6
|
+
* - Graceful error recovery: rejects pending promises and recreates the worker
|
|
6
7
|
*/
|
|
7
8
|
export declare function useWorker<Req extends {
|
|
8
9
|
id: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWorker.d.ts","sourceRoot":"","sources":["../../src/workers/useWorker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useWorker.d.ts","sourceRoot":"","sources":["../../src/workers/useWorker.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC9E,OAAO,EAAE,MAAM,MAAM,UA6CZ,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,YAAY,EAAE,KAAG,OAAO,CAAC,GAAG,CAAC,CAYxE"}
|
package/package.json
CHANGED