react-native-update-cli 2.8.4 → 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.
- package/lib/api.d.ts +18 -0
- package/lib/app.d.ts +38 -0
- package/lib/app.js +5 -4
- package/lib/bundle-pack.d.ts +1 -0
- package/lib/bundle-pack.js +104 -0
- package/lib/bundle-runner.d.ts +20 -0
- package/lib/bundle-runner.js +404 -0
- package/lib/bundle.d.ts +6 -0
- package/lib/bundle.js +73 -471
- package/lib/diff.d.ts +13 -0
- package/lib/diff.js +144 -123
- package/lib/exports.d.ts +12 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +5 -13
- package/lib/install.d.ts +4 -0
- package/lib/locales/en.d.ts +137 -0
- package/lib/locales/en.js +11 -0
- package/lib/locales/zh.d.ts +136 -0
- package/lib/locales/zh.js +11 -0
- package/lib/module-manager.d.ts +20 -0
- package/lib/module-manager.js +3 -9
- package/lib/modules/app-module.d.ts +2 -0
- package/lib/modules/app-module.js +84 -44
- package/lib/modules/bundle-module.d.ts +2 -0
- package/lib/modules/bundle-module.js +7 -8
- package/lib/modules/index.d.ts +6 -0
- package/lib/modules/package-module.d.ts +2 -0
- package/lib/modules/user-module.d.ts +2 -0
- package/lib/modules/user-module.js +55 -44
- package/lib/modules/version-module.d.ts +2 -0
- package/lib/package.d.ts +58 -0
- package/lib/package.js +103 -139
- package/lib/provider.d.ts +26 -0
- package/lib/provider.js +115 -217
- package/lib/types.d.ts +120 -0
- package/lib/user.d.ts +8 -0
- package/lib/utils/add-gitignore.d.ts +1 -0
- package/lib/utils/app-info-parser/aab.d.ts +22 -0
- package/lib/utils/app-info-parser/aab.js +0 -4
- package/lib/utils/app-info-parser/apk.d.ts +14 -0
- package/lib/utils/app-info-parser/apk.js +6 -4
- package/lib/utils/app-info-parser/app.d.ts +4 -0
- package/lib/utils/app-info-parser/app.js +3 -0
- package/lib/utils/app-info-parser/index.d.ts +16 -0
- package/lib/utils/app-info-parser/index.js +2 -0
- package/lib/utils/app-info-parser/ipa.d.ts +14 -0
- package/lib/utils/app-info-parser/ipa.js +1 -1
- package/lib/utils/app-info-parser/resource-finder.d.ts +49 -0
- package/lib/utils/app-info-parser/utils.d.ts +31 -0
- package/lib/utils/app-info-parser/utils.js +1 -0
- package/lib/utils/app-info-parser/xml-parser/binary.d.ts +56 -0
- package/lib/utils/app-info-parser/xml-parser/manifest.d.ts +10 -0
- package/lib/utils/app-info-parser/zip.d.ts +18 -0
- package/lib/utils/app-info-parser/zip.js +7 -9
- package/lib/utils/check-lockfile.d.ts +1 -0
- package/lib/utils/check-plugin.d.ts +7 -0
- package/lib/utils/command-result.d.ts +3 -0
- package/lib/utils/command-result.js +35 -0
- package/lib/utils/constants.d.ts +9 -0
- package/lib/utils/dep-versions.d.ts +1 -0
- package/lib/utils/git.d.ts +8 -0
- package/lib/utils/http-helper.d.ts +4 -0
- package/lib/utils/i18n.d.ts +12 -0
- package/lib/utils/index.d.ts +22 -0
- package/lib/utils/index.js +52 -22
- package/lib/utils/latest-version/cli.d.ts +1 -0
- package/lib/utils/latest-version/cli.js +24 -60
- package/lib/utils/latest-version/index.d.ts +146 -0
- package/lib/utils/latest-version/index.js +22 -22
- package/lib/utils/options.d.ts +4 -0
- package/lib/utils/options.js +63 -0
- package/lib/utils/plugin-config.d.ts +9 -0
- package/lib/utils/zip-entries.d.ts +3 -0
- package/lib/versions.d.ts +43 -0
- package/lib/versions.js +186 -2
- package/lib/workflow-runner.d.ts +2 -0
- package/lib/workflow-runner.js +25 -0
- package/package.json +20 -5
- package/src/api.ts +1 -1
- package/src/app.ts +20 -11
- package/src/bundle-pack.ts +51 -0
- package/src/bundle-runner.ts +463 -0
- package/src/bundle.ts +184 -571
- package/src/diff.ts +208 -174
- package/src/index.ts +15 -17
- package/src/locales/en.ts +15 -0
- package/src/locales/zh.ts +13 -0
- package/src/module-manager.ts +15 -15
- package/src/modules/app-module.ts +120 -48
- package/src/modules/bundle-module.ts +21 -11
- package/src/modules/package-module.ts +0 -1
- package/src/modules/user-module.ts +117 -58
- package/src/package.ts +158 -138
- package/src/provider.ts +164 -240
- package/src/types.ts +15 -8
- package/src/utils/app-info-parser/aab.ts +0 -7
- package/src/utils/app-info-parser/apk.ts +9 -6
- package/src/utils/app-info-parser/app.ts +5 -1
- package/src/utils/app-info-parser/index.ts +11 -6
- package/src/utils/app-info-parser/ipa.ts +1 -1
- package/src/utils/app-info-parser/utils.ts +3 -0
- package/src/utils/app-info-parser/xml-parser/manifest.ts +3 -1
- package/src/utils/app-info-parser/zip.ts +12 -14
- package/src/utils/command-result.ts +24 -0
- package/src/utils/index.ts +138 -39
- package/src/utils/latest-version/cli.ts +22 -20
- package/src/utils/latest-version/index.ts +20 -20
- package/src/utils/options.ts +56 -0
- package/src/utils/zip-entries.ts +1 -1
- package/src/versions.ts +265 -2
- package/src/workflow-runner.ts +24 -0
- 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
|
|
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 (
|
|
69
|
-
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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 (
|
|
106
|
-
|
|
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
|
-
...
|
|
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
|
-
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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 (
|
|
156
|
-
|
|
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
|
-
...
|
|
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
|
-
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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
|
|
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 (
|
|
272
|
-
|
|
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
|
-
...
|
|
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
|
-
|
|
286
|
-
|
|
331
|
+
const loginArgs: string[] = [];
|
|
332
|
+
const email = getOptionalStringOption(context.options, 'email');
|
|
333
|
+
if (email) {
|
|
334
|
+
loginArgs.push(email);
|
|
287
335
|
}
|
|
288
|
-
|
|
289
|
-
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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 (
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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
|
-
...
|
|
378
|
+
...state,
|
|
326
379
|
validationPerformed: false,
|
|
327
380
|
validationSuccess: false,
|
|
328
381
|
};
|
|
329
382
|
}
|
|
330
383
|
|
|
331
|
-
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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 (
|
|
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 (
|
|
435
|
+
if (state.alreadyLoggedIn) {
|
|
374
436
|
console.log('Status: Already logged in');
|
|
375
437
|
console.log('Session: Valid');
|
|
376
|
-
} else if (
|
|
438
|
+
} else if (state.loginSuccess) {
|
|
377
439
|
console.log('Status: Login successful');
|
|
378
|
-
if (
|
|
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
|
-
...
|
|
453
|
+
...state,
|
|
395
454
|
flowComplete: true,
|
|
396
455
|
finalStatus:
|
|
397
|
-
|
|
456
|
+
state.alreadyLoggedIn || state.loginSuccess
|
|
398
457
|
? 'success'
|
|
399
458
|
: 'failed',
|
|
400
459
|
};
|