@shadowcoderr/context-graph 0.3.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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -0
  3. package/dist/analyzers/a11y-extractor.d.ts +15 -0
  4. package/dist/analyzers/a11y-extractor.d.ts.map +1 -0
  5. package/dist/analyzers/a11y-extractor.js +148 -0
  6. package/dist/analyzers/a11y-extractor.js.map +1 -0
  7. package/dist/analyzers/dom-analyzer.d.ts +20 -0
  8. package/dist/analyzers/dom-analyzer.d.ts.map +1 -0
  9. package/dist/analyzers/dom-analyzer.js +126 -0
  10. package/dist/analyzers/dom-analyzer.js.map +1 -0
  11. package/dist/analyzers/locator-generator.d.ts +13 -0
  12. package/dist/analyzers/locator-generator.d.ts.map +1 -0
  13. package/dist/analyzers/locator-generator.js +381 -0
  14. package/dist/analyzers/locator-generator.js.map +1 -0
  15. package/dist/analyzers/network-logger.d.ts +15 -0
  16. package/dist/analyzers/network-logger.d.ts.map +1 -0
  17. package/dist/analyzers/network-logger.js +71 -0
  18. package/dist/analyzers/network-logger.js.map +1 -0
  19. package/dist/cli/index.d.ts +2 -0
  20. package/dist/cli/index.d.ts.map +1 -0
  21. package/dist/cli/index.js +155 -0
  22. package/dist/cli/index.js.map +1 -0
  23. package/dist/config/defaults.d.ts +3 -0
  24. package/dist/config/defaults.d.ts.map +1 -0
  25. package/dist/config/defaults.js +54 -0
  26. package/dist/config/defaults.js.map +1 -0
  27. package/dist/config/loader.d.ts +3 -0
  28. package/dist/config/loader.d.ts.map +1 -0
  29. package/dist/config/loader.js +75 -0
  30. package/dist/config/loader.js.map +1 -0
  31. package/dist/config/schema.d.ts +168 -0
  32. package/dist/config/schema.d.ts.map +1 -0
  33. package/dist/config/schema.js +104 -0
  34. package/dist/config/schema.js.map +1 -0
  35. package/dist/core/browser-adapter.d.ts +24 -0
  36. package/dist/core/browser-adapter.d.ts.map +1 -0
  37. package/dist/core/browser-adapter.js +208 -0
  38. package/dist/core/browser-adapter.js.map +1 -0
  39. package/dist/core/capture-engine.d.ts +52 -0
  40. package/dist/core/capture-engine.d.ts.map +1 -0
  41. package/dist/core/capture-engine.js +593 -0
  42. package/dist/core/capture-engine.js.map +1 -0
  43. package/dist/core/runtime.d.ts +38 -0
  44. package/dist/core/runtime.d.ts.map +1 -0
  45. package/dist/core/runtime.js +648 -0
  46. package/dist/core/runtime.js.map +1 -0
  47. package/dist/prompts/init-prompt.d.ts +12 -0
  48. package/dist/prompts/init-prompt.d.ts.map +1 -0
  49. package/dist/prompts/init-prompt.js +128 -0
  50. package/dist/prompts/init-prompt.js.map +1 -0
  51. package/dist/registry/components-registry.d.ts +97 -0
  52. package/dist/registry/components-registry.d.ts.map +1 -0
  53. package/dist/registry/components-registry.js +469 -0
  54. package/dist/registry/components-registry.js.map +1 -0
  55. package/dist/registry/index.d.ts +2 -0
  56. package/dist/registry/index.d.ts.map +1 -0
  57. package/dist/registry/index.js +7 -0
  58. package/dist/registry/index.js.map +1 -0
  59. package/dist/security/patterns.d.ts +4 -0
  60. package/dist/security/patterns.d.ts.map +1 -0
  61. package/dist/security/patterns.js +65 -0
  62. package/dist/security/patterns.js.map +1 -0
  63. package/dist/security/redactor.d.ts +26 -0
  64. package/dist/security/redactor.d.ts.map +1 -0
  65. package/dist/security/redactor.js +128 -0
  66. package/dist/security/redactor.js.map +1 -0
  67. package/dist/security/validator.d.ts +11 -0
  68. package/dist/security/validator.d.ts.map +1 -0
  69. package/dist/security/validator.js +62 -0
  70. package/dist/security/validator.js.map +1 -0
  71. package/dist/storage/engine.d.ts +45 -0
  72. package/dist/storage/engine.d.ts.map +1 -0
  73. package/dist/storage/engine.js +479 -0
  74. package/dist/storage/engine.js.map +1 -0
  75. package/dist/storage/manifest.d.ts +10 -0
  76. package/dist/storage/manifest.d.ts.map +1 -0
  77. package/dist/storage/manifest.js +98 -0
  78. package/dist/storage/manifest.js.map +1 -0
  79. package/dist/storage/serializer.d.ts +9 -0
  80. package/dist/storage/serializer.d.ts.map +1 -0
  81. package/dist/storage/serializer.js +22 -0
  82. package/dist/storage/serializer.js.map +1 -0
  83. package/dist/types/capture.d.ts +206 -0
  84. package/dist/types/capture.d.ts.map +1 -0
  85. package/dist/types/capture.js +3 -0
  86. package/dist/types/capture.js.map +1 -0
  87. package/dist/types/config.d.ts +63 -0
  88. package/dist/types/config.d.ts.map +1 -0
  89. package/dist/types/config.js +3 -0
  90. package/dist/types/config.js.map +1 -0
  91. package/dist/types/registry.d.ts +94 -0
  92. package/dist/types/registry.d.ts.map +1 -0
  93. package/dist/types/registry.js +3 -0
  94. package/dist/types/registry.js.map +1 -0
  95. package/dist/types/storage.d.ts +57 -0
  96. package/dist/types/storage.d.ts.map +1 -0
  97. package/dist/types/storage.js +3 -0
  98. package/dist/types/storage.js.map +1 -0
  99. package/dist/utils/hash.d.ts +3 -0
  100. package/dist/utils/hash.d.ts.map +1 -0
  101. package/dist/utils/hash.js +26 -0
  102. package/dist/utils/hash.js.map +1 -0
  103. package/dist/utils/logger.d.ts +20 -0
  104. package/dist/utils/logger.d.ts.map +1 -0
  105. package/dist/utils/logger.js +86 -0
  106. package/dist/utils/logger.js.map +1 -0
  107. package/dist/utils/pom-generator.d.ts +12 -0
  108. package/dist/utils/pom-generator.d.ts.map +1 -0
  109. package/dist/utils/pom-generator.js +83 -0
  110. package/dist/utils/pom-generator.js.map +1 -0
  111. package/dist/utils/validators.d.ts +7 -0
  112. package/dist/utils/validators.d.ts.map +1 -0
  113. package/dist/utils/validators.js +51 -0
  114. package/dist/utils/validators.js.map +1 -0
  115. package/package.json +70 -0
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.BrowserAdapter = void 0;
37
+ const logger_1 = require("../utils/logger");
38
+ class BrowserAdapter {
39
+ browser;
40
+ context;
41
+ isClosed = false;
42
+ async launchBrowser(config) {
43
+ const { chromium, firefox } = await Promise.resolve().then(() => __importStar(require('playwright')));
44
+ let browserType;
45
+ switch (config.browser.channel) {
46
+ case 'msedge':
47
+ case 'chromium':
48
+ browserType = chromium;
49
+ break;
50
+ case 'firefox':
51
+ browserType = firefox;
52
+ break;
53
+ default:
54
+ throw new Error(`Unsupported browser: ${config.browser.channel}`);
55
+ }
56
+ const launchOptions = {
57
+ headless: config.browser.headless,
58
+ slowMo: config.browser.slowMo,
59
+ devtools: config.browser.devtools,
60
+ args: [
61
+ '--start-maximized',
62
+ '--disable-extensions',
63
+ '--disable-popup-blocking',
64
+ '--disable-notifications',
65
+ '--no-first-run',
66
+ '--no-default-browser-check',
67
+ '--disable-background-networking',
68
+ '--disable-background-timer-throttling',
69
+ '--disable-backgrounding-occluded-windows',
70
+ '--disable-breakpad',
71
+ '--disable-component-update',
72
+ '--disable-sync',
73
+ '--disable-translate',
74
+ '--metrics-recording-only',
75
+ '--no-first-run',
76
+ '--safebrowsing-disable-auto-update',
77
+ '--password-store=basic'
78
+ ],
79
+ handleSIGINT: false, // Don't close browser on Ctrl+C
80
+ handleSIGTERM: false,
81
+ handleSIGHUP: false,
82
+ };
83
+ // When requesting msedge, instruct playwright to use the msedge channel
84
+ if (config.browser.channel === 'msedge' && browserType === chromium) {
85
+ launchOptions.channel = 'msedge';
86
+ }
87
+ this.browser = await browserType.launch(launchOptions);
88
+ if (!this.browser) {
89
+ throw new Error('Failed to launch browser');
90
+ }
91
+ logger_1.logger.info(`Launched ${config.browser.channel} browser`);
92
+ return this.browser;
93
+ }
94
+ async createContext(browser, config) {
95
+ // Check if --start-maximized is being used
96
+ const isMaximized = true; // Since we're always using --start-maximized in launchOptions
97
+ const contextOptions = {
98
+ // Disable fixed viewport to allow window sizing when maximized
99
+ viewport: isMaximized ? null : (config?.viewport || null),
100
+ isMobile: false,
101
+ hasTouch: false,
102
+ javaScriptEnabled: true,
103
+ acceptDownloads: true,
104
+ ignoreHTTPSErrors: true,
105
+ bypassCSP: true,
106
+ userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
107
+ // Keep the browser process alive
108
+ closeBrowserOnContextClose: false,
109
+ };
110
+ // Only set viewport if explicitly provided in config AND not using --start-maximized
111
+ if (config?.viewport && !isMaximized) {
112
+ contextOptions.viewport = {
113
+ width: config.viewport.width,
114
+ height: config.viewport.height,
115
+ };
116
+ }
117
+ this.context = await browser.newContext(contextOptions);
118
+ logger_1.logger.info('Created browser context');
119
+ return this.context;
120
+ }
121
+ consoleMessages = [];
122
+ getConsoleMessages() {
123
+ return [...this.consoleMessages];
124
+ }
125
+ clearConsoleMessages() {
126
+ this.consoleMessages = [];
127
+ }
128
+ async attachPageListeners(page) {
129
+ page.on('load', () => {
130
+ logger_1.logger.debug('Page loaded');
131
+ });
132
+ page.on('domcontentloaded', () => {
133
+ logger_1.logger.debug('DOM content loaded');
134
+ });
135
+ page.on('console', (msg) => {
136
+ const message = {
137
+ type: msg.type(),
138
+ message: msg.text(),
139
+ location: msg.location(),
140
+ timestamp: new Date().toISOString(),
141
+ stack: msg.type() === 'error' ? msg.text() : undefined,
142
+ };
143
+ this.consoleMessages.push(message);
144
+ logger_1.logger.debug(`Console: ${msg.type()}: ${msg.text()}`);
145
+ });
146
+ page.on('pageerror', (error) => {
147
+ const errorMsg = {
148
+ type: 'error',
149
+ message: error.message,
150
+ location: { url: page.url(), lineNumber: 0, columnNumber: 0 },
151
+ timestamp: new Date().toISOString(),
152
+ };
153
+ if (error.stack) {
154
+ errorMsg.stack = error.stack;
155
+ }
156
+ this.consoleMessages.push(errorMsg);
157
+ logger_1.logger.warn(`Page error: ${error.message}`);
158
+ });
159
+ }
160
+ onBrowserDisconnect(callback) {
161
+ // Register a guarded disconnect handler
162
+ if (this.browser) {
163
+ this.browser.on('disconnected', () => {
164
+ try {
165
+ callback();
166
+ }
167
+ catch (error) {
168
+ logger_1.logger.warn(`Error in browser disconnect handler: ${error.message}`);
169
+ }
170
+ });
171
+ }
172
+ }
173
+ async getFrameHierarchy(page) {
174
+ const frames = page.frames();
175
+ const buildHierarchy = (frame) => {
176
+ return {
177
+ url: frame.url(),
178
+ name: frame.name(),
179
+ children: frame.childFrames().map(buildHierarchy),
180
+ };
181
+ };
182
+ return buildHierarchy(frames[0]); // Main frame
183
+ }
184
+ async close() {
185
+ if (this.isClosed)
186
+ return;
187
+ this.isClosed = true;
188
+ try {
189
+ if (this.context) {
190
+ await this.context.close();
191
+ }
192
+ }
193
+ catch (error) {
194
+ logger_1.logger.warn('Error closing browser context: ' + error.message);
195
+ }
196
+ try {
197
+ if (this.browser) {
198
+ await this.browser.close();
199
+ }
200
+ }
201
+ catch (error) {
202
+ logger_1.logger.warn('Error closing browser: ' + error.message);
203
+ }
204
+ logger_1.logger.info('Browser closed');
205
+ }
206
+ }
207
+ exports.BrowserAdapter = BrowserAdapter;
208
+ //# sourceMappingURL=browser-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-adapter.js","sourceRoot":"","sources":["../../src/core/browser-adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,4CAAyC;AAEzC,MAAa,cAAc;IACjB,OAAO,CAAW;IAClB,OAAO,CAAkB;IACzB,QAAQ,GAAG,KAAK,CAAC;IAEzB,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,wDAAa,YAAY,GAAC,CAAC;QAEzD,IAAI,WAAgB,CAAC;QACrB,QAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU;gBACb,WAAW,GAAG,QAAQ,CAAC;gBACvB,MAAM;YACR,KAAK,SAAS;gBACZ,WAAW,GAAG,OAAO,CAAC;gBACtB,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,aAAa,GAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;YACjC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;YAC7B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;YACjC,IAAI,EAAE;gBACJ,mBAAmB;gBACnB,sBAAsB;gBACtB,0BAA0B;gBAC1B,yBAAyB;gBACzB,gBAAgB;gBAChB,4BAA4B;gBAC5B,iCAAiC;gBACjC,uCAAuC;gBACvC,0CAA0C;gBAC1C,oBAAoB;gBACpB,4BAA4B;gBAC5B,gBAAgB;gBAChB,qBAAqB;gBACrB,0BAA0B;gBAC1B,gBAAgB;gBAChB,oCAAoC;gBACpC,wBAAwB;aACzB;YACD,YAAY,EAAE,KAAK,EAAE,gCAAgC;YACrD,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,KAAK;SACpB,CAAC;QAEF,wEAAwE;QACxE,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpE,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAEvD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,UAAU,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgB,EAAE,MAAY;QAChD,2CAA2C;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,8DAA8D;QAExF,MAAM,cAAc,GAAQ;YAC1B,+DAA+D;YAC/D,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC;YACzD,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,IAAI;YACvB,eAAe,EAAE,IAAI;YACrB,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,iHAAiH;YAC5H,iCAAiC;YACjC,0BAA0B,EAAE,KAAK;SAClC,CAAC;QAEF,qFAAqF;QACrF,IAAI,MAAM,EAAE,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,cAAc,CAAC,QAAQ,GAAG;gBACxB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;gBAC5B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;aAC/B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAExD,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,eAAe,GAA2G,EAAE,CAAC;IAErI,kBAAkB;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAU;QAClC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACnB,eAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC/B,eAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;gBAChB,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE;gBACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;aACvD,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,eAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAQ;gBACpB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;gBAC7D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,eAAM,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CAAC,QAAoB;QACtC,wCAAwC;QACxC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;gBACnC,IAAI,CAAC;oBACH,QAAQ,EAAE,CAAC;gBACb,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,eAAM,CAAC,IAAI,CAAC,wCAAyC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAU;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE7B,MAAM,cAAc,GAAG,CAAC,KAAU,EAAkB,EAAE;YACpD,OAAO;gBACL,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;gBAClB,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC;aAClD,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;IACjD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,iCAAiC,GAAI,KAAe,CAAC,OAAO,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,yBAAyB,GAAI,KAAe,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;CACF;AA/LD,wCA+LC"}
@@ -0,0 +1,52 @@
1
+ import { Page } from '@playwright/test';
2
+ import { Config } from '../types/config';
3
+ import { PageSnapshot } from '../types/capture';
4
+ export declare class CaptureEngine {
5
+ private domAnalyzer;
6
+ private a11yExtractor;
7
+ private locatorGenerator;
8
+ private networkLogger;
9
+ private redactor;
10
+ private validator;
11
+ constructor(config: Config);
12
+ attachNetworkListeners(page: Page): Promise<void>;
13
+ capturePageSnapshot(page: Page, config: Config, consoleMessages?: any[]): Promise<PageSnapshot>;
14
+ private getFrameHierarchy;
15
+ getRedactionAudit(): import("../types/storage").RedactionAuditEntry[];
16
+ private generatePageName;
17
+ private sanitize;
18
+ /**
19
+ * Compute a content hash for change detection
20
+ * Combines DOM, accessibility tree, and locators into a single hash
21
+ */
22
+ private computeContentHash;
23
+ /**
24
+ * Normalize DOM for hashing by removing dynamic content
25
+ */
26
+ private normalizeDomForHash;
27
+ /**
28
+ * Normalize accessibility tree for hashing
29
+ */
30
+ private normalizeA11yForHash;
31
+ /**
32
+ * Capture page state information
33
+ */
34
+ private capturePageState;
35
+ /**
36
+ * Capture network request summary
37
+ */
38
+ private captureNetworkSummary;
39
+ /**
40
+ * Capture enhanced timing metrics
41
+ */
42
+ private captureEnhancedTiming;
43
+ /**
44
+ * Enhance locators data with CSS styles, viewport info, and form details
45
+ */
46
+ private enhanceLocatorsData;
47
+ /**
48
+ * Capture form field details
49
+ */
50
+ private captureFormFieldDetails;
51
+ }
52
+ //# sourceMappingURL=capture-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-engine.d.ts","sourceRoot":"","sources":["../../src/core/capture-engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAShD,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,SAAS,CAAgB;gBAErB,MAAM,EAAE,MAAM;IASpB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,YAAY,CAAC;YAwG3F,iBAAiB;IAkB/B,iBAAiB;IAIjB,OAAO,CAAC,gBAAgB;IA8CxB,OAAO,CAAC,QAAQ;IAIhB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;YACW,gBAAgB;IAgE9B;;OAEG;YACW,qBAAqB;IA2CnC;;OAEG;YACW,qBAAqB;IA6BnC;;OAEG;YACW,mBAAmB;IA8GjC;;OAEG;YACW,uBAAuB;CAuEtC"}