@expo/inline-modules 0.0.12-canary-20260606-4d4666c → 0.0.12
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.
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export interface InlineModulesXcodeParams {
|
|
2
2
|
watchedDirectories: string[];
|
|
3
|
+
/**
|
|
4
|
+
* List of targets to which inline modules files are added. If undefined defaults to the main target only.
|
|
5
|
+
*/
|
|
6
|
+
xcodeProjectTargets?: string[];
|
|
7
|
+
/** app config name */
|
|
8
|
+
name: string;
|
|
3
9
|
}
|
|
4
10
|
/**
|
|
5
11
|
* Add watched directories as PBXFileSystemSynchronizedRootGroups to pbxproj file in the project and save the changes.
|
|
@@ -7,11 +7,60 @@ exports.updateXcodeProject = updateXcodeProject;
|
|
|
7
7
|
const config_plugins_1 = require("@expo/config-plugins");
|
|
8
8
|
const fs_1 = __importDefault(require("fs"));
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
+
function escapeXMLCharacters(original) {
|
|
11
|
+
const noAmps = original.replace('&', '&');
|
|
12
|
+
const noLt = noAmps.replace('<', '<');
|
|
13
|
+
const noGt = noLt.replace('>', '>');
|
|
14
|
+
const noApos = noGt.replace('"', '\\"');
|
|
15
|
+
return noApos.replace("'", "\\'");
|
|
16
|
+
}
|
|
17
|
+
// Note that this main target name is based on how `@expo/cli/src/prebuild/renameTemplateAppNameAsync.ts` preprocesses the ios project template.
|
|
18
|
+
// It is neccesary to match the target name in the path to ExpoModulesProvider.swift for the main target as is used when generating it.
|
|
19
|
+
function getMainTargetName(config) {
|
|
20
|
+
const name = config.name;
|
|
21
|
+
const safeName = escapeXMLCharacters(name);
|
|
22
|
+
return config_plugins_1.IOSConfig.XcodeUtils.sanitizedName(safeName);
|
|
23
|
+
}
|
|
24
|
+
function getNativeTargetSynchronizedGroupsMap(pbxProject) {
|
|
25
|
+
const objects = pbxProject.hash.project.objects;
|
|
26
|
+
const nativeTargetSynchronizedGroups = new Map();
|
|
27
|
+
for (const target of pbxProject.getFirstProject().firstProject.targets) {
|
|
28
|
+
const nativeTargetGroup = objects.PBXNativeTarget[target.value];
|
|
29
|
+
const synchronizedGroups = new Set();
|
|
30
|
+
if (nativeTargetGroup.fileSystemSynchronizedGroups) {
|
|
31
|
+
for (const synchronizedGroup of nativeTargetGroup.fileSystemSynchronizedGroups) {
|
|
32
|
+
synchronizedGroups.add(synchronizedGroup.value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
nativeTargetSynchronizedGroups.set(target.value, synchronizedGroups);
|
|
36
|
+
}
|
|
37
|
+
return nativeTargetSynchronizedGroups;
|
|
38
|
+
}
|
|
39
|
+
function prepareSynchronizedRootGroups(pbxProject) {
|
|
40
|
+
const objects = pbxProject.hash.project.objects;
|
|
41
|
+
const fsSynchronizedRootGroups = new Map();
|
|
42
|
+
if (objects.PBXFileSystemSynchronizedRootGroup) {
|
|
43
|
+
for (const key of Object.keys(objects.PBXFileSystemSynchronizedRootGroup)) {
|
|
44
|
+
if (key.endsWith('_comment')) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const groupObject = objects.PBXFileSystemSynchronizedRootGroup[key];
|
|
48
|
+
fsSynchronizedRootGroups.set(groupObject.path, key);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
objects.PBXFileSystemSynchronizedRootGroup = {};
|
|
53
|
+
}
|
|
54
|
+
return { fsSynchronizedRootGroups };
|
|
55
|
+
}
|
|
10
56
|
/**
|
|
11
57
|
* Add watched directories as PBXFileSystemSynchronizedRootGroups to pbxproj file in the project and save the changes.
|
|
12
58
|
*/
|
|
13
59
|
async function updateXcodeProject(projectRoot, inlineModulesXcodeParams) {
|
|
14
60
|
const swiftWatchedDirectories = inlineModulesXcodeParams.watchedDirectories;
|
|
61
|
+
const xcodeProjectTargets = inlineModulesXcodeParams.xcodeProjectTargets
|
|
62
|
+
? new Set(inlineModulesXcodeParams.xcodeProjectTargets)
|
|
63
|
+
: undefined;
|
|
15
64
|
// Only perform changes to pbxproj if necessary
|
|
16
65
|
if (swiftWatchedDirectories.length === 0) {
|
|
17
66
|
return;
|
|
@@ -20,25 +69,28 @@ async function updateXcodeProject(projectRoot, inlineModulesXcodeParams) {
|
|
|
20
69
|
const mainGroupUUID = pbxProject.getFirstProject().firstProject.mainGroup;
|
|
21
70
|
const objects = pbxProject.hash.project.objects;
|
|
22
71
|
const projectRootRelativeToIos = '..';
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
fsSynchronizedRootGroups.add(objects.PBXFileSystemSynchronizedRootGroup[key].path);
|
|
72
|
+
const pbxNativeTarget = pbxProject.hash.project.objects.PBXNativeTarget;
|
|
73
|
+
const nativeTargetSynchronizedGroups = getNativeTargetSynchronizedGroupsMap(pbxProject);
|
|
74
|
+
const addWatchedDirectoryToTarget = (targetUUID, nativeTargetGroup, dir, dirUUID) => {
|
|
75
|
+
if (!nativeTargetSynchronizedGroups.has(targetUUID)) {
|
|
76
|
+
nativeTargetSynchronizedGroups.set(targetUUID, new Set());
|
|
30
77
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
78
|
+
const targetSynchronizedGroups = nativeTargetSynchronizedGroups.get(targetUUID);
|
|
79
|
+
if (targetSynchronizedGroups.has(dirUUID)) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (!nativeTargetGroup.fileSystemSynchronizedGroups) {
|
|
83
|
+
nativeTargetGroup.fileSystemSynchronizedGroups = [];
|
|
84
|
+
}
|
|
85
|
+
nativeTargetGroup.fileSystemSynchronizedGroups.push({ value: dirUUID, comment: dir });
|
|
86
|
+
targetSynchronizedGroups.add(dirUUID);
|
|
87
|
+
};
|
|
88
|
+
const { fsSynchronizedRootGroups } = prepareSynchronizedRootGroups(pbxProject);
|
|
89
|
+
const getOrCreateWatchedDirectoryUUID = (dir) => {
|
|
37
90
|
const dirRelativeToIos = path_1.default.join(projectRootRelativeToIos, dir);
|
|
38
91
|
if (fsSynchronizedRootGroups.has(dirRelativeToIos)) {
|
|
39
|
-
|
|
92
|
+
return fsSynchronizedRootGroups.get(dirRelativeToIos);
|
|
40
93
|
}
|
|
41
|
-
projectHasChanged = true;
|
|
42
94
|
const newUUID = pbxProject.generateUuid();
|
|
43
95
|
objects.PBXGroup[mainGroupUUID].children.push({
|
|
44
96
|
value: newUUID,
|
|
@@ -52,16 +104,26 @@ async function updateXcodeProject(projectRoot, inlineModulesXcodeParams) {
|
|
|
52
104
|
path: dirRelativeToIos,
|
|
53
105
|
sourceTree: 'SOURCE_ROOT',
|
|
54
106
|
};
|
|
55
|
-
|
|
107
|
+
return newUUID;
|
|
108
|
+
};
|
|
109
|
+
const targetsToUpdate = pbxProject
|
|
110
|
+
.getFirstProject()
|
|
111
|
+
.firstProject.targets.filter((target) => {
|
|
112
|
+
const targetUuid = target.value;
|
|
113
|
+
const targetName = pbxNativeTarget[targetUuid].name;
|
|
114
|
+
if (!xcodeProjectTargets) {
|
|
115
|
+
// If the xcodeProjectTargets are not provided, default to the main target
|
|
116
|
+
return targetName === getMainTargetName(inlineModulesXcodeParams);
|
|
117
|
+
}
|
|
118
|
+
return xcodeProjectTargets.has(targetName);
|
|
119
|
+
});
|
|
120
|
+
for (const watchedDirectory of swiftWatchedDirectories) {
|
|
121
|
+
const dirUUID = getOrCreateWatchedDirectoryUUID(watchedDirectory);
|
|
122
|
+
for (const target of targetsToUpdate) {
|
|
56
123
|
const nativeTargetGroup = objects.PBXNativeTarget[target.value];
|
|
57
|
-
|
|
58
|
-
nativeTargetGroup.fileSystemSynchronizedGroups = [];
|
|
59
|
-
}
|
|
60
|
-
nativeTargetGroup.fileSystemSynchronizedGroups.push({ value: newUUID, comment: dir });
|
|
124
|
+
addWatchedDirectoryToTarget(target.value, nativeTargetGroup, watchedDirectory, dirUUID);
|
|
61
125
|
}
|
|
62
126
|
}
|
|
63
|
-
|
|
64
|
-
await fs_1.default.promises.writeFile(pbxProject.filepath, pbxProject.writeSync());
|
|
65
|
-
}
|
|
127
|
+
await fs_1.default.promises.writeFile(pbxProject.filepath, pbxProject.writeSync());
|
|
66
128
|
}
|
|
67
129
|
//# sourceMappingURL=xcodeProjectUpdates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xcodeProjectUpdates.js","sourceRoot":"","sources":["../src/xcodeProjectUpdates.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"xcodeProjectUpdates.js","sourceRoot":"","sources":["../src/xcodeProjectUpdates.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/inline-modules",
|
|
3
|
-
"version": "0.0.12
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "The Expo inline modules",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"files": [
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
"url": "https://github.com/expo/expo/issues"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@expo/config-plugins": "56.0.9
|
|
25
|
+
"@expo/config-plugins": "~56.0.9"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/jest": "^29.2.1",
|
|
29
29
|
"@types/node": "^22.14.0",
|
|
30
|
-
"expo-module-scripts": "56.0.
|
|
30
|
+
"expo-module-scripts": "56.0.3"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "812dc007aefed0c432c0439fdfe05ee2f4f21da2",
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "expo-module build",
|
|
35
35
|
"clean": "expo-module clean",
|