@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.
- package/dist/lib/component-linter.d.ts.map +1 -1
- package/dist/lib/component-linter.js +103 -27
- package/dist/lib/component-linter.js.map +1 -1
- package/dist/lib/component-runner.d.ts +50 -1
- package/dist/lib/component-runner.d.ts.map +1 -1
- package/dist/lib/component-runner.js +96 -13
- package/dist/lib/component-runner.js.map +1 -1
- package/package.json +9 -8
- package/dist/lib/test-broken-7.d.ts +0 -2
- package/dist/lib/test-broken-7.d.ts.map +0 -1
- package/dist/lib/test-broken-7.js +0 -73
- package/dist/lib/test-broken-7.js.map +0 -1
- package/dist/lib/test-broken-9.d.ts +0 -3
- package/dist/lib/test-broken-9.d.ts.map +0 -1
- package/dist/lib/test-broken-9.js +0 -122
- package/dist/lib/test-broken-9.js.map +0 -1
|
@@ -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 +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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"}
|