@24i/smartapps-bigscreen-rnv-build-engine 0.17.6-alpha.9 → 0.17.7-alpha.1

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 (58) hide show
  1. package/README.md +16 -12
  2. package/dist/src/constants/buildProductionPackages.js +1 -0
  3. package/dist/src/constants/delopyLivePlatforms.js +2 -1
  4. package/dist/src/constants/platforms.js +2 -0
  5. package/dist/src/engine.js +10 -0
  6. package/dist/src/resolvers/index.js +3 -1
  7. package/dist/src/resolvers/resolveBaseUrl.js +5 -24
  8. package/dist/src/resolvers/resolveProductionZipFileRelativePath.js +1 -2
  9. package/dist/src/resolvers/resolveS3BucketAppPath.js +15 -0
  10. package/dist/src/resolvers/shared/constructFullUrl.js +25 -0
  11. package/dist/src/scripts/buildAllWithSchemes.js +23 -4
  12. package/dist/src/scripts/release/appCenter/deployProductionPackagesToAppCenter.js +20 -10
  13. package/dist/src/scripts/release/urlsMarkdown.js +2 -0
  14. package/dist/src/sdks/index.js +1 -0
  15. package/dist/src/sdks/sdk-androidtv/sdkAndroidtv.js +29 -13
  16. package/dist/src/sdks/sdk-tizen/sdkTizen.js +2 -0
  17. package/dist/src/sdks/sdk-webos/sdkWebos.js +2 -0
  18. package/dist/src/sdks/sdk-webpack/sdkWebpack.js +2 -0
  19. package/dist/src/tasks/deploy/aswS3/deployS3.js +3 -10
  20. package/dist/src/tasks/deploy/aswS3/distToLiveS3.js +4 -5
  21. package/dist/src/tasks/deploy/hbbtv/deployHbbtv.js +1 -1
  22. package/dist/src/tasks/task.rnv.build.js +16 -6
  23. package/dist/src/tasks/task.rnv.configure.js +2 -0
  24. package/dist/src/tasks/task.rnv.deploy.js +2 -0
  25. package/dist/src/tasks/task.rnv.platform.configure.js +33 -1
  26. package/dist/src/tasks/task.rnv.start.js +2 -0
  27. package/dist/src/utils/copyTheoPlayerLibs.js +48 -0
  28. package/dist/src/utils/zipStagingProdBuildsByPlatforms.js +3 -3
  29. package/dist/templates/platforms/androidtv/project/README.md +4 -4
  30. package/dist/templates/platforms/androidtv/project/amazoniap/build.gradle +2 -2
  31. package/dist/templates/platforms/androidtv/project/app/build.gradle +17 -21
  32. package/dist/templates/platforms/androidtv/project/app/proguard-rules.pro +15 -0
  33. package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/raw/configuration.json +1 -2
  34. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeFromJavaScript.kt +4 -58
  35. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeToJavaScript.kt +15 -0
  36. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/BridgeConfig.kt +2 -1
  37. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ActivityModule.kt +0 -3
  38. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ApplicationModule.kt +2 -2
  39. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/PerActivity.kt +0 -0
  40. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryConfigured.kt +33 -0
  41. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryExoPlayerCustomized.kt +7 -1
  42. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryTheoPlayerCustomized.kt +14 -0
  43. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryVersion.kt +27 -0
  44. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/SourceDrmOverridden.kt +42 -0
  45. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/MediaEventType.kt +5 -2
  46. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/SourceParser.kt +89 -0
  47. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/Mainview.kt +0 -3
  48. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/PlayerCache.kt +2 -2
  49. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/WebViewActivity.kt +24 -83
  50. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/viewmodel/WebViewModel.kt +50 -113
  51. package/dist/templates/platforms/androidtv/project/app/src/main/res/layout/activity_web_view.xml +23 -71
  52. package/dist/templates/platforms/androidtv/project/common/build.gradle +2 -2
  53. package/dist/templates/platforms/androidtv/project/googleiap/build.gradle +2 -2
  54. package/package.json +1 -1
  55. package/renative.engine.json +2 -0
  56. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/jump/JumpAnalytics.kt +0 -211
  57. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/ContentModelParser.kt +0 -16
  58. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/DeviceInfoParser.kt +0 -22
package/README.md CHANGED
@@ -38,18 +38,20 @@ it
38
38
  ---
39
39
  ## Supported platforms
40
40
 
41
- | *Platform* | *Vendor* | *id* | *Build file extension* | *Registered file extensions* | *Note* |
42
- | :------------ | :------: | :---------: | :--------------------: | :---------------------------------: | :------------------------------: |
43
- | **AndroidTV** | N/A | `androidtv` | `.zip` | `*.android.tv.{js,jsx,ts,tsx,json}` | |
44
- | **Entone** | Amino | `entone` | `.zip` | `*.entone.{js,jsx,ts,tsx,json}` | set-top boxes |
45
- | **HbbTV** | N/A | `hbbtv` | `.zip` | `*.hbbtv.tv.{js,jsx,ts,tsx,json}` | |
46
- | **KreaTV** | Arris | `kreatv` | `.zip` | `*.kreatv.{js,jsx,ts,tsx,json}` | set-top boxes |
47
- | **Saphi** | Philips | `saphi` | `.zip` | `*.saphi.tv.{js,jsx,ts,tsx,json}` | |
48
- | **Tizen** | Samsung | `tizen` | `.wgt` | `*.tizen.tv.{js,jsx,ts,tsx,json}` | |
49
- | **VIDAA** | Hisense | `vidaa` | `.zip` | `*.vidaa.tv.{js,jsx,ts,tsx,json}` | |
50
- | **webOS** | LG | `webos` | `.ipk` | `*.webos.tv.{js,jsx,ts,tsx,json}` | |
51
- | **WebTV** | N/A | `webtv` | `.zip` | `*.webtv.{js,jsx,ts,tsx,json}` | for previewing builds in browser |
52
- | **Xbox** | Microsoft | `xbox` | `.zip` | `*.xbox.{js,jsx,ts,tsx,json}` | |
41
+ | *Platform* | *Vendor* | *id* | *Build file extension* | *Registered file extensions* | *Note* |
42
+ | :------------ | :-------: | :---------: | :--------------------: | :----------------------------------: | :------------------------------: |
43
+ | **AndroidTV** | N/A | `androidtv` | `.zip` | `*.android.tv.{js,jsx,ts,tsx,json}` | |
44
+ | **Entone** | Amino | `entone` | `.zip` | `*.entone.{js,jsx,ts,tsx,json}` | set-top boxes |
45
+ | **FireTV** | N/A | `firetv` | `.zip` | `*.firetv.{js,jsx,ts,tsx,json}` | |
46
+ | **HbbTV** | N/A | `hbbtv` | `.zip` | `*.hbbtv.tv.{js,jsx,ts,tsx,json}` | |
47
+ | **KreaTV** | Arris | `kreatv` | `.zip` | `*.kreatv.{js,jsx,ts,tsx,json}` | set-top boxes |
48
+ | **Saphi** | Philips | `saphi` | `.zip` | `*.saphi.tv.{js,jsx,ts,tsx,json}` | |
49
+ | **Tizen** | Samsung | `tizen` | `.wgt` | `*.tizen.tv.{js,jsx,ts,tsx,json}` | |
50
+ | **VIDAA** | Hisense | `vidaa` | `.zip` | `*.vidaa.tv.{js,jsx,ts,tsx,json}` | |
51
+ | **SmartCast** | VIZIO | `smartcast` | `.zip` | `*.smartcast.tv.{js,jsx,ts,tsx,json}`| |
52
+ | **webOS** | LG | `webos` | `.ipk` | `*.webos.tv.{js,jsx,ts,tsx,json}` | |
53
+ | **WebTV** | N/A | `webtv` | `.zip` | `*.webtv.{js,jsx,ts,tsx,json}` | for previewing builds in browser |
54
+ | **Xbox** | Microsoft | `xbox` | `.zip` | `*.xbox.{js,jsx,ts,tsx,json}` | |
53
55
 
54
56
  When building the application with ReNative, if file with ***registered platform extension*** is found,
55
57
  it takes precedence and is bundled instead of file without registered file extension (such as `index.ts`).
@@ -60,11 +62,13 @@ drivers/
60
62
  index.ts // fallback when file with platform file extension for selected platform is not found
61
63
  index.android.tv.ts // if build for AndroidTV platform is selected, this file will be picked for the build
62
64
  index.entone.ts
65
+ index.firetv.ts
63
66
  index.hbbtv.tv.ts
64
67
  index.kreatv.ts
65
68
  index.saphi.tv.ts
66
69
  index.tizen.tv.ts
67
70
  index.vidaa.tv.ts
71
+ index.smartcast.tv.ts
68
72
  index.webos.tv.ts
69
73
  index.webtv.ts
70
74
  index.xbox.ts
@@ -4,6 +4,7 @@ exports.SUPPORTED_PACKAGE_PLATFORMS = void 0;
4
4
  const platforms_1 = require("./platforms");
5
5
  exports.SUPPORTED_PACKAGE_PLATFORMS = [
6
6
  platforms_1.Platforms.ANDROIDTV,
7
+ platforms_1.Platforms.FIRETV,
7
8
  platforms_1.Platforms.TIZEN,
8
9
  platforms_1.Platforms.WEBOS,
9
10
  ];
@@ -7,7 +7,8 @@ const UNSUPPORTED_PLATFORMS = [
7
7
  ];
8
8
  exports.UNSUPPORTED_PLATFORMS = UNSUPPORTED_PLATFORMS;
9
9
  const NO_CONTENT_FOLDER_PLATFORMS = [
10
- platforms_1.Platforms.VIDAA,
11
10
  platforms_1.Platforms.ANDROIDTV,
11
+ platforms_1.Platforms.FIRETV,
12
+ platforms_1.Platforms.VIDAA,
12
13
  ];
13
14
  exports.NO_CONTENT_FOLDER_PLATFORMS = NO_CONTENT_FOLDER_PLATFORMS;
@@ -4,11 +4,13 @@ exports.Platforms = void 0;
4
4
  const Platforms = {
5
5
  ANDROIDTV: 'androidtv',
6
6
  ENTONE: 'entone',
7
+ FIRETV: 'firetv',
7
8
  HBBTV: 'hbbtv',
8
9
  KREATV: 'kreatv',
9
10
  SAPHI: 'saphi',
10
11
  TIZEN: 'tizen',
11
12
  VIDAA: 'vidaa',
13
+ SMARTCAST: 'smartcast',
12
14
  WEBOS: 'webos',
13
15
  WEBTV: 'webtv',
14
16
  XBOX: 'xbox',
@@ -64,6 +64,11 @@ exports.default = {
64
64
  defaultPort: 8094,
65
65
  isWebHosted: true,
66
66
  },
67
+ [constants_1.Platforms.FIRETV]: {
68
+ extensions: generateEngineExtensions(['firetv']),
69
+ defaultPort: 8102,
70
+ isWebHosted: true,
71
+ },
67
72
  [constants_1.Platforms.HBBTV]: {
68
73
  extensions: generateEngineExtensions(['hbbtv.tv']),
69
74
  defaultPort: 8095,
@@ -89,6 +94,11 @@ exports.default = {
89
94
  defaultPort: 8099,
90
95
  isWebHosted: true,
91
96
  },
97
+ [constants_1.Platforms.SMARTCAST]: {
98
+ extensions: generateEngineExtensions(['smartcast.tv']),
99
+ defaultPort: 8101,
100
+ isWebHosted: true,
101
+ },
92
102
  [constants_1.Platforms.WEBOS]: {
93
103
  extensions: generateEngineExtensions(['webos.tv']),
94
104
  defaultPort: 8088,
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getProductionZipFileRelativePath = exports.resolveZippedPlatformBuildsRelativeFilePath = exports.resolvePackageVersions = exports.resolveBuildFileExtension = exports.resolveUsedFlavours = exports.resolveSupportedFlavoursForPlatform = exports.resolveSupportedPlatforms = exports.getBaseConfig = exports.resolveBuildFileName = exports.resolveBuildFileBaseName = exports.resolveHbbtvDeployConfig = exports.resolveHbbtvDeployUrl = exports.resolveHbbtvRemoteBuildDirRelativePath = exports.resolveDeployLocations = exports.resolveBuildVersionOffset = exports.resolveBuildVersion = exports.resolveBuildEnvName = exports.resolveProductionPackagesBaseUrl = exports.resolveBaseUrl = void 0;
3
+ exports.getProductionZipFileRelativePath = exports.resolveZippedPlatformBuildsRelativeFilePath = exports.resolvePackageVersions = exports.resolveBuildFileExtension = exports.resolveUsedFlavours = exports.resolveSupportedFlavoursForPlatform = exports.resolveSupportedPlatforms = exports.getBaseConfig = exports.resolveBuildFileName = exports.resolveBuildFileBaseName = exports.resolveHbbtvDeployConfig = exports.resolveHbbtvDeployUrl = exports.resolveHbbtvRemoteBuildDirRelativePath = exports.resolveDeployLocations = exports.resolveBuildVersionOffset = exports.resolveBuildVersion = exports.resolveBuildEnvName = exports.resolveS3BucketAppPath = exports.resolveProductionPackagesBaseUrl = exports.resolveBaseUrl = void 0;
4
4
  var resolveBaseUrl_1 = require("./resolveBaseUrl");
5
5
  Object.defineProperty(exports, "resolveBaseUrl", { enumerable: true, get: function () { return resolveBaseUrl_1.resolveBaseUrl; } });
6
6
  Object.defineProperty(exports, "resolveProductionPackagesBaseUrl", { enumerable: true, get: function () { return resolveBaseUrl_1.resolveProductionPackagesBaseUrl; } });
7
+ var resolveS3BucketAppPath_1 = require("./resolveS3BucketAppPath");
8
+ Object.defineProperty(exports, "resolveS3BucketAppPath", { enumerable: true, get: function () { return resolveS3BucketAppPath_1.resolveS3BucketAppPath; } });
7
9
  var resolveBuildEnvName_1 = require("./resolveBuildEnvName");
8
10
  Object.defineProperty(exports, "resolveBuildEnvName", { enumerable: true, get: function () { return resolveBuildEnvName_1.resolveBuildEnvName; } });
9
11
  var resolveBuildVersion_1 = require("./resolveBuildVersion");
@@ -2,36 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveProductionPackagesBaseUrl = exports.resolveBaseUrl = void 0;
4
4
  const resolveGenericRnvConfig_1 = require("./resolveGenericRnvConfig");
5
- const resolveBuildEnvName_1 = require("./resolveBuildEnvName");
6
- const constants_1 = require("../constants");
5
+ const constructFullUrl_1 = require("./shared/constructFullUrl");
7
6
  const resolveBaseUrl = ({ platform, scheme, flavour }) => {
8
7
  const c = (0, resolveGenericRnvConfig_1.getBaseConfig)();
9
8
  c.platform = platform;
10
9
  c.runtime.scheme = scheme;
11
10
  c.runtime.appId = flavour;
12
- const { packageVersion, deploy } = c.buildConfig?.common;
13
- const bucketName = deploy?.aws3?.bucketName || '';
14
- if (!packageVersion || !bucketName) {
11
+ const hostedBaseUrl = c.buildConfig?.common?.hostedUrl?.baseUrl;
12
+ if (!hostedBaseUrl)
15
13
  return '';
16
- }
17
- const bucketUrl = `http://${bucketName}.s3.amazonaws.com`;
18
- const appFolderUrl = `${bucketUrl}/builds/${platform}/${flavour}`;
19
- const envName = (0, resolveBuildEnvName_1.resolveBuildEnvName)(c.runtime.scheme);
20
- switch (scheme) {
21
- case constants_1.BuildSchemes.DEV_LATEST:
22
- return `${appFolderUrl}/latest/dev`;
23
- case constants_1.BuildSchemes.RC_STAGING_LATEST:
24
- case constants_1.BuildSchemes.RC_PROD_LATEST:
25
- return `${appFolderUrl}/latest/rc/${envName}`;
26
- case constants_1.BuildSchemes.RELEASE_STAGING_LATEST:
27
- case constants_1.BuildSchemes.RELEASE_PROD_LATEST:
28
- return `${appFolderUrl}/latest/release/${envName}`;
29
- case constants_1.BuildSchemes.RELEASE_STAGING_DIST:
30
- case constants_1.BuildSchemes.RELEASE_PROD_DIST:
31
- return `${appFolderUrl}/dist/v${packageVersion}/${envName}`;
32
- default:
33
- return '';
34
- }
14
+ const fullBaseUrl = `${hostedBaseUrl}/builds/${platform}/${flavour}`;
15
+ return (0, constructFullUrl_1.constructFullUrl)({ baseUrl: fullBaseUrl, scheme, c });
35
16
  };
36
17
  exports.resolveBaseUrl = resolveBaseUrl;
37
18
  const resolveProductionPackagesBaseUrl = (c) => {
@@ -27,10 +27,9 @@ exports.getProductionZipFileRelativePath = void 0;
27
27
  const path = __importStar(require("path"));
28
28
  const getProductionZipFileRelativePath = (c) => {
29
29
  const { appNameInFileName } = c.buildConfig.common;
30
- const buildVersion = c.buildConfig.common.packageVersion;
31
30
  const { platformBuildsDir } = c.buildConfig.paths;
32
31
  const platformBuildsDirPath = path.join(platformBuildsDir);
33
- const zipFileName = `${appNameInFileName}.production_packages_v${buildVersion}.zip`;
32
+ const zipFileName = `${appNameInFileName}.production_packages.zip`;
34
33
  return path.join(platformBuildsDirPath, zipFileName);
35
34
  };
36
35
  exports.getProductionZipFileRelativePath = getProductionZipFileRelativePath;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveS3BucketAppPath = void 0;
4
+ const resolveGenericRnvConfig_1 = require("./resolveGenericRnvConfig");
5
+ const constructFullUrl_1 = require("./shared/constructFullUrl");
6
+ const resolveS3BucketAppPath = ({ platform, scheme, flavour }) => {
7
+ const c = (0, resolveGenericRnvConfig_1.getBaseConfig)();
8
+ c.platform = platform;
9
+ c.runtime.scheme = scheme;
10
+ c.runtime.appId = flavour;
11
+ const bucketName = c.buildConfig?.common.deploy?.aws3?.bucketName || '';
12
+ const appFolderUrl = `${bucketName}/builds/${platform}/${flavour}`;
13
+ return (0, constructFullUrl_1.constructFullUrl)({ baseUrl: appFolderUrl, scheme, c });
14
+ };
15
+ exports.resolveS3BucketAppPath = resolveS3BucketAppPath;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.constructFullUrl = void 0;
4
+ const resolveBuildEnvName_1 = require("../resolveBuildEnvName");
5
+ const constants_1 = require("../../constants");
6
+ const constructFullUrl = ({ baseUrl, scheme, c }) => {
7
+ const { packageVersion } = c.buildConfig?.common;
8
+ const envName = (0, resolveBuildEnvName_1.resolveBuildEnvName)(scheme);
9
+ switch (scheme) {
10
+ case constants_1.BuildSchemes.DEV_LATEST:
11
+ return `${baseUrl}/latest/dev`;
12
+ case constants_1.BuildSchemes.RC_STAGING_LATEST:
13
+ case constants_1.BuildSchemes.RC_PROD_LATEST:
14
+ return `${baseUrl}/latest/rc/${envName}`;
15
+ case constants_1.BuildSchemes.RELEASE_STAGING_LATEST:
16
+ case constants_1.BuildSchemes.RELEASE_PROD_LATEST:
17
+ return `${baseUrl}/latest/release/${envName}`;
18
+ case constants_1.BuildSchemes.RELEASE_STAGING_DIST:
19
+ case constants_1.BuildSchemes.RELEASE_PROD_DIST:
20
+ return `${baseUrl}/dist/v${packageVersion}/${envName}`;
21
+ default:
22
+ return '';
23
+ }
24
+ };
25
+ exports.constructFullUrl = constructFullUrl;
@@ -27,9 +27,18 @@ const child_process_1 = require("child_process");
27
27
  const fs = __importStar(require("fs"));
28
28
  const path = __importStar(require("path"));
29
29
  const fse = __importStar(require("fs-extra"));
30
- const forEachSupportedPlatformFlavour_1 = require("../utils/forEachSupportedPlatformFlavour");
31
30
  const getSafeSchemeString_1 = require("../utils/getSafeSchemeString");
32
31
  const resolvers_1 = require("../resolvers");
32
+ const getProgressMessage = ({ schemes, schemeIndex, platforms, platformIndex, flavours, flavourIndex, }) => {
33
+ let string = `\nProcessing`;
34
+ string += ` "${platforms[platformIndex]}" platform`;
35
+ string += ` (${platformIndex + 1}/${platforms.length}),`;
36
+ string += ` "${schemes[schemeIndex]}" scheme"`;
37
+ string += ` (${schemeIndex + 1}/${schemes.length}),`;
38
+ string += ` and its "${flavours[flavourIndex]}" flavour`;
39
+ string += ` (${flavourIndex + 1}/${flavours.length})...`;
40
+ return string;
41
+ };
33
42
  const buildTask = (options, c) => {
34
43
  const { scheme, platform, flavour } = options;
35
44
  const { platformBuildsDir } = c.buildConfig.paths;
@@ -56,9 +65,19 @@ const buildAllWithSchemes = () => {
56
65
  throw new Error('No scheme name to use found! Please use rnv scheme names as a param.');
57
66
  }
58
67
  const c = (0, resolvers_1.getBaseConfig)();
59
- schemes.forEach((scheme, schemeIndex) => {
60
- c.runtime.scheme = scheme;
61
- (0, forEachSupportedPlatformFlavour_1.forEachSupportedPlatformFlavour)(c, (options) => buildTask(options, c), { schemeIndex, schemes });
68
+ const supportedPlatforms = (0, resolvers_1.resolveSupportedPlatforms)(c);
69
+ supportedPlatforms.forEach((platform, platformIndex, platforms) => {
70
+ schemes.forEach((scheme, schemeIndex, schemes) => {
71
+ c.runtime.scheme = scheme;
72
+ const supportedFlavours = (0, resolvers_1.resolveSupportedFlavoursForPlatform)(c, platform);
73
+ supportedFlavours.forEach((flavour, flavourIndex, flavours) => {
74
+ const msg = getProgressMessage({
75
+ platforms, platformIndex, schemes, schemeIndex, flavours, flavourIndex,
76
+ });
77
+ console.log(msg);
78
+ buildTask({ scheme, platform, flavour }, c);
79
+ });
80
+ });
62
81
  });
63
82
  return true;
64
83
  };
@@ -25,12 +25,23 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.deployProductionPackagesToAppCenter = void 0;
27
27
  const child_process_1 = require("child_process");
28
+ const path = __importStar(require("path"));
28
29
  const fs = __importStar(require("fs"));
29
30
  const constants_1 = require("../../../constants");
30
31
  const buildProductionPackages_1 = require("../../../constants/buildProductionPackages");
31
32
  const resolvers_1 = require("../../../resolvers");
32
33
  const appCenter_1 = require("./appCenter");
34
+ const ENV_APPCENTER_TOKEN_PRODUCTION_PACKAGES = 'APPCENTER_TOKEN_PRODUCTION_PACKAGES';
33
35
  const newLine = '\r\n';
36
+ const formatDateTime = (date) => {
37
+ const year = date.getFullYear();
38
+ const month = String(date.getMonth() + 1).padStart(2, '0');
39
+ const day = String(date.getDate()).padStart(2, '0');
40
+ const h = String(date.getHours()).padStart(2, '0');
41
+ const m = String(date.getMinutes()).padStart(2, '0');
42
+ const s = String(date.getSeconds()).padStart(2, '0');
43
+ return `${year}-${month}-${day}T${h}-${m}-${s}`;
44
+ };
34
45
  const getAppCenterConfig = (c) => {
35
46
  try {
36
47
  return c.buildConfig.common.deploy?.productionPackages?.appCenter || null;
@@ -64,7 +75,7 @@ const getPlatformPackagesList = (c) => {
64
75
  return packagesList;
65
76
  };
66
77
  const getAppCenterToken = () => {
67
- return process.env['APPCENTER_TOKEN_PRODUCTION_PACKAGES'] || '';
78
+ return process.env[ENV_APPCENTER_TOKEN_PRODUCTION_PACKAGES] || '';
68
79
  };
69
80
  const deployProductionPackagesToAppCenter = (c) => {
70
81
  console.log('deployProductionPackagesToAppCenter');
@@ -74,16 +85,15 @@ const deployProductionPackagesToAppCenter = (c) => {
74
85
  }
75
86
  const { appName: centerAppName } = appCenterConfig;
76
87
  const token = getAppCenterToken();
77
- const zipPath = (0, resolvers_1.getProductionZipFileRelativePath)(c);
78
- const { appName, packageVersion } = c.buildConfig.common;
88
+ const { appName } = c.buildConfig.common;
79
89
  if (!centerAppName)
80
- throw new Error('Missing centerAppName in appCenterConfig');
90
+ throw new Error('Missing AppName in appCenterConfig');
81
91
  if (!token)
82
- throw new Error('Missing App Center Token');
83
- if (!zipPath)
84
- throw new Error('Missing path of zip file to be upload to the App Center');
85
- if (!packageVersion)
86
- throw new Error('Missing packageVersion to be send to the App Center');
92
+ throw new Error(`Missing App Center Token. To fix it, set "${ENV_APPCENTER_TOKEN_PRODUCTION_PACKAGES}" env variable`);
93
+ const originalZipPath = (0, resolvers_1.getProductionZipFileRelativePath)(c);
94
+ const { dir, name } = path.parse(originalZipPath);
95
+ const zipPath = path.join(dir, `${name}_${formatDateTime(new Date())}.zip`);
96
+ fs.renameSync(originalZipPath, zipPath);
87
97
  const tempReleaseNotesPath = `RELEASE_NOTES_APPCENTER_PRODUCTION_PACKAGES.md`;
88
98
  if (fs.existsSync(tempReleaseNotesPath)) {
89
99
  fs.unlinkSync(tempReleaseNotesPath);
@@ -108,7 +118,7 @@ const deployProductionPackagesToAppCenter = (c) => {
108
118
  console.log(`Deploying Production packages to AppCenter.ms...`);
109
119
  (0, appCenter_1.appCenterRelease)({
110
120
  projectName: centerAppName,
111
- buildVersion: packageVersion,
121
+ buildVersion: '0',
112
122
  filePath: zipPath,
113
123
  releaseNotesPath: tempReleaseNotesPath,
114
124
  token,
@@ -24,11 +24,13 @@ const beautifyPlatformName = (platformName) => {
24
24
  switch (platformName.toLowerCase()) {
25
25
  case constants_1.Platforms.ANDROIDTV: return 'AndroidTV';
26
26
  case constants_1.Platforms.ENTONE: return 'Entone';
27
+ case constants_1.Platforms.FIRETV: return 'FireTV';
27
28
  case constants_1.Platforms.HBBTV: return 'HbbTV';
28
29
  case constants_1.Platforms.KREATV: return 'KreaTV';
29
30
  case constants_1.Platforms.SAPHI: return 'Saphi (Philips)';
30
31
  case constants_1.Platforms.TIZEN: return 'Tizen (Samsung)';
31
32
  case constants_1.Platforms.VIDAA: return 'VIDAA (Hisense)';
33
+ case constants_1.Platforms.SMARTCAST: return 'SmartCast (VIZIO)';
32
34
  case constants_1.Platforms.WEBOS: return 'webOS (LG)';
33
35
  case constants_1.Platforms.WEBTV: return 'WebTV';
34
36
  case constants_1.Platforms.XBOX: return 'Xbox';
@@ -38,6 +38,7 @@ exports.SDKXbox = SDKXbox;
38
38
  const handlePlatformSdk = async (c) => {
39
39
  switch (c.platform) {
40
40
  case constants_1.Platforms.ANDROIDTV:
41
+ case constants_1.Platforms.FIRETV:
41
42
  return SDKAndroidtv.handleAndroidTVSdk(c);
42
43
  case constants_1.Platforms.TIZEN:
43
44
  return SDKTizen.handleTizenSdk(c);
@@ -22,11 +22,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
25
28
  Object.defineProperty(exports, "__esModule", { value: true });
26
29
  exports.handleAndroidTVSdk = exports.configureAndroidTVProject = exports.buildAndroidTVProject = void 0;
27
30
  const fs = __importStar(require("fs"));
28
31
  const path = __importStar(require("path"));
29
32
  const os = __importStar(require("os"));
33
+ const ip_1 = __importDefault(require("ip"));
30
34
  const semver = __importStar(require("semver"));
31
35
  const child_process_1 = require("child_process");
32
36
  const rnv_1 = require("rnv");
@@ -35,6 +39,7 @@ const sdk_webpack_2 = require("../sdk-webpack");
35
39
  const sdk_utils_1 = require("../sdk-utils");
36
40
  const services_1 = require("../sdk-utils/sdk-installer/services");
37
41
  const resolvers_1 = require("../../resolvers");
42
+ const copyTheoPlayerLibs_1 = require("../../utils/copyTheoPlayerLibs");
38
43
  const copyEnvironmentFolder_1 = require("../../utils/copyEnvironmentFolder");
39
44
  const constants_1 = require("../../constants");
40
45
  const flavourName = 'bigscreenAppstage';
@@ -62,10 +67,10 @@ const buildAndroidTVProject = async (c) => {
62
67
  const taskBundleName = `bundle${taskFlavourName}${taskBuildType}`;
63
68
  const cmd1 = `cd ${projectDir} && ${gradlew} --stacktrace ${taskAssembleName}`;
64
69
  const cmd2 = `cd ${projectDir} && ${gradlew} --stacktrace ${taskBundleName}`;
65
- console.log(`Running command: ${cmd1}`);
66
- (0, child_process_1.execSync)(cmd1);
67
- console.log(`Running command: ${cmd2}`);
68
- (0, child_process_1.execSync)(cmd2);
70
+ console.log(`Running command:: ${cmd1}`);
71
+ (0, child_process_1.execSync)(cmd1, { stdio: 'inherit' });
72
+ console.log(`Running command:: ${cmd2}`);
73
+ (0, child_process_1.execSync)(cmd2, { stdio: 'inherit' });
69
74
  fs.rmSync(tmpOutputDir, { recursive: true, force: true });
70
75
  fs.mkdirSync(tmpOutputDir);
71
76
  if (!fs.existsSync(outputDir)) {
@@ -139,8 +144,8 @@ const configureProject = (c) => {
139
144
  const versionCode = parseInt(`${major}${minor}${patch}00`, 10);
140
145
  const appId = rnv_1.Common.getConfigProp(c, c.platform, 'id', '');
141
146
  const minSdkVersion = rnv_1.Common.getConfigProp(c, c.platform, 'minSdkVersion', 21);
142
- const targetSdkVersion = rnv_1.Common.getConfigProp(c, c.platform, 'targetSdkVersion', 31);
143
- const compileSdkVersion = rnv_1.Common.getConfigProp(c, c.platform, 'compileSdkVersion', 31);
147
+ const targetSdkVersion = rnv_1.Common.getConfigProp(c, c.platform, 'targetSdkVersion', 33);
148
+ const compileSdkVersion = rnv_1.Common.getConfigProp(c, c.platform, 'compileSdkVersion', 33);
144
149
  const injects = [{
145
150
  pattern: '{{MIN_SDK_VERSION}}',
146
151
  override: minSdkVersion,
@@ -164,9 +169,9 @@ const configureProject = (c) => {
164
169
  rnv_1.FileUtils.writeCleanFile(buildGradleFilePath, buildGradleFilePath, injects, null, c);
165
170
  };
166
171
  const getHostedAppEntryUrl = (c) => {
167
- const { platform, runtime } = c;
172
+ const { platform, runtime, program } = c;
168
173
  let baseUrl = '';
169
- if (c.program.productionPackagesHostedUrl) {
174
+ if (program.productionPackagesHostedUrl) {
170
175
  baseUrl = (0, resolvers_1.resolveProductionPackagesBaseUrl)(c);
171
176
  }
172
177
  else {
@@ -176,23 +181,33 @@ const getHostedAppEntryUrl = (c) => {
176
181
  flavour: runtime.appId,
177
182
  });
178
183
  }
179
- return `${baseUrl}/public/index.html`;
184
+ if (baseUrl)
185
+ return `${baseUrl}/public/index.html`;
186
+ const localIp = program.debugIp ?? ip_1.default.address();
187
+ const localPort = runtime.port ?? 8100;
188
+ return `http://${localIp}:${localPort}/`;
180
189
  };
181
190
  const configureEntryUrl = (c) => {
182
191
  rnv_1.Logger.logTask('configureEntryUrl');
192
+ const buildGradleFileName = 'build.gradle';
193
+ const buildGradleFilePath = path.join(rnv_1.Common.getPlatformProjectDir(c), 'app', buildGradleFileName);
183
194
  const entryUrl = getHostedAppEntryUrl(c);
184
- const configFileName = 'configuration.json';
195
+ const theoLicense = process.env['THEO_LICENSE'] ??
196
+ rnv_1.Common.getConfigProp(c, c.platform, 'theoLicense', '');
185
197
  const injects = [{
186
198
  pattern: '{{APP_URL}}',
187
199
  override: entryUrl,
200
+ }, {
201
+ pattern: '{{THEO_LICENSE}}',
202
+ override: theoLicense,
188
203
  }];
189
- const file = path.join(rnv_1.Common.getPlatformProjectDir(c), 'app/src', flavourName, 'res/raw', configFileName);
190
- rnv_1.FileUtils.writeCleanFile(file, file, injects, null, c);
204
+ rnv_1.Common.addSystemInjects(c, injects);
205
+ rnv_1.FileUtils.writeCleanFile(buildGradleFilePath, buildGradleFilePath, injects, null, c);
191
206
  };
192
207
  const configureAndroidTVProject = async (c) => {
193
208
  rnv_1.Logger.logTask('configureAndroidTVProject');
194
209
  c.runtime.platformBuildsProjectPath = rnv_1.Common.getPlatformProjectDir(c);
195
- const platform = constants_1.Platforms.ANDROIDTV;
210
+ const platform = c.platform;
196
211
  const resSubPath = `app/src/${flavourName}/res`;
197
212
  await rnv_1.ProjectManager.copyAssetsFolder(c, platform, resSubPath);
198
213
  (0, copyEnvironmentFolder_1.copyEnvFolderInProject)(c, resSubPath);
@@ -205,6 +220,7 @@ const configureAndroidTVProject = async (c) => {
205
220
  fs.chmodSync(gradlew, '755');
206
221
  await rnv_1.ProjectManager.copyBuildsFolder(c, platform);
207
222
  (0, copyEnvironmentFolder_1.copyEnvFolderInPublicConfig)(c);
223
+ (0, copyTheoPlayerLibs_1.copyTheoPlayerLibs)(c);
208
224
  };
209
225
  exports.configureAndroidTVProject = configureAndroidTVProject;
210
226
  const configureAndroidProperties = async (c) => {
@@ -33,6 +33,7 @@ const rnv_1 = require("rnv");
33
33
  const sdk_webpack_1 = require("@rnv/sdk-webpack");
34
34
  const sdk_webpack_2 = require("../sdk-webpack");
35
35
  const sdk_utils_1 = require("../sdk-utils");
36
+ const copyTheoPlayerLibs_1 = require("../../utils/copyTheoPlayerLibs");
36
37
  const copyEnvironmentFolder_1 = require("../../utils/copyEnvironmentFolder");
37
38
  const constants_1 = require("../../constants");
38
39
  const { createDevelopTizenCertificate, DEFAULT_CERTIFICATE_NAME, DEFAULT_SECURITY_PROFILE_NAME, } = rnv_1.SDKManager.Tizen;
@@ -93,6 +94,7 @@ const configureTizenProject = async (c) => {
93
94
  configureProject(c);
94
95
  await rnv_1.ProjectManager.copyBuildsFolder(c, platform);
95
96
  (0, copyEnvironmentFolder_1.copyEnvFolderInPublicConfig)(c);
97
+ (0, copyTheoPlayerLibs_1.copyTheoPlayerLibs)(c);
96
98
  };
97
99
  exports.configureTizenProject = configureTizenProject;
98
100
  const handleLinuxKeyring = () => {
@@ -31,6 +31,7 @@ const rnv_1 = require("rnv");
31
31
  const sdk_webpack_1 = require("@rnv/sdk-webpack");
32
32
  const sdk_webpack_2 = require("../sdk-webpack");
33
33
  const sdk_utils_1 = require("../sdk-utils");
34
+ const copyTheoPlayerLibs_1 = require("../../utils/copyTheoPlayerLibs");
34
35
  const copyEnvironmentFolder_1 = require("../../utils/copyEnvironmentFolder");
35
36
  const constants_1 = require("../../constants");
36
37
  const buildWebOSProject = async (c) => {
@@ -66,6 +67,7 @@ const configureWebOSProject = async (c) => {
66
67
  configureProject(c);
67
68
  await rnv_1.ProjectManager.copyBuildsFolder(c, platform);
68
69
  (0, copyEnvironmentFolder_1.copyEnvFolderInPublicConfig)(c);
70
+ (0, copyTheoPlayerLibs_1.copyTheoPlayerLibs)(c);
69
71
  };
70
72
  exports.configureWebOSProject = configureWebOSProject;
71
73
  const sdkInstallerUUrl = 'https://s3.amazonaws.com/tools.nxg-bigscreen.24imedia.com/sdks/webos/ares_webos_builder_v1.10.4_multiplatform.zip';
@@ -9,6 +9,7 @@ const ip_1 = __importDefault(require("ip"));
9
9
  const rnv_1 = require("rnv");
10
10
  const sdk_webpack_1 = require("@rnv/sdk-webpack");
11
11
  const resolvers_1 = require("../../resolvers");
12
+ const copyTheoPlayerLibs_1 = require("../../utils/copyTheoPlayerLibs");
12
13
  const copyEnvironmentFolder_1 = require("../../utils/copyEnvironmentFolder");
13
14
  const configureWebProject = async (c) => {
14
15
  rnv_1.Logger.logTask('configureWebProject');
@@ -21,6 +22,7 @@ const configureWebProject = async (c) => {
21
22
  await (0, sdk_webpack_1.configureCoreWebProject)(c);
22
23
  await rnv_1.ProjectManager.copyBuildsFolder(c, platform);
23
24
  (0, copyEnvironmentFolder_1.copyEnvFolderInPublicConfig)(c);
25
+ (0, copyTheoPlayerLibs_1.copyTheoPlayerLibs)(c);
24
26
  };
25
27
  exports.configureWebProject = configureWebProject;
26
28
  const getWebpackPath = () => {
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.deployToS3 = exports.urlToS3Protocol = void 0;
26
+ exports.deployToS3 = void 0;
27
27
  const path = __importStar(require("path"));
28
28
  const rnv_1 = require("rnv");
29
29
  const aws = __importStar(require("./aws"));
@@ -45,27 +45,20 @@ const uploadPublicDir = (sourcePath, uploadPath) => {
45
45
  rnv_1.Logger.logDebug(`uploadPublicDir: src: ${publicDirLocalPath}, dest: ${publicDirRemotePath}`);
46
46
  aws.cp(publicDirLocalPath, publicDirRemotePath);
47
47
  };
48
- const urlToS3Protocol = (url) => {
49
- const hostWithPath = url.split('://')[1];
50
- const bucketHostnameAwsPostfix = '.s3.amazonaws.com';
51
- return hostWithPath.replace(bucketHostnameAwsPostfix, '');
52
- };
53
- exports.urlToS3Protocol = urlToS3Protocol;
54
48
  const deployToS3 = async (c) => {
55
49
  rnv_1.Logger.logTask(`deployToS3`);
56
50
  const { platform, runtime } = c;
57
51
  const schemeDirName = c.program.schemeFolder ? (0, getSafeSchemeString_1.getSafeSchemeString)(runtime.scheme) : '';
58
52
  const sourcePath = path.join(c.paths.project.builds.dir, schemeDirName, `${runtime.appId}_${platform}`);
59
53
  const { isBuildHosted } = getConfigProp(c, platform, 'webpackConfig', {});
60
- const baseUrl = (0, resolvers_1.resolveBaseUrl)({
54
+ const uploadPath = (0, resolvers_1.resolveS3BucketAppPath)({
61
55
  platform,
62
56
  scheme: runtime.scheme || '',
63
57
  flavour: runtime.appId,
64
58
  });
65
- if (!baseUrl) {
59
+ if (!uploadPath) {
66
60
  return false;
67
61
  }
68
- const uploadPath = urlToS3Protocol(baseUrl);
69
62
  aws.rm(`${uploadPath}/`);
70
63
  uploadPackage(c, sourcePath, uploadPath);
71
64
  if (platform === constants_1.Platforms.HBBTV) {
@@ -24,17 +24,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.checkAWSAuth = exports.checkDistVersionAvailability = exports.distToLiveS3 = void 0;
27
- const resolveBaseUrl_1 = require("../../../resolvers/resolveBaseUrl");
27
+ const resolvers_1 = require("../../../resolvers");
28
28
  const resolveGenericRnvConfig_1 = require("../../../resolvers/resolveGenericRnvConfig");
29
- const deployS3_1 = require("./deployS3");
30
29
  const aws = __importStar(require("./aws"));
31
30
  const getUploadPath = (options, version) => {
32
31
  const { packageVersion } = (0, resolveGenericRnvConfig_1.getBaseConfig)().buildConfig?.common;
33
- const baseUrl = (0, resolveBaseUrl_1.resolveBaseUrl)(options);
34
- if (!baseUrl) {
32
+ const s3BucketAppPath = (0, resolvers_1.resolveS3BucketAppPath)(options);
33
+ if (!s3BucketAppPath) {
35
34
  return undefined;
36
35
  }
37
- return (0, deployS3_1.urlToS3Protocol)(baseUrl).replace(packageVersion, version);
36
+ return s3BucketAppPath.replace(packageVersion, version);
38
37
  };
39
38
  const checkAWSAuth = () => {
40
39
  try {
@@ -49,7 +49,7 @@ const getLocalBuildPackagePath = (c) => {
49
49
  const { runtime, platform } = c;
50
50
  const schemeDirName = c.program.schemeFolder ? (0, getSafeSchemeString_1.getSafeSchemeString)(runtime.scheme) : '';
51
51
  const appDirPath = path.join(c.paths.project.builds.dir, schemeDirName, `${runtime.appId}_${platform}`);
52
- path.join(appDirPath, 'output', (0, resolvers_1.resolveBuildFileName)(c));
52
+ return path.join(appDirPath, 'output', (0, resolvers_1.resolveBuildFileName)(c));
53
53
  };
54
54
  const resolveRemotePaths = (c) => {
55
55
  const { scheme, appId } = c.runtime;