@axinom/mosaic-cli 0.11.1-rc.7 → 0.12.0-rc.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.
@@ -1,11 +1,13 @@
1
1
  import * as Diff from 'diff';
2
2
  import { CommandModule } from 'yargs';
3
+ import { Vault } from './bitwarden-vault';
3
4
  export interface ApplyTemplatesOptions {
4
5
  only: string;
5
6
  yes: boolean;
6
7
  no: boolean;
7
8
  verbose: boolean;
8
9
  replace: boolean;
10
+ bitwardenUrl: string | undefined;
9
11
  }
10
12
  export interface DiffResult {
11
13
  result: 'created' | 'same' | 'different' | 'differentLayout';
@@ -17,13 +19,16 @@ export declare class ConfigTemplate {
17
19
  readonly target: string;
18
20
  readonly targetExists: boolean;
19
21
  constructor(file: string);
20
- compare(_: boolean): DiffResult;
22
+ compare(_: boolean, __: boolean): DiffResult;
21
23
  writeTarget(): void;
22
24
  }
23
25
  export declare class EnvConfigTemplate extends ConfigTemplate {
24
- constructor(file: string);
26
+ constructor(file: string, bitwardenVault?: Vault);
27
+ readonly bitwardenVault?: Vault;
28
+ private newContent?;
29
+ private readTemplate;
25
30
  private mergeContent;
26
- compare(verbose: boolean): DiffResult;
31
+ compare(replace: boolean, verbose: boolean): DiffResult;
27
32
  writeTarget(): void;
28
33
  }
29
- export declare function compareTemplate(template: ConfigTemplate, verbose?: boolean): 'created' | 'same' | 'different' | 'differentLayout';
34
+ export declare function compareTemplate(template: ConfigTemplate, replace: boolean, verbose: boolean): 'created' | 'same' | 'different' | 'differentLayout';
@@ -10,6 +10,7 @@ const fs_1 = require("fs");
10
10
  const glob = require("glob");
11
11
  const readline = require("readline");
12
12
  const yargs = require("yargs");
13
+ const bitwarden_vault_1 = require("./bitwarden-vault");
13
14
  exports.applyTemplates = {
14
15
  command: 'apply-templates',
15
16
  describe: 'Creates a local copy of each *.template file. ' +
@@ -50,6 +51,14 @@ exports.applyTemplates = {
50
51
  describe: 'Replace all files reverting to template values. WARNING: this is destructive!',
51
52
  default: false,
52
53
  boolean: true,
54
+ })
55
+ .option('bitwardenUrl', {
56
+ type: 'string',
57
+ describe: 'URL of a Bitwarden server to use as a source to resolve placeholders in the template. ' +
58
+ 'Bitwarden CLI must be installed as a dev dependency, and the vault unlocked (see: https://bitwarden.com/help/cli/). ' +
59
+ "Placeholders must be in the form: <BITWARDEN_{itemName::fieldName}> where fieldname can be 'username', 'password', or the name of a custom field.",
60
+ default: undefined,
61
+ hidden: true,
53
62
  }),
54
63
  handler: compareTemplates,
55
64
  };
@@ -59,7 +68,7 @@ class ConfigTemplate {
59
68
  this.target = file.slice(0, -9); // remove `.template` from the filename
60
69
  this.targetExists = (0, fs_1.existsSync)(this.target);
61
70
  }
62
- compare(_) {
71
+ compare(_, __) {
63
72
  const content = (0, fs_1.readFileSync)(this.file).toString();
64
73
  const targetContent = (0, fs_1.readFileSync)(this.target).toString();
65
74
  const diff = Diff.diffLines(targetContent, content);
@@ -75,11 +84,30 @@ class ConfigTemplate {
75
84
  }
76
85
  exports.ConfigTemplate = ConfigTemplate;
77
86
  class EnvConfigTemplate extends ConfigTemplate {
78
- constructor(file) {
87
+ constructor(file, bitwardenVault) {
79
88
  super(file);
89
+ this.bitwardenVault = bitwardenVault;
80
90
  }
81
- mergeContent() {
91
+ readTemplate() {
82
92
  const content = (0, fs_1.readFileSync)(this.file).toString();
93
+ return this.bitwardenVault === undefined
94
+ ? content
95
+ : content.replace(/<BITWARDEN_\{([^}]*)\}[^>]*>/g, (match, identifier) => {
96
+ var _a, _b;
97
+ if (!identifier.includes('::')) {
98
+ console.warn((0, chalk_1.yellow)(`WARNING: Bitwarden placeholder in unsupported format: ${match} in ${this.file}.`));
99
+ return match;
100
+ }
101
+ const [name, fieldName] = identifier.split('::', 2);
102
+ const value = (_a = this.bitwardenVault) === null || _a === void 0 ? void 0 : _a.getValue(name, fieldName);
103
+ if (value === undefined && !((_b = this.bitwardenVault) === null || _b === void 0 ? void 0 : _b.error)) {
104
+ console.warn((0, chalk_1.yellow)(`WARNING: A value was not found in Bitwarden for placeholder ${match} in ${this.file}.`));
105
+ }
106
+ return value !== null && value !== void 0 ? value : match;
107
+ });
108
+ }
109
+ mergeContent() {
110
+ const content = this.readTemplate();
83
111
  if (!this.targetExists) {
84
112
  return content;
85
113
  }
@@ -111,32 +139,28 @@ class EnvConfigTemplate extends ConfigTemplate {
111
139
  }
112
140
  return mergedContent;
113
141
  }
114
- compare(verbose) {
115
- const content = this.mergeContent();
142
+ compare(replace, verbose) {
143
+ this.newContent = replace ? this.readTemplate() : this.mergeContent();
116
144
  const targetContent = (0, fs_1.readFileSync)(this.target).toString();
117
145
  let diff = [];
118
- if (content !== targetContent) {
146
+ if (this.newContent !== targetContent) {
119
147
  // diff of sorted values
120
- diff = Diff.diffLines(envfile.stringify(orderByKey(envfile.parse(targetContent))), envfile.stringify(orderByKey(envfile.parse(content)))).filter((d) => d.added || d.removed);
148
+ diff = Diff.diffLines(envfile.stringify(orderByKey(envfile.parse(targetContent))), envfile.stringify(orderByKey(envfile.parse(this.newContent)))).filter((d) => d.added || d.removed);
121
149
  }
122
- const result = content === targetContent
150
+ const result = this.newContent === targetContent
123
151
  ? 'same'
124
152
  : diff.length > 0
125
153
  ? 'different'
126
154
  : 'differentLayout';
127
155
  if (result !== 'same' && verbose) {
128
156
  // full diff of all lines
129
- diff = Diff.diffLines(targetContent, content);
157
+ diff = Diff.diffLines(targetContent, this.newContent);
130
158
  }
131
159
  return { result, diff };
132
160
  }
133
161
  writeTarget() {
134
- if (!this.targetExists) {
135
- (0, fs_1.copyFileSync)(this.file, this.target);
136
- return;
137
- }
138
- const mergedContent = this.mergeContent();
139
- (0, fs_1.writeFileSync)(this.target, mergedContent);
162
+ var _a;
163
+ (0, fs_1.writeFileSync)(this.target, (_a = this.newContent) !== null && _a !== void 0 ? _a : this.readTemplate());
140
164
  }
141
165
  }
142
166
  exports.EnvConfigTemplate = EnvConfigTemplate;
@@ -151,6 +175,9 @@ function compareTemplates(options) {
151
175
  different: [],
152
176
  differentLayout: [],
153
177
  };
178
+ const bitwardenVault = options.bitwardenUrl !== undefined
179
+ ? new bitwarden_vault_1.BitwardenVault(options.bitwardenUrl)
180
+ : undefined;
154
181
  glob(templatesPath, { dot: true, ignore: '**/node_modules/**' }, (err, files) => {
155
182
  if (err) {
156
183
  console.log(err);
@@ -158,10 +185,10 @@ function compareTemplates(options) {
158
185
  }
159
186
  for (const f of files) {
160
187
  const isEnv = isEnvFile(f);
161
- const template = isEnv && !options.replace
162
- ? new EnvConfigTemplate(f)
188
+ const template = isEnv
189
+ ? new EnvConfigTemplate(f, bitwardenVault)
163
190
  : new ConfigTemplate(f);
164
- const resultKey = compareTemplate(template, options.verbose);
191
+ const resultKey = compareTemplate(template, options.replace, options.verbose);
165
192
  results[resultKey].push(template);
166
193
  }
167
194
  const total = results.created.length +
@@ -171,6 +198,9 @@ function compareTemplates(options) {
171
198
  console.log(`Found ${total} template file${total !== 1 ? 's' : ''}. ${results.created.length} target file${results.created.length !== 1 ? 's were' : ' was'} created. ${results.different.length + results.differentLayout.length} target file${results.different.length + results.differentLayout.length !== 1
172
199
  ? 's have'
173
200
  : ' has'} changes`);
201
+ if ((bitwardenVault === null || bitwardenVault === void 0 ? void 0 : bitwardenVault.error) !== undefined) {
202
+ console.warn((0, chalk_1.yellow)(`WARNING: Bitwarden placeholders were not resolved. ${bitwardenVault.error}`));
203
+ }
174
204
  if (results.different.length !== 0) {
175
205
  promptChanges();
176
206
  }
@@ -212,13 +242,13 @@ function compareTemplates(options) {
212
242
  * If target file doesn't exist then create it.
213
243
  * If both exist and there are differences, return 'different' and do nothing.
214
244
  */
215
- function compareTemplate(template, verbose = false) {
245
+ function compareTemplate(template, replace, verbose) {
216
246
  if (!template.targetExists) {
217
247
  template.writeTarget();
218
248
  console.log(`Target file ${template.target} did not exist and has been created.`);
219
249
  return 'created';
220
250
  }
221
- const { result, diff } = template.compare(verbose);
251
+ const { result, diff } = template.compare(replace, verbose);
222
252
  if (result === 'same') {
223
253
  if (verbose) {
224
254
  console.log((0, chalk_1.gray)(`File ${template.target} has no changes.`));
@@ -260,11 +290,6 @@ function isPlaceholder(value) {
260
290
  // placeholders look like: <{aaa}> or <aaa{bbb}>
261
291
  return value.match(/^<[^>]*?\{[^>]*?\}[^>]*?>$/) ? true : false;
262
292
  }
263
- // Dev helper. Script can be run directly with command (without building the lib):
264
- // yarn ts-node libs/cli/src/commands/apply-templates.ts apply-templates
265
- if (require.main === module) {
266
- yargs.command(exports.applyTemplates).demandCommand().argv;
267
- }
268
293
  /** Orders an object by keys */
269
294
  function orderByKey(unordered) {
270
295
  return Object.keys(unordered)
@@ -274,4 +299,9 @@ function orderByKey(unordered) {
274
299
  return obj;
275
300
  }, {});
276
301
  }
302
+ // Dev helper. Script can be run directly with command (without building the lib):
303
+ // yarn ts-node libs/cli/src/commands/apply-templates/apply-templates.ts apply-templates
304
+ if (require.main === module) {
305
+ yargs.command(exports.applyTemplates).demandCommand().argv;
306
+ }
277
307
  //# sourceMappingURL=apply-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-templates.js","sourceRoot":"","sources":["../../../src/commands/apply-templates/apply-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /** Interface for a vault which provides values. */
2
+ export interface Vault {
3
+ error: string | undefined;
4
+ getValue(name: string, fieldName: string): string | undefined;
5
+ }
6
+ /** Represents a Bitwarden vault accessed through Bitwarden CLI commands. */
7
+ export declare class BitwardenVault implements Vault {
8
+ private serverUrl;
9
+ constructor(serverUrl: string | undefined);
10
+ /** If there is an error getting items from the vault this will not be undefined. */
11
+ error: string | undefined;
12
+ private readonly items;
13
+ /** Get a value from the vault. If the value is not found returns undefined. */
14
+ getValue(name: string, fieldName: string): string | undefined;
15
+ /**
16
+ * Syncs the Bitwarden vault. Note: this only downloads data.
17
+ *
18
+ * We could make this more interactive:
19
+ * - Get status ('yarn bw status') and parse it
20
+ * - Set server url automatically if its not set. Fail with error if it is set but different
21
+ * - Prompt for username & password if not logged in. Login and store session id in memory
22
+ * - Prompt for password if locked. Unlock and store session id in memory
23
+ * - Session id can then be passed to `sync` & `list items` commands with --session
24
+ * Reasons to not do this:
25
+ * - The script becomes more complex
26
+ * - Additional security concern of handling password entry
27
+ * - Password would need to be entered every time the script is run (rather than just once per terminal session)
28
+ * - Blocker: unlocked status is not reported correctly: https://github.com/bitwarden/clients/issues/2729. This
29
+ * makes it really hard to determine the correct course of action.
30
+ */
31
+ private sync;
32
+ /**
33
+ * Gets Bitwarden collection items from the vault.
34
+ */
35
+ private fetchItems;
36
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BitwardenVault = void 0;
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ /* eslint-disable no-console */
6
+ const chalk_1 = require("chalk");
7
+ const child_process_1 = require("child_process");
8
+ /** Represents a Bitwarden vault accessed through Bitwarden CLI commands. */
9
+ class BitwardenVault {
10
+ constructor(serverUrl) {
11
+ this.serverUrl = serverUrl;
12
+ this.error = this.sync();
13
+ if (!this.error) {
14
+ this.items = this.fetchItems();
15
+ }
16
+ }
17
+ /** Get a value from the vault. If the value is not found returns undefined. */
18
+ getValue(name, fieldName) {
19
+ var _a;
20
+ for (const item of (_a = this.items) !== null && _a !== void 0 ? _a : []) {
21
+ if (item.name === name) {
22
+ if (item.login && fieldName === 'username') {
23
+ return item.login.username;
24
+ }
25
+ if (item.login && fieldName === 'password') {
26
+ return item.login.password;
27
+ }
28
+ if (item.fields) {
29
+ for (const field of item.fields) {
30
+ if (field.name === fieldName) {
31
+ return field.value;
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ return undefined;
38
+ }
39
+ /**
40
+ * Syncs the Bitwarden vault. Note: this only downloads data.
41
+ *
42
+ * We could make this more interactive:
43
+ * - Get status ('yarn bw status') and parse it
44
+ * - Set server url automatically if its not set. Fail with error if it is set but different
45
+ * - Prompt for username & password if not logged in. Login and store session id in memory
46
+ * - Prompt for password if locked. Unlock and store session id in memory
47
+ * - Session id can then be passed to `sync` & `list items` commands with --session
48
+ * Reasons to not do this:
49
+ * - The script becomes more complex
50
+ * - Additional security concern of handling password entry
51
+ * - Password would need to be entered every time the script is run (rather than just once per terminal session)
52
+ * - Blocker: unlocked status is not reported correctly: https://github.com/bitwarden/clients/issues/2729. This
53
+ * makes it really hard to determine the correct course of action.
54
+ */
55
+ sync() {
56
+ try {
57
+ (0, child_process_1.execSync)(`yarn bw --nointeraction sync`);
58
+ console.log(`Bitwarden vault synced.`);
59
+ return undefined;
60
+ }
61
+ catch (e) {
62
+ console.log();
63
+ // Try to determine what is the issue and provide some direction
64
+ if (e instanceof Error && e.message.includes('getaddrinfo ENOTFOUND')) {
65
+ return 'The Bitwarden server could not be found. Are you connected to the VPN?';
66
+ }
67
+ if (e instanceof Error && e.message.includes('You are not logged in')) {
68
+ return this.serverUrl !== undefined
69
+ ? 'You are not logged in. Run command `' +
70
+ (0, chalk_1.cyanBright)(`yarn bw config server ${this.serverUrl}`) +
71
+ '` to set the server url, then command `' +
72
+ (0, chalk_1.cyanBright)('yarn bw login') +
73
+ '` and follow the instructions to unlock your vault.'
74
+ : 'You are not logged in. Run command `' +
75
+ (0, chalk_1.cyanBright)('yarn bw login') +
76
+ '` and follow the instructions to unlock your vault.';
77
+ }
78
+ if (e instanceof Error && e.message.includes('Vault is locked')) {
79
+ return ('Your vault is locked. Are you connected to the VPN? Run command `' +
80
+ (0, chalk_1.cyanBright)('yarn bw unlock') +
81
+ '` and follow the instructions to unlock your vault.');
82
+ }
83
+ return ('Unexpected error syncing Bitwarden vault. You may need to run command `' +
84
+ (0, chalk_1.cyanBright)('yarn install') +
85
+ '` to install the Bitwarden CLI otherwise use command `' +
86
+ (0, chalk_1.cyanBright)('yarn bw status') +
87
+ '` to show the full status.');
88
+ }
89
+ }
90
+ /**
91
+ * Gets Bitwarden collection items from the vault.
92
+ */
93
+ fetchItems() {
94
+ try {
95
+ const json = (0, child_process_1.execSync)('yarn bw --nointeraction list items').toString();
96
+ return JSON.parse(json);
97
+ }
98
+ catch (e) {
99
+ console.log();
100
+ console.error((0, chalk_1.red)('ERROR: Could not list items in the vault.'));
101
+ process.exit(1);
102
+ }
103
+ }
104
+ }
105
+ exports.BitwardenVault = BitwardenVault;
106
+ //# sourceMappingURL=bitwarden-vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitwarden-vault.js","sourceRoot":"","sources":["../../../src/commands/apply-templates/bitwarden-vault.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './apply-templates';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./apply-templates"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/apply-templates/index.ts"],"names":[],"mappings":";;;AAAA,iEAAkC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axinom/mosaic-cli",
3
- "version": "0.11.1-rc.7",
3
+ "version": "0.12.0-rc.0",
4
4
  "description": "The Axinom Mosaic CLI",
5
5
  "author": "Axinom",
6
6
  "license": "PROPRIETARY",
@@ -32,8 +32,8 @@
32
32
  "@asyncapi/diff": "^0.4.0",
33
33
  "@asyncapi/modelina": "^0.43.0",
34
34
  "@asyncapi/parser": "^1.15.0",
35
- "@axinom/mosaic-id-link-be": "^0.6.9-rc.7",
36
- "@axinom/mosaic-service-common": "^0.22.0-rc.6",
35
+ "@axinom/mosaic-id-link-be": "^0.6.9-rc.11",
36
+ "@axinom/mosaic-service-common": "^0.22.0-rc.10",
37
37
  "@graphql-inspector/core": "^3.1.2",
38
38
  "@stoplight/spectral": "^5.9.1",
39
39
  "chalk": "^4.1.0",
@@ -66,5 +66,5 @@
66
66
  "publishConfig": {
67
67
  "access": "public"
68
68
  },
69
- "gitHead": "204f06884d608304c939f2d5033e4f3ffc6bf1e6"
69
+ "gitHead": "70cedf01e1b9f731175ff2a379552627746a612a"
70
70
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-templates.js","sourceRoot":"","sources":["../../src/commands/apply-templates.ts"],"names":[],"mappings":"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"}