@axinom/mosaic-cli 0.54.0-rc.5 → 0.54.0
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/dist/cli/index.js +6 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/apply-templates/apply-templates.js +12 -11
- package/dist/commands/apply-templates/apply-templates.js.map +1 -1
- package/dist/commands/apply-templates/bitwarden-vault.js.map +1 -1
- package/dist/commands/create/command.js +26 -11
- package/dist/commands/create/command.js.map +1 -1
- package/dist/commands/create/createSolution.js +31 -31
- package/dist/commands/create/createSolution.js.map +1 -1
- package/dist/commands/create/helpers/git.d.ts +1 -1
- package/dist/commands/create/helpers/git.js +8 -9
- package/dist/commands/create/helpers/git.js.map +1 -1
- package/dist/commands/create/helpers/logger.js +8 -7
- package/dist/commands/create/helpers/logger.js.map +1 -1
- package/dist/commands/create/runQuestionaire.js +18 -18
- package/dist/commands/create/runQuestionaire.js.map +1 -1
- package/dist/commands/create-extension-config/create-extension-config.js +14 -14
- package/dist/commands/create-extension-config/create-extension-config.js.map +1 -1
- package/dist/commands/create-extension-config/index.js +2 -1
- package/dist/commands/create-extension-config/index.js.map +1 -1
- package/dist/commands/get-access-token/get-dev-access-token.js +3 -4
- package/dist/commands/get-access-token/get-dev-access-token.js.map +1 -1
- package/dist/commands/get-access-token/index.js +6 -6
- package/dist/commands/get-access-token/index.js.map +1 -1
- package/dist/commands/graphql-diff.js +44 -46
- package/dist/commands/graphql-diff.js.map +1 -1
- package/dist/commands/hosting/manifest/manifest-commands.js +3 -4
- package/dist/commands/hosting/manifest/manifest-commands.js.map +1 -1
- package/dist/commands/hosting/manifest/upload-manifest.js +7 -7
- package/dist/commands/hosting/manifest/upload-manifest.js.map +1 -1
- package/dist/commands/hosting/pilet/pilet-commands.js +3 -4
- package/dist/commands/hosting/pilet/pilet-commands.js.map +1 -1
- package/dist/commands/hosting/pilet/register-pilet.js +13 -10
- package/dist/commands/hosting/pilet/register-pilet.js.map +1 -1
- package/dist/commands/hosting/service/deploy/service-deploy-command.js +3 -4
- package/dist/commands/hosting/service/deploy/service-deploy-command.js.map +1 -1
- package/dist/commands/hosting/service/deploy/service-deploy.js +14 -14
- package/dist/commands/hosting/service/deploy/service-deploy.js.map +1 -1
- package/dist/commands/hosting/service/undeploy/service-undeploy-command.js +3 -4
- package/dist/commands/hosting/service/undeploy/service-undeploy-command.js.map +1 -1
- package/dist/commands/hosting/service/undeploy/service-undeploy.js +11 -11
- package/dist/commands/hosting/service/undeploy/service-undeploy.js.map +1 -1
- package/dist/commands/msg-codegen/codegen.js +326 -322
- package/dist/commands/msg-codegen/codegen.js.map +1 -1
- package/dist/commands/msg-codegen/index.js +4 -5
- package/dist/commands/msg-codegen/index.js.map +1 -1
- package/dist/commands/msg-codegen/lint.js +55 -60
- package/dist/commands/msg-codegen/lint.js.map +1 -1
- package/dist/commands/msg-codegen/presets.js +10 -1
- package/dist/commands/msg-codegen/presets.js.map +1 -1
- package/dist/commands/msg-codegen/utils.d.ts +1 -0
- package/dist/commands/msg-codegen/utils.js +38 -26
- package/dist/commands/msg-codegen/utils.js.map +1 -1
- package/dist/commands/msg-diff/git-checkout-tmp.js +7 -6
- package/dist/commands/msg-diff/git-checkout-tmp.js.map +1 -1
- package/dist/commands/msg-diff/index.js +4 -4
- package/dist/commands/msg-diff/index.js.map +1 -1
- package/dist/commands/msg-diff/msg-diff.js +188 -198
- package/dist/commands/msg-diff/msg-diff.js.map +1 -1
- package/dist/commands/pg-dump/generate.js +5 -4
- package/dist/commands/pg-dump/generate.js.map +1 -1
- package/dist/commands/publish-schema-to-db/content-entity-model.js.map +1 -1
- package/dist/commands/publish-schema-to-db/generate.js +45 -45
- package/dist/commands/publish-schema-to-db/generate.js.map +1 -1
- package/dist/commands/publish-schema-to-db/index.js +3 -4
- package/dist/commands/publish-schema-to-db/index.js.map +1 -1
- package/dist/commands/publish-schema-to-db/pg-models/columns/pk-column.js.map +1 -1
- package/dist/commands/publish-schema-to-db/pg-models/columns/primitive-column.js.map +1 -1
- package/dist/commands/publish-schema-to-db/pg-models/json-schema-parse-utils.js +18 -22
- package/dist/commands/publish-schema-to-db/pg-models/json-schema-parse-utils.js.map +1 -1
- package/dist/commands/publish-schema-to-db/pg-models/pg-sql-gen-utils.js +26 -29
- package/dist/commands/publish-schema-to-db/pg-models/pg-sql-gen-utils.js.map +1 -1
- package/dist/commands/publish-schema-to-db/pg-models/pgl-utils.js +11 -11
- package/dist/commands/publish-schema-to-db/pg-models/pgl-utils.js.map +1 -1
- package/dist/commands/publish-schema-to-db/pg-models/tables/content-entity-table.js.map +1 -1
- package/dist/commands/publish-schema-to-db/pg-models/tables/object-property-table.js.map +1 -1
- package/dist/commands/publish-schema-to-db/pg-models/tables/relations-table.js.map +1 -1
- package/dist/commands/publish-schema-to-db/postprocessors/postprocessing-utils.js +2 -3
- package/dist/commands/publish-schema-to-db/postprocessors/postprocessing-utils.js.map +1 -1
- package/dist/commands/service/purge-permissions/purge-permissions-command.js +3 -4
- package/dist/commands/service/purge-permissions/purge-permissions-command.js.map +1 -1
- package/dist/commands/service/purge-permissions/purge-permissions.js +4 -5
- package/dist/commands/service/purge-permissions/purge-permissions.js.map +1 -1
- package/dist/commands/service/sync-permissions/sync-permission-command.js +3 -4
- package/dist/commands/service/sync-permissions/sync-permission-command.js.map +1 -1
- package/dist/commands/service/sync-permissions/sync-permissions.js +5 -5
- package/dist/commands/service/sync-permissions/sync-permissions.js.map +1 -1
- package/dist/commands/unpublish-pilet/index.js +7 -7
- package/dist/commands/unpublish-pilet/index.js.map +1 -1
- package/dist/commands/unpublish-pilet/unpublish-pilet.js +4 -4
- package/dist/commands/unpublish-pilet/unpublish-pilet.js.map +1 -1
- package/package.json +18 -13
- package/src/commands/apply-templates/apply-templates.spec.ts +20 -11
- package/src/commands/apply-templates/apply-templates.ts +1 -1
- package/src/commands/create/helpers/logger.ts +1 -1
- package/src/commands/create-extension-config/create-extension-config.ts +1 -1
- package/src/commands/get-access-token/index.ts +1 -1
- package/src/commands/hosting/pilet/register-pilet.ts +1 -1
- package/src/commands/msg-codegen/codegen.ts +34 -6
- package/src/commands/msg-codegen/presets.ts +12 -0
- package/src/commands/msg-codegen/utils.ts +14 -1
- package/src/commands/msg-diff/msg-diff.spec.ts +6 -9
- package/src/commands/pg-dump/generate.ts +1 -1
- package/src/commands/publish-schema-to-db/pg-models/columns/fk-column.spec.ts +18 -14
- package/src/commands/publish-schema-to-db/pg-models/columns/pk-column.spec.ts +11 -7
- package/src/commands/publish-schema-to-db/pg-models/columns/primitive-column.spec.ts +1 -0
- package/src/commands/publish-schema-to-db/pg-models/columns/virtual-fk-column.spec.ts +1 -0
- package/src/commands/publish-schema-to-db/pg-models/json-schema-parse-utils.spec.ts +2 -1
- package/src/commands/publish-schema-to-db/pg-models/pg-sql-gen-utils.spec.ts +1 -0
- package/src/commands/publish-schema-to-db/pg-models/pgl-utils.spec.ts +1 -0
- package/src/commands/unpublish-pilet/index.ts +1 -1
- package/src/types/find-nearest-file.d.ts +11 -0
- package/src/commands/publish-schema-to-db/jest.config.js +0 -9
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.msgDiff = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const yargs = require("yargs");
|
|
5
|
+
const yargs = tslib_1.__importStar(require("yargs"));
|
|
6
6
|
const msg_diff_1 = require("./msg-diff");
|
|
7
7
|
exports.msgDiff = {
|
|
8
8
|
command: 'msg-diff',
|
|
@@ -38,11 +38,11 @@ exports.msgDiff = {
|
|
|
38
38
|
type: 'boolean',
|
|
39
39
|
default: false,
|
|
40
40
|
}),
|
|
41
|
-
handler: (argv) =>
|
|
41
|
+
handler: async (argv) => {
|
|
42
42
|
const diff = new msg_diff_1.MessageDiff(argv);
|
|
43
|
-
|
|
43
|
+
await diff.run();
|
|
44
44
|
console.log('done.');
|
|
45
|
-
}
|
|
45
|
+
},
|
|
46
46
|
};
|
|
47
47
|
// Dev helper. Script can be run directly with command:
|
|
48
48
|
// ts-node libs/cli/src/commands/msg-diff/index.ts msg-diff -i libs/messages/schemas
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/msg-diff/index.ts"],"names":[],"mappings":";;;;AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/msg-diff/index.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAG/B,yCAAyC;AAE5B,QAAA,OAAO,GAA+C;IACjE,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,4DAA4D;IACtE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,MAAM,CAAC,UAAU,EAAE;QAClB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,mDAAmD;QAC7D,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,aAAa,EAAE;QACrB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,0DAA0D;QACpE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,iCAAiC;KAC3C,CAAC;SACD,MAAM,CAAC,gBAAgB,EAAE;QACxB,KAAK,EAAE,GAAG;QACV,QAAQ,EACN,+FAA+F;QACjG,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;KACnB,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,eAAe;KACzB,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;KACf,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,IAAI,GAAG,IAAI,sBAAW,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;CACF,CAAC;AAEF,uDAAuD;AACvD,sFAAsF;AACtF,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,OAAO,CAAC,eAAO,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;AAC9C,CAAC"}
|
|
@@ -4,12 +4,12 @@ exports.MessageDiff = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
/* eslint-disable no-console */
|
|
6
6
|
const diff_1 = require("@asyncapi/diff");
|
|
7
|
-
const parser_1 = require("@asyncapi/parser");
|
|
7
|
+
const parser_1 = tslib_1.__importStar(require("@asyncapi/parser"));
|
|
8
8
|
const chalk_1 = require("chalk");
|
|
9
|
-
const jsonDiff = require("diff");
|
|
10
|
-
const fs = require("fs");
|
|
11
|
-
const jsonSchemaDiff = require("json-schema-diff");
|
|
12
|
-
const path = require("path");
|
|
9
|
+
const jsonDiff = tslib_1.__importStar(require("diff"));
|
|
10
|
+
const fs = tslib_1.__importStar(require("fs"));
|
|
11
|
+
const jsonSchemaDiff = tslib_1.__importStar(require("json-schema-diff"));
|
|
12
|
+
const path = tslib_1.__importStar(require("path"));
|
|
13
13
|
const common_1 = require("../../common");
|
|
14
14
|
const asyncapi_override_1 = require("./asyncapi-override");
|
|
15
15
|
const git_checkout_tmp_1 = require("./git-checkout-tmp");
|
|
@@ -59,161 +59,153 @@ class MessageDiff {
|
|
|
59
59
|
process.exit(2);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
run() {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
});
|
|
62
|
+
async run() {
|
|
63
|
+
// checkout branch to temp dir
|
|
64
|
+
const gitTmp = new git_checkout_tmp_1.GitCheckoutTmp();
|
|
65
|
+
gitTmp.checkout(this.schemaRoot, this.branch);
|
|
66
|
+
const rootDir1 = gitTmp.tmpDir;
|
|
67
|
+
const rootDir2 = gitTmp.gitRoot;
|
|
68
|
+
if (rootDir1 === undefined || rootDir2 === undefined) {
|
|
69
|
+
throw `Git checkout failed`;
|
|
70
|
+
}
|
|
71
|
+
// scan the checked out files
|
|
72
|
+
try {
|
|
73
|
+
const relPath = path.relative(rootDir2, this.schemaRoot);
|
|
74
|
+
await this.walk(path.join(rootDir1, relPath), path.join(rootDir2, relPath));
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
// remove tmp files
|
|
78
|
+
gitTmp.cleanUp();
|
|
79
|
+
}
|
|
80
|
+
// check results
|
|
81
|
+
const totalFiles = this.results.skipped +
|
|
82
|
+
this.results.same +
|
|
83
|
+
this.results.changed +
|
|
84
|
+
this.results.breaking;
|
|
85
|
+
if (totalFiles === 0) {
|
|
86
|
+
throw `No files found matching the given arguments`;
|
|
87
|
+
}
|
|
88
|
+
const color = this.results.breaking > 0
|
|
89
|
+
? chalk_1.red
|
|
90
|
+
: this.results.skipped > 0
|
|
91
|
+
? chalk_1.white
|
|
92
|
+
: chalk_1.green;
|
|
93
|
+
console.log(color(`${totalFiles} file${totalFiles === 1 ? ' was' : 's were'} checked. ${this.results.skipped} ${this.results.skipped === 1 ? 'was' : 'were'} skipped. ${this.results.same} ${this.results.same === 1 ? 'is' : 'are'} the same. ${this.results.changed} ${this.results.changed === 1 ? 'has' : 'have'} non-breaking changes. ${this.results.breaking} ${this.results.breaking === 1 ? 'has' : 'have'} breaking changes.`));
|
|
94
|
+
if (this.results.breaking > 0) {
|
|
95
|
+
process.exit(common_1.exitCode);
|
|
96
|
+
}
|
|
99
97
|
}
|
|
100
98
|
/**
|
|
101
99
|
* Recursively walks a directory comparing matching files to another directory.
|
|
102
100
|
* @param dir1 - Root dir to scan for matching files.
|
|
103
101
|
* @param dir2 - Root dir for comparision.
|
|
104
102
|
*/
|
|
105
|
-
walk(dir1, dir2) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
});
|
|
103
|
+
async walk(dir1, dir2) {
|
|
104
|
+
const items = await fs.promises.readdir(dir1);
|
|
105
|
+
const fullPathItems = items.map((i) => path.join(dir1, i));
|
|
106
|
+
const dirs = fullPathItems.filter((i) => fs.statSync(i).isDirectory());
|
|
107
|
+
const files = fullPathItems.filter((i) => fs.statSync(i).isFile() &&
|
|
108
|
+
this.filePattern.test(i) &&
|
|
109
|
+
(!this.excludePattern || !this.excludePattern.test(i)));
|
|
110
|
+
if ([...files, ...dirs].length === 0) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
for (const file1 of files) {
|
|
114
|
+
const file2 = path.join(dir2, path.relative(dir1, file1));
|
|
115
|
+
await this.asyncApiDiff(file1, file2);
|
|
116
|
+
}
|
|
117
|
+
for (const subDir1 of dirs) {
|
|
118
|
+
const subDir2 = path.join(dir2, path.relative(dir1, subDir1));
|
|
119
|
+
await this.walk(subDir1, subDir2);
|
|
120
|
+
}
|
|
125
121
|
}
|
|
126
122
|
/**
|
|
127
123
|
* Full comparison of asyncapi documents. Each channel payload is also compared.
|
|
128
124
|
*/
|
|
129
|
-
asyncApiDiff(file1, file2) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
throw `Error parsing ${file1}: ${diagnostics}`;
|
|
140
|
-
}
|
|
141
|
-
document1 = document;
|
|
125
|
+
async asyncApiDiff(file1, file2) {
|
|
126
|
+
console.log(`Comparing asyncapi document '${file2}'. Changes from branch '${this.branch}':`);
|
|
127
|
+
let document1;
|
|
128
|
+
let document2;
|
|
129
|
+
// load asyncapi document from git
|
|
130
|
+
try {
|
|
131
|
+
const parser = new parser_1.default();
|
|
132
|
+
const { document, diagnostics } = await (0, parser_1.fromFile)(parser, file1).parse();
|
|
133
|
+
if (!document) {
|
|
134
|
+
throw `Error parsing ${file1}: ${diagnostics}`;
|
|
142
135
|
}
|
|
143
|
-
|
|
144
|
-
|
|
136
|
+
document1 = document;
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
throw `Error reading ${file1}: ${e}`;
|
|
140
|
+
}
|
|
141
|
+
// load local asyncapi document
|
|
142
|
+
try {
|
|
143
|
+
if (!fs.existsSync(file2)) {
|
|
144
|
+
console.log((0, chalk_1.red)(`❌ File not found. This document may have been removed. Assuming this is a breaking change.`));
|
|
145
|
+
this.results.breaking++;
|
|
146
|
+
return;
|
|
145
147
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
this.results.breaking++;
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
const parser = new parser_1.default();
|
|
154
|
-
const { document, diagnostics } = yield (0, parser_1.fromFile)(parser, file2).parse();
|
|
155
|
-
if (!document) {
|
|
156
|
-
throw `Error parsing ${file2}: ${diagnostics}`;
|
|
157
|
-
}
|
|
158
|
-
document2 = document;
|
|
148
|
+
const parser = new parser_1.default();
|
|
149
|
+
const { document, diagnostics } = await (0, parser_1.fromFile)(parser, file2).parse();
|
|
150
|
+
if (!document) {
|
|
151
|
+
throw `Error parsing ${file2}: ${diagnostics}`;
|
|
159
152
|
}
|
|
160
|
-
|
|
161
|
-
|
|
153
|
+
document2 = document;
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
throw `Error reading ${file2}: ${e}`;
|
|
157
|
+
}
|
|
158
|
+
// diff document
|
|
159
|
+
const resultKey = await this.documentDiff(document1, document2);
|
|
160
|
+
this.results[resultKey]++;
|
|
161
|
+
const channels1 = document1.channels();
|
|
162
|
+
const channels2 = document2.channels();
|
|
163
|
+
// diff payloads for channels which exist in both documents
|
|
164
|
+
// removed / renamed channels are already marked as breaking
|
|
165
|
+
for (const channel1 of channels1) {
|
|
166
|
+
if (channels2.has(channel1.id()) === false) {
|
|
167
|
+
continue;
|
|
162
168
|
}
|
|
163
|
-
|
|
164
|
-
const
|
|
169
|
+
console.log(`Comparing payload for channel ${channel1.id()} in document ${file2}. Changes from branch ${this.branch}`);
|
|
170
|
+
const channel2 = channels2.get(channel1.id());
|
|
171
|
+
const resultKey = await this.payloadDiff(channel1, channel2);
|
|
165
172
|
this.results[resultKey]++;
|
|
166
|
-
|
|
167
|
-
const channels2 = document2.channels();
|
|
168
|
-
// diff payloads for channels which exist in both documents
|
|
169
|
-
// removed / renamed channels are already marked as breaking
|
|
170
|
-
for (const channel1 of channels1) {
|
|
171
|
-
if (channels2.has(channel1.id()) === false) {
|
|
172
|
-
continue;
|
|
173
|
-
}
|
|
174
|
-
console.log(`Comparing payload for channel ${channel1.id()} in document ${file2}. Changes from branch ${this.branch}`);
|
|
175
|
-
const channel2 = channels2.get(channel1.id());
|
|
176
|
-
const resultKey = yield this.payloadDiff(channel1, channel2);
|
|
177
|
-
this.results[resultKey]++;
|
|
178
|
-
}
|
|
179
|
-
});
|
|
173
|
+
}
|
|
180
174
|
}
|
|
181
175
|
/**
|
|
182
176
|
* Compare asyncapi documents using AsyncAPI Diff: https://github.com/asyncapi/diff
|
|
183
177
|
* Note: non standard rules are defined in file: asyncapi-override.ts
|
|
184
178
|
*/
|
|
185
|
-
documentDiff(document1, document2) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
console.log(` ? ${itemMsg(item)}`);
|
|
198
|
-
}
|
|
179
|
+
async documentDiff(document1, document2) {
|
|
180
|
+
// generate diff
|
|
181
|
+
// overrides are applied through options here:
|
|
182
|
+
const output = (0, diff_1.diff)(document1.json(), document2.json(), { override: asyncapi_override_1.override });
|
|
183
|
+
const breaking = output.breaking();
|
|
184
|
+
const nonBreaking = output.nonBreaking();
|
|
185
|
+
const unclassified = output.unclassified();
|
|
186
|
+
// log full results if breaking changes were found or verbose is set
|
|
187
|
+
const itemMsg = (change) => typeof change === 'string' ? change : `${change.action} ${change.path}`;
|
|
188
|
+
if (this.verbose) {
|
|
189
|
+
for (const item of unclassified) {
|
|
190
|
+
console.log(` ? ${itemMsg(item)}`);
|
|
199
191
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
for (const item of breaking) {
|
|
206
|
-
console.log(` ✖ ${itemMsg(item)}`);
|
|
192
|
+
}
|
|
193
|
+
if (breaking.length > 0 || this.verbose) {
|
|
194
|
+
for (const item of nonBreaking) {
|
|
195
|
+
console.log(` ✔ ${itemMsg(item)}`);
|
|
207
196
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
console.log(
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
197
|
+
}
|
|
198
|
+
for (const item of breaking) {
|
|
199
|
+
console.log(` ✖ ${itemMsg(item)}`);
|
|
200
|
+
}
|
|
201
|
+
// log summary
|
|
202
|
+
const color = breaking.length > 0 ? chalk_1.red : chalk_1.green;
|
|
203
|
+
console.log(color(`${breaking.length > 0 ? '❌ ' : ''}${nonBreaking.length} non-breaking change${nonBreaking.length === 1 ? '' : 's'}, ${breaking.length} breaking change${breaking.length === 1 ? '' : 's'} in asyncapi document`));
|
|
204
|
+
return breaking.length > 0
|
|
205
|
+
? 'breaking'
|
|
206
|
+
: nonBreaking.length > 0
|
|
207
|
+
? 'changed'
|
|
208
|
+
: 'same';
|
|
217
209
|
}
|
|
218
210
|
/**
|
|
219
211
|
* Compare payload schemas using JsonSchema Diff: https://www.npmjs.com/package/json-schema-diff
|
|
@@ -224,70 +216,68 @@ class MessageDiff {
|
|
|
224
216
|
* Only schema version http://json-schema.org/draft-07/schema# is supported.
|
|
225
217
|
* If any other version is used (in local file or git) then the comparison result will be 'skipped'.
|
|
226
218
|
*/
|
|
227
|
-
payloadDiff(channel1, channel2) {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
return undefined;
|
|
232
|
-
}
|
|
233
|
-
const messages = channel.messages();
|
|
234
|
-
if (messages.length > 1) {
|
|
235
|
-
throw new Error(`Channel ${channel.id()} has more than one message. This is currently not supported.`);
|
|
236
|
-
}
|
|
237
|
-
return messages[0].payload();
|
|
238
|
-
};
|
|
239
|
-
const schema1 = getChannelPayload(channel1);
|
|
240
|
-
const schema2 = getChannelPayload(channel2);
|
|
241
|
-
if (schema1 === undefined) {
|
|
242
|
-
throw new Error(`Could not find payload schema in ${this.branch}`);
|
|
243
|
-
}
|
|
244
|
-
if (schema2 === undefined) {
|
|
245
|
-
throw new Error(`Could not find payload schema`);
|
|
219
|
+
async payloadDiff(channel1, channel2) {
|
|
220
|
+
const getChannelPayload = (channel) => {
|
|
221
|
+
if (channel === undefined) {
|
|
222
|
+
return undefined;
|
|
246
223
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
sourceSchema: schema1.json(),
|
|
251
|
-
destinationSchema: schema2.json(),
|
|
252
|
-
});
|
|
224
|
+
const messages = channel.messages();
|
|
225
|
+
if (messages.length > 1) {
|
|
226
|
+
throw new Error(`Channel ${channel.id()} has more than one message. This is currently not supported.`);
|
|
253
227
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
228
|
+
return messages[0].payload();
|
|
229
|
+
};
|
|
230
|
+
const schema1 = getChannelPayload(channel1);
|
|
231
|
+
const schema2 = getChannelPayload(channel2);
|
|
232
|
+
if (schema1 === undefined) {
|
|
233
|
+
throw new Error(`Could not find payload schema in ${this.branch}`);
|
|
234
|
+
}
|
|
235
|
+
if (schema2 === undefined) {
|
|
236
|
+
throw new Error(`Could not find payload schema`);
|
|
237
|
+
}
|
|
238
|
+
let result;
|
|
239
|
+
try {
|
|
240
|
+
result = await jsonSchemaDiff.diffSchemas({
|
|
241
|
+
sourceSchema: schema1.json(),
|
|
242
|
+
destinationSchema: schema2.json(),
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
catch (e) {
|
|
246
|
+
// Skip if unsupported schema version is used by either payload
|
|
247
|
+
if (e instanceof Error &&
|
|
248
|
+
e.message.startsWith('no schema with key or ref')) {
|
|
249
|
+
console.log(`WARNING: Unsupported JsonSchema version. This payload will be skipped. Both versions of the file must use $schema: "http://json-schema.org/draft-07/schema#".`);
|
|
250
|
+
return 'skipped';
|
|
262
251
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
252
|
+
throw e;
|
|
253
|
+
}
|
|
254
|
+
if (result.removalsFound || this.verbose) {
|
|
255
|
+
// json-schema-diff does not give a useful report of what are the breaking changes. See:
|
|
256
|
+
// https://bitbucket.org/atlassian/json-schema-diff/issues/6/is-it-supposed-to-report-only-what-has
|
|
257
|
+
// So we display a line-by-line diff of the schemas..its not targeted to what is breaking, but its more useful
|
|
258
|
+
// than just logging both versions in full which is the observed behavior of json-schema-diff.
|
|
259
|
+
const diffResult = jsonDiff.diffJson(schema1, schema2);
|
|
260
|
+
diffResult.forEach((r) => {
|
|
261
|
+
for (const line of r.value.split(/\r?\n/)) {
|
|
262
|
+
// strip blank lines and annotations added by asyncapi parser
|
|
263
|
+
if (!line || line.match(/^\s+"x-parser-schema/)) {
|
|
264
|
+
continue;
|
|
276
265
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
266
|
+
console.log(`${r.removed ? ' -' : r.added ? ' +' : ' '} ${line}`);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
const color = result.removalsFound ? chalk_1.red : chalk_1.green;
|
|
271
|
+
console.log(color(result.removalsFound
|
|
272
|
+
? '❌ Breaking changes in payload'
|
|
273
|
+
: result.additionsFound
|
|
274
|
+
? 'No breaking changes in payload'
|
|
275
|
+
: 'No changes in payload'));
|
|
276
|
+
return result.removalsFound
|
|
277
|
+
? 'breaking'
|
|
278
|
+
: result.additionsFound
|
|
279
|
+
? 'changed'
|
|
280
|
+
: 'same';
|
|
291
281
|
}
|
|
292
282
|
}
|
|
293
283
|
exports.MessageDiff = MessageDiff;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msg-diff.js","sourceRoot":"","sources":["../../../src/commands/msg-diff/msg-diff.ts"],"names":[],"mappings":";;;;AAAA,+BAA+B;AAC/B,yCAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"msg-diff.js","sourceRoot":"","sources":["../../../src/commands/msg-diff/msg-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generate = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
4
5
|
const mosaic_service_common_1 = require("@axinom/mosaic-service-common");
|
|
5
|
-
const
|
|
6
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
7
|
const child_process_1 = require("child_process");
|
|
7
8
|
const fs_1 = require("fs");
|
|
8
9
|
const path_1 = require("path");
|
|
@@ -123,16 +124,16 @@ const generate = (options) => {
|
|
|
123
124
|
console.log((0, common_1.getTimestamp)(), 'pg_dump info:', stdout);
|
|
124
125
|
}
|
|
125
126
|
if (stderr) {
|
|
126
|
-
console.log((0, common_1.getTimestamp)(),
|
|
127
|
+
console.log((0, common_1.getTimestamp)(), chalk_1.default.red('Command failed:'), stderr.trim());
|
|
127
128
|
}
|
|
128
129
|
else {
|
|
129
|
-
console.log((0, common_1.getTimestamp)(),
|
|
130
|
+
console.log((0, common_1.getTimestamp)(), chalk_1.default.green('Success:'), `Database schema dump created at '${chalk_1.default.blueBright(options.dumpPath)}'`);
|
|
130
131
|
}
|
|
131
132
|
});
|
|
132
133
|
}
|
|
133
134
|
catch (e) {
|
|
134
135
|
const error = (0, mosaic_service_common_1.ensureError)(e);
|
|
135
|
-
console.log((0, common_1.getTimestamp)(),
|
|
136
|
+
console.log((0, common_1.getTimestamp)(), chalk_1.default.red('Command failed:'), error.message);
|
|
136
137
|
process.exit(common_1.exitCode);
|
|
137
138
|
}
|
|
138
139
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/pg-dump/generate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/pg-dump/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-entity-model.js","sourceRoot":"","sources":["../../../src/commands/publish-schema-to-db/content-entity-model.ts"],"names":[],"mappings":";;;AAGA,iFAAyE;AACzE,mEAAgE;AAChE,+CAA6E;AAG7E,MAAa,kBAAkB;IAK7B,YAAY,OAAiC,EAAE,MAAmB;QAF3D,mBAAc,GAAc,EAAE,CAAC;QAGpC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"content-entity-model.js","sourceRoot":"","sources":["../../../src/commands/publish-schema-to-db/content-entity-model.ts"],"names":[],"mappings":";;;AAGA,iFAAyE;AACzE,mEAAgE;AAChE,+CAA6E;AAG7E,MAAa,kBAAkB;IAK7B,YAAY,OAAiC,EAAE,MAAmB;QAF3D,mBAAc,GAAc,EAAE,CAAC;QAGpC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAChC,CAAC,EACD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CACzC,CAAC;QAEF,4DAA4D;QAC5D,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,GAAG,IAAA,4CAAkB,EAChE,MAAM,EACN,OAAO,CAAC,iBAAiB,CAC1B,CAAC;QAEF,sCAAsC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,2BAAkB,CACzC,OAAO,EACP,IAAI,CAAC,IAAI,EACT,mBAAmB,EACnB,MAAM,CAAC,WAAW,CACnB,CAAC;QAEF,4CAA4C;QAC5C,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,4BAAmB,CACrB,OAAO,EACP,GAAG,EACH,gBAAgB,CAAC,GAAG,CAAC,EACrB,IAAI,CAAC,aAAa,CAAC,EAAE,CACtB,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,QAAQ;QACb,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,IAAA,mCAAgB,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,cAAc,KAAK,CAAC,IAAI,2EAA2E,CACpG,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,IAAA,mCAAgB,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CACb,eAAe,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,2EAA2E,CACpH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEM,eAAe;QACpB,OAAQ,EAAe,CAAC,MAAM,CAC5B,IAAI,EACJ,OAAO,IAAI,CAAC,IAAI,EAAE,EAClB,IAAI,EACJ,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxD,CAAC,CAAC,eAAe,EAAE,CACpB,EACD,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,CAAC;IACJ,CAAC;IAEM,cAAc;QACnB,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACpE,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;gBACvB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;YACnC,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAwC,CAAC,CAAC;IAC/C,CAAC;CACF;AApFD,gDAoFC"}
|