@norrix/cli 0.0.32 → 0.0.34
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/README.md +63 -0
- package/dist/lib/commands.js +35 -7
- package/dist/lib/commands.js.map +1 -1
- package/dist/lib/config.js +38 -10
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/fingerprinting.d.ts +45 -0
- package/dist/lib/fingerprinting.js +352 -5
- package/dist/lib/fingerprinting.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,4 +22,49 @@ export declare function computeFingerprint(options?: {
|
|
|
22
22
|
/** Relative path to app within workspace */
|
|
23
23
|
workspaceAppPath?: string;
|
|
24
24
|
}): FingerprintResult;
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Use embedFingerprintInNativeResources instead.
|
|
27
|
+
* This function writes to src/assets which can cause divergence issues.
|
|
28
|
+
*/
|
|
25
29
|
export declare function writeRuntimeFingerprintFile(projectRoot: string, fingerprint: FingerprintResult, _platform?: string): string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Embed fingerprint hash into native platform resources (Info.plist for iOS, app.gradle for Android).
|
|
32
|
+
* This is the robust approach that ensures the fingerprint is baked into the binary at build time
|
|
33
|
+
* and cannot diverge from what's recorded in the database.
|
|
34
|
+
*
|
|
35
|
+
* @param projectRoot - The root directory of the NativeScript project
|
|
36
|
+
* @param fingerprint - The computed fingerprint result
|
|
37
|
+
* @param platform - Target platform ('ios' or 'android')
|
|
38
|
+
* @returns Object with paths to modified files, or undefined values if not found
|
|
39
|
+
*/
|
|
40
|
+
export declare function embedFingerprintInNativeResources(projectRoot: string, fingerprint: FingerprintResult, platform?: string): {
|
|
41
|
+
infoPlistPath?: string;
|
|
42
|
+
appGradlePath?: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Embed version and build number into native platform resources.
|
|
46
|
+
* This ensures the binary reflects the version specified at build time,
|
|
47
|
+
* while the fingerprint remains stable (version fields are normalized out).
|
|
48
|
+
*
|
|
49
|
+
* For iOS/visionOS: Updates CFBundleShortVersionString and CFBundleVersion in Info.plist
|
|
50
|
+
* For Android: Updates versionName and versionCode in app.gradle
|
|
51
|
+
*
|
|
52
|
+
* @param projectRoot - The root directory of the NativeScript project
|
|
53
|
+
* @param version - The marketing version (e.g., "1.2.3")
|
|
54
|
+
* @param buildNumber - The build number (e.g., "12345")
|
|
55
|
+
* @param platform - Target platform ('ios', 'visionos', or 'android')
|
|
56
|
+
* @returns Object with paths to modified files, or undefined values if not found
|
|
57
|
+
*/
|
|
58
|
+
export declare function embedVersionInNativeResources(projectRoot: string, version: string, buildNumber: string, platform?: string): {
|
|
59
|
+
infoPlistPath?: string;
|
|
60
|
+
appGradlePath?: string;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Read the embedded fingerprint hash from native resources.
|
|
64
|
+
* Useful for verifying what's currently embedded.
|
|
65
|
+
*
|
|
66
|
+
* @param projectRoot - The root directory of the NativeScript project
|
|
67
|
+
* @param platform - Target platform ('ios' or 'android' or 'visionos')
|
|
68
|
+
* @returns The embedded fingerprint hash, or undefined if not found
|
|
69
|
+
*/
|
|
70
|
+
export declare function readEmbeddedFingerprint(projectRoot: string, platform: 'ios' | 'android' | 'visionos'): string | undefined;
|
|
@@ -98,6 +98,53 @@ function readNativeScriptConfig(projectRoot) {
|
|
|
98
98
|
}
|
|
99
99
|
return undefined;
|
|
100
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Normalize file content by stripping embedded fingerprint entries and version fields.
|
|
103
|
+
* This ensures the hash is stable whether computed before or after embedding.
|
|
104
|
+
*
|
|
105
|
+
* For Info.plist:
|
|
106
|
+
* - removes <key>NorrixFingerprintHash</key><string>...</string>
|
|
107
|
+
* - removes <key>CFBundleShortVersionString</key><string>...</string>
|
|
108
|
+
* - removes <key>CFBundleVersion</key><string>...</string>
|
|
109
|
+
*
|
|
110
|
+
* For app.gradle:
|
|
111
|
+
* - removes buildConfigField "String", "norrixFingerprintHash", "..."
|
|
112
|
+
* - removes versionCode and versionName from defaultConfig
|
|
113
|
+
*/
|
|
114
|
+
function normalizeContentForHashing(relativePath, content) {
|
|
115
|
+
const filename = path.basename(relativePath);
|
|
116
|
+
// Normalize Info.plist files (iOS/visionOS)
|
|
117
|
+
if (filename === 'Info.plist') {
|
|
118
|
+
let text = content.toString('utf8');
|
|
119
|
+
// Remove the NorrixFingerprintHash key-value pair
|
|
120
|
+
// Uses line-based matching to preserve file structure
|
|
121
|
+
text = text.replace(/^[ \t]*<key>NorrixFingerprintHash<\/key>\s*\r?\n?[ \t]*<string>[^<]*<\/string>[ \t]*\r?\n?/gm, '');
|
|
122
|
+
// Remove CFBundleShortVersionString (marketing version like "1.2.3")
|
|
123
|
+
// Uses line-based matching to preserve file structure
|
|
124
|
+
text = text.replace(/^[ \t]*<key>CFBundleShortVersionString<\/key>\s*\r?\n?[ \t]*<string>[^<]*<\/string>[ \t]*\r?\n?/gm, '');
|
|
125
|
+
// Remove CFBundleVersion (build number like "12345")
|
|
126
|
+
// Uses line-based matching to preserve file structure
|
|
127
|
+
text = text.replace(/^[ \t]*<key>CFBundleVersion<\/key>\s*\r?\n?[ \t]*<string>[^<]*<\/string>[ \t]*\r?\n?/gm, '');
|
|
128
|
+
return Buffer.from(text, 'utf8');
|
|
129
|
+
}
|
|
130
|
+
// Normalize app.gradle files (Android)
|
|
131
|
+
if (filename === 'app.gradle') {
|
|
132
|
+
let text = content.toString('utf8');
|
|
133
|
+
// Remove the norrixFingerprintHash buildConfigField line
|
|
134
|
+
text = text.replace(/^[ \t]*buildConfigField\s+['"]String['"]\s*,\s*['"]norrixFingerprintHash['"]\s*,\s*['"]\\"[^"]*\\"['"]\s*\r?\n?/gm, '');
|
|
135
|
+
// Remove versionCode (build number like 12345)
|
|
136
|
+
// Handles both syntaxes: "versionCode 12345" and "versionCode = 12345"
|
|
137
|
+
// Uses line-based matching to preserve file structure
|
|
138
|
+
text = text.replace(/^[ \t]*versionCode\s*=?\s*\d+[ \t]*\r?\n?/gm, '');
|
|
139
|
+
// Remove versionName (marketing version like "1.2.3")
|
|
140
|
+
// Handles both syntaxes: "versionName \"1.2.3\"" and "versionName = \"1.2.3\""
|
|
141
|
+
// Uses line-based matching to preserve file structure
|
|
142
|
+
text = text.replace(/^[ \t]*versionName\s*=?\s*["'][^"']*["'][ \t]*\r?\n?/gm, '');
|
|
143
|
+
return Buffer.from(text, 'utf8');
|
|
144
|
+
}
|
|
145
|
+
// Return unchanged for all other files
|
|
146
|
+
return content;
|
|
147
|
+
}
|
|
101
148
|
function hashDirectoryRecursive(root) {
|
|
102
149
|
if (!fs.existsSync(root) || !fs.statSync(root).isDirectory()) {
|
|
103
150
|
return undefined;
|
|
@@ -131,10 +178,12 @@ function hashDirectoryRecursive(root) {
|
|
|
131
178
|
const hash = crypto.createHash('sha256');
|
|
132
179
|
for (const rel of files) {
|
|
133
180
|
const abs = path.join(root, rel);
|
|
134
|
-
const
|
|
181
|
+
const rawContent = fs.readFileSync(abs);
|
|
182
|
+
// Normalize content to strip embedded fingerprints before hashing
|
|
183
|
+
const normalizedContent = normalizeContentForHashing(rel, rawContent);
|
|
135
184
|
hash.update(rel, 'utf8');
|
|
136
185
|
hash.update('\0', 'utf8');
|
|
137
|
-
hash.update(
|
|
186
|
+
hash.update(normalizedContent);
|
|
138
187
|
hash.update('\0', 'utf8');
|
|
139
188
|
}
|
|
140
189
|
return hash.digest('hex');
|
|
@@ -206,10 +255,18 @@ export function computeFingerprint(options = {}) {
|
|
|
206
255
|
const projectRoot = options.projectRoot || process.cwd();
|
|
207
256
|
const nsConfig = readNativeScriptConfig(projectRoot);
|
|
208
257
|
let appResourcesHash;
|
|
258
|
+
// Try configured appResourcesPath first, then fall back to default App_Resources
|
|
209
259
|
if (nsConfig?.appResourcesPath) {
|
|
210
260
|
const appResourcesDir = path.join(projectRoot, nsConfig.appResourcesPath);
|
|
211
261
|
appResourcesHash = hashDirectoryRecursive(appResourcesDir);
|
|
212
262
|
}
|
|
263
|
+
else {
|
|
264
|
+
// Default fallback - check App_Resources in project root
|
|
265
|
+
const defaultAppResources = path.join(projectRoot, 'App_Resources');
|
|
266
|
+
if (fs.existsSync(defaultAppResources)) {
|
|
267
|
+
appResourcesHash = hashDirectoryRecursive(defaultAppResources);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
213
270
|
const nativeSourcesHash = hashNativeSourcesFromConfig(projectRoot, nsConfig);
|
|
214
271
|
const nativePlugins = collectNativePlugins(projectRoot);
|
|
215
272
|
const snapshot = {
|
|
@@ -234,6 +291,10 @@ export function computeFingerprint(options = {}) {
|
|
|
234
291
|
hash,
|
|
235
292
|
};
|
|
236
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* @deprecated Use embedFingerprintInNativeResources instead.
|
|
296
|
+
* This function writes to src/assets which can cause divergence issues.
|
|
297
|
+
*/
|
|
237
298
|
export function writeRuntimeFingerprintFile(projectRoot, fingerprint, _platform) {
|
|
238
299
|
const nsConfig = readNativeScriptConfig(projectRoot);
|
|
239
300
|
let appRoot;
|
|
@@ -262,6 +323,292 @@ export function writeRuntimeFingerprintFile(projectRoot, fingerprint, _platform)
|
|
|
262
323
|
});
|
|
263
324
|
return outPath;
|
|
264
325
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
326
|
+
/**
|
|
327
|
+
* Embed fingerprint hash into native platform resources (Info.plist for iOS, app.gradle for Android).
|
|
328
|
+
* This is the robust approach that ensures the fingerprint is baked into the binary at build time
|
|
329
|
+
* and cannot diverge from what's recorded in the database.
|
|
330
|
+
*
|
|
331
|
+
* @param projectRoot - The root directory of the NativeScript project
|
|
332
|
+
* @param fingerprint - The computed fingerprint result
|
|
333
|
+
* @param platform - Target platform ('ios' or 'android')
|
|
334
|
+
* @returns Object with paths to modified files, or undefined values if not found
|
|
335
|
+
*/
|
|
336
|
+
export function embedFingerprintInNativeResources(projectRoot, fingerprint, platform) {
|
|
337
|
+
const result = {};
|
|
338
|
+
const nsConfig = readNativeScriptConfig(projectRoot);
|
|
339
|
+
// Determine App_Resources path
|
|
340
|
+
let appResourcesPath = 'App_Resources';
|
|
341
|
+
if (nsConfig?.appResourcesPath) {
|
|
342
|
+
appResourcesPath = nsConfig.appResourcesPath;
|
|
343
|
+
}
|
|
344
|
+
const appResourcesDir = path.join(projectRoot, appResourcesPath);
|
|
345
|
+
if (!fs.existsSync(appResourcesDir)) {
|
|
346
|
+
return result;
|
|
347
|
+
}
|
|
348
|
+
// Write to iOS/visionOS Info.plist if targeting Apple platforms or all platforms
|
|
349
|
+
if (!platform || platform.toLowerCase() === 'ios' || platform.toLowerCase() === 'visionos') {
|
|
350
|
+
// Try platform-specific path first for visionOS, then fall back to iOS
|
|
351
|
+
const platformDir = platform?.toLowerCase() === 'visionos' ? 'visionOS' : 'iOS';
|
|
352
|
+
let infoPlistPath = path.join(appResourcesDir, platformDir, 'Info.plist');
|
|
353
|
+
// Fallback: if visionOS-specific doesn't exist, try iOS (shared resources)
|
|
354
|
+
if (!fs.existsSync(infoPlistPath) && platform?.toLowerCase() === 'visionos') {
|
|
355
|
+
infoPlistPath = path.join(appResourcesDir, 'iOS', 'Info.plist');
|
|
356
|
+
}
|
|
357
|
+
if (fs.existsSync(infoPlistPath)) {
|
|
358
|
+
try {
|
|
359
|
+
let plistContent = fs.readFileSync(infoPlistPath, 'utf8');
|
|
360
|
+
const fingerprintKey = 'NorrixFingerprintHash';
|
|
361
|
+
const fingerprintValue = fingerprint.hash;
|
|
362
|
+
// Check if key already exists
|
|
363
|
+
const keyRegex = new RegExp(`<key>${fingerprintKey}</key>\\s*<string>[^<]*</string>`, 's');
|
|
364
|
+
if (keyRegex.test(plistContent)) {
|
|
365
|
+
// Replace existing value
|
|
366
|
+
plistContent = plistContent.replace(keyRegex, `<key>${fingerprintKey}</key>\n\t\t<string>${fingerprintValue}</string>`);
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
// Insert before closing </dict> tag (the main dict)
|
|
370
|
+
// Find the last </dict> before </plist>
|
|
371
|
+
const insertPoint = plistContent.lastIndexOf('</dict>');
|
|
372
|
+
if (insertPoint !== -1) {
|
|
373
|
+
const before = plistContent.slice(0, insertPoint);
|
|
374
|
+
const after = plistContent.slice(insertPoint);
|
|
375
|
+
plistContent = before +
|
|
376
|
+
`<key>${fingerprintKey}</key>\n\t\t<string>${fingerprintValue}</string>\n\t` +
|
|
377
|
+
after;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
fs.writeFileSync(infoPlistPath, plistContent, 'utf8');
|
|
381
|
+
result.infoPlistPath = infoPlistPath;
|
|
382
|
+
}
|
|
383
|
+
catch (e) {
|
|
384
|
+
console.error('Failed to write fingerprint to Info.plist:', e);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
// Write to Android app.gradle if targeting Android or all platforms
|
|
389
|
+
if (!platform || platform.toLowerCase() === 'android') {
|
|
390
|
+
const appGradlePath = path.join(appResourcesDir, 'Android', 'app.gradle');
|
|
391
|
+
if (fs.existsSync(appGradlePath)) {
|
|
392
|
+
try {
|
|
393
|
+
let gradleContent = fs.readFileSync(appGradlePath, 'utf8');
|
|
394
|
+
const fingerprintField = 'norrixFingerprintHash';
|
|
395
|
+
const fingerprintValue = fingerprint.hash;
|
|
396
|
+
// Check if buildConfigField already exists for this key
|
|
397
|
+
const fieldRegex = new RegExp(`buildConfigField\\s+['"]String['"]\\s*,\\s*['"]${fingerprintField}['"]\\s*,\\s*['"][^'"]*['"]`, 'g');
|
|
398
|
+
if (fieldRegex.test(gradleContent)) {
|
|
399
|
+
// Replace existing value
|
|
400
|
+
gradleContent = gradleContent.replace(fieldRegex, `buildConfigField "String", "${fingerprintField}", "\\"${fingerprintValue}\\""`);
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
// Insert into defaultConfig block
|
|
404
|
+
const defaultConfigMatch = gradleContent.match(/defaultConfig\s*\{([^}]*)\}/s);
|
|
405
|
+
if (defaultConfigMatch) {
|
|
406
|
+
const defaultConfigContent = defaultConfigMatch[1];
|
|
407
|
+
const newDefaultConfig = defaultConfigContent.trimEnd() +
|
|
408
|
+
`\n buildConfigField "String", "${fingerprintField}", "\\"${fingerprintValue}\\""`;
|
|
409
|
+
gradleContent = gradleContent.replace(/defaultConfig\s*\{([^}]*)\}/s, `defaultConfig {${newDefaultConfig}\n }`);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
fs.writeFileSync(appGradlePath, gradleContent, 'utf8');
|
|
413
|
+
result.appGradlePath = appGradlePath;
|
|
414
|
+
}
|
|
415
|
+
catch (e) {
|
|
416
|
+
console.error('Failed to write fingerprint to app.gradle:', e);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return result;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Embed version and build number into native platform resources.
|
|
424
|
+
* This ensures the binary reflects the version specified at build time,
|
|
425
|
+
* while the fingerprint remains stable (version fields are normalized out).
|
|
426
|
+
*
|
|
427
|
+
* For iOS/visionOS: Updates CFBundleShortVersionString and CFBundleVersion in Info.plist
|
|
428
|
+
* For Android: Updates versionName and versionCode in app.gradle
|
|
429
|
+
*
|
|
430
|
+
* @param projectRoot - The root directory of the NativeScript project
|
|
431
|
+
* @param version - The marketing version (e.g., "1.2.3")
|
|
432
|
+
* @param buildNumber - The build number (e.g., "12345")
|
|
433
|
+
* @param platform - Target platform ('ios', 'visionos', or 'android')
|
|
434
|
+
* @returns Object with paths to modified files, or undefined values if not found
|
|
435
|
+
*/
|
|
436
|
+
export function embedVersionInNativeResources(projectRoot, version, buildNumber, platform) {
|
|
437
|
+
const result = {};
|
|
438
|
+
const nsConfig = readNativeScriptConfig(projectRoot);
|
|
439
|
+
// Determine App_Resources path
|
|
440
|
+
let appResourcesPath = 'App_Resources';
|
|
441
|
+
if (nsConfig?.appResourcesPath) {
|
|
442
|
+
appResourcesPath = nsConfig.appResourcesPath;
|
|
443
|
+
}
|
|
444
|
+
const appResourcesDir = path.join(projectRoot, appResourcesPath);
|
|
445
|
+
if (!fs.existsSync(appResourcesDir)) {
|
|
446
|
+
return result;
|
|
447
|
+
}
|
|
448
|
+
// Update iOS/visionOS Info.plist if targeting Apple platforms
|
|
449
|
+
if (!platform || platform.toLowerCase() === 'ios' || platform.toLowerCase() === 'visionos') {
|
|
450
|
+
const platformDir = platform?.toLowerCase() === 'visionos' ? 'visionOS' : 'iOS';
|
|
451
|
+
let infoPlistPath = path.join(appResourcesDir, platformDir, 'Info.plist');
|
|
452
|
+
// Fallback: if visionOS-specific doesn't exist, try iOS
|
|
453
|
+
if (!fs.existsSync(infoPlistPath) && platform?.toLowerCase() === 'visionos') {
|
|
454
|
+
infoPlistPath = path.join(appResourcesDir, 'iOS', 'Info.plist');
|
|
455
|
+
}
|
|
456
|
+
if (fs.existsSync(infoPlistPath)) {
|
|
457
|
+
try {
|
|
458
|
+
let plistContent = fs.readFileSync(infoPlistPath, 'utf8');
|
|
459
|
+
// Update CFBundleShortVersionString (marketing version)
|
|
460
|
+
const shortVersionRegex = /<key>CFBundleShortVersionString<\/key>\s*<string>[^<]*<\/string>/s;
|
|
461
|
+
if (shortVersionRegex.test(plistContent)) {
|
|
462
|
+
plistContent = plistContent.replace(shortVersionRegex, `<key>CFBundleShortVersionString</key>\n\t\t<string>${version}</string>`);
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
// Insert if not present
|
|
466
|
+
const insertPoint = plistContent.lastIndexOf('</dict>');
|
|
467
|
+
if (insertPoint !== -1) {
|
|
468
|
+
const before = plistContent.slice(0, insertPoint);
|
|
469
|
+
const after = plistContent.slice(insertPoint);
|
|
470
|
+
plistContent = before +
|
|
471
|
+
`<key>CFBundleShortVersionString</key>\n\t\t<string>${version}</string>\n\t` +
|
|
472
|
+
after;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
// Update CFBundleVersion (build number)
|
|
476
|
+
const bundleVersionRegex = /<key>CFBundleVersion<\/key>\s*<string>[^<]*<\/string>/s;
|
|
477
|
+
if (bundleVersionRegex.test(plistContent)) {
|
|
478
|
+
plistContent = plistContent.replace(bundleVersionRegex, `<key>CFBundleVersion</key>\n\t\t<string>${buildNumber}</string>`);
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
// Insert if not present
|
|
482
|
+
const insertPoint = plistContent.lastIndexOf('</dict>');
|
|
483
|
+
if (insertPoint !== -1) {
|
|
484
|
+
const before = plistContent.slice(0, insertPoint);
|
|
485
|
+
const after = plistContent.slice(insertPoint);
|
|
486
|
+
plistContent = before +
|
|
487
|
+
`<key>CFBundleVersion</key>\n\t\t<string>${buildNumber}</string>\n\t` +
|
|
488
|
+
after;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
fs.writeFileSync(infoPlistPath, plistContent, 'utf8');
|
|
492
|
+
result.infoPlistPath = infoPlistPath;
|
|
493
|
+
}
|
|
494
|
+
catch (e) {
|
|
495
|
+
console.error('Failed to write version to Info.plist:', e);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
// Update Android app.gradle if targeting Android
|
|
500
|
+
if (!platform || platform.toLowerCase() === 'android') {
|
|
501
|
+
const appGradlePath = path.join(appResourcesDir, 'Android', 'app.gradle');
|
|
502
|
+
if (fs.existsSync(appGradlePath)) {
|
|
503
|
+
try {
|
|
504
|
+
let gradleContent = fs.readFileSync(appGradlePath, 'utf8');
|
|
505
|
+
// Check if we're inside a defaultConfig block
|
|
506
|
+
const defaultConfigMatch = gradleContent.match(/defaultConfig\s*\{([^}]*)\}/s);
|
|
507
|
+
if (defaultConfigMatch) {
|
|
508
|
+
let defaultConfigContent = defaultConfigMatch[1];
|
|
509
|
+
// Update or add versionCode
|
|
510
|
+
// Handle both syntaxes: "versionCode 123" and "versionCode = 123"
|
|
511
|
+
const versionCodeEqualsRegex = /versionCode\s*=\s*\d+/;
|
|
512
|
+
const versionCodeSpaceRegex = /versionCode\s+\d+/;
|
|
513
|
+
if (versionCodeEqualsRegex.test(defaultConfigContent)) {
|
|
514
|
+
defaultConfigContent = defaultConfigContent.replace(versionCodeEqualsRegex, `versionCode = ${buildNumber}`);
|
|
515
|
+
}
|
|
516
|
+
else if (versionCodeSpaceRegex.test(defaultConfigContent)) {
|
|
517
|
+
defaultConfigContent = defaultConfigContent.replace(versionCodeSpaceRegex, `versionCode ${buildNumber}`);
|
|
518
|
+
}
|
|
519
|
+
else {
|
|
520
|
+
defaultConfigContent = defaultConfigContent.trimEnd() +
|
|
521
|
+
`\n versionCode ${buildNumber}`;
|
|
522
|
+
}
|
|
523
|
+
// Update or add versionName
|
|
524
|
+
// Handle both syntaxes: "versionName \"x.y.z\"" and "versionName = \"x.y.z\""
|
|
525
|
+
const versionNameEqualsRegex = /versionName\s*=\s*["'][^"']*["']/;
|
|
526
|
+
const versionNameSpaceRegex = /versionName\s+["'][^"']*["']/;
|
|
527
|
+
if (versionNameEqualsRegex.test(defaultConfigContent)) {
|
|
528
|
+
defaultConfigContent = defaultConfigContent.replace(versionNameEqualsRegex, `versionName = "${version}"`);
|
|
529
|
+
}
|
|
530
|
+
else if (versionNameSpaceRegex.test(defaultConfigContent)) {
|
|
531
|
+
defaultConfigContent = defaultConfigContent.replace(versionNameSpaceRegex, `versionName "${version}"`);
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
defaultConfigContent = defaultConfigContent.trimEnd() +
|
|
535
|
+
`\n versionName "${version}"`;
|
|
536
|
+
}
|
|
537
|
+
gradleContent = gradleContent.replace(/defaultConfig\s*\{([^}]*)\}/s, `defaultConfig {${defaultConfigContent}\n }`);
|
|
538
|
+
}
|
|
539
|
+
else {
|
|
540
|
+
// No defaultConfig block, create one inside android block
|
|
541
|
+
const androidMatch = gradleContent.match(/android\s*\{/);
|
|
542
|
+
if (androidMatch) {
|
|
543
|
+
const insertIndex = gradleContent.indexOf('{', gradleContent.indexOf('android')) + 1;
|
|
544
|
+
const before = gradleContent.slice(0, insertIndex);
|
|
545
|
+
const after = gradleContent.slice(insertIndex);
|
|
546
|
+
gradleContent = before +
|
|
547
|
+
`\n defaultConfig {\n versionCode ${buildNumber}\n versionName "${version}"\n }` +
|
|
548
|
+
after;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
fs.writeFileSync(appGradlePath, gradleContent, 'utf8');
|
|
552
|
+
result.appGradlePath = appGradlePath;
|
|
553
|
+
}
|
|
554
|
+
catch (e) {
|
|
555
|
+
console.error('Failed to write version to app.gradle:', e);
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
return result;
|
|
560
|
+
}
|
|
561
|
+
/**
|
|
562
|
+
* Read the embedded fingerprint hash from native resources.
|
|
563
|
+
* Useful for verifying what's currently embedded.
|
|
564
|
+
*
|
|
565
|
+
* @param projectRoot - The root directory of the NativeScript project
|
|
566
|
+
* @param platform - Target platform ('ios' or 'android' or 'visionos')
|
|
567
|
+
* @returns The embedded fingerprint hash, or undefined if not found
|
|
568
|
+
*/
|
|
569
|
+
export function readEmbeddedFingerprint(projectRoot, platform) {
|
|
570
|
+
const nsConfig = readNativeScriptConfig(projectRoot);
|
|
571
|
+
let appResourcesPath = 'App_Resources';
|
|
572
|
+
if (nsConfig?.appResourcesPath) {
|
|
573
|
+
appResourcesPath = nsConfig.appResourcesPath;
|
|
574
|
+
}
|
|
575
|
+
const appResourcesDir = path.join(projectRoot, appResourcesPath);
|
|
576
|
+
if (platform === 'ios' || platform === 'visionos') {
|
|
577
|
+
// Try platform-specific path first for visionOS
|
|
578
|
+
const platformDir = platform === 'visionos' ? 'visionOS' : 'iOS';
|
|
579
|
+
let infoPlistPath = path.join(appResourcesDir, platformDir, 'Info.plist');
|
|
580
|
+
// Fallback: if visionOS-specific doesn't exist, try iOS
|
|
581
|
+
if (!fs.existsSync(infoPlistPath) && platform === 'visionos') {
|
|
582
|
+
infoPlistPath = path.join(appResourcesDir, 'iOS', 'Info.plist');
|
|
583
|
+
}
|
|
584
|
+
if (fs.existsSync(infoPlistPath)) {
|
|
585
|
+
try {
|
|
586
|
+
const plistContent = fs.readFileSync(infoPlistPath, 'utf8');
|
|
587
|
+
const match = plistContent.match(/<key>NorrixFingerprintHash<\/key>\s*<string>([^<]*)<\/string>/s);
|
|
588
|
+
if (match && match[1]) {
|
|
589
|
+
return match[1];
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
catch {
|
|
593
|
+
// ignore read errors
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
else if (platform === 'android') {
|
|
598
|
+
const appGradlePath = path.join(appResourcesDir, 'Android', 'app.gradle');
|
|
599
|
+
if (fs.existsSync(appGradlePath)) {
|
|
600
|
+
try {
|
|
601
|
+
const gradleContent = fs.readFileSync(appGradlePath, 'utf8');
|
|
602
|
+
const match = gradleContent.match(/buildConfigField\s+['"]String['"]\s*,\s*['"]norrixFingerprintHash['"]\s*,\s*['"]\\"([^\\]*)\\"/);
|
|
603
|
+
if (match && match[1]) {
|
|
604
|
+
return match[1];
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
catch {
|
|
608
|
+
// ignore read errors
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
return undefined;
|
|
613
|
+
}
|
|
614
|
+
//# sourceMappingURL=fingerprinting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprinting.js","sourceRoot":"","sources":["../../src/lib/fingerprinting.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fingerprinting.js","sourceRoot":"","sources":["../../src/lib/fingerprinting.ts"],"names":[],"mappings":"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"}
|