@internwave/scrapers-api
Version:
A helper API for web scrapers in the InternWave desktop application
1 lines • 37.4 kB
Source Map (JSON)
{"version":3,"sources":["../src/ipc/types/message/message.ts","../src/ipc/reportScraping/reportDone.ts","../src/ipc/reportScraping/reportError.ts","../src/ipc/utils/messageApp.ts","../src/ipc/ProgressReporter/ProgressReporter.ts","../src/ipc/onStartScraping/onStartScraping.ts","../src/jobs/types/Charts.ts","../src/jobs/utils/getRandomJob.ts","../src/scrapers/types/ScraperInput/ScraperInput.ts","../src/api/API.ts"],"sourcesContent":["export enum MessageType{\r\n START_SCRAPING = \"START_SCRAPING\",\r\n REPORT_SCRAPING_ERROR = \"REPORT_SCRAPING_ERROR\",\r\n REPORT_SCRAPING_ACTION_REQUEST = \"REPORT_SCRAPING_ACTION_REQUEST\",\r\n REPORT_SCRAPING_PROGRESS = \"REPORT_SCRAPING_PROGRESS\",\r\n SEND_REPORT_SCRAPING_INPUT_REQUEST = \"REPORT_SCRAPING_INPUT_REQUEST\",\r\n RCV_REPORT_SCRAPING_INPUT_REQUEST = \"RCV_REPORT_SCRAPING_INPUT_REQUEST\",\r\n DONE_SCRAPING = \"DONE_SCRAPING\"\r\n\r\n}\r\n\r\nexport interface IMessage<T> {\r\n type: MessageType\r\n payload: T\r\n}","import { MessageType } from \"src/ipc/types/message/message\"\r\nimport { IDoneScrapingMessage } from \"src/ipc/types/message/variants/DoneScrapingMessage\"\r\nimport { IScrapedJob } from \"src/jobs/types/ScrapedJob\"\r\n\r\nexport const reportDone = (jobs: IScrapedJob[]) => {\r\n const msg: IDoneScrapingMessage = {\r\n type: MessageType.DONE_SCRAPING,\r\n payload: {\r\n jobs\r\n }\r\n }\r\n process.send?.(msg)\r\n}","import { MessageType } from \"src/ipc/types/message/message\"\r\nimport { IReportScrapingErrorMessage } from \"src/ipc/types/message/variants/ReportScrapingMessage/variants/ReportScrapingErrorMessage\"\r\n\r\n\r\nexport const reportError = (message: string) =>{\r\n const msg: IReportScrapingErrorMessage = {\r\n type: MessageType.REPORT_SCRAPING_ERROR,\r\n payload: {\r\n message\r\n }\r\n }\r\n process.send?.(msg)\r\n}","import { ReportingScrapingMessage } from \"src/ipc/types/message/variants/ReportScrapingMessage/ReportScrapingMessage\";\r\nimport { SendScrapingMessage } from \"src/ipc/types/message/variants/ReportScrapingMessage/SendScrapingMessage\";\r\n\r\nexport const messageApp = async <T>(\r\n handleResponse: (\r\n message: SendScrapingMessage,\r\n resolve: (data:T) => void,\r\n reject: (reason?: Error) => void\r\n ) => void,\r\n initMessage: ReportingScrapingMessage\r\n) => {\r\n return new Promise<T>((resolve, reject) => {\r\n if(!process.send){\r\n reject(new Error('No IPC channel available'));\r\n return;\r\n }\r\n\r\n const messageHandler = (message: SendScrapingMessage) => {\r\n process.off('message', messageHandler);\r\n handleResponse(message, resolve, reject);\r\n };\r\n\r\n process.on('message', messageHandler);\r\n process.send(initMessage)\r\n })\r\n}","import { MessageType } from \"src/ipc/types/message/message\";\nimport { IReportScrapingActionRequestMessage } from \"src/ipc/types/message/variants/ReportScrapingMessage/variants/ReportScrapingActionRequestMessage\";\nimport { IRcvReportScrapingInputRequestMessage } from \"src/ipc/types/message/variants/ReportScrapingMessage/variants/ReportScrapingInputRequestMessage/rcv/RcvReportScrapingInputRequestMessage\";\nimport { IReportScrapingProgressMessage } from \"src/ipc/types/message/variants/ReportScrapingMessage/variants/ReportScrapingProgressMessage\";\nimport { messageApp } from \"src/ipc/utils/messageApp\";\nimport { ScraperInput } from \"src/scrapers/types/ScraperInput/ScraperInput\";\n\nexport interface IProgressReporter {\n nextStep(message: string, workUnits: number): void;\n reportProgress(message: string, percentage: number): void;\n requestAction(message: string, percentage?: number): void;\n requestInput(inputs: ScraperInput[], message?: string): Promise<string[]>;\n}\n\nexport class ProgressReporter implements IProgressReporter{\n private _currentStep = 0;\n private _workReporter: WorkReporter | undefined;\n constructor(private _totalSteps:number) {}\n nextStep(message:string, workUnits:number, initWorkUnits?:number) {\n this._currentStep += 1;\n this._workReporter = new WorkReporter(\n workUnits,\n (percentage, callbackMsg) => {\n const msg:IReportScrapingProgressMessage = {\n type: MessageType.REPORT_SCRAPING_PROGRESS,\n payload: {\n message: callbackMsg != null ? callbackMsg : message,\n percentage,\n totalSteps: this._totalSteps,\n currentStep: this._currentStep\n }\n };\n process.send?.(msg)\n },\n initWorkUnits\n );\n }\n reportProgress(message?:string) {\n this._workReporter?.reportProgress(message);\n }\n requestAction(message: string) {\n const msg: IReportScrapingActionRequestMessage = {\n type: MessageType.REPORT_SCRAPING_ACTION_REQUEST,\n payload: {\n message\n }\n }\n process.send?.(msg);\n }\n requestInput(inputs: ScraperInput[], message?: string): Promise<string[]> {\n const initMsg: IRcvReportScrapingInputRequestMessage = {\n type: MessageType.RCV_REPORT_SCRAPING_INPUT_REQUEST,\n payload: {\n inputs,\n message\n }\n }\n \n return messageApp(\n (message, resolve, reject) => {\n if(message.type === MessageType.SEND_REPORT_SCRAPING_INPUT_REQUEST){\n resolve(message.payload.values);\n }else{\n reject(new Error('Unexpected message type'));\n }\n },\n initMsg\n )\n }\n };\n\n\nclass WorkReporter {\n private _currentPercentage = 0;\n private _currentWork = 0;\n\n constructor(private _totalWork: number, private _callback: (percentage:number, message?: string)=>void, initWorkUnits?: number) {\n this._currentPercentage = 0;\n this._currentWork = initWorkUnits != null ? initWorkUnits : 0;\n this._callback(Math.min(100, Math.floor(this._currentWork / this._totalWork * 100)));\n }\n reportProgress(message?:string) {\n this._currentWork += 1;\n const newPercentage = Math.min(100, Math.floor(this._currentWork / this._totalWork * 100));\n if (newPercentage > this._currentPercentage) {\n this._currentPercentage = newPercentage;\n this._callback(newPercentage, message);\n }\n }\n };","import { reportDone } from \"src/ipc/reportScraping/reportDone\";\r\nimport { IStartScrapingMessage } from \"src/ipc/types/message/variants/StartScrapingMessage\";\r\nimport { IScrapedJob } from \"src/jobs/types/ScrapedJob\";\r\nimport { reportError } from \"src/ipc/reportScraping/reportError\";\r\nimport { ProgressReporter } from \"src/ipc/ProgressReporter/ProgressReporter\";\r\n\r\n\r\nexport const onStartScraping = (totalSteps: number) => (\r\n callback:(args: string[], progressReporter: ProgressReporter) => Promise<IScrapedJob[]>\r\n) => {\r\n const progressReporter = new ProgressReporter(totalSteps);\r\n\r\n process.on(\"message\", async (message: IStartScrapingMessage) => {\r\n try{\r\n reportDone(await callback(message.payload.optionValues, progressReporter))\r\n }catch(e){\r\n if(e instanceof Error){\r\n reportError(e.message)\r\n }else if(typeof e === \"string\"){\r\n reportError(e)\r\n }\r\n }\r\n \r\n })\r\n} \r\n","export enum ChartType {\r\n PIE,\r\n}\r\n\r\nexport interface IChartData {\r\n title: string;\r\n data: { [key: string]: number };\r\n type: ChartType;\r\n}\r\n\r\nexport interface IChartDataWithKey extends IChartData {\r\n key: string;\r\n}\r\n\r\nexport type ICharts = { [key: string]: IChartData };\r\n","import { ICharts, ChartType } from \"src/jobs/types/Charts\";\r\nimport { IDescription } from \"src/jobs/types/Descriptions\";\r\nimport { ILocation } from \"src/jobs/types/Location\";\r\nimport { IScrapedJobSalaries, IScrapedSalary } from \"src/jobs/types/Salary\";\r\nimport { IScrapedJob } from \"src/jobs/types/ScrapedJob\";\r\n\r\nexport const getRandomJob = (index: number): IScrapedJob => {\r\n const id = index.toString();\r\n return {\r\n id,\r\n url: Math.random() > 0.5 ? \"uwwave.ca\" : undefined,\r\n company: getRandomCompany(),\r\n jobTitle: getRandomJobTitle(),\r\n openings: Math.floor(Math.random() * 100),\r\n applications: Math.floor(Math.random() * 10000),\r\n location: getRandomLocation(),\r\n dates: {\r\n postedAt: getRandomDatetime(),\r\n deadlineAt: getRandomDatetime(),\r\n startAt: getRandomDatetime(),\r\n endAt: getRandomDatetime(),\r\n duration: getRandomDuration(),\r\n },\r\n categorizations: {\r\n technologies: getRandomTechnologies(),\r\n skills: [],\r\n industries: [],\r\n applicationDocuments: getRandomApplicationDocuments(),\r\n specialRequirements: getRandomSpecialRequirements(),\r\n compensationAndBenefits: [],\r\n },\r\n descriptions: getRandomDescriptions(),\r\n charts: getRandomCharts(),\r\n jobType: getRandomJobType(),\r\n salaries: getRandomSalaries(),\r\n };\r\n };\r\n \r\n const getRandomCompany = () => {\r\n const names = [\r\n \"Facebook\",\r\n \"Shopify\",\r\n \"Faire\",\r\n \"Google\",\r\n \"Workday\",\r\n \"Bloomberg\",\r\n \"Blackberry\",\r\n \"IBM\",\r\n \"Amazon\",\r\n \"Microsoft\",\r\n \"Tesla\",\r\n \"Apple\",\r\n \"Netflix\",\r\n \"Twitter\",\r\n \"Uber\",\r\n \"Lyft\",\r\n \"Airbnb\",\r\n \"Pinterest\",\r\n \"Reddit\",\r\n \"Slack\",\r\n \"Zoom\",\r\n \"Salesforce\",\r\n \"Dropbox\",\r\n ];\r\n const name = names[Math.floor(Math.random() * names.length)] ?? \"Facebook\"\r\n return {\r\n name,\r\n };\r\n };\r\n \r\n const getRandomJobTitle = () => {\r\n const jobTitles = [\r\n \"Software Engineer\",\r\n \"Product Manager\",\r\n \"Data Scientist\",\r\n \"UX Designer\",\r\n \"UI Designer\",\r\n \"Frontend Developer\",\r\n \"Backend Developer\",\r\n \"Fullstack Developer\",\r\n \"DevOps Engineer\",\r\n \"QA Engineer\",\r\n \"Technical Writer\",\r\n \"Technical Support\",\r\n \"Technical Recruiter\",\r\n \"Technical Program Manager\",\r\n \"Technical Account Manager\",\r\n \"Technical Sales\",\r\n \"Technical Marketing\",\r\n \"Technical Trainer\",\r\n \"Technical Consultant\",\r\n \"Technical Architect\",\r\n \"Technical Analyst\",\r\n \"Technical Specialist\",\r\n \"Technical Director\",\r\n \"Technical Lead\",\r\n \"Technical Advisor\",\r\n ];\r\n return jobTitles[Math.floor(Math.random() * jobTitles.length)] ?? \"Software Engineer\";\r\n };\r\n \r\n const getRandomLocation = (): ILocation => {\r\n const locationTypes = [\"Onsite\", \"remote\", \"hybrid\", undefined];\r\n const countries = [\r\n \"Canada\",\r\n \"United States\",\r\n \"United Kingdom\",\r\n \"Germany\",\r\n \"France\",\r\n \"Italy\",\r\n \"Spain\",\r\n \"Australia\",\r\n \"Japan\",\r\n \"China\",\r\n \"India\",\r\n \"Mexico\",\r\n \"Russia\",\r\n \"South Korea\",\r\n \"Egypt\",\r\n undefined,\r\n ];\r\n const cities = [\r\n \"Toronto\",\r\n \"Vancouver\",\r\n \"Montreal\",\r\n \"Calgary\",\r\n \"Ottawa\",\r\n \"Edmonton\",\r\n \"Winnipeg\",\r\n \"Quebec City\",\r\n \"Halifax\",\r\n \"Victoria\",\r\n \"Regina\",\r\n \"Saskatoon\",\r\n \"Charlottetown\",\r\n \"St. John's\",\r\n \"Whitehorse\",\r\n \"Yellowknife\",\r\n \"Iqaluit\",\r\n undefined,\r\n ];\r\n \r\n const regions = [\r\n \"Ontario\",\r\n \"British Columbia\",\r\n \"Quebec\",\r\n \"Alberta\",\r\n \"Manitoba\",\r\n \"Saskatchewan\",\r\n \"Nova Scotia\",\r\n \"New Brunswick\",\r\n \"Prince Edward Island\",\r\n \"Newfoundland and Labrador\",\r\n \"Northwest Territories\",\r\n \"Yukon\",\r\n \"Nunavut\",\r\n undefined,\r\n ];\r\n \r\n const states = [\r\n \"California\",\r\n \"Texas\",\r\n \"Florida\",\r\n \"New York\",\r\n \"Pennsylvania\",\r\n \"Illinois\",\r\n \"Ohio\",\r\n \"Georgia\",\r\n \"North Carolina\",\r\n \"Michigan\",\r\n \"New Jersey\",\r\n \"Virginia\",\r\n \"Washington\",\r\n \"Arizona\",\r\n \"Massachusetts\",\r\n \"Tennessee\",\r\n \"Indiana\",\r\n \"Missouri\",\r\n \"Maryland\",\r\n \"Wisconsin\",\r\n \"Colorado\",\r\n \"Minnesota\",\r\n \"South Carolina\",\r\n \"Alabama\",\r\n \"Louisiana\",\r\n \"Kentucky\",\r\n \"Oregon\",\r\n \"Oklahoma\",\r\n \"Connecticut\",\r\n \"Iowa\",\r\n \"Mississippi\",\r\n \"Arkansas\",\r\n \"Utah\",\r\n \"Nevada\",\r\n \"Kansas\",\r\n \"New Mexico\",\r\n \"Nebraska\",\r\n \"West Virginia\",\r\n \"Idaho\",\r\n \"Hawaii\",\r\n \"Maine\",\r\n \"New Hampshire\",\r\n \"Montana\",\r\n \"Rhode Island\",\r\n \"Delaware\",\r\n \"South Dakota\",\r\n \"North Dakota\",\r\n \"Alaska\",\r\n undefined,\r\n ];\r\n \r\n const addresses = [\r\n \"123 Main St\",\r\n \"456 Elm St\",\r\n \"789 Oak St\",\r\n \"101 Pine St\",\r\n \"202 Maple St\",\r\n \"303 Cedar St\",\r\n \"404 Birch St\",\r\n \"505 Walnut St\",\r\n \"606 Spruce St\",\r\n \"707 Pine St\",\r\n \"808 Elm St\",\r\n \"909 Oak St\",\r\n \"1000 Main St\",\r\n \"1111 Maple St\",\r\n \"1222 Cedar St\",\r\n \"1333 Birch St\",\r\n \"1444 Walnut St\",\r\n \"1555 Spruce St\",\r\n \"1666 Pine St\",\r\n \"1777 Elm St\",\r\n \"1888 Oak St\",\r\n \"1999 Main St\",\r\n undefined,\r\n ];\r\n const type = locationTypes[Math.floor(Math.random() * locationTypes.length)];\r\n const country = countries[Math.floor(Math.random() * countries.length)];\r\n const city = cities[Math.floor(Math.random() * cities.length)];\r\n const region = regions[Math.floor(Math.random() * regions.length)];\r\n const state = states[Math.floor(Math.random() * states.length)];\r\n const address = addresses[Math.floor(Math.random() * addresses.length)];\r\n \r\n return {\r\n type,\r\n country,\r\n city,\r\n region,\r\n state,\r\n address,\r\n };\r\n };\r\n \r\n const getRandomDatetime = () => {\r\n const now = new Date().getTime();\r\n const randomTime = Math.floor(Math.random() * now);\r\n return Math.random() > 0.5 ? undefined : new Date(randomTime).getTime();\r\n };\r\n \r\n const getRandomDuration = () => {\r\n const out: string[] = [];\r\n if (Math.random() > 0.5) {\r\n out.push(\"8 months\");\r\n }\r\n if (Math.random() > 0.5) {\r\n out.push(\"4 months\");\r\n }\r\n if (Math.random() > 0.5) {\r\n out.push(\"12 months\");\r\n }\r\n return out;\r\n };\r\n \r\n const getRandomTechnologies = (): string[] => {\r\n const out: string[] = [];\r\n const techs = [\r\n \"React\",\r\n \"Vue\",\r\n \"Angular\",\r\n \"Svelte\",\r\n \"Ember\",\r\n \"Backbone\",\r\n \"jQuery\",\r\n \"Vanilla JS\",\r\n \"Node\",\r\n \"Express\",\r\n \"Koa\",\r\n \"Nest\",\r\n \"Fastify\",\r\n \"Hapi\",\r\n \"Sails\",\r\n \"Meteor\",\r\n \"Next\",\r\n \"Nuxt\",\r\n \"Gatsby\",\r\n \"Gridsome\",\r\n \"Sapper\",\r\n \"Blitz\",\r\n \"Redwood\",\r\n \"React Native\",\r\n \"Flutter\",\r\n \"Swift\",\r\n \"Kotlin\",\r\n \"Java\",\r\n \"C#\",\r\n \"C++\",\r\n \"Python\",\r\n \"Ruby\",\r\n \"PHP\",\r\n \"Go\",\r\n \"Rust\",\r\n \"Scala\",\r\n \"Haskell\",\r\n \"Erlang\",\r\n \"Clojure\",\r\n \"F#\",\r\n \"OCaml\",\r\n \"Elm\",\r\n \"Reason\",\r\n \"PureScript\",\r\n \"TypeScript\",\r\n \"JavaScript\",\r\n \"HTML\",\r\n \"CSS\",\r\n \"SASS\",\r\n \"LESS\",\r\n \"Stylus\",\r\n \"PostCSS\",\r\n \"Tailwind\",\r\n \"Bootstrap\",\r\n \"Material UI\",\r\n \"Ant Design\",\r\n \"Chakra UI\",\r\n \"Styled Components\",\r\n \"Emotion\",\r\n \"Framer Motion\",\r\n \"GSAP\",\r\n \"D3\",\r\n \"Three\",\r\n \"P5\",\r\n \"Canvas\",\r\n \"WebGL\",\r\n \"WebRTC\",\r\n \"WebSockets\",\r\n \"GraphQL\",\r\n \"REST\",\r\n \"gRPC\",\r\n \"SOAP\",\r\n \"JSON\",\r\n \"XML\",\r\n \"YAML\",\r\n \"TOML\",\r\n \"CSV\",\r\n \"Markdown\",\r\n \"LaTeX\",\r\n \"SQL\",\r\n \"NoSQL\",\r\n \"MongoDB\",\r\n \"Cassandra\",\r\n \"CouchDB\",\r\n \"Firebase\",\r\n \"DynamoDB\",\r\n \"Postgres\",\r\n \"MySQL\",\r\n \"MariaDB\",\r\n \"SQLite\",\r\n \"Redis\",\r\n \"Memcached\",\r\n \"Elasticsearch\",\r\n \"Solr\",\r\n \"Lucene\",\r\n \"Algolia\",\r\n \"Azure Search\",\r\n \"AWS Lambda\",\r\n \"Google Cloud Functions\",\r\n \"Azure Functions\",\r\n \"AWS EC2\",\r\n \"Google Compute Engine\",\r\n \"Azure Virtual Machines\",\r\n \"AWS S3\",\r\n ];\r\n for (const tech of techs) {\r\n if (Math.random() > 0.7) {\r\n out.push(tech);\r\n }\r\n }\r\n return out;\r\n };\r\n \r\n function getRandomApplicationDocuments(): string[] | undefined {\r\n const out: string[] = [];\r\n const docs = [\r\n \"Resume\",\r\n \"Cover Letter\",\r\n \"Portfolio\",\r\n \"Transcript\",\r\n \"Criminal record\",\r\n \"Drivers License\",\r\n ];\r\n for (const doc of docs) {\r\n if (Math.random() > 0.6) {\r\n out.push(doc);\r\n }\r\n }\r\n return Math.random() > 0.7 ? out : undefined;\r\n }\r\n function getRandomSpecialRequirements(): string[] | undefined {\r\n const out: string[] = [];\r\n const docs = [\"Canadian Citizen\", \"LGTBQAIPIESF+ or minority group\"];\r\n for (const doc of docs) {\r\n if (Math.random() > 0.6) {\r\n out.push(doc);\r\n }\r\n }\r\n return Math.random() > 0.7 ? out : undefined;\r\n }\r\n \r\n const getRandomDescriptions = (): IDescription[] => {\r\n const out: IDescription[] = [];\r\n const titles = [\r\n \"Description\",\r\n \"Requirements\",\r\n \"Responsibilities\",\r\n \"Qualifications\",\r\n \"Expectations\",\r\n \"Perks\",\r\n \"Benefits\",\r\n \"Compensation\",\r\n \"Culture\",\r\n \"Team\",\r\n ];\r\n \r\n // paragrams of lorem ipsum\r\n const descriptions = [\r\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed in magna id nulla molestie suscipit. Nullam nec semper turpis. Sed nec felis nec justo ultricies ultricies. Donec nec ex nec libero lacinia euismod. Nullam in ex auctor, sagittis nisl sit amet, tincidunt eros. Nulla facilisi. Nam nec nunc nec tortor aliquet venenatis. Nullam auctor, libero nec fermentum tincidunt, nunc eros tincidunt nunc, nec fermentum nisl nunc et eros. Quisque nec orci nec turpis tincidunt fermentum. Nullam nec ex nec libero lacinia euismod. Nullam in ex auctor, sagittis nisl sit amet, tincidunt eros. Nulla facilisi. Nam nec nunc nec tortor aliquet venenatis. Nullam auctor, libero nec fermentum tincidunt, nunc eros tincidunt nunc, nec fermentum nisl nunc et eros. Quisque nec orci nec turpis tincidunt fermentum.\",\r\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed in magna id nulla molestie suscipit. Nullam nec semper turpis. Sed nec felis nec justo ultricies ultricies. Donec nec ex nec libero lacinia euismod. Nullam in ex auctor, sagittis nisl sit amet, tincidunt eros. Nulla facilisi. Nam nec nunc nec tortor aliquet venenatis. Nullam auctor, libero nec fermentum tincidunt, nunc eros tincidunt nunc, nec fermentum nisl nunc et eros. Quisque nec orci nec turpis tincidunt fermentum. Nullam nec ex nec libero lacinia euismod. Nullam in ex auctor, sagittis nisl sit amet, tincidunt eros. Nulla facilisi. Nam nec nunc nec tortor aliquet venenatis. Nullam auctor, libero nec fermentum tincidunt, nunc eros tincidunt nunc, nec fermentum nisl nunc et eros. Quisque nec orci nec turpis tincidunt fermentum.\",\r\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed in magna id nulla molestie suscipit. Nullam nec sem\",\r\n ];\r\n for (let i = 0; i < Math.max(titles.length, descriptions.length); i++) {\r\n if (Math.random() > 0.5) {\r\n const title = titles[i % titles.length];\r\n const content = descriptions[i % descriptions.length];\r\n if(!title || !content) {\r\n continue;\r\n }\r\n out.push({\r\n title,\r\n content,\r\n type: \"type\"\r\n });\r\n }\r\n }\r\n return out;\r\n };\r\n \r\n const getRandomCharts = (): ICharts => {\r\n const out: ICharts = {};\r\n const chartTitles = [\"Co-op term\", \"Faculty\", \"Program\"];\r\n const keys = [\"A\", \"B\", \"C\", \"D\", \"E\"];\r\n for (let i = 0; i < chartTitles.length; i++) {\r\n if (Math.random() > 0.7) {\r\n continue;\r\n }\r\n const data: { [key: string]: number } = {};\r\n for (let j = 0; j < keys.length; j++) {\r\n const key = keys[j];\r\n if (Math.random() > 0.8 || !key) {\r\n continue;\r\n }\r\n data[key] = Math.floor(Math.random() * 200);\r\n }\r\n const chartTitle = chartTitles[i];\r\n if(!chartTitle){\r\n continue;\r\n }\r\n out[chartTitle] = {\r\n title: chartTitle,\r\n data,\r\n type: ChartType.PIE,\r\n };\r\n }\r\n return out;\r\n };\r\n \r\n const getRandomJobType = (): string[] | undefined => {\r\n const types = [\r\n \"Full-time\",\r\n \"Part-time\",\r\n \"Contract\",\r\n \"Internship\",\r\n \"Freelance\",\r\n \"Volunteer\",\r\n \"Apprenticeship\",\r\n ]\r\n\r\n const out: string[] = [];\r\n for (const x of types) {\r\n if (Math.random() > 0.7) {\r\n out.push(x);\r\n }\r\n }\r\n return Math.random() > 0.7 ? out : undefined;\r\n \r\n };\r\n \r\n const getRandomSalaries = (): IScrapedJobSalaries | undefined => {\r\n if (Math.random() > 0.7) {\r\n return undefined;\r\n }\r\n return {\r\n salary: getRandomSalary(),\r\n salaryMin: getRandomSalary(),\r\n salaryMax: getRandomSalary(),\r\n coop1Salary: getRandomSalary(),\r\n coop2Salary: getRandomSalary(),\r\n coop3Salary: getRandomSalary(),\r\n coop4Salary: getRandomSalary(),\r\n coop5Salary: getRandomSalary(),\r\n coop6Salary: getRandomSalary(),\r\n coop7PlusSalary: getRandomSalary(),\r\n };\r\n };\r\n \r\n const getRandomSalary = (): IScrapedSalary | undefined => {\r\n if (Math.random() > 0.7) {\r\n return undefined;\r\n }\r\n const currencies = [\r\n \"CAD\",\r\n \"USD\",\r\n \"EUR\",\r\n \"GBP\",\r\n \"JPY\",\r\n \"CNY\",\r\n \"INR\",\r\n \"MXN\",\r\n \"RUB\",\r\n \"KRW\",\r\n \"EGP\",\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n ];\r\n const periods = [\r\n \"hourly\",\r\n \"weekly\",\r\n \"bi-weekly\",\r\n \"monthly\",\r\n \"quarterly\",\r\n \"uhoh\",\r\n \"yearly\",\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n ];\r\n \r\n const currency = currencies[Math.floor(Math.random() * currencies.length)];\r\n const period = periods[Math.floor(Math.random() * periods.length)];\r\n let amount = \"\";\r\n switch (period) {\r\n case \"Hourly\":\r\n amount = Math.floor(Math.random() * 100).toString();\r\n break;\r\n case \"Weekly\":\r\n amount = Math.floor(Math.random() * 2000).toString();\r\n break;\r\n case \"Biweekly\":\r\n amount = Math.floor(Math.random() * 4000).toString();\r\n break;\r\n case \"Monthly\":\r\n amount = Math.floor(Math.random() * 8000).toString();\r\n break;\r\n case \"Quarterly\":\r\n amount = Math.floor(Math.random() * 24000).toString();\r\n break;\r\n case \"Yearly\":\r\n amount = Math.floor(Math.random() * 96000).toString();\r\n break;\r\n default:\r\n amount = Math.floor(Math.random() * 50).toString();\r\n break;\r\n }\r\n return {\r\n amount,\r\n currency,\r\n period,\r\n };\r\n };\r\n ","import { ICheckboxScraperInput } from \"src/scrapers/types/ScraperInput/variants/CheckboxScraperInput\";\r\nimport { IPasswordScraperInput } from \"src/scrapers/types/ScraperInput/variants/PasswordScraperInput\";\r\nimport { ISelectScraperInput } from \"src/scrapers/types/ScraperInput/variants/SelectScraperInput\";\r\nimport { ITextScraperInput } from \"src/scrapers/types/ScraperInput/variants/TextScraperInput\";\r\n\r\nexport enum ScraperInputType {\r\n SELECT = \"Select\",\r\n TEXT = \"Text\",\r\n PASSWORD = \"Password\",\r\n CHECKBOX = \"Checkbox\"\r\n }\r\n \r\n export interface IScraperInput{\r\n label: string;\r\n type: ScraperInputType;\r\n required?: boolean;\r\n }\r\n\r\n\r\nexport type ScraperInput = \r\n ITextScraperInput | \r\n IPasswordScraperInput | \r\n ISelectScraperInput | \r\n ICheckboxScraperInput","import { onStartScraping } from \"src/ipc/onStartScraping/onStartScraping\";\n\nexport const API = {\n onStartScraping\n}"],"mappings":"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","names":["MessageType","message","ChartType","ScraperInputType"]}