@memberjunction/react-test-harness 2.94.0 → 2.96.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 +7 -0
- package/dist/lib/component-linter.d.ts.map +1 -1
- package/dist/lib/component-linter.js +2099 -112
- package/dist/lib/component-linter.js.map +1 -1
- package/dist/lib/component-runner.d.ts +2 -1
- package/dist/lib/component-runner.d.ts.map +1 -1
- package/dist/lib/component-runner.js +74 -60
- package/dist/lib/component-runner.js.map +1 -1
- package/dist/lib/styles-type-analyzer.d.ts +64 -0
- package/dist/lib/styles-type-analyzer.d.ts.map +1 -0
- package/dist/lib/styles-type-analyzer.js +265 -0
- package/dist/lib/styles-type-analyzer.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Analyzes the ComponentStyles TypeScript interface to validate style property access
|
|
4
|
+
* @module @memberjunction/react-test-harness
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
+
if (mod && mod.__esModule) return mod;
|
|
24
|
+
var result = {};
|
|
25
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
+
__setModuleDefault(result, mod);
|
|
27
|
+
return result;
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.StylesTypeAnalyzer = void 0;
|
|
31
|
+
const ts = __importStar(require("typescript"));
|
|
32
|
+
const path = __importStar(require("path"));
|
|
33
|
+
const fs = __importStar(require("fs"));
|
|
34
|
+
const react_runtime_1 = require("@memberjunction/react-runtime");
|
|
35
|
+
/**
|
|
36
|
+
* Analyzes the ComponentStyles interface from @memberjunction/interactive-component-types
|
|
37
|
+
* to provide validation and suggestions for style property access
|
|
38
|
+
*/
|
|
39
|
+
class StylesTypeAnalyzer {
|
|
40
|
+
constructor() {
|
|
41
|
+
this.validPaths = new Set();
|
|
42
|
+
this.propertyMap = new Map();
|
|
43
|
+
// Get the default styles from the runtime - single source of truth
|
|
44
|
+
this.defaultStyles = (0, react_runtime_1.SetupStyles)();
|
|
45
|
+
this.analyzeComponentStylesInterface();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Analyzes the ComponentStyles interface to extract all valid property paths
|
|
49
|
+
*/
|
|
50
|
+
analyzeComponentStylesInterface() {
|
|
51
|
+
try {
|
|
52
|
+
// Find the type definition file
|
|
53
|
+
const typePackagePath = require.resolve('@memberjunction/interactive-component-types');
|
|
54
|
+
const packageDir = path.dirname(typePackagePath);
|
|
55
|
+
const typeFile = path.join(packageDir, 'src', 'runtime-types.ts');
|
|
56
|
+
// Check if file exists, if not try the dist version
|
|
57
|
+
const actualFile = fs.existsSync(typeFile)
|
|
58
|
+
? typeFile
|
|
59
|
+
: path.join(packageDir, 'runtime-types.d.ts');
|
|
60
|
+
if (!fs.existsSync(actualFile)) {
|
|
61
|
+
// Fallback to hardcoded structure if we can't find the file
|
|
62
|
+
this.loadFallbackStructure();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const sourceCode = fs.readFileSync(actualFile, 'utf-8');
|
|
66
|
+
// Create a TypeScript program to parse the file
|
|
67
|
+
const sourceFile = ts.createSourceFile(actualFile, sourceCode, ts.ScriptTarget.Latest, true);
|
|
68
|
+
// Find the ComponentStyles interface
|
|
69
|
+
const interfaceNode = this.findInterface(sourceFile, 'ComponentStyles');
|
|
70
|
+
if (interfaceNode) {
|
|
71
|
+
this.extractPaths(interfaceNode, []);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Fallback if we can't find the interface
|
|
75
|
+
this.loadFallbackStructure();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.warn('Failed to analyze ComponentStyles interface, using fallback structure:', error);
|
|
80
|
+
this.loadFallbackStructure();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Finds an interface by name in a source file
|
|
85
|
+
*/
|
|
86
|
+
findInterface(sourceFile, name) {
|
|
87
|
+
let result;
|
|
88
|
+
const visit = (node) => {
|
|
89
|
+
if (ts.isInterfaceDeclaration(node) && node.name?.text === name) {
|
|
90
|
+
result = node;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
ts.forEachChild(node, visit);
|
|
94
|
+
};
|
|
95
|
+
visit(sourceFile);
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Recursively extracts property paths from an interface
|
|
100
|
+
*/
|
|
101
|
+
extractPaths(node, currentPath) {
|
|
102
|
+
if (ts.isInterfaceDeclaration(node) || ts.isTypeLiteralNode(node)) {
|
|
103
|
+
const members = ts.isInterfaceDeclaration(node) ? node.members : node.members;
|
|
104
|
+
members.forEach(member => {
|
|
105
|
+
if (ts.isPropertySignature(member) && member.name && ts.isIdentifier(member.name)) {
|
|
106
|
+
const propName = member.name.text;
|
|
107
|
+
const newPath = [...currentPath, propName];
|
|
108
|
+
// Add this path
|
|
109
|
+
this.addPath(newPath);
|
|
110
|
+
// If the type is an object/interface, recurse
|
|
111
|
+
if (member.type) {
|
|
112
|
+
this.extractPathsFromType(member.type, newPath);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Extracts paths from a type node
|
|
120
|
+
*/
|
|
121
|
+
extractPathsFromType(typeNode, currentPath) {
|
|
122
|
+
if (ts.isTypeLiteralNode(typeNode)) {
|
|
123
|
+
this.extractPaths(typeNode, currentPath);
|
|
124
|
+
}
|
|
125
|
+
else if (ts.isUnionTypeNode(typeNode)) {
|
|
126
|
+
// For union types, we might have object literals
|
|
127
|
+
typeNode.types.forEach(type => {
|
|
128
|
+
if (ts.isTypeLiteralNode(type)) {
|
|
129
|
+
this.extractPaths(type, currentPath);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Adds a path to our tracking structures
|
|
136
|
+
*/
|
|
137
|
+
addPath(pathArray) {
|
|
138
|
+
const pathStr = pathArray.join('.');
|
|
139
|
+
this.validPaths.add(pathStr);
|
|
140
|
+
// Add to property map for quick lookup
|
|
141
|
+
const lastProp = pathArray[pathArray.length - 1];
|
|
142
|
+
if (!this.propertyMap.has(lastProp)) {
|
|
143
|
+
this.propertyMap.set(lastProp, []);
|
|
144
|
+
}
|
|
145
|
+
this.propertyMap.get(lastProp).push(pathStr);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Loads structure from the actual runtime default styles
|
|
149
|
+
*/
|
|
150
|
+
loadFallbackStructure() {
|
|
151
|
+
// Use the actual default styles as the structure source
|
|
152
|
+
// We need to cast through unknown because ComponentStyles doesn't have an index signature
|
|
153
|
+
this.buildPathsFromStructure(this.defaultStyles, []);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Builds paths from a structure object
|
|
157
|
+
*/
|
|
158
|
+
buildPathsFromStructure(obj, currentPath) {
|
|
159
|
+
for (const key in obj) {
|
|
160
|
+
const newPath = [...currentPath, key];
|
|
161
|
+
this.addPath(newPath);
|
|
162
|
+
const value = obj[key];
|
|
163
|
+
// Check if it's an object but not a boolean (which was being compared incorrectly)
|
|
164
|
+
if (value && typeof value === 'object') {
|
|
165
|
+
this.buildPathsFromStructure(value, newPath);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Checks if a property path is valid
|
|
171
|
+
*/
|
|
172
|
+
isValidPath(pathArray) {
|
|
173
|
+
// Remove 'styles' from the beginning if present
|
|
174
|
+
const cleanPath = pathArray[0] === 'styles' ? pathArray.slice(1) : pathArray;
|
|
175
|
+
return this.validPaths.has(cleanPath.join('.'));
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Finds all paths containing a specific property name
|
|
179
|
+
*/
|
|
180
|
+
findPropertyPaths(propertyName) {
|
|
181
|
+
const paths = [];
|
|
182
|
+
// Look for exact matches
|
|
183
|
+
if (this.propertyMap.has(propertyName)) {
|
|
184
|
+
paths.push(...this.propertyMap.get(propertyName));
|
|
185
|
+
}
|
|
186
|
+
return paths;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Gets suggestions for an invalid path
|
|
190
|
+
*/
|
|
191
|
+
getSuggestionsForPath(invalidPath) {
|
|
192
|
+
// Remove 'styles' prefix if present
|
|
193
|
+
const cleanPath = invalidPath[0] === 'styles' ? invalidPath.slice(1) : invalidPath;
|
|
194
|
+
const suggestions = {
|
|
195
|
+
correctPaths: [],
|
|
196
|
+
availableAtParent: [],
|
|
197
|
+
didYouMean: null
|
|
198
|
+
};
|
|
199
|
+
// Find where the misplaced property might exist
|
|
200
|
+
const lastProp = cleanPath[cleanPath.length - 1];
|
|
201
|
+
suggestions.correctPaths = this.findPropertyPaths(lastProp)
|
|
202
|
+
.map(p => 'styles.' + p);
|
|
203
|
+
// Get available properties at the parent level
|
|
204
|
+
if (cleanPath.length > 1) {
|
|
205
|
+
const parentPath = cleanPath.slice(0, -1).join('.');
|
|
206
|
+
this.validPaths.forEach(validPath => {
|
|
207
|
+
if (validPath.startsWith(parentPath + '.')) {
|
|
208
|
+
const nextProp = validPath.substring(parentPath.length + 1).split('.')[0];
|
|
209
|
+
if (nextProp && !suggestions.availableAtParent.includes(nextProp)) {
|
|
210
|
+
suggestions.availableAtParent.push(nextProp);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
// At root level, show root properties
|
|
217
|
+
this.validPaths.forEach(validPath => {
|
|
218
|
+
const rootProp = validPath.split('.')[0];
|
|
219
|
+
if (!suggestions.availableAtParent.includes(rootProp)) {
|
|
220
|
+
suggestions.availableAtParent.push(rootProp);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
// Generate "did you mean" suggestion
|
|
225
|
+
if (suggestions.correctPaths.length > 0) {
|
|
226
|
+
suggestions.didYouMean = suggestions.correctPaths[0];
|
|
227
|
+
}
|
|
228
|
+
return suggestions;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Gets the actual default value from the runtime styles object
|
|
232
|
+
* This ensures we have a single source of truth for default values
|
|
233
|
+
*/
|
|
234
|
+
getDefaultValueForPath(pathArray) {
|
|
235
|
+
const cleanPath = pathArray[0] === 'styles' ? pathArray.slice(1) : pathArray;
|
|
236
|
+
// Navigate the actual default styles object to get the real value
|
|
237
|
+
// Cast through unknown because ComponentStyles doesn't have an index signature
|
|
238
|
+
let current = this.defaultStyles;
|
|
239
|
+
for (const prop of cleanPath) {
|
|
240
|
+
if (current && typeof current === 'object' && prop in current) {
|
|
241
|
+
current = current[prop];
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
// Path doesn't exist in defaults, return empty string
|
|
245
|
+
return "undefined";
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// If we found a value, return it properly quoted
|
|
249
|
+
if (current !== undefined && current !== null) {
|
|
250
|
+
// For string values, add quotes
|
|
251
|
+
if (typeof current === 'string') {
|
|
252
|
+
return `'${current}'`;
|
|
253
|
+
}
|
|
254
|
+
// For objects (intermediate paths), return undefined since we can't provide a meaningful default
|
|
255
|
+
if (typeof current === 'object') {
|
|
256
|
+
return "{}";
|
|
257
|
+
}
|
|
258
|
+
// For other primitive types, convert to string
|
|
259
|
+
return String(current);
|
|
260
|
+
}
|
|
261
|
+
return "undefined";
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
exports.StylesTypeAnalyzer = StylesTypeAnalyzer;
|
|
265
|
+
//# sourceMappingURL=styles-type-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles-type-analyzer.js","sourceRoot":"","sources":["../../src/lib/styles-type-analyzer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/react-test-harness",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.96.0",
|
|
4
4
|
"description": "React component test harness for MemberJunction using Playwright",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,12 +18,11 @@
|
|
|
18
18
|
"author": "MemberJunction.com",
|
|
19
19
|
"license": "ISC",
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"ts-node-dev": "^2.0.0"
|
|
22
|
-
"typescript": "^5.4.5"
|
|
21
|
+
"ts-node-dev": "^2.0.0"
|
|
23
22
|
},
|
|
24
23
|
"dependencies": {
|
|
25
|
-
"@memberjunction/react-runtime": "^2.
|
|
26
|
-
"@memberjunction/interactive-component-types": "^2.
|
|
24
|
+
"@memberjunction/react-runtime": "^2.96.0",
|
|
25
|
+
"@memberjunction/interactive-component-types": "^2.96.0",
|
|
27
26
|
"@playwright/test": "^1.40.0",
|
|
28
27
|
"playwright": "^1.40.0",
|
|
29
28
|
"commander": "^11.1.0",
|
|
@@ -31,6 +30,7 @@
|
|
|
31
30
|
"ora": "^5.4.1",
|
|
32
31
|
"@babel/parser": "^7.23.0",
|
|
33
32
|
"@babel/traverse": "^7.23.0",
|
|
34
|
-
"@babel/types": "^7.23.0"
|
|
33
|
+
"@babel/types": "^7.23.0",
|
|
34
|
+
"typescript": "^5.4.5"
|
|
35
35
|
}
|
|
36
36
|
}
|