occam-server 2.0.1 → 7.0.5

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.
Files changed (73) hide show
  1. package/.swcrc +5 -0
  2. package/README.md +40 -30
  3. package/lib/constants.js +26 -0
  4. package/lib/createProjectEntries.js +63 -0
  5. package/lib/index.js +75 -0
  6. package/lib/loadFile.js +18 -0
  7. package/lib/loadFiles.js +18 -0
  8. package/lib/loadProject.js +18 -0
  9. package/lib/loadProjects.js +18 -0
  10. package/lib/loadRelease.js +18 -0
  11. package/lib/loadReleases.js +18 -0
  12. package/lib/moveProjectEntries.js +77 -0
  13. package/lib/removeProjectEntries.js +68 -0
  14. package/lib/removeRelease.js +32 -0
  15. package/lib/renameProjectEntries.js +74 -0
  16. package/lib/saveFile.js +19 -0
  17. package/lib/utilities/fileSystem.js +255 -0
  18. package/lib/utilities/http.js +76 -0
  19. package/lib/utilities/name.js +16 -0
  20. package/lib/utilities/pathMap.js +58 -0
  21. package/license.txt +48 -0
  22. package/package.json +20 -22
  23. package/src/constants.js +5 -0
  24. package/src/createProjectEntries.js +71 -0
  25. package/src/index.js +16 -0
  26. package/src/loadFile.js +15 -0
  27. package/src/loadFiles.js +15 -0
  28. package/src/loadProject.js +15 -0
  29. package/src/loadProjects.js +14 -0
  30. package/src/loadRelease.js +14 -0
  31. package/src/loadReleases.js +13 -0
  32. package/src/moveProjectEntries.js +102 -0
  33. package/src/removeProjectEntries.js +79 -0
  34. package/src/removeRelease.js +35 -0
  35. package/src/renameProjectEntries.js +101 -0
  36. package/src/saveFile.js +14 -0
  37. package/src/utilities/fileSystem.js +364 -0
  38. package/src/utilities/http.js +71 -0
  39. package/src/utilities/name.js +7 -0
  40. package/src/utilities/pathMap.js +39 -0
  41. package/es6/handler/importProject.js +0 -23
  42. package/es6/handler/loadFile.js +0 -27
  43. package/es6/handler/loadFiles.js +0 -25
  44. package/es6/handler/loadProjects.js +0 -29
  45. package/es6/handler/moveProjectEntries.js +0 -24
  46. package/es6/handler/removeProjectEntries.js +0 -24
  47. package/es6/handler/saveFile.js +0 -26
  48. package/es6/handler/saveFiles.js +0 -26
  49. package/es6/handlers.js +0 -67
  50. package/es6/httpResponse.js +0 -46
  51. package/es6/main.js +0 -36
  52. package/es6/middleware/error.js +0 -11
  53. package/es6/paths.js +0 -7
  54. package/es6/routers.js +0 -47
  55. package/es6/uris.js +0 -25
  56. package/es6/utilities/query.js +0 -15
  57. package/index.js +0 -3
  58. package/lib/handler/importProject.js +0 -26
  59. package/lib/handler/loadFile.js +0 -29
  60. package/lib/handler/loadFiles.js +0 -28
  61. package/lib/handler/loadProjects.js +0 -31
  62. package/lib/handler/moveProjectEntries.js +0 -29
  63. package/lib/handler/removeProjectEntries.js +0 -29
  64. package/lib/handler/saveFile.js +0 -31
  65. package/lib/handler/saveFiles.js +0 -31
  66. package/lib/handlers.js +0 -81
  67. package/lib/httpResponse.js +0 -47
  68. package/lib/main.js +0 -41
  69. package/lib/middleware/error.js +0 -12
  70. package/lib/paths.js +0 -8
  71. package/lib/routers.js +0 -52
  72. package/lib/uris.js +0 -26
  73. package/lib/utilities/query.js +0 -16
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get default () {
13
+ return renameProjectEntries;
14
+ },
15
+ get renameProjectEntry () {
16
+ return renameProjectEntry;
17
+ }
18
+ });
19
+ var _necessary = require("necessary");
20
+ var _pathMap = require("./utilities/pathMap");
21
+ var last = _necessary.arrayUtilities.last, concatenatePaths = _necessary.pathUtilities.concatenatePaths, renameEntry = _necessary.fileSystemUtilities.renameEntry, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists, checkFileExists = _necessary.fileSystemUtilities.checkEntryExists, checkDirectoryExists = _necessary.fileSystemUtilities.checkEntryExists;
22
+ function renameProjectEntries(projectsDirectoryPath, json, callback) {
23
+ var pathMaps = json.pathMaps, lastPathMap = last(pathMaps), pathMap = lastPathMap; ///
24
+ renameProjectEntry(projectsDirectoryPath, pathMap);
25
+ var targetEntryPath = pathMap.targetEntryPath;
26
+ if (targetEntryPath === null) {
27
+ (0, _pathMap.nullifyTargetEntryPaths)(pathMaps);
28
+ }
29
+ json = {
30
+ pathMaps: pathMaps
31
+ };
32
+ callback(json);
33
+ }
34
+ function renameProjectEntry(projectsDirectoryPath, pathMap) {
35
+ var targetEntryPath = pathMap.targetEntryPath;
36
+ if (targetEntryPath === null) {
37
+ return;
38
+ }
39
+ var sourceEntryPath = pathMap.sourceEntryPath, absoluteSourceEntryPath = concatenatePaths(projectsDirectoryPath, sourceEntryPath), sourceEntryExists = checkEntryExists(absoluteSourceEntryPath);
40
+ if (!sourceEntryExists) {
41
+ (0, _pathMap.nullifyTargetEntryPath)(pathMap);
42
+ return;
43
+ }
44
+ var entryDirectory = pathMap.entryDirectory;
45
+ entryDirectory ? renameProjectDirectory(projectsDirectoryPath, pathMap) : renameProjectFile(projectsDirectoryPath, pathMap);
46
+ }
47
+ function renameProjectFile(projectsDirectoryPath, pathMap) {
48
+ var sourceEntryPath = pathMap.sourceEntryPath, targetEntryPath = pathMap.targetEntryPath, sourceFilePath = sourceEntryPath, targetFilePath = targetEntryPath, absoluteSourceFilePath = concatenatePaths(projectsDirectoryPath, sourceFilePath), absoluteTargetFilePath = concatenatePaths(projectsDirectoryPath, targetFilePath), targetFileExists = checkFileExists(absoluteTargetFilePath);
49
+ if (targetFileExists) {
50
+ (0, _pathMap.nullifyEntryPaths)(pathMap);
51
+ return;
52
+ }
53
+ try {
54
+ var oldEntryPath = absoluteSourceFilePath, newEntryPath = absoluteTargetFilePath; ///
55
+ renameEntry(oldEntryPath, newEntryPath); ///
56
+ } catch (error) {
57
+ (0, _pathMap.nullifyEntryPaths)(pathMap);
58
+ }
59
+ }
60
+ function renameProjectDirectory(projectsDirectoryPath, pathMap) {
61
+ var sourceEntryPath = pathMap.sourceEntryPath, targetEntryPath = pathMap.targetEntryPath, sourceDirectoryPath = sourceEntryPath, targetDirectoryPath = targetEntryPath, absoluteSourceDirectoryPath = concatenatePaths(projectsDirectoryPath, sourceDirectoryPath), absoluteTargetDirectoryPath = concatenatePaths(projectsDirectoryPath, targetDirectoryPath), targetDirectoryExists = checkDirectoryExists(absoluteTargetDirectoryPath);
62
+ if (targetDirectoryExists) {
63
+ (0, _pathMap.nullifyEntryPaths)(pathMap);
64
+ return;
65
+ }
66
+ try {
67
+ var oldEntryPath = absoluteSourceDirectoryPath, newEntryPath = absoluteTargetDirectoryPath; ///
68
+ renameEntry(oldEntryPath, newEntryPath); ///
69
+ } catch (error) {
70
+ (0, _pathMap.nullifyEntryPaths)(pathMap);
71
+ }
72
+ }
73
+
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5hbWVQcm9qZWN0RW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgYXJyYXlVdGlsaXRpZXMsIGZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IG51bGxpZnlFbnRyeVBhdGhzLCBudWxsaWZ5VGFyZ2V0RW50cnlQYXRoLCBudWxsaWZ5VGFyZ2V0RW50cnlQYXRocyB9IGZyb20gXCIuL3V0aWxpdGllcy9wYXRoTWFwXCI7XG5cbmNvbnN0IHsgbGFzdCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGNvbmNhdGVuYXRlUGF0aHMgfSA9IHBhdGhVdGlsaXRpZXMsXG4gICAgICB7IHJlbmFtZUVudHJ5LCBjaGVja0VudHJ5RXhpc3RzLCBjaGVja0VudHJ5RXhpc3RzOiBjaGVja0ZpbGVFeGlzdHMsIGNoZWNrRW50cnlFeGlzdHM6IGNoZWNrRGlyZWN0b3J5RXhpc3RzIH0gPSBmaWxlU3lzdGVtVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW5hbWVQcm9qZWN0RW50cmllcyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHsgcGF0aE1hcHMgfSA9IGpzb24sXG4gICAgICAgIGxhc3RQYXRoTWFwID0gbGFzdChwYXRoTWFwcyksXG4gICAgICAgIHBhdGhNYXAgPSBsYXN0UGF0aE1hcDsgLy8vXG5cbiAgcmVuYW1lUHJvamVjdEVudHJ5KHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aE1hcCk7XG5cbiAgY29uc3QgeyB0YXJnZXRFbnRyeVBhdGggfSA9IHBhdGhNYXA7XG5cbiAgaWYgKHRhcmdldEVudHJ5UGF0aCA9PT0gbnVsbCkge1xuICAgIG51bGxpZnlUYXJnZXRFbnRyeVBhdGhzKHBhdGhNYXBzKTtcbiAgfVxuXG4gIGpzb24gPSB7XG4gICAgcGF0aE1hcHNcbiAgfTtcblxuICBjYWxsYmFjayhqc29uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZVByb2plY3RFbnRyeShwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGhNYXApIHtcbiAgY29uc3QgeyB0YXJnZXRFbnRyeVBhdGggfSA9IHBhdGhNYXA7XG5cbiAgaWYgKHRhcmdldEVudHJ5UGF0aCA9PT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgc291cmNlRW50cnlQYXRoIH0gPSBwYXRoTWFwLFxuICAgICAgICBhYnNvbHV0ZVNvdXJjZUVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzb3VyY2VFbnRyeVBhdGgpLFxuICAgICAgICBzb3VyY2VFbnRyeUV4aXN0cyA9IGNoZWNrRW50cnlFeGlzdHMoYWJzb2x1dGVTb3VyY2VFbnRyeVBhdGgpO1xuXG4gIGlmICghc291cmNlRW50cnlFeGlzdHMpIHtcbiAgICBudWxsaWZ5VGFyZ2V0RW50cnlQYXRoKHBhdGhNYXApO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgeyBlbnRyeURpcmVjdG9yeSB9ID0gcGF0aE1hcDtcblxuICBlbnRyeURpcmVjdG9yeSA/XG4gICAgcmVuYW1lUHJvamVjdERpcmVjdG9yeShwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGhNYXApIDpcbiAgICAgIHJlbmFtZVByb2plY3RGaWxlKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aE1hcCk7XG59XG5cbmZ1bmN0aW9uIHJlbmFtZVByb2plY3RGaWxlKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aE1hcCkge1xuICBjb25zdCB7IHNvdXJjZUVudHJ5UGF0aCwgdGFyZ2V0RW50cnlQYXRoIH0gPSBwYXRoTWFwLFxuICAgICAgICBzb3VyY2VGaWxlUGF0aCA9IHNvdXJjZUVudHJ5UGF0aCwgLy8vXG4gICAgICAgIHRhcmdldEZpbGVQYXRoID0gdGFyZ2V0RW50cnlQYXRoLCAvLy9cbiAgICAgICAgYWJzb2x1dGVTb3VyY2VGaWxlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzb3VyY2VGaWxlUGF0aCksXG4gICAgICAgIGFic29sdXRlVGFyZ2V0RmlsZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgdGFyZ2V0RmlsZVBhdGgpLFxuICAgICAgICB0YXJnZXRGaWxlRXhpc3RzID0gY2hlY2tGaWxlRXhpc3RzKGFic29sdXRlVGFyZ2V0RmlsZVBhdGgpO1xuXG4gIGlmICh0YXJnZXRGaWxlRXhpc3RzKSB7XG4gICAgbnVsbGlmeUVudHJ5UGF0aHMocGF0aE1hcCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IG9sZEVudHJ5UGF0aCA9IGFic29sdXRlU291cmNlRmlsZVBhdGgsIC8vL1xuICAgICAgICAgIG5ld0VudHJ5UGF0aCA9IGFic29sdXRlVGFyZ2V0RmlsZVBhdGg7IC8vL1xuXG4gICAgcmVuYW1lRW50cnkob2xkRW50cnlQYXRoLCBuZXdFbnRyeVBhdGgpOyAgLy8vXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbnVsbGlmeUVudHJ5UGF0aHMocGF0aE1hcCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuYW1lUHJvamVjdERpcmVjdG9yeShwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGhNYXApIHtcbiAgY29uc3QgeyBzb3VyY2VFbnRyeVBhdGgsIHRhcmdldEVudHJ5UGF0aCB9ID0gcGF0aE1hcCxcbiAgICAgICAgc291cmNlRGlyZWN0b3J5UGF0aCA9IHNvdXJjZUVudHJ5UGF0aCwgLy8vXG4gICAgICAgIHRhcmdldERpcmVjdG9yeVBhdGggPSB0YXJnZXRFbnRyeVBhdGgsIC8vL1xuICAgICAgICBhYnNvbHV0ZVNvdXJjZURpcmVjdG9yeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc291cmNlRGlyZWN0b3J5UGF0aCksXG4gICAgICAgIGFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCB0YXJnZXREaXJlY3RvcnlQYXRoKSxcbiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5RXhpc3RzID0gY2hlY2tEaXJlY3RvcnlFeGlzdHMoYWJzb2x1dGVUYXJnZXREaXJlY3RvcnlQYXRoKTtcblxuICBpZiAodGFyZ2V0RGlyZWN0b3J5RXhpc3RzKSB7XG4gICAgbnVsbGlmeUVudHJ5UGF0aHMocGF0aE1hcCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IG9sZEVudHJ5UGF0aCA9IGFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCwgLy8vXG4gICAgICAgICAgbmV3RW50cnlQYXRoID0gYWJzb2x1dGVUYXJnZXREaXJlY3RvcnlQYXRoOyAvLy9cblxuICAgIHJlbmFtZUVudHJ5KG9sZEVudHJ5UGF0aCwgbmV3RW50cnlQYXRoKTsgIC8vL1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIG51bGxpZnlFbnRyeVBhdGhzKHBhdGhNYXApO1xuICB9XG59XG4iXSwibmFtZXMiOlsicmVuYW1lUHJvamVjdEVudHJpZXMiLCJyZW5hbWVQcm9qZWN0RW50cnkiLCJsYXN0IiwiYXJyYXlVdGlsaXRpZXMiLCJjb25jYXRlbmF0ZVBhdGhzIiwicGF0aFV0aWxpdGllcyIsInJlbmFtZUVudHJ5IiwiZmlsZVN5c3RlbVV0aWxpdGllcyIsImNoZWNrRW50cnlFeGlzdHMiLCJjaGVja0ZpbGVFeGlzdHMiLCJjaGVja0RpcmVjdG9yeUV4aXN0cyIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsImpzb24iLCJjYWxsYmFjayIsInBhdGhNYXBzIiwibGFzdFBhdGhNYXAiLCJwYXRoTWFwIiwidGFyZ2V0RW50cnlQYXRoIiwibnVsbGlmeVRhcmdldEVudHJ5UGF0aHMiLCJzb3VyY2VFbnRyeVBhdGgiLCJhYnNvbHV0ZVNvdXJjZUVudHJ5UGF0aCIsInNvdXJjZUVudHJ5RXhpc3RzIiwibnVsbGlmeVRhcmdldEVudHJ5UGF0aCIsImVudHJ5RGlyZWN0b3J5IiwicmVuYW1lUHJvamVjdERpcmVjdG9yeSIsInJlbmFtZVByb2plY3RGaWxlIiwic291cmNlRmlsZVBhdGgiLCJ0YXJnZXRGaWxlUGF0aCIsImFic29sdXRlU291cmNlRmlsZVBhdGgiLCJhYnNvbHV0ZVRhcmdldEZpbGVQYXRoIiwidGFyZ2V0RmlsZUV4aXN0cyIsIm51bGxpZnlFbnRyeVBhdGhzIiwib2xkRW50cnlQYXRoIiwibmV3RW50cnlQYXRoIiwiZXJyb3IiLCJzb3VyY2VEaXJlY3RvcnlQYXRoIiwidGFyZ2V0RGlyZWN0b3J5UGF0aCIsImFic29sdXRlU291cmNlRGlyZWN0b3J5UGF0aCIsImFic29sdXRlVGFyZ2V0RGlyZWN0b3J5UGF0aCIsInRhcmdldERpcmVjdG9yeUV4aXN0cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBVUE7ZUFBd0JBOztRQW9CUkM7ZUFBQUE7Ozt5QkE1Qm1EO3VCQUVnQjtBQUVuRixJQUFNLEFBQUVDLE9BQVNDLHlCQUFjLENBQXZCRCxNQUNGLEFBQUVFLG1CQUFxQkMsd0JBQWEsQ0FBbENELGtCQUNBRSxjQUE2R0MsOEJBQW1CLENBQWhJRCxhQUFhRSxtQkFBZ0dELDhCQUFtQixDQUFuSEMsa0JBQWtCQSxBQUFrQkMsa0JBQTRERiw4QkFBbUIsQ0FBakdDLGtCQUFtQ0EsQUFBa0JFLHVCQUF5QkgsOEJBQW1CLENBQTlEQztBQUUzRCxTQUFTUixxQkFBcUJXLHFCQUFxQixFQUFFQyxJQUFJLEVBQUVDLFFBQVE7SUFDaEYsSUFBTSxBQUFFQyxXQUFhRixLQUFiRSxVQUNGQyxjQUFjYixLQUFLWSxXQUNuQkUsVUFBVUQsYUFBYSxHQUFHO0lBRWhDZCxtQkFBbUJVLHVCQUF1Qks7SUFFMUMsSUFBTSxBQUFFQyxrQkFBb0JELFFBQXBCQztJQUVSLElBQUlBLG9CQUFvQixNQUFNO1FBQzVCQyxJQUFBQSxnQ0FBdUIsRUFBQ0o7SUFDMUI7SUFFQUYsT0FBTztRQUNMRSxVQUFBQTtJQUNGO0lBRUFELFNBQVNEO0FBQ1g7QUFFTyxTQUFTWCxtQkFBbUJVLHFCQUFxQixFQUFFSyxPQUFPO0lBQy9ELElBQU0sQUFBRUMsa0JBQW9CRCxRQUFwQkM7SUFFUixJQUFJQSxvQkFBb0IsTUFBTTtRQUM1QjtJQUNGO0lBRUEsSUFBTSxBQUFFRSxrQkFBb0JILFFBQXBCRyxpQkFDRkMsMEJBQTBCaEIsaUJBQWlCTyx1QkFBdUJRLGtCQUNsRUUsb0JBQW9CYixpQkFBaUJZO0lBRTNDLElBQUksQ0FBQ0MsbUJBQW1CO1FBQ3RCQyxJQUFBQSwrQkFBc0IsRUFBQ047UUFFdkI7SUFDRjtJQUVBLElBQU0sQUFBRU8saUJBQW1CUCxRQUFuQk87SUFFUkEsaUJBQ0VDLHVCQUF1QmIsdUJBQXVCSyxXQUM1Q1Msa0JBQWtCZCx1QkFBdUJLO0FBQy9DO0FBRUEsU0FBU1Msa0JBQWtCZCxxQkFBcUIsRUFBRUssT0FBTztJQUN2RCxJQUFRRyxrQkFBcUNILFFBQXJDRyxpQkFBaUJGLGtCQUFvQkQsUUFBcEJDLGlCQUNuQlMsaUJBQWlCUCxpQkFDakJRLGlCQUFpQlYsaUJBQ2pCVyx5QkFBeUJ4QixpQkFBaUJPLHVCQUF1QmUsaUJBQ2pFRyx5QkFBeUJ6QixpQkFBaUJPLHVCQUF1QmdCLGlCQUNqRUcsbUJBQW1CckIsZ0JBQWdCb0I7SUFFekMsSUFBSUMsa0JBQWtCO1FBQ3BCQyxJQUFBQSwwQkFBaUIsRUFBQ2Y7UUFFbEI7SUFDRjtJQUVBLElBQUk7UUFDRixJQUFNZ0IsZUFBZUosd0JBQ2ZLLGVBQWVKLHdCQUF3QixHQUFHO1FBRWhEdkIsWUFBWTBCLGNBQWNDLGVBQWdCLEdBQUc7SUFDL0MsRUFBRSxPQUFPQyxPQUFPO1FBQ2RILElBQUFBLDBCQUFpQixFQUFDZjtJQUNwQjtBQUNGO0FBRUEsU0FBU1EsdUJBQXVCYixxQkFBcUIsRUFBRUssT0FBTztJQUM1RCxJQUFRRyxrQkFBcUNILFFBQXJDRyxpQkFBaUJGLGtCQUFvQkQsUUFBcEJDLGlCQUNuQmtCLHNCQUFzQmhCLGlCQUN0QmlCLHNCQUFzQm5CLGlCQUN0Qm9CLDhCQUE4QmpDLGlCQUFpQk8sdUJBQXVCd0Isc0JBQ3RFRyw4QkFBOEJsQyxpQkFBaUJPLHVCQUF1QnlCLHNCQUN0RUcsd0JBQXdCN0IscUJBQXFCNEI7SUFFbkQsSUFBSUMsdUJBQXVCO1FBQ3pCUixJQUFBQSwwQkFBaUIsRUFBQ2Y7UUFFbEI7SUFDRjtJQUVBLElBQUk7UUFDRixJQUFNZ0IsZUFBZUssNkJBQ2ZKLGVBQWVLLDZCQUE2QixHQUFHO1FBRXJEaEMsWUFBWTBCLGNBQWNDLGVBQWdCLEdBQUc7SUFDL0MsRUFBRSxPQUFPQyxPQUFPO1FBQ2RILElBQUFBLDBCQUFpQixFQUFDZjtJQUNwQjtBQUNGIn0=
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return saveFile;
9
+ }
10
+ });
11
+ var _occammodel = require("occam-model");
12
+ var _fileSystem = require("./utilities/fileSystem");
13
+ function saveFile(projectsDirectoryPath, json, callback) {
14
+ var file = _occammodel.File.fromJSON(json), success = (0, _fileSystem.saveFile)(file, projectsDirectoryPath);
15
+ json = success; ///
16
+ callback(json);
17
+ }
18
+
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zYXZlRmlsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRmlsZSB9IGZyb20gXCJvY2NhbS1tb2RlbFwiO1xuXG5pbXBvcnQgeyBzYXZlRmlsZSBhcyBzYXZlRmlsZUV4IH0gZnJvbSBcIi4vdXRpbGl0aWVzL2ZpbGVTeXN0ZW1cIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzYXZlRmlsZShwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGpzb24sIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZpbGUgPSBGaWxlLmZyb21KU09OKGpzb24pLFxuICAgICAgICBzdWNjZXNzID0gc2F2ZUZpbGVFeChmaWxlLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xuXG4gIGpzb24gPSBzdWNjZXNzOyAvLy9cblxuICBjYWxsYmFjayhqc29uKTtcbn1cbiJdLCJuYW1lcyI6WyJzYXZlRmlsZSIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsImpzb24iLCJjYWxsYmFjayIsImZpbGUiLCJGaWxlIiwiZnJvbUpTT04iLCJzdWNjZXNzIiwic2F2ZUZpbGVFeCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUF3QkE7OzswQkFKSDswQkFFa0I7QUFFeEIsU0FBU0EsU0FBU0MscUJBQXFCLEVBQUVDLElBQUksRUFBRUMsUUFBUTtJQUNwRSxJQUFNQyxPQUFPQyxnQkFBSSxDQUFDQyxRQUFRLENBQUNKLE9BQ3JCSyxVQUFVQyxJQUFBQSxvQkFBVSxFQUFDSixNQUFNSDtJQUVqQ0MsT0FBT0ssU0FBUyxHQUFHO0lBRW5CSixTQUFTRDtBQUNYIn0=
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get default () {
13
+ return _default;
14
+ },
15
+ get loadFile () {
16
+ return loadFile;
17
+ },
18
+ get loadFiles () {
19
+ return loadFiles;
20
+ },
21
+ get loadProject () {
22
+ return loadProject;
23
+ },
24
+ get loadProjects () {
25
+ return loadProjects;
26
+ },
27
+ get loadRelease () {
28
+ return loadRelease;
29
+ },
30
+ get loadReleases () {
31
+ return loadReleases;
32
+ },
33
+ get saveFile () {
34
+ return saveFile;
35
+ }
36
+ });
37
+ var _necessary = require("necessary");
38
+ var _occammodel = require("occam-model");
39
+ var _name = require("../utilities/name");
40
+ var first = _necessary.arrayUtilities.first, isFilePathRecognisedFilePath = _occammodel.filePathUtilities.isFilePathRecognisedFilePath, concatenatePaths = _necessary.pathUtilities.concatenatePaths, topmostDirectoryNameFromPath = _necessary.pathUtilities.topmostDirectoryNameFromPath, readFile = _necessary.fileSystemUtilities.readFile, writeFile = _necessary.fileSystemUtilities.writeFile, isEntryFile = _necessary.fileSystemUtilities.isEntryFile, readDirectory = _necessary.fileSystemUtilities.readDirectory, isEntryDirectory = _necessary.fileSystemUtilities.isEntryDirectory, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists, checkFileExists = _necessary.fileSystemUtilities.checkEntryExists;
41
+ function loadFile(path, projectsDirectoryPath) {
42
+ var file = null;
43
+ try {
44
+ var topmostDirectoryName = topmostDirectoryNameFromPath(path);
45
+ if (topmostDirectoryName !== null) {
46
+ var absolutePath = concatenatePaths(projectsDirectoryPath, topmostDirectoryName), entryDirectory = isEntryDirectory(absolutePath);
47
+ file = entryDirectory ? fileFromProject(path, projectsDirectoryPath) : fileFromRelease(path, projectsDirectoryPath);
48
+ }
49
+ } catch (error) {
50
+ ///
51
+ }
52
+ return file;
53
+ }
54
+ function saveFile(file, projectsDirectoryPath) {
55
+ var success = false;
56
+ var filePath = file.getPath(), absoluteFilePath = concatenatePaths(projectsDirectoryPath, filePath), fileExists = checkFileExists(absoluteFilePath);
57
+ if (fileExists) {
58
+ var filePath1 = absoluteFilePath, content = file.getContent();
59
+ try {
60
+ writeFile(filePath1, content);
61
+ } catch (error) {
62
+ ///
63
+ }
64
+ success = true;
65
+ }
66
+ return success;
67
+ }
68
+ function loadFiles(paths, projectsDirectoryPath) {
69
+ var files;
70
+ try {
71
+ files = _occammodel.Files.fromNothing();
72
+ var pathsLength = paths.length;
73
+ if (pathsLength > 0) {
74
+ var firstPath = first(paths), path = firstPath, topmostDirectoryName = topmostDirectoryNameFromPath(path);
75
+ if (topmostDirectoryName !== null) {
76
+ var absolutePath = concatenatePaths(projectsDirectoryPath, topmostDirectoryName), entryExists = checkEntryExists(absolutePath);
77
+ if (entryExists) {
78
+ var entryDirectory = isEntryDirectory(absolutePath);
79
+ files = entryDirectory ? filesFromProject(paths, projectsDirectoryPath) : filesFromRelease(paths, projectsDirectoryPath);
80
+ }
81
+ }
82
+ }
83
+ } catch (error) {
84
+ files = null;
85
+ }
86
+ return files;
87
+ }
88
+ function loadRelease(releaseName, projectsDirectoryPath) {
89
+ var release = null;
90
+ try {
91
+ var name = releaseName, topmostFileName = releaseName, absolutePath = concatenatePaths(projectsDirectoryPath, topmostFileName), entryFile = isEntryFile(absolutePath);
92
+ if (entryFile) {
93
+ var json, entries;
94
+ var content = readFile(absolutePath);
95
+ json = JSON.parse(content);
96
+ entries = json.entries;
97
+ json = entries; ///
98
+ entries = _occammodel.Entries.fromJSON(json);
99
+ release = _occammodel.Release.fromNameAndEntries(name, entries);
100
+ }
101
+ } catch (error) {
102
+ ///
103
+ }
104
+ return release;
105
+ }
106
+ function loadProject(projectName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
107
+ var project = null;
108
+ try {
109
+ var name = projectName, topmostDirectoryName = projectName, entries = loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles);
110
+ project = _occammodel.Project.fromNameAndEntries(name, entries);
111
+ } catch (error) {
112
+ ///
113
+ }
114
+ return project;
115
+ }
116
+ function loadReleases(projectsDirectoryPath) {
117
+ var releases;
118
+ try {
119
+ releases = _occammodel.Releases.fromNothing();
120
+ var topmostFileNames = topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath), releaseNames = topmostFileNames; ///
121
+ releaseNames.forEach(function(releaseName) {
122
+ var release = loadRelease(releaseName, projectsDirectoryPath);
123
+ if (release !== null) {
124
+ releases.addRelease(release);
125
+ }
126
+ });
127
+ } catch (error) {
128
+ releases = null;
129
+ }
130
+ return releases;
131
+ }
132
+ function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles) {
133
+ var projects;
134
+ try {
135
+ projects = _occammodel.Projects.fromNothing();
136
+ var topmostDirectoryNames = topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath), projectNames = topmostDirectoryNames; ///
137
+ projectNames.forEach(function(projectName) {
138
+ var project = loadProject(projectName, projectsDirectoryPath, loadOnlyRecognisedFiles);
139
+ if (project !== null) {
140
+ projects.addProject(project);
141
+ }
142
+ });
143
+ } catch (error) {
144
+ projects = null;
145
+ }
146
+ return projects;
147
+ }
148
+ var _default = {
149
+ loadFile: loadFile,
150
+ saveFile: saveFile,
151
+ loadFiles: loadFiles,
152
+ loadRelease: loadRelease,
153
+ loadProject: loadProject,
154
+ loadReleases: loadReleases,
155
+ loadProjects: loadProjects
156
+ };
157
+ function loadEntries(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles) {
158
+ var entries = _occammodel.Entries.fromNothing(), relativeDirectoryPath = topmostDirectoryName; ///
159
+ entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles);
160
+ return entries;
161
+ }
162
+ function loadDirectory(path, projectsDirectoryPath) {
163
+ var absolutePath = concatenatePaths(projectsDirectoryPath, path), entryDirectory = isEntryDirectory(absolutePath), directory = entryDirectory ? _occammodel.Directory.fromPath(path) : null;
164
+ return directory;
165
+ }
166
+ function fileFromProject(path, projectsDirectoryPath) {
167
+ var file = null;
168
+ var absolutePath = concatenatePaths(projectsDirectoryPath, path), entryFile = isEntryFile(absolutePath);
169
+ if (entryFile) {
170
+ var released = false, content = readFile(absolutePath);
171
+ file = _occammodel.File.fromPathContentAndReleased(path, content, released);
172
+ }
173
+ return file;
174
+ }
175
+ function fileFromRelease(path, projectsDirectoryPath) {
176
+ var topmostDirectoryName = topmostDirectoryNameFromPath(path), topmostFileName = topmostDirectoryName, filePath = path, release = loadRelease(topmostFileName, projectsDirectoryPath), file = release.findFile(filePath);
177
+ return file;
178
+ }
179
+ function filesFromProject(paths, projectsDirectoryPath) {
180
+ var files = _occammodel.Files.fromNothing();
181
+ paths.forEach(function(path) {
182
+ var file = fileFromProject(path, projectsDirectoryPath);
183
+ files.addFile(file);
184
+ });
185
+ return files;
186
+ }
187
+ function filesFromRelease(paths, projectsDirectoryPath) {
188
+ var files = _occammodel.Files.fromNothing(), pathsLength = paths.length;
189
+ if (pathsLength > 0) {
190
+ var firstPath = first(paths), path = firstPath, topmostDirectoryName = topmostDirectoryNameFromPath(path), topmostFileName = topmostDirectoryName, release = loadRelease(topmostFileName, projectsDirectoryPath);
191
+ paths.forEach(function(path) {
192
+ var filePath = path, file = release.findFile(filePath);
193
+ files.addFile(file);
194
+ });
195
+ }
196
+ return files;
197
+ }
198
+ function entriesFromRelativeDirectoryPath(entries, relativeDirectoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles) {
199
+ var absoluteDirectoryPath = concatenatePaths(projectsDirectoryPath, relativeDirectoryPath), subEntryNames = readDirectory(absoluteDirectoryPath);
200
+ subEntryNames.forEach(function(subEntryName) {
201
+ var subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName), loadUnrecognisedFilesAndDirectories = !loadOnlyRecognisedFiles;
202
+ if (!subEntryNameHiddenName) {
203
+ var path = concatenatePaths(relativeDirectoryPath, subEntryName), directory = loadDirectory(path, projectsDirectoryPath);
204
+ if (directory !== null) {
205
+ var directoryPath = path; ///
206
+ if (loadUnrecognisedFilesAndDirectories) {
207
+ entries.addDirectory(directory);
208
+ }
209
+ entriesFromRelativeDirectoryPath(entries, directoryPath, projectsDirectoryPath, loadOnlyRecognisedFiles); ///
210
+ } else {
211
+ var file = loadFile(path, projectsDirectoryPath);
212
+ if (file !== null) {
213
+ var filePath = file.getPath(), filePathRecognisedFilePath = isFilePathRecognisedFilePath(filePath), fileRecognisedFile = filePathRecognisedFilePath; ///
214
+ if (fileRecognisedFile || loadUnrecognisedFilesAndDirectories) {
215
+ entries.addFile(file);
216
+ }
217
+ }
218
+ }
219
+ }
220
+ });
221
+ }
222
+ function topmostFileNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
223
+ var topmostFileNames;
224
+ var subEntryNames = readDirectory(projectsDirectoryPath);
225
+ topmostFileNames = subEntryNames.reduce(function(topmostFileNames, subEntryName) {
226
+ var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName);
227
+ if (!subEntryNameHiddenName) {
228
+ var subEntryFile = isEntryFile(absoluteSubEntryPath);
229
+ if (subEntryFile) {
230
+ var topmostFileName = subEntryName; ///
231
+ topmostFileNames.push(topmostFileName);
232
+ }
233
+ }
234
+ return topmostFileNames;
235
+ }, []);
236
+ return topmostFileNames;
237
+ }
238
+ function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath) {
239
+ var topmostDirectoryNames;
240
+ var subEntryNames = readDirectory(projectsDirectoryPath);
241
+ topmostDirectoryNames = subEntryNames.reduce(function(topmostDirectoryNames, subEntryName) {
242
+ var absoluteSubEntryPath = concatenatePaths(projectsDirectoryPath, subEntryName), subEntryNameHiddenName = (0, _name.isNameHiddenName)(subEntryName);
243
+ if (!subEntryNameHiddenName) {
244
+ var subEntryDirectory = isEntryDirectory(absoluteSubEntryPath);
245
+ if (subEntryDirectory) {
246
+ var topmostDirectoryName = subEntryName; ///
247
+ topmostDirectoryNames.push(topmostDirectoryName);
248
+ }
249
+ }
250
+ return topmostDirectoryNames;
251
+ }, []);
252
+ return topmostDirectoryNames;
253
+ }
254
+
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzLCBwYXRoVXRpbGl0aWVzLCBmaWxlU3lzdGVtVXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xyXG5pbXBvcnQgeyBGaWxlLCBGaWxlcywgRW50cmllcywgUHJvamVjdCwgUmVsZWFzZSwgUHJvamVjdHMsIFJlbGVhc2VzLCBEaXJlY3RvcnksIGZpbGVQYXRoVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLW1vZGVsXCI7XHJcblxyXG5pbXBvcnQgeyBpc05hbWVIaWRkZW5OYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9uYW1lXCI7XHJcblxyXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcyxcclxuICAgICAgeyBpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIH0gPSBmaWxlUGF0aFV0aWxpdGllcyxcclxuICAgICAgeyBjb25jYXRlbmF0ZVBhdGhzLCB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIH0gPSBwYXRoVXRpbGl0aWVzLFxyXG4gICAgICB7IHJlYWRGaWxlLFxyXG4gICAgICAgIHdyaXRlRmlsZSxcclxuICAgICAgICBpc0VudHJ5RmlsZSxcclxuICAgICAgICByZWFkRGlyZWN0b3J5LFxyXG4gICAgICAgIGlzRW50cnlEaXJlY3RvcnksXHJcbiAgICAgICAgY2hlY2tFbnRyeUV4aXN0cyxcclxuICAgICAgICBjaGVja0VudHJ5RXhpc3RzOiBjaGVja0ZpbGVFeGlzdHMgfSA9IGZpbGVTeXN0ZW1VdGlsaXRpZXM7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGUocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IGZpbGUgPSBudWxsO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKHBhdGgpO1xyXG5cclxuICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgdG9wbW9zdERpcmVjdG9yeU5hbWUpLFxyXG4gICAgICAgICAgICBlbnRyeURpcmVjdG9yeSA9IGlzRW50cnlEaXJlY3RvcnkoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICAgIGZpbGUgPSBlbnRyeURpcmVjdG9yeSA/XHJcbiAgICAgICAgICAgICAgIGZpbGVGcm9tUHJvamVjdChwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIDpcclxuICAgICAgICAgICAgICAgICBmaWxlRnJvbVJlbGVhc2UocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmlsZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVGaWxlKGZpbGUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCBzdWNjZXNzID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0IGZpbGVQYXRoID0gZmlsZS5nZXRQYXRoKCksXHJcbiAgICAgICAgYWJzb2x1dGVGaWxlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBmaWxlUGF0aCksXHJcbiAgICAgICAgZmlsZUV4aXN0cyA9IGNoZWNrRmlsZUV4aXN0cyhhYnNvbHV0ZUZpbGVQYXRoKTtcclxuXHJcbiAgaWYgKGZpbGVFeGlzdHMpIHtcclxuICAgIGNvbnN0IGZpbGVQYXRoID0gYWJzb2x1dGVGaWxlUGF0aCwgIC8vL1xyXG4gICAgICAgICAgY29udGVudCA9IGZpbGUuZ2V0Q29udGVudCgpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIHdyaXRlRmlsZShmaWxlUGF0aCwgY29udGVudCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLy9cclxuICAgIH1cclxuXHJcbiAgICBzdWNjZXNzID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJldHVybiBzdWNjZXNzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGVzKHBhdGhzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgZmlsZXM7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBmaWxlcyA9IEZpbGVzLmZyb21Ob3RoaW5nKCk7XHJcblxyXG4gICAgY29uc3QgcGF0aHNMZW5ndGggPSBwYXRocy5sZW5ndGg7XHJcblxyXG4gICAgaWYgKHBhdGhzTGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmaXJzdFBhdGggPSBmaXJzdChwYXRocyksXHJcbiAgICAgICAgICAgIHBhdGggPSBmaXJzdFBhdGgsIC8vL1xyXG4gICAgICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgocGF0aCk7XHJcblxyXG4gICAgICBpZiAodG9wbW9zdERpcmVjdG9yeU5hbWUgIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgdG9wbW9zdERpcmVjdG9yeU5hbWUpLFxyXG4gICAgICAgICAgICAgIGVudHJ5RXhpc3RzID0gY2hlY2tFbnRyeUV4aXN0cyhhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgICAgICBpZiAoZW50cnlFeGlzdHMpIHtcclxuICAgICAgICAgIGNvbnN0IGVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgICAgICAgIGZpbGVzID0gZW50cnlEaXJlY3RvcnkgP1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzRnJvbVByb2plY3QocGF0aHMsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsZXNGcm9tUmVsZWFzZShwYXRocywgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgZmlsZXMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZpbGVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2UocmVsZWFzZU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCByZWxlYXNlID0gbnVsbDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IG5hbWUgPSByZWxlYXNlTmFtZSwgLy8vXHJcbiAgICAgICAgICB0b3Btb3N0RmlsZU5hbWUgPSByZWxlYXNlTmFtZSwgIC8vL1xyXG4gICAgICAgICAgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHRvcG1vc3RGaWxlTmFtZSksXHJcbiAgICAgICAgICBlbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgIGlmIChlbnRyeUZpbGUpIHtcclxuICAgICAgbGV0IGpzb24sXHJcbiAgICAgICAgICBlbnRyaWVzO1xyXG5cclxuICAgICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlKGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgICBqc29uID0gSlNPTi5wYXJzZShjb250ZW50KTtcclxuXHJcbiAgICAgICh7IGVudHJpZXMgfSA9IGpzb24pO1xyXG5cclxuICAgICAganNvbiAgPSBlbnRyaWVzOyAgLy8vXHJcblxyXG4gICAgICBlbnRyaWVzID0gRW50cmllcy5mcm9tSlNPTihqc29uKTtcclxuXHJcbiAgICAgIHJlbGVhc2UgPSBSZWxlYXNlLmZyb21OYW1lQW5kRW50cmllcyhuYW1lLCBlbnRyaWVzKTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVsZWFzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcm9qZWN0KHByb2plY3ROYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKSB7XHJcbiAgbGV0IHByb2plY3QgPSBudWxsO1xyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgbmFtZSA9IHByb2plY3ROYW1lLCAgLy8vXHJcbiAgICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHByb2plY3ROYW1lLCAvLy9cclxuICAgICAgICAgIGVudHJpZXMgPSBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyk7XHJcblxyXG4gICAgcHJvamVjdCA9IFByb2plY3QuZnJvbU5hbWVBbmRFbnRyaWVzKG5hbWUsIGVudHJpZXMpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAvLy9cclxuICB9XHJcblxyXG4gIHJldHVybiBwcm9qZWN0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlbGVhc2VzKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCByZWxlYXNlcztcclxuXHJcbiAgdHJ5IHtcclxuICAgIHJlbGVhc2VzID0gUmVsZWFzZXMuZnJvbU5vdGhpbmcoKTtcclxuXHJcbiAgICBjb25zdCB0b3Btb3N0RmlsZU5hbWVzID0gdG9wbW9zdEZpbGVOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoKSxcclxuICAgICAgICAgIHJlbGVhc2VOYW1lcyA9IHRvcG1vc3RGaWxlTmFtZXM7ICAvLy9cclxuXHJcbiAgICByZWxlYXNlTmFtZXMuZm9yRWFjaCgocmVsZWFzZU5hbWUpID0+IHtcclxuICAgICAgY29uc3QgcmVsZWFzZSA9IGxvYWRSZWxlYXNlKHJlbGVhc2VOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgICAgaWYgKHJlbGVhc2UgIT09IG51bGwpIHtcclxuICAgICAgICByZWxlYXNlcy5hZGRSZWxlYXNlKHJlbGVhc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgcmVsZWFzZXMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlbGVhc2VzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZFByb2plY3RzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMpIHtcclxuICBsZXQgcHJvamVjdHM7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBwcm9qZWN0cyA9IFByb2plY3RzLmZyb21Ob3RoaW5nKCk7XHJcblxyXG4gICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWVzID0gdG9wbW9zdERpcmVjdG9yeU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgpLFxyXG4gICAgICAgICAgcHJvamVjdE5hbWVzID0gdG9wbW9zdERpcmVjdG9yeU5hbWVzOyAvLy9cclxuXHJcbiAgICBwcm9qZWN0TmFtZXMuZm9yRWFjaCgocHJvamVjdE5hbWUpID0+IHtcclxuICAgICAgY29uc3QgcHJvamVjdCA9IGxvYWRQcm9qZWN0KHByb2plY3ROYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKTtcclxuXHJcbiAgICAgIGlmIChwcm9qZWN0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgcHJvamVjdHMuYWRkUHJvamVjdChwcm9qZWN0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHByb2plY3RzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHJldHVybiBwcm9qZWN0cztcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIGxvYWRGaWxlLFxyXG4gIHNhdmVGaWxlLFxyXG4gIGxvYWRGaWxlcyxcclxuICBsb2FkUmVsZWFzZSxcclxuICBsb2FkUHJvamVjdCxcclxuICBsb2FkUmVsZWFzZXMsXHJcbiAgbG9hZFByb2plY3RzXHJcbn07XHJcblxyXG5mdW5jdGlvbiBsb2FkRW50cmllcyh0b3Btb3N0RGlyZWN0b3J5TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcykge1xyXG4gIGNvbnN0IGVudHJpZXMgPSBFbnRyaWVzLmZyb21Ob3RoaW5nKCksXHJcbiAgICAgICAgcmVsYXRpdmVEaXJlY3RvcnlQYXRoID0gdG9wbW9zdERpcmVjdG9yeU5hbWU7ICAvLy9cclxuXHJcbiAgZW50cmllc0Zyb21SZWxhdGl2ZURpcmVjdG9yeVBhdGgoZW50cmllcywgcmVsYXRpdmVEaXJlY3RvcnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzKTtcclxuXHJcbiAgcmV0dXJuIGVudHJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGxvYWREaXJlY3RvcnkocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgYWJzb2x1dGVQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHBhdGgpLFxyXG4gICAgICAgIGVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShhYnNvbHV0ZVBhdGgpLFxyXG4gICAgICAgIGRpcmVjdG9yeSA9IGVudHJ5RGlyZWN0b3J5ID9cclxuICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS5mcm9tUGF0aChwYXRoKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XHJcblxyXG4gIHJldHVybiBkaXJlY3Rvcnk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbGVGcm9tUHJvamVjdChwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgZmlsZSA9IG51bGw7XHJcblxyXG4gIGNvbnN0IGFic29sdXRlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBwYXRoKSxcclxuICAgICAgICBlbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICBpZiAoZW50cnlGaWxlKSB7XHJcbiAgICBjb25zdCByZWxlYXNlZCA9IGZhbHNlLFxyXG4gICAgICAgICAgY29udGVudCA9IHJlYWRGaWxlKGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgZmlsZSA9IEZpbGUuZnJvbVBhdGhDb250ZW50QW5kUmVsZWFzZWQocGF0aCwgY29udGVudCwgcmVsZWFzZWQpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZpbGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbGVGcm9tUmVsZWFzZShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgocGF0aCksXHJcbiAgICAgICAgdG9wbW9zdEZpbGVOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWUsIC8vL1xyXG4gICAgICAgIGZpbGVQYXRoID0gcGF0aCwgIC8vL1xyXG4gICAgICAgIHJlbGVhc2UgPSBsb2FkUmVsZWFzZSh0b3Btb3N0RmlsZU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCksXHJcbiAgICAgICAgZmlsZSA9IHJlbGVhc2UuZmluZEZpbGUoZmlsZVBhdGgpO1xyXG5cclxuICByZXR1cm4gZmlsZTtcclxufVxyXG5cclxuZnVuY3Rpb24gZmlsZXNGcm9tUHJvamVjdChwYXRocywgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgZmlsZXMgPSBGaWxlcy5mcm9tTm90aGluZygpO1xyXG5cclxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gZmlsZUZyb21Qcm9qZWN0KHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgZmlsZXMuYWRkRmlsZShmaWxlKTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGZpbGVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxlc0Zyb21SZWxlYXNlKHBhdGhzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBjb25zdCBmaWxlcyA9IEZpbGVzLmZyb21Ob3RoaW5nKCksXHJcbiAgICAgICAgcGF0aHNMZW5ndGggPSBwYXRocy5sZW5ndGg7XHJcblxyXG4gIGlmIChwYXRoc0xlbmd0aCA+IDApIHtcclxuICAgIGNvbnN0IGZpcnN0UGF0aCA9IGZpcnN0KHBhdGhzKSxcclxuICAgICAgICAgIHBhdGggPSBmaXJzdFBhdGgsIC8vL1xyXG4gICAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKHBhdGgpLFxyXG4gICAgICAgICAgdG9wbW9zdEZpbGVOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWUsIC8vL1xyXG4gICAgICAgICAgcmVsZWFzZSA9IGxvYWRSZWxlYXNlKHRvcG1vc3RGaWxlTmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aCwgIC8vL1xyXG4gICAgICAgICAgICBmaWxlID0gcmVsZWFzZS5maW5kRmlsZShmaWxlUGF0aCk7XHJcblxyXG4gICAgICBmaWxlcy5hZGRGaWxlKGZpbGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmlsZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGVudHJpZXMsIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcykge1xyXG4gIGNvbnN0IGFic29sdXRlRGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCByZWxhdGl2ZURpcmVjdG9yeVBhdGgpLFxyXG4gICAgICAgIHN1YkVudHJ5TmFtZXMgPSByZWFkRGlyZWN0b3J5KGFic29sdXRlRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHN1YkVudHJ5TmFtZXMuZm9yRWFjaCgoc3ViRW50cnlOYW1lKSA9PiB7XHJcbiAgICBjb25zdCBzdWJFbnRyeU5hbWVIaWRkZW5OYW1lID0gaXNOYW1lSGlkZGVuTmFtZShzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgbG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMgPSAhbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXM7XHJcblxyXG4gICAgaWYgKCFzdWJFbnRyeU5hbWVIaWRkZW5OYW1lKSB7XHJcbiAgICAgIGNvbnN0IHBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgICAgZGlyZWN0b3J5ID0gbG9hZERpcmVjdG9yeShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgICAgaWYgKGRpcmVjdG9yeSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGRpcmVjdG9yeVBhdGggPSBwYXRoOyAvLy9cclxuXHJcbiAgICAgICAgaWYgKGxvYWRVbnJlY29nbmlzZWRGaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgICAgICAgICBlbnRyaWVzLmFkZERpcmVjdG9yeShkaXJlY3RvcnkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZW50cmllc0Zyb21SZWxhdGl2ZURpcmVjdG9yeVBhdGgoZW50cmllcywgZGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcyk7IC8vL1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBsb2FkRmlsZShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgICAgICBpZiAoZmlsZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBmaWxlLmdldFBhdGgoKSxcclxuICAgICAgICAgICAgICAgIGZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoID0gaXNGaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aChmaWxlUGF0aCksXHJcbiAgICAgICAgICAgICAgICBmaWxlUmVjb2duaXNlZEZpbGUgPSBmaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aDsgIC8vL1xyXG5cclxuICAgICAgICAgIGlmIChmaWxlUmVjb2duaXNlZEZpbGUgfHwgbG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICAgICAgICAgICAgZW50cmllcy5hZGRGaWxlKGZpbGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b3Btb3N0RmlsZU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgdG9wbW9zdEZpbGVOYW1lcztcclxuXHJcbiAgY29uc3Qgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkocHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgdG9wbW9zdEZpbGVOYW1lcyA9IHN1YkVudHJ5TmFtZXMucmVkdWNlKCh0b3Btb3N0RmlsZU5hbWVzLCBzdWJFbnRyeU5hbWUpID0+IHtcclxuICAgIGNvbnN0IGFic29sdXRlU3ViRW50cnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICBzdWJFbnRyeU5hbWVIaWRkZW5OYW1lID0gaXNOYW1lSGlkZGVuTmFtZShzdWJFbnRyeU5hbWUpO1xyXG5cclxuICAgIGlmICghc3ViRW50cnlOYW1lSGlkZGVuTmFtZSkge1xyXG4gICAgICBjb25zdCBzdWJFbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShhYnNvbHV0ZVN1YkVudHJ5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoc3ViRW50cnlGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgdG9wbW9zdEZpbGVOYW1lID0gc3ViRW50cnlOYW1lOyAgLy8vXHJcblxyXG4gICAgICAgIHRvcG1vc3RGaWxlTmFtZXMucHVzaCh0b3Btb3N0RmlsZU5hbWUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG9wbW9zdEZpbGVOYW1lcztcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiB0b3Btb3N0RmlsZU5hbWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b3Btb3N0RGlyZWN0b3J5TmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoKHByb2plY3RzRGlyZWN0b3J5UGF0aCkge1xyXG4gIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcblxyXG4gIGNvbnN0IHN1YkVudHJ5TmFtZXMgPSByZWFkRGlyZWN0b3J5KHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHRvcG1vc3REaXJlY3RvcnlOYW1lcyA9IHN1YkVudHJ5TmFtZXMucmVkdWNlKCh0b3Btb3N0RGlyZWN0b3J5TmFtZXMsIHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3QgYWJzb2x1dGVTdWJFbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZUhpZGRlbk5hbWUgPSBpc05hbWVIaWRkZW5OYW1lKHN1YkVudHJ5TmFtZSk7XHJcblxyXG4gICAgaWYgKCFzdWJFbnRyeU5hbWVIaWRkZW5OYW1lKSB7XHJcbiAgICAgIGNvbnN0IHN1YkVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShhYnNvbHV0ZVN1YkVudHJ5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoc3ViRW50cnlEaXJlY3RvcnkpIHtcclxuICAgICAgICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IHN1YkVudHJ5TmFtZTsgIC8vL1xyXG5cclxuICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZXMucHVzaCh0b3Btb3N0RGlyZWN0b3J5TmFtZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcbiAgfSwgW10pO1xyXG5cclxuICByZXR1cm4gdG9wbW9zdERpcmVjdG9yeU5hbWVzO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJsb2FkRmlsZSIsImxvYWRGaWxlcyIsImxvYWRQcm9qZWN0IiwibG9hZFByb2plY3RzIiwibG9hZFJlbGVhc2UiLCJsb2FkUmVsZWFzZXMiLCJzYXZlRmlsZSIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIiwiZmlsZVBhdGhVdGlsaXRpZXMiLCJjb25jYXRlbmF0ZVBhdGhzIiwicGF0aFV0aWxpdGllcyIsInRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgiLCJyZWFkRmlsZSIsImZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJ3cml0ZUZpbGUiLCJpc0VudHJ5RmlsZSIsInJlYWREaXJlY3RvcnkiLCJpc0VudHJ5RGlyZWN0b3J5IiwiY2hlY2tFbnRyeUV4aXN0cyIsImNoZWNrRmlsZUV4aXN0cyIsInBhdGgiLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJmaWxlIiwidG9wbW9zdERpcmVjdG9yeU5hbWUiLCJhYnNvbHV0ZVBhdGgiLCJlbnRyeURpcmVjdG9yeSIsImZpbGVGcm9tUHJvamVjdCIsImZpbGVGcm9tUmVsZWFzZSIsImVycm9yIiwic3VjY2VzcyIsImZpbGVQYXRoIiwiZ2V0UGF0aCIsImFic29sdXRlRmlsZVBhdGgiLCJmaWxlRXhpc3RzIiwiY29udGVudCIsImdldENvbnRlbnQiLCJwYXRocyIsImZpbGVzIiwiRmlsZXMiLCJmcm9tTm90aGluZyIsInBhdGhzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RQYXRoIiwiZW50cnlFeGlzdHMiLCJmaWxlc0Zyb21Qcm9qZWN0IiwiZmlsZXNGcm9tUmVsZWFzZSIsInJlbGVhc2VOYW1lIiwicmVsZWFzZSIsIm5hbWUiLCJ0b3Btb3N0RmlsZU5hbWUiLCJlbnRyeUZpbGUiLCJqc29uIiwiZW50cmllcyIsIkpTT04iLCJwYXJzZSIsIkVudHJpZXMiLCJmcm9tSlNPTiIsIlJlbGVhc2UiLCJmcm9tTmFtZUFuZEVudHJpZXMiLCJwcm9qZWN0TmFtZSIsImxvYWRPbmx5UmVjb2duaXNlZEZpbGVzIiwicHJvamVjdCIsImxvYWRFbnRyaWVzIiwiUHJvamVjdCIsInJlbGVhc2VzIiwiUmVsZWFzZXMiLCJ0b3Btb3N0RmlsZU5hbWVzIiwidG9wbW9zdEZpbGVOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJyZWxlYXNlTmFtZXMiLCJmb3JFYWNoIiwiYWRkUmVsZWFzZSIsInByb2plY3RzIiwiUHJvamVjdHMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZXMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoIiwicHJvamVjdE5hbWVzIiwiYWRkUHJvamVjdCIsInJlbGF0aXZlRGlyZWN0b3J5UGF0aCIsImVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoIiwibG9hZERpcmVjdG9yeSIsImRpcmVjdG9yeSIsIkRpcmVjdG9yeSIsImZyb21QYXRoIiwicmVsZWFzZWQiLCJGaWxlIiwiZnJvbVBhdGhDb250ZW50QW5kUmVsZWFzZWQiLCJmaW5kRmlsZSIsImFkZEZpbGUiLCJhYnNvbHV0ZURpcmVjdG9yeVBhdGgiLCJzdWJFbnRyeU5hbWVzIiwic3ViRW50cnlOYW1lIiwic3ViRW50cnlOYW1lSGlkZGVuTmFtZSIsImlzTmFtZUhpZGRlbk5hbWUiLCJsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyIsImRpcmVjdG9yeVBhdGgiLCJhZGREaXJlY3RvcnkiLCJmaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aCIsImZpbGVSZWNvZ25pc2VkRmlsZSIsInJlZHVjZSIsImFic29sdXRlU3ViRW50cnlQYXRoIiwic3ViRW50cnlGaWxlIiwicHVzaCIsInN1YkVudHJ5RGlyZWN0b3J5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE2TEE7ZUFBQTs7UUEzS2dCQTtlQUFBQTs7UUE0Q0FDO2VBQUFBOztRQWlFQUM7ZUFBQUE7O1FBdUNBQztlQUFBQTs7UUF2RUFDO2VBQUFBOztRQWdEQUM7ZUFBQUE7O1FBeEdBQztlQUFBQTs7O3lCQXJDbUQ7MEJBQ3NDO29CQUV4RTtBQUVqQyxJQUFNLEFBQUVDLFFBQVVDLHlCQUFjLENBQXhCRCxPQUNGLEFBQUVFLCtCQUFpQ0MsNkJBQWlCLENBQWxERCw4QkFDQUUsbUJBQW1EQyx3QkFBYSxDQUFoRUQsa0JBQWtCRSwrQkFBaUNELHdCQUFhLENBQTlDQyw4QkFDbEJDLFdBTXNDQyw4QkFBbUIsQ0FOekRELFVBQ0FFLFlBS3NDRCw4QkFBbUIsQ0FMekRDLFdBQ0FDLGNBSXNDRiw4QkFBbUIsQ0FKekRFLGFBQ0FDLGdCQUdzQ0gsOEJBQW1CLENBSHpERyxlQUNBQyxtQkFFc0NKLDhCQUFtQixDQUZ6REksa0JBQ0FDLG1CQUNzQ0wsOEJBQW1CLENBRHpESyxrQkFDQUEsQUFBa0JDLGtCQUFvQk4sOEJBQW1CLENBQXpESztBQUVELFNBQVNwQixTQUFTc0IsSUFBSSxFQUFFQyxxQkFBcUI7SUFDbEQsSUFBSUMsT0FBTztJQUVYLElBQUk7UUFDRixJQUFNQyx1QkFBdUJaLDZCQUE2QlM7UUFFMUQsSUFBSUcseUJBQXlCLE1BQU07WUFDakMsSUFBTUMsZUFBZWYsaUJBQWlCWSx1QkFBdUJFLHVCQUN2REUsaUJBQWlCUixpQkFBaUJPO1lBRXhDRixPQUFPRyxpQkFDRUMsZ0JBQWdC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
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get default () {
13
+ return _default;
14
+ },
15
+ get post () {
16
+ return post;
17
+ }
18
+ });
19
+ var _stream = require("stream");
20
+ var _necessary = require("necessary");
21
+ var _constants = require("../constants");
22
+ function _define_property(obj, key, value) {
23
+ if (key in obj) {
24
+ Object.defineProperty(obj, key, {
25
+ value: value,
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true
29
+ });
30
+ } else {
31
+ obj[key] = value;
32
+ }
33
+ return obj;
34
+ }
35
+ var POST_METHOD = _necessary.methods.POST_METHOD, createRequest = _necessary.requestUtilities.createRequest, OK_200_STATUS_CODE = _necessary.statusCodes.OK_200_STATUS_CODE, ACCEPT_HEADER = _necessary.headers.ACCEPT_HEADER, CONTENT_TYPE_HEADER = _necessary.headers.CONTENT_TYPE_HEADER, APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE = _necessary.contentTypes.APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE;
36
+ function post(host, uri, query, json, callback) {
37
+ var _obj;
38
+ var content = JSON.stringify(json), method = POST_METHOD, _$headers = (_obj = {}, _define_property(_obj, ACCEPT_HEADER, APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE), _define_property(_obj, CONTENT_TYPE_HEADER, APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE), _obj);
39
+ var request = createRequest(host, uri, query, method, _$headers, function(error, response) {
40
+ if (response === null) {
41
+ error = true;
42
+ } else {
43
+ var statusCode = response.statusCode;
44
+ if (statusCode !== OK_200_STATUS_CODE) {
45
+ error = true;
46
+ }
47
+ }
48
+ if (error) {
49
+ var _$json = null;
50
+ callback(_$json);
51
+ return;
52
+ }
53
+ contentFromResponse(response, function(content) {
54
+ var _$json = null;
55
+ try {
56
+ _$json = JSON.parse(content);
57
+ } catch (error) {} ///
58
+ callback(_$json);
59
+ });
60
+ }), readable = _stream.Readable.from(content);
61
+ readable.pipe(request);
62
+ }
63
+ var _default = {
64
+ post: post
65
+ };
66
+ function contentFromResponse(response, callback) {
67
+ var content = _constants.EMPTY_STRING;
68
+ response.on(_constants.DATA, function(data) {
69
+ content += data;
70
+ });
71
+ response.on(_constants.END, function() {
72
+ callback(content);
73
+ });
74
+ }
75
+
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaHR0cC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tIFwic3RyZWFtXCI7XG5cbmltcG9ydCB7IG1ldGhvZHMsIGhlYWRlcnMsIGNvbnRlbnRUeXBlcywgc3RhdHVzQ29kZXMsIHJlcXVlc3RVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IEVORCwgREFUQSwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IFBPU1RfTUVUSE9EIH0gPSBtZXRob2RzLFxuICAgICAgeyBjcmVhdGVSZXF1ZXN0IH0gPSByZXF1ZXN0VXRpbGl0aWVzLFxuICAgICAgeyBPS18yMDBfU1RBVFVTX0NPREUgfSA9IHN0YXR1c0NvZGVzLFxuICAgICAgeyBBQ0NFUFRfSEVBREVSLCBDT05URU5UX1RZUEVfSEVBREVSIH0gPSBoZWFkZXJzLFxuICAgICAgeyBBUFBMSUNBVElPTl9KU09OX0NIQVJTRVRfVVRGXzhfQ09OVEVOVF9UWVBFIH0gPSBjb250ZW50VHlwZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3N0KGhvc3QsIHVyaSwgcXVlcnksIGpzb24sIGNhbGxiYWNrKSB7XG5cdGNvbnN0IGNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShqc29uKSxcdC8vL1xuXHRcdFx0XHRtZXRob2QgPSBQT1NUX01FVEhPRCxcblx0XHRcdFx0aGVhZGVycyA9IHtcbiAgICAgICAgICBbQUNDRVBUX0hFQURFUl06IEFQUExJQ0FUSU9OX0pTT05fQ0hBUlNFVF9VVEZfOF9DT05URU5UX1RZUEUsXG4gICAgICAgICAgW0NPTlRFTlRfVFlQRV9IRUFERVJdOiBBUFBMSUNBVElPTl9KU09OX0NIQVJTRVRfVVRGXzhfQ09OVEVOVF9UWVBFXG4gICAgICAgIH07XG5cblx0Y29uc3QgcmVxdWVzdCA9IGNyZWF0ZVJlcXVlc3QoaG9zdCwgdXJpLCBxdWVyeSwgbWV0aG9kLCBoZWFkZXJzLCAoZXJyb3IsIHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHJlc3BvbnNlID09PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRlcnJvciA9IHRydWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnN0IHsgc3RhdHVzQ29kZSB9ID0gcmVzcG9uc2U7XG5cblx0XHRcdFx0XHRcdGlmIChzdGF0dXNDb2RlICE9PSBPS18yMDBfU1RBVFVTX0NPREUpIHtcblx0XHRcdFx0XHRcdFx0ZXJyb3IgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRcdFx0Y29uc3QganNvbiA9IG51bGw7XG5cblx0XHRcdFx0XHRcdGNhbGxiYWNrKGpzb24pO1xuXG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29udGVudEZyb21SZXNwb25zZShyZXNwb25zZSwgKGNvbnRlbnQpID0+IHtcblx0XHRcdFx0XHRcdGxldCBqc29uID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0anNvbiA9IEpTT04ucGFyc2UoY29udGVudCk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge31cdC8vL1xuXG5cdFx0XHRcdFx0XHRjYWxsYmFjayhqc29uKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdHJlYWRhYmxlID0gUmVhZGFibGUuZnJvbShjb250ZW50KTtcblxuXHRyZWFkYWJsZS5waXBlKHJlcXVlc3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG5cdHBvc3Rcbn07XG5cbmZ1bmN0aW9uIGNvbnRlbnRGcm9tUmVzcG9uc2UocmVzcG9uc2UsIGNhbGxiYWNrKSB7XG5cdGxldCBjb250ZW50ID0gRU1QVFlfU1RSSU5HO1xuXG5cdHJlc3BvbnNlLm9uKERBVEEsIChkYXRhKSA9PiB7XG5cdFx0Y29udGVudCArPSBkYXRhO1xuXHR9KTtcblxuXHRyZXNwb25zZS5vbihFTkQsICgpID0+IHtcblx0XHRjYWxsYmFjayhjb250ZW50KTtcblx0fSk7XG59XG4iXSwibmFtZXMiOlsicG9zdCIsIlBPU1RfTUVUSE9EIiwibWV0aG9kcyIsImNyZWF0ZVJlcXVlc3QiLCJyZXF1ZXN0VXRpbGl0aWVzIiwiT0tfMjAwX1NUQVRVU19DT0RFIiwic3RhdHVzQ29kZXMiLCJBQ0NFUFRfSEVBREVSIiwiaGVhZGVycyIsIkNPTlRFTlRfVFlQRV9IRUFERVIiLCJBUFBMSUNBVElPTl9KU09OX0NIQVJTRVRfVVRGXzhfQ09OVEVOVF9UWVBFIiwiY29udGVudFR5cGVzIiwiaG9zdCIsInVyaSIsInF1ZXJ5IiwianNvbiIsImNhbGxiYWNrIiwiY29udGVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJtZXRob2QiLCJyZXF1ZXN0IiwiZXJyb3IiLCJyZXNwb25zZSIsInN0YXR1c0NvZGUiLCJjb250ZW50RnJvbVJlc3BvbnNlIiwicGFyc2UiLCJyZWFkYWJsZSIsIlJlYWRhYmxlIiwiZnJvbSIsInBpcGUiLCJFTVBUWV9TVFJJTkciLCJvbiIsIkRBVEEiLCJkYXRhIiwiRU5EIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF3REE7ZUFBQTs7UUExQ2dCQTtlQUFBQTs7O3NCQVpTO3lCQUVxRDt5QkFFdEM7Ozs7Ozs7Ozs7Ozs7O0FBRXhDLElBQU0sQUFBRUMsY0FBZ0JDLGtCQUFPLENBQXZCRCxhQUNGLEFBQUVFLGdCQUFrQkMsMkJBQWdCLENBQWxDRCxlQUNGLEFBQUVFLHFCQUF1QkMsc0JBQVcsQ0FBbENELG9CQUNBRSxnQkFBdUNDLGtCQUFPLENBQTlDRCxlQUFlRSxzQkFBd0JELGtCQUFPLENBQS9CQyxxQkFDakIsQUFBRUMsOENBQWdEQyx1QkFBWSxDQUE1REQ7QUFFRCxTQUFTVixLQUFLWSxJQUFJLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLFFBQVE7UUFHdkM7SUFGYixJQUFNQyxVQUFVQyxLQUFLQyxTQUFTLENBQUNKLE9BQzVCSyxTQUFTbkIsYUFDVE8sYUFBVSxXQUNKLGlCQURJLE1BQ0hELGVBQWdCRyw4Q0FDakIsaUJBRkksTUFFSEQscUJBQXNCQyw4Q0FGbkI7SUFLYixJQUFNVyxVQUFVbEIsY0FBY1MsTUFBTUMsS0FBS0MsT0FBT00sUUFBUVosV0FBUyxTQUFDYyxPQUFPQztRQUNyRSxJQUFJQSxhQUFhLE1BQU07WUFDdEJELFFBQVE7UUFDVCxPQUFPO1lBQ04sSUFBTSxBQUFFRSxhQUFlRCxTQUFmQztZQUVSLElBQUlBLGVBQWVuQixvQkFBb0I7Z0JBQ3RDaUIsUUFBUTtZQUNUO1FBQ0Q7UUFFQSxJQUFJQSxPQUFPO1lBQ1YsSUFBTVAsU0FBTztZQUViQyxTQUFTRDtZQUVUO1FBQ0Q7UUFFQVUsb0JBQW9CRixVQUFVLFNBQUNOO1lBQzlCLElBQUlGLFNBQU87WUFFWCxJQUFJO2dCQUNIQSxTQUFPRyxLQUFLUSxLQUFLLENBQUNUO1lBQ25CLEVBQUUsT0FBT0ssT0FBTyxDQUFDLEVBQUUsR0FBRztZQUV0Qk4sU0FBU0Q7UUFDVjtJQUNELElBQ0FZLFdBQVdDLGdCQUFRLENBQUNDLElBQUksQ0FBQ1o7SUFFNUJVLFNBQVNHLElBQUksQ0FBQ1Q7QUFDZjtJQUVBLFdBQWU7SUFDZHJCLE1BQUFBO0FBQ0Q7QUFFQSxTQUFTeUIsb0JBQW9CRixRQUFRLEVBQUVQLFFBQVE7SUFDOUMsSUFBSUMsVUFBVWMsdUJBQVk7SUFFMUJSLFNBQVNTLEVBQUUsQ0FBQ0MsZUFBSSxFQUFFLFNBQUNDO1FBQ2xCakIsV0FBV2lCO0lBQ1o7SUFFQVgsU0FBU1MsRUFBRSxDQUFDRyxjQUFHLEVBQUU7UUFDaEJuQixTQUFTQztJQUNWO0FBQ0QifQ==
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "isNameHiddenName", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return isNameHiddenName;
9
+ }
10
+ });
11
+ function isNameHiddenName(name) {
12
+ var nameHiddenName = /^\..+/.test(name);
13
+ return nameHiddenName;
14
+ }
15
+
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTmFtZUhpZGRlbk5hbWUobmFtZSkge1xuICBjb25zdCBuYW1lSGlkZGVuTmFtZSA9IC9eXFwuLisvLnRlc3QobmFtZSk7XG5cbiAgcmV0dXJuIG5hbWVIaWRkZW5OYW1lO1xufVxuIl0sIm5hbWVzIjpbImlzTmFtZUhpZGRlbk5hbWUiLCJuYW1lIiwibmFtZUhpZGRlbk5hbWUiLCJ0ZXN0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFFZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLGlCQUFpQkMsSUFBSTtJQUNuQyxJQUFNQyxpQkFBaUIsUUFBUUMsSUFBSSxDQUFDRjtJQUVwQyxPQUFPQztBQUNUIn0=
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get nullifyEntryPaths () {
13
+ return nullifyEntryPaths;
14
+ },
15
+ get nullifySourceEntryPath () {
16
+ return nullifySourceEntryPath;
17
+ },
18
+ get nullifySourceEntryPaths () {
19
+ return nullifySourceEntryPaths;
20
+ },
21
+ get nullifyTargetEntryPath () {
22
+ return nullifyTargetEntryPath;
23
+ },
24
+ get nullifyTargetEntryPaths () {
25
+ return nullifyTargetEntryPaths;
26
+ }
27
+ });
28
+ function nullifyEntryPaths(pathMap) {
29
+ var sourceEntryPath = null, targetEntryPath = null;
30
+ Object.assign(pathMap, {
31
+ sourceEntryPath: sourceEntryPath,
32
+ targetEntryPath: targetEntryPath
33
+ });
34
+ }
35
+ function nullifySourceEntryPath(pathMap) {
36
+ var sourceEntryPath = null;
37
+ Object.assign(pathMap, {
38
+ sourceEntryPath: sourceEntryPath
39
+ });
40
+ }
41
+ function nullifyTargetEntryPath(pathMap) {
42
+ var targetEntryPath = null;
43
+ Object.assign(pathMap, {
44
+ targetEntryPath: targetEntryPath
45
+ });
46
+ }
47
+ function nullifySourceEntryPaths(pathMaps) {
48
+ pathMaps.forEach(function(pathMap) {
49
+ nullifySourceEntryPath(pathMap);
50
+ });
51
+ }
52
+ function nullifyTargetEntryPaths(pathMaps) {
53
+ pathMaps.forEach(function(pathMap) {
54
+ nullifyTargetEntryPath(pathMap);
55
+ });
56
+ }
57
+
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGF0aE1hcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG51bGxpZnlFbnRyeVBhdGhzKHBhdGhNYXApIHtcbiAgY29uc3Qgc291cmNlRW50cnlQYXRoID0gbnVsbCxcbiAgICAgICAgdGFyZ2V0RW50cnlQYXRoID0gbnVsbDtcblxuICBPYmplY3QuYXNzaWduKHBhdGhNYXAsIHtcbiAgICBzb3VyY2VFbnRyeVBhdGgsXG4gICAgdGFyZ2V0RW50cnlQYXRoXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVsbGlmeVNvdXJjZUVudHJ5UGF0aChwYXRoTWFwKSB7XG4gIGNvbnN0IHNvdXJjZUVudHJ5UGF0aCA9IG51bGw7XG5cbiAgT2JqZWN0LmFzc2lnbihwYXRoTWFwLCB7XG4gICAgc291cmNlRW50cnlQYXRoXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVsbGlmeVRhcmdldEVudHJ5UGF0aChwYXRoTWFwKSB7XG4gIGNvbnN0IHRhcmdldEVudHJ5UGF0aCA9IG51bGw7XG5cbiAgT2JqZWN0LmFzc2lnbihwYXRoTWFwLCB7XG4gICAgdGFyZ2V0RW50cnlQYXRoXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVsbGlmeVNvdXJjZUVudHJ5UGF0aHMocGF0aE1hcHMpIHtcbiAgcGF0aE1hcHMuZm9yRWFjaCgocGF0aE1hcCkgPT4ge1xuICAgIG51bGxpZnlTb3VyY2VFbnRyeVBhdGgocGF0aE1hcCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVsbGlmeVRhcmdldEVudHJ5UGF0aHMocGF0aE1hcHMpIHtcbiAgcGF0aE1hcHMuZm9yRWFjaCgocGF0aE1hcCkgPT4ge1xuICAgIG51bGxpZnlUYXJnZXRFbnRyeVBhdGgocGF0aE1hcCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbIm51bGxpZnlFbnRyeVBhdGhzIiwibnVsbGlmeVNvdXJjZUVudHJ5UGF0aCIsIm51bGxpZnlTb3VyY2VFbnRyeVBhdGhzIiwibnVsbGlmeVRhcmdldEVudHJ5UGF0aCIsIm51bGxpZnlUYXJnZXRFbnRyeVBhdGhzIiwicGF0aE1hcCIsInNvdXJjZUVudHJ5UGF0aCIsInRhcmdldEVudHJ5UGF0aCIsIk9iamVjdCIsImFzc2lnbiIsInBhdGhNYXBzIiwiZm9yRWFjaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBRWdCQTtlQUFBQTs7UUFVQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUFSQUM7ZUFBQUE7O1FBY0FDO2VBQUFBOzs7QUFoQ1QsU0FBU0osa0JBQWtCSyxPQUFPO0lBQ3ZDLElBQU1DLGtCQUFrQixNQUNsQkMsa0JBQWtCO0lBRXhCQyxPQUFPQyxNQUFNLENBQUNKLFNBQVM7UUFDckJDLGlCQUFBQTtRQUNBQyxpQkFBQUE7SUFDRjtBQUNGO0FBRU8sU0FBU04sdUJBQXVCSSxPQUFPO0lBQzVDLElBQU1DLGtCQUFrQjtJQUV4QkUsT0FBT0MsTUFBTSxDQUFDSixTQUFTO1FBQ3JCQyxpQkFBQUE7SUFDRjtBQUNGO0FBRU8sU0FBU0gsdUJBQXVCRSxPQUFPO0lBQzVDLElBQU1FLGtCQUFrQjtJQUV4QkMsT0FBT0MsTUFBTSxDQUFDSixTQUFTO1FBQ3JCRSxpQkFBQUE7SUFDRjtBQUNGO0FBRU8sU0FBU0wsd0JBQXdCUSxRQUFRO0lBQzlDQSxTQUFTQyxPQUFPLENBQUMsU0FBQ047UUFDaEJKLHVCQUF1Qkk7SUFDekI7QUFDRjtBQUVPLFNBQVNELHdCQUF3Qk0sUUFBUTtJQUM5Q0EsU0FBU0MsT0FBTyxDQUFDLFNBQUNOO1FBQ2hCRix1QkFBdUJFO0lBQ3pCO0FBQ0YifQ==
package/license.txt ADDED
@@ -0,0 +1,48 @@
1
+ MIT And Anti-996 Licenses
2
+
3
+ Copyright (c) 2023 James Smith
4
+
5
+ These licenses shall be included in all copies or substantial portions of
6
+ this software and associated documentation files (the "Software").
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this Software, to deal in the Software without restriction, including
10
+ without limitation the rights to use, copy, modify, merge, publish,
11
+ distribute, sublicense, and/or sell copies of the Software, and to permit
12
+ persons to whom the Software is furnished to do so, subject to the following
13
+ conditions:
14
+
15
+ 1. The individual or the legal entity must conspicuously display,
16
+ without modification, this License and the notice on each redistributed
17
+ or derivative copy of the Licensed Work.
18
+
19
+ 2. The individual or the legal entity must strictly comply with all
20
+ applicable laws, regulations, rules and standards of the jurisdiction
21
+ relating to labor and employment where the individual is physically
22
+ located or where the individual was born or naturalized; or where the
23
+ legal entity is registered or is operating (whichever is stricter). In
24
+ case that the jurisdiction has no such laws, regulations, rules and
25
+ standards or its laws, regulations, rules and standards are
26
+ unenforceable, the individual or the legal entity are required to
27
+ comply with Core International Labor Standards.
28
+
29
+ 3. The individual or the legal entity shall not induce, suggest or force
30
+ its employee(s), whether full-time or part-time, or its independent
31
+ contractor(s), in any methods, to agree in oral or written form, to
32
+ directly or indirectly restrict, weaken or relinquish his or her
33
+ rights or remedies under such laws, regulations, rules and standards
34
+ relating to labor and employment as mentioned above, no matter whether
35
+ such written or oral agreements are enforceable under the laws of the
36
+ said jurisdiction, nor shall such individual or the legal entity
37
+ limit, in any methods, the rights of its employee(s) or independent
38
+ contractor(s) from reporting or complaining to the copyright holder or
39
+ relevant authorities monitoring the compliance of the license about
40
+ its violation(s) of the said license.
41
+
42
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
44
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
45
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
46
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
47
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
48
+ SOFTWARE.