@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,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,7 @@
1
+ export declare function isValidUrl(url: string): boolean;
2
+ export declare function isValidDirectory(path: string): boolean;
3
+ export declare function validateConfig(config: any): {
4
+ valid: boolean;
5
+ errors: string[];
6
+ };
7
+ //# sourceMappingURL=validators.d.ts.map
@@ -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
+ }