diff options
Diffstat (limited to 'workflow-designer-ui/src/main/frontend/tools/ModuleRedirectPlugin.js')
-rw-r--r-- | workflow-designer-ui/src/main/frontend/tools/ModuleRedirectPlugin.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/workflow-designer-ui/src/main/frontend/tools/ModuleRedirectPlugin.js b/workflow-designer-ui/src/main/frontend/tools/ModuleRedirectPlugin.js new file mode 100644 index 00000000..37eb5c3b --- /dev/null +++ b/workflow-designer-ui/src/main/frontend/tools/ModuleRedirectPlugin.js @@ -0,0 +1,44 @@ +/* +* Copyright © 2018 European Support Limited +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* + * http://www.apache.org/licenses/LICENSE-2.0 +* + * Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +function ModuleRedirectPlugin (options) { + options = options || {}; + this.intercept = options.intercept; + this.redirect = options.redirect; + this.ignore = options.ignore; +} + +ModuleRedirectPlugin.prototype.apply = function (resolver) { + resolver.plugin('described-resolve', (request, callback) => { + if (!request.request.match(this.intercept) || + request.request.match(this.ignore) + ) { + return callback(); + } + var newRequest = { + ...request, + request: request.request.replace(this.intercept, this.redirect) + }; + resolver.doResolve( + 'resolve', + newRequest, + `Resolved request '${request.request}' to '${newRequest.request}'.`, + callback + ); + }); +} + +module.exports = ModuleRedirectPlugin; |