70 lines
2.9 KiB
TypeScript
70 lines
2.9 KiB
TypeScript
import type { NoteFlowAPI } from '../../interface';
|
|
import type { TauriInvoke, TauriListen } from './types';
|
|
import { createDedupedInvoke, DEDUP_TTL_MS } from '@/lib/request/deduped-invoke';
|
|
import { createAnalyticsApi } from './sections/analytics';
|
|
import { createAnnotationApi } from './sections/annotations';
|
|
import { createAppsApi } from './sections/apps';
|
|
import { createAsrApi } from './sections/asr';
|
|
import { createAudioApi } from './sections/audio';
|
|
import { createCalendarApi } from './sections/calendar';
|
|
import { createCoreApi } from './sections/core';
|
|
import { createDiarizationApi } from './sections/diarization';
|
|
import { createEntityApi } from './sections/entities';
|
|
import { createExportApi } from './sections/exporting';
|
|
import { createIntegrationApi } from './sections/integrations';
|
|
import { createMeetingApi } from './sections/meetings';
|
|
import { createObservabilityApi } from './sections/observability';
|
|
import { createOidcApi } from './sections/oidc';
|
|
import { createPlaybackApi } from './sections/playback';
|
|
import { createPreferencesApi } from './sections/preferences';
|
|
import { createProjectApi } from './sections/projects';
|
|
import { createSummarizationApi } from './sections/summarization';
|
|
import { createTaskApi } from './sections/tasks';
|
|
import { createTriggerApi } from './sections/triggers';
|
|
import { createWebhookApi } from './sections/webhooks';
|
|
|
|
export const DEFAULT_DEDUP_WINDOW_MS = DEDUP_TTL_MS;
|
|
|
|
/**
|
|
* Creates a Tauri API adapter instance with request deduplication.
|
|
*
|
|
* Duplicate requests (same command + args) within the dedup window
|
|
* share the same Promise, preventing redundant work and improving performance.
|
|
*
|
|
* @param invoke - Tauri invoke function
|
|
* @param listen - Tauri listen function
|
|
* @param dedupWindow - Dedup window in milliseconds (default: 5000ms)
|
|
* @returns NoteFlowAPI instance with deduplication enabled
|
|
*/
|
|
export function createTauriAPI(
|
|
invoke: TauriInvoke,
|
|
listen: TauriListen,
|
|
dedupWindow: number = DEFAULT_DEDUP_WINDOW_MS
|
|
): NoteFlowAPI {
|
|
const dedupedInvoke = createDedupedInvoke(invoke, dedupWindow);
|
|
|
|
return {
|
|
...createCoreApi(dedupedInvoke),
|
|
...createProjectApi(dedupedInvoke),
|
|
...createMeetingApi(dedupedInvoke, listen),
|
|
...createSummarizationApi(dedupedInvoke),
|
|
...createAsrApi(dedupedInvoke),
|
|
...createAnnotationApi(dedupedInvoke),
|
|
...createExportApi(dedupedInvoke),
|
|
...createPlaybackApi(dedupedInvoke),
|
|
...createDiarizationApi(dedupedInvoke),
|
|
...createPreferencesApi(dedupedInvoke),
|
|
...createAudioApi(dedupedInvoke),
|
|
...createAppsApi(dedupedInvoke),
|
|
...createTriggerApi(dedupedInvoke),
|
|
...createEntityApi(dedupedInvoke),
|
|
...createCalendarApi(dedupedInvoke),
|
|
...createWebhookApi(dedupedInvoke),
|
|
...createIntegrationApi(dedupedInvoke),
|
|
...createObservabilityApi(dedupedInvoke),
|
|
...createOidcApi(dedupedInvoke),
|
|
...createTaskApi(dedupedInvoke),
|
|
...createAnalyticsApi(dedupedInvoke),
|
|
};
|
|
}
|