@memberjunction/codegen-lib 3.4.0 → 4.0.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.
Files changed (90) hide show
  1. package/README.md +11 -0
  2. package/dist/Angular/angular-codegen.d.ts +1 -1
  3. package/dist/Angular/angular-codegen.d.ts.map +1 -1
  4. package/dist/Angular/angular-codegen.js +80 -137
  5. package/dist/Angular/angular-codegen.js.map +1 -1
  6. package/dist/Angular/entity-data-grid-related-entity-component.d.ts +1 -1
  7. package/dist/Angular/entity-data-grid-related-entity-component.js +6 -9
  8. package/dist/Angular/entity-data-grid-related-entity-component.js.map +1 -1
  9. package/dist/Angular/join-grid-related-entity-component.d.ts +1 -1
  10. package/dist/Angular/join-grid-related-entity-component.js +8 -36
  11. package/dist/Angular/join-grid-related-entity-component.js.map +1 -1
  12. package/dist/Angular/related-entity-components.js +13 -79
  13. package/dist/Angular/related-entity-components.js.map +1 -1
  14. package/dist/Angular/timeline-related-entity-component.d.ts +1 -1
  15. package/dist/Angular/timeline-related-entity-component.js +14 -38
  16. package/dist/Angular/timeline-related-entity-component.js.map +1 -1
  17. package/dist/Angular/user-view-grid-related-entity-component.d.ts +43 -0
  18. package/dist/Angular/user-view-grid-related-entity-component.d.ts.map +1 -0
  19. package/dist/Angular/user-view-grid-related-entity-component.js +85 -0
  20. package/dist/Angular/user-view-grid-related-entity-component.js.map +1 -0
  21. package/dist/Config/config.js +161 -177
  22. package/dist/Config/config.js.map +1 -1
  23. package/dist/Config/db-connection.d.ts +1 -1
  24. package/dist/Config/db-connection.d.ts.map +1 -1
  25. package/dist/Config/db-connection.js +6 -33
  26. package/dist/Config/db-connection.js.map +1 -1
  27. package/dist/Database/dbSchema.js +28 -35
  28. package/dist/Database/dbSchema.js.map +1 -1
  29. package/dist/Database/manage-metadata.d.ts +3 -3
  30. package/dist/Database/manage-metadata.d.ts.map +1 -1
  31. package/dist/Database/manage-metadata.js +291 -319
  32. package/dist/Database/manage-metadata.js.map +1 -1
  33. package/dist/Database/reorder-columns.d.ts +1 -1
  34. package/dist/Database/reorder-columns.d.ts.map +1 -1
  35. package/dist/Database/reorder-columns.js +1 -5
  36. package/dist/Database/reorder-columns.js.map +1 -1
  37. package/dist/Database/sql.d.ts +1 -1
  38. package/dist/Database/sql.d.ts.map +1 -1
  39. package/dist/Database/sql.js +67 -98
  40. package/dist/Database/sql.js.map +1 -1
  41. package/dist/Database/sql_codegen.d.ts +2 -2
  42. package/dist/Database/sql_codegen.d.ts.map +1 -1
  43. package/dist/Database/sql_codegen.js +209 -237
  44. package/dist/Database/sql_codegen.js.map +1 -1
  45. package/dist/Manifest/GenerateClassRegistrationsManifest.d.ts +11 -0
  46. package/dist/Manifest/GenerateClassRegistrationsManifest.d.ts.map +1 -1
  47. package/dist/Manifest/GenerateClassRegistrationsManifest.js +43 -41
  48. package/dist/Manifest/GenerateClassRegistrationsManifest.js.map +1 -1
  49. package/dist/Misc/action_subclasses_codegen.d.ts.map +1 -1
  50. package/dist/Misc/action_subclasses_codegen.js +15 -26
  51. package/dist/Misc/action_subclasses_codegen.js.map +1 -1
  52. package/dist/Misc/advanced_generation.d.ts +1 -1
  53. package/dist/Misc/advanced_generation.js +34 -40
  54. package/dist/Misc/advanced_generation.js.map +1 -1
  55. package/dist/Misc/createNewUser.d.ts +1 -1
  56. package/dist/Misc/createNewUser.js +22 -26
  57. package/dist/Misc/createNewUser.js.map +1 -1
  58. package/dist/Misc/entity_subclasses_codegen.d.ts +2 -2
  59. package/dist/Misc/entity_subclasses_codegen.d.ts.map +1 -1
  60. package/dist/Misc/entity_subclasses_codegen.js +33 -40
  61. package/dist/Misc/entity_subclasses_codegen.js.map +1 -1
  62. package/dist/Misc/graphql_server_codegen.js +36 -41
  63. package/dist/Misc/graphql_server_codegen.js.map +1 -1
  64. package/dist/Misc/runCommand.d.ts +1 -1
  65. package/dist/Misc/runCommand.js +13 -20
  66. package/dist/Misc/runCommand.js.map +1 -1
  67. package/dist/Misc/sql_logging.d.ts +1 -1
  68. package/dist/Misc/sql_logging.d.ts.map +1 -1
  69. package/dist/Misc/sql_logging.js +21 -51
  70. package/dist/Misc/sql_logging.js.map +1 -1
  71. package/dist/Misc/status_logging.js +45 -60
  72. package/dist/Misc/status_logging.js.map +1 -1
  73. package/dist/Misc/system_integrity.d.ts +1 -1
  74. package/dist/Misc/system_integrity.d.ts.map +1 -1
  75. package/dist/Misc/system_integrity.js +12 -16
  76. package/dist/Misc/system_integrity.js.map +1 -1
  77. package/dist/Misc/temp_batch_file.js +15 -22
  78. package/dist/Misc/temp_batch_file.js.map +1 -1
  79. package/dist/Misc/util.d.ts.map +1 -1
  80. package/dist/Misc/util.js +17 -28
  81. package/dist/Misc/util.js.map +1 -1
  82. package/dist/index.d.ts +21 -21
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +21 -41
  85. package/dist/index.js.map +1 -1
  86. package/dist/runCodeGen.d.ts +1 -0
  87. package/dist/runCodeGen.d.ts.map +1 -1
  88. package/dist/runCodeGen.js +150 -178
  89. package/dist/runCodeGen.js.map +1 -1
  90. package/package.json +24 -22
@@ -1,59 +1,33 @@
1
- "use strict";
2
1
  /**
3
2
  * Main orchestrator for the MemberJunction code generation process.
4
3
  * Coordinates all aspects of code generation including database schema analysis,
5
4
  * metadata management, SQL generation, TypeScript entities, Angular components,
6
5
  * GraphQL resolvers, and more.
7
6
  */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.runMemberJunctionCodeGeneration = exports.RunCodeGenBase = void 0;
33
- const graphql_server_codegen_1 = require("./Misc/graphql_server_codegen");
34
- const sql_codegen_1 = require("./Database/sql_codegen");
35
- const entity_subclasses_codegen_1 = require("./Misc/entity_subclasses_codegen");
36
- const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
37
- const db_connection_1 = require("./Config/db-connection");
38
- const manage_metadata_1 = require("./Database/manage-metadata");
39
- const config_1 = require("./Config/config");
40
- const status_logging_1 = require("./Misc/status_logging");
41
- const MJ = __importStar(require("@memberjunction/core"));
42
- const runCommand_1 = require("./Misc/runCommand");
43
- const dbSchema_1 = require("./Database/dbSchema");
44
- const angular_codegen_1 = require("./Angular/angular-codegen");
45
- const sqlserver_dataprovider_2 = require("@memberjunction/sqlserver-dataprovider");
46
- const createNewUser_1 = require("./Misc/createNewUser");
47
- const global_1 = require("@memberjunction/global");
48
- const action_subclasses_codegen_1 = require("./Misc/action_subclasses_codegen");
49
- const sql_logging_1 = require("./Misc/sql_logging");
50
- const system_integrity_1 = require("./Misc/system_integrity");
51
- const actions_base_1 = require("@memberjunction/actions-base");
52
- const core_entities_server_1 = require("@memberjunction/core-entities-server");
53
- const aiengine_1 = require("@memberjunction/aiengine");
54
- (0, core_entities_server_1.LoadCoreEntitiesServerSubClasses)(); // Load the core entities server subclasses to ensure they are registered and not tree shaken
7
+ import { GraphQLServerGeneratorBase } from './Misc/graphql_server_codegen.js';
8
+ import { SQLCodeGenBase } from './Database/sql_codegen.js';
9
+ import { EntitySubClassGeneratorBase } from './Misc/entity_subclasses_codegen.js';
10
+ import { UserCache, setupSQLServerClient } from '@memberjunction/sqlserver-dataprovider';
11
+ import { MSSQLConnection, sqlConfig } from './Config/db-connection.js';
12
+ import { ManageMetadataBase } from './Database/manage-metadata.js';
13
+ import { outputDir, commands, mj_core_schema, configInfo, getSettingValue } from './Config/config.js';
14
+ import { logError, logWarning, startSpinner, updateSpinner, succeedSpinner, failSpinner, warnSpinner } from './Misc/status_logging.js';
15
+ import * as MJ from '@memberjunction/core';
16
+ import { RunCommandsBase } from './Misc/runCommand.js';
17
+ import { DBSchemaGeneratorBase } from './Database/dbSchema.js';
18
+ import { AngularClientGeneratorBase } from './Angular/angular-codegen.js';
19
+ import { SQLServerProviderConfigData } from '@memberjunction/sqlserver-dataprovider';
20
+ import { CreateNewUserBase } from './Misc/createNewUser.js';
21
+ import { MJGlobal } from '@memberjunction/global';
22
+ import { ActionSubClassGeneratorBase } from './Misc/action_subclasses_codegen.js';
23
+ import { SQLLogging } from './Misc/sql_logging.js';
24
+ import { SystemIntegrityBase } from './Misc/system_integrity.js';
25
+ import { ActionEngineBase } from '@memberjunction/actions-base';
26
+ import { AIEngine } from '@memberjunction/aiengine';
27
+ // Import pre-built MJ class registrations manifest (covers all @memberjunction/* packages)
28
+ import '@memberjunction/server-bootstrap-lite/mj-class-registrations';
55
29
  /** Extract core schema name from configuration */
56
- const { mjCoreSchema } = config_1.configInfo;
30
+ const { mjCoreSchema } = configInfo;
57
31
  /**
58
32
  * Main orchestrator class for the MemberJunction code generation process.
59
33
  *
@@ -82,7 +56,7 @@ const { mjCoreSchema } = config_1.configInfo;
82
56
  * await codeGen.Run(true); // Skip database operations
83
57
  * ```
84
58
  */
85
- class RunCodeGenBase {
59
+ export class RunCodeGenBase {
86
60
  /**
87
61
  * Sets up the SQL Server data source and initializes the MemberJunction core metadata.
88
62
  * This method establishes the database connection pool and configures the data provider
@@ -98,20 +72,20 @@ class RunCodeGenBase {
98
72
  /****************************************************************************************
99
73
  // First, setup the data source and make sure the metadata and related stuff for MJCore is initialized
100
74
  ****************************************************************************************/
101
- (0, status_logging_1.startSpinner)('Initializing database connection...');
102
- const pool = await (0, db_connection_1.MSSQLConnection)(); // get the MSSQL connection pool
103
- const config = new sqlserver_dataprovider_2.SQLServerProviderConfigData(pool, (0, config_1.mj_core_schema)());
104
- const sqlServerProvider = await (0, sqlserver_dataprovider_1.setupSQLServerClient)(config);
75
+ startSpinner('Initializing database connection...');
76
+ const pool = await MSSQLConnection(); // get the MSSQL connection pool
77
+ const config = new SQLServerProviderConfigData(pool, mj_core_schema());
78
+ const sqlServerProvider = await setupSQLServerClient(config);
105
79
  // Get connection details from the sqlConfig
106
- let connectionInfo = db_connection_1.sqlConfig.server;
107
- if (db_connection_1.sqlConfig.port) {
108
- connectionInfo += `:${db_connection_1.sqlConfig.port}`;
80
+ let connectionInfo = sqlConfig.server;
81
+ if (sqlConfig.port) {
82
+ connectionInfo += `:${sqlConfig.port}`;
109
83
  }
110
- if (db_connection_1.sqlConfig.options?.instanceName) {
111
- connectionInfo += `\\${db_connection_1.sqlConfig.options.instanceName}`;
84
+ if (sqlConfig.options?.instanceName) {
85
+ connectionInfo += `\\${sqlConfig.options.instanceName}`;
112
86
  }
113
- connectionInfo += `/${db_connection_1.sqlConfig.database}`;
114
- (0, status_logging_1.succeedSpinner)(`Database connection initialized: ${connectionInfo}`);
87
+ connectionInfo += `/${sqlConfig.database}`;
88
+ succeedSpinner(`Database connection initialized: ${connectionInfo}`);
115
89
  return sqlServerProvider;
116
90
  }
117
91
  /**
@@ -142,329 +116,328 @@ class RunCodeGenBase {
142
116
  async Run(skipDatabaseGeneration = false) {
143
117
  try {
144
118
  const startTime = new Date();
145
- (0, status_logging_1.startSpinner)(`Starting MemberJunction CodeGen @ ${startTime.toLocaleString()}`);
119
+ startSpinner(`Starting MemberJunction CodeGen @ ${startTime.toLocaleString()}`);
146
120
  const provider = await this.setupDataSource();
147
- (0, status_logging_1.updateSpinner)('Loading user cache and metadata...');
148
- const pool = await (0, db_connection_1.MSSQLConnection)();
149
- await sqlserver_dataprovider_1.UserCache.Instance.Refresh(pool);
150
- const userMatch = sqlserver_dataprovider_1.UserCache.Users.find((u) => u?.Type?.trim().toLowerCase() === 'owner');
151
- const currentUser = userMatch ? userMatch : sqlserver_dataprovider_1.UserCache.Users[0]; // if we don't find an Owner, use the first user in the cache
121
+ updateSpinner('Loading user cache and metadata...');
122
+ const pool = await MSSQLConnection();
123
+ await UserCache.Instance.Refresh(pool);
124
+ const userMatch = UserCache.Users.find((u) => u?.Type?.trim().toLowerCase() === 'owner');
125
+ const currentUser = userMatch ? userMatch : UserCache.Users[0]; // if we don't find an Owner, use the first user in the cache
152
126
  // get the entity metadata
153
127
  const md = new MJ.Metadata();
154
128
  if (md.Entities.length === 0) {
155
- (0, status_logging_1.failSpinner)('No entities found in metadata');
129
+ failSpinner('No entities found in metadata');
156
130
  process.exit(1);
157
131
  }
158
- (0, status_logging_1.succeedSpinner)(`Loaded ${md.Entities.length} entities from metadata`);
132
+ succeedSpinner(`Loaded ${md.Entities.length} entities from metadata`);
159
133
  // Initialize AIEngine for advanced generation features (needed for prompt metadata access)
160
- if (config_1.configInfo.advancedGeneration?.enableAdvancedGeneration) {
161
- (0, status_logging_1.startSpinner)('Initializing AI Engine for advanced generation...');
162
- await aiengine_1.AIEngine.Instance.Config(false, currentUser);
163
- (0, status_logging_1.succeedSpinner)('AI Engine initialized');
134
+ if (configInfo.advancedGeneration?.enableAdvancedGeneration) {
135
+ startSpinner('Initializing AI Engine for advanced generation...');
136
+ await AIEngine.Instance.Config(false, currentUser);
137
+ succeedSpinner('AI Engine initialized');
164
138
  }
165
- const runCommandsObject = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(runCommand_1.RunCommandsBase);
166
- const sqlCodeGenObject = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(sql_codegen_1.SQLCodeGenBase);
139
+ const runCommandsObject = MJGlobal.Instance.ClassFactory.CreateInstance(RunCommandsBase);
140
+ const sqlCodeGenObject = MJGlobal.Instance.ClassFactory.CreateInstance(SQLCodeGenBase);
167
141
  // check to see if the user wants to skip database generation via the config settings
168
- const skipDB = skipDatabaseGeneration || (0, config_1.getSettingValue)('skip_database_generation', false);
142
+ const skipDB = skipDatabaseGeneration || getSettingValue('skip_database_generation', false);
169
143
  if (!skipDB) {
170
- (0, status_logging_1.startSpinner)('Handling SQL Script Execution, Metadata Maintenance, and SQL Object Generation...');
171
- sql_logging_1.SQLLogging.initSQLLogging(); // initialize the SQL Logging functionality
144
+ startSpinner('Handling SQL Script Execution, Metadata Maintenance, and SQL Object Generation...');
145
+ SQLLogging.initSQLLogging(); // initialize the SQL Logging functionality
172
146
  /****************************************************************************************
173
147
  // STEP 0 --- Precursor Step execute any commands specified in the config file
174
148
  ****************************************************************************************/
175
- const beforeCommands = (0, config_1.commands)('BEFORE');
149
+ const beforeCommands = commands('BEFORE');
176
150
  if (beforeCommands && beforeCommands.length > 0) {
177
- (0, status_logging_1.updateSpinner)('Executing BEFORE commands...');
151
+ updateSpinner('Executing BEFORE commands...');
178
152
  const results = await runCommandsObject.runCommands(beforeCommands);
179
153
  if (results.some((r) => !r.success))
180
- (0, status_logging_1.logError)('ERROR running one or more BEFORE commands');
154
+ logError('ERROR running one or more BEFORE commands');
181
155
  }
182
156
  /****************************************************************************************
183
157
  // STEP 0.1 --- Execute any before SQL Scripts specified in the config file
184
158
  ****************************************************************************************/
185
- (0, status_logging_1.updateSpinner)('Executing before-all SQL Scripts...');
159
+ updateSpinner('Executing before-all SQL Scripts...');
186
160
  if (!(await sqlCodeGenObject.runCustomSQLScripts(pool, 'before-all')))
187
- (0, status_logging_1.logError)('ERROR running before-all SQL Scripts');
161
+ logError('ERROR running before-all SQL Scripts');
188
162
  /****************************************************************************************
189
163
  // STEP 0.2 --- Create a new user if there is newUserSetup info in the config file
190
164
  ****************************************************************************************/
191
- const newUserSetup = config_1.configInfo.newUserSetup;
165
+ const newUserSetup = configInfo.newUserSetup;
192
166
  if (newUserSetup) {
193
- (0, status_logging_1.updateSpinner)('Setting up new user...');
194
- const newUserObject = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(createNewUser_1.CreateNewUserBase);
167
+ updateSpinner('Setting up new user...');
168
+ const newUserObject = MJGlobal.Instance.ClassFactory.CreateInstance(CreateNewUserBase);
195
169
  const result = await newUserObject.createNewUser(newUserSetup);
196
170
  if (!result.Success) {
197
171
  if (result.Severity === 'error') {
198
- (0, status_logging_1.logError)('ERROR creating new user');
199
- (0, status_logging_1.logError)(' ' + result.Message);
172
+ logError('ERROR creating new user');
173
+ logError(' ' + result.Message);
200
174
  }
201
175
  else {
202
- (0, status_logging_1.logWarning)('Warning: (New User Setup) ' + result.Message);
176
+ logWarning('Warning: (New User Setup) ' + result.Message);
203
177
  }
204
178
  }
205
179
  }
206
180
  /****************************************************************************************
207
181
  // STEP 1 - Manage Metadata - including generating new metadata as required
208
182
  ****************************************************************************************/
209
- const manageMD = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(manage_metadata_1.ManageMetadataBase);
210
- (0, status_logging_1.updateSpinner)('Managing Metadata...');
183
+ const manageMD = MJGlobal.Instance.ClassFactory.CreateInstance(ManageMetadataBase);
184
+ updateSpinner('Managing Metadata...');
211
185
  const metadataSuccess = await manageMD.manageMetadata(pool, currentUser);
212
186
  if (!metadataSuccess) {
213
- (0, status_logging_1.failSpinner)('ERROR managing metadata');
187
+ failSpinner('ERROR managing metadata');
214
188
  }
215
189
  else {
216
190
  // now - we need to tell our metadata object to refresh itself
217
191
  await provider.Refresh();
218
- (0, status_logging_1.succeedSpinner)('Metadata management completed');
192
+ succeedSpinner('Metadata management completed');
219
193
  }
220
194
  /****************************************************************************************
221
195
  // STEP 2 - SQL Script Generation
222
196
  ****************************************************************************************/
223
- const sqlOutputDir = (0, config_1.outputDir)('SQL', true);
197
+ const sqlOutputDir = outputDir('SQL', true);
224
198
  if (sqlOutputDir) {
225
- (0, status_logging_1.startSpinner)('Managing SQL Scripts and Execution...');
199
+ startSpinner('Managing SQL Scripts and Execution...');
226
200
  const sqlSuccess = await sqlCodeGenObject.manageSQLScriptsAndExecution(pool, md.Entities, sqlOutputDir, currentUser);
227
201
  if (!sqlSuccess) {
228
- (0, status_logging_1.failSpinner)('Error managing SQL scripts and execution');
202
+ failSpinner('Error managing SQL scripts and execution');
229
203
  }
230
204
  else {
231
- (0, status_logging_1.succeedSpinner)('SQL scripts and execution completed');
205
+ succeedSpinner('SQL scripts and execution completed');
232
206
  }
233
207
  }
234
208
  else {
235
- (0, status_logging_1.warnSpinner)('SQL output directory NOT found in config file, skipping...');
209
+ warnSpinner('SQL output directory NOT found in config file, skipping...');
236
210
  }
237
211
  }
238
212
  else {
239
- (0, status_logging_1.warnSpinner)('Skipping database generation (skip_database_generation = true)');
213
+ warnSpinner('Skipping database generation (skip_database_generation = true)');
240
214
  // we skipped the database generation but we need to load generated code for validators from the database to ensure that we have them
241
215
  // ready for later use.
242
- const manageMD = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(manage_metadata_1.ManageMetadataBase);
243
- (0, status_logging_1.startSpinner)('Checking/Loading AI Generated Code from Metadata...');
216
+ const manageMD = MJGlobal.Instance.ClassFactory.CreateInstance(ManageMetadataBase);
217
+ startSpinner('Checking/Loading AI Generated Code from Metadata...');
244
218
  const metadataSuccess = await manageMD.loadGeneratedCode(pool, currentUser);
245
219
  if (!metadataSuccess) {
246
- (0, status_logging_1.failSpinner)('ERROR checking/loading AI Generated Code from Metadata');
220
+ failSpinner('ERROR checking/loading AI Generated Code from Metadata');
247
221
  return; // FATAL ERROR - we can't continue
248
222
  }
249
223
  else {
250
- (0, status_logging_1.succeedSpinner)('AI Generated Code loaded from Metadata');
224
+ succeedSpinner('AI Generated Code loaded from Metadata');
251
225
  }
252
226
  }
253
227
  const coreEntities = md.Entities.filter((e) => e.IncludeInAPI).filter((e) => e.SchemaName.trim().toLowerCase() === mjCoreSchema.trim().toLowerCase());
254
228
  const nonCoreEntities = md.Entities.filter((e) => e.IncludeInAPI).filter((e) => e.SchemaName.trim().toLowerCase() !== mjCoreSchema.trim().toLowerCase());
255
229
  // Check if we're in verbose mode to determine spinner behavior
256
- const isVerbose = config_1.configInfo?.verboseOutput ?? false;
230
+ const isVerbose = configInfo?.verboseOutput ?? false;
257
231
  if (!isVerbose) {
258
232
  // In non-verbose mode, start a single spinner for all TypeScript generation
259
- (0, status_logging_1.startSpinner)('Generating TypeScript code...');
233
+ startSpinner('Generating TypeScript code...');
260
234
  }
261
235
  /****************************************************************************************
262
236
  // STEP 3(a) - GraphQL Server Code Gen
263
237
  ****************************************************************************************/
264
- const graphQLCoreResolversOutputDir = (0, config_1.outputDir)('GraphQLCoreEntityResolvers', false);
238
+ const graphQLCoreResolversOutputDir = outputDir('GraphQLCoreEntityResolvers', false);
265
239
  if (graphQLCoreResolversOutputDir) {
266
240
  // generate the GraphQL server code
267
241
  if (isVerbose)
268
- (0, status_logging_1.startSpinner)('Generating CORE Entity GraphQL Resolver Code...');
269
- const graphQLGenerator = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(graphql_server_codegen_1.GraphQLServerGeneratorBase);
242
+ startSpinner('Generating CORE Entity GraphQL Resolver Code...');
243
+ const graphQLGenerator = MJGlobal.Instance.ClassFactory.CreateInstance(GraphQLServerGeneratorBase);
270
244
  if (!graphQLGenerator.generateGraphQLServerCode(coreEntities, graphQLCoreResolversOutputDir, '@memberjunction/core-entities', true)) {
271
- (0, status_logging_1.failSpinner)('Error generating GraphQL server code');
245
+ failSpinner('Error generating GraphQL server code');
272
246
  return;
273
247
  }
274
248
  else if (isVerbose) {
275
- (0, status_logging_1.succeedSpinner)('CORE Entity GraphQL Resolver Code generated');
249
+ succeedSpinner('CORE Entity GraphQL Resolver Code generated');
276
250
  }
277
251
  }
278
- const graphqlOutputDir = (0, config_1.outputDir)('GraphQLServer', true);
252
+ const graphqlOutputDir = outputDir('GraphQLServer', true);
279
253
  if (graphqlOutputDir) {
280
254
  // generate the GraphQL server code
281
255
  if (isVerbose)
282
- (0, status_logging_1.startSpinner)('Generating GraphQL Resolver Code...');
283
- const graphQLGenerator = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(graphql_server_codegen_1.GraphQLServerGeneratorBase);
284
- const entityPackageName = config_1.configInfo.entityPackageName || 'mj_generatedentities';
256
+ startSpinner('Generating GraphQL Resolver Code...');
257
+ const graphQLGenerator = MJGlobal.Instance.ClassFactory.CreateInstance(GraphQLServerGeneratorBase);
258
+ const entityPackageName = configInfo.entityPackageName || 'mj_generatedentities';
285
259
  if (!graphQLGenerator.generateGraphQLServerCode(nonCoreEntities, graphqlOutputDir, entityPackageName, false)) {
286
- (0, status_logging_1.failSpinner)('Error generating GraphQL Resolver code');
260
+ failSpinner('Error generating GraphQL Resolver code');
287
261
  return;
288
262
  }
289
263
  else if (isVerbose) {
290
- (0, status_logging_1.succeedSpinner)('GraphQL Resolver Code generated');
264
+ succeedSpinner('GraphQL Resolver Code generated');
291
265
  }
292
266
  }
293
267
  else if (isVerbose) {
294
- (0, status_logging_1.warnSpinner)('GraphQL server output directory NOT found in config file, skipping...');
268
+ warnSpinner('GraphQL server output directory NOT found in config file, skipping...');
295
269
  }
296
270
  /****************************************************************************************
297
271
  // STEP 4 - Core Entity Subclass Code Gen
298
272
  ****************************************************************************************/
299
- const coreEntitySubClassOutputDir = (0, config_1.outputDir)('CoreEntitySubClasses', false);
273
+ const coreEntitySubClassOutputDir = outputDir('CoreEntitySubClasses', false);
300
274
  if (coreEntitySubClassOutputDir && coreEntitySubClassOutputDir.length > 0) {
301
275
  // generate the entity subclass code
302
276
  if (isVerbose)
303
- (0, status_logging_1.startSpinner)('Generating CORE Entity Subclass Code...');
304
- const entitySubClassGeneratorObject = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(entity_subclasses_codegen_1.EntitySubClassGeneratorBase);
277
+ startSpinner('Generating CORE Entity Subclass Code...');
278
+ const entitySubClassGeneratorObject = MJGlobal.Instance.ClassFactory.CreateInstance(EntitySubClassGeneratorBase);
305
279
  if (!await entitySubClassGeneratorObject.generateAllEntitySubClasses(pool, coreEntities, coreEntitySubClassOutputDir, skipDB)) {
306
- (0, status_logging_1.failSpinner)('Error generating entity subclass code');
280
+ failSpinner('Error generating entity subclass code');
307
281
  return;
308
282
  }
309
283
  else if (isVerbose) {
310
- (0, status_logging_1.succeedSpinner)('CORE Entity Subclass Code generated');
284
+ succeedSpinner('CORE Entity Subclass Code generated');
311
285
  }
312
286
  }
313
287
  /****************************************************************************************
314
288
  // STEP 4.1 - Entity Subclass Code Gen
315
289
  ****************************************************************************************/
316
- const entitySubClassOutputDir = (0, config_1.outputDir)('EntitySubClasses', true);
290
+ const entitySubClassOutputDir = outputDir('EntitySubClasses', true);
317
291
  if (entitySubClassOutputDir) {
318
292
  // generate the entity subclass code
319
293
  if (isVerbose)
320
- (0, status_logging_1.startSpinner)('Generating Entity Subclass Code...');
321
- const entitySubClassGeneratorObject = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(entity_subclasses_codegen_1.EntitySubClassGeneratorBase);
294
+ startSpinner('Generating Entity Subclass Code...');
295
+ const entitySubClassGeneratorObject = MJGlobal.Instance.ClassFactory.CreateInstance(EntitySubClassGeneratorBase);
322
296
  if (!await entitySubClassGeneratorObject.generateAllEntitySubClasses(pool, nonCoreEntities, entitySubClassOutputDir, skipDB)) {
323
- (0, status_logging_1.failSpinner)('Error generating entity subclass code');
297
+ failSpinner('Error generating entity subclass code');
324
298
  return;
325
299
  }
326
300
  else if (isVerbose) {
327
- (0, status_logging_1.succeedSpinner)('Entity Subclass Code generated');
301
+ succeedSpinner('Entity Subclass Code generated');
328
302
  }
329
303
  }
330
304
  else if (isVerbose) {
331
- (0, status_logging_1.warnSpinner)('Entity subclass output directory NOT found in config file, skipping...');
305
+ warnSpinner('Entity subclass output directory NOT found in config file, skipping...');
332
306
  }
333
307
  /****************************************************************************************
334
308
  // STEP 5 - Angular Code Gen
335
309
  ****************************************************************************************/
336
- const angularCoreEntitiesOutputDir = (0, config_1.outputDir)('AngularCoreEntities', false);
310
+ const angularCoreEntitiesOutputDir = outputDir('AngularCoreEntities', false);
337
311
  if (angularCoreEntitiesOutputDir) {
338
312
  // generate the Angular client code
339
313
  if (isVerbose)
340
- (0, status_logging_1.startSpinner)('Generating Angular CORE Entities Code...');
341
- const angularGenerator = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(angular_codegen_1.AngularClientGeneratorBase);
314
+ startSpinner('Generating Angular CORE Entities Code...');
315
+ const angularGenerator = MJGlobal.Instance.ClassFactory.CreateInstance(AngularClientGeneratorBase);
342
316
  if (!(await angularGenerator.generateAngularCode(coreEntities, angularCoreEntitiesOutputDir, 'Core', currentUser))) {
343
- (0, status_logging_1.failSpinner)('Error generating Angular CORE Entities code');
317
+ failSpinner('Error generating Angular CORE Entities code');
344
318
  return;
345
319
  }
346
320
  else if (isVerbose) {
347
- (0, status_logging_1.succeedSpinner)('Angular CORE Entities Code generated');
321
+ succeedSpinner('Angular CORE Entities Code generated');
348
322
  }
349
323
  }
350
- const angularOutputDir = (0, config_1.outputDir)('Angular', false);
324
+ const angularOutputDir = outputDir('Angular', false);
351
325
  if (angularOutputDir) {
352
326
  // generate the Angular client code
353
327
  if (isVerbose)
354
- (0, status_logging_1.startSpinner)('Generating Angular Code...');
355
- const angularGenerator = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(angular_codegen_1.AngularClientGeneratorBase);
328
+ startSpinner('Generating Angular Code...');
329
+ const angularGenerator = MJGlobal.Instance.ClassFactory.CreateInstance(AngularClientGeneratorBase);
356
330
  if (!(await angularGenerator.generateAngularCode(nonCoreEntities, angularOutputDir, '', currentUser))) {
357
- (0, status_logging_1.failSpinner)('Error generating Angular code');
331
+ failSpinner('Error generating Angular code');
358
332
  return;
359
333
  }
360
334
  else if (isVerbose) {
361
- (0, status_logging_1.succeedSpinner)('Angular Code generated');
335
+ succeedSpinner('Angular Code generated');
362
336
  }
363
337
  }
364
338
  else if (isVerbose) {
365
- (0, status_logging_1.warnSpinner)('Angular output directory NOT found in config file, skipping...');
339
+ warnSpinner('Angular output directory NOT found in config file, skipping...');
366
340
  }
367
341
  /****************************************************************************************
368
342
  // STEP 6 - Database Schema Output in JSON - for documentation and can be used by AI/etc.
369
343
  ****************************************************************************************/
370
- const dbSchemaOutputDir = (0, config_1.outputDir)('DBSchemaJSON', false);
344
+ const dbSchemaOutputDir = outputDir('DBSchemaJSON', false);
371
345
  if (dbSchemaOutputDir) {
372
346
  // generate the GraphQL client code
373
347
  if (isVerbose)
374
- (0, status_logging_1.startSpinner)('Generating Database Schema JSON Output...');
375
- const schemaGeneratorObject = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(dbSchema_1.DBSchemaGeneratorBase);
348
+ startSpinner('Generating Database Schema JSON Output...');
349
+ const schemaGeneratorObject = MJGlobal.Instance.ClassFactory.CreateInstance(DBSchemaGeneratorBase);
376
350
  if (!schemaGeneratorObject.generateDBSchemaJSONOutput(md.Entities, dbSchemaOutputDir)) {
377
- (0, status_logging_1.failSpinner)('Error generating Database Schema JSON Output, non-fatal, continuing...');
351
+ failSpinner('Error generating Database Schema JSON Output, non-fatal, continuing...');
378
352
  }
379
353
  else if (isVerbose) {
380
- (0, status_logging_1.succeedSpinner)('Database Schema JSON Output generated');
354
+ succeedSpinner('Database Schema JSON Output generated');
381
355
  }
382
356
  }
383
357
  else if (isVerbose) {
384
- (0, status_logging_1.warnSpinner)('DB Schema output directory NOT found in config file, skipping...');
358
+ warnSpinner('DB Schema output directory NOT found in config file, skipping...');
385
359
  }
386
360
  /****************************************************************************************
387
361
  // STEP 7 - Actions Code Gen
388
362
  ****************************************************************************************/
389
- const coreActionsOutputDir = (0, config_1.outputDir)('CoreActionSubclasses', false);
390
- await actions_base_1.ActionEngineBase.Instance.Config(false, currentUser); // this is inefficient as we have the server
363
+ const coreActionsOutputDir = outputDir('CoreActionSubclasses', false);
364
+ await ActionEngineBase.Instance.Config(false, currentUser); // this is inefficient as we have the server
391
365
  if (coreActionsOutputDir) {
392
366
  if (isVerbose)
393
- (0, status_logging_1.startSpinner)('Generating CORE Actions Code...');
394
- const actionsGenerator = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(action_subclasses_codegen_1.ActionSubClassGeneratorBase);
395
- if (!(await actionsGenerator.generateActions(actions_base_1.ActionEngineBase.Instance.CoreActions, coreActionsOutputDir))) {
396
- (0, status_logging_1.failSpinner)('Error generating CORE Actions code');
367
+ startSpinner('Generating CORE Actions Code...');
368
+ const actionsGenerator = MJGlobal.Instance.ClassFactory.CreateInstance(ActionSubClassGeneratorBase);
369
+ if (!(await actionsGenerator.generateActions(ActionEngineBase.Instance.CoreActions, coreActionsOutputDir))) {
370
+ failSpinner('Error generating CORE Actions code');
397
371
  return;
398
372
  }
399
373
  else if (isVerbose) {
400
- (0, status_logging_1.succeedSpinner)('CORE Actions Code generated');
374
+ succeedSpinner('CORE Actions Code generated');
401
375
  }
402
376
  }
403
- const actionsOutputDir = (0, config_1.outputDir)('ActionSubclasses', false);
377
+ const actionsOutputDir = outputDir('ActionSubclasses', false);
404
378
  if (actionsOutputDir) {
405
379
  if (isVerbose)
406
- (0, status_logging_1.startSpinner)('Generating Actions Code...');
407
- const actionsGenerator = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(action_subclasses_codegen_1.ActionSubClassGeneratorBase);
408
- if (!(await actionsGenerator.generateActions(actions_base_1.ActionEngineBase.Instance.NonCoreActions, actionsOutputDir))) {
409
- (0, status_logging_1.failSpinner)('Error generating Actions code');
380
+ startSpinner('Generating Actions Code...');
381
+ const actionsGenerator = MJGlobal.Instance.ClassFactory.CreateInstance(ActionSubClassGeneratorBase);
382
+ if (!(await actionsGenerator.generateActions(ActionEngineBase.Instance.NonCoreActions, actionsOutputDir))) {
383
+ failSpinner('Error generating Actions code');
410
384
  return;
411
385
  }
412
386
  else if (isVerbose) {
413
- (0, status_logging_1.succeedSpinner)('Actions Code generated');
387
+ succeedSpinner('Actions Code generated');
414
388
  }
415
389
  }
416
390
  else if (isVerbose) {
417
- (0, status_logging_1.warnSpinner)('Actions output directory NOT found in config file, skipping...');
391
+ warnSpinner('Actions output directory NOT found in config file, skipping...');
418
392
  }
419
393
  // WRAP UP SQL LOGGING HERE
420
- sql_logging_1.SQLLogging.finishSQLLogging(); // finish up the SQL Logging
394
+ SQLLogging.finishSQLLogging(); // finish up the SQL Logging
421
395
  // Complete the TypeScript generation spinner in non-verbose mode
422
396
  if (!isVerbose) {
423
- (0, status_logging_1.succeedSpinner)('TypeScript code generation completed');
397
+ succeedSpinner('TypeScript code generation completed');
424
398
  }
425
399
  // now run integrity checks
426
- (0, status_logging_1.startSpinner)('Running system integrity checks...');
427
- await system_integrity_1.SystemIntegrityBase.RunIntegrityChecks(pool, true);
428
- (0, status_logging_1.succeedSpinner)('System integrity checks completed');
400
+ startSpinner('Running system integrity checks...');
401
+ await SystemIntegrityBase.RunIntegrityChecks(pool, true);
402
+ succeedSpinner('System integrity checks completed');
429
403
  /****************************************************************************************
430
404
  // STEP 8 --- Finalization Step - execute any AFTER commands specified in the config file
431
405
  ****************************************************************************************/
432
- const afterCommands = (0, config_1.commands)('AFTER');
406
+ const afterCommands = commands('AFTER');
433
407
  if (afterCommands && afterCommands.length > 0) {
434
- (0, status_logging_1.startSpinner)('Executing AFTER commands...');
408
+ startSpinner('Executing AFTER commands...');
435
409
  const results = await runCommandsObject.runCommands(afterCommands);
436
410
  if (results.some((r) => !r.success)) {
437
- (0, status_logging_1.failSpinner)('ERROR running one or more AFTER commands');
411
+ failSpinner('ERROR running one or more AFTER commands');
438
412
  }
439
413
  else {
440
- (0, status_logging_1.succeedSpinner)('AFTER commands completed');
414
+ succeedSpinner('AFTER commands completed');
441
415
  }
442
416
  }
443
417
  /****************************************************************************************
444
418
  // STEP 9 --- Execute any AFTER SQL Scripts specified in the config file
445
419
  ****************************************************************************************/
446
420
  if (!skipDB) {
447
- (0, status_logging_1.startSpinner)('Executing after-all SQL Scripts...');
421
+ startSpinner('Executing after-all SQL Scripts...');
448
422
  if (!(await sqlCodeGenObject.runCustomSQLScripts(pool, 'after-all'))) {
449
- (0, status_logging_1.failSpinner)('ERROR running after-all SQL Scripts');
423
+ failSpinner('ERROR running after-all SQL Scripts');
450
424
  }
451
425
  else {
452
- (0, status_logging_1.succeedSpinner)('After-all SQL Scripts completed');
426
+ succeedSpinner('After-all SQL Scripts completed');
453
427
  }
454
428
  }
455
429
  const endTime = new Date();
456
430
  const totalSeconds = (endTime.getTime() - startTime.getTime()) / 1000;
457
- (0, status_logging_1.succeedSpinner)(`MJ CodeGen Complete! ${md.Entities.length} entities processed in ${totalSeconds}s @ ${endTime.toLocaleString()}`);
431
+ succeedSpinner(`MJ CodeGen Complete! ${md.Entities.length} entities processed in ${totalSeconds}s @ ${endTime.toLocaleString()}`);
458
432
  process.exit(0); // wrap it up, 0 means success
459
433
  }
460
434
  catch (e) {
461
- (0, status_logging_1.failSpinner)(`CodeGen failed: ${e}`);
462
- (0, status_logging_1.logError)(e);
435
+ failSpinner(`CodeGen failed: ${e}`);
436
+ logError(e);
463
437
  process.exit(1); // error code
464
438
  }
465
439
  }
466
440
  }
467
- exports.RunCodeGenBase = RunCodeGenBase;
468
441
  /**
469
442
  * Convenience function to run the MemberJunction code generation process.
470
443
  * Creates a new instance of RunCodeGenBase and executes the full generation pipeline.
@@ -485,9 +458,8 @@ exports.RunCodeGenBase = RunCodeGenBase;
485
458
  * await runMemberJunctionCodeGeneration(true);
486
459
  * ```
487
460
  */
488
- async function runMemberJunctionCodeGeneration(skipDatabaseGeneration = false) {
489
- const runObject = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(RunCodeGenBase);
461
+ export async function runMemberJunctionCodeGeneration(skipDatabaseGeneration = false) {
462
+ const runObject = MJGlobal.Instance.ClassFactory.CreateInstance(RunCodeGenBase);
490
463
  return await runObject.Run(skipDatabaseGeneration);
491
464
  }
492
- exports.runMemberJunctionCodeGeneration = runMemberJunctionCodeGeneration;
493
465
  //# sourceMappingURL=runCodeGen.js.map