@memberjunction/sqlserver-dataprovider 5.4.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/UserCache.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { LogError, Metadata, UserInfo } from "@memberjunction/core";
2
- import { MJGlobal } from "@memberjunction/global";
2
+ import { MJGlobal, UUIDsEqual } from "@memberjunction/global";
3
3
  import sql from 'mssql';
4
4
  const SYSTEM_USER_ID = 'ecafccec-6a37-ef11-86d4-000d3a4e707e';
5
5
  /**
@@ -48,7 +48,7 @@ export class UserCache {
48
48
  const r = rResult.recordset;
49
49
  if (u) {
50
50
  this._users = u.map((user) => {
51
- user.UserRoles = r.filter((role) => role.UserID === user.ID);
51
+ user.UserRoles = r.filter((role) => UUIDsEqual(role.UserID, user.ID));
52
52
  const uI = new UserInfo(Metadata.Provider, user);
53
53
  return uI;
54
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"UserCache.js","sourceRoot":"","sources":["../src/UserCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,SAAS;IAKlB;QAHQ,qBAAgB,GAAW,6CAA6C,CAAC;QAI/E,IAAI,SAAS,CAAC,SAAS;YACnB,OAAO,SAAS,CAAC,SAAS,CAAC;aAC1B,CAAC;YACF,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAClC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC7C,OAAO,SAAS,CAAC,SAAS,CAAC;YAC/B,CAAC;YAED,iFAAiF;YACjF,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;gBACzB,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;gBAEzB,8HAA8H;gBAC9H,IAAI,CAAC;oBACD,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC;gBAEnD,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;IACxG,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,IAAwB,EAAE,qBAA8B;QAC3E,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,kBAAkB,UAAU,WAAW,CAAC,CAAC;YAC7E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,kBAAkB,UAAU,eAAe,CAAC,CAAC;YAClF,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;YAC5B,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;YAC5B,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;oBAChC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;oBAChD,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAA;gBAEF,4EAA4E;gBAC5E,IAAI,qBAAqB,IAAI,qBAAqB,GAAG,CAAC;oBACpD,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;oBAC5C,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YACX,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,QAAQ;QACjB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACzB,SAAS,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,SAAS,CAAC,SAAS,CAAC;IAC7B,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,KAAK;QACd,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAC,IAAY,EAAE,gBAAyB,KAAK;QAC5D,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC9B,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO,aAAa,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;QACvG,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"UserCache.js","sourceRoot":"","sources":["../src/UserCache.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  export { setupSQLServerClient } from "./config.js";
2
2
  export { SQLServerDataProvider } from "./SQLServerDataProvider.js";
3
- export { ExecuteSQLOptions, ExecuteSQLBatchOptions, SQLServerProviderConfigData, SqlLoggingOptions, SqlLoggingSession } from "./types.js";
4
- export { SqlLoggingSessionImpl } from "./SqlLogger.js";
3
+ export { ExecuteSQLOptions, SQLServerProviderConfigData, } from "./types.js";
5
4
  export { UserCache } from "./UserCache.js";
6
- export { QueryParameterProcessor } from "./queryParameterProcessor.js";
7
5
  export { NodeFileSystemProvider } from "./NodeFileSystemProvider.js";
8
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,6 @@
1
1
  export { setupSQLServerClient } from "./config.js";
2
2
  export { SQLServerDataProvider } from "./SQLServerDataProvider.js";
3
- export { SQLServerProviderConfigData } from "./types.js";
4
- export { SqlLoggingSessionImpl } from "./SqlLogger.js";
3
+ export { SQLServerProviderConfigData, } from "./types.js";
5
4
  export { UserCache } from "./UserCache.js";
6
- export { QueryParameterProcessor } from "./queryParameterProcessor.js";
7
5
  export { NodeFileSystemProvider } from "./NodeFileSystemProvider.js";
8
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAGL,2BAA2B,EAG5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAEL,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/types.d.ts CHANGED
@@ -55,17 +55,6 @@ export interface InternalSQLOptions {
55
55
  /** User context for logging */
56
56
  contextUser?: UserInfo;
57
57
  }
58
- /**
59
- * Configuration options for batch SQL execution
60
- */
61
- export interface ExecuteSQLBatchOptions {
62
- /** Optional description for this batch operation */
63
- description?: string;
64
- /** If true, this batch will not be logged to any logging session */
65
- ignoreLogging?: boolean;
66
- /** Whether this batch contains data mutation operations */
67
- isMutation?: boolean;
68
- }
69
58
  /**
70
59
  * Configuration data specific to SQL Server provider
71
60
  */
@@ -84,74 +73,4 @@ export interface SQLServerProviderConfigOptions {
84
73
  ConnectionPool: sql.ConnectionPool;
85
74
  CheckRefreshIntervalSeconds: number;
86
75
  }
87
- /**
88
- * Configuration options for SQL logging sessions
89
- */
90
- export interface SqlLoggingOptions {
91
- /** Whether to format output as a flyway migration file with schema placeholders */
92
- formatAsMigration?: boolean;
93
- /**
94
- * Optional default schema name to use for Flyway migrations for replacing schema names with
95
- * the placeholder ${flyway:defaultSchema}
96
- */
97
- defaultSchemaName?: string;
98
- /** Optional description to include as a comment at the start of the log */
99
- description?: string;
100
- /** Which types of statements to log: 'queries' (all), 'mutations' (only data changes), 'both' (default) */
101
- statementTypes?: 'queries' | 'mutations' | 'both';
102
- /** Optional batch separator to emit after each statement (e.g., "GO" for SQL Server) */
103
- batchSeparator?: string;
104
- /** Whether to pretty print SQL statements with proper formatting */
105
- prettyPrint?: boolean;
106
- /** Whether to log record change metadata wrapper SQL (default: false). When false, only core spCreate/spUpdate/spDelete calls are logged */
107
- logRecordChangeMetadata?: boolean;
108
- /** Whether to retain log files that contain no SQL statements (default: false). When false, empty log files are automatically deleted on dispose */
109
- retainEmptyLogFiles?: boolean;
110
- /** Optional user ID to filter SQL logging - only log SQL executed by this user */
111
- filterByUserId?: string;
112
- /** Optional friendly name for this logging session (for UI display) */
113
- sessionName?: string;
114
- /** Whether to output verbose debug information to console (default: false) */
115
- verboseOutput?: boolean;
116
- /**
117
- * Array of patterns to filter SQL statements.
118
- * Supports both regex (RegExp objects) and simple wildcard patterns (strings).
119
- * How these patterns are applied depends on filterType.
120
- *
121
- * String patterns support:
122
- * - Simple wildcards: "*AIPrompt*", "spCreate*", "*Run"
123
- * - Regex strings: "/spCreate.*Run/i", "/^SELECT.*FROM/i"
124
- *
125
- * RegExp examples:
126
- * - /spCreateAIPromptRun/i - Match stored procedure calls
127
- * - /^SELECT.*FROM.*vw.*Metadata/i - Match metadata view queries
128
- * - /INSERT INTO EntityFieldValue/i - Match specific inserts
129
- */
130
- filterPatterns?: (string | RegExp)[];
131
- /**
132
- * Determines how filterPatterns are applied:
133
- * - 'exclude': If ANY pattern matches, the SQL is NOT logged (default)
134
- * - 'include': If ANY pattern matches, the SQL IS logged
135
- *
136
- * Note: If filterPatterns is empty/undefined, all SQL is logged regardless of filterType.
137
- */
138
- filterType?: 'include' | 'exclude';
139
- }
140
- /**
141
- * Interface for SQL logging session with disposable pattern
142
- */
143
- export interface SqlLoggingSession {
144
- /** Unique session ID */
145
- readonly id: string;
146
- /** File path where SQL is being logged */
147
- readonly filePath: string;
148
- /** Session start time */
149
- readonly startTime: Date;
150
- /** Number of statements logged so far */
151
- readonly statementCount: number;
152
- /** Configuration options for this session */
153
- readonly options: SqlLoggingOptions;
154
- /** Dispose method to stop logging and clean up resources */
155
- dispose(): Promise<void>;
156
- }
157
76
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2GAA2G;IAC3G,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC;IACzB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;IACrC,qCAAqC;IACrC,eAAe,CAAC,EAAE,CAChB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,GAAG,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,OAAO,EACvB,UAAU,CAAC,EAAE,OAAO,EACpB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,WAAW,CAAC,EAAE,QAAQ,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gDAAgD;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,WAAW,CAAC,EAAE,QAAQ,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,sBAAsB,CAAC,8BAA8B,CAAC;IACrG;;OAEG;IACH,IAAI,cAAc,IAAI,GAAG,CAAC,cAAc,CAEvC;IAED;;OAEG;IACH,IAAI,2BAA2B,IAAI,MAAM,CAExC;gBAGC,cAAc,EAAE,GAAG,CAAC,cAAc,EAClC,gBAAgB,CAAC,EAAE,MAAM,EACzB,2BAA2B,GAAE,MAAU,EACvC,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,sBAAsB,GAAE,OAAc;CAazC;AAED,MAAM,WAAW,8BAA8B;IAC7C,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC;IACnC,2BAA2B,EAAE,MAAM,CAAC;CACrC"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,sBAAsB,EAAY,MAAM,sBAAsB,CAAC;AAyExE;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,sBAAsD;IACrG;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI,2BAA2B;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC;IAC/C,CAAC;IAED,YACE,cAAkC,EAClC,gBAAyB,EACzB,8BAAsC,CAAC,CAAC,sCAAsC,EAC9E,cAAyB,EACzB,cAAyB,EACzB,yBAAkC,IAAI;QAEtC,KAAK,CACH;YACE,cAAc,EAAE,cAAc;YAC9B,2BAA2B,EAAE,2BAA2B;SACzD,EACD,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,sBAAsB,CACvB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,sBAAsB,EAAY,MAAM,sBAAsB,CAAC;AA6DxE;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,sBAAsD;IACrG;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI,2BAA2B;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC;IAC/C,CAAC;IAED,YACE,cAAkC,EAClC,gBAAyB,EACzB,8BAAsC,CAAC,CAAC,sCAAsC,EAC9E,cAAyB,EACzB,cAAyB,EACzB,yBAAkC,IAAI;QAEtC,KAAK,CACH;YACE,cAAc,EAAE,cAAc;YAC9B,2BAA2B,EAAE,2BAA2B;SACzD,EACD,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,sBAAsB,CACvB,CAAC;IACJ,CAAC;CACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/sqlserver-dataprovider",
3
3
  "type": "module",
4
- "version": "5.4.0",
4
+ "version": "5.5.0",
5
5
  "description": "MemberJunction: SQL Server Client Data Provider",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -18,28 +18,27 @@
18
18
  "author": "MemberJunction.com",
19
19
  "license": "ISC",
20
20
  "devDependencies": {
21
- "@types/nunjucks": "^3.2.6",
22
21
  "@types/uuid": "^11.0.0",
23
22
  "ts-node-dev": "^2.0.0",
24
23
  "vitest": "^3.1.1",
25
24
  "typescript": "^5.9.3"
26
25
  },
27
26
  "dependencies": {
28
- "@memberjunction/actions": "5.4.0",
29
- "@memberjunction/actions-base": "5.4.0",
30
- "@memberjunction/ai": "5.4.0",
31
- "@memberjunction/ai-provider-bundle": "5.4.0",
32
- "@memberjunction/ai-vector-dupe": "5.4.0",
33
- "@memberjunction/aiengine": "5.4.0",
34
- "@memberjunction/core": "5.4.0",
35
- "@memberjunction/core-entities": "5.4.0",
36
- "@memberjunction/encryption": "5.4.0",
37
- "@memberjunction/global": "5.4.0",
38
- "@memberjunction/queue": "5.4.0",
27
+ "@memberjunction/actions": "5.5.0",
28
+ "@memberjunction/actions-base": "5.5.0",
29
+ "@memberjunction/ai": "5.5.0",
30
+ "@memberjunction/ai-provider-bundle": "5.5.0",
31
+ "@memberjunction/ai-vector-dupe": "5.5.0",
32
+ "@memberjunction/aiengine": "5.5.0",
33
+ "@memberjunction/core": "5.5.0",
34
+ "@memberjunction/core-entities": "5.5.0",
35
+ "@memberjunction/encryption": "5.5.0",
36
+ "@memberjunction/generic-database-provider": "5.5.0",
37
+ "@memberjunction/global": "5.5.0",
38
+ "@memberjunction/query-processor": "5.5.0",
39
+ "@memberjunction/queue": "5.5.0",
39
40
  "mssql": "^12.2.0",
40
- "nunjucks": "^3.2.4",
41
41
  "rxjs": "^7.8.2",
42
- "sql-formatter": "^15.7.0",
43
42
  "uuid": "^13.0.0"
44
43
  },
45
44
  "repository": {
@@ -1,70 +0,0 @@
1
- /**
2
- * @fileoverview SQL Logging Implementation for SQL Server Data Provider
3
- *
4
- * This module provides SQL statement logging functionality with file I/O,
5
- * filtering, formatting, and session management capabilities.
6
- *
7
- * @module @memberjunction/sqlserver-dataprovider/SqlLogger
8
- */
9
- import { SqlLoggingOptions, SqlLoggingSession } from './types.js';
10
- /**
11
- * Internal implementation of SqlLoggingSession that handles SQL statement logging to files.
12
- * This class manages file I/O, SQL formatting, and filtering based on session options.
13
- *
14
- * @internal
15
- */
16
- export declare class SqlLoggingSessionImpl implements SqlLoggingSession {
17
- readonly id: string;
18
- readonly filePath: string;
19
- readonly startTime: Date;
20
- readonly options: SqlLoggingOptions;
21
- private _statementCount;
22
- private _emittedStatementCount;
23
- private _fileHandle;
24
- private _disposed;
25
- private _compiledPatterns;
26
- constructor(id: string, filePath: string, options?: SqlLoggingOptions);
27
- /**
28
- * Gets the count of SQL statements actually written to the log file
29
- * @returns The number of emitted statements (after filtering)
30
- */
31
- get statementCount(): number;
32
- /**
33
- * Initializes the logging session by creating the log file and writing the header
34
- * @throws Error if file creation fails
35
- */
36
- initialize(): Promise<void>;
37
- /**
38
- * Logs a SQL statement to the file, applying filtering and formatting based on session options
39
- *
40
- * @param query - The SQL query to log
41
- * @param parameters - Optional parameters for the query
42
- * @param description - Optional description for this operation
43
- * @param isMutation - Whether this is a data mutation operation
44
- * @param simpleSQLFallback - Optional simple SQL to use if logRecordChangeMetadata=false
45
- */
46
- logSqlStatement(query: string, parameters?: any, description?: string, isMutation?: boolean, simpleSQLFallback?: string): Promise<void>;
47
- /**
48
- * Disposes of the logging session, writes the footer, closes the file, and optionally deletes empty files
49
- */
50
- dispose(): Promise<void>;
51
- private _generateHeader;
52
- private _generateFooter;
53
- /**
54
- * Format SQL using sql-formatter library with SQL Server dialect
55
- */
56
- private _prettyPrintSql;
57
- /**
58
- * Post-process SQL to ensure BEGIN, END, and EXEC keywords are on their own lines
59
- */
60
- private _postProcessBeginEnd;
61
- /**
62
- * Escapes ${...} patterns within SQL string literals to prevent Flyway from interpreting them as placeholders.
63
- * Converts ${templateVariable} to $' + '{templateVariable} within string literals.
64
- *
65
- * @param sql - The SQL statement to process
66
- * @returns The SQL with escaped template syntax within strings
67
- */
68
- private _escapeFlywaySyntaxInStrings;
69
- }
70
- //# sourceMappingURL=SqlLogger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SqlLogger.d.ts","sourceRoot":"","sources":["../src/SqlLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,SAAS,EAAE,IAAI,CAAC;IAChC,SAAgB,OAAO,EAAE,iBAAiB,CAAC;IAC3C,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,sBAAsB,CAAa;IAC3C,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,iBAAiB,CAAuB;gBAEpC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;IAYzE;;;OAGG;IACH,IAAW,cAAc,IAAI,MAAM,CAElC;IAED;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxC;;;;;;;;OAQG;IACU,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2J3J;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BrC,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;CASrC"}
package/dist/SqlLogger.js DELETED
@@ -1,311 +0,0 @@
1
- /**
2
- * @fileoverview SQL Logging Implementation for SQL Server Data Provider
3
- *
4
- * This module provides SQL statement logging functionality with file I/O,
5
- * filtering, formatting, and session management capabilities.
6
- *
7
- * @module @memberjunction/sqlserver-dataprovider/SqlLogger
8
- */
9
- import * as fs from 'fs';
10
- import * as path from 'path';
11
- import { format as formatSql } from 'sql-formatter';
12
- import { ensureRegExps } from '@memberjunction/global';
13
- /**
14
- * Internal implementation of SqlLoggingSession that handles SQL statement logging to files.
15
- * This class manages file I/O, SQL formatting, and filtering based on session options.
16
- *
17
- * @internal
18
- */
19
- export class SqlLoggingSessionImpl {
20
- constructor(id, filePath, options = {}) {
21
- this._statementCount = 0;
22
- this._emittedStatementCount = 0; // Track actually emitted statements
23
- this._fileHandle = null;
24
- this._disposed = false;
25
- this.id = id;
26
- this.filePath = filePath;
27
- this.startTime = new Date();
28
- this.options = options;
29
- // Compile patterns once during construction
30
- if (options.filterPatterns && options.filterPatterns.length > 0) {
31
- this._compiledPatterns = ensureRegExps(options.filterPatterns);
32
- }
33
- }
34
- /**
35
- * Gets the count of SQL statements actually written to the log file
36
- * @returns The number of emitted statements (after filtering)
37
- */
38
- get statementCount() {
39
- return this._emittedStatementCount; // Return actually emitted statements
40
- }
41
- /**
42
- * Initializes the logging session by creating the log file and writing the header
43
- * @throws Error if file creation fails
44
- */
45
- async initialize() {
46
- // Ensure directory exists
47
- const dir = path.dirname(this.filePath);
48
- await fs.promises.mkdir(dir, { recursive: true });
49
- // Open file for writing
50
- this._fileHandle = await fs.promises.open(this.filePath, 'w');
51
- // Write header comment
52
- const header = this._generateHeader();
53
- await this._fileHandle.writeFile(header);
54
- }
55
- /**
56
- * Logs a SQL statement to the file, applying filtering and formatting based on session options
57
- *
58
- * @param query - The SQL query to log
59
- * @param parameters - Optional parameters for the query
60
- * @param description - Optional description for this operation
61
- * @param isMutation - Whether this is a data mutation operation
62
- * @param simpleSQLFallback - Optional simple SQL to use if logRecordChangeMetadata=false
63
- */
64
- async logSqlStatement(query, parameters, description, isMutation = false, simpleSQLFallback) {
65
- const verbose = this.options.verboseOutput === true;
66
- if (verbose) {
67
- console.log(`=== SESSION ${this.id} LOG ATTEMPT ===`);
68
- console.log(`Session disposed: ${this._disposed}, File handle exists: ${!!this._fileHandle}`);
69
- console.log(`Query (first 100 chars): ${query.substring(0, 100)}...`);
70
- console.log(`isMutation: ${isMutation}, description: ${description || 'none'}`);
71
- console.log(`Options:`, this.options);
72
- }
73
- if (this._disposed || !this._fileHandle) {
74
- if (verbose) {
75
- console.log(`Session ${this.id}: Skipping - disposed or no file handle`);
76
- }
77
- return;
78
- }
79
- // Filter statements based on statementTypes option
80
- const statementTypes = this.options.statementTypes || 'both';
81
- if (verbose) {
82
- console.log(`Session ${this.id}: Statement filter check - statementTypes: ${statementTypes}, isMutation: ${isMutation}`);
83
- }
84
- if (statementTypes === 'mutations' && !isMutation) {
85
- if (verbose) {
86
- console.log(`Session ${this.id}: Skipping - mutations only but this is not a mutation`);
87
- }
88
- return; // Skip logging non-mutation statements
89
- }
90
- if (statementTypes === 'queries' && isMutation) {
91
- if (verbose) {
92
- console.log(`Session ${this.id}: Skipping - queries only but this is a mutation`);
93
- }
94
- return; // Skip logging mutation statements
95
- }
96
- if (verbose) {
97
- console.log(`Session ${this.id}: Statement passed type filters, proceeding to process`);
98
- }
99
- let logEntry = '';
100
- // Add description comment if provided
101
- if (description) {
102
- logEntry += `-- ${description}\n`;
103
- }
104
- // Process the SQL statement
105
- let processedQuery = query;
106
- // Use simple SQL fallback if this session has logRecordChangeMetadata=false (default) and fallback is provided
107
- if (this.options.logRecordChangeMetadata !== true && simpleSQLFallback) {
108
- processedQuery = simpleSQLFallback;
109
- // Update description to indicate we're using the simplified version
110
- if (description && !description.includes('(core SP call only)')) {
111
- logEntry = logEntry.replace(`-- ${description}\n`, `-- ${description} (core SP call only)\n`);
112
- }
113
- }
114
- // Apply pattern filtering on the processed query
115
- if (this._compiledPatterns && this._compiledPatterns.length > 0) {
116
- const filterType = this.options.filterType || 'exclude'; // Default to exclude
117
- const anyPatternMatches = this._compiledPatterns.some(pattern => pattern.test(processedQuery));
118
- if (verbose) {
119
- console.log(`Session ${this.id}: Pattern filter check - filterType: ${filterType}, patterns: ${this._compiledPatterns.length}, anyMatch: ${anyPatternMatches}`);
120
- console.log(`Session ${this.id}: Testing against processedQuery: ${processedQuery.substring(0, 100)}...`);
121
- }
122
- if (filterType === 'exclude' && anyPatternMatches) {
123
- if (verbose) {
124
- console.log(`Session ${this.id}: Skipping - exclude pattern matched`);
125
- }
126
- return; // Skip logging if any exclude pattern matches
127
- }
128
- if (filterType === 'include' && !anyPatternMatches) {
129
- if (verbose) {
130
- console.log(`Session ${this.id}: Skipping - no include pattern matched`);
131
- }
132
- return; // Skip logging if no include pattern matches
133
- }
134
- }
135
- // Replace schema names with Flyway placeholders if migration format
136
- if (this.options.formatAsMigration) {
137
- // Step 1: Escape ${...} patterns within SQL string literals to prevent Flyway from treating them as placeholders
138
- // This regex matches string literals and replaces ${...} with $' + '{...} within them
139
- processedQuery = this._escapeFlywaySyntaxInStrings(processedQuery);
140
- // Step 2: Replace schema names with Flyway placeholders
141
- const schemaName = this.options.defaultSchemaName;
142
- if (schemaName?.length > 0) {
143
- // Create a regex that matches the schema name with optional brackets
144
- const schemaRegex = new RegExp(`\\[?${schemaName}\\]?\\.`, 'g');
145
- processedQuery = processedQuery.replace(schemaRegex, '[${flyway:defaultSchema}].');
146
- }
147
- else {
148
- // no default schema name provided
149
- if (verbose) {
150
- console.warn(`Session ${this.id}: No default schema name provided for Flyway migration format, using [\${flyway:defaultSchema}] placeholder`);
151
- }
152
- }
153
- }
154
- // Apply pretty printing if enabled
155
- if (this.options.prettyPrint) {
156
- processedQuery = this._prettyPrintSql(processedQuery);
157
- }
158
- // Add the SQL statement
159
- logEntry += `${processedQuery};\n`;
160
- // Add parameter comment if parameters exist
161
- if (parameters) {
162
- if (Array.isArray(parameters)) {
163
- if (parameters.length > 0) {
164
- logEntry += `-- Parameters: ${parameters.map((p, i) => `@p${i}='${p}'`).join(', ')}\n`;
165
- }
166
- }
167
- else if (typeof parameters === 'object') {
168
- const paramStr = Object.entries(parameters)
169
- .map(([key, value]) => `@${key}='${value}'`)
170
- .join(', ');
171
- if (paramStr) {
172
- logEntry += `-- Parameters: ${paramStr}\n`;
173
- }
174
- }
175
- }
176
- // Add batch separator if specified
177
- if (this.options.batchSeparator) {
178
- logEntry += `\n${this.options.batchSeparator}\n`;
179
- }
180
- logEntry += '\n'; // Add blank line between statements
181
- if (verbose) {
182
- console.log(`Session ${this.id}: About to write log entry (${logEntry.length} chars)`);
183
- console.log(`Session ${this.id}: Log entry preview: ${logEntry.substring(0, 200)}...`);
184
- }
185
- try {
186
- await this._fileHandle.writeFile(logEntry);
187
- this._statementCount++;
188
- this._emittedStatementCount++; // Track actually emitted statements
189
- if (verbose) {
190
- console.log(`Session ${this.id}: Successfully wrote to file. New counts - total: ${this._statementCount}, emitted: ${this._emittedStatementCount}`);
191
- }
192
- }
193
- catch (error) {
194
- console.error(`Session ${this.id}: Error writing to file:`, error);
195
- throw error;
196
- }
197
- }
198
- /**
199
- * Disposes of the logging session, writes the footer, closes the file, and optionally deletes empty files
200
- */
201
- async dispose() {
202
- if (this._disposed) {
203
- return;
204
- }
205
- this._disposed = true;
206
- if (this._fileHandle) {
207
- // Write footer comment
208
- const footer = this._generateFooter();
209
- await this._fileHandle.writeFile(footer);
210
- await this._fileHandle.close();
211
- this._fileHandle = null;
212
- // Check if we should delete empty log files
213
- if (this._emittedStatementCount === 0 && !this.options.retainEmptyLogFiles) {
214
- try {
215
- await fs.promises.unlink(this.filePath);
216
- // Log that we deleted the empty file (optional)
217
- console.log(`Deleted empty SQL log file: ${this.filePath}`);
218
- }
219
- catch (error) {
220
- // Ignore errors during deletion (file might already be deleted, etc.)
221
- console.error(`Failed to delete empty SQL log file: ${this.filePath}`, error);
222
- }
223
- }
224
- }
225
- }
226
- _generateHeader() {
227
- let header = `-- SQL Logging Session\n`;
228
- header += `-- Session ID: ${this.id}\n`;
229
- header += `-- Started: ${this.startTime.toISOString()}\n`;
230
- if (this.options.description) {
231
- header += `-- Description: ${this.options.description}\n`;
232
- }
233
- if (this.options.formatAsMigration) {
234
- header += `-- Format: Migration-ready with Flyway schema placeholders\n`;
235
- }
236
- header += `-- Generated by MemberJunction SQLServerDataProvider\n`;
237
- header += `\n`;
238
- return header;
239
- }
240
- _generateFooter() {
241
- const endTime = new Date();
242
- const duration = endTime.getTime() - this.startTime.getTime();
243
- let footer = `\n-- End of SQL Logging Session\n`;
244
- footer += `-- Session ID: ${this.id}\n`;
245
- footer += `-- Completed: ${endTime.toISOString()}\n`;
246
- footer += `-- Duration: ${duration}ms\n`;
247
- footer += `-- Total Statements: ${this._emittedStatementCount}\n`;
248
- return footer;
249
- }
250
- /**
251
- * Format SQL using sql-formatter library with SQL Server dialect
252
- */
253
- _prettyPrintSql(sql) {
254
- if (!sql)
255
- return sql;
256
- try {
257
- let formatted = formatSql(sql, {
258
- language: 'tsql', // SQL Server Transact-SQL dialect
259
- tabWidth: 2,
260
- keywordCase: 'upper',
261
- functionCase: 'upper',
262
- dataTypeCase: 'upper',
263
- linesBetweenQueries: 1,
264
- });
265
- // Post-process to fix BEGIN/END formatting
266
- formatted = this._postProcessBeginEnd(formatted);
267
- return formatted;
268
- }
269
- catch (error) {
270
- // If formatting fails, return original SQL
271
- console.warn('SQL formatting failed, returning original:', error);
272
- return sql;
273
- }
274
- }
275
- /**
276
- * Post-process SQL to ensure BEGIN, END, and EXEC keywords are on their own lines
277
- */
278
- _postProcessBeginEnd(sql) {
279
- if (!sql)
280
- return sql;
281
- // Fix BEGIN keyword - ensure it's on its own line
282
- // Match: any non-whitespace followed by space(s) followed by BEGIN (word boundary)
283
- sql = sql.replace(/(\S)\s+(BEGIN\b)/g, '$1\n$2');
284
- // Fix BEGIN followed by other keywords - ensure what follows BEGIN is on a new line
285
- // Match: BEGIN followed by space(s) followed by non-whitespace
286
- sql = sql.replace(/(BEGIN\b)\s+(\S)/g, '$1\n$2');
287
- // Fix END keyword - ensure it's on its own line
288
- // Match: any non-whitespace followed by space(s) followed by END (word boundary)
289
- sql = sql.replace(/(\S)\s+(END\b)/g, '$1\n$2');
290
- // Fix EXEC keyword - ensure it's on its own line
291
- // Match: any non-whitespace followed by space(s) followed by EXEC (word boundary)
292
- sql = sql.replace(/(\S)\s+(EXEC\b)/g, '$1\n$2');
293
- return sql;
294
- }
295
- /**
296
- * Escapes ${...} patterns within SQL string literals to prevent Flyway from interpreting them as placeholders.
297
- * Converts ${templateVariable} to $' + '{templateVariable} within string literals.
298
- *
299
- * @param sql - The SQL statement to process
300
- * @returns The SQL with escaped template syntax within strings
301
- */
302
- _escapeFlywaySyntaxInStrings(sql) {
303
- // Regex /\$\{/g matches all occurrences of "${" literally:
304
- // - \$ escapes the dollar sign (which is a special regex character)
305
- // - \{ escapes the opening brace (also a special regex character)
306
- // - /g flag ensures all occurrences are replaced, not just the first one
307
- // The replacement "$'+'{ " breaks up the ${ pattern so Flyway won't interpret it as a placeholder
308
- return sql.replaceAll(/\$\{/g, "$$'+'{");
309
- }
310
- }
311
- //# sourceMappingURL=SqlLogger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SqlLogger.js","sourceRoot":"","sources":["../src/SqlLogger.ts"],"names":[],"mappings":"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"}