@riddance/host 0.1.1 → 0.2.0

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/host/reflect.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { readdir, readFile } from 'node:fs/promises';
2
2
  import { basename, extname, join, resolve } from 'node:path';
3
3
  import { pathToFileURL } from 'node:url';
4
+ import { getHash } from './git.js';
4
5
  export function resolveCpu(config, supported) {
5
6
  const resolved = resolveSupported(config.cpus, supported);
6
7
  if (!resolved) {
@@ -26,17 +27,22 @@ function resolveSupported(config, supported) {
26
27
  return supported.find(s => config.includes(s) && !config.includes(`!${s}`));
27
28
  }
28
29
  export async function reflect(path) {
29
- const packageJson = await readConfig();
30
30
  const absolutePath = resolve(process.cwd(), path);
31
- const files = (await readdir(absolutePath)).filter(file => extname(file) === '.ts' && !file.endsWith('.d.ts'));
31
+ const [packageJson, allFiles, revision] = await Promise.all([
32
+ readConfig(absolutePath),
33
+ readdir(absolutePath),
34
+ getHash(absolutePath),
35
+ ]);
36
+ const files = allFiles.filter(file => extname(file) === '.ts' && !file.endsWith('.d.ts'));
32
37
  const { getHandlers, setMeta } = (await import(pathToFileURL(join(absolutePath, 'node_modules/@riddance/host/host/registry.js')).toString()));
33
38
  for (const file of files) {
34
39
  const base = basename(file, '.ts');
35
- setMeta(packageJson.name, base, undefined, packageJson.config);
40
+ setMeta(packageJson.name, base, revision, packageJson.config);
36
41
  await import(pathToFileURL(join(absolutePath, base + '.js')).toString());
37
42
  }
38
43
  return {
39
44
  name: packageJson.name,
45
+ revision,
40
46
  http: getHandlers('http').map(h => ({
41
47
  config: {
42
48
  ...h.config,
@@ -47,12 +53,32 @@ export async function reflect(path) {
47
53
  name: h.meta?.fileName ?? '',
48
54
  method: h.method,
49
55
  pathPattern: h.pathPattern,
50
- pathRegExp: h.pathRegExp,
56
+ })),
57
+ timers: getHandlers('timer').map(h => ({
58
+ config: {
59
+ ...h.config,
60
+ cpus: packageJson.cpu,
61
+ os: packageJson.os,
62
+ nodeVersion: packageJson.engines?.node,
63
+ },
64
+ name: h.meta?.fileName ?? '',
65
+ schedule: h.schedule,
66
+ })),
67
+ events: getHandlers('event').map(h => ({
68
+ config: {
69
+ ...h.config,
70
+ cpus: packageJson.cpu,
71
+ os: packageJson.os,
72
+ nodeVersion: packageJson.engines?.node,
73
+ },
74
+ name: h.meta?.fileName ?? '',
75
+ topic: h.topic,
76
+ type: h.type,
51
77
  })),
52
78
  };
53
79
  }
54
- async function readConfig() {
55
- const packageJson = JSON.parse(await readFile('package.json', 'utf-8'));
80
+ async function readConfig(path) {
81
+ const packageJson = JSON.parse(await readFile(join(path, 'package.json'), 'utf-8'));
56
82
  return packageJson;
57
83
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlZmxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFvQ3hDLE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBZ0MsRUFBRSxTQUFnQjtJQUN6RSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3pELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNaLDBHQUEwRztRQUMxRyxvRUFBb0U7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQTtBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FDckIsTUFBZ0MsRUFDaEMsU0FBNEI7SUFFNUIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN2RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDWiwwR0FBMEc7UUFDMUcsb0VBQW9FO1FBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLEdBQUcsTUFBTSxDQUFDLEVBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUE7QUFDbkIsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQ3JCLE1BQW1DLEVBQ25DLFNBQWM7SUFFZCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDVixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDL0UsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxDQUFDLElBQVk7SUFDdEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQTtJQUN0QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2pELE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQzdELENBQUE7SUFDRCxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQzFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLDhDQUE4QyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FDL0YsQ0FlQSxDQUFBO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzlELE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7UUFDdEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sRUFBRTtnQkFDSixHQUFHLENBQUMsQ0FBQyxNQUFNO2dCQUNYLElBQUksRUFBRSxXQUFXLENBQUMsR0FBRztnQkFDckIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFO2dCQUNsQixXQUFXLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJO2FBQ3pDO1lBQ0QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDNUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO1lBQ2hCLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztZQUMxQixVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVU7U0FDM0IsQ0FBQyxDQUFDO0tBQ04sQ0FBQTtBQUNMLENBQUM7QUFFRCxLQUFLLFVBQVUsVUFBVTtJQUNyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FNckUsQ0FBQTtJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBiYXNlbmFtZSwgZXh0bmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCdcbmltcG9ydCB7IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2h0dHAuanMnXG5pbXBvcnQgeyBQYWNrYWdlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcmVnaXN0cnkuanMnXG5cbnR5cGUgQ1BVID1cbiAgICB8ICdhcm0nXG4gICAgfCAnYXJtNjQnXG4gICAgfCAnaWEzMidcbiAgICB8ICdtaXBzJ1xuICAgIHwgJ21pcHNlbCdcbiAgICB8ICdwcGMnXG4gICAgfCAncHBjNjQnXG4gICAgfCAnczM5MCdcbiAgICB8ICdzMzkweCdcbiAgICB8ICd4MzInXG4gICAgfCAneDY0J1xudHlwZSBDcHVDb25maWcgPSBDUFUgfCBgISR7Q1BVfWBcbnR5cGUgT1NDb25maWcgPSBOb2RlSlMuUGxhdGZvcm0gfCBgISR7Tm9kZUpTLlBsYXRmb3JtfWBcblxuZXhwb3J0IHR5cGUgUGFja2FnZUpzb25Db25maWd1cmF0aW9uID0ge1xuICAgIG5vZGVWZXJzaW9uPzogc3RyaW5nXG4gICAgY3B1cz86IENwdUNvbmZpZ1tdXG4gICAgb3M/OiBPU0NvbmZpZ1tdXG59XG5cbmV4cG9ydCB0eXBlIFJlZmxlY3Rpb24gPSB7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgaHR0cDoge1xuICAgICAgICBuYW1lOiBzdHJpbmdcbiAgICAgICAgbWV0aG9kOiBzdHJpbmdcbiAgICAgICAgcGF0aFBhdHRlcm46IHN0cmluZ1xuICAgICAgICBwYXRoUmVnRXhwOiBSZWdFeHBcbiAgICAgICAgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gJiBQYWNrYWdlSnNvbkNvbmZpZ3VyYXRpb25cbiAgICB9W11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDcHUoY29uZmlnOiBQYWNrYWdlSnNvbkNvbmZpZ3VyYXRpb24sIHN1cHBvcnRlZDogQ1BVW10pOiBDUFUge1xuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVN1cHBvcnRlZChjb25maWcuY3B1cywgc3VwcG9ydGVkKVxuICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgLy8gcmVzb2x2ZTxUPihjb25maWcsIHN1cHBvcnRlZCkgYWN0dWFsbHkgYXNzZXJ0cyBjb25maWcgaXMgKFQgfCBgISR7VH1gKVtdLCBidXQgdGhhdCdzIG5vdCBzdXBwb3J0ZWQgeWV0LlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIENQVXM6ICcgKyBjb25maWcuY3B1cyEuam9pbignLCAnKSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT1MoXG4gICAgY29uZmlnOiBQYWNrYWdlSnNvbkNvbmZpZ3VyYXRpb24sXG4gICAgc3VwcG9ydGVkOiBOb2RlSlMuUGxhdGZvcm1bXSxcbik6IE5vZGVKUy5QbGF0Zm9ybSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlU3VwcG9ydGVkKGNvbmZpZy5vcywgc3VwcG9ydGVkKVxuICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgLy8gcmVzb2x2ZTxUPihjb25maWcsIHN1cHBvcnRlZCkgYWN0dWFsbHkgYXNzZXJ0cyBjb25maWcgaXMgKFQgfCBgISR7VH1gKVtdLCBidXQgdGhhdCdzIG5vdCBzdXBwb3J0ZWQgeWV0LlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zOiAnICsgY29uZmlnLm9zIS5qb2luKCcsICcpKVxuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWRcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVN1cHBvcnRlZDxUIGV4dGVuZHMgc3RyaW5nPihcbiAgICBjb25maWc6IChUIHwgYCEke1R9YClbXSB8IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0ZWQ6IFRbXSxcbik6IFQgfCB1bmRlZmluZWQge1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWRbMF1cbiAgICB9XG4gICAgcmV0dXJuIHN1cHBvcnRlZC5maW5kKHMgPT4gY29uZmlnLmluY2x1ZGVzKHMpICYmICFjb25maWcuaW5jbHVkZXMoYCEke3N9YCkpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWZsZWN0KHBhdGg6IHN0cmluZyk6IFByb21pc2U8UmVmbGVjdGlvbj4ge1xuICAgIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZENvbmZpZygpXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gcmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBwYXRoKVxuICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IHJlYWRkaXIoYWJzb2x1dGVQYXRoKSkuZmlsdGVyKFxuICAgICAgICBmaWxlID0+IGV4dG5hbWUoZmlsZSkgPT09ICcudHMnICYmICFmaWxlLmVuZHNXaXRoKCcuZC50cycpLFxuICAgIClcbiAgICBjb25zdCB7IGdldEhhbmRsZXJzLCBzZXRNZXRhIH0gPSAoYXdhaXQgaW1wb3J0KFxuICAgICAgICBwYXRoVG9GaWxlVVJMKGpvaW4oYWJzb2x1dGVQYXRoLCAnbm9kZV9tb2R1bGVzL0ByaWRkYW5jZS9ob3N0L2hvc3QvcmVnaXN0cnkuanMnKSkudG9TdHJpbmcoKVxuICAgICkpIGFzIHtcbiAgICAgICAgZ2V0SGFuZGxlcnM6ICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICAgICAgbWV0YT86IHsgZmlsZU5hbWU6IHN0cmluZyB9XG4gICAgICAgICAgICBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvblxuICAgICAgICAgICAgbWV0aG9kOiBzdHJpbmdcbiAgICAgICAgICAgIHBhdGhQYXR0ZXJuOiBzdHJpbmdcbiAgICAgICAgICAgIHBhdGhSZWdFeHA6IFJlZ0V4cFxuICAgICAgICB9W11cbiAgICAgICAgc2V0TWV0YTogKFxuICAgICAgICAgICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICByZXY6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNmZzogUGFja2FnZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgICAgICkgPT4gdm9pZFxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBjb25zdCBiYXNlID0gYmFzZW5hbWUoZmlsZSwgJy50cycpXG4gICAgICAgIHNldE1ldGEocGFja2FnZUpzb24ubmFtZSwgYmFzZSwgdW5kZWZpbmVkLCBwYWNrYWdlSnNvbi5jb25maWcpXG4gICAgICAgIGF3YWl0IGltcG9ydChwYXRoVG9GaWxlVVJMKGpvaW4oYWJzb2x1dGVQYXRoLCBiYXNlICsgJy5qcycpKS50b1N0cmluZygpKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHBhY2thZ2VKc29uLm5hbWUsXG4gICAgICAgIGh0dHA6IGdldEhhbmRsZXJzKCdodHRwJykubWFwKGggPT4gKHtcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgIC4uLmguY29uZmlnLFxuICAgICAgICAgICAgICAgIGNwdXM6IHBhY2thZ2VKc29uLmNwdSxcbiAgICAgICAgICAgICAgICBvczogcGFja2FnZUpzb24ub3MsXG4gICAgICAgICAgICAgICAgbm9kZVZlcnNpb246IHBhY2thZ2VKc29uLmVuZ2luZXM/Lm5vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogaC5tZXRhPy5maWxlTmFtZSA/PyAnJyxcbiAgICAgICAgICAgIG1ldGhvZDogaC5tZXRob2QsXG4gICAgICAgICAgICBwYXRoUGF0dGVybjogaC5wYXRoUGF0dGVybixcbiAgICAgICAgICAgIHBhdGhSZWdFeHA6IGgucGF0aFJlZ0V4cCxcbiAgICAgICAgfSkpLFxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZygpIHtcbiAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoJ3BhY2thZ2UuanNvbicsICd1dGYtOCcpKSBhcyB7XG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICBlbmdpbmVzPzogeyBbZW5naW5lOiBzdHJpbmddOiBzdHJpbmcgfVxuICAgICAgICBjcHU/OiBDcHVDb25maWdbXVxuICAgICAgICBvcz86IE9TQ29uZmlnW11cbiAgICAgICAgY29uZmlnPzogb2JqZWN0XG4gICAgfVxuICAgIHJldHVybiBwYWNrYWdlSnNvblxufVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlZmxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFJeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQStDbEMsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFnQyxFQUFFLFNBQWdCO0lBQ3pFLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDekQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ1osMEdBQTBHO1FBQzFHLG9FQUFvRTtRQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxJQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbkUsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFBO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUNyQixNQUFnQyxFQUNoQyxTQUE0QjtJQUU1QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3ZELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNaLDBHQUEwRztRQUMxRyxvRUFBb0U7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsR0FBRyxNQUFNLENBQUMsRUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQTtBQUNuQixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FDckIsTUFBbUMsRUFDbkMsU0FBYztJQUVkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNWLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUMvRSxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUMsSUFBWTtJQUN0QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2pELE1BQU0sQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUN4RCxVQUFVLENBQUMsWUFBWSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDckIsT0FBTyxDQUFDLFlBQVksQ0FBQztLQUN4QixDQUFDLENBQUE7SUFDRixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUN6RixNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQzFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLDhDQUE4QyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FDL0YsQ0FRQSxDQUFBO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzdELE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7UUFDdEIsUUFBUTtRQUNSLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQyxNQUFNLEVBQUU7Z0JBQ0osR0FBRyxDQUFDLENBQUMsTUFBTTtnQkFDWCxJQUFJLEVBQUUsV0FBVyxDQUFDLEdBQUc7Z0JBQ3JCLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRTtnQkFDbEIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSTthQUN6QztZQUNELElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFO1lBQzVCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtZQUNoQixXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sRUFBRTtnQkFDSixHQUFHLENBQUMsQ0FBQyxNQUFNO2dCQUNYLElBQUksRUFBRSxXQUFXLENBQUMsR0FBRztnQkFDckIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFO2dCQUNsQixXQUFXLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJO2FBQ3pDO1lBQ0QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDNUIsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO1NBQ3ZCLENBQUMsQ0FBQztRQUNILE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxNQUFNLEVBQUU7Z0JBQ0osR0FBRyxDQUFDLENBQUMsTUFBTTtnQkFDWCxJQUFJLEVBQUUsV0FBVyxDQUFDLEdBQUc7Z0JBQ3JCLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRTtnQkFDbEIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSTthQUN6QztZQUNELElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFO1lBQzVCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtTQUNmLENBQUMsQ0FBQztLQUNOLENBQUE7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxJQUFZO0lBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FNakYsQ0FBQTtJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBiYXNlbmFtZSwgZXh0bmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCdcbmltcG9ydCB0eXBlIHsgSGFuZGxlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHR5cGUgeyBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9odHRwLmpzJ1xuaW1wb3J0IHR5cGUgeyBUaW1lckhhbmRsZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vdGltZXIuanMnXG5pbXBvcnQgeyBnZXRIYXNoIH0gZnJvbSAnLi9naXQuanMnXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9tZXRhLmpzJ1xuaW1wb3J0IHR5cGUgeyBIYW5kbGVyc0dldHRlciB9IGZyb20gJy4vcmVnaXN0cnkuanMnXG5cbnR5cGUgQ1BVID1cbiAgICB8ICdhcm0nXG4gICAgfCAnYXJtNjQnXG4gICAgfCAnaWEzMidcbiAgICB8ICdtaXBzJ1xuICAgIHwgJ21pcHNlbCdcbiAgICB8ICdwcGMnXG4gICAgfCAncHBjNjQnXG4gICAgfCAnczM5MCdcbiAgICB8ICdzMzkweCdcbiAgICB8ICd4MzInXG4gICAgfCAneDY0J1xudHlwZSBDcHVDb25maWcgPSBDUFUgfCBgISR7Q1BVfWBcbnR5cGUgT1NDb25maWcgPSBOb2RlSlMuUGxhdGZvcm0gfCBgISR7Tm9kZUpTLlBsYXRmb3JtfWBcblxuZXhwb3J0IHR5cGUgUGFja2FnZUpzb25Db25maWd1cmF0aW9uID0ge1xuICAgIG5vZGVWZXJzaW9uPzogc3RyaW5nXG4gICAgY3B1cz86IENwdUNvbmZpZ1tdXG4gICAgb3M/OiBPU0NvbmZpZ1tdXG59XG5cbmV4cG9ydCB0eXBlIFJlZmxlY3Rpb24gPSB7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgcmV2aXNpb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgIGh0dHA6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nXG4gICAgICAgIG1ldGhvZDogc3RyaW5nXG4gICAgICAgIHBhdGhQYXR0ZXJuOiBzdHJpbmdcbiAgICAgICAgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gJiBQYWNrYWdlSnNvbkNvbmZpZ3VyYXRpb25cbiAgICB9W11cbiAgICB0aW1lcnM6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nXG4gICAgICAgIHNjaGVkdWxlOiBzdHJpbmdcbiAgICAgICAgY29uZmlnOiBUaW1lckhhbmRsZXJDb25maWd1cmF0aW9uICYgUGFja2FnZUpzb25Db25maWd1cmF0aW9uXG4gICAgfVtdXG4gICAgZXZlbnRzOiB7XG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICB0b3BpYzogc3RyaW5nXG4gICAgICAgIHR5cGU6IHN0cmluZ1xuICAgICAgICBjb25maWc6IEhhbmRsZXJDb25maWd1cmF0aW9uICYgUGFja2FnZUpzb25Db25maWd1cmF0aW9uXG4gICAgfVtdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ3B1KGNvbmZpZzogUGFja2FnZUpzb25Db25maWd1cmF0aW9uLCBzdXBwb3J0ZWQ6IENQVVtdKTogQ1BVIHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVTdXBwb3J0ZWQoY29uZmlnLmNwdXMsIHN1cHBvcnRlZClcbiAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgIC8vIHJlc29sdmU8VD4oY29uZmlnLCBzdXBwb3J0ZWQpIGFjdHVhbGx5IGFzc2VydHMgY29uZmlnIGlzIChUIHwgYCEke1R9YClbXSwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIHlldC5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBDUFVzOiAnICsgY29uZmlnLmNwdXMhLmpvaW4oJywgJykpXG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU9TKFxuICAgIGNvbmZpZzogUGFja2FnZUpzb25Db25maWd1cmF0aW9uLFxuICAgIHN1cHBvcnRlZDogTm9kZUpTLlBsYXRmb3JtW10sXG4pOiBOb2RlSlMuUGxhdGZvcm0ge1xuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVN1cHBvcnRlZChjb25maWcub3MsIHN1cHBvcnRlZClcbiAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgIC8vIHJlc29sdmU8VD4oY29uZmlnLCBzdXBwb3J0ZWQpIGFjdHVhbGx5IGFzc2VydHMgY29uZmlnIGlzIChUIHwgYCEke1R9YClbXSwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIHlldC5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBvcGVyYXRpbmcgc3lzdGVtczogJyArIGNvbmZpZy5vcyEuam9pbignLCAnKSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVTdXBwb3J0ZWQ8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgY29uZmlnOiAoVCB8IGAhJHtUfWApW10gfCB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGVkOiBUW10sXG4pOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICByZXR1cm4gc3VwcG9ydGVkWzBdXG4gICAgfVxuICAgIHJldHVybiBzdXBwb3J0ZWQuZmluZChzID0+IGNvbmZpZy5pbmNsdWRlcyhzKSAmJiAhY29uZmlnLmluY2x1ZGVzKGAhJHtzfWApKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVmbGVjdChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJlZmxlY3Rpb24+IHtcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSByZXNvbHZlKHByb2Nlc3MuY3dkKCksIHBhdGgpXG4gICAgY29uc3QgW3BhY2thZ2VKc29uLCBhbGxGaWxlcywgcmV2aXNpb25dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICByZWFkQ29uZmlnKGFic29sdXRlUGF0aCksXG4gICAgICAgIHJlYWRkaXIoYWJzb2x1dGVQYXRoKSxcbiAgICAgICAgZ2V0SGFzaChhYnNvbHV0ZVBhdGgpLFxuICAgIF0pXG4gICAgY29uc3QgZmlsZXMgPSBhbGxGaWxlcy5maWx0ZXIoZmlsZSA9PiBleHRuYW1lKGZpbGUpID09PSAnLnRzJyAmJiAhZmlsZS5lbmRzV2l0aCgnLmQudHMnKSlcbiAgICBjb25zdCB7IGdldEhhbmRsZXJzLCBzZXRNZXRhIH0gPSAoYXdhaXQgaW1wb3J0KFxuICAgICAgICBwYXRoVG9GaWxlVVJMKGpvaW4oYWJzb2x1dGVQYXRoLCAnbm9kZV9tb2R1bGVzL0ByaWRkYW5jZS9ob3N0L2hvc3QvcmVnaXN0cnkuanMnKSkudG9TdHJpbmcoKVxuICAgICkpIGFzIHtcbiAgICAgICAgZ2V0SGFuZGxlcnM6IEhhbmRsZXJzR2V0dGVyXG4gICAgICAgIHNldE1ldGE6IChcbiAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgcmV2OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICBjZmc6IFBhY2thZ2VDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgICAgICApID0+IHZvaWRcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgY29uc3QgYmFzZSA9IGJhc2VuYW1lKGZpbGUsICcudHMnKVxuICAgICAgICBzZXRNZXRhKHBhY2thZ2VKc29uLm5hbWUsIGJhc2UsIHJldmlzaW9uLCBwYWNrYWdlSnNvbi5jb25maWcpXG4gICAgICAgIGF3YWl0IGltcG9ydChwYXRoVG9GaWxlVVJMKGpvaW4oYWJzb2x1dGVQYXRoLCBiYXNlICsgJy5qcycpKS50b1N0cmluZygpKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHBhY2thZ2VKc29uLm5hbWUsXG4gICAgICAgIHJldmlzaW9uLFxuICAgICAgICBodHRwOiBnZXRIYW5kbGVycygnaHR0cCcpLm1hcChoID0+ICh7XG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgICAuLi5oLmNvbmZpZyxcbiAgICAgICAgICAgICAgICBjcHVzOiBwYWNrYWdlSnNvbi5jcHUsXG4gICAgICAgICAgICAgICAgb3M6IHBhY2thZ2VKc29uLm9zLFxuICAgICAgICAgICAgICAgIG5vZGVWZXJzaW9uOiBwYWNrYWdlSnNvbi5lbmdpbmVzPy5ub2RlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IGgubWV0YT8uZmlsZU5hbWUgPz8gJycsXG4gICAgICAgICAgICBtZXRob2Q6IGgubWV0aG9kLFxuICAgICAgICAgICAgcGF0aFBhdHRlcm46IGgucGF0aFBhdHRlcm4sXG4gICAgICAgIH0pKSxcbiAgICAgICAgdGltZXJzOiBnZXRIYW5kbGVycygndGltZXInKS5tYXAoaCA9PiAoe1xuICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgLi4uaC5jb25maWcsXG4gICAgICAgICAgICAgICAgY3B1czogcGFja2FnZUpzb24uY3B1LFxuICAgICAgICAgICAgICAgIG9zOiBwYWNrYWdlSnNvbi5vcyxcbiAgICAgICAgICAgICAgICBub2RlVmVyc2lvbjogcGFja2FnZUpzb24uZW5naW5lcz8ubm9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBoLm1ldGE/LmZpbGVOYW1lID8/ICcnLFxuICAgICAgICAgICAgc2NoZWR1bGU6IGguc2NoZWR1bGUsXG4gICAgICAgIH0pKSxcbiAgICAgICAgZXZlbnRzOiBnZXRIYW5kbGVycygnZXZlbnQnKS5tYXAoaCA9PiAoe1xuICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgLi4uaC5jb25maWcsXG4gICAgICAgICAgICAgICAgY3B1czogcGFja2FnZUpzb24uY3B1LFxuICAgICAgICAgICAgICAgIG9zOiBwYWNrYWdlSnNvbi5vcyxcbiAgICAgICAgICAgICAgICBub2RlVmVyc2lvbjogcGFja2FnZUpzb24uZW5naW5lcz8ubm9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBoLm1ldGE/LmZpbGVOYW1lID8/ICcnLFxuICAgICAgICAgICAgdG9waWM6IGgudG9waWMsXG4gICAgICAgICAgICB0eXBlOiBoLnR5cGUsXG4gICAgICAgIH0pKSxcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb25maWcocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGpvaW4ocGF0aCwgJ3BhY2thZ2UuanNvbicpLCAndXRmLTgnKSkgYXMge1xuICAgICAgICBuYW1lOiBzdHJpbmdcbiAgICAgICAgZW5naW5lcz86IHsgW2VuZ2luZTogc3RyaW5nXTogc3RyaW5nIH1cbiAgICAgICAgY3B1PzogQ3B1Q29uZmlnW11cbiAgICAgICAgb3M/OiBPU0NvbmZpZ1tdXG4gICAgICAgIGNvbmZpZz86IG9iamVjdFxuICAgIH1cbiAgICByZXR1cm4gcGFja2FnZUpzb25cbn1cbiJdfQ==
@@ -1,27 +1,13 @@
1
- import { HandlerConfiguration } from '../context.js';
2
- import { Handler } from '../http.js';
3
- export type HttpHandler = {
4
- meta: Metadata | undefined;
5
- config: FullConfiguration | undefined;
6
- method: Method;
7
- pathPattern: string;
8
- pathRegExp: RegExp;
9
- entry: Handler;
10
- };
1
+ import type { EventHandler } from './event-registry.js';
2
+ import type { HttpHandler } from './http-registry.js';
3
+ import type { TimerHandler } from './timer-registry.js';
4
+ export * from './meta.js';
11
5
  type HandlerTypes = {
12
6
  http: HttpHandler;
7
+ timer: TimerHandler;
8
+ event: EventHandler;
13
9
  };
14
- export declare function getHandlers(type: keyof HandlerTypes): HttpHandler[];
15
- export declare function getHandler(type: keyof HandlerTypes): HttpHandler;
16
- export declare function setMeta(packageName: string, fileName: string, revision: string | undefined, config: PackageConfiguration | undefined): void;
17
- export type PackageConfiguration = HandlerConfiguration & {};
18
- export type FullConfiguration = PackageConfiguration & HandlerConfiguration;
19
- export type Metadata = {
20
- packageName: string;
21
- fileName: string;
22
- revision: string | undefined;
23
- config?: PackageConfiguration;
24
- };
25
- export type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
26
- export declare function registerHttpHandler(method: Method, path: string, configOrHandler: HandlerConfiguration | Handler, fn?: Handler): void;
27
- export {};
10
+ export declare function addHandler<Type extends keyof HandlerTypes>(type: Type, handler: HandlerTypes[Type]): void;
11
+ export type HandlersGetter = typeof getHandlers;
12
+ export declare function getHandlers<Type extends keyof HandlerTypes>(type: Type): HandlerTypes[Type][];
13
+ export declare function getHandler<Type extends keyof HandlerTypes>(type: Type): HandlerTypes[Type];
package/host/registry.js CHANGED
@@ -1,10 +1,11 @@
1
+ export * from './meta.js';
1
2
  const handlers = {};
2
- function addHandler(type, handler) {
3
- ;
4
- (handlers[type] ??= []).push(handler);
3
+ export function addHandler(type, handler) {
4
+ const h = (handlers[type] ??= []);
5
+ h.push(handler);
5
6
  }
6
7
  export function getHandlers(type) {
7
- return (handlers[type] ?? []);
8
+ return handlers[type] ?? [];
8
9
  }
9
10
  export function getHandler(type) {
10
11
  const hs = getHandlers(type);
@@ -17,56 +18,4 @@ export function getHandler(type) {
17
18
  }
18
19
  return handler;
19
20
  }
20
- let httpHostRegistry;
21
- function setHttpHost(host) {
22
- httpHostRegistry = host;
23
- }
24
- let metadata;
25
- export function setMeta(packageName, fileName, revision, config) {
26
- metadata = {
27
- packageName,
28
- fileName,
29
- revision,
30
- config,
31
- };
32
- }
33
- function getMetadata() {
34
- return metadata;
35
- }
36
- function pathToRegExp(path) {
37
- return new RegExp(('^' +
38
- path.replaceAll(/[/\\^$+?.()|[\]{}]/gu, '\\$&').replaceAll('*', '[^/\\?]+') +
39
- '(\\?.*)?$').replace('[^/\\?]+[^/\\?]+(\\?.*)?$', ''), 'u');
40
- }
41
- function combineConfig(base, override) {
42
- if (base === undefined) {
43
- return override;
44
- }
45
- else if (override === undefined) {
46
- return base;
47
- }
48
- return { ...base, ...override };
49
- }
50
- function httpHost(meta, cfg, method, path, entry) {
51
- addHandler('http', {
52
- meta,
53
- config: combineConfig(meta?.config, cfg),
54
- method,
55
- pathPattern: path,
56
- pathRegExp: pathToRegExp(path),
57
- entry,
58
- });
59
- }
60
- setHttpHost(httpHost);
61
- export function registerHttpHandler(method, path, configOrHandler, fn) {
62
- if (typeof configOrHandler === 'function') {
63
- httpHostRegistry(getMetadata(), undefined, method, path, configOrHandler);
64
- }
65
- else {
66
- if (!fn) {
67
- throw new Error('Please provide a handler function.');
68
- }
69
- httpHostRegistry(getMetadata(), configOrHandler, method, path, fn);
70
- }
71
- }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxRQUFRLEdBQWlDLEVBQUUsQ0FBQTtBQUVqRCxTQUFTLFVBQVUsQ0FBQyxJQUF3QixFQUFFLE9BQW9CO0lBQzlELENBQUM7SUFBQSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDMUMsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBd0I7SUFDaEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQWtCLENBQUE7QUFDbEQsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBd0I7SUFDL0MsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksc0JBQXNCLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLHVCQUF1QixDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2xCLENBQUM7QUFVRCxJQUFJLGdCQUEwQixDQUFBO0FBRTlCLFNBQVMsV0FBVyxDQUFDLElBQWM7SUFDL0IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFBO0FBQzNCLENBQUM7QUFFRCxJQUFJLFFBQThCLENBQUE7QUFFbEMsTUFBTSxVQUFVLE9BQU8sQ0FDbkIsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsUUFBNEIsRUFDNUIsTUFBd0M7SUFFeEMsUUFBUSxHQUFHO1FBQ1AsV0FBVztRQUNYLFFBQVE7UUFDUixRQUFRO1FBQ1IsTUFBTTtLQUNULENBQUE7QUFDTCxDQUFDO0FBZ0JELFNBQVMsV0FBVztJQUNoQixPQUFPLFFBQVEsQ0FBQTtBQUNuQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBWTtJQUM5QixPQUFPLElBQUksTUFBTSxDQUNiLENBQ0ksR0FBRztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUM7UUFDM0UsV0FBVyxDQUNkLENBQUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsQ0FBQyxFQUMxQyxHQUFHLENBQ04sQ0FBQTtBQUNMLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FDbEIsSUFBc0MsRUFDdEMsUUFBMEM7SUFFMUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDckIsT0FBTyxRQUFRLENBQUE7SUFDbkIsQ0FBQztTQUFNLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUNELE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFBO0FBQ25DLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FDYixJQUEwQixFQUMxQixHQUFxQyxFQUNyQyxNQUFjLEVBQ2QsSUFBWSxFQUNaLEtBQWM7SUFFZCxVQUFVLENBQUMsTUFBTSxFQUFFO1FBQ2YsSUFBSTtRQUNKLE1BQU0sRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFDeEMsTUFBTTtRQUNOLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFVBQVUsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQzlCLEtBQUs7S0FDUixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBSXJCLE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsTUFBYyxFQUNkLElBQVksRUFDWixlQUErQyxFQUMvQyxFQUFZO0lBRVosSUFBSSxPQUFPLGVBQWUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN4QyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQTtJQUM3RSxDQUFDO1NBQU0sQ0FBQztRQUNKLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtRQUN6RCxDQUFDO1FBQ0QsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDdEUsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYW5kbGVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBIYW5kbGVyIH0gZnJvbSAnLi4vaHR0cC5qcydcblxuZXhwb3J0IHR5cGUgSHR0cEhhbmRsZXIgPSB7XG4gICAgbWV0YTogTWV0YWRhdGEgfCB1bmRlZmluZWRcbiAgICBjb25maWc6IEZ1bGxDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkXG4gICAgbWV0aG9kOiBNZXRob2RcbiAgICBwYXRoUGF0dGVybjogc3RyaW5nXG4gICAgcGF0aFJlZ0V4cDogUmVnRXhwXG4gICAgZW50cnk6IEhhbmRsZXJcbn1cblxudHlwZSBIYW5kbGVyVHlwZXMgPSB7XG4gICAgaHR0cDogSHR0cEhhbmRsZXJcbn1cblxuY29uc3QgaGFuZGxlcnM6IHsgW2tleTogc3RyaW5nXTogdW5rbm93bltdIH0gPSB7fVxuXG5mdW5jdGlvbiBhZGRIYW5kbGVyKHR5cGU6IGtleW9mIEhhbmRsZXJUeXBlcywgaGFuZGxlcjogSHR0cEhhbmRsZXIpIHtcbiAgICA7KGhhbmRsZXJzW3R5cGVdID8/PSBbXSkucHVzaChoYW5kbGVyKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGFuZGxlcnModHlwZToga2V5b2YgSGFuZGxlclR5cGVzKSB7XG4gICAgcmV0dXJuIChoYW5kbGVyc1t0eXBlXSA/PyBbXSkgYXMgSHR0cEhhbmRsZXJbXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGFuZGxlcih0eXBlOiBrZXlvZiBIYW5kbGVyVHlwZXMpIHtcbiAgICBjb25zdCBocyA9IGdldEhhbmRsZXJzKHR5cGUpXG4gICAgY29uc3QgW2hhbmRsZXJdID0gaHNcbiAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyAke3R5cGV9IGhhbmRsZXIgcmVnaXN0ZXJlZC5gKVxuICAgIH1cbiAgICBpZiAoaHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgJHt0eXBlfSBoYW5kbGVycyByZWdpc3RlcmVkLmApXG4gICAgfVxuICAgIHJldHVybiBoYW5kbGVyXG59XG5cbnR5cGUgSHR0cEhvc3QgPSAoXG4gICAgbWV0YTogTWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgY29uZmlnOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCxcbiAgICBtZXRob2Q6IE1ldGhvZCxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogSGFuZGxlcixcbikgPT4gdm9pZFxuXG5sZXQgaHR0cEhvc3RSZWdpc3RyeTogSHR0cEhvc3RcblxuZnVuY3Rpb24gc2V0SHR0cEhvc3QoaG9zdDogSHR0cEhvc3QpIHtcbiAgICBodHRwSG9zdFJlZ2lzdHJ5ID0gaG9zdFxufVxuXG5sZXQgbWV0YWRhdGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNZXRhKFxuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICByZXZpc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGNvbmZpZzogUGFja2FnZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4pIHtcbiAgICBtZXRhZGF0YSA9IHtcbiAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgIGZpbGVOYW1lLFxuICAgICAgICByZXZpc2lvbixcbiAgICAgICAgY29uZmlnLFxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGFja2FnZUNvbmZpZ3VyYXRpb24gPSBIYW5kbGVyQ29uZmlndXJhdGlvbiAmIHtcbiAgICAvLyBQbGFjZWhvbGRlciBmb3IgcGFja2FnZS1sZXZlbCBjb25maWd1cmF0aW9uc1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR1cGxpY2F0ZS10eXBlLWNvbnN0aXR1ZW50c1xuZXhwb3J0IHR5cGUgRnVsbENvbmZpZ3VyYXRpb24gPSBQYWNrYWdlQ29uZmlndXJhdGlvbiAmIEhhbmRsZXJDb25maWd1cmF0aW9uXG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0ge1xuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgICBmaWxlTmFtZTogc3RyaW5nXG4gICAgcmV2aXNpb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgIGNvbmZpZz86IFBhY2thZ2VDb25maWd1cmF0aW9uXG59XG5cbmZ1bmN0aW9uIGdldE1ldGFkYXRhKCkge1xuICAgIHJldHVybiBtZXRhZGF0YVxufVxuXG5mdW5jdGlvbiBwYXRoVG9SZWdFeHAocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoXG4gICAgICAgIChcbiAgICAgICAgICAgICdeJyArXG4gICAgICAgICAgICBwYXRoLnJlcGxhY2VBbGwoL1svXFxcXF4kKz8uKCl8W1xcXXt9XS9ndSwgJ1xcXFwkJicpLnJlcGxhY2VBbGwoJyonLCAnW14vXFxcXD9dKycpICtcbiAgICAgICAgICAgICcoXFxcXD8uKik/JCdcbiAgICAgICAgKS5yZXBsYWNlKCdbXi9cXFxcP10rW14vXFxcXD9dKyhcXFxcPy4qKT8kJywgJycpLFxuICAgICAgICAndScsXG4gICAgKVxufVxuXG5mdW5jdGlvbiBjb21iaW5lQ29uZmlnKFxuICAgIGJhc2U6IFBhY2thZ2VDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgIG92ZXJyaWRlOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCxcbik6IEZ1bGxDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoYmFzZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBvdmVycmlkZVxuICAgIH0gZWxzZSBpZiAob3ZlcnJpZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gYmFzZVxuICAgIH1cbiAgICByZXR1cm4geyAuLi5iYXNlLCAuLi5vdmVycmlkZSB9XG59XG5cbmZ1bmN0aW9uIGh0dHBIb3N0KFxuICAgIG1ldGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIGNmZzogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgbWV0aG9kOiBNZXRob2QsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGVudHJ5OiBIYW5kbGVyLFxuKSB7XG4gICAgYWRkSGFuZGxlcignaHR0cCcsIHtcbiAgICAgICAgbWV0YSxcbiAgICAgICAgY29uZmlnOiBjb21iaW5lQ29uZmlnKG1ldGE/LmNvbmZpZywgY2ZnKSxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBwYXRoUGF0dGVybjogcGF0aCxcbiAgICAgICAgcGF0aFJlZ0V4cDogcGF0aFRvUmVnRXhwKHBhdGgpLFxuICAgICAgICBlbnRyeSxcbiAgICB9KVxufVxuXG5zZXRIdHRwSG9zdChodHRwSG9zdClcblxuZXhwb3J0IHR5cGUgTWV0aG9kID0gJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdQQVRDSCcgfCAnREVMRVRFJ1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJIdHRwSGFuZGxlcihcbiAgICBtZXRob2Q6IE1ldGhvZCxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb25maWdPckhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaHR0cEhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCB1bmRlZmluZWQsIG1ldGhvZCwgcGF0aCwgY29uZmlnT3JIYW5kbGVyKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghZm4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHByb3ZpZGUgYSBoYW5kbGVyIGZ1bmN0aW9uLicpXG4gICAgICAgIH1cbiAgICAgICAgaHR0cEhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCBjb25maWdPckhhbmRsZXIsIG1ldGhvZCwgcGF0aCwgZm4pXG4gICAgfVxufVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxjQUFjLFdBQVcsQ0FBQTtBQVF6QixNQUFNLFFBQVEsR0FBNEQsRUFBRSxDQUFBO0FBRTVFLE1BQU0sVUFBVSxVQUFVLENBQ3RCLElBQVUsRUFDVixPQUEyQjtJQUUzQixNQUFNLENBQUMsR0FBeUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUNuQixDQUFDO0FBSUQsTUFBTSxVQUFVLFdBQVcsQ0FBa0MsSUFBVTtJQUNuRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSyxFQUEyQixDQUFBO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFrQyxJQUFVO0lBQ2xFLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLHNCQUFzQixDQUFDLENBQUE7SUFDckQsQ0FBQztJQUNELElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSx1QkFBdUIsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQTtBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tICcuL2V2ZW50LXJlZ2lzdHJ5LmpzJ1xuaW1wb3J0IHR5cGUgeyBIdHRwSGFuZGxlciB9IGZyb20gJy4vaHR0cC1yZWdpc3RyeS5qcydcbmltcG9ydCB0eXBlIHsgVGltZXJIYW5kbGVyIH0gZnJvbSAnLi90aW1lci1yZWdpc3RyeS5qcydcblxuZXhwb3J0ICogZnJvbSAnLi9tZXRhLmpzJ1xuXG50eXBlIEhhbmRsZXJUeXBlcyA9IHtcbiAgICBodHRwOiBIdHRwSGFuZGxlclxuICAgIHRpbWVyOiBUaW1lckhhbmRsZXJcbiAgICBldmVudDogRXZlbnRIYW5kbGVyXG59XG5cbmNvbnN0IGhhbmRsZXJzOiB7IFtUeXBlIGluIGtleW9mIEhhbmRsZXJUeXBlc10/OiBIYW5kbGVyVHlwZXNbVHlwZV1bXSB9ID0ge31cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEhhbmRsZXI8VHlwZSBleHRlbmRzIGtleW9mIEhhbmRsZXJUeXBlcz4oXG4gICAgdHlwZTogVHlwZSxcbiAgICBoYW5kbGVyOiBIYW5kbGVyVHlwZXNbVHlwZV0sXG4pIHtcbiAgICBjb25zdCBoOiBIYW5kbGVyVHlwZXNbVHlwZV1bXSA9IChoYW5kbGVyc1t0eXBlXSA/Pz0gW10pXG4gICAgaC5wdXNoKGhhbmRsZXIpXG59XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXJzR2V0dGVyID0gdHlwZW9mIGdldEhhbmRsZXJzXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIYW5kbGVyczxUeXBlIGV4dGVuZHMga2V5b2YgSGFuZGxlclR5cGVzPih0eXBlOiBUeXBlKSB7XG4gICAgcmV0dXJuIGhhbmRsZXJzW3R5cGVdID8/IChbXSBhcyBIYW5kbGVyVHlwZXNbVHlwZV1bXSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbmRsZXI8VHlwZSBleHRlbmRzIGtleW9mIEhhbmRsZXJUeXBlcz4odHlwZTogVHlwZSkge1xuICAgIGNvbnN0IGhzID0gZ2V0SGFuZGxlcnModHlwZSlcbiAgICBjb25zdCBbaGFuZGxlcl0gPSBoc1xuICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vICR7dHlwZX0gaGFuZGxlciByZWdpc3RlcmVkLmApXG4gICAgfVxuICAgIGlmIChocy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSAke3R5cGV9IGhhbmRsZXJzIHJlZ2lzdGVyZWQuYClcbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXJcbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { Context } from '../context.js';
2
+ import { RootLogger } from './context.js';
3
+ import type { TimerHandler } from './timer-registry.js';
4
+ export declare function triggerTimer(log: RootLogger, context: Omit<Context, 'log'>, handler: TimerHandler, options: {
5
+ readonly triggerTime: Date;
6
+ }, success: () => Promise<unknown>): Promise<void>;
@@ -0,0 +1,14 @@
1
+ import { measure } from '../context.js';
2
+ export async function triggerTimer(log, context, handler, options, success) {
3
+ log = log.enrichReserved({ meta: context.meta, trigger: { time: triggerTimer } });
4
+ log.trace('Timer BEGIN');
5
+ try {
6
+ await measure(log, 'execution', () => handler.entry({ ...context, log }, options));
7
+ log.debug('Timer END');
8
+ await success();
9
+ }
10
+ catch (e) {
11
+ log.error('Timer END', e);
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIgY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRpbWVyIGNvcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUloRCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDOUIsR0FBZSxFQUNmLE9BQTZCLEVBQzdCLE9BQXFCLEVBQ3JCLE9BRUMsRUFDRCxPQUErQjtJQUUvQixHQUFHLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDakYsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN4QixJQUFJLENBQUM7UUFDRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ2xGLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDdEIsTUFBTSxPQUFPLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNULEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCwgbWVhc3VyZSB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBSb290TG9nZ2VyIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHR5cGUgeyBUaW1lckhhbmRsZXIgfSBmcm9tICcuL3RpbWVyLXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJpZ2dlclRpbWVyKFxuICAgIGxvZzogUm9vdExvZ2dlcixcbiAgICBjb250ZXh0OiBPbWl0PENvbnRleHQsICdsb2cnPixcbiAgICBoYW5kbGVyOiBUaW1lckhhbmRsZXIsXG4gICAgb3B0aW9uczoge1xuICAgICAgICByZWFkb25seSB0cmlnZ2VyVGltZTogRGF0ZVxuICAgIH0sXG4gICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZTx1bmtub3duPixcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZyA9IGxvZy5lbnJpY2hSZXNlcnZlZCh7IG1ldGE6IGNvbnRleHQubWV0YSwgdHJpZ2dlcjogeyB0aW1lOiB0cmlnZ2VyVGltZXIgfSB9KVxuICAgIGxvZy50cmFjZSgnVGltZXIgQkVHSU4nKVxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG1lYXN1cmUobG9nLCAnZXhlY3V0aW9uJywgKCkgPT4gaGFuZGxlci5lbnRyeSh7IC4uLmNvbnRleHQsIGxvZyB9LCBvcHRpb25zKSlcbiAgICAgICAgbG9nLmRlYnVnKCdUaW1lciBFTkQnKVxuICAgICAgICBhd2FpdCBzdWNjZXNzKClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZy5lcnJvcignVGltZXIgRU5EJywgZSlcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { type HandlerConfiguration, type Handler as TimerFunction } from '../timer.js';
2
+ import { type FullConfiguration, type Metadata } from './meta.js';
3
+ export type TimerHandler = {
4
+ meta: Metadata | undefined;
5
+ config: FullConfiguration | undefined;
6
+ schedule: CronExpression;
7
+ entry: TimerFunction;
8
+ };
9
+ type MinuteField = string;
10
+ type HourField = string;
11
+ type DayOfMonthField = string;
12
+ type MonthField = string;
13
+ type DayOfWeekField = string;
14
+ export type CronExpression = `${MinuteField} ${HourField} ${DayOfMonthField} ${MonthField} ${DayOfWeekField}`;
15
+ export declare function registerTimerHandler(schedule: CronExpression, configOrHandler: HandlerConfiguration | TimerFunction, fn?: TimerFunction): void;
16
+ export {};
@@ -0,0 +1,27 @@
1
+ import { combineConfig, getMetadata } from './meta.js';
2
+ import { addHandler } from './registry.js';
3
+ let timerHostRegistry;
4
+ function setTimerHost(host) {
5
+ timerHostRegistry = host;
6
+ }
7
+ function timerHost(meta, cfg, schedule, entry) {
8
+ addHandler('timer', {
9
+ meta,
10
+ config: combineConfig(meta?.config, cfg),
11
+ schedule,
12
+ entry,
13
+ });
14
+ }
15
+ setTimerHost(timerHost);
16
+ export function registerTimerHandler(schedule, configOrHandler, fn) {
17
+ if (typeof configOrHandler === 'function') {
18
+ timerHostRegistry(getMetadata(), undefined, schedule, configOrHandler);
19
+ }
20
+ else {
21
+ if (!fn) {
22
+ throw new Error('Please provide a handler function.');
23
+ }
24
+ timerHostRegistry(getMetadata(), configOrHandler, schedule, fn);
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXItcmVnaXN0cnkgY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRpbWVyLXJlZ2lzdHJ5IGNvcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQXlDLE1BQU0sV0FBVyxDQUFBO0FBQzdGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFnQjFDLElBQUksaUJBQTRCLENBQUE7QUFFaEMsU0FBUyxZQUFZLENBQUMsSUFBZTtJQUNqQyxpQkFBaUIsR0FBRyxJQUFJLENBQUE7QUFDNUIsQ0FBQztBQVdELFNBQVMsU0FBUyxDQUNkLElBQTBCLEVBQzFCLEdBQXFDLEVBQ3JDLFFBQXdCLEVBQ3hCLEtBQW9CO0lBRXBCLFVBQVUsQ0FBQyxPQUFPLEVBQUU7UUFDaEIsSUFBSTtRQUNKLE1BQU0sRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFDeEMsUUFBUTtRQUNSLEtBQUs7S0FDUixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBRXZCLE1BQU0sVUFBVSxvQkFBb0IsQ0FDaEMsUUFBd0IsRUFDeEIsZUFBcUQsRUFDckQsRUFBa0I7SUFFbEIsSUFBSSxPQUFPLGVBQWUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN4QyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFBO0lBQzFFLENBQUM7U0FBTSxDQUFDO1FBQ0osSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO1FBQ3pELENBQUM7UUFDRCxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ25FLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBIYW5kbGVyQ29uZmlndXJhdGlvbiwgdHlwZSBIYW5kbGVyIGFzIFRpbWVyRnVuY3Rpb24gfSBmcm9tICcuLi90aW1lci5qcydcbmltcG9ydCB7IGNvbWJpbmVDb25maWcsIGdldE1ldGFkYXRhLCB0eXBlIEZ1bGxDb25maWd1cmF0aW9uLCB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi9tZXRhLmpzJ1xuaW1wb3J0IHsgYWRkSGFuZGxlciB9IGZyb20gJy4vcmVnaXN0cnkuanMnXG5cbmV4cG9ydCB0eXBlIFRpbWVySGFuZGxlciA9IHtcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZFxuICAgIGNvbmZpZzogRnVsbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWRcbiAgICBzY2hlZHVsZTogQ3JvbkV4cHJlc3Npb25cbiAgICBlbnRyeTogVGltZXJGdW5jdGlvblxufVxuXG50eXBlIFRpbWVySG9zdCA9IChcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZCxcbiAgICBjb25maWc6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgIHNjaGVkdWxlOiBDcm9uRXhwcmVzc2lvbixcbiAgICBoYW5kbGVyOiBUaW1lckZ1bmN0aW9uLFxuKSA9PiB2b2lkXG5cbmxldCB0aW1lckhvc3RSZWdpc3RyeTogVGltZXJIb3N0XG5cbmZ1bmN0aW9uIHNldFRpbWVySG9zdChob3N0OiBUaW1lckhvc3QpIHtcbiAgICB0aW1lckhvc3RSZWdpc3RyeSA9IGhvc3Rcbn1cblxudHlwZSBNaW51dGVGaWVsZCA9IHN0cmluZ1xudHlwZSBIb3VyRmllbGQgPSBzdHJpbmdcbnR5cGUgRGF5T2ZNb250aEZpZWxkID0gc3RyaW5nXG50eXBlIE1vbnRoRmllbGQgPSBzdHJpbmdcbnR5cGUgRGF5T2ZXZWVrRmllbGQgPSBzdHJpbmdcblxuZXhwb3J0IHR5cGUgQ3JvbkV4cHJlc3Npb24gPVxuICAgIGAke01pbnV0ZUZpZWxkfSAke0hvdXJGaWVsZH0gJHtEYXlPZk1vbnRoRmllbGR9ICR7TW9udGhGaWVsZH0gJHtEYXlPZldlZWtGaWVsZH1gXG5cbmZ1bmN0aW9uIHRpbWVySG9zdChcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZCxcbiAgICBjZmc6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgIHNjaGVkdWxlOiBDcm9uRXhwcmVzc2lvbixcbiAgICBlbnRyeTogVGltZXJGdW5jdGlvbixcbikge1xuICAgIGFkZEhhbmRsZXIoJ3RpbWVyJywge1xuICAgICAgICBtZXRhLFxuICAgICAgICBjb25maWc6IGNvbWJpbmVDb25maWcobWV0YT8uY29uZmlnLCBjZmcpLFxuICAgICAgICBzY2hlZHVsZSxcbiAgICAgICAgZW50cnksXG4gICAgfSlcbn1cblxuc2V0VGltZXJIb3N0KHRpbWVySG9zdClcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVGltZXJIYW5kbGVyKFxuICAgIHNjaGVkdWxlOiBDcm9uRXhwcmVzc2lvbixcbiAgICBjb25maWdPckhhbmRsZXI6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgVGltZXJGdW5jdGlvbixcbiAgICBmbj86IFRpbWVyRnVuY3Rpb24sXG4pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ09ySGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aW1lckhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCB1bmRlZmluZWQsIHNjaGVkdWxlLCBjb25maWdPckhhbmRsZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFmbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIGhhbmRsZXIgZnVuY3Rpb24uJylcbiAgICAgICAgfVxuICAgICAgICB0aW1lckhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCBjb25maWdPckhhbmRsZXIsIHNjaGVkdWxlLCBmbilcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { type HandlerConfiguration, type Handler as TimerFunction } from '../timer.js';
2
+ import { type FullConfiguration, type Metadata } from './meta.js';
3
+ export type TimerHandler = {
4
+ meta: Metadata | undefined;
5
+ config: FullConfiguration | undefined;
6
+ schedule: CronExpression;
7
+ entry: TimerFunction;
8
+ };
9
+ type MinuteField = string;
10
+ type HourField = string;
11
+ type DayOfMonthField = string;
12
+ type MonthField = string;
13
+ type DayOfWeekField = string;
14
+ export type CronExpression = `${MinuteField} ${HourField} ${DayOfMonthField} ${MonthField} ${DayOfWeekField}`;
15
+ export declare function registerTimerHandler(schedule: CronExpression, configOrHandler: HandlerConfiguration | TimerFunction, fn?: TimerFunction): void;
16
+ export {};
@@ -0,0 +1,27 @@
1
+ import { combineConfig, getMetadata } from './meta.js';
2
+ import { addHandler } from './registry.js';
3
+ let timerHostRegistry;
4
+ function setTimerHost(host) {
5
+ timerHostRegistry = host;
6
+ }
7
+ function timerHost(meta, cfg, schedule, entry) {
8
+ addHandler('timer', {
9
+ meta,
10
+ config: combineConfig(meta?.config, cfg),
11
+ schedule,
12
+ entry,
13
+ });
14
+ }
15
+ setTimerHost(timerHost);
16
+ export function registerTimerHandler(schedule, configOrHandler, fn) {
17
+ if (typeof configOrHandler === 'function') {
18
+ timerHostRegistry(getMetadata(), undefined, schedule, configOrHandler);
19
+ }
20
+ else {
21
+ if (!fn) {
22
+ throw new Error('Please provide a handler function.');
23
+ }
24
+ timerHostRegistry(getMetadata(), configOrHandler, schedule, fn);
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXItcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0aW1lci1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBeUMsTUFBTSxXQUFXLENBQUE7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQWdCMUMsSUFBSSxpQkFBNEIsQ0FBQTtBQUVoQyxTQUFTLFlBQVksQ0FBQyxJQUFlO0lBQ2pDLGlCQUFpQixHQUFHLElBQUksQ0FBQTtBQUM1QixDQUFDO0FBV0QsU0FBUyxTQUFTLENBQ2QsSUFBMEIsRUFDMUIsR0FBcUMsRUFDckMsUUFBd0IsRUFDeEIsS0FBb0I7SUFFcEIsVUFBVSxDQUFDLE9BQU8sRUFBRTtRQUNoQixJQUFJO1FBQ0osTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztRQUN4QyxRQUFRO1FBQ1IsS0FBSztLQUNSLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFdkIsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxRQUF3QixFQUN4QixlQUFxRCxFQUNyRCxFQUFrQjtJQUVsQixJQUFJLE9BQU8sZUFBZSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3hDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDMUUsQ0FBQztTQUFNLENBQUM7UUFDSixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7UUFDekQsQ0FBQztRQUNELGlCQUFpQixDQUFDLFdBQVcsRUFBRSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkUsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEhhbmRsZXJDb25maWd1cmF0aW9uLCB0eXBlIEhhbmRsZXIgYXMgVGltZXJGdW5jdGlvbiB9IGZyb20gJy4uL3RpbWVyLmpzJ1xuaW1wb3J0IHsgY29tYmluZUNvbmZpZywgZ2V0TWV0YWRhdGEsIHR5cGUgRnVsbENvbmZpZ3VyYXRpb24sIHR5cGUgTWV0YWRhdGEgfSBmcm9tICcuL21ldGEuanMnXG5pbXBvcnQgeyBhZGRIYW5kbGVyIH0gZnJvbSAnLi9yZWdpc3RyeS5qcydcblxuZXhwb3J0IHR5cGUgVGltZXJIYW5kbGVyID0ge1xuICAgIG1ldGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkXG4gICAgY29uZmlnOiBGdWxsQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZFxuICAgIHNjaGVkdWxlOiBDcm9uRXhwcmVzc2lvblxuICAgIGVudHJ5OiBUaW1lckZ1bmN0aW9uXG59XG5cbnR5cGUgVGltZXJIb3N0ID0gKFxuICAgIG1ldGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIGNvbmZpZzogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgc2NoZWR1bGU6IENyb25FeHByZXNzaW9uLFxuICAgIGhhbmRsZXI6IFRpbWVyRnVuY3Rpb24sXG4pID0+IHZvaWRcblxubGV0IHRpbWVySG9zdFJlZ2lzdHJ5OiBUaW1lckhvc3RcblxuZnVuY3Rpb24gc2V0VGltZXJIb3N0KGhvc3Q6IFRpbWVySG9zdCkge1xuICAgIHRpbWVySG9zdFJlZ2lzdHJ5ID0gaG9zdFxufVxuXG50eXBlIE1pbnV0ZUZpZWxkID0gc3RyaW5nXG50eXBlIEhvdXJGaWVsZCA9IHN0cmluZ1xudHlwZSBEYXlPZk1vbnRoRmllbGQgPSBzdHJpbmdcbnR5cGUgTW9udGhGaWVsZCA9IHN0cmluZ1xudHlwZSBEYXlPZldlZWtGaWVsZCA9IHN0cmluZ1xuXG5leHBvcnQgdHlwZSBDcm9uRXhwcmVzc2lvbiA9XG4gICAgYCR7TWludXRlRmllbGR9ICR7SG91ckZpZWxkfSAke0RheU9mTW9udGhGaWVsZH0gJHtNb250aEZpZWxkfSAke0RheU9mV2Vla0ZpZWxkfWBcblxuZnVuY3Rpb24gdGltZXJIb3N0KFxuICAgIG1ldGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIGNmZzogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgc2NoZWR1bGU6IENyb25FeHByZXNzaW9uLFxuICAgIGVudHJ5OiBUaW1lckZ1bmN0aW9uLFxuKSB7XG4gICAgYWRkSGFuZGxlcigndGltZXInLCB7XG4gICAgICAgIG1ldGEsXG4gICAgICAgIGNvbmZpZzogY29tYmluZUNvbmZpZyhtZXRhPy5jb25maWcsIGNmZyksXG4gICAgICAgIHNjaGVkdWxlLFxuICAgICAgICBlbnRyeSxcbiAgICB9KVxufVxuXG5zZXRUaW1lckhvc3QodGltZXJIb3N0KVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJUaW1lckhhbmRsZXIoXG4gICAgc2NoZWR1bGU6IENyb25FeHByZXNzaW9uLFxuICAgIGNvbmZpZ09ySGFuZGxlcjogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBUaW1lckZ1bmN0aW9uLFxuICAgIGZuPzogVGltZXJGdW5jdGlvbixcbik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgY29uZmlnT3JIYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRpbWVySG9zdFJlZ2lzdHJ5KGdldE1ldGFkYXRhKCksIHVuZGVmaW5lZCwgc2NoZWR1bGUsIGNvbmZpZ09ySGFuZGxlcilcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIWZuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBwcm92aWRlIGEgaGFuZGxlciBmdW5jdGlvbi4nKVxuICAgICAgICB9XG4gICAgICAgIHRpbWVySG9zdFJlZ2lzdHJ5KGdldE1ldGFkYXRhKCksIGNvbmZpZ09ySGFuZGxlciwgc2NoZWR1bGUsIGZuKVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import { Context } from '../context.js';
2
+ import { RootLogger } from './context.js';
3
+ import type { TimerHandler } from './timer-registry.js';
4
+ export declare function triggerTimer(log: RootLogger, context: Omit<Context, 'log'>, handler: TimerHandler, options: {
5
+ readonly triggerTime: Date;
6
+ }, success: () => Promise<unknown>): Promise<void>;
package/host/timer.js ADDED
@@ -0,0 +1,14 @@
1
+ import { measure } from '../context.js';
2
+ export async function triggerTimer(log, context, handler, options, success) {
3
+ log = log.enrichReserved({ meta: context.meta, trigger: { time: triggerTimer } });
4
+ log.trace('Timer BEGIN');
5
+ try {
6
+ await measure(log, 'execution', () => handler.entry({ ...context, log }, options));
7
+ log.debug('Timer END');
8
+ await success();
9
+ }
10
+ catch (e) {
11
+ log.error('Timer END', e);
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0aW1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBSWhELE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUM5QixHQUFlLEVBQ2YsT0FBNkIsRUFDN0IsT0FBcUIsRUFDckIsT0FFQyxFQUNELE9BQStCO0lBRS9CLEdBQUcsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNqRixHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ3hCLElBQUksQ0FBQztRQUNELE1BQU0sT0FBTyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDbEYsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUN0QixNQUFNLE9BQU8sRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDN0IsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0LCBtZWFzdXJlIH0gZnJvbSAnLi4vY29udGV4dC5qcydcbmltcG9ydCB7IFJvb3RMb2dnZXIgfSBmcm9tICcuL2NvbnRleHQuanMnXG5pbXBvcnQgdHlwZSB7IFRpbWVySGFuZGxlciB9IGZyb20gJy4vdGltZXItcmVnaXN0cnkuanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmlnZ2VyVGltZXIoXG4gICAgbG9nOiBSb290TG9nZ2VyLFxuICAgIGNvbnRleHQ6IE9taXQ8Q29udGV4dCwgJ2xvZyc+LFxuICAgIGhhbmRsZXI6IFRpbWVySGFuZGxlcixcbiAgICBvcHRpb25zOiB7XG4gICAgICAgIHJlYWRvbmx5IHRyaWdnZXJUaW1lOiBEYXRlXG4gICAgfSxcbiAgICBzdWNjZXNzOiAoKSA9PiBQcm9taXNlPHVua25vd24+LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nID0gbG9nLmVucmljaFJlc2VydmVkKHsgbWV0YTogY29udGV4dC5tZXRhLCB0cmlnZ2VyOiB7IHRpbWU6IHRyaWdnZXJUaW1lciB9IH0pXG4gICAgbG9nLnRyYWNlKCdUaW1lciBCRUdJTicpXG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbWVhc3VyZShsb2csICdleGVjdXRpb24nLCAoKSA9PiBoYW5kbGVyLmVudHJ5KHsgLi4uY29udGV4dCwgbG9nIH0sIG9wdGlvbnMpKVxuICAgICAgICBsb2cuZGVidWcoJ1RpbWVyIEVORCcpXG4gICAgICAgIGF3YWl0IHN1Y2Nlc3MoKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nLmVycm9yKCdUaW1lciBFTkQnLCBlKVxuICAgIH1cbn1cbiJdfQ==
package/http.js CHANGED
@@ -1,4 +1,4 @@
1
- import { registerHttpHandler } from './host/registry.js';
1
+ import { registerHttpHandler } from './host/http-registry.js';
2
2
  export * from './context.js';
3
3
  export function get(path, configOrHandler, fn) {
4
4
  registerHttpHandler('GET', path, configOrHandler, fn);
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFeEQsY0FBYyxjQUFjLENBQUE7QUErTTVCLE1BQU0sVUFBVSxHQUFHLENBQ2YsSUFBWSxFQUNaLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN6RCxDQUFDO0FBR0QsTUFBTSxVQUFVLElBQUksQ0FDaEIsSUFBWSxFQUNaLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUMxRCxDQUFDO0FBR0QsTUFBTSxVQUFVLEdBQUcsQ0FDZixJQUFZLEVBQ1osZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3pELENBQUM7QUFHRCxNQUFNLFVBQVUsS0FBSyxDQUNqQixJQUFZLEVBQ1osZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQzNELENBQUM7QUFHRCxNQUFNLFVBQVUsR0FBRyxDQUNmLElBQVksRUFDWixlQUFtRCxFQUNuRCxFQUFZO0lBRVosbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQsIEhhbmRsZXJDb25maWd1cmF0aW9uLCBKc29uIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgcmVnaXN0ZXJIdHRwSGFuZGxlciB9IGZyb20gJy4vaG9zdC9yZWdpc3RyeS5qcydcblxuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LmpzJ1xuXG5leHBvcnQgdHlwZSBSZXNwb25zZUhlYWRlcnMgPSB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEZ1bGxSZXN1bHQgPSB7XG4gICAgaGVhZGVycz86IFJlc3BvbnNlSGVhZGVyc1xuICAgIHN0YXR1cz86IG51bWJlclxuICAgIGJvZHk/OiB1bmtub3duXG59XG5cbmV4cG9ydCB0eXBlIFJlc3VsdCA9IHZvaWQgfCBzdHJpbmcgfCBGdWxsUmVzdWx0XG5cbmV4cG9ydCB0eXBlIEh0dHBSZXF1ZXN0ID0ge1xuICAgIHJlYWRvbmx5IHJhd1VybDogc3RyaW5nXG4gICAgcmVhZG9ubHkgdXJsOiBQYXJzZWRVcmxcbiAgICByZWFkb25seSBoZWFkZXJzOiBSZWFkb25seTxSZXNwb25zZUhlYWRlcnM+XG4gICAgcmVhZG9ubHkgYm9keT86IEpzb24gfCBzdHJpbmdcbn1cblxudHlwZSBHb25lID0gJ0dvbmUnIHwgdW5kZWZpbmVkXG5cbmV4cG9ydCB0eXBlIFBhcnNlZFVybCA9IHtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmcmFnbWVudCBwb3J0aW9uIG9mIHRoZSBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZy9mb28jYmFyJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwuaGFzaCk7XG4gICAgICogLy8gUHJpbnRzICNiYXJcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICByZWFkb25seSBoYXNoOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBob3N0IHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnOjgxL2ZvbycpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLmhvc3QpO1xuICAgICAqIC8vIFByaW50cyBleGFtcGxlLm9yZzo4MVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGhvc3Q6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhvc3QgbmFtZSBwb3J0aW9uIG9mIHRoZSBVUkwuIFRoZSBrZXkgZGlmZmVyZW5jZSBiZXR3ZWVuYHVybC5ob3N0YCBhbmQgYHVybC5ob3N0bmFtZWAgaXMgdGhhdCBgdXJsLmhvc3RuYW1lYCBkb2VzIF9ub3RfIGluY2x1ZGUgdGhlXG4gICAgICogcG9ydC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnOjgxL2ZvbycpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLmhvc3RuYW1lKTtcbiAgICAgKiAvLyBQcmludHMgZXhhbXBsZS5vcmdcbiAgICAgKi9cbiAgICByZWFkb25seSBob3N0bmFtZTogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2VyaWFsaXplZCBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZy9mb28nKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5ocmVmKTtcbiAgICAgKiAvLyBQcmludHMgaHR0cHM6Ly9leGFtcGxlLm9yZy9mb29cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICByZWFkb25seSBocmVmOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzZXJpYWxpemF0aW9uIG9mIHRoZSBVUkwncyBvcmlnaW4uXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZy9mb28vYmFyP2JheicpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLm9yaWdpbik7XG4gICAgICogLy8gUHJpbnRzIGh0dHBzOi8vZXhhbXBsZS5vcmdcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgaWRuVVJMID0gbmV3IFVSTCgnaHR0cHM6Ly/muKzoqaYnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhpZG5VUkwub3JpZ2luKTtcbiAgICAgKiAvLyBQcmludHMgaHR0cHM6Ly94bi0tZzZ3MjUxZFxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coaWRuVVJMLmhvc3RuYW1lKTtcbiAgICAgKiAvLyBQcmludHMgeG4tLWc2dzI1MWRcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICByZWFkb25seSBvcmlnaW46IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhc3N3b3JkIHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2FiYzp4eXpAZXhhbXBsZS5jb20nKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5wYXNzd29yZCk7XG4gICAgICogLy8gUHJpbnRzIHh5elxuICAgICAqXG4gICAgICogbXlVUkwucGFzc3dvcmQgPSAnMTIzJztcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5ocmVmKTtcbiAgICAgKiAvLyBQcmludHMgaHR0cHM6Ly9hYmM6MTIzQGV4YW1wbGUuY29tL1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBhc3N3b3JkOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwYXRoIHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2FiYy94eXo/MTIzJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwucGF0aG5hbWUpO1xuICAgICAqIC8vIFByaW50cyAvYWJjL3h5elxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBhdGhuYW1lOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwb3J0IHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIFRoZSBwb3J0IHZhbHVlIG1heSBiZSBhIG51bWJlciBvciBhIHN0cmluZyBjb250YWluaW5nIGEgbnVtYmVyIGluIHRoZSByYW5nZSBgMGAgdG8gYDY1NTM1YCAoaW5jbHVzaXZlKS4gU2V0dGluZyB0aGUgdmFsdWUgdG8gdGhlIGRlZmF1bHQgcG9ydCBvZiB0aGUgYFVSTGAgb2JqZWN0cyBnaXZlbiBgcHJvdG9jb2xgIHdpbGxcbiAgICAgKiByZXN1bHQgaW4gdGhlIGBwb3J0YCB2YWx1ZSBiZWNvbWluZ1xuICAgICAqIHRoZSBlbXB0eSBzdHJpbmcgKGAnJ2ApLlxuICAgICAqXG4gICAgICogVGhlIHBvcnQgdmFsdWUgY2FuIGJlIGFuIGVtcHR5IHN0cmluZyBpbiB3aGljaCBjYXNlIHRoZSBwb3J0IGRlcGVuZHMgb25cbiAgICAgKiB0aGUgcHJvdG9jb2wvc2NoZW1lLlxuICAgICAqXG4gICAgICogSWYgdGhhdCBzdHJpbmcgaXMgaW52YWxpZCBidXQgaXQgYmVnaW5zIHdpdGggYSBudW1iZXIsIHRoZSBsZWFkaW5nIG51bWJlciBpc1xuICAgICAqIGFzc2lnbmVkIHRvIGBwb3J0YC5cbiAgICAgKiBJZiB0aGUgbnVtYmVyIGxpZXMgb3V0c2lkZSB0aGUgcmFuZ2UgZGVub3RlZCBhYm92ZSwgaXQgaXMgaWdub3JlZC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnOjg4ODgnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5wb3J0KTtcbiAgICAgKiAvLyBQcmludHMgODg4OFxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBvcnQ6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHByb3RvY29sIHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwucHJvdG9jb2wpO1xuICAgICAqIC8vIFByaW50cyBodHRwczpcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICByZWFkb25seSBwcm90b2NvbDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2VyaWFsaXplZCBxdWVyeSBwb3J0aW9uIG9mIHRoZSBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZy9hYmM/MTIzJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwuc2VhcmNoKTtcbiAgICAgKiAvLyBQcmludHMgPzEyM1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQW55IGludmFsaWQgVVJMIGNoYXJhY3RlcnMgYXBwZWFyaW5nIGluIHRoZSB2YWx1ZSBhc3NpZ25lZCB0aGUgYHNlYXJjaGBwcm9wZXJ0eSB3aWxsIGJlIGBwZXJjZW50LWVuY29kZWRgLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNlYXJjaDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYFVSTFNlYXJjaFBhcmFtc2Agb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcXVlcnkgcGFyYW1ldGVycyBvZiB0aGVcbiAgICAgKiBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZy9hYmM/Zm9vPX5iYXInKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnNlYXJjaCk7ICAvLyBwcmludHMgP2Zvbz1+YmFyXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXNcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB1c2VybmFtZSBwb3J0aW9uIG9mIHRoZSBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9hYmM6eHl6QGV4YW1wbGUuY29tJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwudXNlcm5hbWUpO1xuICAgICAqIC8vIFByaW50cyBhYmNcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEFueSBpbnZhbGlkIFVSTCBjaGFyYWN0ZXJzIGFwcGVhcmluZyBpbiB0aGUgdmFsdWUgYXNzaWduZWQgdGhlIGB1c2VybmFtZWAgcHJvcGVydHkgd2lsbCBiZSBgcGVyY2VudC1lbmNvZGVkYC5cbiAgICAgKi9cbiAgICByZWFkb25seSB1c2VybmFtZTogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgc3RlcCBvZiB0aGUgcGF0aCBwb3J0aW9uIG9mIHRoZSBVUkwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IG15VVJMID0gbmV3IFVSTCgnaHR0cHM6Ly9leGFtcGxlLm9yZy9hYmMveHl6PzEyMycpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnBhdGhTdGVwQXQoMCkpO1xuICAgICAqIC8vIFByaW50cyBhYmNcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5wYXRoU3RlcEF0KDEpKTtcbiAgICAgKiAvLyBQcmludHMgeHl6XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcGF0aFN0ZXBBdDogKGluZGV4OiBudW1iZXIpID0+IHN0cmluZ1xuXG4gICAgLyoqXG4gICAgICogR29uZSwgdXNlIHNlYXJjaFBhcmFtcyBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHF1ZXJ5PzogR29uZVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICB0b0pTT046ICgpID0+IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gPSBIYW5kbGVyQ29uZmlndXJhdGlvbiAmIHtcbiAgICAvKipcbiAgICAgKiBBIHN0cmluZyBpZGVudGlmeWluZyB3aGljaCBkb21haW5zIGNhbiBhY2Nlc3MgdGhlIGVuZHBvaW50IGNyb3NzLW9yaWdpbi5cbiAgICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBjb3JzPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXIgPSAoY29udGV4dDogQ29udGV4dCwgcmVxdWVzdDogSHR0cFJlcXVlc3QpID0+IFByb21pc2U8UmVzdWx0PiB8IFJlc3VsdFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0KHBhdGg6IHN0cmluZywgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZ2V0KHBhdGg6IHN0cmluZywgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24sIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGdldChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ0dFVCcsIHBhdGgsIGNvbmZpZ09ySGFuZGxlciwgZm4pXG59XG5leHBvcnQgZnVuY3Rpb24gcG9zdChwYXRoOiBzdHJpbmcsIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHBvc3QocGF0aDogc3RyaW5nLCBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiwgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gcG9zdChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ1BPU1QnLCBwYXRoLCBjb25maWdPckhhbmRsZXIsIGZuKVxufVxuZXhwb3J0IGZ1bmN0aW9uIHB1dChwYXRoOiBzdHJpbmcsIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHB1dChwYXRoOiBzdHJpbmcsIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwdXQoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGNvbmZpZ09ySGFuZGxlcjogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uIHwgSGFuZGxlcixcbiAgICBmbj86IEhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgICByZWdpc3Rlckh0dHBIYW5kbGVyKCdQVVQnLCBwYXRoLCBjb25maWdPckhhbmRsZXIsIGZuKVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoKHBhdGg6IHN0cmluZywgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2gocGF0aDogc3RyaW5nLCBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiwgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGNvbmZpZ09ySGFuZGxlcjogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uIHwgSGFuZGxlcixcbiAgICBmbj86IEhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgICByZWdpc3Rlckh0dHBIYW5kbGVyKCdQQVRDSCcsIHBhdGgsIGNvbmZpZ09ySGFuZGxlciwgZm4pXG59XG5leHBvcnQgZnVuY3Rpb24gZGVsKHBhdGg6IHN0cmluZywgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZGVsKHBhdGg6IHN0cmluZywgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24sIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIGRlbChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ0RFTEVURScsIHBhdGgsIGNvbmZpZ09ySGFuZGxlciwgZm4pXG59XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFN0QsY0FBYyxjQUFjLENBQUE7QUErTTVCLE1BQU0sVUFBVSxHQUFHLENBQ2YsSUFBWSxFQUNaLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN6RCxDQUFDO0FBR0QsTUFBTSxVQUFVLElBQUksQ0FDaEIsSUFBWSxFQUNaLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUMxRCxDQUFDO0FBR0QsTUFBTSxVQUFVLEdBQUcsQ0FDZixJQUFZLEVBQ1osZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3pELENBQUM7QUFHRCxNQUFNLFVBQVUsS0FBSyxDQUNqQixJQUFZLEVBQ1osZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQzNELENBQUM7QUFHRCxNQUFNLFVBQVUsR0FBRyxDQUNmLElBQVksRUFDWixlQUFtRCxFQUNuRCxFQUFZO0lBRVosbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQsIEhhbmRsZXJDb25maWd1cmF0aW9uLCBKc29uIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgcmVnaXN0ZXJIdHRwSGFuZGxlciB9IGZyb20gJy4vaG9zdC9odHRwLXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQuanMnXG5cbmV4cG9ydCB0eXBlIFJlc3BvbnNlSGVhZGVycyA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRnVsbFJlc3VsdCA9IHtcbiAgICBoZWFkZXJzPzogUmVzcG9uc2VIZWFkZXJzXG4gICAgc3RhdHVzPzogbnVtYmVyXG4gICAgYm9keT86IHVua25vd25cbn1cblxuZXhwb3J0IHR5cGUgUmVzdWx0ID0gdm9pZCB8IHN0cmluZyB8IEZ1bGxSZXN1bHRcblxuZXhwb3J0IHR5cGUgSHR0cFJlcXVlc3QgPSB7XG4gICAgcmVhZG9ubHkgcmF3VXJsOiBzdHJpbmdcbiAgICByZWFkb25seSB1cmw6IFBhcnNlZFVybFxuICAgIHJlYWRvbmx5IGhlYWRlcnM6IFJlYWRvbmx5PFJlc3BvbnNlSGVhZGVycz5cbiAgICByZWFkb25seSBib2R5PzogSnNvbiB8IHN0cmluZ1xufVxuXG50eXBlIEdvbmUgPSAnR29uZScgfCB1bmRlZmluZWRcblxuZXhwb3J0IHR5cGUgUGFyc2VkVXJsID0ge1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGZyYWdtZW50IHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2ZvbyNiYXInKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5oYXNoKTtcbiAgICAgKiAvLyBQcmludHMgI2JhclxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGhhc2g6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhvc3QgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmc6ODEvZm9vJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwuaG9zdCk7XG4gICAgICogLy8gUHJpbnRzIGV4YW1wbGUub3JnOjgxXG4gICAgICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaG9zdCBuYW1lIHBvcnRpb24gb2YgdGhlIFVSTC4gVGhlIGtleSBkaWZmZXJlbmNlIGJldHdlZW5gdXJsLmhvc3RgIGFuZCBgdXJsLmhvc3RuYW1lYCBpcyB0aGF0IGB1cmwuaG9zdG5hbWVgIGRvZXMgX25vdF8gaW5jbHVkZSB0aGVcbiAgICAgKiBwb3J0LlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmc6ODEvZm9vJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwuaG9zdG5hbWUpO1xuICAgICAqIC8vIFByaW50cyBleGFtcGxlLm9yZ1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGhvc3RuYW1lOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzZXJpYWxpemVkIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2ZvbycpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLmhyZWYpO1xuICAgICAqIC8vIFByaW50cyBodHRwczovL2V4YW1wbGUub3JnL2Zvb1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGhyZWY6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNlcmlhbGl6YXRpb24gb2YgdGhlIFVSTCdzIG9yaWdpbi5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2Zvby9iYXI/YmF6Jyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwub3JpZ2luKTtcbiAgICAgKiAvLyBQcmludHMgaHR0cHM6Ly9leGFtcGxlLm9yZ1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBpZG5VUkwgPSBuZXcgVVJMKCdodHRwczovL+a4rOippicpO1xuICAgICAqIGNvbnNvbGUubG9nKGlkblVSTC5vcmlnaW4pO1xuICAgICAqIC8vIFByaW50cyBodHRwczovL3huLS1nNncyNTFkXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhpZG5VUkwuaG9zdG5hbWUpO1xuICAgICAqIC8vIFByaW50cyB4bi0tZzZ3MjUxZFxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9yaWdpbjogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcGFzc3dvcmQgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vYWJjOnh5ekBleGFtcGxlLmNvbScpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnBhc3N3b3JkKTtcbiAgICAgKiAvLyBQcmludHMgeHl6XG4gICAgICpcbiAgICAgKiBteVVSTC5wYXNzd29yZCA9ICcxMjMnO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLmhyZWYpO1xuICAgICAqIC8vIFByaW50cyBodHRwczovL2FiYzoxMjNAZXhhbXBsZS5jb20vXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhdGggcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcvYWJjL3h5ej8xMjMnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5wYXRobmFtZSk7XG4gICAgICogLy8gUHJpbnRzIC9hYmMveHl6XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgcGF0aG5hbWU6IHN0cmluZ1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBvcnQgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogVGhlIHBvcnQgdmFsdWUgbWF5IGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBudW1iZXIgaW4gdGhlIHJhbmdlIGAwYCB0byBgNjU1MzVgIChpbmNsdXNpdmUpLiBTZXR0aW5nIHRoZSB2YWx1ZSB0byB0aGUgZGVmYXVsdCBwb3J0IG9mIHRoZSBgVVJMYCBvYmplY3RzIGdpdmVuIGBwcm90b2NvbGAgd2lsbFxuICAgICAqIHJlc3VsdCBpbiB0aGUgYHBvcnRgIHZhbHVlIGJlY29taW5nXG4gICAgICogdGhlIGVtcHR5IHN0cmluZyAoYCcnYCkuXG4gICAgICpcbiAgICAgKiBUaGUgcG9ydCB2YWx1ZSBjYW4gYmUgYW4gZW1wdHkgc3RyaW5nIGluIHdoaWNoIGNhc2UgdGhlIHBvcnQgZGVwZW5kcyBvblxuICAgICAqIHRoZSBwcm90b2NvbC9zY2hlbWUuXG4gICAgICpcbiAgICAgKiBJZiB0aGF0IHN0cmluZyBpcyBpbnZhbGlkIGJ1dCBpdCBiZWdpbnMgd2l0aCBhIG51bWJlciwgdGhlIGxlYWRpbmcgbnVtYmVyIGlzXG4gICAgICogYXNzaWduZWQgdG8gYHBvcnRgLlxuICAgICAqIElmIHRoZSBudW1iZXIgbGllcyBvdXRzaWRlIHRoZSByYW5nZSBkZW5vdGVkIGFib3ZlLCBpdCBpcyBpZ25vcmVkLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmc6ODg4OCcpO1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnBvcnQpO1xuICAgICAqIC8vIFByaW50cyA4ODg4XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcmVhZG9ubHkgcG9ydDogc3RyaW5nXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcHJvdG9jb2wgcG9ydGlvbiBvZiB0aGUgVVJMLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBjb25zdCBteVVSTCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5vcmcnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5wcm90b2NvbCk7XG4gICAgICogLy8gUHJpbnRzIGh0dHBzOlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHByb3RvY29sOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzZXJpYWxpemVkIHF1ZXJ5IHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2FiYz8xMjMnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC5zZWFyY2gpO1xuICAgICAqIC8vIFByaW50cyA/MTIzXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBBbnkgaW52YWxpZCBVUkwgY2hhcmFjdGVycyBhcHBlYXJpbmcgaW4gdGhlIHZhbHVlIGFzc2lnbmVkIHRoZSBgc2VhcmNoYHByb3BlcnR5IHdpbGwgYmUgYHBlcmNlbnQtZW5jb2RlZGAuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2VhcmNoOiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBgVVJMU2VhcmNoUGFyYW1zYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSBwYXJhbWV0ZXJzIG9mIHRoZVxuICAgICAqIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2FiYz9mb289fmJhcicpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cobXlVUkwuc2VhcmNoKTsgIC8vIHByaW50cyA/Zm9vPX5iYXJcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICByZWFkb25seSBzZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHVzZXJuYW1lIHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2FiYzp4eXpAZXhhbXBsZS5jb20nKTtcbiAgICAgKiBjb25zb2xlLmxvZyhteVVSTC51c2VybmFtZSk7XG4gICAgICogLy8gUHJpbnRzIGFiY1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQW55IGludmFsaWQgVVJMIGNoYXJhY3RlcnMgYXBwZWFyaW5nIGluIHRoZSB2YWx1ZSBhc3NpZ25lZCB0aGUgYHVzZXJuYW1lYCBwcm9wZXJ0eSB3aWxsIGJlIGBwZXJjZW50LWVuY29kZWRgLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHVzZXJuYW1lOiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBzdGVwIG9mIHRoZSBwYXRoIHBvcnRpb24gb2YgdGhlIFVSTC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogY29uc3QgbXlVUkwgPSBuZXcgVVJMKCdodHRwczovL2V4YW1wbGUub3JnL2FiYy94eXo/MTIzJyk7XG4gICAgICogY29uc29sZS5sb2cobXlVUkwucGF0aFN0ZXBBdCgwKSk7XG4gICAgICogLy8gUHJpbnRzIGFiY1xuICAgICAqIGNvbnNvbGUubG9nKG15VVJMLnBhdGhTdGVwQXQoMSkpO1xuICAgICAqIC8vIFByaW50cyB4eXpcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwYXRoU3RlcEF0OiAoaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBHb25lLCB1c2Ugc2VhcmNoUGFyYW1zIGluc3RlYWQuXG4gICAgICovXG4gICAgcXVlcnk/OiBHb25lXG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHRvSlNPTjogKCkgPT4gc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiA9IEhhbmRsZXJDb25maWd1cmF0aW9uICYge1xuICAgIC8qKlxuICAgICAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHdoaWNoIGRvbWFpbnMgY2FuIGFjY2VzcyB0aGUgZW5kcG9pbnQgY3Jvc3Mtb3JpZ2luLlxuICAgICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvcnM/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgSGFuZGxlciA9IChjb250ZXh0OiBDb250ZXh0LCByZXF1ZXN0OiBIdHRwUmVxdWVzdCkgPT4gUHJvbWlzZTxSZXN1bHQ+IHwgUmVzdWx0XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXQocGF0aDogc3RyaW5nLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBnZXQocGF0aDogc3RyaW5nLCBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiwgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZ2V0KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignR0VUJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbmV4cG9ydCBmdW5jdGlvbiBwb3N0KHBhdGg6IHN0cmluZywgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gcG9zdChwYXRoOiBzdHJpbmcsIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwb3N0KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignUE9TVCcsIHBhdGgsIGNvbmZpZ09ySGFuZGxlciwgZm4pXG59XG5leHBvcnQgZnVuY3Rpb24gcHV0KHBhdGg6IHN0cmluZywgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gcHV0KHBhdGg6IHN0cmluZywgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24sIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHB1dChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ1BVVCcsIHBhdGgsIGNvbmZpZ09ySGFuZGxlciwgZm4pXG59XG5leHBvcnQgZnVuY3Rpb24gcGF0Y2gocGF0aDogc3RyaW5nLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwYXRjaChwYXRoOiBzdHJpbmcsIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwYXRjaChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ1BBVENIJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZWwocGF0aDogc3RyaW5nLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBkZWwocGF0aDogc3RyaW5nLCBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiwgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZGVsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignREVMRVRFJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@riddance/host",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "engines": {
7
- "node": ">=20"
7
+ "node": ">=20.17"
8
8
  },
9
9
  "keywords": [
10
10
  "riddance",
@@ -22,11 +22,18 @@
22
22
  "exports": {
23
23
  "./lib/context": "./context.js",
24
24
  "./lib/http": "./http.js",
25
+ "./lib/timer": "./timer.js",
26
+ "./lib/event": "./event.js",
25
27
  "./registry": "./host/registry.js",
26
28
  "./reflect": "./host/reflect.js",
27
29
  "./logging": "./host/logging.js",
28
30
  "./context": "./host/context.js",
29
- "./http": "./host/http.js"
31
+ "./http": "./host/http.js",
32
+ "./http-registry": "./host/http-registry.js",
33
+ "./timer": "./host/timer.js",
34
+ "./timer-registry": "./host/timer-registry.js",
35
+ "./event": "./host/event.js",
36
+ "./event-registry": "./host/event-registry.js"
30
37
  },
31
38
  "scripts": {
32
39
  "start": "riddance-watch",
@@ -35,7 +42,7 @@
35
42
  "postpublish": "riddance-sync"
36
43
  },
37
44
  "devDependencies": {
38
- "@riddance/env": "0.6.1"
45
+ "@riddance/env": "0.8.2"
39
46
  },
40
- "gitHead": "eab34e513ea503dd6629eab653bfd8aa0c69479b"
47
+ "gitHead": "b243d96b737808e77a6171f8047039f5fc11199a"
41
48
  }
package/timer.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { Context, HandlerConfiguration } from './context.js';
2
+ import { type CronExpression } from './host/timer-registry.js';
3
+ export * from './context.js';
4
+ export type Timer = {
5
+ readonly triggerTime: Date;
6
+ };
7
+ export type TimerHandlerConfiguration = HandlerConfiguration & {
8
+ /**
9
+ * The TZ identifier identifying which time zone to the schedule is in, UTC if undefined.
10
+ * @default undefined
11
+ * @example 'America/Los_Angeles'
12
+ */
13
+ readonly timezone?: string;
14
+ };
15
+ export type Handler = (context: Context, when: Timer) => Promise<void> | void;
16
+ export declare function setInterval(schedule: CronExpression, fn: Handler): void;
17
+ export declare function setInterval(schedule: CronExpression, config: HandlerConfiguration, fn: Handler): void;
package/timer.js ADDED
@@ -0,0 +1,6 @@
1
+ import { registerTimerHandler } from './host/timer-registry.js';
2
+ export * from './context.js';
3
+ export function setInterval(schedule, configOrHandler, fn) {
4
+ registerTimerHandler(schedule, configOrHandler, fn);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0aW1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQXVCLE1BQU0sMEJBQTBCLENBQUE7QUFFcEYsY0FBYyxjQUFjLENBQUE7QUF1QjVCLE1BQU0sVUFBVSxXQUFXLENBQ3ZCLFFBQXdCLEVBQ3hCLGVBQStDLEVBQy9DLEVBQVk7SUFFWixvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0LCBIYW5kbGVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29udGV4dC5qcydcbmltcG9ydCB7IHJlZ2lzdGVyVGltZXJIYW5kbGVyLCB0eXBlIENyb25FeHByZXNzaW9uIH0gZnJvbSAnLi9ob3N0L3RpbWVyLXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQuanMnXG5cbmV4cG9ydCB0eXBlIFRpbWVyID0ge1xuICAgIHJlYWRvbmx5IHRyaWdnZXJUaW1lOiBEYXRlXG59XG5cbmV4cG9ydCB0eXBlIFRpbWVySGFuZGxlckNvbmZpZ3VyYXRpb24gPSBIYW5kbGVyQ29uZmlndXJhdGlvbiAmIHtcbiAgICAvKipcbiAgICAgKiBUaGUgVFogaWRlbnRpZmllciBpZGVudGlmeWluZyB3aGljaCB0aW1lIHpvbmUgdG8gdGhlIHNjaGVkdWxlIGlzIGluLCBVVEMgaWYgdW5kZWZpbmVkLlxuICAgICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgICAqIEBleGFtcGxlICdBbWVyaWNhL0xvc19BbmdlbGVzJ1xuICAgICAqL1xuICAgIHJlYWRvbmx5IHRpbWV6b25lPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXIgPSAoY29udGV4dDogQ29udGV4dCwgd2hlbjogVGltZXIpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRJbnRlcnZhbChzY2hlZHVsZTogQ3JvbkV4cHJlc3Npb24sIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHNldEludGVydmFsKFxuICAgIHNjaGVkdWxlOiBDcm9uRXhwcmVzc2lvbixcbiAgICBjb25maWc6IEhhbmRsZXJDb25maWd1cmF0aW9uLFxuICAgIGZuOiBIYW5kbGVyLFxuKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHNldEludGVydmFsKFxuICAgIHNjaGVkdWxlOiBDcm9uRXhwcmVzc2lvbixcbiAgICBjb25maWdPckhhbmRsZXI6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgSGFuZGxlcixcbiAgICBmbj86IEhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgICByZWdpc3RlclRpbWVySGFuZGxlcihzY2hlZHVsZSwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbiJdfQ==
package/eslint.config.js DELETED
@@ -1,5 +0,0 @@
1
- // @ts-check
2
-
3
- import { configuration } from '@riddance/env/lib/eslint-config.js'
4
-
5
- export default configuration(import.meta.dirname)
package/host/events.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import { Json, Logger } from '../context.js';
2
- import { EventMetadata, EventTransport } from './context.js';
3
- export declare class EventCollector {
4
- #private;
5
- constructor(transport: EventTransport, logger: Logger, ids: {
6
- operationId?: string;
7
- clientId?: string;
8
- clientIp?: string;
9
- userAgent?: string;
10
- }, timeout: number, signal: AbortSignal);
11
- emit(meta: EventMetadata, data?: Json): void;
12
- flush(): Promise<void>;
13
- }