@riddance/host 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/context.d.ts +86 -86
- package/context.js +52 -52
- package/host/context.d.ts +51 -50
- package/host/context.js +90 -90
- package/host/emitter.d.ts +13 -13
- package/host/emitter.js +67 -67
- package/host/http.d.ts +30 -30
- package/host/http.js +212 -211
- package/host/logging.d.ts +4 -4
- package/host/logging.js +191 -191
- package/host/reflect.d.ts +24 -24
- package/host/reflect.js +57 -57
- package/host/registry.d.ts +27 -26
- package/host/registry.js +73 -72
- package/http.d.ts +39 -39
- package/http.js +17 -17
- package/package.json +9 -6
package/host/registry.d.ts
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import { HandlerConfiguration } from '../context.js';
|
|
2
|
-
import { Handler } from '../http.js';
|
|
3
|
-
export type HttpHandler = {
|
|
4
|
-
meta: Metadata | undefined;
|
|
5
|
-
config:
|
|
6
|
-
method: Method;
|
|
7
|
-
pathPattern: string;
|
|
8
|
-
pathRegExp: RegExp;
|
|
9
|
-
entry: Handler;
|
|
10
|
-
};
|
|
11
|
-
type HandlerTypes = {
|
|
12
|
-
http: HttpHandler;
|
|
13
|
-
};
|
|
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
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
export
|
|
26
|
-
export
|
|
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
|
+
};
|
|
11
|
+
type HandlerTypes = {
|
|
12
|
+
http: HttpHandler;
|
|
13
|
+
};
|
|
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 {};
|
package/host/registry.js
CHANGED
|
@@ -1,72 +1,73 @@
|
|
|
1
|
-
const handlers = {};
|
|
2
|
-
function addHandler(type, handler) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
1
|
+
const handlers = {};
|
|
2
|
+
function addHandler(type, handler) {
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
4
|
+
;
|
|
5
|
+
(handlers[type] ??= []).push(handler);
|
|
6
|
+
}
|
|
7
|
+
export function getHandlers(type) {
|
|
8
|
+
return (handlers[type] ?? []);
|
|
9
|
+
}
|
|
10
|
+
export function getHandler(type) {
|
|
11
|
+
const hs = getHandlers(type);
|
|
12
|
+
const [handler] = hs;
|
|
13
|
+
if (!handler) {
|
|
14
|
+
throw new Error(`No ${type} handler registered.`);
|
|
15
|
+
}
|
|
16
|
+
if (hs.length !== 1) {
|
|
17
|
+
throw new Error(`Multiple ${type} handlers registered.`);
|
|
18
|
+
}
|
|
19
|
+
return handler;
|
|
20
|
+
}
|
|
21
|
+
let httpHostRegistry;
|
|
22
|
+
function setHttpHost(host) {
|
|
23
|
+
httpHostRegistry = host;
|
|
24
|
+
}
|
|
25
|
+
let metadata;
|
|
26
|
+
export function setMeta(packageName, fileName, revision, config) {
|
|
27
|
+
metadata = {
|
|
28
|
+
packageName,
|
|
29
|
+
fileName,
|
|
30
|
+
revision,
|
|
31
|
+
config,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function getMetadata() {
|
|
35
|
+
return metadata;
|
|
36
|
+
}
|
|
37
|
+
function pathToRegExp(path) {
|
|
38
|
+
return new RegExp(('^' +
|
|
39
|
+
path.replace(/[/\\^$+?.()|[\]{}]/gu, '\\$&').replaceAll('*', '[^/\\?]+') +
|
|
40
|
+
'(\\?.*)?$').replace('[^/\\?]+[^/\\?]+(\\?.*)?$', ''), 'u');
|
|
41
|
+
}
|
|
42
|
+
function combineConfig(base, override) {
|
|
43
|
+
if (base === undefined) {
|
|
44
|
+
return override;
|
|
45
|
+
}
|
|
46
|
+
else if (override === undefined) {
|
|
47
|
+
return base;
|
|
48
|
+
}
|
|
49
|
+
return { ...base, ...override };
|
|
50
|
+
}
|
|
51
|
+
function httpHost(meta, cfg, method, path, entry) {
|
|
52
|
+
addHandler('http', {
|
|
53
|
+
meta,
|
|
54
|
+
config: combineConfig(meta?.config, cfg),
|
|
55
|
+
method,
|
|
56
|
+
pathPattern: path,
|
|
57
|
+
pathRegExp: pathToRegExp(path),
|
|
58
|
+
entry,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
setHttpHost(httpHost);
|
|
62
|
+
export function registerHttpHandler(method, path, configOrHandler, fn) {
|
|
63
|
+
if (typeof configOrHandler === 'function') {
|
|
64
|
+
httpHostRegistry(getMetadata(), undefined, method, path, configOrHandler);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
if (!fn) {
|
|
68
|
+
throw new Error('Please provide a handler function.');
|
|
69
|
+
}
|
|
70
|
+
httpHostRegistry(getMetadata(), configOrHandler, method, path, fn);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsTUFBTSxRQUFRLEdBQWlDLEVBQUUsQ0FBQTtBQUVqRCxTQUFTLFVBQVUsQ0FBQyxJQUF3QixFQUFFLE9BQW9CO0lBQzlELHVFQUF1RTtJQUN2RSxDQUFDO0lBQUEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQXdCO0lBQ2hELE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFrQixDQUFBO0FBQ2xELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQXdCO0lBQy9DLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxzQkFBc0IsQ0FBQyxDQUFBO0tBQ3BEO0lBQ0QsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSx1QkFBdUIsQ0FBQyxDQUFBO0tBQzNEO0lBQ0QsT0FBTyxPQUFPLENBQUE7QUFDbEIsQ0FBQztBQVVELElBQUksZ0JBQTBCLENBQUE7QUFFOUIsU0FBUyxXQUFXLENBQUMsSUFBYztJQUMvQixnQkFBZ0IsR0FBRyxJQUFJLENBQUE7QUFDM0IsQ0FBQztBQUVELElBQUksUUFBOEIsQ0FBQTtBQUVsQyxNQUFNLFVBQVUsT0FBTyxDQUNuQixXQUFtQixFQUNuQixRQUFnQixFQUNoQixRQUE0QixFQUM1QixNQUF3QztJQUV4QyxRQUFRLEdBQUc7UUFDUCxXQUFXO1FBQ1gsUUFBUTtRQUNSLFFBQVE7UUFDUixNQUFNO0tBQ1QsQ0FBQTtBQUNMLENBQUM7QUFpQkQsU0FBUyxXQUFXO0lBQ2hCLE9BQU8sUUFBUSxDQUFBO0FBQ25CLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFZO0lBQzlCLE9BQU8sSUFBSSxNQUFNLENBQ2IsQ0FDSSxHQUFHO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQztRQUN4RSxXQUFXLENBQ2QsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxDQUFDLEVBQzFDLEdBQUcsQ0FDTixDQUFBO0FBQ0wsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNsQixJQUFzQyxFQUN0QyxRQUEwQztJQUcxQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDcEIsT0FBTyxRQUFRLENBQUE7S0FDbEI7U0FBTSxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7UUFDL0IsT0FBTyxJQUFJLENBQUE7S0FDZDtJQUNELE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFBO0FBQ25DLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FDYixJQUEwQixFQUMxQixHQUFxQyxFQUNyQyxNQUFjLEVBQ2QsSUFBWSxFQUNaLEtBQWM7SUFFZCxVQUFVLENBQUMsTUFBTSxFQUFFO1FBQ2YsSUFBSTtRQUNKLE1BQU0sRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFDeEMsTUFBTTtRQUNOLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFVBQVUsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQzlCLEtBQUs7S0FDUixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBSXJCLE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsTUFBYyxFQUNkLElBQVksRUFDWixlQUErQyxFQUMvQyxFQUFZO0lBRVosSUFBSSxPQUFPLGVBQWUsS0FBSyxVQUFVLEVBQUU7UUFDdkMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUE7S0FDNUU7U0FBTTtRQUNILElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7U0FDeEQ7UUFDRCxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtLQUNyRTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYW5kbGVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBIYW5kbGVyIH0gZnJvbSAnLi4vaHR0cC5qcydcblxuZXhwb3J0IHR5cGUgSHR0cEhhbmRsZXIgPSB7XG4gICAgbWV0YTogTWV0YWRhdGEgfCB1bmRlZmluZWRcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR1cGxpY2F0ZS10eXBlLWNvbnN0aXR1ZW50c1xuICAgIGNvbmZpZzogRnVsbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWRcbiAgICBtZXRob2Q6IE1ldGhvZFxuICAgIHBhdGhQYXR0ZXJuOiBzdHJpbmdcbiAgICBwYXRoUmVnRXhwOiBSZWdFeHBcbiAgICBlbnRyeTogSGFuZGxlclxufVxuXG50eXBlIEhhbmRsZXJUeXBlcyA9IHtcbiAgICBodHRwOiBIdHRwSGFuZGxlclxufVxuXG5jb25zdCBoYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiB1bmtub3duW10gfSA9IHt9XG5cbmZ1bmN0aW9uIGFkZEhhbmRsZXIodHlwZToga2V5b2YgSGFuZGxlclR5cGVzLCBoYW5kbGVyOiBIdHRwSGFuZGxlcikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgOyhoYW5kbGVyc1t0eXBlXSA/Pz0gW10pLnB1c2goaGFuZGxlcilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbmRsZXJzKHR5cGU6IGtleW9mIEhhbmRsZXJUeXBlcykge1xuICAgIHJldHVybiAoaGFuZGxlcnNbdHlwZV0gPz8gW10pIGFzIEh0dHBIYW5kbGVyW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbmRsZXIodHlwZToga2V5b2YgSGFuZGxlclR5cGVzKSB7XG4gICAgY29uc3QgaHMgPSBnZXRIYW5kbGVycyh0eXBlKVxuICAgIGNvbnN0IFtoYW5kbGVyXSA9IGhzXG4gICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gJHt0eXBlfSBoYW5kbGVyIHJlZ2lzdGVyZWQuYClcbiAgICB9XG4gICAgaWYgKGhzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE11bHRpcGxlICR7dHlwZX0gaGFuZGxlcnMgcmVnaXN0ZXJlZC5gKVxuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlclxufVxuXG50eXBlIEh0dHBIb3N0ID0gKFxuICAgIG1ldGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIGNvbmZpZzogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgbWV0aG9kOiBNZXRob2QsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGhhbmRsZXI6IEhhbmRsZXIsXG4pID0+IHZvaWRcblxubGV0IGh0dHBIb3N0UmVnaXN0cnk6IEh0dHBIb3N0XG5cbmZ1bmN0aW9uIHNldEh0dHBIb3N0KGhvc3Q6IEh0dHBIb3N0KSB7XG4gICAgaHR0cEhvc3RSZWdpc3RyeSA9IGhvc3Rcbn1cblxubGV0IG1ldGFkYXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZFxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TWV0YShcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgcmV2aXNpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBjb25maWc6IFBhY2thZ2VDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuKSB7XG4gICAgbWV0YWRhdGEgPSB7XG4gICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgcmV2aXNpb24sXG4gICAgICAgIGNvbmZpZyxcbiAgICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgdHlwZSBQYWNrYWdlQ29uZmlndXJhdGlvbiA9IEhhbmRsZXJDb25maWd1cmF0aW9uICYge1xuICAgIC8vIFBsYWNlaG9sZGVyIGZvciBwYWNrYWdlLWxldmVsIGNvbmZpZ3VyYXRpb25zXG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHVwbGljYXRlLXR5cGUtY29uc3RpdHVlbnRzXG5leHBvcnQgdHlwZSBGdWxsQ29uZmlndXJhdGlvbiA9IFBhY2thZ2VDb25maWd1cmF0aW9uICYgSGFuZGxlckNvbmZpZ3VyYXRpb25cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gICAgcGFja2FnZU5hbWU6IHN0cmluZ1xuICAgIGZpbGVOYW1lOiBzdHJpbmdcbiAgICByZXZpc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgY29uZmlnPzogUGFja2FnZUNvbmZpZ3VyYXRpb25cbn1cblxuZnVuY3Rpb24gZ2V0TWV0YWRhdGEoKSB7XG4gICAgcmV0dXJuIG1ldGFkYXRhXG59XG5cbmZ1bmN0aW9uIHBhdGhUb1JlZ0V4cChwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICAgICAgKFxuICAgICAgICAgICAgJ14nICtcbiAgICAgICAgICAgIHBhdGgucmVwbGFjZSgvWy9cXFxcXiQrPy4oKXxbXFxde31dL2d1LCAnXFxcXCQmJykucmVwbGFjZUFsbCgnKicsICdbXi9cXFxcP10rJykgK1xuICAgICAgICAgICAgJyhcXFxcPy4qKT8kJ1xuICAgICAgICApLnJlcGxhY2UoJ1teL1xcXFw/XStbXi9cXFxcP10rKFxcXFw/LiopPyQnLCAnJyksXG4gICAgICAgICd1JyxcbiAgICApXG59XG5cbmZ1bmN0aW9uIGNvbWJpbmVDb25maWcoXG4gICAgYmFzZTogUGFja2FnZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgb3ZlcnJpZGU6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHVwbGljYXRlLXR5cGUtY29uc3RpdHVlbnRzXG4pOiBGdWxsQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGJhc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gb3ZlcnJpZGVcbiAgICB9IGVsc2UgaWYgKG92ZXJyaWRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VcbiAgICB9XG4gICAgcmV0dXJuIHsgLi4uYmFzZSwgLi4ub3ZlcnJpZGUgfVxufVxuXG5mdW5jdGlvbiBodHRwSG9zdChcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZCxcbiAgICBjZmc6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgIG1ldGhvZDogTWV0aG9kLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBlbnRyeTogSGFuZGxlcixcbikge1xuICAgIGFkZEhhbmRsZXIoJ2h0dHAnLCB7XG4gICAgICAgIG1ldGEsXG4gICAgICAgIGNvbmZpZzogY29tYmluZUNvbmZpZyhtZXRhPy5jb25maWcsIGNmZyksXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgcGF0aFBhdHRlcm46IHBhdGgsXG4gICAgICAgIHBhdGhSZWdFeHA6IHBhdGhUb1JlZ0V4cChwYXRoKSxcbiAgICAgICAgZW50cnksXG4gICAgfSlcbn1cblxuc2V0SHR0cEhvc3QoaHR0cEhvc3QpXG5cbmV4cG9ydCB0eXBlIE1ldGhvZCA9ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnUEFUQ0gnIHwgJ0RFTEVURSdcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVySHR0cEhhbmRsZXIoXG4gICAgbWV0aG9kOiBNZXRob2QsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGNvbmZpZ09ySGFuZGxlcjogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgY29uZmlnT3JIYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGh0dHBIb3N0UmVnaXN0cnkoZ2V0TWV0YWRhdGEoKSwgdW5kZWZpbmVkLCBtZXRob2QsIHBhdGgsIGNvbmZpZ09ySGFuZGxlcilcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIWZuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBwcm92aWRlIGEgaGFuZGxlciBmdW5jdGlvbi4nKVxuICAgICAgICB9XG4gICAgICAgIGh0dHBIb3N0UmVnaXN0cnkoZ2V0TWV0YWRhdGEoKSwgY29uZmlnT3JIYW5kbGVyLCBtZXRob2QsIHBhdGgsIGZuKVxuICAgIH1cbn1cbiJdfQ==
|
package/http.d.ts
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import type { UrlWithParsedQuery } from 'node:url';
|
|
3
|
-
import { Context, HandlerConfiguration, Json } from './context.js';
|
|
4
|
-
export * from './context.js';
|
|
5
|
-
export type ResponseHeaders = {
|
|
6
|
-
[key: string]: string;
|
|
7
|
-
};
|
|
8
|
-
export type FullResult = {
|
|
9
|
-
headers?: ResponseHeaders;
|
|
10
|
-
status?: number;
|
|
11
|
-
body?: unknown;
|
|
12
|
-
};
|
|
13
|
-
export type Result = void | string | FullResult;
|
|
14
|
-
export type HttpRequest = {
|
|
15
|
-
readonly rawUrl: string;
|
|
16
|
-
readonly url: Readonly<UrlWithParsedQuery> & {
|
|
17
|
-
pathStepAt: (index: number) => string;
|
|
18
|
-
};
|
|
19
|
-
readonly headers: Readonly<ResponseHeaders>;
|
|
20
|
-
readonly body?: Json | string;
|
|
21
|
-
};
|
|
22
|
-
export type HttpHandlerConfiguration = HandlerConfiguration & {
|
|
23
|
-
/**
|
|
24
|
-
* A string identifying which domains can access the endpoint cross-origin.
|
|
25
|
-
* @default undefined
|
|
26
|
-
*/
|
|
27
|
-
readonly cors?: string;
|
|
28
|
-
};
|
|
29
|
-
export type Handler = (context: Context, request: HttpRequest) => Promise<Result> | Result;
|
|
30
|
-
export declare function get(path: string, fn: Handler): void;
|
|
31
|
-
export declare function get(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
|
32
|
-
export declare function post(path: string, fn: Handler): void;
|
|
33
|
-
export declare function post(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
|
34
|
-
export declare function put(path: string, fn: Handler): void;
|
|
35
|
-
export declare function put(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
|
36
|
-
export declare function patch(path: string, fn: Handler): void;
|
|
37
|
-
export declare function patch(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
|
38
|
-
export declare function del(path: string, fn: Handler): void;
|
|
39
|
-
export declare function del(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import type { UrlWithParsedQuery } from 'node:url';
|
|
3
|
+
import { Context, HandlerConfiguration, Json } from './context.js';
|
|
4
|
+
export * from './context.js';
|
|
5
|
+
export type ResponseHeaders = {
|
|
6
|
+
[key: string]: string;
|
|
7
|
+
};
|
|
8
|
+
export type FullResult = {
|
|
9
|
+
headers?: ResponseHeaders;
|
|
10
|
+
status?: number;
|
|
11
|
+
body?: unknown;
|
|
12
|
+
};
|
|
13
|
+
export type Result = void | string | FullResult;
|
|
14
|
+
export type HttpRequest = {
|
|
15
|
+
readonly rawUrl: string;
|
|
16
|
+
readonly url: Readonly<UrlWithParsedQuery> & {
|
|
17
|
+
pathStepAt: (index: number) => string;
|
|
18
|
+
};
|
|
19
|
+
readonly headers: Readonly<ResponseHeaders>;
|
|
20
|
+
readonly body?: Json | string;
|
|
21
|
+
};
|
|
22
|
+
export type HttpHandlerConfiguration = HandlerConfiguration & {
|
|
23
|
+
/**
|
|
24
|
+
* A string identifying which domains can access the endpoint cross-origin.
|
|
25
|
+
* @default undefined
|
|
26
|
+
*/
|
|
27
|
+
readonly cors?: string;
|
|
28
|
+
};
|
|
29
|
+
export type Handler = (context: Context, request: HttpRequest) => Promise<Result> | Result;
|
|
30
|
+
export declare function get(path: string, fn: Handler): void;
|
|
31
|
+
export declare function get(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
|
32
|
+
export declare function post(path: string, fn: Handler): void;
|
|
33
|
+
export declare function post(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
|
34
|
+
export declare function put(path: string, fn: Handler): void;
|
|
35
|
+
export declare function put(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
|
36
|
+
export declare function patch(path: string, fn: Handler): void;
|
|
37
|
+
export declare function patch(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
|
38
|
+
export declare function del(path: string, fn: Handler): void;
|
|
39
|
+
export declare function del(path: string, config: HttpHandlerConfiguration, fn: Handler): void;
|
package/http.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { registerHttpHandler } from './host/registry.js';
|
|
2
|
-
export * from './context.js';
|
|
3
|
-
export function get(path, configOrHandler, fn) {
|
|
4
|
-
registerHttpHandler('GET', path, configOrHandler, fn);
|
|
5
|
-
}
|
|
6
|
-
export function post(path, configOrHandler, fn) {
|
|
7
|
-
registerHttpHandler('POST', path, configOrHandler, fn);
|
|
8
|
-
}
|
|
9
|
-
export function put(path, configOrHandler, fn) {
|
|
10
|
-
registerHttpHandler('PUT', path, configOrHandler, fn);
|
|
11
|
-
}
|
|
12
|
-
export function patch(path, configOrHandler, fn) {
|
|
13
|
-
registerHttpHandler('PATCH', path, configOrHandler, fn);
|
|
14
|
-
}
|
|
15
|
-
export function del(path, configOrHandler, fn) {
|
|
16
|
-
registerHttpHandler('DELETE', path, configOrHandler, fn);
|
|
17
|
-
}
|
|
1
|
+
import { registerHttpHandler } from './host/registry.js';
|
|
2
|
+
export * from './context.js';
|
|
3
|
+
export function get(path, configOrHandler, fn) {
|
|
4
|
+
registerHttpHandler('GET', path, configOrHandler, fn);
|
|
5
|
+
}
|
|
6
|
+
export function post(path, configOrHandler, fn) {
|
|
7
|
+
registerHttpHandler('POST', path, configOrHandler, fn);
|
|
8
|
+
}
|
|
9
|
+
export function put(path, configOrHandler, fn) {
|
|
10
|
+
registerHttpHandler('PUT', path, configOrHandler, fn);
|
|
11
|
+
}
|
|
12
|
+
export function patch(path, configOrHandler, fn) {
|
|
13
|
+
registerHttpHandler('PATCH', path, configOrHandler, fn);
|
|
14
|
+
}
|
|
15
|
+
export function del(path, configOrHandler, fn) {
|
|
16
|
+
registerHttpHandler('DELETE', path, configOrHandler, fn);
|
|
17
|
+
}
|
|
18
18
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFeEQsY0FBYyxjQUFjLENBQUE7QUFpQzVCLE1BQU0sVUFBVSxHQUFHLENBQ2YsSUFBWSxFQUNaLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN6RCxDQUFDO0FBR0QsTUFBTSxVQUFVLElBQUksQ0FDaEIsSUFBWSxFQUNaLGVBQW1ELEVBQ25ELEVBQVk7SUFFWixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUMxRCxDQUFDO0FBR0QsTUFBTSxVQUFVLEdBQUcsQ0FDZixJQUFZLEVBQ1osZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3pELENBQUM7QUFHRCxNQUFNLFVBQVUsS0FBSyxDQUNqQixJQUFZLEVBQ1osZUFBbUQsRUFDbkQsRUFBWTtJQUVaLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQzNELENBQUM7QUFHRCxNQUFNLFVBQVUsR0FBRyxDQUNmLElBQVksRUFDWixlQUFtRCxFQUNuRCxFQUFZO0lBRVosbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVXJsV2l0aFBhcnNlZFF1ZXJ5IH0gZnJvbSAnbm9kZTp1cmwnXG5pbXBvcnQgeyBDb250ZXh0LCBIYW5kbGVyQ29uZmlndXJhdGlvbiwgSnNvbiB9IGZyb20gJy4vY29udGV4dC5qcydcbmltcG9ydCB7IHJlZ2lzdGVySHR0cEhhbmRsZXIgfSBmcm9tICcuL2hvc3QvcmVnaXN0cnkuanMnXG5cbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC5qcydcblxuZXhwb3J0IHR5cGUgUmVzcG9uc2VIZWFkZXJzID0ge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBGdWxsUmVzdWx0ID0ge1xuICAgIGhlYWRlcnM/OiBSZXNwb25zZUhlYWRlcnNcbiAgICBzdGF0dXM/OiBudW1iZXJcbiAgICBib2R5PzogdW5rbm93blxufVxuXG5leHBvcnQgdHlwZSBSZXN1bHQgPSB2b2lkIHwgc3RyaW5nIHwgRnVsbFJlc3VsdFxuXG5leHBvcnQgdHlwZSBIdHRwUmVxdWVzdCA9IHtcbiAgICByZWFkb25seSByYXdVcmw6IHN0cmluZ1xuICAgIHJlYWRvbmx5IHVybDogUmVhZG9ubHk8VXJsV2l0aFBhcnNlZFF1ZXJ5PiAmIHsgcGF0aFN0ZXBBdDogKGluZGV4OiBudW1iZXIpID0+IHN0cmluZyB9XG4gICAgcmVhZG9ubHkgaGVhZGVyczogUmVhZG9ubHk8UmVzcG9uc2VIZWFkZXJzPlxuICAgIHJlYWRvbmx5IGJvZHk/OiBKc29uIHwgc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiA9IEhhbmRsZXJDb25maWd1cmF0aW9uICYge1xuICAgIC8qKlxuICAgICAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHdoaWNoIGRvbWFpbnMgY2FuIGFjY2VzcyB0aGUgZW5kcG9pbnQgY3Jvc3Mtb3JpZ2luLlxuICAgICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvcnM/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgSGFuZGxlciA9IChjb250ZXh0OiBDb250ZXh0LCByZXF1ZXN0OiBIdHRwUmVxdWVzdCkgPT4gUHJvbWlzZTxSZXN1bHQ+IHwgUmVzdWx0XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXQocGF0aDogc3RyaW5nLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBnZXQocGF0aDogc3RyaW5nLCBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiwgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZ2V0KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignR0VUJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbmV4cG9ydCBmdW5jdGlvbiBwb3N0KHBhdGg6IHN0cmluZywgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gcG9zdChwYXRoOiBzdHJpbmcsIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwb3N0KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignUE9TVCcsIHBhdGgsIGNvbmZpZ09ySGFuZGxlciwgZm4pXG59XG5leHBvcnQgZnVuY3Rpb24gcHV0KHBhdGg6IHN0cmluZywgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gcHV0KHBhdGg6IHN0cmluZywgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24sIGZuOiBIYW5kbGVyKTogdm9pZFxuZXhwb3J0IGZ1bmN0aW9uIHB1dChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ1BVVCcsIHBhdGgsIGNvbmZpZ09ySGFuZGxlciwgZm4pXG59XG5leHBvcnQgZnVuY3Rpb24gcGF0Y2gocGF0aDogc3RyaW5nLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwYXRjaChwYXRoOiBzdHJpbmcsIGNvbmZpZzogSHR0cEhhbmRsZXJDb25maWd1cmF0aW9uLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBwYXRjaChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfCBIYW5kbGVyLFxuICAgIGZuPzogSGFuZGxlcixcbik6IHZvaWQge1xuICAgIHJlZ2lzdGVySHR0cEhhbmRsZXIoJ1BBVENIJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZWwocGF0aDogc3RyaW5nLCBmbjogSGFuZGxlcik6IHZvaWRcbmV4cG9ydCBmdW5jdGlvbiBkZWwocGF0aDogc3RyaW5nLCBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiwgZm46IEhhbmRsZXIpOiB2b2lkXG5leHBvcnQgZnVuY3Rpb24gZGVsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBjb25maWdPckhhbmRsZXI6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgcmVnaXN0ZXJIdHRwSGFuZGxlcignREVMRVRFJywgcGF0aCwgY29uZmlnT3JIYW5kbGVyLCBmbilcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riddance/host",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
7
|
-
"node": ">=
|
|
7
|
+
"node": ">=18"
|
|
8
8
|
},
|
|
9
9
|
"keywords": [
|
|
10
10
|
"riddance",
|
|
@@ -29,10 +29,13 @@
|
|
|
29
29
|
"./http": "./host/http.js"
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
|
+
"start": "riddance-watch",
|
|
32
33
|
"prepack": "riddance-build",
|
|
33
|
-
"
|
|
34
|
+
"prepublishOnly": "riddance-prepublish",
|
|
35
|
+
"postpublish": "riddance-sync"
|
|
34
36
|
},
|
|
35
37
|
"devDependencies": {
|
|
36
|
-
"@riddance/env": "0.
|
|
37
|
-
}
|
|
38
|
-
|
|
38
|
+
"@riddance/env": "0.4.3"
|
|
39
|
+
},
|
|
40
|
+
"gitHead": "8f6355e2dd0a0881e596de90c2898c64107e1c7b"
|
|
41
|
+
}
|