@memberjunction/codegen-lib 5.51.1 → 5.51.3

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.
@@ -24,9 +24,12 @@ export declare class SQLLogging {
24
24
  * @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.
25
25
  * @param includeBatchSeparator - if true, appends a batch separator (e.g., GO for SQL Server) after the SQL. Use this when the next statement in the migration needs to reference schema changes made by this statement (e.g., ALTER TABLE ADD column followed by UPDATE referencing that column). Defaults to false.
26
26
  * @param batchSeparator - the batch separator string to use (e.g., 'GO' for SQL Server). Only used when includeBatchSeparator is true.
27
+ * @param requiresOwnBatch - the unit must be the ONLY statement in its batch — e.g. `CREATE OR ALTER VIEW`,
28
+ * which T-SQL requires to be first in its batch as well as last. Emits a separator BEFORE the unit
29
+ * unless the log already ends at a batch boundary, and one after it. Implies `includeBatchSeparator`.
27
30
  * @returns
28
31
  */
29
- static appendToSQLLogFile(contents: string, description?: string, isRecurringScript?: boolean, includeBatchSeparator?: boolean, batchSeparator?: string): Promise<void>;
32
+ static appendToSQLLogFile(contents: string, description?: string, isRecurringScript?: boolean, includeBatchSeparator?: boolean, batchSeparator?: string, requiresOwnBatch?: boolean): Promise<void>;
30
33
  /**
31
34
  * Executes the given SQL query using the given DataSource object.
32
35
  * If the appendToLogFile parameter is true, the query will also be appended to the log file.
@@ -35,9 +38,17 @@ export declare class SQLLogging {
35
38
  * @param query - The SQL query to execute.
36
39
  * @param description - A description of the query to append to the log file.
37
40
  * @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.
41
+ * @param requiresOwnBatch - see {@link appendToSQLLogFile}: the unit must be alone in its batch.
38
42
  * @returns - The result of the query execution.
39
43
  */
40
- static LogSQLAndExecute(ds: CodeGenConnection, query: string, description?: string, isRecurringScript?: boolean, includeBatchSeparator?: boolean, batchSeparator?: string): Promise<any>;
44
+ static LogSQLAndExecute(ds: CodeGenConnection, query: string, description?: string, isRecurringScript?: boolean, includeBatchSeparator?: boolean, batchSeparator?: string, requiresOwnBatch?: boolean): Promise<any>;
45
+ /** Bytes read from the end of the log to decide whether it ends at a batch boundary. */
46
+ private static readonly BOUNDARY_TAIL_BYTES;
47
+ /**
48
+ * True when the log is empty or its last non-blank line is `separator` — i.e. the next unit starts
49
+ * a new batch. Reads only the tail of the file, so it holds whoever wrote the previous unit.
50
+ */
51
+ protected static logEndsAtBatchBoundary(separator: string): boolean;
41
52
  protected static getFileLength(filePath: string): number;
42
53
  protected static convertSQLLogToFlywaySchema(): void;
43
54
  /**
@@ -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;AASxE;;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;WACa,cAAc;WA6Cb,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;AAUxE;;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;WACa,cAAc;WA6Cb,gBAAgB;IAa9B,SAAS,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM;IAe1C;;;;;;OAMG;IACH;;;;;;;;;;;OAWG;WACiB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAE,OAAe,EAAE,qBAAqB,GAAE,OAAe,EAAE,cAAc,GAAE,MAAa,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D3O;;;;;;;;;;MAUE;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,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAM5P,wFAAwF;IACxF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAO;IAElD;;;OAGG;IACH,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAkBnE,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,5 +1,6 @@
1
1
  import { configInfo, mj_core_schema, dbPlatform } from "../Config/config.js";
2
2
  import { logError, logStatus } from "./status_logging.js";
3
+ import { endsWithBatchSeparatorLine, trimTrailingStatementTerminators } from './sql_text.js';
3
4
  import * as fs from 'fs';
4
5
  import path from 'path';
5
6
  const DEFAULT_SS_SQL_OUTPUT_FOLDER = './migrations/v5/';
@@ -91,9 +92,12 @@ export class SQLLogging {
91
92
  * @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.
92
93
  * @param includeBatchSeparator - if true, appends a batch separator (e.g., GO for SQL Server) after the SQL. Use this when the next statement in the migration needs to reference schema changes made by this statement (e.g., ALTER TABLE ADD column followed by UPDATE referencing that column). Defaults to false.
93
94
  * @param batchSeparator - the batch separator string to use (e.g., 'GO' for SQL Server). Only used when includeBatchSeparator is true.
95
+ * @param requiresOwnBatch - the unit must be the ONLY statement in its batch — e.g. `CREATE OR ALTER VIEW`,
96
+ * which T-SQL requires to be first in its batch as well as last. Emits a separator BEFORE the unit
97
+ * unless the log already ends at a batch boundary, and one after it. Implies `includeBatchSeparator`.
94
98
  * @returns
95
99
  */
96
- static async appendToSQLLogFile(contents, description, isRecurringScript = false, includeBatchSeparator = false, batchSeparator = 'GO') {
100
+ static async appendToSQLLogFile(contents, description, isRecurringScript = false, includeBatchSeparator = false, batchSeparator = 'GO', requiresOwnBatch = false) {
97
101
  try {
98
102
  if (isRecurringScript && SQLLogging.OmitRecurringScriptsFromLog) {
99
103
  return; // is a recurring script and the flag to omit recurring scripts is set
@@ -120,15 +124,26 @@ export class SQLLogging {
120
124
  // generateBaseView / generateCRUDCreate / generateRootIDFunction return strings
121
125
  // ending in `GO`. Appending `;` produces `GO;`, which SSMS and sqlcmd reject
122
126
  // ("Incorrect syntax near ';'"). Detect and skip the `;` append in that case.
123
- const trimmed = contents.replace(/[\s;]+$/g, '');
127
+ // Linear scans, not `/[\s;]+$/` or `/(^|\n)\s*GO\s*$/`: a unit can carry caller-supplied SQL
128
+ // (a TransitiveView body), and those patterns backtrack quadratically on a long interior
129
+ // whitespace run (see ./sql_text).
130
+ const trimmed = trimTrailingStatementTerminators(contents);
131
+ let endsWithBatchSeparator = false;
124
132
  if (trimmed.length > 0) {
125
- const endsWithBatchSeparator = /(^|\n)\s*GO\s*$/i.test(trimmed);
133
+ endsWithBatchSeparator = endsWithBatchSeparatorLine(trimmed, 'GO');
126
134
  contents = endsWithBatchSeparator ? trimmed : `${trimmed};`;
127
135
  }
128
- contents = includeBatchSeparator
136
+ // A unit that must be alone in its batch also needs a separator BEFORE it: the log only ever
137
+ // appends, so whatever was logged last would otherwise share its batch.
138
+ const leadingSeparator = requiresOwnBatch && !!batchSeparator && !SQLLogging.logEndsAtBatchBoundary(batchSeparator)
139
+ ? `${batchSeparator}\n\n`
140
+ : '';
141
+ // Emit a separator after the unit when the caller asked for one or the unit must be alone in
142
+ // its batch.
143
+ contents = includeBatchSeparator || requiresOwnBatch
129
144
  ? `${contents}\n${batchSeparator}\n\n`
130
145
  : `${contents}\n\n`;
131
- fs.appendFileSync(SQLLogging.SQLLoggingFilePath, contents);
146
+ fs.appendFileSync(SQLLogging.SQLLoggingFilePath, `${leadingSeparator}${contents}`);
132
147
  }
133
148
  catch (ex) {
134
149
  logError("Unable to log metadata SQL text to file", ex);
@@ -142,13 +157,38 @@ export class SQLLogging {
142
157
  * @param query - The SQL query to execute.
143
158
  * @param description - A description of the query to append to the log file.
144
159
  * @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.
160
+ * @param requiresOwnBatch - see {@link appendToSQLLogFile}: the unit must be alone in its batch.
145
161
  * @returns - The result of the query execution.
146
162
  */
147
- static async LogSQLAndExecute(ds, query, description, isRecurringScript = false, includeBatchSeparator = false, batchSeparator = 'GO') {
148
- SQLLogging.appendToSQLLogFile(query, description, isRecurringScript, includeBatchSeparator, batchSeparator);
163
+ static async LogSQLAndExecute(ds, query, description, isRecurringScript = false, includeBatchSeparator = false, batchSeparator = 'GO', requiresOwnBatch = false) {
164
+ SQLLogging.appendToSQLLogFile(query, description, isRecurringScript, includeBatchSeparator, batchSeparator, requiresOwnBatch);
149
165
  const result = await ds.query(query);
150
166
  return result.recordset;
151
167
  }
168
+ /** Bytes read from the end of the log to decide whether it ends at a batch boundary. */
169
+ static { this.BOUNDARY_TAIL_BYTES = 512; }
170
+ /**
171
+ * True when the log is empty or its last non-blank line is `separator` — i.e. the next unit starts
172
+ * a new batch. Reads only the tail of the file, so it holds whoever wrote the previous unit.
173
+ */
174
+ static logEndsAtBatchBoundary(separator) {
175
+ const filePath = SQLLogging.SQLLoggingFilePath;
176
+ const size = SQLLogging.getFileLength(filePath);
177
+ if (size === 0) {
178
+ return true;
179
+ }
180
+ const length = Math.min(size, SQLLogging.BOUNDARY_TAIL_BYTES);
181
+ const bytes = new Uint8Array(length);
182
+ const fd = fs.openSync(filePath, 'r');
183
+ try {
184
+ fs.readSync(fd, bytes, 0, length, size - length);
185
+ }
186
+ finally {
187
+ fs.closeSync(fd);
188
+ }
189
+ const tail = new TextDecoder('utf-8').decode(bytes);
190
+ return tail.trim().length === 0 || endsWithBatchSeparatorLine(tail, separator);
191
+ }
152
192
  static getFileLength(filePath) {
153
193
  try {
154
194
  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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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Linear-time helpers for normalizing SQL text before it is embedded in a larger statement or
3
+ * appended to a CodeGen migration log.
4
+ *
5
+ * Why not regex: SQL here is often caller- or configuration-supplied (a `TransitiveView` body, a
6
+ * generated routine), and the obvious patterns — `/[\s;]+$/` to trim, `/(^|\n)\s*GO\s*$/` to detect a
7
+ * trailing batch separator — backtrack quadratically on a long whitespace run that is not at the end
8
+ * of the string (CodeQL js/polynomial-redos). A 200,000-character run took ~32s. These scans are
9
+ * O(n) for any input.
10
+ */
11
+ /** Strips trailing whitespace and `;` statement terminators. */
12
+ export declare function trimTrailingStatementTerminators(sql: string): string;
13
+ /**
14
+ * True when the last non-blank line of `text` is exactly `separator` (case-insensitive, surrounding
15
+ * whitespace ignored) — e.g. a unit that already closes its own T-SQL batch with `GO`.
16
+ */
17
+ export declare function endsWithBatchSeparatorLine(text: string, separator: string): boolean;
18
+ //# sourceMappingURL=sql_text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql_text.d.ts","sourceRoot":"","sources":["../../src/Misc/sql_text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,gEAAgE;AAChE,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAUnF"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Linear-time helpers for normalizing SQL text before it is embedded in a larger statement or
3
+ * appended to a CodeGen migration log.
4
+ *
5
+ * Why not regex: SQL here is often caller- or configuration-supplied (a `TransitiveView` body, a
6
+ * generated routine), and the obvious patterns — `/[\s;]+$/` to trim, `/(^|\n)\s*GO\s*$/` to detect a
7
+ * trailing batch separator — backtrack quadratically on a long whitespace run that is not at the end
8
+ * of the string (CodeQL js/polynomial-redos). A 200,000-character run took ~32s. These scans are
9
+ * O(n) for any input.
10
+ */
11
+ /** True for the characters `\s` matches in the regexes these helpers replace. */
12
+ function isWhitespace(ch) {
13
+ return /\s/.test(ch);
14
+ }
15
+ /** Strips trailing whitespace and `;` statement terminators. */
16
+ export function trimTrailingStatementTerminators(sql) {
17
+ let end = sql.length;
18
+ while (end > 0 && (sql[end - 1] === ';' || isWhitespace(sql[end - 1]))) {
19
+ end--;
20
+ }
21
+ return sql.slice(0, end);
22
+ }
23
+ /**
24
+ * True when the last non-blank line of `text` is exactly `separator` (case-insensitive, surrounding
25
+ * whitespace ignored) — e.g. a unit that already closes its own T-SQL batch with `GO`.
26
+ */
27
+ export function endsWithBatchSeparatorLine(text, separator) {
28
+ if (!separator) {
29
+ return false;
30
+ }
31
+ let end = text.length;
32
+ while (end > 0 && isWhitespace(text[end - 1])) {
33
+ end--;
34
+ }
35
+ const lineStart = text.lastIndexOf('\n', end - 1) + 1;
36
+ return text.slice(lineStart, end).trim().toUpperCase() === separator.trim().toUpperCase();
37
+ }
38
+ //# sourceMappingURL=sql_text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql_text.js","sourceRoot":"","sources":["../../src/Misc/sql_text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,iFAAiF;AACjF,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,gCAAgC,CAAC,GAAW;IAC1D,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACrB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,EAAE,CAAC;IACR,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAY,EAAE,SAAiB;IACxE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,OAAO,GAAG,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,EAAE,CAAC;IACR,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC5F,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/codegen-lib",
3
3
  "type": "module",
4
- "version": "5.51.1",
4
+ "version": "5.51.3",
5
5
  "description": "Library used by the CodeGen executable to generate code for the MemberJunction platform. Contains a reusable object model that can be called by any other server-side application/library.",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -33,37 +33,37 @@
33
33
  "vitest": "^3.1.1"
34
34
  },
35
35
  "dependencies": {
36
- "@memberjunction/actions": "5.51.1",
37
- "@memberjunction/actions-base": "5.51.1",
38
- "@memberjunction/cli-core": "5.51.1",
39
- "@memberjunction/ai": "5.51.1",
40
- "@memberjunction/ai-core-plus": "5.51.1",
41
- "@memberjunction/ai-prompts": "5.51.1",
42
- "@memberjunction/ai-provider-bundle": "5.51.1",
43
- "@memberjunction/aiengine": "5.51.1",
44
- "@memberjunction/config": "5.51.1",
45
- "@memberjunction/core": "5.51.1",
46
- "@memberjunction/core-entities": "5.51.1",
47
- "@memberjunction/core-entities-server": "5.51.1",
48
- "@memberjunction/generic-database-provider": "5.51.1",
49
- "@memberjunction/external-data-sources": "5.51.1",
50
- "@memberjunction/external-data-source-postgres": "5.51.1",
51
- "@memberjunction/external-data-source-snowflake": "5.51.1",
52
- "@memberjunction/external-data-source-mongodb": "5.51.1",
53
- "@memberjunction/external-data-source-sqlserver": "5.51.1",
54
- "@memberjunction/external-data-source-mysql": "5.51.1",
55
- "@memberjunction/external-data-source-oracle": "5.51.1",
56
- "@memberjunction/sql-parser": "5.51.1",
57
- "@memberjunction/global": "5.51.1",
58
- "@memberjunction/server-bootstrap-lite": "5.51.1",
59
- "@memberjunction/sql-dialect": "5.51.1",
60
- "@memberjunction/sqlserver-dataprovider": "5.51.1",
36
+ "@memberjunction/actions": "5.51.3",
37
+ "@memberjunction/actions-base": "5.51.3",
38
+ "@memberjunction/cli-core": "5.51.3",
39
+ "@memberjunction/ai": "5.51.3",
40
+ "@memberjunction/ai-core-plus": "5.51.3",
41
+ "@memberjunction/ai-prompts": "5.51.3",
42
+ "@memberjunction/ai-provider-bundle": "5.51.3",
43
+ "@memberjunction/aiengine": "5.51.3",
44
+ "@memberjunction/config": "5.51.3",
45
+ "@memberjunction/core": "5.51.3",
46
+ "@memberjunction/core-entities": "5.51.3",
47
+ "@memberjunction/core-entities-server": "5.51.3",
48
+ "@memberjunction/generic-database-provider": "5.51.3",
49
+ "@memberjunction/external-data-sources": "5.51.3",
50
+ "@memberjunction/external-data-source-postgres": "5.51.3",
51
+ "@memberjunction/external-data-source-snowflake": "5.51.3",
52
+ "@memberjunction/external-data-source-mongodb": "5.51.3",
53
+ "@memberjunction/external-data-source-sqlserver": "5.51.3",
54
+ "@memberjunction/external-data-source-mysql": "5.51.3",
55
+ "@memberjunction/external-data-source-oracle": "5.51.3",
56
+ "@memberjunction/sql-parser": "5.51.3",
57
+ "@memberjunction/global": "5.51.3",
58
+ "@memberjunction/server-bootstrap-lite": "5.51.3",
59
+ "@memberjunction/sql-dialect": "5.51.3",
60
+ "@memberjunction/sqlserver-dataprovider": "5.51.3",
61
61
  "@oclif/core": "^3.27.0",
62
62
  "cosmiconfig": "9.0.0",
63
63
  "fs-extra": "^11.3.3",
64
64
  "glob": "^13.0.1",
65
65
  "mssql": "^12.2.0",
66
- "@memberjunction/postgresql-dataprovider": "5.51.1",
66
+ "@memberjunction/postgresql-dataprovider": "5.51.3",
67
67
  "pg": "^8.13.3",
68
68
  "ora-classic": "^5.4.2",
69
69
  "tree-kill": "^1.2.2",