@memberjunction/server 2.111.0 → 2.112.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/dist/agents/skip-agent.d.ts +4 -4
  2. package/dist/agents/skip-agent.d.ts.map +1 -1
  3. package/dist/agents/skip-agent.js +808 -951
  4. package/dist/agents/skip-agent.js.map +1 -1
  5. package/dist/agents/skip-sdk.d.ts +1 -1
  6. package/dist/agents/skip-sdk.d.ts.map +1 -1
  7. package/dist/agents/skip-sdk.js +53 -43
  8. package/dist/agents/skip-sdk.js.map +1 -1
  9. package/dist/apolloServer/index.js +1 -1
  10. package/dist/auth/AuthProviderFactory.d.ts +1 -1
  11. package/dist/auth/AuthProviderFactory.d.ts.map +1 -1
  12. package/dist/auth/AuthProviderFactory.js +1 -3
  13. package/dist/auth/AuthProviderFactory.js.map +1 -1
  14. package/dist/auth/BaseAuthProvider.d.ts +1 -1
  15. package/dist/auth/BaseAuthProvider.d.ts.map +1 -1
  16. package/dist/auth/BaseAuthProvider.js +3 -2
  17. package/dist/auth/BaseAuthProvider.js.map +1 -1
  18. package/dist/auth/IAuthProvider.d.ts +1 -1
  19. package/dist/auth/IAuthProvider.d.ts.map +1 -1
  20. package/dist/auth/exampleNewUserSubClass.d.ts.map +1 -1
  21. package/dist/auth/exampleNewUserSubClass.js +1 -1
  22. package/dist/auth/exampleNewUserSubClass.js.map +1 -1
  23. package/dist/auth/index.d.ts +1 -1
  24. package/dist/auth/index.d.ts.map +1 -1
  25. package/dist/auth/index.js +6 -6
  26. package/dist/auth/index.js.map +1 -1
  27. package/dist/auth/initializeProviders.js +1 -1
  28. package/dist/auth/initializeProviders.js.map +1 -1
  29. package/dist/auth/newUsers.d.ts +1 -1
  30. package/dist/auth/newUsers.d.ts.map +1 -1
  31. package/dist/auth/newUsers.js +7 -7
  32. package/dist/auth/newUsers.js.map +1 -1
  33. package/dist/auth/providers/Auth0Provider.d.ts +1 -1
  34. package/dist/auth/providers/Auth0Provider.d.ts.map +1 -1
  35. package/dist/auth/providers/Auth0Provider.js +1 -1
  36. package/dist/auth/providers/Auth0Provider.js.map +1 -1
  37. package/dist/auth/providers/CognitoProvider.d.ts +1 -1
  38. package/dist/auth/providers/CognitoProvider.d.ts.map +1 -1
  39. package/dist/auth/providers/CognitoProvider.js +3 -6
  40. package/dist/auth/providers/CognitoProvider.js.map +1 -1
  41. package/dist/auth/providers/GoogleProvider.d.ts +1 -1
  42. package/dist/auth/providers/GoogleProvider.d.ts.map +1 -1
  43. package/dist/auth/providers/GoogleProvider.js +1 -1
  44. package/dist/auth/providers/GoogleProvider.js.map +1 -1
  45. package/dist/auth/providers/MSALProvider.d.ts +1 -1
  46. package/dist/auth/providers/MSALProvider.d.ts.map +1 -1
  47. package/dist/auth/providers/MSALProvider.js +1 -1
  48. package/dist/auth/providers/MSALProvider.js.map +1 -1
  49. package/dist/auth/providers/OktaProvider.d.ts +1 -1
  50. package/dist/auth/providers/OktaProvider.d.ts.map +1 -1
  51. package/dist/auth/providers/OktaProvider.js +1 -1
  52. package/dist/auth/providers/OktaProvider.js.map +1 -1
  53. package/dist/config.d.ts.map +1 -1
  54. package/dist/config.js +22 -10
  55. package/dist/config.js.map +1 -1
  56. package/dist/context.d.ts +1 -1
  57. package/dist/context.d.ts.map +1 -1
  58. package/dist/context.js +9 -7
  59. package/dist/context.js.map +1 -1
  60. package/dist/entitySubclasses/entityPermissions.server.d.ts +1 -1
  61. package/dist/entitySubclasses/entityPermissions.server.d.ts.map +1 -1
  62. package/dist/entitySubclasses/entityPermissions.server.js +1 -1
  63. package/dist/entitySubclasses/entityPermissions.server.js.map +1 -1
  64. package/dist/generated/generated.d.ts +648 -648
  65. package/dist/generated/generated.d.ts.map +1 -1
  66. package/dist/generated/generated.js +2986 -1133
  67. package/dist/generated/generated.js.map +1 -1
  68. package/dist/generic/KeyInputOutputTypes.d.ts +1 -1
  69. package/dist/generic/KeyInputOutputTypes.d.ts.map +1 -1
  70. package/dist/generic/KeyInputOutputTypes.js +1 -1
  71. package/dist/generic/KeyInputOutputTypes.js.map +1 -1
  72. package/dist/generic/ResolverBase.d.ts +1 -1
  73. package/dist/generic/ResolverBase.d.ts.map +1 -1
  74. package/dist/generic/ResolverBase.js +15 -10
  75. package/dist/generic/ResolverBase.js.map +1 -1
  76. package/dist/generic/RunViewResolver.d.ts +1 -1
  77. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  78. package/dist/generic/RunViewResolver.js +15 -15
  79. package/dist/generic/RunViewResolver.js.map +1 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +18 -9
  82. package/dist/index.js.map +1 -1
  83. package/dist/resolvers/ActionResolver.d.ts +2 -2
  84. package/dist/resolvers/ActionResolver.d.ts.map +1 -1
  85. package/dist/resolvers/ActionResolver.js +28 -30
  86. package/dist/resolvers/ActionResolver.js.map +1 -1
  87. package/dist/resolvers/AskSkipResolver.d.ts +2 -2
  88. package/dist/resolvers/AskSkipResolver.d.ts.map +1 -1
  89. package/dist/resolvers/AskSkipResolver.js +60 -50
  90. package/dist/resolvers/AskSkipResolver.js.map +1 -1
  91. package/dist/resolvers/ComponentRegistryResolver.d.ts.map +1 -1
  92. package/dist/resolvers/ComponentRegistryResolver.js +36 -38
  93. package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
  94. package/dist/resolvers/CreateQueryResolver.d.ts +1 -1
  95. package/dist/resolvers/CreateQueryResolver.d.ts.map +1 -1
  96. package/dist/resolvers/CreateQueryResolver.js +43 -40
  97. package/dist/resolvers/CreateQueryResolver.js.map +1 -1
  98. package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
  99. package/dist/resolvers/DatasetResolver.js +1 -1
  100. package/dist/resolvers/DatasetResolver.js.map +1 -1
  101. package/dist/resolvers/EntityRecordNameResolver.d.ts +1 -1
  102. package/dist/resolvers/EntityRecordNameResolver.d.ts.map +1 -1
  103. package/dist/resolvers/EntityRecordNameResolver.js +1 -1
  104. package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
  105. package/dist/resolvers/EntityResolver.d.ts.map +1 -1
  106. package/dist/resolvers/EntityResolver.js +1 -1
  107. package/dist/resolvers/EntityResolver.js.map +1 -1
  108. package/dist/resolvers/FileCategoryResolver.js +1 -1
  109. package/dist/resolvers/FileCategoryResolver.js.map +1 -1
  110. package/dist/resolvers/FileResolver.js +1 -1
  111. package/dist/resolvers/FileResolver.js.map +1 -1
  112. package/dist/resolvers/GetDataContextDataResolver.d.ts +1 -1
  113. package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
  114. package/dist/resolvers/GetDataContextDataResolver.js +5 -5
  115. package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
  116. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  117. package/dist/resolvers/GetDataResolver.js +8 -6
  118. package/dist/resolvers/GetDataResolver.js.map +1 -1
  119. package/dist/resolvers/MergeRecordsResolver.d.ts +3 -3
  120. package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
  121. package/dist/resolvers/MergeRecordsResolver.js +3 -3
  122. package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
  123. package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts +1 -1
  124. package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts.map +1 -1
  125. package/dist/resolvers/PotentialDuplicateRecordResolver.js +1 -1
  126. package/dist/resolvers/PotentialDuplicateRecordResolver.js.map +1 -1
  127. package/dist/resolvers/QueryResolver.d.ts.map +1 -1
  128. package/dist/resolvers/QueryResolver.js +11 -11
  129. package/dist/resolvers/QueryResolver.js.map +1 -1
  130. package/dist/resolvers/ReportResolver.js +1 -1
  131. package/dist/resolvers/ReportResolver.js.map +1 -1
  132. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  133. package/dist/resolvers/RunAIAgentResolver.js +27 -28
  134. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  135. package/dist/resolvers/RunAIPromptResolver.d.ts.map +1 -1
  136. package/dist/resolvers/RunAIPromptResolver.js +31 -31
  137. package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
  138. package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
  139. package/dist/resolvers/RunTemplateResolver.js +9 -9
  140. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  141. package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
  142. package/dist/resolvers/SqlLoggingConfigResolver.js +10 -10
  143. package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
  144. package/dist/resolvers/SyncDataResolver.d.ts +1 -1
  145. package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
  146. package/dist/resolvers/SyncDataResolver.js +15 -14
  147. package/dist/resolvers/SyncDataResolver.js.map +1 -1
  148. package/dist/resolvers/SyncRolesUsersResolver.d.ts +1 -1
  149. package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
  150. package/dist/resolvers/SyncRolesUsersResolver.js +48 -44
  151. package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
  152. package/dist/resolvers/TaskResolver.d.ts.map +1 -1
  153. package/dist/resolvers/TaskResolver.js +7 -7
  154. package/dist/resolvers/TaskResolver.js.map +1 -1
  155. package/dist/resolvers/TransactionGroupResolver.d.ts +1 -1
  156. package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
  157. package/dist/resolvers/TransactionGroupResolver.js +12 -12
  158. package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
  159. package/dist/resolvers/UserFavoriteResolver.d.ts +1 -1
  160. package/dist/resolvers/UserFavoriteResolver.d.ts.map +1 -1
  161. package/dist/resolvers/UserFavoriteResolver.js +1 -1
  162. package/dist/resolvers/UserFavoriteResolver.js.map +1 -1
  163. package/dist/resolvers/UserViewResolver.d.ts.map +1 -1
  164. package/dist/resolvers/UserViewResolver.js.map +1 -1
  165. package/dist/rest/EntityCRUDHandler.d.ts +1 -1
  166. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
  167. package/dist/rest/EntityCRUDHandler.js +14 -16
  168. package/dist/rest/EntityCRUDHandler.js.map +1 -1
  169. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
  170. package/dist/rest/RESTEndpointHandler.js +23 -25
  171. package/dist/rest/RESTEndpointHandler.js.map +1 -1
  172. package/dist/rest/ViewOperationsHandler.d.ts +1 -1
  173. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  174. package/dist/rest/ViewOperationsHandler.js +17 -21
  175. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  176. package/dist/scheduler/LearningCycleScheduler.d.ts.map +1 -1
  177. package/dist/scheduler/LearningCycleScheduler.js.map +1 -1
  178. package/dist/services/ScheduledJobsService.d.ts.map +1 -1
  179. package/dist/services/ScheduledJobsService.js +4 -6
  180. package/dist/services/ScheduledJobsService.js.map +1 -1
  181. package/dist/services/TaskOrchestrator.d.ts +1 -1
  182. package/dist/services/TaskOrchestrator.d.ts.map +1 -1
  183. package/dist/services/TaskOrchestrator.js +30 -30
  184. package/dist/services/TaskOrchestrator.js.map +1 -1
  185. package/dist/types.d.ts +3 -3
  186. package/dist/types.d.ts.map +1 -1
  187. package/dist/types.js +0 -1
  188. package/dist/types.js.map +1 -1
  189. package/dist/util.d.ts +1 -1
  190. package/dist/util.d.ts.map +1 -1
  191. package/dist/util.js +2 -2
  192. package/dist/util.js.map +1 -1
  193. package/package.json +36 -37
  194. package/src/agents/skip-agent.ts +1067 -1200
  195. package/src/agents/skip-sdk.ts +877 -851
  196. package/src/apolloServer/index.ts +2 -2
  197. package/src/auth/AuthProviderFactory.ts +8 -14
  198. package/src/auth/BaseAuthProvider.ts +5 -4
  199. package/src/auth/IAuthProvider.ts +2 -2
  200. package/src/auth/exampleNewUserSubClass.ts +9 -2
  201. package/src/auth/index.ts +31 -26
  202. package/src/auth/initializeProviders.ts +3 -3
  203. package/src/auth/newUsers.ts +166 -134
  204. package/src/auth/providers/Auth0Provider.ts +5 -5
  205. package/src/auth/providers/CognitoProvider.ts +7 -10
  206. package/src/auth/providers/GoogleProvider.ts +4 -5
  207. package/src/auth/providers/MSALProvider.ts +5 -5
  208. package/src/auth/providers/OktaProvider.ts +6 -7
  209. package/src/config.ts +63 -54
  210. package/src/context.ts +42 -30
  211. package/src/entitySubclasses/entityPermissions.server.ts +3 -3
  212. package/src/generated/generated.ts +48130 -39930
  213. package/src/generic/KeyInputOutputTypes.ts +3 -6
  214. package/src/generic/ResolverBase.ts +119 -78
  215. package/src/generic/RunViewResolver.ts +27 -23
  216. package/src/index.ts +66 -42
  217. package/src/resolvers/ActionResolver.ts +46 -57
  218. package/src/resolvers/AskSkipResolver.ts +607 -533
  219. package/src/resolvers/ComponentRegistryResolver.ts +547 -562
  220. package/src/resolvers/CreateQueryResolver.ts +683 -655
  221. package/src/resolvers/DatasetResolver.ts +5 -6
  222. package/src/resolvers/EntityCommunicationsResolver.ts +1 -1
  223. package/src/resolvers/EntityRecordNameResolver.ts +9 -5
  224. package/src/resolvers/EntityResolver.ts +9 -7
  225. package/src/resolvers/FileCategoryResolver.ts +2 -2
  226. package/src/resolvers/FileResolver.ts +4 -4
  227. package/src/resolvers/GetDataContextDataResolver.ts +106 -118
  228. package/src/resolvers/GetDataResolver.ts +194 -205
  229. package/src/resolvers/MergeRecordsResolver.ts +5 -5
  230. package/src/resolvers/PotentialDuplicateRecordResolver.ts +1 -1
  231. package/src/resolvers/QueryResolver.ts +95 -78
  232. package/src/resolvers/ReportResolver.ts +2 -2
  233. package/src/resolvers/RunAIAgentResolver.ts +818 -828
  234. package/src/resolvers/RunAIPromptResolver.ts +693 -709
  235. package/src/resolvers/RunTemplateResolver.ts +105 -103
  236. package/src/resolvers/SqlLoggingConfigResolver.ts +69 -72
  237. package/src/resolvers/SyncDataResolver.ts +386 -352
  238. package/src/resolvers/SyncRolesUsersResolver.ts +387 -350
  239. package/src/resolvers/TaskResolver.ts +110 -115
  240. package/src/resolvers/TransactionGroupResolver.ts +143 -138
  241. package/src/resolvers/UserFavoriteResolver.ts +17 -8
  242. package/src/resolvers/UserViewResolver.ts +17 -12
  243. package/src/rest/EntityCRUDHandler.ts +291 -268
  244. package/src/rest/RESTEndpointHandler.ts +782 -776
  245. package/src/rest/ViewOperationsHandler.ts +191 -195
  246. package/src/scheduler/LearningCycleScheduler.ts +8 -52
  247. package/src/services/ScheduledJobsService.ts +129 -132
  248. package/src/services/TaskOrchestrator.ts +792 -776
  249. package/src/types.ts +15 -9
  250. package/src/util.ts +112 -109
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { DatabaseProviderBase, UserInfo } from '@memberjunction/core';
1
+ import { DatabaseProviderBase, UserInfo } from '@memberjunction/global';
2
2
  import { UserViewEntityExtended } from '@memberjunction/core-entities';
3
3
  import { GraphQLSchema } from 'graphql';
4
4
  import sql from 'mssql';
@@ -29,7 +29,7 @@ export type AppContext = {
29
29
  dataSources: DataSourceInfo[];
30
30
 
31
31
  /**
32
- * Per-request DatabaseProviderBase instances
32
+ * Per-request DatabaseProviderBase instances
33
33
  */
34
34
  providers: Array<ProviderInfo>;
35
35
  };
@@ -39,16 +39,23 @@ export class ProviderInfo {
39
39
  type: 'Admin' | 'Read-Write' | 'Read-Only' | 'Other';
40
40
  }
41
41
 
42
- export class DataSourceInfo {
42
+ export class DataSourceInfo {
43
43
  dataSource: sql.ConnectionPool;
44
44
  host: string;
45
45
  port: number;
46
46
  instance?: string;
47
47
  database: string;
48
48
  userName: string;
49
- type: "Admin" | "Read-Write" | "Read-Only" | "Other";
49
+ type: 'Admin' | 'Read-Write' | 'Read-Only' | 'Other';
50
50
 
51
- constructor(init: {dataSource: sql.ConnectionPool, type: "Admin" | "Read-Write" | "Read-Only" | "Other", host: string, port: number, database: string, userName: string} ) {
51
+ constructor(init: {
52
+ dataSource: sql.ConnectionPool;
53
+ type: 'Admin' | 'Read-Write' | 'Read-Only' | 'Other';
54
+ host: string;
55
+ port: number;
56
+ database: string;
57
+ userName: string;
58
+ }) {
52
59
  this.dataSource = init.dataSource;
53
60
  this.host = init.host;
54
61
  this.port = init.port;
@@ -56,7 +63,7 @@ export class DataSourceInfo {
56
63
  this.userName = init.userName;
57
64
  this.type = init.type;
58
65
  }
59
- };
66
+ }
60
67
 
61
68
  export type DirectiveBuilder = {
62
69
  typeDefs: string;
@@ -80,10 +87,9 @@ export type RunViewGenericParams = {
80
87
  forceAuditLog?: boolean;
81
88
  auditLogDescription?: string;
82
89
  resultType?: string;
83
- userPayload?: UserPayload;
90
+ userPayload?: UserPayload;
84
91
  };
85
92
 
86
-
87
93
  export class MJServerEvent {
88
94
  type: 'setupComplete' | 'requestReceived' | 'requestCompleted' | 'requestFailed';
89
95
  dataSources: DataSourceInfo[];
@@ -106,4 +112,4 @@ export async function raiseEvent(type: MJServerEvent['type'], dataSources: DataS
106
112
  mje.event = MJEventType.ComponentEvent;
107
113
  mje.eventCode = MJ_SERVER_EVENT_CODE;
108
114
  MJGlobal.Instance.RaiseEvent(mje);
109
- }
115
+ }
package/src/util.ts CHANGED
@@ -6,7 +6,7 @@ import { URL } from 'url';
6
6
  import { z } from 'zod';
7
7
  import { DataSourceInfo, ProviderInfo } from './types';
8
8
  import sql from 'mssql';
9
- import { DatabaseProviderBase } from '@memberjunction/core';
9
+ import { DatabaseProviderBase } from '@memberjunction/global';
10
10
 
11
11
  const gzip = promisify(gzipCallback);
12
12
 
@@ -15,7 +15,7 @@ type StreamCallback = (jsonObject: any) => void;
15
15
  /**
16
16
  * Utility function to handle HTTP/HTTPS requests with optional compression, custom headers, and streaming response callback for JSON objects.
17
17
  * This function accumulates data chunks and parses complete JSON objects, assuming newline-delimited JSON in the stream.
18
- *
18
+ *
19
19
  * @param {string} url - The URL to which the request is sent.
20
20
  * @param {any} payload - The payload to be sent with the request.
21
21
  * @param {boolean} useCompression - Flag to determine if payload compression should be used.
@@ -23,7 +23,13 @@ type StreamCallback = (jsonObject: any) => void;
23
23
  * @param {StreamCallback} [streamCallback] - Optional callback for handling streaming JSON objects.
24
24
  * @returns {Promise<any[]>} - A promise that resolves to an array of all JSON objects received during the streaming process.
25
25
  */
26
- export async function sendPostRequest(url: string, payload: any, useCompression: boolean, headers: Record<string, string> | null, streamCallback?: StreamCallback): Promise<any[]> {
26
+ export async function sendPostRequest(
27
+ url: string,
28
+ payload: any,
29
+ useCompression: boolean,
30
+ headers: Record<string, string> | null,
31
+ streamCallback?: StreamCallback
32
+ ): Promise<any[]> {
27
33
  return new Promise(async (resolve, reject) => {
28
34
  try {
29
35
  const { protocol, hostname, port, pathname } = new URL(url);
@@ -41,7 +47,7 @@ export async function sendPostRequest(url: string, payload: any, useCompression:
41
47
  } else {
42
48
  data = Buffer.from(JSON.stringify(payload));
43
49
  }
44
-
50
+
45
51
  const options = {
46
52
  hostname,
47
53
  port: port || (protocol === 'https:' ? 443 : 80),
@@ -49,18 +55,18 @@ export async function sendPostRequest(url: string, payload: any, useCompression:
49
55
  method: 'POST',
50
56
  headers: {
51
57
  'Content-Type': 'application/json',
52
- ...headers
53
- }
58
+ ...headers,
59
+ },
54
60
  };
55
-
61
+
56
62
  const request = protocol === 'https:' ? httpsRequest : httpRequest;
57
63
  const jsonObjects: any[] = [];
58
64
  let buffer = '';
59
-
65
+
60
66
  const req = request(options, (res) => {
61
67
  const gunzip = createGunzip();
62
68
  const stream = res.headers['content-encoding'] === 'gzip' ? res.pipe(gunzip) : res;
63
-
69
+
64
70
  stream.on('data', (chunk) => {
65
71
  buffer += chunk;
66
72
  let boundary;
@@ -78,7 +84,7 @@ export async function sendPostRequest(url: string, payload: any, useCompression:
78
84
  }
79
85
  }
80
86
  });
81
-
87
+
82
88
  stream.on('end', () => {
83
89
  // Attempt to parse any remaining data in buffer in case it's a complete JSON object
84
90
  if (buffer.trim()) {
@@ -95,124 +101,121 @@ export async function sendPostRequest(url: string, payload: any, useCompression:
95
101
  resolve(jsonObjects);
96
102
  });
97
103
  });
98
-
104
+
99
105
  req.on('error', (e) => {
100
106
  const err = z.object({ message: z.string() }).safeParse(e);
101
107
  console.error(`Error in sendPostRequest().req.on(error): ${err.success ? err.data.message : e}`);
102
108
  reject(e);
103
109
  });
104
-
110
+
105
111
  req.write(data);
106
112
  req.end();
107
- }
108
- catch (e) {
113
+ } catch (e) {
109
114
  const err = z.object({ message: z.string() }).safeParse(e);
110
- console.error(`Error in sendPostRequest: ${err.success ? err.data.message : e}`)
115
+ console.error(`Error in sendPostRequest: ${err.success ? err.data.message : e}`);
111
116
  reject(e);
112
117
  }
113
- }
114
- );
118
+ });
115
119
  }
116
120
 
117
-
118
- /**
119
- * Returns the read-only data source if it exists, otherwise returns the read-write data source if options is not provided or if options.allowFallbackToReadWrite is true.
120
- * @param dataSources
121
- * @param options
122
- * @returns
123
- */
124
- export function GetReadOnlyDataSource(dataSources: DataSourceInfo[], options?: {allowFallbackToReadWrite: boolean}): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
125
- const readOnlyDataSource = dataSources.find((ds) => ds.type === 'Read-Only');
126
- if (readOnlyDataSource) {
127
- return extendConnectionPoolWithQuery(readOnlyDataSource.dataSource);
128
- }
129
- else if (!options || options.allowFallbackToReadWrite) {
130
- // default behavior for backward compatibility prior to MJ 2.22.3 where we introduced this functionality was to have a single
131
- // connection, so for back-compatability, if we don't have a read-only data source, we'll fall back to the read-write data source
132
- const readWriteDataSource = dataSources.find((ds) => ds.type === 'Read-Write');
133
- if (readWriteDataSource) {
134
- return extendConnectionPoolWithQuery(readWriteDataSource.dataSource);
135
- }
121
+ /**
122
+ * Returns the read-only data source if it exists, otherwise returns the read-write data source if options is not provided or if options.allowFallbackToReadWrite is true.
123
+ * @param dataSources
124
+ * @param options
125
+ * @returns
126
+ */
127
+ export function GetReadOnlyDataSource(
128
+ dataSources: DataSourceInfo[],
129
+ options?: { allowFallbackToReadWrite: boolean }
130
+ ): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
131
+ const readOnlyDataSource = dataSources.find((ds) => ds.type === 'Read-Only');
132
+ if (readOnlyDataSource) {
133
+ return extendConnectionPoolWithQuery(readOnlyDataSource.dataSource);
134
+ } else if (!options || options.allowFallbackToReadWrite) {
135
+ // default behavior for backward compatibility prior to MJ 2.22.3 where we introduced this functionality was to have a single
136
+ // connection, so for back-compatability, if we don't have a read-only data source, we'll fall back to the read-write data source
137
+ const readWriteDataSource = dataSources.find((ds) => ds.type === 'Read-Write');
138
+ if (readWriteDataSource) {
139
+ return extendConnectionPoolWithQuery(readWriteDataSource.dataSource);
136
140
  }
137
- throw new Error('No suitable data source found');
138
141
  }
142
+ throw new Error('No suitable data source found');
143
+ }
139
144
 
140
- /**
141
- * Returns the read-only provider if it exists, otherwise returns the original provider if options is not provided or if options.allowFallbackToReadWrite is true.
142
- * @param options
143
- * @returns
144
- */
145
- export function GetReadOnlyProvider(providers: Array<ProviderInfo>, options?: {allowFallbackToReadWrite: boolean}): DatabaseProviderBase {
146
- if (!providers || providers.length === 0)
147
- return null; // no providers available
148
-
149
- const readOnlyProvider = providers.find((p) => p.type === 'Read-Only');
150
- if (readOnlyProvider) {
151
- return readOnlyProvider.provider;
152
- }
153
- else if (options?.allowFallbackToReadWrite) {
154
- return providers[0].provider; // if no read-only provider is provided, use the original provider since we are allowed to fallback to read-write
155
- }
156
- else {
157
- return null; // no read only provider available and we are not allowed to fallback to read-write
158
- }
145
+ /**
146
+ * Returns the read-only provider if it exists, otherwise returns the original provider if options is not provided or if options.allowFallbackToReadWrite is true.
147
+ * @param options
148
+ * @returns
149
+ */
150
+ export function GetReadOnlyProvider(providers: Array<ProviderInfo>, options?: { allowFallbackToReadWrite: boolean }): DatabaseProviderBase {
151
+ if (!providers || providers.length === 0) return null; // no providers available
152
+
153
+ const readOnlyProvider = providers.find((p) => p.type === 'Read-Only');
154
+ if (readOnlyProvider) {
155
+ return readOnlyProvider.provider;
156
+ } else if (options?.allowFallbackToReadWrite) {
157
+ return providers[0].provider; // if no read-only provider is provided, use the original provider since we are allowed to fallback to read-write
158
+ } else {
159
+ return null; // no read only provider available and we are not allowed to fallback to read-write
159
160
  }
161
+ }
160
162
 
161
- /**
162
- * Returns the read-write provider if it exists, otherwise returns the original provider if options is not provided or if options.allowFallbackToReadOnly is true.
163
- * @param options
164
- * @returns
165
- */
166
- export function GetReadWriteProvider(providers: Array<ProviderInfo>, options?: {allowFallbackToReadOnly: boolean}): DatabaseProviderBase {
167
- if (!providers || providers.length === 0)
168
- return null; // no providers available
169
-
170
- const readWriteProvider = providers.find((p) => p.type === 'Read-Write');
171
- if (readWriteProvider) {
172
- return readWriteProvider.provider;
173
- }
174
- else if (options?.allowFallbackToReadOnly) {
175
- return GetReadOnlyProvider(providers, { allowFallbackToReadWrite: false }); // if no read-write provider is provided, use the read-only provider since we are allowed to fallback to read-only
176
- }
177
- else {
178
- return null; // no read-write provider available and we are not allowed to fallback to read-only
179
- }
163
+ /**
164
+ * Returns the read-write provider if it exists, otherwise returns the original provider if options is not provided or if options.allowFallbackToReadOnly is true.
165
+ * @param options
166
+ * @returns
167
+ */
168
+ export function GetReadWriteProvider(providers: Array<ProviderInfo>, options?: { allowFallbackToReadOnly: boolean }): DatabaseProviderBase {
169
+ if (!providers || providers.length === 0) return null; // no providers available
170
+
171
+ const readWriteProvider = providers.find((p) => p.type === 'Read-Write');
172
+ if (readWriteProvider) {
173
+ return readWriteProvider.provider;
174
+ } else if (options?.allowFallbackToReadOnly) {
175
+ return GetReadOnlyProvider(providers, { allowFallbackToReadWrite: false }); // if no read-write provider is provided, use the read-only provider since we are allowed to fallback to read-only
176
+ } else {
177
+ return null; // no read-write provider available and we are not allowed to fallback to read-only
180
178
  }
179
+ }
181
180
 
182
- /**
183
- * Returns the read-write data source if it exists, otherwise throws an error.
184
- * @param dataSources
185
- * @returns
186
- */
187
- export function GetReadWriteDataSource(dataSources: DataSourceInfo[]): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
188
- const readWriteDataSource = dataSources.find((ds) => ds.type === 'Read-Write');
189
- if (readWriteDataSource) {
190
- return extendConnectionPoolWithQuery(readWriteDataSource.dataSource);
191
- }
192
- throw new Error('No suitable read-write data source found');
181
+ /**
182
+ * Returns the read-write data source if it exists, otherwise throws an error.
183
+ * @param dataSources
184
+ * @returns
185
+ */
186
+ export function GetReadWriteDataSource(
187
+ dataSources: DataSourceInfo[]
188
+ ): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
189
+ const readWriteDataSource = dataSources.find((ds) => ds.type === 'Read-Write');
190
+ if (readWriteDataSource) {
191
+ return extendConnectionPoolWithQuery(readWriteDataSource.dataSource);
193
192
  }
193
+ throw new Error('No suitable read-write data source found');
194
+ }
194
195
 
195
- /**
196
- * Extends a ConnectionPool with a query method that returns results in the format expected by generated code
197
- * This provides backwards compatibility with code that expects TypeORM-style query results
198
- */
199
- export function extendConnectionPoolWithQuery(pool: sql.ConnectionPool): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
200
- const extendedPool = pool as any;
201
- extendedPool.query = async (sqlQuery: string, parameters?: any): Promise<any[]> => {
202
- const request = new sql.Request(pool);
203
- // Add parameters if provided
204
- if (parameters) {
205
- if (Array.isArray(parameters)) {
206
- parameters.forEach((value, index) => {
207
- request.input(`p${index}`, value);
208
- });
209
- // Replace ? with @p0, @p1, etc. in the query
210
- let paramIndex = 0;
211
- sqlQuery = sqlQuery.replace(/\?/g, () => `@p${paramIndex++}`);
212
- }
196
+ /**
197
+ * Extends a ConnectionPool with a query method that returns results in the format expected by generated code
198
+ * This provides backwards compatibility with code that expects TypeORM-style query results
199
+ */
200
+ export function extendConnectionPoolWithQuery(
201
+ pool: sql.ConnectionPool
202
+ ): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
203
+ const extendedPool = pool as any;
204
+ extendedPool.query = async (sqlQuery: string, parameters?: any): Promise<any[]> => {
205
+ const request = new sql.Request(pool);
206
+ // Add parameters if provided
207
+ if (parameters) {
208
+ if (Array.isArray(parameters)) {
209
+ parameters.forEach((value, index) => {
210
+ request.input(`p${index}`, value);
211
+ });
212
+ // Replace ? with @p0, @p1, etc. in the query
213
+ let paramIndex = 0;
214
+ sqlQuery = sqlQuery.replace(/\?/g, () => `@p${paramIndex++}`);
213
215
  }
214
- const result = await request.query(sqlQuery);
215
- return result.recordset || [];
216
- };
217
- return extendedPool;
218
- }
216
+ }
217
+ const result = await request.query(sqlQuery);
218
+ return result.recordset || [];
219
+ };
220
+ return extendedPool;
221
+ }