@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,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POMGenerator = void 0;
|
|
4
|
+
class POMGenerator {
|
|
5
|
+
/**
|
|
6
|
+
* Generates a Playwright Page Object Model (POM) from a page snapshot
|
|
7
|
+
*/
|
|
8
|
+
generate(snapshot) {
|
|
9
|
+
const { metadata, locators } = snapshot;
|
|
10
|
+
const className = this.toPascalCase(metadata.pageName || 'Page');
|
|
11
|
+
let code = `import { Page, Locator, expect } from '@playwright/test';\n\n`;
|
|
12
|
+
code += `/**\n * Page Object Model for ${metadata.url}\n * Generated by ContextGraph on ${metadata.timestamp}\n */\n`;
|
|
13
|
+
code += `export class ${className} {\n`;
|
|
14
|
+
code += ` private readonly page: Page;\n`;
|
|
15
|
+
// Add locators as private properties
|
|
16
|
+
const uniqueLocators = this.filterUniqueLocators(locators.elements);
|
|
17
|
+
uniqueLocators.forEach((el, index) => {
|
|
18
|
+
const propertyName = this.toCamelCase(this.getElementName(el, index));
|
|
19
|
+
code += ` public readonly ${propertyName}: Locator;\n`;
|
|
20
|
+
});
|
|
21
|
+
code += `\n constructor(page: Page) {\n`;
|
|
22
|
+
code += ` this.page = page;\n`;
|
|
23
|
+
// Initialize locators
|
|
24
|
+
uniqueLocators.forEach((el, index) => {
|
|
25
|
+
const propertyName = this.toCamelCase(this.getElementName(el, index));
|
|
26
|
+
const bestLocator = el.locators[0]?.value || `page.locator('${el.tagName}')`;
|
|
27
|
+
code += ` this.${propertyName} = ${bestLocator};\n`;
|
|
28
|
+
});
|
|
29
|
+
code += ` }\n\n`;
|
|
30
|
+
// Add navigation method
|
|
31
|
+
code += ` async goto() {\n`;
|
|
32
|
+
code += ` await this.page.goto('${metadata.url}');\n`;
|
|
33
|
+
code += ` }\n\n`;
|
|
34
|
+
// Add basic actions for inputs
|
|
35
|
+
uniqueLocators.filter(el => ['input', 'textarea', 'select'].includes(el.tagName)).forEach((el, index) => {
|
|
36
|
+
const propertyName = this.toCamelCase(this.getElementName(el, index));
|
|
37
|
+
const actionName = el.tagName === 'select' ? 'select' : 'fill';
|
|
38
|
+
code += ` async ${actionName}${this.toPascalCase(propertyName)}(value: string) {\n`;
|
|
39
|
+
code += ` await this.${propertyName}.${actionName}(value);\n`;
|
|
40
|
+
code += ` }\n\n`;
|
|
41
|
+
});
|
|
42
|
+
// Add click actions for buttons and links
|
|
43
|
+
uniqueLocators.filter(el => ['button', 'a'].includes(el.tagName) || el.attributes['role'] === 'button').forEach((el, index) => {
|
|
44
|
+
const propertyName = this.toCamelCase(this.getElementName(el, index));
|
|
45
|
+
code += ` async click${this.toPascalCase(propertyName)}() {\n`;
|
|
46
|
+
code += ` await this.${propertyName}.click();\n`;
|
|
47
|
+
code += ` }\n\n`;
|
|
48
|
+
});
|
|
49
|
+
code += `}\n`;
|
|
50
|
+
return code;
|
|
51
|
+
}
|
|
52
|
+
getElementName(el, index) {
|
|
53
|
+
// Try to get a meaningful name from attributes or text
|
|
54
|
+
const name = el.attributes['name'] ||
|
|
55
|
+
el.attributes['id'] ||
|
|
56
|
+
el.attributes['data-testid'] ||
|
|
57
|
+
el.attributes['aria-label'] ||
|
|
58
|
+
el.text?.trim().substring(0, 20) ||
|
|
59
|
+
`${el.tagName}${index}`;
|
|
60
|
+
return name.replace(/[^a-zA-Z0-9]/g, '_');
|
|
61
|
+
}
|
|
62
|
+
filterUniqueLocators(elements) {
|
|
63
|
+
const seen = new Set();
|
|
64
|
+
return elements.filter(el => {
|
|
65
|
+
const name = this.getElementName(el, 0);
|
|
66
|
+
if (seen.has(name))
|
|
67
|
+
return false;
|
|
68
|
+
seen.add(name);
|
|
69
|
+
return true;
|
|
70
|
+
}).slice(0, 50); // Limit to top 50 elements for POM
|
|
71
|
+
}
|
|
72
|
+
toCamelCase(str) {
|
|
73
|
+
return str.replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => {
|
|
74
|
+
return index === 0 ? word.toLowerCase() : word.toUpperCase();
|
|
75
|
+
}).replace(/\s+/g, '').replace(/_/g, '');
|
|
76
|
+
}
|
|
77
|
+
toPascalCase(str) {
|
|
78
|
+
const camel = this.toCamelCase(str);
|
|
79
|
+
return camel.charAt(0).toUpperCase() + camel.slice(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.POMGenerator = POMGenerator;
|
|
83
|
+
//# sourceMappingURL=pom-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pom-generator.js","sourceRoot":"","sources":["../../src/utils/pom-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"AACA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAkChF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidUrl = isValidUrl;
|
|
4
|
+
exports.isValidDirectory = isValidDirectory;
|
|
5
|
+
exports.validateConfig = validateConfig;
|
|
6
|
+
// Developer: Shadow Coderr, Architect
|
|
7
|
+
function isValidUrl(url) {
|
|
8
|
+
try {
|
|
9
|
+
new URL(url);
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function isValidDirectory(path) {
|
|
17
|
+
return typeof path === 'string' && path.length > 0;
|
|
18
|
+
}
|
|
19
|
+
function validateConfig(config) {
|
|
20
|
+
const errors = [];
|
|
21
|
+
if (!config.browser) {
|
|
22
|
+
errors.push('Browser configuration is required');
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
if (!['msedge', 'chromium', 'firefox'].includes(config.browser.channel)) {
|
|
26
|
+
errors.push('Invalid browser channel');
|
|
27
|
+
}
|
|
28
|
+
if (typeof config.browser.headless !== 'boolean') {
|
|
29
|
+
errors.push('Headless must be a boolean');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!config.capture) {
|
|
33
|
+
errors.push('Capture configuration is required');
|
|
34
|
+
}
|
|
35
|
+
if (!config.security) {
|
|
36
|
+
errors.push('Security configuration is required');
|
|
37
|
+
}
|
|
38
|
+
if (!config.storage) {
|
|
39
|
+
errors.push('Storage configuration is required');
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
if (!isValidDirectory(config.storage.outputDir)) {
|
|
43
|
+
errors.push('Invalid output directory');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
valid: errors.length === 0,
|
|
48
|
+
errors,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":";;AACA,gCAOC;AAED,4CAEC;AAED,wCAkCC;AAhDD,sCAAsC;AACtC,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,SAAgB,cAAc,CAAC,MAAW;IACxC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@shadowcoderr/context-graph",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "A deterministic 'Flight Data Recorder' for web applications that transforms manual exploration into structured, AI-ready intelligence.",
|
|
5
|
+
"main": "dist/cli/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"context-graph": "dist/cli/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"start": "node dist/cli/index.js",
|
|
12
|
+
"dev": "ts-node src/cli/index.ts",
|
|
13
|
+
"lint": "eslint src/**/*.ts",
|
|
14
|
+
"format": "prettier --write src/**/*.ts",
|
|
15
|
+
"test": "jest && npx playwright test",
|
|
16
|
+
"test:watch": "jest --watch",
|
|
17
|
+
"test:playwright": "npx playwright test",
|
|
18
|
+
"clean": "rimraf dist"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"web-capture",
|
|
22
|
+
"playwright",
|
|
23
|
+
"automation",
|
|
24
|
+
"testing",
|
|
25
|
+
"ai",
|
|
26
|
+
"cli"
|
|
27
|
+
],
|
|
28
|
+
"author": "shadowcoderr",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/shadowcoderr/ContextGraph.git"
|
|
33
|
+
},
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/shadowcoderr/ContextGraph/issues"
|
|
36
|
+
},
|
|
37
|
+
"homepage": "https://github.com/shadowcoderr/ContextGraph#readme",
|
|
38
|
+
"files": [
|
|
39
|
+
"dist/",
|
|
40
|
+
"README.md",
|
|
41
|
+
"LICENSE"
|
|
42
|
+
],
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18.0.0"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@playwright/test": "^1.40.0",
|
|
48
|
+
"commander": "^11.0.0",
|
|
49
|
+
"chalk": "^5.3.0",
|
|
50
|
+
"ora": "^7.0.1",
|
|
51
|
+
"inquirer": "^9.2.12",
|
|
52
|
+
"fs-extra": "^11.2.0",
|
|
53
|
+
"sharp": "^0.33.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/node": "^20.0.0",
|
|
57
|
+
"@types/fs-extra": "^11.0.4",
|
|
58
|
+
"@types/inquirer": "^9.0.7",
|
|
59
|
+
"typescript": "^5.0.0",
|
|
60
|
+
"eslint": "^8.55.0",
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^6.15.0",
|
|
62
|
+
"@typescript-eslint/parser": "^6.15.0",
|
|
63
|
+
"prettier": "^3.1.1",
|
|
64
|
+
"jest": "^29.7.0",
|
|
65
|
+
"@types/jest": "^29.5.8",
|
|
66
|
+
"ts-jest": "^29.1.1",
|
|
67
|
+
"ts-node": "^10.9.2",
|
|
68
|
+
"rimraf": "^5.0.5"
|
|
69
|
+
}
|
|
70
|
+
}
|