/*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. 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 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ "use strict"; var fs = require("fs"); function pipeExists(name) { return fs.existsSync(name); } function createCancellationToken(args) { var cancellationPipeName; for (var i = 0; i < args.length - 1; i++) { if (args[i] === "--cancellationPipeName") { cancellationPipeName = args[i + 1]; break; } } if (!cancellationPipeName) { return { isCancellationRequested: function () { return false; }, setRequest: function (_requestId) { return void 0; }, resetRequest: function (_requestId) { return void 0; } }; } if (cancellationPipeName.charAt(cancellationPipeName.length - 1) === "*") { var namePrefix_1 = cancellationPipeName.slice(0, -1); if (namePrefix_1.length === 0 || namePrefix_1.indexOf("*") >= 0) { throw new Error("Invalid name for template cancellation pipe: it should have length greater than 2 characters and contain only one '*'."); } var perRequestPipeName_1; var currentRequestId_1; return { isCancellationRequested: function () { return perRequestPipeName_1 !== undefined && pipeExists(perRequestPipeName_1); }, setRequest: function (requestId) { currentRequestId_1 = requestId; perRequestPipeName_1 = namePrefix_1 + requestId; }, resetRequest: function (requestId) { if (currentRequestId_1 !== requestId) { throw new Error("Mismatched request id, expected " + currentRequestId_1 + ", actual " + requestId); } perRequestPipeName_1 = undefined; } }; } else { return { isCancellationRequested: function () { return pipeExists(cancellationPipeName); }, setRequest: function (_requestId) { return void 0; }, resetRequest: function (_requestId) { return void 0; } }; } } module.exports = createCancellationToken; //# sourceMappingURL=cancellationToken.js.map