@archon-inc/sdk
Version:
Integrate easily to our government platform using this SDK. More info on https://archon.inc/sdk
109 lines (103 loc) • 3.08 kB
text/typescript
import { ARID } from "./policy.js";
import { Session, User, UserId } from "./user.js";
/**
* The outcome of a log event. Should always be populated.
*/
export enum Outcome {
/**
* The event is unfolding at the time that you create the log entry.
*/
IN_PROGRESS = "IN_PROGRESS",
/**
* The event has completed successfully.
*/
SUCCESS = "SUCCESS",
/**
* The event has completed unsuccessfully.
*/
FAILURE = "FAILURE",
/**
* The event has completed. For events that don't fit into SUCCESS or FAILURE.
*/
COMPLETED = "COMPLETED"
}
/**
* Options for logging an event. Should always be populated, since outcome is always required.
*/
export interface LogOptions {
/**
* The outcome of the event that you're logging.
*/
outcome: Outcome;
/**
* The severity of the event that you're logging.
*
* Think: Will this cause system disruption? How severe?
* Will default to INFO if not provided.
*/
severity?: Severity;
/**
* The resources associated with/affected by the event that you're logging.
* Should be populated any time resources are in scope.
*/
associatedResources?: ARID[];
/**
* The users associated with/affected by the event that you're logging.
* Should be populated any time users are in scope.
*/
associatedUsers?: User[] | UserId[];
/**
* The session of the user associated with the event that you're logging.
* Should be populated any time a user session is in scope.
*/
session?: Session;
/**
* Additional context to include with the log message.
*/
context?: string;
/**
* Privileged information to include with the log message. Should include
* things like stack traces, PII (that isn't covered by other fields), etc.
*/
sensitiveContext?: string;
/**
* The type of event that you're logging.
*/
eventType: EventType;
}
/**
* The type of event that you're logging. Should be defined by you in
* your code.
*/
export type EventType = string & { __brand: "EventType" };
/**
* The severity of the event that you're logging
*/
export enum Severity {
/**
* Only interesting to developers. Causes no disruption and represents no deviation.
*/
DEBUG = 0,
/**
* Informational messages that highlight the progress of the application at coarse-grained level.
*/
INFO = 1,
/**
* Normal but significant events. (i.e. user accesses a privileged location)
*/
NOTICE = 2,
/**
* Exceptional occurrences that are not errors. (i.e. user attempts to access a privileged location but is denied)
*/
WARNING = 3,
/**
* Occurrences that do not require immediate action but should typically be logged and monitored.
* Will flag for human review but not immediate action.
*/
ERROR = 4,
/**
* Critical conditions. (i.e. application component unavailable)
* Will page a human to address the issue.
*/
CRITICAL = 5
}