@riddance/host 0.2.4 → 0.2.6

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/context.d.ts CHANGED
@@ -2,33 +2,34 @@ export type Environment = {
2
2
  readonly [key: string]: string;
3
3
  };
4
4
  export type Logger = {
5
- enrich(fields: object): void;
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;
5
+ enrich(fields: JsonSafeObject): void;
6
+ trace(message: string, error?: unknown, fields?: JsonSafeObject): void;
7
+ debug(message: string, error?: unknown, fields?: JsonSafeObject): void;
8
+ info(message: string, error?: unknown, fields?: JsonSafeObject): void;
9
+ warn(message: string, error?: unknown, fields?: JsonSafeObject): void;
10
+ error(message: string, error?: unknown, fields?: JsonSafeObject): void;
11
+ fatal(message: string, error?: unknown, fields?: JsonSafeObject): void;
12
12
  };
13
13
  export type MutableJson = null | boolean | number | string | MutableJson[] | {
14
14
  [key: string]: MutableJson;
15
15
  };
16
- export type Json = null | boolean | number | string | readonly Json[] | {
16
+ export type Json = null | boolean | number | string | readonly Json[] | JsonObject;
17
+ export type JsonObject = {
17
18
  readonly [key: string]: Json;
18
19
  };
19
- export declare function objectSpreadable(json?: Json): {
20
- readonly [key: string]: Json;
20
+ export type JsonSafe = undefined | null | boolean | number | string | {
21
+ toJSON: () => string;
22
+ } | readonly JsonSafe[] | JsonSafeObject;
23
+ export type JsonSafeObject = {
24
+ readonly [key: string]: JsonSafe;
21
25
  };
22
- export declare function arraySpreadable(json?: Json): readonly Json[];
23
26
  export type HandlerConfiguration = {
24
27
  /**
25
- * An indication of CPU usage of the handler.
26
- * @default 'low'
28
+ * An indication of CPU usage of the handler. If undefined, a generic conservative value will be used.
27
29
  */
28
30
  readonly compute?: 'high' | 'low';
29
31
  /**
30
- * An indication of memory usage of the handler.
31
- * @default 'low'
32
+ * An indication of memory usage of the handler. If undefined, a generic conservative value will be used.
32
33
  */
33
34
  readonly memory?: 'high' | 'low';
34
35
  /**
@@ -66,9 +67,9 @@ export type Context = {
66
67
  emit(topic: string, type: string, subject: string, data?: Json, messageId?: string): Promise<void>;
67
68
  onSuccess(fn: () => Promise<void> | void): void;
68
69
  };
69
- export declare function httpRequestHeaders(context: Context): {
70
+ export declare function httpRequestHeaders({ meta, operationId, client, }: Pick<Context, 'meta' | 'operationId' | 'client'>): {
70
71
  [key: string]: string;
71
72
  };
72
73
  export declare function measure<T>(logger: {
73
- trace: (message: string, _: undefined, f: object) => void;
74
- }, name: string, fn: () => Promise<T> | T, fields?: object): Promise<T>;
74
+ trace: (message: string, _: undefined, f: JsonSafeObject) => void;
75
+ }, name: string, fn: () => Promise<T> | T, fields?: JsonSafeObject): Promise<T>;
package/context.js CHANGED
@@ -1,39 +1,45 @@
1
+ import { isIPv4 } from 'node:net';
1
2
  import { performance } from 'node:perf_hooks';
2
3
  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) {
4
+ export function httpRequestHeaders({ meta, operationId, client, }) {
18
5
  const headers = {
19
- 'user-agent': `${context.meta?.packageName ?? '?'}/${context.meta?.revision ?? '?'}`,
6
+ 'user-agent': `${meta?.packageName ?? '?'}/${meta?.revision ?? '?'}`,
20
7
  };
21
- if (context.operationId) {
22
- headers['x-request-id'] = context.operationId;
8
+ if (operationId) {
9
+ headers['x-request-id'] = operationId;
23
10
  }
24
- if (context.client) {
25
- if (context.client.id) {
26
- headers['x-client-id'] = context.client.id;
11
+ if (client) {
12
+ if (client.id) {
13
+ headers['x-client-id'] = client.id;
27
14
  }
28
- if (!!context.client.ip || !!context.client.port) {
29
- headers['x-forwarded-for'] = `${context.client.ip ?? ''}:${context.client.port ?? ''}`;
15
+ const { ip, port } = client;
16
+ if (!!ip || !!port) {
17
+ const xff = forwardedFor(ip, port);
18
+ if (xff) {
19
+ headers['x-forwarded-for'] = xff;
20
+ }
30
21
  }
31
- if (context.client.userAgent) {
32
- headers['x-forwarded-for-user-agent'] = context.client.userAgent;
22
+ if (client.userAgent) {
23
+ headers['x-forwarded-for-user-agent'] = client.userAgent;
33
24
  }
34
25
  }
35
26
  return headers;
36
27
  }
28
+ function forwardedFor(ip, port) {
29
+ if (!port) {
30
+ if (ip) {
31
+ return ip;
32
+ }
33
+ return undefined;
34
+ }
35
+ if (!ip) {
36
+ return `:${port}`;
37
+ }
38
+ if (isIPv4(ip)) {
39
+ return `${ip}:${port}`;
40
+ }
41
+ return `[${ip}]:${port}`;
42
+ }
37
43
  export async function measure(logger, name, fn, fields) {
38
44
  const start = performance.now();
39
45
  try {
@@ -49,4 +55,4 @@ export async function measure(logger, name, fn, fields) {
49
55
  });
50
56
  }
51
57
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBK0J4RCxlQUFlO0FBQ2YsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVc7SUFDeEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUFtRCxDQUFBO0FBQzlELENBQUM7QUFFRCxlQUFlO0FBQ2YsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFXO0lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUF1QixDQUFBO0FBQ2xDLENBQUM7QUEyREQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQWdCO0lBQy9DLE1BQU0sT0FBTyxHQUE4QjtRQUN2QyxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLFdBQVcsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFO0tBQ3ZGLENBQUE7SUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQTtJQUNqRCxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUE7UUFDMUYsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsNEJBQTRCLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQTtRQUNwRSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FDekIsTUFBcUUsRUFDckUsSUFBWSxFQUNaLEVBQXdCLEVBQ3hCLE1BQWU7SUFFZixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDL0IsSUFBSSxDQUFDO1FBQ0QsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7WUFBUyxDQUFDO1FBQ1AsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUNuRCxLQUFLLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1lBQ2xDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7WUFDOUIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNO1lBQzFFLEdBQUcsTUFBTTtTQUNaLENBQUMsQ0FBQTtJQUNOLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdub2RlOnBlcmZfaG9va3MnXG5pbXBvcnQgeyBoaWdoUHJlY2lzaW9uSVNPRGF0ZSB9IGZyb20gJy4vaG9zdC9sb2dnaW5nLmpzJ1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9IHtcbiAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2VyID0ge1xuICAgIGVucmljaChmaWVsZHM6IG9iamVjdCk6IHZvaWRcbiAgICB0cmFjZShtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogb2JqZWN0KTogdm9pZFxuICAgIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogb2JqZWN0KTogdm9pZFxuICAgIHdhcm4obWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogb2JqZWN0KTogdm9pZFxuICAgIGZhdGFsKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIE11dGFibGVKc29uID1cbiAgICB8IG51bGxcbiAgICB8IGJvb2xlYW5cbiAgICB8IG51bWJlclxuICAgIHwgc3RyaW5nXG4gICAgfCBNdXRhYmxlSnNvbltdXG4gICAgfCB7IFtrZXk6IHN0cmluZ106IE11dGFibGVKc29uIH1cbmV4cG9ydCB0eXBlIEpzb24gPVxuICAgIHwgbnVsbFxuICAgIHwgYm9vbGVhblxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8IHJlYWRvbmx5IEpzb25bXVxuICAgIHwgeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uIH1cblxuLypAX19JTkxJTkVfXyovXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0U3ByZWFkYWJsZShqc29uPzogSnNvbik6IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogSnNvbiB9IHtcbiAgICBpZiAoIWpzb24pIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgfVxuICAgIHJldHVybiBqc29uIGFzIHVua25vd24gYXMgeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uIH1cbn1cblxuLypAX19JTkxJTkVfXyovXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlTcHJlYWRhYmxlKGpzb24/OiBKc29uKTogcmVhZG9ubHkgSnNvbltdIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoanNvbikpIHtcbiAgICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICAgIHJldHVybiBqc29uIGFzIHJlYWRvbmx5IEpzb25bXVxufVxuXG5leHBvcnQgdHlwZSBIYW5kbGVyQ29uZmlndXJhdGlvbiA9IHtcbiAgICAvKipcbiAgICAgKiBBbiBpbmRpY2F0aW9uIG9mIENQVSB1c2FnZSBvZiB0aGUgaGFuZGxlci5cbiAgICAgKiBAZGVmYXVsdCAnbG93J1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvbXB1dGU/OiAnaGlnaCcgfCAnbG93J1xuICAgIC8qKlxuICAgICAqIEFuIGluZGljYXRpb24gb2YgbWVtb3J5IHVzYWdlIG9mIHRoZSBoYW5kbGVyLlxuICAgICAqIEBkZWZhdWx0ICdsb3cnXG4gICAgICovXG4gICAgcmVhZG9ubHkgbWVtb3J5PzogJ2hpZ2gnIHwgJ2xvdydcbiAgICAvKipcbiAgICAgKiBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRvIGVucmljaCB0aGUgbG9nIHdpdGggdGhlIGJvZHkgb2YgZXZlbnRzLCByZXF1ZXN0cyBvciByZXNwb25zZXMuIFNldCB0byBmYWxzZSBpZiB0aGUgYm9keSBpcyBsYXJnZSBvciBjb250YWluIHZlcnkgc2Vuc2l0aXZlIGRhdGEuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBleGNsdWRlQm9keUZyb21Mb2dzPzogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIFRoZSBsZXZlbCBiZWxvdyB3aGljaCBsb2cgZW50cmllcyB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKiBAZGVmYXVsdCAndHJhY2UnXG4gICAgICovXG4gICAgcmVhZG9ubHkgbWluaW11bUxvZ0xldmVsPzogJ3RyYWNlJyB8ICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybmluZycgfCAnZXJyb3InIHwgJ2ZhdGFsJ1xuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0aGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gZmluaXNoIGV4ZWN1dGluZyBpbi5cbiAgICAgKi9cbiAgICByZWFkb25seSB0aW1lb3V0PzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHQgPSB7XG4gICAgcmVhZG9ubHkgZW52OiBFbnZpcm9ubWVudFxuICAgIHJlYWRvbmx5IGxvZzogTG9nZ2VyXG4gICAgcmVhZG9ubHkgc2lnbmFsOiBBYm9ydFNpZ25hbFxuICAgIG5vdygpOiBEYXRlXG5cbiAgICByZWFkb25seSBvcGVyYXRpb25JZD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGNsaWVudD86IHtcbiAgICAgICAgcmVhZG9ubHkgaWQ/OiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgaXA/OiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgcG9ydD86IG51bWJlclxuICAgICAgICByZWFkb25seSB1c2VyQWdlbnQ/OiBzdHJpbmdcbiAgICB9XG4gICAgcmVhZG9ubHkgbWV0YT86IHtcbiAgICAgICAgcmVhZG9ubHkgcGFja2FnZU5hbWU6IHN0cmluZ1xuICAgICAgICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nXG4gICAgICAgIHJlYWRvbmx5IHJldmlzaW9uPzogc3RyaW5nXG4gICAgfVxuXG4gICAgZW1pdChcbiAgICAgICAgdG9waWM6IHN0cmluZyxcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBzdWJqZWN0OiBzdHJpbmcsXG4gICAgICAgIGRhdGE/OiBKc29uLFxuICAgICAgICBtZXNzYWdlSWQ/OiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTx2b2lkPlxuXG4gICAgb25TdWNjZXNzKGZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZCk6IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh0dHBSZXF1ZXN0SGVhZGVycyhjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgY29uc3QgaGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICAgJ3VzZXItYWdlbnQnOiBgJHtjb250ZXh0Lm1ldGE/LnBhY2thZ2VOYW1lID8/ICc/J30vJHtjb250ZXh0Lm1ldGE/LnJldmlzaW9uID8/ICc/J31gLFxuICAgIH1cbiAgICBpZiAoY29udGV4dC5vcGVyYXRpb25JZCkge1xuICAgICAgICBoZWFkZXJzWyd4LXJlcXVlc3QtaWQnXSA9IGNvbnRleHQub3BlcmF0aW9uSWRcbiAgICB9XG4gICAgaWYgKGNvbnRleHQuY2xpZW50KSB7XG4gICAgICAgIGlmIChjb250ZXh0LmNsaWVudC5pZCkge1xuICAgICAgICAgICAgaGVhZGVyc1sneC1jbGllbnQtaWQnXSA9IGNvbnRleHQuY2xpZW50LmlkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhY29udGV4dC5jbGllbnQuaXAgfHwgISFjb250ZXh0LmNsaWVudC5wb3J0KSB7XG4gICAgICAgICAgICBoZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXSA9IGAke2NvbnRleHQuY2xpZW50LmlwID8/ICcnfToke2NvbnRleHQuY2xpZW50LnBvcnQgPz8gJyd9YFxuICAgICAgICB9XG4gICAgICAgIGlmIChjb250ZXh0LmNsaWVudC51c2VyQWdlbnQpIHtcbiAgICAgICAgICAgIGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvci11c2VyLWFnZW50J10gPSBjb250ZXh0LmNsaWVudC51c2VyQWdlbnRcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGVhZGVyc1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWVhc3VyZTxUPihcbiAgICBsb2dnZXI6IHsgdHJhY2U6IChtZXNzYWdlOiBzdHJpbmcsIF86IHVuZGVmaW5lZCwgZjogb2JqZWN0KSA9PiB2b2lkIH0sXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGZuOiAoKSA9PiBQcm9taXNlPFQ+IHwgVCxcbiAgICBmaWVsZHM/OiBvYmplY3QsXG4pIHtcbiAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZuKClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBjb25zdCBlbmQgPSBwZXJmb3JtYW5jZS5ub3coKVxuICAgICAgICBsb2dnZXIudHJhY2UoYE1lYXN1cmVtZW50IG9mICR7bmFtZX0gdGltZWAsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgc3RhcnQ6IGhpZ2hQcmVjaXNpb25JU09EYXRlKHN0YXJ0KSxcbiAgICAgICAgICAgIGVuZDogaGlnaFByZWNpc2lvbklTT0RhdGUoZW5kKSxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAoTWF0aC5yb3VuZChlbmQgKiAxMF8wMDApIC0gTWF0aC5yb3VuZChzdGFydCAqIDEwXzAwMCkpIC8gMTBfMDAwLFxuICAgICAgICAgICAgLi4uZmllbGRzLFxuICAgICAgICB9KVxuICAgIH1cbn1cbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUE2RnhELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUMvQixJQUFJLEVBQ0osV0FBVyxFQUNYLE1BQU0sR0FDeUM7SUFDL0MsTUFBTSxPQUFPLEdBQThCO1FBQ3ZDLFlBQVksRUFBRSxHQUFHLElBQUksRUFBRSxXQUFXLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFO0tBQ3ZFLENBQUE7SUFDRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFdBQVcsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNULElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDdEMsQ0FBQztRQUNELE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFBO1FBQzNCLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNsQyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtZQUNwQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUE7UUFDNUQsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQTtBQUNsQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsRUFBc0IsRUFBRSxJQUF3QjtJQUNsRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDUixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ0wsT0FBTyxFQUFFLENBQUE7UUFDYixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDcEIsQ0FBQztJQUNELElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNOLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUNELE9BQU8sSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUE7QUFDNUIsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxDQUN6QixNQUE2RSxFQUM3RSxJQUFZLEVBQ1osRUFBd0IsRUFDeEIsTUFBdUI7SUFFdkIsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQy9CLElBQUksQ0FBQztRQUNELE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQTtJQUNyQixDQUFDO1lBQVMsQ0FBQztRQUNQLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUM3QixNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDbkQsS0FBSyxFQUFFLG9CQUFvQixDQUFDLEtBQUssQ0FBQztZQUNsQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTTtZQUMxRSxHQUFHLE1BQU07U0FDWixDQUFDLENBQUE7SUFDTixDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzSVB2NCB9IGZyb20gJ25vZGU6bmV0J1xuaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdub2RlOnBlcmZfaG9va3MnXG5pbXBvcnQgeyBoaWdoUHJlY2lzaW9uSVNPRGF0ZSB9IGZyb20gJy4vaG9zdC9sb2dnaW5nLmpzJ1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9IHtcbiAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2VyID0ge1xuICAgIGVucmljaChmaWVsZHM6IEpzb25TYWZlT2JqZWN0KTogdm9pZFxuICAgIHRyYWNlKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBKc29uU2FmZU9iamVjdCk6IHZvaWRcbiAgICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogSnNvblNhZmVPYmplY3QpOiB2b2lkXG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogSnNvblNhZmVPYmplY3QpOiB2b2lkXG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogSnNvblNhZmVPYmplY3QpOiB2b2lkXG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IEpzb25TYWZlT2JqZWN0KTogdm9pZFxuICAgIGZhdGFsKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBKc29uU2FmZU9iamVjdCk6IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgTXV0YWJsZUpzb24gPVxuICAgIHwgbnVsbFxuICAgIHwgYm9vbGVhblxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8IE11dGFibGVKc29uW11cbiAgICB8IHsgW2tleTogc3RyaW5nXTogTXV0YWJsZUpzb24gfVxuZXhwb3J0IHR5cGUgSnNvbiA9IG51bGwgfCBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgcmVhZG9ubHkgSnNvbltdIHwgSnNvbk9iamVjdFxuZXhwb3J0IHR5cGUgSnNvbk9iamVjdCA9IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogSnNvbiB9XG5cbmV4cG9ydCB0eXBlIEpzb25TYWZlID1cbiAgICB8IHVuZGVmaW5lZFxuICAgIHwgbnVsbFxuICAgIHwgYm9vbGVhblxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8IHsgdG9KU09OOiAoKSA9PiBzdHJpbmcgfVxuICAgIHwgcmVhZG9ubHkgSnNvblNhZmVbXVxuICAgIHwgSnNvblNhZmVPYmplY3RcblxuZXhwb3J0IHR5cGUgSnNvblNhZmVPYmplY3QgPSB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb25TYWZlIH1cblxuZXhwb3J0IHR5cGUgSGFuZGxlckNvbmZpZ3VyYXRpb24gPSB7XG4gICAgLyoqXG4gICAgICogQW4gaW5kaWNhdGlvbiBvZiBDUFUgdXNhZ2Ugb2YgdGhlIGhhbmRsZXIuIElmIHVuZGVmaW5lZCwgYSBnZW5lcmljIGNvbnNlcnZhdGl2ZSB2YWx1ZSB3aWxsIGJlIHVzZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29tcHV0ZT86ICdoaWdoJyB8ICdsb3cnXG4gICAgLyoqXG4gICAgICogQW4gaW5kaWNhdGlvbiBvZiBtZW1vcnkgdXNhZ2Ugb2YgdGhlIGhhbmRsZXIuIElmIHVuZGVmaW5lZCwgYSBnZW5lcmljIGNvbnNlcnZhdGl2ZSB2YWx1ZSB3aWxsIGJlIHVzZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbWVtb3J5PzogJ2hpZ2gnIHwgJ2xvdydcbiAgICAvKipcbiAgICAgKiBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRvIGVucmljaCB0aGUgbG9nIHdpdGggdGhlIGJvZHkgb2YgZXZlbnRzLCByZXF1ZXN0cyBvciByZXNwb25zZXMuIFNldCB0byBmYWxzZSBpZiB0aGUgYm9keSBpcyBsYXJnZSBvciBjb250YWluIHZlcnkgc2Vuc2l0aXZlIGRhdGEuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBleGNsdWRlQm9keUZyb21Mb2dzPzogYm9vbGVhblxuICAgIC8qKlxuICAgICAqIFRoZSBsZXZlbCBiZWxvdyB3aGljaCBsb2cgZW50cmllcyB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKiBAZGVmYXVsdCAndHJhY2UnXG4gICAgICovXG4gICAgcmVhZG9ubHkgbWluaW11bUxvZ0xldmVsPzogJ3RyYWNlJyB8ICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybmluZycgfCAnZXJyb3InIHwgJ2ZhdGFsJ1xuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0aGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gZmluaXNoIGV4ZWN1dGluZyBpbi5cbiAgICAgKi9cbiAgICByZWFkb25seSB0aW1lb3V0PzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHQgPSB7XG4gICAgcmVhZG9ubHkgZW52OiBFbnZpcm9ubWVudFxuICAgIHJlYWRvbmx5IGxvZzogTG9nZ2VyXG4gICAgcmVhZG9ubHkgc2lnbmFsOiBBYm9ydFNpZ25hbFxuICAgIG5vdygpOiBEYXRlXG5cbiAgICByZWFkb25seSBvcGVyYXRpb25JZD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGNsaWVudD86IHtcbiAgICAgICAgcmVhZG9ubHkgaWQ/OiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgaXA/OiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgcG9ydD86IG51bWJlclxuICAgICAgICByZWFkb25seSB1c2VyQWdlbnQ/OiBzdHJpbmdcbiAgICB9XG4gICAgcmVhZG9ubHkgbWV0YT86IHtcbiAgICAgICAgcmVhZG9ubHkgcGFja2FnZU5hbWU6IHN0cmluZ1xuICAgICAgICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nXG4gICAgICAgIHJlYWRvbmx5IHJldmlzaW9uPzogc3RyaW5nXG4gICAgfVxuXG4gICAgZW1pdChcbiAgICAgICAgdG9waWM6IHN0cmluZyxcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBzdWJqZWN0OiBzdHJpbmcsXG4gICAgICAgIGRhdGE/OiBKc29uLFxuICAgICAgICBtZXNzYWdlSWQ/OiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTx2b2lkPlxuXG4gICAgb25TdWNjZXNzKGZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZCk6IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh0dHBSZXF1ZXN0SGVhZGVycyh7XG4gICAgbWV0YSxcbiAgICBvcGVyYXRpb25JZCxcbiAgICBjbGllbnQsXG59OiBQaWNrPENvbnRleHQsICdtZXRhJyB8ICdvcGVyYXRpb25JZCcgfCAnY2xpZW50Jz4pIHtcbiAgICBjb25zdCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAndXNlci1hZ2VudCc6IGAke21ldGE/LnBhY2thZ2VOYW1lID8/ICc/J30vJHttZXRhPy5yZXZpc2lvbiA/PyAnPyd9YCxcbiAgICB9XG4gICAgaWYgKG9wZXJhdGlvbklkKSB7XG4gICAgICAgIGhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddID0gb3BlcmF0aW9uSWRcbiAgICB9XG4gICAgaWYgKGNsaWVudCkge1xuICAgICAgICBpZiAoY2xpZW50LmlkKSB7XG4gICAgICAgICAgICBoZWFkZXJzWyd4LWNsaWVudC1pZCddID0gY2xpZW50LmlkXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBpcCwgcG9ydCB9ID0gY2xpZW50XG4gICAgICAgIGlmICghIWlwIHx8ICEhcG9ydCkge1xuICAgICAgICAgICAgY29uc3QgeGZmID0gZm9yd2FyZGVkRm9yKGlwLCBwb3J0KVxuICAgICAgICAgICAgaWYgKHhmZikge1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddID0geGZmXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsaWVudC51c2VyQWdlbnQpIHtcbiAgICAgICAgICAgIGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvci11c2VyLWFnZW50J10gPSBjbGllbnQudXNlckFnZW50XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcnNcbn1cblxuZnVuY3Rpb24gZm9yd2FyZGVkRm9yKGlwOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBvcnQ6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghcG9ydCkge1xuICAgICAgICBpZiAoaXApIHtcbiAgICAgICAgICAgIHJldHVybiBpcFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKCFpcCkge1xuICAgICAgICByZXR1cm4gYDoke3BvcnR9YFxuICAgIH1cbiAgICBpZiAoaXNJUHY0KGlwKSkge1xuICAgICAgICByZXR1cm4gYCR7aXB9OiR7cG9ydH1gXG4gICAgfVxuICAgIHJldHVybiBgWyR7aXB9XToke3BvcnR9YFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWVhc3VyZTxUPihcbiAgICBsb2dnZXI6IHsgdHJhY2U6IChtZXNzYWdlOiBzdHJpbmcsIF86IHVuZGVmaW5lZCwgZjogSnNvblNhZmVPYmplY3QpID0+IHZvaWQgfSxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgZm46ICgpID0+IFByb21pc2U8VD4gfCBULFxuICAgIGZpZWxkcz86IEpzb25TYWZlT2JqZWN0LFxuKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKVxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmbigpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY29uc3QgZW5kID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICAgICAgbG9nZ2VyLnRyYWNlKGBNZWFzdXJlbWVudCBvZiAke25hbWV9IHRpbWVgLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIHN0YXJ0OiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShzdGFydCksXG4gICAgICAgICAgICBlbmQ6IGhpZ2hQcmVjaXNpb25JU09EYXRlKGVuZCksXG4gICAgICAgICAgICBkdXJhdGlvbjogKE1hdGgucm91bmQoZW5kICogMTBfMDAwKSAtIE1hdGgucm91bmQoc3RhcnQgKiAxMF8wMDApKSAvIDEwXzAwMCxcbiAgICAgICAgICAgIC4uLmZpZWxkcyxcbiAgICAgICAgfSlcbiAgICB9XG59XG4iXX0=
package/event.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- import { Context, HandlerConfiguration, type Json } from './context.js';
1
+ import { Context, HandlerConfiguration, type JsonObject } from './context.js';
2
2
  export * from './context.js';
3
3
  export type EventHandlerConfiguration = HandlerConfiguration & {};
4
- export type Handler = (context: Context, subject: string, event: {
5
- readonly [key: string]: Json;
6
- } | undefined, timestamp: Date, messageId: string) => Promise<void> | void;
4
+ export type Handler = (context: Context, subject: string, event: JsonObject | undefined, timestamp: Date, messageId: string) => Promise<void> | void;
7
5
  export declare function on(topic: string, event: string, fn: Handler): void;
8
6
  export declare function on(topic: string, event: string, config: HandlerConfiguration, fn: Handler): void;
package/event.js CHANGED
@@ -3,4 +3,4 @@ export * from './context.js';
3
3
  export function on(topic, event, configOrHandler, fn) {
4
4
  registerEventHandler(topic, event, configOrHandler, fn);
5
5
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUUvRCxjQUFjLGNBQWMsQ0FBQTtBQWtCNUIsTUFBTSxVQUFVLEVBQUUsQ0FDZCxLQUFhLEVBQ2IsS0FBYSxFQUNiLGVBQStDLEVBQy9DLEVBQVk7SUFFWixvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCwgSGFuZGxlckNvbmZpZ3VyYXRpb24sIHR5cGUgSnNvbiB9IGZyb20gJy4vY29udGV4dC5qcydcbmltcG9ydCB7IHJlZ2lzdGVyRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi9ob3N0L2V2ZW50LXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQuanMnXG5cbmV4cG9ydCB0eXBlIEV2ZW50SGFuZGxlckNvbmZpZ3VyYXRpb24gPSBIYW5kbGVyQ29uZmlndXJhdGlvbiAmIHt9XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXIgPSAoXG4gICAgY29udGV4dDogQ29udGV4dCxcbiAgICBzdWJqZWN0OiBzdHJpbmcsXG4gICAgZXZlbnQ6XG4gICAgICAgIHwge1xuICAgICAgICAgICAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uXG4gICAgICAgICAgfVxuICAgICAgICB8IHVuZGVmaW5lZCxcbiAgICB0aW1lc3RhbXA6IERhdGUsXG4gICAgbWVzc2FnZUlkOiBzdHJpbmcsXG4pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkXG5cbmV4cG9ydCBmdW5jdGlvbiBvbih0b3BpYzogc3RyaW5nLCBldmVudDogc3RyaW5nLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBvbih0b3BpYzogc3RyaW5nLCBldmVudDogc3RyaW5nLCBjb25maWc6IEhhbmRsZXJDb25maWd1cmF0aW9uLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBvbihcbiAgICB0b3BpYzogc3RyaW5nLFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJFdmVudEhhbmRsZXIodG9waWMsIGV2ZW50LCBjb25maWdPckhhbmRsZXIsIGZuKVxufVxuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUUvRCxjQUFjLGNBQWMsQ0FBQTtBQWM1QixNQUFNLFVBQVUsRUFBRSxDQUNkLEtBQWEsRUFDYixLQUFhLEVBQ2IsZUFBK0MsRUFDL0MsRUFBWTtJQUVaLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0LCBIYW5kbGVyQ29uZmlndXJhdGlvbiwgdHlwZSBKc29uT2JqZWN0IH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgcmVnaXN0ZXJFdmVudEhhbmRsZXIgfSBmcm9tICcuL2hvc3QvZXZlbnQtcmVnaXN0cnkuanMnXG5cbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC5qcydcblxuZXhwb3J0IHR5cGUgRXZlbnRIYW5kbGVyQ29uZmlndXJhdGlvbiA9IEhhbmRsZXJDb25maWd1cmF0aW9uICYge31cblxuZXhwb3J0IHR5cGUgSGFuZGxlciA9IChcbiAgICBjb250ZXh0OiBDb250ZXh0LFxuICAgIHN1YmplY3Q6IHN0cmluZyxcbiAgICBldmVudDogSnNvbk9iamVjdCB8IHVuZGVmaW5lZCxcbiAgICB0aW1lc3RhbXA6IERhdGUsXG4gICAgbWVzc2FnZUlkOiBzdHJpbmcsXG4pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkXG5cbmV4cG9ydCBmdW5jdGlvbiBvbih0b3BpYzogc3RyaW5nLCBldmVudDogc3RyaW5nLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBvbih0b3BpYzogc3RyaW5nLCBldmVudDogc3RyaW5nLCBjb25maWc6IEhhbmRsZXJDb25maWd1cmF0aW9uLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBvbihcbiAgICB0b3BpYzogc3RyaW5nLFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJFdmVudEhhbmRsZXIodG9waWMsIGV2ZW50LCBjb25maWdPckhhbmRsZXIsIGZuKVxufVxuIl19
package/host/context.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Context, Environment, Json, Logger } from '../context.js';
1
+ import { Context, Environment, Logger, type JsonSafeObject } from '../context.js';
2
2
  import type { FullConfiguration, Metadata } from './meta.js';
3
3
  export type ClientInfo = {
4
4
  readonly operationId?: string;
@@ -8,9 +8,7 @@ export type ClientInfo = {
8
8
  readonly userAgent?: string;
9
9
  };
10
10
  export type EventTransport = {
11
- sendEvent(topic: string, type: string, subject: string, data: {
12
- readonly [key: string]: Json;
13
- } | undefined, messageId: string | undefined, signal: AbortSignal): Promise<void>;
11
+ sendEvent(topic: string, type: string, subject: string, data: JsonSafeObject | undefined, messageId: string | undefined, signal: AbortSignal): Promise<void>;
14
12
  };
15
13
  export type LogLevel = 'trace' | 'debug' | 'info' | 'warning' | 'error' | 'fatal';
16
14
  export type LogEntry = {
@@ -31,7 +29,7 @@ export type RootLogger = {
31
29
  export declare function createContext(clientInfo: ClientInfo, loggers: LogTransport[], eventTransport: EventTransport, timeouts: {
32
30
  default: number;
33
31
  cap?: number;
34
- }, outerController: AbortController, config?: FullConfiguration, meta?: Metadata, environment?: Environment, now?: () => Date): {
32
+ }, outerController: AbortController, config?: FullConfiguration, meta?: Metadata, environment?: Partial<Environment>, now?: () => Date): {
35
33
  log: RootLogger;
36
34
  context: Omit<Context, 'log'>;
37
35
  success: () => Promise<unknown>;
package/host/context.js CHANGED
@@ -33,7 +33,7 @@ export function createContext(clientInfo, loggers, eventTransport, timeouts, out
33
33
  globalLogger = logger;
34
34
  const successHandlers = [];
35
35
  const ctx = {
36
- env: environment ?? process.env,
36
+ env: (environment ?? process.env),
37
37
  signal: innerController.signal,
38
38
  now: now ?? (() => new Date()),
39
39
  operationId: clientInfo.operationId,
@@ -81,4 +81,4 @@ process.on('uncaughtException', err => {
81
81
  process.on('unhandledRejection', reason => {
82
82
  globalLogger?.fatal('Unhandled rejection.', reason, undefined);
83
83
  });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQXlDekMsTUFBTSxjQUFjO0lBQ1AsV0FBVyxDQUFnQjtJQUMzQixXQUFXLENBQVE7SUFFNUIsWUFBWSxVQUEwQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQTtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFBO0lBQzlGLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBbUIsRUFBRSxNQUFtQjtRQUNoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFNO1FBQ1YsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQTZCLENBQUE7SUFDNUQsQ0FBQztDQUNKO0FBT0QsTUFBTSxVQUFVLGFBQWEsQ0FDekIsVUFBc0IsRUFDdEIsT0FBdUIsRUFDdkIsY0FBOEIsRUFDOUIsUUFBMkMsRUFDM0MsZUFBZ0MsRUFDaEMsTUFBMEIsRUFDMUIsSUFBZSxFQUNmLFdBQXlCLEVBQ3pCLEdBQWdCO0lBT2hCLE1BQU0sT0FBTyxHQUNULENBQUMsUUFBUSxDQUFDLEdBQUc7UUFD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QyxFQUFFLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQTtJQUNwQixPQUFPO1FBQ0gsR0FBRyxFQUFFLE1BQU07UUFDWCxPQUFPLEVBQUUsR0FBRztRQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDZCxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDM0IsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDcEIsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzdCLENBQUM7S0FDSixDQUFBO0FBQ0wsQ0FBQztBQUVELElBQUksWUFBZ0MsQ0FBQTtBQUVwQyxPQUFPLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxFQUFFO0lBQ2xDLFlBQVksRUFBRSxLQUFLLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0FBQzlELENBQUMsQ0FBQyxDQUFBO0FBQ0YsT0FBTyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsRUFBRTtJQUN0QyxZQUFZLEVBQUUsS0FBSyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUNsRSxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQsIEVudmlyb25tZW50LCBKc29uLCBMb2dnZXIgfSBmcm9tICcuLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgbWFrZUxvZ2dlciB9IGZyb20gJy4vbG9nZ2luZy5qcydcbmltcG9ydCB0eXBlIHsgRnVsbENvbmZpZ3VyYXRpb24sIE1ldGFkYXRhIH0gZnJvbSAnLi9tZXRhLmpzJ1xuXG5leHBvcnQgdHlwZSBDbGllbnRJbmZvID0ge1xuICAgIHJlYWRvbmx5IG9wZXJhdGlvbklkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2xpZW50SWQ/OiBzdHJpbmdcbiAgICByZWFkb25seSBjbGllbnRJcD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGNsaWVudFBvcnQ/OiBudW1iZXJcbiAgICByZWFkb25seSB1c2VyQWdlbnQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRXZlbnRUcmFuc3BvcnQgPSB7XG4gICAgc2VuZEV2ZW50KFxuICAgICAgICB0b3BpYzogc3RyaW5nLFxuICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgIHN1YmplY3Q6IHN0cmluZyxcbiAgICAgICAgZGF0YTpcbiAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogSnNvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB8IHVuZGVmaW5lZCxcbiAgICAgICAgbWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIHNpZ25hbDogQWJvcnRTaWduYWwsXG4gICAgKTogUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9ICd0cmFjZScgfCAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJyB8ICdmYXRhbCdcblxuZXhwb3J0IHR5cGUgTG9nRW50cnkgPSB7XG4gICAgcmVhZG9ubHkgbGV2ZWw6IExvZ0xldmVsXG4gICAgcmVhZG9ubHkgdGltZXN0YW1wOiBudW1iZXJcbiAgICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmdcbiAgICByZWFkb25seSBlcnJvcjogdW5rbm93blxuICAgIHJlYWRvbmx5IGpzb246IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBMb2dUcmFuc3BvcnQgPSB7XG4gICAgcmVhZG9ubHkgcHVibGlzaFJhdGU/OiBudW1iZXJcbiAgICBzZW5kRW50cmllcyhlbnRyaWVzOiBMb2dFbnRyeVtdLCBzaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZCB8IHZvaWRcbn1cblxuY2xhc3MgTG9nTXVsdGljYXN0ZXIgaW1wbGVtZW50cyBMb2dUcmFuc3BvcnQge1xuICAgIHJlYWRvbmx5ICN0cmFuc3BvcnRzOiBMb2dUcmFuc3BvcnRbXVxuICAgIHJlYWRvbmx5IHB1Ymxpc2hSYXRlOiBudW1iZXJcblxuICAgIGNvbnN0cnVjdG9yKHRyYW5zcG9ydHM6IExvZ1RyYW5zcG9ydFtdKSB7XG4gICAgICAgIHRoaXMuI3RyYW5zcG9ydHMgPSB0cmFuc3BvcnRzXG4gICAgICAgIHRoaXMucHVibGlzaFJhdGUgPSB0cmFuc3BvcnRzLm1hcCh0ID0+IHQucHVibGlzaFJhdGUpLnNvcnQoKVswXSA/PyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxuICAgIH1cblxuICAgIHNlbmRFbnRyaWVzKGVudHJpZXM6IExvZ0VudHJ5W10sIHNpZ25hbDogQWJvcnRTaWduYWwpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLiN0cmFuc3BvcnRzLm1hcCh0ID0+IHQuc2VuZEVudHJpZXMoZW50cmllcywgc2lnbmFsKSkuZmlsdGVyKHAgPT4gISFwKVxuICAgICAgICBpZiAocHJvbWlzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpIGFzIHVua25vd24gYXMgUHJvbWlzZTx2b2lkPlxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUm9vdExvZ2dlciA9IHtcbiAgICBlbnJpY2hSZXNlcnZlZChmaWVsZHM6IG9iamVjdCk6IFJvb3RMb2dnZXJcbiAgICBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+XG59ICYgTG9nZ2VyXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KFxuICAgIGNsaWVudEluZm86IENsaWVudEluZm8sXG4gICAgbG9nZ2VyczogTG9nVHJhbnNwb3J0W10sXG4gICAgZXZlbnRUcmFuc3BvcnQ6IEV2ZW50VHJhbnNwb3J0LFxuICAgIHRpbWVvdXRzOiB7IGRlZmF1bHQ6IG51bWJlcjsgY2FwPzogbnVtYmVyIH0sXG4gICAgb3V0ZXJDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIsXG4gICAgY29uZmlnPzogRnVsbENvbmZpZ3VyYXRpb24sXG4gICAgbWV0YT86IE1ldGFkYXRhLFxuICAgIGVudmlyb25tZW50PzogRW52aXJvbm1lbnQsXG4gICAgbm93PzogKCkgPT4gRGF0ZSxcbik6IHtcbiAgICBsb2c6IFJvb3RMb2dnZXJcbiAgICBjb250ZXh0OiBPbWl0PENvbnRleHQsICdsb2cnPlxuICAgIHN1Y2Nlc3M6ICgpID0+IFByb21pc2U8dW5rbm93bj5cbiAgICBmbHVzaDogKCkgPT4gUHJvbWlzZTx2b2lkPlxufSB7XG4gICAgY29uc3QgdGltZW91dCA9XG4gICAgICAgICh0aW1lb3V0cy5jYXBcbiAgICAgICAgICAgID8gTWF0aC5taW4oY29uZmlnPy50aW1lb3V0ID8/IHRpbWVvdXRzLmRlZmF1bHQsIHRpbWVvdXRzLmNhcClcbiAgICAgICAgICAgIDogKGNvbmZpZz8udGltZW91dCA/PyB0aW1lb3V0cy5kZWZhdWx0KSkgKiAxMDAwXG4gICAgY29uc3QgaW5uZXJDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICBjb25zdCBsb2dUcmFuc3BvcnQgPSBsb2dnZXJzLmxlbmd0aCA9PT0gMSA/IGxvZ2dlcnNbMF0hIDogbmV3IExvZ011bHRpY2FzdGVyKGxvZ2dlcnMpXG4gICAgY29uc3QgbG9nZ2VyID0gbWFrZUxvZ2dlcihcbiAgICAgICAgbG9nVHJhbnNwb3J0LFxuICAgICAgICBjb25maWc/Lm1pbmltdW1Mb2dMZXZlbCxcbiAgICAgICAgb3V0ZXJDb250cm9sbGVyLnNpZ25hbCxcbiAgICApLmVucmljaFJlc2VydmVkKHtcbiAgICAgICAgb3BlcmF0aW9uSWQ6IGNsaWVudEluZm8ub3BlcmF0aW9uSWQsXG4gICAgICAgIGNsaWVudDoge1xuICAgICAgICAgICAgaWQ6IGNsaWVudEluZm8uY2xpZW50SWQsXG4gICAgICAgICAgICBpcDogY2xpZW50SW5mby5jbGllbnRJcCxcbiAgICAgICAgICAgIHBvcnQ6IGNsaWVudEluZm8uY2xpZW50UG9ydCxcbiAgICAgICAgICAgIHVzZXJBZ2VudDogY2xpZW50SW5mby51c2VyQWdlbnQsXG4gICAgICAgIH0sXG4gICAgfSlcbiAgICBnbG9iYWxMb2dnZXIgPSBsb2dnZXJcbiAgICBjb25zdCBzdWNjZXNzSGFuZGxlcnM6ICgoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZClbXSA9IFtdXG4gICAgY29uc3QgY3R4ID0ge1xuICAgICAgICBlbnY6IGVudmlyb25tZW50ID8/IChwcm9jZXNzLmVudiBhcyBFbnZpcm9ubWVudCksXG4gICAgICAgIHNpZ25hbDogaW5uZXJDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgbm93OiBub3cgPz8gKCgpID0+IG5ldyBEYXRlKCkpLFxuICAgICAgICBvcGVyYXRpb25JZDogY2xpZW50SW5mby5vcGVyYXRpb25JZCxcbiAgICAgICAgY2xpZW50OiB7XG4gICAgICAgICAgICBpZDogY2xpZW50SW5mby5jbGllbnRJZCxcbiAgICAgICAgICAgIGlwOiBjbGllbnRJbmZvLmNsaWVudElwLFxuICAgICAgICAgICAgcG9ydDogY2xpZW50SW5mby5jbGllbnRQb3J0LFxuICAgICAgICAgICAgdXNlckFnZW50OiBjbGllbnRJbmZvLnVzZXJBZ2VudCxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0YTogbWV0YVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZTogbWV0YS5wYWNrYWdlTmFtZSxcbiAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBtZXRhLmZpbGVOYW1lLFxuICAgICAgICAgICAgICAgICAgcmV2aXNpb246IG1ldGEucmV2aXNpb24sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBlbWl0OiAoXG4gICAgICAgICAgICB0b3BpYzogc3RyaW5nLFxuICAgICAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICAgICAgc3ViamVjdDogc3RyaW5nLFxuICAgICAgICAgICAgZGF0YT86IHtcbiAgICAgICAgICAgICAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVzc2FnZUlkPzogc3RyaW5nLFxuICAgICAgICApID0+XG4gICAgICAgICAgICBldmVudFRyYW5zcG9ydC5zZW5kRXZlbnQodG9waWMsIHR5cGUsIHN1YmplY3QsIGRhdGEsIG1lc3NhZ2VJZCwgb3V0ZXJDb250cm9sbGVyLnNpZ25hbCksXG4gICAgICAgIG9uU3VjY2VzczogKGZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZCkgPT4gc3VjY2Vzc0hhbmRsZXJzLnB1c2goZm4pLFxuICAgIH1cbiAgICBjb25zdCB0aW1lb3V0SGFuZGxlID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignVGltZW91dC4nLCB1bmRlZmluZWQsIHVuZGVmaW5lZClcbiAgICAgICAgaW5uZXJDb250cm9sbGVyLmFib3J0KClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgICAgdm9pZCBsb2dnZXIuZmx1c2goKVxuICAgIH0sIHRpbWVvdXQpXG4gICAgY29uc3QgZmx1c2hIYW5kbGUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdBYm9ydGluZyBmbHVzaC4nLCB1bmRlZmluZWQsIHVuZGVmaW5lZClcbiAgICAgICAgb3V0ZXJDb250cm9sbGVyLmFib3J0KClcbiAgICB9LCB0aW1lb3V0ICsgMTVfMDAwKVxuICAgIHJldHVybiB7XG4gICAgICAgIGxvZzogbG9nZ2VyLFxuICAgICAgICBjb250ZXh0OiBjdHgsXG4gICAgICAgIHN1Y2Nlc3M6ICgpID0+IFByb21pc2UuYWxsKHN1Y2Nlc3NIYW5kbGVycy5tYXAoZm4gPT4gZm4oKSkuZmlsdGVyKHIgPT4gISFyKSksXG4gICAgICAgIGZsdXNoOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSlcbiAgICAgICAgICAgIGF3YWl0IGxvZ2dlci5mbHVzaCgpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoZmx1c2hIYW5kbGUpXG4gICAgICAgIH0sXG4gICAgfVxufVxuXG5sZXQgZ2xvYmFsTG9nZ2VyOiBMb2dnZXIgfCB1bmRlZmluZWRcblxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnIgPT4ge1xuICAgIGdsb2JhbExvZ2dlcj8uZmF0YWwoJ1VuY2F1Z2h0IGV4Y2VwdGlvbi4nLCBlcnIsIHVuZGVmaW5lZClcbn0pXG5wcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCByZWFzb24gPT4ge1xuICAgIGdsb2JhbExvZ2dlcj8uZmF0YWwoJ1VuaGFuZGxlZCByZWplY3Rpb24uJywgcmVhc29uLCB1bmRlZmluZWQpXG59KVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQXFDekMsTUFBTSxjQUFjO0lBQ1AsV0FBVyxDQUFnQjtJQUMzQixXQUFXLENBQVE7SUFFNUIsWUFBWSxVQUEwQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQTtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFBO0lBQzlGLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBbUIsRUFBRSxNQUFtQjtRQUNoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFNO1FBQ1YsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQTZCLENBQUE7SUFDNUQsQ0FBQztDQUNKO0FBT0QsTUFBTSxVQUFVLGFBQWEsQ0FDekIsVUFBc0IsRUFDdEIsT0FBdUIsRUFDdkIsY0FBOEIsRUFDOUIsUUFBMkMsRUFDM0MsZUFBZ0MsRUFDaEMsTUFBMEIsRUFDMUIsSUFBZSxFQUNmLFdBQWtDLEVBQ2xDLEdBQWdCO0lBT2hCLE1BQU0sT0FBTyxHQUNULENBQUMsUUFBUSxDQUFDLEdBQUc7UUFD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O0lBQzNCLENBQUMsRUFBRSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUE7SUFDcEIsT0FBTztRQUNILEdBQUcsRUFBRSxNQUFNO1FBQ1gsT0FBTyxFQUFFLEdBQUc7UUFDWixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2QsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQzNCLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQ3BCLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM3QixDQUFDO0tBQ0osQ0FBQTtBQUNMLENBQUM7QUFFRCxJQUFJLFlBQWdDLENBQUE7QUFFcEMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsRUFBRTtJQUNsQyxZQUFZLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUM5RCxDQUFDLENBQUMsQ0FBQTtBQUNGLE9BQU8sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLEVBQUU7SUFDdEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFDbEUsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0LCBFbnZpcm9ubWVudCwgSnNvbiwgTG9nZ2VyLCB0eXBlIEpzb25TYWZlT2JqZWN0IH0gZnJvbSAnLi4vY29udGV4dC5qcydcbmltcG9ydCB7IG1ha2VMb2dnZXIgfSBmcm9tICcuL2xvZ2dpbmcuanMnXG5pbXBvcnQgdHlwZSB7IEZ1bGxDb25maWd1cmF0aW9uLCBNZXRhZGF0YSB9IGZyb20gJy4vbWV0YS5qcydcblxuZXhwb3J0IHR5cGUgQ2xpZW50SW5mbyA9IHtcbiAgICByZWFkb25seSBvcGVyYXRpb25JZD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGNsaWVudElkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2xpZW50SXA/OiBzdHJpbmdcbiAgICByZWFkb25seSBjbGllbnRQb3J0PzogbnVtYmVyXG4gICAgcmVhZG9ubHkgdXNlckFnZW50Pzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEV2ZW50VHJhbnNwb3J0ID0ge1xuICAgIHNlbmRFdmVudChcbiAgICAgICAgdG9waWM6IHN0cmluZyxcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBzdWJqZWN0OiBzdHJpbmcsXG4gICAgICAgIGRhdGE6IEpzb25TYWZlT2JqZWN0IHwgdW5kZWZpbmVkLFxuICAgICAgICBtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgc2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgICApOiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gJ3RyYWNlJyB8ICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybmluZycgfCAnZXJyb3InIHwgJ2ZhdGFsJ1xuXG5leHBvcnQgdHlwZSBMb2dFbnRyeSA9IHtcbiAgICByZWFkb25seSBsZXZlbDogTG9nTGV2ZWxcbiAgICByZWFkb25seSB0aW1lc3RhbXA6IG51bWJlclxuICAgIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZ1xuICAgIHJlYWRvbmx5IGVycm9yOiB1bmtub3duXG4gICAgcmVhZG9ubHkganNvbjogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIExvZ1RyYW5zcG9ydCA9IHtcbiAgICByZWFkb25seSBwdWJsaXNoUmF0ZT86IG51bWJlclxuICAgIHNlbmRFbnRyaWVzKGVudHJpZXM6IExvZ0VudHJ5W10sIHNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkIHwgdm9pZFxufVxuXG5jbGFzcyBMb2dNdWx0aWNhc3RlciBpbXBsZW1lbnRzIExvZ1RyYW5zcG9ydCB7XG4gICAgcmVhZG9ubHkgI3RyYW5zcG9ydHM6IExvZ1RyYW5zcG9ydFtdXG4gICAgcmVhZG9ubHkgcHVibGlzaFJhdGU6IG51bWJlclxuXG4gICAgY29uc3RydWN0b3IodHJhbnNwb3J0czogTG9nVHJhbnNwb3J0W10pIHtcbiAgICAgICAgdGhpcy4jdHJhbnNwb3J0cyA9IHRyYW5zcG9ydHNcbiAgICAgICAgdGhpcy5wdWJsaXNoUmF0ZSA9IHRyYW5zcG9ydHMubWFwKHQgPT4gdC5wdWJsaXNoUmF0ZSkuc29ydCgpWzBdID8/IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG4gICAgfVxuXG4gICAgc2VuZEVudHJpZXMoZW50cmllczogTG9nRW50cnlbXSwgc2lnbmFsOiBBYm9ydFNpZ25hbCkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuI3RyYW5zcG9ydHMubWFwKHQgPT4gdC5zZW5kRW50cmllcyhlbnRyaWVzLCBzaWduYWwpKS5maWx0ZXIocCA9PiAhIXApXG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykgYXMgdW5rbm93biBhcyBQcm9taXNlPHZvaWQ+XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBSb290TG9nZ2VyID0ge1xuICAgIGVucmljaFJlc2VydmVkKGZpZWxkczogb2JqZWN0KTogUm9vdExvZ2dlclxuICAgIGZsdXNoKCk6IFByb21pc2U8dm9pZD5cbn0gJiBMb2dnZXJcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoXG4gICAgY2xpZW50SW5mbzogQ2xpZW50SW5mbyxcbiAgICBsb2dnZXJzOiBMb2dUcmFuc3BvcnRbXSxcbiAgICBldmVudFRyYW5zcG9ydDogRXZlbnRUcmFuc3BvcnQsXG4gICAgdGltZW91dHM6IHsgZGVmYXVsdDogbnVtYmVyOyBjYXA/OiBudW1iZXIgfSxcbiAgICBvdXRlckNvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlcixcbiAgICBjb25maWc/OiBGdWxsQ29uZmlndXJhdGlvbixcbiAgICBtZXRhPzogTWV0YWRhdGEsXG4gICAgZW52aXJvbm1lbnQ/OiBQYXJ0aWFsPEVudmlyb25tZW50PixcbiAgICBub3c/OiAoKSA9PiBEYXRlLFxuKToge1xuICAgIGxvZzogUm9vdExvZ2dlclxuICAgIGNvbnRleHQ6IE9taXQ8Q29udGV4dCwgJ2xvZyc+XG4gICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZTx1bmtub3duPlxuICAgIGZsdXNoOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59IHtcbiAgICBjb25zdCB0aW1lb3V0ID1cbiAgICAgICAgKHRpbWVvdXRzLmNhcFxuICAgICAgICAgICAgPyBNYXRoLm1pbihjb25maWc/LnRpbWVvdXQgPz8gdGltZW91dHMuZGVmYXVsdCwgdGltZW91dHMuY2FwKVxuICAgICAgICAgICAgOiAoY29uZmlnPy50aW1lb3V0ID8/IHRpbWVvdXRzLmRlZmF1bHQpKSAqIDEwMDBcbiAgICBjb25zdCBpbm5lckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIGNvbnN0IGxvZ1RyYW5zcG9ydCA9IGxvZ2dlcnMubGVuZ3RoID09PSAxID8gbG9nZ2Vyc1swXSEgOiBuZXcgTG9nTXVsdGljYXN0ZXIobG9nZ2VycylcbiAgICBjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKFxuICAgICAgICBsb2dUcmFuc3BvcnQsXG4gICAgICAgIGNvbmZpZz8ubWluaW11bUxvZ0xldmVsLFxuICAgICAgICBvdXRlckNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICkuZW5yaWNoUmVzZXJ2ZWQoe1xuICAgICAgICBvcGVyYXRpb25JZDogY2xpZW50SW5mby5vcGVyYXRpb25JZCxcbiAgICAgICAgY2xpZW50OiB7XG4gICAgICAgICAgICBpZDogY2xpZW50SW5mby5jbGllbnRJZCxcbiAgICAgICAgICAgIGlwOiBjbGllbnRJbmZvLmNsaWVudElwLFxuICAgICAgICAgICAgcG9ydDogY2xpZW50SW5mby5jbGllbnRQb3J0LFxuICAgICAgICAgICAgdXNlckFnZW50OiBjbGllbnRJbmZvLnVzZXJBZ2VudCxcbiAgICAgICAgfSxcbiAgICB9KVxuICAgIGdsb2JhbExvZ2dlciA9IGxvZ2dlclxuICAgIGNvbnN0IHN1Y2Nlc3NIYW5kbGVyczogKCgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkKVtdID0gW11cbiAgICBjb25zdCBjdHggPSB7XG4gICAgICAgIGVudjogKGVudmlyb25tZW50ID8/IHByb2Nlc3MuZW52KSBhcyBFbnZpcm9ubWVudCxcbiAgICAgICAgc2lnbmFsOiBpbm5lckNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBub3c6IG5vdyA/PyAoKCkgPT4gbmV3IERhdGUoKSksXG4gICAgICAgIG9wZXJhdGlvbklkOiBjbGllbnRJbmZvLm9wZXJhdGlvbklkLFxuICAgICAgICBjbGllbnQ6IHtcbiAgICAgICAgICAgIGlkOiBjbGllbnRJbmZvLmNsaWVudElkLFxuICAgICAgICAgICAgaXA6IGNsaWVudEluZm8uY2xpZW50SXAsXG4gICAgICAgICAgICBwb3J0OiBjbGllbnRJbmZvLmNsaWVudFBvcnQsXG4gICAgICAgICAgICB1c2VyQWdlbnQ6IGNsaWVudEluZm8udXNlckFnZW50LFxuICAgICAgICB9LFxuICAgICAgICBtZXRhOiBtZXRhXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBtZXRhLnBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IG1ldGEuZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgICByZXZpc2lvbjogbWV0YS5yZXZpc2lvbixcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGVtaXQ6IChcbiAgICAgICAgICAgIHRvcGljOiBzdHJpbmcsXG4gICAgICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgICAgICBzdWJqZWN0OiBzdHJpbmcsXG4gICAgICAgICAgICBkYXRhPzoge1xuICAgICAgICAgICAgICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXNzYWdlSWQ/OiBzdHJpbmcsXG4gICAgICAgICkgPT5cbiAgICAgICAgICAgIGV2ZW50VHJhbnNwb3J0LnNlbmRFdmVudCh0b3BpYywgdHlwZSwgc3ViamVjdCwgZGF0YSwgbWVzc2FnZUlkLCBvdXRlckNvbnRyb2xsZXIuc2lnbmFsKSxcbiAgICAgICAgb25TdWNjZXNzOiAoZm46ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkKSA9PiBzdWNjZXNzSGFuZGxlcnMucHVzaChmbiksXG4gICAgfVxuICAgIGNvbnN0IHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdUaW1lb3V0LicsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKVxuICAgICAgICBpbm5lckNvbnRyb2xsZXIuYWJvcnQoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZFxuICAgICAgICB2b2lkIGxvZ2dlci5mbHVzaCgpXG4gICAgfSwgdGltZW91dClcbiAgICBjb25zdCBmbHVzaEhhbmRsZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Fib3J0aW5nIGZsdXNoLicsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKVxuICAgICAgICBvdXRlckNvbnRyb2xsZXIuYWJvcnQoKVxuICAgIH0sIHRpbWVvdXQgKyAxNV8wMDApXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9nOiBsb2dnZXIsXG4gICAgICAgIGNvbnRleHQ6IGN0eCxcbiAgICAgICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZS5hbGwoc3VjY2Vzc0hhbmRsZXJzLm1hcChmbiA9PiBmbigpKS5maWx0ZXIociA9PiAhIXIpKSxcbiAgICAgICAgZmx1c2g6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKVxuICAgICAgICAgICAgYXdhaXQgbG9nZ2VyLmZsdXNoKClcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChmbHVzaEhhbmRsZSlcbiAgICAgICAgfSxcbiAgICB9XG59XG5cbmxldCBnbG9iYWxMb2dnZXI6IExvZ2dlciB8IHVuZGVmaW5lZFxuXG5wcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGVyciA9PiB7XG4gICAgZ2xvYmFsTG9nZ2VyPy5mYXRhbCgnVW5jYXVnaHQgZXhjZXB0aW9uLicsIGVyciwgdW5kZWZpbmVkKVxufSlcbnByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIHJlYXNvbiA9PiB7XG4gICAgZ2xvYmFsTG9nZ2VyPy5mYXRhbCgnVW5oYW5kbGVkIHJlamVjdGlvbi4nLCByZWFzb24sIHVuZGVmaW5lZClcbn0pXG4iXX0=
package/host/event.d.ts CHANGED
@@ -1,11 +1,9 @@
1
- import { Context, type Json } from '../context.js';
1
+ import { Context, type JsonObject } from '../context.js';
2
2
  import { RootLogger } from './context.js';
3
3
  import type { EventHandler } from './event-registry.js';
4
4
  export declare function handle(log: RootLogger, context: Omit<Context, 'log'>, handler: EventHandler, options: {
5
5
  readonly subject: string;
6
- readonly event: {
7
- readonly [key: string]: Json;
8
- } | undefined;
6
+ readonly event: JsonObject | undefined;
9
7
  readonly timestamp: Date;
10
8
  readonly messageId?: string;
11
9
  }, success: () => Promise<unknown>): Promise<boolean>;
package/host/event.js CHANGED
@@ -14,4 +14,4 @@ export async function handle(log, context, handler, options, success) {
14
14
  return false;
15
15
  }
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hDLE9BQU8sRUFBVyxPQUFPLEVBQWEsTUFBTSxlQUFlLENBQUE7QUFJM0QsTUFBTSxDQUFDLEtBQUssVUFBVSxNQUFNLENBQ3hCLEdBQWUsRUFDZixPQUE2QixFQUM3QixPQUFxQixFQUNyQixPQVNDLEVBQ0QsT0FBK0I7SUFFL0IsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzlFLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDaEMsSUFBSSxDQUFDO1FBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQ3hFLE9BQU8sQ0FBQyxLQUFLLENBQ1QsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEVBQ2hDLE9BQU8sQ0FBQyxPQUFPLEVBQ2YsT0FBTyxDQUFDLEtBQUssRUFDYixPQUFPLENBQUMsU0FBUyxFQUNqQixPQUFPLENBQUMsU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ3hELENBQ0osQ0FBQTtRQUNELFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDOUIsTUFBTSxPQUFPLEVBQUUsQ0FBQTtRQUNmLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDVCxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNqQyxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdub2RlOmNyeXB0bydcbmltcG9ydCB7IENvbnRleHQsIG1lYXN1cmUsIHR5cGUgSnNvbiB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBSb290TG9nZ2VyIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tICcuL2V2ZW50LXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlKFxuICAgIGxvZzogUm9vdExvZ2dlcixcbiAgICBjb250ZXh0OiBPbWl0PENvbnRleHQsICdsb2cnPixcbiAgICBoYW5kbGVyOiBFdmVudEhhbmRsZXIsXG4gICAgb3B0aW9uczoge1xuICAgICAgICByZWFkb25seSBzdWJqZWN0OiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgZXZlbnQ6XG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb25cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfCB1bmRlZmluZWRcbiAgICAgICAgcmVhZG9ubHkgdGltZXN0YW1wOiBEYXRlXG4gICAgICAgIHJlYWRvbmx5IG1lc3NhZ2VJZD86IHN0cmluZ1xuICAgIH0sXG4gICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZTx1bmtub3duPixcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGVucmljaGVkTG9nID0gbG9nLmVucmljaFJlc2VydmVkKHsgbWV0YTogY29udGV4dC5tZXRhLCBldmVudDogb3B0aW9ucyB9KVxuICAgIGVucmljaGVkTG9nLnRyYWNlKCdFdmVudCBCRUdJTicpXG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbWVhc3VyZShsb2cuZW5yaWNoUmVzZXJ2ZWQoeyBtZXRhOiBjb250ZXh0Lm1ldGEgfSksICdleGVjdXRpb24nLCAoKSA9PlxuICAgICAgICAgICAgaGFuZGxlci5lbnRyeShcbiAgICAgICAgICAgICAgICB7IC4uLmNvbnRleHQsIGxvZzogZW5yaWNoZWRMb2cgfSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLnN1YmplY3QsXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ldmVudCxcbiAgICAgICAgICAgICAgICBvcHRpb25zLnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICBvcHRpb25zLm1lc3NhZ2VJZCA/PyByYW5kb21VVUlEKCkucmVwbGFjZUFsbCgnLScsICcnKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgZW5yaWNoZWRMb2cuZGVidWcoJ0V2ZW50IEVORCcpXG4gICAgICAgIGF3YWl0IHN1Y2Nlc3MoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZW5yaWNoZWRMb2cuZXJyb3IoJ0V2ZW50IEVORCcsIGUpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbn1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hDLE9BQU8sRUFBVyxPQUFPLEVBQW1CLE1BQU0sZUFBZSxDQUFBO0FBSWpFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTSxDQUN4QixHQUFlLEVBQ2YsT0FBNkIsRUFDN0IsT0FBcUIsRUFDckIsT0FLQyxFQUNELE9BQStCO0lBRS9CLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUM5RSxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ2hDLElBQUksQ0FBQztRQUNELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUN4RSxPQUFPLENBQUMsS0FBSyxDQUNULEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUNoQyxPQUFPLENBQUMsT0FBTyxFQUNmLE9BQU8sQ0FBQyxLQUFLLEVBQ2IsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUN4RCxDQUNKLENBQUE7UUFDRCxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzlCLE1BQU0sT0FBTyxFQUFFLENBQUE7UUFDZixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDakMsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQgeyBDb250ZXh0LCBtZWFzdXJlLCB0eXBlIEpzb25PYmplY3QgfSBmcm9tICcuLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgUm9vdExvZ2dlciB9IGZyb20gJy4vY29udGV4dC5qcydcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi9ldmVudC1yZWdpc3RyeS5qcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZShcbiAgICBsb2c6IFJvb3RMb2dnZXIsXG4gICAgY29udGV4dDogT21pdDxDb250ZXh0LCAnbG9nJz4sXG4gICAgaGFuZGxlcjogRXZlbnRIYW5kbGVyLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcmVhZG9ubHkgc3ViamVjdDogc3RyaW5nXG4gICAgICAgIHJlYWRvbmx5IGV2ZW50OiBKc29uT2JqZWN0IHwgdW5kZWZpbmVkXG4gICAgICAgIHJlYWRvbmx5IHRpbWVzdGFtcDogRGF0ZVxuICAgICAgICByZWFkb25seSBtZXNzYWdlSWQ/OiBzdHJpbmdcbiAgICB9LFxuICAgIHN1Y2Nlc3M6ICgpID0+IFByb21pc2U8dW5rbm93bj4sXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBlbnJpY2hlZExvZyA9IGxvZy5lbnJpY2hSZXNlcnZlZCh7IG1ldGE6IGNvbnRleHQubWV0YSwgZXZlbnQ6IG9wdGlvbnMgfSlcbiAgICBlbnJpY2hlZExvZy50cmFjZSgnRXZlbnQgQkVHSU4nKVxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG1lYXN1cmUobG9nLmVucmljaFJlc2VydmVkKHsgbWV0YTogY29udGV4dC5tZXRhIH0pLCAnZXhlY3V0aW9uJywgKCkgPT5cbiAgICAgICAgICAgIGhhbmRsZXIuZW50cnkoXG4gICAgICAgICAgICAgICAgeyAuLi5jb250ZXh0LCBsb2c6IGVucmljaGVkTG9nIH0sXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zdWJqZWN0LFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuZXZlbnQsXG4gICAgICAgICAgICAgICAgb3B0aW9ucy50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlSWQgPz8gcmFuZG9tVVVJRCgpLnJlcGxhY2VBbGwoJy0nLCAnJyksXG4gICAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIGVucmljaGVkTG9nLmRlYnVnKCdFdmVudCBFTkQnKVxuICAgICAgICBhd2FpdCBzdWNjZXNzKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGVucmljaGVkTG9nLmVycm9yKCdFdmVudCBFTkQnLCBlKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG59XG4iXX0=
package/host/http.d.ts CHANGED
@@ -24,6 +24,6 @@ type JsonRequestOptions = BodylessRequestOptions & {
24
24
  };
25
25
  export declare function executeRequest(log: RootLogger, context: Omit<Context, 'log'>, handler: HttpHandler, options: RequestOptions, success: () => Promise<unknown>): Promise<Response>;
26
26
  export declare function clientFromHeaders(headers: {
27
- readonly [key: string]: string;
27
+ readonly [key: string]: string | undefined;
28
28
  } | undefined): ClientInfo;
29
29
  export {};
package/host/http.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { hash } from 'node:crypto';
2
+ import { isIP } from 'node:net';
2
3
  import { brotliCompress } from 'node:zlib';
3
4
  import { measure } from '../context.js';
4
5
  export async function executeRequest(log, context, handler, options, success) {
@@ -217,18 +218,83 @@ export function clientFromHeaders(headers) {
217
218
  if (!headers) {
218
219
  return {};
219
220
  }
220
- const address = headers['x-forwarded-for']?.split(':');
221
221
  return {
222
222
  operationId: headers['x-request-id'] ?? headers['request-id'],
223
223
  clientId: headers['x-client-id'] ??
224
224
  headers['x-installation-id'] ??
225
225
  headers['client-id'] ??
226
226
  headers['installation-id'],
227
- clientIp: address?.[0],
228
- clientPort: Number(address?.[1]) || undefined,
227
+ ...clientAddress(headers),
229
228
  userAgent: headers['x-forwarded-for-user-agent'] ?? headers['user-agent'],
230
229
  };
231
230
  }
231
+ function clientAddress(headers) {
232
+ const xff = headers['x-forwarded-for'];
233
+ if (!xff) {
234
+ return undefined;
235
+ }
236
+ for (const a of xff.split(',')) {
237
+ const valid = validClientAddress(a.trim());
238
+ if (valid) {
239
+ return valid;
240
+ }
241
+ }
242
+ return undefined;
243
+ }
244
+ function validClientAddress(s) {
245
+ const version = isIP(s);
246
+ if (version === 4) {
247
+ return { clientIp: s };
248
+ }
249
+ if (version === 6) {
250
+ return normalizedIp6(s);
251
+ }
252
+ if (s.startsWith('[') && s.endsWith(']')) {
253
+ return normalizedIp6(s.slice(1, -1));
254
+ }
255
+ if (s.startsWith(':')) {
256
+ const clientPort = Number(s.slice(1));
257
+ if (Number.isFinite(clientPort)) {
258
+ return { clientPort };
259
+ }
260
+ return undefined;
261
+ }
262
+ const url = `ip://${s}/`;
263
+ if (URL.canParse(url)) {
264
+ return addressFromUrl(new URL(url));
265
+ }
266
+ return undefined;
267
+ }
268
+ function normalizedIp6(s) {
269
+ const mapped = mappedAddress(s);
270
+ if (mapped) {
271
+ return { clientIp: mapped };
272
+ }
273
+ const url = new URL(`ip://[${s}]/`);
274
+ return { clientIp: url.hostname.slice(1, -1) };
275
+ }
276
+ function addressFromUrl(url) {
277
+ const clientIp = url.hostname.startsWith('[') && url.hostname.endsWith(']')
278
+ ? url.hostname.slice(1, -1)
279
+ : url.hostname;
280
+ const clientPort = url.port ? Number(url.port) : undefined;
281
+ if (isIP(clientIp)) {
282
+ return {
283
+ clientIp,
284
+ clientPort,
285
+ };
286
+ }
287
+ return undefined;
288
+ }
289
+ function mappedAddress(s) {
290
+ if (s.startsWith('::ffff:')) {
291
+ const ip4 = s.slice(7);
292
+ if (isIP(ip4) === 4) {
293
+ return ip4;
294
+ }
295
+ }
296
+ return undefined;
297
+ }
232
298
  function eTagged(requestHeaders, response) {
233
299
  if (response.headers.etag || !response.body) {
234
300
  return response;
@@ -269,4 +335,4 @@ function compress(body) {
269
335
  });
270
336
  });
271
337
  }
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sRUFBVyxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUE7QUEwQmhELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUNoQyxHQUFlLEVBQ2YsT0FBNkIsRUFDN0IsT0FBb0IsRUFDcEIsT0FBdUIsRUFDdkIsT0FBK0I7SUFFL0IsTUFBTSxTQUFTLEdBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFBO0lBQ3pGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFBO0lBQzlELE1BQU0sVUFBVSxHQUFHLGlCQUFpQjtRQUNoQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBRTtRQUN4QyxDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDaEUsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQ2pGLElBQUksU0FBUyxFQUFFLENBQUM7UUFDWixXQUFXLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDcEMsT0FBTztZQUNILE9BQU8sRUFBRSxFQUFFO1lBQ1gsTUFBTSxFQUFFLEdBQUc7U0FDZCxDQUFB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RSxFQUFFO1lBQ3ZDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNiLE9BQU07WUFDVixDQUFDO1lBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ25CLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaGFzaCB9IGZyb20gJ25vZGU6Y3J5cHRvJ1xuaW1wb3J0IHsgYnJvdGxpQ29tcHJlc3MgfSBmcm9tICdub2RlOnpsaWInXG5pbXBvcnQgeyBDb250ZXh0LCBtZWFzdXJlIH0gZnJvbSAnLi4vY29udGV4dC5qcydcbmltcG9ydCB0eXBlIHsgSnNvbiwgUGFyc2VkVXJsLCBSZXNwb25zZUhlYWRlcnMsIFJlc3VsdCB9IGZyb20gJy4uL2h0dHAuanMnXG5pbXBvcnQgeyBDbGllbnRJbmZvLCBSb290TG9nZ2VyIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHR5cGUgeyBIdHRwSGFuZGxlciB9IGZyb20gJy4vaHR0cC1yZWdpc3RyeS5qcydcblxuZXhwb3J0IHR5cGUgUmVzcG9uc2UgPSB7XG4gICAgaGVhZGVyczogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIHN0YXR1czogbnVtYmVyXG4gICAgYm9keT86IHN0cmluZyB8IEJ1ZmZlclxufVxuXG50eXBlIFJlcXVlc3RPcHRpb25zID0gQm9keWxlc3NSZXF1ZXN0T3B0aW9ucyB8IFN0cmluZ1JlcXVlc3RPcHRpb25zIHwgSnNvblJlcXVlc3RPcHRpb25zXG5cbnR5cGUgQm9keWxlc3NSZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICB1cmk6IHN0cmluZ1xuICAgIGhlYWRlcnM/OiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG59XG5cbnR5cGUgU3RyaW5nUmVxdWVzdE9wdGlvbnMgPSBCb2R5bGVzc1JlcXVlc3RPcHRpb25zICYge1xuICAgIGJvZHk6IHN0cmluZ1xufVxuXG50eXBlIEpzb25SZXF1ZXN0T3B0aW9ucyA9IEJvZHlsZXNzUmVxdWVzdE9wdGlvbnMgJiB7XG4gICAganNvbjogSnNvblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVJlcXVlc3QoXG4gICAgbG9nOiBSb290TG9nZ2VyLFxuICAgIGNvbnRleHQ6IE9taXQ8Q29udGV4dCwgJ2xvZyc+LFxuICAgIGhhbmRsZXI6IEh0dHBIYW5kbGVyLFxuICAgIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxuICAgIHN1Y2Nlc3M6ICgpID0+IFByb21pc2U8dW5rbm93bj4sXG4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgaXNTaGFsbG93ID1cbiAgICAgICAgY29udGV4dC5lbnYuU0hBTExPV19LRVkgJiYgb3B0aW9ucy5oZWFkZXJzPy5bJ3gtc2hhbGxvdyddID09PSBjb250ZXh0LmVudi5TSEFMTE9XX0tFWVxuICAgIGNvbnN0IGluY2x1ZGVCb2R5SW5Mb2dzID0gIWhhbmRsZXIuY29uZmlnPy5leGNsdWRlQm9keUZyb21Mb2dzXG4gICAgY29uc3QgbG9nUmVxdWVzdCA9IGluY2x1ZGVCb2R5SW5Mb2dzXG4gICAgICAgID8geyBtZXRob2Q6IGhhbmRsZXIubWV0aG9kLCAuLi5vcHRpb25zIH1cbiAgICAgICAgOiB3aXRob3V0UmVxdWVzdEJvZHkoeyBtZXRob2Q6IGhhbmRsZXIubWV0aG9kLCAuLi5vcHRpb25zIH0pXG4gICAgbGV0IGVucmljaGVkTG9nID0gbG9nLmVucmljaFJlc2VydmVkKHsgbWV0YTogY29udGV4dC5tZXRhLCByZXF1ZXN0OiBsb2dSZXF1ZXN0IH0pXG4gICAgaWYgKGlzU2hhbGxvdykge1xuICAgICAgICBlbnJpY2hlZExvZy50cmFjZSgnU2hhbGxvdyByZXF1ZXN0JylcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICAgICAgc3RhdHVzOiAyMDQsXG4gICAgICAgIH1cbiAgICB9XG4gICAgZW5yaWNoZWRMb2cudHJhY2UoJ1JlcXVlc3QgQkVHSU4nKVxuICAgIHRyeSB7XG4gICAgICAgIGxldCBwYXJzZWRVcmw6XG4gICAgICAgICAgICB8IChQYXJzZWRVcmwgJiB7XG4gICAgICAgICAgICAgICAgICAvKiogQGlnbm9yZSAqL1xuICAgICAgICAgICAgICAgICAgX19wcm90b19fOiB1bmtub3duXG4gICAgICAgICAgICAgICAgICAvKiogQGlnbm9yZSAqL1xuICAgICAgICAgICAgICAgICAgdG9TdHJpbmc6ICgpID0+IHN0cmluZ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfCB1bmRlZmluZWRcbiAgICAgICAgbGV0IHBhdGhTdGVwczogc3RyaW5nW10gfCB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgcmVxID0ge1xuICAgICAgICAgICAgcmF3VXJsOiBvcHRpb25zLnVyaSxcbiAgICAgICAgICAgIGdldCB1cmwoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZFVybCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkVXJsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGhpcy5yYXdVcmwpXG4gICAgICAgICAgICAgICAgcGFyc2VkVXJsID0ge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby1udWxsXG4gICAgICAgICAgICAgICAgICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgaGFzaDogdXJsLmhhc2gsXG4gICAgICAgICAgICAgICAgICAgIGhvc3Q6IHVybC5ob3N0LFxuICAgICAgICAgICAgICAgICAgICBob3N0bmFtZTogdXJsLmhvc3RuYW1lLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiB1cmwuaHJlZixcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiB1cmwub3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogdXJsLnBhc3N3b3JkLFxuICAgICAgICAgICAgICAgICAgICBwYXRobmFtZTogdXJsLnBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICBwb3J0OiB1cmwucG9ydCxcbiAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w6IHVybC5wcm90b2NvbCxcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoOiB1cmwuc2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICBnZXQgc2VhcmNoUGFyYW1zKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybC5zZWFyY2hQYXJhbXNcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdG9KU09OOiAoKSA9PiB1cmwudG9KU09OKCksXG4gICAgICAgICAgICAgICAgICAgIHRvU3RyaW5nOiAoKSA9PiB1cmwudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU6IHVybC51c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aFN0ZXBBdDogKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBzID0gKHBhdGhTdGVwcyA/Pz0gdXJsLnBhdGhuYW1lLnNwbGl0KCcvJykpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGVwID0gc3RlcHNbaW5kZXggKyAxXVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFJhbmdlRXJyb3IoYFBhdGggZG9lcyBub3QgaGF2ZSBhIHN0ZXAgYXQgaW5kZXggJHtpbmRleH0uYCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd1VybDogdGhpcy5yYXdVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoTmFtZTogdXJsLnBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHM6IHN0ZXBzLnNsaWNlKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGVwXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiByZXF1ZXN0Qm9keShvcHRpb25zKSxcbiAgICAgICAgICAgIGhlYWRlcnM6IG9wdGlvbnMuaGVhZGVycyA/PyB7fSxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1lYXN1cmUobG9nLmVucmljaFJlc2VydmVkKHsgbWV0YTogY29udGV4dC5tZXRhIH0pLCAnZXhlY3V0aW9uJywgKCkgPT5cbiAgICAgICAgICAgIGhhbmRsZXIuZW50cnkoeyAuLi5jb250ZXh0LCBsb2c6IGVucmljaGVkTG9nIH0sIHJlcSksXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlc3VsdFRvUmVzcG9uc2UocmVzdWx0LCBpbmNsdWRlQm9keUluTG9ncylcblxuICAgICAgICBpZiAoY29udGV4dC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVycyA9IHtcbiAgICAgICAgICAgICAgICAneC10aW1lb3V0JzogJzEnLFxuICAgICAgICAgICAgICAgIC4uLnJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBlbnJpY2hlZExvZyA9IGVucmljaGVkTG9nLmVucmljaFJlc2VydmVkKHtcbiAgICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICAgICAgICBib2R5OiByZXNwb25zZS5sb2dCb2R5LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA8IDMwMCkge1xuICAgICAgICAgICAgZW5yaWNoZWRMb2cuZGVidWcoJ1JlcXVlc3QgRU5EJylcbiAgICAgICAgICAgIGF3YWl0IHN1Y2Nlc3MoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW5yaWNoZWRMb2cud2FybignUmVxdWVzdCBFTkQnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCBjb21wcmVzc2VkKHJlcS5oZWFkZXJzLCBlVGFnZ2VkKHJlcS5oZWFkZXJzLCByZXNwb25zZSkpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBlcnJvclRvUmVzcG9uc2UoZSlcbiAgICAgICAgICAgIGVucmljaGVkTG9nID0gZW5yaWNoZWRMb2cuZW5yaWNoUmVzZXJ2ZWQoeyByZXNwb25zZSB9KVxuICAgICAgICAgICAgZW5yaWNoZWRMb2cuZXJyb3IoJ1JlcXVlc3QgRU5EJywgZSlcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9IGNhdGNoIChjb252ZXJ0RXJyb3IpIHtcbiAgICAgICAgICAgIGVucmljaGVkTG9nLmVycm9yKCdDb3VsZCBub3QgY29udmVydCBleGNlcHRpb24gdG8gZXJyb3IgcmVzcG9uc2UuJywgY29udmVydEVycm9yKVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IDUwMCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVzdWx0VG9SZXNwb25zZShyZXN1bHQ6IFJlc3VsdCwgd2l0aExvZ0JvZHk6IGJvb2xlYW4pOiBSZXNwb25zZSAmIHsgbG9nQm9keT86IHVua25vd24gfSB7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICAgICAgc3RhdHVzOiAyMDQsXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGxvZ0JvZHkgPSB3aXRoTG9nQm9keSA/IHJlc3VsdCA6IHVuZGVmaW5lZFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAndGV4dC9wbGFpbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgICAgICBib2R5OiByZXN1bHQsXG4gICAgICAgICAgICBsb2dCb2R5LFxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlc3VsdC5ib2R5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnMgPz8ge30sXG4gICAgICAgICAgICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzID8/IDIwMCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0LmJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBsb2dCb2R5ID0gd2l0aExvZ0JvZHkgPyByZXN1bHQuYm9keSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB3aXRoQ29udGVudFR5cGUocmVzdWx0LmhlYWRlcnMsICd0ZXh0L3BsYWluJyksXG4gICAgICAgICAgICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzID8/IDIwMCxcbiAgICAgICAgICAgICAgICBib2R5OiByZXN1bHQuYm9keSxcbiAgICAgICAgICAgICAgICBsb2dCb2R5LFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcihyZXN1bHQuYm9keSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ0JvZHkgPSB3aXRoTG9nQm9keSA/IHJlc3VsdC5ib2R5LnRvU3RyaW5nKCdiYXNlNjQnKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB3aXRoQ29udGVudFR5cGUocmVzdWx0LmhlYWRlcnMsICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMgPz8gMjAwLFxuICAgICAgICAgICAgICAgIGJvZHk6IHJlc3VsdC5ib2R5LFxuICAgICAgICAgICAgICAgIGxvZ0JvZHksXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsb2dCb2R5ID0gd2l0aExvZ0JvZHkgPyByZXN1bHQuYm9keSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB3aXRoQ29udGVudFR5cGUocmVzdWx0LmhlYWRlcnMsICdhcHBsaWNhdGlvbi9qc29uJyksXG4gICAgICAgICAgICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzID8/IDIwMCxcbiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShyZXN1bHQuYm9keSksXG4gICAgICAgICAgICAgICAgbG9nQm9keSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gd2l0aG91dFJlcXVlc3RCb2R5KG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zICYgeyBtZXRob2Q6IHN0cmluZyB9KSB7XG4gICAgaWYgKCdqc29uJyBpbiBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHsganNvbiwgLi4uYm9keWxlc3MgfSA9IG9wdGlvbnNcbiAgICAgICAgcmV0dXJuIGJvZHlsZXNzXG4gICAgfVxuICAgIGlmICgnYm9keScgaW4gb3B0aW9ucykge1xuICAgICAgICBjb25zdCB7IGJvZHksIC4uLmJvZHlsZXNzIH0gPSBvcHRpb25zXG4gICAgICAgIHJldHVybiBib2R5bGVzc1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiByZXF1ZXN0Qm9keShvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyk6IEpzb24gfCBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICgnanNvbicgaW4gb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5qc29uXG4gICAgfVxuICAgIGlmICgnYm9keScgaW4gb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5ib2R5XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gd2l0aENvbnRlbnRUeXBlKGhlYWRlcnM6IFJlc3BvbnNlSGVhZGVycyB8IHVuZGVmaW5lZCwgY29udGVudFR5cGU6IHN0cmluZykge1xuICAgIGlmICghaGVhZGVycykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6IGNvbnRlbnRUeXBlLFxuICAgICAgICB9XG4gICAgfVxuICAgIGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID8/PSBjb250ZW50VHlwZVxuICAgIHJldHVybiBoZWFkZXJzXG59XG5cbmZ1bmN0aW9uIGVycm9yVG9SZXNwb25zZShlOiB1bmtub3duKTogUmVzcG9uc2Uge1xuICAgIGNvbnN0IHsgYm9keSwgc3RhdHVzQ29kZTogc3RhdHVzIH0gPSBlIGFzIHsgYm9keT86IHVua25vd247IHN0YXR1c0NvZGU/OiBudW1iZXIgfVxuICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ3RleHQvcGxhaW4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzID8/IDUwMCxcbiAgICAgICAgICAgIGJvZHksXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gNTAwLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyA/PyA1MDAsXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGllbnRGcm9tSGVhZGVycyhcbiAgICBoZWFkZXJzOiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkLFxuKTogQ2xpZW50SW5mbyB7XG4gICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICAgIHJldHVybiB7fVxuICAgIH1cbiAgICBjb25zdCBhZGRyZXNzID0gaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ10/LnNwbGl0KCc6JylcbiAgICByZXR1cm4ge1xuICAgICAgICBvcGVyYXRpb25JZDogaGVhZGVyc1sneC1yZXF1ZXN0LWlkJ10gPz8gaGVhZGVyc1sncmVxdWVzdC1pZCddLFxuICAgICAgICBjbGllbnRJZDpcbiAgICAgICAgICAgIGhlYWRlcnNbJ3gtY2xpZW50LWlkJ10gPz9cbiAgICAgICAgICAgIGhlYWRlcnNbJ3gtaW5zdGFsbGF0aW9uLWlkJ10gPz9cbiAgICAgICAgICAgIGhlYWRlcnNbJ2NsaWVudC1pZCddID8/XG4gICAgICAgICAgICBoZWFkZXJzWydpbnN0YWxsYXRpb24taWQnXSxcbiAgICAgICAgY2xpZW50SXA6IGFkZHJlc3M/LlswXSxcbiAgICAgICAgY2xpZW50UG9ydDogTnVtYmVyKGFkZHJlc3M/LlsxXSkgfHwgdW5kZWZpbmVkLFxuICAgICAgICB1c2VyQWdlbnQ6IGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvci11c2VyLWFnZW50J10gPz8gaGVhZGVyc1sndXNlci1hZ2VudCddLFxuICAgIH1cbn1cblxuZnVuY3Rpb24gZVRhZ2dlZChcbiAgICByZXF1ZXN0SGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICByZXNwb25zZTogUmVzcG9uc2UgJiB7IGhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfSxcbik6IFJlc3BvbnNlIHtcbiAgICBpZiAocmVzcG9uc2UuaGVhZGVycy5ldGFnIHx8ICFyZXNwb25zZS5ib2R5KSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgIH1cbiAgICBjb25zdCBldGFnID0gaGFzaCgnc2hhMScsIHJlc3BvbnNlLmJvZHksICdiYXNlNjQnKS5zbGljZSgwLCAtMSlcbiAgICByZXNwb25zZS5oZWFkZXJzLmV0YWcgPSBldGFnXG4gICAgaWYgKHJlcXVlc3RIZWFkZXJzWydpZi1ub25lLW1hdGNoJ10gPT09IGV0YWcpIHtcbiAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID0gMzA0XG4gICAgICAgIGRlbGV0ZSByZXNwb25zZS5ib2R5XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb21wcmVzc2VkKFxuICAgIHJlcXVlc3RIZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIHJlc3BvbnNlOiBSZXNwb25zZSAmIHsgaGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9LFxuKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGlmICghcmVzcG9uc2UuYm9keSB8fCByZXNwb25zZS5ib2R5Lmxlbmd0aCA8IDMyXzc2OCB8fCByZXNwb25zZS5oZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10pIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgfVxuICAgIGNvbnN0IGVuY29kaW5ncyA9IHJlcXVlc3RIZWFkZXJzWydhY2NlcHQtZW5jb2RpbmcnXT8uc3BsaXQoJywnKS5tYXAoZSA9PiBlLnRyaW0oKSlcbiAgICBpZiAoIWVuY29kaW5ncz8uaW5jbHVkZXMoJ2JyJykpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnY29udGVudC1lbmNvZGluZyc6ICdicicsXG4gICAgICAgICAgICAuLi5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBhd2FpdCBjb21wcmVzcyhyZXNwb25zZS5ib2R5KSxcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNvbXByZXNzKGJvZHk6IHN0cmluZyB8IEJ1ZmZlcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxCdWZmZXI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgYnJvdGxpQ29tcHJlc3MoYm9keSwge30sIChlcnJvciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdClcbiAgICAgICAgfSlcbiAgICB9KVxufVxuIl19
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUMsT0FBTyxFQUFXLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQTBCaEQsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2hDLEdBQWUsRUFDZixPQUE2QixFQUM3QixPQUFvQixFQUNwQixPQUF1QixFQUN2QixPQUErQjtJQUUvQixNQUFNLFNBQVMsR0FDWCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUE7SUFDekYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUE7SUFDOUQsTUFBTSxVQUFVLEdBQUcsaUJBQWlCO1FBQ2hDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFO1FBQ3hDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUNoRSxJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFDakYsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNaLFdBQVcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUNwQyxPQUFPO1lBQ0gsT0FB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QTtJQUNuQixDQUFDO0lBQ0QsT0FBTztRQUNILE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtRQUN2QixPQUFPLEVBQUU7WUFDTCxrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLEdBQUcsUUFBUSxDQUFDLE9BQU87U0FDdEI7UUFDRCxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztLQUN0QyxDQUFBO0FBQ0wsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQXFCO0lBQ25DLE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDM0MsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2IsT0FBTTtZQUNWLENBQUM7WUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbkIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQgeyBpc0lQIH0gZnJvbSAnbm9kZTpuZXQnXG5pbXBvcnQgeyBicm90bGlDb21wcmVzcyB9IGZyb20gJ25vZGU6emxpYidcbmltcG9ydCB7IENvbnRleHQsIG1lYXN1cmUgfSBmcm9tICcuLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHR5cGUgeyBKc29uLCBQYXJzZWRVcmwsIFJlc3BvbnNlSGVhZGVycywgUmVzdWx0IH0gZnJvbSAnLi4vaHR0cC5qcydcbmltcG9ydCB7IENsaWVudEluZm8sIFJvb3RMb2dnZXIgfSBmcm9tICcuL2NvbnRleHQuanMnXG5pbXBvcnQgdHlwZSB7IEh0dHBIYW5kbGVyIH0gZnJvbSAnLi9odHRwLXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgdHlwZSBSZXNwb25zZSA9IHtcbiAgICBoZWFkZXJzOiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gICAgc3RhdHVzOiBudW1iZXJcbiAgICBib2R5Pzogc3RyaW5nIHwgQnVmZmVyXG59XG5cbnR5cGUgUmVxdWVzdE9wdGlvbnMgPSBCb2R5bGVzc1JlcXVlc3RPcHRpb25zIHwgU3RyaW5nUmVxdWVzdE9wdGlvbnMgfCBKc29uUmVxdWVzdE9wdGlvbnNcblxudHlwZSBCb2R5bGVzc1JlcXVlc3RPcHRpb25zID0ge1xuICAgIHVyaTogc3RyaW5nXG4gICAgaGVhZGVycz86IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbn1cblxudHlwZSBTdHJpbmdSZXF1ZXN0T3B0aW9ucyA9IEJvZHlsZXNzUmVxdWVzdE9wdGlvbnMgJiB7XG4gICAgYm9keTogc3RyaW5nXG59XG5cbnR5cGUgSnNvblJlcXVlc3RPcHRpb25zID0gQm9keWxlc3NSZXF1ZXN0T3B0aW9ucyAmIHtcbiAgICBqc29uOiBKc29uXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlUmVxdWVzdChcbiAgICBsb2c6IFJvb3RMb2dnZXIsXG4gICAgY29udGV4dDogT21pdDxDb250ZXh0LCAnbG9nJz4sXG4gICAgaGFuZGxlcjogSHR0cEhhbmRsZXIsXG4gICAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMsXG4gICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZTx1bmtub3duPixcbik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBpc1NoYWxsb3cgPVxuICAgICAgICBjb250ZXh0LmVudi5TSEFMTE9XX0tFWSAmJiBvcHRpb25zLmhlYWRlcnM/LlsneC1zaGFsbG93J10gPT09IGNvbnRleHQuZW52LlNIQUxMT1dfS0VZXG4gICAgY29uc3QgaW5jbHVkZUJvZHlJbkxvZ3MgPSAhaGFuZGxlci5jb25maWc/LmV4Y2x1ZGVCb2R5RnJvbUxvZ3NcbiAgICBjb25zdCBsb2dSZXF1ZXN0ID0gaW5jbHVkZUJvZHlJbkxvZ3NcbiAgICAgICAgPyB7IG1ldGhvZDogaGFuZGxlci5tZXRob2QsIC4uLm9wdGlvbnMgfVxuICAgICAgICA6IHdpdGhvdXRSZXF1ZXN0Qm9keSh7IG1ldGhvZDogaGFuZGxlci5tZXRob2QsIC4uLm9wdGlvbnMgfSlcbiAgICBsZXQgZW5yaWNoZWRMb2cgPSBsb2cuZW5yaWNoUmVzZXJ2ZWQoeyBtZXRhOiBjb250ZXh0Lm1ldGEsIHJlcXVlc3Q6IGxvZ1JlcXVlc3QgfSlcbiAgICBpZiAoaXNTaGFsbG93KSB7XG4gICAgICAgIGVucmljaGVkTG9nLnRyYWNlKCdTaGFsbG93IHJlcXVlc3QnKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICBzdGF0dXM6IDIwNCxcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbnJpY2hlZExvZy50cmFjZSgnUmVxdWVzdCBCRUdJTicpXG4gICAgdHJ5IHtcbiAgICAgICAgbGV0IHBhcnNlZFVybDpcbiAgICAgICAgICAgIHwgKFBhcnNlZFVybCAmIHtcbiAgICAgICAgICAgICAgICAgIC8qKiBAaWdub3JlICovXG4gICAgICAgICAgICAgICAgICBfX3Byb3RvX186IHVua25vd25cbiAgICAgICAgICAgICAgICAgIC8qKiBAaWdub3JlICovXG4gICAgICAgICAgICAgICAgICB0b1N0cmluZzogKCkgPT4gc3RyaW5nXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB8IHVuZGVmaW5lZFxuICAgICAgICBsZXQgcGF0aFN0ZXBzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuICAgICAgICBjb25zdCByZXEgPSB7XG4gICAgICAgICAgICByYXdVcmw6IG9wdGlvbnMudXJpLFxuICAgICAgICAgICAgZ2V0IHVybCgpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyc2VkVXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTCh0aGlzLnJhd1VybClcbiAgICAgICAgICAgICAgICBwYXJzZWRVcmwgPSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLW51bGxcbiAgICAgICAgICAgICAgICAgICAgX19wcm90b19fOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBoYXNoOiB1cmwuaGFzaCxcbiAgICAgICAgICAgICAgICAgICAgaG9zdDogdXJsLmhvc3QsXG4gICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lOiB1cmwuaG9zdG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGhyZWY6IHVybC5ocmVmLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW46IHVybC5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiB1cmwucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiB1cmwucGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHBvcnQ6IHVybC5wb3J0LFxuICAgICAgICAgICAgICAgICAgICBwcm90b2NvbDogdXJsLnByb3RvY29sLFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2g6IHVybC5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgIGdldCBzZWFyY2hQYXJhbXMoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsLnNlYXJjaFBhcmFtc1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB0b0pTT046ICgpID0+IHVybC50b0pTT04oKSxcbiAgICAgICAgICAgICAgICAgICAgdG9TdHJpbmc6ICgpID0+IHVybC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogdXJsLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgICAgICBwYXRoU3RlcEF0OiAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RlcHMgPSAocGF0aFN0ZXBzID8/PSB1cmwucGF0aG5hbWUuc3BsaXQoJy8nKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSBzdGVwc1tpbmRleCArIDFdXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmFuZ2VFcnJvcihgUGF0aCBkb2VzIG5vdCBoYXZlIGEgc3RlcCBhdCBpbmRleCAke2luZGV4fS5gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3VXJsOiB0aGlzLnJhd1VybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhOYW1lOiB1cmwucGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwczogc3RlcHMuc2xpY2UoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXBcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFVybFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IHJlcXVlc3RCb2R5KG9wdGlvbnMpLFxuICAgICAgICAgICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzID8/IHt9LFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbWVhc3VyZShsb2cuZW5yaWNoUmVzZXJ2ZWQoeyBtZXRhOiBjb250ZXh0Lm1ldGEgfSksICdleGVjdXRpb24nLCAoKSA9PlxuICAgICAgICAgICAgaGFuZGxlci5lbnRyeSh7IC4uLmNvbnRleHQsIGxvZzogZW5yaWNoZWRMb2cgfSwgcmVxKSxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzdWx0VG9SZXNwb25zZShyZXN1bHQsIGluY2x1ZGVCb2R5SW5Mb2dzKVxuXG4gICAgICAgIGlmIChjb250ZXh0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzID0ge1xuICAgICAgICAgICAgICAgICd4LXRpbWVvdXQnOiAnMScsXG4gICAgICAgICAgICAgICAgLi4ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVucmljaGVkTG9nID0gZW5yaWNoZWRMb2cuZW5yaWNoUmVzZXJ2ZWQoe1xuICAgICAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgIGJvZHk6IHJlc3BvbnNlLmxvZ0JvZHksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzIDwgMzAwKSB7XG4gICAgICAgICAgICBlbnJpY2hlZExvZy5kZWJ1ZygnUmVxdWVzdCBFTkQnKVxuICAgICAgICAgICAgYXdhaXQgc3VjY2VzcygpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnJpY2hlZExvZy53YXJuKCdSZXF1ZXN0IEVORCcpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IGNvbXByZXNzZWQocmVxLmhlYWRlcnMsIGVUYWdnZWQocmVxLmhlYWRlcnMsIHJlc3BvbnNlKSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGVycm9yVG9SZXNwb25zZShlKVxuICAgICAgICAgICAgZW5yaWNoZWRMb2cgPSBlbnJpY2hlZExvZy5lbnJpY2hSZXNlcnZlZCh7IHJlc3BvbnNlIH0pXG4gICAgICAgICAgICBlbnJpY2hlZExvZy5lcnJvcignUmVxdWVzdCBFTkQnLCBlKVxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgIH0gY2F0Y2ggKGNvbnZlcnRFcnJvcikge1xuICAgICAgICAgICAgZW5yaWNoZWRMb2cuZXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGV4Y2VwdGlvbiB0byBlcnJvciByZXNwb25zZS4nLCBjb252ZXJ0RXJyb3IpXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICAgICAgICAgIHN0YXR1czogNTAwLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZXN1bHRUb1Jlc3BvbnNlKHJlc3VsdDogUmVzdWx0LCB3aXRoTG9nQm9keTogYm9vbGVhbik6IFJlc3BvbnNlICYgeyBsb2dCb2R5PzogdW5rbm93biB9IHtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgICAgICBzdGF0dXM6IDIwNCxcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgbG9nQm9keSA9IHdpdGhMb2dCb2R5ID8gcmVzdWx0IDogdW5kZWZpbmVkXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICd0ZXh0L3BsYWluJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICAgIGJvZHk6IHJlc3VsdCxcbiAgICAgICAgICAgIGxvZ0JvZHksXG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzdWx0LmJvZHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXN1bHQuaGVhZGVycyA/PyB7fSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMgPz8gMjAwLFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXN1bHQuYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ0JvZHkgPSB3aXRoTG9nQm9keSA/IHJlc3VsdC5ib2R5IDogdW5kZWZpbmVkXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb250ZW50VHlwZShyZXN1bHQuaGVhZGVycywgJ3RleHQvcGxhaW4nKSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMgPz8gMjAwLFxuICAgICAgICAgICAgICAgIGJvZHk6IHJlc3VsdC5ib2R5LFxuICAgICAgICAgICAgICAgIGxvZ0JvZHksXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHJlc3VsdC5ib2R5KSkge1xuICAgICAgICAgICAgY29uc3QgbG9nQm9keSA9IHdpdGhMb2dCb2R5ID8gcmVzdWx0LmJvZHkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb250ZW50VHlwZShyZXN1bHQuaGVhZGVycywgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpLFxuICAgICAgICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cyA/PyAyMDAsXG4gICAgICAgICAgICAgICAgYm9keTogcmVzdWx0LmJvZHksXG4gICAgICAgICAgICAgICAgbG9nQm9keSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ0JvZHkgPSB3aXRoTG9nQm9keSA/IHJlc3VsdC5ib2R5IDogdW5kZWZpbmVkXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb250ZW50VHlwZShyZXN1bHQuaGVhZGVycywgJ2FwcGxpY2F0aW9uL2pzb24nKSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMgPz8gMjAwLFxuICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHJlc3VsdC5ib2R5KSxcbiAgICAgICAgICAgICAgICBsb2dCb2R5LFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiB3aXRob3V0UmVxdWVzdEJvZHkob3B0aW9uczogUmVxdWVzdE9wdGlvbnMgJiB7IG1ldGhvZDogc3RyaW5nIH0pIHtcbiAgICBpZiAoJ2pzb24nIGluIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBqc29uLCAuLi5ib2R5bGVzcyB9ID0gb3B0aW9uc1xuICAgICAgICByZXR1cm4gYm9keWxlc3NcbiAgICB9XG4gICAgaWYgKCdib2R5JyBpbiBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHsgYm9keSwgLi4uYm9keWxlc3MgfSA9IG9wdGlvbnNcbiAgICAgICAgcmV0dXJuIGJvZHlsZXNzXG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RCb2R5KG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zKTogSnNvbiB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCdqc29uJyBpbiBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmpzb25cbiAgICB9XG4gICAgaWYgKCdib2R5JyBpbiBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmJvZHlcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiB3aXRoQ29udGVudFR5cGUoaGVhZGVyczogUmVzcG9uc2VIZWFkZXJzIHwgdW5kZWZpbmVkLCBjb250ZW50VHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKCFoZWFkZXJzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogY29udGVudFR5cGUsXG4gICAgICAgIH1cbiAgICB9XG4gICAgaGVhZGVyc1snY29udGVudC10eXBlJ10gPz89IGNvbnRlbnRUeXBlXG4gICAgcmV0dXJuIGhlYWRlcnNcbn1cblxuZnVuY3Rpb24gZXJyb3JUb1Jlc3BvbnNlKGU6IHVua25vd24pOiBSZXNwb25zZSB7XG4gICAgY29uc3QgeyBib2R5LCBzdGF0dXNDb2RlOiBzdGF0dXMgfSA9IGUgYXMgeyBib2R5PzogdW5rbm93bjsgc3RhdHVzQ29kZT86IG51bWJlciB9XG4gICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAndGV4dC9wbGFpbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gNTAwLFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyA/PyA1MDAsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzID8/IDUwMCxcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsaWVudEZyb21IZWFkZXJzKFxuICAgIGhlYWRlcnM6IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0gfCB1bmRlZmluZWQsXG4pOiBDbGllbnRJbmZvIHtcbiAgICBpZiAoIWhlYWRlcnMpIHtcbiAgICAgICAgcmV0dXJuIHt9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG9wZXJhdGlvbklkOiBoZWFkZXJzWyd4LXJlcXVlc3QtaWQnXSA/PyBoZWFkZXJzWydyZXF1ZXN0LWlkJ10sXG4gICAgICAgIGNsaWVudElkOlxuICAgICAgICAgICAgaGVhZGVyc1sneC1jbGllbnQtaWQnXSA/P1xuICAgICAgICAgICAgaGVhZGVyc1sneC1pbnN0YWxsYXRpb24taWQnXSA/P1xuICAgICAgICAgICAgaGVhZGVyc1snY2xpZW50LWlkJ10gPz9cbiAgICAgICAgICAgIGhlYWRlcnNbJ2luc3RhbGxhdGlvbi1pZCddLFxuICAgICAgICAuLi5jbGllbnRBZGRyZXNzKGhlYWRlcnMpLFxuICAgICAgICB1c2VyQWdlbnQ6IGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvci11c2VyLWFnZW50J10gPz8gaGVhZGVyc1sndXNlci1hZ2VudCddLFxuICAgIH1cbn1cblxuZnVuY3Rpb24gY2xpZW50QWRkcmVzcyhoZWFkZXJzOiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9KSB7XG4gICAgY29uc3QgeGZmID0gaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ11cbiAgICBpZiAoIXhmZikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGZvciAoY29uc3QgYSBvZiB4ZmYuc3BsaXQoJywnKSkge1xuICAgICAgICBjb25zdCB2YWxpZCA9IHZhbGlkQ2xpZW50QWRkcmVzcyhhLnRyaW0oKSlcbiAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsaWRcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHZhbGlkQ2xpZW50QWRkcmVzcyhzOiBzdHJpbmcpIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gaXNJUChzKVxuICAgIGlmICh2ZXJzaW9uID09PSA0KSB7XG4gICAgICAgIHJldHVybiB7IGNsaWVudElwOiBzIH1cbiAgICB9XG4gICAgaWYgKHZlcnNpb24gPT09IDYpIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRJcDYocylcbiAgICB9XG4gICAgaWYgKHMuc3RhcnRzV2l0aCgnWycpICYmIHMuZW5kc1dpdGgoJ10nKSkge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElwNihzLnNsaWNlKDEsIC0xKSlcbiAgICB9XG4gICAgaWYgKHMuc3RhcnRzV2l0aCgnOicpKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudFBvcnQgPSBOdW1iZXIocy5zbGljZSgxKSlcbiAgICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZShjbGllbnRQb3J0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgY2xpZW50UG9ydCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgaXA6Ly8ke3N9L2BcbiAgICBpZiAoVVJMLmNhblBhcnNlKHVybCkpIHtcbiAgICAgICAgcmV0dXJuIGFkZHJlc3NGcm9tVXJsKG5ldyBVUkwodXJsKSlcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVkSXA2KHM6IHN0cmluZykge1xuICAgIGNvbnN0IG1hcHBlZCA9IG1hcHBlZEFkZHJlc3MocylcbiAgICBpZiAobWFwcGVkKSB7XG4gICAgICAgIHJldHVybiB7IGNsaWVudElwOiBtYXBwZWQgfVxuICAgIH1cbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGBpcDovL1ske3N9XS9gKVxuICAgIHJldHVybiB7IGNsaWVudElwOiB1cmwuaG9zdG5hbWUuc2xpY2UoMSwgLTEpIH1cbn1cblxuZnVuY3Rpb24gYWRkcmVzc0Zyb21VcmwodXJsOiBVUkwpIHtcbiAgICBjb25zdCBjbGllbnRJcCA9XG4gICAgICAgIHVybC5ob3N0bmFtZS5zdGFydHNXaXRoKCdbJykgJiYgdXJsLmhvc3RuYW1lLmVuZHNXaXRoKCddJylcbiAgICAgICAgICAgID8gdXJsLmhvc3RuYW1lLnNsaWNlKDEsIC0xKVxuICAgICAgICAgICAgOiB1cmwuaG9zdG5hbWVcbiAgICBjb25zdCBjbGllbnRQb3J0ID0gdXJsLnBvcnQgPyBOdW1iZXIodXJsLnBvcnQpIDogdW5kZWZpbmVkXG4gICAgaWYgKGlzSVAoY2xpZW50SXApKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGllbnRJcCxcbiAgICAgICAgICAgIGNsaWVudFBvcnQsXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBtYXBwZWRBZGRyZXNzKHM6IHN0cmluZykge1xuICAgIGlmIChzLnN0YXJ0c1dpdGgoJzo6ZmZmZjonKSkge1xuICAgICAgICBjb25zdCBpcDQgPSBzLnNsaWNlKDcpXG4gICAgICAgIGlmIChpc0lQKGlwNCkgPT09IDQpIHtcbiAgICAgICAgICAgIHJldHVybiBpcDRcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGVUYWdnZWQoXG4gICAgcmVxdWVzdEhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgcmVzcG9uc2U6IFJlc3BvbnNlICYgeyBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH0sXG4pOiBSZXNwb25zZSB7XG4gICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMuZXRhZyB8fCAhcmVzcG9uc2UuYm9keSkge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICB9XG4gICAgY29uc3QgZXRhZyA9IGhhc2goJ3NoYTEnLCByZXNwb25zZS5ib2R5LCAnYmFzZTY0Jykuc2xpY2UoMCwgLTEpXG4gICAgcmVzcG9uc2UuaGVhZGVycy5ldGFnID0gZXRhZ1xuICAgIGlmIChyZXF1ZXN0SGVhZGVyc1snaWYtbm9uZS1tYXRjaCddID09PSBldGFnKSB7XG4gICAgICAgIHJlc3BvbnNlLnN0YXR1cyA9IDMwNFxuICAgICAgICBkZWxldGUgcmVzcG9uc2UuYm9keVxuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2Vcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29tcHJlc3NlZChcbiAgICByZXF1ZXN0SGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICByZXNwb25zZTogUmVzcG9uc2UgJiB7IGhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfSxcbik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoIXJlc3BvbnNlLmJvZHkgfHwgcmVzcG9uc2UuYm9keS5sZW5ndGggPCAzMl83NjggfHwgcmVzcG9uc2UuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgIH1cbiAgICBjb25zdCBlbmNvZGluZ3MgPSByZXF1ZXN0SGVhZGVyc1snYWNjZXB0LWVuY29kaW5nJ10/LnNwbGl0KCcsJykubWFwKGUgPT4gZS50cmltKCkpXG4gICAgaWYgKCFlbmNvZGluZ3M/LmluY2x1ZGVzKCdicicpKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ2NvbnRlbnQtZW5jb2RpbmcnOiAnYnInLFxuICAgICAgICAgICAgLi4ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogYXdhaXQgY29tcHJlc3MocmVzcG9uc2UuYm9keSksXG4gICAgfVxufVxuXG5mdW5jdGlvbiBjb21wcmVzcyhib2R5OiBzdHJpbmcgfCBCdWZmZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8QnVmZmVyPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGJyb3RsaUNvbXByZXNzKGJvZHksIHt9LCAoZXJyb3IsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpXG4gICAgICAgIH0pXG4gICAgfSlcbn1cbiJdfQ==
package/http.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Context, HandlerConfiguration, Json } from './context.js';
1
+ import { Context, HandlerConfiguration, type Json } from './context.js';
2
2
  export * from './context.js';
3
3
  export type ResponseHeaders = {
4
4
  [key: string]: string;
package/http.js CHANGED
@@ -15,4 +15,4 @@ export function patch(path, configOrHandler, fn) {
15
15
  export function del(path, configOrHandler, fn) {
16
16
  registerHttpHandler('DELETE', path, configOrHandler, fn);
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFN0QsY0FBYyxjQUFjLENBQUE7QUFxTjVCLE1BQU0sVUFBVSxHQUFHLENBQ2YsSUFBYSxFQUNiLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN6RCxDQUFDO0FBT0QsTUFBTSxVQUFVLElBQUksQ0FDaEIsSUFBYSxFQUNiLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUMxRCxDQUFDO0FBT0QsTUFBTSxVQUFVLEdBQUcsQ0FDZixJQUFhLEVBQ2IsZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3pELENBQUM7QUFPRCxNQUFNLFVBQVUsS0FBSyxDQUNqQixJQUFhLEVBQ2IsZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQzNELENBQUM7QUFPRCxNQUFNLFVBQVUsR0FBRyxDQUNmLElBQWEsRUFDYixlQUFtRCxFQUNuRCxFQUFZO0lBRVosbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQsIEhhbmRsZXJDb25maWd1cmF0aW9uLCBKc29uIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgcmVnaXN0ZXJIdHRwSGFuZGxlciB9IGZyb20gJy4vaG9zdC9odHRwLXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQuanMnXG5cbmV4cG9ydCB0eXBlIFJlc3BvbnNlSGVhZGVycyA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRnVsbFJlc3VsdCA9IHtcbiAgICBoZWFkZXJzPzogUmVzcG9uc2VIZWFkZXJzXG4gICAgc3RhdHVzPzogbnVtYmVyXG4gICAgYm9keT86IHVua25vd25cbn1cblxuZXhwb3J0IHR5cGUgUmVzdWx0ID0gdm9pZCB8IHN0cmluZyB8IEZ1bGxSZXN1bHRcblxuZXhwb3J0IHR5cGUgSHR0cFJlcXVlc3QgPSB7XG4gICAgcmVhZG9ubHkgcmF3VXJsOiBzdHJpbmdcbiAgICByZWFkb25seSB1cmw6IFBhcnNlZFVybFxuICAgIHJlYWRvbmx5IGhlYWRlcnM6IFJlYWRvbmx5PFJlc3BvbnNlSGVhZGVycz5cbiAgICByZWFkb25seSBib2R5PzogSnNvbiB8IHN0cmluZ1xufVxuXG50eXBlIEdvbmUgPSAnR29uZScgfCB1bmRlZmluZWRcblxuZXhwb3J0IHR5cGUgUGFyc2VkVXJsID0ge1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGZyYWdtZW50IHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2ZvbyNiYXInKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5oYXNoKTtcbiAgICAgKiAvLyBQcmludHMgI2JhclxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGhhc2g6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhvc3QgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmc6ODEvZm9vJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwuaG9zdCk7XG4gICAgICogLy8gUHJpbnRzIGV4YW1wbGUub3JnOjgxXG4gICAgICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaG9zdCBuYW1lIHBvcnRpb24gb2YgdGhlIFVSTC4gVGhlIGtleSBkaWZmZXJlbmNlIGJldHdlZW5gdXJsLmhvc3RgIGFuZCBgdXJsLmhvc3RuYW1lYCBpcyB0aGF0IGB1cmwuaG9zdG5hbWVgIGRvZXMgX25vdF8gaW5jbHVkZSB0aGVcbiAgICAgKiBwb3J0LlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmc6ODEvZm9vJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwuaG9zdG5hbWUpO1xuICAgICAqIC8vIFByaW50cyBleGFtcGxlLm9yZ1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGhvc3RuYW1lOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzZXJpYWxpemVkIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2ZvbycpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLmhyZWYpO1xuICAgICAqIC8vIFByaW50cyBodHRwczovL2V4YW1wbGUub3JnL2Zvb1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGhyZWY6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNlcmlhbGl6YXRpb24gb2YgdGhlIFVSTCdzIG9yaWdpbi5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2Zvby9iYXI/YmF6Jyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwub3JpZ2luKTtcbiAgICAgKiAvLyBQcmludHMgaHR0cHM6Ly9leGFtcGxlLm9yZ1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBpZG5VUkwgPSBuZXcgVVJMKCdodHRwczovL+a4rOippicpO1xuICAgICAqIGNvbnNvbGUubG9nKGlkblVSTC5vcmlnaW4pO1xuICAgICAqIC8vIFByaW50cyBodHRwczovL3huLS1nNncyNTFkXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhpZG5VUkwuaG9zdG5hbWUpO1xuICAgICAqIC8vIFByaW50cyB4bi0tZzZ3MjUxZFxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9yaWdpbjogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcGFzc3dvcmQgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vYWJjOnh5ekBleGFtcGxlLmNvbScpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnBhc3N3b3JkKTtcbiAgICAgKiAvLyBQcmludHMgeHl6XG4gICAgICpcbiAgICAgKiBteVVSTC5wYXNzd29yZCA9ICcxMjMnO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLmhyZWYpO1xuICAgICAqIC8vIFByaW50cyBodHRwczovL2FiYzoxMjNAZXhhbXBsZS5jb20vXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhdGggcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcvYWJjL3h5ej8xMjMnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5wYXRobmFtZSk7XG4gICAgICogLy8gUHJpbnRzIC9hYmMveHl6XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgcGF0aG5hbWU6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBvcnQgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogVGhlIHBvcnQgdmFsdWUgbWF5IGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBudW1iZXIgaW4gdGhlIHJhbmdlIGAwYCB0byBgNjU1MzVgIChpbmNsdXNpdmUpLiBTZXR0aW5nIHRoZSB2YWx1ZSB0byB0aGUgZGVmYXVsdCBwb3J0IG9mIHRoZSBgVVJMYCBvYmplY3RzIGdpdmVuIGBwcm90b2NvbGAgd2lsbFxuICAgICAqIHJlc3VsdCBpbiB0aGUgYHBvcnRgIHZhbHVlIGJlY29taW5nXG4gICAgICogdGhlIGVtcHR5IHN0cmluZyAoYCcnYCkuXG4gICAgICpcbiAgICAgKiBUaGUgcG9ydCB2YWx1ZSBjYW4gYmUgYW4gZW1wdHkgc3RyaW5nIGluIHdoaWNoIGNhc2UgdGhlIHBvcnQgZGVwZW5kcyBvblxuICAgICAqIHRoZSBwcm90b2NvbC9zY2hlbWUuXG4gICAgICpcbiAgICAgKiBJZiB0aGF0IHN0cmluZyBpcyBpbnZhbGlkIGJ1dCBpdCBiZWdpbnMgd2l0aCBhIG51bWJlciwgdGhlIGxlYWRpbmcgbnVtYmVyIGlzXG4gICAgICogYXNzaWduZWQgdG8gYHBvcnRgLlxuICAgICAqIElmIHRoZSBudW1iZXIgbGllcyBvdXRzaWRlIHRoZSByYW5nZSBkZW5vdGVkIGFib3ZlLCBpdCBpcyBpZ25vcmVkLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmc6ODg4OCcpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnBvcnQpO1xuICAgICAqIC8vIFByaW50cyA4ODg4XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgcG9ydDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcHJvdG9jb2wgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5wcm90b2NvbCk7XG4gICAgICogLy8gUHJpbnRzIGh0dHBzOlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHByb3RvY29sOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzZXJpYWxpemVkIHF1ZXJ5IHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2FiYz8xMjMnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5zZWFyY2gpO1xuICAgICAqIC8vIFByaW50cyA/MTIzXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBBbnkgaW52YWxpZCBVUkwgY2hhcmFjdGVycyBhcHBlYXJpbmcgaW4gdGhlIHZhbHVlIGFzc2lnbmVkIHRoZSBgc2VhcmNoYHByb3BlcnR5IHdpbGwgYmUgYHBlcmNlbnQtZW5jb2RlZGAuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2VhcmNoOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBgVVJMU2VhcmNoUGFyYW1zYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSBwYXJhbWV0ZXJzIG9mIHRoZVxuICAgICAqIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2FiYz9mb289fmJhcicpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cobXlVUkwuc2VhcmNoKTsgIC8vIHByaW50cyA/Zm9vPX5iYXJcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICByZWFkb25seSBzZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHVzZXJuYW1lIHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2FiYzp4eXpAZXhhbXBsZS5jb20nKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC51c2VybmFtZSk7XG4gICAgICogLy8gUHJpbnRzIGFiY1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQW55IGludmFsaWQgVVJMIGNoYXJhY3RlcnMgYXBwZWFyaW5nIGluIHRoZSB2YWx1ZSBhc3NpZ25lZCB0aGUgYHVzZXJuYW1lYCBwcm9wZXJ0eSB3aWxsIGJlIGBwZXJjZW50LWVuY29kZWRgLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHVzZXJuYW1lOiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBzdGVwIG9mIHRoZSBwYXRoIHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2FiYy94eXo/MTIzJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwucGF0aFN0ZXBBdCgwKSk7XG4gICAgICogLy8gUHJpbnRzIGFiY1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnBhdGhTdGVwQXQoMSkpO1xuICAgICAqIC8vIFByaW50cyB4eXpcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwYXRoU3RlcEF0OiAoaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBHb25lLCB1c2Ugc2VhcmNoUGFyYW1zIGluc3RlYWQuXG4gICAgICovXG4gICAgcXVlcnk/OiBHb25lXG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHRvSlNPTjogKCkgPT4gc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiA9IEhhbmRsZXJDb25maWd1cmF0aW9uICYge1xuICAgIC8qKlxuICAgICAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHdoaWNoIGRvbWFpbnMgY2FuIGFjY2VzcyB0aGUgZW5kcG9pbnQgY3Jvc3Mtb3JpZ2luLlxuICAgICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvcnM/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgSGFuZGxlciA9IChjb250ZXh0OiBDb250ZXh0LCByZXF1ZXN0OiBIdHRwUmVxdWVzdCkgPT4gUHJvbWlzZTxSZXN1bHQ+IHwgUmVzdWx0XG5cbnR5cGUgUGF0aDxUPiA9IFQgZXh0ZW5kcyBgLyR7c3RyaW5nfWAgPyAnRXJyb3I6IHBhdGggY2Fubm90IHN0YXJ0IHdpdGggc2xhc2guJyA6IFRcblxuZXhwb3J0IGZ1bmN0aW9uIGdldDxUIGV4dGVuZHMgc3RyaW5nPihwYXRoOiBQYXRoPFQ+LCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBnZXQ8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgcGF0aDogUGF0aDxUPixcbiAgICBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbixcbiAgICBmbjogSGFuZGxlcixcbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBnZXQ8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgcGF0aDogUGF0aDxUPixcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignR0VUJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbmV4cG9ydCBmdW5jdGlvbiBwb3N0PFQgZXh0ZW5kcyBzdHJpbmc+KHBhdGg6IFBhdGg8VD4sIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHBvc3Q8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgcGF0aDogUGF0aDxUPixcbiAgICBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbixcbiAgICBmbjogSGFuZGxlcixcbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwb3N0PFQgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHBhdGg6IFBhdGg8VD4sXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ1BPU1QnLCBwYXRoLCBjb25maWdPckhhbmRsZXIsIGZuKVxufVxuZXhwb3J0IGZ1bmN0aW9uIHB1dDxUIGV4dGVuZHMgc3RyaW5nPihwYXRoOiBQYXRoPFQ+LCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwdXQ8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgcGF0aDogUGF0aDxUPixcbiAgICBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbixcbiAgICBmbjogSGFuZGxlcixcbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwdXQ8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgcGF0aDogUGF0aDxUPixcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignUFVUJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaDxUIGV4dGVuZHMgc3RyaW5nPihwYXRoOiBQYXRoPFQ+LCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwYXRjaDxUIGV4dGVuZHMgc3RyaW5nPihcbiAgICBwYXRoOiBQYXRoPFQ+LFxuICAgIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uLFxuICAgIGZuOiBIYW5kbGVyLFxuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHBhdGg6IFBhdGg8VD4sXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ1BBVENIJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZWw8VCBleHRlbmRzIHN0cmluZz4ocGF0aDogUGF0aDxUPiwgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZGVsPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHBhdGg6IFBhdGg8VD4sXG4gICAgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24sXG4gICAgZm46IEhhbmRsZXIsXG4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZGVsPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHBhdGg6IFBhdGg8VD4sXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ0RFTEVURScsIHBhdGgsIGNvbmZpZ09ySGFuZGxlciwgZm4pXG59XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFN0QsY0FBYyxjQUFjLENBQUE7QUFxTjVCLE1BQU0sVUFBVSxHQUFHLENBQ2YsSUFBYSxFQUNiLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN6RCxDQUFDO0FBT0QsTUFBTSxVQUFVLElBQUksQ0FDaEIsSUFBYSxFQUNiLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUMxRCxDQUFDO0FBT0QsTUFBTSxVQUFVLEdBQUcsQ0FDZixJQUFhLEVBQ2IsZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3pELENBQUM7QUFPRCxNQUFNLFVBQVUsS0FBSyxDQUNqQixJQUFhLEVBQ2IsZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQzNELENBQUM7QUFPRCxNQUFNLFVBQVUsR0FBRyxDQUNmLElBQWEsRUFDYixlQUFtRCxFQUNuRCxFQUFZO0lBRVosbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQsIEhhbmRsZXJDb25maWd1cmF0aW9uLCB0eXBlIEpzb24gfSBmcm9tICcuL2NvbnRleHQuanMnXG5pbXBvcnQgeyByZWdpc3Rlckh0dHBIYW5kbGVyIH0gZnJvbSAnLi9ob3N0L2h0dHAtcmVnaXN0cnkuanMnXG5cbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC5qcydcblxuZXhwb3J0IHR5cGUgUmVzcG9uc2VIZWFkZXJzID0ge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBGdWxsUmVzdWx0ID0ge1xuICAgIGhlYWRlcnM/OiBSZXNwb25zZUhlYWRlcnNcbiAgICBzdGF0dXM/OiBudW1iZXJcbiAgICBib2R5PzogdW5rbm93blxufVxuXG5leHBvcnQgdHlwZSBSZXN1bHQgPSB2b2lkIHwgc3RyaW5nIHwgRnVsbFJlc3VsdFxuXG5leHBvcnQgdHlwZSBIdHRwUmVxdWVzdCA9IHtcbiAgICByZWFkb25seSByYXdVcmw6IHN0cmluZ1xuICAgIHJlYWRvbmx5IHVybDogUGFyc2VkVXJsXG4gICAgcmVhZG9ubHkgaGVhZGVyczogUmVhZG9ubHk8UmVzcG9uc2VIZWFkZXJzPlxuICAgIHJlYWRvbmx5IGJvZHk/OiBKc29uIHwgc3RyaW5nXG59XG5cbnR5cGUgR29uZSA9ICdHb25lJyB8IHVuZGVmaW5lZFxuXG5leHBvcnQgdHlwZSBQYXJzZWRVcmwgPSB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZnJhZ21lbnQgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcvZm9vI2JhcicpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLmhhc2gpO1xuICAgICAqIC8vIFByaW50cyAjYmFyXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgaGFzaDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaG9zdCBwb3J0aW9uIG9mIHRoZSBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZzo4MS9mb28nKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5ob3N0KTtcbiAgICAgKiAvLyBQcmludHMgZXhhbXBsZS5vcmc6ODFcbiAgICAgKi9cbiAgICByZWFkb25seSBob3N0OiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBob3N0IG5hbWUgcG9ydGlvbiBvZiB0aGUgVVJMLiBUaGUga2V5IGRpZmZlcmVuY2UgYmV0d2VlbmB1cmwuaG9zdGAgYW5kIGB1cmwuaG9zdG5hbWVgIGlzIHRoYXQgYHVybC5ob3N0bmFtZWAgZG9lcyBfbm90XyBpbmNsdWRlIHRoZVxuICAgICAqIHBvcnQuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZzo4MS9mb28nKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5ob3N0bmFtZSk7XG4gICAgICogLy8gUHJpbnRzIGV4YW1wbGUub3JnXG4gICAgICovXG4gICAgcmVhZG9ubHkgaG9zdG5hbWU6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNlcmlhbGl6ZWQgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcvZm9vJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwuaHJlZik7XG4gICAgICogLy8gUHJpbnRzIGh0dHBzOi8vZXhhbXBsZS5vcmcvZm9vXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgaHJlZjogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2VyaWFsaXphdGlvbiBvZiB0aGUgVVJMJ3Mgb3JpZ2luLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcvZm9vL2Jhcj9iYXonKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5vcmlnaW4pO1xuICAgICAqIC8vIFByaW50cyBodHRwczovL2V4YW1wbGUub3JnXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IGlkblVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8v5ris6KmmJyk7XG4gICAgICogY29uc29sZS5sb2coaWRuVVJMLm9yaWdpbik7XG4gICAgICogLy8gUHJpbnRzIGh0dHBzOi8veG4tLWc2dzI1MWRcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGlkblVSTC5ob3N0bmFtZSk7XG4gICAgICogLy8gUHJpbnRzIHhuLS1nNncyNTFkXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwYXNzd29yZCBwb3J0aW9uIG9mIHRoZSBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9hYmM6eHl6QGV4YW1wbGUuY29tJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwucGFzc3dvcmQpO1xuICAgICAqIC8vIFByaW50cyB4eXpcbiAgICAgKlxuICAgICAqIG15VVJMLnBhc3N3b3JkID0gJzEyMyc7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwuaHJlZik7XG4gICAgICogLy8gUHJpbnRzIGh0dHBzOi8vYWJjOjEyM0BleGFtcGxlLmNvbS9cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICByZWFkb25seSBwYXNzd29yZDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcGF0aCBwb3J0aW9uIG9mIHRoZSBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZy9hYmMveHl6PzEyMycpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnBhdGhuYW1lKTtcbiAgICAgKiAvLyBQcmludHMgL2FiYy94eXpcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICByZWFkb25seSBwYXRobmFtZTogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcG9ydCBwb3J0aW9uIG9mIHRoZSBVUkwuXG4gICAgICpcbiAgICAgKiBUaGUgcG9ydCB2YWx1ZSBtYXkgYmUgYSBudW1iZXIgb3IgYSBzdHJpbmcgY29udGFpbmluZyBhIG51bWJlciBpbiB0aGUgcmFuZ2UgYDBgIHRvIGA2NTUzNWAgKGluY2x1c2l2ZSkuIFNldHRpbmcgdGhlIHZhbHVlIHRvIHRoZSBkZWZhdWx0IHBvcnQgb2YgdGhlIGBVUkxgIG9iamVjdHMgZ2l2ZW4gYHByb3RvY29sYCB3aWxsXG4gICAgICogcmVzdWx0IGluIHRoZSBgcG9ydGAgdmFsdWUgYmVjb21pbmdcbiAgICAgKiB0aGUgZW1wdHkgc3RyaW5nIChgJydgKS5cbiAgICAgKlxuICAgICAqIFRoZSBwb3J0IHZhbHVlIGNhbiBiZSBhbiBlbXB0eSBzdHJpbmcgaW4gd2hpY2ggY2FzZSB0aGUgcG9ydCBkZXBlbmRzIG9uXG4gICAgICogdGhlIHByb3RvY29sL3NjaGVtZS5cbiAgICAgKlxuICAgICAqIElmIHRoYXQgc3RyaW5nIGlzIGludmFsaWQgYnV0IGl0IGJlZ2lucyB3aXRoIGEgbnVtYmVyLCB0aGUgbGVhZGluZyBudW1iZXIgaXNcbiAgICAgKiBhc3NpZ25lZCB0byBgcG9ydGAuXG4gICAgICogSWYgdGhlIG51bWJlciBsaWVzIG91dHNpZGUgdGhlIHJhbmdlIGRlbm90ZWQgYWJvdmUsIGl0IGlzIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZzo4ODg4Jyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwucG9ydCk7XG4gICAgICogLy8gUHJpbnRzIDg4ODhcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICByZWFkb25seSBwb3J0OiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwcm90b2NvbCBwb3J0aW9uIG9mIHRoZSBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZycpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnByb3RvY29sKTtcbiAgICAgKiAvLyBQcmludHMgaHR0cHM6XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHJvdG9jb2w6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNlcmlhbGl6ZWQgcXVlcnkgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcvYWJjPzEyMycpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnNlYXJjaCk7XG4gICAgICogLy8gUHJpbnRzID8xMjNcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEFueSBpbnZhbGlkIFVSTCBjaGFyYWN0ZXJzIGFwcGVhcmluZyBpbiB0aGUgdmFsdWUgYXNzaWduZWQgdGhlIGBzZWFyY2hgcHJvcGVydHkgd2lsbCBiZSBgcGVyY2VudC1lbmNvZGVkYC5cbiAgICAgKi9cbiAgICByZWFkb25seSBzZWFyY2g6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGBVUkxTZWFyY2hQYXJhbXNgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgb2YgdGhlXG4gICAgICogVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcvYWJjP2Zvbz1+YmFyJyk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5zZWFyY2gpOyAgLy8gcHJpbnRzID9mb289fmJhclxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdXNlcm5hbWUgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vYWJjOnh5ekBleGFtcGxlLmNvbScpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnVzZXJuYW1lKTtcbiAgICAgKiAvLyBQcmludHMgYWJjXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBBbnkgaW52YWxpZCBVUkwgY2hhcmFjdGVycyBhcHBlYXJpbmcgaW4gdGhlIHZhbHVlIGFzc2lnbmVkIHRoZSBgdXNlcm5hbWVgIHByb3BlcnR5IHdpbGwgYmUgYHBlcmNlbnQtZW5jb2RlZGAuXG4gICAgICovXG4gICAgcmVhZG9ubHkgdXNlcm5hbWU6IHN0cmluZ1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHN0ZXAgb2YgdGhlIHBhdGggcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcvYWJjL3h5ej8xMjMnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5wYXRoU3RlcEF0KDApKTtcbiAgICAgKiAvLyBQcmludHMgYWJjXG4gICAgICogY29uc29sZS5sb2cobXlVUkwucGF0aFN0ZXBBdCgxKSk7XG4gICAgICogLy8gUHJpbnRzIHh5elxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHBhdGhTdGVwQXQ6IChpbmRleDogbnVtYmVyKSA9PiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIEdvbmUsIHVzZSBzZWFyY2hQYXJhbXMgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBxdWVyeT86IEdvbmVcblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgdG9KU09OOiAoKSA9PiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uID0gSGFuZGxlckNvbmZpZ3VyYXRpb24gJiB7XG4gICAgLyoqXG4gICAgICogQSBzdHJpbmcgaWRlbnRpZnlpbmcgd2hpY2ggZG9tYWlucyBjYW4gYWNjZXNzIHRoZSBlbmRwb2ludCBjcm9zcy1vcmlnaW4uXG4gICAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29ycz86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBIYW5kbGVyID0gKGNvbnRleHQ6IENvbnRleHQsIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0KSA9PiBQcm9taXNlPFJlc3VsdD4gfCBSZXN1bHRcblxudHlwZSBQYXRoPFQ+ID0gVCBleHRlbmRzIGAvJHtzdHJpbmd9YCA/ICdFcnJvcjogcGF0aCBjYW5ub3Qgc3RhcnQgd2l0aCBzbGFzaC4nIDogVFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0PFQgZXh0ZW5kcyBzdHJpbmc+KHBhdGg6IFBhdGg8VD4sIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGdldDxUIGV4dGVuZHMgc3RyaW5nPihcbiAgICBwYXRoOiBQYXRoPFQ+LFxuICAgIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uLFxuICAgIGZuOiBIYW5kbGVyLFxuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGdldDxUIGV4dGVuZHMgc3RyaW5nPihcbiAgICBwYXRoOiBQYXRoPFQ+LFxuICAgIGNvbmZpZ09ySGFuZGxlcjogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uIHwgSGFuZGxlcixcbiAgICBmbj86IEhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgICByZWdpc3Rlckh0dHBIYW5kbGVyKCdHRVQnLCBwYXRoLCBjb25maWdPckhhbmRsZXIsIGZuKVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBvc3Q8VCBleHRlbmRzIHN0cmluZz4ocGF0aDogUGF0aDxUPiwgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gcG9zdDxUIGV4dGVuZHMgc3RyaW5nPihcbiAgICBwYXRoOiBQYXRoPFQ+LFxuICAgIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uLFxuICAgIGZuOiBIYW5kbGVyLFxuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHBvc3Q8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgcGF0aDogUGF0aDxUPixcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignUE9TVCcsIHBhdGgsIGNvbmZpZ09ySGFuZGxlciwgZm4pXG59XG5leHBvcnQgZnVuY3Rpb24gcHV0PFQgZXh0ZW5kcyBzdHJpbmc+KHBhdGg6IFBhdGg8VD4sIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHB1dDxUIGV4dGVuZHMgc3RyaW5nPihcbiAgICBwYXRoOiBQYXRoPFQ+LFxuICAgIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uLFxuICAgIGZuOiBIYW5kbGVyLFxuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHB1dDxUIGV4dGVuZHMgc3RyaW5nPihcbiAgICBwYXRoOiBQYXRoPFQ+LFxuICAgIGNvbmZpZ09ySGFuZGxlcjogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uIHwgSGFuZGxlcixcbiAgICBmbj86IEhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgICByZWdpc3Rlckh0dHBIYW5kbGVyKCdQVVQnLCBwYXRoLCBjb25maWdPckhhbmRsZXIsIGZuKVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoPFQgZXh0ZW5kcyBzdHJpbmc+KHBhdGg6IFBhdGg8VD4sIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHBhdGg6IFBhdGg8VD4sXG4gICAgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24sXG4gICAgZm46IEhhbmRsZXIsXG4pOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2g8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgcGF0aDogUGF0aDxUPixcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignUEFUQ0gnLCBwYXRoLCBjb25maWdPckhhbmRsZXIsIGZuKVxufVxuZXhwb3J0IGZ1bmN0aW9uIGRlbDxUIGV4dGVuZHMgc3RyaW5nPihwYXRoOiBQYXRoPFQ+LCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBkZWw8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgcGF0aDogUGF0aDxUPixcbiAgICBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbixcbiAgICBmbjogSGFuZGxlcixcbik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBkZWw8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgcGF0aDogUGF0aDxUPixcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignREVMRVRFJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riddance/host",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -42,7 +42,7 @@
42
42
  "postpublish": "riddance-sync"
43
43
  },
44
44
  "devDependencies": {
45
- "@riddance/env": "0.9.3"
45
+ "@riddance/env": "0.9.7"
46
46
  },
47
- "gitHead": "2271676e1d0552abda3dd26897411d6464570468"
47
+ "gitHead": "5cd4acd5013f5fcb9598875ddcac62ecfcee4c14"
48
48
  }