occam-open-cli 4.0.51 → 4.0.52

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/lib/browser.js ADDED
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "File", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _file.default;
9
+ }
10
+ });
11
+ Object.defineProperty(exports, "Files", {
12
+ enumerable: true,
13
+ get: function() {
14
+ return _files.default;
15
+ }
16
+ });
17
+ Object.defineProperty(exports, "types", {
18
+ enumerable: true,
19
+ get: function() {
20
+ return _types.default;
21
+ }
22
+ });
23
+ Object.defineProperty(exports, "Version", {
24
+ enumerable: true,
25
+ get: function() {
26
+ return _version.default;
27
+ }
28
+ });
29
+ Object.defineProperty(exports, "Release", {
30
+ enumerable: true,
31
+ get: function() {
32
+ return _release.default;
33
+ }
34
+ });
35
+ Object.defineProperty(exports, "Entries", {
36
+ enumerable: true,
37
+ get: function() {
38
+ return _entries.default;
39
+ }
40
+ });
41
+ Object.defineProperty(exports, "Project", {
42
+ enumerable: true,
43
+ get: function() {
44
+ return _project.default;
45
+ }
46
+ });
47
+ Object.defineProperty(exports, "Projects", {
48
+ enumerable: true,
49
+ get: function() {
50
+ return _projects.default;
51
+ }
52
+ });
53
+ Object.defineProperty(exports, "filePathUtilities", {
54
+ enumerable: true,
55
+ get: function() {
56
+ return _filePath.default;
57
+ }
58
+ });
59
+ var _file = _interopRequireDefault(require("./file"));
60
+ var _files = _interopRequireDefault(require("./files"));
61
+ var _types = _interopRequireDefault(require("./types"));
62
+ var _version = _interopRequireDefault(require("./version"));
63
+ var _release = _interopRequireDefault(require("./release"));
64
+ var _entries = _interopRequireDefault(require("./entries"));
65
+ var _project = _interopRequireDefault(require("./project"));
66
+ var _projects = _interopRequireDefault(require("./projects"));
67
+ var _filePath = _interopRequireDefault(require("./utilities/filePath"));
68
+ function _interopRequireDefault(obj) {
69
+ return obj && obj.__esModule ? obj : {
70
+ default: obj
71
+ };
72
+ }
73
+
74
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBGaWxlIH0gZnJvbSBcIi4vZmlsZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBGaWxlcyB9IGZyb20gXCIuL2ZpbGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHR5cGVzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVmVyc2lvbiB9IGZyb20gXCIuL3ZlcnNpb25cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZSB9IGZyb20gXCIuL3JlbGVhc2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRW50cmllcyB9IGZyb20gXCIuL2VudHJpZXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUHJvamVjdHMgfSBmcm9tIFwiLi9wcm9qZWN0c1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmaWxlUGF0aFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9maWxlUGF0aFwiO1xuIl0sIm5hbWVzIjpbIkZpbGUiLCJkZWZhdWx0IiwiRmlsZXMiLCJ0eXBlcyIsIlZlcnNpb24iLCJSZWxlYXNlIiwiRW50cmllcyIsIlByb2plY3QiLCJQcm9qZWN0cyIsImZpbGVQYXRoVXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQSxDQUFZOzs7OytCQUVRQSxDQUFJOzs7cUJBQWZDLE9BQU87OzsrQkFDSUMsQ0FBSzs7O3NCQUFoQkQsT0FBTzs7OytCQUNJRSxDQUFLOzs7c0JBQWhCRixPQUFPOzs7K0JBQ0lHLENBQU87Ozt3QkFBbEJILE9BQU87OzsrQkFDSUksQ0FBTzs7O3dCQUFsQkosT0FBTzs7OytCQUNJSyxDQUFPOzs7d0JBQWxCTCxPQUFPOzs7K0JBQ0lNLENBQU87Ozt3QkFBbEJOLE9BQU87OzsrQkFDSU8sQ0FBUTs7O3lCQUFuQlAsT0FBTzs7OytCQUNJUSxDQUFpQjs7O3lCQUE1QlIsT0FBTyJ9
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.ENTRIES_MAXIMUM_ARRAY_LENGTH = exports.DOUBLE_SPACE = void 0;
6
+ var DOUBLE_SPACE = " ";
7
+ exports.DOUBLE_SPACE = DOUBLE_SPACE;
8
+ var ENTRIES_MAXIMUM_ARRAY_LENGTH = 1024;
9
+ exports.ENTRIES_MAXIMUM_ARRAY_LENGTH = ENTRIES_MAXIMUM_ARRAY_LENGTH;
10
+
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBET1VCTEVfU1BBQ0UgPSBcIiAgXCI7XG5leHBvcnQgY29uc3QgRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSCA9IDEwMjQ7XG4iXSwibmFtZXMiOlsiRE9VQkxFX1NQQUNFIiwiRU5UUklFU19NQVhJTVVNX0FSUkFZX0xFTkdUSCJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7Ozs7QUFFTCxHQUFLLENBQUNBLFlBQVksR0FBRyxDQUFJO1FBQW5CQSxZQUFZLEdBQVpBLFlBQVk7QUFDbEIsR0FBSyxDQUFDQyw0QkFBNEIsR0FBRyxJQUFJO1FBQW5DQSw0QkFBNEIsR0FBNUJBLDRCQUE0QiJ9
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.default = void 0;
6
+ var _types = require("./types");
7
+ function _classCallCheck(instance, Constructor) {
8
+ if (!(instance instanceof Constructor)) {
9
+ throw new TypeError("Cannot call a class as a function");
10
+ }
11
+ }
12
+ function _defineProperties(target, props) {
13
+ for(var i = 0; i < props.length; i++){
14
+ var descriptor = props[i];
15
+ descriptor.enumerable = descriptor.enumerable || false;
16
+ descriptor.configurable = true;
17
+ if ("value" in descriptor) descriptor.writable = true;
18
+ Object.defineProperty(target, descriptor.key, descriptor);
19
+ }
20
+ }
21
+ function _createClass(Constructor, protoProps, staticProps) {
22
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
23
+ if (staticProps) _defineProperties(Constructor, staticProps);
24
+ return Constructor;
25
+ }
26
+ function _defineProperty(obj, key, value) {
27
+ if (key in obj) {
28
+ Object.defineProperty(obj, key, {
29
+ value: value,
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true
33
+ });
34
+ } else {
35
+ obj[key] = value;
36
+ }
37
+ return obj;
38
+ }
39
+ var Directory = /*#__PURE__*/ function() {
40
+ function Directory(path) {
41
+ _classCallCheck(this, Directory);
42
+ this.path = path;
43
+ }
44
+ _createClass(Directory, [
45
+ {
46
+ key: "getPath",
47
+ value: function getPath() {
48
+ return this.path;
49
+ }
50
+ },
51
+ {
52
+ key: "isFile",
53
+ value: function isFile() {
54
+ var file = false;
55
+ return file;
56
+ }
57
+ },
58
+ {
59
+ key: "isDirectory",
60
+ value: function isDirectory() {
61
+ var directory = true;
62
+ return directory;
63
+ }
64
+ },
65
+ {
66
+ key: "toJSON",
67
+ value: function toJSON() {
68
+ var type = Directory.type, path = this.path, json = {
69
+ type: type,
70
+ path: path
71
+ };
72
+ return json;
73
+ }
74
+ }
75
+ ], [
76
+ {
77
+ key: "fromJSON",
78
+ value: function fromJSON(json) {
79
+ var directory = null;
80
+ if (json !== null) {
81
+ var type = json.type;
82
+ if (type === _types.DIRECTORY_TYPE) {
83
+ var path = json.path;
84
+ directory = new Directory(path);
85
+ }
86
+ }
87
+ return directory;
88
+ }
89
+ }
90
+ ]);
91
+ return Directory;
92
+ }();
93
+ _defineProperty(Directory, "type", _types.DIRECTORY_TYPE);
94
+ exports.default = Directory;
95
+
96
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RvcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IERJUkVDVE9SWV9UWVBFIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlyZWN0b3J5IHtcbiAgY29uc3RydWN0b3IocGF0aCkge1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gIH1cblxuICBnZXRQYXRoKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGg7XG4gIH1cblxuICBpc0ZpbGUoKSB7XG4gICAgY29uc3QgZmlsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICBpc0RpcmVjdG9yeSgpIHtcbiAgICBjb25zdCBkaXJlY3RvcnkgPSB0cnVlO1xuXG4gICAgcmV0dXJuIGRpcmVjdG9yeTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IERpcmVjdG9yeSxcbiAgICAgICAgICBwYXRoID0gdGhpcy5wYXRoLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcGF0aFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyB0eXBlID0gRElSRUNUT1JZX1RZUEU7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBsZXQgZGlyZWN0b3J5ID0gbnVsbDtcblxuICAgIGlmIChqc29uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IHR5cGUgfSA9IGpzb247XG5cbiAgICAgIGlmICh0eXBlID09PSBESVJFQ1RPUllfVFlQRSkge1xuICAgICAgICBjb25zdCB7IHBhdGggfSA9IGpzb247XG5cbiAgICAgICAgZGlyZWN0b3J5ID0gbmV3IERpcmVjdG9yeShwYXRoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlyZWN0b3J5O1xuICB9XG59XG4iXSwibmFtZXMiOlsiRGlyZWN0b3J5IiwicGF0aCIsImdldFBhdGgiLCJpc0ZpbGUiLCJmaWxlIiwiaXNEaXJlY3RvcnkiLCJkaXJlY3RvcnkiLCJ0b0pTT04iLCJ0eXBlIiwianNvbiIsImZyb21KU09OIiwiRElSRUNUT1JZX1RZUEUiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7O0FBRW1CLEdBQVMsQ0FBVCxNQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFbkJBLFNBQVMsaUJBQWYsUUFBUTthQUFGQSxTQUFTLENBQ2hCQyxJQUFJOztRQUNkLElBQUksQ0FBQ0EsSUFBSSxHQUFHQSxJQUFJOzs7O1lBR2xCQyxHQUFPLEVBQVBBLENBQU87bUJBQVBBLFFBQVEsQ0FBUkEsT0FBTyxHQUFHLENBQUM7Z0JBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQ0QsSUFBSTtZQUNsQixDQUFDOzs7WUFFREUsR0FBTSxFQUFOQSxDQUFNO21CQUFOQSxRQUFRLENBQVJBLE1BQU0sR0FBRyxDQUFDO2dCQUNSLEdBQUssQ0FBQ0MsSUFBSSxHQUFHLEtBQUs7Z0JBRWxCLE1BQU0sQ0FBQ0EsSUFBSTtZQUNiLENBQUM7OztZQUVEQyxHQUFXLEVBQVhBLENBQVc7bUJBQVhBLFFBQVEsQ0FBUkEsV0FBVyxHQUFHLENBQUM7Z0JBQ2IsR0FBSyxDQUFDQyxTQUFTLEdBQUcsSUFBSTtnQkFFdEIsTUFBTSxDQUFDQSxTQUFTO1lBQ2xCLENBQUM7OztZQUVEQyxHQUFNLEVBQU5BLENBQU07bUJBQU5BLFFBQVEsQ0FBUkEsTUFBTSxHQUFHLENBQUM7Z0JBQ1IsR0FBSyxDQUFHQyxJQUFJLEdBQUtSLFNBQVMsQ0FBbEJRLElBQUksRUFDTlAsSUFBSSxHQUFHLElBQUksQ0FBQ0EsSUFBSSxFQUNoQlEsSUFBSSxHQUFHLENBQUM7b0JBQ05ELElBQUksRUFBSkEsSUFBSTtvQkFDSlAsSUFBSSxFQUFKQSxJQUFJO2dCQUNOLENBQUM7Z0JBRVAsTUFBTSxDQUFDUSxJQUFJO1lBQ2IsQ0FBQzs7OztZQUlNQyxHQUFRLEVBQVJBLENBQVE7bUJBQWYsUUFBUSxDQUFEQSxRQUFRLENBQUNELElBQUksRUFBRSxDQUFDO2dCQUNyQixHQUFHLENBQUNILFNBQVMsR0FBRyxJQUFJO2dCQUVwQixFQUFFLEVBQUVHLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDbEIsR0FBSyxDQUFHRCxJQUFJLEdBQUtDLElBQUksQ0FBYkQsSUFBSTtvQkFFWixFQUFFLEVBQUVBLElBQUksS0FBS0csTUFBYyxpQkFBRSxDQUFDO3dCQUM1QixHQUFLLENBQUdWLElBQUksR0FBS1EsSUFBSSxDQUFiUixJQUFJO3dCQUVaSyxTQUFTLEdBQUcsR0FBRyxDQUFDTixTQUFTLENBQUNDLElBQUk7b0JBQ2hDLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxNQUFNLENBQUNLLFNBQVM7WUFDbEIsQ0FBQzs7Ozs7Z0JBaERrQk4sU0FBUyxFQWdDckJRLENBQUksT0FBR0csTUFBYztrQkFoQ1RYLFNBQVMifQ==
package/lib/entries.js ADDED
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.default = void 0;
6
+ var _necessary = require("necessary");
7
+ var _file = _interopRequireDefault(require("./file"));
8
+ var _files = _interopRequireDefault(require("./files"));
9
+ var _directory = _interopRequireDefault(require("./directory"));
10
+ function _classCallCheck(instance, Constructor) {
11
+ if (!(instance instanceof Constructor)) {
12
+ throw new TypeError("Cannot call a class as a function");
13
+ }
14
+ }
15
+ function _defineProperties(target, props) {
16
+ for(var i = 0; i < props.length; i++){
17
+ var descriptor = props[i];
18
+ descriptor.enumerable = descriptor.enumerable || false;
19
+ descriptor.configurable = true;
20
+ if ("value" in descriptor) descriptor.writable = true;
21
+ Object.defineProperty(target, descriptor.key, descriptor);
22
+ }
23
+ }
24
+ function _createClass(Constructor, protoProps, staticProps) {
25
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
26
+ if (staticProps) _defineProperties(Constructor, staticProps);
27
+ return Constructor;
28
+ }
29
+ function _interopRequireDefault(obj) {
30
+ return obj && obj.__esModule ? obj : {
31
+ default: obj
32
+ };
33
+ }
34
+ var first = _necessary.arrayUtilities.first, filter = _necessary.arrayUtilities.filter, topmostDirectoryNameFromPath = _necessary.pathUtilities.topmostDirectoryNameFromPath;
35
+ var Entries = /*#__PURE__*/ function() {
36
+ function Entries(array) {
37
+ _classCallCheck(this, Entries);
38
+ this.array = array;
39
+ }
40
+ _createClass(Entries, [
41
+ {
42
+ key: "getTopmostDirectoryName",
43
+ value: function getTopmostDirectoryName() {
44
+ var topmostDirectoryName = null;
45
+ var firstEntry = first(this.array); ///
46
+ if (firstEntry) {
47
+ var firstEntryPath = firstEntry.getPath();
48
+ topmostDirectoryName = topmostDirectoryNameFromPath(firstEntryPath);
49
+ if (topmostDirectoryName === null) {
50
+ topmostDirectoryName = firstEntryPath;
51
+ }
52
+ }
53
+ return topmostDirectoryName;
54
+ }
55
+ },
56
+ {
57
+ key: "removeFileByPath",
58
+ value: function removeFileByPath(path) {
59
+ filter(this.array, function(entry) {
60
+ var entryFile = entry.isFile();
61
+ if (entryFile) {
62
+ var file = entry, filePath = file.getPath();
63
+ if (filePath === path) {
64
+ return false;
65
+ }
66
+ }
67
+ return true;
68
+ });
69
+ }
70
+ },
71
+ {
72
+ key: "getFiles",
73
+ value: function getFiles() {
74
+ var files = _files.default.fromNothing();
75
+ this.mapEntry(function(entry) {
76
+ var entryFile = entry.isFile();
77
+ if (entryFile) {
78
+ var file = entry; ///
79
+ files.addFile(file);
80
+ }
81
+ });
82
+ return files;
83
+ }
84
+ },
85
+ {
86
+ key: "getFilePaths",
87
+ value: function getFilePaths() {
88
+ var filePaths1 = this.reduceEntry(function(filePaths, entry) {
89
+ var entryFile = entry.isFile();
90
+ if (entryFile) {
91
+ var file = entry, filePath = file.getPath();
92
+ filePaths.push(filePath);
93
+ }
94
+ return filePaths;
95
+ }, []);
96
+ return filePaths1;
97
+ }
98
+ },
99
+ {
100
+ key: "getDirectoryPaths",
101
+ value: function getDirectoryPaths() {
102
+ var directoryPaths1 = this.reduceEntry(function(directoryPaths, entry) {
103
+ var entryDirectory = entry.isDirectory();
104
+ if (entryDirectory) {
105
+ var directory = entry, directoryPath = directory.getPath();
106
+ directoryPaths.push(directoryPath);
107
+ }
108
+ return directoryPaths;
109
+ }, []);
110
+ return directoryPaths1;
111
+ }
112
+ },
113
+ {
114
+ key: "addFile",
115
+ value: function addFile(file) {
116
+ this.array.push(file);
117
+ }
118
+ },
119
+ {
120
+ key: "mapEntry",
121
+ value: function mapEntry(callback) {
122
+ return this.array.map(callback);
123
+ }
124
+ },
125
+ {
126
+ key: "someEntry",
127
+ value: function someEntry(callback) {
128
+ return this.array.some(callback);
129
+ }
130
+ },
131
+ {
132
+ key: "everyEntry",
133
+ value: function everyEntry(callback) {
134
+ return this.array.every(callback);
135
+ }
136
+ },
137
+ {
138
+ key: "forEachEntry",
139
+ value: function forEachEntry(callback) {
140
+ this.array.forEach(callback);
141
+ }
142
+ },
143
+ {
144
+ key: "reduceEntry",
145
+ value: function reduceEntry(callback, initialValue) {
146
+ return this.array.reduce(callback, initialValue);
147
+ }
148
+ },
149
+ {
150
+ key: "toJSON",
151
+ value: function toJSON() {
152
+ var entriesJSON = this.array.map(function(entry) {
153
+ var entryJSON = entry.toJSON();
154
+ return entryJSON;
155
+ }), json = entriesJSON; ///
156
+ return json;
157
+ }
158
+ }
159
+ ], [
160
+ {
161
+ key: "fromJSON",
162
+ value: function fromJSON(json1) {
163
+ var entriesJSON = json1, array = entriesJSON.map(function(entryJSON) {
164
+ var json = entryJSON, file = _file.default.fromJSON(json), directory = _directory.default.fromJSON(json), entry = file || directory; ///
165
+ return entry;
166
+ }), entries = new Entries(array);
167
+ return entries;
168
+ }
169
+ },
170
+ {
171
+ key: "fromEntry",
172
+ value: function fromEntry(entry) {
173
+ var array = [
174
+ entry
175
+ ], entries = new Entries(array);
176
+ return entries;
177
+ }
178
+ },
179
+ {
180
+ key: "fromNothing",
181
+ value: function fromNothing() {
182
+ var array = [], entries = new Entries(array);
183
+ return entries;
184
+ }
185
+ }
186
+ ]);
187
+ return Entries;
188
+ }();
189
+ exports.default = Entries;
190
+
191
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnRyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBwYXRoVXRpbGl0aWVzLCBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEZpbGUgZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IEZpbGVzIGZyb20gXCIuL2ZpbGVzXCI7XG5pbXBvcnQgRGlyZWN0b3J5IGZyb20gXCIuL2RpcmVjdG9yeVwiO1xuXG5jb25zdCB7IGZpcnN0LCBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIH0gPSBwYXRoVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnRyaWVzIHtcbiAgY29uc3RydWN0b3IoYXJyYXkpIHtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG4gIH1cblxuICBnZXRUb3Btb3N0RGlyZWN0b3J5TmFtZSgpIHtcbiAgICBsZXQgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSBudWxsO1xuICAgIFxuICAgIGNvbnN0IGZpcnN0RW50cnkgPSBmaXJzdCh0aGlzLmFycmF5KTsgLy8vXG5cbiAgICBpZiAoZmlyc3RFbnRyeSkgeyAvLy9cbiAgICAgIGNvbnN0IGZpcnN0RW50cnlQYXRoID0gZmlyc3RFbnRyeS5nZXRQYXRoKCk7XG5cbiAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lID0gdG9wbW9zdERpcmVjdG9yeU5hbWVGcm9tUGF0aChmaXJzdEVudHJ5UGF0aCk7XG5cbiAgICAgIGlmICh0b3Btb3N0RGlyZWN0b3J5TmFtZSA9PT0gbnVsbCkge1xuICAgICAgICB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IGZpcnN0RW50cnlQYXRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b3Btb3N0RGlyZWN0b3J5TmFtZTtcbiAgfVxuXG4gIHJlbW92ZUZpbGVCeVBhdGgocGF0aCkge1xuICAgIGZpbHRlcih0aGlzLmFycmF5LCAoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5RmlsZSA9IGVudHJ5LmlzRmlsZSgpO1xuXG4gICAgICBpZiAoZW50cnlGaWxlKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBlbnRyeSwgLy8vXG4gICAgICAgICAgICAgIGZpbGVQYXRoID0gZmlsZS5nZXRQYXRoKCk7XG5cbiAgICAgICAgaWYgKGZpbGVQYXRoID09PSBwYXRoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RmlsZXMoKSB7XG4gICAgY29uc3QgZmlsZXMgPSBGaWxlcy5mcm9tTm90aGluZygpO1xuXG4gICAgdGhpcy5tYXBFbnRyeSgoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5RmlsZSA9IGVudHJ5LmlzRmlsZSgpO1xuXG4gICAgICBpZiAoZW50cnlGaWxlKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBlbnRyeTsgLy8vXG5cbiAgICAgICAgZmlsZXMuYWRkRmlsZShmaWxlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmaWxlcztcbiAgfVxuXG4gIGdldEZpbGVQYXRocygpIHtcbiAgICBjb25zdCBmaWxlUGF0aHMgPSB0aGlzLnJlZHVjZUVudHJ5KChmaWxlUGF0aHMsIGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcblxuICAgICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZW50cnksIC8vL1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpO1xuXG4gICAgICAgIGZpbGVQYXRocy5wdXNoKGZpbGVQYXRoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpbGVQYXRocztcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gZmlsZVBhdGhzO1xuICB9XG5cbiAgZ2V0RGlyZWN0b3J5UGF0aHMoKSB7XG4gICAgY29uc3QgZGlyZWN0b3J5UGF0aHMgPSB0aGlzLnJlZHVjZUVudHJ5KChkaXJlY3RvcnlQYXRocywgZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5RGlyZWN0b3J5ID0gZW50cnkuaXNEaXJlY3RvcnkoKTtcblxuICAgICAgaWYgKGVudHJ5RGlyZWN0b3J5KSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdG9yeSA9IGVudHJ5LCAvLy9cbiAgICAgICAgICAgICAgZGlyZWN0b3J5UGF0aCA9IGRpcmVjdG9yeS5nZXRQYXRoKCk7XG5cbiAgICAgICAgZGlyZWN0b3J5UGF0aHMucHVzaChkaXJlY3RvcnlQYXRoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRpcmVjdG9yeVBhdGhzO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBkaXJlY3RvcnlQYXRocztcbiAgfVxuXG4gIGFkZEZpbGUoZmlsZSkge1xuICAgIHRoaXMuYXJyYXkucHVzaChmaWxlKTtcbiAgfVxuXG4gIG1hcEVudHJ5KGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5Lm1hcChjYWxsYmFjayk7IH1cblxuICBzb21lRW50cnkoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuYXJyYXkuc29tZShjYWxsYmFjayk7IH1cblxuICBldmVyeUVudHJ5KGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5LmV2ZXJ5KGNhbGxiYWNrKTsgfVxuXG4gIGZvckVhY2hFbnRyeShjYWxsYmFjaykgeyB0aGlzLmFycmF5LmZvckVhY2goY2FsbGJhY2spOyB9XG5cbiAgcmVkdWNlRW50cnkoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkgeyByZXR1cm4gdGhpcy5hcnJheS5yZWR1Y2UoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSk7IH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgZW50cmllc0pTT04gPSB0aGlzLmFycmF5Lm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5SlNPTiA9IGVudHJ5LnRvSlNPTigpO1xuICBcbiAgICAgICAgICAgIHJldHVybiBlbnRyeUpTT047XG4gICAgICAgICAgfSksXG4gICAgICAgICAganNvbiA9IGVudHJpZXNKU09OOyAvLy9cblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICBjb25zdCBlbnRyaWVzSlNPTiA9IGpzb24sIC8vL1xuICAgICAgICAgIGFycmF5ID0gZW50cmllc0pTT04ubWFwKChlbnRyeUpTT04pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSBlbnRyeUpTT04sIC8vL1xuICAgICAgICAgICAgICAgICAgZmlsZSA9IEZpbGUuZnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgPSBEaXJlY3RvcnkuZnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgICAgICBlbnRyeSA9IGZpbGUgfHwgZGlyZWN0b3J5OyAgLy8vXG5cbiAgICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbUVudHJ5KGVudHJ5KSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXG4gICAgICAgICAgICBlbnRyeVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZW50cmllcyA9IG5ldyBFbnRyaWVzKGFycmF5KTtcblxuICAgIHJldHVybiBlbnRyaWVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IGFycmF5ID0gW10sXG4gICAgICAgICAgZW50cmllcyA9IG5ldyBFbnRyaWVzKGFycmF5KTtcblxuICAgIHJldHVybiBlbnRyaWVzO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsImZpbHRlciIsInRvcG1vc3REaXJlY3RvcnlOYW1lRnJvbVBhdGgiLCJwYXRoVXRpbGl0aWVzIiwiRW50cmllcyIsImFycmF5IiwiZ2V0VG9wbW9zdERpcmVjdG9yeU5hbWUiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZSIsImZpcnN0RW50cnkiLCJmaXJzdEVudHJ5UGF0aCIsImdldFBhdGgiLCJyZW1vdmVGaWxlQnlQYXRoIiwicGF0aCIsImVudHJ5IiwiZW50cnlGaWxlIiwiaXNGaWxlIiwiZmlsZSIsImZpbGVQYXRoIiwiZ2V0RmlsZXMiLCJmaWxlcyIsIkZpbGVzIiwiZnJvbU5vdGhpbmciLCJtYXBFbnRyeSIsImFkZEZpbGUiLCJnZXRGaWxlUGF0aHMiLCJmaWxlUGF0aHMiLCJyZWR1Y2VFbnRyeSIsInB1c2giLCJnZXREaXJlY3RvcnlQYXRocyIsImRpcmVjdG9yeVBhdGhzIiwiZW50cnlEaXJlY3RvcnkiLCJpc0RpcmVjdG9yeSIsImRpcmVjdG9yeSIsImRpcmVjdG9yeVBhdGgiLCJjYWxsYmFjayIsIm1hcCIsInNvbWVFbnRyeSIsInNvbWUiLCJldmVyeUVudHJ5IiwiZXZlcnkiLCJmb3JFYWNoRW50cnkiLCJmb3JFYWNoIiwiaW5pdGlhbFZhbHVlIiwicmVkdWNlIiwidG9KU09OIiwiZW50cmllc0pTT04iLCJlbnRyeUpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJGaWxlIiwiRGlyZWN0b3J5IiwiZW50cmllcyIsImZyb21FbnRyeSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7Ozs7QUFFa0MsR0FBVyxDQUFYLFVBQVc7QUFFeEMsR0FBUSxDQUFSLEtBQVE7QUFDUCxHQUFTLENBQVQsTUFBUztBQUNMLEdBQWEsQ0FBYixVQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5DLEdBQUssQ0FBR0EsS0FBSyxHQUFhQyxVQUFjLGdCQUFoQ0QsS0FBSyxFQUFFRSxNQUFNLEdBQUtELFVBQWMsZ0JBQXpCQyxNQUFNLEVBQ2JDLDRCQUE0QixHQUFLQyxVQUFhLGVBQTlDRCw0QkFBNEI7SUFFZkUsT0FBTyxpQkFBYixRQUFR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
package/lib/file.js ADDED
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.convertContentTabsToWhitespace = convertContentTabsToWhitespace;
6
+ exports.default = void 0;
7
+ var _types = require("./types");
8
+ var _constants = require("./constants");
9
+ function _classCallCheck(instance, Constructor) {
10
+ if (!(instance instanceof Constructor)) {
11
+ throw new TypeError("Cannot call a class as a function");
12
+ }
13
+ }
14
+ function _defineProperties(target, props) {
15
+ for(var i = 0; i < props.length; i++){
16
+ var descriptor = props[i];
17
+ descriptor.enumerable = descriptor.enumerable || false;
18
+ descriptor.configurable = true;
19
+ if ("value" in descriptor) descriptor.writable = true;
20
+ Object.defineProperty(target, descriptor.key, descriptor);
21
+ }
22
+ }
23
+ function _createClass(Constructor, protoProps, staticProps) {
24
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
25
+ if (staticProps) _defineProperties(Constructor, staticProps);
26
+ return Constructor;
27
+ }
28
+ function _defineProperty(obj, key, value) {
29
+ if (key in obj) {
30
+ Object.defineProperty(obj, key, {
31
+ value: value,
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true
35
+ });
36
+ } else {
37
+ obj[key] = value;
38
+ }
39
+ return obj;
40
+ }
41
+ var File = /*#__PURE__*/ function() {
42
+ function File(path, content) {
43
+ _classCallCheck(this, File);
44
+ this.path = path;
45
+ this.content = content;
46
+ }
47
+ _createClass(File, [
48
+ {
49
+ key: "getPath",
50
+ value: function getPath() {
51
+ return this.path;
52
+ }
53
+ },
54
+ {
55
+ key: "getContent",
56
+ value: function getContent() {
57
+ return this.content;
58
+ }
59
+ },
60
+ {
61
+ key: "isFile",
62
+ value: function isFile() {
63
+ var file = true;
64
+ return file;
65
+ }
66
+ },
67
+ {
68
+ key: "isDirectory",
69
+ value: function isDirectory() {
70
+ var directory = false;
71
+ return directory;
72
+ }
73
+ },
74
+ {
75
+ key: "setPath",
76
+ value: function setPath(path) {
77
+ this.path = path;
78
+ }
79
+ },
80
+ {
81
+ key: "setContent",
82
+ value: function setContent(content) {
83
+ this.content = content;
84
+ }
85
+ },
86
+ {
87
+ key: "toJSON",
88
+ value: function toJSON() {
89
+ var type = File.type, path = this.path, content = this.content, json = {
90
+ type: type,
91
+ path: path,
92
+ content: content
93
+ };
94
+ return json;
95
+ }
96
+ }
97
+ ], [
98
+ {
99
+ key: "fromJSON",
100
+ value: function fromJSON(json) {
101
+ var file = null;
102
+ if (json !== null) {
103
+ var type = json.type;
104
+ if (type === _types.FILE_TYPE) {
105
+ var content = json.content;
106
+ var path = json.path;
107
+ content = convertContentTabsToWhitespace(content); ///
108
+ file = new File(path, content);
109
+ }
110
+ }
111
+ return file;
112
+ }
113
+ },
114
+ {
115
+ key: "fromDocument",
116
+ value: function fromDocument(document) {
117
+ var filePath = document.getFilePath(), path = filePath; ///
118
+ var content = document.getContent();
119
+ content = convertContentTabsToWhitespace(content); ///
120
+ var file = new File(path, content);
121
+ return file;
122
+ }
123
+ },
124
+ {
125
+ key: "fromPathAndContent",
126
+ value: function fromPathAndContent(path, content) {
127
+ content = convertContentTabsToWhitespace(content); ///
128
+ var file = new File(path, content);
129
+ return file;
130
+ }
131
+ }
132
+ ]);
133
+ return File;
134
+ }();
135
+ _defineProperty(File, "type", _types.FILE_TYPE);
136
+ exports.default = File;
137
+ function convertContentTabsToWhitespace(content) {
138
+ return content.replace(/\t/g, _constants.DOUBLE_SPACE);
139
+ } ///
140
+
141
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBGSUxFX1RZUEUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgRE9VQkxFX1NQQUNFIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGUge1xuICBjb25zdHJ1Y3RvcihwYXRoLCBjb250ZW50KSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50O1xuICB9XG5cbiAgZ2V0UGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoO1xuICB9XG5cbiAgZ2V0Q29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50O1xuICB9XG5cbiAgaXNGaWxlKCkge1xuICAgIGNvbnN0IGZpbGUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICBpc0RpcmVjdG9yeSgpIHtcbiAgICBjb25zdCBkaXJlY3RvcnkgPSBmYWxzZTtcblxuICAgIHJldHVybiBkaXJlY3Rvcnk7XG4gIH1cblxuICBzZXRQYXRoKHBhdGgpIHtcbiAgICB0aGlzLnBhdGggPSBwYXRoO1xuICB9XG5cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgdGhpcy5jb250ZW50ID0gY29udGVudDtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IEZpbGUsXG4gICAgICAgICAgcGF0aCA9IHRoaXMucGF0aCxcbiAgICAgICAgICBjb250ZW50ID0gdGhpcy5jb250ZW50LFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIGNvbnRlbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgdHlwZSA9IEZJTEVfVFlQRTtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xuICAgIGxldCBmaWxlID0gbnVsbDtcblxuICAgIGlmIChqc29uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IHR5cGUgfSA9IGpzb247XG5cbiAgICAgIGlmICh0eXBlID09PSBGSUxFX1RZUEUpIHtcbiAgICAgICAgbGV0IHsgY29udGVudCB9ID0ganNvbjtcblxuICAgICAgICBjb25zdCB7IHBhdGggfSA9IGpzb247XG5cbiAgICAgICAgY29udGVudCA9IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZShjb250ZW50KTsgIC8vL1xuXG4gICAgICAgIGZpbGUgPSBuZXcgRmlsZShwYXRoLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRG9jdW1lbnQoZG9jdW1lbnQpIHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGRvY3VtZW50LmdldEZpbGVQYXRoKCksXG4gICAgICAgICAgcGF0aCA9IGZpbGVQYXRoOyAgLy8vXG5cbiAgICBsZXQgY29udGVudCA9IGRvY3VtZW50LmdldENvbnRlbnQoKTtcblxuICAgIGNvbnRlbnQgPSBjb252ZXJ0Q29udGVudFRhYnNUb1doaXRlc3BhY2UoY29udGVudCk7ICAvLy9cblxuICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShwYXRoLCBjb250ZW50KTtcblxuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21QYXRoQW5kQ29udGVudChwYXRoLCBjb250ZW50KSB7XG4gICAgY29udGVudCA9IGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZShjb250ZW50KTsgIC8vL1xuXG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKHBhdGgsIGNvbnRlbnQpO1xuXG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZShjb250ZW50KSB7IHJldHVybiBjb250ZW50LnJlcGxhY2UoL1xcdC9nLCBET1VCTEVfU1BBQ0UpOyB9IC8vL1xuIl0sIm5hbWVzIjpbImNvbnZlcnRDb250ZW50VGFic1RvV2hpdGVzcGFjZSIsIkZpbGUiLCJwYXRoIiwiY29udGVudCIsImdldFBhdGgiLCJnZXRDb250ZW50IiwiaXNGaWxlIiwiZmlsZSIsImlzRGlyZWN0b3J5IiwiZGlyZWN0b3J5Iiwic2V0UGF0aCIsInNldENvbnRlbnQiLCJ0b0pTT04iLCJ0eXBlIiwianNvbiIsImZyb21KU09OIiwiRklMRV9UWVBFIiwiZnJvbURvY3VtZW50IiwiZG9jdW1lbnQiLCJmaWxlUGF0aCIsImdldEZpbGVQYXRoIiwiZnJvbVBhdGhBbmRDb250ZW50IiwicmVwbGFjZSIsIkRPVUJMRV9TUEFDRSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQWdHSUEsOEJBQThCLEdBQTlCQSw4QkFBOEI7O0FBOUZwQixHQUFTLENBQVQsTUFBUztBQUNOLEdBQWEsQ0FBYixVQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFckJDLElBQUksaUJBQVYsUUFBUTthQUFGQSxJQUFJLENBQ1hDLElBQUksRUFBRUMsT0FBTzs7UUFDdkIsSUFBSSxDQUFDRCxJQUFJLEdBQUdBLElBQUk7UUFDaEIsSUFBSSxDQUFDQyxPQUFPLEdBQUdBLE9BQU87Ozs7WUFHeEJDLEdBQU8sRUFBUEEsQ0FBTzttQkFBUEEsUUFBUSxDQUFSQSxPQUFPLEdBQUcsQ0FBQztnQkFDVCxNQUFNLENBQUMsSUFBSSxDQUFDRixJQUFJO1lBQ2xCLENBQUM7OztZQUVERyxHQUFVLEVBQVZBLENBQVU7bUJBQVZBLFFBQVEsQ0FBUkEsVUFBVSxHQUFHLENBQUM7Z0JBQ1osTUFBTSxDQUFDLElBQUksQ0FBQ0YsT0FBTztZQUNyQixDQUFDOzs7WUFFREcsR0FBTSxFQUFOQSxDQUFNO21CQUFOQSxRQUFRLENBQVJBLE1BQU0sR0FBRyxDQUFDO2dCQUNSLEdBQUssQ0FBQ0MsSUFBSSxHQUFHLElBQUk7Z0JBRWpCLE1BQU0s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
package/lib/files.js ADDED
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.default = void 0;
6
+ var _file = _interopRequireDefault(require("./file"));
7
+ function _classCallCheck(instance, Constructor) {
8
+ if (!(instance instanceof Constructor)) {
9
+ throw new TypeError("Cannot call a class as a function");
10
+ }
11
+ }
12
+ function _defineProperties(target, props) {
13
+ for(var i = 0; i < props.length; i++){
14
+ var descriptor = props[i];
15
+ descriptor.enumerable = descriptor.enumerable || false;
16
+ descriptor.configurable = true;
17
+ if ("value" in descriptor) descriptor.writable = true;
18
+ Object.defineProperty(target, descriptor.key, descriptor);
19
+ }
20
+ }
21
+ function _createClass(Constructor, protoProps, staticProps) {
22
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
23
+ if (staticProps) _defineProperties(Constructor, staticProps);
24
+ return Constructor;
25
+ }
26
+ function _interopRequireDefault(obj) {
27
+ return obj && obj.__esModule ? obj : {
28
+ default: obj
29
+ };
30
+ }
31
+ var Files = /*#__PURE__*/ function() {
32
+ function Files(array) {
33
+ _classCallCheck(this, Files);
34
+ this.array = array;
35
+ }
36
+ _createClass(Files, [
37
+ {
38
+ key: "getFilePaths",
39
+ value: function getFilePaths() {
40
+ var filePaths = this.mapFile(function(file) {
41
+ var filePath = file.getPath();
42
+ return filePath;
43
+ });
44
+ return filePaths;
45
+ }
46
+ },
47
+ {
48
+ key: "addFile",
49
+ value: function addFile(file) {
50
+ this.array.push(file);
51
+ }
52
+ },
53
+ {
54
+ key: "mapFile",
55
+ value: function mapFile(callback) {
56
+ return this.array.map(callback);
57
+ }
58
+ },
59
+ {
60
+ key: "someFile",
61
+ value: function someFile(callback) {
62
+ return this.array.some(callback);
63
+ }
64
+ },
65
+ {
66
+ key: "reduceFile",
67
+ value: function reduceFile(callback, initialValue) {
68
+ return this.array.reduce(callback, initialValue);
69
+ }
70
+ },
71
+ {
72
+ key: "forEachFile",
73
+ value: function forEachFile(callback) {
74
+ this.array.forEach(callback);
75
+ }
76
+ },
77
+ {
78
+ key: "findFile",
79
+ value: function findFile(callback) {
80
+ return this.array.find(callback) || null; ///
81
+ }
82
+ },
83
+ {
84
+ key: "toJSON",
85
+ value: function toJSON() {
86
+ var filesJSON = this.array.map(function(file) {
87
+ var fileJSON = file !== null ? file.toJSON() : null;
88
+ return fileJSON;
89
+ }), json = filesJSON; ///
90
+ return json;
91
+ }
92
+ }
93
+ ], [
94
+ {
95
+ key: "fromJSON",
96
+ value: function fromJSON(json1) {
97
+ var filesJSON = json1, array = [], files = new Files(array);
98
+ filesJSON.forEach(function(fileJSON) {
99
+ var json = fileJSON, file = _file.default.fromJSON(json);
100
+ files.addFile(file);
101
+ });
102
+ return files;
103
+ }
104
+ },
105
+ {
106
+ key: "fromNothing",
107
+ value: function fromNothing() {
108
+ var array = [], files = new Files(array);
109
+ return files;
110
+ }
111
+ }
112
+ ]);
113
+ return Files;
114
+ }();
115
+ exports.default = Files;
116
+
117
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEZpbGUgZnJvbSBcIi4vZmlsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWxlcyB7XG4gIGNvbnN0cnVjdG9yKGFycmF5KSB7XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xuICB9XG5cbiAgZ2V0RmlsZVBhdGhzKCkge1xuICAgIGNvbnN0IGZpbGVQYXRocyA9IHRoaXMubWFwRmlsZSgoZmlsZSkgPT4ge1xuICAgICAgY29uc3QgZmlsZVBhdGggPSBmaWxlLmdldFBhdGgoKTtcblxuICAgICAgcmV0dXJuIGZpbGVQYXRoO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRocztcbiAgfVxuXG4gIGFkZEZpbGUoZmlsZSkge1xuICAgIHRoaXMuYXJyYXkucHVzaChmaWxlKTtcbiAgfVxuXG4gIG1hcEZpbGUoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheS5tYXAoY2FsbGJhY2spO1xuICB9XG5cbiAgc29tZUZpbGUoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheS5zb21lKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHJlZHVjZUZpbGUoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICAgIHJldHVybiB0aGlzLmFycmF5LnJlZHVjZShjYWxsYmFjaywgaW5pdGlhbFZhbHVlKTtcbiAgfVxuXG4gIGZvckVhY2hGaWxlKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5hcnJheS5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGZpbmRGaWxlKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXkuZmluZChjYWxsYmFjaykgfHwgbnVsbDsgLy8vXG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgZmlsZXNKU09OID0gdGhpcy5hcnJheS5tYXAoKGZpbGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVKU09OID0gKGZpbGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgXG4gICAgICAgICAgICByZXR1cm4gZmlsZUpTT047XG4gICAgICAgICAgfSksXG4gICAgICAgICAganNvbiA9IGZpbGVzSlNPTjsgLy8vXG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgZmlsZXNKU09OID0ganNvbiwgLy8vXG4gICAgICAgICAgYXJyYXkgPSBbXSxcbiAgICAgICAgICBmaWxlcyA9IG5ldyBGaWxlcyhhcnJheSk7XG4gICAgXG4gICAgZmlsZXNKU09OLmZvckVhY2goKGZpbGVKU09OKSA9PiB7XG4gICAgICBjb25zdCBqc29uID0gZmlsZUpTT04sICAvLy9cbiAgICAgICAgICAgIGZpbGUgPSBGaWxlLmZyb21KU09OKGpzb24pO1xuXG4gICAgICBmaWxlcy5hZGRGaWxlKGZpbGUpO1xuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiBmaWxlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcbiAgICBjb25zdCBhcnJheSA9IFtdLFxuICAgICAgICAgIGZpbGVzID0gbmV3IEZpbGVzKGFycmF5KTtcblxuICAgIHJldHVybiBmaWxlcztcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkZpbGVzIiwiYXJyYXkiLCJnZXRGaWxlUGF0aHMiLCJmaWxlUGF0aHMiLCJtYXBGaWxlIiwiZmlsZSIsImZpbGVQYXRoIiwiZ2V0UGF0aCIsImFkZEZpbGUiLCJwdXNoIiwiY2FsbGJhY2siLCJtYXAiLCJzb21lRmlsZSIsInNvbWUiLCJyZWR1Y2VGaWxlIiwiaW5pdGlhbFZhbHVlIiwicmVkdWNlIiwiZm9yRWFjaEZpbGUiLCJmb3JFYWNoIiwiZmluZEZpbGUiLCJmaW5kIiwidG9KU09OIiwiZmlsZXNKU09O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