pddl-workspace
Version:
64 lines • 2.6 kB
JavaScript
;
/* --------------------------------------------------------------------------------------------
* Copyright (c) Jan Dolejsi 2020. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
Object.defineProperty(exports, "__esModule", { value: true });
exports.WellKnownPlannerKind = exports.PlannerKind = exports.PlannerRegistrar = void 0;
const utils_1 = require("../utils");
/** Keeps track of planner providers. */
class PlannerRegistrar {
constructor() {
this.providers = new PlannerProviderMap();
}
/**
* Extensions should call this method to register their planner wrapper.
* @param kind planner kind this `provider` supports
* @param provider planner provider
*/
registerPlannerProvider(kind, provider) {
if (this.providers.has(kind)) {
throw new Error(`Planner provider for kind '${kind.kind}' is already registered.`);
}
this.providers.set(kind, provider);
}
getPlannerProviders() {
return this.providers.valueList();
}
getPlannerProvider(kind) {
return this.providers.get(kind);
}
}
exports.PlannerRegistrar = PlannerRegistrar;
class PlannerKind {
constructor(kind) {
this.kind = kind;
}
/**
* Derives a kind of planner implementation/variant.
* @param implementation implementation/variant name
* @returns new planner kind
*/
derive(implementation) {
return new PlannerKind(this.kind + ':' + implementation);
}
}
exports.PlannerKind = PlannerKind;
class WellKnownPlannerKind {
}
exports.WellKnownPlannerKind = WellKnownPlannerKind;
WellKnownPlannerKind.EXECUTABLE = new PlannerKind("EXECUTABLE");
WellKnownPlannerKind.JAVA_JAR = new PlannerKind("JAVA_JAR");
WellKnownPlannerKind.NODE_JS_SCRIPT = new PlannerKind("NODE_JS_SCRIPT");
WellKnownPlannerKind.PYTHON_SCRIPT = new PlannerKind("PYTHON_SCRIPT");
WellKnownPlannerKind.COMMAND = new PlannerKind("COMMAND");
WellKnownPlannerKind.SERVICE_SYNC = new PlannerKind("SERVICE_SYNC");
WellKnownPlannerKind.SERVICE_ASYNC = new PlannerKind("SERVICE_ASYNC");
WellKnownPlannerKind.PLANNING_AS_A_SERVICE = new PlannerKind("PLANNING_AS_A_SERVICE");
WellKnownPlannerKind.PLANNING_AS_A_SERVICE_PREVIEW = new PlannerKind("PLANNING_AS_A_SERVICE_PREVIEW");
class PlannerProviderMap extends utils_1.StringifyingMap {
stringifyKey(key) {
return key.kind;
}
}
//# sourceMappingURL=PlannerRegistrar.js.map