occam-file-system 5.0.13 → 5.0.15
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/README.md +4 -4
- package/lib/browser.js +63 -0
- package/lib/constants.js +13 -1
- package/lib/dependencies.js +81 -0
- package/lib/dependency.js +89 -0
- package/lib/directory.js +100 -0
- package/lib/entries.js +228 -0
- package/lib/file.js +141 -0
- package/lib/fileNames.js +38 -0
- package/lib/files.js +121 -0
- package/lib/loadProjects.js +1 -1
- package/lib/loadReleases.js +18 -0
- package/lib/main.js +103 -0
- package/lib/messages.js +13 -0
- package/lib/mixins/bnf.js +47 -0
- package/lib/mixins/entries.js +31 -0
- package/lib/mixins/files.js +41 -0
- package/lib/mixins/pattern.js +47 -0
- package/lib/project.js +123 -0
- package/lib/projects.js +112 -0
- package/lib/release.js +127 -0
- package/lib/releases.js +112 -0
- package/lib/shortenedVersion.js +125 -0
- package/lib/types.js +22 -0
- package/lib/utilities/content.js +34 -0
- package/lib/utilities/filePath.js +63 -0
- package/lib/utilities/fileSystem.js +130 -12
- package/lib/utilities/files.js +95 -0
- package/lib/utilities/metaJSON.js +80 -0
- package/lib/utilities/name.js +25 -4
- package/lib/utilities/query.js +48 -0
- package/lib/version.js +163 -0
- package/package.json +5 -3
- package/src/browser.js +14 -0
- package/src/constants.js +3 -0
- package/src/dependencies.js +46 -0
- package/src/dependency.js +52 -0
- package/src/directory.js +54 -0
- package/src/entries.js +192 -0
- package/src/file.js +95 -0
- package/src/fileNames.js +8 -0
- package/src/files.js +78 -0
- package/src/loadProjects.js +1 -1
- package/src/loadReleases.js +13 -0
- package/src/main.js +25 -0
- package/src/messages.js +3 -0
- package/src/mixins/bnf.js +59 -0
- package/src/mixins/entries.js +18 -0
- package/src/mixins/files.js +52 -0
- package/src/mixins/pattern.js +59 -0
- package/src/project.js +92 -0
- package/src/projects.js +66 -0
- package/src/release.js +97 -0
- package/src/releases.js +66 -0
- package/src/shortenedVersion.js +109 -0
- package/src/types.js +4 -0
- package/src/utilities/content.js +12 -0
- package/src/utilities/filePath.js +36 -0
- package/src/utilities/fileSystem.js +186 -15
- package/src/utilities/files.js +103 -0
- package/src/utilities/metaJSON.js +82 -0
- package/src/utilities/name.js +17 -0
- package/src/utilities/query.js +36 -0
- package/src/version.js +151 -0
- package/lib/index.js +0 -55
- package/lib/utilities/pathMaps.js +0 -31
- package/src/index.js +0 -11
- package/src/utilities/pathMaps.js +0 -21
|
@@ -0,0 +1,48 @@
|
|
|
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: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
nodeQuery: function() {
|
|
13
|
+
return nodeQuery;
|
|
14
|
+
},
|
|
15
|
+
nodesQuery: function() {
|
|
16
|
+
return nodesQuery;
|
|
17
|
+
},
|
|
18
|
+
default: function() {
|
|
19
|
+
return _default;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
var _occamDom = require("occam-dom");
|
|
23
|
+
function nodeQuery(expression) {
|
|
24
|
+
var query = _occamDom.Query.fromExpression(expression);
|
|
25
|
+
return function(node) {
|
|
26
|
+
if (node !== null) {
|
|
27
|
+
var nodes = query.execute(node);
|
|
28
|
+
node = nodes.shift() || null; ///
|
|
29
|
+
}
|
|
30
|
+
return node;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function nodesQuery(expression) {
|
|
34
|
+
var query = _occamDom.Query.fromExpression(expression);
|
|
35
|
+
return function(node) {
|
|
36
|
+
var nodes = null;
|
|
37
|
+
if (node !== null) {
|
|
38
|
+
nodes = query.execute(node);
|
|
39
|
+
}
|
|
40
|
+
return nodes;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
var _default = {
|
|
44
|
+
nodeQuery: nodeQuery,
|
|
45
|
+
nodesQuery: nodesQuery
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcXVlcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLWRvbVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9kZVF1ZXJ5KGV4cHJlc3Npb24pIHtcbiAgY29uc3QgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihleHByZXNzaW9uKTtcblxuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlcyA9IHF1ZXJ5LmV4ZWN1dGUobm9kZSk7XG5cbiAgICAgIG5vZGUgPSBub2Rlcy5zaGlmdCgpIHx8IG51bGw7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZXNRdWVyeShleHByZXNzaW9uKSB7XG4gIGNvbnN0IHF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBsZXQgbm9kZXMgPSBudWxsO1xuXG4gICAgaWYgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgIG5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbm9kZVF1ZXJ5LFxuICBub2Rlc1F1ZXJ5XG59O1xuIl0sIm5hbWVzIjpbIm5vZGVRdWVyeSIsIm5vZGVzUXVlcnkiLCJleHByZXNzaW9uIiwicXVlcnkiLCJRdWVyeSIsImZyb21FeHByZXNzaW9uIiwibm9kZSIsIm5vZGVzIiwiZXhlY3V0ZSIsInNoaWZ0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFJZ0JBLFNBQVM7ZUFBVEE7O0lBY0FDLFVBQVU7ZUFBVkE7O0lBY2hCLE9BR0U7ZUFIRjs7O3dCQTlCc0I7QUFFZixTQUFTRCxVQUFVRSxVQUFVLEVBQUU7SUFDcEMsSUFBTUMsUUFBUUMsZUFBSyxDQUFDQyxjQUFjLENBQUNIO0lBRW5DLE9BQU8sU0FBU0ksSUFBSSxFQUFFO1FBQ3BCLElBQUlBLFNBQVMsSUFBSSxFQUFFO1lBQ2pCLElBQU1DLFFBQVFKLE1BQU1LLE9BQU8sQ0FBQ0Y7WUFFNUJBLE9BQU9DLE1BQU1FLEtBQUssTUFBTSxJQUFJLEVBQUUsR0FBRztRQUNuQyxDQUFDO1FBRUQsT0FBT0g7SUFDVDtBQUNGO0FBRU8sU0FBU0wsV0FBV0MsVUFBVSxFQUFFO0lBQ3JDLElBQU1DLFFBQVFDLGVBQUssQ0FBQ0MsY0FBYyxDQUFDSDtJQUVuQyxPQUFPLFNBQVNJLElBQUksRUFBRTtRQUNwQixJQUFJQyxRQUFRLElBQUk7UUFFaEIsSUFBSUQsU0FBUyxJQUFJLEVBQUU7WUFDakJDLFFBQVFKLE1BQU1LLE9BQU8sQ0FBQ0Y7UUFDeEIsQ0FBQztRQUVELE9BQU9DO0lBQ1Q7QUFDRjtJQUVBLFdBQWU7SUFDYlAsV0FBQUE7SUFDQUMsWUFBQUE7QUFDRiJ9
|
package/lib/version.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
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 Version;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _necessary = require("necessary");
|
|
12
|
+
function _classCallCheck(instance, Constructor) {
|
|
13
|
+
if (!(instance instanceof Constructor)) {
|
|
14
|
+
throw new TypeError("Cannot call a class as a function");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function _defineProperties(target, props) {
|
|
18
|
+
for(var i = 0; i < props.length; i++){
|
|
19
|
+
var descriptor = props[i];
|
|
20
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
21
|
+
descriptor.configurable = true;
|
|
22
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
23
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
27
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
28
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
29
|
+
return Constructor;
|
|
30
|
+
}
|
|
31
|
+
var second = _necessary.arrayUtilities.second;
|
|
32
|
+
var Version = /*#__PURE__*/ function() {
|
|
33
|
+
function Version(majorNumber, minorNumber, patchNumber) {
|
|
34
|
+
_classCallCheck(this, Version);
|
|
35
|
+
this.majorNumber = majorNumber;
|
|
36
|
+
this.minorNumber = minorNumber;
|
|
37
|
+
this.patchNumber = patchNumber;
|
|
38
|
+
}
|
|
39
|
+
_createClass(Version, [
|
|
40
|
+
{
|
|
41
|
+
key: "getMajorNumber",
|
|
42
|
+
value: function getMajorNumber() {
|
|
43
|
+
return this.majorNumber;
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
key: "getMinorNumber",
|
|
48
|
+
value: function getMinorNumber() {
|
|
49
|
+
return this.minorNumber;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
key: "getPatchNumber",
|
|
54
|
+
value: function getPatchNumber() {
|
|
55
|
+
return this.patchNumber;
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
key: "bumpMajorNumber",
|
|
60
|
+
value: function bumpMajorNumber() {
|
|
61
|
+
this.majorNumber += 1;
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
key: "bumpMinorNumber",
|
|
66
|
+
value: function bumpMinorNumber() {
|
|
67
|
+
this.minorNumber += 1;
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: "bumpPatchNumber",
|
|
72
|
+
value: function bumpPatchNumber() {
|
|
73
|
+
this.patchNumber += 1;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
key: "toString",
|
|
78
|
+
value: function toString() {
|
|
79
|
+
var string = "".concat(this.majorNumber, ".").concat(this.minorNumber, ".").concat(this.patchNumber);
|
|
80
|
+
return string;
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
key: "asNumber",
|
|
85
|
+
value: function asNumber() {
|
|
86
|
+
var number = this.majorNumber * 1e12 + this.minorNumber * 1e6 + this.patchNumber * 1e0; ///
|
|
87
|
+
return number;
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
key: "toJSON",
|
|
92
|
+
value: function toJSON() {
|
|
93
|
+
var majorNumber = this.majorNumber, minorNumber = this.minorNumber, patchNumber = this.patchNumber, json = {
|
|
94
|
+
majorNumber: majorNumber,
|
|
95
|
+
minorNumber: minorNumber,
|
|
96
|
+
patchNumber: patchNumber
|
|
97
|
+
};
|
|
98
|
+
return json;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
], [
|
|
102
|
+
{
|
|
103
|
+
key: "fromJSON",
|
|
104
|
+
value: function fromJSON(json) {
|
|
105
|
+
var majorNumber = json.majorNumber, minorNumber = json.minorNumber, patchNumber = json.patchNumber, version = new Version(majorNumber, minorNumber, patchNumber);
|
|
106
|
+
return version;
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
key: "fromString",
|
|
111
|
+
value: function fromString(string) {
|
|
112
|
+
var majorNumber = majorNumberFromString(string), minorNumber = minorNumberFromString(string), patchNumber = patchNumberFromString(string), version = new Version(majorNumber, minorNumber, patchNumber);
|
|
113
|
+
return version;
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
key: "fromVersionNumber",
|
|
118
|
+
value: function fromVersionNumber(versionNumber) {
|
|
119
|
+
var number = versionNumber, majorNumber = majorNumberFromNumber(number), minorNumber = minorNumberFromNumber(number), patchNumber = patchNumberFromNumber(number), version = new Version(majorNumber, minorNumber, patchNumber);
|
|
120
|
+
return version;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
]);
|
|
124
|
+
return Version;
|
|
125
|
+
}();
|
|
126
|
+
function majorNumberFromNumber(number) {
|
|
127
|
+
var majorNumber = number !== null ? Math.floor(number / 1e12) : 0; ///
|
|
128
|
+
return majorNumber;
|
|
129
|
+
}
|
|
130
|
+
function minorNumberFromNumber(number) {
|
|
131
|
+
var minorNumber = number !== null ? Math.floor(number / 1e6) : 0; ///
|
|
132
|
+
return minorNumber;
|
|
133
|
+
}
|
|
134
|
+
function patchNumberFromNumber(number) {
|
|
135
|
+
var patchNumber = number !== null ? Math.floor(number / 1e0) : 0; ///
|
|
136
|
+
return patchNumber;
|
|
137
|
+
}
|
|
138
|
+
function majorNumberFromString(string) {
|
|
139
|
+
var majorNumber = 0;
|
|
140
|
+
if (string) {
|
|
141
|
+
var matches = string.match(/^(\d+)\.\d+\.\d+$/), secondMatch = second(matches);
|
|
142
|
+
majorNumber = secondMatch; ///
|
|
143
|
+
}
|
|
144
|
+
return majorNumber;
|
|
145
|
+
}
|
|
146
|
+
function minorNumberFromString(string) {
|
|
147
|
+
var minorNumber = 0;
|
|
148
|
+
if (string) {
|
|
149
|
+
var matches = string.match(/^\d+\.(\d+)\.\d+$/), secondMatch = second(matches);
|
|
150
|
+
minorNumber = secondMatch; ///
|
|
151
|
+
}
|
|
152
|
+
return minorNumber;
|
|
153
|
+
}
|
|
154
|
+
function patchNumberFromString(string) {
|
|
155
|
+
var patchNumber = 0;
|
|
156
|
+
if (string) {
|
|
157
|
+
var matches = string.match(/^\d+\.\d+\.(\d+)$/), secondMatch = second(matches);
|
|
158
|
+
patchNumber = secondMatch; ///
|
|
159
|
+
}
|
|
160
|
+
return patchNumber;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBzZWNvbmQgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZXJzaW9uIHtcbiAgY29uc3RydWN0b3IobWFqb3JOdW1iZXIsIG1pbm9yTnVtYmVyLCBwYXRjaE51bWJlcikge1xuICAgIHRoaXMubWFqb3JOdW1iZXIgPSBtYWpvck51bWJlcjtcbiAgICB0aGlzLm1pbm9yTnVtYmVyID0gbWlub3JOdW1iZXI7XG4gICAgdGhpcy5wYXRjaE51bWJlciA9IHBhdGNoTnVtYmVyO1xuICB9XG5cbiAgZ2V0TWFqb3JOdW1iZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFqb3JOdW1iZXI7XG4gIH1cblxuICBnZXRNaW5vck51bWJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5taW5vck51bWJlcjtcbiAgfVxuXG4gIGdldFBhdGNoTnVtYmVyKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGNoTnVtYmVyO1xuICB9XG5cbiAgYnVtcE1ham9yTnVtYmVyKCkge1xuICAgIHRoaXMubWFqb3JOdW1iZXIgKz0gMTtcbiAgfVxuXG4gIGJ1bXBNaW5vck51bWJlcigpIHtcbiAgICB0aGlzLm1pbm9yTnVtYmVyICs9IDE7XG4gIH1cblxuICBidW1wUGF0Y2hOdW1iZXIoKSB7XG4gICAgdGhpcy5wYXRjaE51bWJlciArPSAxO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gYCR7dGhpcy5tYWpvck51bWJlcn0uJHt0aGlzLm1pbm9yTnVtYmVyfS4ke3RoaXMucGF0Y2hOdW1iZXJ9YDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBhc051bWJlcigpIHtcbiAgICBjb25zdCBudW1iZXIgPSB0aGlzLm1ham9yTnVtYmVyICogMWUxMiArIHRoaXMubWlub3JOdW1iZXIgKiAxZTYgKyB0aGlzLnBhdGNoTnVtYmVyICogMWUwOyAvLy9cblxuICAgIHJldHVybiBudW1iZXI7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgbWFqb3JOdW1iZXIgPSB0aGlzLm1ham9yTnVtYmVyLFxuICAgICAgICAgIG1pbm9yTnVtYmVyID0gdGhpcy5taW5vck51bWJlcixcbiAgICAgICAgICBwYXRjaE51bWJlciA9IHRoaXMucGF0Y2hOdW1iZXIsXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG1ham9yTnVtYmVyLFxuICAgICAgICAgICAgbWlub3JOdW1iZXIsXG4gICAgICAgICAgICBwYXRjaE51bWJlclxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgeyBtYWpvck51bWJlciwgbWlub3JOdW1iZXIsIHBhdGNoTnVtYmVyIH0gPSBqc29uLFxuICAgICAgICAgIHZlcnNpb24gPSBuZXcgVmVyc2lvbihtYWpvck51bWJlciwgbWlub3JOdW1iZXIsIHBhdGNoTnVtYmVyKTtcblxuICAgIHJldHVybiB2ZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdHJpbmcoc3RyaW5nKSB7XG4gICAgY29uc3QgbWFqb3JOdW1iZXIgPSBtYWpvck51bWJlckZyb21TdHJpbmcoc3RyaW5nKSxcbiAgICAgICAgICBtaW5vck51bWJlciA9IG1pbm9yTnVtYmVyRnJvbVN0cmluZyhzdHJpbmcpLFxuICAgICAgICAgIHBhdGNoTnVtYmVyID0gcGF0Y2hOdW1iZXJGcm9tU3RyaW5nKHN0cmluZyksXG4gICAgICAgICAgdmVyc2lvbiA9IG5ldyBWZXJzaW9uKG1ham9yTnVtYmVyLCBtaW5vck51bWJlciwgcGF0Y2hOdW1iZXIpO1xuXG4gICAgcmV0dXJuIHZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVZlcnNpb25OdW1iZXIodmVyc2lvbk51bWJlcikge1xuICAgIGNvbnN0IG51bWJlciA9IHZlcnNpb25OdW1iZXIsIC8vL1xuICAgICAgICAgIG1ham9yTnVtYmVyID0gbWFqb3JOdW1iZXJGcm9tTnVtYmVyKG51bWJlciksXG4gICAgICAgICAgbWlub3JOdW1iZXIgPSBtaW5vck51bWJlckZyb21OdW1iZXIobnVtYmVyKSxcbiAgICAgICAgICBwYXRjaE51bWJlciA9IHBhdGNoTnVtYmVyRnJvbU51bWJlcihudW1iZXIpLFxuICAgICAgICAgIHZlcnNpb24gPSBuZXcgVmVyc2lvbihtYWpvck51bWJlciwgbWlub3JOdW1iZXIsIHBhdGNoTnVtYmVyKTtcblxuICAgIHJldHVybiB2ZXJzaW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ham9yTnVtYmVyRnJvbU51bWJlcihudW1iZXIpIHtcbiAgY29uc3QgbWFqb3JOdW1iZXIgPSAobnVtYmVyICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKG51bWJlciAvIDFlMTIpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMDsgIC8vL1xuXG4gIHJldHVybiBtYWpvck51bWJlcjtcbn1cblxuZnVuY3Rpb24gbWlub3JOdW1iZXJGcm9tTnVtYmVyKG51bWJlcikge1xuICBjb25zdCBtaW5vck51bWJlciA9IChudW1iZXIgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IobnVtYmVyIC8gMWU2KSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDA7ICAvLy9cblxuICByZXR1cm4gbWlub3JOdW1iZXI7XG59XG5cbmZ1bmN0aW9uIHBhdGNoTnVtYmVyRnJvbU51bWJlcihudW1iZXIpIHtcbiAgY29uc3QgcGF0Y2hOdW1iZXIgPSAobnVtYmVyICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKG51bWJlciAvIDFlMCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAwOyAgLy8vXG5cbiAgcmV0dXJuIHBhdGNoTnVtYmVyO1xufVxuXG5mdW5jdGlvbiBtYWpvck51bWJlckZyb21TdHJpbmcoc3RyaW5nKSB7XG4gIGxldCBtYWpvck51bWJlciA9IDA7XG5cbiAgaWYgKHN0cmluZykge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBzdHJpbmcubWF0Y2goL14oXFxkKylcXC5cXGQrXFwuXFxkKyQvKSxcbiAgICAgICAgICBzZWNvbmRNYXRjaCA9IHNlY29uZChtYXRjaGVzKTtcblxuICAgIG1ham9yTnVtYmVyID0gc2Vjb25kTWF0Y2g7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBtYWpvck51bWJlcjtcbn1cblxuZnVuY3Rpb24gbWlub3JOdW1iZXJGcm9tU3RyaW5nKHN0cmluZykge1xuICBsZXQgbWlub3JOdW1iZXIgPSAwO1xuXG4gIGlmIChzdHJpbmcpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gc3RyaW5nLm1hdGNoKC9eXFxkK1xcLihcXGQrKVxcLlxcZCskLyksXG4gICAgICAgICAgc2Vjb25kTWF0Y2ggPSBzZWNvbmQobWF0Y2hlcyk7XG5cbiAgICBtaW5vck51bWJlciA9IHNlY29uZE1hdGNoOyAgLy8vXG4gIH1cblxuICByZXR1cm4gbWlub3JOdW1iZXI7XG59XG5cbmZ1bmN0aW9uIHBhdGNoTnVtYmVyRnJvbVN0cmluZyhzdHJpbmcpIHtcbiAgbGV0IHBhdGNoTnVtYmVyID0gMDtcblxuICBpZiAoc3RyaW5nKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHN0cmluZy5tYXRjaCgvXlxcZCtcXC5cXGQrXFwuKFxcZCspJC8pLFxuICAgICAgICAgIHNlY29uZE1hdGNoID0gc2Vjb25kKG1hdGNoZXMpO1xuXG4gICAgcGF0Y2hOdW1iZXIgPSBzZWNvbmRNYXRjaDsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIHBhdGNoTnVtYmVyO1xufVxuIl0sIm5hbWVzIjpbIlZlcnNpb24iLCJzZWNvbmQiLCJhcnJheVV0aWxpdGllcyIsIm1ham9yTnVtYmVyIiwibWlub3JOdW1iZXIiLCJwYXRjaE51bWJlciIsImdldE1ham9yTnVtYmVyIiwiZ2V0TWlub3JOdW1iZXIiLCJnZXRQYXRjaE51bWJlciIsImJ1bXBNYWpvck51bWJlciIsImJ1bXBNaW5vck51bWJlciIsImJ1bXBQYXRjaE51bWJlciIsInRvU3RyaW5nIiwic3RyaW5nIiwiYXNOdW1iZXIiLCJudW1iZXIiLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJ2ZXJzaW9uIiwiZnJvbVN0cmluZyIsIm1ham9yTnVtYmVyRnJvbVN0cmluZyIsIm1pbm9yTnVtYmVyRnJvbVN0cmluZyIsInBhdGNoTnVtYmVyRnJvbVN0cmluZyIsImZyb21WZXJzaW9uTnVtYmVyIiwidmVyc2lvbk51bWJlciIsIm1ham9yTnVtYmVyRnJvbU51bWJlciIsIm1pbm9yTnVtYmVyRnJvbU51bWJlciIsInBhdGNoTnVtYmVyRnJvbU51bWJlciIsIk1hdGgiLCJmbG9vciIsIm1hdGNoZXMiLCJtYXRjaCIsInNlY29uZE1hdGNoIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQU1xQkE7Ozt5QkFKVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0IsSUFBTSxBQUFFQyxTQUFXQyx5QkFBYyxDQUF6QkQ7QUFFTyxJQUFBLEFBQU1ELHdCQW1GbEIsQUFuRlk7YUFBTUEsUUFDUEcsV0FBVyxFQUFFQyxXQUFXLEVBQUVDLFdBQVc7OEJBRDlCTDtRQUVqQixJQUFJLENBQUNHLFdBQVcsR0FBR0E7UUFDbkIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO1FBQ25CLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTs7aUJBSkZMOztZQU9uQk0sS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQjtnQkFDZixPQUFPLElBQUksQ0FBQ0gsV0FBVztZQUN6Qjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxpQkFBaUI7Z0JBQ2YsT0FBTyxJQUFJLENBQUNILFdBQVc7WUFDekI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCO2dCQUNmLE9BQU8sSUFBSSxDQUFDSCxXQUFXO1lBQ3pCOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLGtCQUFrQjtnQkFDaEIsSUFBSSxDQUFDTixXQUFXLElBQUk7WUFDdEI7OztZQUVBTyxLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCO2dCQUNoQixJQUFJLENBQUNOLFdBQVcsSUFBSTtZQUN0Qjs7O1lBRUFPLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0I7Z0JBQ2hCLElBQUksQ0FBQ04sV0FBVyxJQUFJO1lBQ3RCOzs7WUFFQU8sS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVc7Z0JBQ1QsSUFBTUMsU0FBUyxBQUFDLEdBQXNCLE9BQXBCLElBQUksQ0FBQ1YsV0FBVyxFQUFDLEtBQXVCLE9BQXBCLElBQUksQ0FBQ0MsV0FBVyxFQUFDLEtBQW9CLE9BQWpCLElBQUksQ0FBQ0MsV0FBVztnQkFFMUUsT0FBT1E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXO2dCQUNULElBQU1DLFNBQVMsSUFBSSxDQUFDWixXQUFXLEdBQUcsT0FBTyxJQUFJLENBQUNDLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQ0MsV0FBVyxHQUFHLEtBQUssR0FBRztnQkFFN0YsT0FBT1U7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTO2dCQUNQLElBQU1iLGNBQWMsSUFBSSxDQUFDQSxXQUFXLEVBQzlCQyxjQUFjLElBQUksQ0FBQ0EsV0FBVyxFQUM5QkMsY0FBYyxJQUFJLENBQUNBLFdBQVcsRUFDOUJZLE9BQU87b0JBQ0xkLGFBQUFBO29CQUNBQyxhQUFBQTtvQkFDQUMsYUFBQUE7Z0JBQ0Y7Z0JBRU4sT0FBT1k7WUFDVDs7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTRCxJQUFJLEVBQUU7Z0JBQ3BCLElBQVFkLGNBQTBDYyxLQUExQ2QsYUFBYUMsY0FBNkJhLEtBQTdCYixhQUFhQyxjQUFnQlksS0FBaEJaLGFBQzVCYyxVQUFVLElBMURDbkIsUUEwRFdHLGFBQWFDLGFBQWFDO2dCQUV0RCxPQUFPYztZQUNUOzs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0EsV0FBV1AsTUFBTSxFQUFFO2dCQUN4QixJQUFNVixjQUFja0Isc0JBQXNCUixTQUNwQ1QsY0FBY2tCLHNCQUFzQlQsU0FDcENSLGNBQWNrQixzQkFBc0JWLFNBQ3BDTSxVQUFVLElBbkVDbkIsUUFtRVdHLGFBQWFDLGFBQWFDO2dCQUV0RCxPQUFPYztZQUNUOzs7WUFFT0ssS0FBQUE7bUJBQVAsU0FBT0Esa0JBQWtCQyxhQUFhLEVBQUU7Z0JBQ3RDLElBQU1WLFNBQVNVLGVBQ1R0QixjQUFjdUIsc0JBQXNCWCxTQUNwQ1gsY0FBY3VCLHNCQUFzQlosU0FDcENWLGNBQWN1QixzQkFBc0JiLFNBQ3BDSSxVQUFVLElBN0VDbkIsUUE2RVdHLGFBQWFDLGFBQWFDO2dCQUV0RCxPQUFPYztZQUNUOzs7V0FoRm1CbkI7O0FBbUZyQixTQUFTMEIsc0JBQXNCWCxNQUFNLEVBQUU7SUFDckMsSUFBTVosY0FBYyxBQUFDWSxXQUFXLElBQUksR0FDZGMsS0FBS0MsS0FBSyxDQUFDZixTQUFTLFFBQ2xCLENBQUMsRUFBRyxHQUFHO0lBRS9CLE9BQU9aO0FBQ1Q7QUFFQSxTQUFTd0Isc0JBQXNCWixNQUFNLEVBQUU7SUFDckMsSUFBTVgsY0FBYyxBQUFDVyxXQUFXLElBQUksR0FDZGMsS0FBS0MsS0FBSyxDQUFDZixTQUFTLE9BQ2xCLENBQUMsRUFBRyxHQUFHO0lBRS9CLE9BQU9YO0FBQ1Q7QUFFQSxTQUFTd0Isc0JBQXNCYixNQUFNLEVBQUU7SUFDckMsSUFBTVYsY0FBYyxBQUFDVSxXQUFXLElBQUksR0FDZGMsS0FBS0MsS0FBSyxDQUFDZixTQUFTLE9BQ2xCLENBQUMsRUFBRyxHQUFHO0lBRS9CLE9BQU9WO0FBQ1Q7QUFFQSxTQUFTZ0Isc0JBQXNCUixNQUFNLEVBQUU7SUFDckMsSUFBSVYsY0FBYztJQUVsQixJQUFJVSxRQUFRO1FBQ1YsSUFBTWtCLFVBQVVsQixPQUFPbUIsS0FBSyxDQUFDLHNCQUN2QkMsY0FBY2hDLE9BQU84QjtRQUUzQjVCLGNBQWM4QixhQUFjLEdBQUc7SUFDakMsQ0FBQztJQUVELE9BQU85QjtBQUNUO0FBRUEsU0FBU21CLHNCQUFzQlQsTUFBTSxFQUFFO0lBQ3JDLElBQUlULGNBQWM7SUFFbEIsSUFBSVMsUUFBUTtRQUNWLElBQU1rQixVQUFVbEIsT0FBT21CLEtBQUssQ0FBQyxzQkFDdkJDLGNBQWNoQyxPQUFPOEI7UUFFM0IzQixjQUFjNkIsYUFBYyxHQUFHO0lBQ2pDLENBQUM7SUFFRCxPQUFPN0I7QUFDVDtBQUVBLFNBQVNtQixzQkFBc0JWLE1BQU0sRUFBRTtJQUNyQyxJQUFJUixjQUFjO0lBRWxCLElBQUlRLFFBQVE7UUFDVixJQUFNa0IsVUFBVWxCLE9BQU9tQixLQUFLLENBQUMsc0JBQ3ZCQyxjQUFjaEMsT0FBTzhCO1FBRTNCMUIsY0FBYzRCLGFBQWMsR0FBRztJQUNqQyxDQUFDO0lBRUQsT0FBTzVCO0FBQ1QifQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-file-system",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "5.0.
|
|
4
|
+
"version": "5.0.15",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-file-system",
|
|
7
7
|
"description": "Occam's file system functionality.",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"fs-extra": "^9.0.0",
|
|
14
14
|
"mkdirp": "^0.5.1",
|
|
15
15
|
"necessary": "^11.0.40",
|
|
16
|
-
"occam-
|
|
16
|
+
"occam-dom": "^3.0.255",
|
|
17
|
+
"occam-grammars": "^1.0.323"
|
|
17
18
|
},
|
|
18
19
|
"devDependencies": {
|
|
19
20
|
"@swc/core": "^1.2.51",
|
|
@@ -31,5 +32,6 @@
|
|
|
31
32
|
"watch": "npm run clean && npm run batch && npm run incremental",
|
|
32
33
|
"watch-debug": "npm run clean && npm run batch-debug && npm run incremental-debug"
|
|
33
34
|
},
|
|
34
|
-
"
|
|
35
|
+
"browser": "./lib/browser",
|
|
36
|
+
"main": "./lib/main"
|
|
35
37
|
}
|
package/src/browser.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export { default as File } from "./file";
|
|
4
|
+
export { default as Files } from "./files";
|
|
5
|
+
export { default as Version } from "./version";
|
|
6
|
+
export { default as Release } from "./release";
|
|
7
|
+
export { default as Entries } from "./entries";
|
|
8
|
+
export { default as Project } from "./project";
|
|
9
|
+
export { default as Projects } from "./projects";
|
|
10
|
+
export { default as Dependency } from "./dependency";
|
|
11
|
+
export { default as Dependencies } from "./dependencies";
|
|
12
|
+
export { default as ShortenedVersion } from "./shortenedVersion";
|
|
13
|
+
|
|
14
|
+
export { default as contentUtilities } from "./utilities/content";
|
package/src/constants.js
CHANGED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Dependency from "./dependency";
|
|
4
|
+
|
|
5
|
+
export default class Dependencies {
|
|
6
|
+
constructor(array) {
|
|
7
|
+
this.array = array;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
addDependency(dependency) {
|
|
11
|
+
this.array.push(dependency);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
toJSON() {
|
|
15
|
+
const dependenciesJSON = this.array.map((dependency) => {
|
|
16
|
+
const dependencyJSON = dependency.toJSON();
|
|
17
|
+
|
|
18
|
+
return dependencyJSON;
|
|
19
|
+
}),
|
|
20
|
+
json = dependenciesJSON; ///
|
|
21
|
+
|
|
22
|
+
return json;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static fromJSON(json) {
|
|
26
|
+
const array = [],
|
|
27
|
+
dependencies = new Dependencies(array),
|
|
28
|
+
dependenciesJSON = json; ///
|
|
29
|
+
|
|
30
|
+
dependenciesJSON.forEach((dependencyJSON) => { ///
|
|
31
|
+
const json = dependencyJSON, ///
|
|
32
|
+
dependency = Dependency.fromJSON(json);
|
|
33
|
+
|
|
34
|
+
dependencies.addDependency(dependency);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return dependencies;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static fromNothing() {
|
|
41
|
+
const array = [],
|
|
42
|
+
dependencies = new Dependencies(array);
|
|
43
|
+
|
|
44
|
+
return dependencies;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import ShortenedVersion from "./shortenedVersion";
|
|
4
|
+
|
|
5
|
+
export default class Dependency {
|
|
6
|
+
constructor(name, shortenedVersion) {
|
|
7
|
+
this.name = name;
|
|
8
|
+
this.shortenedVersion = shortenedVersion;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
getName() {
|
|
12
|
+
return this.name;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getShortedVersion() {
|
|
16
|
+
return this.shortenedVersion;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
toJSON() {
|
|
20
|
+
const shortenedVersionJSON = this.shortenedVersion.toJSON(),
|
|
21
|
+
name = this.name,
|
|
22
|
+
shortenedVersion = shortenedVersionJSON, ///
|
|
23
|
+
json = {
|
|
24
|
+
name,
|
|
25
|
+
shortenedVersion
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return json;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
fromJSON(json) {
|
|
32
|
+
const { name } = json;
|
|
33
|
+
|
|
34
|
+
let { shortenedVersion } = json;
|
|
35
|
+
|
|
36
|
+
const shortenedVersionJSON = shortenedVersion; ///
|
|
37
|
+
|
|
38
|
+
json = shortenedVersionJSON; ///
|
|
39
|
+
|
|
40
|
+
shortenedVersion = ShortenedVersion.fromJSON(json);
|
|
41
|
+
|
|
42
|
+
const dependency = new Dependency(name, shortenedVersion);
|
|
43
|
+
|
|
44
|
+
return dependency;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static fromNameAndShortenedVersion(name, shortenedVersion) {
|
|
48
|
+
const dependency = new Dependency(name, shortenedVersion);
|
|
49
|
+
|
|
50
|
+
return dependency;
|
|
51
|
+
}
|
|
52
|
+
}
|
package/src/directory.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { DIRECTORY_TYPE } from "./types";
|
|
4
|
+
|
|
5
|
+
export default class Directory {
|
|
6
|
+
constructor(path) {
|
|
7
|
+
this.path = path;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
getPath() {
|
|
11
|
+
return this.path;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
isFile() {
|
|
15
|
+
const file = false;
|
|
16
|
+
|
|
17
|
+
return file;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
isDirectory() {
|
|
21
|
+
const directory = true;
|
|
22
|
+
|
|
23
|
+
return directory;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
toJSON() {
|
|
27
|
+
const { type } = Directory,
|
|
28
|
+
path = this.path,
|
|
29
|
+
json = {
|
|
30
|
+
type,
|
|
31
|
+
path
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
return json;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static type = DIRECTORY_TYPE;
|
|
38
|
+
|
|
39
|
+
static fromJSON(json) {
|
|
40
|
+
let directory = null;
|
|
41
|
+
|
|
42
|
+
if (json !== null) {
|
|
43
|
+
const { type } = json;
|
|
44
|
+
|
|
45
|
+
if (type === DIRECTORY_TYPE) {
|
|
46
|
+
const { path } = json;
|
|
47
|
+
|
|
48
|
+
directory = new Directory(path);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return directory;
|
|
53
|
+
}
|
|
54
|
+
}
|
package/src/entries.js
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { pathUtilities, arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import File from "./file";
|
|
6
|
+
import Files from "./files";
|
|
7
|
+
import Directory from "./directory";
|
|
8
|
+
import { ENTRIES_MAXIMUM_LENGTH } from "./constants";
|
|
9
|
+
import { ENTRIES_MAXIMUM_LENGTH_EXCEEDED_MESSAGE } from "./messages";
|
|
10
|
+
|
|
11
|
+
const { first, filter } = arrayUtilities,
|
|
12
|
+
{ topmostDirectoryNameFromPath } = pathUtilities;
|
|
13
|
+
|
|
14
|
+
export default class Entries {
|
|
15
|
+
constructor(array) {
|
|
16
|
+
this.array = array;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
getTopmostDirectoryName() {
|
|
20
|
+
let topmostDirectoryName = null;
|
|
21
|
+
|
|
22
|
+
const firstEntry = first(this.array); ///
|
|
23
|
+
|
|
24
|
+
if (firstEntry) { ///
|
|
25
|
+
const firstEntryPath = firstEntry.getPath();
|
|
26
|
+
|
|
27
|
+
topmostDirectoryName = topmostDirectoryNameFromPath(firstEntryPath);
|
|
28
|
+
|
|
29
|
+
if (topmostDirectoryName === null) {
|
|
30
|
+
topmostDirectoryName = firstEntryPath;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return topmostDirectoryName;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
removeFileByPath(path) {
|
|
38
|
+
filter(this.array, (entry) => {
|
|
39
|
+
const entryFile = entry.isFile();
|
|
40
|
+
|
|
41
|
+
if (entryFile) {
|
|
42
|
+
const file = entry, ///
|
|
43
|
+
filePath = file.getPath();
|
|
44
|
+
|
|
45
|
+
if (filePath === path) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return true;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
getFile(filePath) {
|
|
55
|
+
const files = this.getFiles(),
|
|
56
|
+
file = files.findFile((file) => {
|
|
57
|
+
const path = file.getPath();
|
|
58
|
+
|
|
59
|
+
if (path === filePath) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
}) || null;
|
|
63
|
+
|
|
64
|
+
return file;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getFiles() {
|
|
68
|
+
const files = Files.fromNothing();
|
|
69
|
+
|
|
70
|
+
this.mapEntry((entry) => {
|
|
71
|
+
const entryFile = entry.isFile();
|
|
72
|
+
|
|
73
|
+
if (entryFile) {
|
|
74
|
+
const file = entry; ///
|
|
75
|
+
|
|
76
|
+
files.addFile(file);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
return files;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
getFilePaths() {
|
|
84
|
+
const filePaths = this.reduceEntry((filePaths, entry) => {
|
|
85
|
+
const entryFile = entry.isFile();
|
|
86
|
+
|
|
87
|
+
if (entryFile) {
|
|
88
|
+
const file = entry, ///
|
|
89
|
+
filePath = file.getPath();
|
|
90
|
+
|
|
91
|
+
filePaths.push(filePath);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return filePaths;
|
|
95
|
+
}, []);
|
|
96
|
+
|
|
97
|
+
return filePaths;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
getDirectoryPaths() {
|
|
101
|
+
const directoryPaths = this.reduceEntry((directoryPaths, entry) => {
|
|
102
|
+
const entryDirectory = entry.isDirectory();
|
|
103
|
+
|
|
104
|
+
if (entryDirectory) {
|
|
105
|
+
const directory = entry, ///
|
|
106
|
+
directoryPath = directory.getPath();
|
|
107
|
+
|
|
108
|
+
directoryPaths.push(directoryPath);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return directoryPaths;
|
|
112
|
+
}, []);
|
|
113
|
+
|
|
114
|
+
return directoryPaths;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
addFile(file) {
|
|
118
|
+
const entry = file; ///
|
|
119
|
+
|
|
120
|
+
this.addEntry(entry);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
addEntry(entry) {
|
|
124
|
+
this.array.push(entry);
|
|
125
|
+
|
|
126
|
+
const length = this.array.length;
|
|
127
|
+
|
|
128
|
+
if (length > ENTRIES_MAXIMUM_LENGTH) {
|
|
129
|
+
throw new Error(ENTRIES_MAXIMUM_LENGTH_EXCEEDED_MESSAGE)
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
addDirectory(directory) {
|
|
134
|
+
const entry = directory; ///
|
|
135
|
+
|
|
136
|
+
this.addEntry(entry);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
mapEntry(callback) { return this.array.map(callback); }
|
|
140
|
+
|
|
141
|
+
someEntry(callback) { return this.array.some(callback); }
|
|
142
|
+
|
|
143
|
+
everyEntry(callback) { return this.array.every(callback); }
|
|
144
|
+
|
|
145
|
+
forEachEntry(callback) { this.array.forEach(callback); }
|
|
146
|
+
|
|
147
|
+
reduceEntry(callback, initialValue) { return this.array.reduce(callback, initialValue); }
|
|
148
|
+
|
|
149
|
+
toJSON() {
|
|
150
|
+
const entriesJSON = this.array.map((entry) => {
|
|
151
|
+
const entryJSON = entry.toJSON();
|
|
152
|
+
|
|
153
|
+
return entryJSON;
|
|
154
|
+
}),
|
|
155
|
+
json = entriesJSON; ///
|
|
156
|
+
|
|
157
|
+
return json;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
static fromJSON(json) {
|
|
161
|
+
const array = [],
|
|
162
|
+
entries = new Entries(array),
|
|
163
|
+
entriesJSON = json; ///
|
|
164
|
+
|
|
165
|
+
entriesJSON.map((entryJSON) => {
|
|
166
|
+
const json = entryJSON, ///
|
|
167
|
+
file = File.fromJSON(json),
|
|
168
|
+
directory = Directory.fromJSON(json),
|
|
169
|
+
entry = file || directory; ///
|
|
170
|
+
|
|
171
|
+
entries.addEntry(entry);
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
return entries;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
static fromEntry(entry) {
|
|
178
|
+
const array = [
|
|
179
|
+
entry
|
|
180
|
+
],
|
|
181
|
+
entries = new Entries(array);
|
|
182
|
+
|
|
183
|
+
return entries;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
static fromNothing() {
|
|
187
|
+
const array = [],
|
|
188
|
+
entries = new Entries(array);
|
|
189
|
+
|
|
190
|
+
return entries;
|
|
191
|
+
}
|
|
192
|
+
}
|