@riddance/host 0.0.12 → 0.0.14

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/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright © 2022 The Riddance Authors (see git commits)
1
+ Copyright © 2022-2024 The Riddance Authors (see git commits)
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the “Software”), to deal
package/context.d.ts CHANGED
@@ -1,86 +1,86 @@
1
- export type Environment = {
2
- readonly [key: string]: string;
3
- };
4
- export type Logger = {
5
- enrich(fields: object): Logger;
6
- trace(message: string, error?: unknown, fields?: object): void;
7
- debug(message: string, error?: unknown, fields?: object): void;
8
- info(message: string, error?: unknown, fields?: object): void;
9
- warn(message: string, error?: unknown, fields?: object): void;
10
- error(message: string, error?: unknown, fields?: object): void;
11
- fatal(message: string, error?: unknown, fields?: object): void;
12
- };
13
- export type AbortSignal = {
14
- aborted: boolean;
15
- addEventListener: (type: 'abort', listener: (this: AbortSignal, event: unknown) => unknown, options?: {
16
- capture?: boolean;
17
- once?: boolean;
18
- passive?: boolean;
19
- }) => void;
20
- removeEventListener: (type: 'abort', listener: (this: AbortSignal, event: unknown) => unknown, options?: {
21
- capture?: boolean;
22
- }) => void;
23
- };
24
- export type MutableJson = null | boolean | number | string | MutableJson[] | {
25
- [key: string]: MutableJson;
26
- };
27
- export type Json = null | boolean | number | string | readonly Json[] | {
28
- readonly [key: string]: Json;
29
- };
30
- export declare function objectSpreadable(json?: Json): {
31
- readonly [key: string]: Json;
32
- };
33
- export declare function arraySpreadable(json?: Json): readonly Json[];
34
- export type HandlerConfiguration = {
35
- /**
36
- * An indication of CPU usage of the handler.
37
- * @default 'low'
38
- */
39
- readonly compute?: 'high' | 'low';
40
- /**
41
- * An indication of memory usage of the handler.
42
- * @default 'low'
43
- */
44
- readonly memory?: 'high' | 'low';
45
- /**
46
- * A boolean indicating whether to enrich the log with the body of events, requests or responses. Set to false if the body is large or contain very sensitive data.
47
- * @default false
48
- */
49
- readonly excludeBodyFromLogs?: boolean;
50
- /**
51
- * The level below which log entries will be discarded.
52
- * @default 'trace'
53
- */
54
- readonly minimumLogLevel?: 'trace' | 'debug' | 'info' | 'warning' | 'error' | 'fatal';
55
- /**
56
- * The number of seconds the function is expected to finish executing in.
57
- */
58
- readonly timeout?: number;
59
- };
60
- export type Context = {
61
- readonly env: Environment;
62
- readonly log: Logger;
63
- readonly signal: AbortSignal;
64
- now(): Date;
65
- readonly operationId?: string;
66
- readonly client?: {
67
- readonly id?: string;
68
- readonly ip?: string;
69
- readonly port?: number;
70
- readonly userAgent?: string;
71
- };
72
- readonly meta?: {
73
- readonly packageName: string;
74
- readonly fileName: string;
75
- readonly revision?: string;
76
- };
77
- emit(topic: string, type: string, subject: string, data?: Json, messageId?: string): void;
78
- eventBarrier(): Promise<void>;
79
- onSuccess(fn: () => Promise<void> | void): void;
80
- };
81
- export declare function httpRequestHeaders(context: Context): {
82
- [key: string]: string;
83
- };
84
- export declare function measure<T>(logger: {
85
- trace: (message: string, _: undefined, f: object) => void;
86
- }, name: string, fn: () => Promise<T> | T, fields?: object): Promise<T>;
1
+ export type Environment = {
2
+ readonly [key: string]: string;
3
+ };
4
+ export type Logger = {
5
+ enrich(fields: object): Logger;
6
+ trace(message: string, error?: unknown, fields?: object): void;
7
+ debug(message: string, error?: unknown, fields?: object): void;
8
+ info(message: string, error?: unknown, fields?: object): void;
9
+ warn(message: string, error?: unknown, fields?: object): void;
10
+ error(message: string, error?: unknown, fields?: object): void;
11
+ fatal(message: string, error?: unknown, fields?: object): void;
12
+ };
13
+ export type AbortSignal = {
14
+ aborted: boolean;
15
+ addEventListener: (type: 'abort', listener: (this: AbortSignal, event: unknown) => unknown, options?: {
16
+ capture?: boolean;
17
+ once?: boolean;
18
+ passive?: boolean;
19
+ }) => void;
20
+ removeEventListener: (type: 'abort', listener: (this: AbortSignal, event: unknown) => unknown, options?: {
21
+ capture?: boolean;
22
+ }) => void;
23
+ };
24
+ export type MutableJson = null | boolean | number | string | MutableJson[] | {
25
+ [key: string]: MutableJson;
26
+ };
27
+ export type Json = null | boolean | number | string | readonly Json[] | {
28
+ readonly [key: string]: Json;
29
+ };
30
+ export declare function objectSpreadable(json?: Json): {
31
+ readonly [key: string]: Json;
32
+ };
33
+ export declare function arraySpreadable(json?: Json): readonly Json[];
34
+ export type HandlerConfiguration = {
35
+ /**
36
+ * An indication of CPU usage of the handler.
37
+ * @default 'low'
38
+ */
39
+ readonly compute?: 'high' | 'low';
40
+ /**
41
+ * An indication of memory usage of the handler.
42
+ * @default 'low'
43
+ */
44
+ readonly memory?: 'high' | 'low';
45
+ /**
46
+ * A boolean indicating whether to enrich the log with the body of events, requests or responses. Set to false if the body is large or contain very sensitive data.
47
+ * @default false
48
+ */
49
+ readonly excludeBodyFromLogs?: boolean;
50
+ /**
51
+ * The level below which log entries will be discarded.
52
+ * @default 'trace'
53
+ */
54
+ readonly minimumLogLevel?: 'trace' | 'debug' | 'info' | 'warning' | 'error' | 'fatal';
55
+ /**
56
+ * The number of seconds the function is expected to finish executing in.
57
+ */
58
+ readonly timeout?: number;
59
+ };
60
+ export type Context = {
61
+ readonly env: Environment;
62
+ readonly log: Logger;
63
+ readonly signal: AbortSignal;
64
+ now(): Date;
65
+ readonly operationId?: string;
66
+ readonly client?: {
67
+ readonly id?: string;
68
+ readonly ip?: string;
69
+ readonly port?: number;
70
+ readonly userAgent?: string;
71
+ };
72
+ readonly meta?: {
73
+ readonly packageName: string;
74
+ readonly fileName: string;
75
+ readonly revision?: string;
76
+ };
77
+ emit(topic: string, type: string, subject: string, data?: Json, messageId?: string): void;
78
+ eventBarrier(): Promise<void>;
79
+ onSuccess(fn: () => Promise<void> | void): void;
80
+ };
81
+ export declare function httpRequestHeaders(context: Context): {
82
+ [key: string]: string;
83
+ };
84
+ export declare function measure<T>(logger: {
85
+ trace: (message: string, _: undefined, f: object) => void;
86
+ }, name: string, fn: () => Promise<T> | T, fields?: object): Promise<T>;
package/context.js CHANGED
@@ -1,52 +1,52 @@
1
- import { performance } from 'perf_hooks';
2
- import { highPrecisionISODate } from './host/logging.js';
3
- /*@__INLINE__*/
4
- export function objectSpreadable(json) {
5
- if (!json) {
6
- return {};
7
- }
8
- return json;
9
- }
10
- /*@__INLINE__*/
11
- export function arraySpreadable(json) {
12
- if (!Array.isArray(json)) {
13
- return [];
14
- }
15
- return json;
16
- }
17
- export function httpRequestHeaders(context) {
18
- const headers = {
19
- 'user-agent': `${context.meta?.packageName ?? '?'}/${context.meta?.revision ?? '?'}`,
20
- };
21
- if (context.operationId) {
22
- headers['x-request-id'] = context.operationId;
23
- }
24
- if (context.client) {
25
- if (context.client.id) {
26
- headers['x-client-id'] = context.client.id;
27
- }
28
- if (context.client.ip || context.client.port) {
29
- headers['x-forwarded-for'] = `${context.client.ip ?? ''}:${context.client.port ?? ''}`;
30
- }
31
- if (context.client.userAgent) {
32
- headers['x-forwarded-for-user-agent'] = context.client.userAgent;
33
- }
34
- }
35
- return headers;
36
- }
37
- export async function measure(logger, name, fn, fields) {
38
- const start = performance.now();
39
- try {
40
- return await fn();
41
- }
42
- finally {
43
- const end = performance.now();
44
- logger.trace(`Measurement of ${name} time`, undefined, {
45
- start: highPrecisionISODate(start),
46
- end: highPrecisionISODate(end),
47
- duration: (Math.round(end * 10000) - Math.round(start * 10000)) / 10000,
48
- ...fields,
49
- });
50
- }
51
- }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQStDeEQsZUFBZTtBQUNmLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFXO0lBQ3hDLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDUCxPQUFPLEVBQUUsQ0FBQTtLQUNaO0lBQ0QsT0FBTyxJQUFtRCxDQUFBO0FBQzlELENBQUM7QUFFRCxlQUFlO0FBQ2YsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFXO0lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sRUFBRSxDQUFBO0tBQ1o7SUFDRCxPQUFPLElBQXVCLENBQUE7QUFDbEMsQ0FBQztBQXNERCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZ0I7SUFDL0MsTUFBTSxPQUFPLEdBQThCO1FBQ3ZDLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxHQUFHLEVBQUU7S0FDdkYsQ0FBQTtJQUNELElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtRQUNyQixPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQTtLQUNoRDtJQUNELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNoQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtTQUM3QztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDMUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUE7U0FDekY7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQzFCLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFBO1NBQ25FO0tBQ0o7SUFDRCxPQUFPLE9BQU8sQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQ3pCLE1BQXFFLEVBQ3JFLElBQVksRUFDWixFQUF3QixFQUN4QixNQUFlO0lBRWYsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQy9CLElBQUk7UUFDQSxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUE7S0FDcEI7WUFBUztRQUNOLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDbkQsS0FBSyxFQUFFLG9CQUFvQixDQUFDLEtBQUssQ0FBQztZQUNsQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSztZQUN2RSxHQUFHLE1BQU07U0FDWixDQUFDLENBQUE7S0FDTDtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwZXJmb3JtYW5jZSB9IGZyb20gJ3BlcmZfaG9va3MnXG5pbXBvcnQgeyBoaWdoUHJlY2lzaW9uSVNPRGF0ZSB9IGZyb20gJy4vaG9zdC9sb2dnaW5nLmpzJ1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9IHtcbiAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2VyID0ge1xuICAgIGVucmljaChmaWVsZHM6IG9iamVjdCk6IExvZ2dlclxuICAgIHRyYWNlKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgZGVidWcobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbiAgICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogb2JqZWN0KTogdm9pZFxuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgQWJvcnRTaWduYWwgPSB7XG4gICAgYWJvcnRlZDogYm9vbGVhblxuXG4gICAgYWRkRXZlbnRMaXN0ZW5lcjogKFxuICAgICAgICB0eXBlOiAnYWJvcnQnLFxuICAgICAgICBsaXN0ZW5lcjogKHRoaXM6IEFib3J0U2lnbmFsLCBldmVudDogdW5rbm93bikgPT4gdW5rbm93bixcbiAgICAgICAgb3B0aW9ucz86IHsgY2FwdHVyZT86IGJvb2xlYW47IG9uY2U/OiBib29sZWFuOyBwYXNzaXZlPzogYm9vbGVhbiB9LFxuICAgICkgPT4gdm9pZFxuXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKFxuICAgICAgICB0eXBlOiAnYWJvcnQnLFxuICAgICAgICBsaXN0ZW5lcjogKHRoaXM6IEFib3J0U2lnbmFsLCBldmVudDogdW5rbm93bikgPT4gdW5rbm93bixcbiAgICAgICAgb3B0aW9ucz86IHsgY2FwdHVyZT86IGJvb2xlYW4gfSxcbiAgICApID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgTXV0YWJsZUpzb24gPVxuICAgIHwgbnVsbFxuICAgIHwgYm9vbGVhblxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8IE11dGFibGVKc29uW11cbiAgICB8IHsgW2tleTogc3RyaW5nXTogTXV0YWJsZUpzb24gfVxuZXhwb3J0IHR5cGUgSnNvbiA9XG4gICAgfCBudWxsXG4gICAgfCBib29sZWFuXG4gICAgfCBudW1iZXJcbiAgICB8IHN0cmluZ1xuICAgIHwgcmVhZG9ubHkgSnNvbltdXG4gICAgfCB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb24gfVxuXG4vKkBfX0lOTElORV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RTcHJlYWRhYmxlKGpzb24/OiBKc29uKTogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uIH0ge1xuICAgIGlmICghanNvbikge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9XG4gICAgcmV0dXJuIGpzb24gYXMgdW5rbm93biBhcyB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb24gfVxufVxuXG4vKkBfX0lOTElORV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVNwcmVhZGFibGUoanNvbj86IEpzb24pOiByZWFkb25seSBKc29uW10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgcmV0dXJuIGpzb24gYXMgcmVhZG9ubHkgSnNvbltdXG59XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXJDb25maWd1cmF0aW9uID0ge1xuICAgIC8qKlxuICAgICAqIEFuIGluZGljYXRpb24gb2YgQ1BVIHVzYWdlIG9mIHRoZSBoYW5kbGVyLlxuICAgICAqIEBkZWZhdWx0ICdsb3cnXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29tcHV0ZT86ICdoaWdoJyB8ICdsb3cnXG4gICAgLyoqXG4gICAgICogQW4gaW5kaWNhdGlvbiBvZiBtZW1vcnkgdXNhZ2Ugb2YgdGhlIGhhbmRsZXIuXG4gICAgICogQGRlZmF1bHQgJ2xvdydcbiAgICAgKi9cbiAgICByZWFkb25seSBtZW1vcnk/OiAnaGlnaCcgfCAnbG93J1xuICAgIC8qKlxuICAgICAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW5yaWNoIHRoZSBsb2cgd2l0aCB0aGUgYm9keSBvZiBldmVudHMsIHJlcXVlc3RzIG9yIHJlc3BvbnNlcy4gU2V0IHRvIGZhbHNlIGlmIHRoZSBib2R5IGlzIGxhcmdlIG9yIGNvbnRhaW4gdmVyeSBzZW5zaXRpdmUgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4Y2x1ZGVCb2R5RnJvbUxvZ3M/OiBib29sZWFuXG4gICAgLyoqXG4gICAgICogVGhlIGxldmVsIGJlbG93IHdoaWNoIGxvZyBlbnRyaWVzIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqIEBkZWZhdWx0ICd0cmFjZSdcbiAgICAgKi9cbiAgICByZWFkb25seSBtaW5pbXVtTG9nTGV2ZWw/OiAndHJhY2UnIHwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZmF0YWwnXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIHRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBmaW5pc2ggZXhlY3V0aW5nIGluLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dCA9IHtcbiAgICByZWFkb25seSBlbnY6IEVudmlyb25tZW50XG4gICAgcmVhZG9ubHkgbG9nOiBMb2dnZXJcbiAgICByZWFkb25seSBzaWduYWw6IEFib3J0U2lnbmFsXG4gICAgbm93KCk6IERhdGVcblxuICAgIHJlYWRvbmx5IG9wZXJhdGlvbklkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2xpZW50Pzoge1xuICAgICAgICByZWFkb25seSBpZD86IHN0cmluZ1xuICAgICAgICByZWFkb25seSBpcD86IHN0cmluZ1xuICAgICAgICByZWFkb25seSBwb3J0PzogbnVtYmVyXG4gICAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudD86IHN0cmluZ1xuICAgIH1cbiAgICByZWFkb25seSBtZXRhPzoge1xuICAgICAgICByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nXG4gICAgICAgIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgcmV2aXNpb24/OiBzdHJpbmdcbiAgICB9XG5cbiAgICBlbWl0KHRvcGljOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgc3ViamVjdDogc3RyaW5nLCBkYXRhPzogSnNvbiwgbWVzc2FnZUlkPzogc3RyaW5nKTogdm9pZFxuICAgIGV2ZW50QmFycmllcigpOiBQcm9taXNlPHZvaWQ+XG5cbiAgICBvblN1Y2Nlc3MoZm46ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkKTogdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHR0cFJlcXVlc3RIZWFkZXJzKGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICBjb25zdCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAndXNlci1hZ2VudCc6IGAke2NvbnRleHQubWV0YT8ucGFja2FnZU5hbWUgPz8gJz8nfS8ke2NvbnRleHQubWV0YT8ucmV2aXNpb24gPz8gJz8nfWAsXG4gICAgfVxuICAgIGlmIChjb250ZXh0Lm9wZXJhdGlvbklkKSB7XG4gICAgICAgIGhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddID0gY29udGV4dC5vcGVyYXRpb25JZFxuICAgIH1cbiAgICBpZiAoY29udGV4dC5jbGllbnQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQuY2xpZW50LmlkKSB7XG4gICAgICAgICAgICBoZWFkZXJzWyd4LWNsaWVudC1pZCddID0gY29udGV4dC5jbGllbnQuaWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udGV4dC5jbGllbnQuaXAgfHwgY29udGV4dC5jbGllbnQucG9ydCkge1xuICAgICAgICAgICAgaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ10gPSBgJHtjb250ZXh0LmNsaWVudC5pcCA/PyAnJ306JHtjb250ZXh0LmNsaWVudC5wb3J0ID8/ICcnfWBcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udGV4dC5jbGllbnQudXNlckFnZW50KSB7XG4gICAgICAgICAgICBoZWFkZXJzWyd4LWZvcndhcmRlZC1mb3ItdXNlci1hZ2VudCddID0gY29udGV4dC5jbGllbnQudXNlckFnZW50XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1lYXN1cmU8VD4oXG4gICAgbG9nZ2VyOiB7IHRyYWNlOiAobWVzc2FnZTogc3RyaW5nLCBfOiB1bmRlZmluZWQsIGY6IG9iamVjdCkgPT4gdm9pZCB9LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBmbjogKCkgPT4gUHJvbWlzZTxUPiB8IFQsXG4gICAgZmllbGRzPzogb2JqZWN0LFxuKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKVxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmbigpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY29uc3QgZW5kID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICAgICAgbG9nZ2VyLnRyYWNlKGBNZWFzdXJlbWVudCBvZiAke25hbWV9IHRpbWVgLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIHN0YXJ0OiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShzdGFydCksXG4gICAgICAgICAgICBlbmQ6IGhpZ2hQcmVjaXNpb25JU09EYXRlKGVuZCksXG4gICAgICAgICAgICBkdXJhdGlvbjogKE1hdGgucm91bmQoZW5kICogMTAwMDApIC0gTWF0aC5yb3VuZChzdGFydCAqIDEwMDAwKSkgLyAxMDAwMCxcbiAgICAgICAgICAgIC4uLmZpZWxkcyxcbiAgICAgICAgfSlcbiAgICB9XG59XG4iXX0=
1
+ import { performance } from 'perf_hooks';
2
+ import { highPrecisionISODate } from './host/logging.js';
3
+ /*@__INLINE__*/
4
+ export function objectSpreadable(json) {
5
+ if (!json) {
6
+ return {};
7
+ }
8
+ return json;
9
+ }
10
+ /*@__INLINE__*/
11
+ export function arraySpreadable(json) {
12
+ if (!Array.isArray(json)) {
13
+ return [];
14
+ }
15
+ return json;
16
+ }
17
+ export function httpRequestHeaders(context) {
18
+ const headers = {
19
+ 'user-agent': `${context.meta?.packageName ?? '?'}/${context.meta?.revision ?? '?'}`,
20
+ };
21
+ if (context.operationId) {
22
+ headers['x-request-id'] = context.operationId;
23
+ }
24
+ if (context.client) {
25
+ if (context.client.id) {
26
+ headers['x-client-id'] = context.client.id;
27
+ }
28
+ if (!!context.client.ip || !!context.client.port) {
29
+ headers['x-forwarded-for'] = `${context.client.ip ?? ''}:${context.client.port ?? ''}`;
30
+ }
31
+ if (context.client.userAgent) {
32
+ headers['x-forwarded-for-user-agent'] = context.client.userAgent;
33
+ }
34
+ }
35
+ return headers;
36
+ }
37
+ export async function measure(logger, name, fn, fields) {
38
+ const start = performance.now();
39
+ try {
40
+ return await fn();
41
+ }
42
+ finally {
43
+ const end = performance.now();
44
+ logger.trace(`Measurement of ${name} time`, undefined, {
45
+ start: highPrecisionISODate(start),
46
+ end: highPrecisionISODate(end),
47
+ duration: (Math.round(end * 10000) - Math.round(start * 10000)) / 10000,
48
+ ...fields,
49
+ });
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQStDeEQsZUFBZTtBQUNmLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFXO0lBQ3hDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUNELE9BQU8sSUFBbUQsQ0FBQTtBQUM5RCxDQUFDO0FBRUQsZUFBZTtBQUNmLE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBVztJQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUNELE9BQU8sSUFBdUIsQ0FBQTtBQUNsQyxDQUFDO0FBc0RELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFnQjtJQUMvQyxNQUFNLE9BQU8sR0FBOEI7UUFDdkMsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLEdBQUcsRUFBRTtLQUN2RixDQUFBO0lBQ0QsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUE7SUFDakQsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFBO1FBQzFGLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLDRCQUE0QixDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUE7UUFDcEUsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQ3pCLE1BQXFFLEVBQ3JFLElBQVksRUFDWixFQUF3QixFQUN4QixNQUFlO0lBRWYsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQy9CLElBQUksQ0FBQztRQUNELE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQTtJQUNyQixDQUFDO1lBQVMsQ0FBQztRQUNQLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDbkQsS0FBSyxFQUFFLG9CQUFvQixDQUFDLEtBQUssQ0FBQztZQUNsQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSztZQUN2RSxHQUFHLE1BQU07U0FDWixDQUFDLENBQUE7SUFDTixDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBlcmZvcm1hbmNlIH0gZnJvbSAncGVyZl9ob29rcydcbmltcG9ydCB7IGhpZ2hQcmVjaXNpb25JU09EYXRlIH0gZnJvbSAnLi9ob3N0L2xvZ2dpbmcuanMnXG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50ID0ge1xuICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBMb2dnZXIgPSB7XG4gICAgZW5yaWNoKGZpZWxkczogb2JqZWN0KTogTG9nZ2VyXG4gICAgdHJhY2UobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbiAgICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogb2JqZWN0KTogdm9pZFxuICAgIGluZm8obWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbiAgICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbiAgICBmYXRhbChtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogb2JqZWN0KTogdm9pZFxufVxuXG5leHBvcnQgdHlwZSBBYm9ydFNpZ25hbCA9IHtcbiAgICBhYm9ydGVkOiBib29sZWFuXG5cbiAgICBhZGRFdmVudExpc3RlbmVyOiAoXG4gICAgICAgIHR5cGU6ICdhYm9ydCcsXG4gICAgICAgIGxpc3RlbmVyOiAodGhpczogQWJvcnRTaWduYWwsIGV2ZW50OiB1bmtub3duKSA9PiB1bmtub3duLFxuICAgICAgICBvcHRpb25zPzogeyBjYXB0dXJlPzogYm9vbGVhbjsgb25jZT86IGJvb2xlYW47IHBhc3NpdmU/OiBib29sZWFuIH0sXG4gICAgKSA9PiB2b2lkXG5cbiAgICByZW1vdmVFdmVudExpc3RlbmVyOiAoXG4gICAgICAgIHR5cGU6ICdhYm9ydCcsXG4gICAgICAgIGxpc3RlbmVyOiAodGhpczogQWJvcnRTaWduYWwsIGV2ZW50OiB1bmtub3duKSA9PiB1bmtub3duLFxuICAgICAgICBvcHRpb25zPzogeyBjYXB0dXJlPzogYm9vbGVhbiB9LFxuICAgICkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBNdXRhYmxlSnNvbiA9XG4gICAgfCBudWxsXG4gICAgfCBib29sZWFuXG4gICAgfCBudW1iZXJcbiAgICB8IHN0cmluZ1xuICAgIHwgTXV0YWJsZUpzb25bXVxuICAgIHwgeyBba2V5OiBzdHJpbmddOiBNdXRhYmxlSnNvbiB9XG5leHBvcnQgdHlwZSBKc29uID1cbiAgICB8IG51bGxcbiAgICB8IGJvb2xlYW5cbiAgICB8IG51bWJlclxuICAgIHwgc3RyaW5nXG4gICAgfCByZWFkb25seSBKc29uW11cbiAgICB8IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogSnNvbiB9XG5cbi8qQF9fSU5MSU5FX18qL1xuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFNwcmVhZGFibGUoanNvbj86IEpzb24pOiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb24gfSB7XG4gICAgaWYgKCFqc29uKSB7XG4gICAgICAgIHJldHVybiB7fVxuICAgIH1cbiAgICByZXR1cm4ganNvbiBhcyB1bmtub3duIGFzIHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogSnNvbiB9XG59XG5cbi8qQF9fSU5MSU5FX18qL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5U3ByZWFkYWJsZShqc29uPzogSnNvbik6IHJlYWRvbmx5IEpzb25bXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGpzb24pKSB7XG4gICAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgICByZXR1cm4ganNvbiBhcyByZWFkb25seSBKc29uW11cbn1cblxuZXhwb3J0IHR5cGUgSGFuZGxlckNvbmZpZ3VyYXRpb24gPSB7XG4gICAgLyoqXG4gICAgICogQW4gaW5kaWNhdGlvbiBvZiBDUFUgdXNhZ2Ugb2YgdGhlIGhhbmRsZXIuXG4gICAgICogQGRlZmF1bHQgJ2xvdydcbiAgICAgKi9cbiAgICByZWFkb25seSBjb21wdXRlPzogJ2hpZ2gnIHwgJ2xvdydcbiAgICAvKipcbiAgICAgKiBBbiBpbmRpY2F0aW9uIG9mIG1lbW9yeSB1c2FnZSBvZiB0aGUgaGFuZGxlci5cbiAgICAgKiBAZGVmYXVsdCAnbG93J1xuICAgICAqL1xuICAgIHJlYWRvbmx5IG1lbW9yeT86ICdoaWdoJyB8ICdsb3cnXG4gICAgLyoqXG4gICAgICogQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0byBlbnJpY2ggdGhlIGxvZyB3aXRoIHRoZSBib2R5IG9mIGV2ZW50cywgcmVxdWVzdHMgb3IgcmVzcG9uc2VzLiBTZXQgdG8gZmFsc2UgaWYgdGhlIGJvZHkgaXMgbGFyZ2Ugb3IgY29udGFpbiB2ZXJ5IHNlbnNpdGl2ZSBkYXRhLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXhjbHVkZUJvZHlGcm9tTG9ncz86IGJvb2xlYW5cbiAgICAvKipcbiAgICAgKiBUaGUgbGV2ZWwgYmVsb3cgd2hpY2ggbG9nIGVudHJpZXMgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICogQGRlZmF1bHQgJ3RyYWNlJ1xuICAgICAqL1xuICAgIHJlYWRvbmx5IG1pbmltdW1Mb2dMZXZlbD86ICd0cmFjZScgfCAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJyB8ICdmYXRhbCdcbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdGhlIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGZpbmlzaCBleGVjdXRpbmcgaW4uXG4gICAgICovXG4gICAgcmVhZG9ubHkgdGltZW91dD86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0ID0ge1xuICAgIHJlYWRvbmx5IGVudjogRW52aXJvbm1lbnRcbiAgICByZWFkb25seSBsb2c6IExvZ2dlclxuICAgIHJlYWRvbmx5IHNpZ25hbDogQWJvcnRTaWduYWxcbiAgICBub3coKTogRGF0ZVxuXG4gICAgcmVhZG9ubHkgb3BlcmF0aW9uSWQ/OiBzdHJpbmdcbiAgICByZWFkb25seSBjbGllbnQ/OiB7XG4gICAgICAgIHJlYWRvbmx5IGlkPzogc3RyaW5nXG4gICAgICAgIHJlYWRvbmx5IGlwPzogc3RyaW5nXG4gICAgICAgIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXJcbiAgICAgICAgcmVhZG9ubHkgdXNlckFnZW50Pzogc3RyaW5nXG4gICAgfVxuICAgIHJlYWRvbmx5IG1ldGE/OiB7XG4gICAgICAgIHJlYWRvbmx5IHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZ1xuICAgICAgICByZWFkb25seSByZXZpc2lvbj86IHN0cmluZ1xuICAgIH1cblxuICAgIGVtaXQodG9waWM6IHN0cmluZywgdHlwZTogc3RyaW5nLCBzdWJqZWN0OiBzdHJpbmcsIGRhdGE/OiBKc29uLCBtZXNzYWdlSWQ/OiBzdHJpbmcpOiB2b2lkXG4gICAgZXZlbnRCYXJyaWVyKCk6IFByb21pc2U8dm9pZD5cblxuICAgIG9uU3VjY2VzcyhmbjogKCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQpOiB2b2lkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodHRwUmVxdWVzdEhlYWRlcnMoY29udGV4dDogQ29udGV4dCkge1xuICAgIGNvbnN0IGhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAgICd1c2VyLWFnZW50JzogYCR7Y29udGV4dC5tZXRhPy5wYWNrYWdlTmFtZSA/PyAnPyd9LyR7Y29udGV4dC5tZXRhPy5yZXZpc2lvbiA/PyAnPyd9YCxcbiAgICB9XG4gICAgaWYgKGNvbnRleHQub3BlcmF0aW9uSWQpIHtcbiAgICAgICAgaGVhZGVyc1sneC1yZXF1ZXN0LWlkJ10gPSBjb250ZXh0Lm9wZXJhdGlvbklkXG4gICAgfVxuICAgIGlmIChjb250ZXh0LmNsaWVudCkge1xuICAgICAgICBpZiAoY29udGV4dC5jbGllbnQuaWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnNbJ3gtY2xpZW50LWlkJ10gPSBjb250ZXh0LmNsaWVudC5pZFxuICAgICAgICB9XG4gICAgICAgIGlmICghIWNvbnRleHQuY2xpZW50LmlwIHx8ICEhY29udGV4dC5jbGllbnQucG9ydCkge1xuICAgICAgICAgICAgaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ10gPSBgJHtjb250ZXh0LmNsaWVudC5pcCA/PyAnJ306JHtjb250ZXh0LmNsaWVudC5wb3J0ID8/ICcnfWBcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udGV4dC5jbGllbnQudXNlckFnZW50KSB7XG4gICAgICAgICAgICBoZWFkZXJzWyd4LWZvcndhcmRlZC1mb3ItdXNlci1hZ2VudCddID0gY29udGV4dC5jbGllbnQudXNlckFnZW50XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1lYXN1cmU8VD4oXG4gICAgbG9nZ2VyOiB7IHRyYWNlOiAobWVzc2FnZTogc3RyaW5nLCBfOiB1bmRlZmluZWQsIGY6IG9iamVjdCkgPT4gdm9pZCB9LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBmbjogKCkgPT4gUHJvbWlzZTxUPiB8IFQsXG4gICAgZmllbGRzPzogb2JqZWN0LFxuKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKVxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmbigpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY29uc3QgZW5kID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICAgICAgbG9nZ2VyLnRyYWNlKGBNZWFzdXJlbWVudCBvZiAke25hbWV9IHRpbWVgLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIHN0YXJ0OiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShzdGFydCksXG4gICAgICAgICAgICBlbmQ6IGhpZ2hQcmVjaXNpb25JU09EYXRlKGVuZCksXG4gICAgICAgICAgICBkdXJhdGlvbjogKE1hdGgucm91bmQoZW5kICogMTAwMDApIC0gTWF0aC5yb3VuZChzdGFydCAqIDEwMDAwKSkgLyAxMDAwMCxcbiAgICAgICAgICAgIC4uLmZpZWxkcyxcbiAgICAgICAgfSlcbiAgICB9XG59XG4iXX0=
package/host/context.d.ts CHANGED
@@ -1,50 +1,51 @@
1
- import { AbortSignal, Context, Environment, Logger } from '../context.js';
2
- import { Metadata } from './registry.js';
3
- export type ClientInfo = {
4
- readonly operationId?: string;
5
- readonly clientId?: string;
6
- readonly clientIp?: string;
7
- readonly clientPort?: number;
8
- readonly userAgent?: string;
9
- };
10
- export type EventMetadata = {
11
- topic: string;
12
- type: string;
13
- subject: string;
14
- id?: string;
15
- };
16
- export type BufferedEvent = {
17
- eventTime: Date;
18
- meta: Omit<EventMetadata, 'topic'>;
19
- ids: ClientInfo;
20
- json?: string;
21
- };
22
- export type EventTransport = {
23
- readonly publishRate: number;
24
- sendEvents(topic: string, events: BufferedEvent[], signal: AbortSignal): Promise<void>;
25
- };
26
- export type LogLevel = 'trace' | 'debug' | 'info' | 'warning' | 'error' | 'fatal';
27
- export type LogEntry = {
28
- readonly level: LogLevel;
29
- readonly timestamp: number;
30
- readonly message: string;
31
- readonly error: unknown;
32
- readonly json: string;
33
- };
34
- export type LogTransport = {
35
- readonly publishRate?: number;
36
- sendEntries(entries: LogEntry[], signal: AbortSignal): Promise<void> | undefined;
37
- };
38
- export type RootLogger = {
39
- enrichReserved(fields: object): RootLogger;
40
- flush(): Promise<void>;
41
- } & Logger;
42
- export declare function createContext(clientInfo: ClientInfo, loggers: LogTransport[], eventTransport: EventTransport, timeouts: {
43
- default: number;
44
- cap?: number;
45
- }, outerController: AbortController, meta?: Metadata, environment?: Environment | undefined, now?: (() => Date) | undefined): {
46
- log: RootLogger;
47
- context: Omit<Context, 'log'>;
48
- success: () => Promise<unknown>;
49
- flush: () => Promise<void>;
50
- };
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { AbortSignal, Context, Environment, Logger } from '../context.js';
3
+ import { FullConfiguration, Metadata } from './registry.js';
4
+ export type ClientInfo = {
5
+ readonly operationId?: string;
6
+ readonly clientId?: string;
7
+ readonly clientIp?: string;
8
+ readonly clientPort?: number;
9
+ readonly userAgent?: string;
10
+ };
11
+ export type EventMetadata = {
12
+ topic: string;
13
+ type: string;
14
+ subject: string;
15
+ id?: string;
16
+ };
17
+ export type BufferedEvent = {
18
+ eventTime: Date;
19
+ meta: Omit<EventMetadata, 'topic'>;
20
+ ids: ClientInfo;
21
+ json?: string;
22
+ };
23
+ export type EventTransport = {
24
+ readonly publishRate: number;
25
+ sendEvents(topic: string, events: BufferedEvent[], signal: AbortSignal): Promise<void>;
26
+ };
27
+ export type LogLevel = 'trace' | 'debug' | 'info' | 'warning' | 'error' | 'fatal';
28
+ export type LogEntry = {
29
+ readonly level: LogLevel;
30
+ readonly timestamp: number;
31
+ readonly message: string;
32
+ readonly error: unknown;
33
+ readonly json: string;
34
+ };
35
+ export type LogTransport = {
36
+ readonly publishRate?: number;
37
+ sendEntries(entries: LogEntry[], signal: AbortSignal): Promise<void> | undefined;
38
+ };
39
+ export type RootLogger = {
40
+ enrichReserved(fields: object): RootLogger;
41
+ flush(): Promise<void>;
42
+ } & Logger;
43
+ export declare function createContext(clientInfo: ClientInfo, loggers: LogTransport[], eventTransport: EventTransport, timeouts: {
44
+ default: number;
45
+ cap?: number;
46
+ }, outerController: AbortController, config?: FullConfiguration, meta?: Metadata, environment?: Environment | undefined, now?: (() => Date) | undefined): {
47
+ log: RootLogger;
48
+ context: Omit<Context, 'log'>;
49
+ success: () => Promise<unknown>;
50
+ flush: () => Promise<void>;
51
+ };