1#![doc = include_str!("../README.md")]
13#![forbid(unsafe_code)]
14
15mod admin;
16mod config;
17mod csv;
18mod email;
19mod events;
20mod harness;
21mod http;
22mod lint;
23mod logging;
24mod module;
25mod ports;
26mod problem;
27mod problems;
28mod rate_limit;
29mod scope;
30mod sidecar;
31mod signer;
32mod surface;
33mod template;
34mod venture;
35
36pub use admin::{bearer_token, constant_time_eq, require_admin};
37pub use config::{Config, ConfigError, EmptyConfig, HarnessConfig, MapConfig, ModuleConfig};
38pub use csv::{FORMULA_PREFIXES, escape as csv_escape, row as csv_row};
39pub use email::{
40 MAX_EMAIL_BYTES, MAX_LOCAL_BYTES, invalid_email_problem, is_valid,
41 normalize as normalize_email, validation_error,
42};
43pub use events::{AnyError, EventBus, EventHandler, EventName};
44pub use harness::{Harness, HarnessBuilder, Runtime};
45pub use http::{Form, Json, MAX_BODY_BYTES, X_REQUEST_ID, rate_limited, request_id_is_valid};
46pub use lint::{card_data_hit, lint_card_data, lint_portable_sql};
47pub use logging::{
48 RedactingVisitor, is_email_field, is_secret_field, redacted_value, subject_hash,
49};
50pub use module::{
51 BoxFuture, HARNESS_API, Migrations, Module, ModuleContext, SqlMigration, harness_api_mismatch,
52 migration_checksum, migration_edited,
53};
54pub use ports::{
55 Blob, BlobError, BlobObject, Captcha, CaptchaError, Clock, Database, DbError, Decision, Defer,
56 DispatchError, Dispatcher, HttpClient, HttpError, IdGen, KeyValue, Kid, KvError, MailError,
57 Mailer, Message, NoopDefer, Payload, Port, Ports, RateLimitError, RateLimiter, Row, Rows,
58 ScopedBlob, SendOutcome, SignatureError, Signer, Statement, SystemClock, TryFromValue,
59 UlidIdGen, Verdict, timeout,
60};
61pub use problem::Problem;
62pub use problems::{ProblemDef, SLUGS, registry as problem_registry};
63pub use rate_limit::{client_ip, rate_limit_keys};
64pub use scope::Scope;
65pub use sidecar::{HARNESS_SIDECARS, SidecarMount, SidecarMounts, X_HARNESS_API, X_HARNESS_MODULE};
66pub use signer::{HmacSigner, MIN_SECRET_BYTES, SignerError};
67pub use surface::{
68 Action, Audience, Column, HINT_KEYWORDS, ModuleSurface, Outcome, RenderedSurface, SURFACE_API,
69 Surface, SurfaceDocument, SurfaceSource, UiContext, UiMount, VentureSurface, View, hint_field,
70 schema_for,
71};
72pub use template::{Rendered, Template, TemplateError, TemplateRegistry};
73pub use venture::{Brand, Venture, VentureEnv};