occam-open-cli 4.0.44 → 4.0.45

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.
package/bin/constants.js CHANGED
@@ -3,23 +3,17 @@
3
3
  const END = "end",
4
4
  DATA = "data",
5
5
  OPEN = "open",
6
- BASE64 = "base64",
7
6
  OPEN_CLI = "Open-CLI",
8
- USER_AGENT = "user-agent",
9
7
  DOUBLE_DOTS = "..",
10
8
  EMPTY_STRING = "",
11
- CONTENT_TYPE = "content-type",
12
9
  PACKAGE_JSON = "package.json";
13
10
 
14
11
  module.exports = {
15
12
  END,
16
13
  DATA,
17
14
  OPEN,
18
- BASE64,
19
15
  OPEN_CLI,
20
- USER_AGENT,
21
16
  DOUBLE_DOTS,
22
17
  EMPTY_STRING,
23
- CONTENT_TYPE,
24
18
  PACKAGE_JSON
25
19
  };
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ import { encodings } from "necessary";
4
+
3
5
  const { deflate } = require("zlib");
4
6
 
5
- const { BASE64 } = require("../constants");
7
+ const { BASE64_ENCODING } = encodings;
6
8
 
7
9
  function deflateReleaseOperation(proceed, abort, context) {
8
10
  const { release } = context,
@@ -16,7 +18,7 @@ function deflateReleaseOperation(proceed, abort, context) {
16
18
  return;
17
19
  }
18
20
 
19
- const encoding = BASE64,
21
+ const encoding = BASE64_ENCODING,
20
22
  deflatedReleaseJSONString = buffer.toString(encoding),
21
23
  deflatedRelease = deflatedReleaseJSONString; ///
22
24
 
package/bin/post.js CHANGED
@@ -3,16 +3,17 @@
3
3
  const os = require("os");
4
4
 
5
5
  const { Readable } = require("stream");
6
- const { requestUtilities } = require("necessary");
6
+ const { headers, contentTypes, requestUtilities } = require("necessary");
7
7
 
8
- const { retrieveHostURL } = require("./configuration"),
8
+ const { OPEN_CLI } = require("./constants"),
9
+ { retrieveHostURL } = require("./configuration"),
9
10
  { getPackageVersion } = require("./utilities/packageJSON"),
10
11
  { contentFromResponse } = require("./utilities/response"),
11
- { USER_AGENT, CONTENT_TYPE, OPEN_CLI } = require("./constants"),
12
- { APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE } = require("./contentTypes"),
13
12
  { SERVER_ERROR_MESSAGE, SERVER_FAILED_TO_RESPOND_ERROR_MESSAGE } = require("./messages");
14
13
 
15
- const { createPostRequest } = requestUtilities;
14
+ const { createPostRequest } = requestUtilities,
15
+ { USER_AGENT_HEADER, CONTENT_TYPE_HEADER } = headers,
16
+ { APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE } = contentTypes;
16
17
 
17
18
  function post(uri, data, callback) {
18
19
  const host = getHost(),
@@ -80,9 +81,9 @@ function getHeaders() {
80
81
  const headers = {},
81
82
  userAgent = getUserAgent();
82
83
 
83
- headers[USER_AGENT] = userAgent;
84
+ headers[USER_AGENT_HEADER] = userAgent;
84
85
 
85
- headers[CONTENT_TYPE] = APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE;
86
+ headers[CONTENT_TYPE_HEADER] = APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE;
86
87
 
87
88
  return headers;
88
89
  }
package/lib/constants.js CHANGED
@@ -2,12 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.ENTRIES_MAXIMUM_ARRAY_LENGTH = exports.DOUBLE_SPACE = exports.DOT = void 0;
6
- var DOT = ".";
7
- exports.DOT = DOT;
5
+ exports.ENTRIES_MAXIMUM_ARRAY_LENGTH = exports.DOUBLE_SPACE = void 0;
8
6
  var DOUBLE_SPACE = " ";
9
7
  exports.DOUBLE_SPACE = DOUBLE_SPACE;
10
8
  var ENTRIES_MAXIMUM_ARRAY_LENGTH = 1024;
11
9
  exports.ENTRIES_MAXIMUM_ARRAY_LENGTH = ENTRIES_MAXIMUM_ARRAY_LENGTH;
12
10
 
13
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBET1QgPSBcIi5cIjtcbmV4cG9ydCBjb25zdCBET1VCTEVfU1BBQ0UgPSBcIiAgXCI7XG5leHBvcnQgY29uc3QgRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSCA9IDEwMjQ7XG4iXSwibmFtZXMiOlsiRE9UIiwiRE9VQkxFX1NQQUNFIiwiRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSCJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7Ozs7QUFFTCxHQUFLLENBQUNBLEdBQUcsR0FBRyxDQUFHO1FBQVRBLEdBQUcsR0FBSEEsR0FBRztBQUNULEdBQUssQ0FBQ0MsWUFBWSxHQUFHLENBQUk7UUFBbkJBLFlBQVksR0FBWkEsWUFBWTtBQUNsQixHQUFLLENBQUNDLDRCQUE0QixHQUFHLElBQUk7UUFBbkNBLDRCQUE0QixHQUE1QkEsNEJBQTRCIn0=
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBET1VCTEVfU1BBQ0UgPSBcIiAgXCI7XG5leHBvcnQgY29uc3QgRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSCA9IDEwMjQ7XG4iXSwibmFtZXMiOlsiRE9VQkxFX1NQQUNFIiwiRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSCJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7Ozs7QUFFTCxHQUFLLENBQUNBLFlBQVksR0FBRyxDQUFJO1FBQW5CQSxZQUFZLEdBQVpBLFlBQVk7QUFDbEIsR0FBSyxDQUFDQyw0QkFBNEIsR0FBRyxJQUFJO1FBQW5DQSw0QkFBNEIsR0FBNUJBLDRCQUE0QiJ9
@@ -19,8 +19,8 @@ var _project = _interopRequireDefault(require("../project"));
19
19
  var _release = _interopRequireDefault(require("../release"));
20
20
  var _projects = _interopRequireDefault(require("../projects"));
21
21
  var _directory = _interopRequireDefault(require("../directory"));
22
- var _constants = require("../constants");
23
22
  var _name = require("../utilities/name");
23
+ var _constants = require("../constants");
24
24
  var _filePath = require("../utilities/filePath");
25
25
  var _messages = require("../messages");
26
26
  function _interopRequireDefault(obj) {
@@ -49,7 +49,7 @@ function _interopRequireWildcard(obj) {
49
49
  return newObj;
50
50
  }
51
51
  }
52
- var concatenatePaths = _necessary.pathUtilities.concatenatePaths, topmostDirectoryPathFromPath = _necessary.pathUtilities.topmostDirectoryPathFromPath, readFile = _necessary.fileSystemUtilities.readFile, writeFile = _necessary.fileSystemUtilities.writeFile, isEntryFile = _necessary.fileSystemUtilities.isEntryFile, readDirectory = _necessary.fileSystemUtilities.readDirectory, isEntryDirectory = _necessary.fileSystemUtilities.isEntryDirectory;
52
+ var PERIOD_CHARACTER = _necessary.characters.PERIOD_CHARACTER, concatenatePaths = _necessary.pathUtilities.concatenatePaths, topmostDirectoryPathFromPath = _necessary.pathUtilities.topmostDirectoryPathFromPath, readFile = _necessary.fileSystemUtilities.readFile, writeFile = _necessary.fileSystemUtilities.writeFile, isEntryFile = _necessary.fileSystemUtilities.isEntryFile, readDirectory = _necessary.fileSystemUtilities.readDirectory, isEntryDirectory = _necessary.fileSystemUtilities.isEntryDirectory;
53
53
  function loadFile(path, projectsDirectoryPath) {
54
54
  var file = null;
55
55
  try {
@@ -102,7 +102,7 @@ function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadH
102
102
  return projects;
103
103
  }
104
104
  function releaseFromName(name) {
105
- var topmostDirectoryName = name, projectsDirectoryPath = _constants.DOT, loadOnlyRecognisedFiles = true, doNotLoadHiddenFilesAndDirectories = true, entries = entriesFromTopmostDirectoryName(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories), versionNumber = null, release = new _release.default(name, entries, versionNumber);
105
+ var topmostDirectoryName = name, projectsDirectoryPath = PERIOD_CHARACTER, loadOnlyRecognisedFiles = true, doNotLoadHiddenFilesAndDirectories = true, entries = entriesFromTopmostDirectoryName(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories), versionNumber = null, release = new _release.default(name, entries, versionNumber);
106
106
  return release;
107
107
  }
108
108
  var _default = {
@@ -185,4 +185,4 @@ function topmostDirectoryNamesFromProjectsDirectoryPath(projectsDirectoryPath, d
185
185
  return topmostDirectoryNames1;
186
186
  }
187
187
 
188
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCBta2RpcnAgZnJvbSBcIm1rZGlycFwiO1xyXG5cclxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcclxuXHJcbmltcG9ydCBGaWxlIGZyb20gXCIuLi9maWxlXCI7XHJcbmltcG9ydCBGaWxlcyBmcm9tIFwiLi4vZmlsZXNcIjtcclxuaW1wb3J0IEVudHJpZXMgZnJvbSBcIi4uL2VudHJpZXNcIjtcclxuaW1wb3J0IFByb2plY3QgZnJvbSBcIi4uL3Byb2plY3RcIjtcclxuaW1wb3J0IFJlbGVhc2UgZnJvbSBcIi4uL3JlbGVhc2VcIjtcclxuaW1wb3J0IFByb2plY3RzIGZyb20gXCIuLi9wcm9qZWN0c1wiO1xyXG5pbXBvcnQgRGlyZWN0b3J5IGZyb20gXCIuLi9kaXJlY3RvcnlcIjtcclxuXHJcbmltcG9ydCB7IERPVCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgaXNOYW1lSGlkZGVuTmFtZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvbmFtZVwiO1xyXG5pbXBvcnQgeyBFTlRSSUVTX01BWElNVU1fQVJSQVlfTEVOR1RIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9maWxlUGF0aFwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0Q29udGVudFRhYnNUb1doaXRlc3BhY2UgfSBmcm9tIFwiLi4vZmlsZVwiO1xyXG5pbXBvcnQgeyBFTlRSSUVTX01BWElNVU1fQVJSQVlfTEVOR1RIX0VYQ0VFREVEX01FU1NBR0UgfSBmcm9tIFwiLi4vbWVzc2FnZXNcIjtcclxuXHJcbmNvbnN0IHsgY29uY2F0ZW5hdGVQYXRocywgdG9wbW9zdERpcmVjdG9yeVBhdGhGcm9tUGF0aCB9ID0gcGF0aFV0aWxpdGllcyxcclxuICAgICAgeyByZWFkRmlsZSwgd3JpdGVGaWxlLCBpc0VudHJ5RmlsZSwgcmVhZERpcmVjdG9yeSwgaXNFbnRyeURpcmVjdG9yeSB9ID0gZmlsZVN5c3RlbVV0aWxpdGllcztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmlsZShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgZmlsZSA9IG51bGw7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aCksXHJcbiAgICAgICAgICBlbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgIGlmIChlbnRyeUZpbGUpIHtcclxuICAgICAgbGV0IGNvbnRlbnQgPSByZWFkRmlsZShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgICAgY29udGVudCA9IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZShjb250ZW50KTsgIC8vL1xyXG5cclxuICAgICAgZmlsZSA9IG5ldyBGaWxlKHBhdGgsIGNvbnRlbnQpO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAvLy9cclxuICB9XHJcblxyXG4gIHJldHVybiBmaWxlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2F2ZUZpbGUoZmlsZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgcGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxyXG4gICAgICAgIGNvbnRlbnQgPSBmaWxlLmdldENvbnRlbnQoKSxcclxuICAgICAgICBhYnNvbHV0ZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aCksXHJcbiAgICAgICAgdG9wbW9zdEFic29sdXRlRGlyZWN0b3J5UGF0aCA9IHRvcG1vc3REaXJlY3RvcnlQYXRoRnJvbVBhdGgoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgbWtkaXJwLnN5bmModG9wbW9zdEFic29sdXRlRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHdyaXRlRmlsZShhYnNvbHV0ZVBhdGgsIGNvbnRlbnQpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGVzKHBhdGhzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBjb25zdCBhcnJheSA9IFtdLFxyXG4gICAgICAgIGZpbGVzID0gbmV3IEZpbGVzKGFycmF5KTtcclxuXHJcbiAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IGxvYWRGaWxlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgZmlsZXMuYWRkRmlsZShmaWxlKTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGZpbGVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2F2ZUZpbGVzKGZpbGVzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBmaWxlcy5mb3JFYWNoRmlsZSgoZmlsZSkgPT4ge1xyXG4gICAgc2F2ZUZpbGUoZmlsZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcm9qZWN0KHRvcG1vc3REaXJlY3RvcnlOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgY29uc3QgbmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lLCAgLy8vXHJcbiAgICAgICAgZW50cmllcyA9IGVudHJpZXNGcm9tVG9wbW9zdERpcmVjdG9yeU5hbWUodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpLFxyXG4gICAgICAgIHByb2plY3QgPSBuZXcgUHJvamVjdChuYW1lLCBlbnRyaWVzKTtcclxuXHJcbiAgcmV0dXJuIHByb2plY3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gIGxldCBwcm9qZWN0cztcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGFycmF5ID0gW107XHJcblxyXG4gICAgcHJvamVjdHMgPSBuZXcgUHJvamVjdHMoYXJyYXkpO1xyXG5cclxuICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lcyA9IHRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKTtcclxuXHJcbiAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZXMuZm9yRWFjaCgodG9wbW9zdERpcmVjdG9yeU5hbWUpID0+IHtcclxuICAgICAgY29uc3QgcHJvamVjdCA9IGxvYWRQcm9qZWN0KHRvcG1vc3REaXJlY3RvcnlOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKTtcclxuXHJcbiAgICAgIHByb2plY3RzLmFkZFByb2plY3QocHJvamVjdCk7XHJcbiAgICB9KTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgcHJvamVjdHMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHByb2plY3RzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUZyb21OYW1lKG5hbWUpIHtcclxuICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IG5hbWUsIC8vL1xyXG4gICAgICAgIHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IERPVCxcclxuICAgICAgICBsb2FkT25seVJlY29nbmlzZWRGaWxlcyA9IHRydWUsXHJcbiAgICAgICAgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyA9IHRydWUsXHJcbiAgICAgICAgZW50cmllcyA9IGVudHJpZXNGcm9tVG9wbW9zdERpcmVjdG9yeU5hbWUodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpLFxyXG4gICAgICAgIHZlcnNpb25OdW1iZXIgPSBudWxsLCAvLy9cclxuICAgICAgICByZWxlYXNlID0gbmV3IFJlbGVhc2UobmFtZSwgZW50cmllcywgdmVyc2lvbk51bWJlcik7XHJcblxyXG4gIHJldHVybiByZWxlYXNlO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgbG9hZEZpbGUsXHJcbiAgc2F2ZUZpbGUsXHJcbiAgbG9hZEZpbGVzLFxyXG4gIHNhdmVGaWxlcyxcclxuICBsb2FkUHJvamVjdCxcclxuICBsb2FkUHJvamVjdHMsXHJcbiAgcmVsZWFzZUZyb21OYW1lXHJcbn07XHJcblxyXG5mdW5jdGlvbiBkaXJlY3RvcnlGcm9tUGF0aChwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgZGlyZWN0b3J5ID0gbnVsbDtcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBwYXRoKSxcclxuICAgICAgICAgIGVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgIGlmIChlbnRyeURpcmVjdG9yeSkge1xyXG4gICAgICBkaXJlY3RvcnkgPSBuZXcgRGlyZWN0b3J5KHBhdGgpO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAvLy9cclxuICB9XHJcblxyXG4gIHJldHVybiBkaXJlY3Rvcnk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVudHJpZXNGcm9tVG9wbW9zdERpcmVjdG9yeU5hbWUodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICBjb25zdCBhcnJheSA9IFtdLFxyXG4gICAgICAgIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCA9IHRvcG1vc3REaXJlY3RvcnlOYW1lOyAgLy8vXHJcblxyXG4gIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGFycmF5LCByZWxhdGl2ZURpcmVjdG9yeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpO1xyXG5cclxuICBjb25zdCBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xyXG5cclxuICByZXR1cm4gZW50cmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZW50cmllc0Zyb21SZWxhdGl2ZURpcmVjdG9yeVBhdGgoYXJyYXksIHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gIGNvbnN0IGFic29sdXRlRGlyZWN0b3J5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCByZWxhdGl2ZURpcmVjdG9yeVBhdGgpLFxyXG4gICAgICAgIHN1YkVudHJ5TmFtZXMgPSByZWFkRGlyZWN0b3J5KGFic29sdXRlRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHN1YkVudHJ5TmFtZXMuZm9yRWFjaCgoc3ViRW50cnlOYW1lKSA9PiB7XHJcbiAgICBjb25zdCBzdWJFbnRyeU5hbWVIaWRkZW5OYW1lID0gaXNOYW1lSGlkZGVuTmFtZShzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgc3ViRW50cnlOYW1lTm90SGlkZGVuTmFtZSA9ICFzdWJFbnRyeU5hbWVIaWRkZW5OYW1lLFxyXG4gICAgICAgICAgbG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMgPSAhZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyxcclxuICAgICAgICAgIGxvYWRVbnJlY29nbmlzZWRGaWxlc0FuZERpcmVjdG9yaWVzID0gIWxvYWRPbmx5UmVjb2duaXNlZEZpbGVzO1xyXG5cclxuICAgIGlmIChzdWJFbnRyeU5hbWVOb3RIaWRkZW5OYW1lIHx8IGxvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgICAgIGxldCBlbnRyeTtcclxuXHJcbiAgICAgIGNvbnN0IHBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHJlbGF0aXZlRGlyZWN0b3J5UGF0aCwgc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgICAgZGlyZWN0b3J5ID0gZGlyZWN0b3J5RnJvbVBhdGgocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChkaXJlY3RvcnkgIT09IG51bGwpIHtcclxuICAgICAgICBjb25zdCBkaXJlY3RvcnlQYXRoID0gcGF0aDsgLy8vXHJcblxyXG4gICAgICAgIGlmIChsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICAgICAgZW50cnkgPSBkaXJlY3Rvcnk7ICAvLy9cclxuXHJcbiAgICAgICAgICBhcnJheS5wdXNoKGVudHJ5KTsgIC8vL1xyXG5cclxuICAgICAgICAgIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIGlmIChhcnJheUxlbmd0aCA+IEVOVFJJRVNfTUFYSU1VTV9BUlJBWV9MRU5HVEgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVOVFJJRVNfTUFYSU1VTV9BUlJBWV9MRU5HVEhfRVhDRUVERURfTUVTU0FHRSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGFycmF5LCBkaXJlY3RvcnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKTsgLy8vXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IGxvYWRGaWxlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICAgIGlmIChmaWxlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxyXG4gICAgICAgICAgICAgICAgZmlsZVBhdGhSZWNvZ25pc2VkRmlsZVBhdGggPSBpc0ZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoKGZpbGVQYXRoKSxcclxuICAgICAgICAgICAgICAgIGZpbGVSZWNvZ25pc2VkRmlsZSA9IGZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoOyAgLy8vXHJcblxyXG4gICAgICAgICAgaWYgKGZpbGVSZWNvZ25pc2VkRmlsZSB8fCBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICAgICAgICBlbnRyeSA9IGZpbGU7IC8vL1xyXG5cclxuICAgICAgICAgICAgYXJyYXkucHVzaChlbnRyeSk7ICAvLy9cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFycmF5TGVuZ3RoID4gRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSCkge1xyXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFTlRSSUVTX01BWElNVU1fQVJSQVlfTEVOR1RIX0VYQ0VFREVEX01FU1NBR0UpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9wbW9zdERpcmVjdG9yeU5hbWVzRnJvbVByb2plY3RzRGlyZWN0b3J5UGF0aChwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICBsZXQgdG9wbW9zdERpcmVjdG9yeU5hbWVzO1xyXG5cclxuICBjb25zdCBzdWJFbnRyeU5hbWVzID0gcmVhZERpcmVjdG9yeShwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICB0b3Btb3N0RGlyZWN0b3J5TmFtZXMgPSBzdWJFbnRyeU5hbWVzLnJlZHVjZSgodG9wbW9zdERpcmVjdG9yeU5hbWVzLCBzdWJFbnRyeU5hbWUpID0+IHtcclxuICAgIGNvbnN0IGFic29sdXRlU3ViRW50cnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICBzdWJFbnRyeU5hbWVIaWRkZW5OYW1lID0gaXNOYW1lSGlkZGVuTmFtZShzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgc3ViRW50cnlOYW1lTm90SGlkZGVuTmFtZSA9ICFzdWJFbnRyeU5hbWVIaWRkZW5OYW1lLFxyXG4gICAgICAgICAgbG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMgPSAhZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcztcclxuXHJcbiAgICBpZiAoc3ViRW50cnlOYW1lTm90SGlkZGVuTmFtZSB8fCBsb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICBjb25zdCBzdWJFbnRyeURpcmVjdG9yeSA9IGlzRW50cnlEaXJlY3RvcnkoYWJzb2x1dGVTdWJFbnRyeVBhdGgpO1xyXG5cclxuICAgICAgaWYgKHN1YkVudHJ5RGlyZWN0b3J5KSB7XHJcbiAgICAgICAgY29uc3QgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSBzdWJFbnRyeU5hbWU7ICAvLy9cclxuXHJcbiAgICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWVzLnB1c2godG9wbW9zdERpcmVjdG9yeU5hbWUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG9wbW9zdERpcmVjdG9yeU5hbWVzO1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgcmV0dXJuIHRvcG1vc3REaXJlY3RvcnlOYW1lcztcclxufVxyXG4iXSwibmFtZXMiOlsibG9hZEZpbGUiLCJzYXZlRmlsZSIsImxvYWRGaWxlcyIsInNhdmVGaWxlcyIsImxvYWRQcm9qZWN0IiwibG9hZFByb2plY3RzIiwicmVsZWFzZUZyb21OYW1lIiwiY29uY2F0ZW5hdGVQYXRocyIsInRvcG1vc3REaXJlY3RvcnlQYXRoRnJvbVBhdGgiLCJyZWFkRmlsZSIsIndyaXRlRmlsZSIsImlzRW50cnlGaWxlIiwicmVhZERpcmVjdG9yeSIsImlzRW50cnlEaXJlY3RvcnkiLCJwYXRoIiwicHJvamVjdHNEaXJlY3RvcnlQYXRoIiwiZmlsZSIsImFic29sdXRlUGF0aCIsImVudHJ5RmlsZSIsImNvbnRlbnQiLCJlcnJvciIsImdldFBhdGgiLCJnZXRDb250ZW50IiwidG9wbW9zdEFic29sdXRlRGlyZWN0b3J5UGF0aCIsInN5bmMiLCJwYXRocyIsImFycmF5IiwiZmlsZXMiLCJmb3JFYWNoIiwiYWRkRmlsZSIsImZvckVhY2hGaWxlIiwidG9wbW9zdERpcmVjdG9yeU5hbWUiLCJsb2FkT25seVJlY29nbmlzZWRGaWxlcyIsImRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMiLCJuYW1lIiwiZW50cmllcyIsImVudHJpZXNGcm9tVG9wbW9zdERpcmVjdG9yeU5hbWUiLCJwcm9qZWN0IiwicHJvamVjdHMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZXMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZXNGcm9tUHJvamVjdHNEaXJlY3RvcnlQYXRoIiwiYWRkUHJvamVjdCIsInZlcnNpb25OdW1iZXIiLCJyZWxlYXNlIiwiZGlyZWN0b3J5RnJvbVBhdGgiLCJkaXJlY3RvcnkiLCJlbnRyeURpcmVjdG9yeSIsInJlbGF0aXZlRGlyZWN0b3J5UGF0aCIsImVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoIiwiYWJzb2x1dGVEaXJlY3RvcnlQYXRoIiwic3ViRW50cnlOYW1lcyIsInN1YkVudHJ5TmFtZSIsInN1YkVudHJ5TmFtZUhpZGRlbk5hbWUiLCJzdWJFbnRyeU5hbWVOb3RIaWRkZW5OYW1lIiwibG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMiLCJsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyIsImVudHJ5IiwiZGlyZWN0b3J5UGF0aCIsInB1c2giLCJhcnJheUxlbmd0aCIsImxlbmd0aCIsIkVycm9yIiwiZmlsZVBhdGgiLCJmaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aCIsImZpbGVSZWNvZ25pc2VkRmlsZSIsInJlZHVjZSIsImFic29sdXRlU3ViRW50cnlQYXRoIiwic3ViRW50cnlEaXJlY3RvcnkiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7UUF3QklBLFFBQVEsR0FBUkEsUUFBUTtRQXFCUkMsUUFBUSxHQUFSQSxRQUFRO1FBV1JDLFNBQVMsR0FBVEEsU0FBUztRQWFUQyxTQUFTLEdBQVRBLFNBQVM7UUFNVEMsV0FBVyxHQUFYQSxXQUFXO1FBUVhDLFlBQVksR0FBWkEsWUFBWTtRQXNCWkMsZUFBZSxHQUFmQSxlQUFlOztBQXZHWixHQUFRLENBQVIsT0FBUTtBQUV3QixHQUFXLENBQVgsVUFBVztBQUU3QyxHQUFTLENBQVQsS0FBUztBQUNSLEdBQVUsQ0FBVixNQUFVO0FBQ1IsR0FBWSxDQUFaLFFBQVk7QUFDWixHQUFZLENB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
188
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCBta2RpcnAgZnJvbSBcIm1rZGlycFwiO1xyXG5cclxuaW1wb3J0IHsgY2hhcmFjdGVycywgcGF0aFV0aWxpdGllcywgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcclxuXHJcbmltcG9ydCBGaWxlIGZyb20gXCIuLi9maWxlXCI7XHJcbmltcG9ydCBGaWxlcyBmcm9tIFwiLi4vZmlsZXNcIjtcclxuaW1wb3J0IEVudHJpZXMgZnJvbSBcIi4uL2VudHJpZXNcIjtcclxuaW1wb3J0IFByb2plY3QgZnJvbSBcIi4uL3Byb2plY3RcIjtcclxuaW1wb3J0IFJlbGVhc2UgZnJvbSBcIi4uL3JlbGVhc2VcIjtcclxuaW1wb3J0IFByb2plY3RzIGZyb20gXCIuLi9wcm9qZWN0c1wiO1xyXG5pbXBvcnQgRGlyZWN0b3J5IGZyb20gXCIuLi9kaXJlY3RvcnlcIjtcclxuXHJcbmltcG9ydCB7IGlzTmFtZUhpZGRlbk5hbWUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL25hbWVcIjtcclxuaW1wb3J0IHsgRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgaXNGaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aCB9IGZyb20gXCIuLi91dGlsaXRpZXMvZmlsZVBhdGhcIjtcclxuaW1wb3J0IHsgY29udmVydENvbnRlbnRUYWJzVG9XaGl0ZXNwYWNlIH0gZnJvbSBcIi4uL2ZpbGVcIjtcclxuaW1wb3J0IHsgRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSF9FWENFRURFRF9NRVNTQUdFIH0gZnJvbSBcIi4uL21lc3NhZ2VzXCI7XHJcblxyXG5jb25zdCB7IFBFUklPRF9DSEFSQUNURVIgfSA9IGNoYXJhY3RlcnMsXHJcbiAgICAgIHsgY29uY2F0ZW5hdGVQYXRocywgdG9wbW9zdERpcmVjdG9yeVBhdGhGcm9tUGF0aCB9ID0gcGF0aFV0aWxpdGllcyxcclxuICAgICAgeyByZWFkRmlsZSwgd3JpdGVGaWxlLCBpc0VudHJ5RmlsZSwgcmVhZERpcmVjdG9yeSwgaXNFbnRyeURpcmVjdG9yeSB9ID0gZmlsZVN5c3RlbVV0aWxpdGllcztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmlsZShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBsZXQgZmlsZSA9IG51bGw7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aCksXHJcbiAgICAgICAgICBlbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgIGlmIChlbnRyeUZpbGUpIHtcclxuICAgICAgbGV0IGNvbnRlbnQgPSByZWFkRmlsZShhYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgICAgY29udGVudCA9IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZShjb250ZW50KTsgIC8vL1xyXG5cclxuICAgICAgZmlsZSA9IG5ldyBGaWxlKHBhdGgsIGNvbnRlbnQpO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAvLy9cclxuICB9XHJcblxyXG4gIHJldHVybiBmaWxlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2F2ZUZpbGUoZmlsZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgY29uc3QgcGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxyXG4gICAgICAgIGNvbnRlbnQgPSBmaWxlLmdldENvbnRlbnQoKSxcclxuICAgICAgICBhYnNvbHV0ZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aCksXHJcbiAgICAgICAgdG9wbW9zdEFic29sdXRlRGlyZWN0b3J5UGF0aCA9IHRvcG1vc3REaXJlY3RvcnlQYXRoRnJvbVBhdGgoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgbWtkaXJwLnN5bmModG9wbW9zdEFic29sdXRlRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gIHdyaXRlRmlsZShhYnNvbHV0ZVBhdGgsIGNvbnRlbnQpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGVzKHBhdGhzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBjb25zdCBhcnJheSA9IFtdLFxyXG4gICAgICAgIGZpbGVzID0gbmV3IEZpbGVzKGFycmF5KTtcclxuXHJcbiAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IGxvYWRGaWxlKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgZmlsZXMuYWRkRmlsZShmaWxlKTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGZpbGVzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2F2ZUZpbGVzKGZpbGVzLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpIHtcclxuICBmaWxlcy5mb3JFYWNoRmlsZSgoZmlsZSkgPT4ge1xyXG4gICAgc2F2ZUZpbGUoZmlsZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcm9qZWN0KHRvcG1vc3REaXJlY3RvcnlOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgY29uc3QgbmFtZSA9IHRvcG1vc3REaXJlY3RvcnlOYW1lLCAgLy8vXHJcbiAgICAgICAgZW50cmllcyA9IGVudHJpZXNGcm9tVG9wbW9zdERpcmVjdG9yeU5hbWUodG9wbW9zdERpcmVjdG9yeU5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpLFxyXG4gICAgICAgIHByb2plY3QgPSBuZXcgUHJvamVjdChuYW1lLCBlbnRyaWVzKTtcclxuXHJcbiAgcmV0dXJuIHByb2plY3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBsb2FkUHJvamVjdHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gIGxldCBwcm9qZWN0cztcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGFycmF5ID0gW107XHJcblxyXG4gICAgcHJvamVjdHMgPSBuZXcgUHJvamVjdHMoYXJyYXkpO1xyXG5cclxuICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lcyA9IHRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKTtcclxuXHJcbiAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZXMuZm9yRWFjaCgodG9wbW9zdERpcmVjdG9yeU5hbWUpID0+IHtcclxuICAgICAgY29uc3QgcHJvamVjdCA9IGxvYWRQcm9qZWN0KHRvcG1vc3REaXJlY3RvcnlOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKTtcclxuXHJcbiAgICAgIHByb2plY3RzLmFkZFByb2plY3QocHJvamVjdCk7XHJcbiAgICB9KTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgcHJvamVjdHMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHByb2plY3RzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUZyb21OYW1lKG5hbWUpIHtcclxuICBjb25zdCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IG5hbWUsIC8vL1xyXG4gICAgICAgIHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IFBFUklPRF9DSEFSQUNURVIsXHJcbiAgICAgICAgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMgPSB0cnVlLFxyXG4gICAgICAgIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMgPSB0cnVlLFxyXG4gICAgICAgIGVudHJpZXMgPSBlbnRyaWVzRnJvbVRvcG1vc3REaXJlY3RvcnlOYW1lKHRvcG1vc3REaXJlY3RvcnlOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSxcclxuICAgICAgICB2ZXJzaW9uTnVtYmVyID0gbnVsbCwgLy8vXHJcbiAgICAgICAgcmVsZWFzZSA9IG5ldyBSZWxlYXNlKG5hbWUsIGVudHJpZXMsIHZlcnNpb25OdW1iZXIpO1xyXG5cclxuICByZXR1cm4gcmVsZWFzZTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIGxvYWRGaWxlLFxyXG4gIHNhdmVGaWxlLFxyXG4gIGxvYWRGaWxlcyxcclxuICBzYXZlRmlsZXMsXHJcbiAgbG9hZFByb2plY3QsXHJcbiAgbG9hZFByb2plY3RzLFxyXG4gIHJlbGVhc2VGcm9tTmFtZVxyXG59O1xyXG5cclxuZnVuY3Rpb24gZGlyZWN0b3J5RnJvbVBhdGgocGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKSB7XHJcbiAgbGV0IGRpcmVjdG9yeSA9IG51bGw7XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcGF0aCksXHJcbiAgICAgICAgICBlbnRyeURpcmVjdG9yeSA9IGlzRW50cnlEaXJlY3RvcnkoYWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICBpZiAoZW50cnlEaXJlY3RvcnkpIHtcclxuICAgICAgZGlyZWN0b3J5ID0gbmV3IERpcmVjdG9yeShwYXRoKTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8vXHJcbiAgfVxyXG5cclxuICByZXR1cm4gZGlyZWN0b3J5O1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbnRyaWVzRnJvbVRvcG1vc3REaXJlY3RvcnlOYW1lKHRvcG1vc3REaXJlY3RvcnlOYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgY29uc3QgYXJyYXkgPSBbXSxcclxuICAgICAgICByZWxhdGl2ZURpcmVjdG9yeVBhdGggPSB0b3Btb3N0RGlyZWN0b3J5TmFtZTsgIC8vL1xyXG5cclxuICBlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aChhcnJheSwgcmVsYXRpdmVEaXJlY3RvcnlQYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGxvYWRPbmx5UmVjb2duaXNlZEZpbGVzLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKTtcclxuXHJcbiAgY29uc3QgZW50cmllcyA9IG5ldyBFbnRyaWVzKGFycmF5KTtcclxuXHJcbiAgcmV0dXJuIGVudHJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGVudHJpZXNGcm9tUmVsYXRpdmVEaXJlY3RvcnlQYXRoKGFycmF5LCByZWxhdGl2ZURpcmVjdG9yeVBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCwgbG9hZE9ubHlSZWNvZ25pc2VkRmlsZXMsIGRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICBjb25zdCBhYnNvbHV0ZURpcmVjdG9yeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgcmVsYXRpdmVEaXJlY3RvcnlQYXRoKSxcclxuICAgICAgICBzdWJFbnRyeU5hbWVzID0gcmVhZERpcmVjdG9yeShhYnNvbHV0ZURpcmVjdG9yeVBhdGgpO1xyXG5cclxuICBzdWJFbnRyeU5hbWVzLmZvckVhY2goKHN1YkVudHJ5TmFtZSkgPT4ge1xyXG4gICAgY29uc3Qgc3ViRW50cnlOYW1lSGlkZGVuTmFtZSA9IGlzTmFtZUhpZGRlbk5hbWUoc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUgPSAhc3ViRW50cnlOYW1lSGlkZGVuTmFtZSxcclxuICAgICAgICAgIGxvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzID0gIWRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMsXHJcbiAgICAgICAgICBsb2FkVW5yZWNvZ25pc2VkRmlsZXNBbmREaXJlY3RvcmllcyA9ICFsb2FkT25seVJlY29nbmlzZWRGaWxlcztcclxuXHJcbiAgICBpZiAoc3ViRW50cnlOYW1lTm90SGlkZGVuTmFtZSB8fCBsb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcykge1xyXG4gICAgICBsZXQgZW50cnk7XHJcblxyXG4gICAgICBjb25zdCBwYXRoID0gY29uY2F0ZW5hdGVQYXRocyhyZWxhdGl2ZURpcmVjdG9yeVBhdGgsIHN1YkVudHJ5TmFtZSksXHJcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IGRpcmVjdG9yeUZyb21QYXRoKHBhdGgsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XHJcblxyXG4gICAgICBpZiAoZGlyZWN0b3J5ICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZGlyZWN0b3J5UGF0aCA9IHBhdGg7IC8vL1xyXG5cclxuICAgICAgICBpZiAobG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICAgICAgICAgIGVudHJ5ID0gZGlyZWN0b3J5OyAgLy8vXHJcblxyXG4gICAgICAgICAgYXJyYXkucHVzaChlbnRyeSk7ICAvLy9cclxuXHJcbiAgICAgICAgICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcclxuXHJcbiAgICAgICAgICBpZiAoYXJyYXlMZW5ndGggPiBFTlRSSUVTX01BWElNVU1fQVJSQVlfTEVOR1RIKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFTlRSSUVTX01BWElNVU1fQVJSQVlfTEVOR1RIX0VYQ0VFREVEX01FU1NBR0UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbnRyaWVzRnJvbVJlbGF0aXZlRGlyZWN0b3J5UGF0aChhcnJheSwgZGlyZWN0b3J5UGF0aCwgcHJvamVjdHNEaXJlY3RvcnlQYXRoLCBsb2FkT25seVJlY29nbmlzZWRGaWxlcywgZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3Rvcmllcyk7IC8vL1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBsb2FkRmlsZShwYXRoLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xyXG5cclxuICAgICAgICBpZiAoZmlsZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgZmlsZVBhdGggPSBmaWxlLmdldFBhdGgoKSxcclxuICAgICAgICAgICAgICAgIGZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoID0gaXNGaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aChmaWxlUGF0aCksXHJcbiAgICAgICAgICAgICAgICBmaWxlUmVjb2duaXNlZEZpbGUgPSBmaWxlUGF0aFJlY29nbmlzZWRGaWxlUGF0aDsgIC8vL1xyXG5cclxuICAgICAgICAgIGlmIChmaWxlUmVjb2duaXNlZEZpbGUgfHwgbG9hZFVucmVjb2duaXNlZEZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICAgICAgICAgICAgZW50cnkgPSBmaWxlOyAvLy9cclxuXHJcbiAgICAgICAgICAgIGFycmF5LnB1c2goZW50cnkpOyAgLy8vXHJcblxyXG4gICAgICAgICAgICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnJheUxlbmd0aCA+IEVOVFJJRVNfTUFYSU1VTV9BUlJBWV9MRU5HVEgpIHtcclxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSF9FWENFRURFRF9NRVNTQUdFKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBkb05vdExvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzKSB7XHJcbiAgbGV0IHRvcG1vc3REaXJlY3RvcnlOYW1lcztcclxuXHJcbiAgY29uc3Qgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkocHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcclxuXHJcbiAgdG9wbW9zdERpcmVjdG9yeU5hbWVzID0gc3ViRW50cnlOYW1lcy5yZWR1Y2UoKHRvcG1vc3REaXJlY3RvcnlOYW1lcywgc3ViRW50cnlOYW1lKSA9PiB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVN1YkVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBzdWJFbnRyeU5hbWUpLFxyXG4gICAgICAgICAgc3ViRW50cnlOYW1lSGlkZGVuTmFtZSA9IGlzTmFtZUhpZGRlbk5hbWUoc3ViRW50cnlOYW1lKSxcclxuICAgICAgICAgIHN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUgPSAhc3ViRW50cnlOYW1lSGlkZGVuTmFtZSxcclxuICAgICAgICAgIGxvYWRIaWRkZW5GaWxlc0FuZERpcmVjdG9yaWVzID0gIWRvTm90TG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXM7XHJcblxyXG4gICAgaWYgKHN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUgfHwgbG9hZEhpZGRlbkZpbGVzQW5kRGlyZWN0b3JpZXMpIHtcclxuICAgICAgY29uc3Qgc3ViRW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGFic29sdXRlU3ViRW50cnlQYXRoKTtcclxuXHJcbiAgICAgIGlmIChzdWJFbnRyeURpcmVjdG9yeSkge1xyXG4gICAgICAgIGNvbnN0IHRvcG1vc3REaXJlY3RvcnlOYW1lID0gc3ViRW50cnlOYW1lOyAgLy8vXHJcblxyXG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lcy5wdXNoKHRvcG1vc3REaXJlY3RvcnlOYW1lKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRvcG1vc3REaXJlY3RvcnlOYW1lcztcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiB0b3Btb3N0RGlyZWN0b3J5TmFtZXM7XHJcbn1cclxuIl0sIm5hbWVzIjpbImxvYWRGaWxlIiwic2F2ZUZpbGUiLCJsb2FkRmlsZXMiLCJzYXZlRmlsZXMiLCJsb2FkUHJvamVjdCIsImxvYWRQcm9qZWN0cyIsInJlbGVhc2VGcm9tTmFtZSIsIlBFUklPRF9DSEFSQUNURVIiLCJjb25jYXRlbmF0ZVBhdGhzIiwidG9wbW9zdERpcmVjdG9yeVBhdGhGcm9tUGF0aCIsInJlYWRGaWxlIiwid3JpdGVGaWxlIiwiaXNFbnRyeUZpbGUiLCJyZWFkRGlyZWN0b3J5IiwiaXNFbnRyeURpcmVjdG9yeSIsInBhdGgiLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJmaWxlIiwiYWJzb2x1dGVQYXRoIiwiZW50cnlGaWxlIiwiY29udGVudCIsImVycm9yIiwiZ2V0UGF0aCIsImdldENvbnRlbnQiLCJ0b3Btb3N0QWJzb2x1dGVEaXJlY3RvcnlQYXRoIiwic3luYyIsInBhdGhzIiwiYXJyYXkiLCJmaWxlcyIsImZvckVhY2giLCJhZGRGaWxlIiwiZm9yRWFjaEZpbGUiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZSIsImxvYWRPbmx5UmVjb2duaXNlZEZpbGVzIiwiZG9Ob3RMb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyIsIm5hbWUiLCJlbnRyaWVzIiwiZW50cmllc0Zyb21Ub3Btb3N0RGlyZWN0b3J5TmFtZSIsInByb2plY3QiLCJwcm9qZWN0cyIsInRvcG1vc3REaXJlY3RvcnlOYW1lcyIsInRvcG1vc3REaXJlY3RvcnlOYW1lc0Zyb21Qcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJhZGRQcm9qZWN0IiwidmVyc2lvbk51bWJlciIsInJlbGVhc2UiLCJkaXJlY3RvcnlGcm9tUGF0aCIsImRpcmVjdG9yeSIsImVudHJ5RGlyZWN0b3J5IiwicmVsYXRpdmVEaXJlY3RvcnlQYXRoIiwiZW50cmllc0Zyb21SZWxhdGl2ZURpcmVjdG9yeVBhdGgiLCJhYnNvbHV0ZURpcmVjdG9yeVBhdGgiLCJzdWJFbnRyeU5hbWVzIiwic3ViRW50cnlOYW1lIiwic3ViRW50cnlOYW1lSGlkZGVuTmFtZSIsInN1YkVudHJ5TmFtZU5vdEhpZGRlbk5hbWUiLCJsb2FkSGlkZGVuRmlsZXNBbmREaXJlY3RvcmllcyIsImxvYWRVbnJlY29nbmlzZWRGaWxlc0FuZERpcmVjdG9yaWVzIiwiZW50cnkiLCJkaXJlY3RvcnlQYXRoIiwicHVzaCIsImFycmF5TGVuZ3RoIiwibGVuZ3RoIiwiRXJyb3IiLCJmaWxlUGF0aCIsImZpbGVQYXRoUmVjb2duaXNlZEZpbGVQYXRoIiwiZmlsZVJlY29nbmlzZWRGaWxlIiwicmVkdWNlIiwiYWJzb2x1dGVTdWJFbnRyeVBhdGgiLCJzdWJFbnRyeURpcmVjdG9yeSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQXdCSUEsUUFBUSxHQUFSQSxRQUFRO1FBcUJSQyxRQUFRLEdBQVJBLFFBQVE7UUFXUkMsU0FBUyxHQUFUQSxTQUFTO1FBYVRDLFNBQVMsR0FBVEEsU0FBUztRQU1UQyxXQUFXLEdBQVhBLFdBQVc7UUFRWEMsWUFBWSxHQUFaQSxZQUFZO1FBc0JaQyxlQUFlLEdBQWZBLGVBQWU7O0FBdkdaLEdBQVEsQ0FBUixPQUFRO0FBRW9DLEdBQVcsQ0FBWCxVQUFXO0FBRXpELEdBQVMsQ0FBVCxLQUFTO0FBQ1Is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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-open-cli",
3
3
  "author": "James Smith",
4
- "version": "4.0.44",
4
+ "version": "4.0.45",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-open-cli",
7
7
  "description": "Occam's command line package management tool.",
@@ -12,7 +12,7 @@
12
12
  "dependencies": {
13
13
  "argumentative": "^2.0.15",
14
14
  "mkdirp": "^0.5.1",
15
- "necessary": "^11.0.2",
15
+ "necessary": "^11.0.19",
16
16
  "occam-parsers": "^14.1.4"
17
17
  },
18
18
  "devDependencies": {
package/src/constants.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
2
 
3
- export const DOT = ".";
4
3
  export const DOUBLE_SPACE = " ";
5
4
  export const ENTRIES_MAXIMUM_ARRAY_LENGTH = 1024;
@@ -2,7 +2,7 @@
2
2
 
3
3
  import mkdirp from "mkdirp";
4
4
 
5
- import { pathUtilities, fileSystemUtilities } from "necessary";
5
+ import { characters, pathUtilities, fileSystemUtilities } from "necessary";
6
6
 
7
7
  import File from "../file";
8
8
  import Files from "../files";
@@ -12,14 +12,14 @@ import Release from "../release";
12
12
  import Projects from "../projects";
13
13
  import Directory from "../directory";
14
14
 
15
- import { DOT } from "../constants";
16
15
  import { isNameHiddenName } from "../utilities/name";
17
16
  import { ENTRIES_MAXIMUM_ARRAY_LENGTH } from "../constants";
18
17
  import { isFilePathRecognisedFilePath } from "../utilities/filePath";
19
18
  import { convertContentTabsToWhitespace } from "../file";
20
19
  import { ENTRIES_MAXIMUM_ARRAY_LENGTH_EXCEEDED_MESSAGE } from "../messages";
21
20
 
22
- const { concatenatePaths, topmostDirectoryPathFromPath } = pathUtilities,
21
+ const { PERIOD_CHARACTER } = characters,
22
+ { concatenatePaths, topmostDirectoryPathFromPath } = pathUtilities,
23
23
  { readFile, writeFile, isEntryFile, readDirectory, isEntryDirectory } = fileSystemUtilities;
24
24
 
25
25
  export function loadFile(path, projectsDirectoryPath) {
@@ -105,7 +105,7 @@ export function loadProjects(projectsDirectoryPath, loadOnlyRecognisedFiles, doN
105
105
 
106
106
  export function releaseFromName(name) {
107
107
  const topmostDirectoryName = name, ///
108
- projectsDirectoryPath = DOT,
108
+ projectsDirectoryPath = PERIOD_CHARACTER,
109
109
  loadOnlyRecognisedFiles = true,
110
110
  doNotLoadHiddenFilesAndDirectories = true,
111
111
  entries = entriesFromTopmostDirectoryName(topmostDirectoryName, projectsDirectoryPath, loadOnlyRecognisedFiles, doNotLoadHiddenFilesAndDirectories),
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- const APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE = "application/json; charset=utf-8";
4
-
5
- module.exports = {
6
- APPLICATION_JSON_CHARSET_UTF_8_CONTENT_TYPE
7
- };