@expo-harmony/config-plugins 55.0.10-harmony.3 → 55.0.10-harmony.4
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/build/index.d.ts +1 -1
- package/build/index.js +2 -1
- package/build/mods.d.ts +2 -1
- package/build/mods.js +5 -1
- package/build/normalizeConfig.js +5 -1
- package/build/paths.d.ts +1 -0
- package/build/paths.js +1 -0
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/mods.ts +11 -0
- package/src/normalizeConfig.ts +6 -1
- package/src/paths.ts +4 -0
package/build/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export type { HarmonyConfigPluginErrorOptions } from './errors';
|
|
|
11
11
|
export { atomicWrite, stableJson as stableHarmonyJson } from './files';
|
|
12
12
|
export { normalizeHarmonyConfig } from './normalizeConfig';
|
|
13
13
|
export type { HarmonyExpoConfig, NormalizedHarmonyConfig } from './normalizeConfig';
|
|
14
|
-
export { HarmonyModNames as HARMONY_MOD_NAMES, recordManagedFile, withAppJson, withArkTSPackageProvider, withCMakeLists, withColors, withCppPackageProvider, withEntryAbility, withEntryBuildProfile, withEntryHvigor, withEntryOhPackage, withHarmonyAutolinking, withHarmonyBaseMods, withHarmonyDangerousMod, withHarmonyMod, withHarmonyResources, withHvigorConfig, withIndexPage, withMedia, withModuleJson, withProfiles, withProjectBuildProfile, withReactNativeConfig, withRootHvigor, withRootOhPackage, withStrings, withWorker, } from './mods';
|
|
14
|
+
export { HarmonyModNames as HARMONY_MOD_NAMES, recordManagedFile, withAppJson, withArkTSPackageProvider, withCMakeLists, withColors, withCppPackageProvider, withAbilityStage, withEntryAbility, withEntryBuildProfile, withEntryHvigor, withEntryOhPackage, withHarmonyAutolinking, withHarmonyBaseMods, withHarmonyDangerousMod, withHarmonyMod, withHarmonyResources, withHvigorConfig, withIndexPage, withMedia, withModuleJson, withProfiles, withProjectBuildProfile, withReactNativeConfig, withRootHvigor, withRootOhPackage, withStrings, withWorker, } from './mods';
|
|
15
15
|
export type { HarmonyJson, HarmonyMediaDescriptor, HarmonyMediaMap, HarmonyModName, HarmonyResourceMap, } from './mods';
|
|
16
16
|
export { registerHarmonyConfigPlugin } from './ownership';
|
|
17
17
|
export type { HarmonyConfigPluginOwnership } from './ownership';
|
package/build/index.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.withHarmonyPermissions = exports.HarmonyPermissions = exports.withRawfile = exports.withHarmonyGeneratedFiles = exports.HarmonyResources = exports.HarmonyManifest = exports.HarmonyPaths = exports.registerHarmonyConfigPlugin = exports.withWorker = exports.withStrings = exports.withRootOhPackage = exports.withRootHvigor = exports.withReactNativeConfig = exports.withProjectBuildProfile = exports.withProfiles = exports.withModuleJson = exports.withMedia = exports.withIndexPage = exports.withHvigorConfig = exports.withHarmonyResources = exports.withHarmonyMod = exports.withHarmonyDangerousMod = exports.withHarmonyBaseMods = exports.withHarmonyAutolinking = exports.withEntryOhPackage = exports.withEntryHvigor = exports.withEntryBuildProfile = exports.withEntryAbility = exports.withCppPackageProvider = exports.withColors = exports.withCMakeLists = exports.withArkTSPackageProvider = exports.withAppJson = exports.recordManagedFile = exports.HARMONY_MOD_NAMES = exports.normalizeHarmonyConfig = exports.stableHarmonyJson = exports.atomicWrite = exports.HarmonyConfigPluginError = exports.withHarmonyJsonFile = exports.createHarmonyFileMod = exports.compileHarmonyModsAsync = exports.withStaticPlugin = exports.withRunOnce = exports.withPlugins = exports.createRunOncePlugin = exports.defineExpoHarmonyConfig = void 0;
|
|
36
|
+
exports.withHarmonyPermissions = exports.HarmonyPermissions = exports.withRawfile = exports.withHarmonyGeneratedFiles = exports.HarmonyResources = exports.HarmonyManifest = exports.HarmonyPaths = exports.registerHarmonyConfigPlugin = exports.withWorker = exports.withStrings = exports.withRootOhPackage = exports.withRootHvigor = exports.withReactNativeConfig = exports.withProjectBuildProfile = exports.withProfiles = exports.withModuleJson = exports.withMedia = exports.withIndexPage = exports.withHvigorConfig = exports.withHarmonyResources = exports.withHarmonyMod = exports.withHarmonyDangerousMod = exports.withHarmonyBaseMods = exports.withHarmonyAutolinking = exports.withEntryOhPackage = exports.withEntryHvigor = exports.withEntryBuildProfile = exports.withEntryAbility = exports.withAbilityStage = exports.withCppPackageProvider = exports.withColors = exports.withCMakeLists = exports.withArkTSPackageProvider = exports.withAppJson = exports.recordManagedFile = exports.HARMONY_MOD_NAMES = exports.normalizeHarmonyConfig = exports.stableHarmonyJson = exports.atomicWrite = exports.HarmonyConfigPluginError = exports.withHarmonyJsonFile = exports.createHarmonyFileMod = exports.compileHarmonyModsAsync = exports.withStaticPlugin = exports.withRunOnce = exports.withPlugins = exports.createRunOncePlugin = exports.defineExpoHarmonyConfig = void 0;
|
|
37
37
|
var config_1 = require("./config");
|
|
38
38
|
Object.defineProperty(exports, "defineExpoHarmonyConfig", { enumerable: true, get: function () { return config_1.defineExpoHarmonyConfig; } });
|
|
39
39
|
var composition_1 = require("./composition");
|
|
@@ -61,6 +61,7 @@ Object.defineProperty(exports, "withArkTSPackageProvider", { enumerable: true, g
|
|
|
61
61
|
Object.defineProperty(exports, "withCMakeLists", { enumerable: true, get: function () { return mods_1.withCMakeLists; } });
|
|
62
62
|
Object.defineProperty(exports, "withColors", { enumerable: true, get: function () { return mods_1.withColors; } });
|
|
63
63
|
Object.defineProperty(exports, "withCppPackageProvider", { enumerable: true, get: function () { return mods_1.withCppPackageProvider; } });
|
|
64
|
+
Object.defineProperty(exports, "withAbilityStage", { enumerable: true, get: function () { return mods_1.withAbilityStage; } });
|
|
64
65
|
Object.defineProperty(exports, "withEntryAbility", { enumerable: true, get: function () { return mods_1.withEntryAbility; } });
|
|
65
66
|
Object.defineProperty(exports, "withEntryBuildProfile", { enumerable: true, get: function () { return mods_1.withEntryBuildProfile; } });
|
|
66
67
|
Object.defineProperty(exports, "withEntryHvigor", { enumerable: true, get: function () { return mods_1.withEntryHvigor; } });
|
package/build/mods.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { ExpoConfigWithHarmony } from './config';
|
|
|
3
3
|
import type { HarmonyModuleJson } from './manifest';
|
|
4
4
|
import type { HarmonyConfigPlugin, HarmonyModAction } from './pluginTypes';
|
|
5
5
|
import type { HarmonyResourceFile } from './resources';
|
|
6
|
-
export type HarmonyModName = 'dangerous' | 'reactNativeConfig' | 'appJson' | 'projectBuildProfile' | 'rootOhPackage' | 'rootHvigor' | 'hvigorConfig' | 'entryBuildProfile' | 'entryOhPackage' | 'entryHvigor' | 'moduleJson' | 'strings' | 'colors' | 'media' | 'profiles' | 'entryAbility' | 'indexPage' | 'worker' | 'arktsPackageProvider' | 'cppPackageProvider' | 'cmakeLists' | 'autolinking';
|
|
6
|
+
export type HarmonyModName = 'dangerous' | 'reactNativeConfig' | 'appJson' | 'projectBuildProfile' | 'rootOhPackage' | 'rootHvigor' | 'hvigorConfig' | 'entryBuildProfile' | 'entryOhPackage' | 'entryHvigor' | 'moduleJson' | 'strings' | 'colors' | 'media' | 'profiles' | 'abilityStage' | 'entryAbility' | 'indexPage' | 'worker' | 'arktsPackageProvider' | 'cppPackageProvider' | 'cmakeLists' | 'autolinking';
|
|
7
7
|
export type HarmonyJson = Record<string, unknown>;
|
|
8
8
|
export type HarmonyResourceMap = Record<string, HarmonyResourceFile>;
|
|
9
9
|
export type HarmonyMediaDescriptor = {
|
|
@@ -42,6 +42,7 @@ export declare const withStrings: HarmonyConfigPlugin<HarmonyModAction<HarmonyRe
|
|
|
42
42
|
export declare const withColors: HarmonyConfigPlugin<HarmonyModAction<HarmonyResourceMap>>;
|
|
43
43
|
export declare const withMedia: HarmonyConfigPlugin<HarmonyModAction<HarmonyMediaMap>>;
|
|
44
44
|
export declare const withProfiles: HarmonyConfigPlugin<HarmonyModAction<HarmonyJson>>;
|
|
45
|
+
export declare const withAbilityStage: HarmonyConfigPlugin<HarmonyModAction<string>>;
|
|
45
46
|
export declare const withEntryAbility: HarmonyConfigPlugin<HarmonyModAction<string>>;
|
|
46
47
|
export declare const withIndexPage: HarmonyConfigPlugin<HarmonyModAction<string>>;
|
|
47
48
|
export declare const withWorker: HarmonyConfigPlugin<HarmonyModAction<string>>;
|
package/build/mods.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.withHarmonyResources = exports.withHarmonyDangerousMod = exports.withProjectPatch = exports.withPreparation = exports.withCngManifest = exports.withHarmonyAutolinking = exports.withCMakeLists = exports.withCppPackageProvider = exports.withArkTSPackageProvider = exports.withWorker = exports.withIndexPage = exports.withEntryAbility = exports.withProfiles = exports.withMedia = exports.withColors = exports.withStrings = exports.withModuleJson = exports.withEntryHvigor = exports.withEntryOhPackage = exports.withEntryBuildProfile = exports.withHvigorConfig = exports.withNativeInputsStamp = exports.withRootHvigor = exports.withRootOhPackage = exports.withProjectBuildProfile = exports.withAppJson = exports.withReactNativeConfig = exports.HarmonyModNames = void 0;
|
|
6
|
+
exports.withHarmonyResources = exports.withHarmonyDangerousMod = exports.withProjectPatch = exports.withPreparation = exports.withCngManifest = exports.withHarmonyAutolinking = exports.withCMakeLists = exports.withCppPackageProvider = exports.withArkTSPackageProvider = exports.withWorker = exports.withIndexPage = exports.withEntryAbility = exports.withAbilityStage = exports.withProfiles = exports.withMedia = exports.withColors = exports.withStrings = exports.withModuleJson = exports.withEntryHvigor = exports.withEntryOhPackage = exports.withEntryBuildProfile = exports.withHvigorConfig = exports.withNativeInputsStamp = exports.withRootHvigor = exports.withRootOhPackage = exports.withProjectBuildProfile = exports.withAppJson = exports.withReactNativeConfig = exports.HarmonyModNames = void 0;
|
|
7
7
|
exports.recordManagedFile = recordManagedFile;
|
|
8
8
|
exports.withHarmonyBaseMods = withHarmonyBaseMods;
|
|
9
9
|
exports.withHarmonyMod = withHarmonyMod;
|
|
@@ -29,6 +29,7 @@ const TextMods = new Set([
|
|
|
29
29
|
'rootHvigor',
|
|
30
30
|
'nativeInputsStamp',
|
|
31
31
|
'entryHvigor',
|
|
32
|
+
'abilityStage',
|
|
32
33
|
'entryAbility',
|
|
33
34
|
'indexPage',
|
|
34
35
|
'worker',
|
|
@@ -57,6 +58,7 @@ const AllModNames = Object.freeze([
|
|
|
57
58
|
'colors',
|
|
58
59
|
'media',
|
|
59
60
|
'profiles',
|
|
61
|
+
'abilityStage',
|
|
60
62
|
'entryAbility',
|
|
61
63
|
'indexPage',
|
|
62
64
|
'worker',
|
|
@@ -397,6 +399,8 @@ const withMedia = (config, action) => withHarmonyMod(config, ['media', action]);
|
|
|
397
399
|
exports.withMedia = withMedia;
|
|
398
400
|
const withProfiles = (config, action) => withHarmonyMod(config, ['profiles', action]);
|
|
399
401
|
exports.withProfiles = withProfiles;
|
|
402
|
+
const withAbilityStage = (config, action) => withHarmonyMod(config, ['abilityStage', action]);
|
|
403
|
+
exports.withAbilityStage = withAbilityStage;
|
|
400
404
|
const withEntryAbility = (config, action) => withHarmonyMod(config, ['entryAbility', action]);
|
|
401
405
|
exports.withEntryAbility = withEntryAbility;
|
|
402
406
|
const withIndexPage = (config, action) => withHarmonyMod(config, ['indexPage', action]);
|
package/build/normalizeConfig.js
CHANGED
|
@@ -16,7 +16,7 @@ const Orientations = new Set([
|
|
|
16
16
|
'auto_rotation',
|
|
17
17
|
]);
|
|
18
18
|
const DeviceTypes = new Set(['phone', 'tablet', '2in1']);
|
|
19
|
-
const MinimumApi =
|
|
19
|
+
const MinimumApi = 20;
|
|
20
20
|
const TargetApi = 24;
|
|
21
21
|
const SdkVersions = new Map([
|
|
22
22
|
[13, '5.0.1(13)'],
|
|
@@ -219,6 +219,10 @@ function normalizeHarmonyConfig(config) {
|
|
|
219
219
|
if (!permissions.some(permission => permission.name === 'ohos.permission.INTERNET')) {
|
|
220
220
|
permissions.unshift({ name: 'ohos.permission.INTERNET' });
|
|
221
221
|
}
|
|
222
|
+
if (config.updates?.checkAutomatically === 'WIFI_ONLY'
|
|
223
|
+
&& !permissions.some(permission => permission.name === 'ohos.permission.GET_NETWORK_INFO')) {
|
|
224
|
+
permissions.push({ name: 'ohos.permission.GET_NETWORK_INFO' });
|
|
225
|
+
}
|
|
222
226
|
const schemes = readExpoSchemes(config);
|
|
223
227
|
let skills = (harmony.skills || []).map(normalizeSkill);
|
|
224
228
|
for (const scheme of schemes) {
|
package/build/paths.d.ts
CHANGED
package/build/paths.js
CHANGED
|
@@ -24,6 +24,7 @@ const ManagedPaths = Object.freeze({
|
|
|
24
24
|
entryHvigor: 'entry/hvigorfile.ts',
|
|
25
25
|
moduleJson: 'entry/src/main/module.json5',
|
|
26
26
|
profiles: 'entry/src/main/resources/base/profile/main_pages.json',
|
|
27
|
+
abilityStage: 'entry/src/main/ets/abilitystage/EntryAbilityStage.ets',
|
|
27
28
|
entryAbility: 'entry/src/main/ets/entryability/EntryAbility.ets',
|
|
28
29
|
indexPage: 'entry/src/main/ets/pages/Index.ets',
|
|
29
30
|
worker: 'entry/src/main/ets/workers/RNOHWorker.ets',
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
package/src/mods.ts
CHANGED
|
@@ -34,6 +34,7 @@ export type HarmonyModName
|
|
|
34
34
|
| 'colors'
|
|
35
35
|
| 'media'
|
|
36
36
|
| 'profiles'
|
|
37
|
+
| 'abilityStage'
|
|
37
38
|
| 'entryAbility'
|
|
38
39
|
| 'indexPage'
|
|
39
40
|
| 'worker'
|
|
@@ -97,6 +98,7 @@ const TextMods = new Set<FileModName>([
|
|
|
97
98
|
'rootHvigor',
|
|
98
99
|
'nativeInputsStamp',
|
|
99
100
|
'entryHvigor',
|
|
101
|
+
'abilityStage',
|
|
100
102
|
'entryAbility',
|
|
101
103
|
'indexPage',
|
|
102
104
|
'worker',
|
|
@@ -126,6 +128,7 @@ const AllModNames: readonly AnyModName[] = Object.freeze([
|
|
|
126
128
|
'colors',
|
|
127
129
|
'media',
|
|
128
130
|
'profiles',
|
|
131
|
+
'abilityStage',
|
|
129
132
|
'entryAbility',
|
|
130
133
|
'indexPage',
|
|
131
134
|
'worker',
|
|
@@ -195,6 +198,7 @@ function withFileProvider(config: ExpoConfig, name: FileModName): ExpoConfig {
|
|
|
195
198
|
|
|
196
199
|
const context = { ...request, modFile: file, modFileExists: exists } as typeof value.modRequest;
|
|
197
200
|
const result = await next!({ ...value, modRequest: context, modResults: data });
|
|
201
|
+
|
|
198
202
|
assertModResults(name, result.modResults, JsonMods.has(name) ? 'json' : 'text');
|
|
199
203
|
|
|
200
204
|
if (!result.modRequest.introspect) {
|
|
@@ -239,6 +243,7 @@ async function readMediaMap(root: string): Promise<HarmonyMediaMap> {
|
|
|
239
243
|
const directory = await resolveHarmonyPath(root, relative);
|
|
240
244
|
|
|
241
245
|
media[scope] = {};
|
|
246
|
+
|
|
242
247
|
let names: string[] = [];
|
|
243
248
|
|
|
244
249
|
try {
|
|
@@ -292,6 +297,7 @@ async function writeMediaMap(
|
|
|
292
297
|
{ operation: 'harmony.media.write' }
|
|
293
298
|
);
|
|
294
299
|
}
|
|
300
|
+
|
|
295
301
|
if (!descriptor || typeof descriptor !== 'object' || Array.isArray(descriptor)) {
|
|
296
302
|
throw new HarmonyConfigPluginError(
|
|
297
303
|
'ERR_HARMONY_CONFIG_INVALID',
|
|
@@ -308,6 +314,7 @@ async function writeMediaMap(
|
|
|
308
314
|
{ operation: 'harmony.media.write' }
|
|
309
315
|
);
|
|
310
316
|
}
|
|
317
|
+
|
|
311
318
|
if (item.replaceBase !== undefined && typeof item.replaceBase !== 'boolean') {
|
|
312
319
|
throw new HarmonyConfigPluginError(
|
|
313
320
|
'ERR_HARMONY_CONFIG_INVALID',
|
|
@@ -414,6 +421,7 @@ function withResourceProvider(config: ExpoConfig, name: ResourceModName): ExpoCo
|
|
|
414
421
|
: {};
|
|
415
422
|
|
|
416
423
|
const result = await next!({ ...value, modRequest: request, modResults: data });
|
|
424
|
+
|
|
417
425
|
assertModResults(name, result.modResults, 'resource');
|
|
418
426
|
|
|
419
427
|
if (!result.modRequest.introspect) {
|
|
@@ -563,6 +571,7 @@ export function registerMod<T, Config extends ExpoConfigWithHarmony>(
|
|
|
563
571
|
action: action as unknown as Parameters<typeof withMod<T>>[1]['action'],
|
|
564
572
|
});
|
|
565
573
|
const interceptor = (carrier.mods as unknown as Record<string, Record<string, HarmonyModAction>>).harmony[name];
|
|
574
|
+
|
|
566
575
|
provider.expoHarmonyLateActions.push(interceptor);
|
|
567
576
|
|
|
568
577
|
return config;
|
|
@@ -605,6 +614,8 @@ export const withMedia: HarmonyConfigPlugin<HarmonyModAction<HarmonyMediaMap>>
|
|
|
605
614
|
= (config, action) => withHarmonyMod(config, ['media', action]);
|
|
606
615
|
export const withProfiles: HarmonyConfigPlugin<HarmonyModAction<HarmonyJson>>
|
|
607
616
|
= (config, action) => withHarmonyMod(config, ['profiles', action]);
|
|
617
|
+
export const withAbilityStage: HarmonyConfigPlugin<HarmonyModAction<string>>
|
|
618
|
+
= (config, action) => withHarmonyMod(config, ['abilityStage', action]);
|
|
608
619
|
export const withEntryAbility: HarmonyConfigPlugin<HarmonyModAction<string>>
|
|
609
620
|
= (config, action) => withHarmonyMod(config, ['entryAbility', action]);
|
|
610
621
|
export const withIndexPage: HarmonyConfigPlugin<HarmonyModAction<string>>
|
package/src/normalizeConfig.ts
CHANGED
|
@@ -45,7 +45,7 @@ const Orientations = new Set([
|
|
|
45
45
|
'auto_rotation',
|
|
46
46
|
]);
|
|
47
47
|
const DeviceTypes = new Set<HarmonyDeviceType>(['phone', 'tablet', '2in1']);
|
|
48
|
-
const MinimumApi =
|
|
48
|
+
const MinimumApi = 20;
|
|
49
49
|
const TargetApi = 24;
|
|
50
50
|
const SdkVersions = new Map([
|
|
51
51
|
[13, '5.0.1(13)'],
|
|
@@ -338,6 +338,11 @@ function normalizeHarmonyConfig(config: HarmonyExpoConfig): NormalizedHarmonyCon
|
|
|
338
338
|
permissions.unshift({ name: 'ohos.permission.INTERNET' });
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
+
if (config.updates?.checkAutomatically === 'WIFI_ONLY'
|
|
342
|
+
&& !permissions.some(permission => permission.name === 'ohos.permission.GET_NETWORK_INFO')) {
|
|
343
|
+
permissions.push({ name: 'ohos.permission.GET_NETWORK_INFO' });
|
|
344
|
+
}
|
|
345
|
+
|
|
341
346
|
const schemes = readExpoSchemes(config);
|
|
342
347
|
let skills = (harmony.skills || []).map(normalizeSkill);
|
|
343
348
|
|
package/src/paths.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface HarmonyManagedPaths {
|
|
|
14
14
|
readonly entryHvigor: string;
|
|
15
15
|
readonly moduleJson: string;
|
|
16
16
|
readonly profiles: string;
|
|
17
|
+
readonly abilityStage: string;
|
|
17
18
|
readonly entryAbility: string;
|
|
18
19
|
readonly indexPage: string;
|
|
19
20
|
readonly worker: string;
|
|
@@ -60,6 +61,7 @@ const ManagedPaths: HarmonyManagedPaths & { readonly nativeInputsStamp: string }
|
|
|
60
61
|
entryHvigor: 'entry/hvigorfile.ts',
|
|
61
62
|
moduleJson: 'entry/src/main/module.json5',
|
|
62
63
|
profiles: 'entry/src/main/resources/base/profile/main_pages.json',
|
|
64
|
+
abilityStage: 'entry/src/main/ets/abilitystage/EntryAbilityStage.ets',
|
|
63
65
|
entryAbility: 'entry/src/main/ets/entryability/EntryAbility.ets',
|
|
64
66
|
indexPage: 'entry/src/main/ets/pages/Index.ets',
|
|
65
67
|
worker: 'entry/src/main/ets/workers/RNOHWorker.ets',
|
|
@@ -114,6 +116,7 @@ export async function assertNoExternalSymlink(root: string, target: string): Pro
|
|
|
114
116
|
current = path.join(current, segment);
|
|
115
117
|
|
|
116
118
|
let stat: fs.Stats;
|
|
119
|
+
|
|
117
120
|
try {
|
|
118
121
|
stat = await fs.promises.lstat(current);
|
|
119
122
|
} catch (cause) {
|
|
@@ -173,6 +176,7 @@ export async function resolveProjectPath(
|
|
|
173
176
|
name: keyof HarmonyProjectPaths
|
|
174
177
|
): Promise<string> {
|
|
175
178
|
const candidates = ProjectPathCandidates[name] || [ProjectPaths[name]];
|
|
179
|
+
|
|
176
180
|
for (const candidate of candidates) {
|
|
177
181
|
if (fs.existsSync(path.join(root, candidate))) return resolveHarmonyPath(root, candidate);
|
|
178
182
|
}
|