npm package diff
Package: @forge/cli
Versions: 10.13.6 - 11.0.0-next.18
File: package/out/command-line/controller/version-controller.js
Index: package/out/command-line/controller/version-controller.js
===================================================================
--- package/out/command-line/controller/version-controller.js
+++ package/out/command-line/controller/version-controller.js
@@ -0,0 +1,114 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.VersionController = void 0;
+const tslib_1 = require("tslib");
+const fs_1 = require("fs");
+const diff = tslib_1.__importStar(require("diff"));
+const defaultProperties = ['appVersion', 'deploymentDateTime', 'environmentType'];
+function filterObjectProperties(source, filteredProperties, defaultProperties) {
+ const result = {};
+ for (const prop of [...filteredProperties, ...defaultProperties]) {
+ result[prop] = source[prop];
+ }
+ return result;
+}
+class VersionController {
+ versionService;
+ view;
+ constructor(versionService, view) {
+ this.versionService = versionService;
+ this.view = view;
+ }
+ async getAppVersionDiff({ environment, version1, version2, outFile }) {
+ const [version1Details, version2Details] = await this.view.displayDiffProgress(() => Promise.all([
+ this.versionService.getAppVersionDetails(environment, version1),
+ this.versionService.getAppVersionDetails(environment, version2)
+ ]));
+ if (outFile) {
+ this.writeDiffToFile(version1Details, version2Details, outFile);
+ }
+ else {
+ this.displayDiffInText(version1Details, version2Details, environment);
+ }
+ }
+ async getAppVersionDetails({ environment, majorVersion, json = false, outFile, nonInteractive }) {
+ let filteredProperties = [];
+ if (!nonInteractive) {
+ filteredProperties = await this.view.promptVersionDetailsProperties();
+ }
+ const request = this.versionService.getAppVersionDetails(environment, majorVersion);
+ const versionDetails = nonInteractive ? await request : await this.view.displayDetailsProgress(() => request);
+ if (filteredProperties.length === 0) {
+ filteredProperties = Object.keys(versionDetails);
+ }
+ const filteredVersionDetails = filterObjectProperties(versionDetails, filteredProperties, defaultProperties);
+ if (outFile) {
+ this.writeToFile(filteredVersionDetails, outFile);
+ }
+ else if (json) {
+ this.displayInJson(filteredVersionDetails);
+ }
+ else {
+ this.displayDetailsInTable(filteredVersionDetails, environment);
+ }
+ }
+ writeToFile(data, outFile) {
+ this.view.displayWriteToFile(outFile);
+ (0, fs_1.writeFileSync)(outFile, JSON.stringify(data, null, 2));
+ }
+ displayInJson(data) {
+ this.view.displayDataInJson(data);
+ }
+ displayDetailsInTable(details, environment) {
+ this.view.displayVersionDetailsBanner(details.appVersion, environment, details.environmentType);
+ this.view.displayDetailsAsTable(details);
+ }
+ displayDiffInText(version1, version2, environment) {
+ this.view.displayDiffBanner(version1.appVersion, version2.appVersion, environment, version1.environmentType);
+ this.view.displayDiffAsTable({ v1: version1.appVersion, v2: version2.appVersion }, [
+ {
+ key: 'scopes',
+ diff: diff.diffJson(version1.scopes, version2.scopes)
+ },
+ {
+ key: 'deployment date',
+ diff: diff.diffJson(version1.deploymentDateTime, version2.deploymentDateTime)
+ },
+ {
+ key: 'egress',
+ diff: diff.diffJson(version1.egresses, version2.egresses)
+ },
+ { key: 'policies', diff: diff.diffJson(version1.policies, version2.policies) },
+ { key: 'connect keys', diff: diff.diffJson(version1.connectKeys, version2.connectKeys) },
+ {
+ key: 'functions',
+ diff: diff.diffJson(version1.functions, version2.functions)
+ },
+ { key: 'modules', diff: diff.diffJson(version1.modules, version2.modules) },
+ { key: 'remotes', diff: diff.diffJson(version1.remotes, version2.remotes) },
+ { key: 'license', diff: diff.diffJson('' + version1.requiresLicense, '' + version2.requiresLicense) }
+ ]);
+ }
+ writeDiffToFile(version1, version2, outFile) {
+ this.view.displayWriteToFile(outFile);
+ const patch = diff.createTwoFilesPatch(`${version1.appVersion}`, `${version2.appVersion}`, JSON.stringify(version1, null, 2), JSON.stringify(version2, null, 2));
+ (0, fs_1.writeFileSync)(outFile, patch);
+ }
+ async getVersionList({ environment, json, outFile, nonInteractive }) {
+ const request = this.versionService.getAppVersionOverviewList(environment);
+ const versionList = nonInteractive || json ? await request : await this.view.displayListProgress(() => request);
+ if (!nonInteractive && !json) {
+ this.view.displayListBanner(versionList.length, environment, versionList[0].environmentType);
+ }
+ if (outFile) {
+ this.writeToFile(versionList, outFile);
+ }
+ else if (json) {
+ this.displayInJson(versionList);
+ }
+ else {
+ this.view.displayVersionList(versionList);
+ }
+ }
+}
+exports.VersionController = VersionController;