sliftutils 1.7.67 → 1.7.68
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/dist/test.ts.cache +3 -3
- package/index.d.ts +39 -2
- package/package.json +1 -1
- package/storage/remoteStorage/accessStats.d.ts +25 -0
- package/storage/remoteStorage/accessStats.ts +86 -0
- package/storage/remoteStorage/dist/storageController.ts.cache +50 -13
- package/storage/remoteStorage/dist/storageServerState.ts.cache +24 -73
- package/storage/remoteStorage/storageController.d.ts +8 -0
- package/storage/remoteStorage/storageController.ts +47 -9
- package/storage/remoteStorage/storageServerState.d.ts +2 -2
- package/storage/remoteStorage/storageServerState.ts +21 -68
- package/test.ts +1 -1
- package/treeSummary.d.ts +31 -0
package/dist/test.ts.cache
CHANGED
|
@@ -76,7 +76,7 @@ function summarize(files, weightBySize) {
|
|
|
76
76
|
return summary.totalSize;
|
|
77
77
|
return summary.count;
|
|
78
78
|
},
|
|
79
|
-
expectedOutputCount:
|
|
79
|
+
expectedOutputCount: 100,
|
|
80
80
|
});
|
|
81
81
|
let addStart = performance.now();
|
|
82
82
|
for (let file of files) {
|
|
@@ -195,5 +195,5 @@ main().catch(e => {
|
|
|
195
195
|
console.error((_a = e.stack) !== null && _a !== void 0 ? _a : e);
|
|
196
196
|
process.exit(1);
|
|
197
197
|
});
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0Isa0VBQWlGO0FBQ2pGLG1EQUFnRDtBQUNoRCwrQ0FBNEM7QUFFNUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLFNBQVMsR0FBRztJQUNkLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsMEJBQTBCO0lBQzFCLHFCQUFxQjtJQUNyQiw0QkFBNEI7Q0FDL0IsQ0FBQztBQUVGLGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsR0FBRywyQ0FBMkMsQ0FBQztBQUsvRCxLQUFLLFVBQVUsWUFBWSxDQUFDLElBQWMsRUFBRSxNQUFrQjtJQUMxRCxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDckQsTUFBTSxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxVQUFVLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsTUFBa0I7SUFDdkUsSUFBSSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxLQUFLLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztR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QyxDQUFDO0lBQ3BJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUNmLElBQUksS0FBSyxHQUFHLE1BQU0sUUFBUSxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUEscUJBQVksRUFBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUYsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2QixTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7O0lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFDLENBQVcsQ0FBQyxLQUFLLG1DQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0VGltZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2Zvcm1hdHRpbmcvZm9ybWF0XCI7XG5pbXBvcnQgeyBzb3J0IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgVHJlZVN1bW1hcnkgfSBmcm9tIFwiLi90cmVlU3VtbWFyeVwiO1xuXG5jb25zdCBTVU1NQVJZX0NPVU5UID0gMzA7XG5jb25zdCBUSU1JTkdfUlVOUyA9IDIwO1xuY29uc3QgU0NBTl9ESVJTID0gW1xuICAgIFwiRDovcmVwb3MvcXMtY3lvYVwiLFxuICAgIFwiRDovcmVwb3MvcXVlcnlzdWJcIixcbiAgICBcIkQ6L3JlcG9zL3NvY2tldC1mdW5jdGlvblwiLFxuICAgIFwiRDovcmVwb3Mvc2xpZnR1dGlsc1wiLFxuICAgIFwiRDovcmVwb3MvaW5mZXJlbmNlLXdlaWdodHNcIixcbl07XG5cbi8vIE1hdGNoZXMgdGhlIGdpdGlnbm9yZWQgXCJ0ZXN0Ki5qc29uXCIgcGF0dGVybiwgc28gdGhlIGNhY2hlIG5ldmVyIGdldHMgdHJhY2tlZC5cbmNvbnN0IENBQ0hFX0ZJTEUgPSBcIkQ6L3JlcG9zL3NsaWZ0dXRpbHMvdGVzdC1maWxlcy1jYWNoZS5qc29uXCI7XG5cbnR5cGUgRmlsZUluZm8gPSB7IHBhdGg6IHN0cmluZzsgc2l6ZTogbnVtYmVyIH07XG50eXBlIEZpbGVTdW1tYXJ5ID0geyBjb3VudDogbnVtYmVyOyB0b3RhbFNpemU6IG51bWJlciB9O1xuXG5hc3luYyBmdW5jdGlvbiBjb2xsZWN0RmlsZXMoZGlyczogc3RyaW5nW10sIG91dHB1dDogRmlsZUluZm9bXSkge1xuICAgIGZvciAobGV0IGRpciBvZiBkaXJzKSB7XG4gICAgICAgIGxldCBiYXNlUGF0aCA9IGRpci5lbmRzV2l0aChcIi9cIikgJiYgZGlyIHx8IGRpciArIFwiL1wiO1xuICAgICAgICBhd2FpdCBjb2xsZWN0RGlyKGRpciwgYmFzZVBhdGgsIG91dHB1dCk7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb2xsZWN0RGlyKGRpcjogc3RyaW5nLCBiYXNlUGF0aDogc3RyaW5nLCBvdXRwdXQ6IEZpbGVJbmZvW10pIHtcbiAgICBsZXQgZW50cmllcyA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRkaXIoZGlyLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICBsZXQgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgICAgbGV0IGVudHJ5UGF0aCA9IGJhc2VQYXRoICsgZW50cnkubmFtZTtcbiAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgIGF3YWl0IGNvbGxlY3REaXIoZnVsbFBhdGgsIGVudHJ5UGF0aCArIFwiL1wiLCBvdXRwdXQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSgpKSB7XG4gICAgICAgICAgICBsZXQgc3RhdHMgPSBhd2FpdCBmcy5wcm9taXNlcy5zdGF0KGZ1bGxQYXRoKTtcbiAgICAgICAgICAgIG91dHB1dC5wdXNoKHsgcGF0aDogZW50cnlQYXRoLCBzaXplOiBzdGF0cy5zaXplIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzdW1tYXJpemUoZmlsZXM6IEZpbGVJbmZvW10sIHdlaWdodEJ5U2l6ZTogYm9vbGVhbikge1xuICAgIGxldCB0cmVlID0gbmV3IFRyZWVTdW1tYXJ5PEZpbGVJbmZvLCBGaWxlU3VtbWFyeT4oe1xuICAgICAgICBnZXRQYXRoOiBmaWxlID0+IGZpbGUucGF0aCxcbiAgICAgICAgY3JlYXRlU3VtbWFyeTogKCkgPT4gKHsgY291bnQ6IDAsIHRvdGFsU2l6ZTogMCB9KSxcbiAgICAgICAgYWRkVG9TdW1tYXJ5OiAoZmlsZSwgc3VtbWFyeSkgPT4ge1xuICAgICAgICAgICAgc3VtbWFyeS5jb3VudCsrO1xuICAgICAgICAgICAgc3VtbWFyeS50b3RhbFNpemUgKz0gZmlsZS5zaXplO1xuICAgICAgICB9LFxuICAgICAgICBtZXJnZVN1bW1hcmllczogKHRhcmdldCwgc291cmNlKSA9PiB7XG4gICAgICAgICAgICB0YXJnZXQuY291bnQgKz0gc291cmNlLmNvdW50O1xuICAgICAgICAgICAgdGFyZ2V0LnRvdGFsU2l6ZSArPSBzb3VyY2UudG90YWxTaXplO1xuICAgICAgICB9LFxuICAgICAgICBnZXRXZWlnaHQ6IHN1bW1hcnkgPT4ge1xuICAgICAgICAgICAgaWYgKHdlaWdodEJ5U2l6ZSkgcmV0dXJuIHN1bW1hcnkudG90YWxTaXplO1xuICAgICAgICAgICAgcmV0dXJuIHN1bW1hcnkuY291bnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkT3V0cHV0Q291bnQ6IFNVTU1BUllfQ09VTlQsXG4gICAgfSk7XG4gICAgbGV0IGFkZFN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICB0cmVlLmFkZChmaWxlKTtcbiAgICB9XG4gICAgbGV0IGFkZFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtIGFkZFN0YXJ0O1xuICAgIGxldCBxdWVyeVN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgbGV0IHN1bW1hcmllcyA9IHRyZWUuZ2V0U3VtbWFyaWVzKFNVTU1BUllfQ09VTlQpO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgVElNSU5HX1JVTlM7IGkrKykge1xuICAgICAgICBzdW1tYXJpZXMgPSB0cmVlLmdldFN1bW1hcmllcyhTVU1NQVJZX0NPVU5UKTtcbiAgICB9XG4gICAgbGV0IHF1ZXJ5VGltZSA9IChwZXJmb3JtYW5jZS5ub3coKSAtIHF1ZXJ5U3RhcnQpIC8gVElNSU5HX1JVTlM7XG4gICAgbGV0IGxhYmVsID0gd2VpZ2h0QnlTaXplICYmIFwic2l6ZVwiIHx8IFwiY291bnRcIjtcbiAgICBjb25zb2xlLmxvZyhgXFxuPT09IHdlaWdodGVkIGJ5ICR7bGFiZWx9LCAke1NVTU1BUllfQ09VTlR9IGVudHJpZXMgPT09YCk7XG4gICAgY29uc29sZS5sb2coYGFkZDogJHtmb3JtYXRUaW1lKGFkZFRpbWUpfSB0b3RhbCBmb3IgJHtmb3JtYXROdW1iZXIoZmlsZXMubGVuZ3RoKX0gZmlsZXMsIHRyYWNraW5nICR7Zm9ybWF0TnVtYmVyKHRyZWUuZ2V0VHJhY2tlZE5vZGVDb3VudCgpKX0gbm9kZXMsIGdldFN1bW1hcmllczogJHtmb3JtYXRUaW1lKHF1ZXJ5VGltZSl9IGF2ZyBvdmVyICR7VElNSU5HX1JVTlN9IHJ1bnNgKTtcbiAgICBsZXQgdG90YWxXZWlnaHQgPSAwO1xuICAgIGZvciAobGV0IGVudHJ5IG9mIHN1bW1hcmllcykge1xuICAgICAgICB0b3RhbFdlaWdodCArPSBlbnRyeS53ZWlnaHQ7XG4gICAgfVxuICAgIHNvcnQoc3VtbWFyaWVzLCBlbnRyeSA9PiAtZW50cnkud2VpZ2h0KTtcbiAgICAvLyBWZXJpZnkgZWFjaCBlbnRyeSBhZ2FpbnN0IHRoZSByYXcgZmlsZSBsaXN0OiBhc3NpZ24gZXZlcnkgZmlsZSB0byBpdHMgbW9zdCBzcGVjaWZpYyBkaXNwbGF5ZWQgZW50cnkgKGV4YWN0IHBhdGhzIGJlYXQgcHJlZml4ZXMsIGxvbmdlciBwcmVmaXhlcyBiZWF0IHNob3J0ZXIpLCB3aGljaCBpcyB0aGUgcGFydGl0aW9uIHRoZSBlbnRyaWVzIGNsYWltIHRvIHJlcHJlc2VudC5cbiAgICBsZXQgYWN0dWFscyA9IHN1bW1hcmllcy5tYXAoKCkgPT4gKHsgY291bnQ6IDAsIHRvdGFsU2l6ZTogMCB9KSk7XG4gICAgbGV0IHVubWF0Y2hlZENvdW50ID0gMDtcbiAgICBsZXQgdW5tYXRjaGVkU2l6ZSA9IDA7XG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBsZXQgYmVzdEluZGV4ID0gLTE7XG4gICAgICAgIGxldCBiZXN0TGVuID0gLTE7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3VtbWFyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZW50cnlQYXRoID0gc3VtbWFyaWVzW2ldLnBhdGg7XG4gICAgICAgICAgICBpZiAoZW50cnlQYXRoLmVuZHNXaXRoKFwiKlwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBwcmVmaXggPSBlbnRyeVBhdGguc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmIChwcmVmaXgubGVuZ3RoID4gYmVzdExlbiAmJiBmaWxlLnBhdGguc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RMZW4gPSBwcmVmaXgubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZS5wYXRoID09PSBlbnRyeVBhdGggJiYgZW50cnlQYXRoLmxlbmd0aCArIDEgPiBiZXN0TGVuKSB7XG4gICAgICAgICAgICAgICAgYmVzdEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBiZXN0TGVuID0gZW50cnlQYXRoLmxlbmd0aCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJlc3RJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHVubWF0Y2hlZENvdW50Kys7XG4gICAgICAgICAgICB1bm1hdGNoZWRTaXplICs9IGZpbGUuc2l6ZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGFjdHVhbHNbYmVzdEluZGV4XS5jb3VudCsrO1xuICAgICAgICBhY3R1YWxzW2Jlc3RJbmRleF0udG90YWxTaXplICs9IGZpbGUuc2l6ZTtcbiAgICB9XG4gICAgbGV0IHNob3duUGVyY2VudCA9IDA7XG4gICAgbGV0IHNwZWNpZmljUGVyY2VudCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdW1tYXJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGVudHJ5ID0gc3VtbWFyaWVzW2ldO1xuICAgICAgICBsZXQgcGVyY2VudCA9IGVudHJ5LndlaWdodCAvIHRvdGFsV2VpZ2h0ICogMTAwO1xuICAgICAgICBzaG93blBlcmNlbnQgKz0gcGVyY2VudDtcbiAgICAgICAgaWYgKGVudHJ5LmtpbmQgPT09IFwic2VsZlwiIHx8IGVudHJ5LmtpbmQgPT09IFwic3VidHJlZVwiKSB7XG4gICAgICAgICAgICBzcGVjaWZpY1BlcmNlbnQgKz0gcGVyY2VudDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYWN0dWFsID0gYWN0dWFsc1tpXTtcbiAgICAgICAgbGV0IGRpZmYgPSBcIlwiO1xuICAgICAgICBpZiAoYWN0dWFsLmNvdW50ICE9PSBlbnRyeS5zdW1tYXJ5LmNvdW50IHx8IGFjdHVhbC50b3RhbFNpemUgIT09IGVudHJ5LnN1bW1hcnkudG90YWxTaXplKSB7XG4gICAgICAgICAgICBkaWZmID0gYCAgRElGRiBhY3R1YWwgZmlsZXM9JHtmb3JtYXROdW1iZXIoYWN0dWFsLmNvdW50KX0gc2l6ZT0ke2Zvcm1hdE51bWJlcihhY3R1YWwudG90YWxTaXplKX1CYDtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtwZXJjZW50LnRvRml4ZWQoMSkucGFkU3RhcnQoNSl9JSAke2VudHJ5LnBhdGgucGFkRW5kKDYwKX0gZmlsZXM9JHtmb3JtYXROdW1iZXIoZW50cnkuc3VtbWFyeS5jb3VudCkucGFkU3RhcnQoNil9IHNpemU9JHsoZm9ybWF0TnVtYmVyKGVudHJ5LnN1bW1hcnkudG90YWxTaXplKSArIFwiQlwiKS5wYWRTdGFydCg4KX0ke2RpZmZ9YCk7XG4gICAgfVxuICAgIGlmICh1bm1hdGNoZWRDb3VudCA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coYFVOTUFUQ0hFRDogJHtmb3JtYXROdW1iZXIodW5tYXRjaGVkQ291bnQpfSBmaWxlcyAoJHtmb3JtYXROdW1iZXIodW5tYXRjaGVkU2l6ZSl9QikgbWF0Y2hlZCBubyBkaXNwbGF5ZWQgZW50cnlgKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYHRvcCAke3N1bW1hcmllcy5sZW5ndGh9IGVudHJpZXMgY292ZXIgJHtzaG93blBlcmNlbnQudG9GaXhlZCgxKX0lIChzcGVjaWZpYyBwYXRocyAke3NwZWNpZmljUGVyY2VudC50b0ZpeGVkKDEpfSUsIGNvbWJpbmVkIGxlZnRvdmVycyAkeyhzaG93blBlcmNlbnQgLSBzcGVjaWZpY1BlcmNlbnQpLnRvRml4ZWQoMSl9JSlgKTtcbiAgICAvLyBFbnRyaWVzIGFyZSBhIHN0cmljdCBwYXJ0aXRpb24gKGVhY2ggZmlsZSBpbiBleGFjdGx5IG9uZSBlbnRyeSksIHNvIHRoZXNlIG11c3QgbWF0Y2ggdGhlIHJlYWwgdG90YWxzIGV4YWN0bHkuXG4gICAgbGV0IGVudHJ5Q291bnQgPSAwO1xuICAgIGxldCBlbnRyeVNpemUgPSAwO1xuICAgIGZvciAobGV0IGVudHJ5IG9mIHN1bW1hcmllcykge1xuICAgICAgICBlbnRyeUNvdW50ICs9IGVudHJ5LnN1bW1hcnkuY291bnQ7XG4gICAgICAgIGVudHJ5U2l6ZSArPSBlbnRyeS5zdW1tYXJ5LnRvdGFsU2l6ZTtcbiAgICB9XG4gICAgbGV0IGFjdHVhbFNpemUgPSAwO1xuICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgYWN0dWFsU2l6ZSArPSBmaWxlLnNpemU7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGBlbnRyeSB0b3RhbHM6IGZpbGVzPSR7Zm9ybWF0TnVtYmVyKGVudHJ5Q291bnQpfSAoYWN0dWFsICR7Zm9ybWF0TnVtYmVyKGZpbGVzLmxlbmd0aCl9KSwgc2l6ZT0ke2Zvcm1hdE51bWJlcihlbnRyeVNpemUpfUIgKGFjdHVhbCAke2Zvcm1hdE51bWJlcihhY3R1YWxTaXplKX1CKWApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRGaWxlcygpOiBQcm9taXNlPEZpbGVJbmZvW10+IHtcbiAgICB0cnkge1xuICAgICAgICBsZXQgY2FjaGVkID0gSlNPTi5wYXJzZShhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShDQUNIRV9GSUxFLCBcInV0ZjhcIikpIGFzIHsgZGlyczogc3RyaW5nW107IGZpbGVzOiBGaWxlSW5mb1tdIH07XG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShjYWNoZWQuZGlycykgPT09IEpTT04uc3RyaW5naWZ5KFNDQU5fRElSUykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBsb2FkZWQgJHtmb3JtYXROdW1iZXIoY2FjaGVkLmZpbGVzLmxlbmd0aCl9IGZpbGVzIGZyb20gY2FjaGUgJHtDQUNIRV9GSUxFfWApO1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZC5maWxlcztcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhgY2FjaGUgZGlycyBjaGFuZ2VkIChjYWNoZWQgJHtKU09OLnN0cmluZ2lmeShjYWNoZWQuZGlycyl9LCBub3cgJHtKU09OLnN0cmluZ2lmeShTQ0FOX0RJUlMpfSksIHJlc2Nhbm5pbmdgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKChlcnIgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGUgPT09IFwiRU5PRU5UXCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBubyBjYWNoZSBmaWxlIGF0ICR7Q0FDSEVfRklMRX0sIHNjYW5uaW5nYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgY2FjaGUgcmVhZCBmYWlsZWQsIHJlc2Nhbm5pbmc6YCwgKGVyciBhcyBFcnJvcikuc3RhY2sgPz8gZXJyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgZmlsZXM6IEZpbGVJbmZvW10gPSBbXTtcbiAgICBsZXQgc2NhblN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgYXdhaXQgY29sbGVjdEZpbGVzKFNDQU5fRElSUywgZmlsZXMpO1xuICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShDQUNIRV9GSUxFLCBKU09OLnN0cmluZ2lmeSh7IGRpcnM6IFNDQU5fRElSUywgZmlsZXMgfSkpO1xuICAgIGNvbnNvbGUubG9nKGBzY2FubmVkICR7Zm9ybWF0TnVtYmVyKGZpbGVzLmxlbmd0aCl9IGZpbGVzIGluICR7Zm9ybWF0VGltZShwZXJmb3JtYW5jZS5ub3coKSAtIHNjYW5TdGFydCl9LCBjYWNoZWQgdG8gJHtDQUNIRV9GSUxFfWApO1xuICAgIHJldHVybiBmaWxlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgICBsZXQgZmlsZXMgPSBhd2FpdCBnZXRGaWxlcygpO1xuICAgIGNvbnNvbGUubG9nKGBjb2xsZWN0ZWQgJHtmb3JtYXROdW1iZXIoZmlsZXMubGVuZ3RoKX0gZmlsZXMgZnJvbSAke1NDQU5fRElSUy5qb2luKFwiLCBcIil9YCk7XG4gICAgc3VtbWFyaXplKGZpbGVzLCB0cnVlKTtcbiAgICBzdW1tYXJpemUoZmlsZXMsIGZhbHNlKTtcbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoKGUgYXMgRXJyb3IpLnN0YWNrID8/IGUpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbn0pO1xuIl19
|
|
199
|
-
/* _JS_SOURCE_HASH = "
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0Isa0VBQWlGO0FBQ2pGLG1EQUFnRDtBQUNoRCwrQ0FBNEM7QUFFNUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLFNBQVMsR0FBRztJQUNkLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsMEJBQTBCO0lBQzFCLHFCQUFxQjtJQUNyQiw0QkFBNEI7Q0FDL0IsQ0FBQztBQUVGLGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsR0FBRywyQ0FBMkMsQ0FBQztBQUsvRCxLQUFLLFVBQVUsWUFBWSxDQUFDLElBQWMsRUFBRSxNQUFrQjtJQUMxRCxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDckQsTUFBTSxVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxVQUFVLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsTUFBa0I7SUFDdkUsSUFBSSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxLQUFLLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztR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QyxDQUFDO0lBQ3BJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUNmLElBQUksS0FBSyxHQUFHLE1BQU0sUUFBUSxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUEscUJBQVksRUFBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUYsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2QixTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7O0lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFDLENBQVcsQ0FBQyxLQUFLLG1DQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0VGltZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2Zvcm1hdHRpbmcvZm9ybWF0XCI7XG5pbXBvcnQgeyBzb3J0IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgVHJlZVN1bW1hcnkgfSBmcm9tIFwiLi90cmVlU3VtbWFyeVwiO1xuXG5jb25zdCBTVU1NQVJZX0NPVU5UID0gMzA7XG5jb25zdCBUSU1JTkdfUlVOUyA9IDIwO1xuY29uc3QgU0NBTl9ESVJTID0gW1xuICAgIFwiRDovcmVwb3MvcXMtY3lvYVwiLFxuICAgIFwiRDovcmVwb3MvcXVlcnlzdWJcIixcbiAgICBcIkQ6L3JlcG9zL3NvY2tldC1mdW5jdGlvblwiLFxuICAgIFwiRDovcmVwb3Mvc2xpZnR1dGlsc1wiLFxuICAgIFwiRDovcmVwb3MvaW5mZXJlbmNlLXdlaWdodHNcIixcbl07XG5cbi8vIE1hdGNoZXMgdGhlIGdpdGlnbm9yZWQgXCJ0ZXN0Ki5qc29uXCIgcGF0dGVybiwgc28gdGhlIGNhY2hlIG5ldmVyIGdldHMgdHJhY2tlZC5cbmNvbnN0IENBQ0hFX0ZJTEUgPSBcIkQ6L3JlcG9zL3NsaWZ0dXRpbHMvdGVzdC1maWxlcy1jYWNoZS5qc29uXCI7XG5cbnR5cGUgRmlsZUluZm8gPSB7IHBhdGg6IHN0cmluZzsgc2l6ZTogbnVtYmVyIH07XG50eXBlIEZpbGVTdW1tYXJ5ID0geyBjb3VudDogbnVtYmVyOyB0b3RhbFNpemU6IG51bWJlciB9O1xuXG5hc3luYyBmdW5jdGlvbiBjb2xsZWN0RmlsZXMoZGlyczogc3RyaW5nW10sIG91dHB1dDogRmlsZUluZm9bXSkge1xuICAgIGZvciAobGV0IGRpciBvZiBkaXJzKSB7XG4gICAgICAgIGxldCBiYXNlUGF0aCA9IGRpci5lbmRzV2l0aChcIi9cIikgJiYgZGlyIHx8IGRpciArIFwiL1wiO1xuICAgICAgICBhd2FpdCBjb2xsZWN0RGlyKGRpciwgYmFzZVBhdGgsIG91dHB1dCk7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb2xsZWN0RGlyKGRpcjogc3RyaW5nLCBiYXNlUGF0aDogc3RyaW5nLCBvdXRwdXQ6IEZpbGVJbmZvW10pIHtcbiAgICBsZXQgZW50cmllcyA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRkaXIoZGlyLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gICAgZm9yIChsZXQgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICBsZXQgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgICAgbGV0IGVudHJ5UGF0aCA9IGJhc2VQYXRoICsgZW50cnkubmFtZTtcbiAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgIGF3YWl0IGNvbGxlY3REaXIoZnVsbFBhdGgsIGVudHJ5UGF0aCArIFwiL1wiLCBvdXRwdXQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSgpKSB7XG4gICAgICAgICAgICBsZXQgc3RhdHMgPSBhd2FpdCBmcy5wcm9taXNlcy5zdGF0KGZ1bGxQYXRoKTtcbiAgICAgICAgICAgIG91dHB1dC5wdXNoKHsgcGF0aDogZW50cnlQYXRoLCBzaXplOiBzdGF0cy5zaXplIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzdW1tYXJpemUoZmlsZXM6IEZpbGVJbmZvW10sIHdlaWdodEJ5U2l6ZTogYm9vbGVhbikge1xuICAgIGxldCB0cmVlID0gbmV3IFRyZWVTdW1tYXJ5PEZpbGVJbmZvLCBGaWxlU3VtbWFyeT4oe1xuICAgICAgICBnZXRQYXRoOiBmaWxlID0+IGZpbGUucGF0aCxcbiAgICAgICAgY3JlYXRlU3VtbWFyeTogKCkgPT4gKHsgY291bnQ6IDAsIHRvdGFsU2l6ZTogMCB9KSxcbiAgICAgICAgYWRkVG9TdW1tYXJ5OiAoZmlsZSwgc3VtbWFyeSkgPT4ge1xuICAgICAgICAgICAgc3VtbWFyeS5jb3VudCsrO1xuICAgICAgICAgICAgc3VtbWFyeS50b3RhbFNpemUgKz0gZmlsZS5zaXplO1xuICAgICAgICB9LFxuICAgICAgICBtZXJnZVN1bW1hcmllczogKHRhcmdldCwgc291cmNlKSA9PiB7XG4gICAgICAgICAgICB0YXJnZXQuY291bnQgKz0gc291cmNlLmNvdW50O1xuICAgICAgICAgICAgdGFyZ2V0LnRvdGFsU2l6ZSArPSBzb3VyY2UudG90YWxTaXplO1xuICAgICAgICB9LFxuICAgICAgICBnZXRXZWlnaHQ6IHN1bW1hcnkgPT4ge1xuICAgICAgICAgICAgaWYgKHdlaWdodEJ5U2l6ZSkgcmV0dXJuIHN1bW1hcnkudG90YWxTaXplO1xuICAgICAgICAgICAgcmV0dXJuIHN1bW1hcnkuY291bnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGV4cGVjdGVkT3V0cHV0Q291bnQ6IDEwMCxcbiAgICB9KTtcbiAgICBsZXQgYWRkU3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBmb3IgKGxldCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIHRyZWUuYWRkKGZpbGUpO1xuICAgIH1cbiAgICBsZXQgYWRkVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gYWRkU3RhcnQ7XG4gICAgbGV0IHF1ZXJ5U3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBsZXQgc3VtbWFyaWVzID0gdHJlZS5nZXRTdW1tYXJpZXMoU1VNTUFSWV9DT1VOVCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBUSU1JTkdfUlVOUzsgaSsrKSB7XG4gICAgICAgIHN1bW1hcmllcyA9IHRyZWUuZ2V0U3VtbWFyaWVzKFNVTU1BUllfQ09VTlQpO1xuICAgIH1cbiAgICBsZXQgcXVlcnlUaW1lID0gKHBlcmZvcm1hbmNlLm5vdygpIC0gcXVlcnlTdGFydCkgLyBUSU1JTkdfUlVOUztcbiAgICBsZXQgbGFiZWwgPSB3ZWlnaHRCeVNpemUgJiYgXCJzaXplXCIgfHwgXCJjb3VudFwiO1xuICAgIGNvbnNvbGUubG9nKGBcXG49PT0gd2VpZ2h0ZWQgYnkgJHtsYWJlbH0sICR7U1VNTUFSWV9DT1VOVH0gZW50cmllcyA9PT1gKTtcbiAgICBjb25zb2xlLmxvZyhgYWRkOiAke2Zvcm1hdFRpbWUoYWRkVGltZSl9IHRvdGFsIGZvciAke2Zvcm1hdE51bWJlcihmaWxlcy5sZW5ndGgpfSBmaWxlcywgdHJhY2tpbmcgJHtmb3JtYXROdW1iZXIodHJlZS5nZXRUcmFja2VkTm9kZUNvdW50KCkpfSBub2RlcywgZ2V0U3VtbWFyaWVzOiAke2Zvcm1hdFRpbWUocXVlcnlUaW1lKX0gYXZnIG92ZXIgJHtUSU1JTkdfUlVOU30gcnVuc2ApO1xuICAgIGxldCB0b3RhbFdlaWdodCA9IDA7XG4gICAgZm9yIChsZXQgZW50cnkgb2Ygc3VtbWFyaWVzKSB7XG4gICAgICAgIHRvdGFsV2VpZ2h0ICs9IGVudHJ5LndlaWdodDtcbiAgICB9XG4gICAgc29ydChzdW1tYXJpZXMsIGVudHJ5ID0+IC1lbnRyeS53ZWlnaHQpO1xuICAgIC8vIFZlcmlmeSBlYWNoIGVudHJ5IGFnYWluc3QgdGhlIHJhdyBmaWxlIGxpc3Q6IGFzc2lnbiBldmVyeSBmaWxlIHRvIGl0cyBtb3N0IHNwZWNpZmljIGRpc3BsYXllZCBlbnRyeSAoZXhhY3QgcGF0aHMgYmVhdCBwcmVmaXhlcywgbG9uZ2VyIHByZWZpeGVzIGJlYXQgc2hvcnRlciksIHdoaWNoIGlzIHRoZSBwYXJ0aXRpb24gdGhlIGVudHJpZXMgY2xhaW0gdG8gcmVwcmVzZW50LlxuICAgIGxldCBhY3R1YWxzID0gc3VtbWFyaWVzLm1hcCgoKSA9PiAoeyBjb3VudDogMCwgdG90YWxTaXplOiAwIH0pKTtcbiAgICBsZXQgdW5tYXRjaGVkQ291bnQgPSAwO1xuICAgIGxldCB1bm1hdGNoZWRTaXplID0gMDtcbiAgICBmb3IgKGxldCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGxldCBiZXN0SW5kZXggPSAtMTtcbiAgICAgICAgbGV0IGJlc3RMZW4gPSAtMTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdW1tYXJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBlbnRyeVBhdGggPSBzdW1tYXJpZXNbaV0ucGF0aDtcbiAgICAgICAgICAgIGlmIChlbnRyeVBhdGguZW5kc1dpdGgoXCIqXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByZWZpeCA9IGVudHJ5UGF0aC5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICAgICAgaWYgKHByZWZpeC5sZW5ndGggPiBiZXN0TGVuICYmIGZpbGUucGF0aC5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdExlbiA9IHByZWZpeC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlLnBhdGggPT09IGVudHJ5UGF0aCAmJiBlbnRyeVBhdGgubGVuZ3RoICsgMSA+IGJlc3RMZW4pIHtcbiAgICAgICAgICAgICAgICBiZXN0SW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGJlc3RMZW4gPSBlbnRyeVBhdGgubGVuZ3RoICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYmVzdEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdW5tYXRjaGVkQ291bnQrKztcbiAgICAgICAgICAgIHVubWF0Y2hlZFNpemUgKz0gZmlsZS5zaXplO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgYWN0dWFsc1tiZXN0SW5kZXhdLmNvdW50Kys7XG4gICAgICAgIGFjdHVhbHNbYmVzdEluZGV4XS50b3RhbFNpemUgKz0gZmlsZS5zaXplO1xuICAgIH1cbiAgICBsZXQgc2hvd25QZXJjZW50ID0gMDtcbiAgICBsZXQgc3BlY2lmaWNQZXJjZW50ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN1bW1hcmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgZW50cnkgPSBzdW1tYXJpZXNbaV07XG4gICAgICAgIGxldCBwZXJjZW50ID0gZW50cnkud2VpZ2h0IC8gdG90YWxXZWlnaHQgKiAxMDA7XG4gICAgICAgIHNob3duUGVyY2VudCArPSBwZXJjZW50O1xuICAgICAgICBpZiAoZW50cnkua2luZCA9PT0gXCJzZWxmXCIgfHwgZW50cnkua2luZCA9PT0gXCJzdWJ0cmVlXCIpIHtcbiAgICAgICAgICAgIHNwZWNpZmljUGVyY2VudCArPSBwZXJjZW50O1xuICAgICAgICB9XG4gICAgICAgIGxldCBhY3R1YWwgPSBhY3R1YWxzW2ldO1xuICAgICAgICBsZXQgZGlmZiA9IFwiXCI7XG4gICAgICAgIGlmIChhY3R1YWwuY291bnQgIT09IGVudHJ5LnN1bW1hcnkuY291bnQgfHwgYWN0dWFsLnRvdGFsU2l6ZSAhPT0gZW50cnkuc3VtbWFyeS50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIGRpZmYgPSBgICBESUZGIGFjdHVhbCBmaWxlcz0ke2Zvcm1hdE51bWJlcihhY3R1YWwuY291bnQpfSBzaXplPSR7Zm9ybWF0TnVtYmVyKGFjdHVhbC50b3RhbFNpemUpfUJgO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGAke3BlcmNlbnQudG9GaXhlZCgxKS5wYWRTdGFydCg1KX0lICR7ZW50cnkucGF0aC5wYWRFbmQoNjApfSBmaWxlcz0ke2Zvcm1hdE51bWJlcihlbnRyeS5zdW1tYXJ5LmNvdW50KS5wYWRTdGFydCg2KX0gc2l6ZT0keyhmb3JtYXROdW1iZXIoZW50cnkuc3VtbWFyeS50b3RhbFNpemUpICsgXCJCXCIpLnBhZFN0YXJ0KDgpfSR7ZGlmZn1gKTtcbiAgICB9XG4gICAgaWYgKHVubWF0Y2hlZENvdW50ID4gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgVU5NQVRDSEVEOiAke2Zvcm1hdE51bWJlcih1bm1hdGNoZWRDb3VudCl9IGZpbGVzICgke2Zvcm1hdE51bWJlcih1bm1hdGNoZWRTaXplKX1CKSBtYXRjaGVkIG5vIGRpc3BsYXllZCBlbnRyeWApO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhgdG9wICR7c3VtbWFyaWVzLmxlbmd0aH0gZW50cmllcyBjb3ZlciAke3Nob3duUGVyY2VudC50b0ZpeGVkKDEpfSUgKHNwZWNpZmljIHBhdGhzICR7c3BlY2lmaWNQZXJjZW50LnRvRml4ZWQoMSl9JSwgY29tYmluZWQgbGVmdG92ZXJzICR7KHNob3duUGVyY2VudCAtIHNwZWNpZmljUGVyY2VudCkudG9GaXhlZCgxKX0lKWApO1xuICAgIC8vIEVudHJpZXMgYXJlIGEgc3RyaWN0IHBhcnRpdGlvbiAoZWFjaCBmaWxlIGluIGV4YWN0bHkgb25lIGVudHJ5KSwgc28gdGhlc2UgbXVzdCBtYXRjaCB0aGUgcmVhbCB0b3RhbHMgZXhhY3RseS5cbiAgICBsZXQgZW50cnlDb3VudCA9IDA7XG4gICAgbGV0IGVudHJ5U2l6ZSA9IDA7XG4gICAgZm9yIChsZXQgZW50cnkgb2Ygc3VtbWFyaWVzKSB7XG4gICAgICAgIGVudHJ5Q291bnQgKz0gZW50cnkuc3VtbWFyeS5jb3VudDtcbiAgICAgICAgZW50cnlTaXplICs9IGVudHJ5LnN1bW1hcnkudG90YWxTaXplO1xuICAgIH1cbiAgICBsZXQgYWN0dWFsU2l6ZSA9IDA7XG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBhY3R1YWxTaXplICs9IGZpbGUuc2l6ZTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYGVudHJ5IHRvdGFsczogZmlsZXM9JHtmb3JtYXROdW1iZXIoZW50cnlDb3VudCl9IChhY3R1YWwgJHtmb3JtYXROdW1iZXIoZmlsZXMubGVuZ3RoKX0pLCBzaXplPSR7Zm9ybWF0TnVtYmVyKGVudHJ5U2l6ZSl9QiAoYWN0dWFsICR7Zm9ybWF0TnVtYmVyKGFjdHVhbFNpemUpfUIpYCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEZpbGVzKCk6IFByb21pc2U8RmlsZUluZm9bXT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGxldCBjYWNoZWQgPSBKU09OLnBhcnNlKGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKENBQ0hFX0ZJTEUsIFwidXRmOFwiKSkgYXMgeyBkaXJzOiBzdHJpbmdbXTsgZmlsZXM6IEZpbGVJbmZvW10gfTtcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGNhY2hlZC5kaXJzKSA9PT0gSlNPTi5zdHJpbmdpZnkoU0NBTl9ESVJTKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYGxvYWRlZCAke2Zvcm1hdE51bWJlcihjYWNoZWQuZmlsZXMubGVuZ3RoKX0gZmlsZXMgZnJvbSBjYWNoZSAke0NBQ0hFX0ZJTEV9YCk7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkLmZpbGVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGBjYWNoZSBkaXJzIGNoYW5nZWQgKGNhY2hlZCAke0pTT04uc3RyaW5naWZ5KGNhY2hlZC5kaXJzKX0sIG5vdyAke0pTT04uc3RyaW5naWZ5KFNDQU5fRElSUyl9KSwgcmVzY2FubmluZ2ApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoKGVyciBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZSA9PT0gXCJFTk9FTlRcIikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYG5vIGNhY2hlIGZpbGUgYXQgJHtDQUNIRV9GSUxFfSwgc2Nhbm5pbmdgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBjYWNoZSByZWFkIGZhaWxlZCwgcmVzY2FubmluZzpgLCAoZXJyIGFzIEVycm9yKS5zdGFjayA/PyBlcnIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBmaWxlczogRmlsZUluZm9bXSA9IFtdO1xuICAgIGxldCBzY2FuU3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBhd2FpdCBjb2xsZWN0RmlsZXMoU0NBTl9ESVJTLCBmaWxlcyk7XG4gICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKENBQ0hFX0ZJTEUsIEpTT04uc3RyaW5naWZ5KHsgZGlyczogU0NBTl9ESVJTLCBmaWxlcyB9KSk7XG4gICAgY29uc29sZS5sb2coYHNjYW5uZWQgJHtmb3JtYXROdW1iZXIoZmlsZXMubGVuZ3RoKX0gZmlsZXMgaW4gJHtmb3JtYXRUaW1lKHBlcmZvcm1hbmNlLm5vdygpIC0gc2NhblN0YXJ0KX0sIGNhY2hlZCB0byAke0NBQ0hFX0ZJTEV9YCk7XG4gICAgcmV0dXJuIGZpbGVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICAgIGxldCBmaWxlcyA9IGF3YWl0IGdldEZpbGVzKCk7XG4gICAgY29uc29sZS5sb2coYGNvbGxlY3RlZCAke2Zvcm1hdE51bWJlcihmaWxlcy5sZW5ndGgpfSBmaWxlcyBmcm9tICR7U0NBTl9ESVJTLmpvaW4oXCIsIFwiKX1gKTtcbiAgICBzdW1tYXJpemUoZmlsZXMsIHRydWUpO1xuICAgIHN1bW1hcml6ZShmaWxlcywgZmFsc2UpO1xufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gICAgY29uc29sZS5lcnJvcigoZSBhcyBFcnJvcikuc3RhY2sgPz8gZSk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xufSk7XG4iXX0=
|
|
199
|
+
/* _JS_SOURCE_HASH = "90802e23dfaf68469b5c319fa6270629c6b9178410c4c003fd4293ec3f46f4f9"; */
|
package/index.d.ts
CHANGED
|
@@ -3000,6 +3000,35 @@ declare module "sliftutils/storage/remoteStorage/accessPage" {
|
|
|
3000
3000
|
|
|
3001
3001
|
}
|
|
3002
3002
|
|
|
3003
|
+
declare module "sliftutils/storage/remoteStorage/accessStats" {
|
|
3004
|
+
import { SummaryEntry } from "../../treeSummary";
|
|
3005
|
+
export type AccessSummaryState = {
|
|
3006
|
+
total: number;
|
|
3007
|
+
};
|
|
3008
|
+
export type AccessTotals = {
|
|
3009
|
+
[operation: string]: {
|
|
3010
|
+
count: number;
|
|
3011
|
+
size: number;
|
|
3012
|
+
};
|
|
3013
|
+
};
|
|
3014
|
+
/** Counts one storage access, in memory only. size is the bytes involved (0 when the target does not exist); omit it entirely for operations that only count calls, which then only get a count tree. */
|
|
3015
|
+
export declare function trackAccess(config: {
|
|
3016
|
+
account: string;
|
|
3017
|
+
operation: string;
|
|
3018
|
+
path: string;
|
|
3019
|
+
size?: number;
|
|
3020
|
+
}): void;
|
|
3021
|
+
export declare function getAccessTotals(account: string): AccessTotals;
|
|
3022
|
+
export declare function readAccessSummaries(config: {
|
|
3023
|
+
account: string;
|
|
3024
|
+
operation: string;
|
|
3025
|
+
maxCount: number;
|
|
3026
|
+
weightBySize?: boolean;
|
|
3027
|
+
}): SummaryEntry<AccessSummaryState>[];
|
|
3028
|
+
export declare function clearAccountAccessStats(account: string): void;
|
|
3029
|
+
|
|
3030
|
+
}
|
|
3031
|
+
|
|
3003
3032
|
declare module "sliftutils/storage/remoteStorage/blobStore" {
|
|
3004
3033
|
/// <reference types="node" />
|
|
3005
3034
|
/// <reference types="node" />
|
|
@@ -3544,6 +3573,8 @@ declare module "sliftutils/storage/remoteStorage/storageController" {
|
|
|
3544
3573
|
/// <reference types="node" />
|
|
3545
3574
|
import { ArchiveFileInfo, ArchivesConfig, ArchivesSyncStatus, ChangesAfterConfig } from "../IArchives";
|
|
3546
3575
|
import { ServerBucketInfo, ActiveBucketInfo } from "./storageServerState";
|
|
3576
|
+
import { AccessTotals, AccessSummaryState } from "./accessStats";
|
|
3577
|
+
import type { SummaryEntry } from "../../treeSummary";
|
|
3547
3578
|
export declare const REMOTE_STORAGE_CLASS_GUID = "RemoteStorageController-b7e42a91";
|
|
3548
3579
|
export declare const STORAGE_AUTH_PURPOSE = "remoteStorage-auth-1";
|
|
3549
3580
|
export declare const STORAGE_NOT_AUTHENTICATED = "REMOTE_STORAGE_NOT_AUTHENTICATED_cf2f7b1e";
|
|
@@ -3630,6 +3661,12 @@ declare module "sliftutils/storage/remoteStorage/storageController" {
|
|
|
3630
3661
|
clearWriteStats: (account: string) => Promise<{
|
|
3631
3662
|
clearedBuckets: number;
|
|
3632
3663
|
}>;
|
|
3664
|
+
getAccessStats: (account: string) => Promise<AccessTotals>;
|
|
3665
|
+
getAccessSummaries: (account: string, config: {
|
|
3666
|
+
operation: string;
|
|
3667
|
+
maxCount: number;
|
|
3668
|
+
weightBySize?: boolean;
|
|
3669
|
+
}) => Promise<SummaryEntry<AccessSummaryState>[]>;
|
|
3633
3670
|
getIndexInfo: (account: string, bucketName: string) => Promise<{
|
|
3634
3671
|
fileCount: number;
|
|
3635
3672
|
byteCount: number;
|
|
@@ -3699,8 +3736,8 @@ declare module "sliftutils/storage/remoteStorage/storageServerState" {
|
|
|
3699
3736
|
flushedWrites: number;
|
|
3700
3737
|
flushedBytes: number;
|
|
3701
3738
|
};
|
|
3702
|
-
/** Zeroes the write statistics of every bucket in the account
|
|
3703
|
-
export declare function clearAccountWriteStats(account: string):
|
|
3739
|
+
/** Zeroes the write statistics of every bucket in the account. */
|
|
3740
|
+
export declare function clearAccountWriteStats(account: string): number;
|
|
3704
3741
|
export declare function setTrustedMachines(config: {
|
|
3705
3742
|
account: string;
|
|
3706
3743
|
machineIds: string[];
|
package/package.json
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SummaryEntry } from "../../treeSummary";
|
|
2
|
+
export type AccessSummaryState = {
|
|
3
|
+
total: number;
|
|
4
|
+
};
|
|
5
|
+
export type AccessTotals = {
|
|
6
|
+
[operation: string]: {
|
|
7
|
+
count: number;
|
|
8
|
+
size: number;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/** Counts one storage access, in memory only. size is the bytes involved (0 when the target does not exist); omit it entirely for operations that only count calls, which then only get a count tree. */
|
|
12
|
+
export declare function trackAccess(config: {
|
|
13
|
+
account: string;
|
|
14
|
+
operation: string;
|
|
15
|
+
path: string;
|
|
16
|
+
size?: number;
|
|
17
|
+
}): void;
|
|
18
|
+
export declare function getAccessTotals(account: string): AccessTotals;
|
|
19
|
+
export declare function readAccessSummaries(config: {
|
|
20
|
+
account: string;
|
|
21
|
+
operation: string;
|
|
22
|
+
maxCount: number;
|
|
23
|
+
weightBySize?: boolean;
|
|
24
|
+
}): SummaryEntry<AccessSummaryState>[];
|
|
25
|
+
export declare function clearAccountAccessStats(account: string): void;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { TreeSummary, SummaryEntry } from "../../treeSummary";
|
|
2
|
+
|
|
3
|
+
const EXPECTED_OUTPUT_COUNT = 100;
|
|
4
|
+
|
|
5
|
+
export type AccessSummaryState = { total: number };
|
|
6
|
+
export type AccessTotals = { [operation: string]: { count: number; size: number } };
|
|
7
|
+
|
|
8
|
+
type AccessValue = { path: string; size: number };
|
|
9
|
+
type OperationStats = {
|
|
10
|
+
totalCount: number;
|
|
11
|
+
totalSize: number;
|
|
12
|
+
countTree: TreeSummary<AccessValue, AccessSummaryState>;
|
|
13
|
+
// Only exists for operations tracked with sizes; count-only operations (getInfo, del, ...) have no meaningful size breakdown.
|
|
14
|
+
sizeTree?: TreeSummary<AccessValue, AccessSummaryState>;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const accounts = new Map<string, Map<string, OperationStats>>();
|
|
18
|
+
|
|
19
|
+
function makeTree(getValue: (value: AccessValue) => number): TreeSummary<AccessValue, AccessSummaryState> {
|
|
20
|
+
return new TreeSummary<AccessValue, AccessSummaryState>({
|
|
21
|
+
getPath: value => value.path,
|
|
22
|
+
createSummary: () => ({ total: 0 }),
|
|
23
|
+
addToSummary: (value, summary) => {
|
|
24
|
+
summary.total += getValue(value);
|
|
25
|
+
},
|
|
26
|
+
mergeSummaries: (target, source) => {
|
|
27
|
+
target.total += source.total;
|
|
28
|
+
},
|
|
29
|
+
getWeight: summary => summary.total,
|
|
30
|
+
expectedOutputCount: EXPECTED_OUTPUT_COUNT,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Counts one storage access, in memory only. size is the bytes involved (0 when the target does not exist); omit it entirely for operations that only count calls, which then only get a count tree. */
|
|
35
|
+
export function trackAccess(config: { account: string; operation: string; path: string; size?: number }): void {
|
|
36
|
+
let operations = accounts.get(config.account);
|
|
37
|
+
if (!operations) {
|
|
38
|
+
operations = new Map();
|
|
39
|
+
accounts.set(config.account, operations);
|
|
40
|
+
}
|
|
41
|
+
let stats = operations.get(config.operation);
|
|
42
|
+
if (!stats) {
|
|
43
|
+
stats = { totalCount: 0, totalSize: 0, countTree: makeTree(() => 1) };
|
|
44
|
+
operations.set(config.operation, stats);
|
|
45
|
+
}
|
|
46
|
+
let value: AccessValue = { path: config.path, size: config.size || 0 };
|
|
47
|
+
stats.totalCount++;
|
|
48
|
+
stats.countTree.add(value);
|
|
49
|
+
if (config.size !== undefined) {
|
|
50
|
+
let sizeTree = stats.sizeTree;
|
|
51
|
+
if (!sizeTree) {
|
|
52
|
+
sizeTree = makeTree(v => v.size);
|
|
53
|
+
stats.sizeTree = sizeTree;
|
|
54
|
+
}
|
|
55
|
+
stats.totalSize += config.size;
|
|
56
|
+
sizeTree.add(value);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function getAccessTotals(account: string): AccessTotals {
|
|
61
|
+
let result: AccessTotals = {};
|
|
62
|
+
let operations = accounts.get(account);
|
|
63
|
+
if (!operations) return result;
|
|
64
|
+
for (let [operation, stats] of operations) {
|
|
65
|
+
result[operation] = { count: stats.totalCount, size: stats.totalSize };
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function readAccessSummaries(config: { account: string; operation: string; maxCount: number; weightBySize?: boolean }): SummaryEntry<AccessSummaryState>[] {
|
|
71
|
+
let operations = accounts.get(config.account);
|
|
72
|
+
let stats = operations && operations.get(config.operation);
|
|
73
|
+
if (!stats) return [];
|
|
74
|
+
// Count-only operations have no size tree, in which case weightBySize is ignored and the count breakdown is returned.
|
|
75
|
+
let sizeTree = stats.sizeTree;
|
|
76
|
+
if (config.weightBySize && sizeTree) {
|
|
77
|
+
return sizeTree.getSummaries(config.maxCount);
|
|
78
|
+
}
|
|
79
|
+
return stats.countTree.getSummaries(config.maxCount);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function clearAccountAccessStats(account: string): void {
|
|
83
|
+
if (accounts.delete(account)) {
|
|
84
|
+
console.log(`Cleared the in-memory access statistics for account ${account}`);
|
|
85
|
+
}
|
|
86
|
+
}
|