// @stago/sdk - Module SDK // ========== Module Platform (Elysia Plugin) ========== export type { ModuleDb, ModuleLogger, ModuleDeps, ModulePluginFactory, ModuleRequestUser, ModuleApp } from './platform/index.js'; export { success, fail, createModuleApp, MODULE_USER_HEADER, encodeModuleRequestUser, attachModuleRequestUserHeader, } from './platform/index.js'; // ========== Module Configuration ========== // Export module configuration types and validation export { ModuleConfigSchema, validateModuleConfig, createMinimalModuleConfig, isValidModuleName, isValidModuleVersion, defineModule, type ModuleConfig, type ValidatedModuleConfig, type MenuConfig, type ValidatedMenuConfig, type MenuItemConfig, type ValidatedMenuItemConfig, type FederationConfig, type ValidatedFederationConfig, type ApiConfig, type ValidatedApiConfig, type DataBindingConfig, type ValidatedDataBindingConfig, // New simplified types type StagoModuleConfig, type ModuleMenu, type ModuleMenuItem, type ModuleApi, type ModuleClient, type SharedDependency, } from './module-config.js'; // ========== Module Context ========== // Export module context for MF integration export { ModuleProvider, useModule, useIsInModuleContext, useHostCurrentPath, type ModuleContext, type ModuleUser, type ModuleTheme, type ModuleRouter, type ModuleNotifications, type ModuleGlobalState, type PlatformServices, type HttpClient, type HttpOptions, type HttpQuery, type HttpQueryValue, type HttpResponseKind, type ModuleStorage, type AppConfig, HttpError, } from './module-context.js'; // ========== Module Hooks ========== // Export convenience hooks export { useUser, useTheme, useRouter, useNotifications, useGlobalState, useGlobalStateValue, useStorage, useConfig, useModuleRequest, type ModuleRequestInit, } from './hooks/useModule.js'; // Module API path helpers (Host + dev + remote) export { MODULE_HANDLER_API_PREFIX, normalizeModuleApiPath, joinModuleApiPath, resolveModuleApiBaseUrl, resolveModuleRouteBase, type ModuleApiResult, } from './module-api-path.js'; export { normalizeModulePageUrl } from './module-page-url.js'; export { AuditIdentityError, AuditValidationError, createRequestAudit, normalizeBusinessAuditEvent, type AuditJsonValue, type BusinessAuditEvent, type BusinessAuditRecord, type BusinessAuditSink, type RequestAudit, } from './business-audit.js'; // Database query logging (dev + production platform) export { createModuleDb, type ModuleDbClientQuery, type ModuleDbTxConnection, type CreateModuleDbOptions, } from './module-db.js' // 模块 SQL 通用安全规则(dev 与生产 sandbox 共用) export { assertModuleSqlAllowed } from './sql-guard.js' export { normalizeModulePath, modulePathFromMenuKey, resolveModuleMenuPath, findModuleMenuSelection, findStaticMenuSelection, type MenuTreeNodeLike, } from './menu-tree.js'; export { createLoggedDbQuery, createLoggedPoolQuery, formatRunnableSql, formatSqlParam, isSqlLogEnabled, type DbQueryFn, type DbQueryExecutor, type LoggedDbQueryOptions, type SqlLogEvent, } from './db-query.js'; export { annotateModuleSql, detectSqlAction, formatBeijingIso, formatCommentUserId, resolveDatabaseUser, shortModuleName, type ModuleSqlCommentContext, type SqlAction, } from './sql-comment.js'; // sql-comment-context(AsyncLocalStorage)仅给 Node 的 createDevModuleApp 用, // 不得从根入口导出,否则 Vite/MF 会把 async_hooks 打进浏览器包。 // ========== Logto(平台换票约定) ========== export { STAGO_LOGTO_API_RESOURCE } from './logto-constants.js';