@memberjunction/server 2.112.0 → 2.113.1
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/agents/skip-agent.d.ts +4 -4
- package/dist/agents/skip-agent.d.ts.map +1 -1
- package/dist/agents/skip-agent.js +951 -808
- package/dist/agents/skip-agent.js.map +1 -1
- package/dist/agents/skip-sdk.d.ts +1 -1
- package/dist/agents/skip-sdk.d.ts.map +1 -1
- package/dist/agents/skip-sdk.js +43 -53
- package/dist/agents/skip-sdk.js.map +1 -1
- package/dist/apolloServer/index.js +1 -1
- package/dist/auth/AuthProviderFactory.d.ts +1 -1
- package/dist/auth/AuthProviderFactory.d.ts.map +1 -1
- package/dist/auth/AuthProviderFactory.js +3 -1
- package/dist/auth/AuthProviderFactory.js.map +1 -1
- package/dist/auth/BaseAuthProvider.d.ts +1 -1
- package/dist/auth/BaseAuthProvider.d.ts.map +1 -1
- package/dist/auth/BaseAuthProvider.js +2 -3
- package/dist/auth/BaseAuthProvider.js.map +1 -1
- package/dist/auth/IAuthProvider.d.ts +1 -1
- package/dist/auth/IAuthProvider.d.ts.map +1 -1
- package/dist/auth/exampleNewUserSubClass.d.ts.map +1 -1
- package/dist/auth/exampleNewUserSubClass.js +1 -1
- package/dist/auth/exampleNewUserSubClass.js.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +6 -6
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/initializeProviders.js +1 -1
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/auth/newUsers.d.ts +1 -1
- package/dist/auth/newUsers.d.ts.map +1 -1
- package/dist/auth/newUsers.js +7 -7
- package/dist/auth/newUsers.js.map +1 -1
- package/dist/auth/providers/Auth0Provider.d.ts +1 -1
- package/dist/auth/providers/Auth0Provider.d.ts.map +1 -1
- package/dist/auth/providers/Auth0Provider.js +1 -1
- package/dist/auth/providers/Auth0Provider.js.map +1 -1
- package/dist/auth/providers/CognitoProvider.d.ts +1 -1
- package/dist/auth/providers/CognitoProvider.d.ts.map +1 -1
- package/dist/auth/providers/CognitoProvider.js +6 -3
- package/dist/auth/providers/CognitoProvider.js.map +1 -1
- package/dist/auth/providers/GoogleProvider.d.ts +1 -1
- package/dist/auth/providers/GoogleProvider.d.ts.map +1 -1
- package/dist/auth/providers/GoogleProvider.js +1 -1
- package/dist/auth/providers/GoogleProvider.js.map +1 -1
- package/dist/auth/providers/MSALProvider.d.ts +1 -1
- package/dist/auth/providers/MSALProvider.d.ts.map +1 -1
- package/dist/auth/providers/MSALProvider.js +1 -1
- package/dist/auth/providers/MSALProvider.js.map +1 -1
- package/dist/auth/providers/OktaProvider.d.ts +1 -1
- package/dist/auth/providers/OktaProvider.d.ts.map +1 -1
- package/dist/auth/providers/OktaProvider.js +1 -1
- package/dist/auth/providers/OktaProvider.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -22
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +7 -9
- package/dist/context.js.map +1 -1
- package/dist/entitySubclasses/entityPermissions.server.d.ts +1 -1
- package/dist/entitySubclasses/entityPermissions.server.d.ts.map +1 -1
- package/dist/entitySubclasses/entityPermissions.server.js +1 -1
- package/dist/entitySubclasses/entityPermissions.server.js.map +1 -1
- package/dist/generated/generated.d.ts +788 -658
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +2050 -3054
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/KeyInputOutputTypes.d.ts +1 -1
- package/dist/generic/KeyInputOutputTypes.d.ts.map +1 -1
- package/dist/generic/KeyInputOutputTypes.js +1 -1
- package/dist/generic/KeyInputOutputTypes.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +1 -1
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +10 -15
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +1 -1
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +15 -15
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -18
- package/dist/index.js.map +1 -1
- package/dist/resolvers/ActionResolver.d.ts +2 -2
- package/dist/resolvers/ActionResolver.d.ts.map +1 -1
- package/dist/resolvers/ActionResolver.js +30 -28
- package/dist/resolvers/ActionResolver.js.map +1 -1
- package/dist/resolvers/AskSkipResolver.d.ts +2 -2
- package/dist/resolvers/AskSkipResolver.d.ts.map +1 -1
- package/dist/resolvers/AskSkipResolver.js +50 -60
- package/dist/resolvers/AskSkipResolver.js.map +1 -1
- package/dist/resolvers/ComponentRegistryResolver.d.ts.map +1 -1
- package/dist/resolvers/ComponentRegistryResolver.js +38 -36
- package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
- package/dist/resolvers/CreateQueryResolver.d.ts +1 -1
- package/dist/resolvers/CreateQueryResolver.d.ts.map +1 -1
- package/dist/resolvers/CreateQueryResolver.js +40 -43
- package/dist/resolvers/CreateQueryResolver.js.map +1 -1
- package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
- package/dist/resolvers/DatasetResolver.js +1 -1
- package/dist/resolvers/DatasetResolver.js.map +1 -1
- package/dist/resolvers/EntityRecordNameResolver.d.ts +1 -1
- package/dist/resolvers/EntityRecordNameResolver.d.ts.map +1 -1
- package/dist/resolvers/EntityRecordNameResolver.js +1 -1
- package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
- package/dist/resolvers/EntityResolver.d.ts.map +1 -1
- package/dist/resolvers/EntityResolver.js +1 -1
- package/dist/resolvers/EntityResolver.js.map +1 -1
- package/dist/resolvers/FileCategoryResolver.js +1 -1
- package/dist/resolvers/FileCategoryResolver.js.map +1 -1
- package/dist/resolvers/FileResolver.js +1 -1
- package/dist/resolvers/FileResolver.js.map +1 -1
- package/dist/resolvers/GetDataContextDataResolver.d.ts +1 -1
- package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataContextDataResolver.js +5 -5
- package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +6 -8
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.d.ts +3 -3
- package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.js +3 -3
- package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts.map +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.js +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.js.map +1 -1
- package/dist/resolvers/QueryResolver.d.ts.map +1 -1
- package/dist/resolvers/QueryResolver.js +11 -11
- package/dist/resolvers/QueryResolver.js.map +1 -1
- package/dist/resolvers/ReportResolver.js +1 -1
- package/dist/resolvers/ReportResolver.js.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +28 -27
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.js +31 -31
- package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
- package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
- package/dist/resolvers/RunTemplateResolver.js +9 -9
- package/dist/resolvers/RunTemplateResolver.js.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +10 -10
- package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
- package/dist/resolvers/SyncDataResolver.d.ts +1 -1
- package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
- package/dist/resolvers/SyncDataResolver.js +14 -15
- package/dist/resolvers/SyncDataResolver.js.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.d.ts +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.js +44 -48
- package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
- package/dist/resolvers/TaskResolver.d.ts.map +1 -1
- package/dist/resolvers/TaskResolver.js +7 -7
- package/dist/resolvers/TaskResolver.js.map +1 -1
- package/dist/resolvers/TransactionGroupResolver.d.ts +1 -1
- package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
- package/dist/resolvers/TransactionGroupResolver.js +12 -12
- package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
- package/dist/resolvers/UserFavoriteResolver.d.ts +1 -1
- package/dist/resolvers/UserFavoriteResolver.d.ts.map +1 -1
- package/dist/resolvers/UserFavoriteResolver.js +1 -1
- package/dist/resolvers/UserFavoriteResolver.js.map +1 -1
- package/dist/resolvers/UserViewResolver.d.ts.map +1 -1
- package/dist/resolvers/UserViewResolver.js.map +1 -1
- package/dist/rest/EntityCRUDHandler.d.ts +1 -1
- package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
- package/dist/rest/EntityCRUDHandler.js +16 -14
- package/dist/rest/EntityCRUDHandler.js.map +1 -1
- package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
- package/dist/rest/RESTEndpointHandler.js +25 -23
- package/dist/rest/RESTEndpointHandler.js.map +1 -1
- package/dist/rest/ViewOperationsHandler.d.ts +1 -1
- package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
- package/dist/rest/ViewOperationsHandler.js +21 -17
- package/dist/rest/ViewOperationsHandler.js.map +1 -1
- package/dist/scheduler/LearningCycleScheduler.d.ts.map +1 -1
- package/dist/scheduler/LearningCycleScheduler.js.map +1 -1
- package/dist/services/ScheduledJobsService.d.ts.map +1 -1
- package/dist/services/ScheduledJobsService.js +6 -4
- package/dist/services/ScheduledJobsService.js.map +1 -1
- package/dist/services/TaskOrchestrator.d.ts +1 -1
- package/dist/services/TaskOrchestrator.d.ts.map +1 -1
- package/dist/services/TaskOrchestrator.js +30 -30
- package/dist/services/TaskOrchestrator.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +2 -2
- package/dist/util.js.map +1 -1
- package/package.json +39 -36
- package/src/agents/skip-agent.ts +1200 -1067
- package/src/agents/skip-sdk.ts +851 -877
- package/src/apolloServer/index.ts +2 -2
- package/src/auth/AuthProviderFactory.ts +14 -8
- package/src/auth/BaseAuthProvider.ts +4 -5
- package/src/auth/IAuthProvider.ts +2 -2
- package/src/auth/exampleNewUserSubClass.ts +2 -9
- package/src/auth/index.ts +26 -31
- package/src/auth/initializeProviders.ts +3 -3
- package/src/auth/newUsers.ts +134 -166
- package/src/auth/providers/Auth0Provider.ts +5 -5
- package/src/auth/providers/CognitoProvider.ts +10 -7
- package/src/auth/providers/GoogleProvider.ts +5 -4
- package/src/auth/providers/MSALProvider.ts +5 -5
- package/src/auth/providers/OktaProvider.ts +7 -6
- package/src/config.ts +54 -63
- package/src/context.ts +30 -42
- package/src/entitySubclasses/entityPermissions.server.ts +3 -3
- package/src/generated/generated.ts +40442 -48106
- package/src/generic/KeyInputOutputTypes.ts +6 -3
- package/src/generic/ResolverBase.ts +78 -119
- package/src/generic/RunViewResolver.ts +23 -27
- package/src/index.ts +48 -66
- package/src/resolvers/ActionResolver.ts +57 -46
- package/src/resolvers/AskSkipResolver.ts +533 -607
- package/src/resolvers/ComponentRegistryResolver.ts +562 -547
- package/src/resolvers/CreateQueryResolver.ts +655 -683
- package/src/resolvers/DatasetResolver.ts +6 -5
- package/src/resolvers/EntityCommunicationsResolver.ts +1 -1
- package/src/resolvers/EntityRecordNameResolver.ts +5 -9
- package/src/resolvers/EntityResolver.ts +7 -9
- package/src/resolvers/FileCategoryResolver.ts +2 -2
- package/src/resolvers/FileResolver.ts +4 -4
- package/src/resolvers/GetDataContextDataResolver.ts +118 -106
- package/src/resolvers/GetDataResolver.ts +205 -194
- package/src/resolvers/MergeRecordsResolver.ts +5 -5
- package/src/resolvers/PotentialDuplicateRecordResolver.ts +1 -1
- package/src/resolvers/QueryResolver.ts +78 -95
- package/src/resolvers/ReportResolver.ts +2 -2
- package/src/resolvers/RunAIAgentResolver.ts +828 -818
- package/src/resolvers/RunAIPromptResolver.ts +709 -693
- package/src/resolvers/RunTemplateResolver.ts +103 -105
- package/src/resolvers/SqlLoggingConfigResolver.ts +72 -69
- package/src/resolvers/SyncDataResolver.ts +352 -386
- package/src/resolvers/SyncRolesUsersResolver.ts +350 -387
- package/src/resolvers/TaskResolver.ts +115 -110
- package/src/resolvers/TransactionGroupResolver.ts +138 -143
- package/src/resolvers/UserFavoriteResolver.ts +8 -17
- package/src/resolvers/UserViewResolver.ts +12 -17
- package/src/rest/EntityCRUDHandler.ts +268 -291
- package/src/rest/RESTEndpointHandler.ts +776 -782
- package/src/rest/ViewOperationsHandler.ts +195 -191
- package/src/scheduler/LearningCycleScheduler.ts +52 -8
- package/src/services/ScheduledJobsService.ts +132 -129
- package/src/services/TaskOrchestrator.ts +776 -792
- package/src/types.ts +9 -15
- package/src/util.ts +109 -112
package/src/types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DatabaseProviderBase, UserInfo } from '@memberjunction/
|
|
1
|
+
import { DatabaseProviderBase, UserInfo } from '@memberjunction/core';
|
|
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,23 +39,16 @@ 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:
|
|
49
|
+
type: "Admin" | "Read-Write" | "Read-Only" | "Other";
|
|
50
50
|
|
|
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
|
-
}) {
|
|
51
|
+
constructor(init: {dataSource: sql.ConnectionPool, type: "Admin" | "Read-Write" | "Read-Only" | "Other", host: string, port: number, database: string, userName: string} ) {
|
|
59
52
|
this.dataSource = init.dataSource;
|
|
60
53
|
this.host = init.host;
|
|
61
54
|
this.port = init.port;
|
|
@@ -63,7 +56,7 @@ export class DataSourceInfo {
|
|
|
63
56
|
this.userName = init.userName;
|
|
64
57
|
this.type = init.type;
|
|
65
58
|
}
|
|
66
|
-
}
|
|
59
|
+
};
|
|
67
60
|
|
|
68
61
|
export type DirectiveBuilder = {
|
|
69
62
|
typeDefs: string;
|
|
@@ -87,9 +80,10 @@ export type RunViewGenericParams = {
|
|
|
87
80
|
forceAuditLog?: boolean;
|
|
88
81
|
auditLogDescription?: string;
|
|
89
82
|
resultType?: string;
|
|
90
|
-
userPayload?: UserPayload;
|
|
83
|
+
userPayload?: UserPayload;
|
|
91
84
|
};
|
|
92
85
|
|
|
86
|
+
|
|
93
87
|
export class MJServerEvent {
|
|
94
88
|
type: 'setupComplete' | 'requestReceived' | 'requestCompleted' | 'requestFailed';
|
|
95
89
|
dataSources: DataSourceInfo[];
|
|
@@ -112,4 +106,4 @@ export async function raiseEvent(type: MJServerEvent['type'], dataSources: DataS
|
|
|
112
106
|
mje.event = MJEventType.ComponentEvent;
|
|
113
107
|
mje.eventCode = MJ_SERVER_EVENT_CODE;
|
|
114
108
|
MJGlobal.Instance.RaiseEvent(mje);
|
|
115
|
-
}
|
|
109
|
+
}
|
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/
|
|
9
|
+
import { DatabaseProviderBase } from '@memberjunction/core';
|
|
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,13 +23,7 @@ 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(
|
|
27
|
-
url: string,
|
|
28
|
-
payload: any,
|
|
29
|
-
useCompression: boolean,
|
|
30
|
-
headers: Record<string, string> | null,
|
|
31
|
-
streamCallback?: StreamCallback
|
|
32
|
-
): Promise<any[]> {
|
|
26
|
+
export async function sendPostRequest(url: string, payload: any, useCompression: boolean, headers: Record<string, string> | null, streamCallback?: StreamCallback): Promise<any[]> {
|
|
33
27
|
return new Promise(async (resolve, reject) => {
|
|
34
28
|
try {
|
|
35
29
|
const { protocol, hostname, port, pathname } = new URL(url);
|
|
@@ -47,7 +41,7 @@ export async function sendPostRequest(
|
|
|
47
41
|
} else {
|
|
48
42
|
data = Buffer.from(JSON.stringify(payload));
|
|
49
43
|
}
|
|
50
|
-
|
|
44
|
+
|
|
51
45
|
const options = {
|
|
52
46
|
hostname,
|
|
53
47
|
port: port || (protocol === 'https:' ? 443 : 80),
|
|
@@ -55,18 +49,18 @@ export async function sendPostRequest(
|
|
|
55
49
|
method: 'POST',
|
|
56
50
|
headers: {
|
|
57
51
|
'Content-Type': 'application/json',
|
|
58
|
-
...headers
|
|
59
|
-
}
|
|
52
|
+
...headers
|
|
53
|
+
}
|
|
60
54
|
};
|
|
61
|
-
|
|
55
|
+
|
|
62
56
|
const request = protocol === 'https:' ? httpsRequest : httpRequest;
|
|
63
57
|
const jsonObjects: any[] = [];
|
|
64
58
|
let buffer = '';
|
|
65
|
-
|
|
59
|
+
|
|
66
60
|
const req = request(options, (res) => {
|
|
67
61
|
const gunzip = createGunzip();
|
|
68
62
|
const stream = res.headers['content-encoding'] === 'gzip' ? res.pipe(gunzip) : res;
|
|
69
|
-
|
|
63
|
+
|
|
70
64
|
stream.on('data', (chunk) => {
|
|
71
65
|
buffer += chunk;
|
|
72
66
|
let boundary;
|
|
@@ -84,7 +78,7 @@ export async function sendPostRequest(
|
|
|
84
78
|
}
|
|
85
79
|
}
|
|
86
80
|
});
|
|
87
|
-
|
|
81
|
+
|
|
88
82
|
stream.on('end', () => {
|
|
89
83
|
// Attempt to parse any remaining data in buffer in case it's a complete JSON object
|
|
90
84
|
if (buffer.trim()) {
|
|
@@ -101,121 +95,124 @@ export async function sendPostRequest(
|
|
|
101
95
|
resolve(jsonObjects);
|
|
102
96
|
});
|
|
103
97
|
});
|
|
104
|
-
|
|
98
|
+
|
|
105
99
|
req.on('error', (e) => {
|
|
106
100
|
const err = z.object({ message: z.string() }).safeParse(e);
|
|
107
101
|
console.error(`Error in sendPostRequest().req.on(error): ${err.success ? err.data.message : e}`);
|
|
108
102
|
reject(e);
|
|
109
103
|
});
|
|
110
|
-
|
|
104
|
+
|
|
111
105
|
req.write(data);
|
|
112
106
|
req.end();
|
|
113
|
-
}
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
114
109
|
const err = z.object({ message: z.string() }).safeParse(e);
|
|
115
|
-
console.error(`Error in sendPostRequest: ${err.success ? err.data.message : e}`)
|
|
110
|
+
console.error(`Error in sendPostRequest: ${err.success ? err.data.message : e}`)
|
|
116
111
|
reject(e);
|
|
117
112
|
}
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
|
|
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);
|
|
140
|
-
}
|
|
141
113
|
}
|
|
142
|
-
|
|
114
|
+
);
|
|
143
115
|
}
|
|
144
116
|
|
|
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
117
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
+
}
|
|
136
|
+
}
|
|
137
|
+
throw new Error('No suitable data source found');
|
|
160
138
|
}
|
|
161
|
-
}
|
|
162
139
|
|
|
163
|
-
/**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
export function
|
|
169
|
-
|
|
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
|
+
}
|
|
159
|
+
}
|
|
170
160
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
|
|
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
|
+
}
|
|
178
180
|
}
|
|
179
|
-
}
|
|
180
181
|
|
|
181
|
-
/**
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
export function GetReadWriteDataSource(
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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');
|
|
192
193
|
}
|
|
193
|
-
throw new Error('No suitable read-write data source found');
|
|
194
|
-
}
|
|
195
194
|
|
|
196
|
-
/**
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
export function extendConnectionPoolWithQuery(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
sqlQuery = sqlQuery.replace(/\?/g, () => `@p${paramIndex++}`);
|
|
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
|
+
}
|
|
215
213
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
}
|
|
214
|
+
const result = await request.query(sqlQuery);
|
|
215
|
+
return result.recordset || [];
|
|
216
|
+
};
|
|
217
|
+
return extendedPool;
|
|
218
|
+
}
|