{"owner":"bda-research","repo":"node-crawler","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# AGENTS.md\n\nThis file provides guidance to the AI agent when working with code in this repository.\n\n## Build & Test\n\nTests run against compiled output in `dist/`, not source. Always build before testing:\n\n```sh\nnpm run build   # tsup → dist/index.js + dist/index.cjs\nnpm test        # NODE_ENV=test ava (runs test/*.js, excludes test/*test.js)\n```\n\nCI pipeline: `npx eslint && npm run build && npm test`\n\n## Testing\n\n- **ava** with **nock** for HTTP mocking. No real network calls.\n- Test files are plain `.js` (not `.ts`) and import from `../dist/index.js`.\n- Ava config excludes `test/*test.js` — new test files should NOT use the `.test.js` suffix (e.g. `callback.js`, not `callback.test.js`).\n- Tests use a custom `testCb` wrapper from `test/lib/avaTestCb.js` for callback-based async. Call `t.end()` to signal completion.\n- Default test timeout is 20s.\n\n## Code Style\n\n- TypeScript strict mode, ESM throughout (`\"type\": \"module\"`).\n- ESLint enforced on `src/**/*.ts`: double quotes, semicolons required, `no-console` is an error, unused vars prefixed with `_` are allowed.\n- Target: ES2020. Module resolution: bundler.\n\n## Architecture Notes\n\n- `got` is lazy-loaded on first use via dynamic `import(\"got\")` — do not add a top-level static import for it.\n- `cheerio` is the default HTML parser (exposed as `res.$`). jsdom is not supported.\n- Rate limiter uses a cluster of independent limiters. `rateLimit` is global-only — modify per-limiter via `crawler.setLimiter()`, not per-request options.\n- The `callback` pattern requires calling `done()` to signal task completion and release the slot.\n"},"files":{"AGENTS.md":"# AGENTS.md\n\nThis file provides guidance to the AI agent when working with code in this repository.\n\n## Build & Test\n\nTests run against compiled output in `dist/`, not source. Always build before testing:\n\n```sh\nnpm run build   # tsup → dist/index.js + dist/index.cjs\nnpm test        # NODE_ENV=test ava (runs test/*.js, excludes test/*test.js)\n```\n\nCI pipeline: `npx eslint && npm run build && npm test`\n\n## Testing\n\n- **ava** with **nock** for HTTP mocking. No real network calls.\n- Test files are plain `.js` (not `.ts`) and import from `../dist/index.js`.\n- Ava config excludes `test/*test.js` — new test files should NOT use the `.test.js` suffix (e.g. `callback.js`, not `callback.test.js`).\n- Tests use a custom `testCb` wrapper from `test/lib/avaTestCb.js` for callback-based async. Call `t.end()` to signal completion.\n- Default test timeout is 20s.\n\n## Code Style\n\n- TypeScript strict mode, ESM throughout (`\"type\": \"module\"`).\n- ESLint enforced on `src/**/*.ts`: double quotes, semicolons required, `no-console` is an error, unused vars prefixed with `_` are allowed.\n- Target: ES2020. Module resolution: bundler.\n\n## Architecture Notes\n\n- `got` is lazy-loaded on first use via dynamic `import(\"got\")` — do not add a top-level static import for it.\n- `cheerio` is the default HTML parser (exposed as `res.$`). jsdom is not supported.\n- Rate limiter uses a cluster of independent limiters. `rateLimit` is global-only — modify per-limiter via `crawler.setLimiter()`, not per-request options.\n- The `callback` pattern requires calling `done()` to signal task completion and release the slot.\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# AGENTS.md\n\nThis file provides guidance to the AI agent when working with code in this repository.\n\n## Build & Test\n\nTests run against compiled output in `dist/`, not source. Always build before testing:\n\n```sh\nnpm run build   # tsup → dist/index.js + dist/index.cjs\nnpm test        # NODE_ENV=test ava (runs test/*.js, excludes test/*test.js)\n```\n\nCI pipeline: `npx eslint && npm run build && npm test`\n\n## Testing\n\n- **ava** with **nock** for HTTP mocking. No real network calls.\n- Test files are plain `.js` (not `.ts`) and import from `../dist/index.js`.\n- Ava config excludes `test/*test.js` — new test files should NOT use the `.test.js` suffix (e.g. `callback.js`, not `callback.test.js`).\n- Tests use a custom `testCb` wrapper from `test/lib/avaTestCb.js` for callback-based async. Call `t.end()` to signal completion.\n- Default test timeout is 20s.\n\n## Code Style\n\n- TypeScript strict mode, ESM throughout (`\"type\": \"module\"`).\n- ESLint enforced on `src/**/*.ts`: double quotes, semicolons required, `no-console` is an error, unused vars prefixed with `_` are allowed.\n- Target: ES2020. Module resolution: bundler.\n\n## Architecture Notes\n\n- `got` is lazy-loaded on first use via dynamic `import(\"got\")` — do not add a top-level static import for it.\n- `cheerio` is the default HTML parser (exposed as `res.$`). jsdom is not supported.\n- Rate limiter uses a cluster of independent limiters. `rateLimit` is global-only — modify per-limiter via `crawler.setLimiter()`, not per-request options.\n- The `callback` pattern requires calling `done()` to signal task completion and release the slot.\n","category":"root","tokens":400}]}