@chirpier/chirpier-js 0.1.6 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/constants.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  // constants.ts
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DEFAULT_API_ENDPOINT = exports.MAX_QUEUE_SIZE = exports.DEFAULT_FLUSH_DELAY = exports.DEFAULT_BATCH_SIZE = exports.DEFAULT_TIMEOUT = exports.DEFAULT_RETRIES = void 0;
4
+ exports.DEFAULT_SERVICER_ENDPOINT = exports.DEFAULT_API_ENDPOINT = exports.MAX_QUEUE_SIZE = exports.DEFAULT_FLUSH_DELAY = exports.DEFAULT_BATCH_SIZE = exports.DEFAULT_TIMEOUT = exports.DEFAULT_RETRIES = void 0;
5
5
  exports.DEFAULT_RETRIES = 15;
6
6
  exports.DEFAULT_TIMEOUT = 5000;
7
- exports.DEFAULT_BATCH_SIZE = 350;
7
+ exports.DEFAULT_BATCH_SIZE = 500;
8
8
  exports.DEFAULT_FLUSH_DELAY = 500;
9
- exports.MAX_QUEUE_SIZE = 50000;
10
- exports.DEFAULT_API_ENDPOINT = "https://eu-west.chirpier.co/v1.0/events";
9
+ exports.MAX_QUEUE_SIZE = 5000;
10
+ exports.DEFAULT_API_ENDPOINT = "https://logs.chirpier.co/v1.0/logs";
11
+ exports.DEFAULT_SERVICER_ENDPOINT = "https://api.chirpier.co/v1.0";
package/dist/index.d.ts CHANGED
@@ -1,81 +1,154 @@
1
- export declare enum LogLevel {
1
+ export declare const enum LogLevel {
2
2
  None = 0,
3
3
  Error = 1,
4
4
  Info = 2,
5
5
  Debug = 3
6
6
  }
7
- interface Options {
8
- key: string;
9
- region?: "us-west" | "eu-west" | "asia-southeast";
7
+ export interface Config {
8
+ key?: string;
9
+ apiEndpoint?: string;
10
+ servicerEndpoint?: string;
10
11
  logLevel?: LogLevel;
12
+ retries?: number;
13
+ timeout?: number;
14
+ batchSize?: number;
15
+ flushDelay?: number;
16
+ /** @deprecated Queues are unbounded in memory. */
17
+ maxQueueSize?: number;
11
18
  }
12
- export interface Event {
13
- group_id: string;
14
- stream_name: string;
19
+ /**
20
+ * @deprecated Use Config.
21
+ */
22
+ export type Options = Config;
23
+ export interface Log {
24
+ log_id?: string;
25
+ agent?: string;
26
+ event: string;
15
27
  value: number;
28
+ meta?: unknown;
29
+ occurred_at?: string | Date;
30
+ }
31
+ export interface Event {
32
+ readonly event_id: string;
33
+ readonly agent?: string;
34
+ readonly event: string;
35
+ readonly title?: string;
36
+ readonly public: boolean;
37
+ readonly description?: string;
38
+ readonly unit?: string;
39
+ readonly timezone: string;
40
+ readonly created_at?: string;
41
+ }
42
+ export interface Policy {
43
+ readonly policy_id: string;
44
+ readonly event_id: string;
45
+ readonly title: string;
46
+ readonly description?: string;
47
+ readonly channel: string;
48
+ readonly period: string;
49
+ readonly aggregate: string;
50
+ readonly condition: string;
51
+ readonly threshold: number;
52
+ readonly severity: string;
53
+ readonly enabled: boolean;
54
+ }
55
+ export interface Alert {
56
+ readonly alert_id: string;
57
+ readonly policy_id: string;
58
+ readonly event_id: string;
59
+ readonly agent?: string;
60
+ readonly event: string;
61
+ readonly title: string;
62
+ readonly period: string;
63
+ readonly aggregate: string;
64
+ readonly condition: string;
65
+ readonly threshold: number;
66
+ readonly severity: string;
67
+ readonly status: string;
68
+ readonly value: number;
69
+ readonly count: number;
70
+ readonly min: number;
71
+ readonly max: number;
72
+ readonly triggered_at?: string;
73
+ readonly acknowledged_at?: string;
74
+ readonly resolved_at?: string;
75
+ }
76
+ export interface AlertDelivery {
77
+ readonly attempt_id: string;
78
+ readonly alert_id: string;
79
+ readonly webhook_id?: string;
80
+ readonly channel: string;
81
+ readonly target: string;
82
+ readonly status: string;
83
+ readonly response_status?: number;
84
+ readonly error_message?: string;
85
+ readonly created_at: string;
16
86
  }
87
+ export interface EventLogPoint {
88
+ readonly event_id: string;
89
+ readonly agent?: string;
90
+ readonly event: string;
91
+ readonly period: string;
92
+ readonly occurred_at: string;
93
+ readonly count: number;
94
+ readonly value: number;
95
+ readonly squares: number;
96
+ readonly min: number;
97
+ readonly max: number;
98
+ }
99
+ export interface PaginationOptions {
100
+ period?: "minute" | "hour" | "day";
101
+ limit?: number;
102
+ offset?: number;
103
+ }
104
+ export type DeliveryKind = "alert" | "test" | "all";
17
105
  export declare class ChirpierError extends Error {
18
- constructor(message: string);
106
+ readonly code?: string | undefined;
107
+ constructor(message: string, code?: string | undefined);
19
108
  }
20
- /**
21
- * Main Chirpier class for monitoring events.
22
- */
23
- export declare class Chirpier {
24
- private static instance;
109
+ export declare class Client {
25
110
  private readonly apiKey;
26
111
  private readonly apiEndpoint;
112
+ private readonly servicerEndpoint;
27
113
  private readonly retries;
28
114
  private readonly timeout;
29
115
  private readonly axiosInstance;
30
- private eventQueue;
116
+ private logQueue;
31
117
  private readonly batchSize;
32
118
  private readonly flushDelay;
33
119
  private flushTimeoutId;
34
120
  private readonly queueLock;
35
121
  private readonly flushLock;
36
122
  private readonly logLevel;
37
- /**
38
- * Initializes a new instance of the Chirpier class.
39
- * @param options - Configuration options for the SDK.
40
- */
41
- private constructor();
42
- /**
43
- * Gets the singleton instance of Chirpier, creating it if it doesn't exist.
44
- * @param options - Configuration options for the SDK.
45
- * @returns The Chirpier instance.
46
- */
47
- static getInstance(options: Options): Chirpier | null;
48
- /**
49
- * Validates the event structure.
50
- * @param event - The event to validate.
51
- * @returns True if valid, false otherwise.
52
- */
53
- private isValidEvent;
54
- /**
55
- * Monitors an event by adding it to the queue and scheduling a flush if necessary.
56
- * @param event - The event to monitor.
57
- */
58
- monitor(event: Event): Promise<void>;
59
- /**
60
- * Flushes the event queue by sending all events to the API.
61
- */
123
+ constructor(options?: Config);
124
+ private isValidLog;
125
+ private normalizeLog;
126
+ log(log: Log): Promise<void>;
62
127
  private flushQueue;
63
- /**
64
- * Sends multiple events to the API in a batch.
65
- * @param events - The array of events to send.
66
- */
67
- private sendEvents;
68
- static stop(): Promise<void>;
128
+ private sendLogs;
129
+ flush(): Promise<void>;
130
+ shutdown(): Promise<void>;
131
+ close(): Promise<void>;
132
+ listEvents(): Promise<Event[]>;
133
+ getEvent(eventID: string): Promise<Event>;
134
+ updateEvent(eventID: string, payload: Partial<Omit<Event, "event_id" | "created_at">>): Promise<Event>;
135
+ listPolicies(): Promise<Policy[]>;
136
+ createPolicy(payload: Omit<Policy, "policy_id">): Promise<Policy>;
137
+ listAlerts(status?: string): Promise<Alert[]>;
138
+ getAlertDeliveries(alertID: string, options?: {
139
+ limit?: number;
140
+ offset?: number;
141
+ kind?: DeliveryKind;
142
+ }): Promise<AlertDelivery[]>;
143
+ acknowledgeAlert(alertID: string): Promise<Alert>;
144
+ archiveAlert(alertID: string): Promise<Alert>;
145
+ testWebhook(webhookID: string): Promise<void>;
146
+ getEventLogs(eventID: string, options?: PaginationOptions): Promise<EventLogPoint[]>;
147
+ resolveAlert(alertID: string): Promise<Alert>;
69
148
  }
70
- /**
71
- * Initializes the Chirpier SDK.
72
- * @param options - Configuration options for the SDK.
73
- */
74
- export declare function initialize(options: Options): void;
75
- /**
76
- * Monitors an event using the Chirpier SDK.
77
- * @param event - The event to monitor.
78
- */
79
- export declare function monitor(event: Event): void;
80
- export {};
149
+ export declare function createClient(config?: Config): Client;
150
+ export declare function initialize(options?: Config): void;
151
+ export declare function logEvent(log: Log): Promise<void>;
152
+ export declare function stop(): Promise<void>;
153
+ export declare function flush(): Promise<void>;
81
154
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAGD,UAAU,OAAO;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC;IAClD,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAGD,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAK5B;AAQD;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAEvB;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAEvB;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAEpC;;;OAGG;IACH,OAAO;IAyDP;;;;OAIG;WACW,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI;IAO5D;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAapB;;;OAGG;IACU,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjD;;OAEG;YACW,UAAU;IA8DxB;;;OAGG;YACW,UAAU;WAKJ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAa1C;AAsCD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsBjD;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAW1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}