@memberjunction/codegen-lib 6.1.0-edge.5 → 6.1.0-edge.7

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 (103) hide show
  1. package/README.md +20 -0
  2. package/dist/Angular/angular-codegen.d.ts +9 -6
  3. package/dist/Angular/angular-codegen.d.ts.map +1 -1
  4. package/dist/Angular/angular-codegen.js +80 -51
  5. package/dist/Angular/angular-codegen.js.map +1 -1
  6. package/dist/Angular/join-grid-related-entity-component.d.ts.map +1 -1
  7. package/dist/Angular/join-grid-related-entity-component.js +5 -2
  8. package/dist/Angular/join-grid-related-entity-component.js.map +1 -1
  9. package/dist/Angular/related-entity-components.d.ts +11 -0
  10. package/dist/Angular/related-entity-components.d.ts.map +1 -1
  11. package/dist/Angular/related-entity-components.js +23 -0
  12. package/dist/Angular/related-entity-components.js.map +1 -1
  13. package/dist/Angular/timeline-related-entity-component.d.ts.map +1 -1
  14. package/dist/Angular/timeline-related-entity-component.js +3 -2
  15. package/dist/Angular/timeline-related-entity-component.js.map +1 -1
  16. package/dist/Config/config.d.ts +29 -2
  17. package/dist/Config/config.d.ts.map +1 -1
  18. package/dist/Config/config.js +54 -5
  19. package/dist/Config/config.js.map +1 -1
  20. package/dist/Database/codeGenDatabaseProvider.d.ts +64 -1
  21. package/dist/Database/codeGenDatabaseProvider.d.ts.map +1 -1
  22. package/dist/Database/codeGenDatabaseProvider.js +49 -3
  23. package/dist/Database/codeGenDatabaseProvider.js.map +1 -1
  24. package/dist/Database/dbSchema.js +2 -1
  25. package/dist/Database/dbSchema.js.map +1 -1
  26. package/dist/Database/entity-field-change-tracking.d.ts +53 -0
  27. package/dist/Database/entity-field-change-tracking.d.ts.map +1 -0
  28. package/dist/Database/entity-field-change-tracking.js +120 -0
  29. package/dist/Database/entity-field-change-tracking.js.map +1 -0
  30. package/dist/Database/entity-level-tree-cycles.d.ts.map +1 -1
  31. package/dist/Database/entity-level-tree-cycles.js +3 -2
  32. package/dist/Database/entity-level-tree-cycles.js.map +1 -1
  33. package/dist/Database/field-metadata-lock.d.ts +47 -0
  34. package/dist/Database/field-metadata-lock.d.ts.map +1 -0
  35. package/dist/Database/field-metadata-lock.js +159 -0
  36. package/dist/Database/field-metadata-lock.js.map +1 -0
  37. package/dist/Database/manage-metadata.d.ts +133 -51
  38. package/dist/Database/manage-metadata.d.ts.map +1 -1
  39. package/dist/Database/manage-metadata.js +574 -306
  40. package/dist/Database/manage-metadata.js.map +1 -1
  41. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts +10 -2
  42. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts.map +1 -1
  43. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js +113 -42
  44. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js.map +1 -1
  45. package/dist/Database/providers/postgresql/metadataSupportObjects.js +31 -8
  46. package/dist/Database/providers/postgresql/metadataSupportObjects.js.map +1 -1
  47. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts +47 -2
  48. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts.map +1 -1
  49. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js +176 -30
  50. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js.map +1 -1
  51. package/dist/Database/providers/sqlserver/__tests__/BaseViewEmissionGoldenMaster.test.js +15 -2
  52. package/dist/Database/providers/sqlserver/__tests__/BaseViewEmissionGoldenMaster.test.js.map +1 -1
  53. package/dist/Database/reconcileFieldLevelSecurity.d.ts +22 -0
  54. package/dist/Database/reconcileFieldLevelSecurity.d.ts.map +1 -0
  55. package/dist/Database/reconcileFieldLevelSecurity.js +47 -0
  56. package/dist/Database/reconcileFieldLevelSecurity.js.map +1 -0
  57. package/dist/Database/sql_codegen.d.ts +34 -0
  58. package/dist/Database/sql_codegen.d.ts.map +1 -1
  59. package/dist/Database/sql_codegen.js +152 -14
  60. package/dist/Database/sql_codegen.js.map +1 -1
  61. package/dist/Manifest/GenerateClassRegistrationsManifest.d.ts.map +1 -1
  62. package/dist/Manifest/GenerateClassRegistrationsManifest.js +3 -2
  63. package/dist/Manifest/GenerateClassRegistrationsManifest.js.map +1 -1
  64. package/dist/Misc/action_subclasses_codegen.js +2 -2
  65. package/dist/Misc/action_subclasses_codegen.js.map +1 -1
  66. package/dist/Misc/advanced_generation.d.ts +17 -5
  67. package/dist/Misc/advanced_generation.d.ts.map +1 -1
  68. package/dist/Misc/advanced_generation.js +69 -23
  69. package/dist/Misc/advanced_generation.js.map +1 -1
  70. package/dist/Misc/codegen-reporter.d.ts +2 -0
  71. package/dist/Misc/codegen-reporter.d.ts.map +1 -1
  72. package/dist/Misc/codegen-reporter.js +6 -2
  73. package/dist/Misc/codegen-reporter.js.map +1 -1
  74. package/dist/Misc/entity_subclasses_codegen.d.ts.map +1 -1
  75. package/dist/Misc/entity_subclasses_codegen.js +30 -20
  76. package/dist/Misc/entity_subclasses_codegen.js.map +1 -1
  77. package/dist/Misc/graphql_server_codegen.d.ts +39 -0
  78. package/dist/Misc/graphql_server_codegen.d.ts.map +1 -1
  79. package/dist/Misc/graphql_server_codegen.js +63 -9
  80. package/dist/Misc/graphql_server_codegen.js.map +1 -1
  81. package/dist/Misc/remote_operations_codegen.d.ts +36 -1
  82. package/dist/Misc/remote_operations_codegen.d.ts.map +1 -1
  83. package/dist/Misc/remote_operations_codegen.js +178 -8
  84. package/dist/Misc/remote_operations_codegen.js.map +1 -1
  85. package/dist/Misc/schema-emit.d.ts.map +1 -1
  86. package/dist/Misc/schema-emit.js +2 -1
  87. package/dist/Misc/schema-emit.js.map +1 -1
  88. package/dist/Misc/sql_logging.d.ts +63 -8
  89. package/dist/Misc/sql_logging.d.ts.map +1 -1
  90. package/dist/Misc/sql_logging.js +169 -42
  91. package/dist/Misc/sql_logging.js.map +1 -1
  92. package/dist/Misc/util.d.ts +12 -0
  93. package/dist/Misc/util.d.ts.map +1 -1
  94. package/dist/Misc/util.js +71 -8
  95. package/dist/Misc/util.js.map +1 -1
  96. package/dist/plugins/index.d.ts +3 -0
  97. package/dist/plugins/index.d.ts.map +1 -1
  98. package/dist/plugins/index.js +28 -1
  99. package/dist/plugins/index.js.map +1 -1
  100. package/dist/runCodeGen.d.ts.map +1 -1
  101. package/dist/runCodeGen.js +134 -26
  102. package/dist/runCodeGen.js.map +1 -1
  103. package/package.json +29 -29
@@ -1,10 +1,39 @@
1
1
  import { CodeGenConnection } from '../Database/codeGenDatabaseProvider.js';
2
+ /**
3
+ * True when `folderPath` is the CodeGenLib / MJ-host default (`./migrations/v5` etc.),
4
+ * not an Open App `migrations/codegen` tree.
5
+ */
6
+ export declare function isMjDefaultSqlOutputPath(folderPath: string): boolean;
7
+ export type ResolveSQLOutputFolderArgs = {
8
+ cwd: string;
9
+ configuredFolderPath?: string;
10
+ includeSchemas?: string[];
11
+ coreSchema: string;
12
+ /** CLI `--sql-output-dir`. Wins over config when set. */
13
+ sqlOutputDirFlag?: string;
14
+ hasMjAppJson: boolean;
15
+ isMjMonorepo: boolean;
16
+ };
17
+ /**
18
+ * Where CodeGen writes `CodeGen_Run_*.sql` (EntityField INSERTs and other metadata SQL).
19
+ *
20
+ * Open App (`mj-app.json` in cwd): always `{cwd}/migrations/codegen` unless
21
+ * `--sql-output-dir` or an explicit non-MJ `SQLOutput.folderPath` is set.
22
+ * Never fall back to `MJ/migrations/v*` — that silently dropped Open App
23
+ * EntityField SQL into the host tree.
24
+ *
25
+ * MJ monorepo cwd + `includeSchemas` listing a non-core schema: throw. Run
26
+ * CodeGen from the app directory.
27
+ */
28
+ export declare function resolveSQLOutputFolder(args: ResolveSQLOutputFolderArgs): string;
2
29
  /**
3
30
  * Utility class for logging SQL to a run file that can be fresh for each run or appended to depending on the settings in the configuration
4
31
  */
5
32
  export declare class SQLLogging {
6
33
  private static _SQLLoggingFilePath;
7
34
  private static _OmitRecurringScriptsFromLog;
35
+ /** CLI `--sql-output-dir`. Set before {@link initSQLLogging}. */
36
+ static sqlOutputDirFlag: string | undefined;
8
37
  static get SQLLoggingFilePath(): string;
9
38
  static get OmitRecurringScriptsFromLog(): boolean;
10
39
  /**
@@ -33,17 +62,35 @@ export declare class SQLLogging {
33
62
  */
34
63
  static redirectToPGMigrations(folderPath: string): string;
35
64
  static initSQLLogging(): void;
36
- static finishSQLLogging(): void;
37
- protected static createFileName(): string;
38
65
  /**
39
- * Adds the provided SQL to the log file for the run
40
- * @param contents - the executable SQL to log
41
- * @param description - a description of what is being logged that will be emitted and wrapped in comments
42
- * @param isRecurringScript - if set to true tells the logger that the provided SQL represents a recurring script meaning it is something that is executed, generally, for all CodeGen runs. In these cases, the Config settings can result in omitting these recurring scripts from being logged because the configuration environment may have those recurring scripts already set to run after all run-specific migrations get run.
43
- * @returns
66
+ * The batch separator for the active platform: `GO` on SQL Server, none on PostgreSQL. Used as the
67
+ * default for callers that do not pass the provider's separator, so a PostgreSQL capture can never
68
+ * pick up a literal `GO` from a forgotten argument.
69
+ */
70
+ static defaultBatchSeparator(): string;
71
+ /** Test hook — SQLLogging is a process-wide singleton. */
72
+ static resetForTests(): void;
73
+ /** Test hook — sets the active capture file path for testing. */
74
+ static setFilePathForTesting(filePath: string): void;
75
+ /**
76
+ * Test hook — turns SQL capture off for the process: disables `SQLOutput` so
77
+ * {@link LogSQLAndExecute} does not refuse to run against a stub connection with no CodeGen_Run
78
+ * file open, and closes any capture file already open so nothing is written meanwhile. Returns a
79
+ * function that restores both; call it from `afterAll`.
44
80
  */
81
+ static suppressOutputForTests(): () => void;
82
+ static finishSQLLogging(): void;
83
+ protected static createFileName(): string;
45
84
  /**
46
- * Adds the provided SQL to the log file for the run
85
+ * Adds the provided SQL to the log file for the run.
86
+ *
87
+ * Two rules keep the file replayable as a migration. A unit that declares a batch-scoped T-SQL
88
+ * variable always ends its batch: every unit is executed as its own query, so no later unit can
89
+ * depend on the variable, but two such units concatenated into one migration batch fail replay
90
+ * with "The variable name '@x' has already been declared" (see {@link declaresBatchScopedVariable}).
91
+ * And a unit that already ends in `GO` never receives a second separator. An empty
92
+ * `batchSeparator` (PostgreSQL) means none. Callers should still pass `includeBatchSeparator`
93
+ * explicitly: the scan does not see a declaration hidden inside a string or a mid-line statement.
47
94
  * @param contents - the executable SQL to log
48
95
  * @param description - a description of what is being logged that will be emitted and wrapped in comments
49
96
  * @param isRecurringScript - if set to true tells the logger that the provided SQL represents a recurring script meaning it is something that is executed, generally, for all CodeGen runs. In these cases, the Config settings can result in omitting these recurring scripts from being logged because the configuration environment may have those recurring scripts already set to run after all run-specific migrations get run.
@@ -63,6 +110,14 @@ export declare class SQLLogging {
63
110
  * @returns - The result of the query execution.
64
111
  */
65
112
  static LogSQLAndExecute(ds: CodeGenConnection, query: string, description?: string, isRecurringScript?: boolean, includeBatchSeparator?: boolean, batchSeparator?: string): Promise<any>;
113
+ /**
114
+ * True when the SQL text declares a batch-scoped T-SQL local variable: a `DECLARE @name ...` at the
115
+ * start of any line with no routine header (`CREATE|ALTER [OR ALTER] PROCEDURE|FUNCTION|TRIGGER`) before
116
+ * it. T-SQL variables are scoped to the batch wherever they are declared — after `SET NOCOUNT ON`,
117
+ * inside `IF ... BEGIN ... END` — so the match is not limited to the first statement. A declaration
118
+ * inside a routine body is routine-scoped and cannot collide across units, so it does not count.
119
+ */
120
+ static declaresBatchScopedVariable(sql: string): boolean;
66
121
  protected static getFileLength(filePath: string): number;
67
122
  protected static convertSQLLogToFlywaySchema(): void;
68
123
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sql_logging.d.ts","sourceRoot":"","sources":["../../src/Misc/sql_logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAMxE;;GAEG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAc;IAChD,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAkB;IAE7D,WAAkB,kBAAkB,IAAI,MAAM,CAE7C;IACD,WAAkB,2BAA2B,IAAI,OAAO,CAEvD;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;WACW,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;WAwBlD,cAAc;WA2Cb,gBAAgB;IAa9B,SAAS,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM;IAe1C;;;;;;OAMG;IACH;;;;;;;;OAQG;WACiB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAE,OAAe,EAAE,qBAAqB,GAAE,OAAe,EAAE,cAAc,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CxM;;;;;;;;;MASE;WACkB,gBAAgB,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAE,OAAe,EAAE,qBAAqB,GAAE,OAAe,EAAE,cAAc,GAAE,MAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAMzN,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAUxD,SAAS,CAAC,MAAM,CAAC,2BAA2B,IAAI,IAAI;IAyBnD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;CAG9B"}
1
+ {"version":3,"file":"sql_logging.d.ts","sourceRoot":"","sources":["../../src/Misc/sql_logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAQxE;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,MAAM,MAAM,0BAA0B,GAAG;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAAG,MAAM,CAoC/E;AAED;;GAEG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAc;IAChD,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAiB;IAC5D,iEAAiE;IACjE,OAAc,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnD,WAAkB,kBAAkB,IAAI,MAAM,CAE7C;IACD,WAAkB,2BAA2B,IAAI,OAAO,CAEvD;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;WACW,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;WAwBlD,cAAc;IA4C5B;;;;OAIG;WACW,qBAAqB,IAAI,MAAM;IAI7C,0DAA0D;WAC5C,aAAa,IAAI,IAAI;IAKnC,iEAAiE;WACnD,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI3D;;;;;OAKG;WACW,sBAAsB,IAAI,MAAM,IAAI;WAgBnC,gBAAgB;IAa9B,SAAS,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM;IAe1C;;;;;;;;;;;;;;;;OAgBG;WACiB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAE,OAAe,EAAE,qBAAqB,GAAE,OAAe,EAAE,cAAc,GAAE,MAA2C,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDtO;;;;;;;;;MASE;WACkB,gBAAgB,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAE,OAAe,EAAE,qBAAqB,GAAE,OAAe,EAAE,cAAc,GAAE,MAA2C,GAAG,OAAO,CAAC,GAAG,CAAC;IAYvP;;;;;;OAMG;WACW,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAsB/D,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAUxD,SAAS,CAAC,MAAM,CAAC,2BAA2B,IAAI,IAAI;IAyBnD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;CAG9B"}
@@ -1,13 +1,62 @@
1
- import { configInfo, mj_core_schema, dbPlatform } from "../Config/config.js";
1
+ import { configInfo, mj_core_schema, dbPlatform, currentWorkingDirectory } from "../Config/config.js";
2
2
  import { logError, logStatus } from "./status_logging.js";
3
3
  import * as fs from 'fs';
4
4
  import path from 'path';
5
+ const MJ_DEFAULT_SQL_OUTPUT_RE = /(^|\/|\\)migrations[/\\]v\d+[/\\]?$/i;
6
+ /**
7
+ * True when `folderPath` is the CodeGenLib / MJ-host default (`./migrations/v5` etc.),
8
+ * not an Open App `migrations/codegen` tree.
9
+ */
10
+ export function isMjDefaultSqlOutputPath(folderPath) {
11
+ const n = folderPath.replace(/\\/g, '/').replace(/\/+$/, '');
12
+ return MJ_DEFAULT_SQL_OUTPUT_RE.test(n) || n === './migrations/v5' || n === '../../migrations/v5';
13
+ }
14
+ /**
15
+ * Where CodeGen writes `CodeGen_Run_*.sql` (EntityField INSERTs and other metadata SQL).
16
+ *
17
+ * Open App (`mj-app.json` in cwd): always `{cwd}/migrations/codegen` unless
18
+ * `--sql-output-dir` or an explicit non-MJ `SQLOutput.folderPath` is set.
19
+ * Never fall back to `MJ/migrations/v*` — that silently dropped Open App
20
+ * EntityField SQL into the host tree.
21
+ *
22
+ * MJ monorepo cwd + `includeSchemas` listing a non-core schema: throw. Run
23
+ * CodeGen from the app directory.
24
+ */
25
+ export function resolveSQLOutputFolder(args) {
26
+ const cwd = path.resolve(args.cwd);
27
+ const core = (args.coreSchema || '__mj').toLowerCase();
28
+ const include = (args.includeSchemas ?? []).map(s => s.toLowerCase());
29
+ const generatingAppSchemas = include.some(s => s !== core);
30
+ if (args.sqlOutputDirFlag) {
31
+ const resolved = path.resolve(cwd, args.sqlOutputDirFlag);
32
+ if (args.hasMjAppJson && isMjDefaultSqlOutputPath(resolved)) {
33
+ throw new Error(`CodeGen --sql-output-dir resolves to an MJ host migrations tree (${resolved}). ` +
34
+ `Open App metadata SQL must go to the app's migrations/codegen. ` +
35
+ `Run from the app cwd (mj-app.json) without this flag, or pass the app codegen folder.`);
36
+ }
37
+ return resolved;
38
+ }
39
+ if (args.hasMjAppJson) {
40
+ const configured = args.configuredFolderPath;
41
+ if (configured && !isMjDefaultSqlOutputPath(configured)) {
42
+ return path.resolve(cwd, configured);
43
+ }
44
+ return path.join(cwd, 'migrations', 'codegen');
45
+ }
46
+ if (args.isMjMonorepo && generatingAppSchemas) {
47
+ throw new Error(`CodeGen SQLOutput would write Open App metadata SQL into the MJ repo (${cwd}). ` +
48
+ `Run \`mj codegen\` from the Open App directory (a cwd that contains mj-app.json), not from MJ. ` +
49
+ `includeSchemas=${(args.includeSchemas ?? []).join(',') || '(empty)'}`);
50
+ }
51
+ const folder = args.configuredFolderPath ?? './migrations/v5/';
52
+ return path.resolve(cwd, folder);
53
+ }
5
54
  /**
6
55
  * Utility class for logging SQL to a run file that can be fresh for each run or appended to depending on the settings in the configuration
7
56
  */
8
57
  export class SQLLogging {
9
58
  static { this._SQLLoggingFilePath = ''; }
10
- static { this._OmitRecurringScriptsFromLog = false; }
59
+ static { this._OmitRecurringScriptsFromLog = true; }
11
60
  static get SQLLoggingFilePath() {
12
61
  return SQLLogging._SQLLoggingFilePath;
13
62
  }
@@ -62,40 +111,77 @@ export class SQLLogging {
62
111
  return folderPath;
63
112
  }
64
113
  static initSQLLogging() {
65
- SQLLogging._OmitRecurringScriptsFromLog = configInfo.SQLOutput.omitRecurringScriptsFromLog;
114
+ const config = configInfo.SQLOutput;
115
+ if (!config) {
116
+ throw new Error("SQLOutput config is required to enable metadata logging");
117
+ }
118
+ SQLLogging._OmitRecurringScriptsFromLog = config.omitRecurringScriptsFromLog;
66
119
  if (!SQLLogging.SQLLoggingFilePath) {
67
- // not already set up, so proceed, otherwise we do nothing as we're already good to go
68
- const config = configInfo.SQLOutput;
69
- if (!config) {
70
- logError("MetadataLoggingConfig is required to enable metadata logging");
120
+ if (!config.enabled)
71
121
  return;
122
+ const cwd = currentWorkingDirectory || process.cwd();
123
+ const coreSchema = mj_core_schema();
124
+ let folderPath = resolveSQLOutputFolder({
125
+ cwd,
126
+ configuredFolderPath: config.folderPath,
127
+ includeSchemas: configInfo.includeSchemas,
128
+ coreSchema,
129
+ sqlOutputDirFlag: SQLLogging.sqlOutputDirFlag,
130
+ hasMjAppJson: fs.existsSync(path.join(cwd, 'mj-app.json')),
131
+ isMjMonorepo: fs.existsSync(path.join(cwd, 'packages', 'CodeGenLib')) ||
132
+ fs.existsSync(path.join(cwd, 'packages', 'MJCLI')),
133
+ });
134
+ if (dbPlatform() === 'postgresql') {
135
+ folderPath = SQLLogging.redirectToPGMigrations(folderPath);
72
136
  }
73
- if (!config.enabled)
74
- return; // we are not doing anything here....
75
- if (config.folderPath) {
76
- // On PostgreSQL, redirect the migrations root so CodeGen audit SQL lands in
77
- // migrations-pg/ alongside the rest of the PG tooling.
78
- let folderPath = config.folderPath;
79
- if (dbPlatform() === 'postgresql') {
80
- folderPath = SQLLogging.redirectToPGMigrations(folderPath);
81
- }
82
- const dirExists = fs.existsSync(folderPath);
83
- if (!dirExists) {
84
- fs.mkdirSync(folderPath, { recursive: true });
85
- }
86
- const fileName = config.fileName || this.createFileName();
87
- SQLLogging._SQLLoggingFilePath = path.join(folderPath, fileName);
88
- if (!config.appendToFile || !fs.existsSync(SQLLogging.SQLLoggingFilePath)) {
89
- //create an empty file
90
- fs.writeFileSync(SQLLogging.SQLLoggingFilePath, '');
91
- }
92
- logStatus(`Metadata logging enabled. File path: ${SQLLogging.SQLLoggingFilePath}`);
137
+ if (!fs.existsSync(folderPath)) {
138
+ fs.mkdirSync(folderPath, { recursive: true });
93
139
  }
94
- else {
95
- logError("folderPath is required to enable metadata logging");
96
- return;
140
+ const fileName = config.fileName || this.createFileName();
141
+ SQLLogging._SQLLoggingFilePath = path.join(folderPath, fileName);
142
+ if (!config.appendToFile || !fs.existsSync(SQLLogging.SQLLoggingFilePath)) {
143
+ fs.writeFileSync(SQLLogging.SQLLoggingFilePath, '');
97
144
  }
145
+ logStatus(`Metadata logging enabled. File path: ${SQLLogging.SQLLoggingFilePath}`);
146
+ }
147
+ }
148
+ /**
149
+ * The batch separator for the active platform: `GO` on SQL Server, none on PostgreSQL. Used as the
150
+ * default for callers that do not pass the provider's separator, so a PostgreSQL capture can never
151
+ * pick up a literal `GO` from a forgotten argument.
152
+ */
153
+ static defaultBatchSeparator() {
154
+ return dbPlatform() === 'postgresql' ? '' : 'GO';
155
+ }
156
+ /** Test hook — SQLLogging is a process-wide singleton. */
157
+ static resetForTests() {
158
+ SQLLogging._SQLLoggingFilePath = '';
159
+ SQLLogging.sqlOutputDirFlag = undefined;
160
+ }
161
+ /** Test hook — sets the active capture file path for testing. */
162
+ static setFilePathForTesting(filePath) {
163
+ SQLLogging._SQLLoggingFilePath = filePath;
164
+ }
165
+ /**
166
+ * Test hook — turns SQL capture off for the process: disables `SQLOutput` so
167
+ * {@link LogSQLAndExecute} does not refuse to run against a stub connection with no CodeGen_Run
168
+ * file open, and closes any capture file already open so nothing is written meanwhile. Returns a
169
+ * function that restores both; call it from `afterAll`.
170
+ */
171
+ static suppressOutputForTests() {
172
+ const output = configInfo.SQLOutput;
173
+ const previousEnabled = output?.enabled;
174
+ const previousPath = SQLLogging._SQLLoggingFilePath;
175
+ if (output) {
176
+ output.enabled = false;
98
177
  }
178
+ SQLLogging._SQLLoggingFilePath = '';
179
+ return () => {
180
+ if (output && previousEnabled !== undefined) {
181
+ output.enabled = previousEnabled;
182
+ }
183
+ SQLLogging._SQLLoggingFilePath = previousPath;
184
+ };
99
185
  }
100
186
  static finishSQLLogging() {
101
187
  if (SQLLogging.SQLLoggingFilePath) {
@@ -121,14 +207,15 @@ export class SQLLogging {
121
207
  return fileName;
122
208
  }
123
209
  /**
124
- * Adds the provided SQL to the log file for the run
125
- * @param contents - the executable SQL to log
126
- * @param description - a description of what is being logged that will be emitted and wrapped in comments
127
- * @param isRecurringScript - if set to true tells the logger that the provided SQL represents a recurring script meaning it is something that is executed, generally, for all CodeGen runs. In these cases, the Config settings can result in omitting these recurring scripts from being logged because the configuration environment may have those recurring scripts already set to run after all run-specific migrations get run.
128
- * @returns
129
- */
130
- /**
131
- * Adds the provided SQL to the log file for the run
210
+ * Adds the provided SQL to the log file for the run.
211
+ *
212
+ * Two rules keep the file replayable as a migration. A unit that declares a batch-scoped T-SQL
213
+ * variable always ends its batch: every unit is executed as its own query, so no later unit can
214
+ * depend on the variable, but two such units concatenated into one migration batch fail replay
215
+ * with "The variable name '@x' has already been declared" (see {@link declaresBatchScopedVariable}).
216
+ * And a unit that already ends in `GO` never receives a second separator. An empty
217
+ * `batchSeparator` (PostgreSQL) means none. Callers should still pass `includeBatchSeparator`
218
+ * explicitly: the scan does not see a declaration hidden inside a string or a mid-line statement.
132
219
  * @param contents - the executable SQL to log
133
220
  * @param description - a description of what is being logged that will be emitted and wrapped in comments
134
221
  * @param isRecurringScript - if set to true tells the logger that the provided SQL represents a recurring script meaning it is something that is executed, generally, for all CodeGen runs. In these cases, the Config settings can result in omitting these recurring scripts from being logged because the configuration environment may have those recurring scripts already set to run after all run-specific migrations get run.
@@ -136,7 +223,7 @@ export class SQLLogging {
136
223
  * @param batchSeparator - the batch separator string to use (e.g., 'GO' for SQL Server). Only used when includeBatchSeparator is true.
137
224
  * @returns
138
225
  */
139
- static async appendToSQLLogFile(contents, description, isRecurringScript = false, includeBatchSeparator = false, batchSeparator = 'GO') {
226
+ static async appendToSQLLogFile(contents, description, isRecurringScript = false, includeBatchSeparator = false, batchSeparator = SQLLogging.defaultBatchSeparator()) {
140
227
  try {
141
228
  if (isRecurringScript && SQLLogging.OmitRecurringScriptsFromLog) {
142
229
  return; // is a recurring script and the flag to omit recurring scripts is set
@@ -164,11 +251,19 @@ export class SQLLogging {
164
251
  // ending in `GO`. Appending `;` produces `GO;`, which SSMS and sqlcmd reject
165
252
  // ("Incorrect syntax near ';'"). Detect and skip the `;` append in that case.
166
253
  const trimmed = contents.replace(/[\s;]+$/g, '');
254
+ let endsWithBatchSeparator = false;
167
255
  if (trimmed.length > 0) {
168
- const endsWithBatchSeparator = /(^|\n)\s*GO\s*$/i.test(trimmed);
256
+ endsWithBatchSeparator = /(^|\n)\s*GO\s*$/i.test(trimmed);
169
257
  contents = endsWithBatchSeparator ? trimmed : `${trimmed};`;
170
258
  }
171
- contents = includeBatchSeparator
259
+ // Emit a separator when the caller asked for one, or when the unit declares a batch-scoped
260
+ // variable (see the method JSDoc). Never for an empty separator (PostgreSQL), and never
261
+ // after a unit that already closes its own batch. The declaration scan runs only on
262
+ // units that could receive a separator, so GO-terminated view and routine bodies — the
263
+ // largest units logged — are not scanned.
264
+ const emitSeparator = !!batchSeparator && !endsWithBatchSeparator &&
265
+ (includeBatchSeparator || SQLLogging.declaresBatchScopedVariable(trimmed));
266
+ contents = emitSeparator
172
267
  ? `${contents}\n${batchSeparator}\n\n`
173
268
  : `${contents}\n\n`;
174
269
  fs.appendFileSync(SQLLogging.SQLLoggingFilePath, contents);
@@ -187,11 +282,43 @@ export class SQLLogging {
187
282
  * @param isRecurringScript - if set to true tells the logger that the provided SQL represents a recurring script meaning it is something that is executed, generally, for all CodeGen runs. In these cases, the Config settings can result in omitting these recurring scripts from being logged because the configuration environment may have those recurring scripts already set to run after all run-specific migrations get run.
188
283
  * @returns - The result of the query execution.
189
284
  */
190
- static async LogSQLAndExecute(ds, query, description, isRecurringScript = false, includeBatchSeparator = false, batchSeparator = 'GO') {
285
+ static async LogSQLAndExecute(ds, query, description, isRecurringScript = false, includeBatchSeparator = false, batchSeparator = SQLLogging.defaultBatchSeparator()) {
286
+ if (configInfo.SQLOutput?.enabled && !SQLLogging.SQLLoggingFilePath) {
287
+ throw new Error('SQLOutput.enabled but no CodeGen_Run log file is open. Refusing to apply metadata SQL with no artifact. ' +
288
+ 'Run `mj codegen` from the Open App directory (mj-app.json) or pass --sql-output-dir.');
289
+ }
191
290
  SQLLogging.appendToSQLLogFile(query, description, isRecurringScript, includeBatchSeparator, batchSeparator);
192
291
  const result = await ds.query(query);
193
292
  return result.recordset;
194
293
  }
294
+ /**
295
+ * True when the SQL text declares a batch-scoped T-SQL local variable: a `DECLARE @name ...` at the
296
+ * start of any line with no routine header (`CREATE|ALTER [OR ALTER] PROCEDURE|FUNCTION|TRIGGER`) before
297
+ * it. T-SQL variables are scoped to the batch wherever they are declared — after `SET NOCOUNT ON`,
298
+ * inside `IF ... BEGIN ... END` — so the match is not limited to the first statement. A declaration
299
+ * inside a routine body is routine-scoped and cannot collide across units, so it does not count.
300
+ */
301
+ static declaresBatchScopedVariable(sql) {
302
+ if (!sql) {
303
+ return false;
304
+ }
305
+ // `[ \t]*` rather than `\s*` so the multiline anchors cannot walk across blank lines.
306
+ const declaration = /^[ \t]*DECLARE\s+@/im;
307
+ const routineHeader = /^[ \t]*(CREATE\s+(OR\s+ALTER\s+)?|ALTER\s+)(PROC|PROCEDURE|FUNCTION|TRIGGER)\b/im;
308
+ // A routine body ends at its GO, so judge each batch of the unit on its own: a DECLARE after a
309
+ // routine's GO is batch-scoped again.
310
+ for (const batch of sql.split(/^[ \t]*GO[ \t]*$/im)) {
311
+ const declAt = batch.search(declaration);
312
+ if (declAt === -1) {
313
+ continue;
314
+ }
315
+ const headerAt = batch.search(routineHeader);
316
+ if (headerAt === -1 || declAt < headerAt) {
317
+ return true;
318
+ }
319
+ }
320
+ return false;
321
+ }
195
322
  static getFileLength(filePath) {
196
323
  try {
197
324
  const stats = fs.statSync(filePath);
@@ -1 +1 @@
1
- {"version":3,"file":"sql_logging.js","sourceRoot":"","sources":["../../src/Misc/sql_logging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql_logging.js","sourceRoot":"","sources":["../../src/Misc/sql_logging.ts"],"names":[],"mappings":"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"}
@@ -55,4 +55,16 @@ export declare function sortRelatedEntities<T extends {
55
55
  RelatedEntityJoinField?: string;
56
56
  ID?: string;
57
57
  }>(items: T[]): T[];
58
+ /**
59
+ * Serializes a value to JSON with recursively sorted object keys, ensuring deterministic
60
+ * string representations across runs regardless of property insertion order.
61
+ *
62
+ * @param value - Value to serialize
63
+ * @param space - Optional indentation (e.g. 2 for pretty-printed JSON)
64
+ */
65
+ export declare function canonicalJSONStringify(value: unknown, space?: number | string): string;
66
+ /**
67
+ * Deep structural equality comparison for JSON-serializable objects and primitives.
68
+ */
69
+ export declare function deepEqualJSON(a: unknown, b: unknown): boolean;
58
70
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/Misc/util.ts"],"names":[],"mappings":"AAMA,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAI1C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI7C;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAQzD;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9G;AAEH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAiC/H;AAGD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAIvD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAiC9L;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAyBhL"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/Misc/util.ts"],"names":[],"mappings":"AAOA,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAI1C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI7C;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAQzD;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9G;AAEH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAiC/H;AAGD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAIvD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAiC9L;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAyBhL;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEtF;AAkBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAyB7D"}
package/dist/Misc/util.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { logError } from "./status_logging.js";
2
+ import { ordinalCompare } from "@memberjunction/global";
2
3
  import fs, { unlinkSync } from "fs";
3
4
  import fsExtra from 'fs-extra';
4
5
  import { globSync } from 'glob';
@@ -63,7 +64,7 @@ export function combineFiles(directory, combinedFileName, pattern, overwriteExis
63
64
  return -1;
64
65
  }
65
66
  else {
66
- return a.localeCompare(b);
67
+ return ordinalCompare(a, b);
67
68
  }
68
69
  });
69
70
  let combinedContent = '';
@@ -114,7 +115,7 @@ export function sortBySequenceAndCreatedAt(items) {
114
115
  // Alphabetical tiebreakers — try type-appropriate name fields in order
115
116
  // Value (EntityFieldValueInfo)
116
117
  if (a.Value != null && b.Value != null) {
117
- const cmp = a.Value.localeCompare(b.Value);
118
+ const cmp = ordinalCompare(a.Value, b.Value);
118
119
  if (cmp !== 0)
119
120
  return cmp;
120
121
  }
@@ -124,19 +125,19 @@ export function sortBySequenceAndCreatedAt(items) {
124
125
  return 1;
125
126
  // Name (EntityFieldInfo)
126
127
  if (a.Name != null && b.Name != null) {
127
- const cmp = a.Name.localeCompare(b.Name);
128
+ const cmp = ordinalCompare(a.Name, b.Name);
128
129
  if (cmp !== 0)
129
130
  return cmp;
130
131
  }
131
132
  // RelatedEntityJoinField (EntityRelationshipInfo)
132
133
  if (a.RelatedEntityJoinField != null && b.RelatedEntityJoinField != null) {
133
- const cmp = a.RelatedEntityJoinField.localeCompare(b.RelatedEntityJoinField);
134
+ const cmp = ordinalCompare(a.RelatedEntityJoinField, b.RelatedEntityJoinField);
134
135
  if (cmp !== 0)
135
136
  return cmp;
136
137
  }
137
138
  // Last resort: sort by ID for absolute determinism
138
139
  if (a.ID != null && b.ID != null) {
139
- return a.ID.localeCompare(b.ID);
140
+ return ordinalCompare(a.ID, b.ID);
140
141
  }
141
142
  return 0;
142
143
  });
@@ -159,21 +160,83 @@ export function sortRelatedEntities(items) {
159
160
  }
160
161
  // Tiebreaker: RelatedEntity name (the display name of the related entity)
161
162
  if (a.RelatedEntity != null && b.RelatedEntity != null) {
162
- const cmp = a.RelatedEntity.localeCompare(b.RelatedEntity);
163
+ const cmp = ordinalCompare(a.RelatedEntity, b.RelatedEntity);
163
164
  if (cmp !== 0)
164
165
  return cmp;
165
166
  }
166
167
  // Tiebreaker: RelatedEntityJoinField (FK column name)
167
168
  if (a.RelatedEntityJoinField != null && b.RelatedEntityJoinField != null) {
168
- const cmp = a.RelatedEntityJoinField.localeCompare(b.RelatedEntityJoinField);
169
+ const cmp = ordinalCompare(a.RelatedEntityJoinField, b.RelatedEntityJoinField);
169
170
  if (cmp !== 0)
170
171
  return cmp;
171
172
  }
172
173
  // Last resort: ID
173
174
  if (a.ID != null && b.ID != null) {
174
- return a.ID.localeCompare(b.ID);
175
+ return ordinalCompare(a.ID, b.ID);
175
176
  }
176
177
  return 0;
177
178
  });
178
179
  }
180
+ /**
181
+ * Serializes a value to JSON with recursively sorted object keys, ensuring deterministic
182
+ * string representations across runs regardless of property insertion order.
183
+ *
184
+ * @param value - Value to serialize
185
+ * @param space - Optional indentation (e.g. 2 for pretty-printed JSON)
186
+ */
187
+ export function canonicalJSONStringify(value, space) {
188
+ return JSON.stringify(sortKeysRecursively(value), null, space);
189
+ }
190
+ function sortKeysRecursively(value) {
191
+ if (value === null || typeof value !== 'object') {
192
+ return value;
193
+ }
194
+ if (Array.isArray(value)) {
195
+ return value.map(sortKeysRecursively);
196
+ }
197
+ const obj = value;
198
+ const sortedKeys = Object.keys(obj).sort(ordinalCompare);
199
+ const result = {};
200
+ for (const key of sortedKeys) {
201
+ result[key] = sortKeysRecursively(obj[key]);
202
+ }
203
+ return result;
204
+ }
205
+ /**
206
+ * Deep structural equality comparison for JSON-serializable objects and primitives.
207
+ */
208
+ export function deepEqualJSON(a, b) {
209
+ if (a === b)
210
+ return true;
211
+ if (a == null || b == null)
212
+ return false;
213
+ if (typeof a !== typeof b)
214
+ return false;
215
+ if (typeof a !== 'object')
216
+ return false;
217
+ if (Array.isArray(a) !== Array.isArray(b))
218
+ return false;
219
+ if (Array.isArray(a) && Array.isArray(b)) {
220
+ if (a.length !== b.length)
221
+ return false;
222
+ for (let i = 0; i < a.length; i++) {
223
+ if (!deepEqualJSON(a[i], b[i]))
224
+ return false;
225
+ }
226
+ return true;
227
+ }
228
+ const objA = a;
229
+ const objB = b;
230
+ const keysA = Object.keys(objA);
231
+ const keysB = Object.keys(objB);
232
+ if (keysA.length !== keysB.length)
233
+ return false;
234
+ for (const key of keysA) {
235
+ if (!Object.prototype.hasOwnProperty.call(objB, key))
236
+ return false;
237
+ if (!deepEqualJSON(objA[key], objB[key]))
238
+ return false;
239
+ }
240
+ return true;
241
+ }
179
242
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/Misc/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/Misc/util.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,9 @@ export declare class CodeGenPlugin extends BaseCLIPlugin {
21
21
  skipdb: Interfaces.BooleanFlag<boolean>;
22
22
  skipfiles: Interfaces.BooleanFlag<boolean>;
23
23
  'force-advanced-gen': Interfaces.BooleanFlag<boolean>;
24
+ 'no-ai': Interfaces.BooleanFlag<boolean>;
25
+ 'sql-output-dir': Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
26
+ 'skip-commands': Interfaces.BooleanFlag<boolean>;
24
27
  };
25
28
  static Usage: PluginUsage;
26
29
  protected Execute(): Promise<MJCLIResult>;
@@ -1 +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"}
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;;;;;;;MAqBV;IAEF,MAAM,CAAC,KAAK,EAAE,WAAW,CAiBvB;cAEc,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAkD/C;;;OAGG;cACa,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5D;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}