mirror of
https://github.com/tiennm99/FBcount.git
synced 2026-05-14 20:57:45 +00:00
83 lines
2.0 KiB
JavaScript
83 lines
2.0 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault.js");
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = _default;
|
|
|
|
var _common = require("../prelude/common.js");
|
|
|
|
var _path = _interopRequireDefault(require("path"));
|
|
|
|
const win32 = process.platform === 'win32';
|
|
|
|
function hasParent(file, records) {
|
|
const dirname = _path.default.dirname(file);
|
|
|
|
if (dirname === file) return false; // root directory
|
|
|
|
return Boolean(records[dirname]);
|
|
}
|
|
|
|
function purgeTopDirectories(records) {
|
|
while (true) {
|
|
let found = false;
|
|
|
|
for (const file in records) {
|
|
const record = records[file];
|
|
const links = record[_common.STORE_LINKS];
|
|
|
|
if (links && links.length === 1) {
|
|
if (!hasParent(file, records)) {
|
|
const file2 = _path.default.join(file, links[0]);
|
|
|
|
const record2 = records[file2];
|
|
const links2 = record2[_common.STORE_LINKS];
|
|
|
|
if (links2 && links2.length === 1) {
|
|
const file3 = _path.default.join(file2, links2[0]);
|
|
|
|
const record3 = records[file3];
|
|
const links3 = record3[_common.STORE_LINKS];
|
|
|
|
if (links3) {
|
|
delete records[file];
|
|
found = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!found) break;
|
|
}
|
|
}
|
|
|
|
function denominate(records, entrypoint, denominator) {
|
|
const newRecords = {};
|
|
|
|
for (const file in records) {
|
|
let snap = (0, _common.substituteDenominator)(file, denominator);
|
|
|
|
if (win32) {
|
|
if (snap.slice(1) === ':') snap += '\\';
|
|
} else {
|
|
if (snap === '') snap = '/';
|
|
}
|
|
|
|
newRecords[snap] = records[file];
|
|
}
|
|
|
|
return {
|
|
records: newRecords,
|
|
entrypoint: (0, _common.substituteDenominator)(entrypoint, denominator)
|
|
};
|
|
}
|
|
|
|
function _default(records, entrypoint) {
|
|
purgeTopDirectories(records);
|
|
const denominator = (0, _common.retrieveDenominator)(Object.keys(records));
|
|
return denominate(records, entrypoint, denominator);
|
|
} |