@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.
- package/LICENSE +21 -0
- package/README.md +185 -0
- package/dist/analyzers/a11y-extractor.d.ts +15 -0
- package/dist/analyzers/a11y-extractor.d.ts.map +1 -0
- package/dist/analyzers/a11y-extractor.js +148 -0
- package/dist/analyzers/a11y-extractor.js.map +1 -0
- package/dist/analyzers/dom-analyzer.d.ts +20 -0
- package/dist/analyzers/dom-analyzer.d.ts.map +1 -0
- package/dist/analyzers/dom-analyzer.js +126 -0
- package/dist/analyzers/dom-analyzer.js.map +1 -0
- package/dist/analyzers/locator-generator.d.ts +13 -0
- package/dist/analyzers/locator-generator.d.ts.map +1 -0
- package/dist/analyzers/locator-generator.js +381 -0
- package/dist/analyzers/locator-generator.js.map +1 -0
- package/dist/analyzers/network-logger.d.ts +15 -0
- package/dist/analyzers/network-logger.d.ts.map +1 -0
- package/dist/analyzers/network-logger.js +71 -0
- package/dist/analyzers/network-logger.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +155 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/defaults.d.ts +3 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +54 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/loader.d.ts +3 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +75 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +168 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +104 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/browser-adapter.d.ts +24 -0
- package/dist/core/browser-adapter.d.ts.map +1 -0
- package/dist/core/browser-adapter.js +208 -0
- package/dist/core/browser-adapter.js.map +1 -0
- package/dist/core/capture-engine.d.ts +52 -0
- package/dist/core/capture-engine.d.ts.map +1 -0
- package/dist/core/capture-engine.js +593 -0
- package/dist/core/capture-engine.js.map +1 -0
- package/dist/core/runtime.d.ts +38 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +648 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/prompts/init-prompt.d.ts +12 -0
- package/dist/prompts/init-prompt.d.ts.map +1 -0
- package/dist/prompts/init-prompt.js +128 -0
- package/dist/prompts/init-prompt.js.map +1 -0
- package/dist/registry/components-registry.d.ts +97 -0
- package/dist/registry/components-registry.d.ts.map +1 -0
- package/dist/registry/components-registry.js +469 -0
- package/dist/registry/components-registry.js.map +1 -0
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +7 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/security/patterns.d.ts +4 -0
- package/dist/security/patterns.d.ts.map +1 -0
- package/dist/security/patterns.js +65 -0
- package/dist/security/patterns.js.map +1 -0
- package/dist/security/redactor.d.ts +26 -0
- package/dist/security/redactor.d.ts.map +1 -0
- package/dist/security/redactor.js +128 -0
- package/dist/security/redactor.js.map +1 -0
- package/dist/security/validator.d.ts +11 -0
- package/dist/security/validator.d.ts.map +1 -0
- package/dist/security/validator.js +62 -0
- package/dist/security/validator.js.map +1 -0
- package/dist/storage/engine.d.ts +45 -0
- package/dist/storage/engine.d.ts.map +1 -0
- package/dist/storage/engine.js +479 -0
- package/dist/storage/engine.js.map +1 -0
- package/dist/storage/manifest.d.ts +10 -0
- package/dist/storage/manifest.d.ts.map +1 -0
- package/dist/storage/manifest.js +98 -0
- package/dist/storage/manifest.js.map +1 -0
- package/dist/storage/serializer.d.ts +9 -0
- package/dist/storage/serializer.d.ts.map +1 -0
- package/dist/storage/serializer.js +22 -0
- package/dist/storage/serializer.js.map +1 -0
- package/dist/types/capture.d.ts +206 -0
- package/dist/types/capture.d.ts.map +1 -0
- package/dist/types/capture.js +3 -0
- package/dist/types/capture.js.map +1 -0
- package/dist/types/config.d.ts +63 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/registry.d.ts +94 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/registry.js +3 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types/storage.d.ts +57 -0
- package/dist/types/storage.d.ts.map +1 -0
- package/dist/types/storage.js +3 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/utils/hash.d.ts +3 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +26 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +86 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pom-generator.d.ts +12 -0
- package/dist/utils/pom-generator.d.ts.map +1 -0
- package/dist/utils/pom-generator.js +83 -0
- package/dist/utils/pom-generator.js.map +1 -0
- package/dist/utils/validators.d.ts +7 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +51 -0
- package/dist/utils/validators.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|