mirror of https://github.com/freeCodeCamp/devdocs
parent
92144087a3
commit
e5f852e7c0
@ -1,142 +1,124 @@
|
||||
// TODO: This file was created by bulk-decaffeinate.
|
||||
// Sanity-check the conversion and remove this comment.
|
||||
/*
|
||||
* decaffeinate suggestions:
|
||||
* DS101: Remove unnecessary use of Array.from
|
||||
* DS102: Remove unnecessary code created because of implicit returns
|
||||
* DS202: Simplify dynamic range loops
|
||||
* DS206: Consider reworking classes to avoid initClass
|
||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md
|
||||
*/
|
||||
(function () {
|
||||
let NORMALIZE_VERSION_RGX = undefined;
|
||||
let NORMALIZE_VERSION_SUB = undefined;
|
||||
let CONCURRENCY = undefined;
|
||||
app.collections.Docs = class Docs extends app.Collection {
|
||||
static initClass() {
|
||||
this.model = "Doc";
|
||||
app.collections.Docs = class Docs extends app.Collection {
|
||||
static model = "Doc";
|
||||
static NORMALIZE_VERSION_RGX = /\.(\d)$/;
|
||||
static NORMALIZE_VERSION_SUB = ".0$1";
|
||||
|
||||
NORMALIZE_VERSION_RGX = /\.(\d)$/;
|
||||
NORMALIZE_VERSION_SUB = ".0$1";
|
||||
// Load models concurrently.
|
||||
// It's not pretty but I didn't want to import a promise library only for this.
|
||||
static CONCURRENCY = 3;
|
||||
|
||||
// Load models concurrently.
|
||||
// It's not pretty but I didn't want to import a promise library only for this.
|
||||
CONCURRENCY = 3;
|
||||
}
|
||||
|
||||
findBySlug(slug) {
|
||||
return (
|
||||
this.findBy("slug", slug) || this.findBy("slug_without_version", slug)
|
||||
);
|
||||
}
|
||||
sort() {
|
||||
return this.models.sort(function (a, b) {
|
||||
if (a.name === b.name) {
|
||||
if (
|
||||
!a.version ||
|
||||
a.version.replace(NORMALIZE_VERSION_RGX, NORMALIZE_VERSION_SUB) >
|
||||
b.version.replace(NORMALIZE_VERSION_RGX, NORMALIZE_VERSION_SUB)
|
||||
) {
|
||||
return -1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
} else if (a.name.toLowerCase() > b.name.toLowerCase()) {
|
||||
return 1;
|
||||
} else {
|
||||
findBySlug(slug) {
|
||||
return (
|
||||
this.findBy("slug", slug) || this.findBy("slug_without_version", slug)
|
||||
);
|
||||
}
|
||||
sort() {
|
||||
return this.models.sort(function (a, b) {
|
||||
if (a.name === b.name) {
|
||||
if (
|
||||
!a.version ||
|
||||
a.version.replace(
|
||||
Docs.NORMALIZE_VERSION_RGX,
|
||||
Docs.NORMALIZE_VERSION_SUB,
|
||||
) >
|
||||
b.version.replace(
|
||||
Docs.NORMALIZE_VERSION_RGX,
|
||||
Docs.NORMALIZE_VERSION_SUB,
|
||||
)
|
||||
) {
|
||||
return -1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
load(onComplete, onError, options) {
|
||||
let i = 0;
|
||||
|
||||
var next = () => {
|
||||
if (i < this.models.length) {
|
||||
this.models[i].load(next, fail, options);
|
||||
} else if (i === this.models.length + CONCURRENCY - 1) {
|
||||
onComplete();
|
||||
}
|
||||
i++;
|
||||
};
|
||||
|
||||
var fail = function (...args) {
|
||||
if (onError) {
|
||||
onError(...Array.from(args || []));
|
||||
onError = null;
|
||||
}
|
||||
next();
|
||||
};
|
||||
} else if (a.name.toLowerCase() > b.name.toLowerCase()) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
});
|
||||
}
|
||||
load(onComplete, onError, options) {
|
||||
let i = 0;
|
||||
|
||||
for (
|
||||
let j = 0, end = CONCURRENCY, asc = 0 <= end;
|
||||
asc ? j < end : j > end;
|
||||
asc ? j++ : j--
|
||||
) {
|
||||
next();
|
||||
var next = () => {
|
||||
if (i < this.models.length) {
|
||||
this.models[i].load(next, fail, options);
|
||||
} else if (i === this.models.length + Docs.CONCURRENCY - 1) {
|
||||
onComplete();
|
||||
}
|
||||
}
|
||||
i++;
|
||||
};
|
||||
|
||||
clearCache() {
|
||||
for (var doc of Array.from(this.models)) {
|
||||
doc.clearCache();
|
||||
var fail = function (...args) {
|
||||
if (onError) {
|
||||
onError(args);
|
||||
onError = null;
|
||||
}
|
||||
}
|
||||
next();
|
||||
};
|
||||
|
||||
uninstall(callback) {
|
||||
let i = 0;
|
||||
var next = () => {
|
||||
if (i < this.models.length) {
|
||||
this.models[i++].uninstall(next, next);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
for (let j = 0, end = Docs.CONCURRENCY; j < end; j++) {
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
getInstallStatuses(callback) {
|
||||
app.db.versions(this.models, function (statuses) {
|
||||
if (statuses) {
|
||||
for (var key in statuses) {
|
||||
var value = statuses[key];
|
||||
statuses[key] = { installed: !!value, mtime: value };
|
||||
}
|
||||
}
|
||||
callback(statuses);
|
||||
});
|
||||
clearCache() {
|
||||
for (var doc of this.models) {
|
||||
doc.clearCache();
|
||||
}
|
||||
}
|
||||
|
||||
checkForUpdates(callback) {
|
||||
this.getInstallStatuses((statuses) => {
|
||||
let i = 0;
|
||||
if (statuses) {
|
||||
for (var slug in statuses) {
|
||||
var status = statuses[slug];
|
||||
if (this.findBy("slug", slug).isOutdated(status)) {
|
||||
i += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
callback(i);
|
||||
});
|
||||
}
|
||||
uninstall(callback) {
|
||||
let i = 0;
|
||||
var next = () => {
|
||||
if (i < this.models.length) {
|
||||
this.models[i++].uninstall(next, next);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
next();
|
||||
}
|
||||
|
||||
updateInBackground() {
|
||||
this.getInstallStatuses((statuses) => {
|
||||
if (!statuses) {
|
||||
return;
|
||||
getInstallStatuses(callback) {
|
||||
app.db.versions(this.models, function (statuses) {
|
||||
if (statuses) {
|
||||
for (var key in statuses) {
|
||||
var value = statuses[key];
|
||||
statuses[key] = { installed: !!value, mtime: value };
|
||||
}
|
||||
}
|
||||
callback(statuses);
|
||||
});
|
||||
}
|
||||
|
||||
checkForUpdates(callback) {
|
||||
this.getInstallStatuses((statuses) => {
|
||||
let i = 0;
|
||||
if (statuses) {
|
||||
for (var slug in statuses) {
|
||||
var status = statuses[slug];
|
||||
var doc = this.findBy("slug", slug);
|
||||
if (doc.isOutdated(status)) {
|
||||
doc.install($.noop, $.noop);
|
||||
if (this.findBy("slug", slug).isOutdated(status)) {
|
||||
i += 1;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
app.collections.Docs.initClass();
|
||||
return app.collections.Docs;
|
||||
})();
|
||||
}
|
||||
callback(i);
|
||||
});
|
||||
}
|
||||
|
||||
updateInBackground() {
|
||||
this.getInstallStatuses((statuses) => {
|
||||
if (!statuses) {
|
||||
return;
|
||||
}
|
||||
for (var slug in statuses) {
|
||||
var status = statuses[slug];
|
||||
var doc = this.findBy("slug", slug);
|
||||
if (doc.isOutdated(status)) {
|
||||
doc.install($.noop, $.noop);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in new issue