expo-codemod 1.1.1 â 1.1.5
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/cli.js
CHANGED
|
@@ -3,6 +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.runAsync = void 0;
|
|
6
7
|
const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
|
|
7
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
9
|
const globby_1 = __importDefault(require("globby"));
|
package/build/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\nimport globby from 'globby';\n// @ts-ignore\nimport Runner from 'jscodeshift/src/Runner';\nimport multimatch from 'multimatch';\nimport path from 'path';\nimport parse from 'yargs-parser';\n\nconst jscodeshift = require.resolve('jscodeshift/bin/jscodeshift.js');\nconst transformDir = path.join(__dirname, 'transforms');\n\nconst totalStats: { [key: string]: number } = {};\n\nexport async function runAsync(argv: string[]) {\n const options = parse(argv);\n const [transform, ...paths] = options._.slice(2);\n const parser = options.parser;\n\n const transforms = await listTransformsAsync();\n if (options.help || !transform || paths.length === 0) {\n console.log(`\nUsage: expo-codemod <transform> <paths...>\n\nOptions:\n <transform> (required) name of transform to apply to files\n (see a list of transforms available below)\n <paths...> one or more paths or globs (e.g. ./src/**/*.js) of sources to transform\n files in .gitignore are ignored by default\n -h, --help print this help message\n -p, --parser <babel|flow|ts|tsx> parser to use to parse the source files\n (default: babel, ts or tsx based on the file extension)\n\nTransforms available:\n ${transforms.join('\\n ')}`);\n process.exit(1);\n return;\n }\n\n if (!transforms.includes(transform)) {\n throw new Error(\n `--transform: Transform ${transform} does not exist. Valid options: ` + transforms.join(', ')\n );\n }\n\n const allFiles = await globby(paths, { gitignore: true, ignore: ['**/node_modules/**'] });\n\n if (parser) {\n console.log(`Transforming ${allFiles.length} files using parser '${parser}'...`);\n await transformAsync({ files: allFiles, parser, transform });\n } else {\n const jsFiles = multimatch(allFiles, ['**/*.js', '**/*.jsx']);\n if (jsFiles.length) {\n console.log(`Transforming ${jsFiles.length} JS files...`);\n await transformAsync({ files: jsFiles, parser: 'babel', transform });\n }\n\n const tsFiles = multimatch(allFiles, ['**/*.ts']);\n if (tsFiles.length) {\n console.log(`Transforming ${tsFiles.length} TS files...`);\n await transformAsync({ files: tsFiles, parser: 'ts', transform });\n }\n\n const tsxFiles = multimatch(allFiles, ['**/*.tsx']);\n if (tsxFiles.length) {\n console.log(`Transforming ${tsxFiles.length} TSX files...`);\n await transformAsync({ files: tsxFiles, parser: 'tsx', transform });\n }\n }\n\n if (transform === 'sdk33-imports' || transform === 'sdk37-imports') {\n const packages = Object.keys(totalStats).sort();\n if (packages.length) {\n console.log(\n chalk.bold(\n `\\nđ Added imports from ${packages.length} packages. Installing packages with \\`expo install\\`...`\n )\n );\n console.log(`> expo install ${packages.join(' ')}`);\n try {\n await spawnAsync('expo', ['install', ...packages], { stdio: 'inherit' });\n } catch (error) {\n console.error(chalk.red('\\nâ ď¸ expo install failed.'));\n console.log(chalk.dim(error.stack));\n console.error(\n chalk.red('To finish the codemod, please install the added packages manually using:')\n );\n console.log(chalk.bold.red(`> expo install ${packages.join(' ')}`));\n process.exit(1);\n }\n }\n }\n}\n\nasync function transformAsync({\n files,\n parser,\n transform,\n}: {\n files: string[];\n parser: 'babel' | 'flow' | 'ts' | 'tsx';\n transform: string;\n}) {\n const transformFile = path.join(transformDir, `${transform}.js`);\n if (transform === 'sdk33-imports' || transform === 'sdk37-imports') {\n // Dry run to gather stats about which packages need to be installed.\n const { stats } = await Runner.run(transformFile, files, {\n dry: true,\n silent: true,\n babel: false,\n parser,\n });\n Object.keys(stats).forEach(key => {\n totalStats[key] = (totalStats[key] || 0) + stats[key];\n });\n }\n\n const args = ['--parser', parser, '--transform', transformFile, '--no-babel', ...files];\n return await spawnAsync(jscodeshift, args, { stdio: 'inherit' });\n}\n\nasync function listTransformsAsync() {\n const modules = await globby(['*.js'], { cwd: transformDir });\n return modules.map(filename => path.basename(filename, '.js'));\n}\n"]}
|
|
@@ -158,7 +158,8 @@ function findNonNamespaceImports(j, root, sourceName) {
|
|
|
158
158
|
return root.find(j.ImportDeclaration).filter((path) => {
|
|
159
159
|
var _a;
|
|
160
160
|
const node = path.node;
|
|
161
|
-
return (node.source.value === sourceName &&
|
|
161
|
+
return (node.source.value === sourceName &&
|
|
162
|
+
((_a = node.specifiers) === null || _a === void 0 ? void 0 : _a.some(specifier => specifier.type === 'ImportSpecifier' || specifier.type === 'ImportDefaultSpecifier')));
|
|
162
163
|
});
|
|
163
164
|
}
|
|
164
165
|
function sortableName(specifier) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk33-imports.js","sourceRoot":"","sources":["../../src/transforms/sdk33-imports.ts"],"names":[],"mappings":";;AAaA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,CAAC,eAAe,EAAE,cAAc,CAAC;IACjC,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACjC,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;IACvC,CAAC,eAAe,EAAE,gBAAgB,CAAC;IACnC,CAAC,OAAO,EAAE,YAAY,CAAC;IACvB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAC1C,CAAC,WAAW,EAAE,cAAc,CAAC;IAC7B,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,QAAQ,EAAE,SAAS,CAAC;IACrB,CAAC,WAAW,EAAE,cAAc,CAAC;IAC7B,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAC1C,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,0BAA0B,EAAE,cAAc,CAAC;IAC5C,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,SAAS,EAAE,sBAAsB,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAChC,CAAC,SAAS,EAAE,mBAAmB,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACzC,CAAC,SAAS,EAAE,eAAe,CAAC;IAC5B,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;IAC5C,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACjC,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAC1C,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACpC,CAAC,cAAc,EAAE,oBAAoB,CAAC;IACtC,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAClC,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;IAClD,CAAC,IAAI,EAAE,SAAS,CAAC;IACjB,CAAC,cAAc,EAAE,qBAAqB,CAAC;IACvC,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,SAAS,EAAE,cAAc,CAAC;IAC3B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;IAC9C,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACpC,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAC1C,CAAC,uBAAuB,EAAE,sBAAsB,CAAC;IACjD,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;IACpD,CAAC,cAAc,EAAE,mBAAmB,CAAC;IACrC,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,cAAc,EAAE,oBAAoB,CAAC;IACtC,CAAC,cAAc,EAAE,oBAAoB,CAAC;IACtC,CAAC,aAAa,EAAE,kBAAkB,CAAC;IACnC,CAAC,OAAO,EAAE,YAAY,CAAC;IACvB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACpC,CAAC,SAAS,EAAE,wBAAwB,CAAC;IACrC,CAAC,SAAS,EAAE,cAAc,CAAC;IAC3B,CAAC,SAAS,EAAE,cAAc,CAAC;IAC3B,CAAC,KAAK,EAAE,UAAU,CAAC;IACnB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,KAAK,EAAE,kBAAkB,CAAC;IAC3B,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACpC,CAAC,YAAY,EAAE,kBAAkB,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;AACvC,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,YAAY,EAAE;IAC9C,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC;CAC1E;AACD,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,cAAc,EAAE;IAChD,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,CAAC,CAAC;CACjF;AACD,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,gBAAgB,EAAE;IAClD,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,CAAC,CAAC;CACnF;AAED,SAAwB,SAAS,CAAC,QAAkB,EAAE,GAAQ,EAAE,OAAe;IAC7E,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,MAAM,iBAAiB,GAAG,YAAY,EAAE,CAAC;IACzC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,CAAC;IAEpD,+BAA+B;IAC/B,MAAM,WAAW,GAAG,IAAI;SACrB,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IAErD,MAAM,eAAe,GAGjB,IAAI,GAAG,EAAE,CAAC;IAEd,WAAW;SACR,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC3D,OAAO,CAAC,IAAI,CAAC,EAAE;QACd,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEL,gCAAgC;IAChC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC1D,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,OAAO;QAEpC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3C,IAAI;aACD,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;aACxB,MAAM,CACL,CAAC,CAAC,EAAE,CACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,CAAC;YAC/E,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe,CAAC;YACnF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa;YACpC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CACjD;aACA,OAAO,CAAC,CAAC,CAAC,EAAE;YACX,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAsC,CAAC;YAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;YACnC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACxC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,KAAK,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE;QAC3D,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5B,IAAI,SAAS,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE;YACnC,SAAS,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;SAClE;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE;YACjD,SAAS,GAAG,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;SAC7C;aAAM;YACL,SAAS,GAAG,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;SAC/C;QAED,MAAM,eAAe,GAAG,uBAAuB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,KAAK,0BAA0B,EAAE;YAC3E,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1D,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACnC;aAAM;YACL,MAAM,SAAS,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YAChF,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SACpC;KACF;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,OAAA,IAAI,CAAC,IAAI,CAAC,UAAU,0CAAE,MAAM,MAAK,CAAC,CAAA,EAAA,CAAC,CAAC;IACpF,YAAY,CAAC,MAAM,EAAE,CAAC;IACtB,wEAAwE;IACxE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,IAAI,SAAS,KAAK,iBAAiB,EAAE;QACnC,SAAS,CAAC,QAAQ,GAAG,gBAAgB,CAAC;KACvC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5C,CAAC;AAtFD,4BAsFC;AAED,SAAS,uBAAuB,CAAC,CAAc,EAAE,IAAS,EAAE,UAAkB;IAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAyB,CAAC;QAC5C,OAAO,CACL,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU,WAChC,IAAI,CAAC,UAAU,0CAAE,IAAI,CACnB,SAAS,CAAC,EAAE,CACV,SAAS,CAAC,IAAI,KAAK,iBAAiB,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB,EACtF,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CACnB,SAA8E;IAE9E,IAAI,SAAS,CAAC,KAAK,EAAE;QACnB,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;KAC7B;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,gBAAgB,CACvB,CAAsE,EACtE,CAAsE;IAEtE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["import {\n API,\n FileInfo,\n Identifier,\n ImportDeclaration,\n ImportDefaultSpecifier,\n ImportNamespaceSpecifier,\n ImportSpecifier,\n JSCodeshift,\n JSXIdentifier,\n TSTypeParameter,\n} from 'jscodeshift';\n\nconst namedImports = new Map([\n ['Accelerometer', 'expo-sensors'],\n ['AdMobBanner', 'expo-ads-admob'],\n ['AdMobInterstitial', 'expo-ads-admob'],\n ['AdMobRewarded', 'expo-ads-admob'],\n ['Asset', 'expo-asset'],\n ['Audio', 'expo-av'],\n ['BarCodeScanner', 'expo-barcode-scanner'],\n ['Barometer', 'expo-sensors'],\n ['BlurView', 'expo-blur'],\n ['Camera', 'expo-camera'],\n ['GLView', 'expo-gl'],\n ['Gyroscope', 'expo-sensors'],\n ['LinearGradient', 'expo-linear-gradient'],\n ['Magnetometer', 'expo-sensors'],\n ['MagnetometerUncalibrated', 'expo-sensors'],\n ['PublisherBanner', 'expo-ads-admob'],\n ['SQLite', 'expo-sqlite'],\n ['Video', 'expo-av'],\n ['WebView', 'react-native-webview'],\n]);\n\nconst defaultImports = new Map([\n ['Constants', 'expo-constants'],\n ['KeepAwake', 'expo-keep-awake'],\n ['MapView', 'react-native-maps'],\n]);\n\nconst namespaceImports = new Map([\n ['Amplitude', 'expo-analytics-amplitude'],\n ['AppAuth', 'expo-app-auth'],\n ['BackgroundFetch', 'expo-background-fetch'],\n ['Brightness', 'expo-brightness'],\n ['Calendar', 'expo-calendar'],\n ['Contacts', 'expo-contacts'],\n ['Crypto', 'expo-crypto'],\n ['DocumentPicker', 'expo-document-picker'],\n ['Facebook', 'expo-facebook'],\n ['FacebookAds', 'expo-ads-facebook'],\n ['FaceDetector', 'expo-face-detector'],\n ['FileSystem', 'expo-file-system'],\n ['Font', 'expo-font'],\n ['GestureHandler', 'react-native-gesture-handler'],\n ['GL', 'expo-gl'],\n ['GoogleSignIn', 'expo-google-sign-in'],\n ['Haptic', 'expo-haptics'],\n ['Haptics', 'expo-haptics'],\n ['Icon', '@expo/vector-icons'],\n ['ImageManipulator', 'expo-image-manipulator'],\n ['ImagePicker', 'expo-image-picker'],\n ['IntentLauncher', 'expo-intent-launcher'],\n ['IntentLauncherAndroid', 'expo-intent-launcher'],\n ['LocalAuthentication', 'expo-local-authentication'],\n ['Localization', 'expo-localization'],\n ['Location', 'expo-location'],\n ['MailComposer', 'expo-mail-composer'],\n ['MediaLibrary', 'expo-media-library'],\n ['Permissions', 'expo-permissions'],\n ['Print', 'expo-print'],\n ['Random', 'expo-random'],\n ['SecureStore', 'expo-secure-store'],\n ['Segment', 'expo-analytics-segment'],\n ['Sensors', 'expo-sensors'],\n ['Sharing', 'expo-sharing'],\n ['SMS', 'expo-sms'],\n ['Speech', 'expo-speech'],\n ['Svg', 'react-native-svg'],\n ['TaskManager', 'expo-task-manager'],\n ['WebBrowser', 'expo-web-browser'],\n]);\n\nconst allDeprecatedImports = new Map();\nfor (const [name, packageName] of namedImports) {\n allDeprecatedImports.set(name, { type: 'ImportSpecifier', packageName });\n}\nfor (const [name, packageName] of defaultImports) {\n allDeprecatedImports.set(name, { type: 'ImportDefaultSpecifier', packageName });\n}\nfor (const [name, packageName] of namespaceImports) {\n allDeprecatedImports.set(name, { type: 'ImportNamespaceSpecifier', packageName });\n}\n\nexport default function transform(fileInfo: FileInfo, api: API, options: object) {\n const j = api.jscodeshift;\n const root = j(fileInfo.source);\n const getFirstNode = () => root.find(j.Program).get('body', 0).node;\n const originalFirstNode = getFirstNode();\n const originalComments = originalFirstNode.comments;\n\n // import { Name } from 'expo';\n const expoImports = root\n .find(j.ImportDeclaration)\n .filter(path => path.node.source.value === 'expo');\n\n const importedModules: Map<\n string,\n Identifier | JSXIdentifier | TSTypeParameter | null\n > = new Map();\n\n expoImports\n .find(j.ImportSpecifier)\n .filter(p => allDeprecatedImports.has(p.node.imported.name))\n .forEach(path => {\n const importedName = path.node.imported.name;\n const local = path.node.local;\n importedModules.set(importedName, local ?? null);\n j(path).remove();\n });\n\n // import * as Expo from 'expo';\n expoImports.find(j.ImportNamespaceSpecifier).forEach(path => {\n if (path.node.local == null) return;\n\n const expoNamespace = path.node.local.name;\n root\n .find(j.MemberExpression)\n .filter(\n p =>\n (p.node.object.type === 'Identifier' || p.node.object.type === 'JSXIdentifier') &&\n (p.node.property.type === 'Identifier' || p.node.property.type === 'JSXIdentifier') &&\n p.node.object.name === expoNamespace &&\n allDeprecatedImports.has(p.node.property.name)\n )\n .forEach(p => {\n const property = p.node.property as Identifier | JSXIdentifier;\n const importedName = property.name;\n importedModules.set(importedName, null);\n p.replace(property);\n });\n });\n\n for (let [importedName, local] of importedModules.entries()) {\n local = local || j.identifier(importedName);\n const info = allDeprecatedImports.get(importedName);\n if (!info) {\n return;\n }\n api.stats(info.packageName);\n\n let specifier;\n if (info.type === 'ImportSpecifier') {\n specifier = j.importSpecifier(j.identifier(importedName), local);\n } else if (info.type === 'ImportDefaultSpecifier') {\n specifier = j.importDefaultSpecifier(local);\n } else {\n specifier = j.importNamespaceSpecifier(local);\n }\n\n const existingImports = findNonNamespaceImports(j, root, info.packageName);\n if (existingImports.size() && specifier.type !== 'ImportNamespaceSpecifier') {\n const specifiers = existingImports.get(0).node.specifiers;\n specifiers.push(specifier);\n specifiers.sort(specifierCompare);\n } else {\n const newImport = j.importDeclaration([specifier], j.literal(info.packageName));\n expoImports.insertAfter(newImport);\n }\n }\n\n const emptyImports = expoImports.filter(path => path.node.specifiers?.length === 0);\n emptyImports.remove();\n // If the first node has been modified or deleted, reattach the comments\n const firstNode = getFirstNode();\n if (firstNode !== originalFirstNode) {\n firstNode.comments = originalComments;\n }\n\n return root.toSource({ quote: 'single' });\n}\n\nfunction findNonNamespaceImports(j: JSCodeshift, root: any, sourceName: string) {\n return root.find(j.ImportDeclaration).filter((path: any) => {\n const node = path.node as ImportDeclaration;\n return (\n node.source.value === sourceName &&\n node.specifiers?.some(\n specifier =>\n specifier.type === 'ImportSpecifier' || specifier.type === 'ImportDefaultSpecifier'\n )\n );\n });\n}\n\nfunction sortableName(\n specifier: ImportSpecifier | ImportNamespaceSpecifier | ImportDefaultSpecifier\n) {\n if (specifier.local) {\n return specifier.local.name;\n }\n return '';\n}\n\nfunction specifierCompare(\n a: ImportSpecifier | ImportNamespaceSpecifier | ImportDefaultSpecifier,\n b: ImportSpecifier | ImportNamespaceSpecifier | ImportDefaultSpecifier\n) {\n return sortableName(a).localeCompare(sortableName(b), 'en');\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sdk33-imports.js","sourceRoot":"","sources":["../../src/transforms/sdk33-imports.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n API,\n FileInfo,\n Identifier,\n ImportDeclaration,\n ImportDefaultSpecifier,\n ImportNamespaceSpecifier,\n ImportSpecifier,\n JSCodeshift,\n JSXIdentifier,\n TSTypeParameter,\n} from 'jscodeshift';\n\nconst namedImports = new Map([\n ['Accelerometer', 'expo-sensors'],\n ['AdMobBanner', 'expo-ads-admob'],\n ['AdMobInterstitial', 'expo-ads-admob'],\n ['AdMobRewarded', 'expo-ads-admob'],\n ['Asset', 'expo-asset'],\n ['Audio', 'expo-av'],\n ['BarCodeScanner', 'expo-barcode-scanner'],\n ['Barometer', 'expo-sensors'],\n ['BlurView', 'expo-blur'],\n ['Camera', 'expo-camera'],\n ['GLView', 'expo-gl'],\n ['Gyroscope', 'expo-sensors'],\n ['LinearGradient', 'expo-linear-gradient'],\n ['Magnetometer', 'expo-sensors'],\n ['MagnetometerUncalibrated', 'expo-sensors'],\n ['PublisherBanner', 'expo-ads-admob'],\n ['SQLite', 'expo-sqlite'],\n ['Video', 'expo-av'],\n ['WebView', 'react-native-webview'],\n]);\n\nconst defaultImports = new Map([\n ['Constants', 'expo-constants'],\n ['KeepAwake', 'expo-keep-awake'],\n ['MapView', 'react-native-maps'],\n]);\n\nconst namespaceImports = new Map([\n ['Amplitude', 'expo-analytics-amplitude'],\n ['AppAuth', 'expo-app-auth'],\n ['BackgroundFetch', 'expo-background-fetch'],\n ['Brightness', 'expo-brightness'],\n ['Calendar', 'expo-calendar'],\n ['Contacts', 'expo-contacts'],\n ['Crypto', 'expo-crypto'],\n ['DocumentPicker', 'expo-document-picker'],\n ['Facebook', 'expo-facebook'],\n ['FacebookAds', 'expo-ads-facebook'],\n ['FaceDetector', 'expo-face-detector'],\n ['FileSystem', 'expo-file-system'],\n ['Font', 'expo-font'],\n ['GestureHandler', 'react-native-gesture-handler'],\n ['GL', 'expo-gl'],\n ['GoogleSignIn', 'expo-google-sign-in'],\n ['Haptic', 'expo-haptics'],\n ['Haptics', 'expo-haptics'],\n ['Icon', '@expo/vector-icons'],\n ['ImageManipulator', 'expo-image-manipulator'],\n ['ImagePicker', 'expo-image-picker'],\n ['IntentLauncher', 'expo-intent-launcher'],\n ['IntentLauncherAndroid', 'expo-intent-launcher'],\n ['LocalAuthentication', 'expo-local-authentication'],\n ['Localization', 'expo-localization'],\n ['Location', 'expo-location'],\n ['MailComposer', 'expo-mail-composer'],\n ['MediaLibrary', 'expo-media-library'],\n ['Permissions', 'expo-permissions'],\n ['Print', 'expo-print'],\n ['Random', 'expo-random'],\n ['SecureStore', 'expo-secure-store'],\n ['Segment', 'expo-analytics-segment'],\n ['Sensors', 'expo-sensors'],\n ['Sharing', 'expo-sharing'],\n ['SMS', 'expo-sms'],\n ['Speech', 'expo-speech'],\n ['Svg', 'react-native-svg'],\n ['TaskManager', 'expo-task-manager'],\n ['WebBrowser', 'expo-web-browser'],\n]);\n\nconst allDeprecatedImports = new Map();\nfor (const [name, packageName] of namedImports) {\n allDeprecatedImports.set(name, { type: 'ImportSpecifier', packageName });\n}\nfor (const [name, packageName] of defaultImports) {\n allDeprecatedImports.set(name, { type: 'ImportDefaultSpecifier', packageName });\n}\nfor (const [name, packageName] of namespaceImports) {\n allDeprecatedImports.set(name, { type: 'ImportNamespaceSpecifier', packageName });\n}\n\nexport default function transform(fileInfo: FileInfo, api: API, options: object) {\n const j = api.jscodeshift;\n const root = j(fileInfo.source);\n const getFirstNode = () => root.find(j.Program).get('body', 0).node;\n const originalFirstNode = getFirstNode();\n const originalComments = originalFirstNode.comments;\n\n // import { Name } from 'expo';\n const expoImports = root\n .find(j.ImportDeclaration)\n .filter(path => path.node.source.value === 'expo');\n\n const importedModules: Map<\n string,\n Identifier | JSXIdentifier | TSTypeParameter | null\n > = new Map();\n\n expoImports\n .find(j.ImportSpecifier)\n .filter(p => allDeprecatedImports.has(p.node.imported.name))\n .forEach(path => {\n const importedName = path.node.imported.name;\n const local = path.node.local;\n importedModules.set(importedName, local ?? null);\n j(path).remove();\n });\n\n // import * as Expo from 'expo';\n expoImports.find(j.ImportNamespaceSpecifier).forEach(path => {\n if (path.node.local == null) return;\n\n const expoNamespace = path.node.local.name;\n root\n .find(j.MemberExpression)\n .filter(\n p =>\n (p.node.object.type === 'Identifier' || p.node.object.type === 'JSXIdentifier') &&\n (p.node.property.type === 'Identifier' || p.node.property.type === 'JSXIdentifier') &&\n p.node.object.name === expoNamespace &&\n allDeprecatedImports.has(p.node.property.name)\n )\n .forEach(p => {\n const property = p.node.property as Identifier | JSXIdentifier;\n const importedName = property.name;\n importedModules.set(importedName, null);\n p.replace(property);\n });\n });\n\n for (let [importedName, local] of importedModules.entries()) {\n local = local || j.identifier(importedName);\n const info = allDeprecatedImports.get(importedName);\n if (!info) {\n return;\n }\n api.stats(info.packageName);\n\n let specifier;\n if (info.type === 'ImportSpecifier') {\n specifier = j.importSpecifier(j.identifier(importedName), local);\n } else if (info.type === 'ImportDefaultSpecifier') {\n specifier = j.importDefaultSpecifier(local);\n } else {\n specifier = j.importNamespaceSpecifier(local);\n }\n\n const existingImports = findNonNamespaceImports(j, root, info.packageName);\n if (existingImports.size() && specifier.type !== 'ImportNamespaceSpecifier') {\n const specifiers = existingImports.get(0).node.specifiers;\n specifiers.push(specifier);\n specifiers.sort(specifierCompare);\n } else {\n const newImport = j.importDeclaration([specifier], j.literal(info.packageName));\n expoImports.insertAfter(newImport);\n }\n }\n\n const emptyImports = expoImports.filter(path => path.node.specifiers?.length === 0);\n emptyImports.remove();\n // If the first node has been modified or deleted, reattach the comments\n const firstNode = getFirstNode();\n if (firstNode !== originalFirstNode) {\n firstNode.comments = originalComments;\n }\n\n return root.toSource({ quote: 'single' });\n}\n\nfunction findNonNamespaceImports(j: JSCodeshift, root: any, sourceName: string) {\n return root.find(j.ImportDeclaration).filter((path: any) => {\n const node = path.node as ImportDeclaration;\n return (\n node.source.value === sourceName &&\n node.specifiers?.some(\n specifier =>\n specifier.type === 'ImportSpecifier' || specifier.type === 'ImportDefaultSpecifier'\n )\n );\n });\n}\n\nfunction sortableName(\n specifier: ImportSpecifier | ImportNamespaceSpecifier | ImportDefaultSpecifier\n) {\n if (specifier.local) {\n return specifier.local.name;\n }\n return '';\n}\n\nfunction specifierCompare(\n a: ImportSpecifier | ImportNamespaceSpecifier | ImportDefaultSpecifier,\n b: ImportSpecifier | ImportNamespaceSpecifier | ImportDefaultSpecifier\n) {\n return sortableName(a).localeCompare(sortableName(b), 'en');\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk37-imports.js","sourceRoot":"","sources":["../../src/transforms/sdk37-imports.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sdk37-imports.js","sourceRoot":"","sources":["../../src/transforms/sdk37-imports.ts"],"names":[],"mappings":"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","sourcesContent":["import { API, FileInfo, Identifier, JSXIdentifier, TSTypeParameter } from 'jscodeshift';\n\nconst allDeprecatedImports = new Map([\n ['AuthSession', { packageName: 'expo-auth-session' }],\n ['ScreenOrientation', { packageName: 'expo-screen-orientation' }],\n]);\n\nexport default function transform(fileInfo: FileInfo, api: API, options: object) {\n const j = api.jscodeshift;\n const root = j(fileInfo.source);\n const getFirstNode = () => root.find(j.Program).get('body', 0).node;\n const originalFirstNode = getFirstNode();\n const originalComments = originalFirstNode.comments;\n\n // import { Name } from 'expo';\n const expoImports = root\n .find(j.ImportDeclaration)\n .filter(path => path.node.source.value === 'expo');\n\n const importedModules: Map<\n string,\n Identifier | JSXIdentifier | TSTypeParameter | null\n > = new Map();\n\n expoImports\n .find(j.ImportSpecifier)\n .filter(p => allDeprecatedImports.has(p.node.imported.name))\n .forEach(path => {\n const importedName = path.node.imported.name;\n const local = path.node.local;\n importedModules.set(importedName, local ?? null);\n j(path).remove();\n });\n\n // import * as Expo from 'expo';\n expoImports.find(j.ImportNamespaceSpecifier).forEach(path => {\n if (path.node.local == null) return;\n\n const expoNamespace = path.node.local.name;\n root\n .find(j.MemberExpression)\n .filter(\n p =>\n (p.node.object.type === 'Identifier' || p.node.object.type === 'JSXIdentifier') &&\n (p.node.property.type === 'Identifier' || p.node.property.type === 'JSXIdentifier') &&\n p.node.object.name === expoNamespace &&\n allDeprecatedImports.has(p.node.property.name)\n )\n .forEach(p => {\n const property = p.node.property as Identifier | JSXIdentifier;\n const importedName = property.name;\n importedModules.set(importedName, null);\n p.replace(property);\n });\n });\n\n for (let [importedName, local] of [...importedModules.entries()].reverse()) {\n local = local || j.identifier(importedName);\n const info = allDeprecatedImports.get(importedName);\n if (!info) {\n return;\n }\n api.stats(info.packageName);\n\n const specifier = j.importNamespaceSpecifier(local);\n const newImport = j.importDeclaration([specifier], j.literal(info.packageName));\n expoImports.insertAfter(newImport);\n }\n\n const emptyImports = expoImports.filter(path => path.node.specifiers?.length === 0);\n emptyImports.remove();\n // If the first node has been modified or deleted, reattach the comments\n const firstNode = getFirstNode();\n if (firstNode !== originalFirstNode) {\n firstNode.comments = originalComments;\n }\n\n return root.toSource({ quote: 'single' });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-codemod",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"description": "Codemod scripts for Expo apps",
|
|
5
5
|
"author": "Expo",
|
|
6
6
|
"license": "MIT",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"expo-codemod": "./bin/expo-codemod.js"
|
|
14
14
|
},
|
|
15
15
|
"scripts": {
|
|
16
|
-
"watch": "tsc --watch",
|
|
16
|
+
"watch": "tsc --watch --preserveWatchOutput",
|
|
17
17
|
"build": "tsc",
|
|
18
18
|
"prepare": "yarn run clean && yarn build",
|
|
19
19
|
"clean": "rimraf build ./tsconfig.tsbuildinfo",
|
|
@@ -34,11 +34,9 @@
|
|
|
34
34
|
"yargs-parser": "^13.1.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@expo/babel-preset-cli": "0.2.20",
|
|
38
37
|
"@types/jscodeshift": "^0.11.0",
|
|
39
38
|
"@types/multimatch": "^2.1.3",
|
|
40
39
|
"@types/yargs-parser": "^13.0.0",
|
|
41
|
-
"ast-types": "^0.14.2"
|
|
42
|
-
"rimraf": "^3.0.2"
|
|
40
|
+
"ast-types": "^0.14.2"
|
|
43
41
|
}
|
|
44
42
|
}
|