@mweinbach/apple-docs-mcp 1.0.0

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 (267) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +560 -0
  3. package/dist/constants/browser-headers.d.ts +48 -0
  4. package/dist/constants/browser-headers.d.ts.map +1 -0
  5. package/dist/constants/browser-headers.js +166 -0
  6. package/dist/constants/browser-headers.js.map +1 -0
  7. package/dist/index.d.ts +83 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +215 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/schemas/analyze-api.schema.d.ts +42 -0
  12. package/dist/schemas/analyze-api.schema.d.ts.map +1 -0
  13. package/dist/schemas/analyze-api.schema.js +23 -0
  14. package/dist/schemas/analyze-api.schema.js.map +1 -0
  15. package/dist/schemas/apple-docs.schema.d.ts +18 -0
  16. package/dist/schemas/apple-docs.schema.d.ts.map +1 -0
  17. package/dist/schemas/apple-docs.schema.js +10 -0
  18. package/dist/schemas/apple-docs.schema.js.map +1 -0
  19. package/dist/schemas/doc-content.schema.d.ts +24 -0
  20. package/dist/schemas/doc-content.schema.d.ts.map +1 -0
  21. package/dist/schemas/doc-content.schema.js +10 -0
  22. package/dist/schemas/doc-content.schema.js.map +1 -0
  23. package/dist/schemas/documentation-updates.schema.d.ts +27 -0
  24. package/dist/schemas/documentation-updates.schema.d.ts.map +1 -0
  25. package/dist/schemas/documentation-updates.schema.js +12 -0
  26. package/dist/schemas/documentation-updates.schema.js.map +1 -0
  27. package/dist/schemas/framework-symbols.schema.d.ts +24 -0
  28. package/dist/schemas/framework-symbols.schema.d.ts.map +1 -0
  29. package/dist/schemas/framework-symbols.schema.js +11 -0
  30. package/dist/schemas/framework-symbols.schema.js.map +1 -0
  31. package/dist/schemas/index.d.ts +15 -0
  32. package/dist/schemas/index.d.ts.map +1 -0
  33. package/dist/schemas/index.js +15 -0
  34. package/dist/schemas/index.js.map +1 -0
  35. package/dist/schemas/platform-compatibility.schema.d.ts +18 -0
  36. package/dist/schemas/platform-compatibility.schema.d.ts.map +1 -0
  37. package/dist/schemas/platform-compatibility.schema.js +8 -0
  38. package/dist/schemas/platform-compatibility.schema.js.map +1 -0
  39. package/dist/schemas/references.schema.d.ts +18 -0
  40. package/dist/schemas/references.schema.d.ts.map +1 -0
  41. package/dist/schemas/references.schema.js +9 -0
  42. package/dist/schemas/references.schema.js.map +1 -0
  43. package/dist/schemas/related-apis.schema.d.ts +21 -0
  44. package/dist/schemas/related-apis.schema.d.ts.map +1 -0
  45. package/dist/schemas/related-apis.schema.js +9 -0
  46. package/dist/schemas/related-apis.schema.js.map +1 -0
  47. package/dist/schemas/sample-code.schema.d.ts +21 -0
  48. package/dist/schemas/sample-code.schema.d.ts.map +1 -0
  49. package/dist/schemas/sample-code.schema.js +10 -0
  50. package/dist/schemas/sample-code.schema.js.map +1 -0
  51. package/dist/schemas/search.schema.d.ts +15 -0
  52. package/dist/schemas/search.schema.d.ts.map +1 -0
  53. package/dist/schemas/search.schema.js +8 -0
  54. package/dist/schemas/search.schema.js.map +1 -0
  55. package/dist/schemas/similar-apis.schema.d.ts +21 -0
  56. package/dist/schemas/similar-apis.schema.d.ts.map +1 -0
  57. package/dist/schemas/similar-apis.schema.js +9 -0
  58. package/dist/schemas/similar-apis.schema.js.map +1 -0
  59. package/dist/schemas/technologies.schema.d.ts +21 -0
  60. package/dist/schemas/technologies.schema.d.ts.map +1 -0
  61. package/dist/schemas/technologies.schema.js +10 -0
  62. package/dist/schemas/technologies.schema.js.map +1 -0
  63. package/dist/schemas/technology-overviews.schema.d.ts +24 -0
  64. package/dist/schemas/technology-overviews.schema.d.ts.map +1 -0
  65. package/dist/schemas/technology-overviews.schema.js +11 -0
  66. package/dist/schemas/technology-overviews.schema.js.map +1 -0
  67. package/dist/schemas/wwdc.schemas.d.ts +208 -0
  68. package/dist/schemas/wwdc.schemas.d.ts.map +1 -0
  69. package/dist/schemas/wwdc.schemas.js +97 -0
  70. package/dist/schemas/wwdc.schemas.js.map +1 -0
  71. package/dist/tools/definitions.d.ts +10 -0
  72. package/dist/tools/definitions.d.ts.map +1 -0
  73. package/dist/tools/definitions.js +690 -0
  74. package/dist/tools/definitions.js.map +1 -0
  75. package/dist/tools/doc-fetcher.d.ts +19 -0
  76. package/dist/tools/doc-fetcher.d.ts.map +1 -0
  77. package/dist/tools/doc-fetcher.js +487 -0
  78. package/dist/tools/doc-fetcher.js.map +1 -0
  79. package/dist/tools/doc-formatter.d.ts +69 -0
  80. package/dist/tools/doc-formatter.d.ts.map +1 -0
  81. package/dist/tools/doc-formatter.js +208 -0
  82. package/dist/tools/doc-formatter.js.map +1 -0
  83. package/dist/tools/find-similar-apis.d.ts +5 -0
  84. package/dist/tools/find-similar-apis.d.ts.map +1 -0
  85. package/dist/tools/find-similar-apis.js +275 -0
  86. package/dist/tools/find-similar-apis.js.map +1 -0
  87. package/dist/tools/get-documentation-updates.d.ts +5 -0
  88. package/dist/tools/get-documentation-updates.d.ts.map +1 -0
  89. package/dist/tools/get-documentation-updates.js +244 -0
  90. package/dist/tools/get-documentation-updates.js.map +1 -0
  91. package/dist/tools/get-platform-compatibility.d.ts +5 -0
  92. package/dist/tools/get-platform-compatibility.d.ts.map +1 -0
  93. package/dist/tools/get-platform-compatibility.js +205 -0
  94. package/dist/tools/get-platform-compatibility.js.map +1 -0
  95. package/dist/tools/get-related-apis.d.ts +5 -0
  96. package/dist/tools/get-related-apis.d.ts.map +1 -0
  97. package/dist/tools/get-related-apis.js +155 -0
  98. package/dist/tools/get-related-apis.js.map +1 -0
  99. package/dist/tools/get-sample-code.d.ts +5 -0
  100. package/dist/tools/get-sample-code.d.ts.map +1 -0
  101. package/dist/tools/get-sample-code.js +375 -0
  102. package/dist/tools/get-sample-code.js.map +1 -0
  103. package/dist/tools/get-technology-overviews.d.ts +5 -0
  104. package/dist/tools/get-technology-overviews.d.ts.map +1 -0
  105. package/dist/tools/get-technology-overviews.js +306 -0
  106. package/dist/tools/get-technology-overviews.js.map +1 -0
  107. package/dist/tools/handlers.d.ts +29 -0
  108. package/dist/tools/handlers.d.ts.map +1 -0
  109. package/dist/tools/handlers.js +350 -0
  110. package/dist/tools/handlers.js.map +1 -0
  111. package/dist/tools/list-technologies.d.ts +5 -0
  112. package/dist/tools/list-technologies.d.ts.map +1 -0
  113. package/dist/tools/list-technologies.js +165 -0
  114. package/dist/tools/list-technologies.js.map +1 -0
  115. package/dist/tools/resolve-references-batch.d.ts +5 -0
  116. package/dist/tools/resolve-references-batch.d.ts.map +1 -0
  117. package/dist/tools/resolve-references-batch.js +199 -0
  118. package/dist/tools/resolve-references-batch.js.map +1 -0
  119. package/dist/tools/search-framework-symbols.d.ts +7 -0
  120. package/dist/tools/search-framework-symbols.d.ts.map +1 -0
  121. package/dist/tools/search-framework-symbols.js +235 -0
  122. package/dist/tools/search-framework-symbols.js.map +1 -0
  123. package/dist/tools/search-parser.d.ts +15 -0
  124. package/dist/tools/search-parser.d.ts.map +1 -0
  125. package/dist/tools/search-parser.js +188 -0
  126. package/dist/tools/search-parser.js.map +1 -0
  127. package/dist/tools/search-result-parser.d.ts +52 -0
  128. package/dist/tools/search-result-parser.d.ts.map +1 -0
  129. package/dist/tools/search-result-parser.js +137 -0
  130. package/dist/tools/search-result-parser.js.map +1 -0
  131. package/dist/tools/tools-guide.d.ts +124 -0
  132. package/dist/tools/tools-guide.d.ts.map +1 -0
  133. package/dist/tools/tools-guide.js +389 -0
  134. package/dist/tools/tools-guide.js.map +1 -0
  135. package/dist/tools/wwdc/content-extractor.d.ts +9 -0
  136. package/dist/tools/wwdc/content-extractor.d.ts.map +1 -0
  137. package/dist/tools/wwdc/content-extractor.js +520 -0
  138. package/dist/tools/wwdc/content-extractor.js.map +1 -0
  139. package/dist/tools/wwdc/topics-extractor.d.ts +32 -0
  140. package/dist/tools/wwdc/topics-extractor.d.ts.map +1 -0
  141. package/dist/tools/wwdc/topics-extractor.js +146 -0
  142. package/dist/tools/wwdc/topics-extractor.js.map +1 -0
  143. package/dist/tools/wwdc/video-list-extractor.d.ts +13 -0
  144. package/dist/tools/wwdc/video-list-extractor.d.ts.map +1 -0
  145. package/dist/tools/wwdc/video-list-extractor.js +238 -0
  146. package/dist/tools/wwdc/video-list-extractor.js.map +1 -0
  147. package/dist/tools/wwdc/wwdc-handlers.d.ts +32 -0
  148. package/dist/tools/wwdc/wwdc-handlers.d.ts.map +1 -0
  149. package/dist/tools/wwdc/wwdc-handlers.js +791 -0
  150. package/dist/tools/wwdc/wwdc-handlers.js.map +1 -0
  151. package/dist/types/apple-docs.d.ts +112 -0
  152. package/dist/types/apple-docs.d.ts.map +1 -0
  153. package/dist/types/apple-docs.js +5 -0
  154. package/dist/types/apple-docs.js.map +1 -0
  155. package/dist/types/cache.d.ts +28 -0
  156. package/dist/types/cache.d.ts.map +1 -0
  157. package/dist/types/cache.js +5 -0
  158. package/dist/types/cache.js.map +1 -0
  159. package/dist/types/content-sections.d.ts +37 -0
  160. package/dist/types/content-sections.d.ts.map +1 -0
  161. package/dist/types/content-sections.js +5 -0
  162. package/dist/types/content-sections.js.map +1 -0
  163. package/dist/types/error.d.ts +39 -0
  164. package/dist/types/error.d.ts.map +1 -0
  165. package/dist/types/error.js +21 -0
  166. package/dist/types/error.js.map +1 -0
  167. package/dist/types/headers.d.ts +95 -0
  168. package/dist/types/headers.d.ts.map +1 -0
  169. package/dist/types/headers.js +5 -0
  170. package/dist/types/headers.js.map +1 -0
  171. package/dist/types/http.d.ts +31 -0
  172. package/dist/types/http.d.ts.map +1 -0
  173. package/dist/types/http.js +5 -0
  174. package/dist/types/http.js.map +1 -0
  175. package/dist/types/index.d.ts +11 -0
  176. package/dist/types/index.d.ts.map +1 -0
  177. package/dist/types/index.js +12 -0
  178. package/dist/types/index.js.map +1 -0
  179. package/dist/types/search.d.ts +62 -0
  180. package/dist/types/search.d.ts.map +1 -0
  181. package/dist/types/search.js +5 -0
  182. package/dist/types/search.js.map +1 -0
  183. package/dist/types/sections.d.ts +64 -0
  184. package/dist/types/sections.d.ts.map +1 -0
  185. package/dist/types/sections.js +5 -0
  186. package/dist/types/sections.js.map +1 -0
  187. package/dist/types/tools/platform.d.ts +33 -0
  188. package/dist/types/tools/platform.d.ts.map +1 -0
  189. package/dist/types/tools/platform.js +5 -0
  190. package/dist/types/tools/platform.js.map +1 -0
  191. package/dist/types/tools/sample-code.d.ts +23 -0
  192. package/dist/types/tools/sample-code.d.ts.map +1 -0
  193. package/dist/types/tools/sample-code.js +5 -0
  194. package/dist/types/tools/sample-code.js.map +1 -0
  195. package/dist/types/tools/technology.d.ts +18 -0
  196. package/dist/types/tools/technology.d.ts.map +1 -0
  197. package/dist/types/tools/technology.js +5 -0
  198. package/dist/types/tools/technology.js.map +1 -0
  199. package/dist/types/tools/updates.d.ts +23 -0
  200. package/dist/types/tools/updates.d.ts.map +1 -0
  201. package/dist/types/tools/updates.js +5 -0
  202. package/dist/types/tools/updates.js.map +1 -0
  203. package/dist/types/wwdc.d.ts +200 -0
  204. package/dist/types/wwdc.d.ts.map +1 -0
  205. package/dist/types/wwdc.js +5 -0
  206. package/dist/types/wwdc.js.map +1 -0
  207. package/dist/utils/cache-warmer.d.ts +22 -0
  208. package/dist/utils/cache-warmer.d.ts.map +1 -0
  209. package/dist/utils/cache-warmer.js +115 -0
  210. package/dist/utils/cache-warmer.js.map +1 -0
  211. package/dist/utils/cache.d.ts +109 -0
  212. package/dist/utils/cache.d.ts.map +1 -0
  213. package/dist/utils/cache.js +302 -0
  214. package/dist/utils/cache.js.map +1 -0
  215. package/dist/utils/constants.d.ts +178 -0
  216. package/dist/utils/constants.d.ts.map +1 -0
  217. package/dist/utils/constants.js +266 -0
  218. package/dist/utils/constants.js.map +1 -0
  219. package/dist/utils/error-handler.d.ts +80 -0
  220. package/dist/utils/error-handler.d.ts.map +1 -0
  221. package/dist/utils/error-handler.js +437 -0
  222. package/dist/utils/error-handler.js.map +1 -0
  223. package/dist/utils/framework-mapper.d.ts +84 -0
  224. package/dist/utils/framework-mapper.d.ts.map +1 -0
  225. package/dist/utils/framework-mapper.js +534 -0
  226. package/dist/utils/framework-mapper.js.map +1 -0
  227. package/dist/utils/http-client.d.ts +130 -0
  228. package/dist/utils/http-client.d.ts.map +1 -0
  229. package/dist/utils/http-client.js +464 -0
  230. package/dist/utils/http-client.js.map +1 -0
  231. package/dist/utils/http-headers-generator.d.ts +151 -0
  232. package/dist/utils/http-headers-generator.d.ts.map +1 -0
  233. package/dist/utils/http-headers-generator.js +407 -0
  234. package/dist/utils/http-headers-generator.js.map +1 -0
  235. package/dist/utils/logger.d.ts +44 -0
  236. package/dist/utils/logger.d.ts.map +1 -0
  237. package/dist/utils/logger.js +73 -0
  238. package/dist/utils/logger.js.map +1 -0
  239. package/dist/utils/preloader.d.ts +20 -0
  240. package/dist/utils/preloader.d.ts.map +1 -0
  241. package/dist/utils/preloader.js +82 -0
  242. package/dist/utils/preloader.js.map +1 -0
  243. package/dist/utils/rate-limiter.d.ts +28 -0
  244. package/dist/utils/rate-limiter.d.ts.map +1 -0
  245. package/dist/utils/rate-limiter.js +48 -0
  246. package/dist/utils/rate-limiter.js.map +1 -0
  247. package/dist/utils/topic-mapper.d.ts +18 -0
  248. package/dist/utils/topic-mapper.d.ts.map +1 -0
  249. package/dist/utils/topic-mapper.js +182 -0
  250. package/dist/utils/topic-mapper.js.map +1 -0
  251. package/dist/utils/url-converter.d.ts +22 -0
  252. package/dist/utils/url-converter.d.ts.map +1 -0
  253. package/dist/utils/url-converter.js +70 -0
  254. package/dist/utils/url-converter.js.map +1 -0
  255. package/dist/utils/user-agent-pool.d.ts +241 -0
  256. package/dist/utils/user-agent-pool.d.ts.map +1 -0
  257. package/dist/utils/user-agent-pool.js +557 -0
  258. package/dist/utils/user-agent-pool.js.map +1 -0
  259. package/dist/utils/wwdc-data-source-path.d.ts +9 -0
  260. package/dist/utils/wwdc-data-source-path.d.ts.map +1 -0
  261. package/dist/utils/wwdc-data-source-path.js +22 -0
  262. package/dist/utils/wwdc-data-source-path.js.map +1 -0
  263. package/dist/utils/wwdc-data-source.d.ts +36 -0
  264. package/dist/utils/wwdc-data-source.d.ts.map +1 -0
  265. package/dist/utils/wwdc-data-source.js +133 -0
  266. package/dist/utils/wwdc-data-source.js.map +1 -0
  267. package/package.json +83 -0
@@ -0,0 +1,151 @@
1
+ /**
2
+ * HTTP Headers Generator for browser compatibility and anti-detection
3
+ *
4
+ * Generates browser-specific HTTP headers to make requests appear more authentic
5
+ * and reduce the likelihood of being detected as automated requests.
6
+ *
7
+ * Features:
8
+ * - Browser-specific header templates (Chrome, Firefox, Safari, Edge)
9
+ * - Accept-Language rotation for geographic diversity
10
+ * - Sec-Fetch-* headers for modern browser simulation
11
+ * - Configurable privacy settings (DNT, etc.)
12
+ * - Custom header override support
13
+ * - High-performance singleton pattern
14
+ */
15
+ import type { HeaderGeneratorConfig, UserAgent } from '../types/headers.js';
16
+ /**
17
+ * HTTP Headers Generator
18
+ *
19
+ * Generates authentic browser headers based on User-Agent strings and configuration.
20
+ * Uses singleton pattern for optimal performance and memory usage.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const generator = HttpHeadersGenerator.getInstance();
25
+ *
26
+ * const userAgent = {
27
+ * userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...',
28
+ * browserType: 'chrome',
29
+ * version: '121.0.0.0',
30
+ * os: 'macOS',
31
+ * osVersion: '10.15.7'
32
+ * };
33
+ *
34
+ * const headers = generator.generateHeaders(userAgent);
35
+ * console.log(headers['Accept-Language']); // "en-US,en;q=0.9"
36
+ * ```
37
+ */
38
+ export declare class HttpHeadersGenerator {
39
+ private static instance;
40
+ private config;
41
+ private languageRotationIndex;
42
+ private constructor();
43
+ /**
44
+ * Get singleton instance of HttpHeadersGenerator
45
+ *
46
+ * @param config - Optional configuration to override defaults
47
+ * @returns Singleton instance of HttpHeadersGenerator
48
+ */
49
+ static getInstance(config?: HeaderGeneratorConfig): HttpHeadersGenerator;
50
+ /**
51
+ * Generate complete HTTP headers for a given User-Agent
52
+ *
53
+ * Creates a complete set of HTTP headers that match the browser type
54
+ * and configuration. Headers are generated to appear authentic and
55
+ * reduce detection risk.
56
+ *
57
+ * @param userAgent - UserAgent object containing browser information
58
+ * @param customHeaders - Optional custom headers to override generated ones
59
+ * @returns Complete set of HTTP headers
60
+ */
61
+ generateHeaders(userAgent: UserAgent, customHeaders?: Record<string, string>): Record<string, string>;
62
+ /**
63
+ * Get header template for browser type
64
+ *
65
+ * @param browserType - Type of browser
66
+ * @returns Header template for the browser
67
+ */
68
+ private getHeaderTemplate;
69
+ /**
70
+ * Generate Accept-Language header with rotation
71
+ *
72
+ * @returns Accept-Language header value
73
+ */
74
+ private generateLanguageHeader;
75
+ /**
76
+ * Generate Sec-Fetch-* headers for modern browsers
77
+ *
78
+ * @param browserType - Type of browser
79
+ * @param config - Optional Sec-Fetch configuration
80
+ * @returns Sec-Fetch headers object
81
+ */
82
+ private generateSecFetchHeaders;
83
+ /**
84
+ * Generate Do Not Track header
85
+ *
86
+ * @returns DNT header value
87
+ */
88
+ private generateDNTHeader;
89
+ /**
90
+ * Generate dynamic headers based on User-Agent details
91
+ *
92
+ * @param userAgent - UserAgent object
93
+ * @returns Dynamic headers object
94
+ */
95
+ private generateDynamicHeaders;
96
+ /**
97
+ * Get custom template headers for browser type
98
+ *
99
+ * @param browserType - Type of browser
100
+ * @returns Custom headers from configuration
101
+ */
102
+ private getCustomTemplateHeaders;
103
+ /**
104
+ * Check if browser supports Sec-Fetch headers
105
+ *
106
+ * @param browserType - Type of browser
107
+ * @returns Whether browser supports Sec-Fetch headers
108
+ */
109
+ private supportsBrowserSecFetch;
110
+ /**
111
+ * Update configuration
112
+ *
113
+ * @param config - New configuration to merge
114
+ */
115
+ updateConfig(config: Partial<HeaderGeneratorConfig>): void;
116
+ /**
117
+ * Get current configuration
118
+ *
119
+ * @returns Current configuration (read-only)
120
+ */
121
+ getConfig(): Readonly<Required<HeaderGeneratorConfig>>;
122
+ /**
123
+ * Reset language rotation index
124
+ */
125
+ resetLanguageRotation(): void;
126
+ /**
127
+ * Get current language rotation index
128
+ *
129
+ * @returns Current rotation index
130
+ */
131
+ getLanguageRotationIndex(): number;
132
+ /**
133
+ * Validate generated headers for consistency
134
+ *
135
+ * @param headers - Headers to validate
136
+ * @param userAgent - Original UserAgent object
137
+ * @returns Validation result with any warnings
138
+ */
139
+ validateHeaders(headers: Record<string, string>, userAgent: UserAgent): {
140
+ valid: boolean;
141
+ warnings: string[];
142
+ };
143
+ }
144
+ /**
145
+ * Convenience function to create a UserAgent object from a User-Agent string
146
+ *
147
+ * @param userAgentString - Raw User-Agent string
148
+ * @returns UserAgent object with parsed information
149
+ */
150
+ export declare function parseUserAgent(userAgentString: string): UserAgent;
151
+ //# sourceMappingURL=http-headers-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-headers-generator.d.ts","sourceRoot":"","sources":["../../src/utils/http-headers-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAGV,qBAAqB,EACrB,SAAS,EAEV,MAAM,qBAAqB,CAAC;AAwB7B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO;IAIP;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,GAAE,qBAA0B,GAAG,oBAAoB;IAc5E;;;;;;;;;;OAUG;IACH,eAAe,CACb,SAAS,EAAE,SAAS,EACpB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAyDzB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAyB/B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAiBhC;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI;IAI1D;;;;OAIG;IACH,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAItD;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAI7B;;;;OAIG;IACH,wBAAwB,IAAI,MAAM;IAIlC;;;;;;OAMG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,SAAS,GACnB;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;CAyB1C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAiFjE"}
@@ -0,0 +1,407 @@
1
+ /**
2
+ * HTTP Headers Generator for browser compatibility and anti-detection
3
+ *
4
+ * Generates browser-specific HTTP headers to make requests appear more authentic
5
+ * and reduce the likelihood of being detected as automated requests.
6
+ *
7
+ * Features:
8
+ * - Browser-specific header templates (Chrome, Firefox, Safari, Edge)
9
+ * - Accept-Language rotation for geographic diversity
10
+ * - Sec-Fetch-* headers for modern browser simulation
11
+ * - Configurable privacy settings (DNT, etc.)
12
+ * - Custom header override support
13
+ * - High-performance singleton pattern
14
+ */
15
+ import { BROWSER_HEADERS, SIMPLE_BROWSER_HEADERS, LANGUAGE_PREFERENCES, PLATFORM_VALUES, BROWSER_VERSIONS, DNT_VALUES, CACHE_CONTROL_VALUES, } from '../constants/browser-headers.js';
16
+ /**
17
+ * Default configuration for header generation
18
+ */
19
+ const DEFAULT_CONFIG = {
20
+ enableSecFetch: true,
21
+ enableDNT: true,
22
+ languageRotation: true,
23
+ customTemplates: {},
24
+ defaultAcceptLanguage: 'en-US,en;q=0.9',
25
+ simpleMode: false,
26
+ };
27
+ /**
28
+ * HTTP Headers Generator
29
+ *
30
+ * Generates authentic browser headers based on User-Agent strings and configuration.
31
+ * Uses singleton pattern for optimal performance and memory usage.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const generator = HttpHeadersGenerator.getInstance();
36
+ *
37
+ * const userAgent = {
38
+ * userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...',
39
+ * browserType: 'chrome',
40
+ * version: '121.0.0.0',
41
+ * os: 'macOS',
42
+ * osVersion: '10.15.7'
43
+ * };
44
+ *
45
+ * const headers = generator.generateHeaders(userAgent);
46
+ * console.log(headers['Accept-Language']); // "en-US,en;q=0.9"
47
+ * ```
48
+ */
49
+ export class HttpHeadersGenerator {
50
+ static instance;
51
+ config;
52
+ languageRotationIndex = 0;
53
+ constructor(config = {}) {
54
+ this.config = { ...DEFAULT_CONFIG, ...config };
55
+ }
56
+ /**
57
+ * Get singleton instance of HttpHeadersGenerator
58
+ *
59
+ * @param config - Optional configuration to override defaults
60
+ * @returns Singleton instance of HttpHeadersGenerator
61
+ */
62
+ static getInstance(config = {}) {
63
+ if (!HttpHeadersGenerator.instance) {
64
+ HttpHeadersGenerator.instance = new HttpHeadersGenerator(config);
65
+ }
66
+ else if (Object.keys(config).length > 0) {
67
+ // Update configuration if provided
68
+ HttpHeadersGenerator.instance.config = {
69
+ ...HttpHeadersGenerator.instance.config,
70
+ ...config,
71
+ };
72
+ }
73
+ return HttpHeadersGenerator.instance;
74
+ }
75
+ /**
76
+ * Generate complete HTTP headers for a given User-Agent
77
+ *
78
+ * Creates a complete set of HTTP headers that match the browser type
79
+ * and configuration. Headers are generated to appear authentic and
80
+ * reduce detection risk.
81
+ *
82
+ * @param userAgent - UserAgent object containing browser information
83
+ * @param customHeaders - Optional custom headers to override generated ones
84
+ * @returns Complete set of HTTP headers
85
+ */
86
+ generateHeaders(userAgent, customHeaders = {}) {
87
+ // Get base template for browser type
88
+ const baseTemplate = this.getHeaderTemplate(userAgent.browserType);
89
+ // Generate dynamic headers
90
+ const generatedHeaders = {
91
+ 'User-Agent': userAgent.userAgent,
92
+ };
93
+ // Apply base template only if not disabled
94
+ Object.entries(baseTemplate).forEach(([key, value]) => {
95
+ // Skip Sec-Fetch headers if disabled
96
+ if (!this.config.enableSecFetch && key.startsWith('Sec-Fetch-')) {
97
+ return;
98
+ }
99
+ // Skip DNT if disabled
100
+ if (!this.config.enableDNT && key === 'DNT') {
101
+ return;
102
+ }
103
+ generatedHeaders[key] = value;
104
+ });
105
+ // Apply language rotation if enabled, otherwise use default or browser-specific
106
+ if (this.config.languageRotation) {
107
+ generatedHeaders['Accept-Language'] = this.generateLanguageHeader();
108
+ }
109
+ else if (this.config.defaultAcceptLanguage &&
110
+ this.config.defaultAcceptLanguage !== 'en-US,en;q=0.9') {
111
+ generatedHeaders['Accept-Language'] = this.config.defaultAcceptLanguage;
112
+ }
113
+ // Apply Sec-Fetch headers if enabled and supported and not in simple mode
114
+ if (this.config.enableSecFetch && !this.config.simpleMode && this.supportsBrowserSecFetch(userAgent.browserType)) {
115
+ const secFetchHeaders = this.generateSecFetchHeaders(userAgent.browserType);
116
+ Object.assign(generatedHeaders, secFetchHeaders);
117
+ }
118
+ // Apply DNT randomization if enabled
119
+ if (this.config.enableDNT) {
120
+ generatedHeaders['DNT'] = this.generateDNTHeader();
121
+ }
122
+ // Apply browser-specific dynamic headers (not in simple mode)
123
+ if (!this.config.simpleMode) {
124
+ const dynamicHeaders = this.generateDynamicHeaders(userAgent);
125
+ Object.assign(generatedHeaders, dynamicHeaders);
126
+ }
127
+ // Apply custom templates from configuration
128
+ const customTemplateHeaders = this.getCustomTemplateHeaders(userAgent.browserType);
129
+ Object.assign(generatedHeaders, customTemplateHeaders);
130
+ // Apply user-provided custom headers (highest priority)
131
+ Object.assign(generatedHeaders, customHeaders);
132
+ return generatedHeaders;
133
+ }
134
+ /**
135
+ * Get header template for browser type
136
+ *
137
+ * @param browserType - Type of browser
138
+ * @returns Header template for the browser
139
+ */
140
+ getHeaderTemplate(browserType) {
141
+ const templates = this.config.simpleMode ? SIMPLE_BROWSER_HEADERS : BROWSER_HEADERS;
142
+ return { ...templates[browserType] };
143
+ }
144
+ /**
145
+ * Generate Accept-Language header with rotation
146
+ *
147
+ * @returns Accept-Language header value
148
+ */
149
+ generateLanguageHeader() {
150
+ if (LANGUAGE_PREFERENCES.length === 0) {
151
+ return this.config.defaultAcceptLanguage;
152
+ }
153
+ const preferences = LANGUAGE_PREFERENCES[this.languageRotationIndex];
154
+ this.languageRotationIndex = (this.languageRotationIndex + 1) % LANGUAGE_PREFERENCES.length;
155
+ return preferences
156
+ .map(pref => pref.quality && pref.quality < 1.0
157
+ ? `${pref.language};q=${pref.quality.toFixed(1)}`
158
+ : pref.language)
159
+ .join(',');
160
+ }
161
+ /**
162
+ * Generate Sec-Fetch-* headers for modern browsers
163
+ *
164
+ * @param browserType - Type of browser
165
+ * @param config - Optional Sec-Fetch configuration
166
+ * @returns Sec-Fetch headers object
167
+ */
168
+ generateSecFetchHeaders(_browserType, config = {}) {
169
+ const defaultConfig = {
170
+ dest: 'document',
171
+ mode: 'navigate',
172
+ site: 'none',
173
+ user: true,
174
+ ...config,
175
+ };
176
+ const headers = {
177
+ 'Sec-Fetch-Dest': defaultConfig.dest,
178
+ 'Sec-Fetch-Mode': defaultConfig.mode,
179
+ 'Sec-Fetch-Site': defaultConfig.site,
180
+ };
181
+ if (defaultConfig.user) {
182
+ headers['Sec-Fetch-User'] = '?1';
183
+ }
184
+ return headers;
185
+ }
186
+ /**
187
+ * Generate Do Not Track header
188
+ *
189
+ * @returns DNT header value
190
+ */
191
+ generateDNTHeader() {
192
+ return DNT_VALUES[Math.floor(Math.random() * DNT_VALUES.length)];
193
+ }
194
+ /**
195
+ * Generate dynamic headers based on User-Agent details
196
+ *
197
+ * @param userAgent - UserAgent object
198
+ * @returns Dynamic headers object
199
+ */
200
+ generateDynamicHeaders(userAgent) {
201
+ const headers = {};
202
+ // Generate Sec-CH-UA headers for Chrome/Edge
203
+ if (userAgent.browserType === 'chrome' || userAgent.browserType === 'edge') {
204
+ const versions = BROWSER_VERSIONS[userAgent.browserType];
205
+ if (versions && versions.length > 0) {
206
+ headers['Sec-CH-UA'] = versions[Math.floor(Math.random() * versions.length)];
207
+ }
208
+ // Set mobile indicator
209
+ headers['Sec-CH-UA-Mobile'] = '?0';
210
+ // Set platform based on OS
211
+ if (userAgent.os.toLowerCase().includes('mac')) {
212
+ const platforms = PLATFORM_VALUES.macOS;
213
+ headers['Sec-CH-UA-Platform'] = platforms[Math.floor(Math.random() * platforms.length)];
214
+ }
215
+ else if (userAgent.os.toLowerCase().includes('windows')) {
216
+ headers['Sec-CH-UA-Platform'] = PLATFORM_VALUES.windows[0];
217
+ }
218
+ else if (userAgent.os.toLowerCase().includes('linux')) {
219
+ headers['Sec-CH-UA-Platform'] = PLATFORM_VALUES.linux[0];
220
+ }
221
+ }
222
+ // Randomize Cache-Control occasionally
223
+ if (Math.random() < 0.1) { // 10% chance to vary cache control
224
+ headers['Cache-Control'] = CACHE_CONTROL_VALUES[Math.floor(Math.random() * CACHE_CONTROL_VALUES.length)];
225
+ }
226
+ return headers;
227
+ }
228
+ /**
229
+ * Get custom template headers for browser type
230
+ *
231
+ * @param browserType - Type of browser
232
+ * @returns Custom headers from configuration
233
+ */
234
+ getCustomTemplateHeaders(browserType) {
235
+ const customTemplate = this.config.customTemplates[browserType];
236
+ if (!customTemplate) {
237
+ return {};
238
+ }
239
+ // Filter out undefined values
240
+ const filtered = {};
241
+ Object.entries(customTemplate).forEach(([key, value]) => {
242
+ if (value !== undefined) {
243
+ filtered[key] = value;
244
+ }
245
+ });
246
+ return filtered;
247
+ }
248
+ /**
249
+ * Check if browser supports Sec-Fetch headers
250
+ *
251
+ * @param browserType - Type of browser
252
+ * @returns Whether browser supports Sec-Fetch headers
253
+ */
254
+ supportsBrowserSecFetch(browserType) {
255
+ // Firefox doesn't support all Sec-Fetch headers, Safari has limited support
256
+ return browserType === 'chrome' || browserType === 'edge';
257
+ }
258
+ /**
259
+ * Update configuration
260
+ *
261
+ * @param config - New configuration to merge
262
+ */
263
+ updateConfig(config) {
264
+ this.config = { ...this.config, ...config };
265
+ }
266
+ /**
267
+ * Get current configuration
268
+ *
269
+ * @returns Current configuration (read-only)
270
+ */
271
+ getConfig() {
272
+ return { ...this.config };
273
+ }
274
+ /**
275
+ * Reset language rotation index
276
+ */
277
+ resetLanguageRotation() {
278
+ this.languageRotationIndex = 0;
279
+ }
280
+ /**
281
+ * Get current language rotation index
282
+ *
283
+ * @returns Current rotation index
284
+ */
285
+ getLanguageRotationIndex() {
286
+ return this.languageRotationIndex;
287
+ }
288
+ /**
289
+ * Validate generated headers for consistency
290
+ *
291
+ * @param headers - Headers to validate
292
+ * @param userAgent - Original UserAgent object
293
+ * @returns Validation result with any warnings
294
+ */
295
+ validateHeaders(headers, userAgent) {
296
+ const warnings = [];
297
+ // Check User-Agent consistency
298
+ if (headers['User-Agent'] !== userAgent.userAgent) {
299
+ warnings.push('User-Agent header does not match provided UserAgent object');
300
+ }
301
+ // Check Accept-Language format
302
+ const acceptLanguage = headers['Accept-Language'];
303
+ if (acceptLanguage && !/^[\w-]+(;q=\d\.\d)?(,[\w-]+(;q=\d\.\d)?)*$/.test(acceptLanguage)) {
304
+ warnings.push('Accept-Language header format may be invalid');
305
+ }
306
+ // Check Sec-Fetch headers consistency
307
+ const hasSecFetch = Object.keys(headers).some(key => key.startsWith('Sec-Fetch-'));
308
+ if (hasSecFetch && !this.supportsBrowserSecFetch(userAgent.browserType)) {
309
+ warnings.push(`Sec-Fetch headers present for ${userAgent.browserType} which has limited support`);
310
+ }
311
+ return {
312
+ valid: warnings.length === 0,
313
+ warnings,
314
+ };
315
+ }
316
+ }
317
+ /**
318
+ * Convenience function to create a UserAgent object from a User-Agent string
319
+ *
320
+ * @param userAgentString - Raw User-Agent string
321
+ * @returns UserAgent object with parsed information
322
+ */
323
+ export function parseUserAgent(userAgentString) {
324
+ let browserType = 'chrome'; // default
325
+ let version = 'unknown';
326
+ let os = 'unknown';
327
+ let osVersion = 'unknown';
328
+ let architecture;
329
+ // Safari detection
330
+ if (userAgentString.includes('Safari/') && userAgentString.includes('Version/')) {
331
+ browserType = 'safari';
332
+ const versionMatch = userAgentString.match(/Version\/([\d.]+)/);
333
+ if (versionMatch) {
334
+ version = versionMatch[1];
335
+ }
336
+ // Extract macOS architecture
337
+ if (userAgentString.includes('Intel Mac OS X')) {
338
+ architecture = 'Intel';
339
+ }
340
+ else if (userAgentString.includes('arm64 Mac OS X')) {
341
+ architecture = 'Apple Silicon';
342
+ }
343
+ // Extract macOS version
344
+ const macOSMatch = userAgentString.match(/Mac OS X (\d+)_(\d+)(?:_(\d+))?/);
345
+ if (macOSMatch) {
346
+ os = 'macOS';
347
+ osVersion = macOSMatch[3] ? `${macOSMatch[1]}.${macOSMatch[2]}.${macOSMatch[3]}` : `${macOSMatch[1]}.${macOSMatch[2]}`;
348
+ }
349
+ }
350
+ else if (userAgentString.includes('Chrome/') && !userAgentString.includes('Edg/')) {
351
+ browserType = 'chrome';
352
+ const chromeMatch = userAgentString.match(/Chrome\/([\d.]+)/);
353
+ if (chromeMatch) {
354
+ version = chromeMatch[1];
355
+ }
356
+ }
357
+ else if (userAgentString.includes('Edg/')) {
358
+ browserType = 'edge';
359
+ const edgeMatch = userAgentString.match(/Edg\/([\d.]+)/);
360
+ if (edgeMatch) {
361
+ version = edgeMatch[1];
362
+ }
363
+ }
364
+ else if (userAgentString.includes('Firefox/')) {
365
+ browserType = 'firefox';
366
+ const firefoxMatch = userAgentString.match(/Firefox\/([\d.]+)/);
367
+ if (firefoxMatch) {
368
+ version = firefoxMatch[1];
369
+ }
370
+ }
371
+ // Extract OS information for non-Safari browsers
372
+ if (browserType !== 'safari') {
373
+ if (userAgentString.includes('Windows NT')) {
374
+ os = 'Windows';
375
+ const winMatch = userAgentString.match(/Windows NT ([\d.]+)/);
376
+ if (winMatch) {
377
+ osVersion = winMatch[1];
378
+ }
379
+ }
380
+ else if (userAgentString.includes('Mac OS X')) {
381
+ os = 'macOS';
382
+ const macMatch = userAgentString.match(/Mac OS X ([\d_.]+)/);
383
+ if (macMatch) {
384
+ osVersion = macMatch[1].replace(/_/g, '.');
385
+ }
386
+ }
387
+ else if (userAgentString.includes('Intel Mac OS X')) {
388
+ os = 'macOS';
389
+ const macMatch = userAgentString.match(/Intel Mac OS X ([\d.]+)/);
390
+ if (macMatch) {
391
+ osVersion = macMatch[1];
392
+ }
393
+ }
394
+ else if (userAgentString.includes('Linux')) {
395
+ os = 'Linux';
396
+ }
397
+ }
398
+ return {
399
+ userAgent: userAgentString,
400
+ browserType,
401
+ version,
402
+ os,
403
+ osVersion,
404
+ architecture,
405
+ };
406
+ }
407
+ //# sourceMappingURL=http-headers-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-headers-generator.js","sourceRoot":"","sources":["../../src/utils/http-headers-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Simple logger utility for consistent logging across the application
3
+ */
4
+ export declare enum LogLevel {
5
+ DEBUG = "debug",
6
+ INFO = "info",
7
+ WARN = "warn",
8
+ ERROR = "error"
9
+ }
10
+ declare class Logger {
11
+ private enabled;
12
+ private level;
13
+ /**
14
+ * Log debug message
15
+ */
16
+ debug(message: string, ...args: any[]): void;
17
+ /**
18
+ * Log info message
19
+ */
20
+ info(message: string, ...args: any[]): void;
21
+ /**
22
+ * Log warning message
23
+ */
24
+ warn(message: string, ...args: any[]): void;
25
+ /**
26
+ * Log error message
27
+ */
28
+ error(message: string, error?: unknown): void;
29
+ /**
30
+ * Check if should log based on level
31
+ */
32
+ private shouldLog;
33
+ /**
34
+ * Set log level
35
+ */
36
+ setLevel(level: LogLevel): void;
37
+ /**
38
+ * Enable/disable logging
39
+ */
40
+ setEnabled(enabled: boolean): void;
41
+ }
42
+ export declare const logger: Logger;
43
+ export {};
44
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,cAAM,MAAM;IACV,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,KAAK,CAA2B;IAExC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM5C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM3C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM3C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAS7C;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGnC;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC"}