Path: blob/main/extensions/copilot/src/util/vs/base/common/functional.ts
13405 views
//!!! DO NOT modify, this file was COPIED from 'microsoft/vscode'12/*---------------------------------------------------------------------------------------------3* Copyright (c) Microsoft Corporation. All rights reserved.4* Licensed under the MIT License. See License.txt in the project root for license information.5*--------------------------------------------------------------------------------------------*/67/**8* Given a function, returns a function that is only calling that function once.9*/10export function createSingleCallFunction<T extends Function>(this: unknown, fn: T, fnDidRunCallback?: () => void): T {11const _this = this;12let didCall = false;13let result: unknown;1415return function () {16if (didCall) {17return result;18}1920didCall = true;21if (fnDidRunCallback) {22try {23result = fn.apply(_this, arguments);24} finally {25fnDidRunCallback();26}27} else {28result = fn.apply(_this, arguments);29}3031return result;32} as unknown as T;33}343536