-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rate Limiting, Max Concurrency, Infinite Crawl & Additional Configurations #102
base: main
Are you sure you want to change the base?
Changes from 13 commits
dbb6a21
60ec188
14eb9fa
e700f6e
ac0ac25
a6b4b1f
c6b6303
b427b25
35ea95b
a996ab1
33faaf5
83a5b0c
401fa9b
62521b7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,8 +1,32 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||
import { Config } from "./src/config"; | ||||||||||||||||||||||||||||||||||||||||||||||||||
import { fileURLToPath } from 'url'; | ||||||||||||||||||||||||||||||||||||||||||||||||||
import { dirname } from 'path'; | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
const __filename = fileURLToPath(import.meta.url); | ||||||||||||||||||||||||||||||||||||||||||||||||||
const __dirname = dirname(__filename); | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
const starting_url = "https://www.builder.io/c/docs/developers"; | ||||||||||||||||||||||||||||||||||||||||||||||||||
const url_prefix = "https://" | ||||||||||||||||||||||||||||||||||||||||||||||||||
const domain = "www.builder.io"; | ||||||||||||||||||||||||||||||||||||||||||||||||||
const url_suffix = "/c/docs"; | ||||||||||||||||||||||||||||||||||||||||||||||||||
const base_url = url_prefix + domain; | ||||||||||||||||||||||||||||||||||||||||||||||||||
const match_url_prefix = base_url + url_suffix; | ||||||||||||||||||||||||||||||||||||||||||||||||||
const match_url = match_url_prefix + "/**"; | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
// Now date stamp for output file name | ||||||||||||||||||||||||||||||||||||||||||||||||||
const now = new Date(); | ||||||||||||||||||||||||||||||||||||||||||||||||||
const date = now.toISOString().split('T')[0]; | ||||||||||||||||||||||||||||||||||||||||||||||||||
const time = now.toTimeString().split(' ')[0]; | ||||||||||||||||||||||||||||||||||||||||||||||||||
const outputs_dir = __dirname.split('/').slice(0, -1).join('/') + '/outputs'; | ||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just a nitpick here to guarantee code consistency, let's use camelCase for these variables:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I updated to camelCase as you suggested and will continue to use that convention. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't mind nitpicks 👍establishing a shared nomenclature for project is ideal in my opinion. I am always open to feedback and recommendations. |
||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
const outputFileName = outputs_dir + "/" + domain + "-" + date + "-" + time + ".json"; | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
export const defaultConfig: Config = { | ||||||||||||||||||||||||||||||||||||||||||||||||||
url: "https://www.builder.io/c/docs/developers", | ||||||||||||||||||||||||||||||||||||||||||||||||||
match: "https://www.builder.io/c/docs/**", | ||||||||||||||||||||||||||||||||||||||||||||||||||
url: starting_url, | ||||||||||||||||||||||||||||||||||||||||||||||||||
match: match_url, | ||||||||||||||||||||||||||||||||||||||||||||||||||
maxPagesToCrawl: 50, | ||||||||||||||||||||||||||||||||||||||||||||||||||
outputFileName: "output.json", | ||||||||||||||||||||||||||||||||||||||||||||||||||
outputFileName: outputFileName, | ||||||||||||||||||||||||||||||||||||||||||||||||||
waitPerPageCrawlTimeoutRange: {min:1000, max:1000}, | ||||||||||||||||||||||||||||||||||||||||||||||||||
headless: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||
maxConcurrency: 1, | ||||||||||||||||||||||||||||||||||||||||||||||||||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
// @ts-ignore | ||
import { Config } from "./src/config"; | ||
|
||
export const defaultConfig: Config = { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you think of using tags instead, for example:
This way we could eventually bring jsdoc/typedoc into the mix to generate meaningful documentation from them. Just a suggestion, as even jsdoc/typedoc can infer whether a property is required or not based on its typings 🤗
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree generating meaningful documentation is the way to go. I've updated the code accordingly. I will add more to the documentation as we progress.