@memberjunction/server 5.8.0 → 5.10.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/README.md +1 -0
- package/dist/agents/skip-agent.d.ts.map +1 -1
- package/dist/agents/skip-agent.js +1 -0
- package/dist/agents/skip-agent.js.map +1 -1
- package/dist/agents/skip-sdk.d.ts +6 -0
- package/dist/agents/skip-sdk.d.ts.map +1 -1
- package/dist/agents/skip-sdk.js +5 -3
- package/dist/agents/skip-sdk.js.map +1 -1
- package/dist/apolloServer/index.d.ts +10 -2
- package/dist/apolloServer/index.d.ts.map +1 -1
- package/dist/apolloServer/index.js +22 -8
- package/dist/apolloServer/index.js.map +1 -1
- package/dist/config.d.ts +125 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +23 -0
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +17 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +144 -62
- package/dist/context.js.map +1 -1
- package/dist/generated/generated.d.ts +210 -0
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +1049 -0
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/CacheInvalidationResolver.d.ts +32 -0
- package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -0
- package/dist/generic/CacheInvalidationResolver.js +80 -0
- package/dist/generic/CacheInvalidationResolver.js.map +1 -0
- package/dist/generic/PubSubManager.d.ts +27 -0
- package/dist/generic/PubSubManager.d.ts.map +1 -0
- package/dist/generic/PubSubManager.js +41 -0
- package/dist/generic/PubSubManager.js.map +1 -0
- package/dist/generic/ResolverBase.d.ts +14 -0
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +66 -4
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/hooks.d.ts +65 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +14 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +173 -45
- package/dist/index.js.map +1 -1
- package/dist/multiTenancy/index.d.ts +47 -0
- package/dist/multiTenancy/index.d.ts.map +1 -0
- package/dist/multiTenancy/index.js +152 -0
- package/dist/multiTenancy/index.js.map +1 -0
- package/dist/resolvers/CurrentUserContextResolver.d.ts +18 -0
- package/dist/resolvers/CurrentUserContextResolver.d.ts.map +1 -0
- package/dist/resolvers/CurrentUserContextResolver.js +54 -0
- package/dist/resolvers/CurrentUserContextResolver.js.map +1 -0
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts +123 -0
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -0
- package/dist/resolvers/IntegrationDiscoveryResolver.js +624 -0
- package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -0
- package/dist/rest/RESTEndpointHandler.d.ts +3 -1
- package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
- package/dist/rest/RESTEndpointHandler.js +14 -33
- package/dist/rest/RESTEndpointHandler.js.map +1 -1
- package/dist/test-dynamic-plugin.d.ts +6 -0
- package/dist/test-dynamic-plugin.d.ts.map +1 -0
- package/dist/test-dynamic-plugin.js +18 -0
- package/dist/test-dynamic-plugin.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +61 -57
- package/src/__tests__/bcsaas-integration.test.ts +455 -0
- package/src/__tests__/middleware-integration.test.ts +877 -0
- package/src/__tests__/mjapi-bootstrap.test.ts +29 -0
- package/src/__tests__/multiTenancy.security.test.ts +334 -0
- package/src/__tests__/multiTenancy.test.ts +225 -0
- package/src/__tests__/unifiedAuth.test.ts +416 -0
- package/src/agents/skip-agent.ts +1 -0
- package/src/agents/skip-sdk.ts +13 -3
- package/src/apolloServer/index.ts +32 -16
- package/src/config.ts +25 -0
- package/src/context.ts +205 -98
- package/src/generated/generated.ts +746 -1
- package/src/generic/CacheInvalidationResolver.ts +66 -0
- package/src/generic/PubSubManager.ts +46 -0
- package/src/generic/ResolverBase.ts +70 -4
- package/src/hooks.ts +77 -0
- package/src/index.ts +199 -49
- package/src/multiTenancy/index.ts +183 -0
- package/src/resolvers/CurrentUserContextResolver.ts +39 -0
- package/src/resolvers/IntegrationDiscoveryResolver.ts +584 -0
- package/src/rest/RESTEndpointHandler.ts +23 -42
- package/src/test-dynamic-plugin.ts +36 -0
- package/src/types.ts +10 -0
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-level extensibility types for MJServer.
|
|
3
|
+
*
|
|
4
|
+
* Provider-level hook types (PreRunViewHook, PostRunViewHook, PreSaveHook)
|
|
5
|
+
* are defined and exported from @memberjunction/core (hookRegistry.ts) so
|
|
6
|
+
* that ProviderBase and BaseEntity can reference them without depending
|
|
7
|
+
* on @memberjunction/server.
|
|
8
|
+
*
|
|
9
|
+
* This file re-exports those types for convenience and adds the
|
|
10
|
+
* server-specific extensibility options (Express middleware, Apollo plugins,
|
|
11
|
+
* schema transformers).
|
|
12
|
+
*/
|
|
13
|
+
export type { PreRunViewHook, PostRunViewHook, PreSaveHook, HookName, HookRegistrationOptions } from '@memberjunction/core';
|
|
14
|
+
import type { PreRunViewHook, PostRunViewHook, PreSaveHook } from '@memberjunction/core';
|
|
15
|
+
import type { RequestHandler, ErrorRequestHandler, Application } from 'express';
|
|
16
|
+
import type { ApolloServerPlugin } from '@apollo/server';
|
|
17
|
+
import type { GraphQLSchema } from 'graphql';
|
|
18
|
+
/**
|
|
19
|
+
* A hook entry that includes the hook function plus optional registration metadata.
|
|
20
|
+
* Dynamic packages use this format to declare hooks with priority and namespace.
|
|
21
|
+
*/
|
|
22
|
+
export interface HookWithOptions<T> {
|
|
23
|
+
hook: T;
|
|
24
|
+
Priority?: number;
|
|
25
|
+
Namespace?: string;
|
|
26
|
+
}
|
|
27
|
+
/** A hook value is either a plain function or a function with registration options */
|
|
28
|
+
export type HookOrEntry<T> = T | HookWithOptions<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Extensibility options that can be passed to `serve()` (via MJServerOptions)
|
|
31
|
+
* or to `createMJServer()` (via MJServerConfig).
|
|
32
|
+
*
|
|
33
|
+
* All properties are optional — when omitted, zero behavior change (backward compatible).
|
|
34
|
+
*/
|
|
35
|
+
export interface ServerExtensibilityOptions {
|
|
36
|
+
/** Express middleware applied after compression but before OAuth/REST/GraphQL routes */
|
|
37
|
+
ExpressMiddlewareBefore?: RequestHandler[];
|
|
38
|
+
/** Express middleware/error handlers applied after all routes (catch-alls, error handlers) */
|
|
39
|
+
ExpressMiddlewareAfter?: (RequestHandler | ErrorRequestHandler)[];
|
|
40
|
+
/** Escape hatch for advanced Express app configuration (CORS, trust proxy, etc.) */
|
|
41
|
+
ConfigureExpressApp?: (app: Application) => void | Promise<void>;
|
|
42
|
+
/** Additional Apollo Server plugins merged with the built-in drain/cleanup plugins */
|
|
43
|
+
ApolloPlugins?: ApolloServerPlugin[];
|
|
44
|
+
/** Schema transformers applied after built-in directive transformers */
|
|
45
|
+
SchemaTransformers?: ((schema: GraphQLSchema) => GraphQLSchema)[];
|
|
46
|
+
/**
|
|
47
|
+
* Express middleware that runs AFTER authentication has resolved UserInfo
|
|
48
|
+
* onto the request. Use this for middleware that needs the authenticated
|
|
49
|
+
* user (e.g., tenant context resolution, org membership loading).
|
|
50
|
+
*
|
|
51
|
+
* The authenticated user payload is available at `req.userPayload`.
|
|
52
|
+
* Middleware in this array runs in registration order.
|
|
53
|
+
*/
|
|
54
|
+
ExpressMiddlewarePostAuth?: RequestHandler[];
|
|
55
|
+
/** Hooks that modify RunViewParams before query execution (e.g., tenant filter injection).
|
|
56
|
+
* Each entry can be a plain hook function or a `{ hook, Priority, Namespace }` object. */
|
|
57
|
+
PreRunViewHooks?: HookOrEntry<PreRunViewHook>[];
|
|
58
|
+
/** Hooks that modify RunViewResult after query execution (e.g., data masking).
|
|
59
|
+
* Each entry can be a plain hook function or a `{ hook, Priority, Namespace }` object. */
|
|
60
|
+
PostRunViewHooks?: HookOrEntry<PostRunViewHook>[];
|
|
61
|
+
/** Hooks that validate/reject Save operations before they hit the database.
|
|
62
|
+
* Each entry can be a plain hook function or a `{ hook, Priority, Namespace }` object. */
|
|
63
|
+
PreSaveHooks?: HookOrEntry<PreSaveHook>[];
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE5H,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAA2B,MAAM,sBAAsB,CAAC;AAClH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sFAAsF;AACtF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,cAAc,EAAE,CAAC;IAE3C,8FAA8F;IAC9F,sBAAsB,CAAC,EAAE,CAAC,cAAc,GAAG,mBAAmB,CAAC,EAAE,CAAC;IAElE,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE,sFAAsF;IACtF,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAErC,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,aAAa,KAAK,aAAa,CAAC,EAAE,CAAC;IAElE;;;;;;;OAOG;IACH,yBAAyB,CAAC,EAAE,cAAc,EAAE,CAAC;IAE7C;8FAC0F;IAC1F,eAAe,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;IAEhD;8FAC0F;IAC1F,gBAAgB,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;IAElD;8FAC0F;IAC1F,YAAY,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;CAC3C"}
|
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-level extensibility types for MJServer.
|
|
3
|
+
*
|
|
4
|
+
* Provider-level hook types (PreRunViewHook, PostRunViewHook, PreSaveHook)
|
|
5
|
+
* are defined and exported from @memberjunction/core (hookRegistry.ts) so
|
|
6
|
+
* that ProviderBase and BaseEntity can reference them without depending
|
|
7
|
+
* on @memberjunction/server.
|
|
8
|
+
*
|
|
9
|
+
* This file re-exports those types for convenience and adds the
|
|
10
|
+
* server-specific extensibility options (Express middleware, Apollo plugins,
|
|
11
|
+
* schema transformers).
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export * from './types.js';
|
|
|
17
17
|
export { TokenExpiredError, getSystemUser, getSigningKeys, extractUserInfoFromPayload, verifyUserRecord, AuthProviderFactory, IAuthProvider, } from './auth/index.js';
|
|
18
18
|
export * from './auth/APIKeyScopeAuth.js';
|
|
19
19
|
export * from './generic/PushStatusResolver.js';
|
|
20
|
+
export * from './generic/PubSubManager.js';
|
|
21
|
+
export * from './generic/CacheInvalidationResolver.js';
|
|
20
22
|
export * from './generic/ResolverBase.js';
|
|
21
23
|
export * from './generic/RunViewResolver.js';
|
|
22
24
|
export * from './resolvers/RunTemplateResolver.js';
|
|
@@ -58,9 +60,13 @@ export * from './resolvers/UserFavoriteResolver.js';
|
|
|
58
60
|
export * from './resolvers/UserResolver.js';
|
|
59
61
|
export * from './resolvers/UserViewResolver.js';
|
|
60
62
|
export * from './resolvers/VersionHistoryResolver.js';
|
|
63
|
+
export * from './resolvers/CurrentUserContextResolver.js';
|
|
61
64
|
export { GetReadOnlyDataSource, GetReadWriteDataSource, GetReadWriteProvider, GetReadOnlyProvider } from './util.js';
|
|
62
65
|
export * from './generated/generated.js';
|
|
63
|
-
export
|
|
66
|
+
export * from './hooks.js';
|
|
67
|
+
export * from './multiTenancy/index.js';
|
|
68
|
+
import type { ServerExtensibilityOptions } from './hooks.js';
|
|
69
|
+
export type MJServerOptions = ServerExtensibilityOptions & {
|
|
64
70
|
onBeforeServe?: () => void | Promise<void>;
|
|
65
71
|
restApiOptions?: Partial<RESTApiOptions>;
|
|
66
72
|
};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,gBAAgB,EAAuD,MAAM,sBAAsB,CAAC;AAOvH,OAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAM/C,OAAO,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import dotenv from 'dotenv';
|
|
2
2
|
dotenv.config({ quiet: true });
|
|
3
|
-
import { expressMiddleware } from '@
|
|
3
|
+
import { expressMiddleware } from '@as-integrations/express5';
|
|
4
4
|
import { mergeSchemas } from '@graphql-tools/schema';
|
|
5
5
|
import { Metadata, SetProvider, StartupManager as StartupManagerImport } from '@memberjunction/core';
|
|
6
6
|
import { MJGlobal, UUIDsEqual } from '@memberjunction/global';
|
|
@@ -18,11 +18,12 @@ import { sep } from 'node:path';
|
|
|
18
18
|
import 'reflect-metadata';
|
|
19
19
|
import { ReplaySubject } from 'rxjs';
|
|
20
20
|
import { buildSchemaSync, GraphQLTimestamp } from 'type-graphql';
|
|
21
|
+
import { PubSub } from 'graphql-subscriptions';
|
|
21
22
|
import sql from 'mssql';
|
|
22
23
|
import { WebSocketServer } from 'ws';
|
|
23
24
|
import buildApolloServer from './apolloServer/index.js';
|
|
24
25
|
import { configInfo, dbDatabase, dbHost, dbPort, dbUsername, graphqlPort, graphqlRootPath, mj_core_schema, websiteRunFromPackage } from './config.js';
|
|
25
|
-
import { contextFunction, getUserPayload } from './context.js';
|
|
26
|
+
import { contextFunction, createUnifiedAuthMiddleware, getUserPayload } from './context.js';
|
|
26
27
|
import { requireSystemUserDirective, publicDirective } from './directives/index.js';
|
|
27
28
|
import createMSSQLConfig from './orm.js';
|
|
28
29
|
import { setupRESTEndpoints } from './rest/setupRESTEndpoints.js';
|
|
@@ -32,6 +33,9 @@ import { DataSourceInfo, raiseEvent } from './types.js';
|
|
|
32
33
|
import { ScheduledJobsService } from './services/ScheduledJobsService.js';
|
|
33
34
|
import { LocalCacheManager, TelemetryManager } from '@memberjunction/core';
|
|
34
35
|
import { GetAPIKeyEngine } from '@memberjunction/api-keys';
|
|
36
|
+
import { RedisLocalStorageProvider } from '@memberjunction/redis-provider';
|
|
37
|
+
import { PubSubManager } from './generic/PubSubManager.js';
|
|
38
|
+
import { CACHE_INVALIDATION_TOPIC } from './generic/CacheInvalidationResolver.js';
|
|
35
39
|
const cacheRefreshInterval = configInfo.databaseSettings.metadataCacheRefreshInterval;
|
|
36
40
|
/**
|
|
37
41
|
* Returns the configured database platform type based on the DB_TYPE environment variable.
|
|
@@ -54,6 +58,8 @@ export * from './types.js';
|
|
|
54
58
|
export { TokenExpiredError, getSystemUser, getSigningKeys, extractUserInfoFromPayload, verifyUserRecord, AuthProviderFactory, } from './auth/index.js';
|
|
55
59
|
export * from './auth/APIKeyScopeAuth.js';
|
|
56
60
|
export * from './generic/PushStatusResolver.js';
|
|
61
|
+
export * from './generic/PubSubManager.js';
|
|
62
|
+
export * from './generic/CacheInvalidationResolver.js';
|
|
57
63
|
export * from './generic/ResolverBase.js';
|
|
58
64
|
export * from './generic/RunViewResolver.js';
|
|
59
65
|
export * from './resolvers/RunTemplateResolver.js';
|
|
@@ -95,8 +101,31 @@ export * from './resolvers/UserFavoriteResolver.js';
|
|
|
95
101
|
export * from './resolvers/UserResolver.js';
|
|
96
102
|
export * from './resolvers/UserViewResolver.js';
|
|
97
103
|
export * from './resolvers/VersionHistoryResolver.js';
|
|
104
|
+
export * from './resolvers/CurrentUserContextResolver.js';
|
|
98
105
|
export { GetReadOnlyDataSource, GetReadWriteDataSource, GetReadWriteProvider, GetReadOnlyProvider } from './util.js';
|
|
99
106
|
export * from './generated/generated.js';
|
|
107
|
+
export * from './hooks.js';
|
|
108
|
+
export * from './multiTenancy/index.js';
|
|
109
|
+
import { HookRegistry } from '@memberjunction/core';
|
|
110
|
+
import { createTenantMiddleware, createTenantPreRunViewHook, createTenantPreSaveHook } from './multiTenancy/index.js';
|
|
111
|
+
/**
|
|
112
|
+
* Register a hook that may be a plain function or a `{ hook, Priority, Namespace }` object.
|
|
113
|
+
* Dynamic packages (e.g., BCSaaS) return hooks in object form to declare registration metadata.
|
|
114
|
+
*/
|
|
115
|
+
function registerHookEntry(hookName, entry) {
|
|
116
|
+
if (typeof entry === 'function') {
|
|
117
|
+
HookRegistry.Register(hookName, entry);
|
|
118
|
+
}
|
|
119
|
+
else if (entry && typeof entry === 'object' && 'hook' in entry) {
|
|
120
|
+
const { hook, Priority, Namespace } = entry;
|
|
121
|
+
const options = {};
|
|
122
|
+
if (Priority != null)
|
|
123
|
+
options.Priority = Priority;
|
|
124
|
+
if (Namespace != null)
|
|
125
|
+
options.Namespace = Namespace;
|
|
126
|
+
HookRegistry.Register(hookName, hook, options);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
100
129
|
const localPath = (p) => {
|
|
101
130
|
// Convert import.meta.url to a local directory path
|
|
102
131
|
const dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
@@ -243,9 +272,49 @@ export const serve = async (resolverPaths, app = createApp(), options) => {
|
|
|
243
272
|
tm.SetEnabled(false);
|
|
244
273
|
console.log('Server telemetry disabled');
|
|
245
274
|
}
|
|
246
|
-
//
|
|
247
|
-
|
|
248
|
-
|
|
275
|
+
// Optionally inject Redis as the shared storage provider for cross-server cache invalidation
|
|
276
|
+
if (process.env.REDIS_URL) {
|
|
277
|
+
const redisProvider = new RedisLocalStorageProvider({
|
|
278
|
+
url: process.env.REDIS_URL,
|
|
279
|
+
keyPrefix: process.env.REDIS_KEY_PREFIX || 'mj',
|
|
280
|
+
enablePubSub: true,
|
|
281
|
+
enableLogging: true,
|
|
282
|
+
});
|
|
283
|
+
Metadata.Provider.SetLocalStorageProvider(redisProvider);
|
|
284
|
+
await redisProvider.StartListening();
|
|
285
|
+
// Connect Redis pub/sub events to LocalCacheManager callback dispatch
|
|
286
|
+
// so cross-server cache invalidation messages are routed to registered callbacks
|
|
287
|
+
redisProvider.OnCacheChanged((event) => {
|
|
288
|
+
const sourceShort = event.SourceServerId ? event.SourceServerId.substring(0, 8) : 'unknown';
|
|
289
|
+
console.log(`[MJAPI] Redis pub/sub → DispatchCacheChange: ${event.Action} for "${event.CacheKey}" from server ${sourceShort}`);
|
|
290
|
+
LocalCacheManager.Instance.DispatchCacheChange(event);
|
|
291
|
+
// Also broadcast to connected browser clients via GraphQL subscription
|
|
292
|
+
// Extract entity name from the cache key (format: EntityName|Filter|OrderBy|...)
|
|
293
|
+
const entityName = event.CacheKey ? event.CacheKey.split('|')[0] : '';
|
|
294
|
+
if (entityName) {
|
|
295
|
+
PubSubManager.Instance.Publish(CACHE_INVALIDATION_TOPIC, {
|
|
296
|
+
entityName,
|
|
297
|
+
primaryKeyValues: null, // entity-level invalidation
|
|
298
|
+
action: event.Action || 'save',
|
|
299
|
+
sourceServerId: event.SourceServerId || 'unknown',
|
|
300
|
+
timestamp: new Date(),
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
console.log(`Redis cache provider connected: ${process.env.REDIS_URL}`);
|
|
305
|
+
}
|
|
306
|
+
// If Redis is available, swap LocalCacheManager's storage provider to Redis.
|
|
307
|
+
// LocalCacheManager may have already been initialized (with in-memory provider)
|
|
308
|
+
// during engine loading. SetStorageProvider migrates cached data to Redis.
|
|
309
|
+
if (process.env.REDIS_URL) {
|
|
310
|
+
await LocalCacheManager.Instance.SetStorageProvider(Metadata.Provider.LocalStorageProvider);
|
|
311
|
+
console.log('LocalCacheManager: storage provider swapped to Redis');
|
|
312
|
+
}
|
|
313
|
+
// Ensure LocalCacheManager is initialized (no-op if already done during engine loading)
|
|
314
|
+
if (!LocalCacheManager.Instance.IsInitialized) {
|
|
315
|
+
await LocalCacheManager.Instance.Initialize(Metadata.Provider.LocalStorageProvider);
|
|
316
|
+
console.log('LocalCacheManager initialized');
|
|
317
|
+
}
|
|
249
318
|
// Initialize APIKeyEngine singleton — reads apiKeyGeneration from mj.config.cjs automatically
|
|
250
319
|
// This must happen before any request handler calls GetAPIKeyEngine()
|
|
251
320
|
GetAPIKeyEngine();
|
|
@@ -275,6 +344,14 @@ export const serve = async (resolverPaths, app = createApp(), options) => {
|
|
|
275
344
|
}
|
|
276
345
|
}));
|
|
277
346
|
const resolvers = dynamicModules.flatMap((module) => Object.values(module).filter((value) => typeof value === 'function'));
|
|
347
|
+
// Create an explicit PubSub instance so we can reference it outside of resolvers
|
|
348
|
+
// graphql-subscriptions v3 renamed asyncIterator→asyncIterableIterator, but
|
|
349
|
+
// type-graphql still calls asyncIterator. Shim for compatibility.
|
|
350
|
+
const pubSub = new PubSub();
|
|
351
|
+
if (!pubSub.asyncIterator && typeof pubSub.asyncIterableIterator === 'function') {
|
|
352
|
+
pubSub.asyncIterator = pubSub.asyncIterableIterator;
|
|
353
|
+
}
|
|
354
|
+
PubSubManager.Instance.SetPubSubEngine(pubSub);
|
|
278
355
|
let schema = mergeSchemas({
|
|
279
356
|
schemas: [
|
|
280
357
|
buildSchemaSync({
|
|
@@ -282,12 +359,19 @@ export const serve = async (resolverPaths, app = createApp(), options) => {
|
|
|
282
359
|
validate: false,
|
|
283
360
|
scalarsMap: [{ type: Date, scalar: GraphQLTimestamp }],
|
|
284
361
|
emitSchemaFile: websiteRunFromPackage !== 1,
|
|
362
|
+
pubSub,
|
|
285
363
|
}),
|
|
286
364
|
],
|
|
287
365
|
typeDefs: [requireSystemUserDirective.typeDefs, publicDirective.typeDefs],
|
|
288
366
|
});
|
|
289
367
|
schema = requireSystemUserDirective.transformer(schema);
|
|
290
368
|
schema = publicDirective.transformer(schema);
|
|
369
|
+
// Apply user-provided schema transformers (after built-in directive transformers)
|
|
370
|
+
if (options?.SchemaTransformers) {
|
|
371
|
+
for (const transformer of options.SchemaTransformers) {
|
|
372
|
+
schema = transformer(schema);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
291
375
|
const httpServer = createServer(app);
|
|
292
376
|
const webSocketServer = new WebSocketServer({ server: httpServer, path: graphqlRootPath });
|
|
293
377
|
const serverCleanup = useServer({
|
|
@@ -310,7 +394,7 @@ export const serve = async (resolverPaths, app = createApp(), options) => {
|
|
|
310
394
|
}
|
|
311
395
|
},
|
|
312
396
|
}, webSocketServer);
|
|
313
|
-
const apolloServer = buildApolloServer({ schema }, { httpServer, serverCleanup });
|
|
397
|
+
const apolloServer = buildApolloServer({ schema }, { httpServer, serverCleanup }, options?.ApolloPlugins);
|
|
314
398
|
await apolloServer.start();
|
|
315
399
|
// Fix #8: Add compression for better throughput performance
|
|
316
400
|
app.use(compression({
|
|
@@ -332,63 +416,68 @@ export const serve = async (resolverPaths, app = createApp(), options) => {
|
|
|
332
416
|
// High compression level (good balance between CPU and compression ratio)
|
|
333
417
|
level: 6
|
|
334
418
|
}));
|
|
335
|
-
//
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
const requestDomain = new URL(req.headers.origin || '').hostname;
|
|
340
|
-
const sessionId = sessionIdRaw ? sessionIdRaw.toString() : '';
|
|
341
|
-
const bearerToken = req.headers.authorization ?? '';
|
|
342
|
-
const apiKey = String(req.headers['x-mj-api-key']);
|
|
343
|
-
const userPayload = await getUserPayload(bearerToken, sessionId, dataSources, requestDomain, apiKey);
|
|
344
|
-
if (!userPayload) {
|
|
345
|
-
return res.status(401).json({ error: 'Invalid token' });
|
|
346
|
-
}
|
|
347
|
-
// Set both req.user (standard Express convention) and req['mjUser'] (MJ REST convention)
|
|
348
|
-
// Note: userPayload contains { userRecord: UserInfo, email, sessionId }
|
|
349
|
-
// The mjUser property expects the UserInfo directly (userRecord)
|
|
350
|
-
req.user = userPayload;
|
|
351
|
-
req['mjUser'] = userPayload.userRecord;
|
|
352
|
-
next();
|
|
353
|
-
}
|
|
354
|
-
catch (error) {
|
|
355
|
-
console.error('Auth error:', error);
|
|
356
|
-
return res.status(401).json({ error: 'Authentication failed' });
|
|
419
|
+
// Apply user-provided Express middleware (after compression, before routes)
|
|
420
|
+
if (options?.ExpressMiddlewareBefore) {
|
|
421
|
+
for (const mw of options.ExpressMiddlewareBefore) {
|
|
422
|
+
app.use(mw);
|
|
357
423
|
}
|
|
358
|
-
}
|
|
359
|
-
//
|
|
424
|
+
}
|
|
425
|
+
// Escape hatch for advanced Express app configuration
|
|
426
|
+
if (options?.ConfigureExpressApp) {
|
|
427
|
+
await Promise.resolve(options.ConfigureExpressApp(app));
|
|
428
|
+
}
|
|
429
|
+
// ─── OAuth callback routes (unauthenticated, registered BEFORE auth) ─────
|
|
360
430
|
const oauthPublicUrl = configInfo.publicUrl || `${configInfo.baseUrl}:${configInfo.graphqlPort}${configInfo.graphqlRootPath || ''}`;
|
|
361
431
|
console.log(`[OAuth] publicUrl: ${oauthPublicUrl}`);
|
|
362
|
-
|
|
363
|
-
// These must be registered BEFORE GraphQL middleware since graphqlRootPath may be '/'
|
|
432
|
+
let oauthAuthenticatedRouter;
|
|
364
433
|
if (oauthPublicUrl) {
|
|
365
434
|
const { callbackRouter, authenticatedRouter } = createOAuthCallbackHandler({
|
|
366
435
|
publicUrl: oauthPublicUrl,
|
|
367
|
-
// TODO: These should be configurable to point to the MJ Explorer UI
|
|
368
436
|
successRedirectUrl: `${oauthPublicUrl}/oauth/success`,
|
|
369
437
|
errorRedirectUrl: `${oauthPublicUrl}/oauth/error`
|
|
370
438
|
});
|
|
371
|
-
|
|
439
|
+
oauthAuthenticatedRouter = authenticatedRouter;
|
|
372
440
|
const oauthCors = cors();
|
|
373
441
|
// OAuth callback is unauthenticated (called by external auth server)
|
|
374
442
|
app.use('/oauth', oauthCors, callbackRouter);
|
|
375
443
|
console.log('[OAuth] Callback route registered at /oauth/callback');
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
444
|
+
}
|
|
445
|
+
// ─── Global CORS (before auth so 401 responses include CORS headers) ─────
|
|
446
|
+
// Without this, the browser blocks 401 responses from the auth middleware
|
|
447
|
+
// because they lack Access-Control-Allow-Origin headers, preventing the
|
|
448
|
+
// client from reading the error code and triggering token refresh.
|
|
449
|
+
app.use(cors());
|
|
450
|
+
// ─── Unified auth middleware (replaces both REST authMiddleware and contextFunction auth) ─────
|
|
451
|
+
app.use(createUnifiedAuthMiddleware(dataSources));
|
|
452
|
+
// ─── Built-in post-auth middleware (multi-tenancy) ─────
|
|
453
|
+
// Config-driven multi-tenancy middleware runs after auth so it can read req.userPayload.
|
|
454
|
+
if (configInfo.multiTenancy?.enabled) {
|
|
455
|
+
const tenantMiddleware = createTenantMiddleware(configInfo.multiTenancy);
|
|
456
|
+
app.use(tenantMiddleware);
|
|
457
|
+
}
|
|
458
|
+
// ─── Post-auth middleware from plugins ─────
|
|
459
|
+
// Middleware here has access to the authenticated user via req.userPayload.
|
|
460
|
+
// Use this for tenant context resolution, org membership loading, etc.
|
|
461
|
+
if (options?.ExpressMiddlewarePostAuth) {
|
|
462
|
+
for (const mw of options.ExpressMiddlewarePostAuth) {
|
|
463
|
+
app.use(mw);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
// ─── OAuth authenticated routes (auth already handled by unified middleware) ─────
|
|
467
|
+
if (oauthAuthenticatedRouter) {
|
|
468
|
+
const oauthCors = cors();
|
|
469
|
+
app.use('/oauth', oauthCors, BodyParser.json(), oauthAuthenticatedRouter);
|
|
379
470
|
console.log('[OAuth] Authenticated routes registered at /oauth/status, /oauth/initiate, and /oauth/exchange');
|
|
380
471
|
}
|
|
381
|
-
//
|
|
472
|
+
// ─── REST API endpoints (auth already handled by unified middleware) ─────
|
|
382
473
|
const restApiConfig = {
|
|
383
474
|
enabled: configInfo.restApiOptions?.enabled ?? false,
|
|
384
475
|
includeEntities: configInfo.restApiOptions?.includeEntities,
|
|
385
476
|
excludeEntities: configInfo.restApiOptions?.excludeEntities,
|
|
386
477
|
};
|
|
387
|
-
// Apply options from server options if provided (these override the config file)
|
|
388
478
|
if (options?.restApiOptions) {
|
|
389
479
|
Object.assign(restApiConfig, options.restApiOptions);
|
|
390
480
|
}
|
|
391
|
-
// Get REST API configuration from environment variables if present (env vars override everything)
|
|
392
481
|
if (process.env.MJ_REST_API_ENABLED !== undefined) {
|
|
393
482
|
restApiConfig.enabled = process.env.MJ_REST_API_ENABLED === 'true';
|
|
394
483
|
if (restApiConfig.enabled) {
|
|
@@ -401,11 +490,9 @@ export const serve = async (resolverPaths, app = createApp(), options) => {
|
|
|
401
490
|
if (process.env.MJ_REST_API_EXCLUDE_ENTITIES) {
|
|
402
491
|
restApiConfig.excludeEntities = process.env.MJ_REST_API_EXCLUDE_ENTITIES.split(',').map(e => e.trim());
|
|
403
492
|
}
|
|
404
|
-
//
|
|
405
|
-
setupRESTEndpoints(app, restApiConfig
|
|
406
|
-
// GraphQL middleware (
|
|
407
|
-
// Note: Type assertion needed due to @apollo/server bundling older @types/express types
|
|
408
|
-
// that are incompatible with Express 5.x types (missing 'param' property)
|
|
493
|
+
// No per-route authMiddleware needed — unified auth middleware already ran
|
|
494
|
+
setupRESTEndpoints(app, restApiConfig);
|
|
495
|
+
// ─── GraphQL middleware (contextFunction reads req.userPayload, no re-auth) ─────
|
|
409
496
|
app.use(graphqlRootPath, cors(), BodyParser.json({ limit: '50mb' }),
|
|
410
497
|
// Express 5 leaves req.body as undefined for non-JSON or empty bodies;
|
|
411
498
|
// Apollo Server's expressMiddleware requires req.body to be defined.
|
|
@@ -417,6 +504,12 @@ export const serve = async (resolverPaths, app = createApp(), options) => {
|
|
|
417
504
|
dataSources // all data source
|
|
418
505
|
}),
|
|
419
506
|
}));
|
|
507
|
+
// ─── Post-route middleware (error handlers, catch-alls) ─────
|
|
508
|
+
if (options?.ExpressMiddlewareAfter) {
|
|
509
|
+
for (const mw of options.ExpressMiddlewareAfter) {
|
|
510
|
+
app.use(mw);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
420
513
|
// Initialize and start scheduled jobs service if enabled
|
|
421
514
|
let scheduledJobsService = null;
|
|
422
515
|
if (configInfo.scheduledJobs?.enabled) {
|
|
@@ -430,6 +523,41 @@ export const serve = async (resolverPaths, app = createApp(), options) => {
|
|
|
430
523
|
// Don't throw - allow server to start even if scheduled jobs fail
|
|
431
524
|
}
|
|
432
525
|
}
|
|
526
|
+
// Register provider-level hooks with the global HookRegistry.
|
|
527
|
+
// Each entry can be a plain function or a { hook, Priority, Namespace } object.
|
|
528
|
+
if (options?.PreRunViewHooks) {
|
|
529
|
+
for (const entry of options.PreRunViewHooks) {
|
|
530
|
+
registerHookEntry('PreRunView', entry);
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
if (options?.PostRunViewHooks) {
|
|
534
|
+
for (const entry of options.PostRunViewHooks) {
|
|
535
|
+
registerHookEntry('PostRunView', entry);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
if (options?.PreSaveHooks) {
|
|
539
|
+
for (const entry of options.PreSaveHooks) {
|
|
540
|
+
registerHookEntry('PreSave', entry);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
// Auto-register multi-tenancy hooks when enabled in config
|
|
544
|
+
// (The tenant Express middleware was already registered above in the post-auth slot)
|
|
545
|
+
if (configInfo.multiTenancy?.enabled) {
|
|
546
|
+
console.log('[MultiTenancy] Enabled — registering tenant isolation hooks');
|
|
547
|
+
const tenantConfig = configInfo.multiTenancy;
|
|
548
|
+
// Register tenant PreRunView hook (injects WHERE clauses)
|
|
549
|
+
// Priority 50 + namespace allows middle layers to replace with their own implementation
|
|
550
|
+
HookRegistry.Register('PreRunView', createTenantPreRunViewHook(tenantConfig), {
|
|
551
|
+
Priority: 50,
|
|
552
|
+
Namespace: 'mj:tenantFilter',
|
|
553
|
+
});
|
|
554
|
+
// Register tenant PreSave hook (validates tenant column on writes)
|
|
555
|
+
HookRegistry.Register('PreSave', createTenantPreSaveHook(tenantConfig), {
|
|
556
|
+
Priority: 50,
|
|
557
|
+
Namespace: 'mj:tenantSave',
|
|
558
|
+
});
|
|
559
|
+
console.log(`[MultiTenancy] Context source: ${tenantConfig.contextSource}, scoping: ${tenantConfig.scopingStrategy}, write protection: ${tenantConfig.writeProtection}`);
|
|
560
|
+
}
|
|
433
561
|
if (options?.onBeforeServe) {
|
|
434
562
|
await Promise.resolve(options.onBeforeServe());
|
|
435
563
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-tenant data separation framework.
|
|
3
|
+
*
|
|
4
|
+
* Provides factory functions that create Express middleware and provider hooks
|
|
5
|
+
* based on the `multiTenancy` section of mj.config.cjs. All functions return
|
|
6
|
+
* standard hook/middleware types from WS2 so they integrate seamlessly with
|
|
7
|
+
* the MJServer extensibility system.
|
|
8
|
+
*/
|
|
9
|
+
import type { RequestHandler } from 'express';
|
|
10
|
+
import type { PreRunViewHook, PreSaveHook } from '@memberjunction/core';
|
|
11
|
+
import { type UserInfo, type TenantContext } from '@memberjunction/core';
|
|
12
|
+
import type { MultiTenancyConfig } from '../config.js';
|
|
13
|
+
/** Custom tenant context extractor signature */
|
|
14
|
+
export type TenantContextExtractor = (user: UserInfo, req: Express.Request) => Promise<{
|
|
15
|
+
TenantID: string;
|
|
16
|
+
} | null>;
|
|
17
|
+
/**
|
|
18
|
+
* Creates Express middleware that resolves and attaches TenantContext
|
|
19
|
+
* to the authenticated user's UserInfo for each request.
|
|
20
|
+
*
|
|
21
|
+
* This middleware runs in the post-auth slot (after `createUnifiedAuthMiddleware`)
|
|
22
|
+
* so `req.userPayload` is available. It reads the tenant ID from the configured
|
|
23
|
+
* source and attaches it directly to `userPayload.userRecord.TenantContext`.
|
|
24
|
+
*
|
|
25
|
+
* By the time GraphQL resolvers or REST handlers run, the contextUser already
|
|
26
|
+
* has TenantContext set — no deferred pickup via `req['__mj_tenantId']` needed.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createTenantMiddleware(config: MultiTenancyConfig): RequestHandler;
|
|
29
|
+
/**
|
|
30
|
+
* Attaches TenantContext to a UserInfo object.
|
|
31
|
+
* Called from the GraphQL context function after authentication.
|
|
32
|
+
*/
|
|
33
|
+
export declare function attachTenantContext(user: UserInfo, tenantId: string, source: TenantContext['Source']): void;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a PreRunViewHook that auto-injects tenant WHERE clauses
|
|
36
|
+
* into RunView queries for scoped entities.
|
|
37
|
+
*/
|
|
38
|
+
export declare function createTenantPreRunViewHook(config: MultiTenancyConfig): PreRunViewHook;
|
|
39
|
+
/**
|
|
40
|
+
* Creates a PreSaveHook that validates the tenant column on writes.
|
|
41
|
+
*
|
|
42
|
+
* In 'strict' mode, rejects saves where the tenant column value doesn't
|
|
43
|
+
* match the user's TenantContext. In 'log' mode, warns but allows. In
|
|
44
|
+
* 'off' mode, this hook is a no-op.
|
|
45
|
+
*/
|
|
46
|
+
export declare function createTenantPreSaveHook(config: MultiTenancyConfig): PreSaveHook;
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/multiTenancy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAY,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,gDAAgD;AAChD,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,OAAO,CAAC,OAAO,KACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAiBjF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC9B,IAAI,CAEN;AAwCD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CA4BrF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,WAAW,CAwC/E"}
|