@codeshift/initializer
Advanced tools
| { | ||
| "include": ["src/**/*"], | ||
| "compilerOptions": { | ||
| "outDir": "dist", | ||
| "esModuleInterop": true, | ||
| "allowJs": true, | ||
| "types": ["jest", "node"] | ||
| } | ||
| } |
+8
-0
| # @codeshift/initializer | ||
| ## 0.1.4 | ||
| ### Patch Changes | ||
| - e8cf76e: Releasing all packages to fix version mismatch | ||
| - Updated dependencies [e8cf76e] | ||
| - @codeshift/utils@0.1.3 | ||
| ## 0.1.3 | ||
@@ -4,0 +12,0 @@ |
@@ -47,7 +47,7 @@ 'use strict'; | ||
| }, | ||
| dependencies: { | ||
| '@codeshift/utils': "^".concat(package_json.version) | ||
| }, | ||
| dependencies: {}, | ||
| devDependencies: { | ||
| '@codeshift/utils': "^".concat(package_json.version), | ||
| '@codeshift/test-utils': '*', | ||
| '@types/node': '^16.11.0', | ||
| '@types/jest': '^26.0.15', | ||
@@ -63,14 +63,15 @@ jest: '^26.6.0', | ||
| function getConfig(packageName, version) { | ||
| return "export default {\n maintainers: [],\n target: [],\n description: 'Codemods for ".concat(packageName, "',\n transforms: {\n '").concat(version, "': require('./").concat(version, "/transform'),\n },\n presets: {},\n};\n"); | ||
| function getConfig(packageName, transform, preset) { | ||
| return "module.exports = {\n maintainers: [],\n target: [],\n description: 'Codemods for ".concat(packageName, "',\n transforms: {").concat(transform ? "'".concat(transform, "': require.resolve('./").concat(transform, "/transform'),") : '', "},\n presets: {").concat(preset ? "'".concat(preset, "': require.resolve('./").concat(preset, "/transform'),") : '', "},\n};\n"); | ||
| } | ||
| function updateConfig(path, packageName, version) { | ||
| function updateConfig(path, packageName, transformName, type) { | ||
| var source = fs__default['default'].readFileSync(path, 'utf8'); | ||
| var ast = recast__namespace.parse(source); | ||
| var b = recast__namespace.types.builders; | ||
| var key = type === 'version' ? 'transforms' : 'presets'; | ||
| recast__namespace.visit(ast, { | ||
| visitProperty(path) { | ||
| // @ts-ignore | ||
| if (path.node.key.name !== 'transforms') return false; // @ts-ignore | ||
| if (path.node.key.name !== key) return false; // @ts-ignore | ||
@@ -80,7 +81,7 @@ var properties = path.node.value.properties; // @ts-ignore | ||
| properties.forEach(property => { | ||
| if (semver__default['default'].eq(property.key.value, version)) { | ||
| throw new Error("Transform for ".concat(packageName, " version ").concat(version, " already exists")); | ||
| if (property.key.value === transformName) { | ||
| throw new Error("Transform for ".concat(packageName, " ").concat(transformName, " already exists")); | ||
| } | ||
| }); | ||
| properties.push(b.property('init', b.stringLiteral(version), b.callExpression(b.identifier('require'), [b.stringLiteral("./".concat(version, "/transform"))]))); | ||
| properties.push(b.property('init', b.stringLiteral(transformName), b.callExpression(b.memberExpression(b.identifier('require'), b.identifier('resolve')), [b.stringLiteral("./".concat(transformName, "/transform"))]))); | ||
| return false; | ||
@@ -96,22 +97,22 @@ } | ||
| function initDirectory(packageName, version) { | ||
| var targetPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : './'; | ||
| var isReduced = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; | ||
| function initDirectory(packageName, transform, type) { | ||
| var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : './'; | ||
| var isReduced = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; | ||
| if (!semver__default['default'].valid(version)) { | ||
| throw new Error("Provided version ".concat(version, " is not a valid semver version")); | ||
| if (type === 'version' && !semver__default['default'].valid(transform)) { | ||
| throw new Error("Provided version ".concat(transform, " is not a valid semver version")); | ||
| } | ||
| var basePath = "".concat(targetPath, "/").concat(packageName.replace('/', '__')); | ||
| var codemodPath = "".concat(basePath).concat(!isReduced ? '/src/' : '', "/").concat(version); | ||
| var configPath = "".concat(basePath).concat(!isReduced ? '/src' : '', "/codeshift.config.ts"); | ||
| var basePath = "".concat(path, "/").concat(packageName.replace('/', '__')); | ||
| var transformPath = "".concat(basePath).concat(!isReduced ? '/src/' : '', "/").concat(transform); | ||
| var configPath = "".concat(basePath).concat(!isReduced ? '/src' : '', "/codeshift.config.js"); | ||
| if (fs__default['default'].existsSync(codemodPath)) { | ||
| throw new Error("Codemod for version \"".concat(version, "\" already exists")); | ||
| if (fs__default['default'].existsSync(transformPath)) { | ||
| throw new Error("Codemod for ".concat(type, " \"").concat(transform, "\" already exists")); | ||
| } | ||
| fs__default['default'].copySync("".concat(__dirname, "/../template").concat(isReduced ? '/src' : ''), basePath); | ||
| fs__default['default'].renameSync("".concat(basePath).concat(!isReduced ? '/src/' : '', "/codemod"), codemodPath); | ||
| var testFile = fs__default['default'].readFileSync("".concat(codemodPath, "/transform.spec.ts"), 'utf8').replace('<% packageName %>', packageName).replace('<% version %>', version); | ||
| fs__default['default'].writeFileSync("".concat(codemodPath, "/transform.spec.ts"), testFile); | ||
| fs__default['default'].renameSync("".concat(basePath).concat(!isReduced ? '/src/' : '', "/codemod"), transformPath); | ||
| var testFile = fs__default['default'].readFileSync("".concat(transformPath, "/transform.spec.ts"), 'utf8').replace('<% packageName %>', packageName).replace('<% seperator %>', type === 'version' ? '@' : '#').replace('<% transform %>', transform || ''); | ||
| fs__default['default'].writeFileSync("".concat(transformPath, "/transform.spec.ts"), testFile); | ||
@@ -123,5 +124,5 @@ if (!isReduced) { | ||
| if (!fs__default['default'].existsSync(configPath)) { | ||
| fs__default['default'].writeFileSync(configPath, getConfig(packageName, version)); | ||
| fs__default['default'].writeFileSync(configPath, getConfig(packageName, transform)); | ||
| } else { | ||
| fs__default['default'].writeFileSync(configPath, updateConfig(configPath, packageName, version)); | ||
| fs__default['default'].writeFileSync(configPath, updateConfig(configPath, packageName, transform || '', type)); | ||
| } | ||
@@ -128,0 +129,0 @@ } |
@@ -47,7 +47,7 @@ 'use strict'; | ||
| }, | ||
| dependencies: { | ||
| '@codeshift/utils': "^".concat(package_json.version) | ||
| }, | ||
| dependencies: {}, | ||
| devDependencies: { | ||
| '@codeshift/utils': "^".concat(package_json.version), | ||
| '@codeshift/test-utils': '*', | ||
| '@types/node': '^16.11.0', | ||
| '@types/jest': '^26.0.15', | ||
@@ -63,14 +63,15 @@ jest: '^26.6.0', | ||
| function getConfig(packageName, version) { | ||
| return "export default {\n maintainers: [],\n target: [],\n description: 'Codemods for ".concat(packageName, "',\n transforms: {\n '").concat(version, "': require('./").concat(version, "/transform'),\n },\n presets: {},\n};\n"); | ||
| function getConfig(packageName, transform, preset) { | ||
| return "module.exports = {\n maintainers: [],\n target: [],\n description: 'Codemods for ".concat(packageName, "',\n transforms: {").concat(transform ? "'".concat(transform, "': require.resolve('./").concat(transform, "/transform'),") : '', "},\n presets: {").concat(preset ? "'".concat(preset, "': require.resolve('./").concat(preset, "/transform'),") : '', "},\n};\n"); | ||
| } | ||
| function updateConfig(path, packageName, version) { | ||
| function updateConfig(path, packageName, transformName, type) { | ||
| var source = fs__default['default'].readFileSync(path, 'utf8'); | ||
| var ast = recast__namespace.parse(source); | ||
| var b = recast__namespace.types.builders; | ||
| var key = type === 'version' ? 'transforms' : 'presets'; | ||
| recast__namespace.visit(ast, { | ||
| visitProperty(path) { | ||
| // @ts-ignore | ||
| if (path.node.key.name !== 'transforms') return false; // @ts-ignore | ||
| if (path.node.key.name !== key) return false; // @ts-ignore | ||
@@ -80,7 +81,7 @@ var properties = path.node.value.properties; // @ts-ignore | ||
| properties.forEach(property => { | ||
| if (semver__default['default'].eq(property.key.value, version)) { | ||
| throw new Error("Transform for ".concat(packageName, " version ").concat(version, " already exists")); | ||
| if (property.key.value === transformName) { | ||
| throw new Error("Transform for ".concat(packageName, " ").concat(transformName, " already exists")); | ||
| } | ||
| }); | ||
| properties.push(b.property('init', b.stringLiteral(version), b.callExpression(b.identifier('require'), [b.stringLiteral("./".concat(version, "/transform"))]))); | ||
| properties.push(b.property('init', b.stringLiteral(transformName), b.callExpression(b.memberExpression(b.identifier('require'), b.identifier('resolve')), [b.stringLiteral("./".concat(transformName, "/transform"))]))); | ||
| return false; | ||
@@ -96,22 +97,22 @@ } | ||
| function initDirectory(packageName, version) { | ||
| var targetPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : './'; | ||
| var isReduced = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; | ||
| function initDirectory(packageName, transform, type) { | ||
| var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : './'; | ||
| var isReduced = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; | ||
| if (!semver__default['default'].valid(version)) { | ||
| throw new Error("Provided version ".concat(version, " is not a valid semver version")); | ||
| if (type === 'version' && !semver__default['default'].valid(transform)) { | ||
| throw new Error("Provided version ".concat(transform, " is not a valid semver version")); | ||
| } | ||
| var basePath = "".concat(targetPath, "/").concat(packageName.replace('/', '__')); | ||
| var codemodPath = "".concat(basePath).concat(!isReduced ? '/src/' : '', "/").concat(version); | ||
| var configPath = "".concat(basePath).concat(!isReduced ? '/src' : '', "/codeshift.config.ts"); | ||
| var basePath = "".concat(path, "/").concat(packageName.replace('/', '__')); | ||
| var transformPath = "".concat(basePath).concat(!isReduced ? '/src/' : '', "/").concat(transform); | ||
| var configPath = "".concat(basePath).concat(!isReduced ? '/src' : '', "/codeshift.config.js"); | ||
| if (fs__default['default'].existsSync(codemodPath)) { | ||
| throw new Error("Codemod for version \"".concat(version, "\" already exists")); | ||
| if (fs__default['default'].existsSync(transformPath)) { | ||
| throw new Error("Codemod for ".concat(type, " \"").concat(transform, "\" already exists")); | ||
| } | ||
| fs__default['default'].copySync("".concat(__dirname, "/../template").concat(isReduced ? '/src' : ''), basePath); | ||
| fs__default['default'].renameSync("".concat(basePath).concat(!isReduced ? '/src/' : '', "/codemod"), codemodPath); | ||
| var testFile = fs__default['default'].readFileSync("".concat(codemodPath, "/transform.spec.ts"), 'utf8').replace('<% packageName %>', packageName).replace('<% version %>', version); | ||
| fs__default['default'].writeFileSync("".concat(codemodPath, "/transform.spec.ts"), testFile); | ||
| fs__default['default'].renameSync("".concat(basePath).concat(!isReduced ? '/src/' : '', "/codemod"), transformPath); | ||
| var testFile = fs__default['default'].readFileSync("".concat(transformPath, "/transform.spec.ts"), 'utf8').replace('<% packageName %>', packageName).replace('<% seperator %>', type === 'version' ? '@' : '#').replace('<% transform %>', transform || ''); | ||
| fs__default['default'].writeFileSync("".concat(transformPath, "/transform.spec.ts"), testFile); | ||
@@ -123,5 +124,5 @@ if (!isReduced) { | ||
| if (!fs__default['default'].existsSync(configPath)) { | ||
| fs__default['default'].writeFileSync(configPath, getConfig(packageName, version)); | ||
| fs__default['default'].writeFileSync(configPath, getConfig(packageName, transform)); | ||
| } else { | ||
| fs__default['default'].writeFileSync(configPath, updateConfig(configPath, packageName, version)); | ||
| fs__default['default'].writeFileSync(configPath, updateConfig(configPath, packageName, transform || '', type)); | ||
| } | ||
@@ -128,0 +129,0 @@ } |
| export declare function getPackageJson(packageName: string, version?: string): string; | ||
| export declare function initDirectory(packageName: string, version: string, targetPath?: string, isReduced?: boolean): void; | ||
| export declare function initDirectory(packageName: string, transform: string, type: 'version' | 'preset', path?: string, isReduced?: boolean): void; |
+1
-1
| { | ||
| "name": "@codeshift/initializer", | ||
| "version": "0.1.3", | ||
| "version": "0.1.4", | ||
| "main": "dist/codeshift-initializer.cjs.js", | ||
@@ -5,0 +5,0 @@ "types": "dist/codeshift-initializer.cjs.d.ts", |
+51
-32
@@ -17,7 +17,7 @@ import fs from 'fs-extra'; | ||
| }, | ||
| dependencies: { | ||
| dependencies: {}, | ||
| devDependencies: { | ||
| '@codeshift/utils': `^${utilVersion}`, | ||
| }, | ||
| devDependencies: { | ||
| '@codeshift/test-utils': '*', | ||
| '@types/node': '^16.11.0', | ||
| '@types/jest': '^26.0.15', | ||
@@ -36,11 +36,15 @@ jest: '^26.6.0', | ||
| function getConfig(packageName: string, version: string) { | ||
| return `export default { | ||
| function getConfig(packageName: string, transform?: string, preset?: string) { | ||
| return `module.exports = { | ||
| maintainers: [], | ||
| target: [], | ||
| description: 'Codemods for ${packageName}', | ||
| transforms: { | ||
| '${version}': require('./${version}/transform'), | ||
| }, | ||
| presets: {}, | ||
| transforms: {${ | ||
| transform | ||
| ? `'${transform}': require.resolve('./${transform}/transform'),` | ||
| : '' | ||
| }}, | ||
| presets: {${ | ||
| preset ? `'${preset}': require.resolve('./${preset}/transform'),` : '' | ||
| }}, | ||
| }; | ||
@@ -50,6 +54,12 @@ `; | ||
| function updateConfig(path: string, packageName: string, version: string) { | ||
| function updateConfig( | ||
| path: string, | ||
| packageName: string, | ||
| transformName: string, | ||
| type: 'version' | 'preset', | ||
| ) { | ||
| const source = fs.readFileSync(path, 'utf8'); | ||
| const ast = recast.parse(source); | ||
| const b = recast.types.builders; | ||
| const key = type === 'version' ? 'transforms' : 'presets'; | ||
@@ -59,3 +69,3 @@ recast.visit(ast, { | ||
| // @ts-ignore | ||
| if (path.node.key.name !== 'transforms') return false; | ||
| if (path.node.key.name !== key) return false; | ||
| // @ts-ignore | ||
@@ -65,5 +75,5 @@ const properties = path.node.value.properties; | ||
| properties.forEach(property => { | ||
| if (semver.eq(property.key.value, version)) { | ||
| if (property.key.value === transformName) { | ||
| throw new Error( | ||
| `Transform for ${packageName} version ${version} already exists`, | ||
| `Transform for ${packageName} ${transformName} already exists`, | ||
| ); | ||
@@ -76,6 +86,10 @@ } | ||
| 'init', | ||
| b.stringLiteral(version), | ||
| b.callExpression(b.identifier('require'), [ | ||
| b.stringLiteral(`./${version}/transform`), | ||
| ]), | ||
| b.stringLiteral(transformName), | ||
| b.callExpression( | ||
| b.memberExpression( | ||
| b.identifier('require'), | ||
| b.identifier('resolve'), | ||
| ), | ||
| [b.stringLiteral(`./${transformName}/transform`)], | ||
| ), | ||
| ), | ||
@@ -93,31 +107,36 @@ ); | ||
| packageName: string, | ||
| version: string, | ||
| targetPath: string = './', | ||
| transform: string, | ||
| type: 'version' | 'preset', | ||
| path: string = './', | ||
| isReduced: boolean = false, | ||
| ) { | ||
| if (!semver.valid(version)) { | ||
| if (type === 'version' && !semver.valid(transform)) { | ||
| throw new Error( | ||
| `Provided version ${version} is not a valid semver version`, | ||
| `Provided version ${transform} is not a valid semver version`, | ||
| ); | ||
| } | ||
| const basePath = `${targetPath}/${packageName.replace('/', '__')}`; | ||
| const codemodPath = `${basePath}${!isReduced ? '/src/' : ''}/${version}`; | ||
| const basePath = `${path}/${packageName.replace('/', '__')}`; | ||
| const transformPath = `${basePath}${!isReduced ? '/src/' : ''}/${transform}`; | ||
| const configPath = `${basePath}${ | ||
| !isReduced ? '/src' : '' | ||
| }/codeshift.config.ts`; | ||
| }/codeshift.config.js`; | ||
| if (fs.existsSync(codemodPath)) { | ||
| throw new Error(`Codemod for version "${version}" already exists`); | ||
| if (fs.existsSync(transformPath)) { | ||
| throw new Error(`Codemod for ${type} "${transform}" already exists`); | ||
| } | ||
| fs.copySync(`${__dirname}/../template${isReduced ? '/src' : ''}`, basePath); | ||
| fs.renameSync(`${basePath}${!isReduced ? '/src/' : ''}/codemod`, codemodPath); | ||
| fs.renameSync( | ||
| `${basePath}${!isReduced ? '/src/' : ''}/codemod`, | ||
| transformPath, | ||
| ); | ||
| const testFile = fs | ||
| .readFileSync(`${codemodPath}/transform.spec.ts`, 'utf8') | ||
| .readFileSync(`${transformPath}/transform.spec.ts`, 'utf8') | ||
| .replace('<% packageName %>', packageName) | ||
| .replace('<% version %>', version); | ||
| .replace('<% seperator %>', type === 'version' ? '@' : '#') | ||
| .replace('<% transform %>', transform || ''); | ||
| fs.writeFileSync(`${codemodPath}/transform.spec.ts`, testFile); | ||
| fs.writeFileSync(`${transformPath}/transform.spec.ts`, testFile); | ||
@@ -129,9 +148,9 @@ if (!isReduced) { | ||
| if (!fs.existsSync(configPath)) { | ||
| fs.writeFileSync(configPath, getConfig(packageName, version)); | ||
| fs.writeFileSync(configPath, getConfig(packageName, transform)); | ||
| } else { | ||
| fs.writeFileSync( | ||
| configPath, | ||
| updateConfig(configPath, packageName, version), | ||
| updateConfig(configPath, packageName, transform || '', type), | ||
| ); | ||
| } | ||
| } |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
15774
11.96%10
11.11%369
9.5%