900. The parts bin
Every block in every crate, one line each, sorted by the itch it scratches. The chapters tell the story; this is the inventory for the day you already know the story and want the name.
I want to know what the application is
snapfire_fsr_plan::Manifest, the plan file: routes with their plan nodes, source rows, action rows and component rows, with the owner of each. Read at boot, written by the build.snapfire_fsr_service::Contract, the merged description of every service and type, withcheck_callandcheck_valuefor arguments and responses.snapfire_fsr_cli::buildandwrite, the build as a library, which is what abuild.rscalls.snapfire_fsr_cli::Reportandsnapfire_fsr::Report, the table the build and the host print.snapfire_fsr_plan::Manifest::namespacedandsnapfire_fsr_service::Contract::namespaced, the plan file and the contract as a site's, every id prefixed with its name.snapfire_fsr_cli::ShellContract,generated/shell.json, what a site is built against.snapfire_fsr_host::MountandHostBuilder::mount, a site's artifact mounted under its prefix;Host::reload, the tables swapped in place.snapfire_fsr_sites::mount_all,resolve,hash_dirandwatch, the[sites]table resolved, hashed, mounted and reread.
I want to describe a service
snapfire_fsr_service::import, an OpenAPI document into a contract plus the HTTP routes each method needs.snapfire_fsr_service::import_proto, a.protointo a contract plus the descriptors and method paths a gRPC call needs, compiled without protoc.snapfire_fsr_lower::read_schemaandread_session_defaults, the application's own interfaces and the session's defaults, fromschemas/.
I want to call a service
snapfire_fsr_service::Services, the registry: contract, interceptor chain, one transport per service or a default.bindgives a request its handle.HttpTransport,GrpcTransport,LocalTransport,MockTransport, the four transports: over the wire, over the wire in protobuf, in process by function, canned with a recording of every call.TraceInterceptor,IdentityInterceptor,CredentialInterceptor, the three that ship;InterceptorandNextto write another.CallandCredentials, what an interceptor sees, including the custody a body never does.
I want to write or run a body
snapfire_fsr_lower::lower_loaderandlower_actions, TypeScript in, IR out or aResiduewith the line.snapfire_fsr_ir::Expr,Stmt,Body, the IR itself, JSON-serialisable;Builtinis the fixed list of pure functions.snapfire_fsr_ir::Interpreter, runs a body against aRequestCtx;evaluateandapplyfor one expression or one lambda with no request.IrSourceandIrAction, a lowered body as aDataSourceor anActionHandler.snapfire_fsr_runtime::DataSourceandActionHandler, the traits a Rust body implements to answer a name.
I want to render
snapfire_fsr_core::Node, the payload tree: text, raw markup, a sequence, a client island with optional server markup, a pending slot.snapfire_fsr_core::PlanNode, one route's plan: module, data source, children by slot, deferral, fallback and error modules, cache key.snapfire_fsr_runtime::Evaluator, module and props in, chunks of nodes out;NullEvaluatoremits an island with no markup;Evaluatorsdispatches by module.snapfire_fsr_ir::IrEvaluator, renders lowered components in Rust;TmplandComponentare what it renders.snapfire_fsr_lower::component::ComponentSet, lowers a page and everything it renders.snapfire_fsr_tera, a Tera instance withisland,slotandheadfunctions, so a template is an evaluator.snapfire_fsr_host::shell::DocumentShell, the stock document: head, import map, stylesheets, entry script.snapfire_fsr_runtime::Runtimeandassemble, the assembler: match, resolve, load, evaluate, stitch, withNodeCachefor subtrees,MemoryCache,FibreCacheandNoCacheas implementations andSegmentKeyerfor navigation identity.snapfire_fsr_payload::html_serializeand the row encoding, the tree as HTML and as the wire form the client reads.snapfire_fsr_runtime::html_streamandwire_stream, the same with deferred slots streamed in.
I want to serve
snapfire_fsr_host::HostandHostBuilder, configuration in, a service over HTTP types out;route,source,action, each with an_override,evaluator,shell,services_over,session_store.snapfire_fsr_host::Config,Deployment,Located, the configuration ladder and what it resolved.snapfire_fsr_host::actix::serve, the shim that mounts the host in actix;Host::servefor hyper.snapfire_fsr::AppandAppBuilder, the binding layer under the host, for a host of your own.snapfire_fsr::Routes, plan-file routes plus Rust ones, refusing a pattern claimed twice.snapfire_fsr_runtime::MatchitMatcherandTableResolver, pattern to entry, entry to plan.
I want a session or an identity
snapfire_fsr_session::Sessions, open before matching, persist at the response;SessionConfigfor the cookie name, TTL andSecure.SessionStoreandMemorySessionStore, the store trait and the stock bounded, expiring one.HmacCodec, the signed cookie.TokenCell, custody: the tokens a body cannot reach.snapfire_fsr_runtime::SessionCellandIdentity, what a body sees.snapfire_fsr_auth::IdentityProvider,beginandcallback;DevProviderfor development;Auththe facade.
I want the browser to do its part
@snapfire/fsr-client:bootandregisterIslandto mount islands, hydrating over server markup;enableNavigation,navigateandrefreshfor segment-preserving navigation;actionandActionFailurefor calling actions by id;parsePayloadandrenderSegmentfor the wire form.@snapfire/fsr-client/react, the React mounter.@snapfire/fsr-authoring,Ctx,ActionCtx,actionandfail, the types a body is written against, projected per application intogenerated/fsr.ts.
I want to test
snapfire_fsr_lower::testing::lower_tests, a*.test.tsinto steps;snapfire_fsr_cli::test::run, the replay.MockTransportwithreturnsandcalls, for route tests over a host with no backend.Host::render_to_string,Host::call_actionandHost::handle, a route, an action or a whole request without a socket.
I want the tools
fsr build,fsr check,fsr dev,fsr serve,fsr test,fsr add,fsr types, the commands, all thin fronts over the library.snapfire_fsr_cli::dev, the watch loop;serve, the stock host over an app with no Rust beside it;vendor,typesandxwpm, the dependency side.snapfire_fsr_lower::ALIASES, the five import prefixes, the same table the tsconfigs get.- snapfirec, the TypeScript and CSS compiler, with
pathsfor aliases,--import-mapfor externals and--public-pathfor the preload manifest.