UNPKG

contract-scraper

Version:

A customisable data scraper for the web based on JSON contracts

56 lines (55 loc) 2.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const joi_1 = __importDefault(require("joi")); const buildSchema = allowedTypes => { return joi_1.default.object({ itemSelector: joi_1.default.string(), waitForPageLoadSelector: joi_1.default.string(), puppeteer: joi_1.default.boolean().default(true), scriptTagSelector: joi_1.default.string(), attributes: joi_1.default .object({ a: joi_1.default.string(), }) .pattern(/^/, joi_1.default.object({ type: joi_1.default .string() .valid(...allowedTypes) .when('itemSelector', { is: joi_1.default.exist(), then: joi_1.default.forbidden(), }) .optional(), raw: joi_1.default.boolean(), selector: joi_1.default.string().optional().allow(''), attribute: joi_1.default.string(), data: joi_1.default.object({ name: joi_1.default.string(), key: joi_1.default.string(), }), itemSelector: joi_1.default.string(), attributes: joi_1.default .object({ a: joi_1.default.string(), }) .pattern(/^/, joi_1.default.object({ type: joi_1.default.string().default('text'), selector: joi_1.default.string().optional().allow(''), attribute: joi_1.default.string(), data: joi_1.default.object({ name: joi_1.default.string(), key: joi_1.default.string(), }), })) .when('itemSelector', { is: joi_1.default.exist(), then: joi_1.default.required(), }), })) .required(), }); }; exports.default = buildSchema;