@memberjunction/cli 6.1.0-edge.7 → 6.1.1

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.
Files changed (2) hide show
  1. package/oclif.manifest.json +575 -575
  2. package/package.json +22 -22
@@ -93,54 +93,47 @@
93
93
  "usage.js"
94
94
  ]
95
95
  },
96
- "artifacts:reclassify": {
96
+ "app:check-updates": {
97
97
  "aliases": [],
98
98
  "args": {},
99
- "description": "Upgrade-recovery utility for v5.35 artifact unification. Re-evaluates rows whose TypeID is the deleted JSON fallback but whose actual content does not parse as JSON. Normally a no-op: the v5.35 backfill migration handles this automatically. This command is only relevant when the migration ran BEFORE the artifact-type metadata (Generic Text / Generic Binary) was pushed via `mj sync push`, in which case the migration prints a notice telling you to run this. Reports \"no candidates\" once everything is reconciled. Dry-run by default; --apply writes through Record Changes.",
99
+ "description": "Check for available upgrades for installed MJ Open Apps",
100
100
  "examples": [
101
- "<%= config.bin %> <%= command.id %>",
102
- "<%= config.bin %> <%= command.id %> --apply --limit 50"
101
+ "<%= config.bin %> app check-updates"
103
102
  ],
104
- "flags": {
105
- "conversation-id": {
106
- "description": "Scope to artifacts attached to the given conversation.",
107
- "name": "conversation-id",
108
- "hasDynamicHelp": false,
109
- "multiple": false,
110
- "type": "option"
111
- },
112
- "since": {
113
- "description": "Scope to artifacts created on/after this ISO date.",
114
- "name": "since",
115
- "hasDynamicHelp": false,
116
- "multiple": false,
117
- "type": "option"
118
- },
119
- "limit": {
120
- "description": "Maximum number of rows to inspect.",
121
- "name": "limit",
122
- "default": 100,
123
- "hasDynamicHelp": false,
124
- "multiple": false,
125
- "type": "option"
126
- },
127
- "apply": {
128
- "description": "Write changes. Without this flag, this command only reports what it would do.",
129
- "name": "apply",
130
- "allowNo": false,
131
- "type": "boolean"
132
- },
133
- "verbose": {
134
- "char": "v",
135
- "description": "Print every candidate row, not just the summary.",
136
- "name": "verbose",
137
- "allowNo": false,
138
- "type": "boolean"
103
+ "flags": {},
104
+ "hasDynamicHelp": false,
105
+ "hiddenAliases": [],
106
+ "id": "app:check-updates",
107
+ "pluginAlias": "@memberjunction/cli",
108
+ "pluginName": "@memberjunction/cli",
109
+ "pluginType": "core",
110
+ "strict": true,
111
+ "enableJsonFlag": false,
112
+ "isESM": true,
113
+ "relativePath": [
114
+ "dist",
115
+ "commands",
116
+ "app",
117
+ "check-updates.js"
118
+ ]
119
+ },
120
+ "app:disable": {
121
+ "aliases": [],
122
+ "args": {
123
+ "name": {
124
+ "description": "Name of the installed app to disable",
125
+ "name": "name",
126
+ "required": true
139
127
  }
140
128
  },
129
+ "description": "Disable an installed MJ Open App without removing it",
130
+ "examples": [
131
+ "<%= config.bin %> app disable acme-crm"
132
+ ],
133
+ "flags": {},
141
134
  "hasDynamicHelp": false,
142
135
  "hiddenAliases": [],
143
- "id": "artifacts:reclassify",
136
+ "id": "app:disable",
144
137
  "pluginAlias": "@memberjunction/cli",
145
138
  "pluginName": "@memberjunction/cli",
146
139
  "pluginType": "core",
@@ -150,31 +143,27 @@
150
143
  "relativePath": [
151
144
  "dist",
152
145
  "commands",
153
- "artifacts",
154
- "reclassify.js"
146
+ "app",
147
+ "disable.js"
155
148
  ]
156
149
  },
157
- "artifacts:usage": {
150
+ "app:enable": {
158
151
  "aliases": [],
159
- "args": {},
160
- "description": "Show usage, flags, examples, and runtime hints for every `mj artifacts` command.",
161
- "flags": {
162
- "format": {
163
- "description": "Output format. Defaults to text on a terminal and json when stdout is piped.",
164
- "name": "format",
165
- "hasDynamicHelp": false,
166
- "multiple": false,
167
- "options": [
168
- "text",
169
- "json",
170
- "md"
171
- ],
172
- "type": "option"
152
+ "args": {
153
+ "name": {
154
+ "description": "Name of the installed app to enable",
155
+ "name": "name",
156
+ "required": true
173
157
  }
174
158
  },
159
+ "description": "Re-enable a disabled MJ Open App",
160
+ "examples": [
161
+ "<%= config.bin %> app enable acme-crm"
162
+ ],
163
+ "flags": {},
175
164
  "hasDynamicHelp": false,
176
165
  "hiddenAliases": [],
177
- "id": "artifacts:usage",
166
+ "id": "app:enable",
178
167
  "pluginAlias": "@memberjunction/cli",
179
168
  "pluginName": "@memberjunction/cli",
180
169
  "pluginType": "core",
@@ -184,96 +173,88 @@
184
173
  "relativePath": [
185
174
  "dist",
186
175
  "commands",
187
- "artifacts",
188
- "usage.js"
176
+ "app",
177
+ "enable.js"
189
178
  ]
190
179
  },
191
- "baseline:build": {
180
+ "app:info": {
192
181
  "aliases": [],
193
- "args": {},
194
- "description": "Generate a deterministic baseline SQL script from the END-STATE of a migrated MSSQL database.",
182
+ "args": {
183
+ "name": {
184
+ "description": "Name of the installed app",
185
+ "name": "name",
186
+ "required": true
187
+ }
188
+ },
189
+ "description": "Show detailed information about an installed MJ Open App",
195
190
  "examples": [
196
- "<%= config.bin %> <%= command.id %> --out ./migrations/v5/ # auto: within-major rebaseline",
197
- "<%= config.bin %> <%= command.id %> --source-dir ./migrations/v5 --out ./migrations/v5/",
198
- "<%= config.bin %> <%= command.id %> --baseline-version 6.0 --out ./migrations/v6/ # explicit major-boundary",
199
- "<%= config.bin %> <%= command.id %> --baseline-version 5.32 --database MJ_BL_Stack --out /tmp/baseline/"
191
+ "<%= config.bin %> app info acme-crm"
192
+ ],
193
+ "flags": {},
194
+ "hasDynamicHelp": false,
195
+ "hiddenAliases": [],
196
+ "id": "app:info",
197
+ "pluginAlias": "@memberjunction/cli",
198
+ "pluginName": "@memberjunction/cli",
199
+ "pluginType": "core",
200
+ "strict": true,
201
+ "enableJsonFlag": false,
202
+ "isESM": true,
203
+ "relativePath": [
204
+ "dist",
205
+ "commands",
206
+ "app",
207
+ "info.js"
208
+ ]
209
+ },
210
+ "app:install": {
211
+ "aliases": [],
212
+ "args": {
213
+ "source": {
214
+ "description": "GitHub repository URL of the Open App. For a multi-app repo, append the in-repo path to the app (e.g. https://github.com/MemberJunction/Integrations/CRM/HubSpot).",
215
+ "name": "source",
216
+ "required": true
217
+ }
218
+ },
219
+ "description": "Install an MJ Open App from a GitHub repository",
220
+ "examples": [
221
+ "<%= config.bin %> app install https://github.com/acme/mj-crm",
222
+ "<%= config.bin %> app install https://github.com/acme/mj-crm --version 1.2.0",
223
+ "<%= config.bin %> app install https://github.com/acme/mj-crm --verbose",
224
+ "<%= config.bin %> app install https://github.com/MemberJunction/Integrations/CRM/HubSpot",
225
+ "<%= config.bin %> app install https://github.com/acme/mj-crm --non-interactive"
200
226
  ],
201
227
  "flags": {
202
- "baseline-version": {
203
- "description": "Baseline version stamp in Major.Minor format (literal x is appended for patch, matching the V-file convention). Omit to auto-detect from --source-dir (within-major rebaseline mode).",
204
- "name": "baseline-version",
205
- "hasDynamicHelp": false,
206
- "multiple": false,
207
- "type": "option"
208
- },
209
- "source-dir": {
210
- "description": "Migrations source directory (e.g. ./migrations/v5). Used to auto-detect the next baseline version + timestamp when --baseline-version is omitted. Defaults to the highest migrations/v*/ directory walked up from cwd.",
211
- "name": "source-dir",
212
- "hasDynamicHelp": false,
213
- "multiple": false,
214
- "type": "option"
215
- },
216
- "description": {
217
- "description": "Human-readable description embedded in the file header.",
218
- "name": "description",
219
- "default": "MemberJunction Baseline",
220
- "hasDynamicHelp": false,
221
- "multiple": false,
222
- "type": "option"
223
- },
224
- "database": {
225
- "description": "Override database name (host/user/password come from MJ config).",
226
- "name": "database",
227
- "hasDynamicHelp": false,
228
- "multiple": false,
229
- "type": "option"
230
- },
231
- "out": {
232
- "description": "Output directory. Filename is auto-generated.",
233
- "name": "out",
234
- "default": ".",
235
- "hasDynamicHelp": false,
236
- "multiple": false,
237
- "type": "option"
238
- },
239
- "exclude-data": {
240
- "description": "Comma-separated list of tables (schema-qualified or not) to skip data dump for.",
241
- "name": "exclude-data",
242
- "default": "",
243
- "hasDynamicHelp": false,
244
- "multiple": false,
245
- "type": "option"
246
- },
247
- "batch-size": {
248
- "description": "Rows per INSERT batch.",
249
- "name": "batch-size",
250
- "default": 1000,
228
+ "version": {
229
+ "description": "Specific version to install (default: latest)",
230
+ "name": "version",
251
231
  "hasDynamicHelp": false,
252
232
  "multiple": false,
253
233
  "type": "option"
254
234
  },
255
- "no-data": {
256
- "description": "Emit schema only, no data inserts.",
257
- "name": "no-data",
235
+ "verbose": {
236
+ "char": "v",
237
+ "description": "Show detailed output",
238
+ "name": "verbose",
258
239
  "allowNo": false,
259
240
  "type": "boolean"
260
241
  },
261
- "verbose": {
262
- "description": "Print per-object progress.",
263
- "name": "verbose",
242
+ "non-interactive": {
243
+ "description": "Skip interactive setup prompts; post-install hooks use environment variables / defaults (for CI/headless installs)",
244
+ "name": "non-interactive",
264
245
  "allowNo": false,
265
246
  "type": "boolean"
266
247
  },
267
- "dry-run": {
268
- "description": "Print to stdout instead of writing a file.",
269
- "name": "dry-run",
248
+ "dangerously-ignore-dbl-underscore-schema-rule": {
249
+ "hidden": true,
250
+ "name": "dangerously-ignore-dbl-underscore-schema-rule",
270
251
  "allowNo": false,
271
252
  "type": "boolean"
272
253
  }
273
254
  },
274
255
  "hasDynamicHelp": false,
275
256
  "hiddenAliases": [],
276
- "id": "baseline:build",
257
+ "id": "app:install",
277
258
  "pluginAlias": "@memberjunction/cli",
278
259
  "pluginName": "@memberjunction/cli",
279
260
  "pluginType": "core",
@@ -283,106 +264,21 @@
283
264
  "relativePath": [
284
265
  "dist",
285
266
  "commands",
286
- "baseline",
287
- "build.js"
267
+ "app",
268
+ "install.js"
288
269
  ]
289
270
  },
290
- "baseline:compare": {
271
+ "app:list": {
291
272
  "aliases": [],
292
273
  "args": {},
293
- "description": "Deterministically compare two databases object-by-object and row-by-row.",
274
+ "description": "List all installed MJ Open Apps",
294
275
  "examples": [
295
- "<%= config.bin %> <%= command.id %> --left MJ_BL_Stack --right MJ_BL_New",
296
- "<%= config.bin %> <%= command.id %> --left A --right B --row-compare counts",
297
- "<%= config.bin %> <%= command.id %> --left A --right B --fail-on-diff --out ./diffs/"
276
+ "<%= config.bin %> app list"
298
277
  ],
299
278
  "flags": {
300
- "left": {
301
- "description": "Left database name (override).",
302
- "name": "left",
303
- "required": true,
304
- "hasDynamicHelp": false,
305
- "multiple": false,
306
- "type": "option"
307
- },
308
- "right": {
309
- "description": "Right database name (override).",
310
- "name": "right",
311
- "required": true,
312
- "hasDynamicHelp": false,
313
- "multiple": false,
314
- "type": "option"
315
- },
316
- "dialect": {
317
- "description": "Dialect of both DBs (must match).",
318
- "name": "dialect",
319
- "default": "mssql",
320
- "hasDynamicHelp": false,
321
- "multiple": false,
322
- "options": [
323
- "mssql",
324
- "postgres"
325
- ],
326
- "type": "option"
327
- },
328
- "row-compare": {
329
- "description": "Row comparison mode.",
330
- "name": "row-compare",
331
- "default": "full",
332
- "hasDynamicHelp": false,
333
- "multiple": false,
334
- "options": [
335
- "full",
336
- "hash",
337
- "counts",
338
- "none"
339
- ],
340
- "type": "option"
341
- },
342
- "row-hash-algo": {
343
- "description": "Hash algorithm when --row-compare hash.",
344
- "name": "row-hash-algo",
345
- "default": "sha256",
346
- "hasDynamicHelp": false,
347
- "multiple": false,
348
- "options": [
349
- "sha256",
350
- "md5",
351
- "checksum_agg"
352
- ],
353
- "type": "option"
354
- },
355
- "ignore": {
356
- "description": "Regex of object names to skip.",
357
- "name": "ignore",
358
- "default": "^flyway_schema_history$",
359
- "hasDynamicHelp": false,
360
- "multiple": false,
361
- "type": "option"
362
- },
363
- "sample-limit": {
364
- "description": "Maximum row diffs to capture per table.",
365
- "name": "sample-limit",
366
- "default": 100,
367
- "hasDynamicHelp": false,
368
- "multiple": false,
369
- "type": "option"
370
- },
371
- "out": {
372
- "description": "Directory to write JSON + Markdown reports.",
373
- "name": "out",
374
- "hasDynamicHelp": false,
375
- "multiple": false,
376
- "type": "option"
377
- },
378
- "fail-on-diff": {
379
- "description": "Exit non-zero if any diff is found.",
380
- "name": "fail-on-diff",
381
- "allowNo": false,
382
- "type": "boolean"
383
- },
384
279
  "verbose": {
385
- "description": "Print per-phase progress.",
280
+ "char": "v",
281
+ "description": "Show detailed output",
386
282
  "name": "verbose",
387
283
  "allowNo": false,
388
284
  "type": "boolean"
@@ -390,7 +286,7 @@
390
286
  },
391
287
  "hasDynamicHelp": false,
392
288
  "hiddenAliases": [],
393
- "id": "baseline:compare",
289
+ "id": "app:list",
394
290
  "pluginAlias": "@memberjunction/cli",
395
291
  "pluginName": "@memberjunction/cli",
396
292
  "pluginType": "core",
@@ -400,119 +296,62 @@
400
296
  "relativePath": [
401
297
  "dist",
402
298
  "commands",
403
- "baseline",
404
- "compare.js"
299
+ "app",
300
+ "list.js"
405
301
  ]
406
302
  },
407
- "baseline:roundtrip": {
303
+ "app:remove": {
408
304
  "aliases": [],
409
- "args": {},
410
- "description": "Build a baseline from a V-stack database, apply it to a fresh DB, and prove byte-equivalence.",
305
+ "args": {
306
+ "name": {
307
+ "description": "Name of the installed app to remove",
308
+ "name": "name",
309
+ "required": true
310
+ }
311
+ },
312
+ "description": "Remove an installed MJ Open App",
411
313
  "examples": [
412
- "<%= config.bin %> <%= command.id %> --source MJ_BL_Stack --target MJ_BL_New # auto: within-major",
413
- "<%= config.bin %> <%= command.id %> --baseline-version 6.0 --source MJ_BL_Stack --target MJ_BL_New # explicit major-boundary",
414
- "<%= config.bin %> <%= command.id %> --source-dir ./migrations/v5 --source MJ_BL_Stack --target MJ_BL_New"
314
+ "<%= config.bin %> app remove acme-crm",
315
+ "<%= config.bin %> app remove acme-crm --keep-data",
316
+ "<%= config.bin %> app remove acme-crm --force"
415
317
  ],
416
318
  "flags": {
417
- "baseline-version": {
418
- "description": "Major.Minor version stamp. Omit to auto-detect from --source-dir (within-major rebaseline).",
419
- "name": "baseline-version",
420
- "hasDynamicHelp": false,
421
- "multiple": false,
422
- "type": "option"
423
- },
424
- "source-dir": {
425
- "description": "Migrations source directory used to auto-detect baseline version + timestamp when --baseline-version is omitted. Defaults to the highest migrations/v*/ near cwd.",
426
- "name": "source-dir",
427
- "hasDynamicHelp": false,
428
- "multiple": false,
429
- "type": "option"
430
- },
431
- "description": {
432
- "description": "Header description.",
433
- "name": "description",
434
- "default": "MemberJunction Baseline",
435
- "hasDynamicHelp": false,
436
- "multiple": false,
437
- "type": "option"
438
- },
439
- "dialect": {
440
- "description": "Dialect to test. PG path runs the converter via /pg-migrate first.",
441
- "name": "dialect",
442
- "default": "mssql",
443
- "hasDynamicHelp": false,
444
- "multiple": false,
445
- "options": [
446
- "mssql",
447
- "postgres"
448
- ],
449
- "type": "option"
450
- },
451
- "source": {
452
- "description": "Database name with the V-stack already applied (used as comparison gold standard).",
453
- "name": "source",
454
- "required": true,
455
- "hasDynamicHelp": false,
456
- "multiple": false,
457
- "type": "option"
458
- },
459
- "target": {
460
- "description": "Empty database name to apply the new baseline to.",
461
- "name": "target",
462
- "required": true,
463
- "hasDynamicHelp": false,
464
- "multiple": false,
465
- "type": "option"
466
- },
467
- "out": {
468
- "description": "Output directory for baseline file + reports.",
469
- "name": "out",
470
- "default": ".",
471
- "hasDynamicHelp": false,
472
- "multiple": false,
473
- "type": "option"
474
- },
475
- "apply-cmd": {
476
- "description": "Command template to apply the baseline. Tokens: {file} {database}. Defaults to sqlcmd.",
477
- "name": "apply-cmd",
478
- "hasDynamicHelp": false,
479
- "multiple": false,
480
- "type": "option"
481
- },
482
- "row-compare": {
483
- "description": "Row compare mode passed to the comparator.",
484
- "name": "row-compare",
485
- "default": "full",
486
- "hasDynamicHelp": false,
487
- "multiple": false,
488
- "options": [
489
- "full",
490
- "hash",
491
- "counts",
492
- "none"
493
- ],
494
- "type": "option"
319
+ "keep-data": {
320
+ "description": "Keep the database schema and data",
321
+ "name": "keep-data",
322
+ "allowNo": false,
323
+ "type": "boolean"
495
324
  },
496
- "fail-on-diff": {
497
- "name": "fail-on-diff",
325
+ "force": {
326
+ "description": "Force removal even if other apps depend on this one",
327
+ "name": "force",
498
328
  "allowNo": false,
499
329
  "type": "boolean"
500
330
  },
501
- "keep-target": {
502
- "description": "Do not drop the target database after run (useful for debugging diffs).",
503
- "name": "keep-target",
331
+ "yes": {
332
+ "char": "y",
333
+ "description": "Skip confirmation prompt",
334
+ "name": "yes",
504
335
  "allowNo": false,
505
336
  "type": "boolean"
506
337
  },
507
338
  "verbose": {
339
+ "char": "v",
340
+ "description": "Show detailed output",
508
341
  "name": "verbose",
509
342
  "allowNo": false,
510
343
  "type": "boolean"
344
+ },
345
+ "dangerously-ignore-dbl-underscore-schema-rule": {
346
+ "hidden": true,
347
+ "name": "dangerously-ignore-dbl-underscore-schema-rule",
348
+ "allowNo": false,
349
+ "type": "boolean"
511
350
  }
512
351
  },
513
352
  "hasDynamicHelp": false,
514
353
  "hiddenAliases": [],
515
- "id": "baseline:roundtrip",
354
+ "id": "app:remove",
516
355
  "pluginAlias": "@memberjunction/cli",
517
356
  "pluginName": "@memberjunction/cli",
518
357
  "pluginType": "core",
@@ -522,103 +361,55 @@
522
361
  "relativePath": [
523
362
  "dist",
524
363
  "commands",
525
- "baseline",
526
- "roundtrip.js"
364
+ "app",
365
+ "remove.js"
527
366
  ]
528
367
  },
529
- "baseline:usage": {
368
+ "app:upgrade": {
530
369
  "aliases": [],
531
- "args": {},
532
- "description": "Show usage, flags, examples, and runtime hints for every `mj baseline` command.",
533
- "flags": {
534
- "format": {
535
- "description": "Output format. Defaults to text on a terminal and json when stdout is piped.",
536
- "name": "format",
537
- "hasDynamicHelp": false,
538
- "multiple": false,
539
- "options": [
540
- "text",
541
- "json",
542
- "md"
543
- ],
544
- "type": "option"
370
+ "args": {
371
+ "name": {
372
+ "description": "Name of the installed app to upgrade",
373
+ "name": "name",
374
+ "required": true
545
375
  }
546
376
  },
547
- "hasDynamicHelp": false,
548
- "hiddenAliases": [],
549
- "id": "baseline:usage",
550
- "pluginAlias": "@memberjunction/cli",
551
- "pluginName": "@memberjunction/cli",
552
- "pluginType": "core",
553
- "strict": true,
554
- "enableJsonFlag": false,
555
- "isESM": true,
556
- "relativePath": [
557
- "dist",
558
- "commands",
559
- "baseline",
560
- "usage.js"
561
- ]
562
- },
563
- "bump": {
564
- "aliases": [],
565
- "args": {},
566
- "description": "Bumps MemberJunction dependency versions",
377
+ "description": "Upgrade an installed MJ Open App to a newer version",
567
378
  "examples": [
568
- {
569
- "command": "<%= config.bin %> <%= command.id %>",
570
- "description": "Bump all @memberjunction/* dependencies in the current directory's package.json to the CLI version"
571
- },
572
- {
573
- "command": "<%= config.bin %> <%= command.id %> -rdv",
574
- "description": "Preview all recursive packages bumps without writing any changes."
575
- },
576
- {
577
- "command": "<%= config.bin %> <%= command.id %> -rqt v2.10.0 | xargs -n1 -I{} npm install --prefix {}",
578
- "description": "Recursively bump all @memberjunction/* dependencies in all packages to version v2.10.0 and output only the paths containing the updated package.json files. Pipe the output to xargs to run npm install in each directory and update the package-lock.json files as well."
579
- }
379
+ "<%= config.bin %> app upgrade acme-crm",
380
+ "<%= config.bin %> app upgrade acme-crm --version 1.3.0"
580
381
  ],
581
382
  "flags": {
383
+ "version": {
384
+ "description": "Specific version to upgrade to (default: latest)",
385
+ "name": "version",
386
+ "hasDynamicHelp": false,
387
+ "multiple": false,
388
+ "type": "option"
389
+ },
582
390
  "verbose": {
583
391
  "char": "v",
584
- "description": "Enable additional logging",
392
+ "description": "Show detailed output",
585
393
  "name": "verbose",
586
394
  "allowNo": false,
587
395
  "type": "boolean"
588
396
  },
589
- "recursive": {
590
- "char": "r",
591
- "description": "Bump version in current directory and all subdirectories",
592
- "name": "recursive",
593
- "allowNo": false,
594
- "type": "boolean"
595
- },
596
- "tag": {
597
- "char": "t",
598
- "description": "Version tag to bump target for bump (e.g. v2.10.0), defaults to the CLI version",
599
- "name": "tag",
600
- "hasDynamicHelp": false,
601
- "multiple": false,
602
- "type": "option"
603
- },
604
- "quiet": {
605
- "char": "q",
606
- "description": "Only output paths for updated packages",
607
- "name": "quiet",
397
+ "non-interactive": {
398
+ "description": "Skip interactive prompts; post-upgrade hooks use environment variables / defaults (for CI/headless upgrades)",
399
+ "name": "non-interactive",
608
400
  "allowNo": false,
609
401
  "type": "boolean"
610
402
  },
611
- "dry": {
612
- "char": "d",
613
- "description": "Dry run, do not write changes to package.json files",
614
- "name": "dry",
403
+ "dangerously-ignore-dbl-underscore-schema-rule": {
404
+ "hidden": true,
405
+ "name": "dangerously-ignore-dbl-underscore-schema-rule",
615
406
  "allowNo": false,
616
407
  "type": "boolean"
617
408
  }
618
409
  },
619
410
  "hasDynamicHelp": false,
620
411
  "hiddenAliases": [],
621
- "id": "bump",
412
+ "id": "app:upgrade",
622
413
  "pluginAlias": "@memberjunction/cli",
623
414
  "pluginName": "@memberjunction/cli",
624
415
  "pluginType": "core",
@@ -628,14 +419,14 @@
628
419
  "relativePath": [
629
420
  "dist",
630
421
  "commands",
631
- "bump",
632
- "index.js"
422
+ "app",
423
+ "upgrade.js"
633
424
  ]
634
425
  },
635
- "bump:usage": {
426
+ "app:usage": {
636
427
  "aliases": [],
637
428
  "args": {},
638
- "description": "Show usage, flags, examples, and runtime hints for every `mj bump` command.",
429
+ "description": "Show usage, flags, examples, and runtime hints for every `mj app` command.",
639
430
  "flags": {
640
431
  "format": {
641
432
  "description": "Output format. Defaults to text on a terminal and json when stdout is piped.",
@@ -652,7 +443,7 @@
652
443
  },
653
444
  "hasDynamicHelp": false,
654
445
  "hiddenAliases": [],
655
- "id": "bump:usage",
446
+ "id": "app:usage",
656
447
  "pluginAlias": "@memberjunction/cli",
657
448
  "pluginName": "@memberjunction/cli",
658
449
  "pluginType": "core",
@@ -662,51 +453,58 @@
662
453
  "relativePath": [
663
454
  "dist",
664
455
  "commands",
665
- "bump",
456
+ "app",
666
457
  "usage.js"
667
458
  ]
668
459
  },
669
- "app:check-updates": {
460
+ "artifacts:reclassify": {
670
461
  "aliases": [],
671
462
  "args": {},
672
- "description": "Check for available upgrades for installed MJ Open Apps",
463
+ "description": "Upgrade-recovery utility for v5.35 artifact unification. Re-evaluates rows whose TypeID is the deleted JSON fallback but whose actual content does not parse as JSON. Normally a no-op: the v5.35 backfill migration handles this automatically. This command is only relevant when the migration ran BEFORE the artifact-type metadata (Generic Text / Generic Binary) was pushed via `mj sync push`, in which case the migration prints a notice telling you to run this. Reports \"no candidates\" once everything is reconciled. Dry-run by default; --apply writes through Record Changes.",
673
464
  "examples": [
674
- "<%= config.bin %> app check-updates"
465
+ "<%= config.bin %> <%= command.id %>",
466
+ "<%= config.bin %> <%= command.id %> --apply --limit 50"
675
467
  ],
676
- "flags": {},
677
- "hasDynamicHelp": false,
678
- "hiddenAliases": [],
679
- "id": "app:check-updates",
680
- "pluginAlias": "@memberjunction/cli",
681
- "pluginName": "@memberjunction/cli",
682
- "pluginType": "core",
683
- "strict": true,
684
- "enableJsonFlag": false,
685
- "isESM": true,
686
- "relativePath": [
687
- "dist",
688
- "commands",
689
- "app",
690
- "check-updates.js"
691
- ]
692
- },
693
- "app:disable": {
694
- "aliases": [],
695
- "args": {
696
- "name": {
697
- "description": "Name of the installed app to disable",
698
- "name": "name",
699
- "required": true
468
+ "flags": {
469
+ "conversation-id": {
470
+ "description": "Scope to artifacts attached to the given conversation.",
471
+ "name": "conversation-id",
472
+ "hasDynamicHelp": false,
473
+ "multiple": false,
474
+ "type": "option"
475
+ },
476
+ "since": {
477
+ "description": "Scope to artifacts created on/after this ISO date.",
478
+ "name": "since",
479
+ "hasDynamicHelp": false,
480
+ "multiple": false,
481
+ "type": "option"
482
+ },
483
+ "limit": {
484
+ "description": "Maximum number of rows to inspect.",
485
+ "name": "limit",
486
+ "default": 100,
487
+ "hasDynamicHelp": false,
488
+ "multiple": false,
489
+ "type": "option"
490
+ },
491
+ "apply": {
492
+ "description": "Write changes. Without this flag, this command only reports what it would do.",
493
+ "name": "apply",
494
+ "allowNo": false,
495
+ "type": "boolean"
496
+ },
497
+ "verbose": {
498
+ "char": "v",
499
+ "description": "Print every candidate row, not just the summary.",
500
+ "name": "verbose",
501
+ "allowNo": false,
502
+ "type": "boolean"
700
503
  }
701
504
  },
702
- "description": "Disable an installed MJ Open App without removing it",
703
- "examples": [
704
- "<%= config.bin %> app disable acme-crm"
705
- ],
706
- "flags": {},
707
505
  "hasDynamicHelp": false,
708
506
  "hiddenAliases": [],
709
- "id": "app:disable",
507
+ "id": "artifacts:reclassify",
710
508
  "pluginAlias": "@memberjunction/cli",
711
509
  "pluginName": "@memberjunction/cli",
712
510
  "pluginType": "core",
@@ -716,27 +514,31 @@
716
514
  "relativePath": [
717
515
  "dist",
718
516
  "commands",
719
- "app",
720
- "disable.js"
517
+ "artifacts",
518
+ "reclassify.js"
721
519
  ]
722
520
  },
723
- "app:enable": {
521
+ "artifacts:usage": {
724
522
  "aliases": [],
725
- "args": {
726
- "name": {
727
- "description": "Name of the installed app to enable",
728
- "name": "name",
729
- "required": true
523
+ "args": {},
524
+ "description": "Show usage, flags, examples, and runtime hints for every `mj artifacts` command.",
525
+ "flags": {
526
+ "format": {
527
+ "description": "Output format. Defaults to text on a terminal and json when stdout is piped.",
528
+ "name": "format",
529
+ "hasDynamicHelp": false,
530
+ "multiple": false,
531
+ "options": [
532
+ "text",
533
+ "json",
534
+ "md"
535
+ ],
536
+ "type": "option"
730
537
  }
731
538
  },
732
- "description": "Re-enable a disabled MJ Open App",
733
- "examples": [
734
- "<%= config.bin %> app enable acme-crm"
735
- ],
736
- "flags": {},
737
539
  "hasDynamicHelp": false,
738
540
  "hiddenAliases": [],
739
- "id": "app:enable",
541
+ "id": "artifacts:usage",
740
542
  "pluginAlias": "@memberjunction/cli",
741
543
  "pluginName": "@memberjunction/cli",
742
544
  "pluginType": "core",
@@ -746,27 +548,96 @@
746
548
  "relativePath": [
747
549
  "dist",
748
550
  "commands",
749
- "app",
750
- "enable.js"
551
+ "artifacts",
552
+ "usage.js"
751
553
  ]
752
554
  },
753
- "app:info": {
555
+ "baseline:build": {
754
556
  "aliases": [],
755
- "args": {
756
- "name": {
757
- "description": "Name of the installed app",
758
- "name": "name",
759
- "required": true
760
- }
761
- },
762
- "description": "Show detailed information about an installed MJ Open App",
557
+ "args": {},
558
+ "description": "Generate a deterministic baseline SQL script from the END-STATE of a migrated MSSQL database.",
763
559
  "examples": [
764
- "<%= config.bin %> app info acme-crm"
560
+ "<%= config.bin %> <%= command.id %> --out ./migrations/v5/ # auto: within-major rebaseline",
561
+ "<%= config.bin %> <%= command.id %> --source-dir ./migrations/v5 --out ./migrations/v5/",
562
+ "<%= config.bin %> <%= command.id %> --baseline-version 6.0 --out ./migrations/v6/ # explicit major-boundary",
563
+ "<%= config.bin %> <%= command.id %> --baseline-version 5.32 --database MJ_BL_Stack --out /tmp/baseline/"
765
564
  ],
766
- "flags": {},
565
+ "flags": {
566
+ "baseline-version": {
567
+ "description": "Baseline version stamp in Major.Minor format (literal x is appended for patch, matching the V-file convention). Omit to auto-detect from --source-dir (within-major rebaseline mode).",
568
+ "name": "baseline-version",
569
+ "hasDynamicHelp": false,
570
+ "multiple": false,
571
+ "type": "option"
572
+ },
573
+ "source-dir": {
574
+ "description": "Migrations source directory (e.g. ./migrations/v5). Used to auto-detect the next baseline version + timestamp when --baseline-version is omitted. Defaults to the highest migrations/v*/ directory walked up from cwd.",
575
+ "name": "source-dir",
576
+ "hasDynamicHelp": false,
577
+ "multiple": false,
578
+ "type": "option"
579
+ },
580
+ "description": {
581
+ "description": "Human-readable description embedded in the file header.",
582
+ "name": "description",
583
+ "default": "MemberJunction Baseline",
584
+ "hasDynamicHelp": false,
585
+ "multiple": false,
586
+ "type": "option"
587
+ },
588
+ "database": {
589
+ "description": "Override database name (host/user/password come from MJ config).",
590
+ "name": "database",
591
+ "hasDynamicHelp": false,
592
+ "multiple": false,
593
+ "type": "option"
594
+ },
595
+ "out": {
596
+ "description": "Output directory. Filename is auto-generated.",
597
+ "name": "out",
598
+ "default": ".",
599
+ "hasDynamicHelp": false,
600
+ "multiple": false,
601
+ "type": "option"
602
+ },
603
+ "exclude-data": {
604
+ "description": "Comma-separated list of tables (schema-qualified or not) to skip data dump for.",
605
+ "name": "exclude-data",
606
+ "default": "",
607
+ "hasDynamicHelp": false,
608
+ "multiple": false,
609
+ "type": "option"
610
+ },
611
+ "batch-size": {
612
+ "description": "Rows per INSERT batch.",
613
+ "name": "batch-size",
614
+ "default": 1000,
615
+ "hasDynamicHelp": false,
616
+ "multiple": false,
617
+ "type": "option"
618
+ },
619
+ "no-data": {
620
+ "description": "Emit schema only, no data inserts.",
621
+ "name": "no-data",
622
+ "allowNo": false,
623
+ "type": "boolean"
624
+ },
625
+ "verbose": {
626
+ "description": "Print per-object progress.",
627
+ "name": "verbose",
628
+ "allowNo": false,
629
+ "type": "boolean"
630
+ },
631
+ "dry-run": {
632
+ "description": "Print to stdout instead of writing a file.",
633
+ "name": "dry-run",
634
+ "allowNo": false,
635
+ "type": "boolean"
636
+ }
637
+ },
767
638
  "hasDynamicHelp": false,
768
639
  "hiddenAliases": [],
769
- "id": "app:info",
640
+ "id": "baseline:build",
770
641
  "pluginAlias": "@memberjunction/cli",
771
642
  "pluginName": "@memberjunction/cli",
772
643
  "pluginType": "core",
@@ -776,58 +647,114 @@
776
647
  "relativePath": [
777
648
  "dist",
778
649
  "commands",
779
- "app",
780
- "info.js"
650
+ "baseline",
651
+ "build.js"
781
652
  ]
782
653
  },
783
- "app:install": {
654
+ "baseline:compare": {
784
655
  "aliases": [],
785
- "args": {
786
- "source": {
787
- "description": "GitHub repository URL of the Open App. For a multi-app repo, append the in-repo path to the app (e.g. https://github.com/MemberJunction/Integrations/CRM/HubSpot).",
788
- "name": "source",
789
- "required": true
790
- }
791
- },
792
- "description": "Install an MJ Open App from a GitHub repository",
656
+ "args": {},
657
+ "description": "Deterministically compare two databases object-by-object and row-by-row.",
793
658
  "examples": [
794
- "<%= config.bin %> app install https://github.com/acme/mj-crm",
795
- "<%= config.bin %> app install https://github.com/acme/mj-crm --version 1.2.0",
796
- "<%= config.bin %> app install https://github.com/acme/mj-crm --verbose",
797
- "<%= config.bin %> app install https://github.com/MemberJunction/Integrations/CRM/HubSpot",
798
- "<%= config.bin %> app install https://github.com/acme/mj-crm --non-interactive"
659
+ "<%= config.bin %> <%= command.id %> --left MJ_BL_Stack --right MJ_BL_New",
660
+ "<%= config.bin %> <%= command.id %> --left A --right B --row-compare counts",
661
+ "<%= config.bin %> <%= command.id %> --left A --right B --fail-on-diff --out ./diffs/"
799
662
  ],
800
663
  "flags": {
801
- "version": {
802
- "description": "Specific version to install (default: latest)",
803
- "name": "version",
664
+ "left": {
665
+ "description": "Left database name (override).",
666
+ "name": "left",
667
+ "required": true,
804
668
  "hasDynamicHelp": false,
805
669
  "multiple": false,
806
670
  "type": "option"
807
671
  },
808
- "verbose": {
809
- "char": "v",
810
- "description": "Show detailed output",
811
- "name": "verbose",
812
- "allowNo": false,
813
- "type": "boolean"
672
+ "right": {
673
+ "description": "Right database name (override).",
674
+ "name": "right",
675
+ "required": true,
676
+ "hasDynamicHelp": false,
677
+ "multiple": false,
678
+ "type": "option"
814
679
  },
815
- "non-interactive": {
816
- "description": "Skip interactive setup prompts; post-install hooks use environment variables / defaults (for CI/headless installs)",
817
- "name": "non-interactive",
680
+ "dialect": {
681
+ "description": "Dialect of both DBs (must match).",
682
+ "name": "dialect",
683
+ "default": "mssql",
684
+ "hasDynamicHelp": false,
685
+ "multiple": false,
686
+ "options": [
687
+ "mssql",
688
+ "postgres"
689
+ ],
690
+ "type": "option"
691
+ },
692
+ "row-compare": {
693
+ "description": "Row comparison mode.",
694
+ "name": "row-compare",
695
+ "default": "full",
696
+ "hasDynamicHelp": false,
697
+ "multiple": false,
698
+ "options": [
699
+ "full",
700
+ "hash",
701
+ "counts",
702
+ "none"
703
+ ],
704
+ "type": "option"
705
+ },
706
+ "row-hash-algo": {
707
+ "description": "Hash algorithm when --row-compare hash.",
708
+ "name": "row-hash-algo",
709
+ "default": "sha256",
710
+ "hasDynamicHelp": false,
711
+ "multiple": false,
712
+ "options": [
713
+ "sha256",
714
+ "md5",
715
+ "checksum_agg"
716
+ ],
717
+ "type": "option"
718
+ },
719
+ "ignore": {
720
+ "description": "Regex of object names to skip.",
721
+ "name": "ignore",
722
+ "default": "^flyway_schema_history$",
723
+ "hasDynamicHelp": false,
724
+ "multiple": false,
725
+ "type": "option"
726
+ },
727
+ "sample-limit": {
728
+ "description": "Maximum row diffs to capture per table.",
729
+ "name": "sample-limit",
730
+ "default": 100,
731
+ "hasDynamicHelp": false,
732
+ "multiple": false,
733
+ "type": "option"
734
+ },
735
+ "out": {
736
+ "description": "Directory to write JSON + Markdown reports.",
737
+ "name": "out",
738
+ "hasDynamicHelp": false,
739
+ "multiple": false,
740
+ "type": "option"
741
+ },
742
+ "fail-on-diff": {
743
+ "description": "Exit non-zero if any diff is found.",
744
+ "name": "fail-on-diff",
818
745
  "allowNo": false,
819
746
  "type": "boolean"
820
747
  },
821
- "dangerously-ignore-dbl-underscore-schema-rule": {
822
- "hidden": true,
823
- "name": "dangerously-ignore-dbl-underscore-schema-rule",
748
+ "verbose": {
749
+ "description": "Print per-phase progress.",
750
+ "name": "verbose",
824
751
  "allowNo": false,
825
752
  "type": "boolean"
826
753
  }
827
754
  },
828
755
  "hasDynamicHelp": false,
829
756
  "hiddenAliases": [],
830
- "id": "app:install",
757
+ "id": "baseline:compare",
831
758
  "pluginAlias": "@memberjunction/cli",
832
759
  "pluginName": "@memberjunction/cli",
833
760
  "pluginType": "core",
@@ -837,21 +764,111 @@
837
764
  "relativePath": [
838
765
  "dist",
839
766
  "commands",
840
- "app",
841
- "install.js"
767
+ "baseline",
768
+ "compare.js"
842
769
  ]
843
770
  },
844
- "app:list": {
771
+ "baseline:roundtrip": {
845
772
  "aliases": [],
846
773
  "args": {},
847
- "description": "List all installed MJ Open Apps",
774
+ "description": "Build a baseline from a V-stack database, apply it to a fresh DB, and prove byte-equivalence.",
848
775
  "examples": [
849
- "<%= config.bin %> app list"
776
+ "<%= config.bin %> <%= command.id %> --source MJ_BL_Stack --target MJ_BL_New # auto: within-major",
777
+ "<%= config.bin %> <%= command.id %> --baseline-version 6.0 --source MJ_BL_Stack --target MJ_BL_New # explicit major-boundary",
778
+ "<%= config.bin %> <%= command.id %> --source-dir ./migrations/v5 --source MJ_BL_Stack --target MJ_BL_New"
850
779
  ],
851
780
  "flags": {
781
+ "baseline-version": {
782
+ "description": "Major.Minor version stamp. Omit to auto-detect from --source-dir (within-major rebaseline).",
783
+ "name": "baseline-version",
784
+ "hasDynamicHelp": false,
785
+ "multiple": false,
786
+ "type": "option"
787
+ },
788
+ "source-dir": {
789
+ "description": "Migrations source directory used to auto-detect baseline version + timestamp when --baseline-version is omitted. Defaults to the highest migrations/v*/ near cwd.",
790
+ "name": "source-dir",
791
+ "hasDynamicHelp": false,
792
+ "multiple": false,
793
+ "type": "option"
794
+ },
795
+ "description": {
796
+ "description": "Header description.",
797
+ "name": "description",
798
+ "default": "MemberJunction Baseline",
799
+ "hasDynamicHelp": false,
800
+ "multiple": false,
801
+ "type": "option"
802
+ },
803
+ "dialect": {
804
+ "description": "Dialect to test. PG path runs the converter via /pg-migrate first.",
805
+ "name": "dialect",
806
+ "default": "mssql",
807
+ "hasDynamicHelp": false,
808
+ "multiple": false,
809
+ "options": [
810
+ "mssql",
811
+ "postgres"
812
+ ],
813
+ "type": "option"
814
+ },
815
+ "source": {
816
+ "description": "Database name with the V-stack already applied (used as comparison gold standard).",
817
+ "name": "source",
818
+ "required": true,
819
+ "hasDynamicHelp": false,
820
+ "multiple": false,
821
+ "type": "option"
822
+ },
823
+ "target": {
824
+ "description": "Empty database name to apply the new baseline to.",
825
+ "name": "target",
826
+ "required": true,
827
+ "hasDynamicHelp": false,
828
+ "multiple": false,
829
+ "type": "option"
830
+ },
831
+ "out": {
832
+ "description": "Output directory for baseline file + reports.",
833
+ "name": "out",
834
+ "default": ".",
835
+ "hasDynamicHelp": false,
836
+ "multiple": false,
837
+ "type": "option"
838
+ },
839
+ "apply-cmd": {
840
+ "description": "Command template to apply the baseline. Tokens: {file} {database}. Defaults to sqlcmd.",
841
+ "name": "apply-cmd",
842
+ "hasDynamicHelp": false,
843
+ "multiple": false,
844
+ "type": "option"
845
+ },
846
+ "row-compare": {
847
+ "description": "Row compare mode passed to the comparator.",
848
+ "name": "row-compare",
849
+ "default": "full",
850
+ "hasDynamicHelp": false,
851
+ "multiple": false,
852
+ "options": [
853
+ "full",
854
+ "hash",
855
+ "counts",
856
+ "none"
857
+ ],
858
+ "type": "option"
859
+ },
860
+ "fail-on-diff": {
861
+ "name": "fail-on-diff",
862
+ "allowNo": false,
863
+ "type": "boolean"
864
+ },
865
+ "keep-target": {
866
+ "description": "Do not drop the target database after run (useful for debugging diffs).",
867
+ "name": "keep-target",
868
+ "allowNo": false,
869
+ "type": "boolean"
870
+ },
852
871
  "verbose": {
853
- "char": "v",
854
- "description": "Show detailed output",
855
872
  "name": "verbose",
856
873
  "allowNo": false,
857
874
  "type": "boolean"
@@ -859,7 +876,7 @@
859
876
  },
860
877
  "hasDynamicHelp": false,
861
878
  "hiddenAliases": [],
862
- "id": "app:list",
879
+ "id": "baseline:roundtrip",
863
880
  "pluginAlias": "@memberjunction/cli",
864
881
  "pluginName": "@memberjunction/cli",
865
882
  "pluginType": "core",
@@ -869,62 +886,31 @@
869
886
  "relativePath": [
870
887
  "dist",
871
888
  "commands",
872
- "app",
873
- "list.js"
889
+ "baseline",
890
+ "roundtrip.js"
874
891
  ]
875
892
  },
876
- "app:remove": {
893
+ "baseline:usage": {
877
894
  "aliases": [],
878
- "args": {
879
- "name": {
880
- "description": "Name of the installed app to remove",
881
- "name": "name",
882
- "required": true
883
- }
884
- },
885
- "description": "Remove an installed MJ Open App",
886
- "examples": [
887
- "<%= config.bin %> app remove acme-crm",
888
- "<%= config.bin %> app remove acme-crm --keep-data",
889
- "<%= config.bin %> app remove acme-crm --force"
890
- ],
895
+ "args": {},
896
+ "description": "Show usage, flags, examples, and runtime hints for every `mj baseline` command.",
891
897
  "flags": {
892
- "keep-data": {
893
- "description": "Keep the database schema and data",
894
- "name": "keep-data",
895
- "allowNo": false,
896
- "type": "boolean"
897
- },
898
- "force": {
899
- "description": "Force removal even if other apps depend on this one",
900
- "name": "force",
901
- "allowNo": false,
902
- "type": "boolean"
903
- },
904
- "yes": {
905
- "char": "y",
906
- "description": "Skip confirmation prompt",
907
- "name": "yes",
908
- "allowNo": false,
909
- "type": "boolean"
910
- },
911
- "verbose": {
912
- "char": "v",
913
- "description": "Show detailed output",
914
- "name": "verbose",
915
- "allowNo": false,
916
- "type": "boolean"
917
- },
918
- "dangerously-ignore-dbl-underscore-schema-rule": {
919
- "hidden": true,
920
- "name": "dangerously-ignore-dbl-underscore-schema-rule",
921
- "allowNo": false,
922
- "type": "boolean"
898
+ "format": {
899
+ "description": "Output format. Defaults to text on a terminal and json when stdout is piped.",
900
+ "name": "format",
901
+ "hasDynamicHelp": false,
902
+ "multiple": false,
903
+ "options": [
904
+ "text",
905
+ "json",
906
+ "md"
907
+ ],
908
+ "type": "option"
923
909
  }
924
910
  },
925
911
  "hasDynamicHelp": false,
926
912
  "hiddenAliases": [],
927
- "id": "app:remove",
913
+ "id": "baseline:usage",
928
914
  "pluginAlias": "@memberjunction/cli",
929
915
  "pluginName": "@memberjunction/cli",
930
916
  "pluginType": "core",
@@ -934,55 +920,69 @@
934
920
  "relativePath": [
935
921
  "dist",
936
922
  "commands",
937
- "app",
938
- "remove.js"
923
+ "baseline",
924
+ "usage.js"
939
925
  ]
940
926
  },
941
- "app:upgrade": {
927
+ "bump": {
942
928
  "aliases": [],
943
- "args": {
944
- "name": {
945
- "description": "Name of the installed app to upgrade",
946
- "name": "name",
947
- "required": true
948
- }
949
- },
950
- "description": "Upgrade an installed MJ Open App to a newer version",
929
+ "args": {},
930
+ "description": "Bumps MemberJunction dependency versions",
951
931
  "examples": [
952
- "<%= config.bin %> app upgrade acme-crm",
953
- "<%= config.bin %> app upgrade acme-crm --version 1.3.0"
932
+ {
933
+ "command": "<%= config.bin %> <%= command.id %>",
934
+ "description": "Bump all @memberjunction/* dependencies in the current directory's package.json to the CLI version"
935
+ },
936
+ {
937
+ "command": "<%= config.bin %> <%= command.id %> -rdv",
938
+ "description": "Preview all recursive packages bumps without writing any changes."
939
+ },
940
+ {
941
+ "command": "<%= config.bin %> <%= command.id %> -rqt v2.10.0 | xargs -n1 -I{} npm install --prefix {}",
942
+ "description": "Recursively bump all @memberjunction/* dependencies in all packages to version v2.10.0 and output only the paths containing the updated package.json files. Pipe the output to xargs to run npm install in each directory and update the package-lock.json files as well."
943
+ }
954
944
  ],
955
945
  "flags": {
956
- "version": {
957
- "description": "Specific version to upgrade to (default: latest)",
958
- "name": "version",
959
- "hasDynamicHelp": false,
960
- "multiple": false,
961
- "type": "option"
962
- },
963
946
  "verbose": {
964
947
  "char": "v",
965
- "description": "Show detailed output",
948
+ "description": "Enable additional logging",
966
949
  "name": "verbose",
967
950
  "allowNo": false,
968
951
  "type": "boolean"
969
952
  },
970
- "non-interactive": {
971
- "description": "Skip interactive prompts; post-upgrade hooks use environment variables / defaults (for CI/headless upgrades)",
972
- "name": "non-interactive",
953
+ "recursive": {
954
+ "char": "r",
955
+ "description": "Bump version in current directory and all subdirectories",
956
+ "name": "recursive",
973
957
  "allowNo": false,
974
958
  "type": "boolean"
975
959
  },
976
- "dangerously-ignore-dbl-underscore-schema-rule": {
977
- "hidden": true,
978
- "name": "dangerously-ignore-dbl-underscore-schema-rule",
960
+ "tag": {
961
+ "char": "t",
962
+ "description": "Version tag to bump target for bump (e.g. v2.10.0), defaults to the CLI version",
963
+ "name": "tag",
964
+ "hasDynamicHelp": false,
965
+ "multiple": false,
966
+ "type": "option"
967
+ },
968
+ "quiet": {
969
+ "char": "q",
970
+ "description": "Only output paths for updated packages",
971
+ "name": "quiet",
972
+ "allowNo": false,
973
+ "type": "boolean"
974
+ },
975
+ "dry": {
976
+ "char": "d",
977
+ "description": "Dry run, do not write changes to package.json files",
978
+ "name": "dry",
979
979
  "allowNo": false,
980
980
  "type": "boolean"
981
981
  }
982
982
  },
983
983
  "hasDynamicHelp": false,
984
984
  "hiddenAliases": [],
985
- "id": "app:upgrade",
985
+ "id": "bump",
986
986
  "pluginAlias": "@memberjunction/cli",
987
987
  "pluginName": "@memberjunction/cli",
988
988
  "pluginType": "core",
@@ -992,14 +992,14 @@
992
992
  "relativePath": [
993
993
  "dist",
994
994
  "commands",
995
- "app",
996
- "upgrade.js"
995
+ "bump",
996
+ "index.js"
997
997
  ]
998
998
  },
999
- "app:usage": {
999
+ "bump:usage": {
1000
1000
  "aliases": [],
1001
1001
  "args": {},
1002
- "description": "Show usage, flags, examples, and runtime hints for every `mj app` command.",
1002
+ "description": "Show usage, flags, examples, and runtime hints for every `mj bump` command.",
1003
1003
  "flags": {
1004
1004
  "format": {
1005
1005
  "description": "Output format. Defaults to text on a terminal and json when stdout is piped.",
@@ -1016,7 +1016,7 @@
1016
1016
  },
1017
1017
  "hasDynamicHelp": false,
1018
1018
  "hiddenAliases": [],
1019
- "id": "app:usage",
1019
+ "id": "bump:usage",
1020
1020
  "pluginAlias": "@memberjunction/cli",
1021
1021
  "pluginName": "@memberjunction/cli",
1022
1022
  "pluginType": "core",
@@ -1026,7 +1026,7 @@
1026
1026
  "relativePath": [
1027
1027
  "dist",
1028
1028
  "commands",
1029
- "app",
1029
+ "bump",
1030
1030
  "usage.js"
1031
1031
  ]
1032
1032
  },
@@ -6847,5 +6847,5 @@
6847
6847
  ]
6848
6848
  }
6849
6849
  },
6850
- "version": "6.1.0-edge.7"
6850
+ "version": "6.1.1"
6851
6851
  }