expo-type-information 0.1.1 → 0.1.2

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.
@@ -24,16 +24,30 @@ async function getResolvedWatchedDirectoriesFromAppJson(appJsonPath) {
24
24
  }
25
25
  return null;
26
26
  }
27
- async function generateInlineModuleTSFiles({ filePath, dirPath, typeInference, mapUnicodeCharacters, }) {
27
+ async function generateInlineModuleTSFiles({ filePath, dirPath, typeInference, mapUnicodeCharacters, compileOnlyModules, }) {
28
28
  return await (0, commandUtils_1.generateConciseTsFiles)({
29
- realInputPaths: [filePath],
29
+ realInputPaths: [filePath, ...compileOnlyModules],
30
30
  realOutputPath: dirPath,
31
31
  typeInference,
32
32
  watcher: false,
33
33
  mapUnicodeCharacters,
34
34
  });
35
35
  }
36
- async function inlineModulesWatcher({ appJsonPath, typeInference, mapUnicodeCharacters, }) {
36
+ const swiftModuleDefinitionRegex = /\bfunc\s+definition\s*\(\s*\)\s*->\s*[\w.]*ModuleDefinition\b/;
37
+ async function hasSwiftModuleDefinition(absoluteFilePath) {
38
+ try {
39
+ const contents = await fs_1.default.promises.readFile(absoluteFilePath, 'utf8');
40
+ return swiftModuleDefinitionRegex.test(contents);
41
+ }
42
+ catch {
43
+ console.warn(`Swift inline module '${absoluteFilePath}' could not be opened.`);
44
+ return false;
45
+ }
46
+ }
47
+ async function fileHasModuleDeclaration(filePath) {
48
+ return hasSwiftModuleDefinition(filePath);
49
+ }
50
+ async function inlineModulesWatcher({ appJsonPath, typeInference, mapUnicodeCharacters, compileOnlyModules, }) {
37
51
  const debouncedInlineModulesTsGeneration = (0, commandUtils_1.debounce)(generateInlineModuleTSFiles);
38
52
  const watchedDirectoriesWatchers = new Map();
39
53
  const setupWatchedDirectoriesWatchers = async () => {
@@ -60,13 +74,21 @@ async function inlineModulesWatcher({ appJsonPath, typeInference, mapUnicodeChar
60
74
  }
61
75
  const resolvedFilePath = path_1.default.resolve(dir, fileName);
62
76
  if (fs_1.default.existsSync(resolvedFilePath)) {
77
+ if (!(await fileHasModuleDeclaration(resolvedFilePath))) {
78
+ compileOnlyModules.add(resolvedFilePath);
79
+ return;
80
+ }
63
81
  debouncedInlineModulesTsGeneration({
64
82
  filePath: resolvedFilePath,
65
83
  dirPath: path_1.default.dirname(resolvedFilePath),
66
84
  typeInference,
67
85
  mapUnicodeCharacters,
86
+ compileOnlyModules,
68
87
  });
69
88
  }
89
+ else {
90
+ compileOnlyModules.delete(resolvedFilePath);
91
+ }
70
92
  });
71
93
  };
72
94
  for (const dir of watchedDirectories ?? []) {
@@ -113,26 +135,36 @@ async function inlineModulesInterfaceCommand(cli) {
113
135
  if (!watchedDirectories) {
114
136
  return;
115
137
  }
116
- const dirents = [];
138
+ const inlineModulesDirents = [];
139
+ const compileOnlyModules = new Set([]);
117
140
  for (const dir of watchedDirectories) {
118
141
  for await (const dirent of (0, utils_1.scanFilesRecursively)(dir)) {
119
142
  if (!dirent.name.endsWith('.swift')) {
120
143
  continue;
121
144
  }
122
- dirents.push(dirent);
145
+ const resolvedFilePath = dirent.path;
146
+ if (fs_1.default.existsSync(resolvedFilePath) &&
147
+ !(await fileHasModuleDeclaration(resolvedFilePath))) {
148
+ compileOnlyModules.add(resolvedFilePath);
149
+ }
150
+ else {
151
+ inlineModulesDirents.push(dirent);
152
+ }
123
153
  }
124
154
  }
125
- await (0, utils_1.taskAll)(dirents, async (dirent) => await generateInlineModuleTSFiles({
155
+ await (0, utils_1.taskAll)(inlineModulesDirents, async (dirent) => await generateInlineModuleTSFiles({
126
156
  filePath: dirent.path,
127
157
  dirPath: dirent.parentPath,
128
158
  typeInference: parsedArgs.typeInference,
129
159
  mapUnicodeCharacters,
160
+ compileOnlyModules,
130
161
  }));
131
162
  if (watcher) {
132
163
  await inlineModulesWatcher({
133
164
  appJsonPath,
134
165
  typeInference: parsedArgs.typeInference,
135
166
  mapUnicodeCharacters,
167
+ compileOnlyModules,
136
168
  });
137
169
  }
138
170
  });
@@ -1 +1 @@
1
- {"version":3,"file":"inlineModulesInterfaceCommand.js","sourceRoot":"","sources":["../../src/commands/inlineModulesInterfaceCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inlineModulesInterfaceCommand.js","sourceRoot":"","sources":["../../src/commands/inlineModulesInterfaceCommand.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-type-information",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "keywords": [
5
5
  "react-native",
6
6
  "expo",
@@ -36,7 +36,7 @@
36
36
  "ts-jest": "^29.1.2",
37
37
  "expo-module-scripts": "56.0.3"
38
38
  },
39
- "gitHead": "5104cb89c3938bc9653e0cbad43da3a43a2e77a7",
39
+ "gitHead": "6ffed84381e2d2bb80c2fc713d99724f707d6c06",
40
40
  "scripts": {
41
41
  "build": "expo-module build",
42
42
  "clean": "expo-module clean",
@@ -35,6 +35,7 @@ async function getResolvedWatchedDirectoriesFromAppJson(
35
35
  type GenerateInlineModulesTSFilesOptions = {
36
36
  filePath: string;
37
37
  dirPath: string;
38
+ compileOnlyModules: Set<string>;
38
39
  typeInference: TypeInferenceOption;
39
40
  mapUnicodeCharacters: boolean;
40
41
  };
@@ -44,9 +45,10 @@ async function generateInlineModuleTSFiles({
44
45
  dirPath,
45
46
  typeInference,
46
47
  mapUnicodeCharacters,
48
+ compileOnlyModules,
47
49
  }: GenerateInlineModulesTSFilesOptions) {
48
50
  return await generateConciseTsFiles({
49
- realInputPaths: [filePath],
51
+ realInputPaths: [filePath, ...compileOnlyModules],
50
52
  realOutputPath: dirPath,
51
53
  typeInference,
52
54
  watcher: false,
@@ -58,12 +60,29 @@ type InlineModulesWatcherOptions = {
58
60
  appJsonPath: string;
59
61
  typeInference: TypeInferenceOption;
60
62
  mapUnicodeCharacters: boolean;
63
+ compileOnlyModules: Set<string>;
61
64
  };
62
65
 
66
+ const swiftModuleDefinitionRegex = /\bfunc\s+definition\s*\(\s*\)\s*->\s*[\w.]*ModuleDefinition\b/;
67
+ async function hasSwiftModuleDefinition(absoluteFilePath: string): Promise<boolean> {
68
+ try {
69
+ const contents = await fs.promises.readFile(absoluteFilePath, 'utf8');
70
+ return swiftModuleDefinitionRegex.test(contents);
71
+ } catch {
72
+ console.warn(`Swift inline module '${absoluteFilePath}' could not be opened.`);
73
+ return false;
74
+ }
75
+ }
76
+
77
+ async function fileHasModuleDeclaration(filePath: string): Promise<boolean> {
78
+ return hasSwiftModuleDefinition(filePath);
79
+ }
80
+
63
81
  async function inlineModulesWatcher({
64
82
  appJsonPath,
65
83
  typeInference,
66
84
  mapUnicodeCharacters,
85
+ compileOnlyModules,
67
86
  }: InlineModulesWatcherOptions) {
68
87
  const debouncedInlineModulesTsGeneration = debounce(generateInlineModuleTSFiles);
69
88
  const watchedDirectoriesWatchers: Map<string, fs.FSWatcher> = new Map<string, fs.FSWatcher>();
@@ -93,15 +112,22 @@ async function inlineModulesWatcher({
93
112
  if (!fileName || !fileName.endsWith('.swift')) {
94
113
  return;
95
114
  }
96
-
97
115
  const resolvedFilePath = path.resolve(dir, fileName);
98
116
  if (fs.existsSync(resolvedFilePath)) {
117
+ if (!(await fileHasModuleDeclaration(resolvedFilePath))) {
118
+ compileOnlyModules.add(resolvedFilePath);
119
+ return;
120
+ }
121
+
99
122
  debouncedInlineModulesTsGeneration({
100
123
  filePath: resolvedFilePath,
101
124
  dirPath: path.dirname(resolvedFilePath),
102
125
  typeInference,
103
126
  mapUnicodeCharacters,
127
+ compileOnlyModules,
104
128
  });
129
+ } else {
130
+ compileOnlyModules.delete(resolvedFilePath);
105
131
  }
106
132
  });
107
133
  };
@@ -165,25 +191,34 @@ export async function inlineModulesInterfaceCommand(cli: commander.Command) {
165
191
  return;
166
192
  }
167
193
 
168
- const dirents = [];
194
+ const inlineModulesDirents = [];
195
+ const compileOnlyModules = new Set<string>([]);
169
196
  for (const dir of watchedDirectories) {
170
197
  for await (const dirent of scanFilesRecursively(dir)) {
171
198
  if (!dirent.name.endsWith('.swift')) {
172
199
  continue;
173
200
  }
174
-
175
- dirents.push(dirent);
201
+ const resolvedFilePath = dirent.path;
202
+ if (
203
+ fs.existsSync(resolvedFilePath) &&
204
+ !(await fileHasModuleDeclaration(resolvedFilePath))
205
+ ) {
206
+ compileOnlyModules.add(resolvedFilePath);
207
+ } else {
208
+ inlineModulesDirents.push(dirent);
209
+ }
176
210
  }
177
211
  }
178
212
 
179
213
  await taskAll(
180
- dirents,
214
+ inlineModulesDirents,
181
215
  async (dirent) =>
182
216
  await generateInlineModuleTSFiles({
183
217
  filePath: dirent.path,
184
218
  dirPath: dirent.parentPath,
185
219
  typeInference: parsedArgs.typeInference,
186
220
  mapUnicodeCharacters,
221
+ compileOnlyModules,
187
222
  })
188
223
  );
189
224
 
@@ -192,6 +227,7 @@ export async function inlineModulesInterfaceCommand(cli: commander.Command) {
192
227
  appJsonPath,
193
228
  typeInference: parsedArgs.typeInference,
194
229
  mapUnicodeCharacters,
230
+ compileOnlyModules,
195
231
  });
196
232
  }
197
233
  });