@riddance/host 0.0.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/host/http.js ADDED
@@ -0,0 +1,205 @@
1
+ import { parse } from 'node:url';
2
+ import { measure } from '../context.js';
3
+ export async function executeRequest(log, context, handler, options, success) {
4
+ const isShallow = context.env.SHALLOW_KEY && options.headers?.['x-shallow'] === context.env.SHALLOW_KEY;
5
+ const includeBodyInLogs = !handler.config?.excludeBodyFromLogs;
6
+ const logRequest = includeBodyInLogs
7
+ ? { method: handler.method, ...options }
8
+ : withoutRequestBody({ method: handler.method, ...options });
9
+ log = log.enrichReserved({ meta: context.meta, request: logRequest });
10
+ if (isShallow) {
11
+ context.log.trace('Shallow request');
12
+ return {
13
+ headers: {},
14
+ status: 204,
15
+ };
16
+ }
17
+ context.log.trace('Request BEGIN');
18
+ try {
19
+ let parsedUrl;
20
+ let pathSteps;
21
+ const req = {
22
+ rawUrl: options.uri,
23
+ get url() {
24
+ return (parsedUrl ??= {
25
+ ...parse(this.rawUrl, true),
26
+ pathStepAt: (index) => {
27
+ const steps = (pathSteps ??= parsedUrl.pathname?.split('/') ?? []);
28
+ const step = steps[index];
29
+ if (!step) {
30
+ throw new RangeError(`Path does not have a step at index ${index}.`);
31
+ }
32
+ return step;
33
+ },
34
+ });
35
+ },
36
+ body: requestBody(options),
37
+ headers: options.headers ?? {},
38
+ };
39
+ const result = await measure(context.log, 'execution', () => handler.entry(context, req));
40
+ const response = resultToResponse(result, includeBodyInLogs);
41
+ if (context.signal.aborted) {
42
+ response.headers = {
43
+ 'x-timeout': '1',
44
+ ...response.headers,
45
+ };
46
+ }
47
+ log = log.enrichReserved({ request: logRequest });
48
+ if (response.status < 300) {
49
+ log.debug('Request END');
50
+ await success();
51
+ }
52
+ else {
53
+ log.warn('Request END');
54
+ }
55
+ return response;
56
+ }
57
+ catch (e) {
58
+ try {
59
+ const response = errorToResponse(e);
60
+ log = log.enrichReserved({ response });
61
+ log.error('Request END', e);
62
+ return response;
63
+ }
64
+ catch (convertError) {
65
+ log.error('Could not convert exception to error response.', convertError);
66
+ return {
67
+ headers: {},
68
+ status: 500,
69
+ };
70
+ }
71
+ }
72
+ }
73
+ function resultToResponse(result, withLogBody) {
74
+ if (!result) {
75
+ return {
76
+ headers: {},
77
+ status: 204,
78
+ };
79
+ }
80
+ else if (typeof result === 'string') {
81
+ const logBody = withLogBody ? result : undefined;
82
+ return {
83
+ headers: {
84
+ 'content-type': 'text/plain',
85
+ },
86
+ status: 200,
87
+ body: result,
88
+ logBody,
89
+ };
90
+ }
91
+ else {
92
+ if (result.body === undefined) {
93
+ return {
94
+ headers: result.headers ?? {},
95
+ status: result.status ?? 200,
96
+ };
97
+ }
98
+ else if (typeof result.body === 'string') {
99
+ const logBody = withLogBody ? result.body : undefined;
100
+ return {
101
+ headers: withContentType(result.headers, 'text/plain'),
102
+ status: result.status ?? 200,
103
+ body: result.body,
104
+ logBody,
105
+ };
106
+ }
107
+ else if (Buffer.isBuffer(result.body)) {
108
+ const logBody = withLogBody ? result.body.toString('base64') : undefined;
109
+ return {
110
+ headers: withContentType(result.headers, 'application/octet-stream'),
111
+ status: result.status ?? 200,
112
+ body: result.body,
113
+ logBody,
114
+ };
115
+ }
116
+ else {
117
+ const logBody = withLogBody ? result.body : undefined;
118
+ return {
119
+ headers: withContentType(result.headers, 'application/json'),
120
+ status: result.status ?? 200,
121
+ body: JSON.stringify(result.body),
122
+ logBody,
123
+ };
124
+ }
125
+ }
126
+ }
127
+ function withoutRequestBody(options) {
128
+ if (hasJsonBody(options)) {
129
+ const { json, ...bodyless } = options;
130
+ return bodyless;
131
+ }
132
+ if (hasStringBody(options)) {
133
+ const { body, ...bodyless } = options;
134
+ return bodyless;
135
+ }
136
+ return options;
137
+ }
138
+ function requestBody(options) {
139
+ if (hasJsonBody(options)) {
140
+ return options.json;
141
+ }
142
+ if (hasStringBody(options)) {
143
+ return options.body;
144
+ }
145
+ return undefined;
146
+ }
147
+ function hasJsonBody(options) {
148
+ return options.json !== undefined;
149
+ }
150
+ function hasStringBody(options) {
151
+ return options.body !== undefined;
152
+ }
153
+ function withContentType(headers, contentType) {
154
+ if (!headers) {
155
+ return {
156
+ 'content-type': contentType,
157
+ };
158
+ }
159
+ if (!headers['content-type']) {
160
+ headers['content-type'] = contentType;
161
+ }
162
+ return headers;
163
+ }
164
+ function errorToResponse(e) {
165
+ const { body, statusCode: status } = e;
166
+ if (typeof body === 'string') {
167
+ return {
168
+ headers: {
169
+ 'content-type': 'text/plain',
170
+ },
171
+ status: status ?? 500,
172
+ body,
173
+ };
174
+ }
175
+ else if (typeof body === 'object') {
176
+ return {
177
+ headers: {
178
+ 'content-type': 'application/json',
179
+ },
180
+ status: status ?? 500,
181
+ body: JSON.stringify(body),
182
+ };
183
+ }
184
+ else {
185
+ return {
186
+ headers: {},
187
+ status: status ?? 500,
188
+ };
189
+ }
190
+ }
191
+ export function clientFromHeaders(headers) {
192
+ if (!headers) {
193
+ return {};
194
+ }
195
+ return {
196
+ operationId: headers['x-request-id'] ?? headers['request-id'],
197
+ clientId: headers['x-client-id'] ??
198
+ headers['x-installation-id'] ??
199
+ headers['client-id'] ??
200
+ headers['installation-id'],
201
+ clientIp: headers['x-forwarded-for'],
202
+ userAgent: headers['x-forwarded-for-user-agent'] ?? headers['user-agent'],
203
+ };
204
+ }
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBc0IsTUFBTSxVQUFVLENBQUE7QUFDcEQsT0FBTyxFQUFXLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQTBCaEQsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2hDLEdBQWUsRUFDZixPQUFnQixFQUNoQixPQUFvQixFQUNwQixPQUF1QixFQUN2QixPQUErQjtJQUUvQixNQUFNLFNBQVMsR0FDWCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUE7SUFDekYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUE7SUFDOUQsTUFBTSxVQUFVLEdBQUcsaUJBQWlCO1FBQ2hDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFO1FBQ3hDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUNoRSxHQUFHLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQ3JFLElBQUksU0FBUyxFQUFFO1FBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUNwQyxPQUFPO1lBQ0gsT0FBTyxFQUFFLEVBQUU7WUFDWCxNQUFNLEVBQUUsR0FBRztTQUNkLENBQUE7S0FDSjtJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFD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LEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDN0QsUUFBUSxFQUNKLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDdEIsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1lBQzVCLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDcEIsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBQzlCLFFBQVEsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDcEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7S0FDNUUsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZSwgVXJsV2l0aFBhcnNlZFF1ZXJ5IH0gZnJvbSAnbm9kZTp1cmwnXHJcbmltcG9ydCB7IENvbnRleHQsIG1lYXN1cmUgfSBmcm9tICcuLi9jb250ZXh0LmpzJ1xyXG5pbXBvcnQgdHlwZSB7IEpzb24sIFJlc3BvbnNlSGVhZGVycywgUmVzdWx0IH0gZnJvbSAnLi4vaHR0cC5qcydcclxuaW1wb3J0IHsgQ2xpZW50SW5mbywgUm9vdExvZ2dlciB9IGZyb20gJy4vY29udGV4dC5qcydcclxuaW1wb3J0IHR5cGUgeyBIdHRwSGFuZGxlciB9IGZyb20gJy4vcmVnaXN0cnkuanMnXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlIHtcclxuICAgIGhlYWRlcnM6IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cclxuICAgIHN0YXR1czogbnVtYmVyXHJcbiAgICBib2R5Pzogc3RyaW5nIHwgQnVmZmVyXHJcbn1cclxuXHJcbnR5cGUgUmVxdWVzdE9wdGlvbnMgPSBCb2R5bGVzc1JlcXVlc3RPcHRpb25zIHwgU3RyaW5nUmVxdWVzdE9wdGlvbnMgfCBKc29uUmVxdWVzdE9wdGlvbnNcclxuXHJcbmludGVyZmFjZSBCb2R5bGVzc1JlcXVlc3RPcHRpb25zIHtcclxuICAgIHVyaTogc3RyaW5nXHJcbiAgICBoZWFkZXJzPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgU3RyaW5nUmVxdWVzdE9wdGlvbnMgZXh0ZW5kcyBCb2R5bGVzc1JlcXVlc3RPcHRpb25zIHtcclxuICAgIGJvZHk6IHN0cmluZ1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSnNvblJlcXVlc3RPcHRpb25zIGV4dGVuZHMgQm9keWxlc3NSZXF1ZXN0T3B0aW9ucyB7XHJcbiAgICBqc29uOiBKc29uXHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlUmVxdWVzdChcclxuICAgIGxvZzogUm9vdExvZ2dlcixcclxuICAgIGNvbnRleHQ6IENvbnRleHQsXHJcbiAgICBoYW5kbGVyOiBIdHRwSGFuZGxlcixcclxuICAgIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxyXG4gICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZTx1bmtub3duPixcclxuKTogUHJvbWlzZTxSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaXNTaGFsbG93ID1cclxuICAgICAgICBjb250ZXh0LmVudi5TSEFMTE9XX0tFWSAmJiBvcHRpb25zLmhlYWRlcnM/LlsneC1zaGFsbG93J10gPT09IGNvbnRleHQuZW52LlNIQUxMT1dfS0VZXHJcbiAgICBjb25zdCBpbmNsdWRlQm9keUluTG9ncyA9ICFoYW5kbGVyLmNvbmZpZz8uZXhjbHVkZUJvZHlGcm9tTG9nc1xyXG4gICAgY29uc3QgbG9nUmVxdWVzdCA9IGluY2x1ZGVCb2R5SW5Mb2dzXHJcbiAgICAgICAgPyB7IG1ldGhvZDogaGFuZGxlci5tZXRob2QsIC4uLm9wdGlvbnMgfVxyXG4gICAgICAgIDogd2l0aG91dFJlcXVlc3RCb2R5KHsgbWV0aG9kOiBoYW5kbGVyLm1ldGhvZCwgLi4ub3B0aW9ucyB9KVxyXG4gICAgbG9nID0gbG9nLmVucmljaFJlc2VydmVkKHsgbWV0YTogY29udGV4dC5tZXRhLCByZXF1ZXN0OiBsb2dSZXF1ZXN0IH0pXHJcbiAgICBpZiAoaXNTaGFsbG93KSB7XHJcbiAgICAgICAgY29udGV4dC5sb2cudHJhY2UoJ1NoYWxsb3cgcmVxdWVzdCcpXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaGVhZGVyczoge30sXHJcbiAgICAgICAgICAgIHN0YXR1czogMjA0LFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnRleHQubG9nLnRyYWNlKCdSZXF1ZXN0IEJFR0lOJylcclxuICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IHBhcnNlZFVybDogVXJsV2l0aFBhcnNlZFF1ZXJ5ICYgeyBwYXRoU3RlcEF0OiAoaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nIH1cclxuICAgICAgICBsZXQgcGF0aFN0ZXBzOiBzdHJpbmdbXVxyXG4gICAgICAgIGNvbnN0IHJlcSA9IHtcclxuICAgICAgICAgICAgcmF3VXJsOiBvcHRpb25zLnVyaSxcclxuICAgICAgICAgICAgZ2V0IHVybCgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAocGFyc2VkVXJsID8/PSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4ucGFyc2UodGhpcy5yYXdVcmwsIHRydWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGhTdGVwQXQ6IChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBzID0gKHBhdGhTdGVwcyA/Pz0gcGFyc2VkVXJsLnBhdGhuYW1lPy5zcGxpdCgnLycpID8/IFtdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGVwID0gc3RlcHNbaW5kZXhdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RlcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFBhdGggZG9lcyBub3QgaGF2ZSBhIHN0ZXAgYXQgaW5kZXggJHtpbmRleH0uYClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RlcFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBib2R5OiByZXF1ZXN0Qm9keShvcHRpb25zKSxcclxuICAgICAgICAgICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzID8/IHt9LFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbWVhc3VyZShjb250ZXh0LmxvZywgJ2V4ZWN1dGlvbicsICgpID0+IGhhbmRsZXIuZW50cnkoY29udGV4dCwgcmVxKSlcclxuXHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXN1bHRUb1Jlc3BvbnNlKHJlc3VsdCwgaW5jbHVkZUJvZHlJbkxvZ3MpXHJcblxyXG4gICAgICAgIGlmIChjb250ZXh0LnNpZ25hbC5hYm9ydGVkKSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMgPSB7XHJcbiAgICAgICAgICAgICAgICAneC10aW1lb3V0JzogJzEnLFxyXG4gICAgICAgICAgICAgICAgLi4ucmVzcG9uc2UuaGVhZGVycyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbG9nID0gbG9nLmVucmljaFJlc2VydmVkKHsgcmVxdWVzdDogbG9nUmVxdWVzdCB9KVxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPCAzMDApIHtcclxuICAgICAgICAgICAgbG9nLmRlYnVnKCdSZXF1ZXN0IEVORCcpXHJcbiAgICAgICAgICAgIGF3YWl0IHN1Y2Nlc3MoKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxvZy53YXJuKCdSZXF1ZXN0IEVORCcpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gZXJyb3JUb1Jlc3BvbnNlKGUpXHJcbiAgICAgICAgICAgIGxvZyA9IGxvZy5lbnJpY2hSZXNlcnZlZCh7IHJlc3BvbnNlIH0pXHJcbiAgICAgICAgICAgIGxvZy5lcnJvcignUmVxdWVzdCBFTkQnLCBlKVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VcclxuICAgICAgICB9IGNhdGNoIChjb252ZXJ0RXJyb3IpIHtcclxuICAgICAgICAgICAgbG9nLmVycm9yKCdDb3VsZCBub3QgY29udmVydCBleGNlcHRpb24gdG8gZXJyb3IgcmVzcG9uc2UuJywgY29udmVydEVycm9yKVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge30sXHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IDUwMCxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVzdWx0VG9SZXNwb25zZShyZXN1bHQ6IFJlc3VsdCwgd2l0aExvZ0JvZHk6IGJvb2xlYW4pOiBSZXNwb25zZSAmIHsgbG9nQm9keT86IHVua25vd24gfSB7XHJcbiAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxyXG4gICAgICAgICAgICBzdGF0dXM6IDIwNCxcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgbG9nQm9keSA9IHdpdGhMb2dCb2R5ID8gcmVzdWx0IDogdW5kZWZpbmVkXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICd0ZXh0L3BsYWluJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RhdHVzOiAyMDAsXHJcbiAgICAgICAgICAgIGJvZHk6IHJlc3VsdCxcclxuICAgICAgICAgICAgbG9nQm9keSxcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChyZXN1bHQuYm9keSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXN1bHQuaGVhZGVycyA/PyB7fSxcclxuICAgICAgICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cyA/PyAyMDAsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXN1bHQuYm9keSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9nQm9keSA9IHdpdGhMb2dCb2R5ID8gcmVzdWx0LmJvZHkgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHdpdGhDb250ZW50VHlwZShyZXN1bHQuaGVhZGVycywgJ3RleHQvcGxhaW4nKSxcclxuICAgICAgICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cyA/PyAyMDAsXHJcbiAgICAgICAgICAgICAgICBib2R5OiByZXN1bHQuYm9keSxcclxuICAgICAgICAgICAgICAgIGxvZ0JvZHksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcihyZXN1bHQuYm9keSkpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9nQm9keSA9IHdpdGhMb2dCb2R5ID8gcmVzdWx0LmJvZHkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB3aXRoQ29udGVudFR5cGUocmVzdWx0LmhlYWRlcnMsICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKSxcclxuICAgICAgICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cyA/PyAyMDAsXHJcbiAgICAgICAgICAgICAgICBib2R5OiByZXN1bHQuYm9keSxcclxuICAgICAgICAgICAgICAgIGxvZ0JvZHksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBsb2dCb2R5ID0gd2l0aExvZ0JvZHkgPyByZXN1bHQuYm9keSA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogd2l0aENvbnRlbnRUeXBlKHJlc3VsdC5oZWFkZXJzLCAnYXBwbGljYXRpb24vanNvbicpLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzID8/IDIwMCxcclxuICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHJlc3VsdC5ib2R5KSxcclxuICAgICAgICAgICAgICAgIGxvZ0JvZHksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHdpdGhvdXRSZXF1ZXN0Qm9keShvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyAmIHsgbWV0aG9kOiBzdHJpbmcgfSkge1xyXG4gICAgaWYgKGhhc0pzb25Cb2R5KG9wdGlvbnMpKSB7XHJcbiAgICAgICAgY29uc3QgeyBqc29uLCAuLi5ib2R5bGVzcyB9ID0gb3B0aW9uc1xyXG4gICAgICAgIHJldHVybiBib2R5bGVzc1xyXG4gICAgfVxyXG4gICAgaWYgKGhhc1N0cmluZ0JvZHkob3B0aW9ucykpIHtcclxuICAgICAgICBjb25zdCB7IGJvZHksIC4uLmJvZHlsZXNzIH0gPSBvcHRpb25zXHJcbiAgICAgICAgcmV0dXJuIGJvZHlsZXNzXHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0aW9uc1xyXG59XHJcblxyXG5mdW5jdGlvbiByZXF1ZXN0Qm9keShvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyk6IEpzb24gfCBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKGhhc0pzb25Cb2R5KG9wdGlvbnMpKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuanNvblxyXG4gICAgfVxyXG4gICAgaWYgKGhhc1N0cmluZ0JvZHkob3B0aW9ucykpIHtcclxuICAgICAgICByZXR1cm4gb3B0aW9ucy5ib2R5XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhc0pzb25Cb2R5KG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zKTogb3B0aW9ucyBpcyBKc29uUmVxdWVzdE9wdGlvbnMge1xyXG4gICAgcmV0dXJuIChvcHRpb25zIGFzIHsganNvbj86IHVua25vd24gfSkuanNvbiAhPT0gdW5kZWZpbmVkXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhc1N0cmluZ0JvZHkob3B0aW9uczogUmVxdWVzdE9wdGlvbnMpOiBvcHRpb25zIGlzIFN0cmluZ1JlcXVlc3RPcHRpb25zIHtcclxuICAgIHJldHVybiAob3B0aW9ucyBhcyB7IGJvZHk/OiB1bmtub3duIH0pLmJvZHkgIT09IHVuZGVmaW5lZFxyXG59XHJcblxyXG5mdW5jdGlvbiB3aXRoQ29udGVudFR5cGUoaGVhZGVyczogUmVzcG9uc2VIZWFkZXJzIHwgdW5kZWZpbmVkLCBjb250ZW50VHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIWhlYWRlcnMpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAnY29udGVudC10eXBlJzogY29udGVudFR5cGUsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFoZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xyXG4gICAgICAgIGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gY29udGVudFR5cGVcclxuICAgIH1cclxuICAgIHJldHVybiBoZWFkZXJzXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVycm9yVG9SZXNwb25zZShlOiB1bmtub3duKTogUmVzcG9uc2Uge1xyXG4gICAgY29uc3QgeyBib2R5LCBzdGF0dXNDb2RlOiBzdGF0dXMgfSA9IGUgYXMgeyBib2R5PzogdW5rbm93bjsgc3RhdHVzQ29kZT86IG51bWJlciB9XHJcbiAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICd0ZXh0L3BsYWluJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gNTAwLFxyXG4gICAgICAgICAgICBib2R5LFxyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gNTAwLFxyXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxyXG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyA/PyA1MDAsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2xpZW50RnJvbUhlYWRlcnMoXHJcbiAgICBoZWFkZXJzOiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkLFxyXG4pOiBDbGllbnRJbmZvIHtcclxuICAgIGlmICghaGVhZGVycykge1xyXG4gICAgICAgIHJldHVybiB7fVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBvcGVyYXRpb25JZDogaGVhZGVyc1sneC1yZXF1ZXN0LWlkJ10gPz8gaGVhZGVyc1sncmVxdWVzdC1pZCddLFxyXG4gICAgICAgIGNsaWVudElkOlxyXG4gICAgICAgICAgICBoZWFkZXJzWyd4LWNsaWVudC1pZCddID8/XHJcbiAgICAgICAgICAgIGhlYWRlcnNbJ3gtaW5zdGFsbGF0aW9uLWlkJ10gPz9cclxuICAgICAgICAgICAgaGVhZGVyc1snY2xpZW50LWlkJ10gPz9cclxuICAgICAgICAgICAgaGVhZGVyc1snaW5zdGFsbGF0aW9uLWlkJ10sXHJcbiAgICAgICAgY2xpZW50SXA6IGhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddLFxyXG4gICAgICAgIHVzZXJBZ2VudDogaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yLXVzZXItYWdlbnQnXSA/PyBoZWFkZXJzWyd1c2VyLWFnZW50J10sXHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,4 @@
1
+ import { AbortSignal } from '../context.js';
2
+ import { LogLevel, LogTransport, RootLogger } from './context.js';
3
+ export declare function makeLogger(transport: LogTransport, minimumLogLevel: LogLevel | undefined, signal: AbortSignal): RootLogger;
4
+ export declare function highPrecisionISODate(performanceNow: number): string;
@@ -0,0 +1,205 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _LogBuffer_instances, _LogBuffer_transport, _LogBuffer_entries, _LogBuffer_size, _LogBuffer_flusher, _LogBuffer_signal, _LogBuffer_asyncTransport, _LogBuffer_timeout, _LogBuffer_startFlush, _EnrichingLogger_buffer, _EnrichingLogger_reservedEnrichment, _EnrichingLogger_customEnrichment, _EnrichingLogger_level;
13
+ import { performance } from 'perf_hooks';
14
+ export function makeLogger(transport, minimumLogLevel, signal) {
15
+ return new EnrichingLogger(new LogBuffer(transport, signal), minimumLogLevel
16
+ ? ['fatal', 'error', 'warning', 'info', 'debug', 'trace'].indexOf(minimumLogLevel)
17
+ : 5, signal);
18
+ }
19
+ const performanceTimeOrigin100ns = Math.round(performance.timeOrigin * 10000);
20
+ export function highPrecisionISODate(performanceNow) {
21
+ const now100ns = performanceTimeOrigin100ns + Math.round(performanceNow * 10000);
22
+ return (new Date(now100ns / 10000).toISOString().substring(0, 20) +
23
+ (now100ns % 10000000).toString().padStart(7, '0') +
24
+ 'Z');
25
+ }
26
+ class LogBuffer {
27
+ constructor(transport, signal) {
28
+ _LogBuffer_instances.add(this);
29
+ _LogBuffer_transport.set(this, void 0);
30
+ _LogBuffer_entries.set(this, []);
31
+ _LogBuffer_size.set(this, 0);
32
+ _LogBuffer_flusher.set(this, void 0);
33
+ _LogBuffer_signal.set(this, void 0);
34
+ _LogBuffer_asyncTransport.set(this, void 0);
35
+ _LogBuffer_timeout.set(this, void 0);
36
+ __classPrivateFieldSet(this, _LogBuffer_transport, transport, "f");
37
+ __classPrivateFieldSet(this, _LogBuffer_signal, signal, "f");
38
+ }
39
+ collect(level, numericLogLevel, message, error, fields, reservedEnrichment, customEnrichment) {
40
+ const offset = performance.now();
41
+ const json = JSON.stringify({
42
+ timestamp: highPrecisionISODate(offset),
43
+ level,
44
+ message,
45
+ error: errorAsJson(error),
46
+ ...reservedEnrichment,
47
+ ...((fields || customEnrichment) && {
48
+ fields: customEnrichment
49
+ ? fields
50
+ ? { ...customEnrichment, ...fields }
51
+ : customEnrichment
52
+ : fields,
53
+ }),
54
+ });
55
+ __classPrivateFieldGet(this, _LogBuffer_entries, "f").push({
56
+ timestamp: offset,
57
+ level,
58
+ message,
59
+ error,
60
+ json,
61
+ });
62
+ __classPrivateFieldSet(this, _LogBuffer_size, __classPrivateFieldGet(this, _LogBuffer_size, "f") + json.length, "f");
63
+ if (__classPrivateFieldGet(this, _LogBuffer_asyncTransport, "f") === false) {
64
+ // eslint-disable-next-line no-void
65
+ void __classPrivateFieldGet(this, _LogBuffer_transport, "f").sendEntries(__classPrivateFieldGet(this, _LogBuffer_entries, "f"), __classPrivateFieldGet(this, _LogBuffer_signal, "f"));
66
+ __classPrivateFieldSet(this, _LogBuffer_entries, [], "f");
67
+ __classPrivateFieldSet(this, _LogBuffer_size, 0, "f");
68
+ }
69
+ else if (__classPrivateFieldGet(this, _LogBuffer_asyncTransport, "f") === undefined) {
70
+ __classPrivateFieldSet(this, _LogBuffer_asyncTransport, true, "f");
71
+ setImmediate(() => {
72
+ if (__classPrivateFieldGet(this, _LogBuffer_flusher, "f")) {
73
+ return;
74
+ }
75
+ const sendResult = __classPrivateFieldGet(this, _LogBuffer_transport, "f").sendEntries(__classPrivateFieldGet(this, _LogBuffer_entries, "f"), __classPrivateFieldGet(this, _LogBuffer_signal, "f"));
76
+ __classPrivateFieldSet(this, _LogBuffer_entries, [], "f");
77
+ __classPrivateFieldSet(this, _LogBuffer_size, 0, "f");
78
+ if (sendResult) {
79
+ __classPrivateFieldSet(this, _LogBuffer_flusher, sendResult, "f");
80
+ }
81
+ else {
82
+ __classPrivateFieldSet(this, _LogBuffer_asyncTransport, false, "f");
83
+ }
84
+ });
85
+ }
86
+ else {
87
+ if (numericLogLevel < 2 || __classPrivateFieldGet(this, _LogBuffer_entries, "f").length > 8 || __classPrivateFieldGet(this, _LogBuffer_size, "f") > 64000) {
88
+ // eslint-disable-next-line no-void
89
+ void this.flush();
90
+ }
91
+ else {
92
+ __classPrivateFieldSet(this, _LogBuffer_timeout, setTimeout(() => {
93
+ // eslint-disable-next-line no-void
94
+ void this.flush();
95
+ __classPrivateFieldSet(this, _LogBuffer_timeout, undefined, "f");
96
+ }, 2000), "f");
97
+ }
98
+ }
99
+ }
100
+ async flush() {
101
+ if (__classPrivateFieldGet(this, _LogBuffer_entries, "f").length === 0) {
102
+ return;
103
+ }
104
+ __classPrivateFieldGet(this, _LogBuffer_instances, "m", _LogBuffer_startFlush).call(this, __classPrivateFieldGet(this, _LogBuffer_entries, "f"));
105
+ __classPrivateFieldSet(this, _LogBuffer_entries, [], "f");
106
+ __classPrivateFieldSet(this, _LogBuffer_size, 0, "f");
107
+ if (__classPrivateFieldGet(this, _LogBuffer_timeout, "f")) {
108
+ clearTimeout(__classPrivateFieldGet(this, _LogBuffer_timeout, "f"));
109
+ __classPrivateFieldSet(this, _LogBuffer_timeout, undefined, "f");
110
+ }
111
+ return await __classPrivateFieldGet(this, _LogBuffer_flusher, "f");
112
+ }
113
+ }
114
+ _LogBuffer_transport = new WeakMap(), _LogBuffer_entries = new WeakMap(), _LogBuffer_size = new WeakMap(), _LogBuffer_flusher = new WeakMap(), _LogBuffer_signal = new WeakMap(), _LogBuffer_asyncTransport = new WeakMap(), _LogBuffer_timeout = new WeakMap(), _LogBuffer_instances = new WeakSet(), _LogBuffer_startFlush = function _LogBuffer_startFlush(entries) {
115
+ if (__classPrivateFieldGet(this, _LogBuffer_flusher, "f")) {
116
+ __classPrivateFieldSet(this, _LogBuffer_flusher, __classPrivateFieldGet(this, _LogBuffer_flusher, "f").then(() => __classPrivateFieldGet(this, _LogBuffer_transport, "f").sendEntries(entries, __classPrivateFieldGet(this, _LogBuffer_signal, "f"))), "f");
117
+ }
118
+ else {
119
+ __classPrivateFieldSet(this, _LogBuffer_flusher, __classPrivateFieldGet(this, _LogBuffer_transport, "f").sendEntries(entries, __classPrivateFieldGet(this, _LogBuffer_signal, "f")), "f");
120
+ }
121
+ };
122
+ class EnrichingLogger {
123
+ constructor(buffer, level, reservedEnrichment, customEnrichment) {
124
+ _EnrichingLogger_buffer.set(this, void 0);
125
+ _EnrichingLogger_reservedEnrichment.set(this, void 0);
126
+ _EnrichingLogger_customEnrichment.set(this, void 0);
127
+ _EnrichingLogger_level.set(this, void 0);
128
+ __classPrivateFieldSet(this, _EnrichingLogger_buffer, buffer, "f");
129
+ __classPrivateFieldSet(this, _EnrichingLogger_level, level, "f");
130
+ __classPrivateFieldSet(this, _EnrichingLogger_reservedEnrichment, reservedEnrichment, "f");
131
+ __classPrivateFieldSet(this, _EnrichingLogger_customEnrichment, customEnrichment, "f");
132
+ }
133
+ enrich(fields) {
134
+ return new EnrichingLogger(__classPrivateFieldGet(this, _EnrichingLogger_buffer, "f"), __classPrivateFieldGet(this, _EnrichingLogger_level, "f"), __classPrivateFieldGet(this, _EnrichingLogger_reservedEnrichment, "f"), {
135
+ ...(__classPrivateFieldGet(this, _EnrichingLogger_customEnrichment, "f") ?? {}),
136
+ ...fields,
137
+ });
138
+ }
139
+ flush() {
140
+ return __classPrivateFieldGet(this, _EnrichingLogger_buffer, "f").flush();
141
+ }
142
+ enrichReserved(fields) {
143
+ return new EnrichingLogger(__classPrivateFieldGet(this, _EnrichingLogger_buffer, "f"), __classPrivateFieldGet(this, _EnrichingLogger_level, "f"), {
144
+ ...(__classPrivateFieldGet(this, _EnrichingLogger_reservedEnrichment, "f") ?? {}),
145
+ ...fields,
146
+ }, __classPrivateFieldGet(this, _EnrichingLogger_customEnrichment, "f"));
147
+ }
148
+ trace(message, error, fields) {
149
+ if (__classPrivateFieldGet(this, _EnrichingLogger_level, "f") < 5) {
150
+ return;
151
+ }
152
+ __classPrivateFieldGet(this, _EnrichingLogger_buffer, "f").collect('trace', 5, message, error, fields, __classPrivateFieldGet(this, _EnrichingLogger_reservedEnrichment, "f"), __classPrivateFieldGet(this, _EnrichingLogger_customEnrichment, "f"));
153
+ }
154
+ debug(message, error, fields) {
155
+ if (__classPrivateFieldGet(this, _EnrichingLogger_level, "f") < 4) {
156
+ return;
157
+ }
158
+ __classPrivateFieldGet(this, _EnrichingLogger_buffer, "f").collect('debug', 4, message, error, fields, __classPrivateFieldGet(this, _EnrichingLogger_reservedEnrichment, "f"), __classPrivateFieldGet(this, _EnrichingLogger_customEnrichment, "f"));
159
+ }
160
+ info(message, error, fields) {
161
+ if (__classPrivateFieldGet(this, _EnrichingLogger_level, "f") < 3) {
162
+ return;
163
+ }
164
+ __classPrivateFieldGet(this, _EnrichingLogger_buffer, "f").collect('debug', 3, message, error, fields, __classPrivateFieldGet(this, _EnrichingLogger_reservedEnrichment, "f"), __classPrivateFieldGet(this, _EnrichingLogger_customEnrichment, "f"));
165
+ }
166
+ warn(message, error, fields) {
167
+ if (__classPrivateFieldGet(this, _EnrichingLogger_level, "f") < 2) {
168
+ return;
169
+ }
170
+ __classPrivateFieldGet(this, _EnrichingLogger_buffer, "f").collect('debug', 2, message, error, fields, __classPrivateFieldGet(this, _EnrichingLogger_reservedEnrichment, "f"), __classPrivateFieldGet(this, _EnrichingLogger_customEnrichment, "f"));
171
+ }
172
+ error(message, error, fields) {
173
+ if (__classPrivateFieldGet(this, _EnrichingLogger_level, "f") < 1) {
174
+ return;
175
+ }
176
+ __classPrivateFieldGet(this, _EnrichingLogger_buffer, "f").collect('error', 1, message, error, fields, __classPrivateFieldGet(this, _EnrichingLogger_reservedEnrichment, "f"), __classPrivateFieldGet(this, _EnrichingLogger_customEnrichment, "f"));
177
+ }
178
+ fatal(message, error, fields) {
179
+ __classPrivateFieldGet(this, _EnrichingLogger_buffer, "f").collect('fatal', 0, message, error, fields, __classPrivateFieldGet(this, _EnrichingLogger_reservedEnrichment, "f"), __classPrivateFieldGet(this, _EnrichingLogger_customEnrichment, "f"));
180
+ }
181
+ }
182
+ _EnrichingLogger_buffer = new WeakMap(), _EnrichingLogger_reservedEnrichment = new WeakMap(), _EnrichingLogger_customEnrichment = new WeakMap(), _EnrichingLogger_level = new WeakMap();
183
+ function errorAsJson(error) {
184
+ if (error === undefined || error === null) {
185
+ return undefined;
186
+ }
187
+ if (error instanceof Error) {
188
+ return {
189
+ message: error.message,
190
+ name: error.name,
191
+ stack: error.stack,
192
+ ...error,
193
+ };
194
+ }
195
+ if (error instanceof Object) {
196
+ return {
197
+ ...error,
198
+ };
199
+ }
200
+ return {
201
+ message: error?.toString(),
202
+ name: typeof error,
203
+ };
204
+ }
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUl4QyxNQUFNLFVBQVUsVUFBVSxDQUN0QixTQUF1QixFQUN2QixlQUFxQyxFQUNyQyxNQUFtQjtJQUVuQixPQUFPLElBQUksZUFBZSxDQUN0QixJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQ2hDLGVBQWU7UUFDWCxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUMsRUFDUCxNQUFNLENBQ1QsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQTtBQUU3RSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsY0FBc0I7SUFDdkQsTUFBTSxRQUFRLEdBQUcsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUE7SUFDaEYsT0FBTyxDQUNILElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN6RCxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUNqRCxHQUFHLENBQ04sQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLFNBQVM7SUFTWCxZQUFZLFNBQXVCLEVBQUUsTUFBbUI7O1FBUnhELHVDQUFpQztRQUNqQyw2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LElBQUksK0JBQVEsQ0FBQyxPQUFPLENBQ2hCLE9BQU8sRUFDUCxDQUFDLEVBQ0QsT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sdUJBQUEsSUFBSSwyQ0FBb0IsRUFDeEIsdUJBQUEsSUFBSSx5Q0FBa0IsQ0FDekIsQ0FBQTtJQUNMLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBZSxFQUFFLEtBQWMsRUFBRSxNQUEwQjtRQUM3RCx1QkFBQSxJQUFJLCtCQUFRLENBQUMsT0FBTyxDQUNoQixPQUFPLEVBQ1AsQ0FBQyxFQUNELE9BQU8sRUFDUCxLQUFLLEVBQ0wsTUFBTSxFQUNOLHVCQUFBLElBQUksMkNBQW9CLEVBQ3hCLHVCQUFBLElBQUkseUNBQWtCLENBQ3pCLENBQUE7SUFDTCxDQUFDO0NBQ0o7O0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUMvQixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtRQUN2QyxPQUFPLFNBQVMsQ0FBQTtLQUNuQjtJQUNELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtRQUN4QixPQUFPO1lBQ0gsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsR0FBSSxLQUErQztTQUM5QyxDQUFBO0tBQ1o7SUFDRCxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7UUFDekIsT0FBTztZQUNILEdBQUcsS0FBSztTQUNILENBQUE7S0FDWjtJQUNELE9BQU87UUFDSCxPQUFPLEVBQUcsS0FBNEIsRUFBRSxRQUFRLEVBQUU7UUFDbEQsSUFBSSxFQUFFLE9BQU8sS0FBSztLQUNiLENBQUE7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdwZXJmX2hvb2tzJ1xyXG5pbXBvcnQgeyBBYm9ydFNpZ25hbCwgSnNvbiwgTG9nZ2VyIH0gZnJvbSAnLi4vY29udGV4dC5qcydcclxuaW1wb3J0IHsgTG9nRW50cnksIExvZ0xldmVsLCBMb2dUcmFuc3BvcnQsIFJvb3RMb2dnZXIgfSBmcm9tICcuL2NvbnRleHQuanMnXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWFrZUxvZ2dlcihcclxuICAgIHRyYW5zcG9ydDogTG9nVHJhbnNwb3J0LFxyXG4gICAgbWluaW11bUxvZ0xldmVsOiBMb2dMZXZlbCB8IHVuZGVmaW5lZCxcclxuICAgIHNpZ25hbDogQWJvcnRTaWduYWwsXHJcbik6IFJvb3RMb2dnZXIge1xyXG4gICAgcmV0dXJuIG5ldyBFbnJpY2hpbmdMb2dnZXIoXHJcbiAgICAgICAgbmV3IExvZ0J1ZmZlcih0cmFuc3BvcnQsIHNpZ25hbCksXHJcbiAgICAgICAgbWluaW11bUxvZ0xldmVsXHJcbiAgICAgICAgICAgID8gWydmYXRhbCcsICdlcnJvcicsICd3YXJuaW5nJywgJ2luZm8nLCAnZGVidWcnLCAndHJhY2UnXS5pbmRleE9mKG1pbmltdW1Mb2dMZXZlbClcclxuICAgICAgICAgICAgOiA1LFxyXG4gICAgICAgIHNpZ25hbCxcclxuICAgIClcclxufVxyXG5cclxuY29uc3QgcGVyZm9ybWFuY2VUaW1lT3JpZ2luMTAwbnMgPSBNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKiAxMDAwMClcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShwZXJmb3JtYW5jZU5vdzogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBub3cxMDBucyA9IHBlcmZvcm1hbmNlVGltZU9yaWdpbjEwMG5zICsgTWF0aC5yb3VuZChwZXJmb3JtYW5jZU5vdyAqIDEwMDAwKVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICBuZXcgRGF0ZShub3cxMDBucyAvIDEwMDAwKS50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCAyMCkgK1xyXG4gICAgICAgIChub3cxMDBucyAlIDEwMDAwMDAwKS50b1N0cmluZygpLnBhZFN0YXJ0KDcsICcwJykgK1xyXG4gICAgICAgICdaJ1xyXG4gICAgKVxyXG59XHJcblxyXG5jbGFzcyBMb2dCdWZmZXIge1xyXG4gICAgcmVhZG9ubHkgI3RyYW5zcG9ydDogTG9nVHJhbnNwb3J0XHJcbiAgICAjZW50cmllczogTG9nRW50cnlbXSA9IFtdXHJcbiAgICAjc2l6ZSA9IDBcclxuICAgICNmbHVzaGVyPzogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZFxyXG4gICAgcmVhZG9ubHkgI3NpZ25hbDogQWJvcnRTaWduYWxcclxuICAgICNhc3luY1RyYW5zcG9ydDogYm9vbGVhbiB8IHVuZGVmaW5lZFxyXG4gICAgI3RpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0IHwgdW5kZWZpbmVkXHJcblxyXG4gICAgY29uc3RydWN0b3IodHJhbnNwb3J0OiBMb2dUcmFuc3BvcnQsIHNpZ25hbDogQWJvcnRTaWduYWwpIHtcclxuICAgICAgICB0aGlzLiN0cmFuc3BvcnQgPSB0cmFuc3BvcnRcclxuICAgICAgICB0aGlzLiNzaWduYWwgPSBzaWduYWxcclxuICAgIH1cclxuXHJcbiAgICBjb2xsZWN0KFxyXG4gICAgICAgIGxldmVsOiBMb2dMZXZlbCxcclxuICAgICAgICBudW1lcmljTG9nTGV2ZWw6IG51bWJlcixcclxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICAgICAgZXJyb3I6IHVua25vd24sXHJcbiAgICAgICAgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgcmVzZXJ2ZWRFbnJpY2htZW50OiBvYmplY3QgfCB1bmRlZmluZWQsXHJcbiAgICAgICAgY3VzdG9tRW5yaWNobWVudDogb2JqZWN0IHwgdW5kZWZpbmVkLFxyXG4gICAgKSB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gcGVyZm9ybWFuY2Uubm93KClcclxuICAgICAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICB0aW1lc3RhbXA6IGhpZ2hQcmVjaXNpb25JU09EYXRlKG9mZnNldCksXHJcbiAgICAgICAgICAgIGxldmVsLFxyXG4gICAgICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JBc0pzb24oZXJyb3IpLFxyXG4gICAgICAgICAgICAuLi5yZXNlcnZlZEVucmljaG1lbnQsXHJcbiAgICAgICAgICAgIC4uLigoZmllbGRzIHx8IGN1c3RvbUVucmljaG1lbnQpICYmIHtcclxuICAgICAgICAgICAgICAgIGZpZWxkczogY3VzdG9tRW5yaWNobWVudFxyXG4gICAgICAgICAgICAgICAgICAgID8gZmllbGRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8geyAuLi5jdXN0b21FbnJpY2htZW50LCAuLi5maWVsZHMgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGN1c3RvbUVucmljaG1lbnRcclxuICAgICAgICAgICAgICAgICAgICA6IGZpZWxkcyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLiNlbnRyaWVzLnB1c2goe1xyXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG9mZnNldCxcclxuICAgICAgICAgICAgbGV2ZWwsXHJcbiAgICAgICAgICAgIG1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICBqc29uLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy4jc2l6ZSArPSBqc29uLmxlbmd0aFxyXG5cclxuICAgICAgICBpZiAodGhpcy4jYXN5bmNUcmFuc3BvcnQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12b2lkXHJcbiAgICAgICAgICAgIHZvaWQgdGhpcy4jdHJhbnNwb3J0LnNlbmRFbnRyaWVzKHRoaXMuI2VudHJpZXMsIHRoaXMuI3NpZ25hbClcclxuICAgICAgICAgICAgdGhpcy4jZW50cmllcyA9IFtdXHJcbiAgICAgICAgICAgIHRoaXMuI3NpemUgPSAwXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLiNhc3luY1RyYW5zcG9ydCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuI2FzeW5jVHJhbnNwb3J0ID0gdHJ1ZVxyXG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuI2ZsdXNoZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbmRSZXN1bHQgPSB0aGlzLiN0cmFuc3BvcnQuc2VuZEVudHJpZXModGhpcy4jZW50cmllcywgdGhpcy4jc2lnbmFsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy4jZW50cmllcyA9IFtdXHJcbiAgICAgICAgICAgICAgICB0aGlzLiNzaXplID0gMFxyXG4gICAgICAgICAgICAgICAgaWYgKHNlbmRSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNmbHVzaGVyID0gc2VuZFJlc3VsdFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNhc3luY1RyYW5zcG9ydCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG51bWVyaWNMb2dMZXZlbCA8IDIgfHwgdGhpcy4jZW50cmllcy5sZW5ndGggPiA4IHx8IHRoaXMuI3NpemUgPiA2NDAwMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcclxuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5mbHVzaCgpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiN0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcclxuICAgICAgICAgICAgICAgICAgICB2b2lkIHRoaXMuZmx1c2goKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3RpbWVvdXQgPSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgIH0sIDIwMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKHRoaXMuI2VudHJpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLiNzdGFydEZsdXNoKHRoaXMuI2VudHJpZXMpXHJcbiAgICAgICAgdGhpcy4jZW50cmllcyA9IFtdXHJcbiAgICAgICAgdGhpcy4jc2l6ZSA9IDBcclxuICAgICAgICBpZiAodGhpcy4jdGltZW91dCkge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy4jdGltZW91dClcclxuICAgICAgICAgICAgdGhpcy4jdGltZW91dCA9IHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy4jZmx1c2hlclxyXG4gICAgfVxyXG5cclxuICAgICNzdGFydEZsdXNoKGVudHJpZXM6IExvZ0VudHJ5W10pIHtcclxuICAgICAgICBpZiAodGhpcy4jZmx1c2hlcikge1xyXG4gICAgICAgICAgICB0aGlzLiNmbHVzaGVyID0gdGhpcy4jZmx1c2hlci50aGVuKCgpID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLiN0cmFuc3BvcnQuc2VuZEVudHJpZXMoZW50cmllcywgdGhpcy4jc2lnbmFsKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuI2ZsdXNoZXIgPSB0aGlzLiN0cmFuc3BvcnQuc2VuZEVudHJpZXMoZW50cmllcywgdGhpcy4jc2lnbmFsKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuY2xhc3MgRW5yaWNoaW5nTG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VyIHtcclxuICAgIHJlYWRvbmx5ICNidWZmZXI6IExvZ0J1ZmZlclxyXG4gICAgcmVhZG9ubHkgI3Jlc2VydmVkRW5yaWNobWVudD86IG9iamVjdFxyXG4gICAgcmVhZG9ubHkgI2N1c3RvbUVucmljaG1lbnQ/OiBvYmplY3RcclxuICAgIHJlYWRvbmx5ICNsZXZlbDogbnVtYmVyXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgYnVmZmVyOiBMb2dCdWZmZXIsXHJcbiAgICAgICAgbGV2ZWw6IG51bWJlcixcclxuICAgICAgICByZXNlcnZlZEVucmljaG1lbnQ/OiBvYmplY3QsXHJcbiAgICAgICAgY3VzdG9tRW5yaWNobWVudD86IG9iamVjdCxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuI2J1ZmZlciA9IGJ1ZmZlclxyXG4gICAgICAgIHRoaXMuI2xldmVsID0gbGV2ZWxcclxuICAgICAgICB0aGlzLiNyZXNlcnZlZEVucmljaG1lbnQgPSByZXNlcnZlZEVucmljaG1lbnRcclxuICAgICAgICB0aGlzLiNjdXN0b21FbnJpY2htZW50ID0gY3VzdG9tRW5yaWNobWVudFxyXG4gICAgfVxyXG5cclxuICAgIGVucmljaChmaWVsZHM6IG9iamVjdCk6IExvZ2dlciB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBFbnJpY2hpbmdMb2dnZXIodGhpcy4jYnVmZmVyLCB0aGlzLiNsZXZlbCwgdGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50LCB7XHJcbiAgICAgICAgICAgIC4uLih0aGlzLiNjdXN0b21FbnJpY2htZW50ID8/IHt9KSxcclxuICAgICAgICAgICAgLi4uZmllbGRzLFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZmx1c2goKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2J1ZmZlci5mbHVzaCgpXHJcbiAgICB9XHJcblxyXG4gICAgZW5yaWNoUmVzZXJ2ZWQoZmllbGRzOiBvYmplY3QpOiBFbnJpY2hpbmdMb2dnZXIge1xyXG4gICAgICAgIHJldHVybiBuZXcgRW5yaWNoaW5nTG9nZ2VyKFxyXG4gICAgICAgICAgICB0aGlzLiNidWZmZXIsXHJcbiAgICAgICAgICAgIHRoaXMuI2xldmVsLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAuLi4odGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50ID8/IHt9KSxcclxuICAgICAgICAgICAgICAgIC4uLmZpZWxkcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGhpcy4jY3VzdG9tRW5yaWNobWVudCxcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2UobWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy4jbGV2ZWwgPCA1KSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLiNidWZmZXIuY29sbGVjdChcclxuICAgICAgICAgICAgJ3RyYWNlJyxcclxuICAgICAgICAgICAgNSxcclxuICAgICAgICAgICAgbWVzc2FnZSxcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIGZpZWxkcyxcclxuICAgICAgICAgICAgdGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50LFxyXG4gICAgICAgICAgICB0aGlzLiNjdXN0b21FbnJpY2htZW50LFxyXG4gICAgICAgIClcclxuICAgIH1cclxuICAgIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IHVua25vd24sIGZpZWxkczogb2JqZWN0IHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuI2xldmVsIDwgNCkge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy4jYnVmZmVyLmNvbGxlY3QoXHJcbiAgICAgICAgICAgICdkZWJ1ZycsXHJcbiAgICAgICAgICAgIDQsXHJcbiAgICAgICAgICAgIG1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICBmaWVsZHMsXHJcbiAgICAgICAgICAgIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCxcclxuICAgICAgICAgICAgdGhpcy4jY3VzdG9tRW5yaWNobWVudCxcclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IHVua25vd24sIGZpZWxkczogb2JqZWN0IHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuI2xldmVsIDwgMykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy4jYnVmZmVyLmNvbGxlY3QoXHJcbiAgICAgICAgICAgICdkZWJ1ZycsXHJcbiAgICAgICAgICAgIDMsXHJcbiAgICAgICAgICAgIG1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICBmaWVsZHMsXHJcbiAgICAgICAgICAgIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCxcclxuICAgICAgICAgICAgdGhpcy4jY3VzdG9tRW5yaWNobWVudCxcclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IHVua25vd24sIGZpZWxkczogb2JqZWN0IHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuI2xldmVsIDwgMikge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy4jYnVmZmVyLmNvbGxlY3QoXHJcbiAgICAgICAgICAgICdkZWJ1ZycsXHJcbiAgICAgICAgICAgIDIsXHJcbiAgICAgICAgICAgIG1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICBmaWVsZHMsXHJcbiAgICAgICAgICAgIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCxcclxuICAgICAgICAgICAgdGhpcy4jY3VzdG9tRW5yaWNobWVudCxcclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duLCBmaWVsZHM6IG9iamVjdCB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLiNsZXZlbCA8IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuI2J1ZmZlci5jb2xsZWN0KFxyXG4gICAgICAgICAgICAnZXJyb3InLFxyXG4gICAgICAgICAgICAxLFxyXG4gICAgICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgZmllbGRzLFxyXG4gICAgICAgICAgICB0aGlzLiNyZXNlcnZlZEVucmljaG1lbnQsXHJcbiAgICAgICAgICAgIHRoaXMuI2N1c3RvbUVucmljaG1lbnQsXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gICAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLiNidWZmZXIuY29sbGVjdChcclxuICAgICAgICAgICAgJ2ZhdGFsJyxcclxuICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgbWVzc2FnZSxcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIGZpZWxkcyxcclxuICAgICAgICAgICAgdGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50LFxyXG4gICAgICAgICAgICB0aGlzLiNjdXN0b21FbnJpY2htZW50LFxyXG4gICAgICAgIClcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZXJyb3JBc0pzb24oZXJyb3I6IHVua25vd24pOiBKc29uIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmIChlcnJvciA9PT0gdW5kZWZpbmVkIHx8IGVycm9yID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxyXG4gICAgICAgICAgICBuYW1lOiBlcnJvci5uYW1lLFxyXG4gICAgICAgICAgICBzdGFjazogZXJyb3Iuc3RhY2ssXHJcbiAgICAgICAgICAgIC4uLihlcnJvciBhcyB1bmtub3duIGFzIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9KSxcclxuICAgICAgICB9IGFzIEpzb25cclxuICAgIH1cclxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLmVycm9yLFxyXG4gICAgICAgIH0gYXMgSnNvblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBtZXNzYWdlOiAoZXJyb3IgYXMgb2JqZWN0IHwgdW5kZWZpbmVkKT8udG9TdHJpbmcoKSxcclxuICAgICAgICBuYW1lOiB0eXBlb2YgZXJyb3IsXHJcbiAgICB9IGFzIEpzb25cclxufVxyXG4iXX0=
@@ -0,0 +1,24 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { HttpHandlerConfiguration } from '../http.js';
3
+ declare type CPU = 'arm' | 'arm64' | 'ia32' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 's390' | 's390x' | 'x32' | 'x64';
4
+ declare type CpuConfig = CPU | `!${CPU}`;
5
+ declare type OSConfig = NodeJS.Platform | `!${NodeJS.Platform}`;
6
+ export interface PackageJsonConfiguration {
7
+ nodeVersion?: string;
8
+ cpus?: CpuConfig[];
9
+ os?: OSConfig[];
10
+ }
11
+ export interface Reflection {
12
+ name: string;
13
+ http: {
14
+ name: string;
15
+ method: string;
16
+ pathPattern: string;
17
+ pathRegExp: RegExp;
18
+ config: HttpHandlerConfiguration & PackageJsonConfiguration;
19
+ }[];
20
+ }
21
+ export declare function resolveCpu(config: PackageJsonConfiguration, supported: CPU[]): CPU;
22
+ export declare function resolveOS(config: PackageJsonConfiguration, supported: NodeJS.Platform[]): NodeJS.Platform;
23
+ export declare function reflect(path: string): Promise<Reflection>;
24
+ export {};
@@ -0,0 +1,57 @@
1
+ import { readdir, readFile } from 'node:fs/promises';
2
+ import { basename, extname, join } from 'node:path';
3
+ import { pathToFileURL } from 'node:url';
4
+ export function resolveCpu(config, supported) {
5
+ const resolved = resolve(config.cpus, supported);
6
+ if (!resolved) {
7
+ // resolve<T>(config, supported) actually asserts config is (T | `!${T}`)[], but that's not supported yet.
8
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
9
+ throw new Error('Unsupported CPUs: ' + config.cpus.join(', '));
10
+ }
11
+ return resolved;
12
+ }
13
+ export function resolveOS(config, supported) {
14
+ const resolved = resolve(config.os, supported);
15
+ if (!resolved) {
16
+ // resolve<T>(config, supported) actually asserts config is (T | `!${T}`)[], but that's not supported yet.
17
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
18
+ throw new Error('Unsupported operating systems: ' + config.os.join(', '));
19
+ }
20
+ return resolved;
21
+ }
22
+ function resolve(config, supported) {
23
+ if (!config) {
24
+ return supported[0];
25
+ }
26
+ return supported.find(s => config.includes(s) && !config.includes(`!${s}`));
27
+ }
28
+ export async function reflect(path) {
29
+ const packageJson = await readConfig();
30
+ const files = (await readdir(path)).filter(file => extname(file) === '.ts' && !file.endsWith('.d.ts'));
31
+ const { getHandlers, setMeta } = (await import(pathToFileURL(join(process.cwd(), 'node_modules/@riddance/host/host/registry.js')).toString()));
32
+ for (const file of files) {
33
+ const base = basename(file, '.ts');
34
+ setMeta(packageJson.name, base, undefined, packageJson.config);
35
+ await import(pathToFileURL(join(process.cwd(), path, base + '.js')).toString());
36
+ }
37
+ return {
38
+ name: packageJson.name,
39
+ http: getHandlers('http').map(h => ({
40
+ config: {
41
+ ...h.config,
42
+ cpus: packageJson.cpu,
43
+ os: packageJson.os,
44
+ nodeVersion: packageJson.engines?.node,
45
+ },
46
+ name: h.meta?.fileName ?? '',
47
+ method: h.method,
48
+ pathPattern: h.pathPattern,
49
+ pathRegExp: h.pathRegExp,
50
+ })),
51
+ };
52
+ }
53
+ async function readConfig() {
54
+ const packageJson = JSON.parse(await readFile('package.json', 'utf-8'));
55
+ return packageJson;
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlZmxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQW9DeEMsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFnQyxFQUFFLFNBQWdCO0lBQ3pFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ2hELElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDWCwwR0FBMEc7UUFDMUcsb0VBQW9FO1FBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtLQUNsRTtJQUNELE9BQU8sUUFBUSxDQUFBO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUNyQixNQUFnQyxFQUNoQyxTQUE0QjtJQUU1QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUM5QyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ1gsMEdBQTBHO1FBQzFHLG9FQUFvRTtRQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxHQUFHLE1BQU0sQ0FBQyxFQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7S0FDN0U7SUFDRCxPQUFPLFFBQVEsQ0FBQTtBQUNuQixDQUFDO0FBRUQsU0FBUyxPQUFPLENBQ1osTUFBbUMsRUFDbkMsU0FBYztJQUVkLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDVCxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUN0QjtJQUNELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQy9FLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxJQUFZO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUE7SUFDdEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FDN0QsQ0FBQTtJQUNELE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FDMUMsYUFBYSxDQUNULElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsOENBQThDLENBQUMsQ0FDdEUsQ0FBQyxRQUFRLEVBQUUsQ0FDZixDQWVBLENBQUE7SUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtRQUN0QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzlELE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0tBQ2xGO0lBRUQsT0FBTztRQUNILElBQUksRUFBRSxXQUFXLENBQUMsSUFBSTtRQUN0QixJQUFJLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEMsTUFBTSxFQUFFO2dCQUNKLEdBQUcsQ0FBQyxDQUFDLE1BQU07Z0JBQ1gsSUFBSSxFQUFFLFdBQVcsQ0FBQyxHQUFHO2dCQUNyQixFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUU7Z0JBQ2xCLFdBQVcsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUk7YUFDekM7WUFDRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksRUFBRTtZQUM1QixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07WUFDaEIsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXO1lBQzFCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtTQUMzQixDQUFDLENBQUM7S0FDTixDQUFBO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxVQUFVO0lBQ3JCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQU1yRSxDQUFBO0lBQ0QsT0FBTyxXQUFXLENBQUE7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRkaXIsIHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcclxuaW1wb3J0IHsgYmFzZW5hbWUsIGV4dG5hbWUsIGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXHJcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCdcclxuaW1wb3J0IHsgSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vaHR0cC5qcydcclxuaW1wb3J0IHsgUGFja2FnZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3JlZ2lzdHJ5LmpzJ1xyXG5cclxudHlwZSBDUFUgPVxyXG4gICAgfCAnYXJtJ1xyXG4gICAgfCAnYXJtNjQnXHJcbiAgICB8ICdpYTMyJ1xyXG4gICAgfCAnbWlwcydcclxuICAgIHwgJ21pcHNlbCdcclxuICAgIHwgJ3BwYydcclxuICAgIHwgJ3BwYzY0J1xyXG4gICAgfCAnczM5MCdcclxuICAgIHwgJ3MzOTB4J1xyXG4gICAgfCAneDMyJ1xyXG4gICAgfCAneDY0J1xyXG50eXBlIENwdUNvbmZpZyA9IENQVSB8IGAhJHtDUFV9YFxyXG50eXBlIE9TQ29uZmlnID0gTm9kZUpTLlBsYXRmb3JtIHwgYCEke05vZGVKUy5QbGF0Zm9ybX1gXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VKc29uQ29uZmlndXJhdGlvbiB7XHJcbiAgICBub2RlVmVyc2lvbj86IHN0cmluZ1xyXG4gICAgY3B1cz86IENwdUNvbmZpZ1tdXHJcbiAgICBvcz86IE9TQ29uZmlnW11cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWZsZWN0aW9uIHtcclxuICAgIG5hbWU6IHN0cmluZ1xyXG4gICAgaHR0cDoge1xyXG4gICAgICAgIG5hbWU6IHN0cmluZ1xyXG4gICAgICAgIG1ldGhvZDogc3RyaW5nXHJcbiAgICAgICAgcGF0aFBhdHRlcm46IHN0cmluZ1xyXG4gICAgICAgIHBhdGhSZWdFeHA6IFJlZ0V4cFxyXG4gICAgICAgIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uICYgUGFja2FnZUpzb25Db25maWd1cmF0aW9uXHJcbiAgICB9W11cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDcHUoY29uZmlnOiBQYWNrYWdlSnNvbkNvbmZpZ3VyYXRpb24sIHN1cHBvcnRlZDogQ1BVW10pOiBDUFUge1xyXG4gICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlKGNvbmZpZy5jcHVzLCBzdXBwb3J0ZWQpXHJcbiAgICBpZiAoIXJlc29sdmVkKSB7XHJcbiAgICAgICAgLy8gcmVzb2x2ZTxUPihjb25maWcsIHN1cHBvcnRlZCkgYWN0dWFsbHkgYXNzZXJ0cyBjb25maWcgaXMgKFQgfCBgISR7VH1gKVtdLCBidXQgdGhhdCdzIG5vdCBzdXBwb3J0ZWQgeWV0LlxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBDUFVzOiAnICsgY29uZmlnLmNwdXMhLmpvaW4oJywgJykpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzb2x2ZWRcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVPUyhcclxuICAgIGNvbmZpZzogUGFja2FnZUpzb25Db25maWd1cmF0aW9uLFxyXG4gICAgc3VwcG9ydGVkOiBOb2RlSlMuUGxhdGZvcm1bXSxcclxuKTogTm9kZUpTLlBsYXRmb3JtIHtcclxuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZShjb25maWcub3MsIHN1cHBvcnRlZClcclxuICAgIGlmICghcmVzb2x2ZWQpIHtcclxuICAgICAgICAvLyByZXNvbHZlPFQ+KGNvbmZpZywgc3VwcG9ydGVkKSBhY3R1YWxseSBhc3NlcnRzIGNvbmZpZyBpcyAoVCB8IGAhJHtUfWApW10sIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCB5ZXQuXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zOiAnICsgY29uZmlnLm9zIS5qb2luKCcsICcpKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc29sdmVkXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlc29sdmU8VCBleHRlbmRzIHN0cmluZz4oXHJcbiAgICBjb25maWc6IChUIHwgYCEke1R9YClbXSB8IHVuZGVmaW5lZCxcclxuICAgIHN1cHBvcnRlZDogVFtdLFxyXG4pOiBUIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghY29uZmlnKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cHBvcnRlZFswXVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1cHBvcnRlZC5maW5kKHMgPT4gY29uZmlnLmluY2x1ZGVzKHMpICYmICFjb25maWcuaW5jbHVkZXMoYCEke3N9YCkpXHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWZsZWN0KHBhdGg6IHN0cmluZyk6IFByb21pc2U8UmVmbGVjdGlvbj4ge1xyXG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCByZWFkQ29uZmlnKClcclxuICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IHJlYWRkaXIocGF0aCkpLmZpbHRlcihcclxuICAgICAgICBmaWxlID0+IGV4dG5hbWUoZmlsZSkgPT09ICcudHMnICYmICFmaWxlLmVuZHNXaXRoKCcuZC50cycpLFxyXG4gICAgKVxyXG4gICAgY29uc3QgeyBnZXRIYW5kbGVycywgc2V0TWV0YSB9ID0gKGF3YWl0IGltcG9ydChcclxuICAgICAgICBwYXRoVG9GaWxlVVJMKFxyXG4gICAgICAgICAgICBqb2luKHByb2Nlc3MuY3dkKCksICdub2RlX21vZHVsZXMvQHJpZGRhbmNlL2hvc3QvaG9zdC9yZWdpc3RyeS5qcycpLFxyXG4gICAgICAgICkudG9TdHJpbmcoKVxyXG4gICAgKSkgYXMge1xyXG4gICAgICAgIGdldEhhbmRsZXJzOiAodHlwZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZ1xyXG4gICAgICAgICAgICBtZXRhPzogeyBmaWxlTmFtZTogc3RyaW5nIH1cclxuICAgICAgICAgICAgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb25cclxuICAgICAgICAgICAgbWV0aG9kOiBzdHJpbmdcclxuICAgICAgICAgICAgcGF0aFBhdHRlcm46IHN0cmluZ1xyXG4gICAgICAgICAgICBwYXRoUmVnRXhwOiBSZWdFeHBcclxuICAgICAgICB9W11cclxuICAgICAgICBzZXRNZXRhOiAoXHJcbiAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgICAgIHJldjogc3RyaW5nIHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBjZmc6IFBhY2thZ2VDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICkgPT4gdm9pZFxyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSBiYXNlbmFtZShmaWxlLCAnLnRzJylcclxuICAgICAgICBzZXRNZXRhKHBhY2thZ2VKc29uLm5hbWUsIGJhc2UsIHVuZGVmaW5lZCwgcGFja2FnZUpzb24uY29uZmlnKVxyXG4gICAgICAgIGF3YWl0IGltcG9ydChwYXRoVG9GaWxlVVJMKGpvaW4ocHJvY2Vzcy5jd2QoKSwgcGF0aCwgYmFzZSArICcuanMnKSkudG9TdHJpbmcoKSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IHBhY2thZ2VKc29uLm5hbWUsXHJcbiAgICAgICAgaHR0cDogZ2V0SGFuZGxlcnMoJ2h0dHAnKS5tYXAoaCA9PiAoe1xyXG4gICAgICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgICAgIC4uLmguY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgY3B1czogcGFja2FnZUpzb24uY3B1LFxyXG4gICAgICAgICAgICAgICAgb3M6IHBhY2thZ2VKc29uLm9zLFxyXG4gICAgICAgICAgICAgICAgbm9kZVZlcnNpb246IHBhY2thZ2VKc29uLmVuZ2luZXM/Lm5vZGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5hbWU6IGgubWV0YT8uZmlsZU5hbWUgPz8gJycsXHJcbiAgICAgICAgICAgIG1ldGhvZDogaC5tZXRob2QsXHJcbiAgICAgICAgICAgIHBhdGhQYXR0ZXJuOiBoLnBhdGhQYXR0ZXJuLFxyXG4gICAgICAgICAgICBwYXRoUmVnRXhwOiBoLnBhdGhSZWdFeHAsXHJcbiAgICAgICAgfSkpLFxyXG4gICAgfVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiByZWFkQ29uZmlnKCkge1xyXG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKCdwYWNrYWdlLmpzb24nLCAndXRmLTgnKSkgYXMge1xyXG4gICAgICAgIG5hbWU6IHN0cmluZ1xyXG4gICAgICAgIGVuZ2luZXM/OiB7IFtlbmdpbmU6IHN0cmluZ106IHN0cmluZyB9XHJcbiAgICAgICAgY3B1PzogQ3B1Q29uZmlnW11cclxuICAgICAgICBvcz86IE9TQ29uZmlnW11cclxuICAgICAgICBjb25maWc/OiBvYmplY3RcclxuICAgIH1cclxuICAgIHJldHVybiBwYWNrYWdlSnNvblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { HandlerConfiguration } from '../context.js';
2
+ import { Handler } from '../http.js';
3
+ export interface HttpHandler {
4
+ meta: Metadata | undefined;
5
+ config: (PackageConfiguration & HandlerConfiguration) | undefined;
6
+ method: Method;
7
+ pathPattern: string;
8
+ pathRegExp: RegExp;
9
+ entry: Handler;
10
+ }
11
+ interface HandlerTypes {
12
+ http: HttpHandler;
13
+ }
14
+ export declare function getHandlers(type: keyof HandlerTypes): HttpHandler[];
15
+ export declare function setMeta(packageName: string, fileName: string, revision: string | undefined, config: PackageConfiguration | undefined): void;
16
+ export interface PackageConfiguration extends HandlerConfiguration {
17
+ }
18
+ export interface Metadata {
19
+ packageName: string;
20
+ fileName: string;
21
+ revision: string | undefined;
22
+ config?: PackageConfiguration;
23
+ }
24
+ export declare type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
25
+ export declare function registerHttpHandler(method: Method, path: string, configOrHandler: HandlerConfiguration | Handler, fn?: Handler): void;
26
+ export {};