@norrix/cli 0.0.24 → 0.0.26
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/CHANGELOG.md +42 -0
- package/dist/cli.js +118 -7
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/amplify-config.js +0 -1
- package/dist/lib/cli-settings.d.ts +15 -0
- package/dist/lib/cli-settings.js +50 -0
- package/dist/lib/cli-settings.js.map +1 -0
- package/dist/lib/commands.d.ts +104 -6
- package/dist/lib/commands.js +1339 -155
- package/dist/lib/commands.js.map +1 -1
- package/dist/lib/config-helpers.spec.js +8 -0
- package/dist/lib/config.d.ts +197 -0
- package/dist/lib/config.js +246 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/defaults.js +0 -1
- package/dist/lib/dev-defaults.js +0 -1
- package/dist/lib/fingerprinting.d.ts +8 -0
- package/dist/lib/fingerprinting.js +4 -2
- package/dist/lib/fingerprinting.js.map +1 -1
- package/dist/lib/norrix-cli.js +0 -1
- package/dist/lib/prod-defaults.js +0 -1
- package/dist/lib/workspace.d.ts +138 -0
- package/dist/lib/workspace.js +826 -0
- package/dist/lib/workspace.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Norrix Configuration File Support
|
|
3
|
+
*
|
|
4
|
+
* Provides strongly-typed configuration for NativeScript projects using Norrix.
|
|
5
|
+
* Configuration can be defined in `norrix.config.ts` or `norrix.config.js` at the project root.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { pathToFileURL } from 'url';
|
|
10
|
+
/**
|
|
11
|
+
* Helper function for defining Norrix configuration with full TypeScript support.
|
|
12
|
+
* Use this in your `norrix.config.ts` file for IntelliSense and type checking.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { defineConfig } from '@norrix/cli';
|
|
17
|
+
*
|
|
18
|
+
* export default defineConfig({
|
|
19
|
+
* ios: {
|
|
20
|
+
* teamId: 'ABC123XYZ0',
|
|
21
|
+
* distributionType: 'enterprise',
|
|
22
|
+
* },
|
|
23
|
+
* android: {
|
|
24
|
+
* keystorePath: './signing/release.keystore',
|
|
25
|
+
* keyAlias: 'my-app-key',
|
|
26
|
+
* },
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function defineConfig(config) {
|
|
31
|
+
return config;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Cached config to avoid re-reading from disk
|
|
35
|
+
*/
|
|
36
|
+
let cachedConfig = null;
|
|
37
|
+
let cachedConfigPath = null;
|
|
38
|
+
/**
|
|
39
|
+
* Recursively trim all string values in an object.
|
|
40
|
+
* This ensures config values with accidental whitespace are properly sanitized.
|
|
41
|
+
*/
|
|
42
|
+
function sanitizeConfigStrings(obj) {
|
|
43
|
+
if (obj === null || obj === undefined) {
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
if (typeof obj === 'string') {
|
|
47
|
+
return obj.trim();
|
|
48
|
+
}
|
|
49
|
+
if (Array.isArray(obj)) {
|
|
50
|
+
return obj.map((item) => sanitizeConfigStrings(item));
|
|
51
|
+
}
|
|
52
|
+
if (typeof obj === 'object') {
|
|
53
|
+
const result = {};
|
|
54
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
55
|
+
result[key] = sanitizeConfigStrings(value);
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
return obj;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Load Norrix configuration from the project root.
|
|
63
|
+
* Looks for `norrix.config.ts`, `norrix.config.js`, or `norrix.config.mjs`.
|
|
64
|
+
*
|
|
65
|
+
* @param projectRoot - The root directory of the NativeScript project
|
|
66
|
+
* @returns The loaded configuration, or an empty object if no config file exists
|
|
67
|
+
*/
|
|
68
|
+
export async function loadNorrixConfig(projectRoot) {
|
|
69
|
+
// Return cached config if we're in the same project
|
|
70
|
+
if (cachedConfig && cachedConfigPath === projectRoot) {
|
|
71
|
+
return cachedConfig;
|
|
72
|
+
}
|
|
73
|
+
const configNames = [
|
|
74
|
+
'norrix.config.ts',
|
|
75
|
+
'norrix.config.js',
|
|
76
|
+
'norrix.config.mjs',
|
|
77
|
+
'norrix.config.cjs',
|
|
78
|
+
];
|
|
79
|
+
for (const configName of configNames) {
|
|
80
|
+
const configPath = path.join(projectRoot, configName);
|
|
81
|
+
if (!fs.existsSync(configPath)) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
// For TypeScript files, we need to use dynamic import with tsx or ts-node
|
|
86
|
+
// For now, we'll handle .js/.mjs files directly and .ts files need compilation
|
|
87
|
+
if (configName.endsWith('.ts')) {
|
|
88
|
+
// Try to load as ESM with tsx loader (if available)
|
|
89
|
+
// Fall back to reading and parsing if tsx is not available
|
|
90
|
+
const config = await loadTypeScriptConfig(configPath);
|
|
91
|
+
if (config) {
|
|
92
|
+
const sanitized = sanitizeConfigStrings(config);
|
|
93
|
+
cachedConfig = sanitized;
|
|
94
|
+
cachedConfigPath = projectRoot;
|
|
95
|
+
return sanitized;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
// Load JS/MJS files directly
|
|
100
|
+
const fileUrl = pathToFileURL(configPath).href;
|
|
101
|
+
const module = await import(fileUrl);
|
|
102
|
+
const config = module.default || module;
|
|
103
|
+
const sanitized = sanitizeConfigStrings(config);
|
|
104
|
+
cachedConfig = sanitized;
|
|
105
|
+
cachedConfigPath = projectRoot;
|
|
106
|
+
return sanitized;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
// Log but don't fail - config file is optional
|
|
111
|
+
console.warn(`Warning: Failed to load ${configName}: ${error.message}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// No config file found - return empty config
|
|
115
|
+
cachedConfig = {};
|
|
116
|
+
cachedConfigPath = projectRoot;
|
|
117
|
+
return {};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Attempt to load a TypeScript config file.
|
|
121
|
+
* Since Node.js can't natively import .ts files, we parse the file manually.
|
|
122
|
+
* This handles simple config objects with literal values.
|
|
123
|
+
*/
|
|
124
|
+
async function loadTypeScriptConfig(configPath) {
|
|
125
|
+
// Parse the TypeScript config file manually (Node.js can't import .ts directly)
|
|
126
|
+
try {
|
|
127
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
128
|
+
// Remove import statements and type annotations
|
|
129
|
+
let cleanContent = content
|
|
130
|
+
// Remove import statements
|
|
131
|
+
.replace(/^import\s+.*?;?\s*$/gm, '')
|
|
132
|
+
// Remove 'satisfies Type' expressions
|
|
133
|
+
.replace(/\s+satisfies\s+\w+/g, '')
|
|
134
|
+
// Remove 'as const' expressions
|
|
135
|
+
.replace(/\s+as\s+const/g, '');
|
|
136
|
+
// Extract the config object - look for export default { ... }
|
|
137
|
+
const configMatch = cleanContent.match(/export\s+default\s+(\{[\s\S]*?\})\s*;?\s*$/m);
|
|
138
|
+
if (configMatch) {
|
|
139
|
+
const configStr = configMatch[1];
|
|
140
|
+
// Try to parse as JSON5-ish (allows trailing commas, unquoted keys)
|
|
141
|
+
// This is a simple approach - for complex configs, tsx should be used
|
|
142
|
+
const config = new Function(`return ${configStr}`)();
|
|
143
|
+
return config;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// Manual parsing failed
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Clear the cached configuration.
|
|
153
|
+
* Useful when switching projects or after config file changes.
|
|
154
|
+
*/
|
|
155
|
+
export function clearConfigCache() {
|
|
156
|
+
cachedConfig = null;
|
|
157
|
+
cachedConfigPath = null;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Check if a Norrix config file exists in the project.
|
|
161
|
+
*/
|
|
162
|
+
export function hasNorrixConfig(projectRoot) {
|
|
163
|
+
const configNames = [
|
|
164
|
+
'norrix.config.ts',
|
|
165
|
+
'norrix.config.js',
|
|
166
|
+
'norrix.config.mjs',
|
|
167
|
+
'norrix.config.cjs',
|
|
168
|
+
];
|
|
169
|
+
return configNames.some((name) => fs.existsSync(path.join(projectRoot, name)));
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Generate a norrix.config.ts file content from collected options.
|
|
173
|
+
*/
|
|
174
|
+
export function generateConfigContent(options) {
|
|
175
|
+
const lines = [
|
|
176
|
+
`import type { NorrixConfig } from '@norrix/cli';`,
|
|
177
|
+
``,
|
|
178
|
+
`/**`,
|
|
179
|
+
` * Norrix CLI Configuration`,
|
|
180
|
+
` * Generated by norrix build command`,
|
|
181
|
+
` * `,
|
|
182
|
+
` * For more options, see: https://norrix.net/docs/configuration`,
|
|
183
|
+
` */`,
|
|
184
|
+
`export default {`,
|
|
185
|
+
];
|
|
186
|
+
// iOS config
|
|
187
|
+
const hasIosConfig = options.teamId || options.distributionType || options.p12Path || options.provisioningProfilePath || options.ascApiKeyId;
|
|
188
|
+
if (hasIosConfig) {
|
|
189
|
+
lines.push(` ios: {`);
|
|
190
|
+
if (options.teamId) {
|
|
191
|
+
lines.push(` teamId: '${options.teamId}',`);
|
|
192
|
+
}
|
|
193
|
+
if (options.distributionType) {
|
|
194
|
+
lines.push(` distributionType: '${options.distributionType}',`);
|
|
195
|
+
}
|
|
196
|
+
if (options.p12Path) {
|
|
197
|
+
lines.push(` p12Path: '${options.p12Path}',`);
|
|
198
|
+
}
|
|
199
|
+
if (options.provisioningProfilePath) {
|
|
200
|
+
lines.push(` provisioningProfilePath: '${options.provisioningProfilePath}',`);
|
|
201
|
+
}
|
|
202
|
+
// ASC API key for auto-provisioning
|
|
203
|
+
if (options.ascApiKeyId) {
|
|
204
|
+
lines.push(` // App Store Connect API Key (for auto-provisioning)`);
|
|
205
|
+
lines.push(` ascApiKeyId: '${options.ascApiKeyId}',`);
|
|
206
|
+
}
|
|
207
|
+
if (options.ascIssuerId) {
|
|
208
|
+
lines.push(` ascIssuerId: '${options.ascIssuerId}',`);
|
|
209
|
+
}
|
|
210
|
+
if (options.ascPrivateKeyPath) {
|
|
211
|
+
lines.push(` ascPrivateKeyPath: '${options.ascPrivateKeyPath}',`);
|
|
212
|
+
}
|
|
213
|
+
lines.push(` },`);
|
|
214
|
+
}
|
|
215
|
+
// Android config
|
|
216
|
+
const hasAndroidConfig = options.keystorePath || options.keyAlias;
|
|
217
|
+
if (hasAndroidConfig) {
|
|
218
|
+
lines.push(` android: {`);
|
|
219
|
+
if (options.keystorePath) {
|
|
220
|
+
lines.push(` keystorePath: '${options.keystorePath}',`);
|
|
221
|
+
}
|
|
222
|
+
if (options.keyAlias) {
|
|
223
|
+
lines.push(` keyAlias: '${options.keyAlias}',`);
|
|
224
|
+
}
|
|
225
|
+
lines.push(` },`);
|
|
226
|
+
}
|
|
227
|
+
// Default platform if provided
|
|
228
|
+
if (options.platform) {
|
|
229
|
+
lines.push(` defaultPlatform: '${options.platform}',`);
|
|
230
|
+
}
|
|
231
|
+
lines.push(`} satisfies NorrixConfig;`);
|
|
232
|
+
lines.push(``);
|
|
233
|
+
return lines.join('\n');
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Save a norrix.config.ts file to the project root.
|
|
237
|
+
*/
|
|
238
|
+
export function saveNorrixConfig(projectRoot, options) {
|
|
239
|
+
const configPath = path.join(projectRoot, 'norrix.config.ts');
|
|
240
|
+
const content = generateConfigContent(options);
|
|
241
|
+
fs.writeFileSync(configPath, content, 'utf8');
|
|
242
|
+
// Clear cache so next load picks up new file
|
|
243
|
+
clearConfigCache();
|
|
244
|
+
return configPath;
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/defaults.js
CHANGED
package/dist/lib/dev-defaults.js
CHANGED
|
@@ -5,6 +5,10 @@ export interface FingerprintSnapshot {
|
|
|
5
5
|
nativePlugins: Record<string, string>;
|
|
6
6
|
appResourcesHash?: string;
|
|
7
7
|
nativeSourcesHash?: string;
|
|
8
|
+
/** Workspace type if detected (nx or standalone) */
|
|
9
|
+
workspaceType?: 'nx' | 'standalone';
|
|
10
|
+
/** Relative path to app within workspace */
|
|
11
|
+
workspaceAppPath?: string;
|
|
8
12
|
}
|
|
9
13
|
export interface FingerprintResult extends FingerprintSnapshot {
|
|
10
14
|
hash: string;
|
|
@@ -13,5 +17,9 @@ export declare function computeFingerprint(options?: {
|
|
|
13
17
|
projectRoot?: string;
|
|
14
18
|
platform?: string;
|
|
15
19
|
appId?: string;
|
|
20
|
+
/** Workspace type (nx or standalone) */
|
|
21
|
+
workspaceType?: 'nx' | 'standalone';
|
|
22
|
+
/** Relative path to app within workspace */
|
|
23
|
+
workspaceAppPath?: string;
|
|
16
24
|
}): FingerprintResult;
|
|
17
25
|
export declare function writeRuntimeFingerprintFile(projectRoot: string, fingerprint: FingerprintResult, _platform?: string): string | undefined;
|
|
@@ -219,8 +219,11 @@ export function computeFingerprint(options = {}) {
|
|
|
219
219
|
nativePlugins,
|
|
220
220
|
appResourcesHash,
|
|
221
221
|
nativeSourcesHash,
|
|
222
|
+
workspaceType: options.workspaceType,
|
|
223
|
+
workspaceAppPath: options.workspaceAppPath,
|
|
222
224
|
};
|
|
223
|
-
// Hash only the stable native-layer inputs, not metadata like createdAt.
|
|
225
|
+
// Hash only the stable native-layer inputs, not metadata like createdAt or workspace info.
|
|
226
|
+
// Workspace info is metadata and shouldn't affect the native fingerprint.
|
|
224
227
|
const hash = hashObjectStable({
|
|
225
228
|
nativePlugins,
|
|
226
229
|
appResourcesHash: appResourcesHash ?? null,
|
|
@@ -262,4 +265,3 @@ export function writeRuntimeFingerprintFile(projectRoot, fingerprint, _platform)
|
|
|
262
265
|
// If needed in the future, we can add helpers to read the
|
|
263
266
|
// runtime fingerprint file from the app source tree, but for
|
|
264
267
|
// now only the build-time writer is required.
|
|
265
|
-
//# sourceMappingURL=fingerprinting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprinting.js","sourceRoot":"","sources":["../../src/lib/fingerprinting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,MAAsB,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"fingerprinting.js","sourceRoot":"","sources":["../../src/lib/fingerprinting.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/norrix-cli.js
CHANGED
|
@@ -0,0 +1,138 @@
|
|
|
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
|
+
export interface WorkspaceContext {
|
|
8
|
+
/** Type of workspace detected */
|
|
9
|
+
type: 'nx' | 'standalone';
|
|
10
|
+
/** Absolute path to the workspace/monorepo root */
|
|
11
|
+
workspaceRoot: string;
|
|
12
|
+
/** Absolute path to the NativeScript app */
|
|
13
|
+
appRoot: string;
|
|
14
|
+
/** Relative path from workspace root to app (e.g., "apps/safety/nativescript-safety") */
|
|
15
|
+
relativeAppPath: string;
|
|
16
|
+
/** Nx project name (from project.json) */
|
|
17
|
+
projectName?: string;
|
|
18
|
+
/** Path mappings from tsconfig.base.json */
|
|
19
|
+
pathMappings?: Record<string, string[]>;
|
|
20
|
+
}
|
|
21
|
+
export interface NxProjectGraph {
|
|
22
|
+
graph: {
|
|
23
|
+
nodes: Record<string, NxProjectNode>;
|
|
24
|
+
dependencies: Record<string, NxDependency[]>;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface NxProjectNode {
|
|
28
|
+
name: string;
|
|
29
|
+
type: 'app' | 'lib' | 'e2e';
|
|
30
|
+
data: {
|
|
31
|
+
root: string;
|
|
32
|
+
sourceRoot?: string;
|
|
33
|
+
projectType?: string;
|
|
34
|
+
targets?: Record<string, unknown>;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface NxDependency {
|
|
38
|
+
source: string;
|
|
39
|
+
target: string;
|
|
40
|
+
type: 'static' | 'implicit' | 'dynamic';
|
|
41
|
+
}
|
|
42
|
+
export interface NxProjectInfo {
|
|
43
|
+
name: string;
|
|
44
|
+
root: string;
|
|
45
|
+
sourceRoot?: string;
|
|
46
|
+
projectType?: string;
|
|
47
|
+
targets?: Record<string, unknown>;
|
|
48
|
+
implicitDependencies?: string[];
|
|
49
|
+
tags?: string[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Available Nx build configurations for a project
|
|
53
|
+
*/
|
|
54
|
+
export interface NxBuildConfigurations {
|
|
55
|
+
/** List of configuration names (e.g., ['prod', 'stg', 'dev']) */
|
|
56
|
+
configurations: string[];
|
|
57
|
+
/** The default configuration if specified in project.json */
|
|
58
|
+
defaultConfiguration?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface WorkspaceDependencies {
|
|
61
|
+
/** Relative paths to lib directories that the app depends on */
|
|
62
|
+
libPaths: string[];
|
|
63
|
+
/** Root config files to include */
|
|
64
|
+
rootConfigs: string[];
|
|
65
|
+
/** Tool directories to include */
|
|
66
|
+
toolPaths: string[];
|
|
67
|
+
/** Asset paths referenced by the app */
|
|
68
|
+
assetPaths: string[];
|
|
69
|
+
/** Local file dependencies from package.json (file: protocol paths) */
|
|
70
|
+
localFileDeps: string[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Detect the workspace context from the current working directory.
|
|
74
|
+
* Walks up the directory tree looking for nx.json to identify Nx workspaces.
|
|
75
|
+
*/
|
|
76
|
+
export declare function detectWorkspaceContext(appRoot?: string): WorkspaceContext;
|
|
77
|
+
/**
|
|
78
|
+
* Detect available Nx build configurations from project.json.
|
|
79
|
+
* Reads the 'build' target's configurations to find options like 'prod', 'stg', 'dev'.
|
|
80
|
+
*/
|
|
81
|
+
export declare function detectNxBuildConfigurations(appRoot: string): NxBuildConfigurations | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Query Nx for the project dependency graph.
|
|
84
|
+
* Returns the list of lib paths that the specified project depends on.
|
|
85
|
+
* Also supplements with webpack alias detection for SCSS and other non-TS dependencies.
|
|
86
|
+
*/
|
|
87
|
+
export declare function getNxProjectDependencies(projectName: string, workspaceRoot: string, verbose?: boolean, appRoot?: string): WorkspaceDependencies | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Get project info using nx show project command
|
|
90
|
+
*/
|
|
91
|
+
export declare function getNxProjectInfo(projectName: string, workspaceRoot: string, verbose?: boolean): NxProjectInfo | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Fallback: Parse tsconfig.base.json paths and scan source files
|
|
94
|
+
* to determine which libs are actually used.
|
|
95
|
+
*/
|
|
96
|
+
export declare function getWorkspaceDependenciesFallback(workspaceCtx: WorkspaceContext, verbose?: boolean): WorkspaceDependencies;
|
|
97
|
+
/**
|
|
98
|
+
* Create the manifest file content for CI
|
|
99
|
+
*/
|
|
100
|
+
export interface WorkspaceManifest {
|
|
101
|
+
version: string;
|
|
102
|
+
createdAt: string;
|
|
103
|
+
workspaceType: 'nx' | 'standalone';
|
|
104
|
+
appPath: string;
|
|
105
|
+
projectName?: string;
|
|
106
|
+
dependencies?: WorkspaceDependencies;
|
|
107
|
+
}
|
|
108
|
+
export declare function createWorkspaceManifest(workspaceCtx: WorkspaceContext, deps?: WorkspaceDependencies): WorkspaceManifest;
|
|
109
|
+
/**
|
|
110
|
+
* Log workspace context information
|
|
111
|
+
*/
|
|
112
|
+
export declare function logWorkspaceContext(ctx: WorkspaceContext, verbose?: boolean): void;
|
|
113
|
+
/**
|
|
114
|
+
* Represents a discovered NativeScript app in the workspace
|
|
115
|
+
*/
|
|
116
|
+
export interface DiscoveredApp {
|
|
117
|
+
/** Nx project name (from project.json) */
|
|
118
|
+
name: string;
|
|
119
|
+
/** Relative path from workspace root */
|
|
120
|
+
path: string;
|
|
121
|
+
/** Absolute path to the app */
|
|
122
|
+
absolutePath: string;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check if the current directory is at the root of an Nx workspace
|
|
126
|
+
* (has nx.json but no nativescript.config.ts)
|
|
127
|
+
*/
|
|
128
|
+
export declare function isAtWorkspaceRoot(): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Discover all NativeScript apps within an Nx workspace.
|
|
131
|
+
* Looks for directories containing nativescript.config.ts files.
|
|
132
|
+
*/
|
|
133
|
+
export declare function discoverNativeScriptApps(workspaceRoot?: string): DiscoveredApp[];
|
|
134
|
+
/**
|
|
135
|
+
* Get workspace context for a specific app by project name or path.
|
|
136
|
+
* Used when user specifies --project from workspace root.
|
|
137
|
+
*/
|
|
138
|
+
export declare function getWorkspaceContextForApp(projectNameOrPath: string, workspaceRoot?: string): WorkspaceContext | undefined;
|