diff --git a/packages/cli/commands/upgrade/upgrades/5.17.0/index.js b/packages/cli/commands/upgrade/upgrades/5.17.0/index.js index a2454e8085c..30ea7bf4367 100644 --- a/packages/cli/commands/upgrade/upgrades/5.17.0/index.js +++ b/packages/cli/commands/upgrade/upgrades/5.17.0/index.js @@ -68,6 +68,7 @@ module.exports = { */ info("Starting with security upgrade."); security.upgradeGraphQLIndex(project, context); + security.upgradePageImportExport(project, context); security.upgradeHeadlessCMSIndex(project, context); security.upgradeAdminComponents(project, context); security.upgradeAdminPlugins(project, context); diff --git a/packages/cli/commands/upgrade/upgrades/5.17.0/security.js b/packages/cli/commands/upgrade/upgrades/5.17.0/security.js index ceb148bc300..aafb70dd6a3 100644 --- a/packages/cli/commands/upgrade/upgrades/5.17.0/security.js +++ b/packages/cli/commands/upgrade/upgrades/5.17.0/security.js @@ -15,6 +15,8 @@ const { const paths = { apiGraphQL: "api/code/graphql", apiHeadlessCms: "api/code/headlessCMS", + apiPageBuilderExport: "api/code/pageBuilder/exportPages", + apiPageBuilderImport: "api/code/pageBuilder/importPages", appsAdminCode: "apps/admin/code" }; @@ -24,7 +26,15 @@ const files = { appAdminPluginsIndex: `${paths.appsAdminCode}/src/plugins/index.ts`, appAdminPluginsSecurity: `${paths.appsAdminCode}/src/plugins/security.ts`, appAdminApp: `${paths.appsAdminCode}/src/App.tsx`, - appAdminWebinyConfig: `${paths.appsAdminCode}/webiny.config.ts` + appAdminWebinyConfig: `${paths.appsAdminCode}/webiny.config.ts`, + apiPageImportCreateIndex: `${paths.apiPageBuilderImport}/create/src/index.ts`, + apiPageImportCreateSecurity: `${paths.apiPageBuilderImport}/create/src/security.ts`, + apiPageImportProcessIndex: `${paths.apiPageBuilderImport}/process/src/index.ts`, + apiPageImportProcessSecurity: `${paths.apiPageBuilderImport}/process/src/security.ts`, + apiPageExportCombineIndex: `${paths.apiPageBuilderExport}/combine/src/index.ts`, + apiPageExportCombineSecurity: `${paths.apiPageBuilderExport}/combine/src/security.ts`, + apiPageExportProcessIndex: `${paths.apiPageBuilderExport}/process/src/index.ts`, + apiPageExportProcessSecurity: `${paths.apiPageBuilderExport}/process/src/security.ts` }; /** @@ -183,6 +193,75 @@ const upgradeHeadlessCMSIndex = (project, context) => { ); }; +/** + * @param project {tsMorph.Project} + * @param context {CliContext} + */ +const upgradePageImportExport = (project, context) => { + const { info } = context; + info(`Upgrading api/code/pageBuilder`); + + /** + * Just copy new index.ts and security.ts files. + */ + const copyFileTargets = [ + { + source: `node_modules/@webiny/cwp-template-aws/template/ddb-es/${paths.apiPageBuilderImport}/create/src/index.ts`, + destination: `${paths.apiPageBuilderImport}/create/src/index.ts` + }, + { + source: `node_modules/@webiny/cwp-template-aws/template/ddb-es/${paths.apiPageBuilderImport}/create/src/security.ts`, + destination: `${paths.apiPageBuilderImport}/create/src/security.ts` + }, + { + source: `node_modules/@webiny/cwp-template-aws/template/ddb-es/${paths.apiPageBuilderImport}/process/src/index.ts`, + destination: `${paths.apiPageBuilderImport}/process/src/index.ts` + }, + { + source: `node_modules/@webiny/cwp-template-aws/template/ddb-es/${paths.apiPageBuilderImport}/process/src/security.ts`, + destination: `${paths.apiPageBuilderImport}/process/src/security.ts` + }, + { + source: `node_modules/@webiny/cwp-template-aws/template/ddb-es/${paths.apiPageBuilderExport}/combine/src/index.ts`, + destination: `${paths.apiPageBuilderExport}/combine/src/index.ts` + }, + { + source: `node_modules/@webiny/cwp-template-aws/template/ddb-es/${paths.apiPageBuilderExport}/combine/src/security.ts`, + destination: `${paths.apiPageBuilderExport}/combine/src/security.ts` + }, + { + source: `node_modules/@webiny/cwp-template-aws/template/ddb-es/${paths.apiPageBuilderExport}/process/src/index.ts`, + destination: `${paths.apiPageBuilderExport}/process/src/index.ts` + }, + { + source: `node_modules/@webiny/cwp-template-aws/template/ddb-es/${paths.apiPageBuilderExport}/process/src/security.ts`, + destination: `${paths.apiPageBuilderExport}/process/src/security.ts` + } + ]; + copyFiles(context, copyFileTargets, false); + /** + * API GraphQL package.json + */ + const packages = { + /** + * To be added + */ + "@webiny/api-tenancy-so-ddb": context.version, + "@webiny/api-security-so-ddb": context.version, + /** + * To be removed + */ + "@webiny/api-security-admin-users": null, + "@webiny/api-security-admin-users-cognito": null, + "@webiny/api-security-admin-users-so-ddb": null, + "@webiny/api-security-cognito-authentication": null + }; + addPackagesToDependencies(context, `${paths.apiPageBuilderExport}/combine`, packages); + addPackagesToDependencies(context, `${paths.apiPageBuilderExport}/process`, packages); + addPackagesToDependencies(context, `${paths.apiPageBuilderImport}/create`, packages); + addPackagesToDependencies(context, `${paths.apiPageBuilderImport}/process`, packages); +}; + /** * @param project {tsMorph.Project} * @param context {CliContext} @@ -449,6 +528,7 @@ module.exports = { files, upgradeGraphQLIndex, upgradeHeadlessCMSIndex, + upgradePageImportExport, upgradeAdminComponents, upgradeAdminPlugins, upgradeAdminSecurity, diff --git a/packages/cli/commands/upgrade/upgrades/fileUtils.js b/packages/cli/commands/upgrade/upgrades/fileUtils.js index ef00bcf79a0..6535ad29a34 100644 --- a/packages/cli/commands/upgrade/upgrades/fileUtils.js +++ b/packages/cli/commands/upgrade/upgrades/fileUtils.js @@ -35,8 +35,9 @@ const createFullFile = file => { * * @param context {CliContext} * @param initialTargets {{source: string, destination: string}[]} + * @param createBackup: {boolean} */ -const copyFiles = (context, initialTargets) => { +const copyFiles = (context, initialTargets, createBackup = true) => { context.info("Copying files..."); /** * First check if source and target files exist and create a backup file name. @@ -48,12 +49,14 @@ const copyFiles = (context, initialTargets) => { * No need to check target.destination because it might not exist. */ checkFiles([target.source]); - let backup; - try { - backup = createBackupFileName(target.destination); - } catch (ex) { - context.error(ex.message); - process.exit(1); + let backup = false; + if (createBackup) { + try { + backup = createBackupFileName(target.destination); + } catch (ex) { + context.error(ex.message); + process.exit(1); + } } targets.push({ @@ -67,24 +70,28 @@ const copyFiles = (context, initialTargets) => { * - make backups of the targets files * - copy new files to their destinations */ - const backups = []; - context.info("Creating backups..."); - for (const target of targets) { - const destination = createFullFile(target.destination); - if (!fs.existsSync(destination)) { - continue; - } - try { - fs.copyFileSync(destination, createFullFile(target.backup)); - context.info(`Backed up "${target.destination}" to "${target.backup}".`); - backups.push(target.backup); - } catch (ex) { - context.error(`Could not create backup "${target.destination}" to "${target.backup}".`); - for (const backup of backups) { - context.info(`Removing created backup "${backup}".`); - fs.unlinkSync(createFullFile(backup)); + if (createBackup) { + const backups = []; + context.info("Creating backups..."); + for (const target of targets) { + const destination = createFullFile(target.destination); + if (!fs.existsSync(destination)) { + continue; + } + try { + fs.copyFileSync(destination, createFullFile(target.backup)); + context.info(`Backed up "${target.destination}" to "${target.backup}".`); + backups.push(target.backup); + } catch (ex) { + context.error( + `Could not create backup "${target.destination}" to "${target.backup}".` + ); + for (const backup of backups) { + context.info(`Removing created backup "${backup}".`); + fs.unlinkSync(createFullFile(backup)); + } + process.exit(1); } - process.exit(1); } } @@ -101,6 +108,9 @@ const copyFiles = (context, initialTargets) => { } catch (ex) { context.error(`Could not copy new file "${target.source}" to "${target.destination}".`); for (const file of files) { + if (!file.backup) { + continue; + } context.info(`Restoring backup file "${file.backup}" to "${file.destination}".`); fs.copyFileSync(createFullFile(file.backup), createFullFile(file.destination)); fs.unlinkSync(createFullFile(file.backup));