@24i/smartapps-bigscreen-rnv-build-engine 0.12.2-alpha.1692 → 0.13.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.
@@ -8,6 +8,13 @@ describe('resolveBaseUrl', () => {
8
8
  const bucketName = 'test-bucket';
9
9
  const flavour = 'test_flavour';
10
10
  const packageVersion = '1.0.0';
11
+ const expectEmptyStringOutputForEachPlatformAndSchemeByFlavour = (customFlavour) => {
12
+ Object.values(constants_1.Platforms).forEach((platform) => {
13
+ Object.values(constants_1.BuildSchemes).forEach((scheme) => {
14
+ expect((0, resolveBaseUrl_1.resolveBaseUrl)({ platform, scheme, flavour: customFlavour })).toBe('');
15
+ });
16
+ });
17
+ };
11
18
  afterEach(() => {
12
19
  jest.clearAllMocks();
13
20
  jest.resetAllMocks();
@@ -23,22 +30,14 @@ describe('resolveBaseUrl', () => {
23
30
  },
24
31
  },
25
32
  });
26
- Object.values(constants_1.Platforms).forEach((platform) => {
27
- Object.values(constants_1.BuildSchemes).forEach((scheme) => {
28
- expect((0, resolveBaseUrl_1.resolveBaseUrl)({ platform, scheme, flavour })).toBe('');
29
- });
30
- });
33
+ expectEmptyStringOutputForEachPlatformAndSchemeByFlavour(flavour);
31
34
  });
32
35
  it('returns empty string when c.buildConfig.common.deploy.aws3.bucketName is not set', () => {
33
36
  resolveGenericRnvConfig_1.getBaseConfig.mockReturnValue({
34
37
  runtime: {},
35
38
  buildConfig: { common: { packageVersion } },
36
39
  });
37
- Object.values(constants_1.Platforms).forEach((platform) => {
38
- Object.values(constants_1.BuildSchemes).forEach((scheme) => {
39
- expect((0, resolveBaseUrl_1.resolveBaseUrl)({ platform, scheme, flavour })).toBe('');
40
- });
41
- });
40
+ expectEmptyStringOutputForEachPlatformAndSchemeByFlavour(flavour);
42
41
  });
43
42
  describe('resolving baseUrl for configured schemes', () => {
44
43
  const bucketUrl = `http://${bucketName}.s3.amazonaws.com`;
@@ -13,7 +13,7 @@ const c = {
13
13
  appId: 'flavour1',
14
14
  },
15
15
  buildConfig: {
16
- defaults: { supportedPlatforms: [constants_1.Platforms.TIZEN, constants_1.Platforms.WEBTV, constants_1.Platforms.HBBTV] },
16
+ defaults: { supportedPlatforms: [constants_1.Platforms.TIZEN, constants_1.Platforms.WEBTV, constants_1.Platforms.HBBTV, constants_1.Platforms.XBOX] },
17
17
  common: {
18
18
  appNameInFileName: 'appName',
19
19
  packageVersion: '1.0.0',
@@ -39,6 +39,11 @@ const c = {
39
39
  supportedFlavours: ['flavour3'],
40
40
  },
41
41
  },
42
+ xbox: {
43
+ deploy: {
44
+ supportedFlavours: ['flavour1'],
45
+ },
46
+ },
42
47
  },
43
48
  },
44
49
  };
@@ -79,6 +84,12 @@ describe('resolveDeployLocations', () => {
79
84
  packageUrl: `${bucketBaseUrl}/builds/webtv/flavour1/latest/release/build/appName_webtv_latest.release_flavour1.zip`,
80
85
  },
81
86
  },
87
+ xbox: {
88
+ flavour1: {
89
+ indexUrl: `${bucketBaseUrl}/builds/xbox/flavour1/latest/release/public/index.html`,
90
+ packageUrl: `${bucketBaseUrl}/builds/xbox/flavour1/latest/release/build/appName_xbox_latest.release_flavour1.zip`,
91
+ },
92
+ },
82
93
  },
83
94
  },
84
95
  },
@@ -52,7 +52,6 @@ describe('replaceTemplateString', () => {
52
52
  expect((0, replaceTemplateString_1.replaceTemplateString)(rnvC, '{{configProps.deploy.notExistingProp}}')).toBe('');
53
53
  });
54
54
  it('returns correct value from rnv c object for pattern on input', () => {
55
- expect((0, replaceTemplateString_1.replaceTemplateString)({ buildConfig: { projectName: 'prj' } }, '{{c.buildConfig.projectName}}')).toBe('prj');
56
55
  expect((0, replaceTemplateString_1.replaceTemplateString)({
57
56
  buildConfig: {
58
57
  projectName: '{{c.buildConfig.common.id}}',
@@ -40,7 +40,10 @@ const generateEngineExtensions = (platformExtensions) => {
40
40
  return output;
41
41
  };
42
42
  exports.default = {
43
- initializeRuntimeConfig: (c) => rnv_1.Config.initializeConfig(c),
43
+ initializeRuntimeConfig: (c) => {
44
+ rnv_1.FileUtils.configureFilesystem(rnv_1.Common.getConfigProp, rnv_1.Resolver.doResolve, rnv_1.Utils.isSystemWin);
45
+ return rnv_1.Config.initializeConfig(c);
46
+ },
44
47
  tasks: rnv_1.EngineManager.generateEngineTasks(engineTasks_1.engineTaskList),
45
48
  config: CNF,
46
49
  projectDirName: 'project',
@@ -44,6 +44,7 @@ const makeTableMarkdownByScheme = (rnvC, scheme) => {
44
44
  const formattedTableData = (0, formatTableDataSpaces_1.formatTableDataSpaces)(tableData);
45
45
  return tableDataToMarkdown(formattedTableData);
46
46
  };
47
+ const deployedEachTimeIntoTheSamePath = '> Deployed each time into the same path.';
47
48
  const makeMarkdownFileContentRows = (rnvC) => ([
48
49
  `# ${rnvC.buildConfig.projectName}`,
49
50
  '## Deploy URLs',
@@ -51,20 +52,20 @@ const makeMarkdownFileContentRows = (rnvC) => ([
51
52
  '---',
52
53
  '### Latest `development` builds',
53
54
  '> Latest builds against the development git branch.',
54
- '> Deployed each time into the same path.',
55
+ deployedEachTimeIntoTheSamePath,
55
56
  '',
56
57
  makeTableMarkdownByScheme(rnvC, constants_1.BuildSchemes.DEV_LATEST),
57
58
  '',
58
59
  '---',
59
60
  '### Latest `release candidate` builds',
60
61
  '> Latest builds against the release candidate git branch.',
61
- '> Deployed each time into the same path.',
62
+ deployedEachTimeIntoTheSamePath,
62
63
  '',
63
64
  makeTableMarkdownByScheme(rnvC, constants_1.BuildSchemes.RC_LATEST),
64
65
  '---',
65
66
  '### Latest `release` builds',
66
67
  '> Latest builds against the release git branch.',
67
- '> Deployed each time into the same path.',
68
+ deployedEachTimeIntoTheSamePath,
68
69
  '',
69
70
  makeTableMarkdownByScheme(rnvC, constants_1.BuildSchemes.RELEASE_LATEST),
70
71
  '---',
@@ -19,7 +19,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
19
  return result;
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.handlePlatformSdk = exports.SDKWebpack = exports.SDKTizen = exports.SDKWebos = void 0;
22
+ exports.handlePlatformSdk = exports.SDKXbox = exports.SDKWebpack = exports.SDKTizen = exports.SDKWebos = void 0;
23
23
  const constants_1 = require("../constants");
24
24
  const SDKWebos = __importStar(require("./sdk-webos"));
25
25
  exports.SDKWebos = SDKWebos;
@@ -27,6 +27,8 @@ const SDKTizen = __importStar(require("./sdk-tizen"));
27
27
  exports.SDKTizen = SDKTizen;
28
28
  const SDKWebpack = __importStar(require("./sdk-webpack"));
29
29
  exports.SDKWebpack = SDKWebpack;
30
+ const SDKXbox = __importStar(require("./sdk-xbox"));
31
+ exports.SDKXbox = SDKXbox;
30
32
  const handlePlatformSdk = async (c) => {
31
33
  switch (c.platform) {
32
34
  case constants_1.Platforms.TIZEN:
@@ -85,7 +85,7 @@ const runTizen = async (c, target) => {
85
85
  else {
86
86
  const isPortActive = await checkPortInUse(c, platform, c.runtime.port);
87
87
  const isDebuggerEnabledForPlatform = REMOTE_DEBUGGER_ENABLED_PLATFORMS.includes(platform);
88
- const isWeinreEnabled = isDebuggerEnabledForPlatform && !bundleAssets && !hosted;
88
+ const isWeinreEnabled = isDebuggerEnabledForPlatform && !hosted;
89
89
  if (!isPortActive) {
90
90
  logInfo(`Your ${chalk().white(platform)} devServer at port ${chalk().white(c.runtime.port)} is not running. Starting it up for you...`);
91
91
  (0, sdk_webpack_1.waitForWebpack)(c)
@@ -57,7 +57,7 @@ const runWebOS = async (c) => {
57
57
  else {
58
58
  const isPortActive = await checkPortInUse(c, platform, c.runtime.port);
59
59
  const isDebuggerEnabledForPlatform = REMOTE_DEBUGGER_ENABLED_PLATFORMS.includes(platform);
60
- const isWeinreEnabled = isDebuggerEnabledForPlatform && !bundleAssets && !hosted;
60
+ const isWeinreEnabled = isDebuggerEnabledForPlatform && !hosted;
61
61
  if (!isPortActive) {
62
62
  logInfo(`Your ${chalk().white(platform)} devServer at port ${chalk().white(c.runtime.port)} is not running. Starting it up for you...`);
63
63
  (0, sdk_webpack_1.waitForWebpack)(c)
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./sdkXbox"), exports);
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildXboxProject = void 0;
4
+ const rnv_1 = require("rnv");
5
+ const sdk_webpack_1 = require("@rnv/sdk-webpack");
6
+ const child_process_1 = require("child_process");
7
+ const fs_1 = require("fs");
8
+ const manifoldjs_windows10_1 = require("manifoldjs-windows10");
9
+ const resolvers_1 = require("../../resolvers");
10
+ const fs = fs_1.promises;
11
+ const { logTask } = rnv_1.Logger;
12
+ const hostedAppOutputPath = '/output/hosted';
13
+ const packagedAppOutputPath = '/output/packaged';
14
+ const packagedAppSrcDestination = '/output/packaged/windows10/source/src';
15
+ const appSourcePath = '/project/public';
16
+ const packagedAppEntryUrl = 'src/index.html';
17
+ const wrapperConfigPath = '/wrapperConfig.json';
18
+ const hostedSourceImages = '/output/hosted/windows10/source/images';
19
+ const packagedSourceImages = '/output/packaged/windows10/source/images';
20
+ const hostedManifestImages = '/output/hosted/windows10/manifest/images';
21
+ const packagedManifestImages = '/output/packaged/windows10/manifest/images';
22
+ const identityNamePlaceholder = 'INSERT-YOUR-PACKAGE-IDENTITY-NAME-HERE';
23
+ const identityPublisherPlaceholder = 'INSERT-YOUR-PACKAGE-IDENTITY-PUBLISHER-HERE';
24
+ const publisherDisplayNamePlaceholder = 'INSERT-YOUR-PACKAGE-PROPERTIES-PUBLISHERDISPLAYNAME-HERE';
25
+ class Manifest {
26
+ content = { start_url: '', short_name: '', theme_color: 'white' };
27
+ format = 'w3c';
28
+ }
29
+ const getHostedAppEntryUrl = (c) => {
30
+ const deployLocations = (0, resolvers_1.resolveDeployLocations)(c);
31
+ const keys = Object.keys(deployLocations.versions);
32
+ let url = '';
33
+ if (keys.length > 0) {
34
+ const version = keys[0];
35
+ if (version !== null) {
36
+ const flavour = c.runtime.appId;
37
+ url = deployLocations.versions[version].platforms.xbox?.[flavour].indexUrl ?? '';
38
+ }
39
+ }
40
+ return url;
41
+ };
42
+ const getBuildFolder = (c) => `${rnv_1.Common.getPlatformBuildDir(c)}`;
43
+ const zipOutput = async (c) => {
44
+ logTask('zipOutput');
45
+ const defaultZipFileName = `${c.platform}_${c.runtime.appId}.zip`;
46
+ const fileName = (0, resolvers_1.resolveBuildFileName)(c) || defaultZipFileName;
47
+ const outputDirectory = `${getBuildFolder(c)}/output`;
48
+ const tmpOutputDirectory = `${getBuildFolder(c)}/tmpOutput`;
49
+ try {
50
+ await fs.mkdir(tmpOutputDirectory);
51
+ (0, child_process_1.execSync)(`cp -r ${outputDirectory} ${tmpOutputDirectory}`);
52
+ await fs.rm(outputDirectory, { recursive: true, force: true });
53
+ await fs.mkdir(outputDirectory);
54
+ (0, child_process_1.execSync)(`zip -r ${outputDirectory}/${fileName} *`, { cwd: `${tmpOutputDirectory}` });
55
+ await fs.rm(tmpOutputDirectory, { recursive: true, force: true });
56
+ }
57
+ catch {
58
+ throw new Error('Unable to zip the output folder');
59
+ }
60
+ };
61
+ const createVSSolution = async (c, outputPath, manifest) => {
62
+ logTask('createVSSolution');
63
+ try {
64
+ manifest.content.short_name = c.buildConfig.common.appName;
65
+ const platform = new manifoldjs_windows10_1.Platform('package', ['windows10']);
66
+ await platform.create(manifest, outputPath, ['windows10'], '');
67
+ }
68
+ catch (e) {
69
+ if (e instanceof Error
70
+ && !e.message.includes('Error retrieving information for module')) {
71
+ console.error(e.message);
72
+ throw new Error('Failed to create VSSolution');
73
+ }
74
+ }
75
+ };
76
+ const createHostedApplication = async (c) => {
77
+ logTask('createHostedApplication');
78
+ const manifest = new Manifest();
79
+ manifest.content.start_url = getHostedAppEntryUrl(c);
80
+ await createVSSolution(c, `${getBuildFolder(c)}${hostedAppOutputPath}`, manifest);
81
+ };
82
+ const createPackagedApplication = async (c) => {
83
+ logTask('createPackagedApplication');
84
+ const manifest = new Manifest();
85
+ manifest.content.start_url = packagedAppEntryUrl;
86
+ const sourceDir = `${getBuildFolder(c)}${appSourcePath}`;
87
+ const destinationDirectory = `${getBuildFolder(c)}${packagedAppSrcDestination}`;
88
+ await createVSSolution(c, `${getBuildFolder(c)}${packagedAppOutputPath}`, manifest);
89
+ (0, child_process_1.execSync)(`cp -r ${sourceDir} ${destinationDirectory}`);
90
+ };
91
+ const replacePublisherId = async (c, basePath) => {
92
+ logTask('replacePublisherId');
93
+ const output = `${basePath}/windows10/manifest/appxmanifest.xml`;
94
+ const configPath = `${getBuildFolder(c)}${wrapperConfigPath}`;
95
+ let appxmanifest = null;
96
+ let identityName = null;
97
+ let identityPublisher = null;
98
+ let publisherDisplayName = null;
99
+ try {
100
+ const data = await fs.readFile(configPath, 'utf-8');
101
+ const config = JSON.parse(data);
102
+ ({
103
+ identityName = null,
104
+ identityPublisher = null,
105
+ publisherDisplayName = null,
106
+ } = config);
107
+ const appxmanifestData = await fs.readFile(output, 'utf-8');
108
+ appxmanifest = appxmanifestData;
109
+ if (identityName !== null
110
+ && identityPublisher !== null
111
+ && publisherDisplayName !== null) {
112
+ appxmanifest = appxmanifest.replace(identityNamePlaceholder, identityName)
113
+ .replace(identityPublisherPlaceholder, identityPublisher)
114
+ .replace(publisherDisplayNamePlaceholder, publisherDisplayName);
115
+ }
116
+ else {
117
+ throw new Error('failed to obtain store settings');
118
+ }
119
+ await fs.writeFile(output, appxmanifest ?? '');
120
+ }
121
+ catch (e) {
122
+ if (e instanceof Error) {
123
+ throw new Error(`Failed to modify the xbox appxmanifest.xml - ${e.message}`);
124
+ }
125
+ }
126
+ };
127
+ const replaceImages = async (c) => {
128
+ logTask('replaceImages');
129
+ const hostedOutputDirectory = `${getBuildFolder(c)}${hostedSourceImages}`;
130
+ const packagedOutputDirectory = `${getBuildFolder(c)}${packagedSourceImages}`;
131
+ const hostedOutputManifestDirectory = `${getBuildFolder(c)}${hostedManifestImages}`;
132
+ const packagedOutputManifestDirectory = `${getBuildFolder(c)}${packagedManifestImages}`;
133
+ const appIconsDirectory = `${getBuildFolder(c)}/project/appIcons`;
134
+ try {
135
+ await fs.rm(hostedOutputDirectory, { recursive: true, force: true });
136
+ await fs.rm(packagedOutputDirectory, { recursive: true, force: true });
137
+ (0, child_process_1.execSync)(`cp -r ${appIconsDirectory} ${hostedOutputDirectory}`);
138
+ (0, child_process_1.execSync)(`cp -r ${appIconsDirectory} ${packagedOutputDirectory}`);
139
+ (0, child_process_1.execSync)(`cp -r ${appIconsDirectory} ${hostedOutputManifestDirectory}`);
140
+ (0, child_process_1.execSync)(`cp -r ${appIconsDirectory} ${packagedOutputManifestDirectory}`);
141
+ await fs.rm(appIconsDirectory, { recursive: true, force: true });
142
+ }
143
+ catch {
144
+ throw new Error('Failed to replace the xbox icons');
145
+ }
146
+ };
147
+ const buildXboxProject = async (c) => {
148
+ logTask('buildXboxProject');
149
+ const outputDirectory = `${getBuildFolder(c)}/output`;
150
+ await (0, sdk_webpack_1.buildCoreWebpackProject)(c);
151
+ await fs.rm(outputDirectory, { recursive: true, force: true });
152
+ await createHostedApplication(c);
153
+ await createPackagedApplication(c);
154
+ await replacePublisherId(c, `${getBuildFolder(c)}${hostedAppOutputPath}`);
155
+ await replacePublisherId(c, `${getBuildFolder(c)}${packagedAppOutputPath}`);
156
+ await replaceImages(c);
157
+ await zipOutput(c);
158
+ };
159
+ exports.buildXboxProject = buildXboxProject;
@@ -32,6 +32,7 @@ const { logTask } = rnv_1.Logger;
32
32
  const { buildWeb } = sdks_1.SDKWebpack;
33
33
  const { buildTizenProject } = sdks_1.SDKTizen;
34
34
  const { buildWebOSProject } = sdks_1.SDKWebos;
35
+ const { buildXboxProject } = sdks_1.SDKXbox;
35
36
  const { executeOrSkipTask } = rnv_1.TaskManager;
36
37
  const { TASK_BUILD, TASK_PACKAGE, PARAMS } = rnv_1.Constants;
37
38
  const makeZipOutput = (c) => {
@@ -70,10 +71,12 @@ const buildFn = async (c, parentTask, originTask) => {
70
71
  case constants_1.Platforms.KREATV:
71
72
  case constants_1.Platforms.SAPHI:
72
73
  case constants_1.Platforms.WEBTV:
73
- case constants_1.Platforms.XBOX:
74
74
  await buildWeb(c);
75
75
  makeZipOutput(c);
76
76
  return;
77
+ case constants_1.Platforms.XBOX:
78
+ await buildXboxProject(c);
79
+ return;
77
80
  case constants_1.Platforms.TIZEN:
78
81
  await buildTizenProject(c);
79
82
  renameOutput(c);
@@ -3,17 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.customRnvPackageTask = void 0;
4
4
  const rnv_1 = require("rnv");
5
5
  const constants_1 = require("../constants");
6
- const { getConfigProp } = rnv_1.Common;
7
- const { configureFilesystem } = rnv_1.FileUtils;
8
- const { doResolve } = rnv_1.Resolver;
9
- const { isSystemWin } = rnv_1.Utils;
10
- const { logTask } = rnv_1.Logger;
11
6
  const { TASK_PACKAGE, TASK_CONFIGURE, PARAMS } = rnv_1.Constants;
12
- const { executeOrSkipTask } = rnv_1.TaskManager;
13
7
  const packageFn = async (c, parentTask, originTask) => {
14
- logTask('taskRnvPackage', `parent:${parentTask}`);
15
- configureFilesystem(getConfigProp, doResolve, isSystemWin);
16
- await executeOrSkipTask(c, TASK_CONFIGURE, TASK_PACKAGE, originTask);
8
+ rnv_1.Logger.logTask('taskRnvPackage', `parent:${parentTask}`);
9
+ await rnv_1.TaskManager.executeOrSkipTask(c, TASK_CONFIGURE, TASK_PACKAGE, originTask);
17
10
  return true;
18
11
  };
19
12
  const customRnvPackageTask = {
@@ -42,12 +42,23 @@ const patchEngineTemplatesPath = (c) => {
42
42
  engine.originalTemplatePlatformProjectDir = path.join(templatesPath, 'platforms', 'project');
43
43
  c.paths.project.platformTemplatesDirs[c.platform] = engine.originalTemplatePlatformsDir;
44
44
  };
45
+ const handleReset = async (c) => {
46
+ if (c.program.resetHard) {
47
+ logInfo(`You passed ${chalk().white('-R, --resetHard')} argument. "${chalk().white('./platformAssets')}" will be cleaned up first`);
48
+ await cleanPlaformAssets(c);
49
+ }
50
+ else if (c.program.resetAssets) {
51
+ logInfo(`You passed ${chalk().white('-a, --resetAssets')} argument. "${chalk().white('./platformAssets')}" will be cleaned up first`);
52
+ await cleanPlaformAssets(c);
53
+ }
54
+ };
45
55
  const projectConfigureFn = async (c, parentTask, originTask) => {
46
56
  logTask('taskRnvProjectConfigure');
47
57
  patchEngineTemplatesPath(c);
48
- if (c.paths.project.builds.dir && !fsExistsSync(c.paths.project.builds.dir)) {
49
- logInfo(`Creating folder ${c.paths.project.builds.dir} ...DONE`);
50
- fsMkdirSync(c.paths.project.builds.dir);
58
+ const buildsDirPath = c.paths.project.builds.dir;
59
+ if (buildsDirPath && !fsExistsSync(buildsDirPath)) {
60
+ logInfo(`Creating folder ${buildsDirPath} ...DONE`);
61
+ fsMkdirSync(buildsDirPath);
51
62
  }
52
63
  await updateRenativeConfigs(c);
53
64
  await checkIsRenativeProject(c);
@@ -80,14 +91,7 @@ const projectConfigureFn = async (c, parentTask, originTask) => {
80
91
  await configurePlugins(c);
81
92
  await configureRuntimeDefaults(c);
82
93
  if (!c.runtime.disableReset) {
83
- if (c.program.resetHard) {
84
- logInfo(`You passed ${chalk().white('-R, --resetHard')} argument. "${chalk().white('./platformAssets')}" will be cleaned up first`);
85
- await cleanPlaformAssets(c);
86
- }
87
- else if (c.program.resetAssets) {
88
- logInfo(`You passed ${chalk().white('-a, --resetAssets')} argument. "${chalk().white('./platformAssets')}" will be cleaned up first`);
89
- await cleanPlaformAssets(c);
90
- }
94
+ await handleReset(c);
91
95
  }
92
96
  await copyRuntimeAssets(c);
93
97
  await configureTemplateFiles(c);
@@ -43,79 +43,63 @@ const getAppContentPath = (baseUrl, isBuildHosted = false) => {
43
43
  ? `${baseUrl}/${relativePath}`
44
44
  : `./${relativePath}`;
45
45
  };
46
- function generateConfig(config) {
47
- const projectDir = path_1.default.resolve(config.currentDir, '../../');
48
- const platformBuildsDir = path_1.default.resolve(config.currentDir, '../');
49
- const appBuildDir = path_1.default.resolve(config.currentDir);
50
- const appBuildEngineProjectDir = path_1.default.resolve(config.currentDir, config.buildFolder);
51
- const appBuildEngineProjectPublicDir = path_1.default.resolve(appBuildEngineProjectDir, 'public');
52
- const platformSchemeAppIdObj = {
53
- platform: config.platform,
54
- scheme: config.scheme,
55
- flavour: config.appConfigId,
56
- };
57
- const buildVersion = smartapps_bigscreen_rnv_build_engine_1.Resolvers.resolveBuildVersion(platformSchemeAppIdObj);
58
- const baseUrl = smartapps_bigscreen_rnv_build_engine_1.Resolvers.resolveBaseUrl(platformSchemeAppIdObj);
59
- const devServerHost = config.devServerHost || '0.0.0.0';
60
- const isDevServer = appBuildEngineProjectDir.endsWith('/server');
61
- const { PLATFORM } = process.env;
62
- const isBuildHosted = config.isBuildHosted || false;
63
- const rules = {
64
- babel: {
65
- test: /\.[tj]sx?$/,
66
- exclude: (config.typescript?.exclude ?? []).map((exclusion) => (path_1.default.resolve(projectDir, exclusion))),
67
- use: [
68
- {
69
- loader: 'ts-loader',
70
- options: {
71
- transpileOnly: true,
72
- allowTsInNodeModules: true,
73
- },
74
- },
75
- ],
76
- },
77
- css: {
78
- test: /\.s?css$/,
79
- use: [
80
- isDevServer ? 'css-hot-loader' : null,
81
- mini_css_extract_plugin_1.default.loader,
82
- 'css-loader',
83
- {
84
- loader: 'sass-loader',
85
- options: {
86
- sourceMap: false,
87
- additionalData: (0, extendSass_1.extendSass)(config),
88
- },
89
- },
90
- ].filter(Boolean),
91
- },
92
- image: {
93
- test: /\.(gif|jpe?g|png|svg)$/,
94
- use: {
95
- loader: 'file-loader',
46
+ const makeRules = (config, projectDir, isDevServer) => ({
47
+ babel: {
48
+ test: /\.[tj]sx?$/,
49
+ exclude: (config.typescript?.exclude ?? []).map((exclusion) => (path_1.default.resolve(projectDir, exclusion))),
50
+ use: [
51
+ {
52
+ loader: 'ts-loader',
96
53
  options: {
97
- outputPath: 'content/assets/',
98
- publicPath: '../assets/',
54
+ transpileOnly: true,
55
+ allowTsInNodeModules: true,
99
56
  },
100
57
  },
101
- },
102
- fonts: {
103
- test: /\.(woff|woff2|eot|ttf|otf)(\?[\s\S]+)?$/,
104
- use: {
105
- loader: 'file-loader',
58
+ ],
59
+ },
60
+ css: {
61
+ test: /\.s?css$/,
62
+ use: [
63
+ isDevServer ? 'css-hot-loader' : null,
64
+ mini_css_extract_plugin_1.default.loader,
65
+ 'css-loader',
66
+ {
67
+ loader: 'sass-loader',
106
68
  options: {
107
- outputPath: 'content/fonts',
108
- publicPath: '../fonts/',
69
+ sourceMap: false,
70
+ additionalData: (0, extendSass_1.extendSass)(config),
109
71
  },
110
72
  },
73
+ ].filter(Boolean),
74
+ },
75
+ image: {
76
+ test: /\.(gif|jpe?g|png|svg)$/,
77
+ use: {
78
+ loader: 'file-loader',
79
+ options: {
80
+ outputPath: 'content/assets/',
81
+ publicPath: '../assets/',
82
+ },
111
83
  },
112
- sourcemap: {
113
- test: /\.[tj]sx$/,
114
- use: ['source-map-loader'],
115
- enforce: 'pre',
116
- exclude: [/node_modules/, /build/, /__test__/, /__tests__/],
84
+ },
85
+ fonts: {
86
+ test: /\.(woff|woff2|eot|ttf|otf)(\?[\s\S]+)?$/,
87
+ use: {
88
+ loader: 'file-loader',
89
+ options: {
90
+ outputPath: 'content/fonts',
91
+ publicPath: '../fonts/',
92
+ },
117
93
  },
118
- };
94
+ },
95
+ sourcemap: {
96
+ test: /\.[tj]sx$/,
97
+ use: ['source-map-loader'],
98
+ enforce: 'pre',
99
+ exclude: [/node_modules/, /build/, /__tests__/],
100
+ },
101
+ });
102
+ const makeAliases = (config, projectDir) => {
119
103
  const aliases = {
120
104
  '@24i/smartapps-bigscreen-device': config.environment === 'production'
121
105
  ? '@24i/smartapps-bigscreen-device'
@@ -132,6 +116,25 @@ function generateConfig(config) {
132
116
  }
133
117
  });
134
118
  }
119
+ return aliases;
120
+ };
121
+ function generateConfig(config) {
122
+ const projectDir = path_1.default.resolve(config.currentDir, '../../');
123
+ const platformBuildsDir = path_1.default.resolve(config.currentDir, '../');
124
+ const appBuildDir = path_1.default.resolve(config.currentDir);
125
+ const appBuildEngineProjectDir = path_1.default.resolve(config.currentDir, config.buildFolder);
126
+ const appBuildEngineProjectPublicDir = path_1.default.resolve(appBuildEngineProjectDir, 'public');
127
+ const platformSchemeAppIdObj = {
128
+ platform: config.platform,
129
+ scheme: config.scheme,
130
+ flavour: config.appConfigId,
131
+ };
132
+ const buildVersion = smartapps_bigscreen_rnv_build_engine_1.Resolvers.resolveBuildVersion(platformSchemeAppIdObj);
133
+ const baseUrl = smartapps_bigscreen_rnv_build_engine_1.Resolvers.resolveBaseUrl(platformSchemeAppIdObj);
134
+ const devServerHost = config.devServerHost || '0.0.0.0';
135
+ const isDevServer = appBuildEngineProjectDir.endsWith('/server');
136
+ const { PLATFORM } = process.env;
137
+ const isBuildHosted = config.isBuildHosted || false;
135
138
  const appContentPath = getAppContentPath(baseUrl, isBuildHosted);
136
139
  const copiedDirWithPublicContentPath = path_1.default.join(appBuildDir, `../${path_1.default.parse(appBuildDir).name}-public`);
137
140
  const plugins = {
@@ -203,30 +206,24 @@ function generateConfig(config) {
203
206
  },
204
207
  }),
205
208
  };
206
- const extensions = [
207
- ...generateFlavourJSExtensions(config),
208
- ...generateFlavourSCSSExtensions(config),
209
- ];
210
- const output = {
211
- filename: 'content/js/[name].js',
212
- publicPath: isBuildHosted ? `${baseUrl}/public` : '',
213
- path: appBuildEngineProjectPublicDir,
214
- };
215
- const devServer = {
216
- host: devServerHost,
217
- };
218
- const entry = {
219
- polyfill: path_1.default.resolve(projectDir, 'polyfill/index.ts'),
220
- bundle: path_1.default.resolve(projectDir, `${config.entryFile}.js`),
221
- };
222
209
  return {
223
- Rules: rules,
210
+ Rules: makeRules(config, projectDir, isDevServer),
211
+ extensions: [
212
+ ...generateFlavourJSExtensions(config),
213
+ ...generateFlavourSCSSExtensions(config),
214
+ ],
215
+ aliases: makeAliases(config, projectDir),
216
+ entry: {
217
+ polyfill: path_1.default.resolve(projectDir, 'polyfill/index.ts'),
218
+ bundle: path_1.default.resolve(projectDir, `${config.entryFile}.js`),
219
+ },
220
+ devServer: { host: devServerHost },
221
+ output: {
222
+ filename: 'content/js/[name].js',
223
+ publicPath: isBuildHosted ? `${baseUrl}/public` : '',
224
+ path: appBuildEngineProjectPublicDir,
225
+ },
224
226
  Plugins: plugins,
225
- extensions,
226
- aliases,
227
- entry,
228
- devServer,
229
- output,
230
227
  projectDir,
231
228
  platformBuildsDir,
232
229
  appBuildDir,
@@ -0,0 +1,25 @@
1
+ /* eslint-disable */
2
+
3
+ const process = require('process');
4
+ const fs = require('fs').promises;
5
+
6
+ const main = async (deleteDependencies) => {
7
+
8
+ console.log("Fix dependencies")
9
+
10
+ if (deleteDependencies === undefined) return;
11
+
12
+ for (dependency of deleteDependencies) {
13
+
14
+ const packageLockFilePath = `${dependency.path}`;
15
+
16
+ console.log(packageLockFilePath);
17
+ try {
18
+ await fs.rm(packageLockFilePath, { recursive: true, force: true });
19
+ } catch {
20
+ console.log("error")
21
+ }
22
+ }
23
+ };
24
+
25
+ main(require('./package.json').deleteDependencies);
package/jest.config.js CHANGED
@@ -2,6 +2,7 @@ module.exports = {
2
2
  ...require('../../jest.config.base'),
3
3
  transformIgnorePatterns: [
4
4
  '/node_modules/ansi-color/', // compiler error: Octal literal in strict mode
5
+ '/node_modules/fstream', // compiler error: Octal literal in strict mode
5
6
  ],
6
7
  testEnvironment: 'node',
7
8
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@24i/smartapps-bigscreen-rnv-build-engine",
3
- "version": "0.12.2-alpha.1692+d30ad4aa",
3
+ "version": "0.13.0",
4
4
  "description": "Package with build engine for SmartApps BIGscreen projects...",
5
5
  "main": "dist/src/index.js",
6
6
  "scripts": {
@@ -16,17 +16,32 @@
16
16
  "lintcheck:cached": "npm run eslint -- --cache && npm run stylelint -- --cache",
17
17
  "typecheck:cached": "tsc --noEmit --incremental",
18
18
  "test": "jest --passWithNoTests",
19
- "prepublishOnly": "npm run build"
19
+ "prepublishOnly": "npm run build",
20
+ "postinstall": "node fixDependency.js"
20
21
  },
22
+ "deleteDependencies": [
23
+ {
24
+ "path": "../../unzip2/node_modules/graceful-fs/",
25
+ "version": "^4.2.8"
26
+ },
27
+ {
28
+ "path": "./node_modules/fstream/node_modules/graceful-fs/",
29
+ "version": "^4.2.8"
30
+ },
31
+ {
32
+ "path": "../../fstream/node_modules/graceful-fs/",
33
+ "version": "^4.2.8"
34
+ }
35
+ ],
21
36
  "devDependencies": {
22
- "@types/inquirer": "8.1.3",
37
+ "@types/inquirer": "8.2.0",
23
38
  "@types/mini-css-extract-plugin": "1.2.2",
24
- "@types/node": "17.0.7",
39
+ "@types/node": "17.0.14",
25
40
  "@types/semver": "7.3.9",
26
- "@types/ssh2": "0.5.50",
41
+ "@types/ssh2": "0.5.51",
27
42
  "@types/tapable": "1.0.6",
28
43
  "@types/webpack": "4.41.26",
29
- "nock": "13.2.1",
44
+ "nock": "13.2.2",
30
45
  "svgo": "1.3.2"
31
46
  },
32
47
  "peerDependencies": {
@@ -43,6 +58,7 @@
43
58
  "glob": "7.1.7",
44
59
  "html-webpack-harddisk-plugin": "1.0.2",
45
60
  "html-webpack-plugin": "4.5.2",
61
+ "manifoldjs-windows10": "^0.1.8",
46
62
  "mini-css-extract-plugin": "1.6.2",
47
63
  "node-ssh": "11.1.1",
48
64
  "ora": "5.4.1",
@@ -63,5 +79,5 @@
63
79
  "keywords": [],
64
80
  "author": "24i",
65
81
  "license": "ISC",
66
- "gitHead": "d30ad4aa4a434b1919281d3926f50ef975cc57ba"
82
+ "gitHead": "8118c9fff07ffff6132bb33eb542b3074a33a396"
67
83
  }