@riddance/host 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright © 2022-2024 The Riddance Authors (see git commits)
1
+ Copyright © 2022-2025 The Riddance Authors (see git commits)
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the “Software”), to deal
package/context.d.ts CHANGED
@@ -63,8 +63,7 @@ export type Context = {
63
63
  readonly fileName: string;
64
64
  readonly revision?: string;
65
65
  };
66
- emit(topic: string, type: string, subject: string, data?: Json, messageId?: string): void;
67
- eventBarrier(): Promise<void>;
66
+ emit(topic: string, type: string, subject: string, data?: Json, messageId?: string): Promise<void>;
68
67
  onSuccess(fn: () => Promise<void> | void): void;
69
68
  };
70
69
  export declare function httpRequestHeaders(context: Context): {
package/context.js CHANGED
@@ -49,4 +49,4 @@ export async function measure(logger, name, fn, fields) {
49
49
  });
50
50
  }
51
51
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBK0J4RCxlQUFlO0FBQ2YsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVc7SUFDeEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUFtRCxDQUFBO0FBQzlELENBQUM7QUFFRCxlQUFlO0FBQ2YsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFXO0lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUF1QixDQUFBO0FBQ2xDLENBQUM7QUFzREQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQWdCO0lBQy9DLE1BQU0sT0FBTyxHQUE4QjtRQUN2QyxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLFdBQVcsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFO0tBQ3ZGLENBQUE7SUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQTtJQUNqRCxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUE7UUFDMUYsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsNEJBQTRCLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQTtRQUNwRSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FDekIsTUFBcUUsRUFDckUsSUFBWSxFQUNaLEVBQXdCLEVBQ3hCLE1BQWU7SUFFZixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDL0IsSUFBSSxDQUFDO1FBQ0QsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7WUFBUyxDQUFDO1FBQ1AsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUNuRCxLQUFLLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1lBQ2xDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7WUFDOUIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNO1lBQzFFLEdBQUcsTUFBTTtTQUNaLENBQUMsQ0FBQTtJQUNOLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdub2RlOnBlcmZfaG9va3MnXG5pbXBvcnQgeyBoaWdoUHJlY2lzaW9uSVNPRGF0ZSB9IGZyb20gJy4vaG9zdC9sb2dnaW5nLmpzJ1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9IHtcbiAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2VyID0ge1xuICAgIGVucmljaChmaWVsZHM6IG9iamVjdCk6IExvZ2dlclxuICAgIHRyYWNlKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgZGVidWcobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbiAgICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogb2JqZWN0KTogdm9pZFxuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgTXV0YWJsZUpzb24gPVxuICAgIHwgbnVsbFxuICAgIHwgYm9vbGVhblxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8IE11dGFibGVKc29uW11cbiAgICB8IHsgW2tleTogc3RyaW5nXTogTXV0YWJsZUpzb24gfVxuZXhwb3J0IHR5cGUgSnNvbiA9XG4gICAgfCBudWxsXG4gICAgfCBib29sZWFuXG4gICAgfCBudW1iZXJcbiAgICB8IHN0cmluZ1xuICAgIHwgcmVhZG9ubHkgSnNvbltdXG4gICAgfCB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb24gfVxuXG4vKkBfX0lOTElORV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RTcHJlYWRhYmxlKGpzb24/OiBKc29uKTogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uIH0ge1xuICAgIGlmICghanNvbikge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9XG4gICAgcmV0dXJuIGpzb24gYXMgdW5rbm93biBhcyB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb24gfVxufVxuXG4vKkBfX0lOTElORV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVNwcmVhZGFibGUoanNvbj86IEpzb24pOiByZWFkb25seSBKc29uW10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgcmV0dXJuIGpzb24gYXMgcmVhZG9ubHkgSnNvbltdXG59XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXJDb25maWd1cmF0aW9uID0ge1xuICAgIC8qKlxuICAgICAqIEFuIGluZGljYXRpb24gb2YgQ1BVIHVzYWdlIG9mIHRoZSBoYW5kbGVyLlxuICAgICAqIEBkZWZhdWx0ICdsb3cnXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29tcHV0ZT86ICdoaWdoJyB8ICdsb3cnXG4gICAgLyoqXG4gICAgICogQW4gaW5kaWNhdGlvbiBvZiBtZW1vcnkgdXNhZ2Ugb2YgdGhlIGhhbmRsZXIuXG4gICAgICogQGRlZmF1bHQgJ2xvdydcbiAgICAgKi9cbiAgICByZWFkb25seSBtZW1vcnk/OiAnaGlnaCcgfCAnbG93J1xuICAgIC8qKlxuICAgICAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW5yaWNoIHRoZSBsb2cgd2l0aCB0aGUgYm9keSBvZiBldmVudHMsIHJlcXVlc3RzIG9yIHJlc3BvbnNlcy4gU2V0IHRvIGZhbHNlIGlmIHRoZSBib2R5IGlzIGxhcmdlIG9yIGNvbnRhaW4gdmVyeSBzZW5zaXRpdmUgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4Y2x1ZGVCb2R5RnJvbUxvZ3M/OiBib29sZWFuXG4gICAgLyoqXG4gICAgICogVGhlIGxldmVsIGJlbG93IHdoaWNoIGxvZyBlbnRyaWVzIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqIEBkZWZhdWx0ICd0cmFjZSdcbiAgICAgKi9cbiAgICByZWFkb25seSBtaW5pbXVtTG9nTGV2ZWw/OiAndHJhY2UnIHwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZmF0YWwnXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIHRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBmaW5pc2ggZXhlY3V0aW5nIGluLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dCA9IHtcbiAgICByZWFkb25seSBlbnY6IEVudmlyb25tZW50XG4gICAgcmVhZG9ubHkgbG9nOiBMb2dnZXJcbiAgICByZWFkb25seSBzaWduYWw6IEFib3J0U2lnbmFsXG4gICAgbm93KCk6IERhdGVcblxuICAgIHJlYWRvbmx5IG9wZXJhdGlvbklkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2xpZW50Pzoge1xuICAgICAgICByZWFkb25seSBpZD86IHN0cmluZ1xuICAgICAgICByZWFkb25seSBpcD86IHN0cmluZ1xuICAgICAgICByZWFkb25seSBwb3J0PzogbnVtYmVyXG4gICAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudD86IHN0cmluZ1xuICAgIH1cbiAgICByZWFkb25seSBtZXRhPzoge1xuICAgICAgICByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nXG4gICAgICAgIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgcmV2aXNpb24/OiBzdHJpbmdcbiAgICB9XG5cbiAgICBlbWl0KHRvcGljOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgc3ViamVjdDogc3RyaW5nLCBkYXRhPzogSnNvbiwgbWVzc2FnZUlkPzogc3RyaW5nKTogdm9pZFxuICAgIGV2ZW50QmFycmllcigpOiBQcm9taXNlPHZvaWQ+XG5cbiAgICBvblN1Y2Nlc3MoZm46ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkKTogdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHR0cFJlcXVlc3RIZWFkZXJzKGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICBjb25zdCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAndXNlci1hZ2VudCc6IGAke2NvbnRleHQubWV0YT8ucGFja2FnZU5hbWUgPz8gJz8nfS8ke2NvbnRleHQubWV0YT8ucmV2aXNpb24gPz8gJz8nfWAsXG4gICAgfVxuICAgIGlmIChjb250ZXh0Lm9wZXJhdGlvbklkKSB7XG4gICAgICAgIGhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddID0gY29udGV4dC5vcGVyYXRpb25JZFxuICAgIH1cbiAgICBpZiAoY29udGV4dC5jbGllbnQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQuY2xpZW50LmlkKSB7XG4gICAgICAgICAgICBoZWFkZXJzWyd4LWNsaWVudC1pZCddID0gY29udGV4dC5jbGllbnQuaWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFjb250ZXh0LmNsaWVudC5pcCB8fCAhIWNvbnRleHQuY2xpZW50LnBvcnQpIHtcbiAgICAgICAgICAgIGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddID0gYCR7Y29udGV4dC5jbGllbnQuaXAgPz8gJyd9OiR7Y29udGV4dC5jbGllbnQucG9ydCA/PyAnJ31gXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRleHQuY2xpZW50LnVzZXJBZ2VudCkge1xuICAgICAgICAgICAgaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yLXVzZXItYWdlbnQnXSA9IGNvbnRleHQuY2xpZW50LnVzZXJBZ2VudFxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtZWFzdXJlPFQ+KFxuICAgIGxvZ2dlcjogeyB0cmFjZTogKG1lc3NhZ2U6IHN0cmluZywgXzogdW5kZWZpbmVkLCBmOiBvYmplY3QpID0+IHZvaWQgfSxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgZm46ICgpID0+IFByb21pc2U8VD4gfCBULFxuICAgIGZpZWxkcz86IG9iamVjdCxcbikge1xuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZm4oKVxuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNvbnN0IGVuZCA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICAgIGxvZ2dlci50cmFjZShgTWVhc3VyZW1lbnQgb2YgJHtuYW1lfSB0aW1lYCwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBzdGFydDogaGlnaFByZWNpc2lvbklTT0RhdGUoc3RhcnQpLFxuICAgICAgICAgICAgZW5kOiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShlbmQpLFxuICAgICAgICAgICAgZHVyYXRpb246IChNYXRoLnJvdW5kKGVuZCAqIDEwXzAwMCkgLSBNYXRoLnJvdW5kKHN0YXJ0ICogMTBfMDAwKSkgLyAxMF8wMDAsXG4gICAgICAgICAgICAuLi5maWVsZHMsXG4gICAgICAgIH0pXG4gICAgfVxufVxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBK0J4RCxlQUFlO0FBQ2YsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVc7SUFDeEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUFtRCxDQUFBO0FBQzlELENBQUM7QUFFRCxlQUFlO0FBQ2YsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFXO0lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTyxJQUF1QixDQUFBO0FBQ2xDLENBQUM7QUEyREQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQWdCO0lBQy9DLE1BQU0sT0FBTyxHQUE4QjtRQUN2QyxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLFdBQVcsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksR0FBRyxFQUFFO0tBQ3ZGLENBQUE7SUFDRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQTtJQUNqRCxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUE7UUFDMUYsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsNEJBQTRCLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQTtRQUNwRSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FDekIsTUFBcUUsRUFDckUsSUFBWSxFQUNaLEVBQXdCLEVBQ3hCLE1BQWU7SUFFZixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDL0IsSUFBSSxDQUFDO1FBQ0QsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7WUFBUyxDQUFDO1FBQ1AsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUNuRCxLQUFLLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1lBQ2xDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7WUFDOUIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNO1lBQzFFLEdBQUcsTUFBTTtTQUNaLENBQUMsQ0FBQTtJQUNOLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdub2RlOnBlcmZfaG9va3MnXG5pbXBvcnQgeyBoaWdoUHJlY2lzaW9uSVNPRGF0ZSB9IGZyb20gJy4vaG9zdC9sb2dnaW5nLmpzJ1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9IHtcbiAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2VyID0ge1xuICAgIGVucmljaChmaWVsZHM6IG9iamVjdCk6IExvZ2dlclxuICAgIHRyYWNlKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgZGVidWcobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbiAgICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogdW5rbm93biwgZmllbGRzPzogb2JqZWN0KTogdm9pZFxuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiB1bmtub3duLCBmaWVsZHM/OiBvYmplY3QpOiB2b2lkXG4gICAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBlcnJvcj86IHVua25vd24sIGZpZWxkcz86IG9iamVjdCk6IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgTXV0YWJsZUpzb24gPVxuICAgIHwgbnVsbFxuICAgIHwgYm9vbGVhblxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8IE11dGFibGVKc29uW11cbiAgICB8IHsgW2tleTogc3RyaW5nXTogTXV0YWJsZUpzb24gfVxuZXhwb3J0IHR5cGUgSnNvbiA9XG4gICAgfCBudWxsXG4gICAgfCBib29sZWFuXG4gICAgfCBudW1iZXJcbiAgICB8IHN0cmluZ1xuICAgIHwgcmVhZG9ubHkgSnNvbltdXG4gICAgfCB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb24gfVxuXG4vKkBfX0lOTElORV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RTcHJlYWRhYmxlKGpzb24/OiBKc29uKTogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uIH0ge1xuICAgIGlmICghanNvbikge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9XG4gICAgcmV0dXJuIGpzb24gYXMgdW5rbm93biBhcyB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb24gfVxufVxuXG4vKkBfX0lOTElORV9fKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVNwcmVhZGFibGUoanNvbj86IEpzb24pOiByZWFkb25seSBKc29uW10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgcmV0dXJuIGpzb24gYXMgcmVhZG9ubHkgSnNvbltdXG59XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXJDb25maWd1cmF0aW9uID0ge1xuICAgIC8qKlxuICAgICAqIEFuIGluZGljYXRpb24gb2YgQ1BVIHVzYWdlIG9mIHRoZSBoYW5kbGVyLlxuICAgICAqIEBkZWZhdWx0ICdsb3cnXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29tcHV0ZT86ICdoaWdoJyB8ICdsb3cnXG4gICAgLyoqXG4gICAgICogQW4gaW5kaWNhdGlvbiBvZiBtZW1vcnkgdXNhZ2Ugb2YgdGhlIGhhbmRsZXIuXG4gICAgICogQGRlZmF1bHQgJ2xvdydcbiAgICAgKi9cbiAgICByZWFkb25seSBtZW1vcnk/OiAnaGlnaCcgfCAnbG93J1xuICAgIC8qKlxuICAgICAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW5yaWNoIHRoZSBsb2cgd2l0aCB0aGUgYm9keSBvZiBldmVudHMsIHJlcXVlc3RzIG9yIHJlc3BvbnNlcy4gU2V0IHRvIGZhbHNlIGlmIHRoZSBib2R5IGlzIGxhcmdlIG9yIGNvbnRhaW4gdmVyeSBzZW5zaXRpdmUgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4Y2x1ZGVCb2R5RnJvbUxvZ3M/OiBib29sZWFuXG4gICAgLyoqXG4gICAgICogVGhlIGxldmVsIGJlbG93IHdoaWNoIGxvZyBlbnRyaWVzIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqIEBkZWZhdWx0ICd0cmFjZSdcbiAgICAgKi9cbiAgICByZWFkb25seSBtaW5pbXVtTG9nTGV2ZWw/OiAndHJhY2UnIHwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZmF0YWwnXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIHRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBmaW5pc2ggZXhlY3V0aW5nIGluLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dCA9IHtcbiAgICByZWFkb25seSBlbnY6IEVudmlyb25tZW50XG4gICAgcmVhZG9ubHkgbG9nOiBMb2dnZXJcbiAgICByZWFkb25seSBzaWduYWw6IEFib3J0U2lnbmFsXG4gICAgbm93KCk6IERhdGVcblxuICAgIHJlYWRvbmx5IG9wZXJhdGlvbklkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2xpZW50Pzoge1xuICAgICAgICByZWFkb25seSBpZD86IHN0cmluZ1xuICAgICAgICByZWFkb25seSBpcD86IHN0cmluZ1xuICAgICAgICByZWFkb25seSBwb3J0PzogbnVtYmVyXG4gICAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudD86IHN0cmluZ1xuICAgIH1cbiAgICByZWFkb25seSBtZXRhPzoge1xuICAgICAgICByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nXG4gICAgICAgIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgcmV2aXNpb24/OiBzdHJpbmdcbiAgICB9XG5cbiAgICBlbWl0KFxuICAgICAgICB0b3BpYzogc3RyaW5nLFxuICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgIHN1YmplY3Q6IHN0cmluZyxcbiAgICAgICAgZGF0YT86IEpzb24sXG4gICAgICAgIG1lc3NhZ2VJZD86IHN0cmluZyxcbiAgICApOiBQcm9taXNlPHZvaWQ+XG5cbiAgICBvblN1Y2Nlc3MoZm46ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkKTogdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHR0cFJlcXVlc3RIZWFkZXJzKGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICBjb25zdCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAndXNlci1hZ2VudCc6IGAke2NvbnRleHQubWV0YT8ucGFja2FnZU5hbWUgPz8gJz8nfS8ke2NvbnRleHQubWV0YT8ucmV2aXNpb24gPz8gJz8nfWAsXG4gICAgfVxuICAgIGlmIChjb250ZXh0Lm9wZXJhdGlvbklkKSB7XG4gICAgICAgIGhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddID0gY29udGV4dC5vcGVyYXRpb25JZFxuICAgIH1cbiAgICBpZiAoY29udGV4dC5jbGllbnQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQuY2xpZW50LmlkKSB7XG4gICAgICAgICAgICBoZWFkZXJzWyd4LWNsaWVudC1pZCddID0gY29udGV4dC5jbGllbnQuaWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFjb250ZXh0LmNsaWVudC5pcCB8fCAhIWNvbnRleHQuY2xpZW50LnBvcnQpIHtcbiAgICAgICAgICAgIGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddID0gYCR7Y29udGV4dC5jbGllbnQuaXAgPz8gJyd9OiR7Y29udGV4dC5jbGllbnQucG9ydCA/PyAnJ31gXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRleHQuY2xpZW50LnVzZXJBZ2VudCkge1xuICAgICAgICAgICAgaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yLXVzZXItYWdlbnQnXSA9IGNvbnRleHQuY2xpZW50LnVzZXJBZ2VudFxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtZWFzdXJlPFQ+KFxuICAgIGxvZ2dlcjogeyB0cmFjZTogKG1lc3NhZ2U6IHN0cmluZywgXzogdW5kZWZpbmVkLCBmOiBvYmplY3QpID0+IHZvaWQgfSxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgZm46ICgpID0+IFByb21pc2U8VD4gfCBULFxuICAgIGZpZWxkcz86IG9iamVjdCxcbikge1xuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZm4oKVxuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNvbnN0IGVuZCA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICAgIGxvZ2dlci50cmFjZShgTWVhc3VyZW1lbnQgb2YgJHtuYW1lfSB0aW1lYCwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBzdGFydDogaGlnaFByZWNpc2lvbklTT0RhdGUoc3RhcnQpLFxuICAgICAgICAgICAgZW5kOiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShlbmQpLFxuICAgICAgICAgICAgZHVyYXRpb246IChNYXRoLnJvdW5kKGVuZCAqIDEwXzAwMCkgLSBNYXRoLnJvdW5kKHN0YXJ0ICogMTBfMDAwKSkgLyAxMF8wMDAsXG4gICAgICAgICAgICAuLi5maWVsZHMsXG4gICAgICAgIH0pXG4gICAgfVxufVxuIl19
package/event.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { Context, HandlerConfiguration, type Json } from './context.js';
2
+ export * from './context.js';
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;
7
+ export declare function on(topic: string, event: string, fn: Handler): void;
8
+ export declare function on(topic: string, event: string, config: HandlerConfiguration, fn: Handler): void;
package/event.js ADDED
@@ -0,0 +1,6 @@
1
+ import { registerEventHandler } from './host/event-registry.js';
2
+ export * from './context.js';
3
+ export function on(topic, event, configOrHandler, fn) {
4
+ registerEventHandler(topic, event, configOrHandler, fn);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUUvRCxjQUFjLGNBQWMsQ0FBQTtBQWtCNUIsTUFBTSxVQUFVLEVBQUUsQ0FDZCxLQUFhLEVBQ2IsS0FBYSxFQUNiLGVBQStDLEVBQy9DLEVBQVk7SUFFWixvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCwgSGFuZGxlckNvbmZpZ3VyYXRpb24sIHR5cGUgSnNvbiB9IGZyb20gJy4vY29udGV4dC5qcydcbmltcG9ydCB7IHJlZ2lzdGVyRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi9ob3N0L2V2ZW50LXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQuanMnXG5cbmV4cG9ydCB0eXBlIEV2ZW50SGFuZGxlckNvbmZpZ3VyYXRpb24gPSBIYW5kbGVyQ29uZmlndXJhdGlvbiAmIHt9XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXIgPSAoXG4gICAgY29udGV4dDogQ29udGV4dCxcbiAgICBzdWJqZWN0OiBzdHJpbmcsXG4gICAgZXZlbnQ6XG4gICAgICAgIHwge1xuICAgICAgICAgICAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uXG4gICAgICAgICAgfVxuICAgICAgICB8IHVuZGVmaW5lZCxcbiAgICB0aW1lc3RhbXA6IERhdGUsXG4gICAgbWVzc2FnZUlkOiBzdHJpbmcsXG4pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkXG5cbmV4cG9ydCBmdW5jdGlvbiBvbih0b3BpYzogc3RyaW5nLCBldmVudDogc3RyaW5nLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBvbih0b3BpYzogc3RyaW5nLCBldmVudDogc3RyaW5nLCBjb25maWc6IEhhbmRsZXJDb25maWd1cmF0aW9uLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBvbihcbiAgICB0b3BpYzogc3RyaW5nLFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJFdmVudEhhbmRsZXIodG9waWMsIGV2ZW50LCBjb25maWdPckhhbmRsZXIsIGZuKVxufVxuIl19
package/host/context.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Context, Environment, Logger } from '../context.js';
2
- import { FullConfiguration, Metadata } from './registry.js';
1
+ import { Context, Environment, Json, Logger } from '../context.js';
2
+ import type { FullConfiguration, Metadata } from './meta.js';
3
3
  export type ClientInfo = {
4
4
  readonly operationId?: string;
5
5
  readonly clientId?: string;
@@ -7,21 +7,10 @@ export type ClientInfo = {
7
7
  readonly clientPort?: number;
8
8
  readonly userAgent?: string;
9
9
  };
10
- export type EventMetadata = {
11
- topic: string;
12
- type: string;
13
- subject: string;
14
- id?: string;
15
- };
16
- export type BufferedEvent = {
17
- eventTime: Date;
18
- meta: Omit<EventMetadata, 'topic'>;
19
- ids: ClientInfo;
20
- json?: string;
21
- };
22
10
  export type EventTransport = {
23
- readonly publishRate: number;
24
- sendEvents(topic: string, events: BufferedEvent[], signal: AbortSignal): Promise<void>;
11
+ sendEvent(topic: string, type: string, subject: string, data: {
12
+ readonly [key: string]: Json;
13
+ } | undefined, messageId: string | undefined, signal: AbortSignal): Promise<void>;
25
14
  };
26
15
  export type LogLevel = 'trace' | 'debug' | 'info' | 'warning' | 'error' | 'fatal';
27
16
  export type LogEntry = {
@@ -33,7 +22,7 @@ export type LogEntry = {
33
22
  };
34
23
  export type LogTransport = {
35
24
  readonly publishRate?: number;
36
- sendEntries(entries: LogEntry[], signal: AbortSignal): Promise<void> | undefined;
25
+ sendEntries(entries: LogEntry[], signal: AbortSignal): Promise<void> | undefined | void;
37
26
  };
38
27
  export type RootLogger = {
39
28
  enrichReserved(fields: object): RootLogger;
package/host/context.js CHANGED
@@ -1,4 +1,3 @@
1
- import { EventCollector } from './events.js';
2
1
  import { makeLogger } from './logging.js';
3
2
  class LogMulticaster {
4
3
  #transports;
@@ -32,7 +31,6 @@ export function createContext(clientInfo, loggers, eventTransport, timeouts, out
32
31
  },
33
32
  });
34
33
  globalLogger = logger;
35
- const emitter = new EventCollector(eventTransport, logger, clientInfo, timeout, outerController.signal);
36
34
  const successHandlers = [];
37
35
  const ctx = {
38
36
  env: environment ?? process.env,
@@ -52,10 +50,7 @@ export function createContext(clientInfo, loggers, eventTransport, timeouts, out
52
50
  revision: meta.revision,
53
51
  }
54
52
  : undefined,
55
- emit: (topic, type, subject, data, messageId) => {
56
- emitter.emit({ topic, type, subject, id: messageId }, data);
57
- },
58
- eventBarrier: () => emitter.flush(),
53
+ emit: (topic, type, subject, data, messageId) => eventTransport.sendEvent(topic, type, subject, data, messageId, outerController.signal),
59
54
  onSuccess: (fn) => successHandlers.push(fn),
60
55
  };
61
56
  const timeoutHandle = setTimeout(() => {
@@ -63,8 +58,6 @@ export function createContext(clientInfo, loggers, eventTransport, timeouts, out
63
58
  innerController.abort();
64
59
  // eslint-disable-next-line no-void
65
60
  void logger.flush();
66
- // eslint-disable-next-line no-void
67
- void emitter.flush();
68
61
  }, timeout);
69
62
  const flushHandle = setTimeout(() => {
70
63
  logger.error('Aborting flush.', undefined, undefined);
@@ -76,7 +69,6 @@ export function createContext(clientInfo, loggers, eventTransport, timeouts, out
76
69
  success: () => Promise.all(successHandlers.map(fn => fn())),
77
70
  flush: async () => {
78
71
  clearTimeout(timeoutHandle);
79
- await emitter.flush();
80
72
  await logger.flush();
81
73
  clearTimeout(flushHandle);
82
74
  },
@@ -89,4 +81,4 @@ process.on('uncaughtException', err => {
89
81
  process.on('unhandledRejection', reason => {
90
82
  globalLogger?.fatal('Unhandled rejection.', reason, undefined);
91
83
  });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBNkN6QyxNQUFNLGNBQWM7SUFDUCxXQUFXLENBQWdCO0lBQzNCLFdBQVcsQ0FBUTtJQUU1QixZQUFZLFVBQTBCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFBO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUE7SUFDOUYsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFtQixFQUFFLE1BQW1CO1FBQ2hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDM0YsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU07UUFDVixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBNkIsQ0FBQTtJQUM1RCxDQUFDO0NBQ0o7QUFPRCxNQUFNLFVBQVUsYUFBYSxDQUN6QixVQUFzQixFQUN0QixPQUF1QixFQUN2QixjQUE4QixFQUM5QixRQUEyQyxFQUMzQyxlQUFnQyxFQUNoQyxNQUEwQixFQUMxQixJQUFlLEVBQ2YsV0FBeUIsRUFDekIsR0FBZ0I7SUFP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QUFFLFNBQVMsQ0FBQyxDQUFBO0FBQ2xFLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCwgRW52aXJvbm1lbnQsIEpzb24sIExvZ2dlciB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBFdmVudENvbGxlY3RvciB9IGZyb20gJy4vZXZlbnRzLmpzJ1xuaW1wb3J0IHsgbWFrZUxvZ2dlciB9IGZyb20gJy4vbG9nZ2luZy5qcydcbmltcG9ydCB7IEZ1bGxDb25maWd1cmF0aW9uLCBNZXRhZGF0YSB9IGZyb20gJy4vcmVnaXN0cnkuanMnXG5cbmV4cG9ydCB0eXBlIENsaWVudEluZm8gPSB7XG4gICAgcmVhZG9ubHkgb3BlcmF0aW9uSWQ/OiBzdHJpbmdcbiAgICByZWFkb25seSBjbGllbnRJZD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGNsaWVudElwPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2xpZW50UG9ydD86IG51bWJlclxuICAgIHJlYWRvbmx5IHVzZXJBZ2VudD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBFdmVudE1ldGFkYXRhID0ge1xuICAgIHRvcGljOiBzdHJpbmdcbiAgICB0eXBlOiBzdHJpbmdcbiAgICBzdWJqZWN0OiBzdHJpbmdcbiAgICBpZD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBCdWZmZXJlZEV2ZW50ID0ge1xuICAgIGV2ZW50VGltZTogRGF0ZVxuICAgIG1ldGE6IE9taXQ8RXZlbnRNZXRhZGF0YSwgJ3RvcGljJz5cbiAgICBpZHM6IENsaWVudEluZm9cbiAgICBqc29uPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEV2ZW50VHJhbnNwb3J0ID0ge1xuICAgIHJlYWRvbmx5IHB1Ymxpc2hSYXRlOiBudW1iZXJcbiAgICBzZW5kRXZlbnRzKHRvcGljOiBzdHJpbmcsIGV2ZW50czogQnVmZmVyZWRFdmVudFtdLCBzaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgdHlwZSBMb2dMZXZlbCA9ICd0cmFjZScgfCAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2Vycm9yJyB8ICdmYXRhbCdcblxuZXhwb3J0IHR5cGUgTG9nRW50cnkgPSB7XG4gICAgcmVhZG9ubHkgbGV2ZWw6IExvZ0xldmVsXG4gICAgcmVhZG9ubHkgdGltZXN0YW1wOiBudW1iZXJcbiAgICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmdcbiAgICByZWFkb25seSBlcnJvcjogdW5rbm93blxuICAgIHJlYWRvbmx5IGpzb246IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBMb2dUcmFuc3BvcnQgPSB7XG4gICAgcmVhZG9ubHkgcHVibGlzaFJhdGU/OiBudW1iZXJcbiAgICBzZW5kRW50cmllcyhlbnRyaWVzOiBMb2dFbnRyeVtdLCBzaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZFxufVxuXG5jbGFzcyBMb2dNdWx0aWNhc3RlciBpbXBsZW1lbnRzIExvZ1RyYW5zcG9ydCB7XG4gICAgcmVhZG9ubHkgI3RyYW5zcG9ydHM6IExvZ1RyYW5zcG9ydFtdXG4gICAgcmVhZG9ubHkgcHVibGlzaFJhdGU6IG51bWJlclxuXG4gICAgY29uc3RydWN0b3IodHJhbnNwb3J0czogTG9nVHJhbnNwb3J0W10pIHtcbiAgICAgICAgdGhpcy4jdHJhbnNwb3J0cyA9IHRyYW5zcG9ydHNcbiAgICAgICAgdGhpcy5wdWJsaXNoUmF0ZSA9IHRyYW5zcG9ydHMubWFwKHQgPT4gdC5wdWJsaXNoUmF0ZSkuc29ydCgpWzBdID8/IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG4gICAgfVxuXG4gICAgc2VuZEVudHJpZXMoZW50cmllczogTG9nRW50cnlbXSwgc2lnbmFsOiBBYm9ydFNpZ25hbCkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuI3RyYW5zcG9ydHMubWFwKHQgPT4gdC5zZW5kRW50cmllcyhlbnRyaWVzLCBzaWduYWwpKS5maWx0ZXIocCA9PiAhIXApXG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykgYXMgdW5rbm93biBhcyBQcm9taXNlPHZvaWQ+XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBSb290TG9nZ2VyID0ge1xuICAgIGVucmljaFJlc2VydmVkKGZpZWxkczogb2JqZWN0KTogUm9vdExvZ2dlclxuICAgIGZsdXNoKCk6IFByb21pc2U8dm9pZD5cbn0gJiBMb2dnZXJcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoXG4gICAgY2xpZW50SW5mbzogQ2xpZW50SW5mbyxcbiAgICBsb2dnZXJzOiBMb2dUcmFuc3BvcnRbXSxcbiAgICBldmVudFRyYW5zcG9ydDogRXZlbnRUcmFuc3BvcnQsXG4gICAgdGltZW91dHM6IHsgZGVmYXVsdDogbnVtYmVyOyBjYXA/OiBudW1iZXIgfSxcbiAgICBvdXRlckNvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlcixcbiAgICBjb25maWc/OiBGdWxsQ29uZmlndXJhdGlvbixcbiAgICBtZXRhPzogTWV0YWRhdGEsXG4gICAgZW52aXJvbm1lbnQ/OiBFbnZpcm9ubWVudCxcbiAgICBub3c/OiAoKSA9PiBEYXRlLFxuKToge1xuICAgIGxvZzogUm9vdExvZ2dlclxuICAgIGNvbnRleHQ6IE9taXQ8Q29udGV4dCwgJ2xvZyc+XG4gICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZTx1bmtub3duPlxuICAgIGZsdXNoOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59IHtcbiAgICBjb25zdCB0aW1lb3V0ID1cbiAgICAgICAgKHRpbWVvdXRzLmNhcFxuICAgICAgICAgICAgPyBNYXRoLm1pbihjb25maWc/LnRpbWVvdXQgPz8gdGltZW91dHMuZGVmYXVsdCwgdGltZW91dHMuY2FwKVxuICAgICAgICAgICAgOiAoY29uZmlnPy50aW1lb3V0ID8/IHRpbWVvdXRzLmRlZmF1bHQpKSAqIDEwMDBcbiAgICBjb25zdCBpbm5lckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIGNvbnN0IGxvZ1RyYW5zcG9ydCA9IGxvZ2dlcnMubGVuZ3RoID09PSAxID8gbG9nZ2Vyc1swXSEgOiBuZXcgTG9nTXVsdGljYXN0ZXIobG9nZ2VycylcbiAgICBjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKFxuICAgICAgICBsb2dUcmFuc3BvcnQsXG4gICAgICAgIGNvbmZpZz8ubWluaW11bUxvZ0xldmVsLFxuICAgICAgICBvdXRlckNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICkuZW5yaWNoUmVzZXJ2ZWQoe1xuICAgICAgICBvcGVyYXRpb25JZDogY2xpZW50SW5mby5vcGVyYXRpb25JZCxcbiAgICAgICAgY2xpZW50OiB7XG4gICAgICAgICAgICBpZDogY2xpZW50SW5mby5jbGllbnRJZCxcbiAgICAgICAgICAgIGlwOiBjbGllbnRJbmZvLmNsaWVudElwLFxuICAgICAgICAgICAgcG9ydDogY2xpZW50SW5mby5jbGllbnRQb3J0LFxuICAgICAgICAgICAgdXNlckFnZW50OiBjbGllbnRJbmZvLnVzZXJBZ2VudCxcbiAgICAgICAgfSxcbiAgICB9KVxuICAgIGdsb2JhbExvZ2dlciA9IGxvZ2dlclxuICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgRXZlbnRDb2xsZWN0b3IoXG4gICAgICAgIGV2ZW50VHJhbnNwb3J0LFxuICAgICAgICBsb2dnZXIsXG4gICAgICAgIGNsaWVudEluZm8sXG4gICAgICAgIHRpbWVvdXQsXG4gICAgICAgIG91dGVyQ29udHJvbGxlci5zaWduYWwsXG4gICAgKVxuICAgIGNvbnN0IHN1Y2Nlc3NIYW5kbGVyczogKCgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkKVtdID0gW11cbiAgICBjb25zdCBjdHggPSB7XG4gICAgICAgIGVudjogZW52aXJvbm1lbnQgPz8gKHByb2Nlc3MuZW52IGFzIEVudmlyb25tZW50KSxcbiAgICAgICAgc2lnbmFsOiBpbm5lckNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBub3c6IG5vdyA/PyAoKCkgPT4gbmV3IERhdGUoKSksXG4gICAgICAgIG9wZXJhdGlvbklkOiBjbGllbnRJbmZvLm9wZXJhdGlvbklkLFxuICAgICAgICBjbGllbnQ6IHtcbiAgICAgICAgICAgIGlkOiBjbGllbnRJbmZvLmNsaWVudElkLFxuICAgICAgICAgICAgaXA6IGNsaWVudEluZm8uY2xpZW50SXAsXG4gICAgICAgICAgICBwb3J0OiBjbGllbnRJbmZvLmNsaWVudFBvcnQsXG4gICAgICAgICAgICB1c2VyQWdlbnQ6IGNsaWVudEluZm8udXNlckFnZW50LFxuICAgICAgICB9LFxuICAgICAgICBtZXRhOiBtZXRhXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBtZXRhLnBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IG1ldGEuZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgICByZXZpc2lvbjogbWV0YS5yZXZpc2lvbixcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGVtaXQ6ICh0b3BpYzogc3RyaW5nLCB0eXBlOiBzdHJpbmcsIHN1YmplY3Q6IHN0cmluZywgZGF0YT86IEpzb24sIG1lc3NhZ2VJZD86IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgZW1pdHRlci5lbWl0KHsgdG9waWMsIHR5cGUsIHN1YmplY3QsIGlkOiBtZXNzYWdlSWQgfSwgZGF0YSlcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnRCYXJyaWVyOiAoKSA9PiBlbWl0dGVyLmZsdXNoKCksXG4gICAgICAgIG9uU3VjY2VzczogKGZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZCkgPT4gc3VjY2Vzc0hhbmRsZXJzLnB1c2goZm4pLFxuICAgIH1cbiAgICBjb25zdCB0aW1lb3V0SGFuZGxlID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignVGltZW91dC4nLCB1bmRlZmluZWQsIHVuZGVmaW5lZClcbiAgICAgICAgaW5uZXJDb250cm9sbGVyLmFib3J0KClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgICAgdm9pZCBsb2dnZXIuZmx1c2goKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZFxuICAgICAgICB2b2lkIGVtaXR0ZXIuZmx1c2goKVxuICAgIH0sIHRpbWVvdXQpXG4gICAgY29uc3QgZmx1c2hIYW5kbGUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdBYm9ydGluZyBmbHVzaC4nLCB1bmRlZmluZWQsIHVuZGVmaW5lZClcbiAgICAgICAgb3V0ZXJDb250cm9sbGVyLmFib3J0KClcbiAgICB9LCB0aW1lb3V0ICsgMTVfMDAwKVxuICAgIHJldHVybiB7XG4gICAgICAgIGxvZzogbG9nZ2VyLFxuICAgICAgICBjb250ZXh0OiBjdHgsXG4gICAgICAgIHN1Y2Nlc3M6ICgpID0+IFByb21pc2UuYWxsKHN1Y2Nlc3NIYW5kbGVycy5tYXAoZm4gPT4gZm4oKSkpLFxuICAgICAgICBmbHVzaDogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUpXG4gICAgICAgICAgICBhd2FpdCBlbWl0dGVyLmZsdXNoKClcbiAgICAgICAgICAgIGF3YWl0IGxvZ2dlci5mbHVzaCgpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoZmx1c2hIYW5kbGUpXG4gICAgICAgIH0sXG4gICAgfVxufVxuXG5sZXQgZ2xvYmFsTG9nZ2VyOiBMb2dnZXIgfCB1bmRlZmluZWRcblxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnIgPT4ge1xuICAgIGdsb2JhbExvZ2dlcj8uZmF0YWwoJ1VuY2F1Z2h0IGV4Y2VwdGlvbi4nLCBlcnIsIHVuZGVmaW5lZClcbn0pXG5wcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCByZWFzb24gPT4ge1xuICAgIGdsb2JhbExvZ2dlcj8uZmF0YWwoJ1VuaGFuZGxlZCByZWplY3Rpb24uJywgcmVhc29uLCB1bmRlZmluZWQpXG59KVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQXlDekMsTUFBTSxjQUFjO0lBQ1AsV0FBVyxDQUFnQjtJQUMzQixXQUFXLENBQVE7SUFFNUIsWUFBWSxVQUEwQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQTtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFBO0lBQzlGLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBbUIsRUFBRSxNQUFtQjtRQUNoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFNO1FBQ1YsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQTZCLENBQUE7SUFDNUQsQ0FBQztDQUNKO0FBT0QsTUFBTSxVQUFVLGFBQWEsQ0FDekIsVUFBc0IsRUFDdEIsT0FBdUIsRUFDdkIsY0FBOEIsRUFDOUIsUUFBMkMsRUFDM0MsZUFBZ0MsRUFDaEMsTUFBMEIsRUFDMUIsSUFBZSxFQUNmLFdBQXlCLEVBQ3pCLEdBQWdCO0lBT2hCLE1BQU0sT0FBTyxHQUNULENBQUMsUUFBUSxDQUFDLEdBQUc7UUFD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QyxFQUFFLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQTtJQUNwQixPQUFPO1FBQ0gsR0FBRyxFQUFFLE1BQU07UUFDWCxPQUFPLEVBQUUsR0FBRztRQUNaLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNELEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTtZQUNkLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUMzQixNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUNwQixZQUFZLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDN0IsQ0FBQztLQUNKLENBQUE7QUFDTCxDQUFDO0FBRUQsSUFBSSxZQUFnQyxDQUFBO0FBRXBDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLEVBQUU7SUFDbEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFDOUQsQ0FBQyxDQUFDLENBQUE7QUFDRixPQUFPLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxFQUFFO0lBQ3RDLFlBQVksRUFBRSxLQUFLLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0FBQ2xFLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCwgRW52aXJvbm1lbnQsIEpzb24sIExvZ2dlciB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBtYWtlTG9nZ2VyIH0gZnJvbSAnLi9sb2dnaW5nLmpzJ1xuaW1wb3J0IHR5cGUgeyBGdWxsQ29uZmlndXJhdGlvbiwgTWV0YWRhdGEgfSBmcm9tICcuL21ldGEuanMnXG5cbmV4cG9ydCB0eXBlIENsaWVudEluZm8gPSB7XG4gICAgcmVhZG9ubHkgb3BlcmF0aW9uSWQ/OiBzdHJpbmdcbiAgICByZWFkb25seSBjbGllbnRJZD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGNsaWVudElwPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgY2xpZW50UG9ydD86IG51bWJlclxuICAgIHJlYWRvbmx5IHVzZXJBZ2VudD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBFdmVudFRyYW5zcG9ydCA9IHtcbiAgICBzZW5kRXZlbnQoXG4gICAgICAgIHRvcGljOiBzdHJpbmcsXG4gICAgICAgIHR5cGU6IHN0cmluZyxcbiAgICAgICAgc3ViamVjdDogc3RyaW5nLFxuICAgICAgICBkYXRhOlxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHwgdW5kZWZpbmVkLFxuICAgICAgICBtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgc2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgICApOiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gJ3RyYWNlJyB8ICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybmluZycgfCAnZXJyb3InIHwgJ2ZhdGFsJ1xuXG5leHBvcnQgdHlwZSBMb2dFbnRyeSA9IHtcbiAgICByZWFkb25seSBsZXZlbDogTG9nTGV2ZWxcbiAgICByZWFkb25seSB0aW1lc3RhbXA6IG51bWJlclxuICAgIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZ1xuICAgIHJlYWRvbmx5IGVycm9yOiB1bmtub3duXG4gICAgcmVhZG9ubHkganNvbjogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIExvZ1RyYW5zcG9ydCA9IHtcbiAgICByZWFkb25seSBwdWJsaXNoUmF0ZT86IG51bWJlclxuICAgIHNlbmRFbnRyaWVzKGVudHJpZXM6IExvZ0VudHJ5W10sIHNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkIHwgdm9pZFxufVxuXG5jbGFzcyBMb2dNdWx0aWNhc3RlciBpbXBsZW1lbnRzIExvZ1RyYW5zcG9ydCB7XG4gICAgcmVhZG9ubHkgI3RyYW5zcG9ydHM6IExvZ1RyYW5zcG9ydFtdXG4gICAgcmVhZG9ubHkgcHVibGlzaFJhdGU6IG51bWJlclxuXG4gICAgY29uc3RydWN0b3IodHJhbnNwb3J0czogTG9nVHJhbnNwb3J0W10pIHtcbiAgICAgICAgdGhpcy4jdHJhbnNwb3J0cyA9IHRyYW5zcG9ydHNcbiAgICAgICAgdGhpcy5wdWJsaXNoUmF0ZSA9IHRyYW5zcG9ydHMubWFwKHQgPT4gdC5wdWJsaXNoUmF0ZSkuc29ydCgpWzBdID8/IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG4gICAgfVxuXG4gICAgc2VuZEVudHJpZXMoZW50cmllczogTG9nRW50cnlbXSwgc2lnbmFsOiBBYm9ydFNpZ25hbCkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuI3RyYW5zcG9ydHMubWFwKHQgPT4gdC5zZW5kRW50cmllcyhlbnRyaWVzLCBzaWduYWwpKS5maWx0ZXIocCA9PiAhIXApXG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykgYXMgdW5rbm93biBhcyBQcm9taXNlPHZvaWQ+XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBSb290TG9nZ2VyID0ge1xuICAgIGVucmljaFJlc2VydmVkKGZpZWxkczogb2JqZWN0KTogUm9vdExvZ2dlclxuICAgIGZsdXNoKCk6IFByb21pc2U8dm9pZD5cbn0gJiBMb2dnZXJcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoXG4gICAgY2xpZW50SW5mbzogQ2xpZW50SW5mbyxcbiAgICBsb2dnZXJzOiBMb2dUcmFuc3BvcnRbXSxcbiAgICBldmVudFRyYW5zcG9ydDogRXZlbnRUcmFuc3BvcnQsXG4gICAgdGltZW91dHM6IHsgZGVmYXVsdDogbnVtYmVyOyBjYXA/OiBudW1iZXIgfSxcbiAgICBvdXRlckNvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlcixcbiAgICBjb25maWc/OiBGdWxsQ29uZmlndXJhdGlvbixcbiAgICBtZXRhPzogTWV0YWRhdGEsXG4gICAgZW52aXJvbm1lbnQ/OiBFbnZpcm9ubWVudCxcbiAgICBub3c/OiAoKSA9PiBEYXRlLFxuKToge1xuICAgIGxvZzogUm9vdExvZ2dlclxuICAgIGNvbnRleHQ6IE9taXQ8Q29udGV4dCwgJ2xvZyc+XG4gICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZTx1bmtub3duPlxuICAgIGZsdXNoOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59IHtcbiAgICBjb25zdCB0aW1lb3V0ID1cbiAgICAgICAgKHRpbWVvdXRzLmNhcFxuICAgICAgICAgICAgPyBNYXRoLm1pbihjb25maWc/LnRpbWVvdXQgPz8gdGltZW91dHMuZGVmYXVsdCwgdGltZW91dHMuY2FwKVxuICAgICAgICAgICAgOiAoY29uZmlnPy50aW1lb3V0ID8/IHRpbWVvdXRzLmRlZmF1bHQpKSAqIDEwMDBcbiAgICBjb25zdCBpbm5lckNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIGNvbnN0IGxvZ1RyYW5zcG9ydCA9IGxvZ2dlcnMubGVuZ3RoID09PSAxID8gbG9nZ2Vyc1swXSEgOiBuZXcgTG9nTXVsdGljYXN0ZXIobG9nZ2VycylcbiAgICBjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKFxuICAgICAgICBsb2dUcmFuc3BvcnQsXG4gICAgICAgIGNvbmZpZz8ubWluaW11bUxvZ0xldmVsLFxuICAgICAgICBvdXRlckNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICkuZW5yaWNoUmVzZXJ2ZWQoe1xuICAgICAgICBvcGVyYXRpb25JZDogY2xpZW50SW5mby5vcGVyYXRpb25JZCxcbiAgICAgICAgY2xpZW50OiB7XG4gICAgICAgICAgICBpZDogY2xpZW50SW5mby5jbGllbnRJZCxcbiAgICAgICAgICAgIGlwOiBjbGllbnRJbmZvLmNsaWVudElwLFxuICAgICAgICAgICAgcG9ydDogY2xpZW50SW5mby5jbGllbnRQb3J0LFxuICAgICAgICAgICAgdXNlckFnZW50OiBjbGllbnRJbmZvLnVzZXJBZ2VudCxcbiAgICAgICAgfSxcbiAgICB9KVxuICAgIGdsb2JhbExvZ2dlciA9IGxvZ2dlclxuICAgIGNvbnN0IHN1Y2Nlc3NIYW5kbGVyczogKCgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkKVtdID0gW11cbiAgICBjb25zdCBjdHggPSB7XG4gICAgICAgIGVudjogZW52aXJvbm1lbnQgPz8gKHByb2Nlc3MuZW52IGFzIEVudmlyb25tZW50KSxcbiAgICAgICAgc2lnbmFsOiBpbm5lckNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBub3c6IG5vdyA/PyAoKCkgPT4gbmV3IERhdGUoKSksXG4gICAgICAgIG9wZXJhdGlvbklkOiBjbGllbnRJbmZvLm9wZXJhdGlvbklkLFxuICAgICAgICBjbGllbnQ6IHtcbiAgICAgICAgICAgIGlkOiBjbGllbnRJbmZvLmNsaWVudElkLFxuICAgICAgICAgICAgaXA6IGNsaWVudEluZm8uY2xpZW50SXAsXG4gICAgICAgICAgICBwb3J0OiBjbGllbnRJbmZvLmNsaWVudFBvcnQsXG4gICAgICAgICAgICB1c2VyQWdlbnQ6IGNsaWVudEluZm8udXNlckFnZW50LFxuICAgICAgICB9LFxuICAgICAgICBtZXRhOiBtZXRhXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBtZXRhLnBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IG1ldGEuZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgICByZXZpc2lvbjogbWV0YS5yZXZpc2lvbixcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGVtaXQ6IChcbiAgICAgICAgICAgIHRvcGljOiBzdHJpbmcsXG4gICAgICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgICAgICBzdWJqZWN0OiBzdHJpbmcsXG4gICAgICAgICAgICBkYXRhPzoge1xuICAgICAgICAgICAgICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXNzYWdlSWQ/OiBzdHJpbmcsXG4gICAgICAgICkgPT5cbiAgICAgICAgICAgIGV2ZW50VHJhbnNwb3J0LnNlbmRFdmVudCh0b3BpYywgdHlwZSwgc3ViamVjdCwgZGF0YSwgbWVzc2FnZUlkLCBvdXRlckNvbnRyb2xsZXIuc2lnbmFsKSxcbiAgICAgICAgb25TdWNjZXNzOiAoZm46ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkKSA9PiBzdWNjZXNzSGFuZGxlcnMucHVzaChmbiksXG4gICAgfVxuICAgIGNvbnN0IHRpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdUaW1lb3V0LicsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKVxuICAgICAgICBpbm5lckNvbnRyb2xsZXIuYWJvcnQoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZFxuICAgICAgICB2b2lkIGxvZ2dlci5mbHVzaCgpXG4gICAgfSwgdGltZW91dClcbiAgICBjb25zdCBmbHVzaEhhbmRsZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Fib3J0aW5nIGZsdXNoLicsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKVxuICAgICAgICBvdXRlckNvbnRyb2xsZXIuYWJvcnQoKVxuICAgIH0sIHRpbWVvdXQgKyAxNV8wMDApXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9nOiBsb2dnZXIsXG4gICAgICAgIGNvbnRleHQ6IGN0eCxcbiAgICAgICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZS5hbGwoc3VjY2Vzc0hhbmRsZXJzLm1hcChmbiA9PiBmbigpKSksXG4gICAgICAgIGZsdXNoOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSlcbiAgICAgICAgICAgIGF3YWl0IGxvZ2dlci5mbHVzaCgpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoZmx1c2hIYW5kbGUpXG4gICAgICAgIH0sXG4gICAgfVxufVxuXG5sZXQgZ2xvYmFsTG9nZ2VyOiBMb2dnZXIgfCB1bmRlZmluZWRcblxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnIgPT4ge1xuICAgIGdsb2JhbExvZ2dlcj8uZmF0YWwoJ1VuY2F1Z2h0IGV4Y2VwdGlvbi4nLCBlcnIsIHVuZGVmaW5lZClcbn0pXG5wcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCByZWFzb24gPT4ge1xuICAgIGdsb2JhbExvZ2dlcj8uZmF0YWwoJ1VuaGFuZGxlZCByZWplY3Rpb24uJywgcmVhc29uLCB1bmRlZmluZWQpXG59KVxuIl19
@@ -0,0 +1,10 @@
1
+ import { type Handler as EventFunction, type HandlerConfiguration } from '../event.js';
2
+ import { type FullConfiguration, type Metadata } from './meta.js';
3
+ export type EventHandler = {
4
+ meta: Metadata | undefined;
5
+ config: FullConfiguration | undefined;
6
+ topic: string;
7
+ type: string;
8
+ entry: EventFunction;
9
+ };
10
+ export declare function registerEventHandler(topic: string, type: string, configOrHandler: HandlerConfiguration | EventFunction, fn?: EventFunction): void;
@@ -0,0 +1,28 @@
1
+ import { combineConfig, getMetadata } from './meta.js';
2
+ import { addHandler } from './registry.js';
3
+ let eventHostRegistry;
4
+ function setEventHost(host) {
5
+ eventHostRegistry = host;
6
+ }
7
+ function eventHost(meta, cfg, topic, type, entry) {
8
+ addHandler('event', {
9
+ meta,
10
+ config: combineConfig(meta?.config, cfg),
11
+ topic,
12
+ type,
13
+ entry,
14
+ });
15
+ }
16
+ setEventHost(eventHost);
17
+ export function registerEventHandler(topic, type, configOrHandler, fn) {
18
+ if (typeof configOrHandler === 'function') {
19
+ eventHostRegistry(getMetadata(), undefined, topic, type, configOrHandler);
20
+ }
21
+ else {
22
+ if (!fn) {
23
+ throw new Error('Please provide a handler function.');
24
+ }
25
+ eventHostRegistry(getMetadata(), configOrHandler, topic, type, fn);
26
+ }
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudC1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBeUMsTUFBTSxXQUFXLENBQUE7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQWtCMUMsSUFBSSxpQkFBNEIsQ0FBQTtBQUVoQyxTQUFTLFlBQVksQ0FBQyxJQUFlO0lBQ2pDLGlCQUFpQixHQUFHLElBQUksQ0FBQTtBQUM1QixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQ2QsSUFBMEIsRUFDMUIsR0FBcUMsRUFDckMsS0FBYSxFQUNiLElBQVksRUFDWixLQUFvQjtJQUVwQixVQUFVLENBQUMsT0FBTyxFQUFFO1FBQ2hCLElBQUk7UUFDSixNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBQ3hDLEtBQUs7UUFDTCxJQUFJO1FBQ0osS0FBSztLQUNSLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFdkIsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxLQUFhLEVBQ2IsSUFBWSxFQUNaLGVBQXFELEVBQ3JELEVBQWtCO0lBRWxCLElBQUksT0FBTyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDeEMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDN0UsQ0FBQztTQUFNLENBQUM7UUFDSixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7UUFDekQsQ0FBQztRQUNELGlCQUFpQixDQUFDLFdBQVcsRUFBRSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3RFLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBIYW5kbGVyIGFzIEV2ZW50RnVuY3Rpb24sIHR5cGUgSGFuZGxlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9ldmVudC5qcydcbmltcG9ydCB7IGNvbWJpbmVDb25maWcsIGdldE1ldGFkYXRhLCB0eXBlIEZ1bGxDb25maWd1cmF0aW9uLCB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi9tZXRhLmpzJ1xuaW1wb3J0IHsgYWRkSGFuZGxlciB9IGZyb20gJy4vcmVnaXN0cnkuanMnXG5cbmV4cG9ydCB0eXBlIEV2ZW50SGFuZGxlciA9IHtcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZFxuICAgIGNvbmZpZzogRnVsbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWRcbiAgICB0b3BpYzogc3RyaW5nXG4gICAgdHlwZTogc3RyaW5nXG4gICAgZW50cnk6IEV2ZW50RnVuY3Rpb25cbn1cblxudHlwZSBFdmVudEhvc3QgPSAoXG4gICAgbWV0YTogTWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgY29uZmlnOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCxcbiAgICB0b3BpYzogc3RyaW5nLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBoYW5kbGVyOiBFdmVudEZ1bmN0aW9uLFxuKSA9PiB2b2lkXG5cbmxldCBldmVudEhvc3RSZWdpc3RyeTogRXZlbnRIb3N0XG5cbmZ1bmN0aW9uIHNldEV2ZW50SG9zdChob3N0OiBFdmVudEhvc3QpIHtcbiAgICBldmVudEhvc3RSZWdpc3RyeSA9IGhvc3Rcbn1cblxuZnVuY3Rpb24gZXZlbnRIb3N0KFxuICAgIG1ldGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIGNmZzogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgdG9waWM6IHN0cmluZyxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgZW50cnk6IEV2ZW50RnVuY3Rpb24sXG4pIHtcbiAgICBhZGRIYW5kbGVyKCdldmVudCcsIHtcbiAgICAgICAgbWV0YSxcbiAgICAgICAgY29uZmlnOiBjb21iaW5lQ29uZmlnKG1ldGE/LmNvbmZpZywgY2ZnKSxcbiAgICAgICAgdG9waWMsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGVudHJ5LFxuICAgIH0pXG59XG5cbnNldEV2ZW50SG9zdChldmVudEhvc3QpXG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckV2ZW50SGFuZGxlcihcbiAgICB0b3BpYzogc3RyaW5nLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjb25maWdPckhhbmRsZXI6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgRXZlbnRGdW5jdGlvbixcbiAgICBmbj86IEV2ZW50RnVuY3Rpb24sXG4pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ09ySGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBldmVudEhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCB1bmRlZmluZWQsIHRvcGljLCB0eXBlLCBjb25maWdPckhhbmRsZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFmbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIGhhbmRsZXIgZnVuY3Rpb24uJylcbiAgICAgICAgfVxuICAgICAgICBldmVudEhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCBjb25maWdPckhhbmRsZXIsIHRvcGljLCB0eXBlLCBmbilcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { Context, type Json } from '../context.js';
2
+ import { RootLogger } from './context.js';
3
+ import type { EventHandler } from './event-registry.js';
4
+ export declare function handle(log: RootLogger, context: Omit<Context, 'log'>, handler: EventHandler, options: {
5
+ readonly subject: string;
6
+ readonly event: {
7
+ readonly [key: string]: Json;
8
+ } | undefined;
9
+ readonly timestamp: Date;
10
+ readonly messageId?: string;
11
+ }, success: () => Promise<unknown>): Promise<boolean>;
package/host/event.js ADDED
@@ -0,0 +1,17 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { measure } from '../context.js';
3
+ export async function handle(log, context, handler, options, success) {
4
+ const enrichedLog = log.enrichReserved({ meta: context.meta, event: options });
5
+ enrichedLog.trace('Event BEGIN');
6
+ try {
7
+ await measure(log.enrichReserved({ meta: context.meta }), 'execution', () => handler.entry({ ...context, log: enrichedLog }, options.subject, options.event, options.timestamp, options.messageId ?? randomUUID().replaceAll('-', '')));
8
+ enrichedLog.debug('Event END');
9
+ await success();
10
+ return true;
11
+ }
12
+ catch (e) {
13
+ enrichedLog.error('Event END', e);
14
+ return false;
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hDLE9BQU8sRUFBVyxPQUFPLEVBQWEsTUFBTSxlQUFlLENBQUE7QUFJM0QsTUFBTSxDQUFDLEtBQUssVUFBVSxNQUFNLENBQ3hCLEdBQWUsRUFDZixPQUE2QixFQUM3QixPQUFxQixFQUNyQixPQVNDLEVBQ0QsT0FBK0I7SUFFL0IsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzlFLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDaEMsSUFBSSxDQUFDO1FBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQ3hFLE9BQU8sQ0FBQyxLQUFLLENBQ1QsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEVBQ2hDLE9BQU8sQ0FBQyxPQUFPLEVBQ2YsT0FBTyxDQUFDLEtBQUssRUFDYixPQUFPLENBQUMsU0FBUyxFQUNqQixPQUFPLENBQUMsU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ3hELENBQ0osQ0FBQTtRQUNELFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDOUIsTUFBTSxPQUFPLEVBQUUsQ0FBQTtRQUNmLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDVCxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNqQyxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdub2RlOmNyeXB0bydcbmltcG9ydCB7IENvbnRleHQsIG1lYXN1cmUsIHR5cGUgSnNvbiB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBSb290TG9nZ2VyIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tICcuL2V2ZW50LXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlKFxuICAgIGxvZzogUm9vdExvZ2dlcixcbiAgICBjb250ZXh0OiBPbWl0PENvbnRleHQsICdsb2cnPixcbiAgICBoYW5kbGVyOiBFdmVudEhhbmRsZXIsXG4gICAgb3B0aW9uczoge1xuICAgICAgICByZWFkb25seSBzdWJqZWN0OiBzdHJpbmdcbiAgICAgICAgcmVhZG9ubHkgZXZlbnQ6XG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEpzb25cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfCB1bmRlZmluZWRcbiAgICAgICAgcmVhZG9ubHkgdGltZXN0YW1wOiBEYXRlXG4gICAgICAgIHJlYWRvbmx5IG1lc3NhZ2VJZD86IHN0cmluZ1xuICAgIH0sXG4gICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZTx1bmtub3duPixcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGVucmljaGVkTG9nID0gbG9nLmVucmljaFJlc2VydmVkKHsgbWV0YTogY29udGV4dC5tZXRhLCBldmVudDogb3B0aW9ucyB9KVxuICAgIGVucmljaGVkTG9nLnRyYWNlKCdFdmVudCBCRUdJTicpXG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbWVhc3VyZShsb2cuZW5yaWNoUmVzZXJ2ZWQoeyBtZXRhOiBjb250ZXh0Lm1ldGEgfSksICdleGVjdXRpb24nLCAoKSA9PlxuICAgICAgICAgICAgaGFuZGxlci5lbnRyeShcbiAgICAgICAgICAgICAgICB7IC4uLmNvbnRleHQsIGxvZzogZW5yaWNoZWRMb2cgfSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLnN1YmplY3QsXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ldmVudCxcbiAgICAgICAgICAgICAgICBvcHRpb25zLnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICBvcHRpb25zLm1lc3NhZ2VJZCA/PyByYW5kb21VVUlEKCkucmVwbGFjZUFsbCgnLScsICcnKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgZW5yaWNoZWRMb2cuZGVidWcoJ0V2ZW50IEVORCcpXG4gICAgICAgIGF3YWl0IHN1Y2Nlc3MoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZW5yaWNoZWRMb2cuZXJyb3IoJ0V2ZW50IEVORCcsIGUpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbn1cbiJdfQ==
package/host/git.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function getHash(path: string): Promise<string | undefined>;
package/host/git.js ADDED
@@ -0,0 +1,33 @@
1
+ import { exec } from 'node:child_process';
2
+ export async function getHash(path) {
3
+ try {
4
+ const [clean, hash = ''] = await Promise.all([isClean(path), getCommittedHash(path)]);
5
+ if (clean) {
6
+ return hash.slice(0, 7);
7
+ }
8
+ return hash.slice(0, 7) + '+';
9
+ }
10
+ catch {
11
+ return undefined;
12
+ }
13
+ }
14
+ async function isClean(path) {
15
+ const changes = await execAsync(path, 'git status --short');
16
+ return changes.length === 0;
17
+ }
18
+ async function getCommittedHash(path) {
19
+ const [long] = await execAsync(path, 'git rev-parse HEAD');
20
+ return long;
21
+ }
22
+ function execAsync(path, cmd) {
23
+ return new Promise((resolve, reject) => {
24
+ exec(cmd, { cwd: path }, (err, stdout) => {
25
+ if (err) {
26
+ reject(err);
27
+ return;
28
+ }
29
+ resolve(stdout.split('\n').slice(0, -1));
30
+ });
31
+ });
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUV6QyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxJQUFZO0lBQ3RDLElBQUksQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDckYsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQ2pDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxPQUFPLFNBQVMsQ0FBQTtJQUNwQixDQUFDO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxPQUFPLENBQUMsSUFBWTtJQUMvQixNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtJQUMzRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFBO0FBQy9CLENBQUM7QUFFRCxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsSUFBWTtJQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUE7SUFDMUQsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDeEMsT0FBTyxJQUFJLE9BQU8sQ0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM3QyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNYLE9BQU07WUFDVixDQUFDO1lBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SGFzaChwYXRoOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBbY2xlYW4sIGhhc2ggPSAnJ10gPSBhd2FpdCBQcm9taXNlLmFsbChbaXNDbGVhbihwYXRoKSwgZ2V0Q29tbWl0dGVkSGFzaChwYXRoKV0pXG4gICAgICAgIGlmIChjbGVhbikge1xuICAgICAgICAgICAgcmV0dXJuIGhhc2guc2xpY2UoMCwgNylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzaC5zbGljZSgwLCA3KSArICcrJ1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpc0NsZWFuKHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGNoYW5nZXMgPSBhd2FpdCBleGVjQXN5bmMocGF0aCwgJ2dpdCBzdGF0dXMgLS1zaG9ydCcpXG4gICAgcmV0dXJuIGNoYW5nZXMubGVuZ3RoID09PSAwXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbW1pdHRlZEhhc2gocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgW2xvbmddID0gYXdhaXQgZXhlY0FzeW5jKHBhdGgsICdnaXQgcmV2LXBhcnNlIEhFQUQnKVxuICAgIHJldHVybiBsb25nXG59XG5cbmZ1bmN0aW9uIGV4ZWNBc3luYyhwYXRoOiBzdHJpbmcsIGNtZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZ1tdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGV4ZWMoY21kLCB7IGN3ZDogcGF0aCB9LCAoZXJyLCBzdGRvdXQpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShzdGRvdXQuc3BsaXQoJ1xcbicpLnNsaWNlKDAsIC0xKSlcbiAgICAgICAgfSlcbiAgICB9KVxufVxuIl19
@@ -0,0 +1,12 @@
1
+ import { type HandlerConfiguration, type Handler as HttpFunction } from '../http.js';
2
+ import { type FullConfiguration, type Metadata } from './meta.js';
3
+ export type HttpHandler = {
4
+ meta: Metadata | undefined;
5
+ config: FullConfiguration | undefined;
6
+ method: Method;
7
+ pathPattern: string;
8
+ entry: HttpFunction;
9
+ };
10
+ export declare function pathToRegExp(path: string): RegExp;
11
+ export type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
12
+ export declare function registerHttpHandler(method: Method, path: string, configOrHandler: HandlerConfiguration | HttpFunction, fn?: HttpFunction): void;
@@ -0,0 +1,33 @@
1
+ import { combineConfig, getMetadata } from './meta.js';
2
+ import { addHandler } from './registry.js';
3
+ let httpHostRegistry;
4
+ function setHttpHost(host) {
5
+ httpHostRegistry = host;
6
+ }
7
+ export function pathToRegExp(path) {
8
+ return new RegExp(('^' +
9
+ path.replaceAll(/[/\\^$+?.()|[\]{}]/gu, '\\$&').replaceAll('*', '[^/\\?]+') +
10
+ '(\\?.*)?$').replace('[^/\\?]+[^/\\?]+(\\?.*)?$', ''), 'u');
11
+ }
12
+ function httpHost(meta, cfg, method, path, entry) {
13
+ addHandler('http', {
14
+ meta,
15
+ config: combineConfig(meta?.config, cfg),
16
+ method,
17
+ pathPattern: path,
18
+ entry,
19
+ });
20
+ }
21
+ setHttpHost(httpHost);
22
+ export function registerHttpHandler(method, path, configOrHandler, fn) {
23
+ if (typeof configOrHandler === 'function') {
24
+ httpHostRegistry(getMetadata(), undefined, method, path, configOrHandler);
25
+ }
26
+ else {
27
+ if (!fn) {
28
+ throw new Error('Please provide a handler function.');
29
+ }
30
+ httpHostRegistry(getMetadata(), configOrHandler, method, path, fn);
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQXlDLE1BQU0sV0FBVyxDQUFBO0FBQzdGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFrQjFDLElBQUksZ0JBQTBCLENBQUE7QUFFOUIsU0FBUyxXQUFXLENBQUMsSUFBYztJQUMvQixnQkFBZ0IsR0FBRyxJQUFJLENBQUE7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBWTtJQUNyQyxPQUFPLElBQUksTUFBTSxDQUNiLENBQ0ksR0FBRztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUM7UUFDM0UsV0FBVyxDQUNkLENBQUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsQ0FBQyxFQUMxQyxHQUFHLENBQ04sQ0FBQTtBQUNMLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FDYixJQUEwQixFQUMxQixHQUFxQyxFQUNyQyxNQUFjLEVBQ2QsSUFBWSxFQUNaLEtBQW1CO0lBRW5CLFVBQVUsQ0FBQyxNQUFNLEVBQUU7UUFDZixJQUFJO1FBQ0osTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztRQUN4QyxNQUFNO1FBQ04sV0FBVyxFQUFFLElBQUk7UUFDakIsS0FBSztLQUNSLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUE7QUFJckIsTUFBTSxVQUFVLG1CQUFtQixDQUMvQixNQUFjLEVBQ2QsSUFBWSxFQUNaLGVBQW9ELEVBQ3BELEVBQWlCO0lBRWpCLElBQUksT0FBTyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDeEMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDN0UsQ0FBQztTQUFNLENBQUM7UUFDSixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7UUFDekQsQ0FBQztRQUNELGdCQUFnQixDQUFDLFdBQVcsRUFBRSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3RFLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBIYW5kbGVyQ29uZmlndXJhdGlvbiwgdHlwZSBIYW5kbGVyIGFzIEh0dHBGdW5jdGlvbiB9IGZyb20gJy4uL2h0dHAuanMnXG5pbXBvcnQgeyBjb21iaW5lQ29uZmlnLCBnZXRNZXRhZGF0YSwgdHlwZSBGdWxsQ29uZmlndXJhdGlvbiwgdHlwZSBNZXRhZGF0YSB9IGZyb20gJy4vbWV0YS5qcydcbmltcG9ydCB7IGFkZEhhbmRsZXIgfSBmcm9tICcuL3JlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgdHlwZSBIdHRwSGFuZGxlciA9IHtcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZFxuICAgIGNvbmZpZzogRnVsbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWRcbiAgICBtZXRob2Q6IE1ldGhvZFxuICAgIHBhdGhQYXR0ZXJuOiBzdHJpbmdcbiAgICBlbnRyeTogSHR0cEZ1bmN0aW9uXG59XG5cbnR5cGUgSHR0cEhvc3QgPSAoXG4gICAgbWV0YTogTWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgY29uZmlnOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCxcbiAgICBtZXRob2Q6IE1ldGhvZCxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogSHR0cEZ1bmN0aW9uLFxuKSA9PiB2b2lkXG5cbmxldCBodHRwSG9zdFJlZ2lzdHJ5OiBIdHRwSG9zdFxuXG5mdW5jdGlvbiBzZXRIdHRwSG9zdChob3N0OiBIdHRwSG9zdCkge1xuICAgIGh0dHBIb3N0UmVnaXN0cnkgPSBob3N0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoVG9SZWdFeHAocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoXG4gICAgICAgIChcbiAgICAgICAgICAgICdeJyArXG4gICAgICAgICAgICBwYXRoLnJlcGxhY2VBbGwoL1svXFxcXF4kKz8uKCl8W1xcXXt9XS9ndSwgJ1xcXFwkJicpLnJlcGxhY2VBbGwoJyonLCAnW14vXFxcXD9dKycpICtcbiAgICAgICAgICAgICcoXFxcXD8uKik/JCdcbiAgICAgICAgKS5yZXBsYWNlKCdbXi9cXFxcP10rW14vXFxcXD9dKyhcXFxcPy4qKT8kJywgJycpLFxuICAgICAgICAndScsXG4gICAgKVxufVxuXG5mdW5jdGlvbiBodHRwSG9zdChcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZCxcbiAgICBjZmc6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgIG1ldGhvZDogTWV0aG9kLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBlbnRyeTogSHR0cEZ1bmN0aW9uLFxuKSB7XG4gICAgYWRkSGFuZGxlcignaHR0cCcsIHtcbiAgICAgICAgbWV0YSxcbiAgICAgICAgY29uZmlnOiBjb21iaW5lQ29uZmlnKG1ldGE/LmNvbmZpZywgY2ZnKSxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBwYXRoUGF0dGVybjogcGF0aCxcbiAgICAgICAgZW50cnksXG4gICAgfSlcbn1cblxuc2V0SHR0cEhvc3QoaHR0cEhvc3QpXG5cbmV4cG9ydCB0eXBlIE1ldGhvZCA9ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnUEFUQ0gnIHwgJ0RFTEVURSdcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVySHR0cEhhbmRsZXIoXG4gICAgbWV0aG9kOiBNZXRob2QsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGNvbmZpZ09ySGFuZGxlcjogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIdHRwRnVuY3Rpb24sXG4gICAgZm4/OiBIdHRwRnVuY3Rpb24sXG4pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ09ySGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBodHRwSG9zdFJlZ2lzdHJ5KGdldE1ldGFkYXRhKCksIHVuZGVmaW5lZCwgbWV0aG9kLCBwYXRoLCBjb25maWdPckhhbmRsZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFmbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIGhhbmRsZXIgZnVuY3Rpb24uJylcbiAgICAgICAgfVxuICAgICAgICBodHRwSG9zdFJlZ2lzdHJ5KGdldE1ldGFkYXRhKCksIGNvbmZpZ09ySGFuZGxlciwgbWV0aG9kLCBwYXRoLCBmbilcbiAgICB9XG59XG4iXX0=
package/host/http.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Context } from '../context.js';
2
2
  import type { Json } from '../http.js';
3
3
  import { ClientInfo, RootLogger } from './context.js';
4
- import type { HttpHandler } from './registry.js';
4
+ import type { HttpHandler } from './http-registry.js';
5
5
  export type Response = {
6
6
  headers: {
7
7
  readonly [key: string]: string;