@decaf-ts/integrations 0.3.4 → 0.3.5
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/dist/integrations.cjs +3 -3
- package/dist/integrations.js +3 -3
- package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +4 -0
- package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +3 -2
- package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +95 -0
- package/lib/cjs/graph/execution/index.cjs +4 -2
- package/lib/cjs/graph/index.cjs +7 -2
- package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +87 -0
- package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +25 -3
- package/lib/cjs/graph/loops/index.cjs +3 -2
- package/lib/cjs/graph/nodes/agent.cjs +110 -0
- package/lib/cjs/graph/nodes/category-styles.cjs +38 -0
- package/lib/cjs/graph/nodes/flow-control.cjs +436 -0
- package/lib/cjs/graph/nodes/index.cjs +34 -0
- package/lib/cjs/graph/nodes/triggers.cjs +250 -0
- package/lib/cjs/graph/types.cjs +2 -2
- package/lib/cjs/index.cjs +3 -3
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +5 -4
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs +5 -4
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +5 -4
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +8 -7
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +5 -4
- package/lib/cjs/keycloak/services/KeycloakService.cjs +5 -3
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs +5 -4
- package/lib/cjs/keycloak/services/runtime.cjs +20 -0
- package/lib/cjs/kibana/services/KibanaAuthService.cjs +6 -5
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs +9 -8
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs +7 -6
- package/lib/cjs/kibana/services/KibanaRoleService.cjs +5 -4
- package/lib/cjs/kibana/services/KibanaService.cjs +4 -2
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs +5 -4
- package/lib/cjs/kibana/services/KibanaUserService.cjs +5 -4
- package/lib/cjs/kibana/services/runtime.cjs +20 -0
- package/lib/esm/graph/execution/CodeSandboxEvaluator.js +18 -0
- package/lib/esm/graph/execution/GraphExecutionEngine.js +2 -1
- package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +90 -0
- package/lib/esm/graph/execution/index.js +3 -1
- package/lib/esm/graph/index.js +6 -1
- package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +82 -0
- package/lib/esm/graph/loops/GraphConditionEvaluator.js +24 -2
- package/lib/esm/graph/loops/index.js +2 -1
- package/lib/esm/graph/nodes/agent.js +101 -0
- package/lib/esm/graph/nodes/category-styles.js +34 -0
- package/lib/esm/graph/nodes/flow-control.js +427 -0
- package/lib/esm/graph/nodes/index.js +17 -0
- package/lib/esm/graph/nodes/triggers.js +241 -0
- package/lib/esm/graph/types.js +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/esm/keycloak/services/KeycloakAuthService.js +4 -3
- package/lib/esm/keycloak/services/KeycloakClientService.js +4 -3
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +4 -3
- package/lib/esm/keycloak/services/KeycloakRealmService.js +4 -3
- package/lib/esm/keycloak/services/KeycloakRoleService.js +4 -3
- package/lib/esm/keycloak/services/KeycloakService.js +4 -2
- package/lib/esm/keycloak/services/KeycloakUserService.js +4 -3
- package/lib/esm/keycloak/services/runtime.js +15 -0
- package/lib/esm/kibana/services/KibanaAuthService.js +5 -4
- package/lib/esm/kibana/services/KibanaDashboardService.js +5 -4
- package/lib/esm/kibana/services/KibanaDataViewService.js +4 -3
- package/lib/esm/kibana/services/KibanaRoleService.js +4 -3
- package/lib/esm/kibana/services/KibanaService.js +3 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js +4 -3
- package/lib/esm/kibana/services/KibanaUserService.js +4 -3
- package/lib/esm/kibana/services/runtime.js +15 -0
- package/lib/types/graph/execution/CodeSandboxEvaluator.d.cts +53 -0
- package/lib/types/graph/execution/CodeSandboxEvaluator.d.mts +53 -0
- package/lib/types/graph/execution/GraphExecutionEngine.d.cts +10 -0
- package/lib/types/graph/execution/GraphExecutionEngine.d.mts +10 -0
- package/lib/types/graph/execution/SwitchGraphNodeExecutor.d.cts +42 -0
- package/lib/types/graph/execution/SwitchGraphNodeExecutor.d.mts +42 -0
- package/lib/types/graph/execution/index.d.cts +2 -0
- package/lib/types/graph/execution/index.d.mts +2 -0
- package/lib/types/graph/index.d.cts +4 -0
- package/lib/types/graph/index.d.mts +4 -0
- package/lib/types/graph/loops/ConditionExpressionEvaluator.d.cts +36 -0
- package/lib/types/graph/loops/ConditionExpressionEvaluator.d.mts +36 -0
- package/lib/types/graph/loops/GraphConditionEvaluator.d.cts +20 -4
- package/lib/types/graph/loops/GraphConditionEvaluator.d.mts +20 -4
- package/lib/types/graph/loops/index.d.cts +1 -0
- package/lib/types/graph/loops/index.d.mts +1 -0
- package/lib/types/graph/nodes/agent.d.cts +44 -0
- package/lib/types/graph/nodes/agent.d.mts +44 -0
- package/lib/types/graph/nodes/category-styles.d.cts +8 -0
- package/lib/types/graph/nodes/category-styles.d.mts +8 -0
- package/lib/types/graph/nodes/flow-control.d.cts +104 -0
- package/lib/types/graph/nodes/flow-control.d.mts +104 -0
- package/lib/types/graph/nodes/index.d.cts +16 -0
- package/lib/types/graph/nodes/index.d.mts +16 -0
- package/lib/types/graph/nodes/triggers.d.cts +53 -0
- package/lib/types/graph/nodes/triggers.d.mts +53 -0
- package/lib/types/graph/types.d.cts +102 -0
- package/lib/types/graph/types.d.mts +102 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/keycloak/services/runtime.d.cts +6 -0
- package/lib/types/keycloak/services/runtime.d.mts +6 -0
- package/lib/types/kibana/services/runtime.d.cts +6 -0
- package/lib/types/kibana/services/runtime.d.mts +6 -0
- package/package.json +1 -1
|
@@ -11,6 +11,7 @@ import { BadRequestError, ConflictError, InternalError, NotFoundError, } from "@
|
|
|
11
11
|
import { ClientBasedService, service } from "@decaf-ts/core";
|
|
12
12
|
import Axios from "axios";
|
|
13
13
|
import * as https from "node:https";
|
|
14
|
+
import { resolveKibanaIsProduction } from "./runtime.js";
|
|
14
15
|
import { KibanaAuthService } from "./KibanaAuthService.js";
|
|
15
16
|
export class KibanaUserService extends ClientBasedService {
|
|
16
17
|
async initialize(...args) {
|
|
@@ -86,7 +87,7 @@ export class KibanaUserService extends ClientBasedService {
|
|
|
86
87
|
baseURL: `${config.protocol}://${config.host}`,
|
|
87
88
|
validateStatus: () => true,
|
|
88
89
|
httpsAgent: new https.Agent({
|
|
89
|
-
rejectUnauthorized: (this.config
|
|
90
|
+
rejectUnauthorized: (resolveKibanaIsProduction(this.config)),
|
|
90
91
|
}),
|
|
91
92
|
});
|
|
92
93
|
}
|
|
@@ -136,7 +137,7 @@ export class KibanaUserService extends ClientBasedService {
|
|
|
136
137
|
: undefined,
|
|
137
138
|
validateStatus: () => true,
|
|
138
139
|
httpsAgent: new https.Agent({
|
|
139
|
-
rejectUnauthorized: (this.config
|
|
140
|
+
rejectUnauthorized: (resolveKibanaIsProduction(this.config)),
|
|
140
141
|
}),
|
|
141
142
|
...extra,
|
|
142
143
|
});
|
|
@@ -146,4 +147,4 @@ __decorate([
|
|
|
146
147
|
service(),
|
|
147
148
|
__metadata("design:type", KibanaAuthService)
|
|
148
149
|
], KibanaUserService.prototype, "authService", void 0);
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2liYW5hVXNlclNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMva2liYW5hL3NlcnZpY2VzL0tpYmFuYVVzZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0QsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsK0JBQTRCO0FBRXhELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFHdEM7SUFJQyxLQUFLLENBQUMsVUFBVSxDQUNkLEdBQUcsSUFBNkI7UUFFaEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQ25FLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFzQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUNkLElBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLFNBQStCLEVBQy9CLEdBQUcsSUFBNkI7UUFF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e1xuICBCYWRSZXF1ZXN0RXJyb3IsXG4gIENvbmZsaWN0RXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29udGV4dHVhbEFyZ3MsIE1heWJlQ29udGV4dHVhbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ2xpZW50QmFzZWRTZXJ2aWNlLCBzZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEtpYmFuYVNldHVwQ29uZmlnLCBLaWJhbmFVc2VyIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgQXhpb3MsIHsgQXhpb3NJbnN0YW5jZSB9IGZyb20gXCJheGlvc1wiO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSBcIm5vZGU6aHR0cHNcIjtcbmltcG9ydCB7IEtpYmFuYUF1dGhTZXJ2aWNlIH0gZnJvbSBcIi4vS2liYW5hQXV0aFNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEtpYmFuYVVzZXJTZXJ2aWNlIGV4dGVuZHMgQ2xpZW50QmFzZWRTZXJ2aWNlPFxuICBBeGlvc0luc3RhbmNlLFxuICBLaWJhbmFTZXR1cENvbmZpZ1xuPiB7XG4gIEBzZXJ2aWNlKClcbiAgcHJvdGVjdGVkIGF1dGhTZXJ2aWNlITogS2liYW5hQXV0aFNlcnZpY2U7XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHsgY29uZmlnOiBLaWJhbmFTZXR1cENvbmZpZzsgY2xpZW50OiBBeGlvc0luc3RhbmNlIH0+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcImluaXRpYWxpemVcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVxuICAgICk7XG4gICAgY29uc3QgY29uZmlnID0gY3R4QXJnc1swXSBhcyBLaWJhbmFTZXR1cENvbmZpZztcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgY29uc3QgY2xpZW50ID0gdGhpcy5jcmVhdGVIdHRwQ2xpZW50KGNvbmZpZyk7XG4gICAgdGhpcy5fY2xpZW50ID0gY2xpZW50O1xuICAgIHJldHVybiB7IGNvbmZpZywgY2xpZW50IH07XG4gIH1cblxuICBhc3luYyBjcmVhdGVVc2VyKFxuICAgIHVzZXI6IEtpYmFuYVVzZXIsXG4gICAgcmVhbG1OYW1lOiBzdHJpbmcsXG4gICAgcm9sZU5hbWVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcImNyZWF0ZVVzZXJcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMuY3JlYXRlVXNlclxuICAgICk7XG4gICAgY29uc3QgZGVmYXVsdFJvbGUgPSB0aGlzLm5vcm1hbGl6ZVJvbGVDb25maWcocmVhbG1OYW1lKS5uYW1lO1xuICAgIGNvbnN0IHBheWxvYWRSb2xlcyA9XG4gICAgICByb2xlTmFtZXMgJiYgcm9sZU5hbWVzLmxlbmd0aCA+IDAgPyByb2xlTmFtZXMgOiBbZGVmYXVsdFJvbGVdO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFxuICAgICAgXCJQT1NUXCIsXG4gICAgICBgJHt0aGlzLmNvbmZpZy5wcm90b2NvbH06Ly8ke3RoaXMuY29uZmlnLmVzX2hvc3R9L19zZWN1cml0eS91c2VyLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXIudXNlcm5hbWUpfWAsXG4gICAgICB7XG4gICAgICAgIHBhc3N3b3JkOiB1c2VyLnBhc3N3b3JkLFxuICAgICAgICBmdWxsX25hbWU6IHVzZXIuZnVsbF9uYW1lLFxuICAgICAgICBlbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgZW5hYmxlZDogdXNlci5lbmFibGVkID8/IHRydWUsXG4gICAgICAgIG1ldGFkYXRhOiB1c2VyLm1ldGFkYXRhID8/IHt9LFxuICAgICAgICByb2xlczogdXNlci5yb2xlcyA/PyBwYXlsb2FkUm9sZXMsXG4gICAgICB9LFxuICAgICAgdGhpcy5jb25maWcuYWRtaW5BcGlVc2VyLFxuICAgICAgeyBoZWFkZXJzOiB7IFwia2JuLXhzcmZcIjogXCJ0cnVlXCIsIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0gfSxcbiAgICAgIDIwMCxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApO1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gMzAwKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFVuYWJsZSB0byBjcmVhdGUgdXNlciAke3VzZXIudXNlcm5hbWV9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YDtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cyBhcyBudW1iZXI7XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDQgfHwgbWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibm90IGZvdW5kXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDA5IHx8IG1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImNvbmZsaWN0XCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDEgfHwgc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVVc2VyKFxuICAgIHVzZXI6IEtpYmFuYVVzZXIsXG4gICAgcmVhbG1OYW1lOiBzdHJpbmcsXG4gICAgcm9sZU5hbWVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcInVwZGF0ZVVzZXJcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMudXBkYXRlVXNlclxuICAgICk7XG4gICAgY29uc3QgZGVmYXVsdFJvbGUgPSB0aGlzLm5vcm1hbGl6ZVJvbGVDb25maWcocmVhbG1OYW1lKS5uYW1lO1xuICAgIGNvbnN0IHBheWxvYWRSb2xlcyA9XG4gICAgICByb2xlTmFtZXMgJiYgcm9sZU5hbWVzLmxlbmd0aCA+IDAgPyByb2xlTmFtZXMgOiBbZGVmYXVsdFJvbGVdO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFxuICAgICAgXCJQVVRcIixcbiAgICAgIGAke3RoaXMuY29uZmlnLnByb3RvY29sfTovLyR7dGhpcy5jb25maWcuZXNfaG9zdH0vX3NlY3VyaXR5L3VzZXIvJHtlbmNvZGVVUklDb21wb25lbnQodXNlci51c2VybmFtZSl9YCxcbiAgICAgIHtcbiAgICAgICAgcGFzc3dvcmQ6IHVzZXIucGFzc3dvcmQsXG4gICAgICAgIGZ1bGxfbmFtZTogdXNlci5mdWxsX25hbWUsXG4gICAgICAgIGVtYWlsOiB1c2VyLmVtYWlsLFxuICAgICAgICBlbmFibGVkOiB1c2VyLmVuYWJsZWQgPz8gdHJ1ZSxcbiAgICAgICAgbWV0YWRhdGE6IHVzZXIubWV0YWRhdGEgPz8ge30sXG4gICAgICAgIHJvbGVzOiB1c2VyLnJvbGVzID8/IHBheWxvYWRSb2xlcyxcbiAgICAgIH0sXG4gICAgICB0aGlzLmNvbmZpZy5hZG1pbkFwaVVzZXIsXG4gICAgICB7IGhlYWRlcnM6IHsgXCJrYm4teHNyZlwiOiBcInRydWVcIiwgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSB9LFxuICAgICAgMjAwLFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSAzMDApIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVW5hYmxlIHRvIHVwZGF0ZSB1c2VyICR7dXNlci51c2VybmFtZX06ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gO1xuICAgICAgY29uc3Qgc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzIGFzIG51bWJlcjtcbiAgICAgIGlmIChzdGF0dXMgPT09IDQwNCB8fCBtZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJub3QgZm91bmRcIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDkgfHwgbWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiY29uZmxpY3RcIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0RXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0dXMgPT09IDQwMSB8fCBzdGF0dXMgPT09IDQwMykge1xuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSHR0cENsaWVudChjb25maWc6IEtpYmFuYVNldHVwQ29uZmlnKTogQXhpb3NJbnN0YW5jZSB7XG4gICAgcmV0dXJuIEF4aW9zLmNyZWF0ZSh7XG4gICAgICBiYXNlVVJMOiBgJHtjb25maWcucHJvdG9jb2x9Oi8vJHtjb25maWcuaG9zdH1gLFxuICAgICAgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUsXG4gICAgICBodHRwc0FnZW50OiBuZXcgaHR0cHMuQWdlbnQoe1xuICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6ICgodGhpcy5jb25maWcgYXMgYW55KS5pc1Byb2R1Y3Rpb24oKSksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUVycm9yKGVycm9yOiBFcnJvcik6IEVycm9yIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IubWVzc2FnZSB8fCBlcnJvci5uYW1lIHx8IFwiVW5rbm93biBlcnJvclwiO1xuICAgIGNvbnN0IGxvd2VyTWVzc2FnZSA9IG1lc3NhZ2UudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJub3QgZm91bmRcIikgfHwgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDA0XCIpKSB7XG4gICAgICByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiYWxyZWFkeSBleGlzdHNcIikgfHxcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImNvbmZsaWN0XCIpIHx8XG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MDlcIilcbiAgICApIHtcbiAgICAgIHJldHVybiBuZXcgQ29uZmxpY3RFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJpbnZhbGlkXCIpIHx8XG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJiYWQgcmVxdWVzdFwiKSB8fFxuICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDAwXCIpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV3IEJhZFJlcXVlc3RFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAobG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwidW5hdXRob3JpemVkXCIpIHx8IGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQwMVwiKSkge1xuICAgICAgcmV0dXJuIG5ldyBOb3RGb3VuZEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJmb3JiaWRkZW5cIikgfHwgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDAzXCIpKSB7XG4gICAgICByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbnRlcm5hbEVycm9yKG1lc3NhZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVSb2xlQ29uZmlnKFxuICAgIHJlYWxtTmFtZTogc3RyaW5nLFxuICAgIHBheWxvYWQ6IFBhcnRpYWw8eyBuYW1lPzogc3RyaW5nIH0+ID0ge31cbiAgKTogeyBuYW1lOiBzdHJpbmcgfSB7XG4gICAgY29uc3Qgc3VmZml4ID0gcmVhbG1OYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuY29uZmlnLnJvbGUgPz8ge307XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHBheWxvYWQubmFtZSA/PyBiYXNlLm5hbWUgPz8gYHBsYV8ke3N1ZmZpeH1fcmVhZGVyYCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0KFxuICAgIG1ldGhvZDogXCJHRVRcIiB8IFwiUE9TVFwiIHwgXCJQVVRcIiB8IFwiREVMRVRFXCIsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogdW5rbm93bixcbiAgICBhcGlVc2VyOiBLaWJhbmFVc2VyIHwgdW5kZWZpbmVkLFxuICAgIGV4dHJhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHN1Y2Nlc3NDb2RlOiBudW1iZXIsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8YW55PlxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmVxdWVzdCk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnJlcXVlc3Qoe1xuICAgICAgbWV0aG9kLFxuICAgICAgdXJsLFxuICAgICAgZGF0YTpcbiAgICAgICAgcGF5bG9hZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IHR5cGVvZiBwYXlsb2FkID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IHBheWxvYWRcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXG4gICAgICBhdXRoOiBhcGlVc2VyXG4gICAgICAgID8geyB1c2VybmFtZTogYXBpVXNlci51c2VybmFtZSwgcGFzc3dvcmQ6IGFwaVVzZXIucGFzc3dvcmQgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlLFxuICAgICAgaHR0cHNBZ2VudDogbmV3IGh0dHBzLkFnZW50KHtcbiAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiAoKHRoaXMuY29uZmlnIGFzIGFueSkuaXNQcm9kdWN0aW9uKCkpLFxuICAgICAgfSksXG4gICAgICAuLi5leHRyYSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2liYW5hVXNlclNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMva2liYW5hL3NlcnZpY2VzL0tpYmFuYVVzZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0QsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUscUJBQWtCO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwrQkFBNEI7QUFFeEQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGtCQUd0QztJQUlDLEtBQUssQ0FBQyxVQUFVLENBQ2QsR0FBRyxJQUE2QjtRQUVoQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDbkUsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQXNCLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQ2QsSUFBZ0IsRUFDaEIsU0FB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QkFBaUI7c0RBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRSZXF1ZXN0RXJyb3IsXG4gIENvbmZsaWN0RXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29udGV4dHVhbEFyZ3MsIE1heWJlQ29udGV4dHVhbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ2xpZW50QmFzZWRTZXJ2aWNlLCBzZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEtpYmFuYVNldHVwQ29uZmlnLCBLaWJhbmFVc2VyIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgQXhpb3MsIHsgQXhpb3NJbnN0YW5jZSB9IGZyb20gXCJheGlvc1wiO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSBcIm5vZGU6aHR0cHNcIjtcbmltcG9ydCB7IHJlc29sdmVLaWJhbmFJc1Byb2R1Y3Rpb24gfSBmcm9tIFwiLi9ydW50aW1lXCI7XG5pbXBvcnQgeyBLaWJhbmFBdXRoU2VydmljZSB9IGZyb20gXCIuL0tpYmFuYUF1dGhTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBLaWJhbmFVc2VyU2VydmljZSBleHRlbmRzIENsaWVudEJhc2VkU2VydmljZTxcbiAgQXhpb3NJbnN0YW5jZSxcbiAgS2liYW5hU2V0dXBDb25maWdcbj4ge1xuICBAc2VydmljZSgpXG4gIHByb3RlY3RlZCBhdXRoU2VydmljZSE6IEtpYmFuYUF1dGhTZXJ2aWNlO1xuXG4gIGFzeW5jIGluaXRpYWxpemUoXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTx7IGNvbmZpZzogS2liYW5hU2V0dXBDb25maWc7IGNsaWVudDogQXhpb3NJbnN0YW5jZSB9PiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJpbml0aWFsaXplXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLmluaXRpYWxpemVcbiAgICApO1xuICAgIGNvbnN0IGNvbmZpZyA9IGN0eEFyZ3NbMF0gYXMgS2liYW5hU2V0dXBDb25maWc7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuY3JlYXRlSHR0cENsaWVudChjb25maWcpO1xuICAgIHRoaXMuX2NsaWVudCA9IGNsaWVudDtcbiAgICByZXR1cm4geyBjb25maWcsIGNsaWVudCB9O1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlVXNlcihcbiAgICB1c2VyOiBLaWJhbmFVc2VyLFxuICAgIHJlYWxtTmFtZTogc3RyaW5nLFxuICAgIHJvbGVOYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJjcmVhdGVVc2VyXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLmNyZWF0ZVVzZXJcbiAgICApO1xuICAgIGNvbnN0IGRlZmF1bHRSb2xlID0gdGhpcy5ub3JtYWxpemVSb2xlQ29uZmlnKHJlYWxtTmFtZSkubmFtZTtcbiAgICBjb25zdCBwYXlsb2FkUm9sZXMgPVxuICAgICAgcm9sZU5hbWVzICYmIHJvbGVOYW1lcy5sZW5ndGggPiAwID8gcm9sZU5hbWVzIDogW2RlZmF1bHRSb2xlXTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICAgIFwiUE9TVFwiLFxuICAgICAgYCR7dGhpcy5jb25maWcucHJvdG9jb2x9Oi8vJHt0aGlzLmNvbmZpZy5lc19ob3N0fS9fc2VjdXJpdHkvdXNlci8ke2VuY29kZVVSSUNvbXBvbmVudCh1c2VyLnVzZXJuYW1lKX1gLFxuICAgICAge1xuICAgICAgICBwYXNzd29yZDogdXNlci5wYXNzd29yZCxcbiAgICAgICAgZnVsbF9uYW1lOiB1c2VyLmZ1bGxfbmFtZSxcbiAgICAgICAgZW1haWw6IHVzZXIuZW1haWwsXG4gICAgICAgIGVuYWJsZWQ6IHVzZXIuZW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICBtZXRhZGF0YTogdXNlci5tZXRhZGF0YSA/PyB7fSxcbiAgICAgICAgcm9sZXM6IHVzZXIucm9sZXMgPz8gcGF5bG9hZFJvbGVzLFxuICAgICAgfSxcbiAgICAgIHRoaXMuY29uZmlnLmFkbWluQXBpVXNlcixcbiAgICAgIHsgaGVhZGVyczogeyBcImtibi14c3JmXCI6IFwidHJ1ZVwiLCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9IH0sXG4gICAgICAyMDAsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDMwMCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBVbmFibGUgdG8gY3JlYXRlIHVzZXIgJHt1c2VyLnVzZXJuYW1lfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWA7XG4gICAgICBjb25zdCBzdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgYXMgbnVtYmVyO1xuICAgICAgaWYgKHN0YXR1cyA9PT0gNDA0IHx8IG1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIm5vdCBmb3VuZFwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0dXMgPT09IDQwOSB8fCBtZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJjb25mbGljdFwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0dXMgPT09IDQwMCkge1xuICAgICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDAxIHx8IHN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlVXNlcihcbiAgICB1c2VyOiBLaWJhbmFVc2VyLFxuICAgIHJlYWxtTmFtZTogc3RyaW5nLFxuICAgIHJvbGVOYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJ1cGRhdGVVc2VyXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLnVwZGF0ZVVzZXJcbiAgICApO1xuICAgIGNvbnN0IGRlZmF1bHRSb2xlID0gdGhpcy5ub3JtYWxpemVSb2xlQ29uZmlnKHJlYWxtTmFtZSkubmFtZTtcbiAgICBjb25zdCBwYXlsb2FkUm9sZXMgPVxuICAgICAgcm9sZU5hbWVzICYmIHJvbGVOYW1lcy5sZW5ndGggPiAwID8gcm9sZU5hbWVzIDogW2RlZmF1bHRSb2xlXTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICAgIFwiUFVUXCIsXG4gICAgICBgJHt0aGlzLmNvbmZpZy5wcm90b2NvbH06Ly8ke3RoaXMuY29uZmlnLmVzX2hvc3R9L19zZWN1cml0eS91c2VyLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXIudXNlcm5hbWUpfWAsXG4gICAgICB7XG4gICAgICAgIHBhc3N3b3JkOiB1c2VyLnBhc3N3b3JkLFxuICAgICAgICBmdWxsX25hbWU6IHVzZXIuZnVsbF9uYW1lLFxuICAgICAgICBlbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgZW5hYmxlZDogdXNlci5lbmFibGVkID8/IHRydWUsXG4gICAgICAgIG1ldGFkYXRhOiB1c2VyLm1ldGFkYXRhID8/IHt9LFxuICAgICAgICByb2xlczogdXNlci5yb2xlcyA/PyBwYXlsb2FkUm9sZXMsXG4gICAgICB9LFxuICAgICAgdGhpcy5jb25maWcuYWRtaW5BcGlVc2VyLFxuICAgICAgeyBoZWFkZXJzOiB7IFwia2JuLXhzcmZcIjogXCJ0cnVlXCIsIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0gfSxcbiAgICAgIDIwMCxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApO1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gMzAwKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFVuYWJsZSB0byB1cGRhdGUgdXNlciAke3VzZXIudXNlcm5hbWV9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YDtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cyBhcyBudW1iZXI7XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDQgfHwgbWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibm90IGZvdW5kXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDA5IHx8IG1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImNvbmZsaWN0XCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDEgfHwgc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUh0dHBDbGllbnQoY29uZmlnOiBLaWJhbmFTZXR1cENvbmZpZyk6IEF4aW9zSW5zdGFuY2Uge1xuICAgIHJldHVybiBBeGlvcy5jcmVhdGUoe1xuICAgICAgYmFzZVVSTDogYCR7Y29uZmlnLnByb3RvY29sfTovLyR7Y29uZmlnLmhvc3R9YCxcbiAgICAgIHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlLFxuICAgICAgaHR0cHNBZ2VudDogbmV3IGh0dHBzLkFnZW50KHtcbiAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiAocmVzb2x2ZUtpYmFuYUlzUHJvZHVjdGlvbih0aGlzLmNvbmZpZyBhcyBhbnkpKSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRXJyb3IoZXJyb3I6IEVycm9yKTogRXJyb3Ige1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlIHx8IGVycm9yLm5hbWUgfHwgXCJVbmtub3duIGVycm9yXCI7XG4gICAgY29uc3QgbG93ZXJNZXNzYWdlID0gbWVzc2FnZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIm5vdCBmb3VuZFwiKSB8fCBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MDRcIikpIHtcbiAgICAgIHJldHVybiBuZXcgTm90Rm91bmRFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJhbHJlYWR5IGV4aXN0c1wiKSB8fFxuICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiY29uZmxpY3RcIikgfHxcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQwOVwiKVxuICAgICkge1xuICAgICAgcmV0dXJuIG5ldyBDb25mbGljdEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImludmFsaWRcIikgfHxcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImJhZCByZXF1ZXN0XCIpIHx8XG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MDBcIilcbiAgICApIHtcbiAgICAgIHJldHVybiBuZXcgQmFkUmVxdWVzdEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJ1bmF1dGhvcml6ZWRcIikgfHwgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDAxXCIpKSB7XG4gICAgICByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImZvcmJpZGRlblwiKSB8fCBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MDNcIikpIHtcbiAgICAgIHJldHVybiBuZXcgTm90Rm91bmRFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEludGVybmFsRXJyb3IobWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVJvbGVDb25maWcoXG4gICAgcmVhbG1OYW1lOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogUGFydGlhbDx7IG5hbWU/OiBzdHJpbmcgfT4gPSB7fVxuICApOiB7IG5hbWU6IHN0cmluZyB9IHtcbiAgICBjb25zdCBzdWZmaXggPSByZWFsbU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBiYXNlID0gdGhpcy5jb25maWcucm9sZSA/PyB7fTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogcGF5bG9hZC5uYW1lID8/IGJhc2UubmFtZSA/PyBgcGxhXyR7c3VmZml4fV9yZWFkZXJgLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBcIkdFVFwiIHwgXCJQT1NUXCIgfCBcIlBVVFwiIHwgXCJERUxFVEVcIixcbiAgICB1cmw6IHN0cmluZyxcbiAgICBwYXlsb2FkOiB1bmtub3duLFxuICAgIGFwaVVzZXI6IEtpYmFuYVVzZXIgfCB1bmRlZmluZWQsXG4gICAgZXh0cmE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgc3VjY2Vzc0NvZGU6IG51bWJlcixcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxhbnk+XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yZXF1ZXN0KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucmVxdWVzdCh7XG4gICAgICBtZXRob2QsXG4gICAgICB1cmwsXG4gICAgICBkYXRhOlxuICAgICAgICBwYXlsb2FkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDogdHlwZW9mIHBheWxvYWQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gcGF5bG9hZFxuICAgICAgICAgICAgOiBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSxcbiAgICAgIGF1dGg6IGFwaVVzZXJcbiAgICAgICAgPyB7IHVzZXJuYW1lOiBhcGlVc2VyLnVzZXJuYW1lLCBwYXNzd29yZDogYXBpVXNlci5wYXNzd29yZCB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUsXG4gICAgICBodHRwc0FnZW50OiBuZXcgaHR0cHMuQWdlbnQoe1xuICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IChyZXNvbHZlS2liYW5hSXNQcm9kdWN0aW9uKHRoaXMuY29uZmlnIGFzIGFueSkpLFxuICAgICAgfSksXG4gICAgICAuLi5leHRyYSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
2
|
+
let kibanaProductionResolver;
|
|
3
|
+
export function setKibanaProductionResolver(resolver) {
|
|
4
|
+
kibanaProductionResolver = resolver;
|
|
5
|
+
}
|
|
6
|
+
export function resolveKibanaIsProduction(config) {
|
|
7
|
+
if (typeof config?.isProduction === "function") {
|
|
8
|
+
return config.isProduction();
|
|
9
|
+
}
|
|
10
|
+
if (kibanaProductionResolver) {
|
|
11
|
+
return kibanaProductionResolver();
|
|
12
|
+
}
|
|
13
|
+
throw new InternalError("Kibana production resolver not initialized");
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9raWJhbmEvc2VydmljZXMvcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJeEQsSUFBSSx3QkFBd0QsQ0FBQztBQUU3RCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLFFBQTRCO0lBRTVCLHdCQUF3QixHQUFHLFFBQVEsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUF5QztJQUV6QyxJQUFJLE9BQU8sTUFBTSxFQUFFLFlBQVksS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMvQyxPQUFPLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1FBQzdCLE9BQU8sd0JBQXdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsTUFBTSxJQUFJLGFBQWEsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbnR5cGUgUHJvZHVjdGlvblJlc29sdmVyID0gKCkgPT4gYm9vbGVhbjtcblxubGV0IGtpYmFuYVByb2R1Y3Rpb25SZXNvbHZlcjogUHJvZHVjdGlvblJlc29sdmVyIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0S2liYW5hUHJvZHVjdGlvblJlc29sdmVyKFxuICByZXNvbHZlcjogUHJvZHVjdGlvblJlc29sdmVyXG4pOiB2b2lkIHtcbiAga2liYW5hUHJvZHVjdGlvblJlc29sdmVyID0gcmVzb2x2ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlS2liYW5hSXNQcm9kdWN0aW9uKFxuICBjb25maWc/OiB7IGlzUHJvZHVjdGlvbj86ICgpID0+IGJvb2xlYW4gfVxuKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgY29uZmlnPy5pc1Byb2R1Y3Rpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBjb25maWcuaXNQcm9kdWN0aW9uKCk7XG4gIH1cbiAgaWYgKGtpYmFuYVByb2R1Y3Rpb25SZXNvbHZlcikge1xuICAgIHJldHVybiBraWJhbmFQcm9kdWN0aW9uUmVzb2x2ZXIoKTtcbiAgfVxuICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIktpYmFuYSBwcm9kdWN0aW9uIHJlc29sdmVyIG5vdCBpbml0aWFsaXplZFwiKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/execution/CodeSandboxEvaluator
|
|
3
|
+
* @summary Pluggable contract for evaluating code-based conditions (DECAF-32 §22.4).
|
|
4
|
+
* @description The engine does NOT implement the VM sandbox directly (§22.4).
|
|
5
|
+
* Downstream projects (e.g. ALFRED) register a `CodeSandboxEvaluator` via the
|
|
6
|
+
* `GraphExecutionEngineConfig.codeSandboxEvaluator` field. When absent, code
|
|
7
|
+
* conditions throw a `GRAPH_CODE_SANDBOX_NOT_CONFIGURED` error.
|
|
8
|
+
*
|
|
9
|
+
* The sandbox must follow the same restrictions as the Code Node (§22.4):
|
|
10
|
+
* - No system API access (`require`, `process`, `fs`, `child_process`, etc.)
|
|
11
|
+
* - Placeholder syntax for workflow data references (`{{ $input.foo }}`,
|
|
12
|
+
* `{{ $node["Name"].output }}`, `{{ $vars.bar }}`, etc.)
|
|
13
|
+
* - Static code validation (e.g. `acorn`-based) before execution
|
|
14
|
+
* - The code must return a boolean value (for conditions) or any value
|
|
15
|
+
* (for Code Node transforms)
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Context passed to the code sandbox evaluator.
|
|
19
|
+
*/
|
|
20
|
+
export interface CodeSandboxContext {
|
|
21
|
+
/** The raw code string authored by the user. */
|
|
22
|
+
code: string;
|
|
23
|
+
/** The programming language (defaults to `"javascript"`). */
|
|
24
|
+
language?: "javascript" | "typescript";
|
|
25
|
+
/** The current input values, accessible as `$input` in placeholders. */
|
|
26
|
+
input: Record<string, unknown>;
|
|
27
|
+
/** Workflow variables, accessible as `$vars` in placeholders. */
|
|
28
|
+
vars?: Record<string, unknown>;
|
|
29
|
+
/** Current loop item (if inside a foreach), accessible as `$item`. */
|
|
30
|
+
item?: unknown;
|
|
31
|
+
/** Current loop index (if inside a foreach), accessible as `$index`. */
|
|
32
|
+
index?: number;
|
|
33
|
+
/** Outputs of upstream nodes, accessible as `$node["Name"].output`. */
|
|
34
|
+
nodes?: Record<string, Record<string, unknown>>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Pluggable evaluator for code-based conditions and Code Node transforms.
|
|
38
|
+
*
|
|
39
|
+
* Implementations MUST enforce the Code Node restrictions (§22.4):
|
|
40
|
+
* no system API access, static validation, placeholder resolution.
|
|
41
|
+
*/
|
|
42
|
+
export interface CodeSandboxEvaluator {
|
|
43
|
+
/**
|
|
44
|
+
* Evaluates the given code in a restricted sandbox and returns the result.
|
|
45
|
+
*
|
|
46
|
+
* For conditions, the code is expected to return a boolean.
|
|
47
|
+
* For Code Node transforms, the code may return any value.
|
|
48
|
+
*
|
|
49
|
+
* @param ctx - The sandbox context containing code, input, and references.
|
|
50
|
+
* @returns The result of evaluating the code.
|
|
51
|
+
*/
|
|
52
|
+
evaluate(ctx: CodeSandboxContext): Promise<unknown> | unknown;
|
|
53
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/execution/CodeSandboxEvaluator
|
|
3
|
+
* @summary Pluggable contract for evaluating code-based conditions (DECAF-32 §22.4).
|
|
4
|
+
* @description The engine does NOT implement the VM sandbox directly (§22.4).
|
|
5
|
+
* Downstream projects (e.g. ALFRED) register a `CodeSandboxEvaluator` via the
|
|
6
|
+
* `GraphExecutionEngineConfig.codeSandboxEvaluator` field. When absent, code
|
|
7
|
+
* conditions throw a `GRAPH_CODE_SANDBOX_NOT_CONFIGURED` error.
|
|
8
|
+
*
|
|
9
|
+
* The sandbox must follow the same restrictions as the Code Node (§22.4):
|
|
10
|
+
* - No system API access (`require`, `process`, `fs`, `child_process`, etc.)
|
|
11
|
+
* - Placeholder syntax for workflow data references (`{{ $input.foo }}`,
|
|
12
|
+
* `{{ $node["Name"].output }}`, `{{ $vars.bar }}`, etc.)
|
|
13
|
+
* - Static code validation (e.g. `acorn`-based) before execution
|
|
14
|
+
* - The code must return a boolean value (for conditions) or any value
|
|
15
|
+
* (for Code Node transforms)
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Context passed to the code sandbox evaluator.
|
|
19
|
+
*/
|
|
20
|
+
export interface CodeSandboxContext {
|
|
21
|
+
/** The raw code string authored by the user. */
|
|
22
|
+
code: string;
|
|
23
|
+
/** The programming language (defaults to `"javascript"`). */
|
|
24
|
+
language?: "javascript" | "typescript";
|
|
25
|
+
/** The current input values, accessible as `$input` in placeholders. */
|
|
26
|
+
input: Record<string, unknown>;
|
|
27
|
+
/** Workflow variables, accessible as `$vars` in placeholders. */
|
|
28
|
+
vars?: Record<string, unknown>;
|
|
29
|
+
/** Current loop item (if inside a foreach), accessible as `$item`. */
|
|
30
|
+
item?: unknown;
|
|
31
|
+
/** Current loop index (if inside a foreach), accessible as `$index`. */
|
|
32
|
+
index?: number;
|
|
33
|
+
/** Outputs of upstream nodes, accessible as `$node["Name"].output`. */
|
|
34
|
+
nodes?: Record<string, Record<string, unknown>>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Pluggable evaluator for code-based conditions and Code Node transforms.
|
|
38
|
+
*
|
|
39
|
+
* Implementations MUST enforce the Code Node restrictions (§22.4):
|
|
40
|
+
* no system API access, static validation, placeholder resolution.
|
|
41
|
+
*/
|
|
42
|
+
export interface CodeSandboxEvaluator {
|
|
43
|
+
/**
|
|
44
|
+
* Evaluates the given code in a restricted sandbox and returns the result.
|
|
45
|
+
*
|
|
46
|
+
* For conditions, the code is expected to return a boolean.
|
|
47
|
+
* For Code Node transforms, the code may return any value.
|
|
48
|
+
*
|
|
49
|
+
* @param ctx - The sandbox context containing code, input, and references.
|
|
50
|
+
* @returns The result of evaluating the code.
|
|
51
|
+
*/
|
|
52
|
+
evaluate(ctx: CodeSandboxContext): Promise<unknown> | unknown;
|
|
53
|
+
}
|
|
@@ -11,6 +11,7 @@ import { GraphExecutionEventEmitter } from "../events/GraphExecutionEventEmitter
|
|
|
11
11
|
import type { GraphNodeExecutorRegistry } from "../registry/GraphNodeExecutorRegistry.d.cts";
|
|
12
12
|
import { GraphExecutionPlanner } from "../planning/GraphExecutionPlanner.d.cts";
|
|
13
13
|
import type { GraphValueStoreAdapter } from "../store/GraphValueStoreAdapter.d.cts";
|
|
14
|
+
import type { CodeSandboxEvaluator } from "./CodeSandboxEvaluator.d.cts";
|
|
14
15
|
/**
|
|
15
16
|
* Configuration for the {@link GraphExecutionEngine}.
|
|
16
17
|
*/
|
|
@@ -20,6 +21,13 @@ export interface GraphExecutionEngineConfig {
|
|
|
20
21
|
valueStoreAdapter?: GraphValueStoreAdapter;
|
|
21
22
|
eventEmitter?: GraphExecutionEventEmitter;
|
|
22
23
|
defaultOptions?: Partial<GraphExecutionOptions>;
|
|
24
|
+
/**
|
|
25
|
+
* Optional pluggable code sandbox evaluator for code-based conditions
|
|
26
|
+
* (DECAF-32 §22.4). When absent, code conditions throw
|
|
27
|
+
* `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`. Downstream projects (e.g. ALFRED)
|
|
28
|
+
* supply the actual VM sandbox implementation.
|
|
29
|
+
*/
|
|
30
|
+
codeSandboxEvaluator?: CodeSandboxEvaluator;
|
|
23
31
|
/**
|
|
24
32
|
* Optional callback invoked at the end of engine construction with the
|
|
25
33
|
* fully-initialised engine instance. Use this to register executors that
|
|
@@ -44,6 +52,8 @@ export declare class GraphExecutionEngine implements Observable<[GraphExecutionO
|
|
|
44
52
|
private readonly planner;
|
|
45
53
|
private readonly valueStoreAdapter;
|
|
46
54
|
private readonly defaultOptions;
|
|
55
|
+
/** Pluggable code sandbox evaluator (§22.4); may be undefined. */
|
|
56
|
+
readonly codeSandboxEvaluator?: CodeSandboxEvaluator;
|
|
47
57
|
constructor(config: GraphExecutionEngineConfig);
|
|
48
58
|
private readonly config;
|
|
49
59
|
observe(observer: GraphExecutionObserver): () => void;
|
|
@@ -11,6 +11,7 @@ import { GraphExecutionEventEmitter } from "../events/GraphExecutionEventEmitter
|
|
|
11
11
|
import type { GraphNodeExecutorRegistry } from "../registry/GraphNodeExecutorRegistry.d.mts";
|
|
12
12
|
import { GraphExecutionPlanner } from "../planning/GraphExecutionPlanner.d.mts";
|
|
13
13
|
import type { GraphValueStoreAdapter } from "../store/GraphValueStoreAdapter.d.mts";
|
|
14
|
+
import type { CodeSandboxEvaluator } from "./CodeSandboxEvaluator.d.mts";
|
|
14
15
|
/**
|
|
15
16
|
* Configuration for the {@link GraphExecutionEngine}.
|
|
16
17
|
*/
|
|
@@ -20,6 +21,13 @@ export interface GraphExecutionEngineConfig {
|
|
|
20
21
|
valueStoreAdapter?: GraphValueStoreAdapter;
|
|
21
22
|
eventEmitter?: GraphExecutionEventEmitter;
|
|
22
23
|
defaultOptions?: Partial<GraphExecutionOptions>;
|
|
24
|
+
/**
|
|
25
|
+
* Optional pluggable code sandbox evaluator for code-based conditions
|
|
26
|
+
* (DECAF-32 §22.4). When absent, code conditions throw
|
|
27
|
+
* `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`. Downstream projects (e.g. ALFRED)
|
|
28
|
+
* supply the actual VM sandbox implementation.
|
|
29
|
+
*/
|
|
30
|
+
codeSandboxEvaluator?: CodeSandboxEvaluator;
|
|
23
31
|
/**
|
|
24
32
|
* Optional callback invoked at the end of engine construction with the
|
|
25
33
|
* fully-initialised engine instance. Use this to register executors that
|
|
@@ -44,6 +52,8 @@ export declare class GraphExecutionEngine implements Observable<[GraphExecutionO
|
|
|
44
52
|
private readonly planner;
|
|
45
53
|
private readonly valueStoreAdapter;
|
|
46
54
|
private readonly defaultOptions;
|
|
55
|
+
/** Pluggable code sandbox evaluator (§22.4); may be undefined. */
|
|
56
|
+
readonly codeSandboxEvaluator?: CodeSandboxEvaluator;
|
|
47
57
|
constructor(config: GraphExecutionEngineConfig);
|
|
48
58
|
private readonly config;
|
|
49
59
|
observe(observer: GraphExecutionObserver): () => void;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/execution/SwitchGraphNodeExecutor
|
|
3
|
+
* @summary Executor for the Switch flow-control node (DECAF-32 §22.2.2).
|
|
4
|
+
* @description Evaluates each case's condition against the node's input and
|
|
5
|
+
* routes the input to the first matching case's output port. Falls back to
|
|
6
|
+
* the `default` output when no case matches. Supports both
|
|
7
|
+
* {@link ConditionExpression} (graphical mode) and {@link CodeCondition}
|
|
8
|
+
* (code mode via the pluggable {@link CodeSandboxEvaluator}).
|
|
9
|
+
*/
|
|
10
|
+
import type { GraphNodeExecutor } from "./GraphNodeExecutor.d.cts";
|
|
11
|
+
import type { GraphExecutionContext } from "./GraphExecutionContext.d.cts";
|
|
12
|
+
import type { GraphExecutionValues } from "../types.d.cts";
|
|
13
|
+
import type { CodeSandboxEvaluator } from "./CodeSandboxEvaluator.d.cts";
|
|
14
|
+
/**
|
|
15
|
+
* Executor for `core.flow.switch` nodes.
|
|
16
|
+
*
|
|
17
|
+
* Evaluates each case's condition in order and routes the input to the
|
|
18
|
+
* first matching case's output port. When no case matches, routes to the
|
|
19
|
+
* `default` output port.
|
|
20
|
+
*
|
|
21
|
+
* Condition evaluation:
|
|
22
|
+
* - `ConditionExpression` — evaluated via {@link ConditionExpressionEvaluator}.
|
|
23
|
+
* - `CodeCondition` — evaluated via the pluggable {@link CodeSandboxEvaluator}
|
|
24
|
+
* from the engine's config. Throws `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`
|
|
25
|
+
* when no evaluator is registered.
|
|
26
|
+
*/
|
|
27
|
+
export declare class SwitchGraphNodeExecutor implements GraphNodeExecutor {
|
|
28
|
+
private readonly engine?;
|
|
29
|
+
private readonly expressionEvaluator;
|
|
30
|
+
constructor(engine?: {
|
|
31
|
+
codeSandboxEvaluator?: CodeSandboxEvaluator;
|
|
32
|
+
} | undefined);
|
|
33
|
+
execute(input: GraphExecutionValues, context: GraphExecutionContext): Promise<GraphExecutionValues>;
|
|
34
|
+
/**
|
|
35
|
+
* Evaluates a single switch case condition.
|
|
36
|
+
*/
|
|
37
|
+
private evaluateCondition;
|
|
38
|
+
/**
|
|
39
|
+
* Evaluates a code condition via the pluggable sandbox evaluator.
|
|
40
|
+
*/
|
|
41
|
+
private evaluateCodeCondition;
|
|
42
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/execution/SwitchGraphNodeExecutor
|
|
3
|
+
* @summary Executor for the Switch flow-control node (DECAF-32 §22.2.2).
|
|
4
|
+
* @description Evaluates each case's condition against the node's input and
|
|
5
|
+
* routes the input to the first matching case's output port. Falls back to
|
|
6
|
+
* the `default` output when no case matches. Supports both
|
|
7
|
+
* {@link ConditionExpression} (graphical mode) and {@link CodeCondition}
|
|
8
|
+
* (code mode via the pluggable {@link CodeSandboxEvaluator}).
|
|
9
|
+
*/
|
|
10
|
+
import type { GraphNodeExecutor } from "./GraphNodeExecutor.d.mts";
|
|
11
|
+
import type { GraphExecutionContext } from "./GraphExecutionContext.d.mts";
|
|
12
|
+
import type { GraphExecutionValues } from "../types.d.mts";
|
|
13
|
+
import type { CodeSandboxEvaluator } from "./CodeSandboxEvaluator.d.mts";
|
|
14
|
+
/**
|
|
15
|
+
* Executor for `core.flow.switch` nodes.
|
|
16
|
+
*
|
|
17
|
+
* Evaluates each case's condition in order and routes the input to the
|
|
18
|
+
* first matching case's output port. When no case matches, routes to the
|
|
19
|
+
* `default` output port.
|
|
20
|
+
*
|
|
21
|
+
* Condition evaluation:
|
|
22
|
+
* - `ConditionExpression` — evaluated via {@link ConditionExpressionEvaluator}.
|
|
23
|
+
* - `CodeCondition` — evaluated via the pluggable {@link CodeSandboxEvaluator}
|
|
24
|
+
* from the engine's config. Throws `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`
|
|
25
|
+
* when no evaluator is registered.
|
|
26
|
+
*/
|
|
27
|
+
export declare class SwitchGraphNodeExecutor implements GraphNodeExecutor {
|
|
28
|
+
private readonly engine?;
|
|
29
|
+
private readonly expressionEvaluator;
|
|
30
|
+
constructor(engine?: {
|
|
31
|
+
codeSandboxEvaluator?: CodeSandboxEvaluator;
|
|
32
|
+
} | undefined);
|
|
33
|
+
execute(input: GraphExecutionValues, context: GraphExecutionContext): Promise<GraphExecutionValues>;
|
|
34
|
+
/**
|
|
35
|
+
* Evaluates a single switch case condition.
|
|
36
|
+
*/
|
|
37
|
+
private evaluateCondition;
|
|
38
|
+
/**
|
|
39
|
+
* Evaluates a code condition via the pluggable sandbox evaluator.
|
|
40
|
+
*/
|
|
41
|
+
private evaluateCodeCondition;
|
|
42
|
+
}
|
|
@@ -8,3 +8,5 @@ export * from "./GraphNodeExecutor.d.cts";
|
|
|
8
8
|
export * from "./GraphExecutionResult.d.cts";
|
|
9
9
|
export * from "./GraphExecutionFrame.d.cts";
|
|
10
10
|
export * from "./GraphExecutionEngine.d.cts";
|
|
11
|
+
export * from "./CodeSandboxEvaluator.d.cts";
|
|
12
|
+
export * from "./SwitchGraphNodeExecutor.d.cts";
|
|
@@ -8,3 +8,5 @@ export * from "./GraphNodeExecutor.d.mts";
|
|
|
8
8
|
export * from "./GraphExecutionResult.d.mts";
|
|
9
9
|
export * from "./GraphExecutionFrame.d.mts";
|
|
10
10
|
export * from "./GraphExecutionEngine.d.mts";
|
|
11
|
+
export * from "./CodeSandboxEvaluator.d.mts";
|
|
12
|
+
export * from "./SwitchGraphNodeExecutor.d.mts";
|
|
@@ -23,6 +23,8 @@ export * from "./execution/GraphNodeExecutor.d.cts";
|
|
|
23
23
|
export * from "./execution/GraphExecutionFrame.d.cts";
|
|
24
24
|
export * from "./execution/GraphExecutionResult.d.cts";
|
|
25
25
|
export * from "./execution/GraphExecutionEngine.d.cts";
|
|
26
|
+
export * from "./execution/CodeSandboxEvaluator.d.cts";
|
|
27
|
+
export * from "./execution/SwitchGraphNodeExecutor.d.cts";
|
|
26
28
|
export * from "./registry/GraphNodeExecutorRegistry.d.cts";
|
|
27
29
|
export * from "./registry/GraphNodeExecutorResolver.d.cts";
|
|
28
30
|
export * from "./store/GraphValueKey.d.cts";
|
|
@@ -41,6 +43,7 @@ export * from "./validation/GraphDefinitionValidator.d.cts";
|
|
|
41
43
|
export * from "./validation/GraphPortSchemaResolver.d.cts";
|
|
42
44
|
export * from "./validation/GraphValueValidator.d.cts";
|
|
43
45
|
export * from "./loops/GraphConditionEvaluator.d.cts";
|
|
46
|
+
export * from "./loops/ConditionExpressionEvaluator.d.cts";
|
|
44
47
|
export * from "./loops/GraphLoopExecutionContext.d.cts";
|
|
45
48
|
export * from "./loops/ForeachGraphNodeExecutor.d.cts";
|
|
46
49
|
export * from "./loops/WhileGraphNodeExecutor.d.cts";
|
|
@@ -50,3 +53,4 @@ export * from "./pinning/GraphPinningPolicy.d.cts";
|
|
|
50
53
|
export * from "./pinning/GraphPinningDependencyResolver.d.cts";
|
|
51
54
|
export * from "./pinning/GraphPinningService.d.cts";
|
|
52
55
|
export * from "./snapshots/GraphExecutionSnapshotMapper.d.cts";
|
|
56
|
+
export * from "./nodes/index.d.cts";
|
|
@@ -23,6 +23,8 @@ export * from "./execution/GraphNodeExecutor.d.mts";
|
|
|
23
23
|
export * from "./execution/GraphExecutionFrame.d.mts";
|
|
24
24
|
export * from "./execution/GraphExecutionResult.d.mts";
|
|
25
25
|
export * from "./execution/GraphExecutionEngine.d.mts";
|
|
26
|
+
export * from "./execution/CodeSandboxEvaluator.d.mts";
|
|
27
|
+
export * from "./execution/SwitchGraphNodeExecutor.d.mts";
|
|
26
28
|
export * from "./registry/GraphNodeExecutorRegistry.d.mts";
|
|
27
29
|
export * from "./registry/GraphNodeExecutorResolver.d.mts";
|
|
28
30
|
export * from "./store/GraphValueKey.d.mts";
|
|
@@ -41,6 +43,7 @@ export * from "./validation/GraphDefinitionValidator.d.mts";
|
|
|
41
43
|
export * from "./validation/GraphPortSchemaResolver.d.mts";
|
|
42
44
|
export * from "./validation/GraphValueValidator.d.mts";
|
|
43
45
|
export * from "./loops/GraphConditionEvaluator.d.mts";
|
|
46
|
+
export * from "./loops/ConditionExpressionEvaluator.d.mts";
|
|
44
47
|
export * from "./loops/GraphLoopExecutionContext.d.mts";
|
|
45
48
|
export * from "./loops/ForeachGraphNodeExecutor.d.mts";
|
|
46
49
|
export * from "./loops/WhileGraphNodeExecutor.d.mts";
|
|
@@ -50,3 +53,4 @@ export * from "./pinning/GraphPinningPolicy.d.mts";
|
|
|
50
53
|
export * from "./pinning/GraphPinningDependencyResolver.d.mts";
|
|
51
54
|
export * from "./pinning/GraphPinningService.d.mts";
|
|
52
55
|
export * from "./snapshots/GraphExecutionSnapshotMapper.d.mts";
|
|
56
|
+
export * from "./nodes/index.d.mts";
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/loops/ConditionExpressionEvaluator
|
|
3
|
+
* @summary Evaluator for the ALFRED-5 `ConditionExpression` DSL (DECAF-32 §22.3).
|
|
4
|
+
* @description Evaluates declarative, serializable condition expressions with
|
|
5
|
+
* `eq`/`neq`/`gt`/`gte`/`lt`/`lte`/`and`/`or`/`not`/`exists` operators and
|
|
6
|
+
* `ExprValue` references (`{const}`, `{path}`, `{step, path}`).
|
|
7
|
+
*/
|
|
8
|
+
import type { ConditionExpression } from "../types.d.cts";
|
|
9
|
+
/**
|
|
10
|
+
* Evaluates a {@link ConditionExpression} against the given state.
|
|
11
|
+
*
|
|
12
|
+
* `ExprValue` resolution:
|
|
13
|
+
* - `{ const: x }` → the literal value `x`.
|
|
14
|
+
* - `{ path: "a.b" }` → dotted-path lookup into `state`.
|
|
15
|
+
* - `{ step: "nodeId", path: "out" }` → cross-node reference; in v1 the state
|
|
16
|
+
* is expected to contain a `nodes` map keyed by node id (reserved for future
|
|
17
|
+
* multi-step evaluation; falls back to `state` lookup when absent).
|
|
18
|
+
*/
|
|
19
|
+
export declare class ConditionExpressionEvaluator {
|
|
20
|
+
/**
|
|
21
|
+
* Evaluates a condition expression to a boolean.
|
|
22
|
+
*
|
|
23
|
+
* @param expr - The condition expression.
|
|
24
|
+
* @param state - The current evaluation state (loop state or execution values).
|
|
25
|
+
* @returns `true` when the expression evaluates to a truthy/positive result.
|
|
26
|
+
*/
|
|
27
|
+
evaluate(expr: ConditionExpression, state: unknown): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Resolves an {@link ExprValue} against the current state.
|
|
30
|
+
*/
|
|
31
|
+
private resolveValue;
|
|
32
|
+
/**
|
|
33
|
+
* Resolves a dotted path into a target object.
|
|
34
|
+
*/
|
|
35
|
+
private resolvePath;
|
|
36
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/loops/ConditionExpressionEvaluator
|
|
3
|
+
* @summary Evaluator for the ALFRED-5 `ConditionExpression` DSL (DECAF-32 §22.3).
|
|
4
|
+
* @description Evaluates declarative, serializable condition expressions with
|
|
5
|
+
* `eq`/`neq`/`gt`/`gte`/`lt`/`lte`/`and`/`or`/`not`/`exists` operators and
|
|
6
|
+
* `ExprValue` references (`{const}`, `{path}`, `{step, path}`).
|
|
7
|
+
*/
|
|
8
|
+
import type { ConditionExpression } from "../types.d.mts";
|
|
9
|
+
/**
|
|
10
|
+
* Evaluates a {@link ConditionExpression} against the given state.
|
|
11
|
+
*
|
|
12
|
+
* `ExprValue` resolution:
|
|
13
|
+
* - `{ const: x }` → the literal value `x`.
|
|
14
|
+
* - `{ path: "a.b" }` → dotted-path lookup into `state`.
|
|
15
|
+
* - `{ step: "nodeId", path: "out" }` → cross-node reference; in v1 the state
|
|
16
|
+
* is expected to contain a `nodes` map keyed by node id (reserved for future
|
|
17
|
+
* multi-step evaluation; falls back to `state` lookup when absent).
|
|
18
|
+
*/
|
|
19
|
+
export declare class ConditionExpressionEvaluator {
|
|
20
|
+
/**
|
|
21
|
+
* Evaluates a condition expression to a boolean.
|
|
22
|
+
*
|
|
23
|
+
* @param expr - The condition expression.
|
|
24
|
+
* @param state - The current evaluation state (loop state or execution values).
|
|
25
|
+
* @returns `true` when the expression evaluates to a truthy/positive result.
|
|
26
|
+
*/
|
|
27
|
+
evaluate(expr: ConditionExpression, state: unknown): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Resolves an {@link ExprValue} against the current state.
|
|
30
|
+
*/
|
|
31
|
+
private resolveValue;
|
|
32
|
+
/**
|
|
33
|
+
* Resolves a dotted path into a target object.
|
|
34
|
+
*/
|
|
35
|
+
private resolvePath;
|
|
36
|
+
}
|
|
@@ -1,23 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module integrations/graph/loops/GraphConditionEvaluator
|
|
3
|
-
* @summary Evaluator for built-in loop condition types.
|
|
3
|
+
* @summary Evaluator for built-in loop condition types and the `ConditionExpression` DSL.
|
|
4
4
|
* @description Supports safe, built-in condition types only. Does NOT evaluate arbitrary JavaScript expressions.
|
|
5
|
+
* When the condition object carries an `op` field (ALFRED-5 §8 / DECAF-32 §22.3), dispatches to the
|
|
6
|
+
* {@link ConditionExpressionEvaluator} instead of the built-in `type`-based switch.
|
|
5
7
|
*/
|
|
6
|
-
import type { GraphConditionDefinition } from "../types.d.cts";
|
|
8
|
+
import type { ConditionExpression, GraphConditionDefinition } from "../types.d.cts";
|
|
7
9
|
/**
|
|
8
|
-
* Evaluates loop conditions using built-in comparison types
|
|
10
|
+
* Evaluates loop conditions using built-in comparison types or the
|
|
11
|
+
* `ConditionExpression` DSL.
|
|
9
12
|
*/
|
|
10
13
|
export declare class GraphConditionEvaluator {
|
|
14
|
+
private readonly expressionEvaluator;
|
|
11
15
|
/**
|
|
12
16
|
* Evaluates a condition against the given state.
|
|
13
17
|
*
|
|
18
|
+
* When the condition object carries an `op` field, it is treated as a
|
|
19
|
+
* `ConditionExpression` (§22.3) and dispatched to the
|
|
20
|
+
* {@link ConditionExpressionEvaluator}. Otherwise the built-in `type`-based
|
|
21
|
+
* switch is used.
|
|
22
|
+
*
|
|
14
23
|
* @param condition - The condition definition.
|
|
15
24
|
* @param state - The current loop state.
|
|
16
25
|
* @returns `true` when the condition passes.
|
|
17
26
|
*/
|
|
18
|
-
evaluate(condition: GraphConditionDefinition, state: unknown): boolean;
|
|
27
|
+
evaluate(condition: GraphConditionDefinition | ConditionExpression, state: unknown): boolean;
|
|
19
28
|
/**
|
|
20
29
|
* Resolves a value that may be a dotted path into the state object.
|
|
21
30
|
*/
|
|
22
31
|
private resolveValue;
|
|
32
|
+
/**
|
|
33
|
+
* Detects whether a condition object is a `ConditionExpression` (§22.3) by
|
|
34
|
+
* checking for the presence of an `op` field. When true, the object is
|
|
35
|
+
* treated as a `ConditionExpression` and dispatched to the
|
|
36
|
+
* {@link ConditionExpressionEvaluator}.
|
|
37
|
+
*/
|
|
38
|
+
private isConditionExpression;
|
|
23
39
|
}
|
|
@@ -1,23 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module integrations/graph/loops/GraphConditionEvaluator
|
|
3
|
-
* @summary Evaluator for built-in loop condition types.
|
|
3
|
+
* @summary Evaluator for built-in loop condition types and the `ConditionExpression` DSL.
|
|
4
4
|
* @description Supports safe, built-in condition types only. Does NOT evaluate arbitrary JavaScript expressions.
|
|
5
|
+
* When the condition object carries an `op` field (ALFRED-5 §8 / DECAF-32 §22.3), dispatches to the
|
|
6
|
+
* {@link ConditionExpressionEvaluator} instead of the built-in `type`-based switch.
|
|
5
7
|
*/
|
|
6
|
-
import type { GraphConditionDefinition } from "../types.d.mts";
|
|
8
|
+
import type { ConditionExpression, GraphConditionDefinition } from "../types.d.mts";
|
|
7
9
|
/**
|
|
8
|
-
* Evaluates loop conditions using built-in comparison types
|
|
10
|
+
* Evaluates loop conditions using built-in comparison types or the
|
|
11
|
+
* `ConditionExpression` DSL.
|
|
9
12
|
*/
|
|
10
13
|
export declare class GraphConditionEvaluator {
|
|
14
|
+
private readonly expressionEvaluator;
|
|
11
15
|
/**
|
|
12
16
|
* Evaluates a condition against the given state.
|
|
13
17
|
*
|
|
18
|
+
* When the condition object carries an `op` field, it is treated as a
|
|
19
|
+
* `ConditionExpression` (§22.3) and dispatched to the
|
|
20
|
+
* {@link ConditionExpressionEvaluator}. Otherwise the built-in `type`-based
|
|
21
|
+
* switch is used.
|
|
22
|
+
*
|
|
14
23
|
* @param condition - The condition definition.
|
|
15
24
|
* @param state - The current loop state.
|
|
16
25
|
* @returns `true` when the condition passes.
|
|
17
26
|
*/
|
|
18
|
-
evaluate(condition: GraphConditionDefinition, state: unknown): boolean;
|
|
27
|
+
evaluate(condition: GraphConditionDefinition | ConditionExpression, state: unknown): boolean;
|
|
19
28
|
/**
|
|
20
29
|
* Resolves a value that may be a dotted path into the state object.
|
|
21
30
|
*/
|
|
22
31
|
private resolveValue;
|
|
32
|
+
/**
|
|
33
|
+
* Detects whether a condition object is a `ConditionExpression` (§22.3) by
|
|
34
|
+
* checking for the presence of an `op` field. When true, the object is
|
|
35
|
+
* treated as a `ConditionExpression` and dispatched to the
|
|
36
|
+
* {@link ConditionExpressionEvaluator}.
|
|
37
|
+
*/
|
|
38
|
+
private isConditionExpression;
|
|
23
39
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @description Re-exports the condition evaluator, loop execution context, and foreach/while/until executors.
|
|
5
5
|
*/
|
|
6
6
|
export * from "./GraphConditionEvaluator.d.cts";
|
|
7
|
+
export * from "./ConditionExpressionEvaluator.d.cts";
|
|
7
8
|
export * from "./GraphLoopExecutionContext.d.cts";
|
|
8
9
|
export * from "./ForeachGraphNodeExecutor.d.cts";
|
|
9
10
|
export * from "./WhileGraphNodeExecutor.d.cts";
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @description Re-exports the condition evaluator, loop execution context, and foreach/while/until executors.
|
|
5
5
|
*/
|
|
6
6
|
export * from "./GraphConditionEvaluator.d.mts";
|
|
7
|
+
export * from "./ConditionExpressionEvaluator.d.mts";
|
|
7
8
|
export * from "./GraphLoopExecutionContext.d.mts";
|
|
8
9
|
export * from "./ForeachGraphNodeExecutor.d.mts";
|
|
9
10
|
export * from "./WhileGraphNodeExecutor.d.mts";
|