testcafe
Version:
Automated browser testing for the modern web development stack.
81 lines • 8.52 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const os_1 = __importDefault(require("os"));
const make_dir_1 = __importDefault(require("make-dir"));
const promisified_functions_1 = require("../utils/promisified-functions");
const render_template_1 = __importDefault(require("../utils/render-template"));
const debug_1 = __importDefault(require("debug"));
const warning_message_1 = __importDefault(require("../notifications/warning-message"));
const MARKETING_DATA_DIR = path_1.default.join(os_1.default.tmpdir(), 'testcafe-marketing');
const MARKETING_DATA_FILE = 'data-file.json';
const DEBUG_LOGGER = debug_1.default('testcafe:marketing');
class DataFile {
constructor() {
this.dataDir = MARKETING_DATA_DIR;
this.dataPath = path_1.default.join(MARKETING_DATA_DIR, MARKETING_DATA_FILE);
}
async _exists() {
try {
await promisified_functions_1.stat(this.dataPath);
return true;
}
catch (e) {
return false;
}
}
static _createTemplate() {
return {
runCount: 0,
displayedMessageIndex: void 0
};
}
async _save(data) {
await promisified_functions_1.writeFile(this.dataPath, JSON.stringify(data));
}
async _load() {
const fileContent = await promisified_functions_1.readFile(this.dataPath);
return JSON.parse(fileContent);
}
async load() {
try {
await make_dir_1.default(this.dataDir);
let content = null;
if (!await this._exists()) {
content = DataFile._createTemplate();
await this._save(content);
}
else
content = await this._load();
return content;
}
catch (e) {
const message = render_template_1.default(warning_message_1.default.cannotLoadMarketingData, e);
DEBUG_LOGGER(message);
return null;
}
}
async save(data) {
try {
await this._save(data);
}
catch (e) {
const message = render_template_1.default(warning_message_1.default.cannotSaveMarketingData, e);
DEBUG_LOGGER(message);
}
}
// NOTE: For testing purposes
async _remove() {
try {
await promisified_functions_1.deleteFile(this.dataPath);
}
catch (e) { // eslint-disable-line no-empty
}
}
}
exports.default = DataFile;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcmtldGluZy9kYXRhLWZpbGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsNENBQW9CO0FBQ3BCLHdEQUErQjtBQUMvQiwwRUFBdUY7QUFDdkYsK0VBQXNEO0FBQ3RELGtEQUEwQjtBQUMxQix1RkFBZ0U7QUFFaEUsTUFBTSxrQkFBa0IsR0FBSSxjQUFJLENBQUMsSUFBSSxDQUFDLFlBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxZQUFZLEdBQUcsZUFBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFakQsTUFBcUIsUUFBUTtJQUN6QjtRQUNJLElBQUksQ0FBQyxPQUFPLEdBQUksa0JBQWtCLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1QsSUFBSTtZQUNBLE1BQU0sNEJBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFMUIsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sQ0FBQyxFQUFFO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWU7UUFDbEIsT0FBTztZQUNILFFBQVEsRUFBZSxDQUFDO1lBQ3hCLHFCQUFxQixFQUFFLEtBQUssQ0FBQztTQUNoQyxDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUUsSUFBSTtRQUNiLE1BQU0saUNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDUCxNQUFNLFdBQVcsR0FBRyxNQUFNLGdDQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDTixJQUFJO1lBQ0EsTUFBTSxrQkFBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU1QixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFbkIsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN2QixPQUFPLEdBQUcsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUVyQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDN0I7O2dCQUVHLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVqQyxPQUFPLE9BQU8sQ0FBQztTQUNsQjtRQUNELE9BQU8sQ0FBQyxFQUFFO1lBQ04sTUFBTSxPQUFPLEdBQUcseUJBQWMsQ0FBQyx5QkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUU1RSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFdEIsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFFLElBQUk7UUFDWixJQUFJO1lBQ0EsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxDQUFDLEVBQUU7WUFDTixNQUFNLE9BQU8sR0FBRyx5QkFBYyxDQUFDLHlCQUFnQixDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTVFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsS0FBSyxDQUFDLE9BQU87UUFDVCxJQUFJO1lBQ0EsTUFBTSxrQ0FBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuQztRQUNELE9BQU8sQ0FBQyxFQUFFLEVBQUUsK0JBQStCO1NBQzFDO0lBQ0wsQ0FBQztDQUNKO0FBOUVELDJCQThFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBtYWtlRGlyIGZyb20gJ21ha2UtZGlyJztcbmltcG9ydCB7IHN0YXQsIHdyaXRlRmlsZSwgcmVhZEZpbGUsIGRlbGV0ZUZpbGUgfSBmcm9tICcuLi91dGlscy9wcm9taXNpZmllZC1mdW5jdGlvbnMnO1xuaW1wb3J0IHJlbmRlclRlbXBsYXRlIGZyb20gJy4uL3V0aWxzL3JlbmRlci10ZW1wbGF0ZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRVMgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLW1lc3NhZ2UnO1xuXG5jb25zdCBNQVJLRVRJTkdfREFUQV9ESVIgID0gcGF0aC5qb2luKG9zLnRtcGRpcigpLCAndGVzdGNhZmUtbWFya2V0aW5nJyk7XG5jb25zdCBNQVJLRVRJTkdfREFUQV9GSUxFID0gJ2RhdGEtZmlsZS5qc29uJztcblxuY29uc3QgREVCVUdfTE9HR0VSID0gZGVidWcoJ3Rlc3RjYWZlOm1hcmtldGluZycpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXRhRmlsZSB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLmRhdGFEaXIgID0gTUFSS0VUSU5HX0RBVEFfRElSO1xuICAgICAgICB0aGlzLmRhdGFQYXRoID0gcGF0aC5qb2luKE1BUktFVElOR19EQVRBX0RJUiwgTUFSS0VUSU5HX0RBVEFfRklMRSk7XG4gICAgfVxuXG4gICAgYXN5bmMgX2V4aXN0cyAoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzdGF0KHRoaXMuZGF0YVBhdGgpO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIF9jcmVhdGVUZW1wbGF0ZSAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBydW5Db3VudDogICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBkaXNwbGF5ZWRNZXNzYWdlSW5kZXg6IHZvaWQgMFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFzeW5jIF9zYXZlIChkYXRhKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZSh0aGlzLmRhdGFQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgX2xvYWQgKCkge1xuICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHRoaXMuZGF0YVBhdGgpO1xuXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGZpbGVDb250ZW50KTtcbiAgICB9XG5cbiAgICBhc3luYyBsb2FkICgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IG1ha2VEaXIodGhpcy5kYXRhRGlyKTtcblxuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIWF3YWl0IHRoaXMuX2V4aXN0cygpKSB7XG4gICAgICAgICAgICAgICAgY29udGVudCA9IERhdGFGaWxlLl9jcmVhdGVUZW1wbGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2F2ZShjb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gYXdhaXQgdGhpcy5fbG9hZCgpO1xuXG4gICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHJlbmRlclRlbXBsYXRlKFdBUk5JTkdfTUVTU0FHRVMuY2Fubm90TG9hZE1hcmtldGluZ0RhdGEsIGUpO1xuXG4gICAgICAgICAgICBERUJVR19MT0dHRVIobWVzc2FnZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc2F2ZSAoZGF0YSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2F2ZShkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHJlbmRlclRlbXBsYXRlKFdBUk5JTkdfTUVTU0FHRVMuY2Fubm90U2F2ZU1hcmtldGluZ0RhdGEsIGUpO1xuXG4gICAgICAgICAgICBERUJVR19MT0dHRVIobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOT1RFOiBGb3IgdGVzdGluZyBwdXJwb3Nlc1xuICAgIGFzeW5jIF9yZW1vdmUgKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZGVsZXRlRmlsZSh0aGlzLmRhdGFQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=