@memberjunction/cli 5.41.0 → 5.43.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/commands/app/install.d.ts.map +1 -1
- package/dist/commands/app/install.js +2 -1
- package/dist/commands/app/install.js.map +1 -1
- package/dist/commands/bundle/index.d.ts +1 -0
- package/dist/commands/bundle/index.d.ts.map +1 -1
- package/dist/commands/bundle/index.js +7 -1
- package/dist/commands/bundle/index.js.map +1 -1
- package/dist/commands/codegen/index.d.ts +6 -16
- package/dist/commands/codegen/index.d.ts.map +1 -1
- package/dist/commands/codegen/index.js +6 -90
- package/dist/commands/codegen/index.js.map +1 -1
- package/dist/commands/codegen/manifest.d.ts +41 -10
- package/dist/commands/codegen/manifest.d.ts.map +1 -1
- package/dist/commands/codegen/manifest.js +66 -0
- package/dist/commands/codegen/manifest.js.map +1 -1
- package/dist/commands/codegen/usage.d.ts +7 -0
- package/dist/commands/codegen/usage.d.ts.map +1 -0
- package/dist/commands/codegen/usage.js +10 -0
- package/dist/commands/codegen/usage.js.map +1 -0
- package/dist/commands/install/claude.d.ts +35 -0
- package/dist/commands/install/claude.d.ts.map +1 -0
- package/dist/commands/install/claude.js +108 -0
- package/dist/commands/install/claude.js.map +1 -0
- package/dist/commands/install/index.d.ts +1 -0
- package/dist/commands/install/index.d.ts.map +1 -1
- package/dist/commands/install/index.js +4 -0
- package/dist/commands/install/index.js.map +1 -1
- package/dist/commands/migrate/convert.d.ts +59 -12
- package/dist/commands/migrate/convert.d.ts.map +1 -1
- package/dist/commands/migrate/convert.js +294 -21
- package/dist/commands/migrate/convert.js.map +1 -1
- package/dist/commands/migrate/rebake.d.ts +41 -0
- package/dist/commands/migrate/rebake.d.ts.map +1 -0
- package/dist/commands/migrate/rebake.js +193 -0
- package/dist/commands/migrate/rebake.js.map +1 -0
- package/dist/commands/plugin/add.d.ts +18 -0
- package/dist/commands/plugin/add.d.ts.map +1 -0
- package/dist/commands/plugin/add.js +53 -0
- package/dist/commands/plugin/add.js.map +1 -0
- package/dist/commands/sync/pull.d.ts +6 -26
- package/dist/commands/sync/pull.d.ts.map +1 -1
- package/dist/commands/sync/pull.js +6 -281
- package/dist/commands/sync/pull.js.map +1 -1
- package/dist/commands/sync/push.d.ts +8 -19
- package/dist/commands/sync/push.d.ts.map +1 -1
- package/dist/commands/sync/push.js +8 -328
- package/dist/commands/sync/push.js.map +1 -1
- package/dist/commands/sync/usage.d.ts +7 -0
- package/dist/commands/sync/usage.d.ts.map +1 -0
- package/dist/commands/sync/usage.js +10 -0
- package/dist/commands/sync/usage.js.map +1 -0
- package/dist/commands/update/claude.d.ts +37 -0
- package/dist/commands/update/claude.d.ts.map +1 -0
- package/dist/commands/update/claude.js +90 -0
- package/dist/commands/update/claude.js.map +1 -0
- package/dist/commands/usage.d.ts +17 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +29 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/config.d.ts +41 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -4
- package/dist/config.js.map +1 -1
- package/dist/hooks/prerun.d.ts.map +1 -1
- package/dist/hooks/prerun.js +49 -8
- package/dist/hooks/prerun.js.map +1 -1
- package/dist/lib/claude-pack/ManagedBlockEditor.d.ts +40 -0
- package/dist/lib/claude-pack/ManagedBlockEditor.d.ts.map +1 -0
- package/dist/lib/claude-pack/ManagedBlockEditor.js +127 -0
- package/dist/lib/claude-pack/ManagedBlockEditor.js.map +1 -0
- package/dist/lib/claude-pack/PackFetcher.d.ts +86 -0
- package/dist/lib/claude-pack/PackFetcher.d.ts.map +1 -0
- package/dist/lib/claude-pack/PackFetcher.js +163 -0
- package/dist/lib/claude-pack/PackFetcher.js.map +1 -0
- package/dist/lib/claude-pack/PackInstaller.d.ts +62 -0
- package/dist/lib/claude-pack/PackInstaller.d.ts.map +1 -0
- package/dist/lib/claude-pack/PackInstaller.js +197 -0
- package/dist/lib/claude-pack/PackInstaller.js.map +1 -0
- package/dist/lib/claude-pack/PackMerger.d.ts +61 -0
- package/dist/lib/claude-pack/PackMerger.d.ts.map +1 -0
- package/dist/lib/claude-pack/PackMerger.js +315 -0
- package/dist/lib/claude-pack/PackMerger.js.map +1 -0
- package/dist/lib/claude-pack/PackOutputFormatter.d.ts +29 -0
- package/dist/lib/claude-pack/PackOutputFormatter.d.ts.map +1 -0
- package/dist/lib/claude-pack/PackOutputFormatter.js +82 -0
- package/dist/lib/claude-pack/PackOutputFormatter.js.map +1 -0
- package/dist/lib/claude-pack/PackPaths.d.ts +80 -0
- package/dist/lib/claude-pack/PackPaths.d.ts.map +1 -0
- package/dist/lib/claude-pack/PackPaths.js +182 -0
- package/dist/lib/claude-pack/PackPaths.js.map +1 -0
- package/dist/lib/claude-pack/PackTypes.d.ts +124 -0
- package/dist/lib/claude-pack/PackTypes.d.ts.map +1 -0
- package/dist/lib/claude-pack/PackTypes.js +32 -0
- package/dist/lib/claude-pack/PackTypes.js.map +1 -0
- package/dist/lib/claude-pack/SettingsMerger.d.ts +47 -0
- package/dist/lib/claude-pack/SettingsMerger.d.ts.map +1 -0
- package/dist/lib/claude-pack/SettingsMerger.js +163 -0
- package/dist/lib/claude-pack/SettingsMerger.js.map +1 -0
- package/dist/lib/cli-plugins.d.ts +16 -0
- package/dist/lib/cli-plugins.d.ts.map +1 -0
- package/dist/lib/cli-plugins.js +26 -0
- package/dist/lib/cli-plugins.js.map +1 -0
- package/dist/lib/domain-usage-command.d.ts +16 -0
- package/dist/lib/domain-usage-command.d.ts.map +1 -0
- package/dist/lib/domain-usage-command.js +23 -0
- package/dist/lib/domain-usage-command.js.map +1 -0
- package/dist/lib/usage-render.d.ts +14 -0
- package/dist/lib/usage-render.d.ts.map +1 -0
- package/dist/lib/usage-render.js +64 -0
- package/dist/lib/usage-render.js.map +1 -0
- package/dist/light-commands.d.ts.map +1 -1
- package/dist/light-commands.js +11 -0
- package/dist/light-commands.js.map +1 -1
- package/dist/utils/open-app-context.d.ts +5 -5
- package/dist/utils/open-app-context.d.ts.map +1 -1
- package/dist/utils/open-app-context.js +44 -48
- package/dist/utils/open-app-context.js.map +1 -1
- package/oclif.manifest.json +821 -134
- package/package.json +17 -15
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
import { CLIPluginRegistry } from '@memberjunction/cli-core';
|
|
3
|
+
import { loadAllCliPlugins } from './cli-plugins.js';
|
|
4
|
+
import { emitUsage, renderDomainDetail } from './usage-render.js';
|
|
5
|
+
/**
|
|
6
|
+
* Shared base for tier-2 usage commands (`mj <domain> usage`). Concrete
|
|
7
|
+
* subclasses under `commands/<domain>/usage.ts` set {@link Domain}. Returns every
|
|
8
|
+
* command in that domain — summary, flags, examples, runtime — composed from the
|
|
9
|
+
* registered plugins' `static Usage` (plan §5).
|
|
10
|
+
*/
|
|
11
|
+
export class DomainUsageCommand extends Command {
|
|
12
|
+
static { this.flags = {
|
|
13
|
+
format: Flags.string({ options: ['text', 'json', 'md'], default: 'text', description: 'Output format' }),
|
|
14
|
+
}; }
|
|
15
|
+
async run() {
|
|
16
|
+
const { flags } = await this.parse(this.constructor);
|
|
17
|
+
await loadAllCliPlugins(process.cwd());
|
|
18
|
+
const detail = CLIPluginRegistry.BuildDomainDetail(this.Domain);
|
|
19
|
+
const result = CLIPluginRegistry.AsResult(`${this.Domain}:usage`, { domain: detail.domain, commands: detail.commands });
|
|
20
|
+
emitUsage((m) => this.log(m), flags.format, result, renderDomainDetail(detail));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=domain-usage-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-usage-command.js","sourceRoot":"","sources":["../../src/lib/domain-usage-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAElE;;;;;GAKG;AACH,MAAM,OAAgB,kBAAmB,SAAQ,OAAO;aAC/C,UAAK,GAAG;QACb,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;KACzG,CAAC;IAKF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAwC,CAAC,CAAC;QAClF,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxH,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAgB,EAAE,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5F,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type MJCLIResult, type UsageDomainDetail, type UsageDomainMap } from '@memberjunction/cli-core';
|
|
2
|
+
type LogFn = (message: string) => void;
|
|
3
|
+
/**
|
|
4
|
+
* Serializes a usage {@link MJCLIResult} per `--format`, via the same
|
|
5
|
+
* {@link SerializeResult} the runtime host uses (single source of truth). For
|
|
6
|
+
* `text`, the caller supplies pre-rendered human lines.
|
|
7
|
+
*/
|
|
8
|
+
export declare function emitUsage(log: LogFn, format: string, result: MJCLIResult, textLines: string[]): void;
|
|
9
|
+
/** Human-readable tier-1 domain map. */
|
|
10
|
+
export declare function renderDomainMap(map: UsageDomainMap): string[];
|
|
11
|
+
/** Human-readable tier-2 domain detail. */
|
|
12
|
+
export declare function renderDomainDetail(detail: UsageDomainDetail): string[];
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=usage-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-render.d.ts","sourceRoot":"","sources":["../../src/lib/usage-render.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,WAAW,EAAuC,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/J,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvC;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAMpG;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAa7D;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAsBtE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { SerializeResult } from '@memberjunction/cli-core';
|
|
3
|
+
/**
|
|
4
|
+
* Serializes a usage {@link MJCLIResult} per `--format`, via the same
|
|
5
|
+
* {@link SerializeResult} the runtime host uses (single source of truth). For
|
|
6
|
+
* `text`, the caller supplies pre-rendered human lines.
|
|
7
|
+
*/
|
|
8
|
+
export function emitUsage(log, format, result, textLines) {
|
|
9
|
+
if (format === 'json' || format === 'md') {
|
|
10
|
+
log(SerializeResult(result, format));
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
textLines.forEach((line) => log(line));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Human-readable tier-1 domain map. */
|
|
17
|
+
export function renderDomainMap(map) {
|
|
18
|
+
const lines = [];
|
|
19
|
+
lines.push(chalk.bold('\nmj — command domains'));
|
|
20
|
+
lines.push(chalk.gray(map.guidance) + '\n');
|
|
21
|
+
const pad = Math.max(...map.domains.map((d) => d.domain.length), 4);
|
|
22
|
+
for (const d of map.domains) {
|
|
23
|
+
const name = chalk.cyan(d.domain.padEnd(pad));
|
|
24
|
+
const rt = chalk.gray(`[${d.runtime}]`);
|
|
25
|
+
lines.push(` ${name} ${d.summary} ${rt}`);
|
|
26
|
+
}
|
|
27
|
+
lines.push('');
|
|
28
|
+
lines.push(chalk.gray('Next: `mj <domain> usage` for that domain\'s commands, flags, and timeouts.'));
|
|
29
|
+
return lines;
|
|
30
|
+
}
|
|
31
|
+
/** Human-readable tier-2 domain detail. */
|
|
32
|
+
export function renderDomainDetail(detail) {
|
|
33
|
+
const lines = [];
|
|
34
|
+
lines.push(chalk.bold(`\nmj ${detail.domain} — commands`));
|
|
35
|
+
if (detail.commands.length === 0) {
|
|
36
|
+
lines.push(chalk.gray(` (no commands registered for domain "${detail.domain}")`));
|
|
37
|
+
return lines;
|
|
38
|
+
}
|
|
39
|
+
for (const cmd of detail.commands) {
|
|
40
|
+
lines.push('');
|
|
41
|
+
lines.push(` ${chalk.cyan(cmd.command)} — ${cmd.summary}`);
|
|
42
|
+
if (cmd.description)
|
|
43
|
+
lines.push(chalk.gray(` ${cmd.description}`));
|
|
44
|
+
lines.push(` ${chalk.gray('runtime:')} ${formatRuntime(cmd)}`);
|
|
45
|
+
if (cmd.flags?.length) {
|
|
46
|
+
lines.push(` ${chalk.gray('flags:')}`);
|
|
47
|
+
for (const f of cmd.flags)
|
|
48
|
+
lines.push(` ${chalk.yellow(f.name)} (${f.type}) — ${f.description}`);
|
|
49
|
+
}
|
|
50
|
+
if (cmd.examples?.length) {
|
|
51
|
+
lines.push(` ${chalk.gray('examples:')}`);
|
|
52
|
+
for (const e of cmd.examples)
|
|
53
|
+
lines.push(` ${e}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return lines;
|
|
57
|
+
}
|
|
58
|
+
function formatRuntime(cmd) {
|
|
59
|
+
const r = cmd.runtime;
|
|
60
|
+
const secs = r.typicalSeconds ? `~${r.typicalSeconds}s` : '';
|
|
61
|
+
const note = r.note ? ` — ${r.note}` : '';
|
|
62
|
+
return `${r.class}${secs ? ` (${secs})` : ''}${note}`;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=usage-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-render.js","sourceRoot":"","sources":["../../src/lib/usage-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-commands.d.ts","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"light-commands.d.ts","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CA4D7C,CAAC"}
|
package/dist/light-commands.js
CHANGED
|
@@ -17,6 +17,13 @@ export const LIGHT_COMMANDS = new Set([
|
|
|
17
17
|
// Built-in oclif plugins
|
|
18
18
|
'version',
|
|
19
19
|
'help',
|
|
20
|
+
// Progressive-disclosure usage (tier 1 + tier 2) — composes plugin static
|
|
21
|
+
// metadata only; no bootstrap needed. Plugin entry points are light.
|
|
22
|
+
'usage',
|
|
23
|
+
'sync usage',
|
|
24
|
+
'codegen usage',
|
|
25
|
+
// Plugin registry editing — just writes mj-cli-plugins.json
|
|
26
|
+
'plugin add',
|
|
20
27
|
// Bump - uses zod, fast-glob, fs only
|
|
21
28
|
'bump',
|
|
22
29
|
// Database commands - use @memberjunction/skyway-core + config only
|
|
@@ -38,6 +45,10 @@ export const LIGHT_COMMANDS = new Set([
|
|
|
38
45
|
// SQL conversion commands - use @memberjunction/sql-converter + sqlglot-ts only
|
|
39
46
|
'sql-convert',
|
|
40
47
|
'sql-audit',
|
|
48
|
+
// Claude pack commands - use only node stdlib + the lib/claude-pack/ helpers;
|
|
49
|
+
// no MJ runtime / bootstrap needed.
|
|
50
|
+
'install:claude',
|
|
51
|
+
'update:claude',
|
|
41
52
|
// CodeGen manifest - uses @memberjunction/codegen-lib for AST scanning only, no bootstrap needed.
|
|
42
53
|
// Must be light to break the circular dependency: server-bootstrap-lite's prebuild calls
|
|
43
54
|
// `mj codegen manifest`, but bootstrap-lite must be built before MJCLI's prerun can import it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-commands.js","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,yBAAyB;IACzB,SAAS;IACT,MAAM;IAEN,sCAAsC;IACtC,MAAM;IAEN,oEAAoE;IACpE,OAAO;IACP,SAAS;IACT,iBAAiB;IACjB,gBAAgB;IAEhB,qFAAqF;IACrF,SAAS;IAET,6EAA6E;IAC7E,QAAQ;IAER,4FAA4F;IAC5F,QAAQ;IAER,kEAAkE;IAClE,IAAI;IACJ,UAAU;IACV,MAAM;IACN,OAAO;IAEP,gFAAgF;IAChF,aAAa;IACb,WAAW;IAEX,kGAAkG;IAClG,yFAAyF;IACzF,+FAA+F;IAC/F,kBAAkB;IAElB,0DAA0D;IAC1D,YAAY;IACZ,eAAe;IACf,cAAc;IACd,6BAA6B;IAC7B,wBAAwB;IACxB,aAAa;IACb,cAAc;CACf,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"light-commands.js","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,yBAAyB;IACzB,SAAS;IACT,MAAM;IAEN,0EAA0E;IAC1E,qEAAqE;IACrE,OAAO;IACP,YAAY;IACZ,eAAe;IAEf,4DAA4D;IAC5D,YAAY;IAEZ,sCAAsC;IACtC,MAAM;IAEN,oEAAoE;IACpE,OAAO;IACP,SAAS;IACT,iBAAiB;IACjB,gBAAgB;IAEhB,qFAAqF;IACrF,SAAS;IAET,6EAA6E;IAC7E,QAAQ;IAER,4FAA4F;IAC5F,QAAQ;IAER,kEAAkE;IAClE,IAAI;IACJ,UAAU;IACV,MAAM;IACN,OAAO;IAEP,gFAAgF;IAChF,aAAa;IACb,WAAW;IAEX,8EAA8E;IAC9E,oCAAoC;IACpC,gBAAgB;IAChB,eAAe;IAEf,kGAAkG;IAClG,yFAAyF;IACzF,+FAA+F;IAC/F,kBAAkB;IAElB,0DAA0D;IAC1D,YAAY;IACZ,eAAe;IACf,cAAc;IACd,6BAA6B;IAC7B,wBAAwB;IACxB,aAAa;IACb,cAAc;CACf,CAAC,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { SQLServerDataProvider } from '@memberjunction/sqlserver-dataprovider';
|
|
1
|
+
import { UserInfo, type DatabaseProviderBase } from '@memberjunction/core';
|
|
3
2
|
/**
|
|
4
|
-
* Closes the shared connection
|
|
3
|
+
* Closes the shared connection(s). Call on CLI exit for cleanup. Delegates to
|
|
4
|
+
* MetadataSync's `cleanupProvider`, which tears down whichever pool (mssql or pg)
|
|
5
|
+
* was opened and resets the shared provider singleton.
|
|
5
6
|
*/
|
|
6
7
|
export declare function closeConnectionPool(): Promise<void>;
|
|
7
8
|
/**
|
|
@@ -22,7 +23,7 @@ export declare function buildOrchestratorContext(command: {
|
|
|
22
23
|
*/
|
|
23
24
|
interface OrchestratorContextShape {
|
|
24
25
|
ContextUser: UserInfo;
|
|
25
|
-
DatabaseProvider:
|
|
26
|
+
DatabaseProvider: DatabaseProviderBase;
|
|
26
27
|
DatabaseConfig: {
|
|
27
28
|
Host: string;
|
|
28
29
|
Port: number;
|
|
@@ -48,7 +49,6 @@ interface OrchestratorContextShape {
|
|
|
48
49
|
Path: string;
|
|
49
50
|
Role: 'server' | 'client';
|
|
50
51
|
}>;
|
|
51
|
-
ClientBootstrapSubpath?: string;
|
|
52
52
|
MJCoreSchema?: string;
|
|
53
53
|
MigrationPlaceholders?: Record<string, string>;
|
|
54
54
|
Callbacks?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-app-context.d.ts","sourceRoot":"","sources":["../../src/utils/open-app-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"open-app-context.d.ts","sourceRoot":"","sources":["../../src/utils/open-app-context.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AA6C3E;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzD;AAqCD;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAG1D;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE;IAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAA;CAAE,EAC5E,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,wBAAwB,CAAC,CAyCnC;AAED;;;GAGG;AACH,UAAU,wBAAwB;IAChC,WAAW,EAAE,QAAQ,CAAC;IACtB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,aAAa,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,eAAe,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IACxE,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,CAAC,CAAC;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACtD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAClD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC,CAAC;CACH"}
|
|
@@ -2,65 +2,60 @@
|
|
|
2
2
|
* Shared context builder for MJ Open App CLI commands.
|
|
3
3
|
*
|
|
4
4
|
* Constructs the OrchestratorContext needed by the engine's install/upgrade/remove
|
|
5
|
-
* functions, using the MJ entity framework (Metadata, RunView, BaseEntity)
|
|
6
|
-
*
|
|
5
|
+
* functions, using the MJ entity framework (Metadata, RunView, BaseEntity). The
|
|
6
|
+
* backing data provider is db-generic and is bootstrapped by MetadataSync's shared
|
|
7
|
+
* provider lifecycle (`initializeProvider`), which selects SQL Server (default) or
|
|
8
|
+
* PostgreSQL from the configured platform — so `mj app …` and `mj sync` share ONE
|
|
9
|
+
* provider-init implementation, and the engine's platform-aware install/migration
|
|
10
|
+
* paths receive a provider whose `Dialect.PlatformKey` matches the real database.
|
|
7
11
|
*/
|
|
8
|
-
import sql from 'mssql';
|
|
9
12
|
import ora from 'ora-classic';
|
|
10
13
|
import { createRequire } from 'node:module';
|
|
11
|
-
import {
|
|
14
|
+
import { UserCache } from '@memberjunction/sqlserver-dataprovider';
|
|
15
|
+
import { initializeProvider, cleanupProvider } from '@memberjunction/metadata-sync';
|
|
12
16
|
import { getValidatedConfig } from '../config.js';
|
|
13
17
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
14
|
-
// Provider initialization
|
|
18
|
+
// Provider initialization — delegated to MetadataSync's shared, db-generic
|
|
19
|
+
// provider lifecycle (lazy singleton; SQL Server or PostgreSQL). It builds +
|
|
20
|
+
// registers the provider and, on both platforms, populates UserCache (PG via its
|
|
21
|
+
// vwUsers/vwUserRoles bootstrap) — so getSystemUserInfo() reads UserCache uniformly.
|
|
15
22
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
16
|
-
let _pool = null;
|
|
17
|
-
let _provider = null;
|
|
18
|
-
let _initPromise = null;
|
|
19
23
|
/**
|
|
20
|
-
* Initializes the MJ
|
|
21
|
-
*
|
|
24
|
+
* Initializes (or returns the already-initialized) MJ data provider for the
|
|
25
|
+
* configured platform, by adapting MJCLI's config to the `MJConfig` shape that
|
|
26
|
+
* MetadataSync's shared `initializeProvider` consumes.
|
|
22
27
|
*/
|
|
23
28
|
async function ensureProviderInitialized() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
await _pool.connect();
|
|
47
|
-
const providerConfig = new SQLServerProviderConfigData(_pool, config.coreSchema ?? '__mj');
|
|
48
|
-
_provider = await setupSQLServerClient(providerConfig);
|
|
49
|
-
return _provider;
|
|
50
|
-
})();
|
|
51
|
-
const provider = await _initPromise;
|
|
52
|
-
return { pool: _pool, provider };
|
|
29
|
+
return initializeProvider(toMJConfig(getValidatedConfig()));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Adapts MJCLI's `ResolvedConfig` to MetadataSync's `MJConfig`. The two carry the
|
|
33
|
+
* same connection facts under different names (codeGenLogin/coreSchema vs
|
|
34
|
+
* dbUsername/mjCoreSchema). `dbTrustServerCertificate` and `dbEncrypt` are passed as
|
|
35
|
+
* the Y/N strings MetadataSync reads; encrypt preserves the prior behavior of
|
|
36
|
+
* auto-detecting Azure SQL only (DB_ENCRYPT is not honored for local SQL Server,
|
|
37
|
+
* where encrypt-on without a trusted cert would break the connection).
|
|
38
|
+
*/
|
|
39
|
+
function toMJConfig(config) {
|
|
40
|
+
return {
|
|
41
|
+
dbPlatform: config.dbPlatform,
|
|
42
|
+
dbHost: config.dbHost,
|
|
43
|
+
dbPort: config.dbPort,
|
|
44
|
+
dbDatabase: config.dbDatabase,
|
|
45
|
+
dbUsername: config.codeGenLogin,
|
|
46
|
+
dbPassword: config.codeGenPassword,
|
|
47
|
+
dbEncrypt: config.dbHost.includes('.database.windows.net') ? 'Y' : 'N',
|
|
48
|
+
dbTrustServerCertificate: config.dbTrustServerCertificate ? 'Y' : 'N',
|
|
49
|
+
mjCoreSchema: config.coreSchema ?? '__mj',
|
|
50
|
+
};
|
|
53
51
|
}
|
|
54
52
|
/**
|
|
55
|
-
* Closes the shared connection
|
|
53
|
+
* Closes the shared connection(s). Call on CLI exit for cleanup. Delegates to
|
|
54
|
+
* MetadataSync's `cleanupProvider`, which tears down whichever pool (mssql or pg)
|
|
55
|
+
* was opened and resets the shared provider singleton.
|
|
56
56
|
*/
|
|
57
57
|
export async function closeConnectionPool() {
|
|
58
|
-
|
|
59
|
-
await _pool.close();
|
|
60
|
-
_pool = null;
|
|
61
|
-
}
|
|
62
|
-
_provider = null;
|
|
63
|
-
_initPromise = null;
|
|
58
|
+
await cleanupProvider();
|
|
64
59
|
}
|
|
65
60
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
66
61
|
// System User
|
|
@@ -70,6 +65,8 @@ export async function closeConnectionPool() {
|
|
|
70
65
|
* Falls back to Owner user, then first active user if no system user exists.
|
|
71
66
|
*/
|
|
72
67
|
function getSystemUserInfo() {
|
|
68
|
+
// UserCache is populated by initializeProvider on BOTH platforms (PG via its
|
|
69
|
+
// vwUsers/vwUserRoles bootstrap), so the same lookup works regardless of backend.
|
|
73
70
|
const sysUser = UserCache.Instance.GetSystemUser();
|
|
74
71
|
if (sysUser) {
|
|
75
72
|
return sysUser;
|
|
@@ -102,7 +99,7 @@ export async function buildContextUser() {
|
|
|
102
99
|
*/
|
|
103
100
|
export async function buildOrchestratorContext(command, verbose) {
|
|
104
101
|
const config = getValidatedConfig();
|
|
105
|
-
const
|
|
102
|
+
const provider = await ensureProviderInitialized();
|
|
106
103
|
const contextUser = getSystemUserInfo();
|
|
107
104
|
const spinner = verbose ? ora() : undefined;
|
|
108
105
|
return {
|
|
@@ -130,7 +127,6 @@ export async function buildOrchestratorContext(command, verbose) {
|
|
|
130
127
|
VersionStrategy: config.openApps?.versionStrategy,
|
|
131
128
|
// Zod infers object fields as optional; runtime schema validates they're present
|
|
132
129
|
AdditionalTargets: config.openApps?.additionalTargets,
|
|
133
|
-
ClientBootstrapSubpath: config.openApps?.clientBootstrapSubpath,
|
|
134
130
|
MJCoreSchema: config.coreSchema ?? '__mj',
|
|
135
131
|
MigrationPlaceholders: config.openApps?.migrationPlaceholders,
|
|
136
132
|
Callbacks: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-app-context.js","sourceRoot":"","sources":["../../src/utils/open-app-context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"open-app-context.js","sourceRoot":"","sources":["../../src/utils/open-app-context.ts"],"names":[],"mappings":"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"}
|