ayakashi
Version:
The next generation web scraping framework
80 lines (74 loc) • 3.06 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generatePreloader = void 0;
const mkdirp_1 = __importDefault(require("mkdirp"));
const util_1 = require("util");
const path_1 = require("path");
const fs_1 = require("fs");
const opLog_1 = require("../../opLog/opLog");
const mkdirp = util_1.promisify(mkdirp_1.default);
const writeFile = util_1.promisify(fs_1.writeFile);
const exists = util_1.promisify(fs_1.exists);
function generatePreloader(directory, name, ts) {
return __awaiter(this, void 0, void 0, function* () {
const opLog = opLog_1.getOpLog();
const ext = ts ? ".ts" : ".js";
let fileName;
if (name.indexOf(ext) > -1) {
fileName = name;
}
else {
fileName = `${name}${ext}`;
}
const preloadersFolder = path_1.join(directory, "preloaders");
const filePath = path_1.join(preloadersFolder, fileName);
if (yield exists(filePath)) {
opLog.error(`preloader <${name}> already exists in ${filePath}`);
return;
}
yield mkdirp(preloadersFolder);
const content = ts ? getContentTS(name) : getContent(name);
yield writeFile(filePath, content);
opLog.info(`Created <${name}> in ${filePath}`);
});
}
exports.generatePreloader = generatePreloader;
function getContent(name) {
return (`//run it on load
// console.log(navigator.userAgent);
//or export it as a module to be available inside evaluate() calls
//as this.preloaders.${name}() or window.ayakashi.preloaders.${name}()
// module.exports = function() {
// console.log(navigator.userAgent);
// };
`);
}
function getContentTS(name) {
return (`//run it on load
// console.log(navigator.userAgent);
//or export it as a module to be available inside evaluate() calls
//as this.preloaders.${name}() or window.ayakashi.preloaders.${name}()
//type definition, fill in actual type
// import {} from "@ayakashi/types/types/prelude/prelude";
// declare module "@ayakashi/types/types/prelude/prelude" {
// export interface IPreloaders {
// ${name}: () => string;
// }
// }
// export default function() {
// return navigator.userAgent;
// }
`);
}