@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 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]);
@@ -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 = 13;
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
@@ -9,6 +9,7 @@ export interface HarmonyManagedPaths {
9
9
  readonly entryHvigor: string;
10
10
  readonly moduleJson: string;
11
11
  readonly profiles: string;
12
+ readonly abilityStage: string;
12
13
  readonly entryAbility: string;
13
14
  readonly indexPage: string;
14
15
  readonly worker: string;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo-harmony/config-plugins",
3
- "version": "55.0.10-harmony.3",
3
+ "version": "55.0.10-harmony.4",
4
4
  "keywords": [
5
5
  "react-native",
6
6
  "expo",
package/src/index.ts CHANGED
@@ -30,6 +30,7 @@ export {
30
30
  withCMakeLists,
31
31
  withColors,
32
32
  withCppPackageProvider,
33
+ withAbilityStage,
33
34
  withEntryAbility,
34
35
  withEntryBuildProfile,
35
36
  withEntryHvigor,
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>>
@@ -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 = 13;
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
  }