4chan-full
Advanced tools
Comparing version 1.1.1 to 1.2.0
{ | ||
"_from": "4chan-full", | ||
"_id": "4chan-full@1.0.72", | ||
"_inBundle": false, | ||
"_integrity": "sha512-pwIjr/EC5gI28qjaxXyMHqI/qVoQuJc2wp8vM9lRrdtAG1waEJTRkclz0U9Cg374tOq/1F1oEUDCCnpazM51sw==", | ||
"_location": "/4chan-full", | ||
"_phantomChildren": {}, | ||
"_requested": { | ||
"type": "tag", | ||
"registry": true, | ||
"raw": "4chan-full", | ||
"name": "4chan-full", | ||
"escapedName": "4chan-full", | ||
"rawSpec": "", | ||
"saveSpec": null, | ||
"fetchSpec": "latest" | ||
}, | ||
"_requiredBy": [ | ||
"#USER", | ||
"/" | ||
], | ||
"_resolved": "https://registry.npmjs.org/4chan-full/-/4chan-full-1.0.72.tgz", | ||
"_shasum": "0e3267f40a1af1fb47595a5e1556bccf47abfc6f", | ||
"_spec": "4chan-full", | ||
"_where": "D:\\BDT\\Desktop\\Projelerim\\JavaScript\\4chan-full", | ||
"author": { | ||
@@ -35,6 +11,7 @@ "name": "Kıraç Armağan Önal" | ||
"got": "^11.4.0", | ||
"jsdom": "^16.2.2" | ||
"jsdom": "^16.2.2", | ||
"stuffs": "^0.1.2" | ||
}, | ||
"deprecated": false, | ||
"description": "www.4chan.org non-official read only api", | ||
"description": "www.4chan.org non-official read only api. That supports cool things!", | ||
"devDependencies": {}, | ||
@@ -45,6 +22,10 @@ "homepage": "https://github.com/Armagann/4chan-full#readme", | ||
"api", | ||
"datapipe", | ||
"full", | ||
"readonly", | ||
"4chan-full" | ||
"4chan-full", | ||
"easy", | ||
"watcher", | ||
"thread", | ||
"board", | ||
"archive" | ||
], | ||
@@ -61,3 +42,3 @@ "license": "GNU GPLv3", | ||
}, | ||
"version": "1.1.1" | ||
"version": "1.2.0" | ||
} |
@@ -20,2 +20,3 @@ > # 4CHAN-FULL 🎉 | ||
- [Get Thread](https://example.com/ "Example Result") (`.thread(boardCode, threadId)`) | ||
- [Watching Thread for Updates](https://example.com/ "Example Result") (`.threadWatcher(boardCode, threadId, [options])`); | ||
- [Get Board](https://example.com/ "Example Result") (`.board(boardCode, page)`) | ||
@@ -27,4 +28,5 @@ - [Get Archive](https://example.com/ "Example Result") (`.archive(boardCode)`) | ||
### Example Code | ||
### Example Codes | ||
That small script lists all files of the thread.. | ||
@@ -49,2 +51,28 @@ | ||
That small script watches the thread for new replies.. | ||
```js | ||
const { fchf } = require("4chan-full"); | ||
(async () => { | ||
let watcher = fchf.threadWatcher("vg", "337012489"); | ||
// Events: updated, nowUpdated, checked, error, #start, #stop | ||
watcher.on("updated", (oldThread, newThread) => { | ||
console.log({ oldThread, newThread }); | ||
}); | ||
watcher.on("notUpdated", () => { | ||
console.log("there is no new replies.."); | ||
}); | ||
watcher.on("checked", (oldThread, newThread) => { | ||
console.log("checked new checkInterval:", watcher.checkInterval); | ||
}); | ||
watcher.start(); | ||
})(); | ||
``` | ||
## TODO | ||
@@ -54,3 +82,3 @@ | ||
- [x] Parse Message Contents (Quotes etc.) | ||
- [ ] Thread Update Watcher | ||
- [x] Thread Update Watcher | ||
- [ ] Board Update Watcher | ||
@@ -75,2 +103,7 @@ | ||
## HUGE Update 1.2.0 | ||
- Thread Watcher | ||
- Update Boards | ||
- Bug fixes | ||
### Update 1.1.1 | ||
@@ -77,0 +110,0 @@ |
const { JSDOM } = require("jsdom"); | ||
const { defaultRequest } = require("./utils/defaultRequest.js"); | ||
const { findBoard } = require("./utils/findBoard.js"); | ||
const { defaultRequest } = require("./utils/defaultRequest"); | ||
const { findBoard } = require("./utils/findBoard"); | ||
const { parseStats } = require("./parsers/parseStats"); | ||
const { parseThread } = require("./parsers/parseThread.js"); | ||
const { parsePopularThreads } = require("./parsers/parsePopularThreads.js"); | ||
const { parseBoard } = require("./parsers/parseBoard.js"); | ||
const { parseThread } = require("./parsers/parseThread"); | ||
const { parsePopularThreads } = require("./parsers/parsePopularThreads"); | ||
const { parseBoard } = require("./parsers/parseBoard"); | ||
const { SafetyType } = require("./other/SafetyType"); | ||
const boards = require("./other/boards"); | ||
const { PopularThread } = require("./types/PopularThread"); | ||
const { parseArchive } = require("./parsers/parseArchive.js"); | ||
const { parseArchive } = require("./parsers/parseArchive"); | ||
const { ThreadWatcher } = require("./watchers/ThreadWatcher"); | ||
@@ -16,5 +16,6 @@ | ||
class FourChanFull { | ||
#request = defaultRequest; | ||
_request = defaultRequest; | ||
static boards = boards; | ||
boards = boards; | ||
@@ -26,6 +27,26 @@ /** | ||
if (typeof request == "function") { | ||
this.#request = request; | ||
this._request = request; | ||
} | ||
} | ||
/** | ||
* @param {String} boardCode | ||
* @param {String} threadId | ||
* @param {{checkIntervalMin:number,checkIntervalMax:number,checkIntervalAdder:number}} options | ||
*/ | ||
threadWatcher(boardCode, threadId, options={}) { | ||
let watcher = new ThreadWatcher(this, { | ||
boardCode, | ||
threadId, | ||
checkIntervalMin: options.checkIntervalMin, | ||
checkIntervalMax: options.checkIntervalMax, | ||
checkIntervalAdder: options.checkIntervalAdder | ||
}); | ||
return watcher; | ||
} | ||
/** | ||
* @param {String} boardCode | ||
* @param {Number} pageNumber (1-10) | ||
*/ | ||
async board(boardCode, pageNumber = 1) { | ||
@@ -35,3 +56,3 @@ const board = findBoard(boardCode); | ||
const href = `https://boards.4chan.org/${board.code}/${pageNumber == 1 ? "" : pageNumber}`; | ||
const document = new JSDOM(await this.#request("GET", href), { url: href }).window.document; | ||
const document = new JSDOM(await this._request("GET", href), { url: href }).window.document; | ||
@@ -41,2 +62,5 @@ return parseBoard(document, { board, pageNumber, href }); | ||
/** | ||
* @param {String} boardCode | ||
*/ | ||
async archive(boardCode) { | ||
@@ -47,3 +71,3 @@ const board = findBoard(boardCode); | ||
const href = `https://boards.4chan.org/${board.code}/archive`; | ||
const document = new JSDOM(await this.#request("GET", href), { url: href }) | ||
const document = new JSDOM(await this._request("GET", href), { url: href }) | ||
.window.document; | ||
@@ -53,3 +77,7 @@ | ||
} | ||
/** | ||
* @param {String} boardCode | ||
* @param {String} threadId | ||
*/ | ||
async thread(boardCode, threadId) { | ||
@@ -59,3 +87,3 @@ const board = findBoard(boardCode); | ||
const href = `https://boards.4chan.org/${board.code}/thread/${threadId}`; | ||
const document = new JSDOM(await this.#request("GET", href), { url: href }).window.document; | ||
const document = new JSDOM(await this._request("GET", href), { url: href }).window.document; | ||
return parseThread(document, board); | ||
@@ -66,3 +94,2 @@ } | ||
* @param {"WORKSAFE"|"NON_WORKSAFE"|"COMBINED"} safety | ||
* @returns {Promise<Array<PopularThread>>} | ||
*/ | ||
@@ -74,3 +101,3 @@ async popular(safety = "COMBINED") { | ||
const document = new JSDOM( | ||
await this.#request("GET", "https://www.4chan.org/", { cookie: `fpc=${safety}` }), | ||
await this._request("GET", "https://www.4chan.org/", { cookie: `fpc=${safety}` }), | ||
{ url: "https://www.4chan.org/" } | ||
@@ -84,3 +111,3 @@ ).window.document; | ||
const document = new JSDOM( | ||
await this.#request("GET", "https://www.4chan.org/"), | ||
await this._request("GET", "https://www.4chan.org/"), | ||
{ url: "https://www.4chan.org/" } | ||
@@ -87,0 +114,0 @@ ).window.document; |
const boards = [ | ||
{ worksafe: true, name: "Anime & Manga", code: "a" }, | ||
{ worksafe: true, name: "Anime/Cute", code: "c" }, | ||
{ worksafe: true, name: "Anime/Wallpapers", code: "w" }, | ||
{ worksafe: true, name: "Mecha", code: "m" }, | ||
{ worksafe: true, name: "Cosplay & EGL", code: "cgl" }, | ||
{ worksafe: true, name: "Cute/Male", code: "cm" }, | ||
{ worksafe: true, name: "Transportation", code: "n" }, | ||
{ worksafe: true, name: "Otaku Culture", code: "jp" }, | ||
{ worksafe: true, name: "Video Games", code: "v" }, | ||
{ worksafe: true, name: "Video Game Generals", code: "vg" }, | ||
{ worksafe: true, name: "Video Games/RPG", code: "vrpg" }, | ||
{ worksafe: true, name: "Video Games/Mobile", code: "vmg" }, | ||
{ worksafe: true, name: "Video Games/Strategy", code: "vst" }, | ||
{ worksafe: true, name: "Video Games/Multiplayer", code: "vm" }, | ||
{ worksafe: true, name: "Pokémon", code: "vp" }, | ||
{ worksafe: true, name: "Retro Games", code: "vr" }, | ||
{ worksafe: true, name: "Comics & Cartoons", code: "co" }, | ||
{ worksafe: true, name: "Technology", code: "g" }, | ||
{ worksafe: true, name: "Television & Film", code: "tv" }, | ||
{ worksafe: true, name: "Weapons", code: "k" }, | ||
{ worksafe: true, name: "Auto", code: "o" }, | ||
{ worksafe: true, name: "Animals & Nature", code: "an" }, | ||
{ worksafe: true, name: "Traditional Games", code: "tg" }, | ||
{ worksafe: true, name: "Sports", code: "sp" }, | ||
{ worksafe: true, name: "Alternative Sports", code: "asp" }, | ||
{ worksafe: true, name: "Science & Math", code: "sci" }, | ||
{ worksafe: true, name: "History & Humanities", code: "his" }, | ||
{ worksafe: true, name: "International", code: "int" }, | ||
{ worksafe: true, name: "Outdoors", code: "out" }, | ||
{ worksafe: true, name: "Toys", code: "toy" }, | ||
{ worksafe: true, name: "Papercraft & Origami", code: "po" }, | ||
{ worksafe: true, name: "Photography", code: "p" }, | ||
{ worksafe: true, name: "Food & Cooking", code: "ck" }, | ||
{ worksafe: true, name: "Literature", code: "lit" }, | ||
{ worksafe: true, name: "Music", code: "mu" }, | ||
{ worksafe: true, name: "Fashion", code: "fa" }, | ||
{ worksafe: true, name: "3DCG", code: "3" }, | ||
{ worksafe: true, name: "Graphic Design", code: "gd" }, | ||
{ worksafe: true, name: "Do-It-Yourself", code: "diy" }, | ||
{ worksafe: true, name: "Worksafe GIF", code: "wsg" }, | ||
{ worksafe: true, name: "Quests", code: "qst" }, | ||
{ worksafe: true, name: "Business & Finance", code: "biz" }, | ||
{ worksafe: true, name: "Travel", code: "trv" }, | ||
{ worksafe: true, name: "Fitness", code: "fit" }, | ||
{ worksafe: true, name: "Paranormal", code: "x" }, | ||
{ worksafe: true, name: "Advice", code: "adv" }, | ||
{ worksafe: true, name: "LGBT", code: "lgbt" }, | ||
{ worksafe: true, name: "Pony", code: "mlp" }, | ||
{ worksafe: true, name: "Current News", code: "news" }, | ||
{ worksafe: true, name: "Worksafe Requests", code: "wsr" }, | ||
{ worksafe: true, name: "Very Important Posts", code: "vip" }, | ||
{ worksafe: false, name: "Flash", code: "f" }, | ||
{ worksafe: false, name: "Oekaki", code: "i" }, | ||
{ worksafe: false, name: "Artwork/Critique", code: "ic" }, | ||
{ worksafe: false, name: "Wallpapers/General", code: "wg" }, | ||
{ worksafe: false, name: "Random", code: "b" }, | ||
{ worksafe: false, name: "ROBOT9001", code: "r9k" }, | ||
{ worksafe: false, name: "Politically Incorrect", code: "pol" }, | ||
{ worksafe: false, name: "International/Random", code: "bant" }, | ||
{ worksafe: false, name: "Cams & Meetups", code: "soc" }, | ||
{ worksafe: false, name: "Shit 4chan Says", code: "s4s" }, | ||
{ worksafe: false, name: "Sexy Beautiful Women", code: "s" }, | ||
{ worksafe: false, name: "Hardcore", code: "hc" }, | ||
{ worksafe: false, name: "Handsome Men", code: "hm" }, | ||
{ worksafe: false, name: "Hentai", code: "h" }, | ||
{ worksafe: false, name: "Ecchi", code: "e" }, | ||
{ worksafe: false, name: "Yuri", code: "u" }, | ||
{ worksafe: false, name: "Hentai/Alternative", code: "d" }, | ||
{ worksafe: false, name: "Yaoi", code: "y" }, | ||
{ worksafe: false, name: "Torrents", code: "t" }, | ||
{ worksafe: false, name: "High Resolution", code: "hr" }, | ||
{ worksafe: false, name: "Adult GIF", code: "gif" }, | ||
{ worksafe: false, name: "Adult Cartoons", code: "aco" }, | ||
{ worksafe: false, name: "Adult Requests", code: "r" }, | ||
{ worksafe: false, name: "Off-topic", code: "trash" } | ||
{ | ||
"worksafe": true, | ||
"name": "Anime & Manga", | ||
"code": "a" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Anime/Cute", | ||
"code": "c" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Anime/Wallpapers", | ||
"code": "w" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Mecha", | ||
"code": "m" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Cosplay & EGL", | ||
"code": "cgl" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Cute/Male", | ||
"code": "cm" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Flash", | ||
"code": "f" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Transportation", | ||
"code": "n" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Otaku Culture", | ||
"code": "jp" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Virtual YouTubers", | ||
"code": "vt" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Video Games", | ||
"code": "v" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Video Game Generals", | ||
"code": "vg" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Video Games/Multiplayer", | ||
"code": "vm" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Video Games/Mobile", | ||
"code": "vmg" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Pokémon", | ||
"code": "vp" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Retro Games", | ||
"code": "vr" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Video Games/RPG", | ||
"code": "vrpg" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Video Games/Strategy", | ||
"code": "vst" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Comics & Cartoons", | ||
"code": "co" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Technology", | ||
"code": "g" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Television & Film", | ||
"code": "tv" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Weapons", | ||
"code": "k" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Auto", | ||
"code": "o" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Animals & Nature", | ||
"code": "an" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Traditional Games", | ||
"code": "tg" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Sports", | ||
"code": "sp" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Extreme Sports", | ||
"code": "xs" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Professional Wrestling", | ||
"code": "pw" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Science & Math", | ||
"code": "sci" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "History & Humanities", | ||
"code": "his" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "International", | ||
"code": "int" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Outdoors", | ||
"code": "out" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Toys", | ||
"code": "toy" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Oekaki", | ||
"code": "i" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Papercraft & Origami", | ||
"code": "po" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Photography", | ||
"code": "p" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Food & Cooking", | ||
"code": "ck" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Artwork/Critique", | ||
"code": "ic" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Wallpapers/General", | ||
"code": "wg" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Literature", | ||
"code": "lit" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Music", | ||
"code": "mu" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Fashion", | ||
"code": "fa" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "3DCG", | ||
"code": "3" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Graphic Design", | ||
"code": "gd" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Do-It-Yourself", | ||
"code": "diy" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Worksafe GIF", | ||
"code": "wsg" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Quests", | ||
"code": "qst" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Business & Finance", | ||
"code": "biz" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Travel", | ||
"code": "trv" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Fitness", | ||
"code": "fit" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Paranormal", | ||
"code": "x" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Advice", | ||
"code": "adv" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "LGBT", | ||
"code": "lgbt" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Pony", | ||
"code": "mlp" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Current News", | ||
"code": "news" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Worksafe Requests", | ||
"code": "wsr" | ||
}, | ||
{ | ||
"worksafe": true, | ||
"name": "Very Important Posts", | ||
"code": "vip" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Random", | ||
"code": "b" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "ROBOT9001", | ||
"code": "r9k" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Politically Incorrect", | ||
"code": "pol" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "International/Random", | ||
"code": "bant" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Cams & Meetups", | ||
"code": "soc" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Shit 4chan Says", | ||
"code": "s4s" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Sexy Beautiful Women", | ||
"code": "s" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Hardcore", | ||
"code": "hc" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Handsome Men", | ||
"code": "hm" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Hentai", | ||
"code": "h" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Ecchi", | ||
"code": "e" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Yuri", | ||
"code": "u" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Hentai/Alternative", | ||
"code": "d" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Yaoi", | ||
"code": "y" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Torrents", | ||
"code": "t" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "High Resolution", | ||
"code": "hr" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Adult GIF", | ||
"code": "gif" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Adult Cartoons", | ||
"code": "aco" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Adult Requests", | ||
"code": "r" | ||
}, | ||
{ | ||
"worksafe": false, | ||
"name": "Off-Topic", | ||
"code": "trash" | ||
}, | ||
]; | ||
module.exports = boards; |
@@ -16,13 +16,16 @@ const { File } = require("../types/File"); | ||
const isSpoiler = Boolean(e.querySelector(".imgspoiler")); | ||
const fileText = e.querySelector(".fileText"); | ||
const fileTextA = e.querySelector(".fileText a"); | ||
_file.spoiler = isSpoiler; | ||
_file.name = isSpoiler | ||
? e.querySelector(".fileText").getAttribute("title") | ||
: e.querySelector(".fileText a").hasAttribute("title") | ||
? e.querySelector(".fileText a").getAttribute("title") | ||
: e.querySelector(".fileText a").textContent; | ||
? fileText.getAttribute("title") | ||
: fileTextA.hasAttribute("title") | ||
? fileTextA.getAttribute("title") | ||
: fileTextA.textContent; | ||
_file.url = e.querySelector(".fileText a").href; | ||
_file.url = fileTextA.href; | ||
const sizeRegexMatch = e.querySelector(".fileText").textContent.match(sizeRegex); | ||
const sizeRegexMatch = fileText.textContent.match(sizeRegex); | ||
@@ -29,0 +32,0 @@ _file.size = parseFileSize(sizeRegexMatch[1]); |
const { parseFile } = require("./parseFile"); | ||
const { Reply } = require("../types/Reply"); | ||
const { parseMessageContent } = require("./parseMessageContent"); | ||
const { parseCountry } = require("./parseCountry"); | ||
@@ -18,2 +19,3 @@ /** | ||
_reply.message = parseMessageContent(e.querySelector(".postMessage")); | ||
_reply.country = parseCountry(e.querySelector(".postInfo.desktop .flag")); | ||
@@ -20,0 +22,0 @@ return _reply; |
@@ -8,2 +8,3 @@ const { parseFile } = require("./parseFile"); | ||
const { parseMessageContent } = require("./parseMessageContent"); | ||
const { parseCountry } = require("./parseCountry"); | ||
@@ -34,2 +35,4 @@ /** | ||
_thread.country = parseCountry(e.querySelector(".opContainer .postInfo.desktop .flag")); | ||
return _thread; | ||
@@ -58,2 +61,4 @@ } | ||
_semiThread.country = parseCountry(e.querySelector(".opContainer .postInfo.desktop .flag")); | ||
return _semiThread; | ||
@@ -60,0 +65,0 @@ |
@@ -0,1 +1,2 @@ | ||
const { Country } = require("./Country"); | ||
const { File } = require("./File"); | ||
@@ -16,4 +17,7 @@ const { MessageContent } = require("./MessageContent"); | ||
file; | ||
/** @type {Country?} */ | ||
country; | ||
} | ||
module.exports = { Reply }; |
const { Reply } = require("./Reply"); | ||
const { File } = require("./File"); | ||
const { MessageContent } = require("./MessageContent"); | ||
const { Country } = require("./Country"); | ||
@@ -26,4 +27,7 @@ class SemiThread { | ||
url; | ||
/** @type {Country?} */ | ||
country; | ||
} | ||
module.exports = { SemiThread }; |
@@ -5,2 +5,3 @@ const { Reply } = require("./Reply"); | ||
const { MessageContent } = require("./MessageContent"); | ||
const { Country } = require("./Country"); | ||
@@ -35,4 +36,7 @@ class Thread { | ||
archived; | ||
/** @type {Country?} */ | ||
country; | ||
} | ||
module.exports = { Thread }; |
33679
35
1058
113
3
+ Addedstuffs@^0.1.2
+ Addedstuffs@0.1.38(transitive)