@memberjunction/server 3.4.0 → 4.0.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/agents/skip-agent.d.ts +65 -0
- package/dist/agents/skip-agent.d.ts.map +1 -1
- package/dist/agents/skip-agent.js +63 -5
- package/dist/agents/skip-agent.js.map +1 -1
- package/dist/agents/skip-sdk.d.ts +163 -0
- package/dist/agents/skip-sdk.d.ts.map +1 -1
- package/dist/agents/skip-sdk.js +143 -12
- package/dist/agents/skip-sdk.js.map +1 -1
- package/dist/apolloServer/TransactionPlugin.d.ts +4 -0
- package/dist/apolloServer/TransactionPlugin.d.ts.map +1 -0
- package/dist/apolloServer/TransactionPlugin.js +46 -0
- package/dist/apolloServer/TransactionPlugin.js.map +1 -0
- package/dist/apolloServer/index.d.ts +0 -1
- package/dist/apolloServer/index.d.ts.map +1 -1
- package/dist/auth/APIKeyScopeAuth.d.ts +82 -0
- package/dist/auth/APIKeyScopeAuth.d.ts.map +1 -1
- package/dist/auth/APIKeyScopeAuth.js +78 -0
- package/dist/auth/APIKeyScopeAuth.js.map +1 -1
- package/dist/auth/AuthProviderFactory.d.ts +35 -0
- package/dist/auth/AuthProviderFactory.d.ts.map +1 -1
- package/dist/auth/AuthProviderFactory.js +51 -4
- package/dist/auth/AuthProviderFactory.js.map +1 -1
- package/dist/auth/BaseAuthProvider.d.ts +21 -0
- package/dist/auth/BaseAuthProvider.d.ts.map +1 -1
- package/dist/auth/BaseAuthProvider.js +24 -9
- package/dist/auth/BaseAuthProvider.js.map +1 -1
- package/dist/auth/IAuthProvider.d.ts +32 -0
- package/dist/auth/IAuthProvider.d.ts.map +1 -1
- package/dist/auth/__tests__/backward-compatibility.test.d.ts +2 -0
- package/dist/auth/__tests__/backward-compatibility.test.d.ts.map +1 -0
- package/dist/auth/__tests__/backward-compatibility.test.js +135 -0
- package/dist/auth/__tests__/backward-compatibility.test.js.map +1 -0
- package/dist/auth/exampleNewUserSubClass.d.ts +5 -1
- package/dist/auth/exampleNewUserSubClass.d.ts.map +1 -1
- package/dist/auth/exampleNewUserSubClass.js +21 -6
- package/dist/auth/exampleNewUserSubClass.js.map +1 -1
- package/dist/auth/index.d.ts +14 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +35 -22
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/initializeProviders.d.ts +3 -0
- package/dist/auth/initializeProviders.d.ts.map +1 -1
- package/dist/auth/initializeProviders.js +6 -0
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/auth/newUsers.js +11 -2
- package/dist/auth/newUsers.js.map +1 -1
- package/dist/auth/providers/Auth0Provider.d.ts +9 -0
- package/dist/auth/providers/Auth0Provider.d.ts.map +1 -1
- package/dist/auth/providers/Auth0Provider.js +10 -0
- package/dist/auth/providers/Auth0Provider.js.map +1 -1
- package/dist/auth/providers/CognitoProvider.d.ts +9 -0
- package/dist/auth/providers/CognitoProvider.d.ts.map +1 -1
- package/dist/auth/providers/CognitoProvider.js +10 -0
- package/dist/auth/providers/CognitoProvider.js.map +1 -1
- package/dist/auth/providers/GoogleProvider.d.ts +9 -0
- package/dist/auth/providers/GoogleProvider.d.ts.map +1 -1
- package/dist/auth/providers/GoogleProvider.js +11 -1
- package/dist/auth/providers/GoogleProvider.js.map +1 -1
- package/dist/auth/providers/MSALProvider.d.ts +9 -0
- package/dist/auth/providers/MSALProvider.d.ts.map +1 -1
- package/dist/auth/providers/MSALProvider.js +10 -0
- package/dist/auth/providers/MSALProvider.js.map +1 -1
- package/dist/auth/providers/OktaProvider.d.ts +9 -0
- package/dist/auth/providers/OktaProvider.d.ts.map +1 -1
- package/dist/auth/providers/OktaProvider.js +10 -0
- package/dist/auth/providers/OktaProvider.js.map +1 -1
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +42 -8
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +8 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +26 -4
- package/dist/context.js.map +1 -1
- package/dist/directives/Public.js +2 -0
- package/dist/directives/Public.js.map +1 -1
- package/dist/entitySubclasses/entityPermissions.server.d.ts +7 -2
- package/dist/entitySubclasses/entityPermissions.server.d.ts.map +1 -1
- package/dist/entitySubclasses/entityPermissions.server.js +26 -8
- package/dist/entitySubclasses/entityPermissions.server.js.map +1 -1
- package/dist/generated/generated.d.ts +529 -6
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +10054 -15076
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/DeleteOptionsInput.d.ts +3 -0
- package/dist/generic/DeleteOptionsInput.d.ts.map +1 -1
- package/dist/generic/DeleteOptionsInput.js +3 -2
- package/dist/generic/DeleteOptionsInput.js.map +1 -1
- package/dist/generic/KeyInputOutputTypes.js +0 -6
- package/dist/generic/KeyInputOutputTypes.js.map +1 -1
- package/dist/generic/KeyValuePairInput.d.ts +4 -0
- package/dist/generic/KeyValuePairInput.d.ts.map +1 -1
- package/dist/generic/KeyValuePairInput.js +4 -2
- package/dist/generic/KeyValuePairInput.js.map +1 -1
- package/dist/generic/PushStatusResolver.js +0 -3
- package/dist/generic/PushStatusResolver.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +58 -0
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +203 -18
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +22 -0
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +42 -108
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +82 -37
- package/dist/index.js.map +1 -1
- package/dist/orm.d.ts.map +1 -1
- package/dist/orm.js +2 -1
- package/dist/orm.js.map +1 -1
- package/dist/resolvers/APIKeyResolver.d.ts +74 -0
- package/dist/resolvers/APIKeyResolver.d.ts.map +1 -1
- package/dist/resolvers/APIKeyResolver.js +49 -10
- package/dist/resolvers/APIKeyResolver.js.map +1 -1
- package/dist/resolvers/ActionResolver.d.ts +189 -0
- package/dist/resolvers/ActionResolver.d.ts.map +1 -1
- package/dist/resolvers/ActionResolver.js +152 -21
- package/dist/resolvers/ActionResolver.js.map +1 -1
- package/dist/resolvers/AskSkipResolver.d.ts +123 -0
- package/dist/resolvers/AskSkipResolver.d.ts.map +1 -0
- package/dist/resolvers/AskSkipResolver.js +1788 -0
- package/dist/resolvers/AskSkipResolver.js.map +1 -0
- package/dist/resolvers/ColorResolver.js +0 -5
- package/dist/resolvers/ColorResolver.js.map +1 -1
- package/dist/resolvers/ComponentRegistryResolver.d.ts +65 -0
- package/dist/resolvers/ComponentRegistryResolver.d.ts.map +1 -1
- package/dist/resolvers/ComponentRegistryResolver.js +118 -40
- package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
- package/dist/resolvers/CreateQueryResolver.d.ts +47 -0
- package/dist/resolvers/CreateQueryResolver.d.ts.map +1 -1
- package/dist/resolvers/CreateQueryResolver.js +92 -116
- package/dist/resolvers/CreateQueryResolver.js.map +1 -1
- package/dist/resolvers/DatasetResolver.js +2 -14
- package/dist/resolvers/DatasetResolver.js.map +1 -1
- package/dist/resolvers/EntityCommunicationsResolver.d.ts +40 -0
- package/dist/resolvers/EntityCommunicationsResolver.d.ts.map +1 -1
- package/dist/resolvers/EntityCommunicationsResolver.js +2 -36
- package/dist/resolvers/EntityCommunicationsResolver.js.map +1 -1
- package/dist/resolvers/EntityRecordNameResolver.js +0 -7
- package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
- package/dist/resolvers/FileCategoryResolver.js +13 -1
- package/dist/resolvers/FileCategoryResolver.js.map +1 -1
- package/dist/resolvers/FileResolver.d.ts +16 -0
- package/dist/resolvers/FileResolver.d.ts.map +1 -1
- package/dist/resolvers/FileResolver.js +59 -74
- package/dist/resolvers/FileResolver.js.map +1 -1
- package/dist/resolvers/GetDataContextDataResolver.d.ts +18 -1
- package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataContextDataResolver.js +17 -9
- package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
- package/dist/resolvers/GetDataResolver.d.ts +19 -0
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +35 -35
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/InfoResolver.d.ts.map +1 -1
- package/dist/resolvers/InfoResolver.js +4 -7
- package/dist/resolvers/InfoResolver.js.map +1 -1
- package/dist/resolvers/MCPResolver.d.ts +325 -1
- package/dist/resolvers/MCPResolver.d.ts.map +1 -1
- package/dist/resolvers/MCPResolver.js +931 -24
- package/dist/resolvers/MCPResolver.js.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.js +3 -29
- package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts.map +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.js +0 -3
- package/dist/resolvers/PotentialDuplicateRecordResolver.js.map +1 -1
- package/dist/resolvers/QueryResolver.d.ts +20 -0
- package/dist/resolvers/QueryResolver.d.ts.map +1 -1
- package/dist/resolvers/QueryResolver.js +44 -36
- package/dist/resolvers/QueryResolver.js.map +1 -1
- package/dist/resolvers/ReportResolver.d.ts +3 -0
- package/dist/resolvers/ReportResolver.d.ts.map +1 -1
- package/dist/resolvers/ReportResolver.js +9 -10
- package/dist/resolvers/ReportResolver.js.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.d.ts +54 -0
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +116 -40
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.d.ts +42 -0
- package/dist/resolvers/RunAIPromptResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.js +95 -22
- package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
- package/dist/resolvers/RunTemplateResolver.js +9 -6
- package/dist/resolvers/RunTemplateResolver.js.map +1 -1
- package/dist/resolvers/RunTestResolver.d.ts +12 -0
- package/dist/resolvers/RunTestResolver.d.ts.map +1 -1
- package/dist/resolvers/RunTestResolver.js +35 -21
- package/dist/resolvers/RunTestResolver.js.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts +312 -0
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +295 -45
- package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
- package/dist/resolvers/SyncDataResolver.d.ts +21 -0
- package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
- package/dist/resolvers/SyncDataResolver.js +36 -22
- package/dist/resolvers/SyncDataResolver.js.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.d.ts +14 -0
- package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.js +54 -21
- package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
- package/dist/resolvers/TaskResolver.d.ts +13 -0
- package/dist/resolvers/TaskResolver.d.ts.map +1 -1
- package/dist/resolvers/TaskResolver.js +22 -7
- package/dist/resolvers/TaskResolver.js.map +1 -1
- package/dist/resolvers/TelemetryResolver.d.ts +22 -0
- package/dist/resolvers/TelemetryResolver.d.ts.map +1 -1
- package/dist/resolvers/TelemetryResolver.js +45 -79
- package/dist/resolvers/TelemetryResolver.js.map +1 -1
- package/dist/resolvers/TransactionGroupResolver.js +11 -13
- package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
- package/dist/resolvers/UserFavoriteResolver.js +3 -12
- package/dist/resolvers/UserFavoriteResolver.js.map +1 -1
- package/dist/resolvers/UserResolver.js +10 -0
- package/dist/resolvers/UserResolver.js.map +1 -1
- package/dist/resolvers/UserViewResolver.js +4 -0
- package/dist/resolvers/UserViewResolver.js.map +1 -1
- package/dist/resolvers/VersionHistoryResolver.d.ts +39 -0
- package/dist/resolvers/VersionHistoryResolver.d.ts.map +1 -0
- package/dist/resolvers/VersionHistoryResolver.js +208 -0
- package/dist/resolvers/VersionHistoryResolver.js.map +1 -0
- package/dist/rest/EntityCRUDHandler.d.ts +19 -0
- package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
- package/dist/rest/EntityCRUDHandler.js +55 -0
- package/dist/rest/EntityCRUDHandler.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.d.ts +143 -0
- package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -0
- package/dist/rest/OAuthCallbackHandler.js +634 -0
- package/dist/rest/OAuthCallbackHandler.js.map +1 -0
- package/dist/rest/RESTEndpointHandler.d.ts +120 -0
- package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
- package/dist/rest/RESTEndpointHandler.js +213 -24
- package/dist/rest/RESTEndpointHandler.js.map +1 -1
- package/dist/rest/ViewOperationsHandler.d.ts +19 -0
- package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
- package/dist/rest/ViewOperationsHandler.js +39 -0
- package/dist/rest/ViewOperationsHandler.js.map +1 -1
- package/dist/rest/index.d.ts +1 -0
- package/dist/rest/index.d.ts.map +1 -1
- package/dist/rest/index.js +1 -0
- package/dist/rest/index.js.map +1 -1
- package/dist/rest/setupRESTEndpoints.d.ts +35 -0
- package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
- package/dist/rest/setupRESTEndpoints.js +15 -1
- package/dist/rest/setupRESTEndpoints.js.map +1 -1
- package/dist/scheduler/LearningCycleScheduler.d.ts +4 -0
- package/dist/scheduler/LearningCycleScheduler.d.ts.map +1 -0
- package/dist/scheduler/LearningCycleScheduler.js +4 -0
- package/dist/scheduler/LearningCycleScheduler.js.map +1 -0
- package/dist/services/ScheduledJobsService.d.ts +31 -0
- package/dist/services/ScheduledJobsService.d.ts.map +1 -1
- package/dist/services/ScheduledJobsService.js +38 -4
- package/dist/services/ScheduledJobsService.js.map +1 -1
- package/dist/services/TaskOrchestrator.d.ts +73 -0
- package/dist/services/TaskOrchestrator.d.ts.map +1 -1
- package/dist/services/TaskOrchestrator.js +137 -15
- package/dist/services/TaskOrchestrator.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -13
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +37 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +55 -8
- package/dist/util.js.map +1 -1
- package/package.json +79 -78
- package/src/auth/exampleNewUserSubClass.ts +1 -5
- package/src/entitySubclasses/entityPermissions.server.ts +1 -3
- package/src/generated/generated.ts +4682 -2681
- package/src/index.ts +61 -62
- package/src/resolvers/InfoResolver.ts +5 -1
- package/src/resolvers/MCPResolver.ts +910 -10
- package/src/resolvers/PotentialDuplicateRecordResolver.ts +0 -4
- package/src/resolvers/VersionHistoryResolver.ts +177 -0
- package/src/rest/OAuthCallbackHandler.ts +766 -0
- package/src/rest/RESTEndpointHandler.ts +58 -35
- package/src/rest/index.ts +2 -1
- package/src/rest/setupRESTEndpoints.ts +13 -12
package/src/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import dotenv from 'dotenv';
|
|
2
2
|
|
|
3
|
-
dotenv.config();
|
|
3
|
+
dotenv.config({ quiet: true });
|
|
4
4
|
|
|
5
5
|
import { expressMiddleware } from '@apollo/server/express4';
|
|
6
6
|
import { mergeSchemas } from '@graphql-tools/schema';
|
|
@@ -27,45 +27,10 @@ import { contextFunction, getUserPayload } from './context.js';
|
|
|
27
27
|
import { requireSystemUserDirective, publicDirective } from './directives/index.js';
|
|
28
28
|
import createMSSQLConfig from './orm.js';
|
|
29
29
|
import { setupRESTEndpoints } from './rest/setupRESTEndpoints.js';
|
|
30
|
-
|
|
31
|
-
import { LoadAllCoreActions } from '@memberjunction/core-actions';
|
|
32
|
-
LoadAllCoreActions(); // prevent tree shaking for this dynamic module
|
|
33
|
-
import { LoadApolloAccountsEnrichmentAction, LoadApolloContactsEnrichmentAction } from '@memberjunction/actions-apollo'
|
|
34
|
-
LoadApolloAccountsEnrichmentAction();
|
|
35
|
-
LoadApolloContactsEnrichmentAction();
|
|
36
|
-
|
|
37
|
-
import { LoadCoreEntitiesServerSubClasses } from '@memberjunction/core-entities-server';
|
|
38
|
-
LoadCoreEntitiesServerSubClasses(); // prevent tree shaking for this dynamic module
|
|
39
|
-
|
|
40
|
-
import { LoadAgentManagementActions } from '@memberjunction/ai-agent-manager-actions';
|
|
41
|
-
LoadAgentManagementActions();
|
|
42
|
-
|
|
43
|
-
// Load agent manager core classes (registers custom agent classes like AgentBuilderAgent, AgentArchitectAgent)
|
|
44
|
-
import { LoadAgentManagerCore } from '@memberjunction/ai-agent-manager';
|
|
45
|
-
LoadAgentManagerCore();
|
|
46
|
-
|
|
47
|
-
import { LoadSchedulingEngine } from '@memberjunction/scheduling-engine';
|
|
48
|
-
LoadSchedulingEngine(); // This also loads drivers
|
|
49
|
-
|
|
50
|
-
import { LoadAllSchedulingActions } from '@memberjunction/scheduling-actions';
|
|
51
|
-
LoadAllSchedulingActions(); // prevent tree shaking for scheduling actions
|
|
52
|
-
|
|
53
|
-
import { GetTypeformResponsesAction } from '@memberjunction/actions-bizapps-formbuilders';
|
|
54
|
-
const x = GetTypeformResponsesAction; // prevent tree shaking for this dynamic module
|
|
30
|
+
import { createOAuthCallbackHandler } from './rest/OAuthCallbackHandler.js';
|
|
55
31
|
|
|
56
32
|
import { resolve } from 'node:path';
|
|
57
33
|
import { DataSourceInfo, raiseEvent } from './types.js';
|
|
58
|
-
import { LoadAIEngine } from '@memberjunction/aiengine';
|
|
59
|
-
import { LoadAIProviders } from '@memberjunction/ai-provider-bundle';
|
|
60
|
-
// Load AI Engine and all providers to prevent tree shaking
|
|
61
|
-
LoadAIEngine();
|
|
62
|
-
LoadAIProviders();
|
|
63
|
-
|
|
64
|
-
// Load Communication Providers
|
|
65
|
-
import { LoadMSGraphProvider } from '@memberjunction/communication-ms-graph';
|
|
66
|
-
import { LoadProvider as LoadSendGridProvider } from '@memberjunction/communication-sendgrid';
|
|
67
|
-
LoadMSGraphProvider();
|
|
68
|
-
LoadSendGridProvider();
|
|
69
34
|
|
|
70
35
|
import { ExternalChangeDetectorEngine } from '@memberjunction/external-change-detection';
|
|
71
36
|
import { ScheduledJobsService } from './services/ScheduledJobsService.js';
|
|
@@ -300,20 +265,7 @@ export const serve = async (resolverPaths: Array<string>, app: Application = cre
|
|
|
300
265
|
level: 6
|
|
301
266
|
}));
|
|
302
267
|
|
|
303
|
-
|
|
304
|
-
graphqlRootPath,
|
|
305
|
-
cors<cors.CorsRequest>(),
|
|
306
|
-
BodyParser.json({ limit: '50mb' }),
|
|
307
|
-
expressMiddleware(apolloServer, {
|
|
308
|
-
context: contextFunction({
|
|
309
|
-
setupComplete$,
|
|
310
|
-
dataSource: extendConnectionPoolWithQuery(pool), // default read-write data source
|
|
311
|
-
dataSources // all data source
|
|
312
|
-
}),
|
|
313
|
-
})
|
|
314
|
-
);
|
|
315
|
-
|
|
316
|
-
// Setup REST API endpoints
|
|
268
|
+
// Setup REST API endpoints BEFORE GraphQL (since graphqlRootPath may be '/' which catches all routes)
|
|
317
269
|
const authMiddleware = async (req, res, next) => {
|
|
318
270
|
try {
|
|
319
271
|
const sessionIdRaw = req.headers['x-session-id'];
|
|
@@ -326,27 +278,58 @@ export const serve = async (resolverPaths: Array<string>, app: Application = cre
|
|
|
326
278
|
if (!userPayload) {
|
|
327
279
|
return res.status(401).json({ error: 'Invalid token' });
|
|
328
280
|
}
|
|
329
|
-
|
|
281
|
+
|
|
282
|
+
// Set both req.user (standard Express convention) and req['mjUser'] (MJ REST convention)
|
|
283
|
+
// Note: userPayload contains { userRecord: UserInfo, email, sessionId }
|
|
284
|
+
// The mjUser property expects the UserInfo directly (userRecord)
|
|
330
285
|
req.user = userPayload;
|
|
286
|
+
req['mjUser'] = userPayload.userRecord;
|
|
331
287
|
next();
|
|
332
288
|
} catch (error) {
|
|
333
289
|
console.error('Auth error:', error);
|
|
334
290
|
return res.status(401).json({ error: 'Authentication failed' });
|
|
335
291
|
}
|
|
336
292
|
};
|
|
337
|
-
|
|
338
|
-
//
|
|
339
|
-
const
|
|
340
|
-
|
|
293
|
+
|
|
294
|
+
// Build public URL for OAuth callbacks
|
|
295
|
+
const oauthPublicUrl = configInfo.publicUrl || `${configInfo.baseUrl}:${configInfo.graphqlPort}${configInfo.graphqlRootPath || ''}`;
|
|
296
|
+
console.log(`[OAuth] publicUrl: ${oauthPublicUrl}`);
|
|
297
|
+
|
|
298
|
+
// Set up OAuth callback routes at /oauth (independent of REST API)
|
|
299
|
+
// These must be registered BEFORE GraphQL middleware since graphqlRootPath may be '/'
|
|
300
|
+
if (oauthPublicUrl) {
|
|
301
|
+
const { callbackRouter, authenticatedRouter } = createOAuthCallbackHandler({
|
|
302
|
+
publicUrl: oauthPublicUrl,
|
|
303
|
+
// TODO: These should be configurable to point to the MJ Explorer UI
|
|
304
|
+
successRedirectUrl: `${oauthPublicUrl}/oauth/success`,
|
|
305
|
+
errorRedirectUrl: `${oauthPublicUrl}/oauth/error`
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
// Create CORS middleware for OAuth routes (needed for cross-origin requests from frontend)
|
|
309
|
+
const oauthCors = cors<cors.CorsRequest>();
|
|
310
|
+
|
|
311
|
+
// OAuth callback is unauthenticated (called by external auth server)
|
|
312
|
+
app.use('/oauth', oauthCors, callbackRouter);
|
|
313
|
+
console.log('[OAuth] Callback route registered at /oauth/callback');
|
|
314
|
+
|
|
315
|
+
// OAuth status, initiate, and exchange endpoints require authentication
|
|
316
|
+
// Must also have CORS for frontend requests and JSON body parsing
|
|
317
|
+
app.use('/oauth', oauthCors, BodyParser.json(), authMiddleware, authenticatedRouter);
|
|
318
|
+
console.log('[OAuth] Authenticated routes registered at /oauth/status, /oauth/initiate, and /oauth/exchange');
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Get REST API configuration
|
|
322
|
+
const restApiConfig = {
|
|
323
|
+
enabled: configInfo.restApiOptions?.enabled ?? false,
|
|
341
324
|
includeEntities: configInfo.restApiOptions?.includeEntities,
|
|
342
|
-
excludeEntities: configInfo.restApiOptions?.excludeEntities
|
|
325
|
+
excludeEntities: configInfo.restApiOptions?.excludeEntities,
|
|
343
326
|
};
|
|
344
|
-
|
|
327
|
+
|
|
345
328
|
// Apply options from server options if provided (these override the config file)
|
|
346
329
|
if (options?.restApiOptions) {
|
|
347
330
|
Object.assign(restApiConfig, options.restApiOptions);
|
|
348
331
|
}
|
|
349
|
-
|
|
332
|
+
|
|
350
333
|
// Get REST API configuration from environment variables if present (env vars override everything)
|
|
351
334
|
if (process.env.MJ_REST_API_ENABLED !== undefined) {
|
|
352
335
|
restApiConfig.enabled = process.env.MJ_REST_API_ENABLED === 'true';
|
|
@@ -354,18 +337,34 @@ export const serve = async (resolverPaths: Array<string>, app: Application = cre
|
|
|
354
337
|
console.log('REST API is enabled via environment variable');
|
|
355
338
|
}
|
|
356
339
|
}
|
|
357
|
-
|
|
340
|
+
|
|
358
341
|
if (process.env.MJ_REST_API_INCLUDE_ENTITIES) {
|
|
359
342
|
restApiConfig.includeEntities = process.env.MJ_REST_API_INCLUDE_ENTITIES.split(',').map(e => e.trim());
|
|
360
343
|
}
|
|
361
|
-
|
|
344
|
+
|
|
362
345
|
if (process.env.MJ_REST_API_EXCLUDE_ENTITIES) {
|
|
363
346
|
restApiConfig.excludeEntities = process.env.MJ_REST_API_EXCLUDE_ENTITIES.split(',').map(e => e.trim());
|
|
364
347
|
}
|
|
365
|
-
|
|
348
|
+
|
|
366
349
|
// Set up REST endpoints with the configured options and auth middleware
|
|
367
350
|
setupRESTEndpoints(app, restApiConfig, authMiddleware);
|
|
368
351
|
|
|
352
|
+
// GraphQL middleware (after REST so /api/v1/* routes are handled first)
|
|
353
|
+
// Note: Type assertion needed due to @apollo/server bundling older @types/express types
|
|
354
|
+
// that are incompatible with Express 5.x types (missing 'param' property)
|
|
355
|
+
app.use(
|
|
356
|
+
graphqlRootPath,
|
|
357
|
+
cors<cors.CorsRequest>(),
|
|
358
|
+
BodyParser.json({ limit: '50mb' }),
|
|
359
|
+
expressMiddleware(apolloServer, {
|
|
360
|
+
context: contextFunction({
|
|
361
|
+
setupComplete$,
|
|
362
|
+
dataSource: extendConnectionPoolWithQuery(pool), // default read-write data source
|
|
363
|
+
dataSources // all data source
|
|
364
|
+
}),
|
|
365
|
+
}) as unknown as express.RequestHandler
|
|
366
|
+
);
|
|
367
|
+
|
|
369
368
|
// Initialize and start scheduled jobs service if enabled
|
|
370
369
|
let scheduledJobsService: ScheduledJobsService | null = null;
|
|
371
370
|
if (configInfo.scheduledJobs?.enabled) {
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { Field, ObjectType, Int, Query, Resolver, Ctx, Info as RequestInfo } from 'type-graphql';
|
|
2
2
|
import { Public, RequireSystemUser } from '../directives/index.js';
|
|
3
|
-
import
|
|
3
|
+
import { createRequire } from 'node:module';
|
|
4
4
|
import { AppContext } from '../types.js';
|
|
5
5
|
import os from 'node:os';
|
|
6
6
|
|
|
7
|
+
// Use createRequire to import JSON (compatible with module: es2022)
|
|
8
|
+
const require = createRequire(import.meta.url);
|
|
9
|
+
const packageJson = require('../../package.json') as { version: string };
|
|
10
|
+
|
|
7
11
|
@ObjectType()
|
|
8
12
|
export class Info {
|
|
9
13
|
@Public()
|