crawlingo 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. crawlingo-0.1.2/.github/CRAWLINGO_DEVELOPER_HANDBOOK.md +62 -0
  2. crawlingo-0.1.2/.github/board.tldr +1749 -0
  3. crawlingo-0.1.2/.github/build-merge.js +57 -0
  4. crawlingo-0.1.2/.github/workflows/ci.yml +185 -0
  5. crawlingo-0.1.2/.github/workflows/release.yml +270 -0
  6. crawlingo-0.1.2/.gitignore +69 -0
  7. crawlingo-0.1.2/Cargo.lock +4173 -0
  8. crawlingo-0.1.2/Cargo.toml +95 -0
  9. crawlingo-0.1.2/LICENSE +21 -0
  10. crawlingo-0.1.2/Makefile +64 -0
  11. crawlingo-0.1.2/PKG-INFO +227 -0
  12. crawlingo-0.1.2/README.md +965 -0
  13. crawlingo-0.1.2/benches/auto_matcher.rs +38 -0
  14. crawlingo-0.1.2/benches/fetcher.rs +21 -0
  15. crawlingo-0.1.2/benches/scorer.rs +21 -0
  16. crawlingo-0.1.2/benches/selector.rs +26 -0
  17. crawlingo-0.1.2/crawlingo/__init__.py +53 -0
  18. crawlingo-0.1.2/crawlingo/_crawlingo_core.pyi +131 -0
  19. crawlingo-0.1.2/crawlingo/cli.py +122 -0
  20. crawlingo-0.1.2/crawlingo/crawl.py +168 -0
  21. crawlingo-0.1.2/crawlingo/dataset.py +146 -0
  22. crawlingo-0.1.2/crawlingo/download.py +88 -0
  23. crawlingo-0.1.2/crawlingo/element.py +148 -0
  24. crawlingo-0.1.2/crawlingo/exceptions.py +74 -0
  25. crawlingo-0.1.2/crawlingo/hooks.py +24 -0
  26. crawlingo-0.1.2/crawlingo/mcp.py +321 -0
  27. crawlingo-0.1.2/crawlingo/page.py +181 -0
  28. crawlingo-0.1.2/crawlingo/py.typed +1 -0
  29. crawlingo-0.1.2/crawlingo/session.py +213 -0
  30. crawlingo-0.1.2/crawlingo/sitemap.py +104 -0
  31. crawlingo-0.1.2/crawlingo/types.py +5 -0
  32. crawlingo-0.1.2/crawlingo/watch.py +102 -0
  33. crawlingo-0.1.2/crawlingo-docs/.gitignore +8 -0
  34. crawlingo-0.1.2/crawlingo-docs/eslint.config.mjs +4 -0
  35. crawlingo-0.1.2/crawlingo-docs/install-docs.sh +1 -0
  36. crawlingo-0.1.2/crawlingo-docs/netlify.toml +22 -0
  37. crawlingo-0.1.2/crawlingo-docs/next.config.mjs +40 -0
  38. crawlingo-0.1.2/crawlingo-docs/package.json +45 -0
  39. crawlingo-0.1.2/crawlingo-docs/postcss.config.mjs +11 -0
  40. crawlingo-0.1.2/crawlingo-docs/public/crawlingo.jpg +0 -0
  41. crawlingo-0.1.2/crawlingo-docs/public/crawlingo_demo.gif +0 -0
  42. crawlingo-0.1.2/crawlingo-docs/public/crawlingo_demo.webp +0 -0
  43. crawlingo-0.1.2/crawlingo-docs/public/logo.svg +612 -0
  44. crawlingo-0.1.2/crawlingo-docs/src/app/layout.tsx +15 -0
  45. crawlingo-0.1.2/crawlingo-docs/src/components/copy-button.tsx +30 -0
  46. crawlingo-0.1.2/crawlingo-docs/src/components/feature-card.tsx +143 -0
  47. crawlingo-0.1.2/crawlingo-docs/src/components/layout.tsx +229 -0
  48. crawlingo-0.1.2/crawlingo-docs/src/components/sidebar-trigger.tsx +38 -0
  49. crawlingo-0.1.2/crawlingo-docs/src/components/tabs.tsx +105 -0
  50. crawlingo-0.1.2/crawlingo-docs/src/components/theme-provider.tsx +9 -0
  51. crawlingo-0.1.2/crawlingo-docs/src/components/ui/badge.tsx +40 -0
  52. crawlingo-0.1.2/crawlingo-docs/src/components/ui/button.tsx +54 -0
  53. crawlingo-0.1.2/crawlingo-docs/src/components/ui/card.tsx +101 -0
  54. crawlingo-0.1.2/crawlingo-docs/src/components/ui-badge.tsx +35 -0
  55. crawlingo-0.1.2/crawlingo-docs/src/components/ui-card.tsx +141 -0
  56. crawlingo-0.1.2/crawlingo-docs/src/lib/utils.ts +6 -0
  57. crawlingo-0.1.2/crawlingo-docs/src/pages/features.tsx +310 -0
  58. crawlingo-0.1.2/crawlingo-docs/src/pages/index.tsx +253 -0
  59. crawlingo-0.1.2/crawlingo-docs/src/pages/quick-start.tsx +236 -0
  60. crawlingo-0.1.2/crawlingo-docs/tailwind.config.ts +176 -0
  61. crawlingo-0.1.2/crawlingo-docs/tsconfig.json +22 -0
  62. crawlingo-0.1.2/crawlingo-docs/vercel.json +14 -0
  63. crawlingo-0.1.2/crawlingo.jpg +0 -0
  64. crawlingo-0.1.2/crawlingo_demo.gif +0 -0
  65. crawlingo-0.1.2/crawlingo_demo.webp +0 -0
  66. crawlingo-0.1.2/docs/advanced.md +172 -0
  67. crawlingo-0.1.2/docs/authentication.md +85 -0
  68. crawlingo-0.1.2/docs/auto-match.md +85 -0
  69. crawlingo-0.1.2/docs/change-detection.md +85 -0
  70. crawlingo-0.1.2/docs/configuration.md +96 -0
  71. crawlingo-0.1.2/docs/crawl.md +118 -0
  72. crawlingo-0.1.2/docs/dataset.md +135 -0
  73. crawlingo-0.1.2/docs/faq.md +128 -0
  74. crawlingo-0.1.2/docs/getting-started.md +90 -0
  75. crawlingo-0.1.2/docs/index.md +45 -0
  76. crawlingo-0.1.2/docs/installation.md +80 -0
  77. crawlingo-0.1.2/docs/page.md +179 -0
  78. crawlingo-0.1.2/docs/sdk-nodejs.md +149 -0
  79. crawlingo-0.1.2/docs/sdk-python.md +129 -0
  80. crawlingo-0.1.2/docs/selectors.md +97 -0
  81. crawlingo-0.1.2/docs/session.md +85 -0
  82. crawlingo-0.1.2/docs/watch.md +102 -0
  83. crawlingo-0.1.2/document/00_PROJECT_STATUS.md +52 -0
  84. crawlingo-0.1.2/document/01_ARCHITECTURE.md +162 -0
  85. crawlingo-0.1.2/document/02_CODEBASE_MAP.md +123 -0
  86. crawlingo-0.1.2/document/03_ENGINEERING_AUDIT.md +117 -0
  87. crawlingo-0.1.2/document/04_TECHNICAL_DEBT.md +120 -0
  88. crawlingo-0.1.2/document/05_ROADMAP.md +89 -0
  89. crawlingo-0.1.2/document/06_DEVELOPMENT_GUIDE.md +113 -0
  90. crawlingo-0.1.2/document/07_CONTRIBUTING_GUIDE.md +44 -0
  91. crawlingo-0.1.2/document/08_TESTING_GUIDE.md +74 -0
  92. crawlingo-0.1.2/document/09_RELEASE_GUIDE.md +75 -0
  93. crawlingo-0.1.2/document/10_PERFORMANCE.md +46 -0
  94. crawlingo-0.1.2/document/11_SECURITY_REVIEW.md +45 -0
  95. crawlingo-0.1.2/document/12_API_DESIGN.md +279 -0
  96. crawlingo-0.1.2/document/13_FEATURE_INDEX.md +61 -0
  97. crawlingo-0.1.2/document/14_CHANGELOG_INTERNAL.md +27 -0
  98. crawlingo-0.1.2/document/15_AGENT_MEMORY.md +30 -0
  99. crawlingo-0.1.2/document/16_DESIGN_DECISIONS.md +45 -0
  100. crawlingo-0.1.2/document/17_CODE_STYLE.md +49 -0
  101. crawlingo-0.1.2/document/18_BUG_TRACKER.md +33 -0
  102. crawlingo-0.1.2/document/19_IDEAS.md +21 -0
  103. crawlingo-0.1.2/document/20_PRODUCTION_CHECKLIST.md +32 -0
  104. crawlingo-0.1.2/document/21_EXECUTION_FLOW.md +91 -0
  105. crawlingo-0.1.2/document/22_DATA_FLOW.md +37 -0
  106. crawlingo-0.1.2/document/23_MODULE_DEPENDENCY.md +69 -0
  107. crawlingo-0.1.2/document/24_PAGE_MODEL.md +59 -0
  108. crawlingo-0.1.2/document/25_FETCH_PIPELINE.md +77 -0
  109. crawlingo-0.1.2/document/26_PARSER_PIPELINE.md +64 -0
  110. crawlingo-0.1.2/document/27_SELECTOR_ENGINE.md +49 -0
  111. crawlingo-0.1.2/document/28_DATASET_ENGINE.md +63 -0
  112. crawlingo-0.1.2/document/29_PLUGIN_SYSTEM.md +93 -0
  113. crawlingo-0.1.2/document/30_DIRECTORY_GUIDE.md +52 -0
  114. crawlingo-0.1.2/document/31_CODE_OWNERSHIP.md +37 -0
  115. crawlingo-0.1.2/document/32_RUNTIME.md +49 -0
  116. crawlingo-0.1.2/document/33_REFACTOR_STRATEGY.md +38 -0
  117. crawlingo-0.1.2/document/34_ARCHITECTURE_DECISIONS.md +39 -0
  118. crawlingo-0.1.2/document/35_ENGINE_SCORECARD.md +48 -0
  119. crawlingo-0.1.2/document/CLEANUP_REPORT.md +68 -0
  120. crawlingo-0.1.2/document/CODEBASE_CLEANUP.md +42 -0
  121. crawlingo-0.1.2/document/CORE_ARCHITECTURE.md +91 -0
  122. crawlingo-0.1.2/document/CORE_REFACTOR_ANALYSIS.md +75 -0
  123. crawlingo-0.1.2/document/DATASET_ENGINE_V2.md +100 -0
  124. crawlingo-0.1.2/document/DEPENDENCY_AUDIT.md +59 -0
  125. crawlingo-0.1.2/document/DEPENDENCY_GRAPH_V2.md +66 -0
  126. crawlingo-0.1.2/document/EXTRACTION_ENGINE_V2.md +128 -0
  127. crawlingo-0.1.2/document/FETCH_DESIGN.md +134 -0
  128. crawlingo-0.1.2/document/FETCH_REDESIGN.md +137 -0
  129. crawlingo-0.1.2/document/MASTER_INDEX.md +64 -0
  130. crawlingo-0.1.2/document/MASTER_ROADMAP.md +84 -0
  131. crawlingo-0.1.2/document/NEW_ARCHITECTURE.md +92 -0
  132. crawlingo-0.1.2/document/PAGE_DESIGN.md +104 -0
  133. crawlingo-0.1.2/document/PAGE_MODEL_V2.md +98 -0
  134. crawlingo-0.1.2/document/PARSER_V2.md +96 -0
  135. crawlingo-0.1.2/document/PROJECT_AUDIT.md +321 -0
  136. crawlingo-0.1.2/document/REFACTOR_PLAN.md +53 -0
  137. crawlingo-0.1.2/document/REFACTOR_PROGRESS.md +61 -0
  138. crawlingo-0.1.2/document/SELECTOR_ENGINE_V2.md +79 -0
  139. crawlingo-0.1.2/document/api_reference/auto_matcher.md +48 -0
  140. crawlingo-0.1.2/document/api_reference/cli.md +68 -0
  141. crawlingo-0.1.2/document/api_reference/crawler.md +72 -0
  142. crawlingo-0.1.2/document/api_reference/dataset.md +86 -0
  143. crawlingo-0.1.2/document/api_reference/dom_tree.md +50 -0
  144. crawlingo-0.1.2/document/api_reference/fetch.md +54 -0
  145. crawlingo-0.1.2/document/api_reference/fingerprint.md +50 -0
  146. crawlingo-0.1.2/document/api_reference/mcp.md +55 -0
  147. crawlingo-0.1.2/document/api_reference/page.md +87 -0
  148. crawlingo-0.1.2/document/api_reference/sdk_nodejs.md +161 -0
  149. crawlingo-0.1.2/document/api_reference/sdk_python.md +86 -0
  150. crawlingo-0.1.2/document/api_reference/selector_engine.md +50 -0
  151. crawlingo-0.1.2/document/api_reference/session.md +69 -0
  152. crawlingo-0.1.2/document/api_reference/watcher.md +66 -0
  153. crawlingo-0.1.2/document/developer_guide/01_architecture_overview.md +85 -0
  154. crawlingo-0.1.2/document/developer_guide/02_development_setup.md +65 -0
  155. crawlingo-0.1.2/document/developer_guide/03_codebase_map.md +64 -0
  156. crawlingo-0.1.2/document/developer_guide/04_testing.md +65 -0
  157. crawlingo-0.1.2/document/developer_guide/05_release.md +51 -0
  158. crawlingo-0.1.2/document/developer_guide/06_contributing.md +41 -0
  159. crawlingo-0.1.2/document/developer_guide/07_code_style.md +39 -0
  160. crawlingo-0.1.2/document/developer_guide/08_design_decisions.md +46 -0
  161. crawlingo-0.1.2/document/developer_guide/09_production_deployment.md +40 -0
  162. crawlingo-0.1.2/document/index.md +46 -0
  163. crawlingo-0.1.2/document/user_guide/01_getting_started.md +59 -0
  164. crawlingo-0.1.2/document/user_guide/02_fetch_and_select.md +112 -0
  165. crawlingo-0.1.2/document/user_guide/03_dataset_extraction.md +69 -0
  166. crawlingo-0.1.2/document/user_guide/04_auto_healing.md +59 -0
  167. crawlingo-0.1.2/document/user_guide/05_crawling.md +75 -0
  168. crawlingo-0.1.2/document/user_guide/06_change_detection.md +81 -0
  169. crawlingo-0.1.2/examples/01_simple.js +44 -0
  170. crawlingo-0.1.2/examples/01_simple.py +42 -0
  171. crawlingo-0.1.2/examples/02_dataset.js +38 -0
  172. crawlingo-0.1.2/examples/02_dataset.py +38 -0
  173. crawlingo-0.1.2/examples/03_crawler.js +37 -0
  174. crawlingo-0.1.2/examples/03_crawler.py +37 -0
  175. crawlingo-0.1.2/examples/04_monitor.js +40 -0
  176. crawlingo-0.1.2/examples/04_monitor.py +44 -0
  177. crawlingo-0.1.2/examples/05_hooks.py +33 -0
  178. crawlingo-0.1.2/examples/05_session.js +29 -0
  179. crawlingo-0.1.2/examples/06_dataset_advanced.js +38 -0
  180. crawlingo-0.1.2/examples/06_session.py +37 -0
  181. crawlingo-0.1.2/examples/07_authentication.py +44 -0
  182. crawlingo-0.1.2/examples/08_price_extraction.py +48 -0
  183. crawlingo-0.1.2/examples/09_dataset_schema.py +42 -0
  184. crawlingo-0.1.2/logo.svg +612 -0
  185. crawlingo-0.1.2/package-lock.json +12 -0
  186. crawlingo-0.1.2/package.json +27 -0
  187. crawlingo-0.1.2/pyproject.toml +48 -0
  188. crawlingo-0.1.2/rust-toolchain.toml +3 -0
  189. crawlingo-0.1.2/sdk/nodejs/README.md +156 -0
  190. crawlingo-0.1.2/sdk/nodejs/crawlingo-native.win32-x64-msvc.node +0 -0
  191. crawlingo-0.1.2/sdk/nodejs/package-lock.json +66 -0
  192. crawlingo-0.1.2/sdk/nodejs/package.json +35 -0
  193. crawlingo-0.1.2/sdk/nodejs/scripts/copy-native-assets.cjs +21 -0
  194. crawlingo-0.1.2/sdk/nodejs/src/crawl.ts +70 -0
  195. crawlingo-0.1.2/sdk/nodejs/src/dataset.ts +104 -0
  196. crawlingo-0.1.2/sdk/nodejs/src/download.ts +80 -0
  197. crawlingo-0.1.2/sdk/nodejs/src/element.ts +54 -0
  198. crawlingo-0.1.2/sdk/nodejs/src/index.ts +10 -0
  199. crawlingo-0.1.2/sdk/nodejs/src/native.d.ts +141 -0
  200. crawlingo-0.1.2/sdk/nodejs/src/native.js +328 -0
  201. crawlingo-0.1.2/sdk/nodejs/src/page.ts +75 -0
  202. crawlingo-0.1.2/sdk/nodejs/src/session.ts +79 -0
  203. crawlingo-0.1.2/sdk/nodejs/src/sitemap.ts +95 -0
  204. crawlingo-0.1.2/sdk/nodejs/src/watch.ts +56 -0
  205. crawlingo-0.1.2/sdk/nodejs/tests/amazon-scrape.cjs +329 -0
  206. crawlingo-0.1.2/sdk/nodejs/tests/browser_profiles.test.cjs +32 -0
  207. crawlingo-0.1.2/sdk/nodejs/tests/cookies.test.cjs +33 -0
  208. crawlingo-0.1.2/sdk/nodejs/tests/dataset.test.cjs +97 -0
  209. crawlingo-0.1.2/sdk/nodejs/tests/downloads.test.cjs +73 -0
  210. crawlingo-0.1.2/sdk/nodejs/tests/errors.test.cjs +79 -0
  211. crawlingo-0.1.2/sdk/nodejs/tests/fetchers.test.cjs +54 -0
  212. crawlingo-0.1.2/sdk/nodejs/tests/headers.test.cjs +30 -0
  213. crawlingo-0.1.2/sdk/nodejs/tests/helpers/harness.cjs +113 -0
  214. crawlingo-0.1.2/sdk/nodejs/tests/integration.test.cjs +38 -0
  215. crawlingo-0.1.2/sdk/nodejs/tests/legacy/test_all_apis.cjs +616 -0
  216. crawlingo-0.1.2/sdk/nodejs/tests/mocks/mock_server.cjs +271 -0
  217. crawlingo-0.1.2/sdk/nodejs/tests/output/downloaded_test.bin +1 -0
  218. crawlingo-0.1.2/sdk/nodejs/tests/output/result_out.json +4 -0
  219. crawlingo-0.1.2/sdk/nodejs/tests/output/resume_test.bin +1 -0
  220. crawlingo-0.1.2/sdk/nodejs/tests/output/test_output.json +10 -0
  221. crawlingo-0.1.2/sdk/nodejs/tests/page.test.cjs +26 -0
  222. crawlingo-0.1.2/sdk/nodejs/tests/performance.test.cjs +41 -0
  223. crawlingo-0.1.2/sdk/nodejs/tests/proxy.test.cjs +35 -0
  224. crawlingo-0.1.2/sdk/nodejs/tests/reporters/html.cjs +216 -0
  225. crawlingo-0.1.2/sdk/nodejs/tests/reporters/json.cjs +40 -0
  226. crawlingo-0.1.2/sdk/nodejs/tests/reporters/junit.cjs +57 -0
  227. crawlingo-0.1.2/sdk/nodejs/tests/reports/junit.xml +242 -0
  228. crawlingo-0.1.2/sdk/nodejs/tests/reports/report.html +1201 -0
  229. crawlingo-0.1.2/sdk/nodejs/tests/reports/report.json +881 -0
  230. crawlingo-0.1.2/sdk/nodejs/tests/retry.test.cjs +20 -0
  231. crawlingo-0.1.2/sdk/nodejs/tests/sdk_parity.test.cjs +147 -0
  232. crawlingo-0.1.2/sdk/nodejs/tests/selectors.test.cjs +71 -0
  233. crawlingo-0.1.2/sdk/nodejs/tests/session.test.cjs +43 -0
  234. crawlingo-0.1.2/sdk/nodejs/tests/sitemap.test.cjs +60 -0
  235. crawlingo-0.1.2/sdk/nodejs/tests/smoke.cjs +10 -0
  236. crawlingo-0.1.2/sdk/nodejs/tests/test_all.cjs +176 -0
  237. crawlingo-0.1.2/sdk/nodejs/tsconfig.json +16 -0
  238. crawlingo-0.1.2/sdk/python/README.md +212 -0
  239. crawlingo-0.1.2/sdk/python/crawlingo/__init__.py +53 -0
  240. crawlingo-0.1.2/sdk/python/crawlingo/_crawlingo_core.pyi +131 -0
  241. crawlingo-0.1.2/sdk/python/crawlingo/cli.py +122 -0
  242. crawlingo-0.1.2/sdk/python/crawlingo/crawl.py +168 -0
  243. crawlingo-0.1.2/sdk/python/crawlingo/dataset.py +146 -0
  244. crawlingo-0.1.2/sdk/python/crawlingo/download.py +88 -0
  245. crawlingo-0.1.2/sdk/python/crawlingo/element.py +148 -0
  246. crawlingo-0.1.2/sdk/python/crawlingo/exceptions.py +74 -0
  247. crawlingo-0.1.2/sdk/python/crawlingo/hooks.py +24 -0
  248. crawlingo-0.1.2/sdk/python/crawlingo/mcp.py +321 -0
  249. crawlingo-0.1.2/sdk/python/crawlingo/page.py +181 -0
  250. crawlingo-0.1.2/sdk/python/crawlingo/py.typed +1 -0
  251. crawlingo-0.1.2/sdk/python/crawlingo/session.py +213 -0
  252. crawlingo-0.1.2/sdk/python/crawlingo/sitemap.py +104 -0
  253. crawlingo-0.1.2/sdk/python/crawlingo/types.py +5 -0
  254. crawlingo-0.1.2/sdk/python/crawlingo/watch.py +102 -0
  255. crawlingo-0.1.2/sdk/python/pyproject.toml +48 -0
  256. crawlingo-0.1.2/sdk/python/tests/_crawlingo_test.json +4 -0
  257. crawlingo-0.1.2/sdk/python/tests/_dataset_output.json +4 -0
  258. crawlingo-0.1.2/sdk/python/tests/test_all_apis.py +1048 -0
  259. crawlingo-0.1.2/sdk/python/tests/test_import.py +18 -0
  260. crawlingo-0.1.2/src/bin/crawlingo.rs +457 -0
  261. crawlingo-0.1.2/src/change/detector.rs +204 -0
  262. crawlingo-0.1.2/src/change/mod.rs +1 -0
  263. crawlingo-0.1.2/src/config/mod.rs +322 -0
  264. crawlingo-0.1.2/src/crawl/crawler.rs +393 -0
  265. crawlingo-0.1.2/src/crawl/frontier.rs +242 -0
  266. crawlingo-0.1.2/src/crawl/mod.rs +4 -0
  267. crawlingo-0.1.2/src/crawl/pagination.rs +305 -0
  268. crawlingo-0.1.2/src/crawl/sitemap.rs +447 -0
  269. crawlingo-0.1.2/src/dataset/builder.rs +552 -0
  270. crawlingo-0.1.2/src/dataset/export.rs +127 -0
  271. crawlingo-0.1.2/src/dataset/mod.rs +4 -0
  272. crawlingo-0.1.2/src/dataset/schema.rs +125 -0
  273. crawlingo-0.1.2/src/dataset/stream.rs +272 -0
  274. crawlingo-0.1.2/src/engine/auth.rs +381 -0
  275. crawlingo-0.1.2/src/engine/cache.rs +397 -0
  276. crawlingo-0.1.2/src/engine/download.rs +380 -0
  277. crawlingo-0.1.2/src/engine/fetcher.rs +922 -0
  278. crawlingo-0.1.2/src/engine/middleware.rs +204 -0
  279. crawlingo-0.1.2/src/engine/mod.rs +9 -0
  280. crawlingo-0.1.2/src/engine/pool.rs +69 -0
  281. crawlingo-0.1.2/src/engine/rate_limiter.rs +74 -0
  282. crawlingo-0.1.2/src/engine/retry.rs +204 -0
  283. crawlingo-0.1.2/src/engine/session.rs +866 -0
  284. crawlingo-0.1.2/src/error.rs +71 -0
  285. crawlingo-0.1.2/src/extraction/mod.rs +146 -0
  286. crawlingo-0.1.2/src/fingerprint/dom.rs +135 -0
  287. crawlingo-0.1.2/src/fingerprint/mod.rs +2 -0
  288. crawlingo-0.1.2/src/fingerprint/store.rs +102 -0
  289. crawlingo-0.1.2/src/lib.rs +517 -0
  290. crawlingo-0.1.2/src/matcher/auto_matcher.rs +97 -0
  291. crawlingo-0.1.2/src/matcher/mod.rs +2 -0
  292. crawlingo-0.1.2/src/matcher/scorer.rs +222 -0
  293. crawlingo-0.1.2/src/metrics/mod.rs +277 -0
  294. crawlingo-0.1.2/src/parser/document.rs +716 -0
  295. crawlingo-0.1.2/src/parser/mod.rs +2 -0
  296. crawlingo-0.1.2/src/parser/streaming.rs +155 -0
  297. crawlingo-0.1.2/src/selector/css.rs +394 -0
  298. crawlingo-0.1.2/src/selector/mod.rs +34 -0
  299. crawlingo-0.1.2/src/selector/regex_selector.rs +51 -0
  300. crawlingo-0.1.2/src/selector/text_anchor.rs +109 -0
  301. crawlingo-0.1.2/src/selector/xpath.rs +195 -0
  302. crawlingo-0.1.2/src/watch/mod.rs +1 -0
  303. crawlingo-0.1.2/src/watch/monitor.rs +221 -0
  304. crawlingo-0.1.2/tests/client_pool_test.rs +142 -0
  305. crawlingo-0.1.2/tests/edge_cases_test.rs +176 -0
  306. crawlingo-0.1.2/tests/fixtures/changed.html +25 -0
  307. crawlingo-0.1.2/tests/fixtures/edge_cases.html +155 -0
  308. crawlingo-0.1.2/tests/fixtures/simple.html +19 -0
  309. crawlingo-0.1.2/tests/integration_test.rs +95 -0
  310. crawlingo-0.1.2/tests/mock_transport_test.rs +258 -0
  311. crawlingo-0.1.2/waitlist/.env.example +9 -0
  312. crawlingo-0.1.2/waitlist/.gitignore +5 -0
  313. crawlingo-0.1.2/waitlist/api/waitlist.js +234 -0
  314. crawlingo-0.1.2/waitlist/index.html +16 -0
  315. crawlingo-0.1.2/waitlist/package-lock.json +2893 -0
  316. crawlingo-0.1.2/waitlist/package.json +34 -0
  317. crawlingo-0.1.2/waitlist/postcss.config.js +6 -0
  318. crawlingo-0.1.2/waitlist/public/logo.svg +612 -0
  319. crawlingo-0.1.2/waitlist/src/App.tsx +20 -0
  320. crawlingo-0.1.2/waitlist/src/components/layout/Header.tsx +68 -0
  321. crawlingo-0.1.2/waitlist/src/components/ui/BackgroundGrid.tsx +36 -0
  322. crawlingo-0.1.2/waitlist/src/components/ui/EagleLogo.tsx +35 -0
  323. crawlingo-0.1.2/waitlist/src/lib/utils.ts +6 -0
  324. crawlingo-0.1.2/waitlist/src/main.tsx +10 -0
  325. crawlingo-0.1.2/waitlist/src/pages/WaitlistPage.tsx +253 -0
  326. crawlingo-0.1.2/waitlist/src/styles/globals.css +330 -0
  327. crawlingo-0.1.2/waitlist/tailwind.config.js +80 -0
  328. crawlingo-0.1.2/waitlist/tsconfig.json +29 -0
  329. crawlingo-0.1.2/waitlist/vercel.json +17 -0
  330. crawlingo-0.1.2/waitlist/vite.config.js +100 -0
@@ -0,0 +1,62 @@
1
+ # Crawlingo Developer Handbook
2
+
3
+ This developer handbook serves as your resource for understanding, extending, and debugging Crawlingo.
4
+
5
+ ---
6
+
7
+ ## 1. System Architecture Overview
8
+
9
+ Crawlingo is a multi-language library wrapper built around a high-performance core Rust engine.
10
+
11
+ ```mermaid
12
+ graph TD
13
+ subgraph Client SDKs
14
+ Python["Python SDK"]
15
+ NodeJS["Node.js SDK"]
16
+ end
17
+
18
+ subgraph FFI Wrapper Layer
19
+ PyO3["PyO3 Bindings"]
20
+ NAPI["NAPI-RS Bindings"]
21
+ end
22
+
23
+ subgraph Core Rust Engine
24
+ Fetcher["Fetcher & Connection Pool"]
25
+ DomTree["Flat Vec DomTree"]
26
+ Selectors["Selector Engines CSS/XPath/Regex/SIMD"]
27
+ AutoMatcher["Fuzzy Selector Healer"]
28
+ SledStore["Sled Database"]
29
+ end
30
+
31
+ Python --> PyO3
32
+ NodeJS --> NAPI
33
+ PyO3 --> Fetcher
34
+ NAPI --> Fetcher
35
+ Fetcher --> DomTree
36
+ DomTree --> Selectors
37
+ Selectors -- Fallback --> AutoMatcher
38
+ AutoMatcher --> SledStore
39
+ ```
40
+
41
+ ---
42
+
43
+ ## 2. Core Design Decisions
44
+
45
+ ### Flat DOM Tree Representation
46
+ To optimize heap allocation overhead, the HTML document is parsed into a flat vector `Vec<DomNode>`. Relationships are stored as `usize` index offsets, eliminating recursive pointers and cycle-reference memory leaks in Rust.
47
+
48
+ ### Native wrappers (FFI)
49
+ Crawlingo compiles to native binary extensions for Python (via `PyO3`) and Node.js (via `napi-rs`). FFI boundary methods share elements using flat node indices, bypassing the need to copy HTML strings across languages.
50
+
51
+ ---
52
+
53
+ ## 3. Directory Map
54
+
55
+ - `/src/engine`: Manages networking via `wreq`, session states, DNS cache, and token-bucket host rate limiting.
56
+ - `/src/parser`: Streaming parser constructed on top of `lol_html`.
57
+ - `/src/selector`: Resolves elements matching CSS, XPath, Regex patterns, or SIMD-accelerated text anchors.
58
+ - `/src/matcher`: Parallel similarity scoring evaluating Jaro-Winkler and Jaccard metrics to heal broken selectors.
59
+ - `/src/fingerprint`: Fingerprint database utilities built with `sled`.
60
+ - `/src/dataset`: Structured extraction engine mapping DOM elements to JSON, CSV, or Parquet files.
61
+ - `/sdk/python`: Maturin package for Python.
62
+ - `/sdk/nodejs`: NAPI-RS package for JavaScript/TypeScript.