Files
XCDesktop/api/modules/index.ts

85 lines
2.4 KiB
TypeScript
Raw Normal View History

2026-03-08 01:34:54 +08:00
import type { ApiModule } from '../infra/types.js'
async function discoverModules(): Promise<ApiModule[]> {
return await getStaticModules()
}
async function getStaticModules(): Promise<ApiModule[]> {
2026-03-08 01:34:54 +08:00
const modules: ApiModule[] = []
try {
const { createTodoModule } = await import('./todo/index.js')
modules.push(createTodoModule())
} catch (e) {
console.warn('[ModuleLoader] Failed to load todo module:', e)
}
try {
const { createTimeTrackingModule } = await import('./time-tracking/index.js')
modules.push(createTimeTrackingModule())
} catch (e) {
console.warn('[ModuleLoader] Failed to load time-tracking module:', e)
}
try {
const { createRecycleBinModule } = await import('./recycle-bin/index.js')
modules.push(createRecycleBinModule())
} catch (e) {
console.warn('[ModuleLoader] Failed to load recycle-bin module:', e)
}
2026-03-08 01:34:54 +08:00
try {
const { createPyDemosModule } = await import('./pydemos/index.js')
modules.push(createPyDemosModule())
} catch (e) {
console.warn('[ModuleLoader] Failed to load pydemos module:', e)
}
2026-03-08 01:34:54 +08:00
try {
const { createDocumentParserModule } = await import('./document-parser/index.js')
modules.push(createDocumentParserModule())
} catch (e) {
console.warn('[ModuleLoader] Failed to load document-parser module:', e)
}
2026-03-08 01:34:54 +08:00
try {
const { createAiModule } = await import('./ai/index.js')
modules.push(createAiModule())
} catch (e) {
console.warn('[ModuleLoader] Failed to load ai module:', e)
}
2026-03-08 01:34:54 +08:00
try {
const { createRemoteModule } = await import('./remote/index.js')
modules.push(createRemoteModule())
} catch (e) {
console.warn('[ModuleLoader] Failed to load remote module:', e)
2026-03-08 01:34:54 +08:00
}
try {
const { createOpencodeModule } = await import('./opencode/index.js')
modules.push(createOpencodeModule())
} catch (e) {
console.warn('[ModuleLoader] Failed to load opencode module:', e)
}
2026-03-08 01:34:54 +08:00
modules.sort((a, b) => {
const orderA = a.metadata.order ?? 0
const orderB = b.metadata.order ?? 0
return orderA - orderB
})
return modules
}
export const apiModules: ApiModule[] = await discoverModules()
export * from './todo/index.js'
export * from './time-tracking/index.js'
export * from './recycle-bin/index.js'
export * from './pydemos/index.js'
export * from './document-parser/index.js'
export * from './ai/index.js'
export * from './remote/index.js'
export * from './opencode/index.js'