/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ /** * Given a function, returns a function that is only calling that function once. */ export function createSingleCallFunction(fn, fnDidRunCallback) { const _this = this; let didCall = false; let result; return function () { if (didCall) { return result; } didCall = true; if (fnDidRunCallback) { try { result = fn.apply(_this, arguments); } finally { fnDidRunCallback(); } } else { result = fn.apply(_this, arguments); } return result; }; }