velocious 1.0.558 → 1.0.559
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/README.md +1 -1
- package/build/background-jobs/store.js +262 -16
- package/build/background-jobs/web/authorization.js +5 -4
- package/build/background-jobs/web/controller.js +13 -16
- package/build/background-jobs/web/counts-channel.js +79 -0
- package/build/background-jobs/web/index.js +2 -0
- package/build/background-jobs/web/registry.js +1 -1
- package/build/src/background-jobs/store.d.ts +79 -0
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +235 -17
- package/build/src/background-jobs/web/authorization.d.ts +5 -3
- package/build/src/background-jobs/web/authorization.d.ts.map +1 -1
- package/build/src/background-jobs/web/authorization.js +6 -5
- package/build/src/background-jobs/web/controller.d.ts.map +1 -1
- package/build/src/background-jobs/web/controller.js +14 -15
- package/build/src/background-jobs/web/counts-channel.d.ts +31 -0
- package/build/src/background-jobs/web/counts-channel.d.ts.map +1 -0
- package/build/src/background-jobs/web/counts-channel.js +71 -0
- package/build/src/background-jobs/web/index.d.ts.map +1 -1
- package/build/src/background-jobs/web/index.js +3 -1
- package/build/src/background-jobs/web/registry.d.ts +1 -1
- package/build/src/background-jobs/web/registry.d.ts.map +1 -1
- package/build/src/background-jobs/web/registry.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/background-jobs/store.js +262 -16
- package/src/background-jobs/web/authorization.js +5 -4
- package/src/background-jobs/web/controller.js +13 -16
- package/src/background-jobs/web/counts-channel.js +79 -0
- package/src/background-jobs/web/index.js +2 -0
- package/src/background-jobs/web/registry.js +1 -1
|
@@ -6,15 +6,17 @@
|
|
|
6
6
|
* during development without being exposed to the network.
|
|
7
7
|
* @param {object} args - Options.
|
|
8
8
|
* @param {import("./registry.js").JobsMountOptions} args.options - Mount options.
|
|
9
|
-
* @param {import("../../http-server/client/request.js").default} args.request - Request object.
|
|
9
|
+
* @param {import("../../http-server/client/request.js").default | import("../../http-server/client/websocket-request.js").default} args.request - Request object.
|
|
10
10
|
* @param {import("../../configuration.js").default} args.configuration - Configuration instance.
|
|
11
11
|
* @param {import("../../authorization/ability.js").default | undefined} args.ability - Current ability.
|
|
12
|
+
* @param {string | null} [args.token] - Explicit websocket subscription token.
|
|
12
13
|
* @returns {Promise<boolean>} - Whether the request is authorized.
|
|
13
14
|
*/
|
|
14
|
-
export function authorizeJobsRequest({ ability, configuration, options, request }: {
|
|
15
|
+
export function authorizeJobsRequest({ ability, configuration, options, request, token: explicitToken }: {
|
|
15
16
|
options: import("./registry.js").JobsMountOptions;
|
|
16
|
-
request: import("../../http-server/client/request.js").default;
|
|
17
|
+
request: import("../../http-server/client/request.js").default | import("../../http-server/client/websocket-request.js").default;
|
|
17
18
|
configuration: import("../../configuration.js").default;
|
|
18
19
|
ability: import("../../authorization/ability.js").default | undefined;
|
|
20
|
+
token?: string | null | undefined;
|
|
19
21
|
}): Promise<boolean>;
|
|
20
22
|
//# sourceMappingURL=authorization.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/authorization.js"],"names":[],"mappings":"AAmDA
|
|
1
|
+
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/authorization.js"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;GAaG;AACH,yGAPG;IAAuD,OAAO,EAAtD,OAAO,eAAe,EAAE,gBAAgB;IACsF,OAAO,EAArI,OAAO,qCAAqC,EAAE,OAAO,GAAG,OAAO,+CAA+C,EAAE,OAAO;IACxE,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;IAC2B,OAAO,EAA1E,OAAO,gCAAgC,EAAE,OAAO,GAAG,SAAS;IACvC,KAAK;CAClC,GAAU,OAAO,CAAC,OAAO,CAAC,CA0B5B"}
|
|
@@ -16,7 +16,7 @@ function safeEqual(a, b) {
|
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Runs bearer token.
|
|
19
|
-
* @param {import("../../http-server/client/request.js").default} request - Request object.
|
|
19
|
+
* @param {import("../../http-server/client/request.js").default | import("../../http-server/client/websocket-request.js").default} request - Request object.
|
|
20
20
|
* @returns {string | null} - Bearer token from the Authorization header, if any.
|
|
21
21
|
*/
|
|
22
22
|
function bearerToken(request) {
|
|
@@ -47,17 +47,18 @@ function isLoopback(remoteAddress) {
|
|
|
47
47
|
* during development without being exposed to the network.
|
|
48
48
|
* @param {object} args - Options.
|
|
49
49
|
* @param {import("./registry.js").JobsMountOptions} args.options - Mount options.
|
|
50
|
-
* @param {import("../../http-server/client/request.js").default} args.request - Request object.
|
|
50
|
+
* @param {import("../../http-server/client/request.js").default | import("../../http-server/client/websocket-request.js").default} args.request - Request object.
|
|
51
51
|
* @param {import("../../configuration.js").default} args.configuration - Configuration instance.
|
|
52
52
|
* @param {import("../../authorization/ability.js").default | undefined} args.ability - Current ability.
|
|
53
|
+
* @param {string | null} [args.token] - Explicit websocket subscription token.
|
|
53
54
|
* @returns {Promise<boolean>} - Whether the request is authorized.
|
|
54
55
|
*/
|
|
55
|
-
export async function authorizeJobsRequest({ ability, configuration, options, request }) {
|
|
56
|
+
export async function authorizeJobsRequest({ ability, configuration, options, request, token: explicitToken }) {
|
|
56
57
|
const accessTokens = Array.isArray(options.accessTokens)
|
|
57
58
|
? options.accessTokens.filter((token) => typeof token === "string" && token.length > 0)
|
|
58
59
|
: [];
|
|
59
60
|
const authorize = typeof options.authorize === "function" ? options.authorize : null;
|
|
60
|
-
const token = bearerToken(request);
|
|
61
|
+
const token = explicitToken ?? bearerToken(request);
|
|
61
62
|
if (accessTokens.length > 0 && token) {
|
|
62
63
|
for (const accessToken of accessTokens) {
|
|
63
64
|
if (safeEqual(token, accessToken))
|
|
@@ -74,4 +75,4 @@ export async function authorizeJobsRequest({ ability, configuration, options, re
|
|
|
74
75
|
}
|
|
75
76
|
return false;
|
|
76
77
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvd2ViL2F1dGhvcml6YXRpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUVoQzs7Ozs7O0dBTUc7QUFDSCxTQUFTLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFdEMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFFbkQsT0FBTyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUNqRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsV0FBVyxDQUFDLE9BQU87SUFDMUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUU5QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUUzQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFFOUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ3ZDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxVQUFVLENBQUMsYUFBYTtJQUMvQixJQUFJLENBQUMsYUFBYTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRWhDLE9BQU8sQ0FDTCxhQUFhLEtBQUssV0FBVztRQUM3QixhQUFhLEtBQUssS0FBSztRQUN2QixhQUFhLEtBQUssa0JBQWtCO1FBQ3BDLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQ2pDLENBQUE7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQUMsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBQztJQUN6RyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDdEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE1BQU0sU0FBUyxHQUFHLE9BQU8sT0FBTyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUNwRixNQUFNLEtBQUssR0FBRyxhQUFhLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRW5ELElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDckMsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN2QyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFBO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUV4RSxJQUFJLE1BQU0sS0FBSyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUE7SUFDbEMsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBjcnlwdG8gZnJvbSBcIm5vZGU6Y3J5cHRvXCJcblxuLyoqXG4gKiBDb25zdGFudC10aW1lIGNvbXBhcmlzb24gc28gdG9rZW4gY2hlY2tzIGRvbid0IGxlYWsgbGVuZ3RoL2NvbnRlbnRzIHRocm91Z2hcbiAqIHRpbWluZy4gUmV0dXJucyBmYWxzZSBmb3IgZGlmZmVyaW5nIGxlbmd0aHMgYmVmb3JlIHRoZSB0aW1pbmctc2FmZSBjb21wYXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IGEgLSBGaXJzdCB2YWx1ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBiIC0gU2Vjb25kIHZhbHVlLlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgdmFsdWVzIGFyZSBlcXVhbC5cbiAqL1xuZnVuY3Rpb24gc2FmZUVxdWFsKGEsIGIpIHtcbiAgY29uc3QgYnVmZmVyQSA9IEJ1ZmZlci5mcm9tKFN0cmluZyhhKSlcbiAgY29uc3QgYnVmZmVyQiA9IEJ1ZmZlci5mcm9tKFN0cmluZyhiKSlcblxuICBpZiAoYnVmZmVyQS5sZW5ndGggIT09IGJ1ZmZlckIubGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICByZXR1cm4gY3J5cHRvLnRpbWluZ1NhZmVFcXVhbChidWZmZXJBLCBidWZmZXJCKVxufVxuXG4vKipcbiAqIFJ1bnMgYmVhcmVyIHRva2VuLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9odHRwLXNlcnZlci9jbGllbnQvcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi4vLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IHJlcXVlc3QgLSBSZXF1ZXN0IG9iamVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCBudWxsfSAtIEJlYXJlciB0b2tlbiBmcm9tIHRoZSBBdXRob3JpemF0aW9uIGhlYWRlciwgaWYgYW55LlxuICovXG5mdW5jdGlvbiBiZWFyZXJUb2tlbihyZXF1ZXN0KSB7XG4gIGNvbnN0IGhlYWRlciA9IHJlcXVlc3QuaGVhZGVyKFwiYXV0aG9yaXphdGlvblwiKVxuXG4gIGlmICh0eXBlb2YgaGVhZGVyICE9PSBcInN0cmluZ1wiKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IG1hdGNoID0gaGVhZGVyLm1hdGNoKC9eQmVhcmVyXFxzKyguKykkL2kpXG5cbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0udHJpbSgpIDogbnVsbFxufVxuXG4vKipcbiAqIFJ1bnMgaXMgbG9vcGJhY2suXG4gKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gcmVtb3RlQWRkcmVzcyAtIFJlbW90ZSBhZGRyZXNzLlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgYWRkcmVzcyBpcyBsb29wYmFjay5cbiAqL1xuZnVuY3Rpb24gaXNMb29wYmFjayhyZW1vdGVBZGRyZXNzKSB7XG4gIGlmICghcmVtb3RlQWRkcmVzcykgcmV0dXJuIGZhbHNlXG5cbiAgcmV0dXJuIChcbiAgICByZW1vdGVBZGRyZXNzID09PSBcIjEyNy4wLjAuMVwiIHx8XG4gICAgcmVtb3RlQWRkcmVzcyA9PT0gXCI6OjFcIiB8fFxuICAgIHJlbW90ZUFkZHJlc3MgPT09IFwiOjpmZmZmOjEyNy4wLjAuMVwiIHx8XG4gICAgcmVtb3RlQWRkcmVzcy5zdGFydHNXaXRoKFwiMTI3LlwiKVxuICApXG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgam9icy1kYXNoYm9hcmQgcmVxdWVzdCBpcyBhdXRob3JpemVkLiBPcmRlciBvZiBwcmVjZWRlbmNlOlxuICogYSBtYXRjaGluZyBiZWFyZXIgdG9rZW4sIHRoZW4gdGhlIGhvc3Qtc3VwcGxpZWQgYGF1dGhvcml6ZWAgY2FsbGJhY2suIFdoZW5cbiAqIG5laXRoZXIgdG9rZW5zIG5vciBhbiBhdXRob3JpemUgY2FsbGJhY2sgYXJlIGNvbmZpZ3VyZWQsIGFjY2VzcyBmYWxscyBiYWNrIHRvXG4gKiBsb29wYmFjay1vbmx5IHNvIGEgZnJlc2hseSBtb3VudGVkIGRhc2hib2FyZCBpcyByZWFjaGFibGUgb24gdGhlIHNhbWUgaG9zdFxuICogZHVyaW5nIGRldmVsb3BtZW50IHdpdGhvdXQgYmVpbmcgZXhwb3NlZCB0byB0aGUgbmV0d29yay5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9yZWdpc3RyeS5qc1wiKS5Kb2JzTW91bnRPcHRpb25zfSBhcmdzLm9wdGlvbnMgLSBNb3VudCBvcHRpb25zLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9odHRwLXNlcnZlci9jbGllbnQvcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi4vLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdCAtIFJlcXVlc3Qgb2JqZWN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2F1dGhvcml6YXRpb24vYWJpbGl0eS5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSBhcmdzLmFiaWxpdHkgLSBDdXJyZW50IGFiaWxpdHkuXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IFthcmdzLnRva2VuXSAtIEV4cGxpY2l0IHdlYnNvY2tldCBzdWJzY3JpcHRpb24gdG9rZW4uXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBXaGV0aGVyIHRoZSByZXF1ZXN0IGlzIGF1dGhvcml6ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhdXRob3JpemVKb2JzUmVxdWVzdCh7YWJpbGl0eSwgY29uZmlndXJhdGlvbiwgb3B0aW9ucywgcmVxdWVzdCwgdG9rZW46IGV4cGxpY2l0VG9rZW59KSB7XG4gIGNvbnN0IGFjY2Vzc1Rva2VucyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucy5hY2Nlc3NUb2tlbnMpXG4gICAgPyBvcHRpb25zLmFjY2Vzc1Rva2Vucy5maWx0ZXIoKHRva2VuKSA9PiB0eXBlb2YgdG9rZW4gPT09IFwic3RyaW5nXCIgJiYgdG9rZW4ubGVuZ3RoID4gMClcbiAgICA6IFtdXG4gIGNvbnN0IGF1dGhvcml6ZSA9IHR5cGVvZiBvcHRpb25zLmF1dGhvcml6ZSA9PT0gXCJmdW5jdGlvblwiID8gb3B0aW9ucy5hdXRob3JpemUgOiBudWxsXG4gIGNvbnN0IHRva2VuID0gZXhwbGljaXRUb2tlbiA/PyBiZWFyZXJUb2tlbihyZXF1ZXN0KVxuXG4gIGlmIChhY2Nlc3NUb2tlbnMubGVuZ3RoID4gMCAmJiB0b2tlbikge1xuICAgIGZvciAoY29uc3QgYWNjZXNzVG9rZW4gb2YgYWNjZXNzVG9rZW5zKSB7XG4gICAgICBpZiAoc2FmZUVxdWFsKHRva2VuLCBhY2Nlc3NUb2tlbikpIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgaWYgKGF1dGhvcml6ZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF1dGhvcml6ZSh7YWJpbGl0eSwgY29uZmlndXJhdGlvbiwgcmVxdWVzdCwgdG9rZW59KVxuXG4gICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChhY2Nlc3NUb2tlbnMubGVuZ3RoID09PSAwICYmICFhdXRob3JpemUpIHtcbiAgICByZXR1cm4gaXNMb29wYmFjayhyZXF1ZXN0LnJlbW90ZUFkZHJlc3MoKSlcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/controller.js"],"names":[],"mappings":"AAYA;;;;GAIG;AACH;IACE;;;OAGG;IACH,iBAFa,OAAO,eAAe,EAAE,gBAAgB,CAMpD;IAED;;;OAGG;IACH,UAFa,mBAAmB,CAW/B;IAPG,4CAGE;IAMN;;;;;OAKG;IACH,2BAHW,OAAO,eAAe,EAAE,gBAAgB,GACtC,IAAI,CAmBhB;IAED;;;;;;OAMG;IACH,mBAHW,MAAM,OAAO,CAAC,IAAI,CAAC,GACjB,OAAO,CAAC,IAAI,CAAC,CAoBzB;IAED;;;OAGG;IACH,UAFa,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/controller.js"],"names":[],"mappings":"AAYA;;;;GAIG;AACH;IACE;;;OAGG;IACH,iBAFa,OAAO,eAAe,EAAE,gBAAgB,CAMpD;IAED;;;OAGG;IACH,UAFa,mBAAmB,CAW/B;IAPG,4CAGE;IAMN;;;;;OAKG;IACH,2BAHW,OAAO,eAAe,EAAE,gBAAgB,GACtC,IAAI,CAmBhB;IAED;;;;;;OAMG;IACH,mBAHW,MAAM,OAAO,CAAC,IAAI,CAAC,GACjB,OAAO,CAAC,IAAI,CAAC,CAoBzB;IAED;;;OAGG;IACH,UAFa,OAAO,CAAC,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;OAGG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAazB;IAED;;;OAGG;IACH,YAFa,OAAO,CAAC,IAAI,CAAC,CAQzB;IAED;;;;OAIG;IACH,mBAHW,OAAO,aAAa,EAAE,gBAAgB,GACpC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAuB7B;IAED;;;;OAIG;IACH,8BAHW,OAAO,8BAA8B,EAAE,oCAAoC,GAAG,SAAS,GACrF,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC,CAsBpC;IAED;;;;OAIG;IACH,uBAHW,OAAC,GACC,MAAM,GAAG,SAAS,CAI9B;IAED;;;;OAIG;IACH,qBAHW,OAAC,GACC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;KAAC,CAY/D;IAED;;;;;OAKG;IACH,oBAJW,OAAC,YACD,MAAM,GACJ,MAAM,CAQlB;CACF;uBA/QsB,qBAAqB;gCACZ,aAAa"}
|
|
@@ -84,7 +84,11 @@ export default class VelociousBackgroundJobsWebController extends Controller {
|
|
|
84
84
|
*/
|
|
85
85
|
async health() {
|
|
86
86
|
await this._respond(async () => {
|
|
87
|
-
await this.render({ json: {
|
|
87
|
+
await this.render({ json: {
|
|
88
|
+
capabilities: { backgroundJobCountDeltas: 1 },
|
|
89
|
+
ok: true,
|
|
90
|
+
service: "velocious-background-jobs"
|
|
91
|
+
} });
|
|
88
92
|
});
|
|
89
93
|
}
|
|
90
94
|
/**
|
|
@@ -93,19 +97,14 @@ export default class VelociousBackgroundJobsWebController extends Controller {
|
|
|
93
97
|
*/
|
|
94
98
|
async stats() {
|
|
95
99
|
await this._respond(async () => {
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
for (const value of Object.values(counts)) {
|
|
106
|
-
total += value;
|
|
107
|
-
}
|
|
108
|
-
await this.render({ json: { counts: byStatus, generatedAtMs: Date.now(), total } });
|
|
100
|
+
const snapshot = await this._store().countSnapshot();
|
|
101
|
+
await this.render({ json: {
|
|
102
|
+
capabilities: { backgroundJobCountDeltas: 1 },
|
|
103
|
+
counts: snapshot.counts,
|
|
104
|
+
generatedAtMs: Date.now(),
|
|
105
|
+
revision: snapshot.revision,
|
|
106
|
+
total: snapshot.total
|
|
107
|
+
} });
|
|
109
108
|
});
|
|
110
109
|
}
|
|
111
110
|
/**
|
|
@@ -237,4 +236,4 @@ export default class VelociousBackgroundJobsWebController extends Controller {
|
|
|
237
236
|
return Math.floor(numeric);
|
|
238
237
|
}
|
|
239
238
|
}
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvd2ViL2NvbnRyb2xsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sVUFBVSxNQUFNLHFCQUFxQixDQUFBO0FBQzVDLE9BQU8sbUJBQW1CLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQ3ZELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFFMUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUN0RixNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUE7QUFDbEgsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUE7QUFDM0IsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBO0FBRXhCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFxQyxTQUFRLFVBQVU7SUFDMUU7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQTtRQUU3QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQztnQkFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFB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QUE7SUFDakUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRO1FBQzFCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRS9ELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDO1lBQUUsT0FBTyxRQUFRLENBQUE7UUFFN0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQ29udHJvbGxlciBmcm9tIFwiLi4vLi4vY29udHJvbGxlci5qc1wiXG5pbXBvcnQgQmFja2dyb3VuZEpvYnNTdG9yZSBmcm9tIFwiLi4vc3RvcmUuanNcIlxuaW1wb3J0IHthdXRob3JpemVKb2JzUmVxdWVzdH0gZnJvbSBcIi4vYXV0aG9yaXphdGlvbi5qc1wiXG5pbXBvcnQge2dldEpvYnNNb3VudH0gZnJvbSBcIi4vcmVnaXN0cnkuanNcIlxuXG5jb25zdCBEQVNIQk9BUkRfU1RBVFVTRVMgPSBbXCJxdWV1ZWRcIiwgXCJoYW5kZWRfb2ZmXCIsIFwiY29tcGxldGVkXCIsIFwiZmFpbGVkXCIsIFwib3JwaGFuZWRcIl1cbmNvbnN0IFNPUlRBQkxFX0tFWVMgPSBbXCJhdHRlbXB0c1wiLCBcImNvbXBsZXRlZEF0TXNcIiwgXCJjcmVhdGVkQXRNc1wiLCBcImZhaWxlZEF0TXNcIiwgXCJoYW5kZWRPZmZBdE1zXCIsIFwic2NoZWR1bGVkQXRNc1wiXVxuY29uc3QgREVGQVVMVF9QRVJfUEFHRSA9IDI1XG5jb25zdCBNQVhfUEVSX1BBR0UgPSAxMDBcblxuLyoqXG4gKiBSZWFkLW9ubHkgSFRUUCBBUEkgYmFja2luZyB0aGUgYmFja2dyb3VuZC1qb2JzIGRhc2hib2FyZC4gTW91bnRlZCBieVxuICoge0BsaW5rIGltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gYXMgYSByb3V0ZS1yZXNvbHZlciBob29rIHNvIGl0IGNhbiBzaGlwXG4gKiBpbnNpZGUgdGhlIHZlbG9jaW91cyBwYWNrYWdlLiBFdmVyeSBhY3Rpb24gaXMgZ2F0ZWQgYnkge0BsaW5rIGF1dGhvcml6ZUpvYnNSZXF1ZXN0fS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzQmFja2dyb3VuZEpvYnNXZWJDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBSdW5zIG1vdW50IG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL3JlZ2lzdHJ5LmpzXCIpLkpvYnNNb3VudE9wdGlvbnN9IC0gT3B0aW9ucyBmb3IgdGhlIG1vdW50IHRoYXQgbWF0Y2hlZCB0aGlzIHJlcXVlc3QuXG4gICAqL1xuICBfbW91bnRPcHRpb25zKCkge1xuICAgIGNvbnN0IGF0ID0gdGhpcy5wYXJhbXMoKS52ZWxvY2lvdXNKb2JzTW91bnRBdFxuXG4gICAgcmV0dXJuIGdldEpvYnNNb3VudCh0aGlzLmdldENvbmZpZ3VyYXRpb24oKSwgYXQpIHx8IHt9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBzdG9yZS5cbiAgICogQHJldHVybnMge0JhY2tncm91bmRKb2JzU3RvcmV9IC0gSm9icyBzdG9yZSBzY29wZWQgdG8gdGhlIG1vdW50J3MgZGF0YWJhc2UuXG4gICAqL1xuICBfc3RvcmUoKSB7XG4gICAgaWYgKCF0aGlzLl9qb2JzU3RvcmUpIHtcbiAgICAgIHRoaXMuX2pvYnNTdG9yZSA9IG5ldyBCYWNrZ3JvdW5kSm9ic1N0b3JlKHtcbiAgICAgICAgY29uZmlndXJhdGlvbjogdGhpcy5nZXRDb25maWd1cmF0aW9uKCksXG4gICAgICAgIGRhdGFiYXNlSWRlbnRpZmllcjogdGhpcy5fbW91bnRPcHRpb25zKCkuZGF0YWJhc2VJZGVudGlmaWVyXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9qb2JzU3RvcmVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIENPUlMgaGVhZGVycyB3aGVuIHRoZSByZXF1ZXN0IG9yaWdpbiBpcyBhbGxvd2VkLCBzbyB0aGUgc3RhbmRhbG9uZVxuICAgKiBicm93c2VyIGRhc2hib2FyZCBjYW4gcmVhZCB0aGUgQVBJIGNyb3NzLW9yaWdpbi5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3JlZ2lzdHJ5LmpzXCIpLkpvYnNNb3VudE9wdGlvbnN9IG9wdGlvbnMgLSBNb3VudCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBfYXBwbHlDb3JzSGVhZGVycyhvcHRpb25zKSB7XG4gICAgY29uc3QgYWxsb3dlZE9yaWdpbnMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMuYWxsb3dlZE9yaWdpbnMpID8gb3B0aW9ucy5hbGxvd2VkT3JpZ2lucyA6IFtdXG5cbiAgICBpZiAoYWxsb3dlZE9yaWdpbnMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMucmVxdWVzdCgpLm9yaWdpbigpXG4gICAgY29uc3QgYWxsb3dBbGwgPSBhbGxvd2VkT3JpZ2lucy5pbmNsdWRlcyhcIipcIilcblxuICAgIGlmICghb3JpZ2luKSByZXR1cm5cbiAgICBpZiAoIWFsbG93QWxsICYmICFhbGxvd2VkT3JpZ2lucy5pbmNsdWRlcyhvcmlnaW4pKSByZXR1cm5cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5yZXNwb25zZSgpXG5cbiAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5cIiwgYWxsb3dBbGwgPyBcIipcIiA6IG9yaWdpbilcbiAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJWYXJ5XCIsIFwiT3JpZ2luXCIpXG4gICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVyc1wiLCBcImF1dGhvcml6YXRpb24sIGNvbnRlbnQtdHlwZVwiKVxuICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHNcIiwgXCJHRVQsIFBPU1QsIERFTEVURSwgT1BUSU9OU1wiKVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgQ09SUyBoZWFkZXJzLCBhdXRob3JpemVzIHRoZSByZXF1ZXN0LCBhbmQgcnVucyB0aGUgYWN0aW9uIGJvZHkgb25seVxuICAgKiB3aGVuIGF1dGhvcml6ZWQuIFJlbmRlcnMgYSA0MDEgb3RoZXJ3aXNlLiBUaGUgYmFzZSBjb250cm9sbGVyIGhhcyBub1xuICAgKiBiZWZvcmUtYWN0aW9uIGhhbHRpbmcsIHNvIGF1dGhvcml6YXRpb24gaXMgZW5mb3JjZWQgaGVyZSBwZXIgYWN0aW9uLlxuICAgKiBAcGFyYW0geygpID0+IFByb21pc2U8dm9pZD59IGFjdGlvbkZuIC0gQWN0aW9uIGJvZHkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBfcmVzcG9uZChhY3Rpb25Gbikge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9tb3VudE9wdGlvbnMoKVxuXG4gICAgdGhpcy5fYXBwbHlDb3JzSGVhZGVycyhvcHRpb25zKVxuXG4gICAgY29uc3QgYXV0aG9yaXplZCA9IGF3YWl0IGF1dGhvcml6ZUpvYnNSZXF1ZXN0KHtcbiAgICAgIGFiaWxpdHk6IHRoaXMuY3VycmVudEFiaWxpdHkoKSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHJlcXVlc3Q6IHRoaXMucmVxdWVzdCgpXG4gICAgfSlcblxuICAgIGlmICghYXV0aG9yaXplZCkge1xuICAgICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IHtlcnJvcjogXCJ1bmF1dGhvcml6ZWRcIn0sIHN0YXR1czogNDAxfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGF3YWl0IGFjdGlvbkZuKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGhlYWx0aC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGhlYWx0aCgpIHtcbiAgICBhd2FpdCB0aGlzLl9yZXNwb25kKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiB7b2s6IHRydWUsIHNlcnZpY2U6IFwidmVsb2Npb3VzLWJhY2tncm91bmQtam9ic1wifX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHN0YXRzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgc3RhdHMoKSB7XG4gICAgYXdhaXQgdGhpcy5fcmVzcG9uZChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjb3VudHMgPSBhd2FpdCB0aGlzLl9zdG9yZSgpLmNvdW50c0J5U3RhdHVzKClcbiAgICAgIC8qKlxuICAgICAgICogQnkgc3RhdHVzLlxuICAgICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIG51bWJlcj59ICovXG4gICAgICBjb25zdCBieVN0YXR1cyA9IHt9XG4gICAgICBsZXQgdG90YWwgPSAwXG5cbiAgICAgIGZvciAoY29uc3Qgc3RhdHVzIG9mIERBU0hCT0FSRF9TVEFUVVNFUykge1xuICAgICAgICBieVN0YXR1c1tzdGF0dXNdID0gY291bnRzW3N0YXR1c10gfHwgMFxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMoY291bnRzKSkge1xuICAgICAgICB0b3RhbCArPSB2YWx1ZVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge2NvdW50czogYnlTdGF0dXMsIGdlbmVyYXRlZEF0TXM6IERhdGUubm93KCksIHRvdGFsfX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGluZGV4LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgaW5kZXgoKSB7XG4gICAgYXdhaXQgdGhpcy5fcmVzcG9uZChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnBhcmFtcygpXG4gICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLl9zYW5pdGl6ZVN0YXR1cyhwYXJhbXMuc3RhdHVzKVxuICAgICAgY29uc3Qgam9iTmFtZSA9IHR5cGVvZiBwYXJhbXMuam9iTmFtZSA9PT0gXCJzdHJpbmdcIiAmJiBwYXJhbXMuam9iTmFtZS5sZW5ndGggPiAwID8gcGFyYW1zLmpvYk5hbWUgOiB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLl9wb3NpdGl2ZUludChwYXJhbXMucGFnZSwgMSlcbiAgICAgIGNvbnN0IHBlclBhZ2UgPSBNYXRoLm1pbih0aGlzLl9wb3NpdGl2ZUludChwYXJhbXMucGVyUGFnZSwgREVGQVVMVF9QRVJfUEFHRSksIE1BWF9QRVJfUEFHRSlcbiAgICAgIGNvbnN0IHtzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9ufSA9IHRoaXMuX3Nhbml0aXplU29ydChwYXJhbXMuc29ydClcbiAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy5fc3RvcmUoKVxuICAgICAgY29uc3Qgam9icyA9IGF3YWl0IHN0b3JlLmxpc3RKb2JzKHtqb2JOYW1lLCBsaW1pdDogcGVyUGFnZSwgb2Zmc2V0OiAocGFnZSAtIDEpICogcGVyUGFnZSwgc29ydENvbHVtbiwgc29ydERpcmVjdGlvbiwgc3RhdHVzfSlcbiAgICAgIGNvbnN0IHRvdGFsID0gYXdhaXQgc3RvcmUuY291bnRKb2JzKHtqb2JOYW1lLCBzdGF0dXN9KVxuXG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge1xuICAgICAgICBqb2JzOiBqb2JzLm1hcCgoam9iKSA9PiB0aGlzLl9zZXJpYWxpemVKb2Ioam9iKSksXG4gICAgICAgIHBhZ2luYXRpb246IHtwYWdlLCBwZXJQYWdlLCB0b3RhbCwgdG90YWxQYWdlczogcGVyUGFnZSA+IDAgPyBNYXRoLmNlaWwodG90YWwgLyBwZXJQYWdlKSA6IDB9XG4gICAgICB9fSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2hvdy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIHNob3coKSB7XG4gICAgYXdhaXQgdGhpcy5fcmVzcG9uZChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBqb2IgPSBhd2FpdCB0aGlzLl9zdG9yZSgpLmdldEpvYih0aGlzLnBhcmFtcygpLmlkKVxuXG4gICAgICBpZiAoIWpvYikge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge2Vycm9yOiBcIm5vdF9mb3VuZFwifSwgc3RhdHVzOiA0MDR9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IHtqb2I6IHRoaXMuX3NlcmlhbGl6ZUpvYihqb2IpfX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNjaGVkdWxlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgc2NoZWR1bGUoKSB7XG4gICAgYXdhaXQgdGhpcy5fcmVzcG9uZChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzY2hlZHVsZWQgPSBhd2FpdCB0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXRTY2hlZHVsZWRCYWNrZ3JvdW5kSm9ic0NvbmZpZygpXG5cbiAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiB7c2NoZWR1bGU6IHRoaXMuX3NlcmlhbGl6ZVNjaGVkdWxlKHNjaGVkdWxlZCl9fSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2VyaWFsaXplIGpvYi5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9iUm93fSBqb2IgLSBKb2Igcm93LlxuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgPz59IC0gU2VyaWFsaXplZCBqb2IgZm9yIHRoZSBBUEkuXG4gICAqL1xuICBfc2VyaWFsaXplSm9iKGpvYikge1xuICAgIGNvbnN0IHJlZGFjdEFyZ3MgPSBCb29sZWFuKHRoaXMuX21vdW50T3B0aW9ucygpLnJlZGFjdEFyZ3MpXG5cbiAgICByZXR1cm4ge1xuICAgICAgYXJnczogcmVkYWN0QXJncyA/IHVuZGVmaW5lZCA6IGpvYi5hcmdzLFxuICAgICAgYXJnc1JlZGFjdGVkOiByZWRhY3RBcmdzLFxuICAgICAgYXR0ZW1wdHM6IGpvYi5hdHRlbXB0cyxcbiAgICAgIGNvbXBsZXRlZEF0TXM6IGpvYi5jb21wbGV0ZWRBdE1zLFxuICAgICAgY3JlYXRlZEF0TXM6IGpvYi5jcmVhdGVkQXRNcyxcbiAgICAgIGV4ZWN1dGlvbk1vZGU6IGpvYi5leGVjdXRpb25Nb2RlLFxuICAgICAgZmFpbGVkQXRNczogam9iLmZhaWxlZEF0TXMsXG4gICAgICBoYW5kZWRPZmZBdE1zOiBqb2IuaGFuZGVkT2ZmQXRNcyxcbiAgICAgIGlkOiBqb2IuaWQsXG4gICAgICBqb2JOYW1lOiBqb2Iuam9iTmFtZSxcbiAgICAgIGxhc3RFcnJvcjogam9iLmxhc3RFcnJvcixcbiAgICAgIG1heFJldHJpZXM6IGpvYi5tYXhSZXRyaWVzLFxuICAgICAgb3JwaGFuZWRBdE1zOiBqb2Iub3JwaGFuZWRBdE1zLFxuICAgICAgc2NoZWR1bGVkQXRNczogam9iLnNjaGVkdWxlZEF0TXMsXG4gICAgICBzdGF0dXM6IGpvYi5zdGF0dXMsXG4gICAgICB3b3JrZXJJZDogam9iLndvcmtlcklkXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2VyaWFsaXplIHNjaGVkdWxlLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuU2NoZWR1bGVkQmFja2dyb3VuZEpvYnNDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkfSBzY2hlZHVsZWQgLSBTY2hlZHVsZWQgam9icyBjb25maWcuXG4gICAqIEByZXR1cm5zIHtBcnJheTxSZWNvcmQ8c3RyaW5nLCA/Pj59IC0gU2VyaWFsaXplZCByZWN1cnJpbmcgam9icy5cbiAgICovXG4gIF9zZXJpYWxpemVTY2hlZHVsZShzY2hlZHVsZWQpIHtcbiAgICBjb25zdCBqb2JzID0gc2NoZWR1bGVkPy5qb2JzXG5cbiAgICBpZiAoIWpvYnMgfHwgdHlwZW9mIGpvYnMgIT09IFwib2JqZWN0XCIpIHJldHVybiBbXVxuXG4gICAgY29uc3QgcmVkYWN0QXJncyA9IEJvb2xlYW4odGhpcy5fbW91bnRPcHRpb25zKCkucmVkYWN0QXJncylcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhqb2JzKS5tYXAoKG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gam9ic1tuYW1lXSB8fCAvKiogQHR5cGUgez99ICovICh7fSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXJnczogcmVkYWN0QXJncyA/IHVuZGVmaW5lZCA6IChlbnRyeS5hcmdzIHx8IFtdKSxcbiAgICAgICAgY3JvbjogZW50cnkuY3JvbixcbiAgICAgICAgZW5hYmxlZDogZW50cnkuZW5hYmxlZCAhPT0gZmFsc2UsXG4gICAgICAgIGV2ZXJ5OiBlbnRyeS5ldmVyeSxcbiAgICAgICAgam9iTmFtZTogdHlwZW9mIGVudHJ5LmNsYXNzID09PSBcImZ1bmN0aW9uXCIgPyBlbnRyeS5jbGFzcy5uYW1lIDogdW5kZWZpbmVkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBvcHRpb25zOiBlbnRyeS5vcHRpb25zIHx8IHt9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNhbml0aXplIHN0YXR1cy5cbiAgICogQHBhcmFtIHs/fSB2YWx1ZSAtIFJhdyBzdGF0dXMgcGFyYW0uXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVmFsaWQgc3RhdHVzIG9yIHVuZGVmaW5lZC5cbiAgICovXG4gIF9zYW5pdGl6ZVN0YXR1cyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgREFTSEJPQVJEX1NUQVRVU0VTLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzYW5pdGl6ZSBzb3J0LlxuICAgKiBAcGFyYW0gez99IHZhbHVlIC0gUmF3IHNvcnQgcGFyYW0gKGUuZy4gXCJjcmVhdGVkQXRNc1wiIG9yIFwiLWZhaWxlZEF0TXNcIikuXG4gICAqIEByZXR1cm5zIHt7c29ydENvbHVtbjogc3RyaW5nLCBzb3J0RGlyZWN0aW9uOiBcIkFTQ1wiIHwgXCJERVNDXCJ9fSAtIE5vcm1hbGl6ZWQgc29ydC5cbiAgICovXG4gIF9zYW5pdGl6ZVNvcnQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtzb3J0Q29sdW1uOiBcImNyZWF0ZWRBdE1zXCIsIHNvcnREaXJlY3Rpb246IFwiREVTQ1wifVxuICAgIH1cblxuICAgIGNvbnN0IGRlc2NlbmRpbmcgPSB2YWx1ZS5zdGFydHNXaXRoKFwiLVwiKVxuICAgIGNvbnN0IGtleSA9IGRlc2NlbmRpbmcgPyB2YWx1ZS5zbGljZSgxKSA6IHZhbHVlXG4gICAgY29uc3Qgc29ydENvbHVtbiA9IFNPUlRBQkxFX0tFWVMuaW5jbHVkZXMoa2V5KSA/IGtleSA6IFwiY3JlYXRlZEF0TXNcIlxuXG4gICAgcmV0dXJuIHtzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uOiBkZXNjZW5kaW5nID8gXCJERVNDXCIgOiBcIkFTQ1wifVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcG9zaXRpdmUgaW50LlxuICAgKiBAcGFyYW0gez99IHZhbHVlIC0gUmF3IG51bWVyaWMgcGFyYW0uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmYWxsYmFjayAtIEZhbGxiYWNrIHdoZW4gaW52YWxpZC5cbiAgICogQHJldHVybnMge251bWJlcn0gLSBQb3NpdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgX3Bvc2l0aXZlSW50KHZhbHVlLCBmYWxsYmFjaykge1xuICAgIGNvbnN0IG51bWVyaWMgPSBOdW1iZXIoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZVswXSA6IHZhbHVlKVxuXG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobnVtZXJpYykgfHwgbnVtZXJpYyA8IDEpIHJldHVybiBmYWxsYmFja1xuXG4gICAgcmV0dXJuIE1hdGguZmxvb3IobnVtZXJpYylcbiAgfVxufVxuIl19
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvd2ViL2NvbnRyb2xsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sVUFBVSxNQUFNLHFCQUFxQixDQUFBO0FBQzVDLE9BQU8sbUJBQW1CLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQ3ZELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFFMUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUN0RixNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUE7QUFDbEgsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUE7QUFDM0IsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBO0FBRXhCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFxQyxTQUFRLFVBQVU7SUFDMUU7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQTtRQUU3QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQztnQkFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFB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SyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUUvRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFBO1FBRTdELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM1QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSBcIi4uLy4uL2NvbnRyb2xsZXIuanNcIlxuaW1wb3J0IEJhY2tncm91bmRKb2JzU3RvcmUgZnJvbSBcIi4uL3N0b3JlLmpzXCJcbmltcG9ydCB7YXV0aG9yaXplSm9ic1JlcXVlc3R9IGZyb20gXCIuL2F1dGhvcml6YXRpb24uanNcIlxuaW1wb3J0IHtnZXRKb2JzTW91bnR9IGZyb20gXCIuL3JlZ2lzdHJ5LmpzXCJcblxuY29uc3QgREFTSEJPQVJEX1NUQVRVU0VTID0gW1wicXVldWVkXCIsIFwiaGFuZGVkX29mZlwiLCBcImNvbXBsZXRlZFwiLCBcImZhaWxlZFwiLCBcIm9ycGhhbmVkXCJdXG5jb25zdCBTT1JUQUJMRV9LRVlTID0gW1wiYXR0ZW1wdHNcIiwgXCJjb21wbGV0ZWRBdE1zXCIsIFwiY3JlYXRlZEF0TXNcIiwgXCJmYWlsZWRBdE1zXCIsIFwiaGFuZGVkT2ZmQXRNc1wiLCBcInNjaGVkdWxlZEF0TXNcIl1cbmNvbnN0IERFRkFVTFRfUEVSX1BBR0UgPSAyNVxuY29uc3QgTUFYX1BFUl9QQUdFID0gMTAwXG5cbi8qKlxuICogUmVhZC1vbmx5IEhUVFAgQVBJIGJhY2tpbmcgdGhlIGJhY2tncm91bmQtam9icyBkYXNoYm9hcmQuIE1vdW50ZWQgYnlcbiAqIHtAbGluayBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFzIGEgcm91dGUtcmVzb2x2ZXIgaG9vayBzbyBpdCBjYW4gc2hpcFxuICogaW5zaWRlIHRoZSB2ZWxvY2lvdXMgcGFja2FnZS4gRXZlcnkgYWN0aW9uIGlzIGdhdGVkIGJ5IHtAbGluayBhdXRob3JpemVKb2JzUmVxdWVzdH0uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0JhY2tncm91bmRKb2JzV2ViQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIge1xuICAvKipcbiAgICogUnVucyBtb3VudCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9yZWdpc3RyeS5qc1wiKS5Kb2JzTW91bnRPcHRpb25zfSAtIE9wdGlvbnMgZm9yIHRoZSBtb3VudCB0aGF0IG1hdGNoZWQgdGhpcyByZXF1ZXN0LlxuICAgKi9cbiAgX21vdW50T3B0aW9ucygpIHtcbiAgICBjb25zdCBhdCA9IHRoaXMucGFyYW1zKCkudmVsb2Npb3VzSm9ic01vdW50QXRcblxuICAgIHJldHVybiBnZXRKb2JzTW91bnQodGhpcy5nZXRDb25maWd1cmF0aW9uKCksIGF0KSB8fCB7fVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc3RvcmUuXG4gICAqIEByZXR1cm5zIHtCYWNrZ3JvdW5kSm9ic1N0b3JlfSAtIEpvYnMgc3RvcmUgc2NvcGVkIHRvIHRoZSBtb3VudCdzIGRhdGFiYXNlLlxuICAgKi9cbiAgX3N0b3JlKCkge1xuICAgIGlmICghdGhpcy5fam9ic1N0b3JlKSB7XG4gICAgICB0aGlzLl9qb2JzU3RvcmUgPSBuZXcgQmFja2dyb3VuZEpvYnNTdG9yZSh7XG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgICBkYXRhYmFzZUlkZW50aWZpZXI6IHRoaXMuX21vdW50T3B0aW9ucygpLmRhdGFiYXNlSWRlbnRpZmllclxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fam9ic1N0b3JlXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBDT1JTIGhlYWRlcnMgd2hlbiB0aGUgcmVxdWVzdCBvcmlnaW4gaXMgYWxsb3dlZCwgc28gdGhlIHN0YW5kYWxvbmVcbiAgICogYnJvd3NlciBkYXNoYm9hcmQgY2FuIHJlYWQgdGhlIEFQSSBjcm9zcy1vcmlnaW4uXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9yZWdpc3RyeS5qc1wiKS5Kb2JzTW91bnRPcHRpb25zfSBvcHRpb25zIC0gTW91bnQgb3B0aW9ucy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgX2FwcGx5Q29yc0hlYWRlcnMob3B0aW9ucykge1xuICAgIGNvbnN0IGFsbG93ZWRPcmlnaW5zID0gQXJyYXkuaXNBcnJheShvcHRpb25zLmFsbG93ZWRPcmlnaW5zKSA/IG9wdGlvbnMuYWxsb3dlZE9yaWdpbnMgOiBbXVxuXG4gICAgaWYgKGFsbG93ZWRPcmlnaW5zLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG5cbiAgICBjb25zdCBvcmlnaW4gPSB0aGlzLnJlcXVlc3QoKS5vcmlnaW4oKVxuICAgIGNvbnN0IGFsbG93QWxsID0gYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMoXCIqXCIpXG5cbiAgICBpZiAoIW9yaWdpbikgcmV0dXJuXG4gICAgaWYgKCFhbGxvd0FsbCAmJiAhYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMob3JpZ2luKSkgcmV0dXJuXG5cbiAgICBjb25zdCByZXNwb25zZSA9IHRoaXMucmVzcG9uc2UoKVxuXG4gICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCIsIGFsbG93QWxsID8gXCIqXCIgOiBvcmlnaW4pXG4gICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiVmFyeVwiLCBcIk9yaWdpblwiKVxuICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnNcIiwgXCJhdXRob3JpemF0aW9uLCBjb250ZW50LXR5cGVcIilcbiAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzXCIsIFwiR0VULCBQT1NULCBERUxFVEUsIE9QVElPTlNcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIENPUlMgaGVhZGVycywgYXV0aG9yaXplcyB0aGUgcmVxdWVzdCwgYW5kIHJ1bnMgdGhlIGFjdGlvbiBib2R5IG9ubHlcbiAgICogd2hlbiBhdXRob3JpemVkLiBSZW5kZXJzIGEgNDAxIG90aGVyd2lzZS4gVGhlIGJhc2UgY29udHJvbGxlciBoYXMgbm9cbiAgICogYmVmb3JlLWFjdGlvbiBoYWx0aW5nLCBzbyBhdXRob3JpemF0aW9uIGlzIGVuZm9yY2VkIGhlcmUgcGVyIGFjdGlvbi5cbiAgICogQHBhcmFtIHsoKSA9PiBQcm9taXNlPHZvaWQ+fSBhY3Rpb25GbiAtIEFjdGlvbiBib2R5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgX3Jlc3BvbmQoYWN0aW9uRm4pIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fbW91bnRPcHRpb25zKClcblxuICAgIHRoaXMuX2FwcGx5Q29yc0hlYWRlcnMob3B0aW9ucylcblxuICAgIGNvbnN0IGF1dGhvcml6ZWQgPSBhd2FpdCBhdXRob3JpemVKb2JzUmVxdWVzdCh7XG4gICAgICBhYmlsaXR5OiB0aGlzLmN1cnJlbnRBYmlsaXR5KCksXG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICByZXF1ZXN0OiB0aGlzLnJlcXVlc3QoKVxuICAgIH0pXG5cbiAgICBpZiAoIWF1dGhvcml6ZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiB7ZXJyb3I6IFwidW5hdXRob3JpemVkXCJ9LCBzdGF0dXM6IDQwMX0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhd2FpdCBhY3Rpb25GbigpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBoZWFsdGguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBoZWFsdGgoKSB7XG4gICAgYXdhaXQgdGhpcy5fcmVzcG9uZChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge1xuICAgICAgICBjYXBhYmlsaXRpZXM6IHtiYWNrZ3JvdW5kSm9iQ291bnREZWx0YXM6IDF9LFxuICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgc2VydmljZTogXCJ2ZWxvY2lvdXMtYmFja2dyb3VuZC1qb2JzXCJcbiAgICAgIH19KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzdGF0cy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIHN0YXRzKCkge1xuICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc25hcHNob3QgPSBhd2FpdCB0aGlzLl9zdG9yZSgpLmNvdW50U25hcHNob3QoKVxuXG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge1xuICAgICAgICBjYXBhYmlsaXRpZXM6IHtiYWNrZ3JvdW5kSm9iQ291bnREZWx0YXM6IDF9LFxuICAgICAgICBjb3VudHM6IHNuYXBzaG90LmNvdW50cyxcbiAgICAgICAgZ2VuZXJhdGVkQXRNczogRGF0ZS5ub3coKSxcbiAgICAgICAgcmV2aXNpb246IHNuYXBzaG90LnJldmlzaW9uLFxuICAgICAgICB0b3RhbDogc25hcHNob3QudG90YWxcbiAgICAgIH19KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBpbmRleC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGluZGV4KCkge1xuICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5wYXJhbXMoKVxuICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5fc2FuaXRpemVTdGF0dXMocGFyYW1zLnN0YXR1cylcbiAgICAgIGNvbnN0IGpvYk5hbWUgPSB0eXBlb2YgcGFyYW1zLmpvYk5hbWUgPT09IFwic3RyaW5nXCIgJiYgcGFyYW1zLmpvYk5hbWUubGVuZ3RoID4gMCA/IHBhcmFtcy5qb2JOYW1lIDogdW5kZWZpbmVkXG4gICAgICBjb25zdCBwYWdlID0gdGhpcy5fcG9zaXRpdmVJbnQocGFyYW1zLnBhZ2UsIDEpXG4gICAgICBjb25zdCBwZXJQYWdlID0gTWF0aC5taW4odGhpcy5fcG9zaXRpdmVJbnQocGFyYW1zLnBlclBhZ2UsIERFRkFVTFRfUEVSX1BBR0UpLCBNQVhfUEVSX1BBR0UpXG4gICAgICBjb25zdCB7c29ydENvbHVtbiwgc29ydERpcmVjdGlvbn0gPSB0aGlzLl9zYW5pdGl6ZVNvcnQocGFyYW1zLnNvcnQpXG4gICAgICBjb25zdCBzdG9yZSA9IHRoaXMuX3N0b3JlKClcbiAgICAgIGNvbnN0IGpvYnMgPSBhd2FpdCBzdG9yZS5saXN0Sm9icyh7am9iTmFtZSwgbGltaXQ6IHBlclBhZ2UsIG9mZnNldDogKHBhZ2UgLSAxKSAqIHBlclBhZ2UsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb24sIHN0YXR1c30pXG4gICAgICBjb25zdCB0b3RhbCA9IGF3YWl0IHN0b3JlLmNvdW50Sm9icyh7am9iTmFtZSwgc3RhdHVzfSlcblxuICAgICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IHtcbiAgICAgICAgam9iczogam9icy5tYXAoKGpvYikgPT4gdGhpcy5fc2VyaWFsaXplSm9iKGpvYikpLFxuICAgICAgICBwYWdpbmF0aW9uOiB7cGFnZSwgcGVyUGFnZSwgdG90YWwsIHRvdGFsUGFnZXM6IHBlclBhZ2UgPiAwID8gTWF0aC5jZWlsKHRvdGFsIC8gcGVyUGFnZSkgOiAwfVxuICAgICAgfX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNob3cuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBzaG93KCkge1xuICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgam9iID0gYXdhaXQgdGhpcy5fc3RvcmUoKS5nZXRKb2IodGhpcy5wYXJhbXMoKS5pZClcblxuICAgICAgaWYgKCFqb2IpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IHtlcnJvcjogXCJub3RfZm91bmRcIn0sIHN0YXR1czogNDA0fSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiB7am9iOiB0aGlzLl9zZXJpYWxpemVKb2Ioam9iKX19KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzY2hlZHVsZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIHNjaGVkdWxlKCkge1xuICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2NoZWR1bGVkID0gYXdhaXQgdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0U2NoZWR1bGVkQmFja2dyb3VuZEpvYnNDb25maWcoKVxuXG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge3NjaGVkdWxlOiB0aGlzLl9zZXJpYWxpemVTY2hlZHVsZShzY2hlZHVsZWQpfX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNlcmlhbGl6ZSBqb2IuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJvd30gam9iIC0gSm9iIHJvdy5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsID8+fSAtIFNlcmlhbGl6ZWQgam9iIGZvciB0aGUgQVBJLlxuICAgKi9cbiAgX3NlcmlhbGl6ZUpvYihqb2IpIHtcbiAgICBjb25zdCByZWRhY3RBcmdzID0gQm9vbGVhbih0aGlzLl9tb3VudE9wdGlvbnMoKS5yZWRhY3RBcmdzKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3M6IHJlZGFjdEFyZ3MgPyB1bmRlZmluZWQgOiBqb2IuYXJncyxcbiAgICAgIGFyZ3NSZWRhY3RlZDogcmVkYWN0QXJncyxcbiAgICAgIGF0dGVtcHRzOiBqb2IuYXR0ZW1wdHMsXG4gICAgICBjb21wbGV0ZWRBdE1zOiBqb2IuY29tcGxldGVkQXRNcyxcbiAgICAgIGNyZWF0ZWRBdE1zOiBqb2IuY3JlYXRlZEF0TXMsXG4gICAgICBleGVjdXRpb25Nb2RlOiBqb2IuZXhlY3V0aW9uTW9kZSxcbiAgICAgIGZhaWxlZEF0TXM6IGpvYi5mYWlsZWRBdE1zLFxuICAgICAgaGFuZGVkT2ZmQXRNczogam9iLmhhbmRlZE9mZkF0TXMsXG4gICAgICBpZDogam9iLmlkLFxuICAgICAgam9iTmFtZTogam9iLmpvYk5hbWUsXG4gICAgICBsYXN0RXJyb3I6IGpvYi5sYXN0RXJyb3IsXG4gICAgICBtYXhSZXRyaWVzOiBqb2IubWF4UmV0cmllcyxcbiAgICAgIG9ycGhhbmVkQXRNczogam9iLm9ycGhhbmVkQXRNcyxcbiAgICAgIHNjaGVkdWxlZEF0TXM6IGpvYi5zY2hlZHVsZWRBdE1zLFxuICAgICAgc3RhdHVzOiBqb2Iuc3RhdHVzLFxuICAgICAgd29ya2VySWQ6IGpvYi53b3JrZXJJZFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNlcmlhbGl6ZSBzY2hlZHVsZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlNjaGVkdWxlZEJhY2tncm91bmRKb2JzQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZH0gc2NoZWR1bGVkIC0gU2NoZWR1bGVkIGpvYnMgY29uZmlnLlxuICAgKiBAcmV0dXJucyB7QXJyYXk8UmVjb3JkPHN0cmluZywgPz4+fSAtIFNlcmlhbGl6ZWQgcmVjdXJyaW5nIGpvYnMuXG4gICAqL1xuICBfc2VyaWFsaXplU2NoZWR1bGUoc2NoZWR1bGVkKSB7XG4gICAgY29uc3Qgam9icyA9IHNjaGVkdWxlZD8uam9ic1xuXG4gICAgaWYgKCFqb2JzIHx8IHR5cGVvZiBqb2JzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gW11cblxuICAgIGNvbnN0IHJlZGFjdEFyZ3MgPSBCb29sZWFuKHRoaXMuX21vdW50T3B0aW9ucygpLnJlZGFjdEFyZ3MpXG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoam9icykubWFwKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGpvYnNbbmFtZV0gfHwgLyoqIEB0eXBlIHs/fSAqLyAoe30pXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3M6IHJlZGFjdEFyZ3MgPyB1bmRlZmluZWQgOiAoZW50cnkuYXJncyB8fCBbXSksXG4gICAgICAgIGNyb246IGVudHJ5LmNyb24sXG4gICAgICAgIGVuYWJsZWQ6IGVudHJ5LmVuYWJsZWQgIT09IGZhbHNlLFxuICAgICAgICBldmVyeTogZW50cnkuZXZlcnksXG4gICAgICAgIGpvYk5hbWU6IHR5cGVvZiBlbnRyeS5jbGFzcyA9PT0gXCJmdW5jdGlvblwiID8gZW50cnkuY2xhc3MubmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgb3B0aW9uczogZW50cnkub3B0aW9ucyB8fCB7fVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzYW5pdGl6ZSBzdGF0dXMuXG4gICAqIEBwYXJhbSB7P30gdmFsdWUgLSBSYXcgc3RhdHVzIHBhcmFtLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSAtIFZhbGlkIHN0YXR1cyBvciB1bmRlZmluZWQuXG4gICAqL1xuICBfc2FuaXRpemVTdGF0dXModmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIERBU0hCT0FSRF9TVEFUVVNFUy5pbmNsdWRlcyh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2FuaXRpemUgc29ydC5cbiAgICogQHBhcmFtIHs/fSB2YWx1ZSAtIFJhdyBzb3J0IHBhcmFtIChlLmcuIFwiY3JlYXRlZEF0TXNcIiBvciBcIi1mYWlsZWRBdE1zXCIpLlxuICAgKiBAcmV0dXJucyB7e3NvcnRDb2x1bW46IHN0cmluZywgc29ydERpcmVjdGlvbjogXCJBU0NcIiB8IFwiREVTQ1wifX0gLSBOb3JtYWxpemVkIHNvcnQuXG4gICAqL1xuICBfc2FuaXRpemVTb3J0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7c29ydENvbHVtbjogXCJjcmVhdGVkQXRNc1wiLCBzb3J0RGlyZWN0aW9uOiBcIkRFU0NcIn1cbiAgICB9XG5cbiAgICBjb25zdCBkZXNjZW5kaW5nID0gdmFsdWUuc3RhcnRzV2l0aChcIi1cIilcbiAgICBjb25zdCBrZXkgPSBkZXNjZW5kaW5nID8gdmFsdWUuc2xpY2UoMSkgOiB2YWx1ZVxuICAgIGNvbnN0IHNvcnRDb2x1bW4gPSBTT1JUQUJMRV9LRVlTLmluY2x1ZGVzKGtleSkgPyBrZXkgOiBcImNyZWF0ZWRBdE1zXCJcblxuICAgIHJldHVybiB7c29ydENvbHVtbiwgc29ydERpcmVjdGlvbjogZGVzY2VuZGluZyA/IFwiREVTQ1wiIDogXCJBU0NcIn1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHBvc2l0aXZlIGludC5cbiAgICogQHBhcmFtIHs/fSB2YWx1ZSAtIFJhdyBudW1lcmljIHBhcmFtLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZmFsbGJhY2sgLSBGYWxsYmFjayB3aGVuIGludmFsaWQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IC0gUG9zaXRpdmUgaW50ZWdlci5cbiAgICovXG4gIF9wb3NpdGl2ZUludCh2YWx1ZSwgZmFsbGJhY2spIHtcbiAgICBjb25zdCBudW1lcmljID0gTnVtYmVyKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWVbMF0gOiB2YWx1ZSlcblxuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG51bWVyaWMpIHx8IG51bWVyaWMgPCAxKSByZXR1cm4gZmFsbGJhY2tcblxuICAgIHJldHVybiBNYXRoLmZsb29yKG51bWVyaWMpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authorized dashboard count-delta channel. Clients subscribe with the mount
|
|
3
|
+
* path and their normal bearer token as `authenticationToken`.
|
|
4
|
+
*/
|
|
5
|
+
export default class BackgroundJobCountsChannel extends VelociousWebsocketChannel {
|
|
6
|
+
/**
|
|
7
|
+
* Registers the framework channel used by mounted jobs dashboards.
|
|
8
|
+
* @param {import("../../configuration.js").default} configuration - Configuration.
|
|
9
|
+
*/
|
|
10
|
+
static register(configuration: import("../../configuration.js").default): void;
|
|
11
|
+
/**
|
|
12
|
+
* Authorizes the subscription.
|
|
13
|
+
* @returns {Promise<boolean>} Whether the mount's normal dashboard authorization allows the subscription.
|
|
14
|
+
*/
|
|
15
|
+
canSubscribe(): Promise<boolean>;
|
|
16
|
+
/** @type {string} */
|
|
17
|
+
databaseIdentifier: string;
|
|
18
|
+
/**
|
|
19
|
+
* Matches only events from the database selected by the authorized mount.
|
|
20
|
+
* @param {import("../../http-server/websocket-channel.js").WebsocketJsonValue} broadcastParams - Publisher scope.
|
|
21
|
+
* @returns {boolean} Whether this subscription should receive the event.
|
|
22
|
+
*/
|
|
23
|
+
matches(broadcastParams: import("../../http-server/websocket-channel.js").WebsocketJsonValue): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Builds diagnostics.
|
|
26
|
+
* @returns {Record<string, string>} Non-sensitive diagnostics.
|
|
27
|
+
*/
|
|
28
|
+
debugSnapshot(): Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
import VelociousWebsocketChannel from "../../http-server/websocket-channel.js";
|
|
31
|
+
//# sourceMappingURL=counts-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"counts-channel.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/counts-channel.js"],"names":[],"mappings":"AAQA;;;GAGG;AACH;IA2DE;;;OAGG;IACH,+BAFW,OAAO,wBAAwB,EAAE,OAAO,QAIlD;IAhED;;;OAGG;IACH,gBAFa,OAAO,CAAC,OAAO,CAAC,CAgC5B;IAqBD,qBAAqB;IACrB,oBADW,MAAM,CACM;IApBvB;;;;OAIG;IACH,yBAHW,OAAO,wCAAwC,EAAE,kBAAkB,GACjE,OAAO,CAMnB;IAED;;;OAGG;IACH,iBAFa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlC;CAYF;sCA3EqC,wCAAwC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import { BACKGROUND_JOB_COUNTS_CHANNEL } from "../store.js";
|
|
3
|
+
import VelociousWebsocketChannel from "../../http-server/websocket-channel.js";
|
|
4
|
+
import { authorizeJobsRequest } from "./authorization.js";
|
|
5
|
+
import { getJobsMount } from "./registry.js";
|
|
6
|
+
import { normalizeMountPrefix } from "./path-matcher.js";
|
|
7
|
+
/**
|
|
8
|
+
* Authorized dashboard count-delta channel. Clients subscribe with the mount
|
|
9
|
+
* path and their normal bearer token as `authenticationToken`.
|
|
10
|
+
*/
|
|
11
|
+
export default class BackgroundJobCountsChannel extends VelociousWebsocketChannel {
|
|
12
|
+
/**
|
|
13
|
+
* Authorizes the subscription.
|
|
14
|
+
* @returns {Promise<boolean>} Whether the mount's normal dashboard authorization allows the subscription.
|
|
15
|
+
*/
|
|
16
|
+
async canSubscribe() {
|
|
17
|
+
if (typeof this.params.mountAt !== "string")
|
|
18
|
+
return false;
|
|
19
|
+
const mountAt = normalizeMountPrefix(this.params.mountAt);
|
|
20
|
+
const options = getJobsMount(this.session.configuration, mountAt);
|
|
21
|
+
if (!options || !this.session.upgradeRequest)
|
|
22
|
+
return false;
|
|
23
|
+
const token = typeof this.params.authenticationToken === "string"
|
|
24
|
+
? this.params.authenticationToken
|
|
25
|
+
: null;
|
|
26
|
+
const ability = await this.session.configuration.resolveAbility({
|
|
27
|
+
params: this.params,
|
|
28
|
+
request: this.session.upgradeRequest
|
|
29
|
+
});
|
|
30
|
+
const authorized = await authorizeJobsRequest({
|
|
31
|
+
ability,
|
|
32
|
+
configuration: this.session.configuration,
|
|
33
|
+
options,
|
|
34
|
+
request: this.session.upgradeRequest,
|
|
35
|
+
token
|
|
36
|
+
});
|
|
37
|
+
if (!authorized)
|
|
38
|
+
return false;
|
|
39
|
+
this.databaseIdentifier = options.databaseIdentifier
|
|
40
|
+
|| this.session.configuration.getBackgroundJobsConfig().databaseIdentifier
|
|
41
|
+
|| "default";
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Matches only events from the database selected by the authorized mount.
|
|
46
|
+
* @param {import("../../http-server/websocket-channel.js").WebsocketJsonValue} broadcastParams - Publisher scope.
|
|
47
|
+
* @returns {boolean} Whether this subscription should receive the event.
|
|
48
|
+
*/
|
|
49
|
+
matches(broadcastParams) {
|
|
50
|
+
if (!broadcastParams || typeof broadcastParams !== "object" || Array.isArray(broadcastParams))
|
|
51
|
+
return false;
|
|
52
|
+
return String(/** @type {Record<string, ?>} */ (broadcastParams).databaseIdentifier) === this.databaseIdentifier;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Builds diagnostics.
|
|
56
|
+
* @returns {Record<string, string>} Non-sensitive diagnostics.
|
|
57
|
+
*/
|
|
58
|
+
debugSnapshot() {
|
|
59
|
+
return { databaseIdentifier: this.databaseIdentifier };
|
|
60
|
+
}
|
|
61
|
+
/** @type {string} */
|
|
62
|
+
databaseIdentifier = "";
|
|
63
|
+
/**
|
|
64
|
+
* Registers the framework channel used by mounted jobs dashboards.
|
|
65
|
+
* @param {import("../../configuration.js").default} configuration - Configuration.
|
|
66
|
+
*/
|
|
67
|
+
static register(configuration) {
|
|
68
|
+
configuration.registerWebsocketChannel(BACKGROUND_JOB_COUNTS_CHANNEL, this);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRzLWNoYW5uZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFja2dyb3VuZC1qb2JzL3dlYi9jb3VudHMtY2hhbm5lbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sYUFBYSxDQUFBO0FBQ3pELE9BQU8seUJBQXlCLE1BQU0sd0NBQXdDLENBQUE7QUFDOUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sb0JBQW9CLENBQUE7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEyQixTQUFRLHlCQUF5QjtJQUMvRTs7O09BR0c7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFBO1FBRXpELE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDekQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRWpFLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUUxRCxNQUFNLEtBQUssR0FBRyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEtBQUssUUFBUTtZQUMvRCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUI7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUNSLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1lBQzlELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO1NBQ3JDLENBQUMsQ0FBQTtRQUNGLE1BQU0sVUFBVSxHQUFHLE1BQU0sb0JBQW9CLENBQUM7WUFDNUMsT0FBTztZQUNQLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDekMsT0FBTztZQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7WUFDcEMsS0FBSztTQUNOLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0I7ZUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxrQkFBa0I7ZUFDdkUsU0FBUyxDQUFBO1FBRWQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxlQUFlLElBQUksT0FBTyxlQUFlLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFM0csT0FBTyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQTtJQUNsSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtJQUV2Qjs7O09BR0c7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWE7UUFDM0IsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzdFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge0JBQ0tHUk9VTkRfSk9CX0NPVU5UU19DSEFOTkVMfSBmcm9tIFwiLi4vc3RvcmUuanNcIlxuaW1wb3J0IFZlbG9jaW91c1dlYnNvY2tldENoYW5uZWwgZnJvbSBcIi4uLy4uL2h0dHAtc2VydmVyL3dlYnNvY2tldC1jaGFubmVsLmpzXCJcbmltcG9ydCB7YXV0aG9yaXplSm9ic1JlcXVlc3R9IGZyb20gXCIuL2F1dGhvcml6YXRpb24uanNcIlxuaW1wb3J0IHtnZXRKb2JzTW91bnR9IGZyb20gXCIuL3JlZ2lzdHJ5LmpzXCJcbmltcG9ydCB7bm9ybWFsaXplTW91bnRQcmVmaXh9IGZyb20gXCIuL3BhdGgtbWF0Y2hlci5qc1wiXG5cbi8qKlxuICogQXV0aG9yaXplZCBkYXNoYm9hcmQgY291bnQtZGVsdGEgY2hhbm5lbC4gQ2xpZW50cyBzdWJzY3JpYmUgd2l0aCB0aGUgbW91bnRcbiAqIHBhdGggYW5kIHRoZWlyIG5vcm1hbCBiZWFyZXIgdG9rZW4gYXMgYGF1dGhlbnRpY2F0aW9uVG9rZW5gLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYWNrZ3JvdW5kSm9iQ291bnRzQ2hhbm5lbCBleHRlbmRzIFZlbG9jaW91c1dlYnNvY2tldENoYW5uZWwge1xuICAvKipcbiAgICogQXV0aG9yaXplcyB0aGUgc3Vic2NyaXB0aW9uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gV2hldGhlciB0aGUgbW91bnQncyBub3JtYWwgZGFzaGJvYXJkIGF1dGhvcml6YXRpb24gYWxsb3dzIHRoZSBzdWJzY3JpcHRpb24uXG4gICAqL1xuICBhc3luYyBjYW5TdWJzY3JpYmUoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnBhcmFtcy5tb3VudEF0ICE9PSBcInN0cmluZ1wiKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IG1vdW50QXQgPSBub3JtYWxpemVNb3VudFByZWZpeCh0aGlzLnBhcmFtcy5tb3VudEF0KVxuICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRKb2JzTW91bnQodGhpcy5zZXNzaW9uLmNvbmZpZ3VyYXRpb24sIG1vdW50QXQpXG5cbiAgICBpZiAoIW9wdGlvbnMgfHwgIXRoaXMuc2Vzc2lvbi51cGdyYWRlUmVxdWVzdCkgcmV0dXJuIGZhbHNlXG5cbiAgICBjb25zdCB0b2tlbiA9IHR5cGVvZiB0aGlzLnBhcmFtcy5hdXRoZW50aWNhdGlvblRva2VuID09PSBcInN0cmluZ1wiXG4gICAgICA/IHRoaXMucGFyYW1zLmF1dGhlbnRpY2F0aW9uVG9rZW5cbiAgICAgIDogbnVsbFxuICAgIGNvbnN0IGFiaWxpdHkgPSBhd2FpdCB0aGlzLnNlc3Npb24uY29uZmlndXJhdGlvbi5yZXNvbHZlQWJpbGl0eSh7XG4gICAgICBwYXJhbXM6IHRoaXMucGFyYW1zLFxuICAgICAgcmVxdWVzdDogdGhpcy5zZXNzaW9uLnVwZ3JhZGVSZXF1ZXN0XG4gICAgfSlcbiAgICBjb25zdCBhdXRob3JpemVkID0gYXdhaXQgYXV0aG9yaXplSm9ic1JlcXVlc3Qoe1xuICAgICAgYWJpbGl0eSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuc2Vzc2lvbi5jb25maWd1cmF0aW9uLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHJlcXVlc3Q6IHRoaXMuc2Vzc2lvbi51cGdyYWRlUmVxdWVzdCxcbiAgICAgIHRva2VuXG4gICAgfSlcblxuICAgIGlmICghYXV0aG9yaXplZCkgcmV0dXJuIGZhbHNlXG5cbiAgICB0aGlzLmRhdGFiYXNlSWRlbnRpZmllciA9IG9wdGlvbnMuZGF0YWJhc2VJZGVudGlmaWVyXG4gICAgICB8fCB0aGlzLnNlc3Npb24uY29uZmlndXJhdGlvbi5nZXRCYWNrZ3JvdW5kSm9ic0NvbmZpZygpLmRhdGFiYXNlSWRlbnRpZmllclxuICAgICAgfHwgXCJkZWZhdWx0XCJcblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBvbmx5IGV2ZW50cyBmcm9tIHRoZSBkYXRhYmFzZSBzZWxlY3RlZCBieSB0aGUgYXV0aG9yaXplZCBtb3VudC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9odHRwLXNlcnZlci93ZWJzb2NrZXQtY2hhbm5lbC5qc1wiKS5XZWJzb2NrZXRKc29uVmFsdWV9IGJyb2FkY2FzdFBhcmFtcyAtIFB1Ymxpc2hlciBzY29wZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhpcyBzdWJzY3JpcHRpb24gc2hvdWxkIHJlY2VpdmUgdGhlIGV2ZW50LlxuICAgKi9cbiAgbWF0Y2hlcyhicm9hZGNhc3RQYXJhbXMpIHtcbiAgICBpZiAoIWJyb2FkY2FzdFBhcmFtcyB8fCB0eXBlb2YgYnJvYWRjYXN0UGFyYW1zICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoYnJvYWRjYXN0UGFyYW1zKSkgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gU3RyaW5nKC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgPz59ICovIChicm9hZGNhc3RQYXJhbXMpLmRhdGFiYXNlSWRlbnRpZmllcikgPT09IHRoaXMuZGF0YWJhc2VJZGVudGlmaWVyXG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGRpYWdub3N0aWNzLlxuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gTm9uLXNlbnNpdGl2ZSBkaWFnbm9zdGljcy5cbiAgICovXG4gIGRlYnVnU25hcHNob3QoKSB7XG4gICAgcmV0dXJuIHtkYXRhYmFzZUlkZW50aWZpZXI6IHRoaXMuZGF0YWJhc2VJZGVudGlmaWVyfVxuICB9XG5cbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGRhdGFiYXNlSWRlbnRpZmllciA9IFwiXCJcblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBmcmFtZXdvcmsgY2hhbm5lbCB1c2VkIGJ5IG1vdW50ZWQgam9icyBkYXNoYm9hcmRzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBzdGF0aWMgcmVnaXN0ZXIoY29uZmlndXJhdGlvbikge1xuICAgIGNvbmZpZ3VyYXRpb24ucmVnaXN0ZXJXZWJzb2NrZXRDaGFubmVsKEJBQ0tHUk9VTkRfSk9CX0NPVU5UU19DSEFOTkVMLCB0aGlzKVxuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/index.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH;IACE;;;;;;;;;;;;;;OAcG;IACH,iHATG;QAAuD,aAAa,EAA5D,OAAO,wBAAwB,EAAE,OAAO;QAC3B,EAAE,EAAf,MAAM;QACuD,SAAS,GAAtE,OAAO,eAAe,EAAE,gBAAgB,CAAC,WAAW,CAAC;QACrC,YAAY;QACZ,cAAc;QACf,UAAU;QACX,kBAAkB;KACxC,GAAU,IAAI,CAsBhB;CACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import VelociousBackgroundJobsWebController from "./controller.js";
|
|
3
|
+
import BackgroundJobCountsChannel from "./counts-channel.js";
|
|
3
4
|
import { matchJobsApiPath, normalizeMountPrefix } from "./path-matcher.js";
|
|
4
5
|
import { registerJobsMount } from "./registry.js";
|
|
5
6
|
/**
|
|
@@ -37,6 +38,7 @@ export default class VelociousBackgroundJobsApi {
|
|
|
37
38
|
throw new Error("No configuration given");
|
|
38
39
|
const prefix = normalizeMountPrefix(at);
|
|
39
40
|
registerJobsMount(configuration, prefix, { accessTokens, allowedOrigins, authorize, databaseIdentifier, redactArgs });
|
|
41
|
+
BackgroundJobCountsChannel.register(configuration);
|
|
40
42
|
configuration.addRouteResolverHook(({ currentPath, request }) => {
|
|
41
43
|
const match = matchJobsApiPath({ method: request.httpMethod(), path: currentPath, prefix });
|
|
42
44
|
if (!match)
|
|
@@ -50,4 +52,4 @@ export default class VelociousBackgroundJobsApi {
|
|
|
50
52
|
});
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFja2dyb3VuZC1qb2JzL3dlYi9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxvQ0FBb0MsTUFBTSxpQkFBaUIsQ0FBQTtBQUNsRSxPQUFPLDBCQUEwQixNQUFNLHFCQUFxQixDQUFBO0FBQzVELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3hFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQTtBQUUvQzs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTywwQkFBMEI7SUFDN0M7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUM7UUFDM0csSUFBSSxDQUFDLGFBQWE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFFN0QsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFdkMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUE7UUFDbkgsMEJBQTBCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRWxELGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFFLE9BQU8sRUFBQyxFQUFFLEVBQUU7WUFDNUQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsRUFBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQTtZQUV6RixJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQTtZQUV2QixPQUFPO2dCQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDcEIsVUFBVSxFQUFFLDRCQUE0QjtnQkFDeEMsZUFBZSxFQUFFLG9DQUFvQztnQkFDckQsTUFBTSxFQUFFLEVBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBQzthQUN4RCxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IFZlbG9jaW91c0JhY2tncm91bmRKb2JzV2ViQ29udHJvbGxlciBmcm9tIFwiLi9jb250cm9sbGVyLmpzXCJcbmltcG9ydCBCYWNrZ3JvdW5kSm9iQ291bnRzQ2hhbm5lbCBmcm9tIFwiLi9jb3VudHMtY2hhbm5lbC5qc1wiXG5pbXBvcnQge21hdGNoSm9ic0FwaVBhdGgsIG5vcm1hbGl6ZU1vdW50UHJlZml4fSBmcm9tIFwiLi9wYXRoLW1hdGNoZXIuanNcIlxuaW1wb3J0IHtyZWdpc3RlckpvYnNNb3VudH0gZnJvbSBcIi4vcmVnaXN0cnkuanNcIlxuXG4vKipcbiAqIE1vdW50YWJsZSByZWFkLW9ubHkgYmFja2dyb3VuZC1qb2JzIGRhc2hib2FyZCBBUEkuIEluY2x1ZGUgaXQgaW4gYSByb3V0ZXMgZmlsZVxuICogdGhlIHdheSBTaWRla2lxOjpXZWIgaXMgbW91bnRlZCBpbiBSYWlsczpcbiAqXG4gKiBgYGBqc1xuICogcm91dGVzLmRyYXcoKHJvdXRlKSA9PiB7XG4gKiAgIHJvdXRlLm1vdW50KFZlbG9jaW91c0JhY2tncm91bmRKb2JzQXBpLCB7XG4gKiAgICAgYXQ6IFwiL3ZlbG9jaW91cy9qb2JzXCIsXG4gKiAgICAgYXV0aG9yaXplOiBhc3luYyAoe3JlcXVlc3QsIGFiaWxpdHl9KSA9PiB7IC4uLiB9LFxuICogICAgIGFjY2Vzc1Rva2VuczogW3Byb2Nlc3MuZW52LlZFTE9DSU9VU19KT0JTX1RPS0VOXVxuICogICB9KVxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNCYWNrZ3JvdW5kSm9ic0FwaSB7XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGpvYnMgQVBJIHVuZGVyIGBhdGAuIEltcGxlbWVudGVkIGFzIGEgcm91dGUtcmVzb2x2ZXIgaG9vayBzb1xuICAgKiB0aGUgY29udHJvbGxlciBjYW4gbGl2ZSBpbnNpZGUgdGhlIHZlbG9jaW91cyBwYWNrYWdlIHJhdGhlciB0aGFuIHRoZSBob3N0XG4gICAqIGFwcCdzIGBzcmMvcm91dGVzYCBkaXJlY3RvcnkuIEludm9rZWQgYnkgdGhlIHJvdXRpbmcgbGF5ZXIgZm9yIGVhY2hcbiAgICogYHJvdXRlLm1vdW50KC4uLilgIHJlZ2lzdHJhdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbiBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYXQgLSBNb3VudCBwYXRoIHByZWZpeCAoZS5nLiBcIi92ZWxvY2lvdXMvam9ic1wiKS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3JlZ2lzdHJ5LmpzXCIpLkpvYnNNb3VudE9wdGlvbnNbXCJhdXRob3JpemVcIl19IFthcmdzLmF1dGhvcml6ZV0gLSBBdXRob3JpemF0aW9uIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYXJncy5hY2Nlc3NUb2tlbnNdIC0gQWNjZXB0ZWQgYmVhcmVyIHRva2VucyBmb3IgY3Jvc3Mtb3JpZ2luL25hdGl2ZSBhY2Nlc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzLmFsbG93ZWRPcmlnaW5zXSAtIEFsbG93ZWQgQ09SUyBvcmlnaW5zIGZvciBicm93c2VyIGFjY2Vzcy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5yZWRhY3RBcmdzXSAtIFdoZW4gdHJ1ZSwgam9iIGFyZ3VtZW50cyBhcmUgb21pdHRlZCBmcm9tIHJlc3BvbnNlcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmRhdGFiYXNlSWRlbnRpZmllcl0gLSBEYXRhYmFzZSBpZGVudGlmaWVyIHRoZSBqb2JzIHN0b3JlIHJlYWRzIGZyb20uXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHN0YXRpYyBtb3VudEludG8oe2FjY2Vzc1Rva2VucywgYWxsb3dlZE9yaWdpbnMsIGF0LCBhdXRob3JpemUsIGNvbmZpZ3VyYXRpb24sIGRhdGFiYXNlSWRlbnRpZmllciwgcmVkYWN0QXJnc30pIHtcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbmZpZ3VyYXRpb24gZ2l2ZW5cIilcblxuICAgIGNvbnN0IHByZWZpeCA9IG5vcm1hbGl6ZU1vdW50UHJlZml4KGF0KVxuXG4gICAgcmVnaXN0ZXJKb2JzTW91bnQoY29uZmlndXJhdGlvbiwgcHJlZml4LCB7YWNjZXNzVG9rZW5zLCBhbGxvd2VkT3JpZ2lucywgYXV0aG9yaXplLCBkYXRhYmFzZUlkZW50aWZpZXIsIHJlZGFjdEFyZ3N9KVxuICAgIEJhY2tncm91bmRKb2JDb3VudHNDaGFubmVsLnJlZ2lzdGVyKGNvbmZpZ3VyYXRpb24pXG5cbiAgICBjb25maWd1cmF0aW9uLmFkZFJvdXRlUmVzb2x2ZXJIb29rKCh7Y3VycmVudFBhdGgsIHJlcXVlc3R9KSA9PiB7XG4gICAgICBjb25zdCBtYXRjaCA9IG1hdGNoSm9ic0FwaVBhdGgoe21ldGhvZDogcmVxdWVzdC5odHRwTWV0aG9kKCksIHBhdGg6IGN1cnJlbnRQYXRoLCBwcmVmaXh9KVxuXG4gICAgICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY3Rpb246IG1hdGNoLmFjdGlvbixcbiAgICAgICAgY29udHJvbGxlcjogXCJ2ZWxvY2lvdXNCYWNrZ3JvdW5kSm9ic1dlYlwiLFxuICAgICAgICBjb250cm9sbGVyQ2xhc3M6IFZlbG9jaW91c0JhY2tncm91bmRKb2JzV2ViQ29udHJvbGxlcixcbiAgICAgICAgcGFyYW1zOiB7Li4ubWF0Y2gucGFyYW1zLCB2ZWxvY2lvdXNKb2JzTW91bnRBdDogcHJlZml4fVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -21,7 +21,7 @@ export type JobsMountOptions = {
|
|
|
21
21
|
* - Authorization callback. Return true to allow the request.
|
|
22
22
|
*/
|
|
23
23
|
authorize?: ((args: {
|
|
24
|
-
request: import("../../http-server/client/request.js").default;
|
|
24
|
+
request: import("../../http-server/client/request.js").default | import("../../http-server/client/websocket-request.js").default;
|
|
25
25
|
ability: (import("../../authorization/ability.js").default | undefined);
|
|
26
26
|
token: (string | null);
|
|
27
27
|
configuration: import("../../configuration.js").default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/registry.js"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,iDALW,OAAO,wBAAwB,EAAE,OAAO,MACxC,MAAM,WACN,gBAAgB,GACd,IAAI,CAWhB;AAED;;;;;GAKG;AACH,4CAJW,OAAO,wBAAwB,EAAE,OAAO,MACxC,MAAM,GACJ,gBAAgB,GAAG,SAAS,CAIxC;;;;;;;;wBA3CoB;QAAC,OAAO,EAAE,OAAO,qCAAqC,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,CAAC,OAAO,gCAAgC,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAAC,aAAa,EAAE,OAAO,wBAAwB,EAAE,OAAO,CAAA;KAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/registry.js"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,iDALW,OAAO,wBAAwB,EAAE,OAAO,MACxC,MAAM,WACN,gBAAgB,GACd,IAAI,CAWhB;AAED;;;;;GAKG;AACH,4CAJW,OAAO,wBAAwB,EAAE,OAAO,MACxC,MAAM,GACJ,gBAAgB,GAAG,SAAS,CAIxC;;;;;;;;wBA3CoB;QAAC,OAAO,EAAE,OAAO,qCAAqC,EAAE,OAAO,GAAG,OAAO,+CAA+C,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,CAAC,OAAO,gCAAgC,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAAC,aAAa,EAAE,OAAO,wBAAwB,EAAE,OAAO,CAAA;KAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* JobsMountOptions type.
|
|
4
4
|
* @typedef {object} JobsMountOptions
|
|
5
|
-
* @property {(args: {request: import("../../http-server/client/request.js").default, ability: (import("../../authorization/ability.js").default | undefined), token: (string | null), configuration: import("../../configuration.js").default}) => (boolean | void | Promise<boolean | void>)} [authorize] - Authorization callback. Return true to allow the request.
|
|
5
|
+
* @property {(args: {request: import("../../http-server/client/request.js").default | import("../../http-server/client/websocket-request.js").default, ability: (import("../../authorization/ability.js").default | undefined), token: (string | null), configuration: import("../../configuration.js").default}) => (boolean | void | Promise<boolean | void>)} [authorize] - Authorization callback. Return true to allow the request.
|
|
6
6
|
* @property {string[]} [accessTokens] - Bearer tokens accepted for cross-origin/native access.
|
|
7
7
|
* @property {string[]} [allowedOrigins] - Origins allowed for cross-origin browser access.
|
|
8
8
|
* @property {boolean} [redactArgs] - When true, job arguments are omitted from API responses.
|
|
@@ -41,4 +41,4 @@ export function registerJobsMount(configuration, at, options) {
|
|
|
41
41
|
export function getJobsMount(configuration, at) {
|
|
42
42
|
return registry.get(configuration)?.get(at);
|
|
43
43
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmFja2dyb3VuZC1qb2JzL3dlYi9yZWdpc3RyeS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7Ozs7O0dBUUc7QUFFSDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUU5Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxPQUFPO0lBQzFELElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7SUFFeEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFDbEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ3pCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUU7SUFDNUMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogSm9ic01vdW50T3B0aW9ucyB0eXBlLlxuICogQHR5cGVkZWYge29iamVjdH0gSm9ic01vdW50T3B0aW9uc1xuICogQHByb3BlcnR5IHsoYXJnczoge3JlcXVlc3Q6IGltcG9ydChcIi4uLy4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuLi8uLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXJlcXVlc3QuanNcIikuZGVmYXVsdCwgYWJpbGl0eTogKGltcG9ydChcIi4uLy4uL2F1dGhvcml6YXRpb24vYWJpbGl0eS5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkKSwgdG9rZW46IChzdHJpbmcgfCBudWxsKSwgY29uZmlndXJhdGlvbjogaW1wb3J0KFwiLi4vLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSkgPT4gKGJvb2xlYW4gfCB2b2lkIHwgUHJvbWlzZTxib29sZWFuIHwgdm9pZD4pfSBbYXV0aG9yaXplXSAtIEF1dGhvcml6YXRpb24gY2FsbGJhY2suIFJldHVybiB0cnVlIHRvIGFsbG93IHRoZSByZXF1ZXN0LlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2FjY2Vzc1Rva2Vuc10gLSBCZWFyZXIgdG9rZW5zIGFjY2VwdGVkIGZvciBjcm9zcy1vcmlnaW4vbmF0aXZlIGFjY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFthbGxvd2VkT3JpZ2luc10gLSBPcmlnaW5zIGFsbG93ZWQgZm9yIGNyb3NzLW9yaWdpbiBicm93c2VyIGFjY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3JlZGFjdEFyZ3NdIC0gV2hlbiB0cnVlLCBqb2IgYXJndW1lbnRzIGFyZSBvbWl0dGVkIGZyb20gQVBJIHJlc3BvbnNlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGF0YWJhc2VJZGVudGlmaWVyXSAtIERhdGFiYXNlIGlkZW50aWZpZXIgdGhlIGpvYnMgc3RvcmUgcmVhZHMgZnJvbS5cbiAqL1xuXG4vKipcbiAqIE1vdW50IG9wdGlvbnMgYXJlIGtleWVkIGJ5IGNvbmZpZ3VyYXRpb24gc28gbXVsdGlwbGUgY29uZmlndXJhdGlvbnMgKGUuZy5cbiAqIGFjcm9zcyB0ZXN0cykgbmV2ZXIgc2hhcmUgc3RhdGUsIGFuZCBieSBtb3VudCBwYXRoIHNvIGEgc2luZ2xlIGNvbmZpZ3VyYXRpb25cbiAqIGNhbiBtb3VudCB0aGUgZGFzaGJvYXJkIGF0IG1vcmUgdGhhbiBvbmUgcHJlZml4LiBGdW5jdGlvbnMgaW4gdGhlIG9wdGlvbnNcbiAqICh0aGUgYGF1dGhvcml6ZWAgY2FsbGJhY2spIGNhbid0IHRyYXZlbCB0aHJvdWdoIHJvdXRlIHBhcmFtcywgc28gdGhlXG4gKiBjb250cm9sbGVyIGxvb2tzIHRoZW0gdXAgaGVyZSB1c2luZyB0aGUgcGxhaW4gYGF0YCBzdHJpbmcgaXQgcmVjZWl2ZXMuXG4gKiBAdHlwZSB7V2Vha01hcDxpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHQsIE1hcDxzdHJpbmcsIEpvYnNNb3VudE9wdGlvbnM+Pn1cbiAqL1xuY29uc3QgcmVnaXN0cnkgPSBuZXcgV2Vha01hcCgpXG5cbi8qKlxuICogUnVucyB0aGUgcmVnaXN0ZXJKb2JzTW91bnQgaGVscGVyLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHtzdHJpbmd9IGF0IC0gTm9ybWFsaXplZCBtb3VudCBwYXRoLlxuICogQHBhcmFtIHtKb2JzTW91bnRPcHRpb25zfSBvcHRpb25zIC0gTW91bnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVySm9ic01vdW50KGNvbmZpZ3VyYXRpb24sIGF0LCBvcHRpb25zKSB7XG4gIGxldCBieVBhdGggPSByZWdpc3RyeS5nZXQoY29uZmlndXJhdGlvbilcblxuICBpZiAoIWJ5UGF0aCkge1xuICAgIGJ5UGF0aCA9IG5ldyBNYXAoKVxuICAgIHJlZ2lzdHJ5LnNldChjb25maWd1cmF0aW9uLCBieVBhdGgpXG4gIH1cblxuICBieVBhdGguc2V0KGF0LCBvcHRpb25zKVxufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGdldEpvYnNNb3VudCBoZWxwZXIuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXQgLSBOb3JtYWxpemVkIG1vdW50IHBhdGguXG4gKiBAcmV0dXJucyB7Sm9ic01vdW50T3B0aW9ucyB8IHVuZGVmaW5lZH0gLSBNb3VudCBvcHRpb25zIGlmIHJlZ2lzdGVyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRKb2JzTW91bnQoY29uZmlndXJhdGlvbiwgYXQpIHtcbiAgcmV0dXJuIHJlZ2lzdHJ5LmdldChjb25maWd1cmF0aW9uKT8uZ2V0KGF0KVxufVxuIl19
|