UNPKG

@pkerschbaum/code-oss-file-service

Version:

VS Code ([microsoft/vscode](https://github.com/microsoft/vscode)) includes a rich "`FileService`" and "`DiskFileSystemProvider`" abstraction built on top of Node.js core modules (`fs`, `path`) and Electron's `shell` module. This package allows to use that

78 lines 3.24 kB
"use strict"; /*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ Object.defineProperty(exports, "__esModule", { value: true }); exports.revive = exports.MarshalledId = exports.parse = exports.stringify = void 0; const buffer_1 = require("../../base/common/buffer"); const strings_1 = require("../../base/common/strings"); const uri_1 = require("../../base/common/uri"); function stringify(obj) { return JSON.stringify(obj, replacer); } exports.stringify = stringify; function parse(text) { let data = JSON.parse(text); data = revive(data); return data; } exports.parse = parse; var MarshalledId; (function (MarshalledId) { MarshalledId[MarshalledId["Uri"] = 1] = "Uri"; MarshalledId[MarshalledId["Regexp"] = 2] = "Regexp"; MarshalledId[MarshalledId["ScmResource"] = 3] = "ScmResource"; MarshalledId[MarshalledId["ScmResourceGroup"] = 4] = "ScmResourceGroup"; MarshalledId[MarshalledId["ScmProvider"] = 5] = "ScmProvider"; MarshalledId[MarshalledId["CommentController"] = 6] = "CommentController"; MarshalledId[MarshalledId["CommentThread"] = 7] = "CommentThread"; MarshalledId[MarshalledId["CommentThreadReply"] = 8] = "CommentThreadReply"; MarshalledId[MarshalledId["CommentNode"] = 9] = "CommentNode"; MarshalledId[MarshalledId["CommentThreadNode"] = 10] = "CommentThreadNode"; MarshalledId[MarshalledId["TimelineActionContext"] = 11] = "TimelineActionContext"; MarshalledId[MarshalledId["NotebookCellActionContext"] = 12] = "NotebookCellActionContext"; MarshalledId[MarshalledId["TestItemContext"] = 13] = "TestItemContext"; })(MarshalledId = exports.MarshalledId || (exports.MarshalledId = {})); function replacer(key, value) { // URI is done via toJSON-member if (value instanceof RegExp) { return { $mid: 2 /* Regexp */, source: value.source, flags: (0, strings_1.regExpFlags)(value), }; } return value; } function revive(obj, depth = 0) { if (!obj || depth > 200) { return obj; } if (typeof obj === 'object') { switch (obj.$mid) { case 1 /* Uri */: return uri_1.URI.revive(obj); case 2 /* Regexp */: return new RegExp(obj.source, obj.flags); } if (obj instanceof buffer_1.VSBuffer || obj instanceof Uint8Array) { return obj; } if (Array.isArray(obj)) { for (let i = 0; i < obj.length; ++i) { obj[i] = revive(obj[i], depth + 1); } } else { // walk object for (const key in obj) { if (Object.hasOwnProperty.call(obj, key)) { obj[key] = revive(obj[key], depth + 1); } } } } return obj; } exports.revive = revive; //# sourceMappingURL=marshalling.js.map