2024-01-04 18:36:41 +01:00
|
|
|
import path from 'node:path';
|
|
|
|
|
|
|
|
import type { modules } from '../../../dist';
|
|
|
|
|
2024-01-08 13:17:25 +01:00
|
|
|
/**
|
|
|
|
* This codemod runs on the package.json of the Strapi project and updates
|
2024-01-08 15:22:43 +01:00
|
|
|
* the sqlite dependency to better-sqlite3
|
2024-01-08 13:17:25 +01:00
|
|
|
*/
|
2024-01-04 18:36:41 +01:00
|
|
|
const transform: modules.runner.json.JSONTransform = (file, params) => {
|
|
|
|
const { cwd, json } = params;
|
|
|
|
|
|
|
|
const rootPackageJsonPath = path.join(cwd, 'package.json');
|
|
|
|
|
|
|
|
if (file.path !== rootPackageJsonPath) {
|
|
|
|
return file.json;
|
|
|
|
}
|
|
|
|
|
|
|
|
const j = json(file.json);
|
|
|
|
|
2024-03-18 12:33:41 +01:00
|
|
|
let removed = false;
|
|
|
|
|
2024-01-08 16:46:06 +01:00
|
|
|
const targetProperties = ['sqlite3', '@vscode/sqlite3'];
|
2024-01-04 18:36:41 +01:00
|
|
|
|
|
|
|
targetProperties.forEach((targetProperty) => {
|
|
|
|
const oldSqliteDependency = `dependencies.${targetProperty}`;
|
|
|
|
if (j.has(oldSqliteDependency)) {
|
|
|
|
j.remove(oldSqliteDependency);
|
2024-03-18 12:33:41 +01:00
|
|
|
removed = true;
|
2024-01-04 18:36:41 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2024-03-18 12:33:41 +01:00
|
|
|
if (removed && !j.has('dependencies.better-sqlite3')) {
|
2024-03-18 18:06:46 +01:00
|
|
|
j.set('dependencies.better-sqlite3', '9.4.3');
|
2024-01-08 15:21:54 +01:00
|
|
|
}
|
|
|
|
|
2024-01-04 18:36:41 +01:00
|
|
|
return j.root();
|
|
|
|
};
|
|
|
|
|
|
|
|
export default transform;
|