@24i/smartapps-bigscreen-rnv-build-engine 0.18.2 → 5.0.0-alpha.16
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/.eslintrc.vegaos.js +32 -0
- package/dist/src/__tests__/engine.spec.js +1 -0
- package/dist/src/__tests__/resolvers/resolveBuildVersion.spec.js +21 -7
- package/dist/src/resolvers/shared/constructFullUrl.js +1 -1
- package/dist/src/scripts/release/productionPackages/notifySlack.js +11 -13
- package/dist/src/sdks/sdk-androidtv/sdkAndroidtv.js +5 -3
- package/dist/src/sdks/sdk-tizen/sdkTizen.js +1 -1
- package/dist/src/sdks/sdk-vegaos/sdkVegaOS.js +9 -7
- package/dist/src/tasks/task.rnv.hooks.run.js +1 -24
- package/dist/src/tasks/task.rnv.project.configure.js +4 -1
- package/dist/src/utils/copyEnvironmentFolder.js +2 -2
- package/dist/src/utils/forEachSupportedPlatformFlavour.js +14 -7
- package/dist/src/utils/getSafeSchemeString.js +1 -3
- package/dist/src/utils/zipBuildsByPlatforms.js +3 -3
- package/dist/src/utils/zipStagingProdBuildsByPlatforms.js +17 -16
- package/dist/templates/platforms/_shared/template.js +2 -1
- package/dist/templates/platforms/_shared/webpack.base.js +12 -0
- package/dist/templates/platforms/vegaos/project/src/deviceApi/purchase.ts +0 -14
- package/fixDependency.js +53 -11
- package/index.js +103 -0
- package/jest.config.js +3 -0
- package/package.json +92 -89
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
env: {
|
|
3
|
+
browser: true,
|
|
4
|
+
es2021: true,
|
|
5
|
+
node: true,
|
|
6
|
+
},
|
|
7
|
+
parser: '@typescript-eslint/parser',
|
|
8
|
+
parserOptions: {
|
|
9
|
+
ecmaVersion: 'latest',
|
|
10
|
+
sourceType: 'module',
|
|
11
|
+
ecmaFeatures: { jsx: true },
|
|
12
|
+
},
|
|
13
|
+
plugins: ['@typescript-eslint', 'react', 'react-hooks'],
|
|
14
|
+
extends: [
|
|
15
|
+
'eslint:recommended',
|
|
16
|
+
'plugin:@typescript-eslint/recommended',
|
|
17
|
+
'plugin:react/recommended',
|
|
18
|
+
'plugin:react-hooks/recommended',
|
|
19
|
+
],
|
|
20
|
+
settings: {
|
|
21
|
+
react: { version: 'detect' },
|
|
22
|
+
},
|
|
23
|
+
rules: {
|
|
24
|
+
'no-unused-vars': 'off',
|
|
25
|
+
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
|
26
|
+
'react/react-in-jsx-scope': 'off',
|
|
27
|
+
},
|
|
28
|
+
overrides: [{
|
|
29
|
+
files: ['**/metro.config.js'],
|
|
30
|
+
rules: { '@typescript-eslint/no-var-requires': 'off' },
|
|
31
|
+
}],
|
|
32
|
+
};
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const engine_1 = __importDefault(require("../engine"));
|
|
7
7
|
const constants_1 = require("../constants");
|
|
8
8
|
const engineTasks_1 = require("../tasks/engineTasks");
|
|
9
|
+
jest.mock('inquirer', () => ({ prompt: jest.fn() }));
|
|
9
10
|
jest.mock('manifoldjs-windows10', () => ({}));
|
|
10
11
|
jest.mock('../../../renative.engine.json', () => ({ __esModule: true, id: 'engineID', plugins: {} }), { virtual: true });
|
|
11
12
|
describe('engine config', () => {
|
|
@@ -29,9 +29,15 @@ describe('resolveBuildVersion', () => {
|
|
|
29
29
|
expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RC_PROD_LATEST })).toBe('v1.0.0.rc');
|
|
30
30
|
expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_STAGING })).toBe('v1.0.0');
|
|
31
31
|
expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_PROD })).toBe('v1.0.0');
|
|
32
|
-
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
33
|
+
platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_STAGING_LATEST,
|
|
34
|
+
})).toBe('v1.0.0');
|
|
35
|
+
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
36
|
+
platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_PROD_LATEST,
|
|
37
|
+
})).toBe('v1.0.0');
|
|
38
|
+
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
39
|
+
platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_STAGING_DIST,
|
|
40
|
+
})).toBe('v1.0.0');
|
|
35
41
|
expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_PROD_DIST })).toBe('v1.0.0');
|
|
36
42
|
});
|
|
37
43
|
});
|
|
@@ -51,10 +57,18 @@ describe('resolveBuildVersion', () => {
|
|
|
51
57
|
expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RC_PROD_LATEST })).toBe('v1.0.0.rc-2');
|
|
52
58
|
expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_STAGING })).toBe('v1.0.0-2');
|
|
53
59
|
expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_PROD })).toBe('v1.0.0-2');
|
|
54
|
-
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
60
|
+
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
61
|
+
platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_STAGING_LATEST,
|
|
62
|
+
})).toBe('v1.0.0-2');
|
|
63
|
+
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
64
|
+
platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_PROD_LATEST,
|
|
65
|
+
})).toBe('v1.0.0-2');
|
|
66
|
+
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
67
|
+
platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_STAGING_DIST,
|
|
68
|
+
})).toBe('v1.0.0-2');
|
|
69
|
+
expect((0, resolveBuildVersion_1.resolveBuildVersion)({
|
|
70
|
+
platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_STAGING_DIST,
|
|
71
|
+
})).toBe('v1.0.0-2');
|
|
58
72
|
});
|
|
59
73
|
});
|
|
60
74
|
});
|
|
@@ -4,7 +4,7 @@ exports.constructFullUrl = void 0;
|
|
|
4
4
|
const resolveBuildEnvName_1 = require("../resolveBuildEnvName");
|
|
5
5
|
const constants_1 = require("../../constants");
|
|
6
6
|
const constructFullUrl = ({ baseUrl, scheme, c }) => {
|
|
7
|
-
const
|
|
7
|
+
const packageVersion = c.buildConfig?.common?.packageVersion;
|
|
8
8
|
const envName = (0, resolveBuildEnvName_1.resolveBuildEnvName)(scheme);
|
|
9
9
|
switch (scheme) {
|
|
10
10
|
case constants_1.BuildSchemes.DEV_LATEST:
|
|
@@ -3,19 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.notifySlack = void 0;
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
5
|
const slackBlockKitBuilder_1 = require("../../utils/slackBlockKitBuilder");
|
|
6
|
-
const getSlackPayload = (appName, fileName, filePath) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
};
|
|
6
|
+
const getSlackPayload = (appName, fileName, filePath) => ({
|
|
7
|
+
blocks: [
|
|
8
|
+
slackBlockKitBuilder_1.Divider.plain(),
|
|
9
|
+
slackBlockKitBuilder_1.Section.mrkdwn(`${appName} Production Packages`),
|
|
10
|
+
slackBlockKitBuilder_1.Context.mrkdwns([fileName]),
|
|
11
|
+
slackBlockKitBuilder_1.Actions.buttons([{
|
|
12
|
+
text: 'Download Production Packages',
|
|
13
|
+
url: filePath,
|
|
14
|
+
}]),
|
|
15
|
+
],
|
|
16
|
+
});
|
|
19
17
|
const notifySlack = (c, fileName) => {
|
|
20
18
|
const appName = c.buildConfig.common.appName ?? '';
|
|
21
19
|
const webHookUrl = c.buildConfig.common.deploy.slack?.webhookUrl ?? '';
|
|
@@ -230,9 +230,9 @@ const configureIap = (c) => {
|
|
|
230
230
|
const buildGradleFilePath = path.join(projectDir, 'app', buildGradleFileName);
|
|
231
231
|
const flavorFilePath = path.join(projectDir, `app/src/${flavourName}/kotlin/com/twentyfouri/tvbridge/Flavor.kt`);
|
|
232
232
|
const enableIap = rnv_1.Common.getConfigProp(c, c.platform, 'enableIap', false);
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
233
|
+
const iapDependencies = [];
|
|
234
|
+
const flavorImports = [];
|
|
235
|
+
const flavorIapFactories = [];
|
|
236
236
|
if (enableIap) {
|
|
237
237
|
switch (c.platform) {
|
|
238
238
|
case 'firetv':
|
|
@@ -245,6 +245,8 @@ const configureIap = (c) => {
|
|
|
245
245
|
flavorImports.push('import com.twentyfouri.bridgetv.googleiap.GoogleIapServiceFactory');
|
|
246
246
|
flavorIapFactories.push('GoogleIapServiceFactory');
|
|
247
247
|
break;
|
|
248
|
+
default:
|
|
249
|
+
break;
|
|
248
250
|
}
|
|
249
251
|
}
|
|
250
252
|
const injects = [{
|
|
@@ -106,7 +106,7 @@ const handleLinuxKeyring = () => {
|
|
|
106
106
|
}
|
|
107
107
|
};
|
|
108
108
|
const setTizenCertificate = (c) => {
|
|
109
|
-
const { TIZEN_SECURITY_PROFILE_NAME = '24i-SmartApps-BigScreen', TIZEN_AUTHOR_CERTIFICATE_RELATIVE_PATH = 'certificates/24i_smartapps_bigscreen_author.p12', TIZEN_DISTRIBUTOR_CERTIFICATE_RELATIVE_PATH = 'certificates/24i_smartapps_bigscreen_distributor.p12', TIZEN_AUTHOR_CERTIFICATE_PASSWORD, } = process.env;
|
|
109
|
+
const { TIZEN_SECURITY_PROFILE_NAME = '24i-SmartApps-BigScreen', TIZEN_AUTHOR_CERTIFICATE_RELATIVE_PATH = 'certificates/24i_smartapps_bigscreen_author.p12', TIZEN_DISTRIBUTOR_CERTIFICATE_RELATIVE_PATH = ('certificates/24i_smartapps_bigscreen_distributor.p12'), TIZEN_AUTHOR_CERTIFICATE_PASSWORD, } = process.env;
|
|
110
110
|
const tizenCliPath = c.cli.tizen;
|
|
111
111
|
const isDebug = c.runtime.scheme === constants_1.BuildSchemes.DEBUG;
|
|
112
112
|
if (!fs.existsSync(TIZEN_AUTHOR_CERTIFICATE_RELATIVE_PATH)) {
|
|
@@ -54,7 +54,8 @@ const getHostedAppUrl = (c) => {
|
|
|
54
54
|
if (baseUrl)
|
|
55
55
|
return `${baseUrl}/public/index.html`;
|
|
56
56
|
const localIp = program.debugIp ?? ip_1.default.address();
|
|
57
|
-
const
|
|
57
|
+
const defaultLocalPort = 8100;
|
|
58
|
+
const localPort = runtime.port ?? defaultLocalPort;
|
|
58
59
|
return `http://${localIp}:${localPort}/`;
|
|
59
60
|
};
|
|
60
61
|
const configureAppUrl = (c) => {
|
|
@@ -105,7 +106,7 @@ const copyAppIcon = (c) => {
|
|
|
105
106
|
rnv_1.Logger.logInfo(`App icon copied from: ${srcIconPath}`);
|
|
106
107
|
}
|
|
107
108
|
else {
|
|
108
|
-
rnv_1.Logger.logDebug(
|
|
109
|
+
rnv_1.Logger.logDebug('No environment-specific app icon found, skipping copy.');
|
|
109
110
|
}
|
|
110
111
|
};
|
|
111
112
|
const installDependencies = (c) => {
|
|
@@ -133,14 +134,15 @@ const buildVegaOSProject = async (c) => {
|
|
|
133
134
|
const watchListOutput = (0, child_process_1.execSync)('watchman watch-list', { stdio: 'pipe' }).toString();
|
|
134
135
|
const watchList = JSON.parse(watchListOutput);
|
|
135
136
|
const parentWatches = (watchList.roots || []).filter((root) => projectDir.startsWith(root) && root !== projectDir);
|
|
136
|
-
|
|
137
|
+
parentWatches.forEach((parentWatch) => {
|
|
137
138
|
(0, child_process_1.execSync)(`watchman watch-del '${parentWatch}'`, { stdio: 'pipe' });
|
|
138
|
-
}
|
|
139
|
+
});
|
|
139
140
|
}
|
|
140
141
|
catch {
|
|
141
142
|
}
|
|
142
143
|
rnv_1.Logger.logInfo(`Building VegaOS project (${buildType})...`);
|
|
143
|
-
const buildCmd = `npx react-native build-vega --build-type ${buildType}
|
|
144
|
+
const buildCmd = `npx react-native build-vega --build-type ${buildType} `
|
|
145
|
+
+ `--build-version ${appVersion} --build-number ${versionCode}`;
|
|
144
146
|
(0, child_process_1.execSync)(buildCmd, { cwd: projectDir, stdio: 'inherit' });
|
|
145
147
|
if (!fs.existsSync(outputDir)) {
|
|
146
148
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
@@ -151,7 +153,7 @@ const buildVegaOSProject = async (c) => {
|
|
|
151
153
|
if (!fs.existsSync(dir))
|
|
152
154
|
return;
|
|
153
155
|
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
154
|
-
|
|
156
|
+
entries.forEach((entry) => {
|
|
155
157
|
const fullPath = path.join(dir, entry.name);
|
|
156
158
|
if (entry.isDirectory()) {
|
|
157
159
|
findArmv7Vpkg(fullPath);
|
|
@@ -159,7 +161,7 @@ const buildVegaOSProject = async (c) => {
|
|
|
159
161
|
else if (entry.name.endsWith('.vpkg') && fullPath.includes('armv7')) {
|
|
160
162
|
armv7VpkgFile = fullPath;
|
|
161
163
|
}
|
|
162
|
-
}
|
|
164
|
+
});
|
|
163
165
|
};
|
|
164
166
|
findArmv7Vpkg(buildDir);
|
|
165
167
|
if (armv7VpkgFile) {
|
|
@@ -1,32 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.customRnvHooksRunTask = void 0;
|
|
27
|
-
const inquirer = __importStar(require("inquirer"));
|
|
28
4
|
const rnv_1 = require("rnv");
|
|
29
5
|
const buildHooks_1 = require("rnv/dist/core/projectManager/buildHooks");
|
|
6
|
+
const inquirer = require('inquirer');
|
|
30
7
|
const { logTask, logInfo } = rnv_1.Logger;
|
|
31
8
|
const { executeTask } = rnv_1.TaskManager;
|
|
32
9
|
const { fsExistsSync } = rnv_1.FileUtils;
|
|
@@ -38,9 +38,12 @@ const { TASK_INSTALL, TASK_PROJECT_CONFIGURE, TASK_TEMPLATE_APPLY, TASK_APP_CONF
|
|
|
38
38
|
const { checkAndCreateBabelConfig, copyRuntimeAssets, cleanPlaformAssets, checkAndCreateGitignore, versionCheck, } = rnv_1.ProjectManager;
|
|
39
39
|
const { configureEngines, getEngineRunnerByPlatform } = rnv_1.EngineManager;
|
|
40
40
|
const { executeTask, initializeTask, findSuitableTask } = rnv_1.TaskManager;
|
|
41
|
+
const resolveBuildEnginePackageRoot = () => path.dirname(require.resolve('@24i/smartapps-bigscreen-rnv-build-engine/package.json', { paths: [process.cwd(), __dirname] }));
|
|
41
42
|
const patchEngineTemplatesPath = (c) => {
|
|
42
|
-
const
|
|
43
|
+
const packageRoot = resolveBuildEnginePackageRoot();
|
|
44
|
+
const templatesPath = path.join(packageRoot, 'dist', 'templates');
|
|
43
45
|
const engine = getEngineRunnerByPlatform(c, c.platform);
|
|
46
|
+
engine.rootPath = packageRoot;
|
|
44
47
|
engine.originalTemplatePlatformsDir = path.join(templatesPath, 'platforms');
|
|
45
48
|
engine.originalTemplateAssetsDir = path.join(templatesPath, 'assets');
|
|
46
49
|
engine.originalTemplatePlatformProjectDir = path.join(templatesPath, 'platforms', 'project');
|
|
@@ -48,8 +48,8 @@ const copyEnvironmentFolder = (c, dirPath) => {
|
|
|
48
48
|
rnv_1.FileUtils.copyFolderContentsRecursiveSync(envFolderPath, path.join(envFolderPath, '..'));
|
|
49
49
|
}
|
|
50
50
|
const envs = ['dev', 'staging', 'prod'];
|
|
51
|
-
envs.forEach((
|
|
52
|
-
const envDir = path.join(dirPath, `_${
|
|
51
|
+
envs.forEach((environmentType) => {
|
|
52
|
+
const envDir = path.join(dirPath, `_${environmentType}`);
|
|
53
53
|
fs.rmSync(envDir, { recursive: true, force: true });
|
|
54
54
|
});
|
|
55
55
|
};
|
|
@@ -4,7 +4,7 @@ exports.forEachSupportedPlatformFlavour = exports.forEachPlatformFlavour = expor
|
|
|
4
4
|
const resolvers_1 = require("../resolvers");
|
|
5
5
|
const getProgressMessage = ({ schemes, schemeIndex, platforms, platformIndex, flavours, flavourIndex, }) => {
|
|
6
6
|
const printScheme = schemes && schemes.length && schemeIndex !== undefined;
|
|
7
|
-
let string =
|
|
7
|
+
let string = '\nProcessing';
|
|
8
8
|
if (printScheme) {
|
|
9
9
|
string += ` "${schemes[schemeIndex]}" scheme"`;
|
|
10
10
|
string += ` (${schemeIndex + 1}/${schemes.length}),`;
|
|
@@ -16,16 +16,23 @@ const getProgressMessage = ({ schemes, schemeIndex, platforms, platformIndex, fl
|
|
|
16
16
|
return string;
|
|
17
17
|
};
|
|
18
18
|
exports.getProgressMessage = getProgressMessage;
|
|
19
|
-
const
|
|
19
|
+
const forEachPlatformFlavourInternal = (platforms, c, cb, options = {}) => {
|
|
20
20
|
const { ignoredPlatforms = [], schemes = [], schemeIndex = 0, } = options;
|
|
21
|
-
const processPlatformFlavours = (platform, platformIndex,
|
|
21
|
+
const processPlatformFlavours = (platform, platformIndex, platformList) => {
|
|
22
22
|
if (ignoredPlatforms.includes(platform)) {
|
|
23
|
-
|
|
23
|
+
const skippedPlatform = platformList[platformIndex];
|
|
24
|
+
console.log(`\nSkipping "${skippedPlatform}" platform `
|
|
25
|
+
+ `(${platformIndex + 1}/${platformList.length}).`);
|
|
24
26
|
return;
|
|
25
27
|
}
|
|
26
28
|
const processFlavour = (flavour, flavourIndex, flavours) => {
|
|
27
29
|
console.log(getProgressMessage({
|
|
28
|
-
schemes,
|
|
30
|
+
schemes,
|
|
31
|
+
schemeIndex,
|
|
32
|
+
platforms: platformList,
|
|
33
|
+
platformIndex,
|
|
34
|
+
flavours,
|
|
35
|
+
flavourIndex,
|
|
29
36
|
}));
|
|
30
37
|
const { scheme } = c.runtime;
|
|
31
38
|
return cb({ platform, flavour, scheme });
|
|
@@ -37,10 +44,10 @@ const _forEachPlatformFlavour = (platforms, c, cb, options = {}) => {
|
|
|
37
44
|
};
|
|
38
45
|
const forEachSupportedPlatformFlavour = (c, cb, options = {}) => {
|
|
39
46
|
const supportedPlatforms = (0, resolvers_1.resolveSupportedPlatforms)(c);
|
|
40
|
-
|
|
47
|
+
forEachPlatformFlavourInternal(supportedPlatforms, c, cb, options);
|
|
41
48
|
};
|
|
42
49
|
exports.forEachSupportedPlatformFlavour = forEachSupportedPlatformFlavour;
|
|
43
50
|
const forEachPlatformFlavour = (platforms, c, cb) => {
|
|
44
|
-
|
|
51
|
+
forEachPlatformFlavourInternal(platforms, c, cb);
|
|
45
52
|
};
|
|
46
53
|
exports.forEachPlatformFlavour = forEachPlatformFlavour;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getSafeSchemeString = void 0;
|
|
4
|
-
const getSafeSchemeString = (scheme) =>
|
|
5
|
-
return scheme.replace(/:/g, '_');
|
|
6
|
-
};
|
|
4
|
+
const getSafeSchemeString = (scheme) => scheme.replace(/:/g, '_');
|
|
7
5
|
exports.getSafeSchemeString = getSafeSchemeString;
|
|
@@ -29,7 +29,7 @@ const fs_1 = require("fs");
|
|
|
29
29
|
const path = __importStar(require("path"));
|
|
30
30
|
const glob = __importStar(require("glob"));
|
|
31
31
|
const resolvers_1 = require("../resolvers");
|
|
32
|
-
const getSafeSchemeString_1 = require("
|
|
32
|
+
const getSafeSchemeString_1 = require("./getSafeSchemeString");
|
|
33
33
|
const zipDir = (srcDir, outputFile) => (0, child_process_1.execSync)(`zip ${outputFile} -0 -j ${srcDir}/*`);
|
|
34
34
|
const getPlatformBuildsPaths = (c, platformName) => {
|
|
35
35
|
const { platformBuildsDir } = c.buildConfig.paths;
|
|
@@ -39,7 +39,7 @@ const getPlatformBuildsPaths = (c, platformName) => {
|
|
|
39
39
|
const platformBuildsGlob = `${outputGlob}/*.${(0, resolvers_1.resolveBuildFileExtension)(platformName)}`;
|
|
40
40
|
try {
|
|
41
41
|
const buildsPathsCandidates = glob.sync(platformBuildsGlob) || [];
|
|
42
|
-
return buildsPathsCandidates.filter((
|
|
42
|
+
return buildsPathsCandidates.filter((buildPath) => buildPath.includes(platformName));
|
|
43
43
|
}
|
|
44
44
|
catch (e) {
|
|
45
45
|
return [];
|
|
@@ -50,7 +50,7 @@ const processPlatform = (c, platformName) => {
|
|
|
50
50
|
if (platformBuildsPaths && platformBuildsPaths.length === 0)
|
|
51
51
|
return;
|
|
52
52
|
const outputZipFilePath = (0, resolvers_1.resolveZippedPlatformBuildsRelativeFilePath)(c, platformName);
|
|
53
|
-
const tempPlatformDir =
|
|
53
|
+
const tempPlatformDir = path.join(path.dirname(outputZipFilePath), platformName);
|
|
54
54
|
(0, fs_1.mkdirSync)(tempPlatformDir, { recursive: true });
|
|
55
55
|
const copyBuildFileIntoTempPlatformDir = (buildFilePath) => {
|
|
56
56
|
const buildFileName = path.basename(buildFilePath);
|
|
@@ -42,8 +42,7 @@ const getPlatformBuildsPaths = (c, platformName, scheme) => {
|
|
|
42
42
|
const platformBuildsGlob = `${outputGlob}/*.${(0, index_1.resolveBuildFileExtension)(platformName)}`;
|
|
43
43
|
try {
|
|
44
44
|
const buildsPathsCandidates = glob.sync(platformBuildsGlob) || [];
|
|
45
|
-
|
|
46
|
-
return platformBuildsPaths;
|
|
45
|
+
return buildsPathsCandidates.filter((buildPath) => buildPath.includes(platformName));
|
|
47
46
|
}
|
|
48
47
|
catch (e) {
|
|
49
48
|
return [];
|
|
@@ -56,8 +55,7 @@ const getPublicDirPath = (c, platform, flavour, scheme) => {
|
|
|
56
55
|
const baseC = (0, index_1.getBaseConfig)({ scheme });
|
|
57
56
|
const { isBuildHosted } = getConfigProp(baseC, platform, 'webpackConfig', {});
|
|
58
57
|
const sourceDirPath = isBuildHosted ? `${sourcePath}-public` : sourcePath;
|
|
59
|
-
|
|
60
|
-
return contentDirPath;
|
|
58
|
+
return path.join(sourceDirPath, 'project', 'public');
|
|
61
59
|
};
|
|
62
60
|
const copyProdContentIntoTempPlatformFlavourDir = (c, platform, flavour, prodScheme, destPlatformFlavourPath) => {
|
|
63
61
|
const srcPublicDirPath = getPublicDirPath(c, platform, flavour, prodScheme);
|
|
@@ -75,13 +73,16 @@ const processPlatform = (c, platformName, schemes) => {
|
|
|
75
73
|
throw new Error('Missing production scheme.');
|
|
76
74
|
}
|
|
77
75
|
const outputZipFilePath = (0, index_1.resolveZippedPlatformBuildsRelativeFilePath)(c, platformName);
|
|
78
|
-
const
|
|
79
|
-
|
|
76
|
+
const stagingBuildPaths = stagingScheme
|
|
77
|
+
? getPlatformBuildsPaths(c, platformName, stagingScheme) : [];
|
|
78
|
+
const prodBuildPaths = getPlatformBuildsPaths(c, platformName, prodScheme);
|
|
80
79
|
const flavourBuilds = [];
|
|
81
80
|
const supportedFlavours = (0, index_1.resolveSupportedFlavoursForPlatform)(c, platformName);
|
|
82
81
|
supportedFlavours.forEach((flavour) => {
|
|
83
|
-
const flavourStagingBuildsPaths =
|
|
84
|
-
|
|
82
|
+
const flavourStagingBuildsPaths = stagingBuildPaths
|
|
83
|
+
.filter((buildPath) => buildPath.includes(flavour));
|
|
84
|
+
const flavourProdBuildsPaths = prodBuildPaths
|
|
85
|
+
.filter((buildPath) => buildPath.includes(flavour));
|
|
85
86
|
flavourBuilds.push({
|
|
86
87
|
flavour,
|
|
87
88
|
stagingBuildsPaths: flavourStagingBuildsPaths,
|
|
@@ -90,15 +91,15 @@ const processPlatform = (c, platformName, schemes) => {
|
|
|
90
91
|
});
|
|
91
92
|
const tempPlatformDir = `${path.dirname(outputZipFilePath)}/${platformName}`;
|
|
92
93
|
flavourBuilds.forEach((flavourBuild) => {
|
|
93
|
-
const { flavour, stagingBuildsPaths, prodBuildsPaths } = flavourBuild;
|
|
94
|
-
const
|
|
95
|
-
const
|
|
96
|
-
(0, fs_1.mkdirSync)(
|
|
97
|
-
(0, fs_1.mkdirSync)(
|
|
98
|
-
[...
|
|
99
|
-
copyBuildFileIntoTempPlatformFlavourDir(buildFilePath,
|
|
94
|
+
const { flavour, stagingBuildsPaths: stagingPaths, prodBuildsPaths: prodPaths, } = flavourBuild;
|
|
95
|
+
const tempPlatformFlavourDir = path.join(tempPlatformDir, flavour);
|
|
96
|
+
const tempPlatformFlavourBuildsDir = path.join(tempPlatformFlavourDir, 'builds');
|
|
97
|
+
(0, fs_1.mkdirSync)(tempPlatformFlavourDir, { recursive: true });
|
|
98
|
+
(0, fs_1.mkdirSync)(tempPlatformFlavourBuildsDir, { recursive: true });
|
|
99
|
+
[...stagingPaths, ...prodPaths].forEach((buildFilePath) => {
|
|
100
|
+
copyBuildFileIntoTempPlatformFlavourDir(buildFilePath, tempPlatformFlavourBuildsDir);
|
|
100
101
|
});
|
|
101
|
-
copyProdContentIntoTempPlatformFlavourDir(c, platformName, flavour, prodScheme,
|
|
102
|
+
copyProdContentIntoTempPlatformFlavourDir(c, platformName, flavour, prodScheme, tempPlatformFlavourDir);
|
|
102
103
|
});
|
|
103
104
|
zipDir(tempPlatformDir, path.resolve(outputZipFilePath));
|
|
104
105
|
(0, fs_1.rmdirSync)(tempPlatformDir, { recursive: true });
|
|
@@ -40,7 +40,8 @@ const htmlTemp = (options) => {
|
|
|
40
40
|
if (platform === 'tizen') {
|
|
41
41
|
tizenScripts = '<script type="text/javascript" src="$WEBAPIS/webapis/webapis.js"></script>';
|
|
42
42
|
}
|
|
43
|
-
let faviconTag = '<link id="favicon" rel="icon" type="image/png"
|
|
43
|
+
let faviconTag = '<link id="favicon" rel="icon" type="image/png" '
|
|
44
|
+
+ 'href="data:image/png;base64,iVBORw0KGgo=">';
|
|
44
45
|
if (platform === 'webtv') {
|
|
45
46
|
faviconTag = `
|
|
46
47
|
<script>
|
|
@@ -43,6 +43,12 @@ const getAppContentPath = (baseUrl, isBuildHosted = false) => {
|
|
|
43
43
|
? `${baseUrl}/${relativePath}`
|
|
44
44
|
: `./${relativePath}`;
|
|
45
45
|
};
|
|
46
|
+
const getBuildEnginePackageRoot = (projectDir) => path_1.default.dirname(require.resolve('@24i/smartapps-bigscreen-rnv-build-engine/package.json', { paths: [projectDir, __dirname] }));
|
|
47
|
+
const resolveFromProject = (moduleName, projectDir) => require.resolve(moduleName, { paths: [projectDir, getBuildEnginePackageRoot(projectDir), __dirname] });
|
|
48
|
+
const makeTypeScriptOptions = (projectDir) => ({
|
|
49
|
+
typescriptPath: resolveFromProject('typescript', projectDir),
|
|
50
|
+
configFile: path_1.default.join(projectDir, 'tsconfig.json'),
|
|
51
|
+
});
|
|
46
52
|
const makeRules = (config, projectDir, isDevServer) => ({
|
|
47
53
|
babel: {
|
|
48
54
|
test: /\.[tj]sx?$/,
|
|
@@ -51,6 +57,8 @@ const makeRules = (config, projectDir, isDevServer) => ({
|
|
|
51
57
|
{
|
|
52
58
|
loader: 'ts-loader',
|
|
53
59
|
options: {
|
|
60
|
+
compiler: makeTypeScriptOptions(projectDir).typescriptPath,
|
|
61
|
+
configFile: makeTypeScriptOptions(projectDir).configFile,
|
|
54
62
|
transpileOnly: true,
|
|
55
63
|
allowTsInNodeModules: true,
|
|
56
64
|
},
|
|
@@ -66,6 +74,7 @@ const makeRules = (config, projectDir, isDevServer) => ({
|
|
|
66
74
|
{
|
|
67
75
|
loader: 'sass-loader',
|
|
68
76
|
options: {
|
|
77
|
+
implementation: require(resolveFromProject('sass', projectDir)),
|
|
69
78
|
sourceMap: false,
|
|
70
79
|
additionalData: (0, extendSass_1.extendSass)(config),
|
|
71
80
|
},
|
|
@@ -135,10 +144,13 @@ function generateConfig(config) {
|
|
|
135
144
|
const isBuildHosted = config.isBuildHosted || false;
|
|
136
145
|
const appContentPath = getAppContentPath(baseUrl, isBuildHosted);
|
|
137
146
|
const copiedDirWithPublicContentPath = path_1.default.join(appBuildDir, `../${path_1.default.parse(appBuildDir).name}-public`);
|
|
147
|
+
const typeScriptOptions = makeTypeScriptOptions(projectDir);
|
|
138
148
|
const plugins = {
|
|
139
149
|
forkTsChecker: new fork_ts_checker_webpack_plugin_1.default({
|
|
140
150
|
typescript: {
|
|
151
|
+
configFile: typeScriptOptions.configFile,
|
|
141
152
|
memoryLimit: 4096,
|
|
153
|
+
typescriptPath: typeScriptOptions.typescriptPath,
|
|
142
154
|
},
|
|
143
155
|
}),
|
|
144
156
|
webpack: new webpack_1.default.DefinePlugin({
|
|
@@ -16,20 +16,6 @@ const dispatchEvent = (webRef: WebViewRef, eventName: string, detail: object) =>
|
|
|
16
16
|
`);
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const getErrorDetail = (error: unknown) => {
|
|
20
|
-
if (error instanceof Error) {
|
|
21
|
-
return {
|
|
22
|
-
name: error.name,
|
|
23
|
-
message: error.message,
|
|
24
|
-
stack: error.stack,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return {
|
|
29
|
-
value: String(error),
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
|
|
33
19
|
export const handlePurchase = async (webRef: WebViewRef, sku: string) => {
|
|
34
20
|
try {
|
|
35
21
|
const response = await PurchasingService.purchase({ sku });
|
package/fixDependency.js
CHANGED
|
@@ -1,19 +1,61 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
|
|
3
|
-
const fs = require('fs')
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
const packageDir = __dirname;
|
|
7
|
+
const packageJson = require('./package.json');
|
|
8
|
+
|
|
9
|
+
const addIfExists = (paths, targetPath) => {
|
|
10
|
+
if (targetPath && fs.existsSync(targetPath)) {
|
|
11
|
+
paths.add(targetPath);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const resolveNestedDependency = (packageName, nestedPackageName, paths) => {
|
|
16
|
+
try {
|
|
17
|
+
const packageJsonPath = require.resolve(`${packageName}/package.json`, { paths });
|
|
18
|
+
return path.join(path.dirname(packageJsonPath), 'node_modules', nestedPackageName);
|
|
19
|
+
} catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const collectDependencyPaths = (deleteDependencies = []) => {
|
|
25
|
+
const paths = new Set();
|
|
26
|
+
const monorepoRoot = path.resolve(packageDir, '..', '..', '..');
|
|
27
|
+
const smartappsSdkRoot = path.resolve(packageDir, '..', '..');
|
|
28
|
+
const baseDirs = [packageDir, smartappsSdkRoot, monorepoRoot, process.cwd()];
|
|
4
29
|
|
|
5
|
-
const main = async (deleteDependencies) => {
|
|
6
|
-
console.log("Fix dependencies")
|
|
7
|
-
if (deleteDependencies === undefined) return;
|
|
8
30
|
for (const dependency of deleteDependencies) {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
try {
|
|
12
|
-
await fs.rm(packageLockFilePath, { recursive: true, force: true });
|
|
13
|
-
} catch {
|
|
14
|
-
console.log("error")
|
|
31
|
+
for (const baseDir of baseDirs) {
|
|
32
|
+
addIfExists(paths, path.resolve(baseDir, dependency.path));
|
|
15
33
|
}
|
|
16
34
|
}
|
|
35
|
+
|
|
36
|
+
const resolvePaths = [packageDir, smartappsSdkRoot, monorepoRoot, process.cwd()];
|
|
37
|
+
addIfExists(paths, resolveNestedDependency('fstream', 'graceful-fs', resolvePaths));
|
|
38
|
+
addIfExists(paths, resolveNestedDependency('unzip2', 'graceful-fs', resolvePaths));
|
|
39
|
+
|
|
40
|
+
return paths;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const fixDependencies = () => {
|
|
44
|
+
const paths = collectDependencyPaths(packageJson.deleteDependencies);
|
|
45
|
+
|
|
46
|
+
if (!paths.size) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
console.log('Fix dependencies');
|
|
51
|
+
for (const dependencyPath of paths) {
|
|
52
|
+
console.log(dependencyPath);
|
|
53
|
+
fs.rmSync(dependencyPath, { recursive: true, force: true });
|
|
54
|
+
}
|
|
17
55
|
};
|
|
18
56
|
|
|
19
|
-
|
|
57
|
+
if (require.main === module) {
|
|
58
|
+
fixDependencies();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
module.exports = fixDependencies;
|
package/index.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { spawnSync } = require('child_process');
|
|
4
|
+
|
|
5
|
+
const packageDir = __dirname;
|
|
6
|
+
const distEntry = path.join(packageDir, 'dist', 'src', 'index.js');
|
|
7
|
+
const fixDependencies = require('./fixDependency');
|
|
8
|
+
|
|
9
|
+
const getLatestMtimeMs = (targetPath) => {
|
|
10
|
+
if (!fs.existsSync(targetPath)) {
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const stat = fs.statSync(targetPath);
|
|
15
|
+
if (!stat.isDirectory()) {
|
|
16
|
+
return stat.mtimeMs;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return fs.readdirSync(targetPath).reduce((latest, entry) => {
|
|
20
|
+
const entryPath = path.join(targetPath, entry);
|
|
21
|
+
return Math.max(latest, getLatestMtimeMs(entryPath));
|
|
22
|
+
}, stat.mtimeMs);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const shouldBuildDist = () => {
|
|
26
|
+
if (!fs.existsSync(distEntry)) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const sourceMtime = Math.max(
|
|
31
|
+
getLatestMtimeMs(path.join(packageDir, 'src')),
|
|
32
|
+
getLatestMtimeMs(path.join(packageDir, 'templates')),
|
|
33
|
+
getLatestMtimeMs(path.join(packageDir, 'tsconfig.json'))
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
return sourceMtime > fs.statSync(distEntry).mtimeMs;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const buildDist = () => {
|
|
40
|
+
const npmCommand = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
41
|
+
const result = spawnSync(npmCommand, ['run', 'build'], {
|
|
42
|
+
cwd: packageDir,
|
|
43
|
+
env: {
|
|
44
|
+
...process.env,
|
|
45
|
+
SMARTAPPS_RNV_BUILD_ENGINE_BOOTSTRAP: '1',
|
|
46
|
+
},
|
|
47
|
+
stdio: 'inherit',
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
if (result.error) {
|
|
51
|
+
throw result.error;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (result.status !== 0) {
|
|
55
|
+
throw new Error(`Failed to build ${path.relative(process.cwd(), packageDir)} before loading RNV engine`);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const ensureEsbuild = () => {
|
|
60
|
+
let esbuildDir;
|
|
61
|
+
try {
|
|
62
|
+
esbuildDir = path.dirname(require.resolve('esbuild/package.json', { paths: [packageDir, process.cwd()] }));
|
|
63
|
+
} catch {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const binPath = path.join(esbuildDir, 'bin', 'esbuild');
|
|
68
|
+
const validation = spawnSync(binPath, ['--version'], {
|
|
69
|
+
encoding: 'utf8',
|
|
70
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
if (validation.status === 0) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const result = spawnSync(process.execPath, [path.join(esbuildDir, 'install.js')], {
|
|
78
|
+
cwd: process.cwd(),
|
|
79
|
+
env: process.env,
|
|
80
|
+
stdio: 'inherit',
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
if (result.error) {
|
|
84
|
+
throw result.error;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (result.status !== 0) {
|
|
88
|
+
throw new Error('Failed to install esbuild native binary before loading RNV engine');
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
if (shouldBuildDist()) {
|
|
93
|
+
buildDist();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (!fs.existsSync(distEntry)) {
|
|
97
|
+
throw new Error(`Missing compiled RNV build engine entry: ${distEntry}`);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
fixDependencies();
|
|
101
|
+
ensureEsbuild();
|
|
102
|
+
|
|
103
|
+
module.exports = require(distEntry);
|
package/jest.config.js
CHANGED
|
@@ -5,4 +5,7 @@ module.exports = {
|
|
|
5
5
|
'/node_modules/ansi-color/', // compiler error: Octal literal in strict mode
|
|
6
6
|
'/node_modules/fstream', // compiler error: Octal literal in strict mode
|
|
7
7
|
],
|
|
8
|
+
// build output contains compiled copies of the source tests and templates.
|
|
9
|
+
testPathIgnorePatterns: ['<rootDir>/dist/'],
|
|
10
|
+
modulePathIgnorePatterns: ['<rootDir>/dist/'],
|
|
8
11
|
};
|
package/package.json
CHANGED
|
@@ -1,91 +1,94 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
2
|
+
"name": "@24i/smartapps-bigscreen-rnv-build-engine",
|
|
3
|
+
"version": "5.0.0-alpha.16",
|
|
4
|
+
"description": "Package with build engine for SmartApps BIGscreen projects...",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build:clean": "rm -rf dist",
|
|
8
|
+
"build": "npm run build:clean && tsc && npm run copy:projects",
|
|
9
|
+
"copy:project:tizen": "mkdir -p dist/templates/platforms/tizen && cp -R templates/platforms/tizen/project dist/templates/platforms/tizen/",
|
|
10
|
+
"copy:project:webos": "mkdir -p dist/templates/platforms/webos && cp -R templates/platforms/webos/project dist/templates/platforms/webos/",
|
|
11
|
+
"copy:project:androidtv": "mkdir -p dist/templates/platforms/androidtv && cp -R templates/platforms/androidtv/project dist/templates/platforms/androidtv/",
|
|
12
|
+
"copy:project:vegaos": "mkdir -p dist/templates/platforms/vegaos && cp -R templates/platforms/vegaos/project dist/templates/platforms/vegaos/",
|
|
13
|
+
"copy:projects": "npm run copy:project:tizen && npm run copy:project:webos && npm run copy:project:androidtv && npm run copy:project:vegaos",
|
|
14
|
+
"eslint": "eslint \"./src/**/*.{js,jsx,ts,tsx}\" \"./templates/**/*.{js,jsx,ts,tsx}\"",
|
|
15
|
+
"eslint:vegaos": "eslint --no-eslintrc --no-ignore --config .eslintrc.vegaos.js \"./templates/platforms/vegaos/project/**/*.{js,jsx,ts,tsx}\"",
|
|
16
|
+
"stylelint": "stylelint \"./src/**/*.scss\" --aei --rd --risd --rdd",
|
|
17
|
+
"lintcheck": "npm run eslint && npm run eslint:vegaos && npm run stylelint",
|
|
18
|
+
"typecheck": "tsc --noEmit",
|
|
19
|
+
"lintcheck:cached": "npm run eslint -- --cache && npm run eslint:vegaos -- --cache && npm run stylelint -- --cache",
|
|
20
|
+
"typecheck:cached": "tsc --noEmit --incremental",
|
|
21
|
+
"test": "jest",
|
|
22
|
+
"postinstall": "node fixDependency.js"
|
|
23
|
+
},
|
|
24
|
+
"deleteDependencies": [
|
|
25
|
+
{
|
|
26
|
+
"path": "../../unzip2/node_modules/graceful-fs/",
|
|
27
|
+
"version": "^4.2.8"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"path": "./node_modules/fstream/node_modules/graceful-fs/",
|
|
31
|
+
"version": "^4.2.8"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"path": "../../fstream/node_modules/graceful-fs/",
|
|
35
|
+
"version": "^4.2.8"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"fs-extra": "11.1.1",
|
|
40
|
+
"xml2js": "^0.4.23"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/fs-extra": "11.0.1",
|
|
44
|
+
"@types/inquirer": "8.2.1",
|
|
45
|
+
"@types/ip": "1.1.0",
|
|
46
|
+
"@types/mini-css-extract-plugin": "1.4.3",
|
|
47
|
+
"@types/node": "18.0.3",
|
|
48
|
+
"@types/semver": "7.3.10",
|
|
49
|
+
"@types/ssh2": "1.11.4",
|
|
50
|
+
"@types/tapable": "2.2.2",
|
|
51
|
+
"@types/webpack": "5.28.0",
|
|
52
|
+
"@types/xml2js": "0.4.11",
|
|
53
|
+
"nock": "13.2.8",
|
|
54
|
+
"svgo": "1.3.2"
|
|
55
|
+
},
|
|
56
|
+
"peerDependencies": {
|
|
57
|
+
"@24i/smartapps-bigscreen-device": "*",
|
|
58
|
+
"@rnv/sdk-webpack": "0.35.3",
|
|
59
|
+
"assign-deep": "1.0.1",
|
|
60
|
+
"core-js": "3.36.1",
|
|
61
|
+
"coveralls": "3.1.1",
|
|
62
|
+
"css-hot-loader": "1.4.4",
|
|
63
|
+
"css-loader": "5.2.7",
|
|
64
|
+
"filemanager-webpack-plugin": "6.1.7",
|
|
65
|
+
"fork-ts-checker-webpack-plugin": "7.2.11",
|
|
66
|
+
"glob": "8.0.1",
|
|
67
|
+
"html-webpack-harddisk-plugin": "2.0.0",
|
|
68
|
+
"html-webpack-plugin": "5.5.0",
|
|
69
|
+
"ip": "1.1.5",
|
|
70
|
+
"manifoldjs-windows10": "0.1.8",
|
|
71
|
+
"mini-css-extract-plugin": "2.6.0",
|
|
72
|
+
"node-ssh": "12.0.4",
|
|
73
|
+
"ora": "5.4.1",
|
|
74
|
+
"raf": "3.4.1",
|
|
75
|
+
"regenerator-runtime": "0.13.9",
|
|
76
|
+
"renative-template-blank": "0.35.3",
|
|
77
|
+
"rnv": "0.35.3",
|
|
78
|
+
"sass": "^1.77.4",
|
|
79
|
+
"sass-loader": "12.6.0",
|
|
80
|
+
"source-map-loader": "3.0.1",
|
|
81
|
+
"svgo": "1.3.2",
|
|
82
|
+
"ts-loader": "9.3.0",
|
|
83
|
+
"webpack": "5.72.0",
|
|
84
|
+
"webpack-cli": "4.10.0",
|
|
85
|
+
"webpack-dev-server": "4.9.0",
|
|
86
|
+
"webpack-spritesmith": "1.1.0"
|
|
87
|
+
},
|
|
88
|
+
"keywords": [],
|
|
89
|
+
"author": "24i",
|
|
90
|
+
"license": "ISC",
|
|
91
|
+
"publishConfig": {
|
|
92
|
+
"access": "public"
|
|
93
|
+
}
|
|
91
94
|
}
|