@memberjunction/server 3.3.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/README.md +59 -0
- 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 +22 -0
- package/dist/auth/BaseAuthProvider.d.ts.map +1 -1
- package/dist/auth/BaseAuthProvider.js +25 -8
- package/dist/auth/BaseAuthProvider.js.map +1 -1
- package/dist/auth/IAuthProvider.d.ts +33 -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 +44 -10
- 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 +954 -2
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +12183 -14532
- 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 +59 -0
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +233 -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 +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +84 -39
- 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 +76 -1
- package/dist/resolvers/APIKeyResolver.d.ts.map +1 -1
- package/dist/resolvers/APIKeyResolver.js +53 -11
- package/dist/resolvers/APIKeyResolver.js.map +1 -1
- package/dist/resolvers/ActionResolver.d.ts +191 -1
- package/dist/resolvers/ActionResolver.d.ts.map +1 -1
- package/dist/resolvers/ActionResolver.js +156 -22
- package/dist/resolvers/ActionResolver.js.map +1 -1
- 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.d.ts +5 -4
- package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
- package/dist/resolvers/DatasetResolver.js +9 -18
- package/dist/resolvers/DatasetResolver.js.map +1 -1
- package/dist/resolvers/EntityCommunicationsResolver.d.ts +42 -1
- package/dist/resolvers/EntityCommunicationsResolver.d.ts.map +1 -1
- package/dist/resolvers/EntityCommunicationsResolver.js +5 -37
- 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 +20 -2
- package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataContextDataResolver.js +27 -12
- 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 +361 -0
- package/dist/resolvers/MCPResolver.d.ts.map +1 -0
- package/dist/resolvers/MCPResolver.js +1270 -0
- package/dist/resolvers/MCPResolver.js.map +1 -0
- package/dist/resolvers/MergeRecordsResolver.d.ts +2 -1
- package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.js +6 -30
- 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 +22 -1
- package/dist/resolvers/QueryResolver.d.ts.map +1 -1
- package/dist/resolvers/QueryResolver.js +50 -37
- package/dist/resolvers/QueryResolver.js.map +1 -1
- package/dist/resolvers/ReportResolver.d.ts +5 -1
- package/dist/resolvers/ReportResolver.d.ts.map +1 -1
- package/dist/resolvers/ReportResolver.js +13 -11
- 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 +118 -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 +98 -22
- package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
- package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
- package/dist/resolvers/RunTemplateResolver.js +10 -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 +23 -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.d.ts.map +1 -1
- package/dist/resolvers/UserResolver.js +14 -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/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 -77
- package/src/auth/BaseAuthProvider.ts +3 -0
- package/src/auth/IAuthProvider.ts +5 -0
- package/src/auth/exampleNewUserSubClass.ts +1 -5
- package/src/config.ts +2 -2
- package/src/entitySubclasses/entityPermissions.server.ts +1 -3
- package/src/generated/generated.ts +6245 -2558
- package/src/generic/ResolverBase.ts +89 -3
- package/src/index.ts +71 -64
- package/src/resolvers/APIKeyResolver.ts +8 -1
- package/src/resolvers/ActionResolver.ts +8 -1
- package/src/resolvers/DatasetResolver.ts +11 -4
- package/src/resolvers/EntityCommunicationsResolver.ts +5 -1
- package/src/resolvers/GetDataContextDataResolver.ts +14 -6
- package/src/resolvers/InfoResolver.ts +5 -1
- package/src/resolvers/MCPResolver.ts +1380 -0
- package/src/resolvers/MergeRecordsResolver.ts +5 -1
- package/src/resolvers/PotentialDuplicateRecordResolver.ts +0 -4
- package/src/resolvers/QueryResolver.ts +17 -3
- package/src/resolvers/ReportResolver.ts +8 -1
- package/src/resolvers/RunAIAgentResolver.ts +6 -0
- package/src/resolvers/RunAIPromptResolver.ts +10 -1
- package/src/resolvers/RunTemplateResolver.ts +4 -1
- package/src/resolvers/TaskResolver.ts +3 -0
- package/src/resolvers/UserResolver.ts +15 -3
- 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/resolvers/AskSkipResolver.ts +0 -3446
- package/src/scheduler/LearningCycleScheduler.ts +0 -320
|
@@ -15,11 +15,8 @@ import { LogError, LogStatus } from '@memberjunction/core';
|
|
|
15
15
|
import { TestEngine } from '@memberjunction/testing-engine';
|
|
16
16
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
17
17
|
import { PUSH_STATUS_UPDATES_TOPIC } from '../generic/PushStatusResolver.js';
|
|
18
|
+
// ===== GraphQL Types =====
|
|
18
19
|
let TestRunResult = class TestRunResult {
|
|
19
|
-
success;
|
|
20
|
-
errorMessage;
|
|
21
|
-
executionTimeMs;
|
|
22
|
-
result;
|
|
23
20
|
};
|
|
24
21
|
__decorate([
|
|
25
22
|
Field(),
|
|
@@ -42,10 +39,6 @@ TestRunResult = __decorate([
|
|
|
42
39
|
], TestRunResult);
|
|
43
40
|
export { TestRunResult };
|
|
44
41
|
let TestSuiteRunResult = class TestSuiteRunResult {
|
|
45
|
-
success;
|
|
46
|
-
errorMessage;
|
|
47
|
-
executionTimeMs;
|
|
48
|
-
result;
|
|
49
42
|
};
|
|
50
43
|
__decorate([
|
|
51
44
|
Field(),
|
|
@@ -68,12 +61,6 @@ TestSuiteRunResult = __decorate([
|
|
|
68
61
|
], TestSuiteRunResult);
|
|
69
62
|
export { TestSuiteRunResult };
|
|
70
63
|
let TestExecutionProgress = class TestExecutionProgress {
|
|
71
|
-
currentStep;
|
|
72
|
-
percentage;
|
|
73
|
-
message;
|
|
74
|
-
testName;
|
|
75
|
-
driverType;
|
|
76
|
-
oracleEvaluation;
|
|
77
64
|
};
|
|
78
65
|
__decorate([
|
|
79
66
|
Field(),
|
|
@@ -104,12 +91,6 @@ TestExecutionProgress = __decorate([
|
|
|
104
91
|
], TestExecutionProgress);
|
|
105
92
|
export { TestExecutionProgress };
|
|
106
93
|
let TestExecutionStreamMessage = class TestExecutionStreamMessage {
|
|
107
|
-
sessionId;
|
|
108
|
-
testRunId;
|
|
109
|
-
type;
|
|
110
|
-
progress;
|
|
111
|
-
timestamp;
|
|
112
|
-
testRun;
|
|
113
94
|
};
|
|
114
95
|
__decorate([
|
|
115
96
|
Field(() => ID),
|
|
@@ -135,7 +116,11 @@ TestExecutionStreamMessage = __decorate([
|
|
|
135
116
|
ObjectType()
|
|
136
117
|
], TestExecutionStreamMessage);
|
|
137
118
|
export { TestExecutionStreamMessage };
|
|
119
|
+
// ===== Resolver =====
|
|
138
120
|
let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
121
|
+
/**
|
|
122
|
+
* Execute a single test
|
|
123
|
+
*/
|
|
139
124
|
async RunTest(testId, verbose = true, environment, tags, variables, pubSub, { userPayload } = {}) {
|
|
140
125
|
const startTime = Date.now();
|
|
141
126
|
try {
|
|
@@ -144,11 +129,15 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
144
129
|
throw new Error('User context required');
|
|
145
130
|
}
|
|
146
131
|
LogStatus(`[RunTestResolver] Starting test execution: ${testId}`);
|
|
132
|
+
// Get singleton instance
|
|
147
133
|
const engine = TestEngine.Instance;
|
|
134
|
+
// Configure engine (loads driver and oracle registries)
|
|
148
135
|
await engine.Config(verbose, user);
|
|
136
|
+
// Create progress callback if we have pubSub
|
|
149
137
|
const progressCallback = pubSub ?
|
|
150
138
|
this.createProgressCallback(pubSub, userPayload, testId) :
|
|
151
139
|
undefined;
|
|
140
|
+
// Parse variables from JSON string if provided
|
|
152
141
|
let parsedVariables;
|
|
153
142
|
if (variables) {
|
|
154
143
|
try {
|
|
@@ -158,6 +147,7 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
158
147
|
LogError(`[RunTestResolver] Failed to parse variables: ${variables}`);
|
|
159
148
|
}
|
|
160
149
|
}
|
|
150
|
+
// Run the test
|
|
161
151
|
const options = {
|
|
162
152
|
verbose,
|
|
163
153
|
environment,
|
|
@@ -166,14 +156,19 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
166
156
|
progressCallback
|
|
167
157
|
};
|
|
168
158
|
const result = await engine.RunTest(testId, options, user);
|
|
159
|
+
// Handle both single result and array of results (RepeatCount > 1)
|
|
169
160
|
let finalResult;
|
|
170
161
|
let allPassed = true;
|
|
171
162
|
if (Array.isArray(result)) {
|
|
163
|
+
// Multiple iterations - check if all passed
|
|
172
164
|
allPassed = result.every(r => r.status === 'Passed');
|
|
165
|
+
// For GraphQL, return summary information
|
|
166
|
+
// The full array is serialized in the result field
|
|
173
167
|
finalResult = {
|
|
174
168
|
testRunId: result[0]?.testRunId || '',
|
|
175
169
|
status: allPassed ? 'Passed' : 'Failed'
|
|
176
170
|
};
|
|
171
|
+
// Publish completion for each iteration
|
|
177
172
|
if (pubSub) {
|
|
178
173
|
for (const iterationResult of result) {
|
|
179
174
|
this.publishComplete(pubSub, userPayload, iterationResult);
|
|
@@ -182,8 +177,10 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
182
177
|
LogStatus(`[RunTestResolver] Test completed: ${result.length} iterations, ${allPassed ? 'all passed' : 'some failed'} in ${Date.now() - startTime}ms`);
|
|
183
178
|
}
|
|
184
179
|
else {
|
|
180
|
+
// Single result
|
|
185
181
|
finalResult = result;
|
|
186
182
|
allPassed = result.status === 'Passed';
|
|
183
|
+
// Publish completion
|
|
187
184
|
if (pubSub && result.testRunId) {
|
|
188
185
|
this.publishComplete(pubSub, userPayload, result);
|
|
189
186
|
}
|
|
@@ -192,7 +189,7 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
192
189
|
const executionTime = Date.now() - startTime;
|
|
193
190
|
return {
|
|
194
191
|
success: allPassed,
|
|
195
|
-
result: JSON.stringify(result),
|
|
192
|
+
result: JSON.stringify(result), // Full result (single or array)
|
|
196
193
|
executionTimeMs: executionTime
|
|
197
194
|
};
|
|
198
195
|
}
|
|
@@ -200,6 +197,7 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
200
197
|
const executionTime = Date.now() - startTime;
|
|
201
198
|
const errorMsg = error.message;
|
|
202
199
|
LogError(`[RunTestResolver] Test execution failed: ${errorMsg}`);
|
|
200
|
+
// Publish error
|
|
203
201
|
if (pubSub) {
|
|
204
202
|
this.publishError(pubSub, userPayload, testId, errorMsg);
|
|
205
203
|
}
|
|
@@ -211,6 +209,9 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
211
209
|
};
|
|
212
210
|
}
|
|
213
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Execute a test suite
|
|
214
|
+
*/
|
|
214
215
|
async RunTestSuite(suiteId, verbose = true, environment, parallel = false, tags, variables, selectedTestIds, sequenceStart, sequenceEnd, pubSub, { userPayload } = {}) {
|
|
215
216
|
const startTime = Date.now();
|
|
216
217
|
try {
|
|
@@ -221,9 +222,11 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
221
222
|
LogStatus(`[RunTestResolver] Starting suite execution: ${suiteId}`);
|
|
222
223
|
const engine = TestEngine.Instance;
|
|
223
224
|
await engine.Config(verbose, user);
|
|
225
|
+
// Create progress callback
|
|
224
226
|
const progressCallback = pubSub ?
|
|
225
227
|
this.createProgressCallback(pubSub, userPayload, suiteId) :
|
|
226
228
|
undefined;
|
|
229
|
+
// Parse selectedTestIds from JSON string if provided
|
|
227
230
|
let parsedSelectedTestIds;
|
|
228
231
|
if (selectedTestIds) {
|
|
229
232
|
try {
|
|
@@ -233,6 +236,7 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
233
236
|
LogError(`[RunTestResolver] Failed to parse selectedTestIds: ${selectedTestIds}`);
|
|
234
237
|
}
|
|
235
238
|
}
|
|
239
|
+
// Parse variables from JSON string if provided
|
|
236
240
|
let parsedVariables;
|
|
237
241
|
if (variables) {
|
|
238
242
|
try {
|
|
@@ -274,12 +278,22 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
274
278
|
};
|
|
275
279
|
}
|
|
276
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* Query to check if a test is currently running
|
|
283
|
+
*/
|
|
277
284
|
async IsTestRunning(testId, { userPayload } = {}) {
|
|
285
|
+
// TODO: Implement running test tracking
|
|
286
|
+
// For now, return false
|
|
278
287
|
return false;
|
|
279
288
|
}
|
|
289
|
+
// ===== Progress Callbacks =====
|
|
290
|
+
/**
|
|
291
|
+
* Create progress callback for test execution
|
|
292
|
+
*/
|
|
280
293
|
createProgressCallback(pubSub, userPayload, testId) {
|
|
281
294
|
return (progress) => {
|
|
282
295
|
LogStatus(`[RunTestResolver] Progress: ${progress.step} - ${progress.percentage}%`);
|
|
296
|
+
// Get test run from metadata
|
|
283
297
|
const testRun = progress.metadata?.testRun;
|
|
284
298
|
const progressMsg = {
|
|
285
299
|
sessionId: userPayload.sessionId || '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunTestResolver.js","sourceRoot":"","sources":["../../src/resolvers/RunTestResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,GAAG,EACH,GAAG,EACH,UAAU,EACV,KAAK,EACL,MAAM,EACN,YAAY,EACZ,EAAE,EACF,GAAG,EACN,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"RunTestResolver.js","sourceRoot":"","sources":["../../src/resolvers/RunTestResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,71 +1,383 @@
|
|
|
1
1
|
import { AppContext } from '../types.js';
|
|
2
2
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration options for SQL logging sessions.
|
|
5
|
+
* These options control how SQL statements are captured, formatted, and saved.
|
|
6
|
+
*/
|
|
3
7
|
export declare class SqlLoggingOptions {
|
|
8
|
+
/** Whether to format SQL output as a database migration file with proper headers */
|
|
4
9
|
formatAsMigration?: boolean;
|
|
10
|
+
/** Optional description or notes for this logging configuration */
|
|
5
11
|
description?: string;
|
|
12
|
+
/** Types of SQL statements to capture: 'queries', 'mutations', or 'both' */
|
|
6
13
|
statementTypes?: 'queries' | 'mutations' | 'both';
|
|
14
|
+
/** String separator to use between SQL statements (e.g., 'GO' for SQL Server) */
|
|
7
15
|
batchSeparator?: string;
|
|
16
|
+
/** Whether to format SQL with proper indentation and line breaks */
|
|
8
17
|
prettyPrint?: boolean;
|
|
18
|
+
/** Whether to include metadata about record changes in the log output */
|
|
9
19
|
logRecordChangeMetadata?: boolean;
|
|
20
|
+
/** Whether to keep log files even if they contain no SQL statements */
|
|
10
21
|
retainEmptyLogFiles?: boolean;
|
|
22
|
+
/** Email address to filter SQL statements by user (when filtering is enabled) */
|
|
11
23
|
filterByUserId?: string;
|
|
24
|
+
/** Array of regex/wildcard patterns to filter SQL statements */
|
|
12
25
|
filterPatterns?: string[];
|
|
26
|
+
/** How to apply patterns: 'include' or 'exclude' (default: exclude) */
|
|
13
27
|
filterType?: 'include' | 'exclude';
|
|
28
|
+
/** Whether to output verbose debug information to console */
|
|
14
29
|
verboseOutput?: boolean;
|
|
30
|
+
/** Default schema name for Flyway migration placeholder replacement */
|
|
15
31
|
defaultSchemaName?: string;
|
|
32
|
+
/** Human-readable name for the logging session */
|
|
16
33
|
sessionName?: string;
|
|
17
34
|
}
|
|
18
35
|
export declare class SqlLoggingSession {
|
|
36
|
+
/** Unique identifier for this logging session */
|
|
19
37
|
id: string;
|
|
38
|
+
/** Absolute file path where SQL statements are being logged */
|
|
20
39
|
filePath: string;
|
|
40
|
+
/** Timestamp when this logging session was started */
|
|
21
41
|
startTime: Date;
|
|
42
|
+
/** Number of SQL statements captured so far in this session */
|
|
22
43
|
statementCount: number;
|
|
44
|
+
/** Configuration options applied to this logging session */
|
|
23
45
|
options: SqlLoggingOptions;
|
|
46
|
+
/** Human-readable name for this logging session */
|
|
24
47
|
sessionName?: string;
|
|
48
|
+
/** Email address of user whose SQL is being filtered (if filtering enabled) */
|
|
25
49
|
filterByUserId?: string;
|
|
26
50
|
}
|
|
27
51
|
export declare class SqlLoggingOptionsInput {
|
|
52
|
+
/** Whether to format SQL output as a database migration file with proper headers */
|
|
28
53
|
formatAsMigration?: boolean;
|
|
54
|
+
/** Optional description or notes for this logging configuration */
|
|
29
55
|
description?: string;
|
|
56
|
+
/** Types of SQL statements to capture: 'queries', 'mutations', or 'both' */
|
|
30
57
|
statementTypes?: 'queries' | 'mutations' | 'both';
|
|
58
|
+
/** String separator to use between SQL statements (e.g., 'GO' for SQL Server) */
|
|
31
59
|
batchSeparator?: string;
|
|
60
|
+
/** Whether to format SQL with proper indentation and line breaks */
|
|
32
61
|
prettyPrint?: boolean;
|
|
62
|
+
/** Whether to include metadata about record changes in the log output */
|
|
33
63
|
logRecordChangeMetadata?: boolean;
|
|
64
|
+
/** Whether to keep log files even if they contain no SQL statements */
|
|
34
65
|
retainEmptyLogFiles?: boolean;
|
|
66
|
+
/** Email address to filter SQL statements by user (when filtering is enabled) */
|
|
35
67
|
filterByUserId?: string;
|
|
68
|
+
/** Array of regex/wildcard patterns to filter SQL statements */
|
|
36
69
|
filterPatterns?: string[];
|
|
70
|
+
/** How to apply patterns: 'include' or 'exclude' (default: exclude) */
|
|
37
71
|
filterType?: 'include' | 'exclude';
|
|
72
|
+
/** Whether to output verbose debug information to console */
|
|
38
73
|
verboseOutput?: boolean;
|
|
74
|
+
/** Default schema name for Flyway migration placeholder replacement */
|
|
39
75
|
defaultSchemaName?: string;
|
|
76
|
+
/** Human-readable name for the logging session */
|
|
40
77
|
sessionName?: string;
|
|
41
78
|
}
|
|
42
79
|
export declare class StartSqlLoggingInput {
|
|
80
|
+
/** Optional custom filename for the SQL log file (auto-generated if not provided) */
|
|
43
81
|
fileName?: string;
|
|
82
|
+
/** Configuration options for the logging session (merged with server defaults) */
|
|
44
83
|
options?: SqlLoggingOptionsInput;
|
|
84
|
+
/** Whether to filter SQL statements to only those from the current user */
|
|
45
85
|
filterToCurrentUser?: boolean;
|
|
46
86
|
}
|
|
47
87
|
export declare class SqlLoggingConfig {
|
|
88
|
+
/** Whether SQL logging is enabled in the server configuration */
|
|
48
89
|
enabled: boolean;
|
|
90
|
+
/** Default logging options applied to new sessions (can be overridden) */
|
|
49
91
|
defaultOptions: SqlLoggingOptions;
|
|
92
|
+
/** Directory path where SQL log files are allowed to be created */
|
|
50
93
|
allowedLogDirectory: string;
|
|
94
|
+
/** Maximum number of concurrent SQL logging sessions allowed */
|
|
51
95
|
maxActiveSessions: number;
|
|
96
|
+
/** Whether to automatically delete log files that contain no SQL statements */
|
|
52
97
|
autoCleanupEmptyFiles: boolean;
|
|
98
|
+
/** Timeout in milliseconds after which inactive sessions are automatically stopped */
|
|
53
99
|
sessionTimeout: number;
|
|
100
|
+
/** Current number of active SQL logging sessions */
|
|
54
101
|
activeSessionCount: number;
|
|
55
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* GraphQL resolver for SQL logging configuration and session management.
|
|
105
|
+
* Provides queries and mutations for controlling SQL logging functionality.
|
|
106
|
+
*
|
|
107
|
+
* **Security**: All operations require Owner-level privileges.
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* // Start a new logging session
|
|
112
|
+
* const session = await startSqlLogging({
|
|
113
|
+
* fileName: "my-session.sql",
|
|
114
|
+
* filterToCurrentUser: true,
|
|
115
|
+
* options: {
|
|
116
|
+
* prettyPrint: true,
|
|
117
|
+
* statementTypes: "both"
|
|
118
|
+
* }
|
|
119
|
+
* });
|
|
120
|
+
*
|
|
121
|
+
* // Get current configuration
|
|
122
|
+
* const config = await sqlLoggingConfig();
|
|
123
|
+
*
|
|
124
|
+
* // List active sessions
|
|
125
|
+
* const sessions = await activeSqlLoggingSessions();
|
|
126
|
+
*
|
|
127
|
+
* // Stop a session
|
|
128
|
+
* await stopSqlLogging(session.id);
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
56
131
|
export declare class SqlLoggingConfigResolver extends ResolverBase {
|
|
132
|
+
/** Default prefix for auto-generated SQL log filenames */
|
|
57
133
|
private static readonly LOG_FILE_PREFIX;
|
|
134
|
+
/** Track active session timeouts for proper cleanup when sessions are manually stopped */
|
|
58
135
|
private static sessionTimeouts;
|
|
136
|
+
/**
|
|
137
|
+
* Validates that the current user has Owner-level privileges required for SQL logging operations.
|
|
138
|
+
*
|
|
139
|
+
* This method performs authentication and authorization checks:
|
|
140
|
+
* - Verifies user is authenticated (has email in context)
|
|
141
|
+
* - Looks up user in UserCache by email (case-insensitive)
|
|
142
|
+
* - Checks that user Type field equals 'Owner' (trimmed for nchar padding)
|
|
143
|
+
*
|
|
144
|
+
* @param context - The GraphQL application context containing user authentication data
|
|
145
|
+
* @returns Promise resolving to the authenticated UserInfo object
|
|
146
|
+
* @throws Error if user is not authenticated, not found, or lacks Owner privileges
|
|
147
|
+
*
|
|
148
|
+
* @private
|
|
149
|
+
*/
|
|
59
150
|
private checkOwnerAccess;
|
|
151
|
+
/**
|
|
152
|
+
* Retrieves the current SQL logging configuration and status information.
|
|
153
|
+
*
|
|
154
|
+
* Returns comprehensive configuration details including:
|
|
155
|
+
* - Whether SQL logging is enabled in server config
|
|
156
|
+
* - Default logging options (formatting, statement types, etc.)
|
|
157
|
+
* - File system settings (log directory, cleanup options)
|
|
158
|
+
* - Session limits and timeout settings
|
|
159
|
+
* - Count of currently active logging sessions
|
|
160
|
+
*
|
|
161
|
+
* @param context - GraphQL context (requires Owner privileges)
|
|
162
|
+
* @returns Promise resolving to complete SQL logging configuration
|
|
163
|
+
* @throws Error if user lacks Owner privileges
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```graphql
|
|
167
|
+
* query {
|
|
168
|
+
* sqlLoggingConfig {
|
|
169
|
+
* enabled
|
|
170
|
+
* activeSessionCount
|
|
171
|
+
* maxActiveSessions
|
|
172
|
+
* allowedLogDirectory
|
|
173
|
+
* defaultOptions {
|
|
174
|
+
* prettyPrint
|
|
175
|
+
* statementTypes
|
|
176
|
+
* }
|
|
177
|
+
* }
|
|
178
|
+
* }
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
60
181
|
sqlLoggingConfig(context: AppContext): Promise<SqlLoggingConfig>;
|
|
182
|
+
/**
|
|
183
|
+
* Retrieves a list of all currently active SQL logging sessions.
|
|
184
|
+
*
|
|
185
|
+
* Returns detailed information for each active session including:
|
|
186
|
+
* - Unique session identifier and file path
|
|
187
|
+
* - Start time and statement count
|
|
188
|
+
* - Session configuration options
|
|
189
|
+
* - User filtering settings
|
|
190
|
+
*
|
|
191
|
+
* @param context - GraphQL context (requires Owner privileges)
|
|
192
|
+
* @returns Promise resolving to array of active SqlLoggingSession objects
|
|
193
|
+
* @throws Error if user lacks Owner privileges
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```graphql
|
|
197
|
+
* query {
|
|
198
|
+
* activeSqlLoggingSessions {
|
|
199
|
+
* id
|
|
200
|
+
* sessionName
|
|
201
|
+
* filePath
|
|
202
|
+
* startTime
|
|
203
|
+
* statementCount
|
|
204
|
+
* filterByUserId
|
|
205
|
+
* options {
|
|
206
|
+
* prettyPrint
|
|
207
|
+
* statementTypes
|
|
208
|
+
* }
|
|
209
|
+
* }
|
|
210
|
+
* }
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
61
213
|
activeSqlLoggingSessions(context: AppContext): Promise<SqlLoggingSession[]>;
|
|
214
|
+
/**
|
|
215
|
+
* Creates and starts a new SQL logging session with specified configuration.
|
|
216
|
+
*
|
|
217
|
+
* This mutation:
|
|
218
|
+
* - Validates SQL logging is enabled and session limits
|
|
219
|
+
* - Creates a secure file path within the allowed log directory
|
|
220
|
+
* - Configures session options (filtering, formatting, etc.)
|
|
221
|
+
* - Starts the logging session in SQLServerDataProvider
|
|
222
|
+
* - Sets up automatic cleanup after session timeout
|
|
223
|
+
*
|
|
224
|
+
* @param input - Configuration for the new logging session
|
|
225
|
+
* @param input.fileName - Optional custom filename for the log file
|
|
226
|
+
* @param input.filterToCurrentUser - Whether to filter SQL to current user only
|
|
227
|
+
* @param input.options - Logging options (formatting, statement types, etc.)
|
|
228
|
+
* @param context - GraphQL context (requires Owner privileges)
|
|
229
|
+
* @returns Promise resolving to the created SqlLoggingSession object
|
|
230
|
+
* @throws Error if logging disabled, session limit reached, or invalid file path
|
|
231
|
+
*
|
|
232
|
+
* @example
|
|
233
|
+
* ```graphql
|
|
234
|
+
* mutation {
|
|
235
|
+
* startSqlLogging(input: {
|
|
236
|
+
* fileName: "debug-session.sql"
|
|
237
|
+
* filterToCurrentUser: true
|
|
238
|
+
* options: {
|
|
239
|
+
* prettyPrint: true
|
|
240
|
+
* statementTypes: "both"
|
|
241
|
+
* sessionName: "Debug Session"
|
|
242
|
+
* }
|
|
243
|
+
* }) {
|
|
244
|
+
* id
|
|
245
|
+
* filePath
|
|
246
|
+
* sessionName
|
|
247
|
+
* }
|
|
248
|
+
* }
|
|
249
|
+
* ```
|
|
250
|
+
*/
|
|
62
251
|
startSqlLogging(input: StartSqlLoggingInput, context: AppContext): Promise<SqlLoggingSession>;
|
|
252
|
+
/**
|
|
253
|
+
* Stops and disposes of a specific SQL logging session.
|
|
254
|
+
*
|
|
255
|
+
* This mutation:
|
|
256
|
+
* - Validates the session exists and user has access
|
|
257
|
+
* - Calls dispose() on the session to close file handles
|
|
258
|
+
* - Removes the session from the active sessions map
|
|
259
|
+
* - Performs any configured cleanup operations
|
|
260
|
+
*
|
|
261
|
+
* @param sessionId - Unique identifier of the session to stop
|
|
262
|
+
* @param context - GraphQL context (requires Owner privileges)
|
|
263
|
+
* @returns Promise resolving to true if session was successfully stopped
|
|
264
|
+
* @throws Error if session not found or user lacks Owner privileges
|
|
265
|
+
*
|
|
266
|
+
* @example
|
|
267
|
+
* ```graphql
|
|
268
|
+
* mutation {
|
|
269
|
+
* stopSqlLogging(sessionId: "session-123-456")
|
|
270
|
+
* }
|
|
271
|
+
* ```
|
|
272
|
+
*/
|
|
63
273
|
stopSqlLogging(sessionId: string, context: AppContext): Promise<boolean>;
|
|
274
|
+
/**
|
|
275
|
+
* Stops and disposes of all currently active SQL logging sessions.
|
|
276
|
+
*
|
|
277
|
+
* This is a convenience method that:
|
|
278
|
+
* - Calls DisposeAllSqlLoggingSessions() on the data provider
|
|
279
|
+
* - Ensures all file handles are properly closed
|
|
280
|
+
* - Clears the active sessions map
|
|
281
|
+
* - Performs cleanup for all sessions at once
|
|
282
|
+
*
|
|
283
|
+
* @param context - GraphQL context (requires Owner privileges)
|
|
284
|
+
* @returns Promise resolving to true if all sessions were successfully stopped
|
|
285
|
+
* @throws Error if user lacks Owner privileges
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```graphql
|
|
289
|
+
* mutation {
|
|
290
|
+
* stopAllSqlLogging
|
|
291
|
+
* }
|
|
292
|
+
* ```
|
|
293
|
+
*/
|
|
64
294
|
stopAllSqlLogging(context: AppContext): Promise<boolean>;
|
|
295
|
+
/**
|
|
296
|
+
* Updates the default SQL logging options for new sessions.
|
|
297
|
+
*
|
|
298
|
+
* **Note**: This updates runtime configuration only, not the static config file.
|
|
299
|
+
* Changes apply to new sessions but do not persist across server restarts.
|
|
300
|
+
* In a production system, consider persisting changes to a database.
|
|
301
|
+
*
|
|
302
|
+
* @param options - New default options to apply (partial update supported)
|
|
303
|
+
* @param context - GraphQL context (requires Owner privileges)
|
|
304
|
+
* @returns Promise resolving to the updated SqlLoggingOptions object
|
|
305
|
+
* @throws Error if SQL logging not configured or user lacks Owner privileges
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```graphql
|
|
309
|
+
* mutation {
|
|
310
|
+
* updateSqlLoggingDefaults(options: {
|
|
311
|
+
* prettyPrint: true
|
|
312
|
+
* statementTypes: "both"
|
|
313
|
+
* logRecordChangeMetadata: false
|
|
314
|
+
* }) {
|
|
315
|
+
* prettyPrint
|
|
316
|
+
* statementTypes
|
|
317
|
+
* formatAsMigration
|
|
318
|
+
* }
|
|
319
|
+
* }
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
65
322
|
updateSqlLoggingDefaults(options: SqlLoggingOptionsInput, context: AppContext): Promise<SqlLoggingOptions>;
|
|
323
|
+
/**
|
|
324
|
+
* Reads the contents of a specific SQL log file.
|
|
325
|
+
*
|
|
326
|
+
* This method:
|
|
327
|
+
* - Validates the session exists and user has access
|
|
328
|
+
* - Ensures the file path is within the allowed log directory
|
|
329
|
+
* - Reads the file content with optional line limits
|
|
330
|
+
* - Returns the content as a string
|
|
331
|
+
*
|
|
332
|
+
* @param sessionId - Unique identifier of the logging session
|
|
333
|
+
* @param maxLines - Maximum number of lines to read (optional, defaults to all)
|
|
334
|
+
* @param context - GraphQL context (requires Owner privileges)
|
|
335
|
+
* @returns Promise resolving to the log file content
|
|
336
|
+
* @throws Error if session not found, file not accessible, or user lacks privileges
|
|
337
|
+
*
|
|
338
|
+
* @example
|
|
339
|
+
* ```graphql
|
|
340
|
+
* query {
|
|
341
|
+
* readSqlLogFile(sessionId: "session-123", maxLines: 100)
|
|
342
|
+
* }
|
|
343
|
+
* ```
|
|
344
|
+
*/
|
|
66
345
|
readSqlLogFile(sessionId: string, maxLines: number | null, context: AppContext): Promise<string>;
|
|
346
|
+
/**
|
|
347
|
+
* Debug query to check what the current user email is in the SQL provider.
|
|
348
|
+
* This helps diagnose user filtering issues when SQL statements aren't being captured.
|
|
349
|
+
*
|
|
350
|
+
* Returns a comparison of the user email stored in the SQLServerDataProvider
|
|
351
|
+
* versus the user email from the GraphQL context, which helps identify mismatches
|
|
352
|
+
* that could prevent SQL filtering from working correctly.
|
|
353
|
+
*
|
|
354
|
+
* @param context - GraphQL context containing user information
|
|
355
|
+
* @returns Formatted string showing both email values and whether they match
|
|
356
|
+
* @throws Error if user doesn't have Owner privileges
|
|
357
|
+
*/
|
|
67
358
|
debugCurrentUserEmail(context: AppContext): Promise<string>;
|
|
359
|
+
/**
|
|
360
|
+
* Ensures the specified log directory exists, creating it if necessary.
|
|
361
|
+
*
|
|
362
|
+
* This method:
|
|
363
|
+
* - Attempts to access the directory to check if it exists
|
|
364
|
+
* - Creates the directory recursively if it doesn't exist
|
|
365
|
+
* - Handles permission and file system errors gracefully
|
|
366
|
+
*
|
|
367
|
+
* @param dir - Absolute path to the directory to ensure exists
|
|
368
|
+
* @throws Error if directory cannot be created due to permissions or other issues
|
|
369
|
+
*
|
|
370
|
+
* @private
|
|
371
|
+
*/
|
|
68
372
|
private ensureDirectoryExists;
|
|
373
|
+
/**
|
|
374
|
+
* Converts SqlLoggingOptions from the provider to the GraphQL-compatible type.
|
|
375
|
+
* The provider's filterPatterns can contain RegExp objects, but GraphQL only supports strings.
|
|
376
|
+
*
|
|
377
|
+
* @param options - Options from SQLServerDataProvider
|
|
378
|
+
* @returns GraphQL-compatible SqlLoggingOptions
|
|
379
|
+
* @private
|
|
380
|
+
*/
|
|
69
381
|
private convertOptionsToGraphQL;
|
|
70
382
|
}
|
|
71
383
|
//# sourceMappingURL=SqlLoggingConfigResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlLoggingConfigResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/SqlLoggingConfigResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlLoggingConfigResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/SqlLoggingConfigResolver.ts"],"names":[],"mappings":"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"}
|