@memberjunction/server 2.133.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +125 -4
- package/dist/config.js.map +1 -1
- package/dist/generated/generated.d.ts +510 -4
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +3438 -302
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +5 -2
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +5 -0
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +53 -4
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/resolvers/RunTestResolver.d.ts +2 -2
- package/dist/resolvers/RunTestResolver.d.ts.map +1 -1
- package/dist/resolvers/RunTestResolver.js +33 -11
- package/dist/resolvers/RunTestResolver.js.map +1 -1
- package/package.json +51 -44
- package/src/__tests__/setup.ts +21 -0
- package/src/config.ts +167 -4
- package/src/generated/generated.ts +2002 -21
- package/src/generic/ResolverBase.ts +6 -2
- package/src/generic/RunViewResolver.ts +55 -5
- package/src/index.ts +4 -4
- package/src/resolvers/RunTestResolver.ts +25 -0
- package/dist/auth/__tests__/backward-compatibility.test.d.ts +0 -2
- package/dist/auth/__tests__/backward-compatibility.test.d.ts.map +0 -1
- package/dist/auth/__tests__/backward-compatibility.test.js +0 -135
- package/dist/auth/__tests__/backward-compatibility.test.js.map +0 -1
|
@@ -136,7 +136,7 @@ TestExecutionStreamMessage = __decorate([
|
|
|
136
136
|
], TestExecutionStreamMessage);
|
|
137
137
|
export { TestExecutionStreamMessage };
|
|
138
138
|
let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
139
|
-
async RunTest(testId, verbose = true, environment, tags, pubSub, { userPayload } = {}) {
|
|
139
|
+
async RunTest(testId, verbose = true, environment, tags, variables, pubSub, { userPayload } = {}) {
|
|
140
140
|
const startTime = Date.now();
|
|
141
141
|
try {
|
|
142
142
|
const user = this.GetUserFromPayload(userPayload);
|
|
@@ -149,10 +149,20 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
149
149
|
const progressCallback = pubSub ?
|
|
150
150
|
this.createProgressCallback(pubSub, userPayload, testId) :
|
|
151
151
|
undefined;
|
|
152
|
+
let parsedVariables;
|
|
153
|
+
if (variables) {
|
|
154
|
+
try {
|
|
155
|
+
parsedVariables = JSON.parse(variables);
|
|
156
|
+
}
|
|
157
|
+
catch (e) {
|
|
158
|
+
LogError(`[RunTestResolver] Failed to parse variables: ${variables}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
152
161
|
const options = {
|
|
153
162
|
verbose,
|
|
154
163
|
environment,
|
|
155
164
|
tags,
|
|
165
|
+
variables: parsedVariables,
|
|
156
166
|
progressCallback
|
|
157
167
|
};
|
|
158
168
|
const result = await engine.RunTest(testId, options, user);
|
|
@@ -201,7 +211,7 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
201
211
|
};
|
|
202
212
|
}
|
|
203
213
|
}
|
|
204
|
-
async RunTestSuite(suiteId, verbose = true, environment, parallel = false, tags, selectedTestIds, sequenceStart, sequenceEnd, pubSub, { userPayload } = {}) {
|
|
214
|
+
async RunTestSuite(suiteId, verbose = true, environment, parallel = false, tags, variables, selectedTestIds, sequenceStart, sequenceEnd, pubSub, { userPayload } = {}) {
|
|
205
215
|
const startTime = Date.now();
|
|
206
216
|
try {
|
|
207
217
|
const user = this.GetUserFromPayload(userPayload);
|
|
@@ -223,11 +233,21 @@ let RunTestResolver = class RunTestResolver extends ResolverBase {
|
|
|
223
233
|
LogError(`[RunTestResolver] Failed to parse selectedTestIds: ${selectedTestIds}`);
|
|
224
234
|
}
|
|
225
235
|
}
|
|
236
|
+
let parsedVariables;
|
|
237
|
+
if (variables) {
|
|
238
|
+
try {
|
|
239
|
+
parsedVariables = JSON.parse(variables);
|
|
240
|
+
}
|
|
241
|
+
catch (e) {
|
|
242
|
+
LogError(`[RunTestResolver] Failed to parse variables: ${variables}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
226
245
|
const options = {
|
|
227
246
|
verbose,
|
|
228
247
|
environment,
|
|
229
248
|
parallel,
|
|
230
249
|
tags,
|
|
250
|
+
variables: parsedVariables,
|
|
231
251
|
selectedTestIds: parsedSelectedTestIds,
|
|
232
252
|
sequenceStart,
|
|
233
253
|
sequenceEnd,
|
|
@@ -331,10 +351,11 @@ __decorate([
|
|
|
331
351
|
__param(1, Arg('verbose', { nullable: true })),
|
|
332
352
|
__param(2, Arg('environment', { nullable: true })),
|
|
333
353
|
__param(3, Arg('tags', { nullable: true })),
|
|
334
|
-
__param(4,
|
|
335
|
-
__param(5,
|
|
354
|
+
__param(4, Arg('variables', { nullable: true })),
|
|
355
|
+
__param(5, PubSub()),
|
|
356
|
+
__param(6, Ctx()),
|
|
336
357
|
__metadata("design:type", Function),
|
|
337
|
-
__metadata("design:paramtypes", [String, Boolean, String, String, PubSubEngine, Object]),
|
|
358
|
+
__metadata("design:paramtypes", [String, Boolean, String, String, String, PubSubEngine, Object]),
|
|
338
359
|
__metadata("design:returntype", Promise)
|
|
339
360
|
], RunTestResolver.prototype, "RunTest", null);
|
|
340
361
|
__decorate([
|
|
@@ -344,13 +365,14 @@ __decorate([
|
|
|
344
365
|
__param(2, Arg('environment', { nullable: true })),
|
|
345
366
|
__param(3, Arg('parallel', { nullable: true })),
|
|
346
367
|
__param(4, Arg('tags', { nullable: true })),
|
|
347
|
-
__param(5, Arg('
|
|
348
|
-
__param(6, Arg('
|
|
349
|
-
__param(7, Arg('
|
|
350
|
-
__param(8,
|
|
351
|
-
__param(9,
|
|
368
|
+
__param(5, Arg('variables', { nullable: true })),
|
|
369
|
+
__param(6, Arg('selectedTestIds', { nullable: true })),
|
|
370
|
+
__param(7, Arg('sequenceStart', () => Int, { nullable: true })),
|
|
371
|
+
__param(8, Arg('sequenceEnd', () => Int, { nullable: true })),
|
|
372
|
+
__param(9, PubSub()),
|
|
373
|
+
__param(10, Ctx()),
|
|
352
374
|
__metadata("design:type", Function),
|
|
353
|
-
__metadata("design:paramtypes", [String, Boolean, String, Boolean, String, String, Number, Number, PubSubEngine, Object]),
|
|
375
|
+
__metadata("design:paramtypes", [String, Boolean, String, Boolean, String, String, String, Number, Number, PubSubEngine, Object]),
|
|
354
376
|
__metadata("design:returntype", Promise)
|
|
355
377
|
], RunTestResolver.prototype, "RunTestSuite", null);
|
|
356
378
|
__decorate([
|
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/server",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -17,54 +17,58 @@
|
|
|
17
17
|
"scripts": {
|
|
18
18
|
"build": "tsc",
|
|
19
19
|
"bundle": "tsc -noEmit && pkgroll --sourcemap --minify",
|
|
20
|
-
"watch": "tsc -w"
|
|
20
|
+
"watch": "tsc -w",
|
|
21
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
22
|
+
"test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
|
|
23
|
+
"test:coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"
|
|
21
24
|
},
|
|
22
25
|
"dependencies": {
|
|
23
26
|
"@apollo/server": "^4.9.1",
|
|
24
27
|
"@graphql-tools/schema": "latest",
|
|
25
28
|
"@graphql-tools/utils": "^10.0.1",
|
|
26
|
-
"@memberjunction/actions": "
|
|
27
|
-
"@memberjunction/actions-apollo": "
|
|
28
|
-
"@memberjunction/actions-bizapps-accounting": "
|
|
29
|
-
"@memberjunction/actions-bizapps-crm": "
|
|
30
|
-
"@memberjunction/actions-bizapps-formbuilders": "
|
|
31
|
-
"@memberjunction/actions-bizapps-lms": "
|
|
32
|
-
"@memberjunction/actions-bizapps-social": "
|
|
33
|
-
"@memberjunction/ai": "
|
|
34
|
-
"@memberjunction/ai-agent-manager": "
|
|
35
|
-
"@memberjunction/ai-agent-manager-actions": "
|
|
36
|
-
"@memberjunction/ai-agents": "
|
|
37
|
-
"@memberjunction/ai-core-plus": "
|
|
38
|
-
"@memberjunction/ai-prompts": "
|
|
39
|
-
"@memberjunction/ai-provider-bundle": "
|
|
40
|
-
"@memberjunction/ai-vectors-pinecone": "
|
|
41
|
-
"@memberjunction/aiengine": "
|
|
42
|
-
"@memberjunction/communication-ms-graph": "
|
|
43
|
-
"@memberjunction/communication-sendgrid": "
|
|
44
|
-
"@memberjunction/component-registry-client-sdk": "
|
|
45
|
-
"@memberjunction/
|
|
46
|
-
"@memberjunction/core
|
|
47
|
-
"@memberjunction/core-
|
|
48
|
-
"@memberjunction/core-entities
|
|
49
|
-
"@memberjunction/
|
|
50
|
-
"@memberjunction/data-context
|
|
51
|
-
"@memberjunction/
|
|
52
|
-
"@memberjunction/
|
|
53
|
-
"@memberjunction/
|
|
54
|
-
"@memberjunction/
|
|
55
|
-
"@memberjunction/
|
|
56
|
-
"@memberjunction/
|
|
57
|
-
"@memberjunction/
|
|
58
|
-
"@memberjunction/
|
|
59
|
-
"@memberjunction/
|
|
60
|
-
"@memberjunction/scheduling-
|
|
61
|
-
"@memberjunction/scheduling-
|
|
62
|
-
"@memberjunction/scheduling-engine
|
|
63
|
-
"@memberjunction/
|
|
64
|
-
"@memberjunction/
|
|
65
|
-
"@memberjunction/
|
|
66
|
-
"@memberjunction/
|
|
67
|
-
"@memberjunction/
|
|
29
|
+
"@memberjunction/actions": "3.1.0",
|
|
30
|
+
"@memberjunction/actions-apollo": "3.1.0",
|
|
31
|
+
"@memberjunction/actions-bizapps-accounting": "3.1.0",
|
|
32
|
+
"@memberjunction/actions-bizapps-crm": "3.1.0",
|
|
33
|
+
"@memberjunction/actions-bizapps-formbuilders": "3.1.0",
|
|
34
|
+
"@memberjunction/actions-bizapps-lms": "3.1.0",
|
|
35
|
+
"@memberjunction/actions-bizapps-social": "3.1.0",
|
|
36
|
+
"@memberjunction/ai": "3.1.0",
|
|
37
|
+
"@memberjunction/ai-agent-manager": "3.1.0",
|
|
38
|
+
"@memberjunction/ai-agent-manager-actions": "3.1.0",
|
|
39
|
+
"@memberjunction/ai-agents": "3.1.0",
|
|
40
|
+
"@memberjunction/ai-core-plus": "3.1.0",
|
|
41
|
+
"@memberjunction/ai-prompts": "3.1.0",
|
|
42
|
+
"@memberjunction/ai-provider-bundle": "3.1.0",
|
|
43
|
+
"@memberjunction/ai-vectors-pinecone": "3.1.0",
|
|
44
|
+
"@memberjunction/aiengine": "3.1.0",
|
|
45
|
+
"@memberjunction/communication-ms-graph": "3.1.0",
|
|
46
|
+
"@memberjunction/communication-sendgrid": "3.1.0",
|
|
47
|
+
"@memberjunction/component-registry-client-sdk": "3.1.0",
|
|
48
|
+
"@memberjunction/config": "3.1.0",
|
|
49
|
+
"@memberjunction/core": "3.1.0",
|
|
50
|
+
"@memberjunction/core-actions": "3.1.0",
|
|
51
|
+
"@memberjunction/core-entities": "3.1.0",
|
|
52
|
+
"@memberjunction/core-entities-server": "3.1.0",
|
|
53
|
+
"@memberjunction/data-context": "3.1.0",
|
|
54
|
+
"@memberjunction/data-context-server": "3.1.0",
|
|
55
|
+
"@memberjunction/doc-utils": "3.1.0",
|
|
56
|
+
"@memberjunction/encryption": "3.1.0",
|
|
57
|
+
"@memberjunction/entity-communications-server": "3.1.0",
|
|
58
|
+
"@memberjunction/external-change-detection": "3.1.0",
|
|
59
|
+
"@memberjunction/global": "3.1.0",
|
|
60
|
+
"@memberjunction/graphql-dataprovider": "3.1.0",
|
|
61
|
+
"@memberjunction/interactive-component-types": "3.1.0",
|
|
62
|
+
"@memberjunction/queue": "3.1.0",
|
|
63
|
+
"@memberjunction/scheduling-actions": "3.1.0",
|
|
64
|
+
"@memberjunction/scheduling-base-types": "3.1.0",
|
|
65
|
+
"@memberjunction/scheduling-engine": "3.1.0",
|
|
66
|
+
"@memberjunction/scheduling-engine-base": "3.1.0",
|
|
67
|
+
"@memberjunction/skip-types": "3.1.0",
|
|
68
|
+
"@memberjunction/sqlserver-dataprovider": "3.1.0",
|
|
69
|
+
"@memberjunction/storage": "3.1.0",
|
|
70
|
+
"@memberjunction/templates": "3.1.0",
|
|
71
|
+
"@memberjunction/testing-engine": "3.1.0",
|
|
68
72
|
"@types/compression": "^1.7.5",
|
|
69
73
|
"@types/cors": "^2.8.13",
|
|
70
74
|
"@types/jsonwebtoken": "9.0.6",
|
|
@@ -99,7 +103,10 @@
|
|
|
99
103
|
},
|
|
100
104
|
"devDependencies": {
|
|
101
105
|
"@jest/globals": "^30.2.0",
|
|
106
|
+
"@types/jest": "^29.5.12",
|
|
107
|
+
"jest": "^29.7.0",
|
|
102
108
|
"pkgroll": "2.1.1",
|
|
109
|
+
"ts-jest": "^29.2.5",
|
|
103
110
|
"typescript": "^5.4.5"
|
|
104
111
|
},
|
|
105
112
|
"repository": {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jest setup file for MJServer tests
|
|
3
|
+
* Runs before each test file
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// Increase timeout for async operations
|
|
7
|
+
// Using globalThis for ESM compatibility
|
|
8
|
+
if (typeof jest !== 'undefined') {
|
|
9
|
+
jest.setTimeout(30000);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Mock console methods to reduce noise (can be enabled per test)
|
|
13
|
+
// Uncomment to silence logs during tests
|
|
14
|
+
// global.console = {
|
|
15
|
+
// ...console,
|
|
16
|
+
// log: jest.fn(),
|
|
17
|
+
// debug: jest.fn(),
|
|
18
|
+
// info: jest.fn(),
|
|
19
|
+
// warn: jest.fn(),
|
|
20
|
+
// error: jest.fn(),
|
|
21
|
+
// };
|
package/src/config.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { cosmiconfigSync } from 'cosmiconfig';
|
|
3
3
|
import { LogError, LogStatus } from '@memberjunction/core';
|
|
4
|
+
import { mergeConfigs } from '@memberjunction/config';
|
|
4
5
|
|
|
5
6
|
const explorer = cosmiconfigSync('mj', { searchStrategy: 'global' });
|
|
6
7
|
|
|
@@ -92,6 +93,7 @@ const sqlLoggingOptionsSchema = z.object({
|
|
|
92
93
|
prettyPrint: z.boolean().optional().default(true),
|
|
93
94
|
logRecordChangeMetadata: z.boolean().optional().default(false),
|
|
94
95
|
retainEmptyLogFiles: z.boolean().optional().default(false),
|
|
96
|
+
verboseOutput: z.boolean().optional().default(false),
|
|
95
97
|
});
|
|
96
98
|
|
|
97
99
|
const sqlLoggingSchema = z.object({
|
|
@@ -201,6 +203,157 @@ export type ScheduledJobsConfig = z.infer<typeof scheduledJobsSchema>;
|
|
|
201
203
|
export type TelemetryConfig = z.infer<typeof telemetrySchema>;
|
|
202
204
|
export type ConfigInfo = z.infer<typeof configInfoSchema>;
|
|
203
205
|
|
|
206
|
+
/**
|
|
207
|
+
* Default MJServer configuration values.
|
|
208
|
+
* These provide sensible defaults for all optional settings, with environment variable overrides.
|
|
209
|
+
*
|
|
210
|
+
* Priority order (highest to lowest):
|
|
211
|
+
* 1. User's mj.config.cjs overrides
|
|
212
|
+
* 2. Environment variables (referenced here in defaults)
|
|
213
|
+
* 3. Hardcoded default values
|
|
214
|
+
*
|
|
215
|
+
* This means minimal configs only need to override if they want something different
|
|
216
|
+
* than both the environment variable AND the default value.
|
|
217
|
+
*/
|
|
218
|
+
export const DEFAULT_SERVER_CONFIG: Partial<ConfigInfo> = {
|
|
219
|
+
// Database connection settings (environment-driven with defaults)
|
|
220
|
+
dbHost: process.env.DB_HOST ?? 'localhost',
|
|
221
|
+
dbPort: process.env.DB_PORT ? parseInt(process.env.DB_PORT, 10) : 1433,
|
|
222
|
+
dbDatabase: process.env.DB_DATABASE,
|
|
223
|
+
dbUsername: process.env.DB_USERNAME,
|
|
224
|
+
dbPassword: process.env.DB_PASSWORD,
|
|
225
|
+
dbReadOnlyUsername: process.env.DB_READ_ONLY_USERNAME,
|
|
226
|
+
dbReadOnlyPassword: process.env.DB_READ_ONLY_PASSWORD,
|
|
227
|
+
dbTrustServerCertificate: ['true', '1', 'Y', 'y'].includes(process.env.DB_TRUST_SERVER_CERTIFICATE ?? '') ? 'Y' : 'N',
|
|
228
|
+
dbInstanceName: process.env.DB_INSTANCE_NAME,
|
|
229
|
+
mjCoreSchema: process.env.MJ_CORE_SCHEMA ?? '__mj',
|
|
230
|
+
|
|
231
|
+
// GraphQL server settings (environment-driven with defaults)
|
|
232
|
+
graphqlPort: process.env.GRAPHQL_PORT ? parseInt(process.env.GRAPHQL_PORT, 10) : 4000,
|
|
233
|
+
graphqlRootPath: process.env.GRAPHQL_ROOT_PATH ?? '/',
|
|
234
|
+
baseUrl: process.env.GRAPHQL_BASE_URL ?? 'http://localhost',
|
|
235
|
+
publicUrl: process.env.MJAPI_PUBLIC_URL,
|
|
236
|
+
enableIntrospection: process.env.ENABLE_INTROSPECTION === 'true',
|
|
237
|
+
apiKey: process.env.MJ_API_KEY,
|
|
238
|
+
websiteRunFromPackage: process.env.WEBSITE_RUN_FROM_PACKAGE ? parseInt(process.env.WEBSITE_RUN_FROM_PACKAGE, 10) : undefined,
|
|
239
|
+
|
|
240
|
+
// User handling defaults
|
|
241
|
+
userHandling: {
|
|
242
|
+
autoCreateNewUsers: true,
|
|
243
|
+
newUserLimitedToAuthorizedDomains: false,
|
|
244
|
+
newUserAuthorizedDomains: [],
|
|
245
|
+
newUserRoles: ['UI', 'Developer'],
|
|
246
|
+
updateCacheWhenNotFound: true,
|
|
247
|
+
updateCacheWhenNotFoundDelay: 5000,
|
|
248
|
+
contextUserForNewUserCreation: 'not.set@nowhere.com',
|
|
249
|
+
CreateUserApplicationRecords: true,
|
|
250
|
+
UserApplications: []
|
|
251
|
+
},
|
|
252
|
+
|
|
253
|
+
// Database settings (with environment variable for cache refresh)
|
|
254
|
+
databaseSettings: {
|
|
255
|
+
connectionTimeout: 45000,
|
|
256
|
+
requestTimeout: 30000,
|
|
257
|
+
metadataCacheRefreshInterval: isFinite(Number(process.env.METADATA_CACHE_REFRESH_INTERVAL))
|
|
258
|
+
? Number(process.env.METADATA_CACHE_REFRESH_INTERVAL)
|
|
259
|
+
: 180000,
|
|
260
|
+
connectionPool: {
|
|
261
|
+
max: 50,
|
|
262
|
+
min: 5,
|
|
263
|
+
idleTimeoutMillis: 30000,
|
|
264
|
+
acquireTimeoutMillis: 30000,
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
|
|
268
|
+
// Viewing system defaults
|
|
269
|
+
viewingSystem: {
|
|
270
|
+
enableSmartFilters: true,
|
|
271
|
+
},
|
|
272
|
+
|
|
273
|
+
// REST API defaults
|
|
274
|
+
restApiOptions: {
|
|
275
|
+
enabled: false,
|
|
276
|
+
},
|
|
277
|
+
|
|
278
|
+
// Ask Skip configuration (environment-driven)
|
|
279
|
+
askSkip: {
|
|
280
|
+
url: process.env.ASK_SKIP_URL,
|
|
281
|
+
chatURL: process.env.ASK_SKIP_CHAT_URL,
|
|
282
|
+
learningCycleURL: process.env.ASK_SKIP_LEARNING_URL,
|
|
283
|
+
learningCycleIntervalInMinutes: process.env.ASK_SKIP_LEARNING_CYCLE_INTERVAL_IN_MINUTES
|
|
284
|
+
? parseInt(process.env.ASK_SKIP_LEARNING_CYCLE_INTERVAL_IN_MINUTES, 10)
|
|
285
|
+
: undefined,
|
|
286
|
+
learningCycleEnabled: process.env.ASK_SKIP_RUN_LEARNING_CYCLES === 'true',
|
|
287
|
+
learningCycleRunUponStartup: process.env.ASK_SKIP_RUN_LEARNING_CYCLES_UPON_STARTUP === 'true',
|
|
288
|
+
orgID: process.env.ASK_SKIP_ORGANIZATION_ID,
|
|
289
|
+
apiKey: process.env.ASK_SKIP_API_KEY,
|
|
290
|
+
organizationInfo: process.env.ASK_SKIP_ORGANIZATION_INFO,
|
|
291
|
+
entitiesToSend: {
|
|
292
|
+
excludeSchemas: [],
|
|
293
|
+
includeEntitiesFromExcludedSchemas: [],
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
|
|
297
|
+
// SQL logging defaults
|
|
298
|
+
sqlLogging: {
|
|
299
|
+
enabled: true,
|
|
300
|
+
defaultOptions: {
|
|
301
|
+
formatAsMigration: false,
|
|
302
|
+
statementTypes: 'both',
|
|
303
|
+
batchSeparator: 'GO',
|
|
304
|
+
prettyPrint: true,
|
|
305
|
+
logRecordChangeMetadata: false,
|
|
306
|
+
retainEmptyLogFiles: false,
|
|
307
|
+
verboseOutput: false,
|
|
308
|
+
},
|
|
309
|
+
allowedLogDirectory: './logs/sql',
|
|
310
|
+
maxActiveSessions: 5,
|
|
311
|
+
autoCleanupEmptyFiles: true,
|
|
312
|
+
sessionTimeout: 3600000
|
|
313
|
+
},
|
|
314
|
+
|
|
315
|
+
// Scheduled jobs defaults
|
|
316
|
+
scheduledJobs: {
|
|
317
|
+
enabled: true,
|
|
318
|
+
systemUserEmail: 'not.set@nowhere.com',
|
|
319
|
+
maxConcurrentJobs: 5,
|
|
320
|
+
defaultLockTimeout: 600000,
|
|
321
|
+
staleLockCleanupInterval: 300000
|
|
322
|
+
},
|
|
323
|
+
|
|
324
|
+
// Telemetry defaults
|
|
325
|
+
telemetry: {
|
|
326
|
+
enabled: true,
|
|
327
|
+
level: 'standard'
|
|
328
|
+
},
|
|
329
|
+
|
|
330
|
+
// Auth providers (environment-driven)
|
|
331
|
+
authProviders: [
|
|
332
|
+
// Microsoft Azure AD / Entra ID
|
|
333
|
+
process.env.TENANT_ID && process.env.WEB_CLIENT_ID ? {
|
|
334
|
+
name: 'azure',
|
|
335
|
+
type: 'msal',
|
|
336
|
+
issuer: `https://login.microsoftonline.com/${process.env.TENANT_ID}/v2.0`,
|
|
337
|
+
audience: process.env.WEB_CLIENT_ID,
|
|
338
|
+
jwksUri: `https://login.microsoftonline.com/${process.env.TENANT_ID}/discovery/v2.0/keys`,
|
|
339
|
+
clientId: process.env.WEB_CLIENT_ID,
|
|
340
|
+
tenantId: process.env.TENANT_ID
|
|
341
|
+
} : null,
|
|
342
|
+
|
|
343
|
+
// Auth0
|
|
344
|
+
process.env.AUTH0_DOMAIN && process.env.AUTH0_CLIENT_ID ? {
|
|
345
|
+
name: 'auth0',
|
|
346
|
+
type: 'auth0',
|
|
347
|
+
issuer: `https://${process.env.AUTH0_DOMAIN}/`,
|
|
348
|
+
audience: process.env.AUTH0_CLIENT_ID,
|
|
349
|
+
jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json`,
|
|
350
|
+
clientId: process.env.AUTH0_CLIENT_ID,
|
|
351
|
+
clientSecret: process.env.AUTH0_CLIENT_SECRET,
|
|
352
|
+
domain: process.env.AUTH0_DOMAIN
|
|
353
|
+
} : null,
|
|
354
|
+
].filter(Boolean),
|
|
355
|
+
};
|
|
356
|
+
|
|
204
357
|
export const configInfo: ConfigInfo = loadConfig();
|
|
205
358
|
|
|
206
359
|
export const {
|
|
@@ -231,14 +384,24 @@ export const {
|
|
|
231
384
|
export function loadConfig() {
|
|
232
385
|
const configSearchResult = explorer.search(process.cwd());
|
|
233
386
|
|
|
234
|
-
|
|
235
|
-
|
|
387
|
+
// Start with DEFAULT_SERVER_CONFIG as base
|
|
388
|
+
let mergedConfig = DEFAULT_SERVER_CONFIG;
|
|
389
|
+
|
|
390
|
+
// If user config exists, merge it with defaults
|
|
391
|
+
if (configSearchResult && !configSearchResult.isEmpty) {
|
|
392
|
+
LogStatus(`Config file found at ${configSearchResult.filepath}`);
|
|
393
|
+
|
|
394
|
+
// Merge user config with defaults (user config takes precedence)
|
|
395
|
+
mergedConfig = mergeConfigs(DEFAULT_SERVER_CONFIG, configSearchResult.config);
|
|
396
|
+
} else {
|
|
397
|
+
LogStatus(`No config file found, using DEFAULT_SERVER_CONFIG`);
|
|
236
398
|
}
|
|
237
|
-
LogStatus(`Config file found at ${configSearchResult.filepath}`);
|
|
238
399
|
|
|
239
|
-
|
|
400
|
+
// Validate the merged configuration
|
|
401
|
+
const configParsing = configInfoSchema.safeParse(mergedConfig);
|
|
240
402
|
if (!configParsing.success) {
|
|
241
403
|
LogError('Error parsing config file', null, JSON.stringify(configParsing.error.issues, null, 2));
|
|
404
|
+
throw new Error('Configuration validation failed');
|
|
242
405
|
}
|
|
243
406
|
return configParsing.data;
|
|
244
407
|
}
|