import { registerHomeRoutes } from './home.js'
import { registerIdentityRoutes } from './identity.js'
import { registerAdminRoutes } from './admin.js'
import { registerAdminApiRoutes } from './admin-api.js'
import { registerRepoRoutes } from './repos.js'
import { registerRepoViewerRoutes } from './repo-viewer.js'
import { registerSearchRoutes } from './search.js'
import { registerAccountMergeRoutes } from './account-merge.js'
import { registerIssueRoutes } from './issues.js'
import { registerGitRoutes } from './git.js'
import { registerInviteRoutes } from './invites-api.js'
import { registerDeployRoutes } from './deploy.js'
import { registerLinkingRoutes } from './linking.js'
import { registerNamespaceRoutes } from './namespaces.js'
import { registerRegistryRoutes } from './registry.js'
import { registerFederationRoutes } from './federation.js'
import { registerPeerRoutes } from './peer.js'
import { registerNpmRegistryRoutes } from './npm-registry.js'
import { registerAccessRoutes } from './access.js'
import { registerArchiveRoutes } from './archive.js'
import { registerBootstrapRoutes } from './bootstrap.js'
/**
* Register all routes on the given router.
*
* Order matters — more specific routes must come before generic ones.
* See inline comments for ordering rationale.
*/
export function registerAllRoutes (router, opts = {}) {
const { headless = false, gitReposPath } = opts
// Web UI routes (skip in headless mode)
if (!headless) {
registerHomeRoutes(router) // /, /profile
registerAdminRoutes(router) // /admin/* pages
}
// Bootstrap script (always available, even headless)
registerBootstrapRoutes(router)
// Auth API routes
registerIdentityRoutes(router)
registerAccountMergeRoutes(router)
// Admin API routes
registerAdminApiRoutes(router)
// Invite API routes (P2P peer access)
registerInviteRoutes(router)
// Deploy routes (Pear app deployment)
registerDeployRoutes(router)
// Peer routes (unified server peering — must come before federation)
registerPeerRoutes(router)
// Federation routes (server-to-server linking — legacy, kept for compat)
registerFederationRoutes(router)
// Access routes (grant/invite management)
registerAccessRoutes(router)
// P2P Registry routes (must come before namespace routes)
registerRegistryRoutes(router)
// Namespace routes (groups, /groups pages)
registerNamespaceRoutes(router)
// Linking routes (Autobase collaboration)
registerLinkingRoutes(router)
// Private npm registry (serves @holepunchto packages from holepunchto-deps repo)
registerNpmRegistryRoutes(router, { gitReposPath })
// Issue routes (must come before repo routes due to pattern overlap)
registerIssueRoutes(router)
// Archive routes (release downloads — must come before git routes)
registerArchiveRoutes(router)
// Git protocol routes (must come before repo routes)
registerGitRoutes(router)
// Search routes
registerSearchRoutes(router)
// Repo routes (most generic patterns — must be last)
registerRepoRoutes(router)
registerRepoViewerRoutes(router)
}