@memberjunction/codegen-lib 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/README.md +1 -1
- package/dist/Config/config.d.ts +132 -7
- package/dist/Config/config.d.ts.map +1 -1
- package/dist/Config/config.js +193 -15
- package/dist/Config/config.js.map +1 -1
- package/dist/Config/db-connection.d.ts +49 -7
- package/dist/Config/db-connection.d.ts.map +1 -1
- package/dist/Config/db-connection.js +87 -37
- package/dist/Config/db-connection.js.map +1 -1
- package/dist/Config/pg-connection.d.ts +58 -0
- package/dist/Config/pg-connection.d.ts.map +1 -0
- package/dist/Config/pg-connection.js +100 -0
- package/dist/Config/pg-connection.js.map +1 -0
- package/dist/Database/codeGenDatabaseProvider.d.ts +81 -1
- package/dist/Database/codeGenDatabaseProvider.d.ts.map +1 -1
- package/dist/Database/codeGenDatabaseProvider.js +45 -0
- package/dist/Database/codeGenDatabaseProvider.js.map +1 -1
- package/dist/Database/manage-metadata.d.ts +26 -1
- package/dist/Database/manage-metadata.d.ts.map +1 -1
- package/dist/Database/manage-metadata.js +101 -2
- package/dist/Database/manage-metadata.js.map +1 -1
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts +25 -1
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts.map +1 -1
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js +80 -6
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js.map +1 -1
- package/dist/Database/providers/postgresql/metadataSupportObjects.d.ts +24 -0
- package/dist/Database/providers/postgresql/metadataSupportObjects.d.ts.map +1 -0
- package/dist/Database/providers/postgresql/metadataSupportObjects.js +650 -0
- package/dist/Database/providers/postgresql/metadataSupportObjects.js.map +1 -0
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts +13 -1
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts.map +1 -1
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js +39 -3
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js.map +1 -1
- package/dist/Database/sql_codegen.d.ts.map +1 -1
- package/dist/Database/sql_codegen.js +12 -8
- package/dist/Database/sql_codegen.js.map +1 -1
- package/dist/Misc/action_subclasses_codegen.d.ts.map +1 -1
- package/dist/Misc/action_subclasses_codegen.js +3 -1
- package/dist/Misc/action_subclasses_codegen.js.map +1 -1
- package/dist/Misc/remote_operations_codegen.d.ts +54 -0
- package/dist/Misc/remote_operations_codegen.d.ts.map +1 -0
- package/dist/Misc/remote_operations_codegen.js +186 -0
- package/dist/Misc/remote_operations_codegen.js.map +1 -0
- package/dist/Misc/runCommand.d.ts.map +1 -1
- package/dist/Misc/runCommand.js +8 -3
- package/dist/Misc/runCommand.js.map +1 -1
- package/dist/Misc/status_logging.d.ts +2 -0
- package/dist/Misc/status_logging.d.ts.map +1 -1
- package/dist/Misc/status_logging.js +12 -1
- package/dist/Misc/status_logging.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins/index.d.ts +35 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +100 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/runCodeGen.d.ts +42 -25
- package/dist/runCodeGen.d.ts.map +1 -1
- package/dist/runCodeGen.js +140 -86
- package/dist/runCodeGen.js.map +1 -1
- package/package.json +32 -19
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { mkdirSync } from 'fs';
|
|
4
|
+
import { logError } from './status_logging.js';
|
|
5
|
+
/**
|
|
6
|
+
* Items imported into EVERY generated Remote Operation file that contains an AI/Default body, so an authored
|
|
7
|
+
* body can use them with no declaration — the RO analog of the Generated-Actions "System Libraries" set. The
|
|
8
|
+
* generation prompt (`remote-operation-generation.template.md`) advertises the same defaults, so the model
|
|
9
|
+
* never declares them. All are exported by `@memberjunction/core`.
|
|
10
|
+
*/
|
|
11
|
+
export const DEFAULT_REMOTE_OP_LIBRARY_ITEMS = ['RunView', 'Metadata', 'RunQuery'];
|
|
12
|
+
/**
|
|
13
|
+
* Generates the strongly-typed base class for each `MJ: Remote Operations` row — the CodeGen half of the
|
|
14
|
+
* Remote Operations primitive (the typed peer of generated entity subclasses). Each row becomes a subclass
|
|
15
|
+
* of `BaseRemotableOperation<TInput, TOutput>` whose `OperationKey`, `ExecutionMode`, `RequiredScope`,
|
|
16
|
+
* `RequiresSystemUser`, and `TInput`/`TOutput` interfaces are derived entirely from the metadata.
|
|
17
|
+
*
|
|
18
|
+
* Output shape depends on the operation's `GenerationType`:
|
|
19
|
+
* - **Manual** → a typed SHELL (no body, no `@RegisterClass`). A hand-authored server subclass extends this
|
|
20
|
+
* base, supplies `InternalExecute`, and registers under the key. The base provides the typed contract the
|
|
21
|
+
* browser imports (so it never pulls the server engine).
|
|
22
|
+
* - **AI / Default** (with `CodeApprovalStatus = 'Approved'` and non-empty `Code`) → a COMPLETE class:
|
|
23
|
+
* `@RegisterClass(BaseRemotableOperation, key)` plus an `InternalExecute` body emitted from `Code`. No
|
|
24
|
+
* hand-authored subclass is needed.
|
|
25
|
+
*
|
|
26
|
+
* Mirrors `ActionSubClassGeneratorBase` (the other "read a custom entity's rows → emit TypeScript" generator).
|
|
27
|
+
*/
|
|
28
|
+
export class RemoteOperationGeneratorBase {
|
|
29
|
+
/**
|
|
30
|
+
* Emits `remote_operations.ts` into `directory`, one typed base per Active operation.
|
|
31
|
+
* @param remoteOps All `MJ: Remote Operations` rows (any status; non-Active rows are skipped).
|
|
32
|
+
* @param directory The target output directory (resolved from the `RemoteOperations` output config).
|
|
33
|
+
*/
|
|
34
|
+
async generateRemoteOperations(remoteOps, directory) {
|
|
35
|
+
try {
|
|
36
|
+
const filePath = path.join(directory, 'remote_operations.ts');
|
|
37
|
+
// Active only, sorted by key for deterministic output (no git churn when nothing changed).
|
|
38
|
+
const active = remoteOps
|
|
39
|
+
.filter((o) => o.Status === 'Active')
|
|
40
|
+
.sort((a, b) => a.OperationKey.localeCompare(b.OperationKey));
|
|
41
|
+
const anyBody = active.some((o) => this.hasGeneratedBody(o));
|
|
42
|
+
const header = this.buildFileHeader(active, anyBody);
|
|
43
|
+
const typeDefs = this.collectTypeDefinitions(active);
|
|
44
|
+
const operations = active.map((o) => this.generateSingleOperation(o)).join('\n');
|
|
45
|
+
mkdirSync(directory, { recursive: true });
|
|
46
|
+
fs.writeFileSync(filePath, header + typeDefs + operations + '\n');
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
logError('Error generating remote operations', e);
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** True when the row carries an approved, generated body (so the emitted class is complete + registered). */
|
|
55
|
+
hasGeneratedBody(op) {
|
|
56
|
+
return ((op.GenerationType === 'AI' || op.GenerationType === 'Default') &&
|
|
57
|
+
op.CodeApprovalStatus === 'Approved' &&
|
|
58
|
+
!!op.Code &&
|
|
59
|
+
op.Code.trim().length > 0);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Emits every distinct Input/Output type definition ONCE (de-duped by content), as a shared block above
|
|
63
|
+
* the classes. Operations frequently share a type (e.g. the pause/resume/cancel control ops all use
|
|
64
|
+
* `ProcessRunControlInput`); emitting each op's definition inline would produce duplicate-identifier errors.
|
|
65
|
+
*/
|
|
66
|
+
collectTypeDefinitions(ops) {
|
|
67
|
+
const seen = new Set();
|
|
68
|
+
const blocks = [];
|
|
69
|
+
for (const op of ops) {
|
|
70
|
+
for (const def of [op.InputTypeDefinition, op.OutputTypeDefinition]) {
|
|
71
|
+
const trimmed = def?.trim();
|
|
72
|
+
if (trimmed && !seen.has(trimmed)) {
|
|
73
|
+
seen.add(trimmed);
|
|
74
|
+
blocks.push(trimmed);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return blocks.length ? blocks.join('\n\n') + '\n\n' : '';
|
|
79
|
+
}
|
|
80
|
+
/** Derives the TypeScript class name from the dotted key: `RecordProcess.RunNow` → `RecordProcessRunNowOperation`. */
|
|
81
|
+
operationClassName(operationKey) {
|
|
82
|
+
return (operationKey
|
|
83
|
+
.split('.')
|
|
84
|
+
.map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))
|
|
85
|
+
.join('') + 'Operation');
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The file header: banner + the aggregated import set. A Manual-only file imports just
|
|
89
|
+
* `BaseRemotableOperation`. A file containing any AI/Default body also imports the body essentials
|
|
90
|
+
* (`IMetadataProvider`, `UserInfo`, `RegisterClass`), the {@link DEFAULT_REMOTE_OP_LIBRARY_ITEMS}, and
|
|
91
|
+
* every library each authored body declared in its `LibrariesObject` (de-duped + merged across operations).
|
|
92
|
+
*/
|
|
93
|
+
buildFileHeader(ops, anyBody) {
|
|
94
|
+
// library (package) -> set of imported items
|
|
95
|
+
const imports = new Map();
|
|
96
|
+
const add = (library, items) => {
|
|
97
|
+
if (!library)
|
|
98
|
+
return;
|
|
99
|
+
const set = imports.get(library) ?? new Set();
|
|
100
|
+
for (const item of items) {
|
|
101
|
+
if (item)
|
|
102
|
+
set.add(item);
|
|
103
|
+
}
|
|
104
|
+
imports.set(library, set);
|
|
105
|
+
};
|
|
106
|
+
add('@memberjunction/core', ['BaseRemotableOperation']);
|
|
107
|
+
if (anyBody) {
|
|
108
|
+
add('@memberjunction/core', ['IMetadataProvider', 'UserInfo', ...DEFAULT_REMOTE_OP_LIBRARY_ITEMS]);
|
|
109
|
+
add('@memberjunction/global', ['RegisterClass']);
|
|
110
|
+
for (const op of ops) {
|
|
111
|
+
if (this.hasGeneratedBody(op)) {
|
|
112
|
+
for (const lib of op.LibrariesObject ?? []) {
|
|
113
|
+
add(lib.Library, lib.ItemsUsed ?? []);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// @memberjunction/core first, then the rest alphabetically — deterministic output across runs.
|
|
119
|
+
const importLines = [...imports.entries()]
|
|
120
|
+
.sort(([a], [b]) => (a === '@memberjunction/core' ? -1 : b === '@memberjunction/core' ? 1 : a.localeCompare(b)))
|
|
121
|
+
.map(([library, items]) => `import { ${[...items].sort().join(', ')} } from "${library}";`)
|
|
122
|
+
.join('\n');
|
|
123
|
+
return `/*************************************************
|
|
124
|
+
* GENERATED CODE - DO NOT MODIFY
|
|
125
|
+
* Generated by MemberJunction CodeGen — Remote Operation typed bases
|
|
126
|
+
*
|
|
127
|
+
* One typed base class per "MJ: Remote Operations" row (a subclass of BaseRemotableOperation),
|
|
128
|
+
* emitted from the operation's metadata: OperationKey, ExecutionMode, RequiredScope, and the raw
|
|
129
|
+
* TypeScript Input/Output type definitions. GenerationType=Manual rows emit a typed SHELL — a
|
|
130
|
+
* hand-authored server subclass (registered via @RegisterClass) supplies the InternalExecute body.
|
|
131
|
+
* GenerationType=AI/Default rows with Approved Code emit a complete, registered class whose body imports
|
|
132
|
+
* the default libraries plus whatever it declared in its Libraries metadata.
|
|
133
|
+
**************************************************/
|
|
134
|
+
${importLines}
|
|
135
|
+
|
|
136
|
+
`;
|
|
137
|
+
}
|
|
138
|
+
/** Emits one operation: its TInput/TOutput type definitions (verbatim) followed by the class. */
|
|
139
|
+
generateSingleOperation(op) {
|
|
140
|
+
const className = this.operationClassName(op.OperationKey);
|
|
141
|
+
const inputName = op.InputTypeName || 'unknown';
|
|
142
|
+
const outputName = op.OutputTypeName || 'unknown';
|
|
143
|
+
const banner = `// ============================================================\n` +
|
|
144
|
+
`// ${op.OperationKey} — ${op.Name}\n` +
|
|
145
|
+
`// ============================================================`;
|
|
146
|
+
const jsdoc = ` * ${op.Name}${op.Description ? '\n * ' + op.Description.replace(/\n/g, '\n * ') : ''}`;
|
|
147
|
+
const members = this.buildMembers(op);
|
|
148
|
+
if (this.hasGeneratedBody(op)) {
|
|
149
|
+
const body = op.Code.trim().replace(/\n/g, '\n ');
|
|
150
|
+
return `${banner}
|
|
151
|
+
/**
|
|
152
|
+
${jsdoc}
|
|
153
|
+
* GenerationType=${op.GenerationType} — body emitted from approved Code (no hand-authored subclass needed).
|
|
154
|
+
*/
|
|
155
|
+
@RegisterClass(BaseRemotableOperation, ${JSON.stringify(op.OperationKey)})
|
|
156
|
+
export class ${className} extends BaseRemotableOperation<${inputName}, ${outputName}> {
|
|
157
|
+
${members}
|
|
158
|
+
|
|
159
|
+
protected async InternalExecute(input: ${inputName}, provider: IMetadataProvider, user: UserInfo): Promise<${outputName}> {
|
|
160
|
+
${body}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
`;
|
|
164
|
+
}
|
|
165
|
+
// Manual (or not-yet-approved) → typed shell; a hand-authored subclass supplies the body + @RegisterClass.
|
|
166
|
+
return `${banner}
|
|
167
|
+
/**
|
|
168
|
+
${jsdoc}
|
|
169
|
+
* GenerationType=${op.GenerationType} — the server body is supplied by a hand-authored subclass registered
|
|
170
|
+
* under '${op.OperationKey}'. This generated base provides the typed contract only (client-safe).
|
|
171
|
+
*/
|
|
172
|
+
export class ${className} extends BaseRemotableOperation<${inputName}, ${outputName}> {
|
|
173
|
+
${members}
|
|
174
|
+
}
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
/** The readonly members common to every operation class, derived from the metadata columns. */
|
|
178
|
+
buildMembers(op) {
|
|
179
|
+
const execMode = op.ExecutionMode === 'LongRunning' ? "'LongRunning'" : "'Sync'";
|
|
180
|
+
const scopeLine = op.RequiredScope ? `\n public readonly RequiredScope = ${JSON.stringify(op.RequiredScope)};` : '';
|
|
181
|
+
return (` public readonly OperationKey = ${JSON.stringify(op.OperationKey)};\n` +
|
|
182
|
+
` public readonly ExecutionMode = ${execMode} as const;${scopeLine}\n` +
|
|
183
|
+
` public readonly RequiresSystemUser = ${op.RequiresSystemUser ? 'true' : 'false'};`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=remote_operations_codegen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote_operations_codegen.js","sourceRoot":"","sources":["../../src/Misc/remote_operations_codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runCommand.d.ts","sourceRoot":"","sources":["../../src/Misc/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"runCommand.d.ts","sourceRoot":"","sources":["../../src/Misc/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAMxE,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAA;AAED;;GAEG;AACH,qBAAa,eAAe;IACb,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA6BvE,UAAU,CAAC,OAAO,EAAE,WAAW,GAAI,OAAO,CAAC,sBAAsB,CAAC;CAsGhF"}
|
package/dist/Misc/runCommand.js
CHANGED
|
@@ -16,8 +16,13 @@ export class RunCommandsBase {
|
|
|
16
16
|
results.push(await this.runCommand(command));
|
|
17
17
|
}
|
|
18
18
|
catch (e) {
|
|
19
|
-
//
|
|
20
|
-
|
|
19
|
+
// A failed command (non-zero exit / spawn error) rejects. Record it as a
|
|
20
|
+
// failed result instead of dropping it — so callers can detect and report
|
|
21
|
+
// the failure, and `results` stays index-aligned with `commands`. We still
|
|
22
|
+
// don't rethrow, so the remaining commands continue to run.
|
|
23
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
24
|
+
logError(message);
|
|
25
|
+
results.push({ output: '', error: message, success: false, elapsedTime: 0 });
|
|
21
26
|
}
|
|
22
27
|
}
|
|
23
28
|
return results;
|
|
@@ -83,7 +88,7 @@ export class RunCommandsBase {
|
|
|
83
88
|
});
|
|
84
89
|
if (command.timeout && command.timeout > 0) {
|
|
85
90
|
const { timeout } = command;
|
|
86
|
-
const timeoutPromise = new Promise((resolve
|
|
91
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
87
92
|
setTimeout(() => {
|
|
88
93
|
const elapsedTime = new Date().getTime() - startTime.getTime();
|
|
89
94
|
if (!cp.killed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../src/Misc/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../src/Misc/runCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { SeverityType } from '@memberjunction/core';
|
|
2
|
+
/** Redirect the CodeGen spinner to {@link stream} (e.g. stderr in JSON mode). */
|
|
3
|
+
export declare function setCodeGenSpinnerStream(stream: NodeJS.WriteStream): void;
|
|
2
4
|
/**
|
|
3
5
|
* Base class for logging, you can sub-class this class to create your own logger and override the logError and logStatus methods if desired.
|
|
4
6
|
* The default behavior in the base class is to use the LogError/LogStatus functions from the @memberjunction/core package to log to the console and to a log file if configured in the config.json file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status_logging.d.ts","sourceRoot":"","sources":["../../src/Misc/status_logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,YAAY,EAA2C,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"status_logging.d.ts","sourceRoot":"","sources":["../../src/Misc/status_logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,YAAY,EAA2C,MAAM,sBAAsB,CAAA;AAajH,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAExE;AAED;;;;;;;GAOG;AACH,qBAAa,UAAU;IACpB,OAAO,CAAC,QAAQ,CAAa;IAC7B,oFAAoF;IACpF,OAAO,CAAC,mBAAmB,CAAc;IACzC,kFAAkF;IAClF,OAAO,CAAC,aAAa,CAAa;IAClC,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAA+B;IAElD,OAAO,KAAK,SAAS,GAGpB;IAED,OAAO,CAAC,aAAa;IAMrB,iFAAiF;IACjF,OAAO,CAAC,aAAa;IAIrB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAcjB,qDAAqD;IACrD,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACI,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgB1C;;;OAGG;IACI,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgB3C;;OAEG;IACI,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAe7C;;OAEG;IACI,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAe1C;;OAEG;IACI,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAe1C;;OAEG;IACI,WAAW,IAAI,IAAI;IAU1B;;;;OAIG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAOvE;;;;OAIG;IACI,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAOxE;;;;;;OAMG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAO3F,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAWxE,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAgBvE;AAKD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAEvD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAEzD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAExD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,UAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAEzG;AAGD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
|
@@ -3,6 +3,17 @@ import { LogError, LogStatus, SeverityType, FormatFileMessage, FormatConsoleMess
|
|
|
3
3
|
import { MJGlobal } from "@memberjunction/global";
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import ora from 'ora-classic';
|
|
6
|
+
/**
|
|
7
|
+
* Output stream the CodeGen spinner writes to. Defaults to stdout for normal
|
|
8
|
+
* human runs. The pluggable CLI (`mj codegen --format=json`) redirects this to
|
|
9
|
+
* stderr via {@link setCodeGenSpinnerStream} so stdout carries only the
|
|
10
|
+
* machine-readable result.
|
|
11
|
+
*/
|
|
12
|
+
let _spinnerStream = process.stdout;
|
|
13
|
+
/** Redirect the CodeGen spinner to {@link stream} (e.g. stderr in JSON mode). */
|
|
14
|
+
export function setCodeGenSpinnerStream(stream) {
|
|
15
|
+
_spinnerStream = stream;
|
|
16
|
+
}
|
|
6
17
|
/**
|
|
7
18
|
* Base class for logging, you can sub-class this class to create your own logger and override the logError and logStatus methods if desired.
|
|
8
19
|
* The default behavior in the base class is to use the LogError/LogStatus functions from the @memberjunction/core package to log to the console and to a log file if configured in the config.json file.
|
|
@@ -27,7 +38,7 @@ export class LoggerBase {
|
|
|
27
38
|
}
|
|
28
39
|
ensureSpinner() {
|
|
29
40
|
if (!this.isVerbose && !this._spinner) {
|
|
30
|
-
this._spinner = ora();
|
|
41
|
+
this._spinner = ora({ stream: _spinnerStream });
|
|
31
42
|
}
|
|
32
43
|
}
|
|
33
44
|
/** Format an elapsed duration in ms as a compact seconds string, e.g. "3.2s". */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status_logging.js","sourceRoot":"","sources":["../../src/Misc/status_logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACjH,OAAO,EAAE,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AACjE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,OAAO,UAAU;IAAvB;QACW,aAAQ,GAAQ,IAAI,CAAC;QAC7B,oFAAoF;QAC5E,wBAAmB,GAAW,EAAE,CAAC;QACzC,kFAAkF;QAC1E,kBAAa,GAAW,CAAC,CAAC;QAClC,+EAA+E;QACvE,gBAAW,GAA0B,IAAI,CAAC;IAyNrD,CAAC;IAvNE,IAAY,SAAS;QAClB,8EAA8E;QAC9E,OAAO,UAAU,EAAE,aAAa,IAAI,KAAK,CAAC;IAC7C,CAAC;IAEO,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"status_logging.js","sourceRoot":"","sources":["../../src/Misc/status_logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACjH,OAAO,EAAE,QAAQ,EAAiB,MAAM,wBAAwB,CAAC;AACjE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAE9B;;;;;GAKG;AACH,IAAI,cAAc,GAAuB,OAAO,CAAC,MAAM,CAAC;AAExD,iFAAiF;AACjF,MAAM,UAAU,uBAAuB,CAAC,MAA0B;IAC/D,cAAc,GAAG,MAAM,CAAC;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,UAAU;IAAvB;QACW,aAAQ,GAAQ,IAAI,CAAC;QAC7B,oFAAoF;QAC5E,wBAAmB,GAAW,EAAE,CAAC;QACzC,kFAAkF;QAC1E,kBAAa,GAAW,CAAC,CAAC;QAClC,+EAA+E;QACvE,gBAAW,GAA0B,IAAI,CAAC;IAyNrD,CAAC;IAvNE,IAAY,SAAS;QAClB,8EAA8E;QAC9E,OAAO,UAAU,EAAE,aAAa,IAAI,KAAK,CAAC;IAC7C,CAAC;IAEO,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACnD,CAAC;IACJ,CAAC;IAED,iFAAiF;IACzE,aAAa,CAAC,EAAU;QAC7B,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACK,SAAS;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;gBACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpE,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,KAAK,OAAO,GAAG,CAAC;gBACnE,CAAC;YACJ,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC;QAC9B,CAAC;IACJ,CAAC;IAED,qDAAqD;IAC7C,QAAQ;QACb,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,OAAe;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;gBACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACL,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACL,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,OAAe;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;gBACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC;gBAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACL,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACL,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,OAAgB;QACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBAClB,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC/B,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,KAAK,OAAO,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,OAAgB;QAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBAClB,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC/B,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,OAAgB;QAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBAClB,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,WAAW;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;QACJ,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,OAAe,EAAE,QAAsB,EAAE,GAAG,IAAW;QACpE,MAAM,cAAc,GAAW,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvE,MAAM,WAAW,GAAW,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,OAAe,EAAE,QAAsB,EAAE,GAAG,IAAW;QACrE,MAAM,cAAc,GAAW,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvE,MAAM,WAAW,GAAW,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACI,UAAU,CAAC,OAAe,EAAE,QAAsB,EAAE,OAAgB,EAAE,GAAG,IAAW;QACxF,MAAM,cAAc,GAAW,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvE,MAAM,WAAW,GAAW,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;IAES,YAAY,CAAC,OAAe,EAAE,OAAgB,EAAE,GAAG,IAAW;QACrE,oDAAoD;QACpD,IAAI,UAAU,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC;YAC/D,IAAI,OAAO,EAAC,CAAC;gBACV,QAAQ,CAAC,OAAO,EAAE,IAAK,EAAE,GAAG,IAAI,CAAC,CAAC;YACrC,CAAC;iBACG,CAAC;gBACF,SAAS,CAAC,OAAO,EAAE,IAAK,EAAE,GAAG,IAAI,CAAC,CAAC;YACtC,CAAC;QACJ,CAAC;IACJ,CAAC;IACS,SAAS,CAAC,OAAe,EAAE,OAAgB,EAAE,GAAG,IAAW;QAClE,IAAI,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YAC5B,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;gBACxH,QAAQ,CAAC,wCAAwC,EAAE,IAAK,EAAE,GAAG,IAAI,CAAC,CAAC;YACtE,CAAC;iBACK,CAAC;gBACJ,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACpF,IAAI,OAAO,EAAC,CAAC;oBACV,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;gBACpC,CAAC;qBACG,CAAC;oBACF,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;gBACrC,CAAC;YACJ,CAAC;QACJ,CAAC;IACJ,CAAC;CACH;AAED,kGAAkG;AAClG,MAAM,OAAO,GAAe,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAa,UAAU,CAAE,CAAC;AAEnG;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAG,IAAW;IACrD,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,GAAG,IAAW;IACvD,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,GAAG,IAAW;IACtD,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,QAAsB,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,IAAW;IAChG,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,YAAY,CAAC,OAAe;IACzC,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC1C,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC5C,OAAO,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAgB;IACzC,OAAO,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAgB;IACzC,OAAO,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,WAAW;IACxB,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;AAChC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -50,6 +50,7 @@ export * from './Database/sql_codegen.js';
|
|
|
50
50
|
export * from './Database/sql.js';
|
|
51
51
|
export * from './Misc/entity_subclasses_codegen.js';
|
|
52
52
|
export * from './Misc/action_subclasses_codegen.js';
|
|
53
|
+
export * from './Misc/remote_operations_codegen.js';
|
|
53
54
|
export * from './Misc/graphql_server_codegen.js';
|
|
54
55
|
export * from './Angular/angular-codegen.js';
|
|
55
56
|
export * from './Angular/related-entity-components.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AAGtC,cAAc,oCAAoC,CAAA;AAClD,cAAc,yDAAyD,CAAA;AACvE,cAAc,2DAA2D,CAAA;AACzE,cAAc,2DAA2D,CAAA;AACzE,cAAc,6DAA6D,CAAA;AAC3E,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAG9B,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAA;AAG7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,qDAAqD,CAAC;AACpE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,yBAAyB,CAAA;AAGvC,cAAc,+CAA+C,CAAA;AAG7D,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,2CAA2C,CAAA;AAGzD,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AAGtC,cAAc,oCAAoC,CAAA;AAClD,cAAc,yDAAyD,CAAA;AACvE,cAAc,2DAA2D,CAAA;AACzE,cAAc,2DAA2D,CAAA;AACzE,cAAc,6DAA6D,CAAA;AAC3E,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAG9B,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAA;AAG7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,qDAAqD,CAAC;AACpE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,yBAAyB,CAAA;AAGvC,cAAc,+CAA+C,CAAA;AAG7D,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,2CAA2C,CAAA;AAGzD,cAAc,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -53,6 +53,7 @@ export * from './Database/sql.js';
|
|
|
53
53
|
// Code generation exports
|
|
54
54
|
export * from './Misc/entity_subclasses_codegen.js';
|
|
55
55
|
export * from './Misc/action_subclasses_codegen.js';
|
|
56
|
+
export * from './Misc/remote_operations_codegen.js';
|
|
56
57
|
export * from './Misc/graphql_server_codegen.js';
|
|
57
58
|
// Angular exports
|
|
58
59
|
export * from './Angular/angular-codegen.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AAEtC,mBAAmB;AACnB,cAAc,oCAAoC,CAAA;AAClD,cAAc,yDAAyD,CAAA;AACvE,cAAc,2DAA2D,CAAA;AACzE,cAAc,2DAA2D,CAAA;AACzE,cAAc,6DAA6D,CAAA;AAC3E,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAE9B,0BAA0B;AAC1B,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAA;AAE7C,kBAAkB;AAClB,cAAc,2BAA2B,CAAA;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,qDAAqD,CAAC;AACpE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6CAA6C,CAAC;AAE5D,kBAAkB;AAClB,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,yBAAyB,CAAA;AAEvC,sBAAsB;AACtB,cAAc,+CAA+C,CAAA;AAE7D,uBAAuB;AACvB,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,2CAA2C,CAAA;AAEzD,cAAc;AACd,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AAEtC,mBAAmB;AACnB,cAAc,oCAAoC,CAAA;AAClD,cAAc,yDAAyD,CAAA;AACvE,cAAc,2DAA2D,CAAA;AACzE,cAAc,2DAA2D,CAAA;AACzE,cAAc,6DAA6D,CAAA;AAC3E,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAE9B,0BAA0B;AAC1B,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAA;AAE7C,kBAAkB;AAClB,cAAc,2BAA2B,CAAA;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,qDAAqD,CAAC;AACpE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6CAA6C,CAAC;AAE5D,kBAAkB;AAClB,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,yBAAyB,CAAA;AAEvC,sBAAsB;AACtB,cAAc,+CAA+C,CAAA;AAE7D,uBAAuB;AACvB,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,2CAA2C,CAAA;AAEzD,cAAc;AACd,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pluggable `mj codegen` command (plan §3/§5).
|
|
3
|
+
*
|
|
4
|
+
* Lives behind the `@memberjunction/codegen-lib/plugins` subpath so loading it
|
|
5
|
+
* for oclif manifest generation or `mj usage` enumeration does NOT pull in the
|
|
6
|
+
* heavy CodeGen pipeline (which side-effect-imports ~1,400 class registrations).
|
|
7
|
+
* The pipeline is dynamic-imported inside `Execute()`.
|
|
8
|
+
*
|
|
9
|
+
* Stdio discipline (plan D2): no direct `ora`/`console`. In JSON/MD mode the
|
|
10
|
+
* CodeGen spinner is redirected to stderr so stdout carries only the result.
|
|
11
|
+
*/
|
|
12
|
+
import { type Interfaces } from '@oclif/core';
|
|
13
|
+
import { BaseCLIPlugin, type MJCLIResult, type PluginUsage } from '@memberjunction/cli-core';
|
|
14
|
+
export declare class CodeGenPlugin extends BaseCLIPlugin {
|
|
15
|
+
static description: string;
|
|
16
|
+
static examples: {
|
|
17
|
+
command: string;
|
|
18
|
+
description: string;
|
|
19
|
+
}[];
|
|
20
|
+
static flags: {
|
|
21
|
+
skipdb: Interfaces.BooleanFlag<boolean>;
|
|
22
|
+
skipfiles: Interfaces.BooleanFlag<boolean>;
|
|
23
|
+
'force-advanced-gen': Interfaces.BooleanFlag<boolean>;
|
|
24
|
+
};
|
|
25
|
+
static Usage: PluginUsage;
|
|
26
|
+
protected Execute(): Promise<MJCLIResult>;
|
|
27
|
+
/**
|
|
28
|
+
* CodeGen leaves DB connections/pools open; force-exit so the CLI terminates
|
|
29
|
+
* cleanly (mirrors the original `Run()` which called process.exit).
|
|
30
|
+
*/
|
|
31
|
+
protected Cleanup(result: MJCLIResult): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
/** Tree-shaking / dynamic-load anchor — referenced by the CLI plugin loader. */
|
|
34
|
+
export declare function LoadCodeGenPlugins(): void;
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAU7F,qBACa,aAAc,SAAQ,aAAa;IAC9C,MAAM,CAAC,WAAW,SAQqD;IAEvE,MAAM,CAAC,QAAQ;;;QAIb;IAEF,MAAM,CAAC,KAAK;;;;MAUV;IAEF,MAAM,CAAC,KAAK,EAAE,WAAW,CAcvB;cAEc,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAiC/C;;;OAGG;cACa,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5D;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Pluggable `mj codegen` command (plan §3/§5).
|
|
9
|
+
*
|
|
10
|
+
* Lives behind the `@memberjunction/codegen-lib/plugins` subpath so loading it
|
|
11
|
+
* for oclif manifest generation or `mj usage` enumeration does NOT pull in the
|
|
12
|
+
* heavy CodeGen pipeline (which side-effect-imports ~1,400 class registrations).
|
|
13
|
+
* The pipeline is dynamic-imported inside `Execute()`.
|
|
14
|
+
*
|
|
15
|
+
* Stdio discipline (plan D2): no direct `ora`/`console`. In JSON/MD mode the
|
|
16
|
+
* CodeGen spinner is redirected to stderr so stdout carries only the result.
|
|
17
|
+
*/
|
|
18
|
+
import { Flags } from '@oclif/core';
|
|
19
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
20
|
+
import { BaseCLIPlugin } from '@memberjunction/cli-core';
|
|
21
|
+
let CodeGenPlugin = class CodeGenPlugin extends BaseCLIPlugin {
|
|
22
|
+
static { this.description = `Run the full MemberJunction code generation pipeline.
|
|
23
|
+
|
|
24
|
+
Analyzes your database schema, updates MemberJunction metadata, and generates
|
|
25
|
+
synchronized code across the stack: SQL objects, TypeScript entities, Angular
|
|
26
|
+
forms, GraphQL resolvers, Action subclasses, and DB schema JSON.
|
|
27
|
+
|
|
28
|
+
Use --skipdb to regenerate code from existing metadata only; --skipfiles to run
|
|
29
|
+
database-side operations only. --force-advanced-gen re-runs the LLM-driven
|
|
30
|
+
advanced generation for ALL entities (bypasses changed-entity scoping).`; }
|
|
31
|
+
static { this.examples = [
|
|
32
|
+
{ command: '<%= config.bin %> <%= command.id %>', description: 'Run the full code generation pipeline' },
|
|
33
|
+
{ command: '<%= config.bin %> <%= command.id %> --skipdb', description: 'Regenerate code files without touching the database' },
|
|
34
|
+
{ command: '<%= config.bin %> <%= command.id %> --format=json', description: 'Emit a machine-readable result for an agent' },
|
|
35
|
+
]; }
|
|
36
|
+
static { this.flags = {
|
|
37
|
+
skipdb: Flags.boolean({
|
|
38
|
+
description: 'Skip database operations. Only regenerate TypeScript entities, Angular components, and GraphQL resolvers from existing metadata.',
|
|
39
|
+
}),
|
|
40
|
+
skipfiles: Flags.boolean({
|
|
41
|
+
description: 'Skip file-generation operations. Only run database-side operations (metadata sync, SQL object generation).',
|
|
42
|
+
}),
|
|
43
|
+
'force-advanced-gen': Flags.boolean({
|
|
44
|
+
description: 'Bypass entity scoping in Pass 2 and force advanced generation to re-run for all entities.',
|
|
45
|
+
}),
|
|
46
|
+
}; }
|
|
47
|
+
static { this.Usage = {
|
|
48
|
+
domain: 'codegen',
|
|
49
|
+
command: 'codegen',
|
|
50
|
+
summary: 'Regenerate entities, SQL, and Angular forms from the database schema.',
|
|
51
|
+
description: 'Runs the full CodeGen pipeline. Scales with entity count — a full run is far slower than a single-entity change. Use --skipdb/--skipfiles to run only one half.',
|
|
52
|
+
flags: [
|
|
53
|
+
{ name: '--skipdb', type: 'boolean', description: 'Regenerate code from existing metadata only (no DB operations)' },
|
|
54
|
+
{ name: '--skipfiles', type: 'boolean', description: 'Run DB-side operations only (no code files)' },
|
|
55
|
+
{ name: '--force-advanced-gen', type: 'boolean', description: 'Re-run advanced generation for all entities' },
|
|
56
|
+
{ name: '--format', type: 'text|json|md', description: 'Output format (json for machine-readable result)' },
|
|
57
|
+
],
|
|
58
|
+
examples: ['mj codegen', 'mj codegen --skipdb', 'mj codegen --format=json'],
|
|
59
|
+
runtime: { class: 'slow', typicalSeconds: 45, note: 'scales with entity count; full run far slower than a single-entity change' },
|
|
60
|
+
}; }
|
|
61
|
+
async Execute() {
|
|
62
|
+
const flags = this.GetFlags();
|
|
63
|
+
const codegen = await import('../index.js');
|
|
64
|
+
const { runMemberJunctionCodeGenerationWithResult, initializeConfig, configInfo, setCodeGenSpinnerStream, } = codegen;
|
|
65
|
+
// JSON/MD: keep stdout clean for the result by sending the spinner to stderr.
|
|
66
|
+
if (this.Host.Format !== 'text') {
|
|
67
|
+
setCodeGenSpinnerStream(process.stderr);
|
|
68
|
+
}
|
|
69
|
+
initializeConfig(process.cwd());
|
|
70
|
+
// --force-advanced-gen bypasses Pass 2 scoping by toggling the existing
|
|
71
|
+
// forceRegeneration.enabled config flag (honored by both sql_codegen.ts and
|
|
72
|
+
// manage-metadata.ts), giving a uniform "process all entities" override.
|
|
73
|
+
if (flags['force-advanced-gen']) {
|
|
74
|
+
if (!configInfo.forceRegeneration) {
|
|
75
|
+
configInfo.forceRegeneration = { enabled: true };
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
configInfo.forceRegeneration.enabled = true;
|
|
79
|
+
}
|
|
80
|
+
this.Host.Log('--force-advanced-gen: bypassing entity scoping; advanced generation will re-run for all entities.');
|
|
81
|
+
}
|
|
82
|
+
return runMemberJunctionCodeGenerationWithResult(flags.skipdb, flags.skipfiles);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* CodeGen leaves DB connections/pools open; force-exit so the CLI terminates
|
|
86
|
+
* cleanly (mirrors the original `Run()` which called process.exit).
|
|
87
|
+
*/
|
|
88
|
+
async Cleanup(result) {
|
|
89
|
+
process.exit(result.success ? 0 : 1);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
CodeGenPlugin = __decorate([
|
|
93
|
+
RegisterClass(BaseCLIPlugin, 'codegen')
|
|
94
|
+
], CodeGenPlugin);
|
|
95
|
+
export { CodeGenPlugin };
|
|
96
|
+
/** Tree-shaking / dynamic-load anchor — referenced by the CLI plugin loader. */
|
|
97
|
+
export function LoadCodeGenPlugins() {
|
|
98
|
+
// no-op; importing this module triggers the @RegisterClass decorator above.
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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"}
|
package/dist/runCodeGen.d.ts
CHANGED
|
@@ -6,41 +6,44 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Supports both SQL Server and PostgreSQL database platforms via the dbPlatform configuration.
|
|
8
8
|
*/
|
|
9
|
+
import { CommandInfo } from './Config/config.js';
|
|
9
10
|
import * as MJ from '@memberjunction/core';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
11
|
+
import { CommandExecutionResult } from './Misc/runCommand.js';
|
|
12
|
+
import { CodeGenConnection, DataSourceResult as ProviderDataSourceResult } from './Database/codeGenDatabaseProvider.js';
|
|
13
|
+
import { UserInfo } from '@memberjunction/core';
|
|
14
|
+
import type { MJCLIResult } from '@memberjunction/cli-core';
|
|
12
15
|
import '@memberjunction/server-bootstrap-lite/mj-class-registrations';
|
|
13
|
-
|
|
14
|
-
* Result from setupDataSource() providing both the data provider
|
|
15
|
-
* and a CodeGenConnection for database operations.
|
|
16
|
-
*/
|
|
17
|
-
export interface DataSourceResult {
|
|
18
|
-
/** The configured data provider (SQL Server or PostgreSQL) */
|
|
19
|
-
provider: IMetadataProvider;
|
|
20
|
-
/** Database-agnostic connection for CodeGen operations */
|
|
21
|
-
connection: CodeGenConnection;
|
|
22
|
-
/** The current user loaded from the user cache */
|
|
23
|
-
currentUser: UserInfo;
|
|
24
|
-
/** Connection info string for display */
|
|
25
|
-
connectionInfo: string;
|
|
26
|
-
}
|
|
16
|
+
type DataSourceResult = ProviderDataSourceResult;
|
|
27
17
|
/**
|
|
28
18
|
* Main orchestrator class for the MemberJunction code generation process.
|
|
29
19
|
*/
|
|
30
20
|
export declare class RunCodeGenBase {
|
|
31
21
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
22
|
+
* BEFORE/AFTER external command failures captured during a pipeline run, so the
|
|
23
|
+
* structured result can fail (success=false, non-zero exit) AND report which
|
|
24
|
+
* command failed — instead of the legacy log-only path that exited 0 regardless.
|
|
34
25
|
*/
|
|
35
|
-
|
|
26
|
+
protected commandFailures: Array<{
|
|
27
|
+
context: string;
|
|
28
|
+
message: string;
|
|
29
|
+
}>;
|
|
30
|
+
/** Record any failed entries from a BEFORE/AFTER command batch, paired by index. */
|
|
31
|
+
protected recordCommandFailures(phase: string, cmds: CommandInfo[], results: CommandExecutionResult[]): void;
|
|
36
32
|
/**
|
|
37
|
-
*
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
*
|
|
33
|
+
* Acquire the per-platform data source for a CodeGen run.
|
|
34
|
+
*
|
|
35
|
+
* Dispatches via `MJGlobal.Instance.ClassFactory.CreateInstance(CodeGenDatabaseProvider, platform)`
|
|
36
|
+
* — the same factory pattern used elsewhere in CodeGen (see e.g.
|
|
37
|
+
* `manage-metadata.ts`'s `get dbProvider()`). The actual pool / provider /
|
|
38
|
+
* user-loading lives on the resolved subclass's `SetupDataSource()`
|
|
39
|
+
* method, so adding a new platform means registering a new provider, not
|
|
40
|
+
* touching the orchestrator.
|
|
41
|
+
*
|
|
42
|
+
* Throws when no provider is registered for `configInfo.dbPlatform` —
|
|
43
|
+
* `ClassFactory.CreateInstance` returns the abstract base on a missed
|
|
44
|
+
* lookup, so we disambiguate by constructor identity.
|
|
42
45
|
*/
|
|
43
|
-
|
|
46
|
+
setupDataSource(): Promise<DataSourceResult>;
|
|
44
47
|
/**
|
|
45
48
|
* Main entry point for the complete code generation process.
|
|
46
49
|
*/
|
|
@@ -51,6 +54,12 @@ export declare class RunCodeGenBase {
|
|
|
51
54
|
*/
|
|
52
55
|
RunInProcess(dataSource: DataSourceResult, skipDatabaseGeneration?: boolean, workingDirectory?: string, skipFileGeneration?: boolean): Promise<boolean>;
|
|
53
56
|
Run(skipDatabaseGeneration?: boolean, skipFileGeneration?: boolean): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Run CodeGen and return a structured {@link MJCLIResult} instead of calling
|
|
59
|
+
* `process.exit()`. Used by the pluggable `mj codegen` plugin so the runtime
|
|
60
|
+
* host can render the result per `--format` before the CLI exits.
|
|
61
|
+
*/
|
|
62
|
+
RunWithResult(skipDatabaseGeneration?: boolean, skipFileGeneration?: boolean): Promise<MJCLIResult>;
|
|
54
63
|
/**
|
|
55
64
|
* Core CodeGen pipeline logic shared by Run() and RunInProcess().
|
|
56
65
|
* Accepts an existing data source — does NOT create connections or call process.exit().
|
|
@@ -71,4 +80,12 @@ export declare class RunCodeGenBase {
|
|
|
71
80
|
* Convenience function to run the MemberJunction code generation process.
|
|
72
81
|
*/
|
|
73
82
|
export declare function runMemberJunctionCodeGeneration(skipDatabaseGeneration?: boolean, skipFileGeneration?: boolean): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Like {@link runMemberJunctionCodeGeneration}, but returns a structured
|
|
85
|
+
* {@link MJCLIResult} instead of calling `process.exit()`. The pluggable
|
|
86
|
+
* `mj codegen` plugin uses this so the runtime host can emit the result
|
|
87
|
+
* (e.g. `--format=json`) before the CLI exits.
|
|
88
|
+
*/
|
|
89
|
+
export declare function runMemberJunctionCodeGenerationWithResult(skipDatabaseGeneration?: boolean, skipFileGeneration?: boolean): Promise<MJCLIResult>;
|
|
90
|
+
export {};
|
|
74
91
|
//# sourceMappingURL=runCodeGen.d.ts.map
|