massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-json / node_modules / vscode-json-languageserver / out / languageModelCache.js
diff --git a/.config/coc/extensions/node_modules/coc-json/node_modules/vscode-json-languageserver/out/languageModelCache.js b/.config/coc/extensions/node_modules/coc-json/node_modules/vscode-json-languageserver/out/languageModelCache.js
new file mode 100644 (file)
index 0000000..7ba037a
--- /dev/null
@@ -0,0 +1,74 @@
+"use strict";\r
+/*---------------------------------------------------------------------------------------------\r
+ *  Copyright (c) Microsoft Corporation. All rights reserved.\r
+ *  Licensed under the MIT License. See License.txt in the project root for license information.\r
+ *--------------------------------------------------------------------------------------------*/\r
+Object.defineProperty(exports, "__esModule", { value: true });\r
+exports.getLanguageModelCache = void 0;\r
+function getLanguageModelCache(maxEntries, cleanupIntervalTimeInSec, parse) {\r
+    let languageModels = {};\r
+    let nModels = 0;\r
+    let cleanupInterval = undefined;\r
+    if (cleanupIntervalTimeInSec > 0) {\r
+        cleanupInterval = setInterval(() => {\r
+            let cutoffTime = Date.now() - cleanupIntervalTimeInSec * 1000;\r
+            let uris = Object.keys(languageModels);\r
+            for (let uri of uris) {\r
+                let languageModelInfo = languageModels[uri];\r
+                if (languageModelInfo.cTime < cutoffTime) {\r
+                    delete languageModels[uri];\r
+                    nModels--;\r
+                }\r
+            }\r
+        }, cleanupIntervalTimeInSec * 1000);\r
+    }\r
+    return {\r
+        get(document) {\r
+            let version = document.version;\r
+            let languageId = document.languageId;\r
+            let languageModelInfo = languageModels[document.uri];\r
+            if (languageModelInfo && languageModelInfo.version === version && languageModelInfo.languageId === languageId) {\r
+                languageModelInfo.cTime = Date.now();\r
+                return languageModelInfo.languageModel;\r
+            }\r
+            let languageModel = parse(document);\r
+            languageModels[document.uri] = { languageModel, version, languageId, cTime: Date.now() };\r
+            if (!languageModelInfo) {\r
+                nModels++;\r
+            }\r
+            if (nModels === maxEntries) {\r
+                let oldestTime = Number.MAX_VALUE;\r
+                let oldestUri = null;\r
+                for (let uri in languageModels) {\r
+                    let languageModelInfo = languageModels[uri];\r
+                    if (languageModelInfo.cTime < oldestTime) {\r
+                        oldestUri = uri;\r
+                        oldestTime = languageModelInfo.cTime;\r
+                    }\r
+                }\r
+                if (oldestUri) {\r
+                    delete languageModels[oldestUri];\r
+                    nModels--;\r
+                }\r
+            }\r
+            return languageModel;\r
+        },\r
+        onDocumentRemoved(document) {\r
+            let uri = document.uri;\r
+            if (languageModels[uri]) {\r
+                delete languageModels[uri];\r
+                nModels--;\r
+            }\r
+        },\r
+        dispose() {\r
+            if (typeof cleanupInterval !== 'undefined') {\r
+                clearInterval(cleanupInterval);\r
+                cleanupInterval = undefined;\r
+                languageModels = {};\r
+                nModels = 0;\r
+            }\r
+        }\r
+    };\r
+}\r
+exports.getLanguageModelCache = getLanguageModelCache;\r
+//# sourceMappingURL=languageModelCache.js.map
\ No newline at end of file