@memberjunction/react-test-harness 2.127.0 → 2.129.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.
@@ -1,73 +0,0 @@
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const component_linter_1 = require("./component-linter");
27
- const fs = __importStar(require("fs"));
28
- const path = __importStar(require("path"));
29
- async function testBroken7() {
30
- // Read the spec file
31
- const specPath = path.join(__dirname, 'broken-7.json');
32
- const specContent = fs.readFileSync(specPath, 'utf-8');
33
- const spec = JSON.parse(specContent);
34
- console.log('\n=== Testing Root Component (ModelExplorer) ===\n');
35
- // Test the root component
36
- const rootResult = await component_linter_1.ComponentLinter.lintComponent(spec.code, spec.name, spec, true, // isRootComponent
37
- undefined, // contextUser
38
- true // debugMode
39
- );
40
- console.log('Root Component Lint Results:');
41
- console.log('Has Errors:', rootResult.hasErrors);
42
- console.log('Violations:', rootResult.violations.length);
43
- rootResult.violations.forEach((v, i) => {
44
- console.log(`\n${i + 1}. [${v.severity.toUpperCase()}] ${v.rule}`);
45
- console.log(` Line ${v.line}, Column ${v.column}`);
46
- console.log(` Message: ${v.message}`);
47
- if (v.code) {
48
- console.log(` Code: ${v.code}`);
49
- }
50
- if (v.suggestion) {
51
- console.log(` Suggestion: ${v.suggestion.text}`);
52
- if (v.suggestion.example) {
53
- console.log(` Example:\n${v.suggestion.example}`);
54
- }
55
- }
56
- });
57
- // Now test the child components
58
- console.log('\n\n=== Testing Child Components ===\n');
59
- for (const dep of spec.dependencies) {
60
- if (dep.code) {
61
- console.log(`\nTesting ${dep.name}:`);
62
- const childResult = await component_linter_1.ComponentLinter.lintComponent(dep.code, dep.name, dep, false, // not root component
63
- undefined, true);
64
- console.log(` Has Errors: ${childResult.hasErrors}`);
65
- console.log(` Violations: ${childResult.violations.length}`);
66
- childResult.violations.forEach((v, i) => {
67
- console.log(` ${i + 1}. [${v.severity.toUpperCase()}] ${v.rule}: ${v.message}`);
68
- });
69
- }
70
- }
71
- }
72
- testBroken7().catch(console.error);
73
- //# sourceMappingURL=test-broken-7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-broken-7.js","sourceRoot":"","sources":["../../src/lib/test-broken-7.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=test-broken-9.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-broken-9.d.ts","sourceRoot":"","sources":["../../src/lib/test-broken-9.ts"],"names":[],"mappings":""}
@@ -1,122 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || function (mod) {
20
- if (mod && mod.__esModule) return mod;
21
- var result = {};
22
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
- __setModuleDefault(result, mod);
24
- return result;
25
- };
26
- Object.defineProperty(exports, "__esModule", { value: true });
27
- const fs = __importStar(require("fs"));
28
- const path = __importStar(require("path"));
29
- const component_linter_1 = require("./component-linter");
30
- async function testBroken9() {
31
- try {
32
- // Load the broken-9.json spec
33
- const specPath = path.join(__dirname, 'broken-9.json');
34
- const specContent = fs.readFileSync(specPath, 'utf-8');
35
- const spec = JSON.parse(specContent);
36
- console.log('=== Testing broken-9.json Component ===\n');
37
- console.log(`Component: ${spec.name} (${spec.title})\n`);
38
- // Test the root component
39
- if (spec.code) {
40
- console.log('Testing root component code...');
41
- // Remove libraries from spec temporarily to avoid contextUser requirement
42
- const specWithoutLibraries = { ...spec, libraries: undefined };
43
- let result;
44
- try {
45
- result = await component_linter_1.ComponentLinter.lintComponent(spec.code, spec.name, specWithoutLibraries, true, // isRootComponent
46
- undefined, // no contextUser for now
47
- false // no debug mode
48
- );
49
- }
50
- catch (error) {
51
- console.error('Linter threw error:', error);
52
- throw error;
53
- }
54
- console.log(`Has Errors: ${result.hasErrors}`);
55
- console.log(`Total Violations: ${result.violations.length}`);
56
- // Debug: Show all violations
57
- console.log('All violation rules:', result.violations.map(v => v.rule));
58
- // Show parse error details
59
- const parseError = result.violations.find(v => v.rule === 'parse-error');
60
- if (parseError) {
61
- console.log('\nParse Error Details:');
62
- console.log(parseError.message);
63
- }
64
- // Filter for callbacks and sorting violations
65
- const importantViolations = result.violations.filter(v => v.rule === 'callbacks-usage-validation' ||
66
- v.rule === 'callbacks-passthrough-only' ||
67
- v.rule === 'table-sorting-implementation');
68
- if (importantViolations.length > 0) {
69
- console.log('\n=== IMPORTANT VIOLATIONS FOUND ===');
70
- importantViolations.forEach((v, i) => {
71
- console.log(`\n${i + 1}. [${v.severity.toUpperCase()}] ${v.rule}`);
72
- console.log(` Line ${v.line}, Column ${v.column}`);
73
- console.log(` Message: ${v.message}`);
74
- if (v.suggestion) {
75
- console.log(` Suggestion: ${v.suggestion.text}`);
76
- if (v.suggestion.example) {
77
- console.log(` Example:\n${v.suggestion.example.split('\n').map(l => ' ' + l).join('\n')}`);
78
- }
79
- }
80
- });
81
- }
82
- }
83
- // Test child components
84
- if (spec.dependencies && spec.dependencies.length > 0) {
85
- console.log('\n\n=== Testing Child Components ===\n');
86
- for (const dep of spec.dependencies) {
87
- if (dep.code) {
88
- console.log(`\nTesting ${dep.name}:`);
89
- // Remove libraries from spec temporarily to avoid contextUser requirement
90
- const depSpecWithoutLibraries = { ...dep, libraries: undefined };
91
- const result = await component_linter_1.ComponentLinter.lintComponent(dep.code, dep.name, depSpecWithoutLibraries, false, // not root component
92
- undefined, // no contextUser
93
- false // no debug mode
94
- );
95
- console.log(` Has Errors: ${result.hasErrors}`);
96
- console.log(` Total Violations: ${result.violations.length}`);
97
- // Find the specific issue with callbacks
98
- const callbacksIssues = result.violations.filter(v => v.rule === 'callbacks-usage-validation' ||
99
- v.rule === 'callbacks-passthrough-only' ||
100
- v.rule === 'component-props-validation');
101
- if (callbacksIssues.length > 0) {
102
- console.log('\n Relevant violations:');
103
- callbacksIssues.forEach((v, i) => {
104
- console.log(` ${i + 1}. [${v.severity.toUpperCase()}] ${v.rule}`);
105
- console.log(` Line ${v.line}, Column ${v.column}`);
106
- console.log(` Message: ${v.message}`);
107
- if (v.suggestion) {
108
- console.log(` Suggestion: ${v.suggestion.text}`);
109
- }
110
- });
111
- }
112
- }
113
- }
114
- }
115
- }
116
- catch (error) {
117
- console.error('Error testing component:', error);
118
- process.exit(1);
119
- }
120
- }
121
- testBroken9().catch(console.error);
122
- //# sourceMappingURL=test-broken-9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-broken-9.js","sourceRoot":"","sources":["../../src/lib/test-broken-9.ts"],"names":[],"mappings":"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"}