@nahisaho/katashiro-collector 0.2.0 → 0.2.4

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 (105) hide show
  1. package/dist/browser/ActionExecutor.d.ts +85 -0
  2. package/dist/browser/ActionExecutor.d.ts.map +1 -0
  3. package/dist/browser/ActionExecutor.js +171 -0
  4. package/dist/browser/ActionExecutor.js.map +1 -0
  5. package/dist/browser/BrowserAutomation.d.ts +147 -0
  6. package/dist/browser/BrowserAutomation.d.ts.map +1 -0
  7. package/dist/browser/BrowserAutomation.js +463 -0
  8. package/dist/browser/BrowserAutomation.js.map +1 -0
  9. package/dist/browser/ContentExtractor.d.ts +54 -0
  10. package/dist/browser/ContentExtractor.d.ts.map +1 -0
  11. package/dist/browser/ContentExtractor.js +159 -0
  12. package/dist/browser/ContentExtractor.js.map +1 -0
  13. package/dist/browser/SessionManager.d.ts +67 -0
  14. package/dist/browser/SessionManager.d.ts.map +1 -0
  15. package/dist/browser/SessionManager.js +173 -0
  16. package/dist/browser/SessionManager.js.map +1 -0
  17. package/dist/browser/index.d.ts +17 -0
  18. package/dist/browser/index.d.ts.map +1 -0
  19. package/dist/browser/index.js +17 -0
  20. package/dist/browser/index.js.map +1 -0
  21. package/dist/browser/types.d.ts +361 -0
  22. package/dist/browser/types.d.ts.map +1 -0
  23. package/dist/browser/types.js +23 -0
  24. package/dist/browser/types.js.map +1 -0
  25. package/dist/document/DocumentParser.d.ts +91 -0
  26. package/dist/document/DocumentParser.d.ts.map +1 -0
  27. package/dist/document/DocumentParser.js +234 -0
  28. package/dist/document/DocumentParser.js.map +1 -0
  29. package/dist/document/index.d.ts +11 -0
  30. package/dist/document/index.d.ts.map +1 -0
  31. package/dist/document/index.js +10 -0
  32. package/dist/document/index.js.map +1 -0
  33. package/dist/document/parsers/DOCXParser.d.ts +63 -0
  34. package/dist/document/parsers/DOCXParser.d.ts.map +1 -0
  35. package/dist/document/parsers/DOCXParser.js +362 -0
  36. package/dist/document/parsers/DOCXParser.js.map +1 -0
  37. package/dist/document/parsers/PDFParser.d.ts +60 -0
  38. package/dist/document/parsers/PDFParser.d.ts.map +1 -0
  39. package/dist/document/parsers/PDFParser.js +338 -0
  40. package/dist/document/parsers/PDFParser.js.map +1 -0
  41. package/dist/document/parsers/XLSXParser.d.ts +55 -0
  42. package/dist/document/parsers/XLSXParser.d.ts.map +1 -0
  43. package/dist/document/parsers/XLSXParser.js +314 -0
  44. package/dist/document/parsers/XLSXParser.js.map +1 -0
  45. package/dist/document/parsers/index.d.ts +10 -0
  46. package/dist/document/parsers/index.d.ts.map +1 -0
  47. package/dist/document/parsers/index.js +10 -0
  48. package/dist/document/parsers/index.js.map +1 -0
  49. package/dist/document/types.d.ts +251 -0
  50. package/dist/document/types.d.ts.map +1 -0
  51. package/dist/document/types.js +13 -0
  52. package/dist/document/types.js.map +1 -0
  53. package/dist/index.d.ts +7 -2
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +14 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/research/CoverageAnalyzer.d.ts +50 -0
  58. package/dist/research/CoverageAnalyzer.d.ts.map +1 -0
  59. package/dist/research/CoverageAnalyzer.js +169 -0
  60. package/dist/research/CoverageAnalyzer.js.map +1 -0
  61. package/dist/research/QueryPlanner.d.ts +57 -0
  62. package/dist/research/QueryPlanner.d.ts.map +1 -0
  63. package/dist/research/QueryPlanner.js +102 -0
  64. package/dist/research/QueryPlanner.js.map +1 -0
  65. package/dist/research/ResultAggregator.d.ts +39 -0
  66. package/dist/research/ResultAggregator.d.ts.map +1 -0
  67. package/dist/research/ResultAggregator.js +85 -0
  68. package/dist/research/ResultAggregator.js.map +1 -0
  69. package/dist/research/WideResearchEngine.d.ts +110 -0
  70. package/dist/research/WideResearchEngine.d.ts.map +1 -0
  71. package/dist/research/WideResearchEngine.js +330 -0
  72. package/dist/research/WideResearchEngine.js.map +1 -0
  73. package/dist/research/agents/AcademicSearchAgent.d.ts +57 -0
  74. package/dist/research/agents/AcademicSearchAgent.d.ts.map +1 -0
  75. package/dist/research/agents/AcademicSearchAgent.js +180 -0
  76. package/dist/research/agents/AcademicSearchAgent.js.map +1 -0
  77. package/dist/research/agents/EncyclopediaAgent.d.ts +49 -0
  78. package/dist/research/agents/EncyclopediaAgent.d.ts.map +1 -0
  79. package/dist/research/agents/EncyclopediaAgent.js +153 -0
  80. package/dist/research/agents/EncyclopediaAgent.js.map +1 -0
  81. package/dist/research/agents/NewsSearchAgent.d.ts +38 -0
  82. package/dist/research/agents/NewsSearchAgent.d.ts.map +1 -0
  83. package/dist/research/agents/NewsSearchAgent.js +146 -0
  84. package/dist/research/agents/NewsSearchAgent.js.map +1 -0
  85. package/dist/research/agents/WebSearchAgent.d.ts +45 -0
  86. package/dist/research/agents/WebSearchAgent.d.ts.map +1 -0
  87. package/dist/research/agents/WebSearchAgent.js +135 -0
  88. package/dist/research/agents/WebSearchAgent.js.map +1 -0
  89. package/dist/research/agents/index.d.ts +13 -0
  90. package/dist/research/agents/index.d.ts.map +1 -0
  91. package/dist/research/agents/index.js +12 -0
  92. package/dist/research/agents/index.js.map +1 -0
  93. package/dist/research/agents/types.d.ts +60 -0
  94. package/dist/research/agents/types.d.ts.map +1 -0
  95. package/dist/research/agents/types.js +9 -0
  96. package/dist/research/agents/types.js.map +1 -0
  97. package/dist/research/index.d.ts +16 -0
  98. package/dist/research/index.d.ts.map +1 -0
  99. package/dist/research/index.js +17 -0
  100. package/dist/research/index.js.map +1 -0
  101. package/dist/research/types.d.ts +206 -0
  102. package/dist/research/types.d.ts.map +1 -0
  103. package/dist/research/types.js +33 -0
  104. package/dist/research/types.js.map +1 -0
  105. package/package.json +1 -1
@@ -0,0 +1,85 @@
1
+ /**
2
+ * ActionExecutor - ブラウザアクションを実行
3
+ *
4
+ * @requirement REQ-COLLECT-009
5
+ * @design DES-COLLECT-009-BrowserAutomation
6
+ */
7
+ import type { BrowserAction, ActionResult } from './types.js';
8
+ /**
9
+ * Puppeteer Page インターフェース(抽象化)
10
+ */
11
+ export interface BrowserPage {
12
+ goto(url: string, options?: unknown): Promise<unknown>;
13
+ click(selector: string, options?: unknown): Promise<void>;
14
+ type(selector: string, text: string, options?: unknown): Promise<void>;
15
+ select(selector: string, ...values: string[]): Promise<string[]>;
16
+ hover(selector: string): Promise<void>;
17
+ screenshot(options?: unknown): Promise<Buffer | string>;
18
+ pdf(options?: unknown): Promise<Buffer>;
19
+ evaluate<T>(fn: string | ((...args: unknown[]) => T), ...args: unknown[]): Promise<T>;
20
+ waitForSelector(selector: string, options?: unknown): Promise<unknown>;
21
+ $eval<T>(selector: string, fn: (el: any, ...args: any[]) => T, ...args: any[]): Promise<T>;
22
+ $$eval<T>(selector: string, fn: (els: any[], ...args: any[]) => T, ...args: any[]): Promise<T>;
23
+ }
24
+ /**
25
+ * ブラウザアクションを実行
26
+ */
27
+ export declare class ActionExecutor {
28
+ /**
29
+ * アクションを実行
30
+ */
31
+ execute(page: BrowserPage, action: BrowserAction): Promise<ActionResult>;
32
+ /**
33
+ * アクションを内部実行
34
+ */
35
+ private executeAction;
36
+ /**
37
+ * navigate アクション
38
+ */
39
+ private executeNavigate;
40
+ /**
41
+ * click アクション
42
+ */
43
+ private executeClick;
44
+ /**
45
+ * type アクション
46
+ */
47
+ private executeType;
48
+ /**
49
+ * wait アクション
50
+ */
51
+ private executeWait;
52
+ /**
53
+ * scroll アクション
54
+ */
55
+ private executeScroll;
56
+ /**
57
+ * select アクション
58
+ */
59
+ private executeSelect;
60
+ /**
61
+ * hover アクション
62
+ */
63
+ private executeHover;
64
+ /**
65
+ * screenshot アクション
66
+ */
67
+ private executeScreenshot;
68
+ /**
69
+ * pdf アクション
70
+ */
71
+ private executePdf;
72
+ /**
73
+ * evaluate アクション
74
+ */
75
+ private executeEvaluate;
76
+ /**
77
+ * waitForSelector アクション
78
+ */
79
+ private executeWaitForSelector;
80
+ /**
81
+ * extract アクション
82
+ */
83
+ private executeExtract;
84
+ }
85
+ //# sourceMappingURL=ActionExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionExecutor.d.ts","sourceRoot":"","sources":["../../src/browser/ActionExecutor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EAab,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACxD,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtF,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChG;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAqB9E;;OAEG;YACW,aAAa;IAkC3B;;OAEG;YACW,eAAe;IAQ7B;;OAEG;YACW,YAAY;IAQ1B;;OAEG;YACW,WAAW;IAazB;;OAEG;YACW,WAAW;IAKzB;;OAEG;YACW,aAAa;IAc3B;;OAEG;YACW,aAAa;IAQ3B;;OAEG;YACW,YAAY;IAQ1B;;OAEG;YACW,iBAAiB;IAQ/B;;OAEG;YACW,UAAU;IAQxB;;OAEG;YACW,eAAe;IAQ7B;;OAEG;YACW,sBAAsB;IAQpC;;OAEG;YACW,cAAc;CA0B7B"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * ActionExecutor - ブラウザアクションを実行
3
+ *
4
+ * @requirement REQ-COLLECT-009
5
+ * @design DES-COLLECT-009-BrowserAutomation
6
+ */
7
+ /**
8
+ * ブラウザアクションを実行
9
+ */
10
+ export class ActionExecutor {
11
+ /**
12
+ * アクションを実行
13
+ */
14
+ async execute(page, action) {
15
+ const startTime = Date.now();
16
+ try {
17
+ const result = await this.executeAction(page, action);
18
+ return {
19
+ actionType: action.type,
20
+ success: true,
21
+ duration: Date.now() - startTime,
22
+ ...result,
23
+ };
24
+ }
25
+ catch (error) {
26
+ return {
27
+ actionType: action.type,
28
+ success: false,
29
+ error: error instanceof Error ? error.message : String(error),
30
+ duration: Date.now() - startTime,
31
+ };
32
+ }
33
+ }
34
+ /**
35
+ * アクションを内部実行
36
+ */
37
+ async executeAction(page, action) {
38
+ switch (action.type) {
39
+ case 'navigate':
40
+ return this.executeNavigate(page, action);
41
+ case 'click':
42
+ return this.executeClick(page, action);
43
+ case 'type':
44
+ return this.executeType(page, action);
45
+ case 'wait':
46
+ return this.executeWait(action);
47
+ case 'scroll':
48
+ return this.executeScroll(page, action);
49
+ case 'select':
50
+ return this.executeSelect(page, action);
51
+ case 'hover':
52
+ return this.executeHover(page, action);
53
+ case 'screenshot':
54
+ return this.executeScreenshot(page, action);
55
+ case 'pdf':
56
+ return this.executePdf(page, action);
57
+ case 'evaluate':
58
+ return this.executeEvaluate(page, action);
59
+ case 'waitForSelector':
60
+ return this.executeWaitForSelector(page, action);
61
+ case 'extract':
62
+ return this.executeExtract(page, action);
63
+ default:
64
+ throw new Error(`Unknown action type: ${action.type}`);
65
+ }
66
+ }
67
+ /**
68
+ * navigate アクション
69
+ */
70
+ async executeNavigate(page, action) {
71
+ await page.goto(action.url, action.options);
72
+ return {};
73
+ }
74
+ /**
75
+ * click アクション
76
+ */
77
+ async executeClick(page, action) {
78
+ await page.click(action.selector, action.options);
79
+ return {};
80
+ }
81
+ /**
82
+ * type アクション
83
+ */
84
+ async executeType(page, action) {
85
+ if (action.options?.clear) {
86
+ await page.click(action.selector, { clickCount: 3 });
87
+ }
88
+ await page.type(action.selector, action.text, {
89
+ delay: action.options?.delay,
90
+ });
91
+ return {};
92
+ }
93
+ /**
94
+ * wait アクション
95
+ */
96
+ async executeWait(action) {
97
+ await new Promise(resolve => setTimeout(resolve, action.duration));
98
+ return {};
99
+ }
100
+ /**
101
+ * scroll アクション
102
+ */
103
+ async executeScroll(page, action) {
104
+ if (typeof action.target === 'string') {
105
+ await page.evaluate(`document.querySelector('${action.target}')?.scrollIntoView()`);
106
+ }
107
+ else if (action.target) {
108
+ await page.evaluate(`window.scrollTo(${action.target.x}, ${action.target.y})`);
109
+ }
110
+ else {
111
+ await page.evaluate('window.scrollTo(0, document.body.scrollHeight)');
112
+ }
113
+ return {};
114
+ }
115
+ /**
116
+ * select アクション
117
+ */
118
+ async executeSelect(page, action) {
119
+ const selected = await page.select(action.selector, ...action.values);
120
+ return { data: selected };
121
+ }
122
+ /**
123
+ * hover アクション
124
+ */
125
+ async executeHover(page, action) {
126
+ await page.hover(action.selector);
127
+ return {};
128
+ }
129
+ /**
130
+ * screenshot アクション
131
+ */
132
+ async executeScreenshot(page, action) {
133
+ const screenshot = await page.screenshot(action.options);
134
+ return { screenshot: screenshot };
135
+ }
136
+ /**
137
+ * pdf アクション
138
+ */
139
+ async executePdf(page, action) {
140
+ const pdf = await page.pdf(action.options);
141
+ return { pdf };
142
+ }
143
+ /**
144
+ * evaluate アクション
145
+ */
146
+ async executeEvaluate(page, action) {
147
+ const data = await page.evaluate(action.script, ...(action.args || []));
148
+ return { data };
149
+ }
150
+ /**
151
+ * waitForSelector アクション
152
+ */
153
+ async executeWaitForSelector(page, action) {
154
+ await page.waitForSelector(action.selector, action.options);
155
+ return {};
156
+ }
157
+ /**
158
+ * extract アクション
159
+ */
160
+ async executeExtract(page, action) {
161
+ let extractedText;
162
+ if (action.multiple) {
163
+ extractedText = await page.$$eval(action.selector, (els, attr) => els.map((el) => attr ? el.getAttribute(attr) || '' : el.textContent || ''), action.attribute);
164
+ }
165
+ else {
166
+ extractedText = await page.$eval(action.selector, (el, attr) => attr ? el.getAttribute(attr) || '' : el.textContent || '', action.attribute);
167
+ }
168
+ return { extractedText };
169
+ }
170
+ }
171
+ //# sourceMappingURL=ActionExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionExecutor.js","sourceRoot":"","sources":["../../src/browser/ActionExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * BrowserAutomation - ブラウザ自動化メインクラス
3
+ *
4
+ * Puppeteerベースのブラウザ自動化機能を提供する。
5
+ * JavaScriptで動的に生成されるページや認証が必要なサイトから情報を収集する。
6
+ *
7
+ * @requirement REQ-COLLECT-009
8
+ * @design DES-COLLECT-009-BrowserAutomation
9
+ */
10
+ import { type Result } from '@nahisaho/katashiro-core';
11
+ import type { BrowserConfig, BrowserAction, ActionResult, PageScrapeResult, SessionInfo, AuthCredentials, LoginSelectors, BrowserScript, NavigationOptions, ExtractorConfig, ScreenshotOptions, PdfOptions } from './types.js';
12
+ import { type BrowserPage } from './ActionExecutor.js';
13
+ import { SessionManager } from './SessionManager.js';
14
+ /**
15
+ * Puppeteer Browser インターフェース(抽象化)
16
+ */
17
+ export interface Browser {
18
+ newPage(): Promise<BrowserPage>;
19
+ close(): Promise<void>;
20
+ }
21
+ /**
22
+ * Puppeteer ランチャー
23
+ */
24
+ export interface PuppeteerLauncher {
25
+ launch(options?: unknown): Promise<Browser>;
26
+ }
27
+ /**
28
+ * BrowserAutomation エラーコード
29
+ */
30
+ export type BrowserAutomationErrorCode = 'BROWSER_NOT_INITIALIZED' | 'NAVIGATION_FAILED' | 'ACTION_FAILED' | 'EXTRACTION_FAILED' | 'SESSION_NOT_FOUND' | 'AUTHENTICATION_FAILED' | 'TIMEOUT';
31
+ /**
32
+ * BrowserAutomation エラー
33
+ */
34
+ export declare class BrowserAutomationError extends Error {
35
+ readonly code: BrowserAutomationErrorCode;
36
+ readonly cause?: Error | undefined;
37
+ constructor(code: BrowserAutomationErrorCode, message: string, cause?: Error | undefined);
38
+ }
39
+ /**
40
+ * Browser Automation
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const browser = new BrowserAutomation();
45
+ *
46
+ * // シンプルなスクレイピング
47
+ * const result = await browser.scrape('https://example.com');
48
+ * if (isOk(result)) {
49
+ * console.log(result.value.content);
50
+ * }
51
+ *
52
+ * // スクリーンショット
53
+ * const screenshot = await browser.screenshot('https://example.com');
54
+ *
55
+ * await browser.close();
56
+ * ```
57
+ */
58
+ export declare class BrowserAutomation {
59
+ private config;
60
+ private browser;
61
+ private executor;
62
+ private extractor;
63
+ private sessionManager;
64
+ private puppeteer;
65
+ constructor(config?: Partial<BrowserConfig>);
66
+ /**
67
+ * Puppeteerランチャーを設定(DI用)
68
+ */
69
+ setPuppeteer(puppeteer: PuppeteerLauncher): void;
70
+ /**
71
+ * ブラウザを初期化
72
+ */
73
+ initialize(): Promise<void>;
74
+ /**
75
+ * ブラウザを終了
76
+ */
77
+ close(): Promise<void>;
78
+ /**
79
+ * ブラウザが初期化されているか
80
+ */
81
+ isInitialized(): boolean;
82
+ /**
83
+ * ページをスクレイピング
84
+ */
85
+ scrape(url: string, options?: NavigationOptions & {
86
+ extractors?: ExtractorConfig[];
87
+ screenshot?: boolean;
88
+ }): Promise<Result<PageScrapeResult, BrowserAutomationError>>;
89
+ /**
90
+ * スクリプトを実行
91
+ */
92
+ runScript(script: BrowserScript): Promise<Result<ActionResult[], BrowserAutomationError>>;
93
+ /**
94
+ * 単一アクションを実行
95
+ */
96
+ executeAction(url: string, action: BrowserAction): Promise<Result<ActionResult, BrowserAutomationError>>;
97
+ /**
98
+ * スクリーンショットを取得
99
+ */
100
+ screenshot(url: string, options?: ScreenshotOptions & {
101
+ waitUntil?: NavigationOptions['waitUntil'];
102
+ }): Promise<Result<Buffer, BrowserAutomationError>>;
103
+ /**
104
+ * PDFを生成
105
+ */
106
+ pdf(url: string, options?: PdfOptions & {
107
+ waitUntil?: NavigationOptions['waitUntil'];
108
+ }): Promise<Result<Buffer, BrowserAutomationError>>;
109
+ /**
110
+ * 認証付きでページにアクセス
111
+ */
112
+ scrapeWithAuth(url: string, loginUrl: string, credentials: AuthCredentials, loginSelectors: LoginSelectors): Promise<Result<PageScrapeResult, BrowserAutomationError>>;
113
+ /**
114
+ * 無限スクロールを処理
115
+ */
116
+ scrapeInfiniteScroll(url: string, options?: {
117
+ maxScrolls?: number;
118
+ scrollDelay?: number;
119
+ contentSelector?: string;
120
+ }): Promise<Result<PageScrapeResult, BrowserAutomationError>>;
121
+ /**
122
+ * セッションを保存
123
+ */
124
+ saveSession(name: string): Promise<Result<SessionInfo, BrowserAutomationError>>;
125
+ /**
126
+ * セッションを復元
127
+ */
128
+ loadSession(name: string): Promise<Result<void, BrowserAutomationError>>;
129
+ /**
130
+ * 新しいページを作成
131
+ */
132
+ private createPage;
133
+ /**
134
+ * 変数を置換
135
+ */
136
+ private processVariables;
137
+ /**
138
+ * 設定を取得
139
+ */
140
+ getConfig(): BrowserConfig;
141
+ /**
142
+ * セッションマネージャーを取得
143
+ */
144
+ getSessionManager(): SessionManager;
145
+ }
146
+ export default BrowserAutomation;
147
+ //# sourceMappingURL=BrowserAutomation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserAutomation.d.ts","sourceRoot":"","sources":["../../src/browser/BrowserAutomation.ts"],"names":[],"mappings":"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"}