• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Microsoft / BotFramework-Emulator / 354005

pending completion
354005

push

Azure DevOps

web-flow
Merge 277a3b5b5 into d144dd220

2633 of 4562 branches covered (57.72%)

Branch coverage included in aggregate %.

6986 of 9673 relevant lines covered (72.22%)

11.85 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/packages/app/client/src/ui/helpers/memoize.ts
1
//
2
// Copyright (c) Microsoft. All rights reserved.
3
// Licensed under the MIT license.
4
//
5
// Microsoft Bot Framework: http://botframework.com
6
//
7
// Bot Framework Emulator Github:
8
// https://github.com/Microsoft/BotFramwork-Emulator
9
//
10
// Copyright (c) Microsoft Corporation
11
// All rights reserved.
12
//
13
// MIT License:
14
// Permission is hereby granted, free of charge, to any person obtaining
15
// a copy of this software and associated documentation files (the
16
// "Software"), to deal in the Software without restriction, including
17
// without limitation the rights to use, copy, modify, merge, publish,
18
// distribute, sublicense, and/or sell copies of the Software, and to
19
// permit persons to whom the Software is furnished to do so, subject to
20
// the following conditions:
21
//
22
// The above copyright notice and this permission notice shall be
23
// included in all copies or substantial portions of the Software.
24
//
25
// THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND,
26
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32
//
33
export default function memoize<T>(fn: (...args: any[]) => T) {
34
  let lastArgs: any[] = [];
×
35
  let result: T;
36

37
  return function(...innerArgs: any[]): T {
×
38
    if (lastArgs.length !== innerArgs.length || lastArgs.some((arg, index) => arg !== innerArgs[index])) {
×
39
      result = fn(...innerArgs);
×
40
      lastArgs = [].slice.call(innerArgs);
×
41
    }
42

43
    return result;
×
44
  };
45
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc