@norrix/cli 0.0.24 → 0.0.25

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,472 @@
1
+ /**
2
+ * Nx Workspace Detection and Integration
3
+ *
4
+ * Provides utilities for detecting Nx workspaces, querying project dependencies,
5
+ * and managing workspace-aware builds for monorepo setups.
6
+ */
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import { execSync } from 'child_process';
10
+ /**
11
+ * Detect the workspace context from the current working directory.
12
+ * Walks up the directory tree looking for nx.json to identify Nx workspaces.
13
+ */
14
+ export function detectWorkspaceContext(appRoot) {
15
+ const currentAppRoot = appRoot || process.cwd();
16
+ // Walk up the directory tree looking for workspace markers
17
+ let dir = currentAppRoot;
18
+ while (dir !== path.dirname(dir)) {
19
+ const nxJsonPath = path.join(dir, 'nx.json');
20
+ if (fs.existsSync(nxJsonPath)) {
21
+ const relativeAppPath = path.relative(dir, currentAppRoot);
22
+ // Only treat as Nx workspace if app is nested (not at root)
23
+ if (relativeAppPath && relativeAppPath !== '.') {
24
+ const projectName = detectProjectName(currentAppRoot);
25
+ const pathMappings = loadPathMappings(dir);
26
+ return {
27
+ type: 'nx',
28
+ workspaceRoot: dir,
29
+ appRoot: currentAppRoot,
30
+ relativeAppPath,
31
+ projectName,
32
+ pathMappings,
33
+ };
34
+ }
35
+ }
36
+ dir = path.dirname(dir);
37
+ }
38
+ // Standalone project (no Nx workspace found or app is at workspace root)
39
+ return {
40
+ type: 'standalone',
41
+ workspaceRoot: currentAppRoot,
42
+ appRoot: currentAppRoot,
43
+ relativeAppPath: '.',
44
+ };
45
+ }
46
+ /**
47
+ * Detect the Nx project name from project.json
48
+ */
49
+ function detectProjectName(appRoot) {
50
+ const projectJsonPath = path.join(appRoot, 'project.json');
51
+ if (fs.existsSync(projectJsonPath)) {
52
+ try {
53
+ const projectJson = JSON.parse(fs.readFileSync(projectJsonPath, 'utf8'));
54
+ return projectJson.name;
55
+ }
56
+ catch {
57
+ // Ignore parse errors
58
+ }
59
+ }
60
+ return undefined;
61
+ }
62
+ /**
63
+ * Load TypeScript path mappings from tsconfig.base.json
64
+ */
65
+ function loadPathMappings(workspaceRoot) {
66
+ const tsconfigPath = path.join(workspaceRoot, 'tsconfig.base.json');
67
+ if (!fs.existsSync(tsconfigPath)) {
68
+ return undefined;
69
+ }
70
+ try {
71
+ const content = fs.readFileSync(tsconfigPath, 'utf8');
72
+ // Remove comments for JSON parsing
73
+ const jsonContent = content.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g, '');
74
+ const tsconfig = JSON.parse(jsonContent);
75
+ return tsconfig.compilerOptions?.paths;
76
+ }
77
+ catch {
78
+ return undefined;
79
+ }
80
+ }
81
+ /**
82
+ * Query Nx for the project dependency graph.
83
+ * Returns the list of lib paths that the specified project depends on.
84
+ */
85
+ export function getNxProjectDependencies(projectName, workspaceRoot, verbose = false) {
86
+ try {
87
+ // Check if nx is available
88
+ execSync('npx nx --version', {
89
+ cwd: workspaceRoot,
90
+ encoding: 'utf8',
91
+ stdio: 'pipe',
92
+ });
93
+ // Get the project graph as JSON
94
+ const graphOutput = execSync('npx nx graph --file=stdout', {
95
+ cwd: workspaceRoot,
96
+ encoding: 'utf8',
97
+ stdio: ['pipe', 'pipe', 'pipe'],
98
+ maxBuffer: 50 * 1024 * 1024, // 50MB buffer for large workspaces
99
+ });
100
+ const graph = JSON.parse(graphOutput);
101
+ // Extract all dependencies for the project (recursive)
102
+ const allDeps = collectAllDependencies(projectName, graph);
103
+ if (verbose) {
104
+ console.log(`[workspace] Found ${allDeps.size} dependencies for ${projectName}`);
105
+ }
106
+ // Convert to paths
107
+ const libPaths = [];
108
+ for (const depName of allDeps) {
109
+ const node = graph.graph.nodes[depName];
110
+ if (node && node.data.root) {
111
+ libPaths.push(node.data.root);
112
+ }
113
+ }
114
+ return {
115
+ libPaths,
116
+ rootConfigs: [
117
+ 'nx.json',
118
+ 'tsconfig.base.json',
119
+ 'package.json',
120
+ 'package-lock.json',
121
+ '.npmrc',
122
+ ],
123
+ toolPaths: ['tools/'],
124
+ assetPaths: ['libs/assets/'],
125
+ };
126
+ }
127
+ catch (error) {
128
+ if (verbose) {
129
+ console.log(`[workspace] Failed to query Nx graph: ${error?.message}`);
130
+ }
131
+ return undefined;
132
+ }
133
+ }
134
+ /**
135
+ * Recursively collect all dependencies for a project
136
+ */
137
+ function collectAllDependencies(projectName, graph, visited = new Set()) {
138
+ if (visited.has(projectName)) {
139
+ return visited;
140
+ }
141
+ const deps = graph.graph.dependencies[projectName] || [];
142
+ for (const dep of deps) {
143
+ if (!visited.has(dep.target) && dep.target !== projectName) {
144
+ visited.add(dep.target);
145
+ collectAllDependencies(dep.target, graph, visited);
146
+ }
147
+ }
148
+ return visited;
149
+ }
150
+ /**
151
+ * Get project info using nx show project command
152
+ */
153
+ export function getNxProjectInfo(projectName, workspaceRoot, verbose = false) {
154
+ try {
155
+ const output = execSync(`npx nx show project ${projectName} --json`, {
156
+ cwd: workspaceRoot,
157
+ encoding: 'utf8',
158
+ stdio: ['pipe', 'pipe', 'pipe'],
159
+ });
160
+ return JSON.parse(output);
161
+ }
162
+ catch (error) {
163
+ if (verbose) {
164
+ console.log(`[workspace] Failed to get project info: ${error?.message}`);
165
+ }
166
+ return undefined;
167
+ }
168
+ }
169
+ /**
170
+ * Fallback: Parse tsconfig.base.json paths and scan source files
171
+ * to determine which libs are actually used.
172
+ */
173
+ export function getWorkspaceDependenciesFallback(workspaceCtx, verbose = false) {
174
+ const libPaths = new Set();
175
+ // 1. Parse path mappings and find which ones are used
176
+ if (workspaceCtx.pathMappings) {
177
+ const usedAliases = scanForUsedPathAliases(workspaceCtx.appRoot, Object.keys(workspaceCtx.pathMappings), verbose);
178
+ for (const alias of usedAliases) {
179
+ const paths = workspaceCtx.pathMappings[alias];
180
+ if (paths && paths.length > 0) {
181
+ // Convert path like "libs/xplat/core/src/index.ts" to "libs/xplat/core"
182
+ const libPath = extractLibPath(paths[0]);
183
+ if (libPath) {
184
+ libPaths.add(libPath);
185
+ }
186
+ }
187
+ }
188
+ }
189
+ // 2. Parse webpack.config.js for additional references
190
+ const webpackRefs = parseWebpackReferences(workspaceCtx.appRoot, workspaceCtx.workspaceRoot);
191
+ for (const ref of webpackRefs) {
192
+ libPaths.add(ref);
193
+ }
194
+ // 3. Parse nativescript.config.ts for hook references
195
+ const hookRefs = parseNativeScriptHooks(workspaceCtx.appRoot, workspaceCtx.workspaceRoot);
196
+ for (const ref of hookRefs) {
197
+ libPaths.add(ref);
198
+ }
199
+ if (verbose) {
200
+ console.log(`[workspace] Fallback found ${libPaths.size} lib dependencies`);
201
+ }
202
+ return {
203
+ libPaths: Array.from(libPaths),
204
+ rootConfigs: [
205
+ 'nx.json',
206
+ 'tsconfig.base.json',
207
+ 'package.json',
208
+ 'package-lock.json',
209
+ '.npmrc',
210
+ ],
211
+ toolPaths: ['tools/'],
212
+ assetPaths: ['libs/assets/'],
213
+ };
214
+ }
215
+ /**
216
+ * Scan source files for path alias imports
217
+ */
218
+ function scanForUsedPathAliases(appRoot, aliases, verbose = false) {
219
+ const usedAliases = new Set();
220
+ // Build regex to match import statements with these aliases
221
+ const aliasPatterns = aliases.map((a) => a.replace(/\*/g, '').replace(/\//g, '\\/'));
222
+ const walk = (dir) => {
223
+ try {
224
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
225
+ for (const entry of entries) {
226
+ if (entry.name === 'node_modules' || entry.name.startsWith('.')) {
227
+ continue;
228
+ }
229
+ const fullPath = path.join(dir, entry.name);
230
+ if (entry.isDirectory()) {
231
+ walk(fullPath);
232
+ }
233
+ else if (entry.isFile() && /\.(ts|js|tsx|jsx|scss|css)$/.test(entry.name)) {
234
+ try {
235
+ const content = fs.readFileSync(fullPath, 'utf8');
236
+ for (const alias of aliases) {
237
+ const baseAlias = alias.replace(/\/\*$/, '');
238
+ // Match imports like: from '@ups/xplat/core' or import('@ups/xplat/features')
239
+ const importRegex = new RegExp(`['"\`]${baseAlias.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}[/'"\`]`, 'g');
240
+ if (importRegex.test(content)) {
241
+ usedAliases.add(alias);
242
+ }
243
+ }
244
+ }
245
+ catch {
246
+ // Ignore file read errors
247
+ }
248
+ }
249
+ }
250
+ }
251
+ catch {
252
+ // Ignore directory read errors
253
+ }
254
+ };
255
+ walk(appRoot);
256
+ if (verbose) {
257
+ console.log(`[workspace] Found ${usedAliases.size} used path aliases`);
258
+ }
259
+ return usedAliases;
260
+ }
261
+ /**
262
+ * Extract lib directory path from tsconfig path mapping
263
+ */
264
+ function extractLibPath(mappingPath) {
265
+ // e.g., "libs/xplat/core/src/index.ts" -> "libs/xplat/core"
266
+ // e.g., "libs/xplat/core/src/lib/*" -> "libs/xplat/core"
267
+ const match = mappingPath.match(/^(libs\/[^/]+(?:\/[^/]+)*?)\/src/);
268
+ if (match) {
269
+ return match[1];
270
+ }
271
+ // Try simpler pattern
272
+ const simpleMatch = mappingPath.match(/^(libs\/[^/]+(?:\/[^/]+)*)/);
273
+ if (simpleMatch) {
274
+ return simpleMatch[1];
275
+ }
276
+ return undefined;
277
+ }
278
+ /**
279
+ * Parse webpack.config.js for references to workspace paths
280
+ */
281
+ function parseWebpackReferences(appRoot, workspaceRoot) {
282
+ const refs = [];
283
+ const webpackPath = path.join(appRoot, 'webpack.config.js');
284
+ if (!fs.existsSync(webpackPath)) {
285
+ return refs;
286
+ }
287
+ try {
288
+ const content = fs.readFileSync(webpackPath, 'utf8');
289
+ // Look for patterns like '../../../libs/...' or 'tools/...'
290
+ const relativePathRegex = /['"`](\.\.\/)+([^'"`]+)['"`]/g;
291
+ let match;
292
+ while ((match = relativePathRegex.exec(content)) !== null) {
293
+ const relativePath = match[0].replace(/['"`]/g, '');
294
+ const absolutePath = path.resolve(appRoot, relativePath);
295
+ const relativeToWorkspace = path.relative(workspaceRoot, absolutePath);
296
+ if (relativeToWorkspace.startsWith('libs/') ||
297
+ relativeToWorkspace.startsWith('tools/')) {
298
+ // Extract the base directory
299
+ const parts = relativeToWorkspace.split('/');
300
+ if (parts.length >= 2) {
301
+ refs.push(parts.slice(0, 3).join('/'));
302
+ }
303
+ }
304
+ }
305
+ // Look for CopyRule patterns
306
+ const copyRuleRegex = /from:\s*['"`]([^'"`]+)['"`]/g;
307
+ while ((match = copyRuleRegex.exec(content)) !== null) {
308
+ const fromPath = match[1];
309
+ if (fromPath.includes('libs/')) {
310
+ const libMatch = fromPath.match(/(libs\/[^/]+(?:\/[^/]+)*)/);
311
+ if (libMatch) {
312
+ refs.push(libMatch[1]);
313
+ }
314
+ }
315
+ }
316
+ }
317
+ catch {
318
+ // Ignore parse errors
319
+ }
320
+ return [...new Set(refs)];
321
+ }
322
+ /**
323
+ * Parse nativescript.config.ts for hook script references
324
+ */
325
+ function parseNativeScriptHooks(appRoot, workspaceRoot) {
326
+ const refs = [];
327
+ const configPath = path.join(appRoot, 'nativescript.config.ts');
328
+ if (!fs.existsSync(configPath)) {
329
+ return refs;
330
+ }
331
+ try {
332
+ const content = fs.readFileSync(configPath, 'utf8');
333
+ // Look for hook script paths
334
+ const scriptRegex = /script:\s*['"`](\.\.\/)+([^'"`]+)['"`]/g;
335
+ let match;
336
+ while ((match = scriptRegex.exec(content)) !== null) {
337
+ const scriptPath = match[0].match(/['"`]([^'"`]+)['"`]/)?.[1];
338
+ if (scriptPath) {
339
+ const absolutePath = path.resolve(appRoot, scriptPath);
340
+ const relativeToWorkspace = path.relative(workspaceRoot, absolutePath);
341
+ if (!relativeToWorkspace.startsWith('..')) {
342
+ // Get the directory containing the script
343
+ const scriptDir = path.dirname(relativeToWorkspace);
344
+ refs.push(scriptDir);
345
+ }
346
+ }
347
+ }
348
+ }
349
+ catch {
350
+ // Ignore parse errors
351
+ }
352
+ return [...new Set(refs)];
353
+ }
354
+ export function createWorkspaceManifest(workspaceCtx, deps) {
355
+ return {
356
+ version: '1.0',
357
+ createdAt: new Date().toISOString(),
358
+ workspaceType: workspaceCtx.type,
359
+ appPath: workspaceCtx.relativeAppPath,
360
+ projectName: workspaceCtx.projectName,
361
+ dependencies: deps,
362
+ };
363
+ }
364
+ /**
365
+ * Log workspace context information
366
+ */
367
+ export function logWorkspaceContext(ctx, verbose = false) {
368
+ if (ctx.type === 'nx') {
369
+ console.log(`Detected Nx workspace at: ${ctx.workspaceRoot}`);
370
+ console.log(`App path: ${ctx.relativeAppPath}`);
371
+ if (ctx.projectName) {
372
+ console.log(`Project name: ${ctx.projectName}`);
373
+ }
374
+ if (verbose && ctx.pathMappings) {
375
+ console.log(`Path mappings: ${Object.keys(ctx.pathMappings).length} aliases configured`);
376
+ }
377
+ }
378
+ else {
379
+ console.log('Standalone NativeScript project detected');
380
+ }
381
+ }
382
+ /**
383
+ * Check if the current directory is at the root of an Nx workspace
384
+ * (has nx.json but no nativescript.config.ts)
385
+ */
386
+ export function isAtWorkspaceRoot() {
387
+ const cwd = process.cwd();
388
+ const hasNxJson = fs.existsSync(path.join(cwd, 'nx.json'));
389
+ const hasNsConfig = fs.existsSync(path.join(cwd, 'nativescript.config.ts')) ||
390
+ fs.existsSync(path.join(cwd, 'nativescript.config.js'));
391
+ return hasNxJson && !hasNsConfig;
392
+ }
393
+ /**
394
+ * Discover all NativeScript apps within an Nx workspace.
395
+ * Looks for directories containing nativescript.config.ts files.
396
+ */
397
+ export function discoverNativeScriptApps(workspaceRoot) {
398
+ const root = workspaceRoot || process.cwd();
399
+ const apps = [];
400
+ // Common locations to search for apps in Nx workspaces
401
+ const searchDirs = ['apps', 'packages'];
402
+ for (const searchDir of searchDirs) {
403
+ const searchPath = path.join(root, searchDir);
404
+ if (!fs.existsSync(searchPath))
405
+ continue;
406
+ // Recursively find nativescript.config.ts files
407
+ findNativeScriptApps(searchPath, root, apps);
408
+ }
409
+ return apps;
410
+ }
411
+ /**
412
+ * Recursively search for NativeScript apps
413
+ */
414
+ function findNativeScriptApps(dir, workspaceRoot, apps) {
415
+ let entries;
416
+ try {
417
+ entries = fs.readdirSync(dir, { withFileTypes: true });
418
+ }
419
+ catch {
420
+ return;
421
+ }
422
+ // Check if this directory is a NativeScript app
423
+ const hasNsConfig = entries.some((e) => e.isFile() && (e.name === 'nativescript.config.ts' || e.name === 'nativescript.config.js'));
424
+ if (hasNsConfig) {
425
+ const relativePath = path.relative(workspaceRoot, dir);
426
+ const projectName = detectProjectName(dir) || path.basename(dir);
427
+ apps.push({
428
+ name: projectName,
429
+ path: relativePath,
430
+ absolutePath: dir,
431
+ });
432
+ // Don't recurse further into this directory
433
+ return;
434
+ }
435
+ // Recurse into subdirectories
436
+ for (const entry of entries) {
437
+ if (!entry.isDirectory())
438
+ continue;
439
+ // Skip common non-app directories
440
+ if (['node_modules', '.git', 'dist', 'platforms', '.nx', '.cache'].includes(entry.name)) {
441
+ continue;
442
+ }
443
+ findNativeScriptApps(path.join(dir, entry.name), workspaceRoot, apps);
444
+ }
445
+ }
446
+ /**
447
+ * Get workspace context for a specific app by project name or path.
448
+ * Used when user specifies --project from workspace root.
449
+ */
450
+ export function getWorkspaceContextForApp(projectNameOrPath, workspaceRoot) {
451
+ const root = workspaceRoot || process.cwd();
452
+ const apps = discoverNativeScriptApps(root);
453
+ // Try to find by project name first
454
+ let app = apps.find((a) => a.name === projectNameOrPath);
455
+ // If not found, try by path
456
+ if (!app) {
457
+ app = apps.find((a) => a.path === projectNameOrPath || a.path.endsWith(projectNameOrPath));
458
+ }
459
+ if (!app) {
460
+ return undefined;
461
+ }
462
+ const pathMappings = loadPathMappings(root);
463
+ return {
464
+ type: 'nx',
465
+ workspaceRoot: root,
466
+ appRoot: app.absolutePath,
467
+ relativeAppPath: app.path,
468
+ projectName: app.name,
469
+ pathMappings,
470
+ };
471
+ }
472
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norrix/cli",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",