muddle/index.ts
2026-10-23 08:53:07 -04:00

237 lines
6.5 KiB
TypeScript

// Contracts
export type {
AdapterOptions,
MuddleConfig,
CollectionConfig,
CollectionEntry,
ContentSchema,
DatabaseOptions,
Integration,
IntegrationContext,
MountableViews,
Mounts,
Loader,
LoaderFile,
LoadedFile,
PrerenderOptions as PrerenderConfig,
ResolvedConfig,
} from "./contracts/index.ts";
export { defineConfig } from "./contracts/index.ts";
export type {
HttpMethod,
HttpRequest,
HttpResponse,
RequestContext,
ResponseBuilder,
StatusCode,
} from "./contracts/typegen/http/index.ts";
export type {
ColumnMapping,
FieldOptions,
FieldType,
TableClass,
TableOptions,
WhereCondition,
WhereOperator,
} from "./contracts/typegen/orm/index.ts";
export type {
TableName,
TableRowOf,
TableRows,
} from "./contracts/typegen/orm/tables.ts";
export type {
ViewPath,
ViewProps,
ViewPropsOf,
} from "./contracts/typegen/views.ts";
export type { Minify, Simplify } from "./contracts/typegen/minify.ts";
// Core
export { App, type AppOptions, type ViewRenderer } from "./core/app.ts";
export {
Container,
type AbstractType,
type ProviderDefinition,
type ProviderScope,
type Token,
type Type,
} from "./core/container.ts";
export { resolveConfig, loadConfig } from "./core/config.ts";
export { ServerBuildContext, TemplateContext } from "./core/context.ts";
export { MemorySessionStore, type SessionStore, type SessionRecord } from "./core/sessions.ts";
export { RoutePipeline, type RouteGuard } from "./core/pipeline.ts";
export { format } from "./core/format.ts";
export { createTemplate, muddleTemplates, type MuddleTemplate, type TemplateResult } from "./core/templates.ts";
export {
MuddleError,
RouteNotFoundError,
SchemaError,
TemplateError,
UnknownProviderError,
} from "./core/errors.ts";
export {
createRequestContext,
html,
json,
notFound,
redirect,
parseQuery,
parseRequestBody,
text,
} from "./core/http.ts";
export {
defineMetadata,
getMetadata,
getMemberMetadata,
installMetadataPolyfill,
} from "./core/metadata.ts";
export { ModuleRegistry, type ModuleContext } from "./core/modules.ts";
export {
Router,
type RouteDefinition,
type RouteMatch,
type ViewDescriptor,
} from "./core/router.ts";
export {
redirectWithMessage,
toFormFields,
validate,
type FormSchema,
type ValidationResult,
} from "./core/form.ts";
export {
ContentRegistry,
ContentService,
validateFrontmatter,
} from "./core/content.ts";
// Decorators
export { Component, getComponentMetadata } from "./decorators/Component.ts";
export { Controller, getControllerPrefix } from "./decorators/Controller.ts";
export { Inject, Optional } from "./decorators/Inject.ts";
export { Injectable, Module, getModuleOptions } from "./decorators/Module.ts";
export {
Body,
Form,
Locals,
Param,
Query,
Req,
Res,
} from "./decorators/Params.ts";
export { Route, getRoutes } from "./decorators/Route.ts";
export { Service } from "./decorators/Service.ts";
export { View, getViews } from "./decorators/View.ts";
export { RenderAhead, getRenderAhead, type RenderAheadSource } from "./decorators/RenderAhead.ts";
export { RenderRoute, getRenderRoutes, routeFolder, collectionRoute, type CollectionRenderRoute, type RenderRouteSource } from "./decorators/RenderRoute.ts";
export { Astro, type AstroOptions } from "./decorators/Astro.ts";
export { Auth, getAuth, type AuthOptions } from "./decorators/Auth.ts";
// Views
export {
createViews,
ViewBuilder,
Views,
type SpugComponentOptions,
type RenderOptions,
type RenderResult,
type ViewsOptions,
} from "./views/api.ts";
export {
defineComponent,
type ComponentContext,
type ComponentDefinition,
type ComponentRegistry,
type ServerComponent,
type SpugComponentRender,
} from "./views/components.ts";
export { compileCss, stcssLoader, sassLoader, styleTag, type SassLoaderOptions } from "./views/css/index.ts";
export { analyzeReactComponent, backportProject, cssToStcss, detectBackportSource, htmlToSpug, reactToSpug, type BackportResult, type BackportSource, type ReactHookAnalysis } from "./core/backport.ts";
export {
markdownLoader,
parseFrontmatter,
renderLatex,
renderMarkdown,
type Frontmatter,
} from "./views/markdown.ts";
export {
TemplateEngine,
helpers,
mergeBlocks,
type CompiledTemplate,
type RenderContext,
type TemplateRuntime,
} from "./views/engine/runtime.ts";
export { SPUG_COMPLETIONS, STCSS_COMPLETIONS, type LanguageCompletion } from "./views/language.ts";
export { stage, StageManager, type KeyframeStep, type ScrollSceneOptions, type TransitionPortalOptions } from "./views/stage.ts";
export {
createHooks,
defineHooks,
MuddleHooks,
type HookBuilder,
type SpugExpansion,
type SpugHookContext,
type StcssAtRuleExpansion,
type StcssAtRuleHookContext,
type StcssCalculationExpansion,
type StcssCalculationHookContext,
type StcssDeclarationExpansion,
type StcssDeclarationHookContext,
type StcssValueExpansion,
type StcssValueHookContext,
} from "./views/hooks.ts";
export { filesystemCache, cloudflareCache, type Cache, type CloudflareCacheLike } from "./core/cache.ts";
// Adapters
export { serve, type BunServerOptions } from "./adapters/server-bun.ts";
export {
createWorker,
setupWrangler,
type WorkerEnv,
type WranglerSetupOptions,
} from "./adapters/cloudflare-wrangler.ts";
export { createHandler, setupVercel, type NodeHandler } from "./adapters/vercel-vercel.ts";
export {
prerender,
type PrerenderOptions,
type PrerenderResult,
} from "./adapters/static.ts";
export { predictLayout, type BreakpointAcc, type LayoutPrediction, type LayoutPredictionOptions, type ReflectiveAnchorGroup } from "./adapters/prediction.ts";
// Integrations
export {
checkboxMarkup,
mouseTrackerMarkup,
mouseTrackerCss,
reactCss,
reactIntegration,
reactStylesheet,
STATES,
type ReactIntegrationOptions,
type TrackerOptions,
} from "./integrations/react.ts";
export { concentric, layoutHooks, type Utility, type UtilityContext } from "./integrations/hooks.ts";
export { googleFonts, type GoogleFontsOptions } from "./integrations/fonts.ts";
export { responsivityIntegration, DEFAULT_BREAKPOINTS, type ResponsivityOptions } from "./integrations/responsivity.ts";
export { authIntegration, authFromRequest, authGuard, type AuthIdentity, type OAuthProvider, type AuthIntegrationOptions } from "./integrations/auth.ts";
// Testing
export {
collectTemplateTests,
readAssertions,
runTemplateTests,
type TemplateTest,
type TemplateTestFailure,
type TemplateTestOptions,
type TemplateTestRun,
} from "./views/testing.ts";
// Type generation
export {
generate,
readConfig,
type GeneratorOptions,
type GeneratorResult,
type ViewContract,
} from "./contracts/typegen/generator.ts";