occam-file-system 5.0.228 → 5.0.232

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,12 +14,17 @@ _export(exports, {
14
14
  },
15
15
  createEntryOperation: function() {
16
16
  return createEntryOperation;
17
+ },
18
+ createDirectory: function() {
19
+ return createDirectory;
20
+ },
21
+ createFile: function() {
22
+ return createFile;
17
23
  }
18
24
  });
19
25
  var _necessary = require("necessary");
20
- var _fsextra = require("fs-extra");
21
26
  var _pathMaps = require("./utilities/pathMaps");
22
- var concatenatePaths = _necessary.pathUtilities.concatenatePaths, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists;
27
+ var concatenatePaths = _necessary.pathUtilities.concatenatePaths, pathWithoutBottommostNameFromPath = _necessary.pathUtilities.pathWithoutBottommostNameFromPath, createFileEx = _necessary.fileSystemUtilities.createFile, createDirectoryEx = _necessary.fileSystemUtilities.createDirectory, checkFileExists = _necessary.fileSystemUtilities.checkEntryExists, checkDirectoryExists = _necessary.fileSystemUtilities.checkEntryExists;
23
28
  function createProjectEntries(projectsDirectoryPath, json, callback) {
24
29
  var pathMaps = json.pathMaps;
25
30
  createEntries(pathMaps, projectsDirectoryPath, function(targetEntryPaths) {
@@ -32,6 +37,34 @@ function createProjectEntries(projectsDirectoryPath, json, callback) {
32
37
  function createEntryOperation(sourceEntryPath, targetEntryPath, entryDirectory, projectsDirectoryPath, callback) {
33
38
  entryDirectory ? createDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback) : createFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback);
34
39
  }
40
+ function createDirectory(directoryPath, callback) {
41
+ var error = null;
42
+ var directoryPathWithoutBottommostName = pathWithoutBottommostNameFromPath(directoryPath), parentDirectoryPath = directoryPathWithoutBottommostName, parentDirectoryExists = checkDirectoryExists(parentDirectoryPath);
43
+ if (!parentDirectoryExists) {
44
+ error = "The '".concat(directoryPath, "' directory's parent directory does not exist");
45
+ } else {
46
+ try {
47
+ createDirectoryEx(directoryPath);
48
+ } catch (nativeError) {
49
+ error = nativeError; ///
50
+ }
51
+ }
52
+ callback(error);
53
+ }
54
+ function createFile(filePath, callback) {
55
+ var error = null;
56
+ var filePathWithoutBottommostName = pathWithoutBottommostNameFromPath(filePath), parentDirectoryPath = filePathWithoutBottommostName, parentDirectoryExists = checkDirectoryExists(parentDirectoryPath);
57
+ if (!parentDirectoryExists) {
58
+ error = "The '".concat(filePath, "' file's parent directory does not exist");
59
+ } else {
60
+ try {
61
+ createFileEx(filePath);
62
+ } catch (nativeError) {
63
+ error = nativeError; ///
64
+ }
65
+ }
66
+ callback(error);
67
+ }
35
68
  function createEntries(pathMaps, projectsDirectoryPath, callback) {
36
69
  var targetEntryPaths = [];
37
70
  (0, _pathMaps.asynchronousForEach)(pathMaps, function(sourceEntryPath, targetEntryPath, entryDirectory, next, done, index) {
@@ -44,13 +77,14 @@ function createEntries(pathMaps, projectsDirectoryPath, callback) {
44
77
  });
45
78
  }
46
79
  function createFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback) {
47
- var targetFilePath = targetEntryPath, absoluteTargetFilePath = concatenatePaths(projectsDirectoryPath, targetFilePath), targetFileExists = checkEntryExists(absoluteTargetFilePath);
80
+ var targetFilePath = targetEntryPath, absoluteTargetFilePath = concatenatePaths(projectsDirectoryPath, targetFilePath), targetFileExists = checkFileExists(absoluteTargetFilePath);
48
81
  if (targetFileExists) {
49
82
  targetEntryPath = null;
50
83
  callback(sourceEntryPath, targetEntryPath);
51
84
  return;
52
85
  }
53
- (0, _fsextra.createFile)(absoluteTargetFilePath, function(error) {
86
+ var filePath = absoluteTargetFilePath; ///
87
+ createFile(filePath, function(error) {
54
88
  if (error) {
55
89
  targetEntryPath = null;
56
90
  }
@@ -58,13 +92,13 @@ function createFileOperation(sourceEntryPath, targetEntryPath, projectsDirectory
58
92
  });
59
93
  }
60
94
  function createDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback) {
61
- var targetDirectoryPath = targetEntryPath, absoluteTargetDirectoryPath = concatenatePaths(projectsDirectoryPath, targetDirectoryPath), targetDirectoryExists = checkEntryExists(absoluteTargetDirectoryPath);
95
+ var targetDirectoryPath = targetEntryPath, absoluteTargetDirectoryPath = concatenatePaths(projectsDirectoryPath, targetDirectoryPath), targetDirectoryExists = checkFileExists(absoluteTargetDirectoryPath);
62
96
  if (targetDirectoryExists) {
63
97
  targetEntryPath = null;
64
98
  callback(sourceEntryPath, targetEntryPath);
65
99
  return;
66
100
  }
67
- (0, _fsextra.mkdirs)(absoluteTargetDirectoryPath, function(error) {
101
+ createDirectory(absoluteTargetDirectoryPath, function(error) {
68
102
  if (error) {
69
103
  targetEntryPath = null;
70
104
  }
@@ -72,4 +106,4 @@ function createDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDire
72
106
  });
73
107
  }
74
108
 
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVQcm9qZWN0RW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IGNyZWF0ZUZpbGUsIG1rZGlycyBhcyBjcmVhdGVEaXJlY3RvcnkgfSBmcm9tIFwiZnMtZXh0cmFcIjtcblxuaW1wb3J0IHsgYXN5bmNocm9ub3VzRm9yRWFjaCB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoTWFwc1wiO1xuXG5jb25zdCB7IGNvbmNhdGVuYXRlUGF0aHMgfSA9IHBhdGhVdGlsaXRpZXMsXG4gICAgICB7IGNoZWNrRW50cnlFeGlzdHMgfSA9IGZpbGVTeXN0ZW1VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVByb2plY3RFbnRyaWVzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwganNvbiwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyBwYXRoTWFwcyB9ID0ganNvbjtcblxuICBjcmVhdGVFbnRyaWVzKHBhdGhNYXBzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsICh0YXJnZXRFbnRyeVBhdGhzKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHRhcmdldEVudHJ5UGF0aHNcbiAgICB9O1xuXG4gICAgY2FsbGJhY2soanNvbik7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW50cnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIGVudHJ5RGlyZWN0b3J5LCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGVudHJ5RGlyZWN0b3J5ID9cbiAgICBjcmVhdGVEaXJlY3RvcnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIDpcbiAgICAgIGNyZWF0ZUZpbGVPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFbnRyaWVzKHBhdGhNYXBzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHRhcmdldEVudHJ5UGF0aHMgPSBbXTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKFxuICAgIHBhdGhNYXBzLFxuICAgIChzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIG5leHQsIGRvbmUsIGluZGV4KSA9PiB7XG4gICAgICBjcmVhdGVFbnRyeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKSA9PiB7XG4gICAgICAgIHRhcmdldEVudHJ5UGF0aHMucHVzaCh0YXJnZXRFbnRyeVBhdGgpO1xuXG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgKCkgPT4ge1xuICAgICAgY2FsbGJhY2sodGFyZ2V0RW50cnlQYXRocyk7XG4gICAgfVxuICApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVGaWxlT3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHRhcmdldEZpbGVQYXRoID0gdGFyZ2V0RW50cnlQYXRoLCAvLy9cbiAgICAgICAgYWJzb2x1dGVUYXJnZXRGaWxlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCB0YXJnZXRGaWxlUGF0aCksXG4gICAgICAgIHRhcmdldEZpbGVFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGFic29sdXRlVGFyZ2V0RmlsZVBhdGgpO1xuXG4gIGlmICh0YXJnZXRGaWxlRXhpc3RzKSB7XG4gICAgdGFyZ2V0RW50cnlQYXRoID0gbnVsbDtcblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNyZWF0ZUZpbGUoYWJzb2x1dGVUYXJnZXRGaWxlUGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURpcmVjdG9yeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykge1xuICBjb25zdCB0YXJnZXREaXJlY3RvcnlQYXRoID0gdGFyZ2V0RW50cnlQYXRoLCAgLy8vXG4gICAgICAgIGFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCB0YXJnZXREaXJlY3RvcnlQYXRoKSxcbiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5RXhpc3RzID0gY2hlY2tFbnRyeUV4aXN0cyhhYnNvbHV0ZVRhcmdldERpcmVjdG9yeVBhdGgpO1xuXG4gIGlmICh0YXJnZXREaXJlY3RvcnlFeGlzdHMpIHtcbiAgICB0YXJnZXRFbnRyeVBhdGggPSBudWxsO1xuXG4gICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY3JlYXRlRGlyZWN0b3J5KGFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUHJvamVjdEVudHJpZXMiLCJjcmVhdGVFbnRyeU9wZXJhdGlvbiIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwiY2hlY2tFbnRyeUV4aXN0cyIsImZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJqc29uIiwiY2FsbGJhY2siLCJwYXRoTWFwcyIsImNyZWF0ZUVudHJpZXMiLCJ0YXJnZXRFbnRyeVBhdGhzIiwic291cmNlRW50cnlQYXRoIiwidGFyZ2V0RW50cnlQYXRoIiwiZW50cnlEaXJlY3RvcnkiLCJjcmVhdGVEaXJlY3RvcnlPcGVyYXRpb24iLCJjcmVhdGVGaWxlT3BlcmF0aW9uIiwiYXN5bmNocm9ub3VzRm9yRWFjaCIsIm5leHQiLCJkb25lIiwiaW5kZXgiLCJwdXNoIiwidGFyZ2V0RmlsZVBhdGgiLCJhYnNvbHV0ZVRhcmdldEZpbGVQYXRoIiwidGFyZ2V0RmlsZUV4aXN0cyIsImNyZWF0ZUZpbGUiLCJlcnJvciIsInRhcmdldERpcmVjdG9yeVBhdGgiLCJhYnNvbHV0ZVRhcmdldERpcmVjdG9yeVBhdGgiLCJ0YXJnZXREaXJlY3RvcnlFeGlzdHMiLCJjcmVhdGVEaXJlY3RvcnkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQVVBLE9BVUM7ZUFWdUJBOztJQVlSQyxvQkFBb0I7ZUFBcEJBOzs7eUJBcEJtQzt1QkFDRzt3QkFFbEI7QUFFcEMsSUFBTSxBQUFFQyxtQkFBcUJDLHdCQUFhLENBQWxDRCxrQkFDRixBQUFFRSxtQkFBcUJDLDhCQUFtQixDQUF4Q0Q7QUFFTyxTQUFTSixxQkFBcUJNLHFCQUFxQixFQUFFQyxJQUFJLEVBQUVDLFFBQVE7SUFDaEYsSUFBTSxBQUFFQyxXQUFhRixLQUFiRTtJQUVSQyxjQUFjRCxVQUFVSCx1QkFBdUIsU0FBQ0s7UUFDOUMsSUFBTUosU0FBTztZQUNYSSxrQkFBQUE7UUFDRjtRQUVBSCxTQUFTRDtJQUNYO0FBQ0Y7QUFFTyxTQUFTTixxQkFBcUJXLGVBQWUsRUFBRUMsZUFBZSxFQUFFQyxjQUFjLEVBQUVSLHFCQUFxQixFQUFFRSxRQUFRO0lBQ3BITSxpQkFDRUMseUJBQXlCSCxpQkFBaUJDLGlCQUFpQlAsdUJBQXVCRSxZQUNoRlEsb0JBQW9CSixpQkFBaUJDLGlCQUFpQlAsdUJBQXVCRTtBQUNuRjtBQUVBLFNBQVNFLGNBQWNELFFBQVEsRUFBRUgscUJBQXFCLEVBQUVFLFFBQVE7SUFDOUQsSUFBTUcsbUJBQW1CLEVBQUU7SUFFM0JNLElBQUFBLDZCQUFtQixFQUNqQlIsVUFDQSxTQUFDRyxpQkFBaUJDLGlCQUFpQkMsZ0JBQWdCSSxNQUFNQyxNQUFNQztRQUM3RG5CLHFCQUFxQlcsaUJBQWlCQyxpQkFBaUJDLGdCQUFnQlIsdUJBQXVCLFNBQUNNLGlCQUFpQkM7WUFDOUdGLGlCQUFpQlUsSUFBSSxDQUFDUjtZQUV0Qks7UUFDRjtJQUNGLEdBQ0E7UUFDRVYsU0FBU0c7SUFDWDtBQUVKO0FBRUEsU0FBU0ssb0JBQW9CSixlQUFlLEVBQUVDLGVBQWUsRUFBRVAscUJBQXFCLEVBQUVFLFFBQVE7SUFDNUYsSUFBTWMsaUJBQWlCVCxpQkFDakJVLHlCQUF5QnJCLGlCQUFpQkksdUJBQXVCZ0IsaUJBQ2pFRSxtQkFBbUJwQixpQkFBaUJtQjtJQUUxQyxJQUFJQyxrQkFBa0I7UUFDcEJYLGtCQUFrQjtRQUVsQkwsU0FBU0ksaUJBQWlCQztRQUUxQjtJQUNGO0lBRUFZLElBQUFBLG1CQUFVLEVBQUNGLHdCQUF3QixTQUFDRztRQUNsQyxJQUFJQSxPQUFPO1lBQ1RiLGtCQUFrQjtRQUNwQjtRQUVBTCxTQUFTSSxpQkFBaUJDO0lBQzVCO0FBQ0Y7QUFFQSxTQUFTRSx5QkFBeUJILGVBQWUsRUFBRUMsZUFBZSxFQUFFUCxxQkFBcUIsRUFBRUUsUUFBUTtJQUNqRyxJQUFNbUIsc0JBQXNCZCxpQkFDdEJlLDhCQUE4QjFCLGlCQUFpQkksdUJBQXVCcUIsc0JBQ3RFRSx3QkFBd0J6QixpQkFBaUJ3QjtJQUUvQyxJQUFJQyx1QkFBdUI7UUFDekJoQixrQkFBa0I7UUFFbEJMLFNBQVNJLGlCQUFpQkM7UUFFMUI7SUFDRjtJQUVBaUIsSUFBQUEsZUFBZSxFQUFDRiw2QkFBNkIsU0FBQ0Y7UUFDNUMsSUFBSUEsT0FBTztZQUNUYixrQkFBa0I7UUFDcEI7UUFFQUwsU0FBU0ksaUJBQWlCQztJQUM1QjtBQUNGIn0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVQcm9qZWN0RW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNocm9ub3VzRm9yRWFjaCB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoTWFwc1wiO1xuXG5jb25zdCB7IGNvbmNhdGVuYXRlUGF0aHMsIHBhdGhXaXRob3V0Qm90dG9tbW9zdE5hbWVGcm9tUGF0aCB9ID0gcGF0aFV0aWxpdGllcyxcbiAgICAgIHsgY3JlYXRlRmlsZTogY3JlYXRlRmlsZUV4LFxuICAgICAgICBjcmVhdGVEaXJlY3Rvcnk6IGNyZWF0ZURpcmVjdG9yeUV4LFxuICAgICAgICBjaGVja0VudHJ5RXhpc3RzOiBjaGVja0ZpbGVFeGlzdHMsXG4gICAgICAgIGNoZWNrRW50cnlFeGlzdHM6IGNoZWNrRGlyZWN0b3J5RXhpc3RzIH0gPSBmaWxlU3lzdGVtVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVQcm9qZWN0RW50cmllcyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHsgcGF0aE1hcHMgfSA9IGpzb247XG5cbiAgY3JlYXRlRW50cmllcyhwYXRoTWFwcywgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCAodGFyZ2V0RW50cnlQYXRocykgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGhzXG4gICAgfTtcblxuICAgIGNhbGxiYWNrKGpzb24pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVudHJ5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBlbnRyeURpcmVjdG9yeSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykge1xuICBlbnRyeURpcmVjdG9yeSA/XG4gICAgY3JlYXRlRGlyZWN0b3J5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSA6XG4gICAgICBjcmVhdGVGaWxlT3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpcmVjdG9yeShkaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykge1xuICBsZXQgZXJyb3IgPSBudWxsO1xuXG4gIGNvbnN0IGRpcmVjdG9yeVBhdGhXaXRob3V0Qm90dG9tbW9zdE5hbWUgPSBwYXRoV2l0aG91dEJvdHRvbW1vc3ROYW1lRnJvbVBhdGgoZGlyZWN0b3J5UGF0aCksXG4gICAgICAgIHBhcmVudERpcmVjdG9yeVBhdGggPSBkaXJlY3RvcnlQYXRoV2l0aG91dEJvdHRvbW1vc3ROYW1lLCAgLy8vXG4gICAgICAgIHBhcmVudERpcmVjdG9yeUV4aXN0cyA9IGNoZWNrRGlyZWN0b3J5RXhpc3RzKHBhcmVudERpcmVjdG9yeVBhdGgpO1xuXG4gIGlmICghcGFyZW50RGlyZWN0b3J5RXhpc3RzKSB7XG4gICAgZXJyb3IgPSBgVGhlICcke2RpcmVjdG9yeVBhdGh9JyBkaXJlY3RvcnkncyBwYXJlbnQgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0YDtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgY3JlYXRlRGlyZWN0b3J5RXgoZGlyZWN0b3J5UGF0aClcbiAgICB9IGNhdGNoIChuYXRpdmVFcnJvcikge1xuICAgICAgZXJyb3IgPSBuYXRpdmVFcnJvcjsgIC8vL1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9yKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbGUoZmlsZVBhdGgsIGNhbGxiYWNrKSB7XG4gIGxldCBlcnJvciA9IG51bGw7XG5cbiAgY29uc3QgZmlsZVBhdGhXaXRob3V0Qm90dG9tbW9zdE5hbWUgPSBwYXRoV2l0aG91dEJvdHRvbW1vc3ROYW1lRnJvbVBhdGgoZmlsZVBhdGgpLFxuICAgICAgICBwYXJlbnREaXJlY3RvcnlQYXRoID0gZmlsZVBhdGhXaXRob3V0Qm90dG9tbW9zdE5hbWUsICAvLy9cbiAgICAgICAgcGFyZW50RGlyZWN0b3J5RXhpc3RzID0gY2hlY2tEaXJlY3RvcnlFeGlzdHMocGFyZW50RGlyZWN0b3J5UGF0aCk7XG5cbiAgaWYgKCFwYXJlbnREaXJlY3RvcnlFeGlzdHMpIHtcbiAgICBlcnJvciA9IGBUaGUgJyR7ZmlsZVBhdGh9JyBmaWxlJ3MgcGFyZW50IGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdGA7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGNyZWF0ZUZpbGVFeChmaWxlUGF0aClcbiAgICB9IGNhdGNoIChuYXRpdmVFcnJvcikge1xuICAgICAgZXJyb3IgPSBuYXRpdmVFcnJvcjsgIC8vL1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9yKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRW50cmllcyhwYXRoTWFwcywgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykge1xuICBjb25zdCB0YXJnZXRFbnRyeVBhdGhzID0gW107XG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChcbiAgICBwYXRoTWFwcyxcbiAgICAoc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIGVudHJ5RGlyZWN0b3J5LCBuZXh0LCBkb25lLCBpbmRleCkgPT4ge1xuICAgICAgY3JlYXRlRW50cnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIGVudHJ5RGlyZWN0b3J5LCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIChzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCkgPT4ge1xuICAgICAgICB0YXJnZXRFbnRyeVBhdGhzLnB1c2godGFyZ2V0RW50cnlQYXRoKTtcblxuICAgICAgICBuZXh0KCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgICgpID0+IHtcbiAgICAgIGNhbGxiYWNrKHRhcmdldEVudHJ5UGF0aHMpO1xuICAgIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRmlsZU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykge1xuICBjb25zdCB0YXJnZXRGaWxlUGF0aCA9IHRhcmdldEVudHJ5UGF0aCwgLy8vXG4gICAgICAgIGFic29sdXRlVGFyZ2V0RmlsZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgdGFyZ2V0RmlsZVBhdGgpLFxuICAgICAgICB0YXJnZXRGaWxlRXhpc3RzID0gY2hlY2tGaWxlRXhpc3RzKGFic29sdXRlVGFyZ2V0RmlsZVBhdGgpO1xuXG4gIGlmICh0YXJnZXRGaWxlRXhpc3RzKSB7XG4gICAgdGFyZ2V0RW50cnlQYXRoID0gbnVsbDtcblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZpbGVQYXRoID0gYWJzb2x1dGVUYXJnZXRGaWxlUGF0aDsgIC8vL1xuXG4gIGNyZWF0ZUZpbGUoZmlsZVBhdGgsIChlcnJvcikgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgdGFyZ2V0RW50cnlQYXRoID0gbnVsbDtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEaXJlY3RvcnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgY29uc3QgdGFyZ2V0RGlyZWN0b3J5UGF0aCA9IHRhcmdldEVudHJ5UGF0aCwgIC8vL1xuICAgICAgICBhYnNvbHV0ZVRhcmdldERpcmVjdG9yeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgdGFyZ2V0RGlyZWN0b3J5UGF0aCksXG4gICAgICAgIHRhcmdldERpcmVjdG9yeUV4aXN0cyA9IGNoZWNrRmlsZUV4aXN0cyhhYnNvbHV0ZVRhcmdldERpcmVjdG9yeVBhdGgpO1xuXG4gIGlmICh0YXJnZXREaXJlY3RvcnlFeGlzdHMpIHtcbiAgICB0YXJnZXRFbnRyeVBhdGggPSBudWxsO1xuXG4gICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY3JlYXRlRGlyZWN0b3J5KGFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUHJvamVjdEVudHJpZXMiLCJjcmVhdGVFbnRyeU9wZXJhdGlvbiIsImNyZWF0ZURpcmVjdG9yeSIsImNyZWF0ZUZpbGUiLCJjb25jYXRlbmF0ZVBhdGhzIiwicGF0aFV0aWxpdGllcyIsInBhdGhXaXRob3V0Qm90dG9tbW9zdE5hbWVGcm9tUGF0aCIsImNyZWF0ZUZpbGVFeCIsImZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJjcmVhdGVEaXJlY3RvcnlFeCIsImNoZWNrRW50cnlFeGlzdHMiLCJjaGVja0ZpbGVFeGlzdHMiLCJjaGVja0RpcmVjdG9yeUV4aXN0cyIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsImpzb24iLCJjYWxsYmFjayIsInBhdGhNYXBzIiwiY3JlYXRlRW50cmllcyIsInRhcmdldEVudHJ5UGF0aHMiLCJzb3VyY2VFbnRyeVBhdGgiLCJ0YXJnZXRFbnRyeVBhdGgiLCJlbnRyeURpcmVjdG9yeSIsImNyZWF0ZURpcmVjdG9yeU9wZXJhdGlvbiIsImNyZWF0ZUZpbGVPcGVyYXRpb24iLCJkaXJlY3RvcnlQYXRoIiwiZXJyb3IiLCJkaXJlY3RvcnlQYXRoV2l0aG91dEJvdHRvbW1vc3ROYW1lIiwicGFyZW50RGlyZWN0b3J5UGF0aCIsInBhcmVudERpcmVjdG9yeUV4aXN0cyIsIm5hdGl2ZUVycm9yIiwiZmlsZVBhdGgiLCJmaWxlUGF0aFdpdGhvdXRCb3R0b21tb3N0TmFtZSIsImFzeW5jaHJvbm91c0ZvckVhY2giLCJuZXh0IiwiZG9uZSIsImluZGV4IiwicHVzaCIsInRhcmdldEZpbGVQYXRoIiwiYWJzb2x1dGVUYXJnZXRGaWxlUGF0aCIsInRhcmdldEZpbGVFeGlzdHMiLCJ0YXJnZXREaXJlY3RvcnlQYXRoIiwiYWJzb2x1dGVUYXJnZXREaXJlY3RvcnlQYXRoIiwidGFyZ2V0RGlyZWN0b3J5RXhpc3RzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFZQSxPQVVDO2VBVnVCQTs7SUFZUkMsb0JBQW9CO2VBQXBCQTs7SUFNQUMsZUFBZTtlQUFmQTs7SUFvQkFDLFVBQVU7ZUFBVkE7Ozt5QkFoRG1DO3dCQUVmO0FBRXBDLElBQVFDLG1CQUF3REMsd0JBQWEsQ0FBckVELGtCQUFrQkUsb0NBQXNDRCx3QkFBYSxDQUFuREMsbUNBQ2xCSCxBQUFZSSxlQUcrQkMsOEJBQW1CLENBSDlETCxZQUNBRCxBQUFpQk8sb0JBRTBCRCw4QkFBbUIsQ0FGOUROLGlCQUNBUSxBQUFrQkMsa0JBQ3lCSCw4QkFBbUIsQ0FEOURFLGtCQUNBQSxBQUFrQkUsdUJBQXlCSiw4QkFBbUIsQ0FBOURFO0FBRU8sU0FBU1YscUJBQXFCYSxxQkFBcUIsRUFBRUMsSUFBSSxFQUFFQyxRQUFRO0lBQ2hGLElBQU0sQUFBRUMsV0FBYUYsS0FBYkU7SUFFUkMsY0FBY0QsVUFBVUgsdUJBQXVCLFNBQUNLO1FBQzlDLElBQU1KLFNBQU87WUFDWEksa0JBQUFBO1FBQ0Y7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
@@ -16,9 +16,9 @@ _export(exports, {
16
16
  return editEntryOperation;
17
17
  }
18
18
  });
19
- var _fsextra = require("fs-extra");
20
19
  var _necessary = require("necessary");
21
20
  var _pathMaps = require("./utilities/pathMaps");
21
+ var _moveProjectEntries = require("./moveProjectEntries");
22
22
  var concatenatePaths = _necessary.pathUtilities.concatenatePaths, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists, isDirectoryEmpty = _necessary.fileSystemUtilities.isDirectoryEmpty;
23
23
  function editProjectEntries(projectsDirectoryPath, json, callback) {
24
24
  var pathMaps = json.pathMaps;
@@ -56,7 +56,8 @@ function editFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPa
56
56
  callback(sourceEntryPath, targetEntryPath);
57
57
  return;
58
58
  }
59
- (0, _fsextra.move)(absoluteSourceFilePath, absoluteTargetFilePath, function(error) {
59
+ var oldFilePath = absoluteSourceFilePath, newFilePath = absoluteTargetFilePath; ///
60
+ (0, _moveProjectEntries.moveFile)(oldFilePath, newFilePath, function(error) {
60
61
  if (error) {
61
62
  targetEntryPath = sourceEntryPath; ///
62
63
  }
@@ -72,7 +73,8 @@ function editDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
72
73
  }
73
74
  var absoluteTargetDirectoryPath = concatenatePaths(projectsDirectoryPath, targetDirectoryPath), targetDirectoryExists = checkEntryExists(absoluteTargetDirectoryPath);
74
75
  if (targetDirectoryExists) {
75
- (0, _fsextra.remove)(absoluteSourceDirectoryPath, function(error) {
76
+ var directoryPath = absoluteSourceDirectoryPath; ///
77
+ removeDirectory(directoryPath, function(error) {
76
78
  if (error) {
77
79
  targetEntryPath = sourceEntryPath; ///
78
80
  }
@@ -80,7 +82,8 @@ function editDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
80
82
  });
81
83
  return;
82
84
  }
83
- (0, _fsextra.move)(absoluteSourceDirectoryPath, absoluteTargetDirectoryPath, function(error) {
85
+ var oldDirectoryPath = absoluteSourceDirectoryPath, newDirectoryPath = absoluteTargetDirectoryPath; ///
86
+ (0, _moveProjectEntries.moveDirectory)(oldDirectoryPath, newDirectoryPath, function(error) {
84
87
  if (error) {
85
88
  targetEntryPath = sourceEntryPath; ///
86
89
  }
@@ -88,4 +91,4 @@ function editDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
88
91
  });
89
92
  }
90
93
 
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0UHJvamVjdEVudHJpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG1vdmUgYXMgZWRpdCwgcmVtb3ZlIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeyBwYXRoVXRpbGl0aWVzLCBmaWxlU3lzdGVtVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyBhc3luY2hyb25vdXNGb3JFYWNoIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3BhdGhNYXBzXCI7XG5cbmNvbnN0IHsgY29uY2F0ZW5hdGVQYXRocyB9ID0gcGF0aFV0aWxpdGllcyxcbiAgICAgIHsgY2hlY2tFbnRyeUV4aXN0cywgaXNEaXJlY3RvcnlFbXB0eSB9ID0gZmlsZVN5c3RlbVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWRpdFByb2plY3RFbnRyaWVzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwganNvbiwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyBwYXRoTWFwcyB9ID0ganNvbjtcblxuICBlZGl0RW50cmllcyhwYXRoTWFwcywgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCAodGFyZ2V0RW50cnlQYXRocykgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGhzXG4gICAgfTtcblxuICAgIGNhbGxiYWNrKGpzb24pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVkaXRFbnRyeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgY29uc3QgYWJzb2x1dGVTb3VyY2VFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc291cmNlRW50cnlQYXRoKSxcbiAgICAgICAgc291cmNlRW50cnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGFic29sdXRlU291cmNlRW50cnlQYXRoKTtcblxuICBpZiAoIXNvdXJjZUVudHJ5RXhpc3RzKSB7XG4gICAgdGFyZ2V0RW50cnlQYXRoID0gbnVsbDtcblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGVudHJ5RGlyZWN0b3J5ID9cbiAgICBlZGl0RGlyZWN0b3J5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSA6XG4gICAgICBlZGl0RmlsZU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIGVkaXRFbnRyaWVzKHBhdGhNYXBzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHRhcmdldEVudHJ5UGF0aHMgPSBbXTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKFxuICAgIHBhdGhNYXBzLFxuICAgIChzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIG5leHQsIGRvbmUsIGluZGV4KSA9PiB7XG4gICAgICBlZGl0RW50cnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIGVudHJ5RGlyZWN0b3J5LCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIChzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCkgPT4ge1xuICAgICAgICB0YXJnZXRFbnRyeVBhdGhzLnB1c2godGFyZ2V0RW50cnlQYXRoKTtcblxuICAgICAgICBuZXh0KCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgICgpID0+IHtcbiAgICAgIGNhbGxiYWNrKHRhcmdldEVudHJ5UGF0aHMpO1xuICAgIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gZWRpdEZpbGVPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgY29uc3Qgc291cmNlRmlsZVBhdGggPSBzb3VyY2VFbnRyeVBhdGgsIC8vL1xuICAgICAgICB0YXJnZXRGaWxlUGF0aCA9IHRhcmdldEVudHJ5UGF0aCwgLy8vXG4gICAgICAgIGFic29sdXRlU291cmNlRmlsZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc291cmNlRmlsZVBhdGgpLFxuICAgICAgICBhYnNvbHV0ZVRhcmdldEZpbGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHRhcmdldEZpbGVQYXRoKSxcbiAgICAgICAgdGFyZ2V0RmlsZUV4aXN0cyA9IGNoZWNrRW50cnlFeGlzdHMoYWJzb2x1dGVUYXJnZXRGaWxlUGF0aCk7XG5cbiAgaWYgKHRhcmdldEZpbGVFeGlzdHMpIHtcbiAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGVkaXQoYWJzb2x1dGVTb3VyY2VGaWxlUGF0aCwgYWJzb2x1dGVUYXJnZXRGaWxlUGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cbiAgICB9XG5cbiAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlZGl0RGlyZWN0b3J5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHNvdXJjZURpcmVjdG9yeVBhdGggPSBzb3VyY2VFbnRyeVBhdGgsICAvLy9cbiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5UGF0aCA9IHRhcmdldEVudHJ5UGF0aCwgIC8vL1xuICAgICAgICBhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc291cmNlRGlyZWN0b3J5UGF0aCksXG4gICAgICAgIHNvdXJjZURpcmVjdG9yeUVtcHR5ID0gaXNEaXJlY3RvcnlFbXB0eShhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGgpO1xuXG4gIGlmICghc291cmNlRGlyZWN0b3J5RW1wdHkpIHtcbiAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCB0YXJnZXREaXJlY3RvcnlQYXRoKSxcbiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5RXhpc3RzID0gY2hlY2tFbnRyeUV4aXN0cyhhYnNvbHV0ZVRhcmdldERpcmVjdG9yeVBhdGgpO1xuXG4gIGlmICh0YXJnZXREaXJlY3RvcnlFeGlzdHMpIHtcbiAgICByZW1vdmUoYWJzb2x1dGVTb3VyY2VEaXJlY3RvcnlQYXRoLCAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZWRpdChhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGgsIGFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cbiAgICB9XG5cbiAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbImVkaXRQcm9qZWN0RW50cmllcyIsImVkaXRFbnRyeU9wZXJhdGlvbiIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwiY2hlY2tFbnRyeUV4aXN0cyIsImZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJpc0RpcmVjdG9yeUVtcHR5IiwicHJvamVjdHNEaXJlY3RvcnlQYXRoIiwianNvbiIsImNhbGxiYWNrIiwicGF0aE1hcHMiLCJlZGl0RW50cmllcyIsInRhcmdldEVudHJ5UGF0aHMiLCJzb3VyY2VFbnRyeVBhdGgiLCJ0YXJnZXRFbnRyeVBhdGgiLCJlbnRyeURpcmVjdG9yeSIsImFic29sdXRlU291cmNlRW50cnlQYXRoIiwic291cmNlRW50cnlFeGlzdHMiLCJlZGl0RGlyZWN0b3J5T3BlcmF0aW9uIiwiZWRpdEZpbGVPcGVyYXRpb24iLCJhc3luY2hyb25vdXNGb3JFYWNoIiwibmV4dCIsImRvbmUiLCJpbmRleCIsInB1c2giLCJzb3VyY2VGaWxlUGF0aCIsInRhcmdldEZpbGVQYXRoIiwiYWJzb2x1dGVTb3VyY2VGaWxlUGF0aCIsImFic29sdXRlVGFyZ2V0RmlsZVBhdGgiLCJ0YXJnZXRGaWxlRXhpc3RzIiwiZWRpdCIsImVycm9yIiwic291cmNlRGlyZWN0b3J5UGF0aCIsInRhcmdldERpcmVjdG9yeVBhdGgiLCJhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGgiLCJzb3VyY2VEaXJlY3RvcnlFbXB0eSIsImFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCIsInRhcmdldERpcmVjdG9yeUV4aXN0cyIsInJlbW92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
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0UHJvamVjdEVudHJpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHBhdGhVdGlsaXRpZXMsIGZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IGFzeW5jaHJvbm91c0ZvckVhY2ggfSBmcm9tIFwiLi91dGlsaXRpZXMvcGF0aE1hcHNcIjtcblxuaW1wb3J0IHsgbW92ZUZpbGUgYXMgZWRpdEZpbGUsIG1vdmVEaXJlY3RvcnkgYXMgZWRpdERpcmVjdG9yeSB9IGZyb20gXCIuL21vdmVQcm9qZWN0RW50cmllc1wiO1xuXG5jb25zdCB7IGNvbmNhdGVuYXRlUGF0aHMgfSA9IHBhdGhVdGlsaXRpZXMsXG4gICAgICB7IGNoZWNrRW50cnlFeGlzdHMsIGlzRGlyZWN0b3J5RW1wdHkgfSA9IGZpbGVTeXN0ZW1VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVkaXRQcm9qZWN0RW50cmllcyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHsgcGF0aE1hcHMgfSA9IGpzb247XG5cbiAgZWRpdEVudHJpZXMocGF0aE1hcHMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgKHRhcmdldEVudHJ5UGF0aHMpID0+IHtcbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgdGFyZ2V0RW50cnlQYXRoc1xuICAgIH07XG5cbiAgICBjYWxsYmFjayhqc29uKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlZGl0RW50cnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIGVudHJ5RGlyZWN0b3J5LCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFic29sdXRlU291cmNlRW50cnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHNvdXJjZUVudHJ5UGF0aCksXG4gICAgICAgIHNvdXJjZUVudHJ5RXhpc3RzID0gY2hlY2tFbnRyeUV4aXN0cyhhYnNvbHV0ZVNvdXJjZUVudHJ5UGF0aCk7XG5cbiAgaWYgKCFzb3VyY2VFbnRyeUV4aXN0cykge1xuICAgIHRhcmdldEVudHJ5UGF0aCA9IG51bGw7XG5cbiAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBlbnRyeURpcmVjdG9yeSA/XG4gICAgZWRpdERpcmVjdG9yeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykgOlxuICAgICAgZWRpdEZpbGVPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBlZGl0RW50cmllcyhwYXRoTWFwcywgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykge1xuICBjb25zdCB0YXJnZXRFbnRyeVBhdGhzID0gW107XG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChcbiAgICBwYXRoTWFwcyxcbiAgICAoc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIGVudHJ5RGlyZWN0b3J5LCBuZXh0LCBkb25lLCBpbmRleCkgPT4ge1xuICAgICAgZWRpdEVudHJ5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBlbnRyeURpcmVjdG9yeSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCAoc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpID0+IHtcbiAgICAgICAgdGFyZ2V0RW50cnlQYXRocy5wdXNoKHRhcmdldEVudHJ5UGF0aCk7XG5cbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICAoKSA9PiB7XG4gICAgICBjYWxsYmFjayh0YXJnZXRFbnRyeVBhdGhzKTtcbiAgICB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIGVkaXRGaWxlT3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHNvdXJjZUZpbGVQYXRoID0gc291cmNlRW50cnlQYXRoLCAvLy9cbiAgICAgICAgdGFyZ2V0RmlsZVBhdGggPSB0YXJnZXRFbnRyeVBhdGgsIC8vL1xuICAgICAgICBhYnNvbHV0ZVNvdXJjZUZpbGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHNvdXJjZUZpbGVQYXRoKSxcbiAgICAgICAgYWJzb2x1dGVUYXJnZXRGaWxlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCB0YXJnZXRGaWxlUGF0aCksXG4gICAgICAgIHRhcmdldEZpbGVFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGFic29sdXRlVGFyZ2V0RmlsZVBhdGgpO1xuXG4gIGlmICh0YXJnZXRGaWxlRXhpc3RzKSB7XG4gICAgdGFyZ2V0RW50cnlQYXRoID0gc291cmNlRW50cnlQYXRoOyAgLy8vXG5cbiAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvbGRGaWxlUGF0aCA9IGFic29sdXRlU291cmNlRmlsZVBhdGgsIC8vL1xuICAgICAgICBuZXdGaWxlUGF0aCA9IGFic29sdXRlVGFyZ2V0RmlsZVBhdGg7IC8vL1xuXG4gIGVkaXRGaWxlKG9sZEZpbGVQYXRoLCBuZXdGaWxlUGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cbiAgICB9XG5cbiAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlZGl0RGlyZWN0b3J5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHNvdXJjZURpcmVjdG9yeVBhdGggPSBzb3VyY2VFbnRyeVBhdGgsICAvLy9cbiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5UGF0aCA9IHRhcmdldEVudHJ5UGF0aCwgIC8vL1xuICAgICAgICBhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc291cmNlRGlyZWN0b3J5UGF0aCksXG4gICAgICAgIHNvdXJjZURpcmVjdG9yeUVtcHR5ID0gaXNEaXJlY3RvcnlFbXB0eShhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGgpO1xuXG4gIGlmICghc291cmNlRGlyZWN0b3J5RW1wdHkpIHtcbiAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCB0YXJnZXREaXJlY3RvcnlQYXRoKSxcbiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5RXhpc3RzID0gY2hlY2tFbnRyeUV4aXN0cyhhYnNvbHV0ZVRhcmdldERpcmVjdG9yeVBhdGgpO1xuXG4gIGlmICh0YXJnZXREaXJlY3RvcnlFeGlzdHMpIHtcbiAgICBjb25zdCBkaXJlY3RvcnlQYXRoID0gYWJzb2x1dGVTb3VyY2VEaXJlY3RvcnlQYXRoOyAgLy8vXG5cbiAgICByZW1vdmVEaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgKGVycm9yKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGFyZ2V0RW50cnlQYXRoID0gc291cmNlRW50cnlQYXRoOyAgLy8vXG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgICB9KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9sZERpcmVjdG9yeVBhdGggPSBhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGgsIC8vL1xuICAgICAgICBuZXdEaXJlY3RvcnlQYXRoID0gYWJzb2x1dGVUYXJnZXREaXJlY3RvcnlQYXRoOyAvLy9cblxuICBlZGl0RGlyZWN0b3J5KG9sZERpcmVjdG9yeVBhdGgsIG5ld0RpcmVjdG9yeVBhdGgsIChlcnJvcikgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgdGFyZ2V0RW50cnlQYXRoID0gc291cmNlRW50cnlQYXRoOyAgLy8vXG4gICAgfVxuXG4gICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJlZGl0UHJvamVjdEVudHJpZXMiLCJlZGl0RW50cnlPcGVyYXRpb24iLCJjb25jYXRlbmF0ZVBhdGhzIiwicGF0aFV0aWxpdGllcyIsImNoZWNrRW50cnlFeGlzdHMiLCJmaWxlU3lzdGVtVXRpbGl0aWVzIiwiaXNEaXJlY3RvcnlFbXB0eSIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsImpzb24iLCJjYWxsYmFjayIsInBhdGhNYXBzIiwiZWRpdEVudHJpZXMiLCJ0YXJnZXRFbnRyeVBhdGhzIiwic291cmNlRW50cnlQYXRoIiwidGFyZ2V0RW50cnlQYXRoIiwiZW50cnlEaXJlY3RvcnkiLCJhYnNvbHV0ZVNvdXJjZUVudHJ5UGF0aCIsInNvdXJjZUVudHJ5RXhpc3RzIiwiZWRpdERpcmVjdG9yeU9wZXJhdGlvbiIsImVkaXRGaWxlT3BlcmF0aW9uIiwiYXN5bmNocm9ub3VzRm9yRWFjaCIsIm5leHQiLCJkb25lIiwiaW5kZXgiLCJwdXNoIiwic291cmNlRmlsZVBhdGgiLCJ0YXJnZXRGaWxlUGF0aCIsImFic29sdXRlU291cmNlRmlsZVBhdGgiLCJhYnNvbHV0ZVRhcmdldEZpbGVQYXRoIiwidGFyZ2V0RmlsZUV4aXN0cyIsIm9sZEZpbGVQYXRoIiwibmV3RmlsZVBhdGgiLCJlZGl0RmlsZSIsImVycm9yIiwic291cmNlRGlyZWN0b3J5UGF0aCIsInRhcmdldERpcmVjdG9yeVBhdGgiLCJhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGgiLCJzb3VyY2VEaXJlY3RvcnlFbXB0eSIsImFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCIsInRhcmdldERpcmVjdG9yeUV4aXN0cyIsImRpcmVjdG9yeVBhdGgiLCJyZW1vdmVEaXJlY3RvcnkiLCJvbGREaXJlY3RvcnlQYXRoIiwibmV3RGlyZWN0b3J5UGF0aCIsImVkaXREaXJlY3RvcnkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQVdBLE9BVUM7ZUFWdUJBOztJQVlSQyxrQkFBa0I7ZUFBbEJBOzs7eUJBckJtQzt3QkFFZjtrQ0FFaUM7QUFFckUsSUFBTSxBQUFFQyxtQkFBcUJDLHdCQUFhLENBQWxDRCxrQkFDQUUsbUJBQXVDQyw4QkFBbUIsQ0FBMURELGtCQUFrQkUsbUJBQXFCRCw4QkFBbUIsQ0FBeENDO0FBRVgsU0FBU04sbUJBQW1CTyxxQkFBcUIsRUFBRUMsSUFBSSxFQUFFQyxRQUFRO0lBQzlFLElBQU0sQUFBRUMsV0FBYUYsS0FBYkU7SUFFUkMsWUFBWUQsVUFBVUgsdUJBQXVCLFNBQUNLO1FBQzVDLElBQU1KLFNBQU87WUFDWEksa0JBQUFBO1FBQ0Y7UUFFQUgsU0FBU0Q7SUFDWDtBQUNGO0FBRU8sU0FBU1AsbUJBQW1CWSxlQUFlLEVBQUVDLGVBQWUsRUFBRUMsY0FBYyxFQUFFUixxQkFBcUIsRUFBRUUsUUFBUTtJQUNsSCxJQUFNTywwQkFBMEJkLGlCQUFpQkssdUJBQXVCTSxrQkFDbEVJLG9CQUFvQmIsaUJBQWlCWTtJQUUz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
@@ -14,13 +14,18 @@ _export(exports, {
14
14
  },
15
15
  moveEntryOperation: function() {
16
16
  return moveEntryOperation;
17
+ },
18
+ moveDirectory: function() {
19
+ return moveDirectory;
20
+ },
21
+ moveFile: function() {
22
+ return moveFile;
17
23
  }
18
24
  });
19
- var _fsextra = require("fs-extra");
20
25
  var _necessary = require("necessary");
21
26
  var _pathMaps = require("./utilities/pathMaps");
22
27
  var _removeProjectEntries = require("./removeProjectEntries");
23
- var concatenatePaths = _necessary.pathUtilities.concatenatePaths, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists, isDirectoryEmpty = _necessary.fileSystemUtilities.isDirectoryEmpty;
28
+ var concatenatePaths = _necessary.pathUtilities.concatenatePaths, pathWithoutBottommostName = _necessary.pathUtilities.pathWithoutBottommostName, isDirectoryEmpty = _necessary.fileSystemUtilities.isDirectoryEmpty, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists, renameFileEx = _necessary.fileSystemUtilities.renameFile, renameDirectoryEx = _necessary.fileSystemUtilities.renameDirectory, checkDirectoryExists = _necessary.fileSystemUtilities.checkEntryExists;
24
29
  function moveProjectEntries(projectsDirectoryPath, json, callback) {
25
30
  var pathMaps = json.pathMaps;
26
31
  moveEntries(pathMaps, projectsDirectoryPath, function(targetEntryPaths) {
@@ -43,6 +48,34 @@ function moveEntryOperation(sourceEntryPath, targetEntryPath, entryDirectory, pr
43
48
  }
44
49
  entryDirectory ? moveDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback) : moveFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback);
45
50
  }
51
+ function moveDirectory(oldDirectoryPath, newDirectoryPath, callback) {
52
+ var error = null;
53
+ var newDirectoryPathWithoutBottommostName = pathWithoutBottommostName(newDirectoryPath), newParentDirectoryPath = newDirectoryPathWithoutBottommostName, newParentDirectoryExists = checkDirectoryExists(newParentDirectoryPath);
54
+ if (!newParentDirectoryExists) {
55
+ error = "The new '".concat(newDirectoryPath, "' directory's parent directory does not exist.");
56
+ } else {
57
+ try {
58
+ renameDirectoryEx(oldDirectoryPath);
59
+ } catch (nativeError) {
60
+ error = nativeError; ///
61
+ }
62
+ }
63
+ callback(error);
64
+ }
65
+ function moveFile(oldFilePath, newFilePath, callback) {
66
+ var error = null;
67
+ var newFilePathWithoutBottommostName = pathWithoutBottommostName(newFilePath), newParentDirectoryPath = newFilePathWithoutBottommostName, newParentDirectoryExists = checkFileExists(newParentDirectoryPath);
68
+ if (!newParentDirectoryExists) {
69
+ error = "The new '".concat(newFilePath, "' file's parent directory does not exist.");
70
+ } else {
71
+ try {
72
+ renameFileEx(oldFilePath, newFilePath);
73
+ } catch (nativeError) {
74
+ error = nativeError; ///
75
+ }
76
+ }
77
+ callback(error);
78
+ }
46
79
  function moveEntries(pathMaps, projectsDirectoryPath, callback) {
47
80
  var targetEntryPaths = [];
48
81
  (0, _pathMaps.asynchronousForEach)(pathMaps, function(sourceEntryPath, targetEntryPath, entryDirectory, next, done, index) {
@@ -61,7 +94,8 @@ function moveFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPa
61
94
  callback(sourceEntryPath, targetEntryPath);
62
95
  return;
63
96
  }
64
- (0, _fsextra.move)(absoluteSourceFilePath, absoluteTargetFilePath, function(error) {
97
+ var oldFilePath = absoluteSourceFilePath, newFilePath = absoluteTargetFilePath; ///
98
+ moveFile(oldFilePath, newFilePath, function(error) {
65
99
  if (error) {
66
100
  targetEntryPath = null;
67
101
  }
@@ -77,7 +111,8 @@ function moveDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
77
111
  }
78
112
  var absoluteTargetDirectoryPath = concatenatePaths(projectsDirectoryPath, targetDirectoryPath), targetDirectoryExists = checkEntryExists(absoluteTargetDirectoryPath);
79
113
  if (targetDirectoryExists) {
80
- (0, _fsextra.remove)(absoluteSourceDirectoryPath, function(error) {
114
+ var directoryPath = absoluteSourceDirectoryPath; ///
115
+ (0, _removeProjectEntries.removeEntry)(directoryPath, function(error) {
81
116
  if (error) {
82
117
  targetEntryPath = sourceEntryPath; ///
83
118
  }
@@ -85,7 +120,8 @@ function moveDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
85
120
  });
86
121
  return;
87
122
  }
88
- (0, _fsextra.move)(absoluteSourceDirectoryPath, absoluteTargetDirectoryPath, function(error) {
123
+ var oldDirectoryPath = absoluteSourceDirectoryPath, newDirectoryPath = absoluteTargetDirectoryPath; ///
124
+ moveDirectory(oldDirectoryPath, newDirectoryPath, function(error) {
89
125
  if (error) {
90
126
  targetEntryPath = sourceEntryPath; ///
91
127
  }
@@ -93,4 +129,4 @@ function moveDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
93
129
  });
94
130
  }
95
131
 
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb3ZlUHJvamVjdEVudHJpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG1vdmUsIHJlbW92ZSB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNocm9ub3VzRm9yRWFjaCB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoTWFwc1wiO1xuaW1wb3J0IHsgcmVtb3ZlRW50cnlPcGVyYXRpb24gfSBmcm9tIFwiLi9yZW1vdmVQcm9qZWN0RW50cmllc1wiO1xuXG5jb25zdCB7IGNvbmNhdGVuYXRlUGF0aHMgfSA9IHBhdGhVdGlsaXRpZXMsXG4gICAgICB7IGNoZWNrRW50cnlFeGlzdHMsIGlzRGlyZWN0b3J5RW1wdHkgfSA9IGZpbGVTeXN0ZW1VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1vdmVQcm9qZWN0RW50cmllcyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHsgcGF0aE1hcHMgfSA9IGpzb247XG5cbiAgbW92ZUVudHJpZXMocGF0aE1hcHMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgKHRhcmdldEVudHJ5UGF0aHMpID0+IHtcbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgdGFyZ2V0RW50cnlQYXRoc1xuICAgIH07XG5cbiAgICBjYWxsYmFjayhqc29uKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlRW50cnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIGVudHJ5RGlyZWN0b3J5LCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGlmICh0YXJnZXRFbnRyeVBhdGggPT09IG51bGwpIHtcbiAgICByZW1vdmVFbnRyeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYWJzb2x1dGVTb3VyY2VFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc291cmNlRW50cnlQYXRoKSxcbiAgICAgICAgc291cmNlRW50cnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGFic29sdXRlU291cmNlRW50cnlQYXRoKTtcblxuICBpZiAoIXNvdXJjZUVudHJ5RXhpc3RzKSB7XG4gICAgdGFyZ2V0RW50cnlQYXRoID0gbnVsbDtcblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGVudHJ5RGlyZWN0b3J5ID9cbiAgICBtb3ZlRGlyZWN0b3J5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSA6XG4gICAgICBtb3ZlRmlsZU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIG1vdmVFbnRyaWVzKHBhdGhNYXBzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHRhcmdldEVudHJ5UGF0aHMgPSBbXTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKFxuICAgIHBhdGhNYXBzLFxuICAgIChzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIG5leHQsIGRvbmUsIGluZGV4KSA9PiB7XG4gICAgICBtb3ZlRW50cnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIGVudHJ5RGlyZWN0b3J5LCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIChzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCkgPT4ge1xuICAgICAgICB0YXJnZXRFbnRyeVBhdGhzLnB1c2godGFyZ2V0RW50cnlQYXRoKTtcblxuICAgICAgICBuZXh0KCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgICgpID0+IHtcbiAgICAgIGNhbGxiYWNrKHRhcmdldEVudHJ5UGF0aHMpO1xuICAgIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gbW92ZUZpbGVPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgY29uc3Qgc291cmNlRmlsZVBhdGggPSBzb3VyY2VFbnRyeVBhdGgsIC8vL1xuICAgICAgICB0YXJnZXRGaWxlUGF0aCA9IHRhcmdldEVudHJ5UGF0aCwgLy8vXG4gICAgICAgIGFic29sdXRlU291cmNlRmlsZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc291cmNlRmlsZVBhdGgpLFxuICAgICAgICBhYnNvbHV0ZVRhcmdldEZpbGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHRhcmdldEZpbGVQYXRoKSxcbiAgICAgICAgdGFyZ2V0RmlsZUV4aXN0cyA9IGNoZWNrRW50cnlFeGlzdHMoYWJzb2x1dGVUYXJnZXRGaWxlUGF0aCk7XG5cbiAgaWYgKHRhcmdldEZpbGVFeGlzdHMpIHtcbiAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIG1vdmUoYWJzb2x1dGVTb3VyY2VGaWxlUGF0aCwgYWJzb2x1dGVUYXJnZXRGaWxlUGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1vdmVEaXJlY3RvcnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgY29uc3Qgc291cmNlRGlyZWN0b3J5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aCwgIC8vL1xuICAgICAgICB0YXJnZXREaXJlY3RvcnlQYXRoID0gdGFyZ2V0RW50cnlQYXRoLCAgLy8vXG4gICAgICAgIGFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzb3VyY2VEaXJlY3RvcnlQYXRoKSxcbiAgICAgICAgc291cmNlRGlyZWN0b3J5RW1wdHkgPSBpc0RpcmVjdG9yeUVtcHR5KGFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCk7XG5cbiAgaWYgKCFzb3VyY2VEaXJlY3RvcnlFbXB0eSkge1xuICAgIHRhcmdldEVudHJ5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aDsgIC8vL1xuXG4gICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYWJzb2x1dGVUYXJnZXREaXJlY3RvcnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHRhcmdldERpcmVjdG9yeVBhdGgpLFxuICAgICAgICB0YXJnZXREaXJlY3RvcnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCk7XG5cbiAgaWYgKHRhcmdldERpcmVjdG9yeUV4aXN0cykge1xuICAgIHJlbW92ZShhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGgsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRhcmdldEVudHJ5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aDsgIC8vL1xuICAgICAgfVxuXG4gICAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBtb3ZlKGFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCwgYWJzb2x1dGVUYXJnZXREaXJlY3RvcnlQYXRoLCAoZXJyb3IpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRhcmdldEVudHJ5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aDsgIC8vL1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsibW92ZVByb2plY3RFbnRyaWVzIiwibW92ZUVudHJ5T3BlcmF0aW9uIiwiY29uY2F0ZW5hdGVQYXRocyIsInBhdGhVdGlsaXRpZXMiLCJjaGVja0VudHJ5RXhpc3RzIiwiZmlsZVN5c3RlbVV0aWxpdGllcyIsImlzRGlyZWN0b3J5RW1wdHkiLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJqc29uIiwiY2FsbGJhY2siLCJwYXRoTWFwcyIsIm1vdmVFbnRyaWVzIiwidGFyZ2V0RW50cnlQYXRocyIsInNvdXJjZUVudHJ5UGF0aCIsInRhcmdldEVudHJ5UGF0aCIsImVudHJ5RGlyZWN0b3J5IiwicmVtb3ZlRW50cnlPcGVyYXRpb24iLCJhYnNvbHV0ZVNvdXJjZUVudHJ5UGF0aCIsInNvdXJjZUVudHJ5RXhpc3RzIiwibW92ZURpcmVjdG9yeU9wZXJhdGlvbiIsIm1vdmVGaWxlT3BlcmF0aW9uIiwiYXN5bmNocm9ub3VzRm9yRWFjaCIsIm5leHQiLCJkb25lIiwiaW5kZXgiLCJwdXNoIiwic291cmNlRmlsZVBhdGgiLCJ0YXJnZXRGaWxlUGF0aCIsImFic29sdXRlU291cmNlRmlsZVBhdGgiLCJhYnNvbHV0ZVRhcmdldEZpbGVQYXRoIiwidGFyZ2V0RmlsZUV4aXN0cyIsIm1vdmUiLCJlcnJvciIsInNvdXJjZURpcmVjdG9yeVBhdGgiLCJ0YXJnZXREaXJlY3RvcnlQYXRoIiwiYWJzb2x1dGVTb3VyY2VEaXJlY3RvcnlQYXRoIiwic291cmNlRGlyZWN0b3J5RW1wdHkiLCJhYnNvbHV0ZVRhcmdldERpcmVjdG9yeVBhdGgiLCJ0YXJnZXREaXJlY3RvcnlFeGlzdHMiLCJyZW1vdmUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQVdBLE9BVUM7ZUFWdUJBOztJQVlSQyxrQkFBa0I7ZUFBbEJBOzs7dUJBckJhO3lCQUNzQjt3QkFFZjtvQ0FDQztBQUVyQyxJQUFNLEFBQUVDLG1CQUFxQkMsd0JBQWEsQ0FBbENELGtCQUNBRSxtQkFBdUNDLDhCQUFtQixDQUExREQsa0JBQWtCRSxtQkFBcUJELDhCQUFtQixDQUF4Q0M7QUFFWCxTQUFTTixtQkFBbUJPLHFCQUFxQixFQUFFQyxJQUFJLEVBQUVDLFFBQVE7SUFDOUUsSUFBTSxBQUFFQyxXQUFhRixLQUFiRTtJQUVSQyxZQUFZRCxVQUFVSCx1QkFBdUIsU0FBQ0s7UUFDNUMsSUFBTUosU0FBTztZQUNYSSxrQkFBQUE7UUFDRjtRQUVBSCxTQUFTRDtJQUNYO0FBQ0Y7QUFFTyxTQUFTUCxtQkFBbUJZLGVBQWUsRUFBRUMsZUFBZSxFQUFFQyxjQUFjLEVBQUVSLHFCQUFxQixFQUFFRSxRQUFRO0lBQ2xILElBQUlLLG9CQUFvQixNQUFNO1FBQzVCRSxJQUFBQSwwQ0FBb0IsRUFBQ0gsaUJBQWlCQyxpQkFBaUJDLGdCQUFnQlIsdUJBQXVCRTtRQUU5RjtJQUNGO0lBRUEsSUFBTVEsMEJBQTBCZixpQkFBaUJLLHVCQUF1Qk0sa0JBQ2xFSyxvQkFBb0JkLGlCQUFpQmE7SUFFM0MsSUFBSSxDQUFDQyxtQkFBbUI7UUFDdEJKLGtCQUFrQjtRQUVsQkwsU0FBU0ksaUJBQWlCQztRQUUxQjtJQUNGO0lBRUFDLGlCQUNFSSx1QkFBdUJOLGlCQUFpQkMsaUJBQWlCUCx1QkFBdUJFLFlBQzlFVyxrQkFBa0JQLGlCQUFpQkMsaUJBQWlCUCx1QkFBdUJFO0FBQ2pGO0FBRUEsU0FBU0UsWUFBWUQsUUFBUSxFQUFFSCxxQkFBcUIsRUFBRUUsUUFBUTtJQUM1RCxJQUFNRyxtQkFBbUIsRUFBRTtJQUUzQlMsSUFBQUEsNkJBQW1CLEVBQ2pCWCxVQUNBLFNBQUNHLGlCQUFpQkMsaUJBQWlCQyxnQkFBZ0JPLE1BQU1DLE1BQU1DO1FBQzdEdkIsbUJBQW1CWSxpQkFBaUJDLGlCQUFpQkMsZ0JBQWdCUix1QkFBdUIsU0FBQ00saUJBQWlCQztZQUM1R0YsaUJBQWlCYSxJQUFJLENBQUNYO1lBRXRCUTtRQUNGO0lBQ0YsR0FDQTtRQUNFYixTQUFTRztJQUNYO0FBRUo7QUFFQSxTQUFTUSxrQkFBa0JQLGVBQWUsRUFBRUMsZUFBZSxFQUFFUCxxQkFBcUIsRUFBRUUsUUFBUTtJQUMxRixJQUFNaUIsaUJBQWlCYixpQkFDakJjLGlCQUFpQmIsaUJBQ2pCYyx5QkFBeUIxQixpQkFBaUJLLHVCQUF1Qm1CLGlCQUNqRUcseUJBQXlCM0IsaUJBQWlCSyx1QkFBdUJvQixpQkFDakVHLG1CQUFtQjFCLGlCQUFpQnlCO0lBRTFDLElBQUlDLGtCQUFrQjtRQUNwQmhCLGtCQUFrQkQsaUJBQWtCLEdBQUc7UUFFdkNKLFNBQVNJLGlCQUFpQkM7UUFFMUI7SUFDRjtJQUVBaUIsSUFBQUEsYUFBSSxFQUFDSCx3QkFBd0JDLHdCQUF3QixTQUFDRztRQUNwRCxJQUFJQSxPQUFPO1lBQ1RsQixrQkFBa0I7UUFDcEI7UUFFQUwsU0FBU0ksaUJBQWlCQztJQUM1QjtBQUNGO0FBRUEsU0FBU0ssdUJBQXVCTixlQUFlLEVBQUVDLGVBQWUsRUFBRVAscUJBQXFCLEVBQUVFLFFBQVE7SUFDL0YsSUFBTXdCLHNCQUFzQnBCLGlCQUN0QnFCLHNCQUFzQnBCLGlCQUN0QnFCLDhCQUE4QmpDLGlCQUFpQkssdUJBQXVCMEIsc0JBQ3RFRyx1QkFBdUI5QixpQkFBaUI2QjtJQUU5QyxJQUFJLENBQUNDLHNCQUFzQjtRQUN6QnRCLGtCQUFrQkQsaUJBQWtCLEdBQUc7UUFFdkNKLFNBQVNJLGlCQUFpQkM7UUFFMUI7SUFDRjtJQUVBLElBQU11Qiw4QkFBOEJuQyxpQkFBaUJLLHVCQUF1QjJCLHNCQUN0RUksd0JBQXdCbEMsaUJBQWlCaUM7SUFFL0MsSUFBSUMsdUJBQXVCO1FBQ3pCQyxJQUFBQSxlQUFNLEVBQUNKLDZCQUE2QixTQUFDSDtZQUNuQyxJQUFJQSxPQUFPO2dCQUNUbEIsa0JBQWtCRCxpQkFBa0IsR0FBRztZQUN6QztZQUVBSixTQUFTSSxpQkFBaUJDO1FBQzVCO1FBRUE7SUFDRjtJQUVBaUIsSUFBQUEsYUFBSSxFQUFDSSw2QkFBNkJFLDZCQUE2QixTQUFDTDtRQUM5RCxJQUFJQSxPQUFPO1lBQ1RsQixrQkFBa0JELGlCQUFrQixHQUFHO1FBQ3pDO1FBRUFKLFNBQVNJLGlCQUFpQkM7SUFDNUI7QUFDRiJ9
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb3ZlUHJvamVjdEVudHJpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHBhdGhVdGlsaXRpZXMsIGZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IGFzeW5jaHJvbm91c0ZvckVhY2ggfSBmcm9tIFwiLi91dGlsaXRpZXMvcGF0aE1hcHNcIjtcbmltcG9ydCB7IHJlbW92ZUVudHJ5T3BlcmF0aW9uIH0gZnJvbSBcIi4vcmVtb3ZlUHJvamVjdEVudHJpZXNcIjtcbmltcG9ydCB7IHJlbW92ZUVudHJ5IGFzIHJlbW92ZURpcmVjdG9yeSB9IGZyb20gXCIuL3JlbW92ZVByb2plY3RFbnRyaWVzXCI7XG5cbmNvbnN0IHsgY29uY2F0ZW5hdGVQYXRocywgcGF0aFdpdGhvdXRCb3R0b21tb3N0TmFtZSB9ID0gcGF0aFV0aWxpdGllcyxcbiAgICAgIHsgaXNEaXJlY3RvcnlFbXB0eSxcbiAgICAgICAgY2hlY2tFbnRyeUV4aXN0cyxcbiAgICAgICAgcmVuYW1lRmlsZTogcmVuYW1lRmlsZUV4LFxuICAgICAgICByZW5hbWVEaXJlY3Rvcnk6IHJlbmFtZURpcmVjdG9yeUV4LFxuICAgICAgICBjaGVja0VudHJ5RXhpc3RzOiBjaGVja0RpcmVjdG9yeUV4aXN0cyB9ID0gZmlsZVN5c3RlbVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW92ZVByb2plY3RFbnRyaWVzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwganNvbiwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyBwYXRoTWFwcyB9ID0ganNvbjtcblxuICBtb3ZlRW50cmllcyhwYXRoTWFwcywgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCAodGFyZ2V0RW50cnlQYXRocykgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGhzXG4gICAgfTtcblxuICAgIGNhbGxiYWNrKGpzb24pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVFbnRyeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgaWYgKHRhcmdldEVudHJ5UGF0aCA9PT0gbnVsbCkge1xuICAgIHJlbW92ZUVudHJ5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBlbnRyeURpcmVjdG9yeSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjayk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhYnNvbHV0ZVNvdXJjZUVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzb3VyY2VFbnRyeVBhdGgpLFxuICAgICAgICBzb3VyY2VFbnRyeUV4aXN0cyA9IGNoZWNrRW50cnlFeGlzdHMoYWJzb2x1dGVTb3VyY2VFbnRyeVBhdGgpO1xuXG4gIGlmICghc291cmNlRW50cnlFeGlzdHMpIHtcbiAgICB0YXJnZXRFbnRyeVBhdGggPSBudWxsO1xuXG4gICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZW50cnlEaXJlY3RvcnkgP1xuICAgIG1vdmVEaXJlY3RvcnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIDpcbiAgICAgIG1vdmVGaWxlT3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVEaXJlY3Rvcnkob2xkRGlyZWN0b3J5UGF0aCwgbmV3RGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgbGV0IGVycm9yID0gbnVsbDtcblxuICBjb25zdCBuZXdEaXJlY3RvcnlQYXRoV2l0aG91dEJvdHRvbW1vc3ROYW1lID0gcGF0aFdpdGhvdXRCb3R0b21tb3N0TmFtZShuZXdEaXJlY3RvcnlQYXRoKSxcbiAgICAgICAgbmV3UGFyZW50RGlyZWN0b3J5UGF0aCA9IG5ld0RpcmVjdG9yeVBhdGhXaXRob3V0Qm90dG9tbW9zdE5hbWUsIC8vL1xuICAgICAgICBuZXdQYXJlbnREaXJlY3RvcnlFeGlzdHMgPSBjaGVja0RpcmVjdG9yeUV4aXN0cyhuZXdQYXJlbnREaXJlY3RvcnlQYXRoKTtcblxuICBpZiAoIW5ld1BhcmVudERpcmVjdG9yeUV4aXN0cykge1xuICAgIGVycm9yID0gYFRoZSBuZXcgJyR7bmV3RGlyZWN0b3J5UGF0aH0nIGRpcmVjdG9yeSdzIHBhcmVudCBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QuYDtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgcmVuYW1lRGlyZWN0b3J5RXgob2xkRGlyZWN0b3J5UGF0aCk7XG4gICAgfSBjYXRjaCAobmF0aXZlRXJyb3IpIHtcbiAgICAgIGVycm9yID0gbmF0aXZlRXJyb3I7ICAvLy9cbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlRmlsZShvbGRGaWxlUGF0aCwgbmV3RmlsZVBhdGgsIGNhbGxiYWNrKSB7XG4gIGxldCBlcnJvciA9IG51bGw7XG5cbiAgY29uc3QgbmV3RmlsZVBhdGhXaXRob3V0Qm90dG9tbW9zdE5hbWUgPSBwYXRoV2l0aG91dEJvdHRvbW1vc3ROYW1lKG5ld0ZpbGVQYXRoKSxcbiAgICAgICAgbmV3UGFyZW50RGlyZWN0b3J5UGF0aCA9IG5ld0ZpbGVQYXRoV2l0aG91dEJvdHRvbW1vc3ROYW1lLCAvLy9cbiAgICAgICAgbmV3UGFyZW50RGlyZWN0b3J5RXhpc3RzID0gY2hlY2tGaWxlRXhpc3RzKG5ld1BhcmVudERpcmVjdG9yeVBhdGgpO1xuXG4gIGlmICghbmV3UGFyZW50RGlyZWN0b3J5RXhpc3RzKSB7XG4gICAgZXJyb3IgPSBgVGhlIG5ldyAnJHtuZXdGaWxlUGF0aH0nIGZpbGUncyBwYXJlbnQgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LmA7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlbmFtZUZpbGVFeChvbGRGaWxlUGF0aCwgbmV3RmlsZVBhdGgpO1xuICAgIH0gY2F0Y2ggKG5hdGl2ZUVycm9yKSB7XG4gICAgICBlcnJvciA9IG5hdGl2ZUVycm9yOyAgLy8vXG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3IpO1xufVxuXG5mdW5jdGlvbiBtb3ZlRW50cmllcyhwYXRoTWFwcywgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykge1xuICBjb25zdCB0YXJnZXRFbnRyeVBhdGhzID0gW107XG5cbiAgYXN5bmNocm9ub3VzRm9yRWFjaChcbiAgICBwYXRoTWFwcyxcbiAgICAoc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIGVudHJ5RGlyZWN0b3J5LCBuZXh0LCBkb25lLCBpbmRleCkgPT4ge1xuICAgICAgbW92ZUVudHJ5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBlbnRyeURpcmVjdG9yeSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCAoc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpID0+IHtcbiAgICAgICAgdGFyZ2V0RW50cnlQYXRocy5wdXNoKHRhcmdldEVudHJ5UGF0aCk7XG5cbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICAoKSA9PiB7XG4gICAgICBjYWxsYmFjayh0YXJnZXRFbnRyeVBhdGhzKTtcbiAgICB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIG1vdmVGaWxlT3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHNvdXJjZUZpbGVQYXRoID0gc291cmNlRW50cnlQYXRoLCAvLy9cbiAgICAgICAgdGFyZ2V0RmlsZVBhdGggPSB0YXJnZXRFbnRyeVBhdGgsIC8vL1xuICAgICAgICBhYnNvbHV0ZVNvdXJjZUZpbGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHNvdXJjZUZpbGVQYXRoKSxcbiAgICAgICAgYWJzb2x1dGVUYXJnZXRGaWxlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCB0YXJnZXRGaWxlUGF0aCksXG4gICAgICAgIHRhcmdldEZpbGVFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGFic29sdXRlVGFyZ2V0RmlsZVBhdGgpO1xuXG4gIGlmICh0YXJnZXRGaWxlRXhpc3RzKSB7XG4gICAgdGFyZ2V0RW50cnlQYXRoID0gc291cmNlRW50cnlQYXRoOyAgLy8vXG5cbiAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvbGRGaWxlUGF0aCA9IGFic29sdXRlU291cmNlRmlsZVBhdGgsIC8vL1xuICAgICAgICBuZXdGaWxlUGF0aCA9IGFic29sdXRlVGFyZ2V0RmlsZVBhdGg7IC8vL1xuXG4gIG1vdmVGaWxlKG9sZEZpbGVQYXRoLCBuZXdGaWxlUGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGggPSBudWxsO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1vdmVEaXJlY3RvcnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgY29uc3Qgc291cmNlRGlyZWN0b3J5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aCwgIC8vL1xuICAgICAgICB0YXJnZXREaXJlY3RvcnlQYXRoID0gdGFyZ2V0RW50cnlQYXRoLCAgLy8vXG4gICAgICAgIGFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzb3VyY2VEaXJlY3RvcnlQYXRoKSxcbiAgICAgICAgc291cmNlRGlyZWN0b3J5RW1wdHkgPSBpc0RpcmVjdG9yeUVtcHR5KGFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCk7XG5cbiAgaWYgKCFzb3VyY2VEaXJlY3RvcnlFbXB0eSkge1xuICAgIHRhcmdldEVudHJ5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aDsgIC8vL1xuXG4gICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYWJzb2x1dGVUYXJnZXREaXJlY3RvcnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHRhcmdldERpcmVjdG9yeVBhdGgpLFxuICAgICAgICB0YXJnZXREaXJlY3RvcnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCk7XG5cbiAgaWYgKHRhcmdldERpcmVjdG9yeUV4aXN0cykge1xuICAgIGNvbnN0IGRpcmVjdG9yeVBhdGggPSBhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGg7ICAvLy9cblxuICAgIHJlbW92ZURpcmVjdG9yeShkaXJlY3RvcnlQYXRoLCAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb2xkRGlyZWN0b3J5UGF0aCA9IGFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCwgLy8vXG4gICAgICAgIG5ld0RpcmVjdG9yeVBhdGggPSBhYnNvbHV0ZVRhcmdldERpcmVjdG9yeVBhdGg7IC8vL1xuXG4gIG1vdmVEaXJlY3Rvcnkob2xkRGlyZWN0b3J5UGF0aCwgbmV3RGlyZWN0b3J5UGF0aCwgKGVycm9yKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGggPSBzb3VyY2VFbnRyeVBhdGg7ICAvLy9cbiAgICB9XG5cbiAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbIm1vdmVQcm9qZWN0RW50cmllcyIsIm1vdmVFbnRyeU9wZXJhdGlvbiIsIm1vdmVEaXJlY3RvcnkiLCJtb3ZlRmlsZSIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwicGF0aFdpdGhvdXRCb3R0b21tb3N0TmFtZSIsImlzRGlyZWN0b3J5RW1wdHkiLCJmaWxlU3lzdGVtVXRpbGl0aWVzIiwiY2hlY2tFbnRyeUV4aXN0cyIsInJlbmFtZUZpbGUiLCJyZW5hbWVGaWxlRXgiLCJyZW5hbWVEaXJlY3RvcnkiLCJyZW5hbWVEaXJlY3RvcnlFeCIsImNoZWNrRGlyZWN0b3J5RXhpc3RzIiwicHJvamVjdHNEaXJlY3RvcnlQYXRoIiwianNvbiIsImNhbGxiYWNrIiwicGF0aE1hcHMiLCJtb3ZlRW50cmllcyIsInRhcmdldEVudHJ5UGF0aHMiLCJzb3VyY2VFbnRyeVBhdGgiLCJ0YXJnZXRFbnRyeVBhdGgiLCJlbnRyeURpcmVjdG9yeSIsInJlbW92ZUVudHJ5T3BlcmF0aW9uIiwiYWJzb2x1dGVTb3VyY2VFbnRyeVBhdGgiLCJzb3VyY2VFbnRyeUV4aXN0cyIsIm1vdmVEaXJlY3RvcnlPcGVyYXRpb24iLCJtb3ZlRmlsZU9wZXJhdGlvbiIsIm9sZERpcmVjdG9yeVBhdGgiLCJuZXdEaXJlY3RvcnlQYXRoIiwiZXJyb3IiLCJuZXdEaXJlY3RvcnlQYXRoV2l0aG91dEJvdHRvbW1vc3ROYW1lIiwibmV3UGFyZW50RGlyZWN0b3J5UGF0aCIsIm5ld1BhcmVudERpcmVjdG9yeUV4aXN0cyIsIm5hdGl2ZUVycm9yIiwib2xkRmlsZVBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGVQYXRoV2l0aG91dEJvdHRvbW1vc3ROYW1lIiwiY2hlY2tGaWxlRXhpc3RzIiwiYXN5bmNocm9ub3VzRm9yRWFjaCIsIm5leHQiLCJkb25lIiwiaW5kZXgiLCJwdXNoIiwic291cmNlRmlsZVBhdGgiLCJ0YXJnZXRGaWxlUGF0aCIsImFic29sdXRlU291cmNlRmlsZVBhdGgiLCJhYnNvbHV0ZVRhcmdldEZpbGVQYXRoIiwidGFyZ2V0RmlsZUV4aXN0cyIsInNvdXJjZURpcmVjdG9yeVBhdGgiLCJ0YXJnZXREaXJlY3RvcnlQYXRoIiwiYWJzb2x1dGVTb3VyY2VEaXJlY3RvcnlQYXRoIiwic291cmNlRGlyZWN0b3J5RW1wdHkiLCJhYnNvbHV0ZVRhcmdldERpcmVjdG9yeVBhdGgiLCJ0YXJnZXREaXJlY3RvcnlFeGlzdHMiLCJkaXJlY3RvcnlQYXRoIiwicmVtb3ZlRGlyZWN0b3J5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFlQSxPQVVDO2VBVnVCQTs7SUFZUkMsa0JBQWtCO2VBQWxCQTs7SUF1QkFDLGFBQWE7ZUFBYkE7O0lBb0JBQyxRQUFRO2VBQVJBOzs7eUJBcEVtQzt3QkFFZjtvQ0FDQztBQUdyQyxJQUFRQyxtQkFBZ0RDLHdCQUFhLENBQTdERCxrQkFBa0JFLDRCQUE4QkQsd0JBQWEsQ0FBM0NDLDJCQUNsQkMsbUJBSTJDQyw4QkFBbUIsQ0FKOURELGtCQUNBRSxtQkFHMkNELDhCQUFtQixDQUg5REMsa0JBQ0FDLEFBQVlDLGVBRStCSCw4QkFBbUIsQ0FGOURFLFlBQ0FFLEFBQWlCQyxvQkFDMEJMLDhCQUFtQixDQUQ5REksaUJBQ0FILEFBQWtCSyx1QkFBeUJOLDhCQUFtQixDQUE5REM7QUFFTyxTQUFTVCxt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
@@ -14,12 +14,14 @@ _export(exports, {
14
14
  },
15
15
  removeEntryOperation: function() {
16
16
  return removeEntryOperation;
17
+ },
18
+ removeEntry: function() {
19
+ return removeEntry;
17
20
  }
18
21
  });
19
- var _fsextra = require("fs-extra");
20
22
  var _necessary = require("necessary");
21
23
  var _pathMaps = require("./utilities/pathMaps");
22
- var concatenatePaths = _necessary.pathUtilities.concatenatePaths, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists, isDirectoryEmpty = _necessary.fileSystemUtilities.isDirectoryEmpty;
24
+ var concatenatePaths = _necessary.pathUtilities.concatenatePaths, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists, isDirectoryEmpty = _necessary.fileSystemUtilities.isDirectoryEmpty, removeEntryEx = _necessary.fileSystemUtilities.removeEntry;
23
25
  function removeProjectEntries(projectsDirectoryPath, json, callback) {
24
26
  var pathMaps = json.pathMaps;
25
27
  removeEntries(pathMaps, projectsDirectoryPath, function(targetEntryPaths) {
@@ -38,6 +40,20 @@ function removeEntryOperation(sourceEntryPath, targetEntryPath, entryDirectory,
38
40
  }
39
41
  entryDirectory ? removeDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback) : removeFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback);
40
42
  }
43
+ function removeEntry(entryPath, callback) {
44
+ var error = null;
45
+ var entryExists = checkEntryExists(entryPath);
46
+ if (!entryExists) {
47
+ error = "The '".concat(entryPath, "' entry does not exist.");
48
+ } else {
49
+ try {
50
+ removeEntryEx(entryPath);
51
+ } catch (nativeError) {
52
+ error = nativeError; ///
53
+ }
54
+ }
55
+ callback(error);
56
+ }
41
57
  function removeEntries(pathMaps, projectsDirectoryPath, callback) {
42
58
  var targetEntryPaths = [];
43
59
  (0, _pathMaps.asynchronousForEach)(pathMaps, function(sourceEntryPath, targetEntryPath, entryDirectory, next, done, index) {
@@ -50,8 +66,8 @@ function removeEntries(pathMaps, projectsDirectoryPath, callback) {
50
66
  });
51
67
  }
52
68
  function removeFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback) {
53
- var sourceFilePath = sourceEntryPath, absoluteSourceFilePath = concatenatePaths(projectsDirectoryPath, sourceFilePath);
54
- (0, _fsextra.remove)(absoluteSourceFilePath, function(error) {
69
+ var sourceFilePath = sourceEntryPath, absoluteSourceFilePath = concatenatePaths(projectsDirectoryPath, sourceFilePath), entryPath = absoluteSourceFilePath; ///
70
+ removeEntry(entryPath, function(error) {
55
71
  if (error) {
56
72
  targetEntryPath = sourceEntryPath; ///
57
73
  }
@@ -65,7 +81,8 @@ function removeDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDire
65
81
  callback(sourceEntryPath, targetEntryPath);
66
82
  return;
67
83
  }
68
- (0, _fsextra.remove)(absoluteSourceDirectoryPath, function(error) {
84
+ var entryPath = absoluteSourceDirectoryPath; ///
85
+ removeEntry(entryPath, function(error) {
69
86
  if (error) {
70
87
  targetEntryPath = sourceEntryPath; ///
71
88
  }
@@ -73,4 +90,4 @@ function removeDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDire
73
90
  });
74
91
  }
75
92
 
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW1vdmVQcm9qZWN0RW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeyBwYXRoVXRpbGl0aWVzLCBmaWxlU3lzdGVtVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyBhc3luY2hyb25vdXNGb3JFYWNoIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3BhdGhNYXBzXCI7XG5cbmNvbnN0IHsgY29uY2F0ZW5hdGVQYXRocyB9ID0gcGF0aFV0aWxpdGllcyxcbiAgICAgIHsgY2hlY2tFbnRyeUV4aXN0cywgaXNEaXJlY3RvcnlFbXB0eSB9ID0gZmlsZVN5c3RlbVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVtb3ZlUHJvamVjdEVudHJpZXMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBqc29uLCBjYWxsYmFjaykge1xuICBjb25zdCB7IHBhdGhNYXBzIH0gPSBqc29uO1xuXG4gIHJlbW92ZUVudHJpZXMocGF0aE1hcHMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgKHRhcmdldEVudHJ5UGF0aHMpID0+IHtcbiAgICBjb25zdCBqc29uID0ge1xuICAgICAgdGFyZ2V0RW50cnlQYXRoc1xuICAgIH07XG5cbiAgICBjYWxsYmFjayhqc29uKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFbnRyeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgY29uc3QgYWJzb2x1dGVTb3VyY2VFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc291cmNlRW50cnlQYXRoKSxcbiAgICAgICAgc291cmNlRW50cnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGFic29sdXRlU291cmNlRW50cnlQYXRoKTtcblxuICBpZiAoIXNvdXJjZUVudHJ5RXhpc3RzKSB7XG4gICAgdGFyZ2V0RW50cnlQYXRoID0gbnVsbDtcblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGVudHJ5RGlyZWN0b3J5ID9cbiAgICByZW1vdmVEaXJlY3RvcnlPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIDpcbiAgICAgIHJlbW92ZUZpbGVPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZW1vdmVFbnRyaWVzKHBhdGhNYXBzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHRhcmdldEVudHJ5UGF0aHMgPSBbXTtcblxuICBhc3luY2hyb25vdXNGb3JFYWNoKFxuICAgIHBhdGhNYXBzLFxuICAgIChzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIG5leHQsIGRvbmUsIGluZGV4KSA9PiB7XG4gICAgICByZW1vdmVFbnRyeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgZW50cnlEaXJlY3RvcnksIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKSA9PiB7XG4gICAgICAgIHRhcmdldEVudHJ5UGF0aHMucHVzaCh0YXJnZXRFbnRyeVBhdGgpO1xuXG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgKCkgPT4ge1xuICAgICAgY2FsbGJhY2sodGFyZ2V0RW50cnlQYXRocyk7XG4gICAgfVxuICApO1xufVxuXG5mdW5jdGlvbiByZW1vdmVGaWxlT3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHNvdXJjZUZpbGVQYXRoID0gc291cmNlRW50cnlQYXRoLCAvLy9cbiAgICAgICAgYWJzb2x1dGVTb3VyY2VGaWxlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzb3VyY2VGaWxlUGF0aCk7XG5cbiAgcmVtb3ZlKGFic29sdXRlU291cmNlRmlsZVBhdGgsIChlcnJvcikgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgdGFyZ2V0RW50cnlQYXRoID0gc291cmNlRW50cnlQYXRoOyAgLy8vXG4gICAgfVxuXG4gICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlyZWN0b3J5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHNvdXJjZURpcmVjdG9yeVBhdGggPSBzb3VyY2VFbnRyeVBhdGgsICAvLy9cbiAgICAgICAgYWJzb2x1dGVTb3VyY2VEaXJlY3RvcnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHNvdXJjZURpcmVjdG9yeVBhdGgpLFxuICAgICAgICBzb3VyY2VEaXJlY3RvcnlFbXB0eSA9IGlzRGlyZWN0b3J5RW1wdHkoYWJzb2x1dGVTb3VyY2VEaXJlY3RvcnlQYXRoKTtcblxuICBpZiAoIXNvdXJjZURpcmVjdG9yeUVtcHR5KSB7XG4gICAgdGFyZ2V0RW50cnlQYXRoID0gc291cmNlRW50cnlQYXRoOyAgLy8vXG5cbiAgICBjYWxsYmFjayhzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICByZW1vdmUoYWJzb2x1dGVTb3VyY2VEaXJlY3RvcnlQYXRoLCAoZXJyb3IpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRhcmdldEVudHJ5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aDsgIC8vL1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsicmVtb3ZlUHJvamVjdEVudHJpZXMiLCJyZW1vdmVFbnRyeU9wZXJhdGlvbiIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwiY2hlY2tFbnRyeUV4aXN0cyIsImZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJpc0RpcmVjdG9yeUVtcHR5IiwicHJvamVjdHNEaXJlY3RvcnlQYXRoIiwianNvbiIsImNhbGxiYWNrIiwicGF0aE1hcHMiLCJyZW1vdmVFbnRyaWVzIiwidGFyZ2V0RW50cnlQYXRocyIsInNvdXJjZUVudHJ5UGF0aCIsInRhcmdldEVudHJ5UGF0aCIsImVudHJ5RGlyZWN0b3J5IiwiYWJzb2x1dGVTb3VyY2VFbnRyeVBhdGgiLCJzb3VyY2VFbnRyeUV4aXN0cyIsInJlbW92ZURpcmVjdG9yeU9wZXJhdGlvbiIsInJlbW92ZUZpbGVPcGVyYXRpb24iLCJhc3luY2hyb25vdXNGb3JFYWNoIiwibmV4dCIsImRvbmUiLCJpbmRleCIsInB1c2giLCJzb3VyY2VGaWxlUGF0aCIsImFic29sdXRlU291cmNlRmlsZVBhdGgiLCJyZW1vdmUiLCJlcnJvciIsInNvdXJjZURpcmVjdG9yeVBhdGgiLCJhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGgiLCJzb3VyY2VEaXJlY3RvcnlFbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBVUEsT0FVQztlQVZ1QkE7O0lBWVJDLG9CQUFvQjtlQUFwQkE7Ozt1QkFwQk87eUJBQzRCO3dCQUVmO0FBRXBDLElBQU0sQUFBRUMsbUJBQXFCQyx3QkFBYSxDQUFsQ0Qsa0JBQ0FFLG1CQUF1Q0MsOEJBQW1CLENBQTFERCxrQkFBa0JFLG1CQUFxQkQsOEJBQW1CLENBQXhDQztBQUVYLFNBQVNOLHFCQUFxQk8scUJBQXFCLEVBQUVDLElBQUksRUFBRUMsUUFBUTtJQUNoRixJQUFNLEFBQUVDLFdBQWFGLEtBQWJFO0lBRVJDLGNBQWNELFVBQVVILHVCQUF1QixTQUFDSztRQUM5QyxJQUFNSixTQUFPO1lBQ1hJLGtCQUFBQTtRQUNGO1FBRUFILFNBQVNEO0lBQ1g7QUFDRjtBQUVPLFNBQVNQLHFCQUFxQlksZUFBZSxFQUFFQyxlQUFlLEVBQUVDLGNBQWMsRUFBRVIscUJBQXFCLEVBQUVFLFFBQVE7SUFDcEgsSUFBTU8sMEJBQTBCZCxpQkFBaUJLLHVCQUF1Qk0sa0JBQ2xFSSxvQkFBb0JiLGlCQUFpQlk7SUFFM0MsSUFBSSxDQUFDQyxtQkFBbUI7UUFDdEJILGtCQUFrQjtRQUVsQkwsU0FBU0ksaUJBQWlCQztRQUUxQjtJQUNGO0lBRUFDLGlCQUNFRyx5QkFBeUJMLGlCQUFpQkMsaUJBQWlCUCx1QkFBdUJFLFlBQ2hGVSxvQkFBb0JOLGlCQUFpQkMsaUJBQWlCUCx1QkFBdUJFO0FBQ25GO0FBRUEsU0FBU0UsY0FBY0QsUUFBUSxFQUFFSCxxQkFBcUIsRUFBRUUsUUFBUTtJQUM5RCxJQUFNRyxtQkFBbUIsRUFBRTtJQUUzQlEsSUFBQUEsNkJBQW1CLEVBQ2pCVixVQUNBLFNBQUNHLGlCQUFpQkMsaUJBQWlCQyxnQkFBZ0JNLE1BQU1DLE1BQU1DO1FBQzdEdEIscUJBQXFCWSxpQkFBaUJDLGlCQUFpQkMsZ0JBQWdCUix1QkFBdUIsU0FBQ00saUJBQWlCQztZQUM5R0YsaUJBQWlCWSxJQUFJLENBQUNWO1lBRXRCTztRQUNGO0lBQ0YsR0FDQTtRQUNFWixTQUFTRztJQUNYO0FBRUo7QUFFQSxTQUFTTyxvQkFBb0JOLGVBQWUsRUFBRUMsZUFBZSxFQUFFUCxxQkFBcUIsRUFBRUUsUUFBUTtJQUM1RixJQUFNZ0IsaUJBQWlCWixpQkFDakJhLHlCQUF5QnhCLGlCQUFpQkssdUJBQXVCa0I7SUFFdkVFLElBQUFBLGVBQU0sRUFBQ0Qsd0JBQXdCLFNBQUNFO1FBQzlCLElBQUlBLE9BQU87WUFDVGQsa0JBQWtCRCxpQkFBa0IsR0FBRztRQUN6QztRQUVBSixTQUFTSSxpQkFBaUJDO0lBQzVCO0FBQ0Y7QUFFQSxTQUFTSSx5QkFBeUJMLGVBQWUsRUFBRUMsZUFBZSxFQUFFUCxxQkFBcUIsRUFBRUUsUUFBUTtJQUNqRyxJQUFNb0Isc0JBQXNCaEIsaUJBQ3RCaUIsOEJBQThCNUIsaUJBQWlCSyx1QkFBdUJzQixzQkFDdEVFLHVCQUF1QnpCLGlCQUFpQndCO0lBRTlDLElBQUksQ0FBQ0Msc0JBQXNCO1FBQ3pCakIsa0JBQWtCRCxpQkFBa0IsR0FBRztRQUV2Q0osU0FBU0ksaUJBQWlCQztRQUUxQjtJQUNGO0lBRUFhLElBQUFBLGVBQU0sRUFBQ0csNkJBQTZCLFNBQUNGO1FBQ25DLElBQUlBLE9BQU87WUFDVGQsa0JBQWtCRCxpQkFBa0IsR0FBRztRQUN6QztRQUVBSixTQUFTSSxpQkFBaUJDO0lBQzVCO0FBQ0YifQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW1vdmVQcm9qZWN0RW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNocm9ub3VzRm9yRWFjaCB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoTWFwc1wiO1xuXG5jb25zdCB7IGNvbmNhdGVuYXRlUGF0aHMgfSA9IHBhdGhVdGlsaXRpZXMsXG4gICAgICB7IGNoZWNrRW50cnlFeGlzdHMsIGlzRGlyZWN0b3J5RW1wdHksIHJlbW92ZUVudHJ5OiByZW1vdmVFbnRyeUV4IH0gPSBmaWxlU3lzdGVtVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW1vdmVQcm9qZWN0RW50cmllcyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHsgcGF0aE1hcHMgfSA9IGpzb247XG5cbiAgcmVtb3ZlRW50cmllcyhwYXRoTWFwcywgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCAodGFyZ2V0RW50cnlQYXRocykgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICB0YXJnZXRFbnRyeVBhdGhzXG4gICAgfTtcblxuICAgIGNhbGxiYWNrKGpzb24pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVudHJ5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBlbnRyeURpcmVjdG9yeSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykge1xuICBjb25zdCBhYnNvbHV0ZVNvdXJjZUVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzb3VyY2VFbnRyeVBhdGgpLFxuICAgICAgICBzb3VyY2VFbnRyeUV4aXN0cyA9IGNoZWNrRW50cnlFeGlzdHMoYWJzb2x1dGVTb3VyY2VFbnRyeVBhdGgpO1xuXG4gIGlmICghc291cmNlRW50cnlFeGlzdHMpIHtcbiAgICB0YXJnZXRFbnRyeVBhdGggPSBudWxsO1xuXG4gICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZW50cnlEaXJlY3RvcnkgP1xuICAgIHJlbW92ZURpcmVjdG9yeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykgOlxuICAgICAgcmVtb3ZlRmlsZU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFbnRyeShlbnRyeVBhdGgsIGNhbGxiYWNrKSB7XG4gIGxldCBlcnJvciA9IG51bGw7XG5cbiAgY29uc3QgZW50cnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGVudHJ5UGF0aCk7XG5cbiAgaWYgKCFlbnRyeUV4aXN0cykge1xuICAgIGVycm9yID0gYFRoZSAnJHtlbnRyeVBhdGh9JyBlbnRyeSBkb2VzIG5vdCBleGlzdC5gO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICByZW1vdmVFbnRyeUV4KGVudHJ5UGF0aCk7XG4gICAgfSBjYXRjaCAobmF0aXZlRXJyb3IpIHtcbiAgICAgIGVycm9yID0gbmF0aXZlRXJyb3I7ICAvLy9cbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcik7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUVudHJpZXMocGF0aE1hcHMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgY29uc3QgdGFyZ2V0RW50cnlQYXRocyA9IFtdO1xuXG4gIGFzeW5jaHJvbm91c0ZvckVhY2goXG4gICAgcGF0aE1hcHMsXG4gICAgKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBlbnRyeURpcmVjdG9yeSwgbmV4dCwgZG9uZSwgaW5kZXgpID0+IHtcbiAgICAgIHJlbW92ZUVudHJ5T3BlcmF0aW9uKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoLCBlbnRyeURpcmVjdG9yeSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCAoc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpID0+IHtcbiAgICAgICAgdGFyZ2V0RW50cnlQYXRocy5wdXNoKHRhcmdldEVudHJ5UGF0aCk7XG5cbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICAoKSA9PiB7XG4gICAgICBjYWxsYmFjayh0YXJnZXRFbnRyeVBhdGhzKTtcbiAgICB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUZpbGVPcGVyYXRpb24oc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgY2FsbGJhY2spIHtcbiAgY29uc3Qgc291cmNlRmlsZVBhdGggPSBzb3VyY2VFbnRyeVBhdGgsIC8vL1xuICAgICAgICBhYnNvbHV0ZVNvdXJjZUZpbGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHNvdXJjZUZpbGVQYXRoKSxcbiAgICAgICAgZW50cnlQYXRoID0gYWJzb2x1dGVTb3VyY2VGaWxlUGF0aDsgLy8vXG5cbiAgcmVtb3ZlRW50cnkoZW50cnlQYXRoLCAoZXJyb3IpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRhcmdldEVudHJ5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aDsgIC8vL1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURpcmVjdG9yeU9wZXJhdGlvbihzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBjYWxsYmFjaykge1xuICBjb25zdCBzb3VyY2VEaXJlY3RvcnlQYXRoID0gc291cmNlRW50cnlQYXRoLCAgLy8vXG4gICAgICAgIGFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzb3VyY2VEaXJlY3RvcnlQYXRoKSxcbiAgICAgICAgc291cmNlRGlyZWN0b3J5RW1wdHkgPSBpc0RpcmVjdG9yeUVtcHR5KGFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCk7XG5cbiAgaWYgKCFzb3VyY2VEaXJlY3RvcnlFbXB0eSkge1xuICAgIHRhcmdldEVudHJ5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aDsgIC8vL1xuXG4gICAgY2FsbGJhY2soc291cmNlRW50cnlQYXRoLCB0YXJnZXRFbnRyeVBhdGgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZW50cnlQYXRoID0gYWJzb2x1dGVTb3VyY2VEaXJlY3RvcnlQYXRoOyAgLy8vXG5cbiAgcmVtb3ZlRW50cnkoZW50cnlQYXRoLCAoZXJyb3IpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRhcmdldEVudHJ5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aDsgIC8vL1xuICAgIH1cblxuICAgIGNhbGxiYWNrKHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsicmVtb3ZlUHJvamVjdEVudHJpZXMiLCJyZW1vdmVFbnRyeU9wZXJhdGlvbiIsInJlbW92ZUVudHJ5IiwiY29uY2F0ZW5hdGVQYXRocyIsInBhdGhVdGlsaXRpZXMiLCJjaGVja0VudHJ5RXhpc3RzIiwiZmlsZVN5c3RlbVV0aWxpdGllcyIsImlzRGlyZWN0b3J5RW1wdHkiLCJyZW1vdmVFbnRyeUV4IiwicHJvamVjdHNEaXJlY3RvcnlQYXRoIiwianNvbiIsImNhbGxiYWNrIiwicGF0aE1hcHMiLCJyZW1vdmVFbnRyaWVzIiwidGFyZ2V0RW50cnlQYXRocyIsInNvdXJjZUVudHJ5UGF0aCIsInRhcmdldEVudHJ5UGF0aCIsImVudHJ5RGlyZWN0b3J5IiwiYWJzb2x1dGVTb3VyY2VFbnRyeVBhdGgiLCJzb3VyY2VFbnRyeUV4aXN0cyIsInJlbW92ZURpcmVjdG9yeU9wZXJhdGlvbiIsInJlbW92ZUZpbGVPcGVyYXRpb24iLCJlbnRyeVBhdGgiLCJlcnJvciIsImVudHJ5RXhpc3RzIiwibmF0aXZlRXJyb3IiLCJhc3luY2hyb25vdXNGb3JFYWNoIiwibmV4dCIsImRvbmUiLCJpbmRleCIsInB1c2giLCJzb3VyY2VGaWxlUGF0aCIsImFic29sdXRlU291cmNlRmlsZVBhdGgiLCJzb3VyY2VEaXJlY3RvcnlQYXRoIiwiYWJzb2x1dGVTb3VyY2VEaXJlY3RvcnlQYXRoIiwic291cmNlRGlyZWN0b3J5RW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQVNBLE9BVUM7ZUFWdUJBOztJQVlSQyxvQkFBb0I7ZUFBcEJBOztJQWlCQUMsV0FBVztlQUFYQTs7O3lCQXBDbUM7d0JBRWY7QUFFcEMsSUFBTSxBQUFFQyxtQkFBcUJDLHdCQUFhLENBQWxDRCxrQkFDQUUsbUJBQW1FQyw4QkFBbUIsQ0FBdEZELGtCQUFrQkUsbUJBQWlERCw4QkFBbUIsQ0FBcEVDLGtCQUFrQkwsQUFBYU0sZ0JBQWtCRiw4QkFBbUIsQ0FBbERKO0FBRTdCLFNBQVNGLHFCQUFxQlMscUJBQXFCLEVBQUVDLElBQUksRUFBRUMsUUFBUTtJQUNoRixJQUFNLEFBQUVDLFdBQWFGLEtBQWJFO0lBRVJDLGNBQWNELFVBQVVILHVCQUF1QixTQUFDSztRQUM5QyxJQUFNSixTQUFPO1lBQ1hJLGtCQUFBQTtRQUNGO1FBRUFILFNBQVNEO0lBQ1g7QUFDRjtBQUVPLFNBQVNULHFCQUFxQmMsZUFBZSxFQUFFQyxlQUFlLEVBQUVDLGNBQWMsRUFBRVIscUJBQXFCLEVBQUVFLFFBQVE7SUFDcEgsSUFBTU8sMEJBQTBCZixpQkFBaUJNLHVCQUF1Qk0sa0JBQ2xFSSxvQkFBb0JkLGlCQUFpQmE7SUFFM0MsSUFBSSxDQUFDQyxtQkFBbUI7UUFDdEJILGtCQUFrQjtRQUVsQkwsU0FBU0ksaUJBQWlCQztRQUUxQjtJQUNGO0lBRUFDLGlCQUNFRyx5QkFBeUJMLGlCQUFpQkMsaUJBQWlCUCx1QkFBdUJFLFlBQ2hGVSxvQkFBb0JOLGlCQUFpQkMsaUJBQWlCUCx1QkFBdUJFO0FBQ25GO0FBRU8sU0FBU1QsWUFBWW9CLFNBQVMsRUFBRVgsUUFBUTtJQUM3QyxJQUFJWSxRQUFRO0lBRVosSUFBTUMsY0FBY25CLGlCQUFpQmlCO0lBRXJDLElBQUksQ0FBQ0UsYUFBYTtRQUNoQkQsUUFBUSxBQUFDLFFBQWlCLE9BQVZELFdBQVU7SUFDNUIsT0FBTztRQUNMLElBQUk7WUFDRmQsY0FBY2M7UUFDaEIsRUFBRSxPQUFPRyxhQUFhO1lBQ3BCRixRQUFRRSxhQUFjLEdBQUc7UUFDM0I7SUFDRjtJQUVBZCxTQUFTWTtBQUNYO0FBRUEsU0FBU1YsY0FBY0QsUUFBUSxFQUFFSCxxQkFBcUIsRUFBRUUsUUFBUTtJQUM5RCxJQUFNRyxtQkFBbUIsRUFBRTtJQUUzQlksSUFBQUEsNkJBQW1CLEVBQ2pCZCxVQUNBLFNBQUNHLGlCQUFpQkMsaUJBQWlCQyxnQkFBZ0JVLE1BQU1DLE1BQU1DO1FBQzdENUIscUJBQXFCYyxpQkFBaUJDLGlCQUFpQkMsZ0JBQWdCUix1QkFBdUIsU0FBQ00saUJBQWlCQztZQUM5R0YsaUJBQWlCZ0IsSUFBSSxDQUFDZDtZQUV0Qlc7UUFDRjtJQUNGLEdBQ0E7UUFDRWhCLFNBQVNHO0lBQ1g7QUFFSjtBQUVBLFNBQVNPLG9CQUFvQk4sZUFBZSxFQUFFQyxlQUFlLEVBQUVQLHFCQUFxQixFQUFFRSxRQUFRO0lBQzVGLElBQU1vQixpQkFBaUJoQixpQkFDakJpQix5QkFBeUI3QixpQkFBaUJNLHVCQUF1QnNCLGlCQUNqRVQsWUFBWVUsd0JBQXdCLEdBQUc7SUFFN0M5QixZQUFZb0IsV0FBVyxTQUFDQztRQUN0QixJQUFJQSxPQUFPO1lBQ1RQLGtCQUFrQkQsaUJBQWtCLEdBQUc7UUFDekM7UUFFQUosU0FBU0ksaUJBQWlCQztJQUM1QjtBQUNGO0FBRUEsU0FBU0kseUJBQXlCTCxlQUFlLEVBQUVDLGVBQWUsRUFBRVAscUJBQXFCLEVBQUVFLFFBQVE7SUFDakcsSUFBTXNCLHNCQUFzQmxCLGlCQUN0Qm1CLDhCQUE4Qi9CLGlCQUFpQk0sdUJBQXVCd0Isc0JBQ3RFRSx1QkFBdUI1QixpQkFBaUIyQjtJQUU5QyxJQUFJLENBQUNDLHNCQUFzQjtRQUN6Qm5CLGtCQUFrQkQsaUJBQWtCLEdBQUc7UUFFdkNKLFNBQVNJLGlCQUFpQkM7UUFFMUI7SUFDRjtJQUVBLElBQU1NLFlBQVlZLDZCQUE4QixHQUFHO0lBRW5EaEMsWUFBWW9CLFdBQVcsU0FBQ0M7UUFDdEIsSUFBSUEsT0FBTztZQUNUUCxrQkFBa0JELGlCQUFrQixHQUFHO1FBQ3pDO1FBRUFKLFNBQVNJLGlCQUFpQkM7SUFDNUI7QUFDRiJ9
package/lib/saveFile.js CHANGED
@@ -16,10 +16,9 @@ function _interop_require_default(obj) {
16
16
  };
17
17
  }
18
18
  function saveFile(projectsDirectoryPath, json, callback) {
19
- var file = _file.default.fromJSON(json);
20
- (0, _fileSystem.saveFile)(file, projectsDirectoryPath);
21
- json = {}; ///
19
+ var file = _file.default.fromJSON(json), success = (0, _fileSystem.saveFile)(file, projectsDirectoryPath);
20
+ json = success;
22
21
  callback(json);
23
22
  }
24
23
 
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zYXZlRmlsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEZpbGUgZnJvbSBcIi4vZmlsZVwiO1xuXG5pbXBvcnQgeyBzYXZlRmlsZSBhcyBzYXZlRmlsZUV4IH0gZnJvbSBcIi4vdXRpbGl0aWVzL2ZpbGVTeXN0ZW1cIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzYXZlRmlsZShwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZpbGUgPSBGaWxlLmZyb21KU09OKGpzb24pO1xuXG4gIHNhdmVGaWxlRXgoZmlsZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcblxuICBqc29uID0ge307ICAvLy9cblxuICBjYWxsYmFjayhqc29uKTtcbn1cbiJdLCJuYW1lcyI6WyJzYXZlRmlsZSIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsImpzb24iLCJjYWxsYmFjayIsImZpbGUiLCJGaWxlIiwiZnJvbUpTT04iLCJzYXZlRmlsZUV4Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXdCQTs7OzJEQUpQOzBCQUVzQjs7Ozs7O0FBRXhCLFNBQVNBLFNBQVNDLHFCQUFxQixFQUFFQyxJQUFJLEVBQUVDLFFBQVE7SUFDcEUsSUFBTUMsT0FBT0MsYUFBSSxDQUFDQyxRQUFRLENBQUNKO0lBRTNCSyxJQUFBQSxvQkFBVSxFQUFDSCxNQUFNSDtJQUVqQkMsT0FBTyxDQUFDLEdBQUksR0FBRztJQUVmQyxTQUFTRDtBQUNYIn0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zYXZlRmlsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEZpbGUgZnJvbSBcIi4vZmlsZVwiO1xuXG5pbXBvcnQgeyBzYXZlRmlsZSBhcyBzYXZlRmlsZUV4IH0gZnJvbSBcIi4vdXRpbGl0aWVzL2ZpbGVTeXN0ZW1cIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzYXZlRmlsZShwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZpbGUgPSBGaWxlLmZyb21KU09OKGpzb24pLFxuICAgICAgICBzdWNjZXNzID0gc2F2ZUZpbGVFeChmaWxlLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xuXG4gIGpzb24gPSBzdWNjZXNzO1xuXG4gIGNhbGxiYWNrKGpzb24pO1xufVxuIl0sIm5hbWVzIjpbInNhdmVGaWxlIiwicHJvamVjdHNEaXJlY3RvcnlQYXRoIiwianNvbiIsImNhbGxiYWNrIiwiZmlsZSIsIkZpbGUiLCJmcm9tSlNPTiIsInN1Y2Nlc3MiLCJzYXZlRmlsZUV4Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXdCQTs7OzJEQUpQOzBCQUVzQjs7Ozs7O0FBRXhCLFNBQVNBLFNBQVNDLHFCQUFxQixFQUFFQyxJQUFJLEVBQUVDLFFBQVE7SUFDcEUsSUFBTUMsT0FBT0MsYUFBSSxDQUFDQyxRQUFRLENBQUNKLE9BQ3JCSyxVQUFVQyxJQUFBQSxvQkFBVSxFQUFDSixNQUFNSDtJQUVqQ0MsT0FBT0s7SUFFUEosU0FBU0Q7QUFDWCJ9
package/lib/saveFiles.js CHANGED
@@ -16,10 +16,9 @@ function _interop_require_default(obj) {
16
16
  };
17
17
  }
18
18
  function saveFiles(projectsDirectoryPath, json, callback) {
19
- var files = _files.default.fromJSON(json);
20
- (0, _fileSystem.saveFiles)(files, projectsDirectoryPath);
21
- json = {}; ///
19
+ var files = _files.default.fromJSON(json), successes = (0, _fileSystem.saveFiles)(files, projectsDirectoryPath);
20
+ json = successes;
22
21
  callback(json);
23
22
  }
24
23
 
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zYXZlRmlsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBGaWxlcyBmcm9tIFwiLi9maWxlc1wiO1xuXG5pbXBvcnQgeyBzYXZlRmlsZXMgYXMgc2F2ZUZpbGVzRXggfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZVN5c3RlbVwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNhdmVGaWxlcyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZpbGVzID0gRmlsZXMuZnJvbUpTT04oanNvbik7XG5cbiAgc2F2ZUZpbGVzRXgoZmlsZXMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XG5cbiAganNvbiA9IHt9OyAgLy8vXG5cbiAgY2FsbGJhY2soanNvbik7XG59XG4iXSwibmFtZXMiOlsic2F2ZUZpbGVzIiwicHJvamVjdHNEaXJlY3RvcnlQYXRoIiwianNvbiIsImNhbGxiYWNrIiwiZmlsZXMiLCJGaWxlcyIsImZyb21KU09OIiwic2F2ZUZpbGVzRXgiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBd0JBOzs7NERBSk47MEJBRXVCOzs7Ozs7QUFFMUIsU0FBU0EsVUFBVUMscUJBQXFCLEVBQUVDLElBQUksRUFBRUMsUUFBUTtJQUNyRSxJQUFNQyxRQUFRQyxjQUFLLENBQUNDLFFBQVEsQ0FBQ0o7SUFFN0JLLElBQUFBLHFCQUFXLEVBQUNILE9BQU9IO0lBRW5CQyxPQUFPLENBQUMsR0FBSSxHQUFHO0lBRWZDLFNBQVNEO0FBQ1gifQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zYXZlRmlsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBGaWxlcyBmcm9tIFwiLi9maWxlc1wiO1xuXG5pbXBvcnQgeyBzYXZlRmlsZXMgYXMgc2F2ZUZpbGVzRXggfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZVN5c3RlbVwiXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNhdmVGaWxlcyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZpbGVzID0gRmlsZXMuZnJvbUpTT04oanNvbiksXG4gICAgICAgIHN1Y2Nlc3NlcyA9IHNhdmVGaWxlc0V4KGZpbGVzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xuXG4gIGpzb24gPSBzdWNjZXNzZXM7XG5cbiAgY2FsbGJhY2soanNvbik7XG59XG4iXSwibmFtZXMiOlsic2F2ZUZpbGVzIiwicHJvamVjdHNEaXJlY3RvcnlQYXRoIiwianNvbiIsImNhbGxiYWNrIiwiZmlsZXMiLCJGaWxlcyIsImZyb21KU09OIiwic3VjY2Vzc2VzIiwic2F2ZUZpbGVzRXgiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBd0JBOzs7NERBSk47MEJBRXVCOzs7Ozs7QUFFMUIsU0FBU0EsVUFBVUMscUJBQXFCLEVBQUVDLElBQUksRUFBRUMsUUFBUTtJQUNyRSxJQUFNQyxRQUFRQyxjQUFLLENBQUNDLFFBQVEsQ0FBQ0osT0FDdkJLLFlBQVlDLElBQUFBLHFCQUFXLEVBQUNKLE9BQU9IO0lBRXJDQyxPQUFPSztJQUVQSixTQUFTRDtBQUNYIn0=
@@ -37,7 +37,6 @@ _export(exports, {
37
37
  return _default;
38
38
  }
39
39
  });
40
- var _mkdirp = /*#__PURE__*/ _interop_require_default(require("mkdirp"));
41
40
  var _necessary = require("necessary");
42
41
  var _file = /*#__PURE__*/ _interop_require_default(require("../file"));
43
42
  var _files = /*#__PURE__*/ _interop_require_default(require("../files"));
@@ -55,7 +54,7 @@ function _interop_require_default(obj) {
55
54
  default: obj
56
55
  };
57
56
  }
58
- var first = _necessary.arrayUtilities.first, readFile = _necessary.fileSystemUtilities.readFile, writeFile = _necessary.fileSystemUtilities.writeFile, isEntryFile = _necessary.fileSystemUtilities.isEntryFile, readDirectory = _necessary.fileSystemUtilities.readDirectory, isEntryDirectory = _necessary.fileSystemUtilities.isEntryDirectory, concatenatePaths = _necessary.pathUtilities.concatenatePaths, topmostDirectoryNameFromPath = _necessary.pathUtilities.topmostDirectoryNameFromPath, topmostDirectoryPathFromPath = _necessary.pathUtilities.topmostDirectoryPathFromPath;
57
+ var first = _necessary.arrayUtilities.first, concatenatePaths = _necessary.pathUtilities.concatenatePaths, topmostDirectoryNameFromPath = _necessary.pathUtilities.topmostDirectoryNameFromPath, topmostDirectoryPathFromPath = _necessary.pathUtilities.topmostDirectoryPathFromPath, readFile = _necessary.fileSystemUtilities.readFile, writeFile = _necessary.fileSystemUtilities.writeFile, isEntryFile = _necessary.fileSystemUtilities.isEntryFile, readDirectory = _necessary.fileSystemUtilities.readDirectory, isEntryDirectory = _necessary.fileSystemUtilities.isEntryDirectory, checkFileExists = _necessary.fileSystemUtilities.checkEntryExists;
59
58
  function loadFile(path, projectsDirectoryPath) {
60
59
  var file = null;
61
60
  try {
@@ -70,9 +69,18 @@ function loadFile(path, projectsDirectoryPath) {
70
69
  return file;
71
70
  }
72
71
  function saveFile(file, projectsDirectoryPath) {
73
- var path = file.getPath(), content = file.getContent(), absolutePath = concatenatePaths(projectsDirectoryPath, path), topmostAbsoluteDirectoryPath = topmostDirectoryPathFromPath(absolutePath);
74
- _mkdirp.default.sync(topmostAbsoluteDirectoryPath);
75
- writeFile(absolutePath, content);
72
+ var success = false;
73
+ var filePath = file.getPath(), absoluteFilePath = concatenatePaths(projectsDirectoryPath, filePath), fileExists = checkFileExists(absoluteFilePath);
74
+ if (fileExists) {
75
+ var filePath1 = absoluteFilePath, content = file.getContent();
76
+ try {
77
+ writeFile(filePath1, content);
78
+ } catch (error) {
79
+ ///
80
+ }
81
+ success = true;
82
+ }
83
+ return success;
76
84
  }
77
85
  function loadFiles(paths, projectsDirectoryPath) {
78
86
  var files = null;
@@ -91,9 +99,11 @@ function loadFiles(paths, projectsDirectoryPath) {
91
99
  return files;
92
100
  }
93
101
  function saveFiles(files, projectsDirectoryPath) {
94
- files.forEachFile(function(file) {
95
- saveFile(file, projectsDirectoryPath);
102
+ var successes = files.mapFile(function(file) {
103
+ var success = saveFile(file, projectsDirectoryPath);
104
+ return success;
96
105
  });
106
+ return successes;
97
107
  }
98
108
  function loadRelease(releaseName, projectsDirectoryPath) {
99
109
  var release = null;
@@ -265,4 +275,4 @@ function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
265
275
  return topmostDirectoryNames;
266
276
  }
267
277
 
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCBta2RpcnAgZnJvbSBcIm1rZGlycFwiO1xyXG5cclxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMsIHBhdGhVdGlsaXRpZXMsIGZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XHJcblxyXG5pbXBvcnQgRmlsZSBmcm9tIFwiLi4vZmlsZVwiO1xyXG5pbXBvcnQgRmlsZXMgZnJvbSBcIi4uL2ZpbGVzXCI7XHJcbmltcG9ydCBFbnRyaWVzIGZyb20gXCIuLi9lbnRyaWVzXCI7XHJcbmltcG9ydCBQcm9qZWN0IGZyb20gXCIuLi9wcm9qZWN0XCI7XHJcbmltcG9ydCBSZWxlYXNlIGZyb20gXCIuLi9yZWxlYXNlXCI7XHJcbmltcG9ydCBQcm9qZWN0cyBmcm9tIFwiLi4vcHJvamVjdHNcIjtcclxuaW1wb3J0IFJlbGVhc2VzIGZyb20gXCIuLi9yZWxlYXNlc1wiO1xyXG5pbXBvcnQgRGlyZWN0b3J5IGZyb20gXCIuLi9kaXJlY3RvcnlcIjtcclxuXHJcbmltcG9ydCB7IGlzTmFtZUhpZGRlbk5hbWUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL25hbWVcIjtcclxuaW1wb3J0IHsgaXNGaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aCB9IGZyb20gXCIuLi91dGlsaXRpZXMvZmlsZVBhdGhcIjtcclxuaW1wb3J0IHsgY29udmVydENvbnRlbnRUYWJzVG9XaGl0ZXNwYWNlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZW50XCI7XHJcblxyXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcyxcclxuICAgICAgeyByZWFkRmlsZSwgd3JpdGVGaWxlLCBpc0VudHJ5RmlsZSwgcmVhZERpcmVjdG9yeSwgaXNFbnRyeURpcmVjdG9yeSB9ID0gZmlsZVN5c3RlbVV0aWxpdGllcyxcclxuICAgICAgeyBjb25jYXRlbmF0ZVBhdGhzLCB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoLCB0b3Btb3N0RGlyZWN0b3J5UGF0aEZyb21QYXRoIH0gPSBwYXRoVXRpbGl0aWVzO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCBmaWxlID0gbnVsbDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChwYXRoKTtcclxuXHJcbiAgICBpZiAodG9wbW9zdERpcmVjdG9yeU5hbWUgIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHRvcG1vc3REaXJlY3RvcnlOYW1lKSxcclxuICAgICAgICAgICAgZW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgICBmaWxlID0gZW50cnlEaXJlY3RvcnkgP1xyXG4gICAgICAgICAgICAgICBmaWxlRnJvbVByb2plY3QocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSA6XHJcbiAgICAgICAgICAgICAgICAgZmlsZUZyb21SZWxlYXNlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIC8vL1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZpbGU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZShmaWxlLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBjb25zdCBwYXRoID0gZmlsZS5nZXRQYXRoKCksXHJcbiAgICAgICAgY29udGVudCA9IGZpbGUuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIGFic29sdXRlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBwYXRoKSxcclxuICAgICAgICB0b3Btb3N0QWJzb2x1dGVEaXJlY3RvcnlQYXRoID0gdG9wbW9zdERpcmVjdG9yeVBhdGhGcm9tUGF0aChhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICBta2RpcnAuc3luYyh0b3Btb3N0QWJzb2x1dGVEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgd3JpdGVGaWxlKGFic29sdXRlUGF0aCwgY29udGVudCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmlsZXMocGF0aHMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCBmaWxlcyA9IG51bGw7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBwYXRoc0xlbmd0aCA9IHBhdGhzLmxlbmd0aDtcclxuXHJcbiAgICBpZiAocGF0aHNMZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0UGF0aCA9IGZpcnN0KHBhdGhzKSxcclxuICAgICAgICAgICAgcGF0aCA9IGZpcnN0UGF0aCwgLy8vXHJcbiAgICAgICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChwYXRoKTtcclxuXHJcbiAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCB0b3Btb3N0RGlyZWN0b3J5TmFtZSksXHJcbiAgICAgICAgICAgICAgZW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgICAgIGZpbGVzID0gZW50cnlEaXJlY3RvcnkgP1xyXG4gICAgICAgICAgICAgICAgICBmaWxlc0Zyb21Qcm9qZWN0KHBhdGhzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIDpcclxuICAgICAgICAgICAgICAgICAgICBmaWxlc0Zyb21SZWxlYXNlKHBhdGhzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIC8vL1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZpbGVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2F2ZUZpbGVzKGZpbGVzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBmaWxlcy5mb3JFYWNoRmlsZSgoZmlsZSkgPT4ge1xyXG4gICAgc2F2ZUZpbGUoZmlsZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSZWxlYXNlKHJlbGVhc2VOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgcmVsZWFzZSA9IG51bGw7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBuYW1lID0gcmVsZWFzZU5hbWUsIC8vL1xyXG4gICAgICAgICAgdG9wbW9zdEZpbGVOYW1lID0gcmVsZWFzZU5hbWUsICAvLy9cclxuICAgICAgICAgIGFic29sdXRlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCB0b3Btb3N0RmlsZU5hbWUpLFxyXG4gICAgICAgICAgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICBpZiAoZW50cnlGaWxlKSB7XHJcbiAgICAgIGxldCBqc29uLFxyXG4gICAgICAgICAgZW50cmllcztcclxuXHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgICAganNvbiA9IEpTT04ucGFyc2UoY29udGVudCk7XHJcblxyXG4gICAgICAoeyBlbnRyaWVzIH0gPSBqc29uKTtcclxuXHJcbiAgICAgIGpzb24gID0gZW50cmllczsgIC8vL1xyXG5cclxuICAgICAgZW50cmllcyA9IEVudHJpZXMuZnJvbUpTT04oanNvbik7XHJcblxyXG4gICAgICByZWxlYXNlID0gUmVsZWFzZS5mcm9tTmFtZUFuZEVudHJpZXMobmFtZSwgZW50cmllcyk7XHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIC8vL1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlbGVhc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdChwcm9qZWN0TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcykge1xyXG4gIGxldCBwcm9qZWN0ID0gbnVsbDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IG5hbWUgPSBwcm9qZWN0TmFtZSwgIC8vL1xyXG4gICAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSBwcm9qZWN0TmFtZSwgLy8vXHJcbiAgICAgICAgICBlbnRyaWVzID0gbG9hZEVudHJpZXModG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMpO1xyXG5cclxuICAgIHByb2plY3QgPSBQcm9qZWN0LmZyb21OYW1lQW5kRW50cmllcyhuYW1lLCBlbnRyaWVzKTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gcHJvamVjdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSZWxlYXNlcyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgcmVsZWFzZXM7XHJcblxyXG4gIHRyeSB7XHJcbiAgICByZWxlYXNlcyA9IFJlbGVhc2VzLmZyb21Ob3RoaW5nKCk7XHJcblxyXG4gICAgY29uc3QgdG9wbW9zdEZpbGVOYW1lcyA9IHRvcG1vc3RGaWxlTmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoKHByb2plY3RzRGlyZWN0b3J5UGF0aCksXHJcbiAgICAgICAgICByZWxlYXNlTmFtZXMgPSB0b3Btb3N0RmlsZU5hbWVzOyAgLy8vXHJcblxyXG4gICAgcmVsZWFzZU5hbWVzLmZvckVhY2goKHJlbGVhc2VOYW1lKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlbGVhc2UgPSBsb2FkUmVsZWFzZShyZWxlYXNlTmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChyZWxlYXNlICE9PSBudWxsKSB7XHJcbiAgICAgICAgcmVsZWFzZXMuYWRkUmVsZWFzZShyZWxlYXNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHJlbGVhc2VzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHJldHVybiByZWxlYXNlcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcm9qZWN0cyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKSB7XHJcbiAgbGV0IHByb2plY3RzO1xyXG5cclxuICB0cnkge1xyXG4gICAgcHJvamVjdHMgPSBQcm9qZWN0cy5mcm9tTm90aGluZygpO1xyXG5cclxuICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lcyA9IHRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKSxcclxuICAgICAgICAgIHByb2plY3ROYW1lcyA9IHRvcG1vc3REaXJlY3RvcnlOYW1lczsgLy8vXHJcblxyXG4gICAgcHJvamVjdE5hbWVzLmZvckVhY2goKHByb2plY3ROYW1lKSA9PiB7XHJcbiAgICAgIGNvbnN0IHByb2plY3QgPSBsb2FkUHJvamVjdChwcm9qZWN0TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyk7XHJcblxyXG4gICAgICBpZiAocHJvamVjdCAhPT0gbnVsbCkge1xyXG4gICAgICAgIHByb2plY3RzLmFkZFByb2plY3QocHJvamVjdCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBwcm9qZWN0cyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcHJvamVjdHM7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBsb2FkRmlsZSxcclxuICBzYXZlRmlsZSxcclxuICBsb2FkRmlsZXMsXHJcbiAgc2F2ZUZpbGVzLFxyXG4gIGxvYWRSZWxlYXNlLFxyXG4gIGxvYWRQcm9qZWN0LFxyXG4gIGxvYWRSZWxlYXNlcyxcclxuICBsb2FkUHJvamVjdHNcclxufTtcclxuXHJcbmZ1bmN0aW9uIGxvYWRFbnRyaWVzKHRvcG1vc3REaXJlY3RvcnlOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKSB7XHJcbiAgY29uc3QgZW50cmllcyA9IEVudHJpZXMuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICByZWxhdGl2ZURpcmVjdG9yeVBhdGggPSB0b3Btb3N0RGlyZWN0b3J5TmFtZTsgIC8vL1xyXG5cclxuICBlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aChlbnRyaWVzLCByZWxhdGl2ZURpcmVjdG9yeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMpO1xyXG5cclxuICByZXR1cm4gZW50cmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gbG9hZERpcmVjdG9yeShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBjb25zdCBhYnNvbHV0ZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aCksXHJcbiAgICAgICAgZW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlUGF0aCksXHJcbiAgICAgICAgZGlyZWN0b3J5ID0gZW50cnlEaXJlY3RvcnkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LmZyb21QYXRoKHBhdGgpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcclxuXHJcbiAgcmV0dXJuIGRpcmVjdG9yeTtcclxufVxyXG5cclxuZnVuY3Rpb24gZmlsZUZyb21Qcm9qZWN0KHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCBmaWxlID0gbnVsbDtcclxuXHJcbiAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgIGVudHJ5RmlsZSA9IGlzRW50cnlGaWxlKGFic29sdXRlUGF0aCk7XHJcblxyXG4gIGlmIChlbnRyeUZpbGUpIHtcclxuICAgIGNvbnN0IHJlbGVhc2VkID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IGNvbnRlbnQgPSByZWFkRmlsZShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgIGNvbnRlbnQgPSBjb252ZXJ0Q29udGVudFRhYnNUb1doaXRlc3BhY2UoY29udGVudCk7ICAvLy9cclxuXHJcbiAgICBmaWxlID0gRmlsZS5mcm9tUGF0aENvbnRlbnRBbmRSZWxlYXNlZChwYXRoLCBjb250ZW50LCByZWxlYXNlZCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmlsZTtcclxufVxyXG5cclxuZnVuY3Rpb24gZmlsZUZyb21SZWxlYXNlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChwYXRoKSxcclxuICAgICAgICB0b3Btb3N0RmlsZU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZSwgLy8vXHJcbiAgICAgICAgcmVsZWFzZSA9IGxvYWRSZWxlYXNlKHRvcG1vc3RGaWxlTmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSxcclxuICAgICAgICBmaWxlID0gcmVsZWFzZS5nZXRGaWxlKHBhdGgpO1xyXG5cclxuICByZXR1cm4gZmlsZTtcclxufVxyXG5cclxuZnVuY3Rpb24gZmlsZXNGcm9tUHJvamVjdChwYXRocywgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgZmlsZXMgPSBGaWxlcy5mcm9tTm90aGluZygpO1xyXG5cclxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gZmlsZUZyb21Qcm9qZWN0KHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgZmlsZXMuYWRkRmlsZShmaWxlKTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGZpbGVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxlc0Zyb21SZWxlYXNlKHBhdGhzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBjb25zdCBmaWxlcyA9IEZpbGVzLmZyb21Ob3RoaW5nKCksXHJcbiAgICAgICAgcGF0aHNMZW5ndGggPSBwYXRocy5sZW5ndGg7XHJcblxyXG4gIGlmIChwYXRoc0xlbmd0aCA+IDApIHtcclxuICAgIGNvbnN0IGZpcnN0UGF0aCA9IGZpcnN0KHBhdGhzKSxcclxuICAgICAgICAgIHBhdGggPSBmaXJzdFBhdGgsIC8vL1xyXG4gICAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKHBhdGgpLFxyXG4gICAgICAgICAgdG9wbW9zdEZpbGVOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWUsIC8vL1xyXG4gICAgICAgICAgcmVsZWFzZSA9IGxvYWRSZWxlYXNlKHRvcG1vc3RGaWxlTmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSByZWxlYXNlLmdldEZpbGUocGF0aCk7XHJcblxyXG4gICAgICBmaWxlcy5hZGRGaWxlKGZpbGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmlsZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGVudHJpZXMsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcykge1xyXG4gIGNvbnN0IGFic29sdXRlRGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCByZWxhdGl2ZURpcmVjdG9yeVBhdGgpLFxyXG4gICAgICAgIHN1YkVudHJ5TmFtZXMgPSByZWFkRGlyZWN0b3J5KGFic29sdXRlRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHN1YkVudHJ5TmFtZXMuZm9yRWFjaCgoc3ViRW50cnlOYW1lKSA9PiB7XHJcbiAgICBjb25zdCBzdWJFbnRyeU5hbWVIaWRkZW5OYW1lID0gaXNOYW1lSGlkZGVuTmFtZShzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgbG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMgPSAhbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXM7XHJcblxyXG4gICAgaWYgKCFzdWJFbnRyeU5hbWVIaWRkZW5OYW1lKSB7XHJcbiAgICAgIGNvbnN0IHBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgICAgZGlyZWN0b3J5ID0gbG9hZERpcmVjdG9yeShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgICAgaWYgKGRpcmVjdG9yeSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGRpcmVjdG9yeVBhdGggPSBwYXRoOyAvLy9cclxuXHJcbiAgICAgICAgaWYgKGxvYWRVbnJlY29nbmlzZWRGaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgICAgICAgICBlbnRyaWVzLmFkZERpcmVjdG9yeShkaXJlY3RvcnkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZW50cmllc0Zyb21SZWxhdGl2ZURpcmVjdG9yeVBhdGgoZW50cmllcywgZGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyk7IC8vL1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBsb2FkRmlsZShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgICAgICBpZiAoZmlsZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBmaWxlLmdldFBhdGgoKSxcclxuICAgICAgICAgICAgICAgIGZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoID0gaXNGaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aChmaWxlUGF0aCksXHJcbiAgICAgICAgICAgICAgICBmaWxlUmVjb2duaXNlZEZpbGUgPSBmaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aDsgIC8vL1xyXG5cclxuICAgICAgICAgIGlmIChmaWxlUmVjb2duaXNlZEZpbGUgfHwgbG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICAgICAgICAgICAgZW50cmllcy5hZGRGaWxlKGZpbGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b3Btb3N0RmlsZU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgdG9wbW9zdEZpbGVOYW1lcztcclxuXHJcbiAgY29uc3Qgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkocHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgdG9wbW9zdEZpbGVOYW1lcyA9IHN1YkVudHJ5TmFtZXMucmVkdWNlKCh0b3Btb3N0RmlsZU5hbWVzLCBzdWJFbnRyeU5hbWUpID0+IHtcclxuICAgIGNvbnN0IGFic29sdXRlU3ViRW50cnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICBzdWJFbnRyeU5hbWVIaWRkZW5OYW1lID0gaXNOYW1lSGlkZGVuTmFtZShzdWJFbnRyeU5hbWUpO1xyXG5cclxuICAgIGlmICghc3ViRW50cnlOYW1lSGlkZGVuTmFtZSkge1xyXG4gICAgICBjb25zdCBzdWJFbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShhYnNvbHV0ZVN1YkVudHJ5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoc3ViRW50cnlGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgdG9wbW9zdEZpbGVOYW1lID0gc3ViRW50cnlOYW1lOyAgLy8vXHJcblxyXG4gICAgICAgIHRvcG1vc3RGaWxlTmFtZXMucHVzaCh0b3Btb3N0RmlsZU5hbWUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG9wbW9zdEZpbGVOYW1lcztcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiB0b3Btb3N0RmlsZU5hbWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b3Btb3N0RGlyZWN0b3J5TmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcblxyXG4gIGNvbnN0IHN1YkVudHJ5TmFtZXMgPSByZWFkRGlyZWN0b3J5KHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHRvcG1vc3REaXJlY3RvcnlOYW1lcyA9IHN1YkVudHJ5TmFtZXMucmVkdWNlKCh0b3Btb3N0RGlyZWN0b3J5TmFtZXMsIHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3QgYWJzb2x1dGVTdWJFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSk7XHJcblxyXG4gICAgaWYgKCFzdWJFbnRyeU5hbWVIaWRkZW5OYW1lKSB7XHJcbiAgICAgIGNvbnN0IHN1YkVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShhYnNvbHV0ZVN1YkVudHJ5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoc3ViRW50cnlEaXJlY3RvcnkpIHtcclxuICAgICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHN1YkVudHJ5TmFtZTsgIC8vL1xyXG5cclxuICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZXMucHVzaCh0b3Btb3N0RGlyZWN0b3J5TmFtZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcbiAgfSwgW10pO1xyXG5cclxuICByZXR1cm4gdG9wbW9zdERpcmVjdG9yeU5hbWVzO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJsb2FkRmlsZSIsInNhdmVGaWxlIiwibG9hZEZpbGVzIiwic2F2ZUZpbGVzIiwibG9hZFJlbGVhc2UiLCJsb2FkUHJvamVjdCIsImxvYWRSZWxlYXNlcyIsImxvYWRQcm9qZWN0cyIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJyZWFkRmlsZSIsImZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJ3cml0ZUZpbGUiLCJpc0VudHJ5RmlsZSIsInJlYWREaXJlY3RvcnkiLCJpc0VudHJ5RGlyZWN0b3J5IiwiY29uY2F0ZW5hdGVQYXRocyIsInBhdGhVdGlsaXRpZXMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIiwidG9wbW9zdERpcmVjdG9yeVBhdGhGcm9tUGF0aCIsInBhdGgiLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJmaWxlIiwidG9wbW9zdERpcmVjdG9yeU5hbWUiLCJhYnNvbHV0ZVBhdGgiLCJlbnRyeURpcmVjdG9yeSIsImZpbGVGcm9tUHJvamVjdCIsImZpbGVGcm9tUmVsZWFzZSIsImVycm9yIiwiZ2V0UGF0aCIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwidG9wbW9zdEFic29sdXRlRGlyZWN0b3J5UGF0aCIsIm1rZGlycCIsInN5bmMiLCJwYXRocyIsImZpbGVzIiwicGF0aHNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdFBhdGgiLCJmaWxlc0Zyb21Qcm9qZWN0IiwiZmlsZXNGcm9tUmVsZWFzZSIsImZvckVhY2hGaWxlIiwicmVsZWFzZU5hbWUiLCJyZWxlYXNlIiwibmFtZSIsInRvcG1vc3RGaWxlTmFtZSIsImVudHJ5RmlsZSIsImpzb24iLCJlbnRyaWVzIiwiSlNPTiIsInBhcnNlIiwiRW50cmllcyIsImZyb21KU09OIiwiUmVsZWFzZSIsImZyb21OYW1lQW5kRW50cmllcyIsInByb2plY3ROYW1lIiwibG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMiLCJwcm9qZWN0IiwibG9hZEVudHJpZXMiLCJQcm9qZWN0IiwicmVsZWFzZXMiLCJSZWxlYXNlcyIsImZyb21Ob3RoaW5nIiwidG9wbW9zdEZpbGVOYW1lcyIsInRvcG1vc3RGaWxlTmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoIiwicmVsZWFzZU5hbWVzIiwiZm9yRWFjaCIsImFkZFJlbGVhc2UiLCJwcm9qZWN0cyIsIlByb2plY3RzIiwidG9wbW9zdERpcmVjdG9yeU5hbWVzIiwidG9wbW9zdERpcmVjdG9yeU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aCIsInByb2plY3ROYW1lcyIsImFkZFByb2plY3QiLCJyZWxhdGl2ZURpcmVjdG9yeVBhdGgiLCJlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aCIsImxvYWREaXJlY3RvcnkiLCJkaXJlY3RvcnkiLCJEaXJlY3RvcnkiLCJmcm9tUGF0aCIsInJlbGVhc2VkIiwiY29udmVydENvbnRlbnRUYWJzVG9XaGl0ZXNwYWNlIiwiRmlsZSIsImZyb21QYXRoQ29udGVudEFuZFJlbGVhc2VkIiwiZ2V0RmlsZSIsIkZpbGVzIiwiYWRkRmlsZSIsImFic29sdXRlRGlyZWN0b3J5UGF0aCIsInN1YkVudHJ5TmFtZXMiLCJzdWJFbnRyeU5hbWUiLCJzdWJFbnRyeU5hbWVIaWRkZW5OYW1lIiwiaXNOYW1lSGlkZGVuTmFtZSIsImxvYWRVbnJlY29nbmlzZWRGaWxlc0FuZERpcmVjdG9yaWVzIiwiZGlyZWN0b3J5UGF0aCIsImFkZERpcmVjdG9yeSIsImZpbGVQYXRoIiwiZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGgiLCJpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIiwiZmlsZVJlY29nbmlzZWRGaWxlIiwicmVkdWNlIiwiYWJzb2x1dGVTdWJFbnRyeVBhdGgiLCJzdWJFbnRyeUZpbGUiLCJwdXNoIiwic3ViRW50cnlEaXJlY3RvcnkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQXVCZ0JBLFFBQVE7ZUFBUkE7O0lBcUJBQyxRQUFRO2VBQVJBOztJQVdBQyxTQUFTO2VBQVRBOztJQTJCQUMsU0FBUztlQUFUQTs7SUFNQUMsV0FBVztlQUFYQTs7SUFnQ0FDLFdBQVc7ZUFBWEE7O0lBZ0JBQyxZQUFZO2VBQVpBOztJQXVCQUMsWUFBWTtlQUFaQTs7SUF1QmhCLE9BU0U7ZUFURjs7OzZEQXBMbUI7eUJBRWdEOzJEQUVsRDs0REFDQzs4REFDRTs4REFDQTs4REFDQTsrREFDQzsrREFDQTtnRUFDQztvQkFFVzt3QkFDWTt1QkFDRTs7Ozs7O0FBRS9DLElBQU0sQUFBRUMsUUFBVUMseUJBQWMsQ0FBeEJELE9BQ0FFLFdBQXNFQyw4QkFBbUIsQ0FBekZELFVBQVVFLFlBQTRERCw4QkFBbUIsQ0FBL0VDLFdBQVdDLGNBQWlERiw4QkFBbUIsQ0FBcEVFLGFBQWFDLGdCQUFvQ0gsOEJBQW1CLENBQXZERyxlQUFlQyxtQkFBcUJKLDhCQUFtQixDQUF4Q0ksa0JBQ2pEQyxtQkFBaUZDLHdCQUFhLENBQTlGRCxrQkFBa0JFLCtCQUErREQsd0JBQWEsQ0FBNUVDLDhCQUE4QkMsK0JBQWlDRix3QkFBYSxDQUE5Q0U7QUFFakQsU0FBU25CLFNBQVNvQixJQUFJLEVBQUVDLHFCQUFxQjtJQUNsRCxJQUFJQyxP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
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzLCBwYXRoVXRpbGl0aWVzLCBmaWxlU3lzdGVtVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xyXG5cclxuaW1wb3J0IEZpbGUgZnJvbSBcIi4uL2ZpbGVcIjtcclxuaW1wb3J0IEZpbGVzIGZyb20gXCIuLi9maWxlc1wiO1xyXG5pbXBvcnQgRW50cmllcyBmcm9tIFwiLi4vZW50cmllc1wiO1xyXG5pbXBvcnQgUHJvamVjdCBmcm9tIFwiLi4vcHJvamVjdFwiO1xyXG5pbXBvcnQgUmVsZWFzZSBmcm9tIFwiLi4vcmVsZWFzZVwiO1xyXG5pbXBvcnQgUHJvamVjdHMgZnJvbSBcIi4uL3Byb2plY3RzXCI7XHJcbmltcG9ydCBSZWxlYXNlcyBmcm9tIFwiLi4vcmVsZWFzZXNcIjtcclxuaW1wb3J0IERpcmVjdG9yeSBmcm9tIFwiLi4vZGlyZWN0b3J5XCI7XHJcblxyXG5pbXBvcnQgeyBpc05hbWVIaWRkZW5OYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9uYW1lXCI7XHJcbmltcG9ydCB7IGlzRmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGggfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2ZpbGVQYXRoXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGVudFwiO1xyXG5cclxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXMsXHJcbiAgICAgIHsgY29uY2F0ZW5hdGVQYXRocywgdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aCwgdG9wbW9zdERpcmVjdG9yeVBhdGhGcm9tUGF0aCB9ID0gcGF0aFV0aWxpdGllcyxcclxuICAgICAgeyByZWFkRmlsZSwgd3JpdGVGaWxlLCBpc0VudHJ5RmlsZSwgcmVhZERpcmVjdG9yeSwgaXNFbnRyeURpcmVjdG9yeSwgY2hlY2tFbnRyeUV4aXN0czogY2hlY2tGaWxlRXhpc3RzIH0gPSBmaWxlU3lzdGVtVXRpbGl0aWVzO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCBmaWxlID0gbnVsbDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChwYXRoKTtcclxuXHJcbiAgICBpZiAodG9wbW9zdERpcmVjdG9yeU5hbWUgIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHRvcG1vc3REaXJlY3RvcnlOYW1lKSxcclxuICAgICAgICAgICAgZW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgICBmaWxlID0gZW50cnlEaXJlY3RvcnkgP1xyXG4gICAgICAgICAgICAgICBmaWxlRnJvbVByb2plY3QocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSA6XHJcbiAgICAgICAgICAgICAgICAgZmlsZUZyb21SZWxlYXNlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIC8vL1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZpbGU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZShmaWxlLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xyXG5cclxuICBjb25zdCBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxyXG4gICAgICAgIGFic29sdXRlRmlsZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgZmlsZVBhdGgpLFxyXG4gICAgICAgIGZpbGVFeGlzdHMgPSBjaGVja0ZpbGVFeGlzdHMoYWJzb2x1dGVGaWxlUGF0aCk7XHJcblxyXG4gIGlmIChmaWxlRXhpc3RzKSB7XHJcbiAgICBjb25zdCBmaWxlUGF0aCA9IGFic29sdXRlRmlsZVBhdGgsICAvLy9cclxuICAgICAgICAgIGNvbnRlbnQgPSBmaWxlLmdldENvbnRlbnQoKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICB3cml0ZUZpbGUoZmlsZVBhdGgsIGNvbnRlbnQpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8vXHJcbiAgICB9XHJcblxyXG4gICAgc3VjY2VzcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gc3VjY2VzcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlcyhwYXRocywgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IGZpbGVzID0gbnVsbDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHBhdGhzTGVuZ3RoID0gcGF0aHMubGVuZ3RoO1xyXG5cclxuICAgIGlmIChwYXRoc0xlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZmlyc3RQYXRoID0gZmlyc3QocGF0aHMpLFxyXG4gICAgICAgICAgICBwYXRoID0gZmlyc3RQYXRoLCAvLy9cclxuICAgICAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKHBhdGgpO1xyXG5cclxuICAgICAgaWYgKHRvcG1vc3REaXJlY3RvcnlOYW1lICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHRvcG1vc3REaXJlY3RvcnlOYW1lKSxcclxuICAgICAgICAgICAgICBlbnRyeURpcmVjdG9yeSA9IGlzRW50cnlEaXJlY3RvcnkoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICAgICAgZmlsZXMgPSBlbnRyeURpcmVjdG9yeSA/XHJcbiAgICAgICAgICAgICAgICAgIGZpbGVzRnJvbVByb2plY3QocGF0aHMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkgOlxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzRnJvbVJlbGVhc2UocGF0aHMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmlsZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzYXZlRmlsZXMoZmlsZXMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGNvbnN0IHN1Y2Nlc3NlcyA9IGZpbGVzLm1hcEZpbGUoKGZpbGUpID0+IHtcclxuICAgIGNvbnN0IHN1Y2Nlc3MgPSBzYXZlRmlsZShmaWxlLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgIHJldHVybiBzdWNjZXNzO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gc3VjY2Vzc2VzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2UocmVsZWFzZU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCByZWxlYXNlID0gbnVsbDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IG5hbWUgPSByZWxlYXNlTmFtZSwgLy8vXHJcbiAgICAgICAgICB0b3Btb3N0RmlsZU5hbWUgPSByZWxlYXNlTmFtZSwgIC8vL1xyXG4gICAgICAgICAgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHRvcG1vc3RGaWxlTmFtZSksXHJcbiAgICAgICAgICBlbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgIGlmIChlbnRyeUZpbGUpIHtcclxuICAgICAgbGV0IGpzb24sXHJcbiAgICAgICAgICBlbnRyaWVzO1xyXG5cclxuICAgICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlKGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgICBqc29uID0gSlNPTi5wYXJzZShjb250ZW50KTtcclxuXHJcbiAgICAgICh7IGVudHJpZXMgfSA9IGpzb24pO1xyXG5cclxuICAgICAganNvbiAgPSBlbnRyaWVzOyAgLy8vXHJcblxyXG4gICAgICBlbnRyaWVzID0gRW50cmllcy5mcm9tSlNPTihqc29uKTtcclxuXHJcbiAgICAgIHJlbGVhc2UgPSBSZWxlYXNlLmZyb21OYW1lQW5kRW50cmllcyhuYW1lLCBlbnRyaWVzKTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVsZWFzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcm9qZWN0KHByb2plY3ROYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKSB7XHJcbiAgbGV0IHByb2plY3QgPSBudWxsO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgbmFtZSA9IHByb2plY3ROYW1lLCAgLy8vXHJcbiAgICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHByb2plY3ROYW1lLCAvLy9cclxuICAgICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyk7XHJcblxyXG4gICAgcHJvamVjdCA9IFByb2plY3QuZnJvbU5hbWVBbmRFbnRyaWVzKG5hbWUsIGVudHJpZXMpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAvLy9cclxuICB9XHJcblxyXG4gIHJldHVybiBwcm9qZWN0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2VzKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCByZWxlYXNlcztcclxuXHJcbiAgdHJ5IHtcclxuICAgIHJlbGVhc2VzID0gUmVsZWFzZXMuZnJvbU5vdGhpbmcoKTtcclxuXHJcbiAgICBjb25zdCB0b3Btb3N0RmlsZU5hbWVzID0gdG9wbW9zdEZpbGVOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKSxcclxuICAgICAgICAgIHJlbGVhc2VOYW1lcyA9IHRvcG1vc3RGaWxlTmFtZXM7ICAvLy9cclxuXHJcbiAgICByZWxlYXNlTmFtZXMuZm9yRWFjaCgocmVsZWFzZU5hbWUpID0+IHtcclxuICAgICAgY29uc3QgcmVsZWFzZSA9IGxvYWRSZWxlYXNlKHJlbGVhc2VOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgICAgaWYgKHJlbGVhc2UgIT09IG51bGwpIHtcclxuICAgICAgICByZWxlYXNlcy5hZGRSZWxlYXNlKHJlbGVhc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgcmVsZWFzZXMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlbGVhc2VzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFByb2plY3RzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMpIHtcclxuICBsZXQgcHJvamVjdHM7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBwcm9qZWN0cyA9IFByb2plY3RzLmZyb21Ob3RoaW5nKCk7XHJcblxyXG4gICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWVzID0gdG9wbW9zdERpcmVjdG9yeU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgpLFxyXG4gICAgICAgICAgcHJvamVjdE5hbWVzID0gdG9wbW9zdERpcmVjdG9yeU5hbWVzOyAvLy9cclxuXHJcbiAgICBwcm9qZWN0TmFtZXMuZm9yRWFjaCgocHJvamVjdE5hbWUpID0+IHtcclxuICAgICAgY29uc3QgcHJvamVjdCA9IGxvYWRQcm9qZWN0KHByb2plY3ROYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKTtcclxuXHJcbiAgICAgIGlmIChwcm9qZWN0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgcHJvamVjdHMuYWRkUHJvamVjdChwcm9qZWN0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHByb2plY3RzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHJldHVybiBwcm9qZWN0cztcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIGxvYWRGaWxlLFxyXG4gIHNhdmVGaWxlLFxyXG4gIGxvYWRGaWxlcyxcclxuICBzYXZlRmlsZXMsXHJcbiAgbG9hZFJlbGVhc2UsXHJcbiAgbG9hZFByb2plY3QsXHJcbiAgbG9hZFJlbGVhc2VzLFxyXG4gIGxvYWRQcm9qZWN0c1xyXG59O1xyXG5cclxuZnVuY3Rpb24gbG9hZEVudHJpZXModG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMpIHtcclxuICBjb25zdCBlbnRyaWVzID0gRW50cmllcy5mcm9tTm90aGluZygpLFxyXG4gICAgICAgIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCA9IHRvcG1vc3REaXJlY3RvcnlOYW1lOyAgLy8vXHJcblxyXG4gIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGVudHJpZXMsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyk7XHJcblxyXG4gIHJldHVybiBlbnRyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBsb2FkRGlyZWN0b3J5KHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGNvbnN0IGFic29sdXRlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBwYXRoKSxcclxuICAgICAgICBlbnRyeURpcmVjdG9yeSA9IGlzRW50cnlEaXJlY3RvcnkoYWJzb2x1dGVQYXRoKSxcclxuICAgICAgICBkaXJlY3RvcnkgPSBlbnRyeURpcmVjdG9yeSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkuZnJvbVBhdGgocGF0aCkgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xyXG5cclxuICByZXR1cm4gZGlyZWN0b3J5O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxlRnJvbVByb2plY3QocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IGZpbGUgPSBudWxsO1xyXG5cclxuICBjb25zdCBhYnNvbHV0ZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aCksXHJcbiAgICAgICAgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgaWYgKGVudHJ5RmlsZSkge1xyXG4gICAgY29uc3QgcmVsZWFzZWQgPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgY29udGVudCA9IHJlYWRGaWxlKGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgY29udGVudCA9IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZShjb250ZW50KTsgIC8vL1xyXG5cclxuICAgIGZpbGUgPSBGaWxlLmZyb21QYXRoQ29udGVudEFuZFJlbGVhc2VkKHBhdGgsIGNvbnRlbnQsIHJlbGVhc2VkKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmaWxlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxlRnJvbVJlbGVhc2UocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKHBhdGgpLFxyXG4gICAgICAgIHRvcG1vc3RGaWxlTmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lLCAvLy9cclxuICAgICAgICByZWxlYXNlID0gbG9hZFJlbGVhc2UodG9wbW9zdEZpbGVOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpLFxyXG4gICAgICAgIGZpbGUgPSByZWxlYXNlLmdldEZpbGUocGF0aCk7XHJcblxyXG4gIHJldHVybiBmaWxlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxlc0Zyb21Qcm9qZWN0KHBhdGhzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBjb25zdCBmaWxlcyA9IEZpbGVzLmZyb21Ob3RoaW5nKCk7XHJcblxyXG4gIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcclxuICAgIGNvbnN0IGZpbGUgPSBmaWxlRnJvbVByb2plY3QocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICBmaWxlcy5hZGRGaWxlKGZpbGUpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZmlsZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbGVzRnJvbVJlbGVhc2UocGF0aHMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGNvbnN0IGZpbGVzID0gRmlsZXMuZnJvbU5vdGhpbmcoKSxcclxuICAgICAgICBwYXRoc0xlbmd0aCA9IHBhdGhzLmxlbmd0aDtcclxuXHJcbiAgaWYgKHBhdGhzTGVuZ3RoID4gMCkge1xyXG4gICAgY29uc3QgZmlyc3RQYXRoID0gZmlyc3QocGF0aHMpLFxyXG4gICAgICAgICAgcGF0aCA9IGZpcnN0UGF0aCwgLy8vXHJcbiAgICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgocGF0aCksXHJcbiAgICAgICAgICB0b3Btb3N0RmlsZU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZSwgLy8vXHJcbiAgICAgICAgICByZWxlYXNlID0gbG9hZFJlbGVhc2UodG9wbW9zdEZpbGVOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcclxuICAgICAgY29uc3QgZmlsZSA9IHJlbGVhc2UuZ2V0RmlsZShwYXRoKTtcclxuXHJcbiAgICAgIGZpbGVzLmFkZEZpbGUoZmlsZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmaWxlcztcclxufVxyXG5cclxuZnVuY3Rpb24gZW50cmllc0Zyb21SZWxhdGl2ZURpcmVjdG9yeVBhdGgoZW50cmllcywgcmVsYXRpdmVEaXJlY3RvcnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKSB7XHJcbiAgY29uc3QgYWJzb2x1dGVEaXJlY3RvcnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCksXHJcbiAgICAgICAgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkoYWJzb2x1dGVEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgc3ViRW50cnlOYW1lcy5mb3JFYWNoKChzdWJFbnRyeU5hbWUpID0+IHtcclxuICAgIGNvbnN0IHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyA9ICFsb2FkT25seVJlY29nbmlzZWRGaWxlcztcclxuXHJcbiAgICBpZiAoIXN1YkVudHJ5TmFtZUhpZGRlbk5hbWUpIHtcclxuICAgICAgY29uc3QgcGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocmVsYXRpdmVEaXJlY3RvcnlQYXRoLCBzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgICBkaXJlY3RvcnkgPSBsb2FkRGlyZWN0b3J5KHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoZGlyZWN0b3J5ICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZGlyZWN0b3J5UGF0aCA9IHBhdGg7IC8vL1xyXG5cclxuICAgICAgICBpZiAobG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICAgICAgICAgIGVudHJpZXMuYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aChlbnRyaWVzLCBkaXJlY3RvcnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKTsgLy8vXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IGxvYWRGaWxlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICAgIGlmIChmaWxlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxyXG4gICAgICAgICAgICAgICAgZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGggPSBpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoKGZpbGVQYXRoKSxcclxuICAgICAgICAgICAgICAgIGZpbGVSZWNvZ25pc2VkRmlsZSA9IGZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoOyAgLy8vXHJcblxyXG4gICAgICAgICAgaWYgKGZpbGVSZWNvZ25pc2VkRmlsZSB8fCBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICAgICAgICBlbnRyaWVzLmFkZEZpbGUoZmlsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvcG1vc3RGaWxlTmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCB0b3Btb3N0RmlsZU5hbWVzO1xyXG5cclxuICBjb25zdCBzdWJFbnRyeU5hbWVzID0gcmVhZERpcmVjdG9yeShwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICB0b3Btb3N0RmlsZU5hbWVzID0gc3ViRW50cnlOYW1lcy5yZWR1Y2UoKHRvcG1vc3RGaWxlTmFtZXMsIHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3QgYWJzb2x1dGVTdWJFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSk7XHJcblxyXG4gICAgaWYgKCFzdWJFbnRyeU5hbWVIaWRkZW5OYW1lKSB7XHJcbiAgICAgIGNvbnN0IHN1YkVudHJ5RmlsZSA9IGlzRW50cnlGaWxlKGFic29sdXRlU3ViRW50cnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChzdWJFbnRyeUZpbGUpIHtcclxuICAgICAgICBjb25zdCB0b3Btb3N0RmlsZU5hbWUgPSBzdWJFbnRyeU5hbWU7ICAvLy9cclxuXHJcbiAgICAgICAgdG9wbW9zdEZpbGVOYW1lcy5wdXNoKHRvcG1vc3RGaWxlTmFtZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b3Btb3N0RmlsZU5hbWVzO1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgcmV0dXJuIHRvcG1vc3RGaWxlTmFtZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IHRvcG1vc3REaXJlY3RvcnlOYW1lcztcclxuXHJcbiAgY29uc3Qgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkocHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgdG9wbW9zdERpcmVjdG9yeU5hbWVzID0gc3ViRW50cnlOYW1lcy5yZWR1Y2UoKHRvcG1vc3REaXJlY3RvcnlOYW1lcywgc3ViRW50cnlOYW1lKSA9PiB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVN1YkVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgc3ViRW50cnlOYW1lSGlkZGVuTmFtZSA9IGlzTmFtZUhpZGRlbk5hbWUoc3ViRW50cnlOYW1lKTtcclxuXHJcbiAgICBpZiAoIXN1YkVudHJ5TmFtZUhpZGRlbk5hbWUpIHtcclxuICAgICAgY29uc3Qgc3ViRW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlU3ViRW50cnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChzdWJFbnRyeURpcmVjdG9yeSkge1xyXG4gICAgICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gc3ViRW50cnlOYW1lOyAgLy8vXHJcblxyXG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lcy5wdXNoKHRvcG1vc3REaXJlY3RvcnlOYW1lKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRvcG1vc3REaXJlY3RvcnlOYW1lcztcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcbn1cclxuIl0sIm5hbWVzIjpbImxvYWRGaWxlIiwic2F2ZUZpbGUiLCJsb2FkRmlsZXMiLCJzYXZlRmlsZXMiLCJsb2FkUmVsZWFzZSIsImxvYWRQcm9qZWN0IiwibG9hZFJlbGVhc2VzIiwibG9hZFByb2plY3RzIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwidG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aCIsInRvcG1vc3REaXJlY3RvcnlQYXRoRnJvbVBhdGgiLCJyZWFkRmlsZSIsImZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJ3cml0ZUZpbGUiLCJpc0VudHJ5RmlsZSIsInJlYWREaXJlY3RvcnkiLCJpc0VudHJ5RGlyZWN0b3J5IiwiY2hlY2tFbnRyeUV4aXN0cyIsImNoZWNrRmlsZUV4aXN0cyIsInBhdGgiLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJmaWxlIiwidG9wbW9zdERpcmVjdG9yeU5hbWUiLCJhYnNvbHV0ZVBhdGgiLCJlbnRyeURpcmVjdG9yeSIsImZpbGVGcm9tUHJvamVjdCIsImZpbGVGcm9tUmVsZWFzZSIsImVycm9yIiwic3VjY2VzcyIsImZpbGVQYXRoIiwiZ2V0UGF0aCIsImFic29sdXRlRmlsZVBhdGgiLCJmaWxlRXhpc3RzIiwiY29udGVudCIsImdldENvbnRlbnQiLCJwYXRocyIsImZpbGVzIiwicGF0aHNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdFBhdGgiLCJmaWxlc0Zyb21Qcm9qZWN0IiwiZmlsZXNGcm9tUmVsZWFzZSIsInN1Y2Nlc3NlcyIsIm1hcEZpbGUiLCJyZWxlYXNlTmFtZSIsInJlbGVhc2UiLCJuYW1lIiwidG9wbW9zdEZpbGVOYW1lIiwiZW50cnlGaWxlIiwianNvbiIsImVudHJpZXMiLCJKU09OIiwicGFyc2UiLCJFbnRyaWVzIiwiZnJvbUpTT04iLCJSZWxlYXNlIiwiZnJvbU5hbWVBbmRFbnRyaWVzIiwicHJvamVjdE5hbWUiLCJsb2FkT25seVJlY29nbmlzZWRGaWxlcyIsInByb2plY3QiLCJsb2FkRW50cmllcyIsIlByb2plY3QiLCJyZWxlYXNlcyIsIlJlbGVhc2VzIiwiZnJvbU5vdGhpbmciLCJ0b3Btb3N0RmlsZU5hbWVzIiwidG9wbW9zdEZpbGVOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJyZWxlYXNlTmFtZXMiLCJmb3JFYWNoIiwiYWRkUmVsZWFzZSIsInByb2plY3RzIiwiUHJvamVjdHMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZXMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoIiwicHJvamVjdE5hbWVzIiwiYWRkUHJvamVjdCIsInJlbGF0aXZlRGlyZWN0b3J5UGF0aCIsImVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoIiwibG9hZERpcmVjdG9yeSIsImRpcmVjdG9yeSIsIkRpcmVjdG9yeSIsImZyb21QYXRoIiwicmVsZWFzZWQiLCJjb252ZXJ0Q29udGVudFRhYnNUb1doaXRlc3BhY2UiLCJGaWxlIiwiZnJvbVBhdGhDb250ZW50QW5kUmVsZWFzZWQiLCJnZXRGaWxlIiwiRmlsZXMiLCJhZGRGaWxlIiwiYWJzb2x1dGVEaXJlY3RvcnlQYXRoIiwic3ViRW50cnlOYW1lcyIsInN1YkVudHJ5TmFtZSIsInN1YkVudHJ5TmFtZUhpZGRlbk5hbWUiLCJpc05hbWVIaWRkZW5OYW1lIiwibG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMiLCJkaXJlY3RvcnlQYXRoIiwiYWRkRGlyZWN0b3J5IiwiZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGgiLCJpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIiwiZmlsZVJlY29nbmlzZWRGaWxlIiwicmVkdWNlIiwiYWJzb2x1dGVTdWJFbnRyeVBhdGgiLCJzdWJFbnRyeUZpbGUiLCJwdXNoIiwic3ViRW50cnlEaXJlY3RvcnkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQXFCZ0JBLFFBQVE7ZUFBUkE7O0lBcUJBQyxRQUFRO2VBQVJBOztJQXVCQUMsU0FBUztlQUFUQTs7SUEyQkFDLFNBQVM7ZUFBVEE7O0lBVUFDLFdBQVc7ZUFBWEE7O0lBZ0NBQyxXQUFXO2VBQVhBOztJQWdCQUMsWUFBWTtlQUFaQTs7SUF1QkFDLFlBQVk7ZUFBWkE7O0lBdUJoQixPQVNFO2VBVEY7Ozt5QkFsTW1FOzJEQUVsRDs0REFDQzs4REFDRTs4REFDQTs4REFDQTsrREFDQzsrREFDQTtnRUFDQztvQkFFVzt3QkFDWTt1QkFDRTs7Ozs7O0FBRS9DLElBQU0sQUFBRUMsUUFBVUMseUJBQWMsQ0FBeEJELE9B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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-file-system",
3
3
  "author": "James Smith",
4
- "version": "5.0.228",
4
+ "version": "5.0.232",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-file-system",
7
7
  "description": "Occam's file system functionality.",
@@ -11,9 +11,7 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "argumentative": "^2.0.21",
14
- "fs-extra": "^9.0.0",
15
- "mkdirp": "^0.5.1",
16
- "necessary": "^11.0.40",
14
+ "necessary": "^11.6.0",
17
15
  "occam-dom": "^3.1.31",
18
16
  "occam-grammars": "^1.0.451"
19
17
  },
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  import { pathUtilities, fileSystemUtilities } from "necessary";
4
- import { createFile, mkdirs as createDirectory } from "fs-extra";
5
4
 
6
5
  import { asynchronousForEach } from "./utilities/pathMaps";
7
6
 
8
- const { concatenatePaths } = pathUtilities,
9
- { checkEntryExists } = fileSystemUtilities;
7
+ const { concatenatePaths, pathWithoutBottommostNameFromPath } = pathUtilities,
8
+ { createFile: createFileEx,
9
+ createDirectory: createDirectoryEx,
10
+ checkEntryExists: checkFileExists,
11
+ checkEntryExists: checkDirectoryExists } = fileSystemUtilities;
10
12
 
11
13
  export default function createProjectEntries(projectsDirectoryPath, json, callback) {
12
14
  const { pathMaps } = json;
@@ -26,6 +28,46 @@ export function createEntryOperation(sourceEntryPath, targetEntryPath, entryDire
26
28
  createFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback);
27
29
  }
28
30
 
31
+ export function createDirectory(directoryPath, callback) {
32
+ let error = null;
33
+
34
+ const directoryPathWithoutBottommostName = pathWithoutBottommostNameFromPath(directoryPath),
35
+ parentDirectoryPath = directoryPathWithoutBottommostName, ///
36
+ parentDirectoryExists = checkDirectoryExists(parentDirectoryPath);
37
+
38
+ if (!parentDirectoryExists) {
39
+ error = `The '${directoryPath}' directory's parent directory does not exist`;
40
+ } else {
41
+ try {
42
+ createDirectoryEx(directoryPath)
43
+ } catch (nativeError) {
44
+ error = nativeError; ///
45
+ }
46
+ }
47
+
48
+ callback(error);
49
+ }
50
+
51
+ export function createFile(filePath, callback) {
52
+ let error = null;
53
+
54
+ const filePathWithoutBottommostName = pathWithoutBottommostNameFromPath(filePath),
55
+ parentDirectoryPath = filePathWithoutBottommostName, ///
56
+ parentDirectoryExists = checkDirectoryExists(parentDirectoryPath);
57
+
58
+ if (!parentDirectoryExists) {
59
+ error = `The '${filePath}' file's parent directory does not exist`;
60
+ } else {
61
+ try {
62
+ createFileEx(filePath)
63
+ } catch (nativeError) {
64
+ error = nativeError; ///
65
+ }
66
+ }
67
+
68
+ callback(error);
69
+ }
70
+
29
71
  function createEntries(pathMaps, projectsDirectoryPath, callback) {
30
72
  const targetEntryPaths = [];
31
73
 
@@ -47,7 +89,7 @@ function createEntries(pathMaps, projectsDirectoryPath, callback) {
47
89
  function createFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback) {
48
90
  const targetFilePath = targetEntryPath, ///
49
91
  absoluteTargetFilePath = concatenatePaths(projectsDirectoryPath, targetFilePath),
50
- targetFileExists = checkEntryExists(absoluteTargetFilePath);
92
+ targetFileExists = checkFileExists(absoluteTargetFilePath);
51
93
 
52
94
  if (targetFileExists) {
53
95
  targetEntryPath = null;
@@ -57,7 +99,9 @@ function createFileOperation(sourceEntryPath, targetEntryPath, projectsDirectory
57
99
  return;
58
100
  }
59
101
 
60
- createFile(absoluteTargetFilePath, (error) => {
102
+ const filePath = absoluteTargetFilePath; ///
103
+
104
+ createFile(filePath, (error) => {
61
105
  if (error) {
62
106
  targetEntryPath = null;
63
107
  }
@@ -69,7 +113,7 @@ function createFileOperation(sourceEntryPath, targetEntryPath, projectsDirectory
69
113
  function createDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback) {
70
114
  const targetDirectoryPath = targetEntryPath, ///
71
115
  absoluteTargetDirectoryPath = concatenatePaths(projectsDirectoryPath, targetDirectoryPath),
72
- targetDirectoryExists = checkEntryExists(absoluteTargetDirectoryPath);
116
+ targetDirectoryExists = checkFileExists(absoluteTargetDirectoryPath);
73
117
 
74
118
  if (targetDirectoryExists) {
75
119
  targetEntryPath = null;
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import { move as edit, remove } from "fs-extra";
4
3
  import { pathUtilities, fileSystemUtilities } from "necessary";
5
4
 
6
5
  import { asynchronousForEach } from "./utilities/pathMaps";
7
6
 
7
+ import { moveFile as editFile, moveDirectory as editDirectory } from "./moveProjectEntries";
8
+
8
9
  const { concatenatePaths } = pathUtilities,
9
10
  { checkEntryExists, isDirectoryEmpty } = fileSystemUtilities;
10
11
 
@@ -70,7 +71,10 @@ function editFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPa
70
71
  return;
71
72
  }
72
73
 
73
- edit(absoluteSourceFilePath, absoluteTargetFilePath, (error) => {
74
+ const oldFilePath = absoluteSourceFilePath, ///
75
+ newFilePath = absoluteTargetFilePath; ///
76
+
77
+ editFile(oldFilePath, newFilePath, (error) => {
74
78
  if (error) {
75
79
  targetEntryPath = sourceEntryPath; ///
76
80
  }
@@ -97,7 +101,9 @@ function editDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
97
101
  targetDirectoryExists = checkEntryExists(absoluteTargetDirectoryPath);
98
102
 
99
103
  if (targetDirectoryExists) {
100
- remove(absoluteSourceDirectoryPath, (error) => {
104
+ const directoryPath = absoluteSourceDirectoryPath; ///
105
+
106
+ removeDirectory(directoryPath, (error) => {
101
107
  if (error) {
102
108
  targetEntryPath = sourceEntryPath; ///
103
109
  }
@@ -108,7 +114,10 @@ function editDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
108
114
  return;
109
115
  }
110
116
 
111
- edit(absoluteSourceDirectoryPath, absoluteTargetDirectoryPath, (error) => {
117
+ const oldDirectoryPath = absoluteSourceDirectoryPath, ///
118
+ newDirectoryPath = absoluteTargetDirectoryPath; ///
119
+
120
+ editDirectory(oldDirectoryPath, newDirectoryPath, (error) => {
112
121
  if (error) {
113
122
  targetEntryPath = sourceEntryPath; ///
114
123
  }
@@ -1,13 +1,17 @@
1
1
  "use strict";
2
2
 
3
- import { move, remove } from "fs-extra";
4
3
  import { pathUtilities, fileSystemUtilities } from "necessary";
5
4
 
6
5
  import { asynchronousForEach } from "./utilities/pathMaps";
7
6
  import { removeEntryOperation } from "./removeProjectEntries";
7
+ import { removeEntry as removeDirectory } from "./removeProjectEntries";
8
8
 
9
- const { concatenatePaths } = pathUtilities,
10
- { checkEntryExists, isDirectoryEmpty } = fileSystemUtilities;
9
+ const { concatenatePaths, pathWithoutBottommostName } = pathUtilities,
10
+ { isDirectoryEmpty,
11
+ checkEntryExists,
12
+ renameFile: renameFileEx,
13
+ renameDirectory: renameDirectoryEx,
14
+ checkEntryExists: checkDirectoryExists } = fileSystemUtilities;
11
15
 
12
16
  export default function moveProjectEntries(projectsDirectoryPath, json, callback) {
13
17
  const { pathMaps } = json;
@@ -44,6 +48,46 @@ export function moveEntryOperation(sourceEntryPath, targetEntryPath, entryDirect
44
48
  moveFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback);
45
49
  }
46
50
 
51
+ export function moveDirectory(oldDirectoryPath, newDirectoryPath, callback) {
52
+ let error = null;
53
+
54
+ const newDirectoryPathWithoutBottommostName = pathWithoutBottommostName(newDirectoryPath),
55
+ newParentDirectoryPath = newDirectoryPathWithoutBottommostName, ///
56
+ newParentDirectoryExists = checkDirectoryExists(newParentDirectoryPath);
57
+
58
+ if (!newParentDirectoryExists) {
59
+ error = `The new '${newDirectoryPath}' directory's parent directory does not exist.`;
60
+ } else {
61
+ try {
62
+ renameDirectoryEx(oldDirectoryPath);
63
+ } catch (nativeError) {
64
+ error = nativeError; ///
65
+ }
66
+ }
67
+
68
+ callback(error);
69
+ }
70
+
71
+ export function moveFile(oldFilePath, newFilePath, callback) {
72
+ let error = null;
73
+
74
+ const newFilePathWithoutBottommostName = pathWithoutBottommostName(newFilePath),
75
+ newParentDirectoryPath = newFilePathWithoutBottommostName, ///
76
+ newParentDirectoryExists = checkFileExists(newParentDirectoryPath);
77
+
78
+ if (!newParentDirectoryExists) {
79
+ error = `The new '${newFilePath}' file's parent directory does not exist.`;
80
+ } else {
81
+ try {
82
+ renameFileEx(oldFilePath, newFilePath);
83
+ } catch (nativeError) {
84
+ error = nativeError; ///
85
+ }
86
+ }
87
+
88
+ callback(error);
89
+ }
90
+
47
91
  function moveEntries(pathMaps, projectsDirectoryPath, callback) {
48
92
  const targetEntryPaths = [];
49
93
 
@@ -77,7 +121,10 @@ function moveFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPa
77
121
  return;
78
122
  }
79
123
 
80
- move(absoluteSourceFilePath, absoluteTargetFilePath, (error) => {
124
+ const oldFilePath = absoluteSourceFilePath, ///
125
+ newFilePath = absoluteTargetFilePath; ///
126
+
127
+ moveFile(oldFilePath, newFilePath, (error) => {
81
128
  if (error) {
82
129
  targetEntryPath = null;
83
130
  }
@@ -104,7 +151,9 @@ function moveDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
104
151
  targetDirectoryExists = checkEntryExists(absoluteTargetDirectoryPath);
105
152
 
106
153
  if (targetDirectoryExists) {
107
- remove(absoluteSourceDirectoryPath, (error) => {
154
+ const directoryPath = absoluteSourceDirectoryPath; ///
155
+
156
+ removeDirectory(directoryPath, (error) => {
108
157
  if (error) {
109
158
  targetEntryPath = sourceEntryPath; ///
110
159
  }
@@ -115,7 +164,10 @@ function moveDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDirect
115
164
  return;
116
165
  }
117
166
 
118
- move(absoluteSourceDirectoryPath, absoluteTargetDirectoryPath, (error) => {
167
+ const oldDirectoryPath = absoluteSourceDirectoryPath, ///
168
+ newDirectoryPath = absoluteTargetDirectoryPath; ///
169
+
170
+ moveDirectory(oldDirectoryPath, newDirectoryPath, (error) => {
119
171
  if (error) {
120
172
  targetEntryPath = sourceEntryPath; ///
121
173
  }
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import { remove } from "fs-extra";
4
3
  import { pathUtilities, fileSystemUtilities } from "necessary";
5
4
 
6
5
  import { asynchronousForEach } from "./utilities/pathMaps";
7
6
 
8
7
  const { concatenatePaths } = pathUtilities,
9
- { checkEntryExists, isDirectoryEmpty } = fileSystemUtilities;
8
+ { checkEntryExists, isDirectoryEmpty, removeEntry: removeEntryEx } = fileSystemUtilities;
10
9
 
11
10
  export default function removeProjectEntries(projectsDirectoryPath, json, callback) {
12
11
  const { pathMaps } = json;
@@ -37,6 +36,24 @@ export function removeEntryOperation(sourceEntryPath, targetEntryPath, entryDire
37
36
  removeFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback);
38
37
  }
39
38
 
39
+ export function removeEntry(entryPath, callback) {
40
+ let error = null;
41
+
42
+ const entryExists = checkEntryExists(entryPath);
43
+
44
+ if (!entryExists) {
45
+ error = `The '${entryPath}' entry does not exist.`;
46
+ } else {
47
+ try {
48
+ removeEntryEx(entryPath);
49
+ } catch (nativeError) {
50
+ error = nativeError; ///
51
+ }
52
+ }
53
+
54
+ callback(error);
55
+ }
56
+
40
57
  function removeEntries(pathMaps, projectsDirectoryPath, callback) {
41
58
  const targetEntryPaths = [];
42
59
 
@@ -57,9 +74,10 @@ function removeEntries(pathMaps, projectsDirectoryPath, callback) {
57
74
 
58
75
  function removeFileOperation(sourceEntryPath, targetEntryPath, projectsDirectoryPath, callback) {
59
76
  const sourceFilePath = sourceEntryPath, ///
60
- absoluteSourceFilePath = concatenatePaths(projectsDirectoryPath, sourceFilePath);
77
+ absoluteSourceFilePath = concatenatePaths(projectsDirectoryPath, sourceFilePath),
78
+ entryPath = absoluteSourceFilePath; ///
61
79
 
62
- remove(absoluteSourceFilePath, (error) => {
80
+ removeEntry(entryPath, (error) => {
63
81
  if (error) {
64
82
  targetEntryPath = sourceEntryPath; ///
65
83
  }
@@ -81,7 +99,9 @@ function removeDirectoryOperation(sourceEntryPath, targetEntryPath, projectsDire
81
99
  return;
82
100
  }
83
101
 
84
- remove(absoluteSourceDirectoryPath, (error) => {
102
+ const entryPath = absoluteSourceDirectoryPath; ///
103
+
104
+ removeEntry(entryPath, (error) => {
85
105
  if (error) {
86
106
  targetEntryPath = sourceEntryPath; ///
87
107
  }
package/src/saveFile.js CHANGED
@@ -5,11 +5,10 @@ import File from "./file";
5
5
  import { saveFile as saveFileEx } from "./utilities/fileSystem"
6
6
 
7
7
  export default function saveFile(projectsDirectoryPath, json, callback) {
8
- const file = File.fromJSON(json);
8
+ const file = File.fromJSON(json),
9
+ success = saveFileEx(file, projectsDirectoryPath);
9
10
 
10
- saveFileEx(file, projectsDirectoryPath);
11
-
12
- json = {}; ///
11
+ json = success;
13
12
 
14
13
  callback(json);
15
14
  }
package/src/saveFiles.js CHANGED
@@ -5,11 +5,10 @@ import Files from "./files";
5
5
  import { saveFiles as saveFilesEx } from "./utilities/fileSystem"
6
6
 
7
7
  export default function saveFiles(projectsDirectoryPath, json, callback) {
8
- const files = Files.fromJSON(json);
8
+ const files = Files.fromJSON(json),
9
+ successes = saveFilesEx(files, projectsDirectoryPath);
9
10
 
10
- saveFilesEx(files, projectsDirectoryPath);
11
-
12
- json = {}; ///
11
+ json = successes;
13
12
 
14
13
  callback(json);
15
14
  }
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import mkdirp from "mkdirp";
4
-
5
3
  import { arrayUtilities, pathUtilities, fileSystemUtilities } from "necessary";
6
4
 
7
5
  import File from "../file";
@@ -18,8 +16,8 @@ import { isFilePathRecognisedFilePath } from "../utilities/filePath";
18
16
  import { convertContentTabsToWhitespace } from "../utilities/content";
19
17
 
20
18
  const { first } = arrayUtilities,
21
- { readFile, writeFile, isEntryFile, readDirectory, isEntryDirectory } = fileSystemUtilities,
22
- { concatenatePaths, topmostDirectoryNameFromPath, topmostDirectoryPathFromPath } = pathUtilities;
19
+ { concatenatePaths, topmostDirectoryNameFromPath, topmostDirectoryPathFromPath } = pathUtilities,
20
+ { readFile, writeFile, isEntryFile, readDirectory, isEntryDirectory, checkEntryExists: checkFileExists } = fileSystemUtilities;
23
21
 
24
22
  export function loadFile(path, projectsDirectoryPath) {
25
23
  let file = null;
@@ -43,14 +41,26 @@ export function loadFile(path, projectsDirectoryPath) {
43
41
  }
44
42
 
45
43
  export function saveFile(file, projectsDirectoryPath) {
46
- const path = file.getPath(),
47
- content = file.getContent(),
48
- absolutePath = concatenatePaths(projectsDirectoryPath, path),
49
- topmostAbsoluteDirectoryPath = topmostDirectoryPathFromPath(absolutePath);
44
+ let success = false;
45
+
46
+ const filePath = file.getPath(),
47
+ absoluteFilePath = concatenatePaths(projectsDirectoryPath, filePath),
48
+ fileExists = checkFileExists(absoluteFilePath);
49
+
50
+ if (fileExists) {
51
+ const filePath = absoluteFilePath, ///
52
+ content = file.getContent();
53
+
54
+ try {
55
+ writeFile(filePath, content);
56
+ } catch (error) {
57
+ ///
58
+ }
50
59
 
51
- mkdirp.sync(topmostAbsoluteDirectoryPath);
60
+ success = true;
61
+ }
52
62
 
53
- writeFile(absolutePath, content);
63
+ return success;
54
64
  }
55
65
 
56
66
  export function loadFiles(paths, projectsDirectoryPath) {
@@ -81,9 +91,13 @@ export function loadFiles(paths, projectsDirectoryPath) {
81
91
  }
82
92
 
83
93
  export function saveFiles(files, projectsDirectoryPath) {
84
- files.forEachFile((file) => {
85
- saveFile(file, projectsDirectoryPath);
94
+ const successes = files.mapFile((file) => {
95
+ const success = saveFile(file, projectsDirectoryPath);
96
+
97
+ return success;
86
98
  });
99
+
100
+ return successes;
87
101
  }
88
102
 
89
103
  export function loadRelease(releaseName, projectsDirectoryPath) {