@memberjunction/codegen-lib 5.51.2 → 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.
- package/dist/Database/codeGenDatabaseProvider.d.ts +24 -0
- package/dist/Database/codeGenDatabaseProvider.d.ts.map +1 -1
- package/dist/Database/codeGenDatabaseProvider.js +30 -0
- package/dist/Database/codeGenDatabaseProvider.js.map +1 -1
- package/dist/Database/manage-metadata.d.ts +18 -1
- package/dist/Database/manage-metadata.d.ts.map +1 -1
- package/dist/Database/manage-metadata.js +74 -29
- package/dist/Database/manage-metadata.js.map +1 -1
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts +18 -0
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts.map +1 -1
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js +46 -0
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js.map +1 -1
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts +9 -0
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts.map +1 -1
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js +14 -0
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js.map +1 -1
- package/dist/Misc/sql_logging.d.ts +13 -2
- package/dist/Misc/sql_logging.d.ts.map +1 -1
- package/dist/Misc/sql_logging.js +47 -7
- package/dist/Misc/sql_logging.js.map +1 -1
- package/dist/Misc/sql_text.d.ts +18 -0
- package/dist/Misc/sql_text.d.ts.map +1 -0
- package/dist/Misc/sql_text.js +38 -0
- package/dist/Misc/sql_text.js.map +1 -0
- package/package.json +27 -27
|
@@ -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;
|
|
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"}
|
package/dist/Misc/sql_logging.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
133
|
+
endsWithBatchSeparator = endsWithBatchSeparatorLine(trimmed, 'GO');
|
|
126
134
|
contents = endsWithBatchSeparator ? trimmed : `${trimmed};`;
|
|
127
135
|
}
|
|
128
|
-
|
|
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.
|
|
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.
|
|
37
|
-
"@memberjunction/actions-base": "5.51.
|
|
38
|
-
"@memberjunction/cli-core": "5.51.
|
|
39
|
-
"@memberjunction/ai": "5.51.
|
|
40
|
-
"@memberjunction/ai-core-plus": "5.51.
|
|
41
|
-
"@memberjunction/ai-prompts": "5.51.
|
|
42
|
-
"@memberjunction/ai-provider-bundle": "5.51.
|
|
43
|
-
"@memberjunction/aiengine": "5.51.
|
|
44
|
-
"@memberjunction/config": "5.51.
|
|
45
|
-
"@memberjunction/core": "5.51.
|
|
46
|
-
"@memberjunction/core-entities": "5.51.
|
|
47
|
-
"@memberjunction/core-entities-server": "5.51.
|
|
48
|
-
"@memberjunction/generic-database-provider": "5.51.
|
|
49
|
-
"@memberjunction/external-data-sources": "5.51.
|
|
50
|
-
"@memberjunction/external-data-source-postgres": "5.51.
|
|
51
|
-
"@memberjunction/external-data-source-snowflake": "5.51.
|
|
52
|
-
"@memberjunction/external-data-source-mongodb": "5.51.
|
|
53
|
-
"@memberjunction/external-data-source-sqlserver": "5.51.
|
|
54
|
-
"@memberjunction/external-data-source-mysql": "5.51.
|
|
55
|
-
"@memberjunction/external-data-source-oracle": "5.51.
|
|
56
|
-
"@memberjunction/sql-parser": "5.51.
|
|
57
|
-
"@memberjunction/global": "5.51.
|
|
58
|
-
"@memberjunction/server-bootstrap-lite": "5.51.
|
|
59
|
-
"@memberjunction/sql-dialect": "5.51.
|
|
60
|
-
"@memberjunction/sqlserver-dataprovider": "5.51.
|
|
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.
|
|
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",
|