@gnapi/cotester 1.2.3 → 1.2.5

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.
@@ -0,0 +1,223 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ensureSharedRegistry = ensureSharedRegistry;
37
+ exports.getRegistryImportPath = getRegistryImportPath;
38
+ exports.extractBaseTypeName = extractBaseTypeName;
39
+ exports.isCustomTypeName = isCustomTypeName;
40
+ exports.buildFactoryName = buildFactoryName;
41
+ /**
42
+ * Shared Mock Registry (Feature 18)
43
+ *
44
+ * Generates and maintains `cotester/mocks/__shared__/types.mock.ts`.
45
+ * Each detected custom (non-primitive) type gets a single canonical factory
46
+ * function:
47
+ *
48
+ * export const mockUser = (): User => ({ id: 1, name: 'John Doe', ... });
49
+ *
50
+ * Individual mock files import from the registry instead of duplicating
51
+ * inline object literals.
52
+ */
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ const utils_1 = require("./utils");
56
+ const mockDataEngine_1 = require("./mockDataEngine");
57
+ const interfaceShapeResolver_1 = require("./interfaceShapeResolver");
58
+ // ── Constants ─────────────────────────────────────────────────────────────────
59
+ const REGISTRY_SUBPATH = "__shared__/types.mock.ts";
60
+ /** Known primitive/built-in TypeScript types that should NOT appear in the registry. */
61
+ const PRIMITIVE_TYPES = new Set([
62
+ "string", "number", "boolean", "void", "null", "undefined",
63
+ "any", "never", "unknown", "object", "date", "record", "error",
64
+ "regexp", "map", "set", "promise", "function",
65
+ ]);
66
+ /**
67
+ * Collect all custom (non-primitive) parameter types from the given scenarios,
68
+ * ensure each one has an entry in the shared registry file, and return the
69
+ * registry path + factory name map so `generateMockFile` can import them.
70
+ *
71
+ * @param scenarios All scenarios for the current file being processed.
72
+ * @param projectRoot Absolute project root.
73
+ * @param mockDir Mock directory relative to projectRoot (e.g. "cotester/mocks").
74
+ * @param dryRun When true, nothing is written to disk.
75
+ * @param srcFilePath Source file path used for AST-based interface resolution.
76
+ */
77
+ function ensureSharedRegistry(scenarios, projectRoot, mockDir, dryRun = false, srcFilePath = "") {
78
+ const customTypes = collectCustomTypes(scenarios, srcFilePath);
79
+ if (customTypes.size === 0)
80
+ return null;
81
+ const registryPath = path.join(projectRoot, mockDir, REGISTRY_SUBPATH);
82
+ // Load existing registry content (so we never overwrite user-edited entries)
83
+ let existingContent = "";
84
+ if (fs.existsSync(registryPath)) {
85
+ existingContent = fs.readFileSync(registryPath, "utf-8");
86
+ }
87
+ const factories = new Map();
88
+ const newLines = [];
89
+ for (const { typeName, resolvedSourceFilePath } of customTypes) {
90
+ const factoryFn = buildFactoryName(typeName);
91
+ factories.set(typeName, factoryFn);
92
+ // Skip if a factory for this type already exists in the file
93
+ if (existingContent.includes(`export const ${factoryFn}`))
94
+ continue;
95
+ const body = buildFactoryBody(typeName, resolvedSourceFilePath, projectRoot);
96
+ newLines.push(`export const ${factoryFn} = (): ${typeName} => (${body});`);
97
+ newLines.push("");
98
+ }
99
+ if (newLines.length === 0)
100
+ return { registryPath, factories };
101
+ const header = existingContent.length === 0
102
+ ? [
103
+ "// CoTester shared mock registry — auto-generated. You may edit factory bodies.",
104
+ "// New types are appended; existing entries are never overwritten.",
105
+ "",
106
+ ]
107
+ : [];
108
+ const updatedContent = existingContent.trimEnd() +
109
+ (existingContent.length > 0 ? "\n\n" : "") +
110
+ [...header, ...newLines].join("\n");
111
+ if (!dryRun) {
112
+ (0, utils_1.ensureDir)(path.dirname(registryPath));
113
+ fs.writeFileSync(registryPath, updatedContent, "utf-8");
114
+ }
115
+ return { registryPath, factories };
116
+ }
117
+ /**
118
+ * Compute the relative import path from an individual mock file to the
119
+ * shared registry.
120
+ */
121
+ function getRegistryImportPath(fromMockFilePath, registryPath) {
122
+ const rel = path.relative(path.dirname(fromMockFilePath), registryPath);
123
+ // Strip .ts extension; normalise Windows separators
124
+ return "./" + rel.replace(/\\/g, "/").replace(/\.ts$/, "");
125
+ }
126
+ function collectCustomTypes(scenarios, srcFilePath) {
127
+ // Use a Map keyed by typeName to deduplicate
128
+ const seen = new Map();
129
+ for (const scenario of scenarios) {
130
+ for (const param of scenario.parameters) {
131
+ const typeName = extractBaseTypeName(param.type);
132
+ if (typeName && isCustomTypeName(typeName) && !seen.has(typeName)) {
133
+ seen.set(typeName, { typeName, resolvedSourceFilePath: srcFilePath });
134
+ }
135
+ }
136
+ }
137
+ return new Set(seen.values());
138
+ }
139
+ // ── Type name helpers ─────────────────────────────────────────────────────────
140
+ function extractBaseTypeName(typeStr) {
141
+ let t = typeStr.trim();
142
+ // Strip import("...").TypeName
143
+ t = t.replace(/^import\([^)]+\)\./, "");
144
+ // Unwrap Promise<T>
145
+ const promiseMatch = t.match(/^Promise<(.+)>$/i);
146
+ if (promiseMatch)
147
+ t = promiseMatch[1].trim();
148
+ // Strip Array<T> → T
149
+ const arrayMatch = t.match(/^Array<(.+)>$/i);
150
+ if (arrayMatch)
151
+ t = arrayMatch[1].trim();
152
+ // Strip trailing []
153
+ t = t.replace(/\[\]$/, "").trim();
154
+ // Strip generic type params <...>
155
+ t = t.replace(/<[^>]+>$/, "").trim();
156
+ return t;
157
+ }
158
+ function isCustomTypeName(typeName) {
159
+ const lower = typeName.toLowerCase();
160
+ if (PRIMITIVE_TYPES.has(lower))
161
+ return false;
162
+ // All-lowercase single word that's a primitive alias
163
+ if (/^[a-z]+$/.test(typeName) && PRIMITIVE_TYPES.has(typeName))
164
+ return false;
165
+ // Must start with uppercase (interface/class convention) or be a non-primitive identifier
166
+ return /^[A-Z]/.test(typeName) || typeName.includes(".");
167
+ }
168
+ // ── Factory builders ──────────────────────────────────────────────────────────
169
+ function buildFactoryName(typeName) {
170
+ // "UserProfile" → "mockUserProfile"
171
+ return `mock${typeName.charAt(0).toUpperCase()}${typeName.slice(1)}`;
172
+ }
173
+ function buildFactoryBody(typeName, sourceFilePath, projectRoot) {
174
+ // 1. Try AST-based interface shape resolution first
175
+ if (sourceFilePath && fs.existsSync(sourceFilePath)) {
176
+ try {
177
+ const resolved = (0, interfaceShapeResolver_1.resolveInterfaceShape)(typeName, sourceFilePath, projectRoot);
178
+ if (resolved)
179
+ return resolved;
180
+ }
181
+ catch {
182
+ // Fall through to heuristics
183
+ }
184
+ }
185
+ // 2. Heuristic patterns based on type name
186
+ return buildHeuristicBody(typeName);
187
+ }
188
+ function buildHeuristicBody(typeName) {
189
+ const lower = typeName.toLowerCase();
190
+ if (lower.includes("user") || lower.includes("account") || lower.includes("profile")) {
191
+ return `{ id: ${(0, mockDataEngine_1.getSmartPropertyValue)("id", "number")}, name: ${(0, mockDataEngine_1.getSmartPropertyValue)("name", "string")}, email: ${(0, mockDataEngine_1.getSmartPropertyValue)("email", "string")}, isActive: ${(0, mockDataEngine_1.getSmartPropertyValue)("isActive", "boolean")}, createdAt: new Date('2025-06-15T10:30:00Z') } as any`;
192
+ }
193
+ if (lower.includes("product") || lower.includes("item")) {
194
+ return `{ id: ${(0, mockDataEngine_1.getSmartPropertyValue)("id", "number")}, name: ${(0, mockDataEngine_1.getSmartPropertyValue)("title", "string")}, price: ${(0, mockDataEngine_1.getSmartPropertyValue)("price", "number")}, inStock: true } as any`;
195
+ }
196
+ if (lower.includes("order") || lower.includes("invoice")) {
197
+ return `{ id: ${(0, mockDataEngine_1.getSmartPropertyValue)("id", "number")}, total: ${(0, mockDataEngine_1.getSmartPropertyValue)("total", "number")}, status: 'pending', createdAt: new Date('2025-06-15T10:30:00Z') } as any`;
198
+ }
199
+ if (lower.includes("config") || lower.includes("settings") || lower.includes("options")) {
200
+ return `{ enabled: true, timeout: 3000, retries: 3 } as any`;
201
+ }
202
+ if (lower.includes("request") || lower.includes("payload")) {
203
+ return `{ body: {}, headers: { 'Content-Type': 'application/json' }, method: 'GET' } as any`;
204
+ }
205
+ if (lower.includes("response")) {
206
+ return `{ status: 200, data: {}, message: 'OK' } as any`;
207
+ }
208
+ if (lower.includes("event") || lower.includes("message")) {
209
+ return `{ type: 'test-event', payload: {}, timestamp: new Date('2025-06-15T10:30:00Z') } as any`;
210
+ }
211
+ if (lower.includes("error") || lower.includes("exception")) {
212
+ return `{ code: 'ERR_TEST', message: 'Test error occurred' } as any`;
213
+ }
214
+ if (lower.includes("token") || lower.includes("auth") || lower.includes("session")) {
215
+ return `{ token: 'mock-token-abc123', userId: 1, expiresAt: new Date('2030-01-01') } as any`;
216
+ }
217
+ if (lower.includes("tenant") || lower.includes("org")) {
218
+ return `{ id: 'tenant-001', name: 'Test Organisation', isActive: true } as any`;
219
+ }
220
+ // Generic fallback
221
+ return `{ id: 1, name: 'Test ${typeName}' } as any`;
222
+ }
223
+ //# sourceMappingURL=sharedMockRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedMockRegistry.js","sourceRoot":"","sources":["../src/sharedMockRegistry.ts"],"names":[],"mappings":"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"}
package/dist/watcher.d.ts CHANGED
@@ -15,4 +15,4 @@ export declare function startWatcher(watchFolder?: string): void;
15
15
  * Process a single TypeScript file through the full pipeline:
16
16
  * analyze → scenarios → mock file → test file
17
17
  */
18
- export declare function processFile(filePath: string, projectRoot: string, config: TestGenConfig): Promise<void>;
18
+ export declare function processFile(filePath: string, projectRoot: string, config: TestGenConfig, dryRun?: boolean): Promise<void>;
package/dist/watcher.js CHANGED
@@ -45,6 +45,7 @@ const configManager_1 = require("./configManager");
45
45
  const utils_1 = require("./utils");
46
46
  const workerPool_1 = require("./workerPool");
47
47
  const astCache_1 = require("./astCache");
48
+ const ignoreManager_1 = require("./ignoreManager");
48
49
  /**
49
50
  * Start the file watcher.
50
51
  *
@@ -70,10 +71,13 @@ function startWatcher(watchFolder) {
70
71
  (0, utils_1.log)(`Project root: ${projectRoot}`, "info");
71
72
  (0, utils_1.log)(`Watching directory: ${srcAbsolute}`, "info");
72
73
  (0, utils_1.log)("", "info");
74
+ // ── Load .testgenignore patterns ───────────────────────────────────────
75
+ let ignorePatterns = (0, ignoreManager_1.loadIgnorePatterns)(projectRoot);
76
+ let isIgnored = (0, ignoreManager_1.buildIgnorePredicate)(ignorePatterns, projectRoot);
73
77
  // ── Shared worker pool — used by startup scan AND event handler ───────
74
78
  const pool = new workerPool_1.WorkerPool();
75
79
  // ── Phase 2: scan existing files before entering the event loop ───────
76
- scanExistingFiles(srcAbsolute, projectRoot, config, pool).then(() => {
80
+ scanExistingFiles(srcAbsolute, projectRoot, config, pool, isIgnored).then(() => {
77
81
  (0, utils_1.log)("Watcher ready — waiting for file changes…\n", "success");
78
82
  });
79
83
  const debounceTimers = new Map();
@@ -95,16 +99,24 @@ function startWatcher(watchFolder) {
95
99
  });
96
100
  // ── Config hot-reload ─────────────────────────────────────────────────
97
101
  const configPath = path.join(projectRoot, "cotester", "cotester.config.json");
98
- const configWatcher = chokidar.watch(configPath, {
102
+ const ignorePath = path.join(projectRoot, ".testgenignore");
103
+ const configWatcher = chokidar.watch([configPath, ignorePath], {
99
104
  persistent: true,
100
105
  ignoreInitial: true,
101
106
  usePolling: true,
102
107
  interval: 500,
103
108
  });
104
- configWatcher.on("change", () => {
109
+ configWatcher.on("change", (changedPath) => {
105
110
  config = (0, configManager_1.loadConfig)(projectRoot);
106
111
  (0, astCache_1.clearMemoryCache)(); // config change may affect scenario rules
107
- (0, utils_1.log)("cotester.config.json changed config reloaded, AST cache cleared.", "info");
112
+ if (changedPath === ignorePath) {
113
+ ignorePatterns = (0, ignoreManager_1.loadIgnorePatterns)(projectRoot);
114
+ isIgnored = (0, ignoreManager_1.buildIgnorePredicate)(ignorePatterns, projectRoot);
115
+ (0, utils_1.log)(".testgenignore changed — ignore patterns reloaded.", "info");
116
+ }
117
+ else {
118
+ (0, utils_1.log)("cotester.config.json changed — config reloaded, AST cache cleared.", "info");
119
+ }
108
120
  });
109
121
  const handleFile = (filePath) => {
110
122
  // Extra safety: skip non-.ts files
@@ -114,6 +126,8 @@ function startWatcher(watchFolder) {
114
126
  return;
115
127
  if (filePath.endsWith(".d.ts"))
116
128
  return;
129
+ if (isIgnored(filePath))
130
+ return;
117
131
  // Clear existing timer for this file
118
132
  const existing = debounceTimers.get(filePath);
119
133
  if (existing)
@@ -158,9 +172,9 @@ function startWatcher(watchFolder) {
158
172
  * have a corresponding test file. Files are processed in parallel using the
159
173
  * shared WorkerPool (bounded by CPU count) for maximum throughput.
160
174
  */
161
- async function scanExistingFiles(dir, projectRoot, config, pool) {
175
+ async function scanExistingFiles(dir, projectRoot, config, pool, isIgnored = () => false) {
162
176
  (0, utils_1.log)("Scanning existing source files for missing tests…", "info");
163
- const files = collectSourceFiles(dir);
177
+ const files = collectSourceFiles(dir, isIgnored);
164
178
  // Use the absolute srcRoot so mirrorPath never misidentifies a parent
165
179
  // directory segment as the source root.
166
180
  const absSrcRoot = path.resolve(projectRoot, config.srcDir);
@@ -187,9 +201,10 @@ async function scanExistingFiles(dir, projectRoot, config, pool) {
187
201
  }
188
202
  /**
189
203
  * Recursively collect all source .ts files under `dir`,
190
- * skipping test/spec/d.ts files and ignored directories.
204
+ * skipping test/spec/d.ts files, ignored directories, and any paths
205
+ * matched by the optional `isIgnored` predicate from .testgenignore.
191
206
  */
192
- function collectSourceFiles(dir) {
207
+ function collectSourceFiles(dir, isIgnored = () => false) {
193
208
  const IGNORED_DIRS = new Set(["node_modules", "cotester", "dist", ".git"]);
194
209
  const results = [];
195
210
  if (!fs.existsSync(dir))
@@ -199,13 +214,16 @@ function collectSourceFiles(dir) {
199
214
  if (entry.isDirectory()) {
200
215
  if (IGNORED_DIRS.has(entry.name))
201
216
  continue;
202
- results.push(...collectSourceFiles(fullPath));
217
+ if (isIgnored(fullPath))
218
+ continue;
219
+ results.push(...collectSourceFiles(fullPath, isIgnored));
203
220
  }
204
221
  else if (entry.isFile() &&
205
222
  entry.name.endsWith(".ts") &&
206
223
  !entry.name.endsWith(".test.ts") &&
207
224
  !entry.name.endsWith(".spec.ts") &&
208
- !entry.name.endsWith(".d.ts")) {
225
+ !entry.name.endsWith(".d.ts") &&
226
+ !isIgnored(fullPath)) {
209
227
  results.push(fullPath);
210
228
  }
211
229
  }
@@ -215,7 +233,7 @@ function collectSourceFiles(dir) {
215
233
  * Process a single TypeScript file through the full pipeline:
216
234
  * analyze → scenarios → mock file → test file
217
235
  */
218
- async function processFile(filePath, projectRoot, config) {
236
+ async function processFile(filePath, projectRoot, config, dryRun = false) {
219
237
  try {
220
238
  (0, utils_1.log)(`Analyzing: ${path.relative(projectRoot, filePath)}`, "info");
221
239
  // 1. Analyse the file (returns cached result if content is unchanged)
@@ -228,9 +246,9 @@ async function processFile(filePath, projectRoot, config) {
228
246
  // 2. Generate scenarios
229
247
  const scenarios = (0, scenarioEngine_1.generateScenarios)(functions, config, projectRoot);
230
248
  // 3. Generate the mock file (first!)
231
- const mockResult = await (0, mockGenerator_1.generateMockFile)(filePath, scenarios, projectRoot, config.srcDir, config.mockDir);
249
+ const mockResult = await (0, mockGenerator_1.generateMockFile)(filePath, scenarios, projectRoot, config.srcDir, config.mockDir, dryRun);
232
250
  // 4. Generate the test file (with mock import)
233
- await (0, generator_1.generateTestFile)(filePath, scenarios, projectRoot, config.srcDir, config.testDir, mockResult, config.scenarioRules.tableThreshold);
251
+ await (0, generator_1.generateTestFile)(filePath, scenarios, projectRoot, config.srcDir, config.testDir, mockResult, config.scenarioRules.tableThreshold, dryRun, config.framework, config.scenarioRules.snapshotForComplexTypes);
234
252
  }
235
253
  catch (err) {
236
254
  (0, utils_1.log)(` Error processing file: ${err.message}`, "error");
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gnapi/cotester",
3
- "version": "1.2.3",
3
+ "version": "1.2.5",
4
4
  "description": "Developer CLI tool that bootstraps testing environments and auto-generates unit test skeletons for TypeScript functions",
5
5
  "main": "dist/cli.js",
6
6
  "bin": {