massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-json / node_modules / vscode-json-languageserver / out / languageModelCache.js
1 "use strict";\r
2 /*---------------------------------------------------------------------------------------------\r
3  *  Copyright (c) Microsoft Corporation. All rights reserved.\r
4  *  Licensed under the MIT License. See License.txt in the project root for license information.\r
5  *--------------------------------------------------------------------------------------------*/\r
6 Object.defineProperty(exports, "__esModule", { value: true });\r
7 exports.getLanguageModelCache = void 0;\r
8 function getLanguageModelCache(maxEntries, cleanupIntervalTimeInSec, parse) {\r
9     let languageModels = {};\r
10     let nModels = 0;\r
11     let cleanupInterval = undefined;\r
12     if (cleanupIntervalTimeInSec > 0) {\r
13         cleanupInterval = setInterval(() => {\r
14             let cutoffTime = Date.now() - cleanupIntervalTimeInSec * 1000;\r
15             let uris = Object.keys(languageModels);\r
16             for (let uri of uris) {\r
17                 let languageModelInfo = languageModels[uri];\r
18                 if (languageModelInfo.cTime < cutoffTime) {\r
19                     delete languageModels[uri];\r
20                     nModels--;\r
21                 }\r
22             }\r
23         }, cleanupIntervalTimeInSec * 1000);\r
24     }\r
25     return {\r
26         get(document) {\r
27             let version = document.version;\r
28             let languageId = document.languageId;\r
29             let languageModelInfo = languageModels[document.uri];\r
30             if (languageModelInfo && languageModelInfo.version === version && languageModelInfo.languageId === languageId) {\r
31                 languageModelInfo.cTime = Date.now();\r
32                 return languageModelInfo.languageModel;\r
33             }\r
34             let languageModel = parse(document);\r
35             languageModels[document.uri] = { languageModel, version, languageId, cTime: Date.now() };\r
36             if (!languageModelInfo) {\r
37                 nModels++;\r
38             }\r
39             if (nModels === maxEntries) {\r
40                 let oldestTime = Number.MAX_VALUE;\r
41                 let oldestUri = null;\r
42                 for (let uri in languageModels) {\r
43                     let languageModelInfo = languageModels[uri];\r
44                     if (languageModelInfo.cTime < oldestTime) {\r
45                         oldestUri = uri;\r
46                         oldestTime = languageModelInfo.cTime;\r
47                     }\r
48                 }\r
49                 if (oldestUri) {\r
50                     delete languageModels[oldestUri];\r
51                     nModels--;\r
52                 }\r
53             }\r
54             return languageModel;\r
55         },\r
56         onDocumentRemoved(document) {\r
57             let uri = document.uri;\r
58             if (languageModels[uri]) {\r
59                 delete languageModels[uri];\r
60                 nModels--;\r
61             }\r
62         },\r
63         dispose() {\r
64             if (typeof cleanupInterval !== 'undefined') {\r
65                 clearInterval(cleanupInterval);\r
66                 cleanupInterval = undefined;\r
67                 languageModels = {};\r
68                 nModels = 0;\r
69             }\r
70         }\r
71     };\r
72 }\r
73 exports.getLanguageModelCache = getLanguageModelCache;\r
74 //# sourceMappingURL=languageModelCache.js.map