react-native-update-cli 2.8.5 → 2.9.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.
Files changed (106) hide show
  1. package/lib/api.d.ts +18 -0
  2. package/lib/app.d.ts +38 -0
  3. package/lib/app.js +5 -4
  4. package/lib/bundle-pack.d.ts +1 -0
  5. package/lib/bundle-pack.js +104 -0
  6. package/lib/bundle-runner.d.ts +20 -0
  7. package/lib/bundle-runner.js +404 -0
  8. package/lib/bundle.d.ts +6 -0
  9. package/lib/bundle.js +73 -471
  10. package/lib/diff.d.ts +13 -0
  11. package/lib/diff.js +144 -123
  12. package/lib/exports.d.ts +12 -0
  13. package/lib/index.d.ts +5 -0
  14. package/lib/index.js +5 -13
  15. package/lib/install.d.ts +4 -0
  16. package/lib/locales/en.d.ts +137 -0
  17. package/lib/locales/zh.d.ts +136 -0
  18. package/lib/module-manager.d.ts +20 -0
  19. package/lib/module-manager.js +3 -9
  20. package/lib/modules/app-module.d.ts +2 -0
  21. package/lib/modules/app-module.js +84 -44
  22. package/lib/modules/bundle-module.d.ts +2 -0
  23. package/lib/modules/bundle-module.js +7 -8
  24. package/lib/modules/index.d.ts +6 -0
  25. package/lib/modules/package-module.d.ts +2 -0
  26. package/lib/modules/user-module.d.ts +2 -0
  27. package/lib/modules/user-module.js +55 -44
  28. package/lib/modules/version-module.d.ts +2 -0
  29. package/lib/package.d.ts +58 -0
  30. package/lib/package.js +103 -139
  31. package/lib/provider.d.ts +26 -0
  32. package/lib/provider.js +115 -217
  33. package/lib/types.d.ts +120 -0
  34. package/lib/user.d.ts +8 -0
  35. package/lib/utils/add-gitignore.d.ts +1 -0
  36. package/lib/utils/app-info-parser/aab.d.ts +22 -0
  37. package/lib/utils/app-info-parser/aab.js +0 -4
  38. package/lib/utils/app-info-parser/apk.d.ts +14 -0
  39. package/lib/utils/app-info-parser/apk.js +6 -4
  40. package/lib/utils/app-info-parser/app.d.ts +4 -0
  41. package/lib/utils/app-info-parser/app.js +3 -0
  42. package/lib/utils/app-info-parser/index.d.ts +16 -0
  43. package/lib/utils/app-info-parser/index.js +2 -0
  44. package/lib/utils/app-info-parser/ipa.d.ts +14 -0
  45. package/lib/utils/app-info-parser/ipa.js +1 -1
  46. package/lib/utils/app-info-parser/resource-finder.d.ts +49 -0
  47. package/lib/utils/app-info-parser/utils.d.ts +31 -0
  48. package/lib/utils/app-info-parser/utils.js +1 -0
  49. package/lib/utils/app-info-parser/xml-parser/binary.d.ts +56 -0
  50. package/lib/utils/app-info-parser/xml-parser/manifest.d.ts +10 -0
  51. package/lib/utils/app-info-parser/zip.d.ts +18 -0
  52. package/lib/utils/app-info-parser/zip.js +7 -9
  53. package/lib/utils/check-lockfile.d.ts +1 -0
  54. package/lib/utils/check-plugin.d.ts +7 -0
  55. package/lib/utils/command-result.d.ts +3 -0
  56. package/lib/utils/command-result.js +35 -0
  57. package/lib/utils/constants.d.ts +9 -0
  58. package/lib/utils/dep-versions.d.ts +1 -0
  59. package/lib/utils/git.d.ts +8 -0
  60. package/lib/utils/http-helper.d.ts +4 -0
  61. package/lib/utils/i18n.d.ts +12 -0
  62. package/lib/utils/index.d.ts +22 -0
  63. package/lib/utils/index.js +52 -22
  64. package/lib/utils/latest-version/cli.d.ts +1 -0
  65. package/lib/utils/latest-version/cli.js +24 -60
  66. package/lib/utils/latest-version/index.d.ts +146 -0
  67. package/lib/utils/latest-version/index.js +22 -22
  68. package/lib/utils/options.d.ts +4 -0
  69. package/lib/utils/options.js +63 -0
  70. package/lib/utils/plugin-config.d.ts +9 -0
  71. package/lib/utils/zip-entries.d.ts +3 -0
  72. package/lib/versions.d.ts +43 -0
  73. package/lib/workflow-runner.d.ts +2 -0
  74. package/lib/workflow-runner.js +25 -0
  75. package/package.json +20 -5
  76. package/src/api.ts +1 -1
  77. package/src/app.ts +20 -11
  78. package/src/bundle-pack.ts +51 -0
  79. package/src/bundle-runner.ts +463 -0
  80. package/src/bundle.ts +184 -571
  81. package/src/diff.ts +208 -174
  82. package/src/index.ts +15 -17
  83. package/src/module-manager.ts +15 -15
  84. package/src/modules/app-module.ts +120 -48
  85. package/src/modules/bundle-module.ts +21 -11
  86. package/src/modules/package-module.ts +0 -1
  87. package/src/modules/user-module.ts +117 -58
  88. package/src/package.ts +158 -138
  89. package/src/provider.ts +164 -240
  90. package/src/types.ts +13 -8
  91. package/src/utils/app-info-parser/aab.ts +0 -7
  92. package/src/utils/app-info-parser/apk.ts +9 -6
  93. package/src/utils/app-info-parser/app.ts +5 -1
  94. package/src/utils/app-info-parser/index.ts +11 -6
  95. package/src/utils/app-info-parser/ipa.ts +1 -1
  96. package/src/utils/app-info-parser/utils.ts +3 -0
  97. package/src/utils/app-info-parser/xml-parser/manifest.ts +3 -1
  98. package/src/utils/app-info-parser/zip.ts +12 -14
  99. package/src/utils/command-result.ts +24 -0
  100. package/src/utils/index.ts +138 -39
  101. package/src/utils/latest-version/cli.ts +22 -20
  102. package/src/utils/latest-version/index.ts +20 -20
  103. package/src/utils/options.ts +56 -0
  104. package/src/utils/zip-entries.ts +1 -1
  105. package/src/workflow-runner.ts +24 -0
  106. package/index.js +0 -1
@@ -1,6 +1,25 @@
1
1
  import { getSession, loadSession } from '../api';
2
2
  import type { CLIModule, CommandContext } from '../types';
3
3
  import { userCommands } from '../user';
4
+ import {
5
+ getBooleanOption,
6
+ getOptionalStringOption,
7
+ toObjectState,
8
+ } from '../utils/options';
9
+
10
+ type AuthCheckState = {
11
+ hasToken?: boolean;
12
+ validated?: boolean;
13
+ [key: string]: unknown;
14
+ };
15
+
16
+ type LoginFlowState = {
17
+ alreadyLoggedIn?: boolean;
18
+ loginSuccess?: boolean;
19
+ validationSuccess?: boolean;
20
+ loginError?: string;
21
+ [key: string]: unknown;
22
+ };
4
23
 
5
24
  export const userModule: CLIModule = {
6
25
  name: 'user',
@@ -33,21 +52,20 @@ export const userModule: CLIModule = {
33
52
  await loadSession();
34
53
  const session = getSession();
35
54
 
36
- if (session && session.token) {
55
+ if (session?.token) {
37
56
  console.log('✓ Session found in local storage');
38
57
  return {
39
58
  sessionLoaded: true,
40
59
  hasToken: true,
41
60
  session,
42
61
  };
43
- } else {
44
- console.log('✗ No valid session found in local storage');
45
- return {
46
- sessionLoaded: true,
47
- hasToken: false,
48
- session: null,
49
- };
50
62
  }
63
+ console.log('✗ No valid session found in local storage');
64
+ return {
65
+ sessionLoaded: true,
66
+ hasToken: false,
67
+ session: null,
68
+ };
51
69
  } catch (error) {
52
70
  console.log(
53
71
  '✗ Failed to load session:',
@@ -65,11 +83,15 @@ export const userModule: CLIModule = {
65
83
  {
66
84
  name: 'validate-session',
67
85
  description: 'Validate session by calling API',
68
- execute: async (context: CommandContext, previousResult: any) => {
69
- if (!previousResult.hasToken) {
86
+ execute: async (
87
+ context: CommandContext,
88
+ previousResult?: unknown,
89
+ ) => {
90
+ const state = toObjectState<AuthCheckState>(previousResult, {});
91
+ if (!state.hasToken) {
70
92
  console.log('No token available, skipping validation');
71
93
  return {
72
- ...previousResult,
94
+ ...state,
73
95
  validated: false,
74
96
  reason: 'No token available',
75
97
  };
@@ -81,7 +103,7 @@ export const userModule: CLIModule = {
81
103
  await userCommands.me();
82
104
  console.log('✓ Session is valid');
83
105
  return {
84
- ...previousResult,
106
+ ...state,
85
107
  validated: true,
86
108
  reason: 'Session validated successfully',
87
109
  };
@@ -91,7 +113,7 @@ export const userModule: CLIModule = {
91
113
  error instanceof Error ? error.message : 'Unknown error',
92
114
  );
93
115
  return {
94
- ...previousResult,
116
+ ...state,
95
117
  validated: false,
96
118
  reason:
97
119
  error instanceof Error ? error.message : 'Unknown error',
@@ -102,11 +124,15 @@ export const userModule: CLIModule = {
102
124
  {
103
125
  name: 'get-user-info',
104
126
  description: 'Get current user information',
105
- execute: async (context: CommandContext, previousResult: any) => {
106
- if (!previousResult.validated) {
127
+ execute: async (
128
+ context: CommandContext,
129
+ previousResult?: unknown,
130
+ ) => {
131
+ const state = toObjectState<AuthCheckState>(previousResult, {});
132
+ if (!state.validated) {
107
133
  console.log('Session not valid, cannot get user info');
108
134
  return {
109
- ...previousResult,
135
+ ...state,
110
136
  userInfo: null,
111
137
  reason: 'Session not valid',
112
138
  };
@@ -116,11 +142,19 @@ export const userModule: CLIModule = {
116
142
 
117
143
  try {
118
144
  const { get } = await import('../api');
119
- const userInfo = await get('/user/me');
145
+ const userInfo = (await get('/user/me')) as Record<
146
+ string,
147
+ unknown
148
+ >;
120
149
 
121
150
  console.log('✓ User information retrieved successfully');
122
151
 
123
- if (context.options.showDetails !== false) {
152
+ const showDetails = getBooleanOption(
153
+ context.options,
154
+ 'showDetails',
155
+ true,
156
+ );
157
+ if (showDetails) {
124
158
  console.log('\n=== User Information ===');
125
159
  for (const [key, value] of Object.entries(userInfo)) {
126
160
  if (key !== 'ok') {
@@ -131,7 +165,7 @@ export const userModule: CLIModule = {
131
165
  }
132
166
 
133
167
  return {
134
- ...previousResult,
168
+ ...state,
135
169
  userInfo,
136
170
  reason: 'User info retrieved successfully',
137
171
  };
@@ -141,7 +175,7 @@ export const userModule: CLIModule = {
141
175
  error instanceof Error ? error.message : 'Unknown error',
142
176
  );
143
177
  return {
144
- ...previousResult,
178
+ ...state,
145
179
  userInfo: null,
146
180
  reason:
147
181
  error instanceof Error ? error.message : 'Unknown error',
@@ -152,11 +186,15 @@ export const userModule: CLIModule = {
152
186
  {
153
187
  name: 'handle-auth-failure',
154
188
  description: 'Handle authentication failure',
155
- execute: async (context: CommandContext, previousResult: any) => {
156
- if (previousResult.validated) {
189
+ execute: async (
190
+ context: CommandContext,
191
+ previousResult?: unknown,
192
+ ) => {
193
+ const state = toObjectState<AuthCheckState>(previousResult, {});
194
+ if (state.validated) {
157
195
  console.log('✓ Authentication check completed successfully');
158
196
  return {
159
- ...previousResult,
197
+ ...state,
160
198
  authCheckComplete: true,
161
199
  status: 'authenticated',
162
200
  };
@@ -164,13 +202,18 @@ export const userModule: CLIModule = {
164
202
 
165
203
  console.log('✗ Authentication check failed');
166
204
 
167
- if (context.options.autoLogin) {
205
+ const autoLogin = getBooleanOption(
206
+ context.options,
207
+ 'autoLogin',
208
+ false,
209
+ );
210
+ if (autoLogin) {
168
211
  console.log('Attempting automatic login...');
169
212
  try {
170
213
  await userCommands.login({ args: [] });
171
214
  console.log('✓ Automatic login successful');
172
215
  return {
173
- ...previousResult,
216
+ ...state,
174
217
  authCheckComplete: true,
175
218
  status: 'auto-logged-in',
176
219
  autoLoginSuccess: true,
@@ -181,7 +224,7 @@ export const userModule: CLIModule = {
181
224
  error instanceof Error ? error.message : 'Unknown error',
182
225
  );
183
226
  return {
184
- ...previousResult,
227
+ ...state,
185
228
  authCheckComplete: true,
186
229
  status: 'failed',
187
230
  autoLoginSuccess: false,
@@ -192,7 +235,7 @@ export const userModule: CLIModule = {
192
235
  } else {
193
236
  console.log('Please run login command to authenticate');
194
237
  return {
195
- ...previousResult,
238
+ ...state,
196
239
  authCheckComplete: true,
197
240
  status: 'unauthenticated',
198
241
  suggestion: 'Run login command to authenticate',
@@ -224,7 +267,7 @@ export const userModule: CLIModule = {
224
267
  await loadSession();
225
268
  const session = getSession();
226
269
 
227
- if (session && session.token) {
270
+ if (session?.token) {
228
271
  try {
229
272
  await userCommands.me();
230
273
  console.log('✓ User is already logged in');
@@ -268,11 +311,15 @@ export const userModule: CLIModule = {
268
311
  {
269
312
  name: 'perform-login',
270
313
  description: 'Perform user login',
271
- execute: async (context: CommandContext, previousResult: any) => {
272
- if (previousResult.alreadyLoggedIn) {
314
+ execute: async (
315
+ context: CommandContext,
316
+ previousResult?: unknown,
317
+ ) => {
318
+ const state = toObjectState<LoginFlowState>(previousResult, {});
319
+ if (state.alreadyLoggedIn) {
273
320
  console.log('Skipping login - user already authenticated');
274
321
  return {
275
- ...previousResult,
322
+ ...state,
276
323
  loginPerformed: false,
277
324
  loginSuccess: true,
278
325
  };
@@ -281,19 +328,24 @@ export const userModule: CLIModule = {
281
328
  console.log('Performing login...');
282
329
 
283
330
  try {
284
- const loginArgs = [];
285
- if (context.options.email) {
286
- loginArgs.push(context.options.email);
331
+ const loginArgs: string[] = [];
332
+ const email = getOptionalStringOption(context.options, 'email');
333
+ if (email) {
334
+ loginArgs.push(email);
287
335
  }
288
- if (context.options.password) {
289
- loginArgs.push(context.options.password);
336
+ const password = getOptionalStringOption(
337
+ context.options,
338
+ 'password',
339
+ );
340
+ if (password) {
341
+ loginArgs.push(password);
290
342
  }
291
343
 
292
344
  await userCommands.login({ args: loginArgs });
293
345
  console.log('✓ Login successful');
294
346
 
295
347
  return {
296
- ...previousResult,
348
+ ...state,
297
349
  loginPerformed: true,
298
350
  loginSuccess: true,
299
351
  };
@@ -303,7 +355,7 @@ export const userModule: CLIModule = {
303
355
  error instanceof Error ? error.message : 'Unknown error',
304
356
  );
305
357
  return {
306
- ...previousResult,
358
+ ...state,
307
359
  loginPerformed: true,
308
360
  loginSuccess: false,
309
361
  loginError:
@@ -315,23 +367,29 @@ export const userModule: CLIModule = {
315
367
  {
316
368
  name: 'validate-login',
317
369
  description: 'Validate login by getting user info',
318
- execute: async (context: CommandContext, previousResult: any) => {
319
- if (
320
- !previousResult.loginSuccess &&
321
- !previousResult.alreadyLoggedIn
322
- ) {
370
+ execute: async (
371
+ context: CommandContext,
372
+ previousResult?: unknown,
373
+ ) => {
374
+ const state = toObjectState<LoginFlowState>(previousResult, {});
375
+ if (!state.loginSuccess && !state.alreadyLoggedIn) {
323
376
  console.log('Login failed, skipping validation');
324
377
  return {
325
- ...previousResult,
378
+ ...state,
326
379
  validationPerformed: false,
327
380
  validationSuccess: false,
328
381
  };
329
382
  }
330
383
 
331
- if (context.options.validateAfterLogin === false) {
384
+ const validateAfterLogin = getBooleanOption(
385
+ context.options,
386
+ 'validateAfterLogin',
387
+ true,
388
+ );
389
+ if (!validateAfterLogin) {
332
390
  console.log('Skipping validation as requested');
333
391
  return {
334
- ...previousResult,
392
+ ...state,
335
393
  validationPerformed: false,
336
394
  validationSuccess: true,
337
395
  };
@@ -344,7 +402,7 @@ export const userModule: CLIModule = {
344
402
  console.log('✓ Login validation successful');
345
403
 
346
404
  return {
347
- ...previousResult,
405
+ ...state,
348
406
  validationPerformed: true,
349
407
  validationSuccess: true,
350
408
  userInfo,
@@ -355,7 +413,7 @@ export const userModule: CLIModule = {
355
413
  error instanceof Error ? error.message : 'Unknown error',
356
414
  );
357
415
  return {
358
- ...previousResult,
416
+ ...state,
359
417
  validationPerformed: true,
360
418
  validationSuccess: false,
361
419
  validationError:
@@ -367,34 +425,35 @@ export const userModule: CLIModule = {
367
425
  {
368
426
  name: 'login-summary',
369
427
  description: 'Provide login flow summary',
370
- execute: async (context: CommandContext, previousResult: any) => {
428
+ execute: async (
429
+ context: CommandContext,
430
+ previousResult?: unknown,
431
+ ) => {
432
+ const state = toObjectState<LoginFlowState>(previousResult, {});
371
433
  console.log('\n=== Login Flow Summary ===');
372
434
 
373
- if (previousResult.alreadyLoggedIn) {
435
+ if (state.alreadyLoggedIn) {
374
436
  console.log('Status: Already logged in');
375
437
  console.log('Session: Valid');
376
- } else if (previousResult.loginSuccess) {
438
+ } else if (state.loginSuccess) {
377
439
  console.log('Status: Login successful');
378
- if (previousResult.validationSuccess) {
440
+ if (state.validationSuccess) {
379
441
  console.log('Validation: Passed');
380
442
  } else {
381
443
  console.log('Validation: Failed');
382
444
  }
383
445
  } else {
384
446
  console.log('Status: Login failed');
385
- console.log(
386
- 'Error:',
387
- previousResult.loginError || 'Unknown error',
388
- );
447
+ console.log('Error:', state.loginError || 'Unknown error');
389
448
  }
390
449
 
391
450
  console.log('==========================\n');
392
451
 
393
452
  return {
394
- ...previousResult,
453
+ ...state,
395
454
  flowComplete: true,
396
455
  finalStatus:
397
- previousResult.alreadyLoggedIn || previousResult.loginSuccess
456
+ state.alreadyLoggedIn || state.loginSuccess
398
457
  ? 'success'
399
458
  : 'failed',
400
459
  };