expo-type-information 0.0.0 → 0.0.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.
Files changed (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -0
  3. package/bin/cli.js +2 -0
  4. package/build/cli.d.ts +1 -0
  5. package/build/cli.js +35 -0
  6. package/build/cli.js.map +1 -0
  7. package/build/commands/commandUtils.d.ts +46 -0
  8. package/build/commands/commandUtils.js +274 -0
  9. package/build/commands/commandUtils.js.map +1 -0
  10. package/build/commands/generateJSXIntrinsicsCommand.d.ts +2 -0
  11. package/build/commands/generateJSXIntrinsicsCommand.js +28 -0
  12. package/build/commands/generateJSXIntrinsicsCommand.js.map +1 -0
  13. package/build/commands/generateMocksForFileCommand.d.ts +2 -0
  14. package/build/commands/generateMocksForFileCommand.js +22 -0
  15. package/build/commands/generateMocksForFileCommand.js.map +1 -0
  16. package/build/commands/generateModuleTypesCommand.d.ts +2 -0
  17. package/build/commands/generateModuleTypesCommand.js +32 -0
  18. package/build/commands/generateModuleTypesCommand.js.map +1 -0
  19. package/build/commands/generateViewTypesCommand.d.ts +2 -0
  20. package/build/commands/generateViewTypesCommand.js +28 -0
  21. package/build/commands/generateViewTypesCommand.js.map +1 -0
  22. package/build/commands/inlineModulesInterfaceCommand.d.ts +2 -0
  23. package/build/commands/inlineModulesInterfaceCommand.js +129 -0
  24. package/build/commands/inlineModulesInterfaceCommand.js.map +1 -0
  25. package/build/commands/moduleInterfaceCommand.d.ts +2 -0
  26. package/build/commands/moduleInterfaceCommand.js +46 -0
  27. package/build/commands/moduleInterfaceCommand.js.map +1 -0
  28. package/build/commands/shortModuleInterfaceCommand.d.ts +2 -0
  29. package/build/commands/shortModuleInterfaceCommand.js +17 -0
  30. package/build/commands/shortModuleInterfaceCommand.js.map +1 -0
  31. package/build/commands/typeInformationCommand.d.ts +2 -0
  32. package/build/commands/typeInformationCommand.js +24 -0
  33. package/build/commands/typeInformationCommand.js.map +1 -0
  34. package/build/index.d.ts +3 -0
  35. package/build/index.js +28 -0
  36. package/build/index.js.map +1 -0
  37. package/build/mockgen.d.ts +4 -0
  38. package/build/mockgen.js +204 -0
  39. package/build/mockgen.js.map +1 -0
  40. package/build/swift/sourcekittenTypeInformation.d.ts +6 -0
  41. package/build/swift/sourcekittenTypeInformation.js +875 -0
  42. package/build/swift/sourcekittenTypeInformation.js.map +1 -0
  43. package/build/typeInformation.d.ts +209 -0
  44. package/build/typeInformation.js +157 -0
  45. package/build/typeInformation.js.map +1 -0
  46. package/build/types.d.ts +59 -0
  47. package/build/types.js +3 -0
  48. package/build/types.js.map +1 -0
  49. package/build/typescriptGeneration.d.ts +61 -0
  50. package/build/typescriptGeneration.js +696 -0
  51. package/build/typescriptGeneration.js.map +1 -0
  52. package/build/utils.d.ts +6 -0
  53. package/build/utils.js +44 -0
  54. package/build/utils.js.map +1 -0
  55. package/jest.config.js +6 -0
  56. package/package.json +46 -5
  57. package/src/cli.ts +38 -0
  58. package/src/commands/commandUtils.ts +352 -0
  59. package/src/commands/generateJSXIntrinsicsCommand.ts +38 -0
  60. package/src/commands/generateMocksForFileCommand.ts +30 -0
  61. package/src/commands/generateModuleTypesCommand.ts +39 -0
  62. package/src/commands/generateViewTypesCommand.ts +39 -0
  63. package/src/commands/inlineModulesInterfaceCommand.ts +175 -0
  64. package/src/commands/moduleInterfaceCommand.ts +56 -0
  65. package/src/commands/shortModuleInterfaceCommand.ts +26 -0
  66. package/src/commands/typeInformationCommand.ts +35 -0
  67. package/src/index.ts +9 -0
  68. package/src/mockgen.ts +338 -0
  69. package/src/swift/sourcekittenTypeInformation.ts +1173 -0
  70. package/src/typeInformation.ts +326 -0
  71. package/src/types.ts +68 -0
  72. package/src/typescriptGeneration.ts +1179 -0
  73. package/src/utils.ts +44 -0
  74. package/tests/TestModule.swift +175 -0
  75. package/tests/__snapshots__/typeInformation.test.ts.snap +1578 -0
  76. package/tests/typeInformation.test.ts +134 -0
  77. package/tsconfig.json +11 -0
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.inlineModulesInterfaceCommand = inlineModulesInterfaceCommand;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const commandUtils_1 = require("./commandUtils");
10
+ const utils_1 = require("../utils");
11
+ async function getResolvedWatchedDirectoriesFromAppJson(appJsonPath) {
12
+ try {
13
+ const appJson = JSON.parse(await fs_1.default.promises.readFile(appJsonPath, 'utf-8'));
14
+ const watchedDirectories = appJson?.expo?.experiments?.inlineModules?.watchedDirectories;
15
+ if (!Array.isArray(watchedDirectories)) {
16
+ console.error(`watchedDirectories are not defined!`);
17
+ return null;
18
+ }
19
+ const rootDir = path_1.default.dirname(path_1.default.resolve(appJsonPath));
20
+ return watchedDirectories.map((relativePath) => path_1.default.resolve(rootDir, relativePath));
21
+ }
22
+ catch (e) {
23
+ console.error(`Couldn't read ${appJsonPath}.`, e);
24
+ }
25
+ return null;
26
+ }
27
+ async function generateInlineModuleTSFiles({ filePath, dirPath, typeInference, }) {
28
+ return await (0, commandUtils_1.generateConciseTsFiles)({
29
+ realInputPaths: [filePath],
30
+ realOutputPath: dirPath,
31
+ typeInference,
32
+ watcher: false,
33
+ });
34
+ }
35
+ async function inlineModulesWatcher({ appJsonPath, typeInference }) {
36
+ const debouncedInlineModulesTsGeneration = (0, commandUtils_1.debounce)(generateInlineModuleTSFiles);
37
+ const watchedDirectoriesWatchers = new Map();
38
+ const setupWatchedDirectoriesWatchers = async () => {
39
+ const watchedDirectories = await getResolvedWatchedDirectoriesFromAppJson(appJsonPath);
40
+ // Merge new watchers with old watchers.
41
+ // Let's first find and remove the obsolete ones.
42
+ const watchedDirsSet = new Set(watchedDirectories ?? []);
43
+ const obsoleteWatchersKeys = [];
44
+ for (const [key] of watchedDirectoriesWatchers) {
45
+ if (!watchedDirsSet.has(key)) {
46
+ obsoleteWatchersKeys.push(key);
47
+ }
48
+ }
49
+ for (const key of obsoleteWatchersKeys) {
50
+ const watcher = watchedDirectoriesWatchers.get(key);
51
+ watcher?.close();
52
+ watchedDirectoriesWatchers.delete(key);
53
+ }
54
+ // Now let's create and add new watchers
55
+ const createWatcherForDir = (dir) => {
56
+ return fs_1.default.watch(dir, { recursive: true, encoding: 'utf-8' }, async (event, fileName) => {
57
+ if (!fileName) {
58
+ return;
59
+ }
60
+ const resolvedFilePath = path_1.default.resolve(dir, fileName);
61
+ if (fs_1.default.existsSync(resolvedFilePath)) {
62
+ debouncedInlineModulesTsGeneration({
63
+ filePath: resolvedFilePath,
64
+ dirPath: path_1.default.dirname(resolvedFilePath),
65
+ typeInference,
66
+ });
67
+ }
68
+ });
69
+ };
70
+ for (const dir of watchedDirectories ?? []) {
71
+ const watcher = watchedDirectoriesWatchers.get(dir);
72
+ if (!watcher) {
73
+ watchedDirectoriesWatchers.set(dir, createWatcherForDir(dir));
74
+ }
75
+ }
76
+ };
77
+ await setupWatchedDirectoriesWatchers();
78
+ const appJsonWatcher = fs_1.default.watch(appJsonPath, 'utf-8', async (event) => {
79
+ if (event === 'rename' && !fs_1.default.existsSync(appJsonPath)) {
80
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
81
+ for (const [_, watcher] of watchedDirectoriesWatchers) {
82
+ watcher.close();
83
+ }
84
+ appJsonWatcher.close();
85
+ return;
86
+ }
87
+ await setupWatchedDirectoriesWatchers();
88
+ });
89
+ }
90
+ async function inlineModulesInterfaceCommand(cli) {
91
+ return cli
92
+ .command('inline-modules-interface')
93
+ .summary('Creates ts interface for every Swift inline module in the project.')
94
+ .description('Creates ts interface for every Swift inline module in the project. The ts interface consists of two files Module.generated.ts and Module.tsx, the first one is regenerated with each run of the command and the second one will not be regenerated if user changes it.')
95
+ .requiredOption('-a --app-json <appJsonPathPath>', 'A path to the `app.json` where the inline.modules.watchedDirectories are defined.')
96
+ .option('-w --watcher', 'Starts a watcher that checks for changes in inline modules files.')
97
+ .action(async (options) => {
98
+ const parsedArgs = (0, commandUtils_1.parseCommandArguments)(options);
99
+ if (!parsedArgs) {
100
+ return;
101
+ }
102
+ const { appJsonPath, watcher } = parsedArgs;
103
+ if (!appJsonPath) {
104
+ return;
105
+ }
106
+ const watchedDirectories = await getResolvedWatchedDirectoriesFromAppJson(appJsonPath);
107
+ if (!watchedDirectories) {
108
+ return;
109
+ }
110
+ const dirents = [];
111
+ for (const dir of watchedDirectories) {
112
+ for await (const dirent of (0, utils_1.scanFilesRecursively)(dir)) {
113
+ if (!dirent.name.endsWith('.swift')) {
114
+ continue;
115
+ }
116
+ dirents.push(dirent);
117
+ }
118
+ }
119
+ await (0, utils_1.taskAll)(dirents, async (dirent) => await generateInlineModuleTSFiles({
120
+ filePath: dirent.path,
121
+ dirPath: dirent.parentPath,
122
+ typeInference: parsedArgs.typeInference,
123
+ }));
124
+ if (watcher) {
125
+ await inlineModulesWatcher({ appJsonPath, typeInference: parsedArgs.typeInference });
126
+ }
127
+ });
128
+ }
129
+ //# sourceMappingURL=inlineModulesInterfaceCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inlineModulesInterfaceCommand.js","sourceRoot":"","sources":["../../src/commands/inlineModulesInterfaceCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import commander from 'commander';
2
+ export declare function moduleInterfaceCommand(cli: commander.Command): commander.Command;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.moduleInterfaceCommand = moduleInterfaceCommand;
7
+ const path_1 = __importDefault(require("path"));
8
+ const commandUtils_1 = require("./commandUtils");
9
+ const typescriptGeneration_1 = require("../typescriptGeneration");
10
+ function moduleInterfaceCommand(cli) {
11
+ return (0, commandUtils_1.addCommonOptions)(cli.command('module-interface'))
12
+ .summary('Generates a full ts interface for a Swift module.')
13
+ .description('Generates a full ts interface for a Swift module. It consists of types.ts file with all types defined in the module, module.ts with the native module definition, and view.tsx for each view defined in the module, and an index.ts file which reexports some functions.')
14
+ .action(async (options) => {
15
+ const parsedArgs = await (0, commandUtils_1.parseCommandArguments)(options, false);
16
+ if (!parsedArgs) {
17
+ return;
18
+ }
19
+ const { realInputPaths, realOutputPath } = parsedArgs;
20
+ const command = async () => {
21
+ const typeInfo = await (0, commandUtils_1.getFileTypeInformationFromArgs)(parsedArgs);
22
+ if (!typeInfo) {
23
+ return;
24
+ }
25
+ const generatedFiles = await (0, typescriptGeneration_1.generateFullTsInterface)(typeInfo);
26
+ if (!generatedFiles) {
27
+ return;
28
+ }
29
+ const { moduleTypesFile, moduleViewsFiles, moduleNativeFile, indexFile } = generatedFiles;
30
+ const dirName = realOutputPath ?? path_1.default.dirname(realInputPaths[0]);
31
+ const writeFilePromises = [];
32
+ for (const outputFile of [
33
+ moduleTypesFile,
34
+ ...moduleViewsFiles,
35
+ moduleNativeFile,
36
+ indexFile,
37
+ ]) {
38
+ const outputFilePath = path_1.default.resolve(dirName, outputFile.name);
39
+ writeFilePromises.push((0, commandUtils_1.writeToStableFile)({ filePath: outputFilePath, content: outputFile.content }));
40
+ }
41
+ await Promise.all(writeFilePromises);
42
+ };
43
+ (0, commandUtils_1.runCommandOnWatch)(parsedArgs, command);
44
+ });
45
+ }
46
+ //# sourceMappingURL=moduleInterfaceCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moduleInterfaceCommand.js","sourceRoot":"","sources":["../../src/commands/moduleInterfaceCommand.ts"],"names":[],"mappings":";;;;;AAaA,wDA0CC;AAtDD,gDAAwB;AAExB,iDAOwB;AACxB,kEAAkE;AAElE,SAAgB,sBAAsB,CAAC,GAAsB;IAC3D,OAAO,IAAA,+BAAgB,EAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;SACrD,OAAO,CAAC,mDAAmD,CAAC;SAC5D,WAAW,CACV,0QAA0Q,CAC3Q;SACA,MAAM,CAAC,KAAK,EAAE,OAAiD,EAAE,EAAE;QAClE,MAAM,UAAU,GAAG,MAAM,IAAA,oCAAqB,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC;QAEtD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAM,IAAA,6CAA8B,EAAC,UAAU,CAAC,CAAC;YAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,MAAM,cAAc,GAAG,MAAM,IAAA,8CAAuB,EAAC,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC;YAE1F,MAAM,OAAO,GAAG,cAAc,IAAI,cAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAW,CAAC,CAAC;YAC5E,MAAM,iBAAiB,GAAG,EAAE,CAAC;YAC7B,KAAK,MAAM,UAAU,IAAI;gBACvB,eAAe;gBACf,GAAG,gBAAgB;gBACnB,gBAAgB;gBAChB,SAAS;aACV,EAAE,CAAC;gBACF,MAAM,cAAc,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC9D,iBAAiB,CAAC,IAAI,CACpB,IAAA,gCAAiB,EAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAC7E,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,IAAA,gCAAiB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import commander from 'commander';
2
+ export declare function shortModuleInterfaceCommand(cli: commander.Command): void;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shortModuleInterfaceCommand = shortModuleInterfaceCommand;
4
+ const commandUtils_1 = require("./commandUtils");
5
+ function shortModuleInterfaceCommand(cli) {
6
+ (0, commandUtils_1.addCommonOptions)(cli
7
+ .command('short-module-interface')
8
+ .summary('Creates a short ts interface, great with inline-modules.')
9
+ .description('Creates a short ts interface for an expo module. Overrites `ModuleName.generated.ts` and creates `ModuleName.ts` if not present. Can be used with inline-modules.')).action(async (options) => {
10
+ const parsedArgs = await (0, commandUtils_1.parseCommandArguments)(options, false);
11
+ if (!parsedArgs)
12
+ return;
13
+ const command = () => (0, commandUtils_1.generateConciseTsFiles)(parsedArgs);
14
+ (0, commandUtils_1.runCommandOnWatch)(parsedArgs, command);
15
+ });
16
+ }
17
+ //# sourceMappingURL=shortModuleInterfaceCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortModuleInterfaceCommand.js","sourceRoot":"","sources":["../../src/commands/shortModuleInterfaceCommand.ts"],"names":[],"mappings":";;AAUA,kEAeC;AAvBD,iDAMwB;AAExB,SAAgB,2BAA2B,CAAC,GAAsB;IAChE,IAAA,+BAAgB,EACd,GAAG;SACA,OAAO,CAAC,wBAAwB,CAAC;SACjC,OAAO,CAAC,0DAA0D,CAAC;SACnE,WAAW,CACV,mKAAmK,CACpK,CACJ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAiD,EAAE,EAAE;QACnE,MAAM,UAAU,GAAG,MAAM,IAAA,oCAAqB,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAA,qCAAsB,EAAC,UAAU,CAAC,CAAC;QACzD,IAAA,gCAAiB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import commander from 'commander';
2
+ export declare function typeInformationCommand(cli: commander.Command): commander.Command;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.typeInformationCommand = typeInformationCommand;
4
+ const commandUtils_1 = require("./commandUtils");
5
+ const typeInformation_1 = require("../typeInformation");
6
+ function typeInformationCommand(cli) {
7
+ return (0, commandUtils_1.addCommonOptions)(cli.command('type-information')).action(async (options) => {
8
+ const parsedArgs = await (0, commandUtils_1.parseCommandArguments)(options);
9
+ if (!parsedArgs) {
10
+ return;
11
+ }
12
+ const command = async () => {
13
+ const typeInfo = await (0, commandUtils_1.getFileTypeInformationFromArgs)(parsedArgs);
14
+ if (!typeInfo) {
15
+ return;
16
+ }
17
+ const typeInfoSerialized = (0, typeInformation_1.serializeTypeInformation)(typeInfo);
18
+ const typeInfoSerializedString = JSON.stringify(typeInfoSerialized, null, 2);
19
+ (0, commandUtils_1.writeStringToFileOrPrintToConsole)(typeInfoSerializedString, parsedArgs.realOutputPath);
20
+ };
21
+ (0, commandUtils_1.runCommandOnWatch)(parsedArgs, command);
22
+ });
23
+ }
24
+ //# sourceMappingURL=typeInformationCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeInformationCommand.js","sourceRoot":"","sources":["../../src/commands/typeInformationCommand.ts"],"names":[],"mappings":";;AAYA,wDAsBC;AAhCD,iDAOwB;AACxB,wDAA8D;AAE9D,SAAgB,sBAAsB,CAAC,GAAsB;IAC3D,OAAO,IAAA,+BAAgB,EAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAC7D,KAAK,EAAE,OAAiD,EAAE,EAAE;QAC1D,MAAM,UAAU,GAAG,MAAM,IAAA,oCAAqB,EAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAM,IAAA,6CAA8B,EAAC,UAAU,CAAC,CAAC;YAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,MAAM,kBAAkB,GAAG,IAAA,0CAAwB,EAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7E,IAAA,gDAAiC,EAAC,wBAAwB,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;QACzF,CAAC,CAAC;QAEF,IAAA,gCAAiB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './typeInformation';
2
+ export { generateMocks, getAllExpoModulesInWorkingDirectory } from './mockgen';
3
+ export { generateConciseTsInterface, generateFullTsInterface, generateModuleTypesFileContent, generateViewTypesFileContent, generateJSXIntrinsicsFileContent, } from './typescriptGeneration';
package/build/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.generateJSXIntrinsicsFileContent = exports.generateViewTypesFileContent = exports.generateModuleTypesFileContent = exports.generateFullTsInterface = exports.generateConciseTsInterface = exports.getAllExpoModulesInWorkingDirectory = exports.generateMocks = void 0;
18
+ __exportStar(require("./typeInformation"), exports);
19
+ var mockgen_1 = require("./mockgen");
20
+ Object.defineProperty(exports, "generateMocks", { enumerable: true, get: function () { return mockgen_1.generateMocks; } });
21
+ Object.defineProperty(exports, "getAllExpoModulesInWorkingDirectory", { enumerable: true, get: function () { return mockgen_1.getAllExpoModulesInWorkingDirectory; } });
22
+ var typescriptGeneration_1 = require("./typescriptGeneration");
23
+ Object.defineProperty(exports, "generateConciseTsInterface", { enumerable: true, get: function () { return typescriptGeneration_1.generateConciseTsInterface; } });
24
+ Object.defineProperty(exports, "generateFullTsInterface", { enumerable: true, get: function () { return typescriptGeneration_1.generateFullTsInterface; } });
25
+ Object.defineProperty(exports, "generateModuleTypesFileContent", { enumerable: true, get: function () { return typescriptGeneration_1.generateModuleTypesFileContent; } });
26
+ Object.defineProperty(exports, "generateViewTypesFileContent", { enumerable: true, get: function () { return typescriptGeneration_1.generateViewTypesFileContent; } });
27
+ Object.defineProperty(exports, "generateJSXIntrinsicsFileContent", { enumerable: true, get: function () { return typescriptGeneration_1.generateJSXIntrinsicsFileContent; } });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,qCAA+E;AAAtE,wGAAA,aAAa,OAAA;AAAE,8HAAA,mCAAmC,OAAA;AAC3D,+DAMgC;AAL9B,kIAAA,0BAA0B,OAAA;AAC1B,+HAAA,uBAAuB,OAAA;AACvB,sIAAA,8BAA8B,OAAA;AAC9B,oIAAA,4BAA4B,OAAA;AAC5B,wIAAA,gCAAgC,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { FileTypeInformation, ModuleClassDeclaration } from './typeInformation';
2
+ export declare function generateTSMockForModule(module: ModuleClassDeclaration, fileTypeInformation: FileTypeInformation, includeTypes: boolean): string;
3
+ export declare function generateMocks(files: FileTypeInformation[], outputLanguage?: 'javascript' | 'typescript'): Promise<void>;
4
+ export declare function getAllExpoModulesInWorkingDirectory(): Promise<FileTypeInformation[]>;
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateTSMockForModule = generateTSMockForModule;
7
+ exports.generateMocks = generateMocks;
8
+ exports.getAllExpoModulesInWorkingDirectory = getAllExpoModulesInWorkingDirectory;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const typescript_1 = __importDefault(require("typescript"));
12
+ const typeInformation_1 = require("./typeInformation");
13
+ const typescriptGeneration_1 = require("./typescriptGeneration");
14
+ const utils_1 = require("./utils");
15
+ const prefix = `Automatically generated by expo-type-information.
16
+
17
+ This autogenerated file provides a mock for native Expo module,
18
+ and works out of the box with the expo jest preset.
19
+ `;
20
+ function getPrefix() {
21
+ return [typescript_1.default.factory.createJSDocComment(prefix)];
22
+ }
23
+ let freeId = 0;
24
+ function getNextFreeId() {
25
+ freeId += 1;
26
+ return freeId;
27
+ }
28
+ function maybeWrapWithReturnStatement(type, fileTypeInformation) {
29
+ if (type.kind === typeInformation_1.TypeKind.BASIC) {
30
+ const basicType = type.type;
31
+ if (basicType === typeInformation_1.BasicType.VOID || basicType === typeInformation_1.BasicType.ANY) {
32
+ return [];
33
+ }
34
+ }
35
+ // TODO(@HubertBer): maybe add a comment when we couldn't create a mock for the return type
36
+ const returnExpression = getMockedValueForType(type, fileTypeInformation);
37
+ if (returnExpression || type.kind !== typeInformation_1.TypeKind.BASIC || type.type === typeInformation_1.BasicType.UNRESOLVED) {
38
+ return [typescript_1.default.factory.createReturnStatement(returnExpression)];
39
+ }
40
+ return [];
41
+ }
42
+ function getBasicTypeMockLiteral(type) {
43
+ switch (type) {
44
+ case typeInformation_1.BasicType.STRING:
45
+ return typescript_1.default.factory.createStringLiteral('');
46
+ case typeInformation_1.BasicType.BOOLEAN:
47
+ return typescript_1.default.factory.createFalse();
48
+ case typeInformation_1.BasicType.NUMBER:
49
+ return typescript_1.default.factory.createNumericLiteral(0);
50
+ case typeInformation_1.BasicType.VOID:
51
+ case typeInformation_1.BasicType.UNDEFINED:
52
+ case typeInformation_1.BasicType.ANY:
53
+ default:
54
+ return undefined;
55
+ }
56
+ }
57
+ function getBasicTypeFromString(basicType) {
58
+ switch (basicType) {
59
+ case 'any':
60
+ return typeInformation_1.BasicType.ANY;
61
+ case 'number':
62
+ return typeInformation_1.BasicType.NUMBER;
63
+ case 'string':
64
+ return typeInformation_1.BasicType.STRING;
65
+ case 'boolean':
66
+ return typeInformation_1.BasicType.BOOLEAN;
67
+ }
68
+ return undefined;
69
+ }
70
+ function getMockedEnumInstance(enumType) {
71
+ const firstCase = enumType.cases[0];
72
+ if (!firstCase) {
73
+ return undefined;
74
+ }
75
+ return typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createRegularExpressionLiteral(enumType.name), firstCase);
76
+ }
77
+ function getMockedRecordInstance(recordType, fileTypeInformation) {
78
+ return typescript_1.default.factory.createObjectLiteralExpression(recordType.fields.map((f) => typescript_1.default.factory.createPropertyAssignment(f.name ?? '_' + getNextFreeId(), getMockedValueForType(f.type, fileTypeInformation) ?? typescript_1.default.factory.createNull())));
79
+ }
80
+ function getMockValueForIdentifier(identifier, fileTypeInformation) {
81
+ if (!fileTypeInformation.typeIdentifierDefinitionMap.has(identifier)) {
82
+ return undefined;
83
+ }
84
+ const typeDefinition = fileTypeInformation.typeIdentifierDefinitionMap.get(identifier);
85
+ switch (typeDefinition?.kind) {
86
+ case typeInformation_1.IdentifierKind.BASIC: {
87
+ const basicType = getBasicTypeFromString(typeDefinition.definition);
88
+ if (basicType) {
89
+ return getBasicTypeMockLiteral(basicType);
90
+ }
91
+ return undefined;
92
+ }
93
+ case typeInformation_1.IdentifierKind.ENUM:
94
+ return getMockedEnumInstance(typeDefinition.definition);
95
+ case typeInformation_1.IdentifierKind.RECORD:
96
+ return getMockedRecordInstance(typeDefinition.definition, fileTypeInformation);
97
+ }
98
+ return undefined;
99
+ }
100
+ function getMockedValueForType(type, fileTypeInformation) {
101
+ switch (type.kind) {
102
+ case typeInformation_1.TypeKind.BASIC:
103
+ return getBasicTypeMockLiteral(type.type);
104
+ case typeInformation_1.TypeKind.IDENTIFIER:
105
+ return getMockValueForIdentifier(type.type, fileTypeInformation);
106
+ case typeInformation_1.TypeKind.SUM: {
107
+ const firstType = type.type.types[0];
108
+ return getMockedValueForType(firstType ?? { kind: typeInformation_1.TypeKind.BASIC, type: typeInformation_1.BasicType.UNDEFINED }, fileTypeInformation);
109
+ }
110
+ case typeInformation_1.TypeKind.PARAMETRIZED:
111
+ return typescript_1.default.factory.createNull();
112
+ case typeInformation_1.TypeKind.OPTIONAL:
113
+ return getMockedValueForType(type.type, fileTypeInformation);
114
+ case typeInformation_1.TypeKind.ARRAY:
115
+ return typescript_1.default.factory.createArrayLiteralExpression();
116
+ case typeInformation_1.TypeKind.DICTIONARY:
117
+ return typescript_1.default.factory.createObjectLiteralExpression();
118
+ }
119
+ }
120
+ function getFunctionReturnBlock(functionDeclaration, fileTypeInformation) {
121
+ return maybeWrapWithReturnStatement(functionDeclaration.returnType, fileTypeInformation);
122
+ }
123
+ function getMockedFunctionDeclaration(functionDeclaration, fileTypeInformation, async, exported) {
124
+ return (0, typescriptGeneration_1.buildFunction)({
125
+ functionDeclaration,
126
+ async,
127
+ method: false,
128
+ exported,
129
+ declaration: false,
130
+ returnStatement: maybeWrapWithReturnStatement(functionDeclaration.returnType, fileTypeInformation),
131
+ });
132
+ }
133
+ function getMockedClass(classDeclaration, fileInfo) {
134
+ return (0, typescriptGeneration_1.buildClass)({
135
+ classDeclaration,
136
+ exported: true,
137
+ getFunctionReturnBlock: (func) => getFunctionReturnBlock(func, fileInfo),
138
+ });
139
+ }
140
+ function getMockedView(viewDeclaration) {
141
+ const propsTypeName = (0, typescriptGeneration_1.getViewPropsTypeName)(viewDeclaration);
142
+ const propsType = (0, typescriptGeneration_1.buildViewPropsInterface)(viewDeclaration, { exported: true });
143
+ const propsParameter = typescript_1.default.factory.createParameterDeclaration(undefined, undefined, 'props', undefined, typescript_1.default.factory.createTypeReferenceNode(propsTypeName, undefined), undefined);
144
+ const viewFunction = typescript_1.default.factory.createFunctionDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], undefined, (viewDeclaration.name?.length ?? 0) > 0 ? viewDeclaration.name : 'View', undefined, [propsParameter], undefined, typescript_1.default.factory.createBlock([]));
145
+ return [...propsType, viewFunction];
146
+ }
147
+ function getMockForModule(module, typeInfo) {
148
+ const { usedTypeIdentifiers, declaredTypeIdentifiers, inferredTypeParametersCount, records, enums, } = typeInfo;
149
+ const undeclaredTypes = usedTypeIdentifiers
150
+ .difference(declaredTypeIdentifiers)
151
+ .difference((0, typescriptGeneration_1.getBasicTypesIdentifiers)());
152
+ const sections = [
153
+ getPrefix(),
154
+ [...undeclaredTypes].map((identifier) => (0, typescriptGeneration_1.buildUnknownTypeAlias)(identifier, true, inferredTypeParametersCount)),
155
+ records.flatMap((record) => (0, typescriptGeneration_1.buildRecordTypeAlias)(record, true)),
156
+ enums.flatMap((e) => (0, typescriptGeneration_1.buildEnumTypeDeclaration)(e, true, false)),
157
+ module.functions.map((f) => getMockedFunctionDeclaration(f, typeInfo, false, true)),
158
+ module.asyncFunctions.map((f) => getMockedFunctionDeclaration(f, typeInfo, true, true)),
159
+ module.classes.map((c) => getMockedClass(c, typeInfo)),
160
+ module.views.flatMap((v) => getMockedView(v)),
161
+ ];
162
+ return (0, typescriptGeneration_1.joinTSNodesWithNewlines)(sections).flat();
163
+ }
164
+ function generateTSMockForModule(module, fileTypeInformation, includeTypes) {
165
+ const mockFileName = module.name + (includeTypes ? '.ts' : '.js');
166
+ const mock = typescript_1.default.factory.createNodeArray(getMockForModule(module, fileTypeInformation));
167
+ const printer = typescript_1.default.createPrinter({ newLine: typescript_1.default.NewLineKind.LineFeed });
168
+ // get ts nodearray from getMockForModule(m) array
169
+ const resultFile = typescript_1.default.createSourceFile(mockFileName, '', typescript_1.default.ScriptTarget.Latest, false, typescript_1.default.ScriptKind.TSX);
170
+ const printedTs = printer.printList(typescript_1.default.ListFormat.MultiLine + typescript_1.default.ListFormat.PreserveLines, mock, resultFile);
171
+ if (includeTypes) {
172
+ return printedTs;
173
+ }
174
+ return typescript_1.default.transpileModule(printedTs, {
175
+ compilerOptions: {
176
+ module: typescript_1.default.ModuleKind.ESNext,
177
+ target: typescript_1.default.ScriptTarget.ESNext,
178
+ },
179
+ }).outputText;
180
+ }
181
+ const directoryPath = process.cwd();
182
+ const swiftFilesGlob = `${directoryPath}/**/*.swift`;
183
+ async function generateMocks(files, outputLanguage = 'javascript') {
184
+ const modules = files.flatMap((file) => file.moduleClasses.map((module) => ({ module, file })));
185
+ if (modules.length === 0) {
186
+ return;
187
+ }
188
+ const isTypeScript = outputLanguage === 'typescript';
189
+ const extension = isTypeScript ? '.ts' : '.js';
190
+ const mocksDir = path_1.default.join(directoryPath, 'mocks');
191
+ await fs_1.default.promises.mkdir(mocksDir, { recursive: true });
192
+ (0, utils_1.taskAll)(modules, async ({ module, file }) => {
193
+ const code = generateTSMockForModule(module, file, isTypeScript);
194
+ const prettified = await (0, typescriptGeneration_1.prettifyCode)(code, isTypeScript ? 'typescript' : undefined);
195
+ await fs_1.default.promises.writeFile(path_1.default.join(mocksDir, module.name + extension), prettified);
196
+ });
197
+ }
198
+ async function getAllExpoModulesInWorkingDirectory() {
199
+ const files = fs_1.default.globSync(swiftFilesGlob);
200
+ return (await Promise.all(files.map((file) => (0, typeInformation_1.getFileTypeInformation)({
201
+ input: { type: 'file', inputFileAbsolutePaths: [fs_1.default.realpathSync(file)] },
202
+ })))).filter((f) => f);
203
+ }
204
+ //# sourceMappingURL=mockgen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockgen.js","sourceRoot":"","sources":["../src/mockgen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { FileTypeInformation } from '../typeInformation';
2
+ export type SwiftFileTypeInformationOptions = {
3
+ typeInference: boolean;
4
+ };
5
+ export declare function getSwiftFileTypeInformation(filePath: string, options: SwiftFileTypeInformationOptions): Promise<FileTypeInformation | null>;
6
+ export declare function preprocessSwiftFile(originalFileContent: string): string;