@memberjunction/server 6.1.0-edge.2 → 6.1.0-edge.4
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/LICENSE +180 -4
- package/dist/agentSessions/SessionManager.d.ts +19 -5
- package/dist/agentSessions/SessionManager.d.ts.map +1 -1
- package/dist/agentSessions/SessionManager.js +27 -9
- package/dist/agentSessions/SessionManager.js.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.d.ts +31 -0
- package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -0
- package/dist/auth/AuthProviderCatalogRouter.js +69 -0
- package/dist/auth/AuthProviderCatalogRouter.js.map +1 -0
- package/dist/auth/AuthProviderEngine.d.ts +96 -0
- package/dist/auth/AuthProviderEngine.d.ts.map +1 -0
- package/dist/auth/AuthProviderEngine.js +245 -0
- package/dist/auth/AuthProviderEngine.js.map +1 -0
- package/dist/auth/index.d.ts +12 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +57 -13
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/initializeProviders.d.ts +64 -1
- package/dist/auth/initializeProviders.d.ts.map +1 -1
- package/dist/auth/initializeProviders.js +117 -5
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/auth/scopeLimitedPrincipal.d.ts +39 -0
- package/dist/auth/scopeLimitedPrincipal.d.ts.map +1 -0
- package/dist/auth/scopeLimitedPrincipal.js +49 -0
- package/dist/auth/scopeLimitedPrincipal.js.map +1 -0
- package/dist/config.d.ts +89 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +52 -35
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +21 -1
- package/dist/context.js.map +1 -1
- package/dist/entitySubclasses/MJEntityPermissionEntityServer.server.d.ts.map +1 -1
- package/dist/entitySubclasses/MJEntityPermissionEntityServer.server.js +8 -7
- package/dist/entitySubclasses/MJEntityPermissionEntityServer.server.js.map +1 -1
- package/dist/generated/generated.d.ts +619 -1597
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +3341 -17021
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +28 -1
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +57 -8
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +4 -0
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +31 -0
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +147 -14
- package/dist/index.js.map +1 -1
- package/dist/integration/CustomColumnPromoter.d.ts +79 -15
- package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
- package/dist/integration/CustomColumnPromoter.js +472 -97
- package/dist/integration/CustomColumnPromoter.js.map +1 -1
- package/dist/integration/InactiveRowWarnings.d.ts +48 -0
- package/dist/integration/InactiveRowWarnings.d.ts.map +1 -0
- package/dist/integration/InactiveRowWarnings.js +57 -0
- package/dist/integration/InactiveRowWarnings.js.map +1 -0
- package/dist/integration/RSUProgressBridge.d.ts +83 -0
- package/dist/integration/RSUProgressBridge.d.ts.map +1 -0
- package/dist/integration/RSUProgressBridge.js +230 -0
- package/dist/integration/RSUProgressBridge.js.map +1 -0
- package/dist/integration/SchemaRefreshLaunch.d.ts +62 -0
- package/dist/integration/SchemaRefreshLaunch.d.ts.map +1 -0
- package/dist/integration/SchemaRefreshLaunch.js +67 -0
- package/dist/integration/SchemaRefreshLaunch.js.map +1 -0
- package/dist/providerConfigUnits.d.ts +20 -0
- package/dist/providerConfigUnits.d.ts.map +1 -0
- package/dist/providerConfigUnits.js +22 -0
- package/dist/providerConfigUnits.js.map +1 -0
- package/dist/resolvers/AdhocQueryResolver.d.ts +4 -0
- package/dist/resolvers/AdhocQueryResolver.d.ts.map +1 -1
- package/dist/resolvers/AdhocQueryResolver.js +20 -6
- package/dist/resolvers/AdhocQueryResolver.js.map +1 -1
- package/dist/resolvers/FileResolver.d.ts +34 -4
- package/dist/resolvers/FileResolver.d.ts.map +1 -1
- package/dist/resolvers/FileResolver.js +218 -28
- package/dist/resolvers/FileResolver.js.map +1 -1
- package/dist/resolvers/IdentityClaimRedemptionResolver.d.ts +37 -0
- package/dist/resolvers/IdentityClaimRedemptionResolver.d.ts.map +1 -0
- package/dist/resolvers/IdentityClaimRedemptionResolver.js +220 -0
- package/dist/resolvers/IdentityClaimRedemptionResolver.js.map +1 -0
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts +108 -3
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js +374 -87
- package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
- package/dist/resolvers/QueryResolver.d.ts +5 -4
- package/dist/resolvers/QueryResolver.d.ts.map +1 -1
- package/dist/resolvers/QueryResolver.js +29 -14
- package/dist/resolvers/QueryResolver.js.map +1 -1
- package/dist/resolvers/QuerySystemUserResolver.d.ts +12 -3
- package/dist/resolvers/QuerySystemUserResolver.d.ts.map +1 -1
- package/dist/resolvers/QuerySystemUserResolver.js +33 -14
- package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.d.ts +3 -1
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +20 -7
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/TaskGraphFrameResolver.d.ts +18 -0
- package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
- package/dist/resolvers/TaskGraphFrameResolver.js +75 -0
- package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
- package/dist/resolvers/UserResolver.d.ts +19 -17
- package/dist/resolvers/UserResolver.d.ts.map +1 -1
- package/dist/resolvers/UserResolver.js +66 -67
- package/dist/resolvers/UserResolver.js.map +1 -1
- package/dist/resolvers/currentUserRoles.d.ts +19 -0
- package/dist/resolvers/currentUserRoles.d.ts.map +1 -0
- package/dist/resolvers/currentUserRoles.js +36 -0
- package/dist/resolvers/currentUserRoles.js.map +1 -0
- package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.js +3 -6
- package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
- package/dist/rest/MediaAccessKeys.d.ts +17 -0
- package/dist/rest/MediaAccessKeys.d.ts.map +1 -1
- package/dist/rest/MediaAccessKeys.js +42 -1
- package/dist/rest/MediaAccessKeys.js.map +1 -1
- package/dist/rest/MediaStreamHandler.d.ts +3 -2
- package/dist/rest/MediaStreamHandler.d.ts.map +1 -1
- package/dist/rest/MediaStreamHandler.js +83 -2
- package/dist/rest/MediaStreamHandler.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.d.ts +49 -1
- package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
- package/dist/rest/OAuthCallbackHandler.js +129 -43
- package/dist/rest/OAuthCallbackHandler.js.map +1 -1
- package/dist/rest/UploadTokenManager.d.ts +90 -0
- package/dist/rest/UploadTokenManager.d.ts.map +1 -0
- package/dist/rest/UploadTokenManager.js +156 -0
- package/dist/rest/UploadTokenManager.js.map +1 -0
- package/dist/services/IntegrationSyncWorkerService.d.ts +48 -0
- package/dist/services/IntegrationSyncWorkerService.d.ts.map +1 -0
- package/dist/services/IntegrationSyncWorkerService.js +132 -0
- package/dist/services/IntegrationSyncWorkerService.js.map +1 -0
- package/dist/services/StartTaskGraphDispatcher.d.ts +0 -10
- package/dist/services/StartTaskGraphDispatcher.d.ts.map +1 -1
- package/dist/services/StartTaskGraphDispatcher.js +21 -1
- package/dist/services/StartTaskGraphDispatcher.js.map +1 -1
- package/dist/services/TaskGraphAgentRunner.d.ts +7 -0
- package/dist/services/TaskGraphAgentRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphAgentRunner.js +23 -0
- package/dist/services/TaskGraphAgentRunner.js.map +1 -1
- package/dist/services/TaskGraphContinuationDeliverer.d.ts.map +1 -1
- package/dist/services/TaskGraphContinuationDeliverer.js +12 -1
- package/dist/services/TaskGraphContinuationDeliverer.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +92 -92
- package/src/__tests__/APIKeyScopeAuth.test.ts +475 -0
- package/src/__tests__/AdhocQueryResolver.scopeGuard.test.ts +84 -0
- package/src/__tests__/AuthProviderEngine.test.ts +278 -0
- package/src/__tests__/CustomColumnPromoterOnePass.test.ts +387 -0
- package/src/__tests__/EntityCRUDHandler.test.ts +378 -0
- package/src/__tests__/InactiveRowWarnings.test.ts +87 -0
- package/src/__tests__/IntegrationSyncWorkerService.test.ts +275 -0
- package/src/__tests__/OAuthCallbackHandler.openRedirect.test.ts +117 -0
- package/src/__tests__/OAuthCallbackHandler.xss.test.ts +4 -1
- package/src/__tests__/RESTEndpointHandler.test.ts +672 -0
- package/src/__tests__/RSUProgressBridge.test.ts +250 -0
- package/src/__tests__/ReactivateRefreshMessage.test.ts +85 -0
- package/src/__tests__/RealtimeBridgeResolver.test.ts +10 -2
- package/src/__tests__/ResolverBase.filterEscaping.test.ts +147 -0
- package/src/__tests__/SchemaRefreshLaunch.test.ts +114 -0
- package/src/__tests__/SessionManager.test.ts +55 -0
- package/src/__tests__/UserResolver.currentUser.test.ts +87 -0
- package/src/__tests__/ViewOperationsHandler.test.ts +277 -0
- package/src/__tests__/config-units.test.ts +74 -0
- package/src/__tests__/initializeProviders.refresh.test.ts +146 -0
- package/src/__tests__/mjapi-bootstrap.test.ts +0 -6
- package/src/__tests__/newUsers.test.ts +726 -0
- package/src/__tests__/uploadTokenManager.test.ts +159 -0
- package/src/agentSessions/SessionManager.ts +27 -9
- package/src/auth/AuthProviderCatalogRouter.ts +76 -0
- package/src/auth/AuthProviderEngine.ts +253 -0
- package/src/auth/index.ts +60 -15
- package/src/auth/initializeProviders.ts +128 -7
- package/src/auth/scopeLimitedPrincipal.ts +50 -0
- package/src/config.ts +55 -36
- package/src/context.ts +26 -2
- package/src/entitySubclasses/MJEntityPermissionEntityServer.server.ts +8 -7
- package/src/generated/generated.ts +2347 -10551
- package/src/generic/ResolverBase.ts +67 -8
- package/src/generic/RunViewResolver.ts +31 -0
- package/src/index.ts +165 -16
- package/src/integration/CustomColumnPromoter.ts +520 -98
- package/src/integration/InactiveRowWarnings.ts +85 -0
- package/src/integration/RSUProgressBridge.ts +248 -0
- package/src/integration/SchemaRefreshLaunch.ts +93 -0
- package/src/providerConfigUnits.ts +21 -0
- package/src/resolvers/AdhocQueryResolver.ts +21 -6
- package/src/resolvers/FileResolver.ts +200 -40
- package/src/resolvers/IdentityClaimRedemptionResolver.ts +184 -0
- package/src/resolvers/IntegrationDiscoveryResolver.ts +390 -71
- package/src/resolvers/QueryResolver.ts +25 -11
- package/src/resolvers/QuerySystemUserResolver.ts +28 -13
- package/src/resolvers/RunAIAgentResolver.ts +21 -6
- package/src/resolvers/TaskGraphFrameResolver.ts +67 -0
- package/src/resolvers/UserResolver.ts +99 -60
- package/src/resolvers/currentUserRoles.ts +47 -0
- package/src/resolvers/meetingRecordingRegistration.ts +3 -7
- package/src/rest/MediaAccessKeys.ts +47 -1
- package/src/rest/MediaStreamHandler.ts +98 -3
- package/src/rest/OAuthCallbackHandler.ts +149 -41
- package/src/rest/UploadTokenManager.ts +211 -0
- package/src/services/IntegrationSyncWorkerService.ts +141 -0
- package/src/services/StartTaskGraphDispatcher.ts +21 -1
- package/src/services/TaskGraphAgentRunner.ts +23 -0
- package/src/services/TaskGraphContinuationDeliverer.ts +11 -1
- package/src/types.ts +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaRefreshLaunch.d.ts","sourceRoot":"","sources":["../../src/integration/SchemaRefreshLaunch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACrC,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAWD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CACxC,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,wBAAwB,GAAG,SAAS,GAC9C,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAEtF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,GAAG,SAAS,GAAG,MAAM,CAK5F"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Pure reporting helpers for the connector schema-refresh pipeline launch.
|
|
3
|
+
*
|
|
4
|
+
* The refresh is a live vendor introspect and can run for minutes on a large catalog, so
|
|
5
|
+
* IntegrationCreateConnection / IntegrationUpdateConnection can launch it *detached* and hand the
|
|
6
|
+
* caller a tailable run ID instead of blocking. That split creates one easy-to-get-wrong reporting
|
|
7
|
+
* case: a detached summary's counts are placeholder zeros, and describing them as results ("0
|
|
8
|
+
* created, 0 updated") reads to an operator as "the refresh found nothing" — the opposite of "the
|
|
9
|
+
* refresh has not finished yet". This module owns that decision so it can be pinned by a test
|
|
10
|
+
* without standing up a resolver.
|
|
11
|
+
*/
|
|
12
|
+
/** The counts clause, or an explicit failure clause when the pipeline did not succeed. */
|
|
13
|
+
function describeFinishedRefresh(summary) {
|
|
14
|
+
if (!summary.Succeeded) {
|
|
15
|
+
return `schema refresh FAILED (${summary.FailureMessage ?? 'no reason reported'}) — see run ${summary.RunID}`;
|
|
16
|
+
}
|
|
17
|
+
return `schema refresh: ${summary.ObjectsCreated} created, ` +
|
|
18
|
+
`${summary.ObjectsUpdated} updated, ${summary.UnresolvedObjects.length} PK-unresolved`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Builds the human-facing `Message` for IntegrationCreateConnection.
|
|
22
|
+
*
|
|
23
|
+
* @param testConnection whether the caller asked for (and got) a live connection test
|
|
24
|
+
* @param summary the refresh summary, or undefined when no refresh was requested
|
|
25
|
+
*/
|
|
26
|
+
export function BuildCreateConnectionMessage(testConnection, summary) {
|
|
27
|
+
if (!summary)
|
|
28
|
+
return 'Connection created and test passed';
|
|
29
|
+
const created = `Connection created${testConnection ? ', test passed' : ''}`;
|
|
30
|
+
// Never report a detached run's placeholder counts as findings — point at the run stream instead.
|
|
31
|
+
if (summary.InProgress)
|
|
32
|
+
return `${created}, schema refresh running — tail run ${summary.RunID}`;
|
|
33
|
+
return `${created}, ${describeFinishedRefresh(summary)}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Builds the human-facing `Message` for IntegrationUpdateConnection's blocking-refresh path.
|
|
37
|
+
* Shares {@link describeFinishedRefresh} with create so a failed refresh can never be reported as
|
|
38
|
+
* a clean zero-count run on one path and honestly on the other.
|
|
39
|
+
*/
|
|
40
|
+
export function BuildUpdateConnectionMessage(summary) {
|
|
41
|
+
return `Updated, ${describeFinishedRefresh(summary)}`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Builds the human-facing `Message` for IntegrationUpdateConnection's detached-refresh path.
|
|
45
|
+
* Separate from {@link BuildCreateConnectionMessage} because update has no connection-test clause.
|
|
46
|
+
*/
|
|
47
|
+
export function BuildDetachedRefreshMessage(runID) {
|
|
48
|
+
return `Updated, schema refresh running — tail run ${runID}`;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Builds the human-facing `Message` for IntegrationReactivateConnection.
|
|
52
|
+
*
|
|
53
|
+
* Reactivation is committed before any refresh starts, so every message here begins by saying so.
|
|
54
|
+
* That ordering is the whole point: whatever the refresh does or fails to do afterwards, the
|
|
55
|
+
* connection IS active, and the operator must not read a refresh problem as "resume didn't work".
|
|
56
|
+
*
|
|
57
|
+
* @param summary the refresh summary, or undefined when no refresh was requested
|
|
58
|
+
*/
|
|
59
|
+
export function BuildReactivateMessage(summary) {
|
|
60
|
+
if (!summary)
|
|
61
|
+
return 'Reactivated';
|
|
62
|
+
// Never report a detached run's placeholder counts as findings — point at the run stream instead.
|
|
63
|
+
if (summary.InProgress)
|
|
64
|
+
return `Reactivated, schema refresh running — tail run ${summary.RunID}`;
|
|
65
|
+
return `Reactivated, ${describeFinishedRefresh(summary)}`;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=SchemaRefreshLaunch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaRefreshLaunch.js","sourceRoot":"","sources":["../../src/integration/SchemaRefreshLaunch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAyBH,0FAA0F;AAC1F,SAAS,uBAAuB,CAAC,OAAiC;IAC9D,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,0BAA0B,OAAO,CAAC,cAAc,IAAI,oBAAoB,eAAe,OAAO,CAAC,KAAK,EAAE,CAAC;IAClH,CAAC;IACD,OAAO,mBAAmB,OAAO,CAAC,cAAc,YAAY;QACxD,GAAG,OAAO,CAAC,cAAc,aAAa,OAAO,CAAC,iBAAiB,CAAC,MAAM,gBAAgB,CAAC;AAC/F,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CACxC,cAAuB,EACvB,OAA6C;IAE7C,IAAI,CAAC,OAAO;QAAE,OAAO,oCAAoC,CAAC;IAC1D,MAAM,OAAO,GAAG,qBAAqB,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7E,kGAAkG;IAClG,IAAI,OAAO,CAAC,UAAU;QAAE,OAAO,GAAG,OAAO,uCAAuC,OAAO,CAAC,KAAK,EAAE,CAAC;IAChG,OAAO,GAAG,OAAO,KAAK,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAiC;IAC1E,OAAO,YAAY,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACrD,OAAO,8CAA8C,KAAK,EAAE,CAAC;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAA6C;IAChF,IAAI,CAAC,OAAO;QAAE,OAAO,aAAa,CAAC;IACnC,kGAAkG;IAClG,IAAI,OAAO,CAAC,UAAU;QAAE,OAAO,kDAAkD,OAAO,CAAC,KAAK,EAAE,CAAC;IACjG,OAAO,gBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit-conversion seam between MJServer's configuration and SQLServerDataProvider.
|
|
3
|
+
*
|
|
4
|
+
* MJServer configures `databaseSettings.metadataCacheRefreshInterval` in **milliseconds**
|
|
5
|
+
* (default 180000 = 3 minutes, overridable via the METADATA_CACHE_REFRESH_INTERVAL env var).
|
|
6
|
+
* `SQLServerProviderConfigData`'s third constructor parameter is `checkRefreshIntervalSeconds`
|
|
7
|
+
* — declared in **seconds**.
|
|
8
|
+
*
|
|
9
|
+
* Commit 645c5a5e8 fixed a bug where the raw millisecond value was handed straight to the
|
|
10
|
+
* provider, so the "3 minute" default became a 180000-second (~50 hour) metadata cache
|
|
11
|
+
* refresh cadence. This function is the single place that conversion happens; both provider
|
|
12
|
+
* bootstrap call sites in `index.ts` (the main pool and the CodeGen-credentialed pool) go
|
|
13
|
+
* through it, and `config-units.test.ts` pins the contract so the units can never silently
|
|
14
|
+
* regress again.
|
|
15
|
+
*
|
|
16
|
+
* @param metadataCacheRefreshIntervalMs - the configured refresh interval, in milliseconds
|
|
17
|
+
* @returns the same interval expressed in seconds, the unit `checkRefreshIntervalSeconds` declares
|
|
18
|
+
*/
|
|
19
|
+
export declare function MetadataCacheRefreshIntervalSeconds(metadataCacheRefreshIntervalMs: number): number;
|
|
20
|
+
//# sourceMappingURL=providerConfigUnits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerConfigUnits.d.ts","sourceRoot":"","sources":["../src/providerConfigUnits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mCAAmC,CAAC,8BAA8B,EAAE,MAAM,GAAG,MAAM,CAElG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit-conversion seam between MJServer's configuration and SQLServerDataProvider.
|
|
3
|
+
*
|
|
4
|
+
* MJServer configures `databaseSettings.metadataCacheRefreshInterval` in **milliseconds**
|
|
5
|
+
* (default 180000 = 3 minutes, overridable via the METADATA_CACHE_REFRESH_INTERVAL env var).
|
|
6
|
+
* `SQLServerProviderConfigData`'s third constructor parameter is `checkRefreshIntervalSeconds`
|
|
7
|
+
* — declared in **seconds**.
|
|
8
|
+
*
|
|
9
|
+
* Commit 645c5a5e8 fixed a bug where the raw millisecond value was handed straight to the
|
|
10
|
+
* provider, so the "3 minute" default became a 180000-second (~50 hour) metadata cache
|
|
11
|
+
* refresh cadence. This function is the single place that conversion happens; both provider
|
|
12
|
+
* bootstrap call sites in `index.ts` (the main pool and the CodeGen-credentialed pool) go
|
|
13
|
+
* through it, and `config-units.test.ts` pins the contract so the units can never silently
|
|
14
|
+
* regress again.
|
|
15
|
+
*
|
|
16
|
+
* @param metadataCacheRefreshIntervalMs - the configured refresh interval, in milliseconds
|
|
17
|
+
* @returns the same interval expressed in seconds, the unit `checkRefreshIntervalSeconds` declares
|
|
18
|
+
*/
|
|
19
|
+
export function MetadataCacheRefreshIntervalSeconds(metadataCacheRefreshIntervalMs) {
|
|
20
|
+
return metadataCacheRefreshIntervalMs / 1000;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=providerConfigUnits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerConfigUnits.js","sourceRoot":"","sources":["../src/providerConfigUnits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mCAAmC,CAAC,8BAAsC;IACtF,OAAO,8BAA8B,GAAG,IAAI,CAAC;AACjD,CAAC"}
|
|
@@ -19,6 +19,10 @@ declare class AdhocQueryInput {
|
|
|
19
19
|
* - Executes on read-only connection pool only (no fallback to read-write)
|
|
20
20
|
* - Configurable timeout (default 30s)
|
|
21
21
|
* - Requires authenticated user (standard GraphQL auth, no @RequireSystemUser)
|
|
22
|
+
* - Refuses scope-limited principals (see {@link IsScopeLimitedPrincipal}). Raw SQL bypasses
|
|
23
|
+
* RunView, entity permissions and row-level security, so the RLS scope tokens that confine a
|
|
24
|
+
* magic-link session are never applied on this path — there is no narrower filter to fall back
|
|
25
|
+
* to, only refusal.
|
|
22
26
|
*
|
|
23
27
|
* Auto-discovered by MJServer's dynamic resolver import.
|
|
24
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdhocQueryResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/AdhocQueryResolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"AdhocQueryResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/AdhocQueryResolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD;;;GAGG;AACH,cACM,eAAe;IAEjB,GAAG,EAAE,MAAM,CAAC;IAGZ,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBACa,kBAAmB,SAAQ,YAAY;IAE1C,iBAAiB,CACkB,KAAK,EAAE,eAAe,EACpD,OAAO,EAAE,UAAU,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IAgI9B;;;;;;;;;OASG;YACW,mBAAmB;IA6BjC;;;;OAIG;YACW,kBAAkB;IAwBhC,OAAO,CAAC,gBAAgB;CAc3B"}
|
|
@@ -16,6 +16,7 @@ import { SQLExpressionValidator } from '@memberjunction/global';
|
|
|
16
16
|
import { RenderPipeline } from '@memberjunction/generic-database-provider';
|
|
17
17
|
import { GetReadOnlyDataSource, GetReadOnlyProvider } from '../util.js';
|
|
18
18
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
19
|
+
import { IsScopeLimitedPrincipal } from '../auth/scopeLimitedPrincipal.js';
|
|
19
20
|
import { RunQueryResultType } from './QueryResolver.js';
|
|
20
21
|
import { exactTotalFromPage, resolveAdhocTotalRowCount } from './adhoc-query-helpers.js';
|
|
21
22
|
import sql from 'mssql';
|
|
@@ -52,6 +53,10 @@ AdhocQueryInput = __decorate([
|
|
|
52
53
|
* - Executes on read-only connection pool only (no fallback to read-write)
|
|
53
54
|
* - Configurable timeout (default 30s)
|
|
54
55
|
* - Requires authenticated user (standard GraphQL auth, no @RequireSystemUser)
|
|
56
|
+
* - Refuses scope-limited principals (see {@link IsScopeLimitedPrincipal}). Raw SQL bypasses
|
|
57
|
+
* RunView, entity permissions and row-level security, so the RLS scope tokens that confine a
|
|
58
|
+
* magic-link session are never applied on this path — there is no narrower filter to fall back
|
|
59
|
+
* to, only refusal.
|
|
55
60
|
*
|
|
56
61
|
* Auto-discovered by MJServer's dynamic resolver import.
|
|
57
62
|
*/
|
|
@@ -59,13 +64,22 @@ let AdhocQueryResolver = class AdhocQueryResolver extends ResolverBase {
|
|
|
59
64
|
async ExecuteAdhocQuery(input, context) {
|
|
60
65
|
const startTime = Date.now();
|
|
61
66
|
try {
|
|
62
|
-
// 1.
|
|
67
|
+
// 1. SECURITY: refuse principals whose read authority is narrower than their role
|
|
68
|
+
// grant. This resolver runs a raw SELECT on the read-only pool — it does NOT go
|
|
69
|
+
// through RunView, entity permissions or row-level security, so the RLS scope tokens
|
|
70
|
+
// that confine a magic-link session are never substituted here. There is no filter
|
|
71
|
+
// to narrow, so the only correct answer for such a principal is no. Checked before
|
|
72
|
+
// the SQL is even validated: authorization gates the work, it does not race it.
|
|
73
|
+
if (IsScopeLimitedPrincipal(context.userPayload?.userRecord)) {
|
|
74
|
+
return this.buildErrorResult('Ad-hoc SQL execution is not permitted for scope-limited sessions.');
|
|
75
|
+
}
|
|
76
|
+
// 2. Security: validate SQL using SQLExpressionValidator
|
|
63
77
|
const validator = SQLExpressionValidator.Instance;
|
|
64
78
|
const validation = validator.validateFullQuery(input.SQL);
|
|
65
79
|
if (!validation.valid) {
|
|
66
80
|
return this.buildErrorResult(validation.error || 'SQL validation failed');
|
|
67
81
|
}
|
|
68
|
-
//
|
|
82
|
+
// 3. Get READ-ONLY data source (no fallback to read-write)
|
|
69
83
|
let readOnlyDS;
|
|
70
84
|
try {
|
|
71
85
|
readOnlyDS = GetReadOnlyDataSource(context.dataSources, { allowFallbackToReadWrite: false });
|
|
@@ -73,7 +87,7 @@ let AdhocQueryResolver = class AdhocQueryResolver extends ResolverBase {
|
|
|
73
87
|
catch {
|
|
74
88
|
return this.buildErrorResult('No read-only data source available for ad-hoc query execution');
|
|
75
89
|
}
|
|
76
|
-
//
|
|
90
|
+
// 4. Resolve platform from the read-only provider for the render pipeline.
|
|
77
91
|
let platform = 'sqlserver';
|
|
78
92
|
try {
|
|
79
93
|
const provider = GetReadOnlyProvider(context.providers, { allowFallbackToReadWrite: false });
|
|
@@ -84,7 +98,7 @@ let AdhocQueryResolver = class AdhocQueryResolver extends ResolverBase {
|
|
|
84
98
|
// Provider not configured — keep the default platform.
|
|
85
99
|
}
|
|
86
100
|
const contextUser = context.userPayload?.userRecord;
|
|
87
|
-
//
|
|
101
|
+
// 5. Route the SQL through RenderPipeline so composition tokens
|
|
88
102
|
// resolve, comments and templates are processed, and the row cap
|
|
89
103
|
// is applied at the database (via TOP / LIMIT / OFFSET-FETCH).
|
|
90
104
|
//
|
|
@@ -115,12 +129,12 @@ let AdhocQueryResolver = class AdhocQueryResolver extends ResolverBase {
|
|
|
115
129
|
const renderMsg = renderErr instanceof Error ? renderErr.message : String(renderErr);
|
|
116
130
|
return this.buildErrorResult(`Ad-hoc query rendering failed: ${renderMsg}`);
|
|
117
131
|
}
|
|
118
|
-
//
|
|
132
|
+
// 6. Execute the page (and, only when a full page needs it, the count) under
|
|
119
133
|
// a shared wall-clock deadline derived from the request's timeout budget.
|
|
120
134
|
const deadline = startTime + (input.TimeoutSeconds ?? 30) * 1000;
|
|
121
135
|
const { recordset, totalRowCount } = await this.executeDataAndCount(readOnlyDS, dataSQL, countSQL, startRow, usePaging ? maxRows : null, deadline);
|
|
122
136
|
const executionTimeMs = Date.now() - startTime;
|
|
123
|
-
//
|
|
137
|
+
// 7. Return as RunQueryResultType
|
|
124
138
|
return {
|
|
125
139
|
QueryID: '',
|
|
126
140
|
QueryName: 'Ad-Hoc Query',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdhocQueryResolver.js","sourceRoot":"","sources":["../../src/resolvers/AdhocQueryResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAoB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB;;;GAGG;AAEH,IAAM,eAAe,GAArB,MAAM,eAAe;CAYpB,CAAA;AAVG;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,iEAAiE,EAAE,CAAC;;4CAC5F;AAGZ;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC;;uDACvE;AAGxB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oFAAoF,EAAE,CAAC;;gDACvH;AAGjB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,qIAAqI,EAAE,CAAC;;iDACvK;AAXhB,eAAe;IADpB,SAAS,EAAE;GACN,eAAe,CAYpB;AAED
|
|
1
|
+
{"version":3,"file":"AdhocQueryResolver.js","sourceRoot":"","sources":["../../src/resolvers/AdhocQueryResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,28 @@ import { CreateMJFileInput, MJFileResolver as FileResolverBase, MJFile_, UpdateM
|
|
|
3
3
|
export declare class CreateUploadURLInput {
|
|
4
4
|
FileID: string;
|
|
5
5
|
}
|
|
6
|
+
export declare class UploadStorageFileInput {
|
|
7
|
+
FileName?: string;
|
|
8
|
+
Base64Data?: string;
|
|
9
|
+
UploadToken?: string;
|
|
10
|
+
MimeType?: string;
|
|
11
|
+
AccountID?: string;
|
|
12
|
+
CategoryID?: string;
|
|
13
|
+
Description?: string;
|
|
14
|
+
PathPrefix?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare class UploadStorageFilePayload {
|
|
17
|
+
Success: boolean;
|
|
18
|
+
FileID?: string;
|
|
19
|
+
File?: MJFile_;
|
|
20
|
+
ErrorMessage?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class CreateUploadStageTokenPayload {
|
|
23
|
+
Success: boolean;
|
|
24
|
+
Token?: string;
|
|
25
|
+
Url?: string;
|
|
26
|
+
ErrorMessage?: string;
|
|
27
|
+
}
|
|
6
28
|
export declare class CreateFilePayload {
|
|
7
29
|
File: MJFile_;
|
|
8
30
|
UploadUrl: string;
|
|
@@ -214,6 +236,12 @@ export declare class FileResolver extends FileResolverBase {
|
|
|
214
236
|
UploadUrl: string;
|
|
215
237
|
NameExists: boolean;
|
|
216
238
|
}>;
|
|
239
|
+
/**
|
|
240
|
+
* Direct server-side file upload using MJ Storage subsystem.
|
|
241
|
+
* Uploads file contents directly via the configured storage driver (Box, Azure, S3, Google Drive, Dropbox, etc.)
|
|
242
|
+
* and creates/persists the MJ: Files database record.
|
|
243
|
+
*/
|
|
244
|
+
UploadStorageFile(input: UploadStorageFileInput, context: AppContext): Promise<UploadStorageFilePayload>;
|
|
217
245
|
DownloadUrl(file: MJFile_, context: AppContext): Promise<string>;
|
|
218
246
|
/**
|
|
219
247
|
* Returns an `MJ: Files` record's bytes as base64, read server-side through authenticated MJStorage
|
|
@@ -256,10 +284,12 @@ export declare class FileResolver extends FileResolverBase {
|
|
|
256
284
|
*
|
|
257
285
|
* @see CreateFile for the legacy path that also creates a File entity record.
|
|
258
286
|
*/
|
|
259
|
-
CreatePreAuthUploadUrl(input: CreatePreAuthUploadUrlInput, context: AppContext): Promise<
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
287
|
+
CreatePreAuthUploadUrl(input: CreatePreAuthUploadUrlInput, context: AppContext): Promise<CreatePreAuthUploadUrlPayload>;
|
|
288
|
+
/**
|
|
289
|
+
* Mints a cryptographically signed, short-lived media-upload token for staging raw binary files.
|
|
290
|
+
* Checks user permissions on `MJ: Files` before issuing.
|
|
291
|
+
*/
|
|
292
|
+
CreateUploadStageToken(context: AppContext): Promise<CreateUploadStageTokenPayload>;
|
|
263
293
|
DeleteStorageObject(input: DeleteStorageObjectInput, context: AppContext): Promise<boolean>;
|
|
264
294
|
MoveStorageObject(input: MoveStorageObjectInput, context: AppContext): Promise<boolean>;
|
|
265
295
|
CopyStorageObject(input: CopyStorageObjectInput, context: AppContext): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/FileResolver.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EAGV,kBAAkB,EASlB,YAAY,EAIb,MAAM,wBAAwB,CAAC;AAiBhC,OAAO,EAAE,iBAAiB,EAAE,cAAc,IAAI,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"FileResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/FileResolver.ts"],"names":[],"mappings":"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"}
|