react-native-update-cli 2.5.0 → 2.7.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 (45) hide show
  1. package/README.md +2 -0
  2. package/README.zh-CN.md +2 -0
  3. package/cli.json +26 -0
  4. package/lib/api.js +45 -12
  5. package/lib/locales/en.js +13 -1
  6. package/lib/locales/zh.js +13 -1
  7. package/lib/package.js +53 -6
  8. package/lib/provider.js +3 -0
  9. package/lib/utils/app-info-parser/aab.js +165 -201
  10. package/lib/utils/app-info-parser/apk.js +25 -27
  11. package/lib/utils/app-info-parser/app.js +10 -11
  12. package/lib/utils/app-info-parser/index.js +8 -8
  13. package/lib/utils/app-info-parser/ipa.js +16 -21
  14. package/lib/utils/app-info-parser/resource-finder.js +365 -305
  15. package/lib/utils/app-info-parser/utils.js +78 -63
  16. package/lib/utils/app-info-parser/xml-parser/binary.js +57 -51
  17. package/lib/utils/app-info-parser/xml-parser/manifest.js +47 -39
  18. package/lib/utils/app-info-parser/zip.js +21 -11
  19. package/lib/utils/http-helper.js +1 -1
  20. package/package.json +1 -1
  21. package/src/api.ts +45 -19
  22. package/src/locales/en.ts +17 -0
  23. package/src/locales/zh.ts +15 -0
  24. package/src/modules/version-module.ts +1 -1
  25. package/src/package.ts +102 -11
  26. package/src/provider.ts +3 -0
  27. package/src/utils/app-info-parser/aab.ts +240 -0
  28. package/src/utils/app-info-parser/{apk.js → apk.ts} +30 -41
  29. package/src/utils/app-info-parser/app.ts +3 -0
  30. package/src/utils/app-info-parser/index.ts +4 -4
  31. package/src/utils/app-info-parser/{ipa.js → ipa.ts} +17 -31
  32. package/src/utils/app-info-parser/resource-finder.ts +508 -0
  33. package/src/utils/app-info-parser/utils.ts +162 -0
  34. package/src/utils/app-info-parser/xml-parser/{binary.js → binary.ts} +69 -61
  35. package/src/utils/app-info-parser/xml-parser/{manifest.js → manifest.ts} +50 -51
  36. package/src/utils/app-info-parser/zip.ts +86 -0
  37. package/src/utils/dep-versions.ts +7 -4
  38. package/src/utils/http-helper.ts +1 -1
  39. package/src/utils/latest-version/index.ts +2 -1
  40. package/src/versions.ts +1 -1
  41. package/src/utils/app-info-parser/aab.js +0 -326
  42. package/src/utils/app-info-parser/app.js +0 -16
  43. package/src/utils/app-info-parser/resource-finder.js +0 -495
  44. package/src/utils/app-info-parser/utils.js +0 -172
  45. package/src/utils/app-info-parser/zip.js +0 -66
@@ -1,54 +1,43 @@
1
- const Zip = require('./zip');
2
- const {
3
- mapInfoResource,
4
- findApkIconPath,
5
- getBase64FromBuffer,
6
- } = require('./utils');
1
+ import { ResourceFinder } from './resource-finder';
2
+ import { findApkIconPath, getBase64FromBuffer, mapInfoResource } from './utils';
3
+ import { ManifestParser } from './xml-parser/manifest';
4
+ import { Zip } from './zip';
5
+
7
6
  const ManifestName = /^androidmanifest\.xml$/;
8
7
  const ResourceName = /^resources\.arsc$/;
9
8
 
10
- const ManifestXmlParser = require('./xml-parser/manifest');
11
- const ResourceFinder = require('./resource-finder');
12
-
13
- class ApkParser extends Zip {
14
- /**
15
- * parser for parsing .apk file
16
- * @param {String | File | Blob} file // file's path in Node, instance of File or Blob in Browser
17
- */
18
- constructor(file) {
19
- super(file);
20
- if (!(this instanceof ApkParser)) {
21
- return new ApkParser(file);
22
- }
23
- }
24
- parse() {
9
+ export class ApkParser extends Zip {
10
+ parse(): Promise<any> {
25
11
  return new Promise((resolve, reject) => {
26
12
  this.getEntries([ManifestName, ResourceName])
27
- .then((buffers) => {
28
- if (!buffers[ManifestName]) {
13
+ .then((buffers: any) => {
14
+ const manifestBuffer = buffers[ManifestName];
15
+ if (!manifestBuffer) {
29
16
  throw new Error("AndroidManifest.xml can't be found.");
30
17
  }
31
- let apkInfo = this._parseManifest(buffers[ManifestName]);
32
- let resourceMap;
18
+ let apkInfo: any;
19
+ let resourceMap: any;
20
+
21
+ apkInfo = this._parseManifest(manifestBuffer as Buffer);
22
+
33
23
  if (!buffers[ResourceName]) {
34
24
  resolve(apkInfo);
35
25
  } else {
36
- // parse resourceMap
37
- resourceMap = this._parseResourceMap(buffers[ResourceName]);
38
- // update apkInfo with resourceMap
26
+ resourceMap = this._parseResourceMap(
27
+ buffers[ResourceName] as Buffer,
28
+ );
39
29
  apkInfo = mapInfoResource(apkInfo, resourceMap);
40
30
 
41
- // find icon path and parse icon
42
31
  const iconPath = findApkIconPath(apkInfo);
43
32
  if (iconPath) {
44
33
  this.getEntry(iconPath)
45
- .then((iconBuffer) => {
34
+ .then((iconBuffer: Buffer | null) => {
46
35
  apkInfo.icon = iconBuffer
47
36
  ? getBase64FromBuffer(iconBuffer)
48
37
  : null;
49
38
  resolve(apkInfo);
50
39
  })
51
- .catch((e) => {
40
+ .catch((e: any) => {
52
41
  apkInfo.icon = null;
53
42
  resolve(apkInfo);
54
43
  console.warn('[Warning] failed to parse icon: ', e);
@@ -59,18 +48,19 @@ class ApkParser extends Zip {
59
48
  }
60
49
  }
61
50
  })
62
- .catch((e) => {
51
+ .catch((e: any) => {
63
52
  reject(e);
64
53
  });
65
54
  });
66
55
  }
56
+
67
57
  /**
68
58
  * Parse manifest
69
59
  * @param {Buffer} buffer // manifest file's buffer
70
60
  */
71
- _parseManifest(buffer) {
61
+ private _parseManifest(buffer: Buffer) {
72
62
  try {
73
- const parser = new ManifestXmlParser(buffer, {
63
+ const parser = new ManifestParser(buffer, {
74
64
  ignore: [
75
65
  'application.activity',
76
66
  'application.service',
@@ -80,21 +70,20 @@ class ApkParser extends Zip {
80
70
  ],
81
71
  });
82
72
  return parser.parse();
83
- } catch (e) {
84
- throw new Error('Parse AndroidManifest.xml error: ' + (e.message || e));
73
+ } catch (e: any) {
74
+ throw new Error(`Parse AndroidManifest.xml error: ${e.message || e}`);
85
75
  }
86
76
  }
77
+
87
78
  /**
88
79
  * Parse resourceMap
89
80
  * @param {Buffer} buffer // resourceMap file's buffer
90
81
  */
91
- _parseResourceMap(buffer) {
82
+ private _parseResourceMap(buffer: Buffer) {
92
83
  try {
93
84
  return new ResourceFinder().processResourceTable(buffer);
94
- } catch (e) {
95
- throw new Error('Parser resources.arsc error: ' + e);
85
+ } catch (e: any) {
86
+ throw new Error(`Parser resources.arsc error: ${e}`);
96
87
  }
97
88
  }
98
89
  }
99
-
100
- module.exports = ApkParser;
@@ -0,0 +1,3 @@
1
+ import { Zip } from './zip';
2
+
3
+ export class AppParser extends Zip {}
@@ -1,7 +1,7 @@
1
- const ApkParser = require('./apk');
2
- const IpaParser = require('./ipa');
3
- const AppParser = require('./app');
4
- const AabParser = require('./aab');
1
+ import { AabParser } from './aab';
2
+ import { ApkParser } from './apk';
3
+ import { AppParser } from './app';
4
+ import { IpaParser } from './ipa';
5
5
  const supportFileTypes = ['ipa', 'apk', 'app', 'aab'];
6
6
 
7
7
  class AppInfoParser {
@@ -2,49 +2,37 @@ const parsePlist = require('plist').parse;
2
2
  const parseBplist = require('bplist-parser').parseBuffer;
3
3
  const cgbiToPng = require('cgbi-to-png');
4
4
 
5
- const Zip = require('./zip');
6
- const { findIpaIconPath, getBase64FromBuffer, isBrowser } = require('./utils');
5
+ import { findIpaIconPath, getBase64FromBuffer, isBrowser } from './utils';
6
+ import { Zip } from './zip';
7
7
 
8
8
  const PlistName = /payload\/[^\/]+?.app\/info.plist$/i;
9
9
  const ProvisionName = /payload\/.+?\.app\/embedded.mobileprovision/;
10
10
 
11
- class IpaParser extends Zip {
12
- /**
13
- * parser for parsing .ipa file
14
- * @param {String | File | Blob} file // file's path in Node, instance of File or Blob in Browser
15
- */
16
- constructor(file) {
17
- super(file);
18
- if (!(this instanceof IpaParser)) {
19
- return new IpaParser(file);
20
- }
21
- }
22
- parse() {
11
+ export class IpaParser extends Zip {
12
+ parse(): Promise<any> {
23
13
  return new Promise((resolve, reject) => {
24
14
  this.getEntries([PlistName, ProvisionName])
25
- .then((buffers) => {
26
- if (!buffers[PlistName]) {
15
+ .then((buffers: any) => {
16
+ if (!buffers[PlistName as any]) {
27
17
  throw new Error("Info.plist can't be found.");
28
18
  }
29
- const plistInfo = this._parsePlist(buffers[PlistName]);
30
- // parse mobile provision
31
- const provisionInfo = this._parseProvision(buffers[ProvisionName]);
19
+ const plistInfo = this._parsePlist(buffers[PlistName as any]);
20
+ const provisionInfo = this._parseProvision(
21
+ buffers[ProvisionName as any],
22
+ );
32
23
  plistInfo.mobileProvision = provisionInfo;
33
24
 
34
- // find icon path and parse icon
35
25
  const iconRegex = new RegExp(
36
26
  findIpaIconPath(plistInfo).toLowerCase(),
37
27
  );
38
28
  this.getEntry(iconRegex)
39
- .then((iconBuffer) => {
29
+ .then((iconBuffer: any) => {
40
30
  try {
41
- // In general, the ipa file's icon has been specially processed, should be converted
42
31
  plistInfo.icon = iconBuffer
43
32
  ? getBase64FromBuffer(cgbiToPng.revert(iconBuffer))
44
33
  : null;
45
34
  } catch (err) {
46
35
  if (isBrowser()) {
47
- // Normal conversion in other cases
48
36
  plistInfo.icon = iconBuffer
49
37
  ? getBase64FromBuffer(
50
38
  window.btoa(String.fromCharCode(...iconBuffer)),
@@ -57,11 +45,11 @@ class IpaParser extends Zip {
57
45
  }
58
46
  resolve(plistInfo);
59
47
  })
60
- .catch((e) => {
48
+ .catch((e: any) => {
61
49
  reject(e);
62
50
  });
63
51
  })
64
- .catch((e) => {
52
+ .catch((e: any) => {
65
53
  reject(e);
66
54
  });
67
55
  });
@@ -70,8 +58,8 @@ class IpaParser extends Zip {
70
58
  * Parse plist
71
59
  * @param {Buffer} buffer // plist file's buffer
72
60
  */
73
- _parsePlist(buffer) {
74
- let result;
61
+ private _parsePlist(buffer: Buffer) {
62
+ let result: any;
75
63
  const bufferType = buffer[0];
76
64
  if (bufferType === 60 || bufferType === '<' || bufferType === 239) {
77
65
  result = parsePlist(buffer.toString());
@@ -86,8 +74,8 @@ class IpaParser extends Zip {
86
74
  * parse provision
87
75
  * @param {Buffer} buffer // provision file's buffer
88
76
  */
89
- _parseProvision(buffer) {
90
- let info = {};
77
+ private _parseProvision(buffer: Buffer | undefined) {
78
+ let info: Record<string, any> = {};
91
79
  if (buffer) {
92
80
  let content = buffer.toString('utf-8');
93
81
  const firstIndex = content.indexOf('<?xml');
@@ -100,5 +88,3 @@ class IpaParser extends Zip {
100
88
  return info;
101
89
  }
102
90
  }
103
-
104
- module.exports = IpaParser;