@memberjunction/server 1.8.1 → 2.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/CHANGELOG.json +1 -1
- package/CHANGELOG.md +2 -2
- package/package.json +30 -39
- package/src/apolloServer/index.ts +0 -1
- package/src/auth/newUsers.ts +4 -3
- package/src/context.ts +19 -27
- package/src/entitySubclasses/entityPermissions.server.ts +3 -3
- package/src/generated/generated.ts +9030 -8051
- package/src/generic/ResolverBase.ts +297 -172
- package/src/generic/RunViewResolver.ts +204 -14
- package/src/index.ts +18 -19
- package/src/resolvers/AskSkipResolver.ts +35 -35
- package/src/resolvers/ColorResolver.ts +3 -14
- package/src/resolvers/DatasetResolver.ts +4 -4
- package/src/resolvers/EntityCommunicationsResolver.ts +37 -15
- package/src/resolvers/FileCategoryResolver.ts +2 -2
- package/src/resolvers/FileResolver.ts +6 -4
- package/src/resolvers/MergeRecordsResolver.ts +3 -2
- package/src/resolvers/PotentialDuplicateRecordResolver.ts +48 -40
- package/src/resolvers/QueryResolver.ts +2 -2
- package/src/resolvers/ReportResolver.ts +6 -6
- package/src/resolvers/UserFavoriteResolver.ts +8 -8
- package/src/resolvers/UserResolver.ts +3 -1
- package/src/resolvers/UserViewResolver.ts +1 -1
- package/src/types.ts +21 -0
- package/tsconfig.json +3 -4
- package/dist/apolloServer/TransactionPlugin.d.ts +0 -4
- package/dist/apolloServer/TransactionPlugin.d.ts.map +0 -1
- package/dist/apolloServer/TransactionPlugin.js +0 -49
- package/dist/apolloServer/TransactionPlugin.js.map +0 -1
- package/dist/apolloServer/index.d.ts +0 -11
- package/dist/apolloServer/index.d.ts.map +0 -1
- package/dist/apolloServer/index.js +0 -27
- package/dist/apolloServer/index.js.map +0 -1
- package/dist/auth/exampleNewUserSubClass.d.ts +0 -6
- package/dist/auth/exampleNewUserSubClass.d.ts.map +0 -1
- package/dist/auth/exampleNewUserSubClass.js +0 -54
- package/dist/auth/exampleNewUserSubClass.js.map +0 -1
- package/dist/auth/index.d.ts +0 -30
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -129
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/newUsers.d.ts +0 -5
- package/dist/auth/newUsers.d.ts.map +0 -1
- package/dist/auth/newUsers.js +0 -66
- package/dist/auth/newUsers.js.map +0 -1
- package/dist/auth/tokenExpiredError.d.ts +0 -5
- package/dist/auth/tokenExpiredError.d.ts.map +0 -1
- package/dist/auth/tokenExpiredError.js +0 -16
- package/dist/auth/tokenExpiredError.js.map +0 -1
- package/dist/cache.d.ts +0 -3
- package/dist/cache.d.ts.map +0 -1
- package/dist/cache.js +0 -11
- package/dist/cache.js.map +0 -1
- package/dist/config.d.ts +0 -196
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -72
- package/dist/config.js.map +0 -1
- package/dist/context.d.ts +0 -17
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -114
- package/dist/context.js.map +0 -1
- package/dist/directives/Public.d.ts +0 -4
- package/dist/directives/Public.d.ts.map +0 -1
- package/dist/directives/Public.js +0 -34
- package/dist/directives/Public.js.map +0 -1
- package/dist/directives/index.d.ts +0 -2
- package/dist/directives/index.d.ts.map +0 -1
- package/dist/directives/index.js +0 -18
- package/dist/directives/index.js.map +0 -1
- package/dist/entitySubclasses/DuplicateRunEntity.server.d.ts +0 -6
- package/dist/entitySubclasses/DuplicateRunEntity.server.d.ts.map +0 -1
- package/dist/entitySubclasses/DuplicateRunEntity.server.js +0 -37
- package/dist/entitySubclasses/DuplicateRunEntity.server.js.map +0 -1
- package/dist/entitySubclasses/EntityBehavior.server.d.ts +0 -29
- package/dist/entitySubclasses/EntityBehavior.server.d.ts.map +0 -1
- package/dist/entitySubclasses/EntityBehavior.server.js +0 -213
- package/dist/entitySubclasses/EntityBehavior.server.js.map +0 -1
- package/dist/entitySubclasses/entityPermissions.server.d.ts +0 -23
- package/dist/entitySubclasses/entityPermissions.server.d.ts.map +0 -1
- package/dist/entitySubclasses/entityPermissions.server.js +0 -99
- package/dist/entitySubclasses/entityPermissions.server.js.map +0 -1
- package/dist/entitySubclasses/userViewEntity.server.d.ts +0 -13
- package/dist/entitySubclasses/userViewEntity.server.d.ts.map +0 -1
- package/dist/entitySubclasses/userViewEntity.server.js +0 -164
- package/dist/entitySubclasses/userViewEntity.server.js.map +0 -1
- package/dist/generated/generated.d.ts +0 -6482
- package/dist/generated/generated.d.ts.map +0 -1
- package/dist/generated/generated.js +0 -35073
- package/dist/generated/generated.js.map +0 -1
- package/dist/generic/DeleteOptionsInput.d.ts +0 -5
- package/dist/generic/DeleteOptionsInput.d.ts.map +0 -1
- package/dist/generic/DeleteOptionsInput.js +0 -28
- package/dist/generic/DeleteOptionsInput.js.map +0 -1
- package/dist/generic/KeyInputOutputTypes.d.ts +0 -16
- package/dist/generic/KeyInputOutputTypes.d.ts.map +0 -1
- package/dist/generic/KeyInputOutputTypes.js +0 -62
- package/dist/generic/KeyInputOutputTypes.js.map +0 -1
- package/dist/generic/KeyValuePairInput.d.ts +0 -5
- package/dist/generic/KeyValuePairInput.d.ts.map +0 -1
- package/dist/generic/KeyValuePairInput.js +0 -28
- package/dist/generic/KeyValuePairInput.js.map +0 -1
- package/dist/generic/PushStatusResolver.d.ts +0 -14
- package/dist/generic/PushStatusResolver.d.ts.map +0 -1
- package/dist/generic/PushStatusResolver.js +0 -58
- package/dist/generic/PushStatusResolver.js.map +0 -1
- package/dist/generic/ResolverBase.d.ts +0 -37
- package/dist/generic/ResolverBase.d.ts.map +0 -1
- package/dist/generic/ResolverBase.js +0 -468
- package/dist/generic/ResolverBase.js.map +0 -1
- package/dist/generic/RunViewResolver.d.ts +0 -88
- package/dist/generic/RunViewResolver.d.ts.map +0 -1
- package/dist/generic/RunViewResolver.js +0 -443
- package/dist/generic/RunViewResolver.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -145
- package/dist/index.js.map +0 -1
- package/dist/orm.d.ts +0 -4
- package/dist/orm.d.ts.map +0 -1
- package/dist/orm.js +0 -34
- package/dist/orm.js.map +0 -1
- package/dist/resolvers/AskSkipResolver.d.ts +0 -54
- package/dist/resolvers/AskSkipResolver.d.ts.map +0 -1
- package/dist/resolvers/AskSkipResolver.js +0 -800
- package/dist/resolvers/AskSkipResolver.js.map +0 -1
- package/dist/resolvers/ColorResolver.d.ts +0 -22
- package/dist/resolvers/ColorResolver.d.ts.map +0 -1
- package/dist/resolvers/ColorResolver.js +0 -94
- package/dist/resolvers/ColorResolver.js.map +0 -1
- package/dist/resolvers/DatasetResolver.d.ts +0 -42
- package/dist/resolvers/DatasetResolver.d.ts.map +0 -1
- package/dist/resolvers/DatasetResolver.js +0 -168
- package/dist/resolvers/DatasetResolver.js.map +0 -1
- package/dist/resolvers/EntityCommunicationsResolver.d.ts +0 -49
- package/dist/resolvers/EntityCommunicationsResolver.d.ts.map +0 -1
- package/dist/resolvers/EntityCommunicationsResolver.js +0 -228
- package/dist/resolvers/EntityCommunicationsResolver.js.map +0 -1
- package/dist/resolvers/EntityRecordNameResolver.d.ts +0 -21
- package/dist/resolvers/EntityRecordNameResolver.d.ts.map +0 -1
- package/dist/resolvers/EntityRecordNameResolver.js +0 -113
- package/dist/resolvers/EntityRecordNameResolver.js.map +0 -1
- package/dist/resolvers/EntityResolver.d.ts +0 -6
- package/dist/resolvers/EntityResolver.d.ts.map +0 -1
- package/dist/resolvers/EntityResolver.js +0 -60
- package/dist/resolvers/EntityResolver.js.map +0 -1
- package/dist/resolvers/FileCategoryResolver.d.ts +0 -6
- package/dist/resolvers/FileCategoryResolver.d.ts.map +0 -1
- package/dist/resolvers/FileCategoryResolver.js +0 -65
- package/dist/resolvers/FileCategoryResolver.js.map +0 -1
- package/dist/resolvers/FileResolver.d.ts +0 -24
- package/dist/resolvers/FileResolver.d.ts.map +0 -1
- package/dist/resolvers/FileResolver.js +0 -162
- package/dist/resolvers/FileResolver.js.map +0 -1
- package/dist/resolvers/MergeRecordsResolver.d.ts +0 -59
- package/dist/resolvers/MergeRecordsResolver.d.ts.map +0 -1
- package/dist/resolvers/MergeRecordsResolver.js +0 -256
- package/dist/resolvers/MergeRecordsResolver.js.map +0 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts +0 -29
- package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts.map +0 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.js +0 -127
- package/dist/resolvers/PotentialDuplicateRecordResolver.js.map +0 -1
- package/dist/resolvers/QueryResolver.d.ts +0 -13
- package/dist/resolvers/QueryResolver.d.ts.map +0 -1
- package/dist/resolvers/QueryResolver.js +0 -74
- package/dist/resolvers/QueryResolver.js.map +0 -1
- package/dist/resolvers/ReportResolver.d.ts +0 -20
- package/dist/resolvers/ReportResolver.d.ts.map +0 -1
- package/dist/resolvers/ReportResolver.js +0 -175
- package/dist/resolvers/ReportResolver.js.map +0 -1
- package/dist/resolvers/UserFavoriteResolver.d.ts +0 -42
- package/dist/resolvers/UserFavoriteResolver.d.ts.map +0 -1
- package/dist/resolvers/UserFavoriteResolver.js +0 -221
- package/dist/resolvers/UserFavoriteResolver.js.map +0 -1
- package/dist/resolvers/UserResolver.d.ts +0 -10
- package/dist/resolvers/UserResolver.d.ts.map +0 -1
- package/dist/resolvers/UserResolver.js +0 -72
- package/dist/resolvers/UserResolver.js.map +0 -1
- package/dist/resolvers/UserViewResolver.d.ts +0 -13
- package/dist/resolvers/UserViewResolver.d.ts.map +0 -1
- package/dist/resolvers/UserViewResolver.js +0 -102
- package/dist/resolvers/UserViewResolver.js.map +0 -1
- package/dist/types.d.ts +0 -17
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/util.d.ts +0 -4
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js +0 -89
- package/dist/util.js.map +0 -1
- package/src/entitySubclasses/EntityBehavior.server.ts +0 -241
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LoadExampleNewUserSubClass = exports.ExampleNewUserSubClass = void 0;
|
|
4
|
-
const core_1 = require("@memberjunction/core");
|
|
5
|
-
const newUsers_1 = require("./newUsers");
|
|
6
|
-
const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
|
|
7
|
-
const config_1 = require("../config");
|
|
8
|
-
class ExampleNewUserSubClass extends newUsers_1.NewUserBase {
|
|
9
|
-
async createNewUser(firstName, lastName, email) {
|
|
10
|
-
try {
|
|
11
|
-
const md = new core_1.Metadata();
|
|
12
|
-
const contextUser = sqlserver_dataprovider_1.UserCache.Instance.Users.find(u => u.Email.trim().toLowerCase() === config_1.configInfo?.userHandling?.contextUserForNewUserCreation?.trim().toLowerCase());
|
|
13
|
-
if (!contextUser) {
|
|
14
|
-
(0, core_1.LogError)(`Failed to load context user ${config_1.configInfo?.userHandling?.contextUserForNewUserCreation}, if you've not specified this on your config.json you must do so. This is the user that is contextually used for creating a new user record dynamically.`);
|
|
15
|
-
return undefined;
|
|
16
|
-
}
|
|
17
|
-
const pEntity = md.Entities.find(e => e.Name === 'Persons');
|
|
18
|
-
if (!pEntity) {
|
|
19
|
-
(0, core_1.LogError)('Failed to find Persons entity');
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
let personId;
|
|
23
|
-
const rv = new core_1.RunView();
|
|
24
|
-
const viewResults = await rv.RunView({
|
|
25
|
-
EntityName: 'Persons',
|
|
26
|
-
ExtraFilter: `Email = '${email}'`
|
|
27
|
-
}, contextUser);
|
|
28
|
-
if (viewResults && viewResults.Success && Array.isArray(viewResults.Results) && viewResults.Results.length > 0) {
|
|
29
|
-
const row = viewResults.Results[0];
|
|
30
|
-
personId = row['ID'];
|
|
31
|
-
}
|
|
32
|
-
if (!personId) {
|
|
33
|
-
const p = await md.GetEntityObject('Persons', contextUser);
|
|
34
|
-
p.NewRecord();
|
|
35
|
-
if (await p.Save()) {
|
|
36
|
-
personId = p.FirstPrimaryKey.Value;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
(0, core_1.LogError)(`Failed to create new person ${firstName} ${lastName} ${email}`);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return super.createNewUser(firstName, lastName, email, 'Other', pEntity?.ID, personId);
|
|
43
|
-
}
|
|
44
|
-
catch (e) {
|
|
45
|
-
(0, core_1.LogError)(`Error creating new user ${email} ${e}`);
|
|
46
|
-
return undefined;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.ExampleNewUserSubClass = ExampleNewUserSubClass;
|
|
51
|
-
function LoadExampleNewUserSubClass() {
|
|
52
|
-
}
|
|
53
|
-
exports.LoadExampleNewUserSubClass = LoadExampleNewUserSubClass;
|
|
54
|
-
//# sourceMappingURL=exampleNewUserSubClass.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exampleNewUserSubClass.js","sourceRoot":"","sources":["../../src/auth/exampleNewUserSubClass.ts"],"names":[],"mappings":";;;AACA,+CAAmE;AACnE,yCAAyC;AACzC,mFAAmE;AACnE,sCAAuC;AAUvC,MAAa,sBAAuB,SAAQ,sBAAW;IACnC,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,QAAgB,EAAE,KAAa;QAClF,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,eAAQ,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,kCAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,mBAAU,EAAE,YAAY,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;YACtK,IAAG,CAAC,WAAW,EAAE,CAAC;gBACd,IAAA,eAAQ,EAAC,+BAA+B,mBAAU,EAAE,YAAY,EAAE,6BAA6B,2JAA2J,CAAC,CAAC;gBAC5P,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,IAAA,eAAQ,EAAC,+BAA+B,CAAC,CAAC;gBAC1C,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,IAAI,QAAQ,CAAC;YAEb,MAAM,EAAE,GAAG,IAAI,cAAO,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;gBACjC,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,YAAY,KAAK,GAAG;aACpC,EAAE,WAAW,CAAC,CAAA;YAEf,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAE7G,MAAM,GAAG,GAAI,WAAW,CAAC,OAA4B,CAAC,CAAC,CAAC,CAAC;gBACzD,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAEZ,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAC3D,CAAC,CAAC,SAAS,EAAE,CAAC;gBAMd,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBACjB,QAAQ,GAAG,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;gBACvC,CAAC;qBACI,CAAC;oBACF,IAAA,eAAQ,EAAC,+BAA+B,SAAS,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAA;gBAC7E,CAAC;YACL,CAAC;YAGD,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,IAAA,eAAQ,EAAC,2BAA2B,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;YAClD,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;CACJ;AAvDD,wDAuDC;AAED,SAAgB,0BAA0B;AAE1C,CAAC;AAFD,gEAEC"}
|
package/dist/auth/index.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { JwtHeader, SigningKeyCallback } from 'jsonwebtoken';
|
|
2
|
-
import { DataSource } from 'typeorm';
|
|
3
|
-
import { UserInfo } from '@memberjunction/core';
|
|
4
|
-
export * from './tokenExpiredError';
|
|
5
|
-
export declare const validationOptions: {
|
|
6
|
-
[x: string]: {
|
|
7
|
-
audience: string;
|
|
8
|
-
jwksUri: string;
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
export declare class UserPayload {
|
|
12
|
-
aio?: string;
|
|
13
|
-
aud?: string;
|
|
14
|
-
exp?: number;
|
|
15
|
-
iat?: number;
|
|
16
|
-
iss?: string;
|
|
17
|
-
name?: string;
|
|
18
|
-
nbf?: number;
|
|
19
|
-
nonce?: string;
|
|
20
|
-
oid?: string;
|
|
21
|
-
preferred_username?: string;
|
|
22
|
-
rh?: string;
|
|
23
|
-
sub?: string;
|
|
24
|
-
tid?: string;
|
|
25
|
-
uti?: string;
|
|
26
|
-
ver?: string;
|
|
27
|
-
}
|
|
28
|
-
export declare const getSigningKeys: (issuer: string) => (header: JwtHeader, cb: SigningKeyCallback) => void;
|
|
29
|
-
export declare const verifyUserRecord: (email?: string, firstName?: string, lastName?: string, requestDomain?: string, dataSource?: DataSource, attemptCacheUpdateIfNeeded?: boolean) => Promise<UserInfo | undefined>;
|
|
30
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/auth/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAI7D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAI1D,cAAc,qBAAqB,CAAC;AAiBpC,eAAO,MAAM,iBAAiB;;;;;CAS7B,CAAC;AAEF,qBAAa,WAAW;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAEd;AAED,eAAO,MAAM,cAAc,WAAY,MAAM,cAAc,SAAS,MAAM,kBAAkB,SAsB3F,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAkB,MAAM,cAAc,MAAM,aAAa,MAAM,kBAAkB,MAAM,eAAe,UAAU,+BAA8B,OAAO,KAAU,QAAQ,QAAQ,GAAG,SAAS,CAsEvN,CAAC"}
|
package/dist/auth/index.js
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.verifyUserRecord = exports.getSigningKeys = exports.UserPayload = exports.validationOptions = void 0;
|
|
21
|
-
const jwks_rsa_1 = __importDefault(require("jwks-rsa"));
|
|
22
|
-
const config_1 = require("../config");
|
|
23
|
-
const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
|
|
24
|
-
const core_1 = require("@memberjunction/core");
|
|
25
|
-
const newUsers_1 = require("./newUsers");
|
|
26
|
-
const global_1 = require("@memberjunction/global");
|
|
27
|
-
__exportStar(require("./tokenExpiredError"), exports);
|
|
28
|
-
const missingAzureConfig = !config_1.tenantID || !config_1.webClientID;
|
|
29
|
-
const missingAuth0Config = !config_1.auth0Domain || !config_1.auth0WebClientID;
|
|
30
|
-
class MissingAuthError extends Error {
|
|
31
|
-
constructor() {
|
|
32
|
-
super('Could not find authentication configuration for either MSAL or Auth0 in the server environment variables.');
|
|
33
|
-
this.name = 'MissingAuthError';
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const issuers = {
|
|
37
|
-
azure: `https://login.microsoftonline.com/${config_1.tenantID}/v2.0`,
|
|
38
|
-
auth0: `https://${config_1.auth0Domain}/`,
|
|
39
|
-
};
|
|
40
|
-
exports.validationOptions = {
|
|
41
|
-
[issuers.auth0]: {
|
|
42
|
-
audience: config_1.auth0WebClientID,
|
|
43
|
-
jwksUri: `https://${config_1.auth0Domain}/.well-known/jwks.json`,
|
|
44
|
-
},
|
|
45
|
-
[issuers.azure]: {
|
|
46
|
-
audience: config_1.webClientID,
|
|
47
|
-
jwksUri: `https://login.microsoftonline.com/${config_1.tenantID}/discovery/v2.0/keys`,
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
class UserPayload {
|
|
51
|
-
}
|
|
52
|
-
exports.UserPayload = UserPayload;
|
|
53
|
-
const getSigningKeys = (issuer) => (header, cb) => {
|
|
54
|
-
if (!exports.validationOptions[issuer]) {
|
|
55
|
-
throw new Error(`No validation options found for issuer ${issuer}`);
|
|
56
|
-
}
|
|
57
|
-
const jwksUri = exports.validationOptions[issuer].jwksUri;
|
|
58
|
-
if (missingAuth0Config && missingAzureConfig) {
|
|
59
|
-
throw new MissingAuthError();
|
|
60
|
-
}
|
|
61
|
-
if (missingAuth0Config) {
|
|
62
|
-
console.warn('Auth0 configuration not found in environment variables');
|
|
63
|
-
}
|
|
64
|
-
if (missingAzureConfig) {
|
|
65
|
-
console.warn('MSAL configuration not found in environment variables');
|
|
66
|
-
}
|
|
67
|
-
(0, jwks_rsa_1.default)({ jwksUri })
|
|
68
|
-
.getSigningKey(header.kid)
|
|
69
|
-
.then((key) => {
|
|
70
|
-
cb(null, 'publicKey' in key ? key.publicKey : key.rsaPublicKey);
|
|
71
|
-
})
|
|
72
|
-
.catch((err) => console.error(err));
|
|
73
|
-
};
|
|
74
|
-
exports.getSigningKeys = getSigningKeys;
|
|
75
|
-
const verifyUserRecord = async (email, firstName, lastName, requestDomain, dataSource, attemptCacheUpdateIfNeeded = true) => {
|
|
76
|
-
if (!email)
|
|
77
|
-
return undefined;
|
|
78
|
-
let user = sqlserver_dataprovider_1.UserCache.Instance.Users.find((u) => {
|
|
79
|
-
if (!u.Email || u.Email.trim() === '') {
|
|
80
|
-
console.error(`SYSTEM METADATA ISSUE: User ${u.ID} has no email address`);
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
else
|
|
84
|
-
return u.Email.toLowerCase().trim() === email.toLowerCase().trim();
|
|
85
|
-
});
|
|
86
|
-
if (!user) {
|
|
87
|
-
if (config_1.configInfo.userHandling.autoCreateNewUsers && firstName && lastName && (requestDomain || config_1.configInfo.userHandling.newUserLimitedToAuthorizedDomains === false)) {
|
|
88
|
-
let passesDomainCheck = config_1.configInfo.userHandling.newUserLimitedToAuthorizedDomains === false;
|
|
89
|
-
if (!passesDomainCheck && requestDomain) {
|
|
90
|
-
passesDomainCheck = config_1.configInfo.userHandling.newUserAuthorizedDomains.some((pattern) => {
|
|
91
|
-
const regex = new RegExp('^' + pattern.toLowerCase().trim().replace(/\./g, '\\.').replace(/\*/g, '.*') + '$');
|
|
92
|
-
return regex.test(requestDomain?.toLowerCase().trim());
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
if (passesDomainCheck) {
|
|
96
|
-
console.warn(`User ${email} not found in cache. Attempting to create a new user...`);
|
|
97
|
-
const newUserCreator = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(newUsers_1.NewUserBase);
|
|
98
|
-
const newUser = await newUserCreator.createNewUser(firstName, lastName, email);
|
|
99
|
-
if (newUser) {
|
|
100
|
-
const initData = newUser.GetAll();
|
|
101
|
-
initData.UserRoles = config_1.configInfo.userHandling.newUserRoles.map((role) => { return { UserID: initData.ID, RoleName: role }; });
|
|
102
|
-
user = new core_1.UserInfo(core_1.Metadata.Provider, initData);
|
|
103
|
-
sqlserver_dataprovider_1.UserCache.Instance.Users.push(user);
|
|
104
|
-
console.warn(` >>> New user ${email} created successfully!`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
console.warn(`User ${email} not found in cache. Request domain '${requestDomain}' does not match any of the domains in the newUserAuthorizedDomains setting. To ignore domain, make sure you set the newUserLimitedToAuthorizedDomains setting to false. In this case we are NOT creating a new user.`);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (!user && config_1.configInfo.userHandling.updateCacheWhenNotFound && dataSource && attemptCacheUpdateIfNeeded) {
|
|
112
|
-
console.warn(`User ${email} not found in cache. Updating cache in attempt to find the user...`);
|
|
113
|
-
const startTime = Date.now();
|
|
114
|
-
await sqlserver_dataprovider_1.UserCache.Instance.Refresh(dataSource);
|
|
115
|
-
const endTime = Date.now();
|
|
116
|
-
const elapsed = endTime - startTime;
|
|
117
|
-
const delay = config_1.configInfo.userHandling.updateCacheWhenNotFoundDelay ? (config_1.configInfo.userHandling.updateCacheWhenNotFoundDelay < 30000 ? config_1.configInfo.userHandling.updateCacheWhenNotFoundDelay : 30000) : 0;
|
|
118
|
-
if (elapsed < delay)
|
|
119
|
-
await new Promise(resolve => setTimeout(resolve, delay - elapsed));
|
|
120
|
-
const finalTime = Date.now();
|
|
121
|
-
const finalElapsed = finalTime - startTime;
|
|
122
|
-
console.log(` UserCache updated in ${elapsed}ms, total elapsed time of ${finalElapsed}ms including delay of ${delay}ms (if needed). Attempting to find the user again via recursive call to verifyUserRecord()`);
|
|
123
|
-
return (0, exports.verifyUserRecord)(email, firstName, lastName, requestDomain, dataSource, false);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return user;
|
|
127
|
-
};
|
|
128
|
-
exports.verifyUserRecord = verifyUserRecord;
|
|
129
|
-
//# sourceMappingURL=index.js.map
|
package/dist/auth/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/newUsers.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { UserEntity } from "@memberjunction/core-entities";
|
|
2
|
-
export declare class NewUserBase {
|
|
3
|
-
createNewUser(firstName: string, lastName: string, email: string, linkedRecordType?: string, linkedEntityId?: number, linkedEntityRecordId?: number): Promise<UserEntity>;
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=newUsers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"newUsers.d.ts","sourceRoot":"","sources":["../../src/auth/newUsers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAkB,MAAM,+BAA+B,CAAC;AAE3E,qBACa,WAAW;IACP,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,GAAE,MAAe,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM;CAgD3K"}
|
package/dist/auth/newUsers.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.NewUserBase = void 0;
|
|
10
|
-
const core_1 = require("@memberjunction/core");
|
|
11
|
-
const global_1 = require("@memberjunction/global");
|
|
12
|
-
const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
|
|
13
|
-
const config_1 = require("../config");
|
|
14
|
-
let NewUserBase = class NewUserBase {
|
|
15
|
-
async createNewUser(firstName, lastName, email, linkedRecordType = 'None', linkedEntityId, linkedEntityRecordId) {
|
|
16
|
-
try {
|
|
17
|
-
const md = new core_1.Metadata();
|
|
18
|
-
const contextUser = sqlserver_dataprovider_1.UserCache.Instance.Users.find(u => u.Email.trim().toLowerCase() === config_1.configInfo?.userHandling?.contextUserForNewUserCreation?.trim().toLowerCase());
|
|
19
|
-
if (!contextUser) {
|
|
20
|
-
(0, core_1.LogError)(`Failed to load context user ${config_1.configInfo?.userHandling?.contextUserForNewUserCreation}, if you've not specified this on your config.json you must do so. This is the user that is contextually used for creating a new user record dynamically.`);
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
const u = await md.GetEntityObject('Users', contextUser);
|
|
24
|
-
u.NewRecord();
|
|
25
|
-
u.Name = email;
|
|
26
|
-
u.IsActive = true;
|
|
27
|
-
u.FirstName = firstName;
|
|
28
|
-
u.LastName = lastName;
|
|
29
|
-
u.Email = email;
|
|
30
|
-
u.Type = 'User';
|
|
31
|
-
u.LinkedRecordType = linkedRecordType;
|
|
32
|
-
if (linkedEntityId)
|
|
33
|
-
u.LinkedEntityID = linkedEntityId;
|
|
34
|
-
if (linkedEntityRecordId)
|
|
35
|
-
u.LinkedEntityRecordID = linkedEntityRecordId;
|
|
36
|
-
if (await u.Save()) {
|
|
37
|
-
const ur = await md.GetEntityObject('User Roles', contextUser);
|
|
38
|
-
let bSuccess = true;
|
|
39
|
-
for (const role of config_1.configInfo.userHandling.newUserRoles) {
|
|
40
|
-
ur.NewRecord();
|
|
41
|
-
ur.UserID = u.ID;
|
|
42
|
-
ur.RoleName = role;
|
|
43
|
-
bSuccess = bSuccess && await ur.Save();
|
|
44
|
-
}
|
|
45
|
-
if (!bSuccess) {
|
|
46
|
-
(0, core_1.LogError)(`Failed to create roles for newly created user ${firstName} ${lastName} ${email}`);
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
(0, core_1.LogError)(`Failed to create new user ${firstName} ${lastName} ${email}`);
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
return u;
|
|
55
|
-
}
|
|
56
|
-
catch (e) {
|
|
57
|
-
(0, core_1.LogError)(e);
|
|
58
|
-
return undefined;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
exports.NewUserBase = NewUserBase;
|
|
63
|
-
exports.NewUserBase = NewUserBase = __decorate([
|
|
64
|
-
(0, global_1.RegisterClass)(NewUserBase)
|
|
65
|
-
], NewUserBase);
|
|
66
|
-
//# sourceMappingURL=newUsers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"newUsers.js","sourceRoot":"","sources":["../../src/auth/newUsers.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+CAA0D;AAC1D,mDAAuD;AACvD,mFAAmE;AACnE,sCAAuC;AAIhC,IAAM,WAAW,GAAjB,MAAM,WAAW;IACb,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,QAAgB,EAAE,KAAa,EAAE,mBAA2B,MAAM,EAAE,cAAuB,EAAE,oBAA6B;QACpK,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,eAAQ,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,kCAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,mBAAU,EAAE,YAAY,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;YACtK,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,IAAA,eAAQ,EAAC,+BAA+B,mBAAU,EAAE,YAAY,EAAE,6BAA6B,2JAA2J,CAAC,CAAC;gBAC5P,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,MAAM,CAAC,GAAe,MAAM,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YACpE,CAAC,CAAC,SAAS,EAAE,CAAC;YACd,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;YACf,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;YACxB,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACtB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;YAChB,CAAC,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YACtC,IAAI,cAAc;gBACd,CAAC,CAAC,cAAc,GAAG,cAAc,CAAC;YACtC,IAAI,oBAAoB;gBACpB,CAAC,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;YAElD,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBAEjB,MAAM,EAAE,GAAmB,MAAM,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBAC/E,IAAI,QAAQ,GAAY,IAAI,CAAC;gBAC7B,KAAK,MAAM,IAAI,IAAI,mBAAU,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;oBACtD,EAAE,CAAC,SAAS,EAAE,CAAC;oBACf,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;oBACjB,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACnB,QAAQ,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC3C,CAAC;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,IAAA,eAAQ,EAAC,iDAAiD,SAAS,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;oBAC5F,OAAO,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;iBACI,CAAC;gBACF,IAAA,eAAQ,EAAC,6BAA6B,SAAS,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;gBACxE,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,OAAO,CAAC,CAAC;QACb,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,IAAA,eAAQ,EAAC,CAAC,CAAC,CAAC;YACZ,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;CACJ,CAAA;AAjDY,kCAAW;sBAAX,WAAW;IADvB,IAAA,sBAAa,EAAC,WAAW,CAAC;GACd,WAAW,CAiDvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenExpiredError.d.ts","sourceRoot":"","sources":["../../src/auth/tokenExpiredError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,UAAU,EAAE,IAAI,EAAE,OAAO,SAA+D;CAQrG"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TokenExpiredError = void 0;
|
|
4
|
-
const graphql_1 = require("graphql");
|
|
5
|
-
class TokenExpiredError extends graphql_1.GraphQLError {
|
|
6
|
-
constructor(expiryDate, message = 'The provided token has expired. Please authenticate again.') {
|
|
7
|
-
super(message, {
|
|
8
|
-
extensions: {
|
|
9
|
-
code: 'JWT_EXPIRED',
|
|
10
|
-
expiryDate: expiryDate.toISOString(),
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.TokenExpiredError = TokenExpiredError;
|
|
16
|
-
//# sourceMappingURL=tokenExpiredError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenExpiredError.js","sourceRoot":"","sources":["../../src/auth/tokenExpiredError.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC,MAAa,iBAAkB,SAAQ,sBAAY;IACjD,YAAY,UAAgB,EAAE,OAAO,GAAG,4DAA4D;QAClG,KAAK,CAAC,OAAO,EAAE;YACb,UAAU,EAAE;gBACV,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE;aACrC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AATD,8CASC"}
|
package/dist/cache.d.ts
DELETED
package/dist/cache.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC,eAAO,MAAM,SAAS,2BAIpB,CAAC"}
|
package/dist/cache.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.authCache = void 0;
|
|
4
|
-
const lru_cache_1 = require("lru-cache");
|
|
5
|
-
const oneHourMs = 60 * 60 * 1000;
|
|
6
|
-
exports.authCache = new lru_cache_1.LRUCache({
|
|
7
|
-
max: 50000,
|
|
8
|
-
ttl: oneHourMs,
|
|
9
|
-
ttlAutopurge: false,
|
|
10
|
-
});
|
|
11
|
-
//# sourceMappingURL=cache.js.map
|
package/dist/cache.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAErC,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpB,QAAA,SAAS,GAAG,IAAI,oBAAQ,CAAC;IACpC,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,SAAS;IACd,YAAY,EAAE,KAAK;CACpB,CAAC,CAAC"}
|
package/dist/config.d.ts
DELETED
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare const nodeEnv: string;
|
|
3
|
-
export declare const dbHost: string;
|
|
4
|
-
export declare const dbPort: number;
|
|
5
|
-
export declare const dbUsername: string;
|
|
6
|
-
export declare const dbPassword: string;
|
|
7
|
-
export declare const dbDatabase: string;
|
|
8
|
-
export declare const dbInstanceName: string;
|
|
9
|
-
export declare const dbTrustServerCertificate: boolean;
|
|
10
|
-
export declare const graphqlPort: number;
|
|
11
|
-
export declare const ___codeGenAPIURL: string;
|
|
12
|
-
export declare const ___codeGenAPIPort: number;
|
|
13
|
-
export declare const ___codeGenAPISubmissionDelay: number;
|
|
14
|
-
export declare const graphqlRootPath: string;
|
|
15
|
-
export declare const webClientID: string;
|
|
16
|
-
export declare const tenantID: string;
|
|
17
|
-
export declare const enableIntrospection: boolean;
|
|
18
|
-
export declare const websiteRunFromPackage: number;
|
|
19
|
-
export declare const userEmailMap: Record<string, string>;
|
|
20
|
-
export declare const ___skipAPIurl: string;
|
|
21
|
-
export declare const ___skipAPIOrgId: string;
|
|
22
|
-
export declare const auth0Domain: string;
|
|
23
|
-
export declare const auth0WebClientID: string;
|
|
24
|
-
export declare const auth0ClientSecret: string;
|
|
25
|
-
export declare const mj_core_schema: string;
|
|
26
|
-
export declare const configFile: string;
|
|
27
|
-
declare const userHandlingInfoSchema: z.ZodObject<{
|
|
28
|
-
autoCreateNewUsers: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
29
|
-
newUserLimitedToAuthorizedDomains: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
30
|
-
newUserAuthorizedDomains: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
31
|
-
newUserRoles: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
32
|
-
updateCacheWhenNotFound: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
33
|
-
updateCacheWhenNotFoundDelay: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
34
|
-
contextUserForNewUserCreation: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
35
|
-
}, "strip", z.ZodTypeAny, {
|
|
36
|
-
autoCreateNewUsers?: boolean;
|
|
37
|
-
newUserLimitedToAuthorizedDomains?: boolean;
|
|
38
|
-
newUserAuthorizedDomains?: string[];
|
|
39
|
-
newUserRoles?: string[];
|
|
40
|
-
updateCacheWhenNotFound?: boolean;
|
|
41
|
-
updateCacheWhenNotFoundDelay?: number;
|
|
42
|
-
contextUserForNewUserCreation?: string;
|
|
43
|
-
}, {
|
|
44
|
-
autoCreateNewUsers?: boolean;
|
|
45
|
-
newUserLimitedToAuthorizedDomains?: boolean;
|
|
46
|
-
newUserAuthorizedDomains?: string[];
|
|
47
|
-
newUserRoles?: string[];
|
|
48
|
-
updateCacheWhenNotFound?: boolean;
|
|
49
|
-
updateCacheWhenNotFoundDelay?: number;
|
|
50
|
-
contextUserForNewUserCreation?: string;
|
|
51
|
-
}>;
|
|
52
|
-
declare const databaseSettingsInfoSchema: z.ZodObject<{
|
|
53
|
-
connectionTimeout: z.ZodNumber;
|
|
54
|
-
requestTimeout: z.ZodNumber;
|
|
55
|
-
metadataCacheRefreshInterval: z.ZodNumber;
|
|
56
|
-
}, "strip", z.ZodTypeAny, {
|
|
57
|
-
connectionTimeout?: number;
|
|
58
|
-
requestTimeout?: number;
|
|
59
|
-
metadataCacheRefreshInterval?: number;
|
|
60
|
-
}, {
|
|
61
|
-
connectionTimeout?: number;
|
|
62
|
-
requestTimeout?: number;
|
|
63
|
-
metadataCacheRefreshInterval?: number;
|
|
64
|
-
}>;
|
|
65
|
-
declare const viewingSystemInfoSchema: z.ZodObject<{
|
|
66
|
-
enableSmartFilters: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
-
}, "strip", z.ZodTypeAny, {
|
|
68
|
-
enableSmartFilters?: boolean;
|
|
69
|
-
}, {
|
|
70
|
-
enableSmartFilters?: boolean;
|
|
71
|
-
}>;
|
|
72
|
-
declare const configInfoSchema: z.ZodObject<{
|
|
73
|
-
userHandling: z.ZodObject<{
|
|
74
|
-
autoCreateNewUsers: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
75
|
-
newUserLimitedToAuthorizedDomains: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
76
|
-
newUserAuthorizedDomains: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
77
|
-
newUserRoles: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
78
|
-
updateCacheWhenNotFound: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
79
|
-
updateCacheWhenNotFoundDelay: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
80
|
-
contextUserForNewUserCreation: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
81
|
-
}, "strip", z.ZodTypeAny, {
|
|
82
|
-
autoCreateNewUsers?: boolean;
|
|
83
|
-
newUserLimitedToAuthorizedDomains?: boolean;
|
|
84
|
-
newUserAuthorizedDomains?: string[];
|
|
85
|
-
newUserRoles?: string[];
|
|
86
|
-
updateCacheWhenNotFound?: boolean;
|
|
87
|
-
updateCacheWhenNotFoundDelay?: number;
|
|
88
|
-
contextUserForNewUserCreation?: string;
|
|
89
|
-
}, {
|
|
90
|
-
autoCreateNewUsers?: boolean;
|
|
91
|
-
newUserLimitedToAuthorizedDomains?: boolean;
|
|
92
|
-
newUserAuthorizedDomains?: string[];
|
|
93
|
-
newUserRoles?: string[];
|
|
94
|
-
updateCacheWhenNotFound?: boolean;
|
|
95
|
-
updateCacheWhenNotFoundDelay?: number;
|
|
96
|
-
contextUserForNewUserCreation?: string;
|
|
97
|
-
}>;
|
|
98
|
-
databaseSettings: z.ZodObject<{
|
|
99
|
-
connectionTimeout: z.ZodNumber;
|
|
100
|
-
requestTimeout: z.ZodNumber;
|
|
101
|
-
metadataCacheRefreshInterval: z.ZodNumber;
|
|
102
|
-
}, "strip", z.ZodTypeAny, {
|
|
103
|
-
connectionTimeout?: number;
|
|
104
|
-
requestTimeout?: number;
|
|
105
|
-
metadataCacheRefreshInterval?: number;
|
|
106
|
-
}, {
|
|
107
|
-
connectionTimeout?: number;
|
|
108
|
-
requestTimeout?: number;
|
|
109
|
-
metadataCacheRefreshInterval?: number;
|
|
110
|
-
}>;
|
|
111
|
-
viewingSystem: z.ZodOptional<z.ZodObject<{
|
|
112
|
-
enableSmartFilters: z.ZodOptional<z.ZodBoolean>;
|
|
113
|
-
}, "strip", z.ZodTypeAny, {
|
|
114
|
-
enableSmartFilters?: boolean;
|
|
115
|
-
}, {
|
|
116
|
-
enableSmartFilters?: boolean;
|
|
117
|
-
}>>;
|
|
118
|
-
askSkip: z.ZodOptional<z.ZodObject<{
|
|
119
|
-
organizationInfo: z.ZodOptional<z.ZodString>;
|
|
120
|
-
}, "strip", z.ZodTypeAny, {
|
|
121
|
-
organizationInfo?: string;
|
|
122
|
-
}, {
|
|
123
|
-
organizationInfo?: string;
|
|
124
|
-
}>>;
|
|
125
|
-
}, "strip", z.ZodTypeAny, {
|
|
126
|
-
userHandling?: {
|
|
127
|
-
autoCreateNewUsers?: boolean;
|
|
128
|
-
newUserLimitedToAuthorizedDomains?: boolean;
|
|
129
|
-
newUserAuthorizedDomains?: string[];
|
|
130
|
-
newUserRoles?: string[];
|
|
131
|
-
updateCacheWhenNotFound?: boolean;
|
|
132
|
-
updateCacheWhenNotFoundDelay?: number;
|
|
133
|
-
contextUserForNewUserCreation?: string;
|
|
134
|
-
};
|
|
135
|
-
databaseSettings?: {
|
|
136
|
-
connectionTimeout?: number;
|
|
137
|
-
requestTimeout?: number;
|
|
138
|
-
metadataCacheRefreshInterval?: number;
|
|
139
|
-
};
|
|
140
|
-
viewingSystem?: {
|
|
141
|
-
enableSmartFilters?: boolean;
|
|
142
|
-
};
|
|
143
|
-
askSkip?: {
|
|
144
|
-
organizationInfo?: string;
|
|
145
|
-
};
|
|
146
|
-
}, {
|
|
147
|
-
userHandling?: {
|
|
148
|
-
autoCreateNewUsers?: boolean;
|
|
149
|
-
newUserLimitedToAuthorizedDomains?: boolean;
|
|
150
|
-
newUserAuthorizedDomains?: string[];
|
|
151
|
-
newUserRoles?: string[];
|
|
152
|
-
updateCacheWhenNotFound?: boolean;
|
|
153
|
-
updateCacheWhenNotFoundDelay?: number;
|
|
154
|
-
contextUserForNewUserCreation?: string;
|
|
155
|
-
};
|
|
156
|
-
databaseSettings?: {
|
|
157
|
-
connectionTimeout?: number;
|
|
158
|
-
requestTimeout?: number;
|
|
159
|
-
metadataCacheRefreshInterval?: number;
|
|
160
|
-
};
|
|
161
|
-
viewingSystem?: {
|
|
162
|
-
enableSmartFilters?: boolean;
|
|
163
|
-
};
|
|
164
|
-
askSkip?: {
|
|
165
|
-
organizationInfo?: string;
|
|
166
|
-
};
|
|
167
|
-
}>;
|
|
168
|
-
export type UserHandlingInfo = z.infer<typeof userHandlingInfoSchema>;
|
|
169
|
-
export type DatabaseSettingsInfo = z.infer<typeof databaseSettingsInfoSchema>;
|
|
170
|
-
export type ViewingSystemSettingsInfo = z.infer<typeof viewingSystemInfoSchema>;
|
|
171
|
-
export type ConfigInfo = z.infer<typeof configInfoSchema>;
|
|
172
|
-
export declare const configInfo: ConfigInfo;
|
|
173
|
-
export declare function loadConfig(): {
|
|
174
|
-
userHandling?: {
|
|
175
|
-
autoCreateNewUsers?: boolean;
|
|
176
|
-
newUserLimitedToAuthorizedDomains?: boolean;
|
|
177
|
-
newUserAuthorizedDomains?: string[];
|
|
178
|
-
newUserRoles?: string[];
|
|
179
|
-
updateCacheWhenNotFound?: boolean;
|
|
180
|
-
updateCacheWhenNotFoundDelay?: number;
|
|
181
|
-
contextUserForNewUserCreation?: string;
|
|
182
|
-
};
|
|
183
|
-
databaseSettings?: {
|
|
184
|
-
connectionTimeout?: number;
|
|
185
|
-
requestTimeout?: number;
|
|
186
|
-
metadataCacheRefreshInterval?: number;
|
|
187
|
-
};
|
|
188
|
-
viewingSystem?: {
|
|
189
|
-
enableSmartFilters?: boolean;
|
|
190
|
-
};
|
|
191
|
-
askSkip?: {
|
|
192
|
-
organizationInfo?: string;
|
|
193
|
-
};
|
|
194
|
-
};
|
|
195
|
-
export {};
|
|
196
|
-
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,OAAO,QAAiC,CAAC;AAEtD,eAAO,MAAM,MAAM,QAA2C,CAAC;AAC/D,eAAO,MAAM,MAAM,QAAoD,CAAC;AACxE,eAAO,MAAM,UAAU,QAA+C,CAAC;AACvE,eAAO,MAAM,UAAU,QAA+C,CAAC;AACvE,eAAO,MAAM,UAAU,QAA+C,CAAC;AACvE,eAAO,MAAM,cAAc,QAAyC,CAAC;AACrE,eAAO,MAAM,wBAAwB,SAAkD,CAAC;AAExF,eAAO,MAAM,WAAW,QAAiD,CAAC;AAE1E,eAAO,MAAM,gBAAgB,QAAwC,CAAC;AACtE,eAAO,MAAM,iBAAiB,QAA6D,CAAC;AAC5F,eAAO,MAAM,4BAA4B,QAAwE,CAAC;AAElH,eAAO,MAAM,eAAe,QAA+C,CAAC;AAE5E,eAAO,MAAM,WAAW,QAAsC,CAAC;AAC/D,eAAO,MAAM,QAAQ,QAAkC,CAAC;AAExD,eAAO,MAAM,mBAAmB,SAA4D,CAAC;AAC7F,eAAO,MAAM,qBAAqB,QAAsD,CAAC;AACzF,eAAO,MAAM,YAAY,wBAAmF,CAAC;AAE7G,eAAO,MAAM,aAAa,QAAyC,CAAC;AACpE,eAAO,MAAM,eAAe,QAAiD,CAAC;AAE9E,eAAO,MAAM,WAAW,QAAqC,CAAC;AAC9D,eAAO,MAAM,gBAAgB,QAAwC,CAAC;AACtE,eAAO,MAAM,iBAAiB,QAA4C,CAAC;AAE3E,eAAO,MAAM,cAAc,QAAuC,CAAC;AAEnE,eAAO,MAAM,UAAU,QAAoC,CAAC;AAE5D,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;EAQ1B,CAAC;AAEH,QAAA,MAAM,0BAA0B;;;;;;;;;;;;EAI9B,CAAC;AAEH,QAAA,MAAM,uBAAuB;;;;;;EAE3B,CAAC;AAMH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKpB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAChF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,UAAU,EAAE,UAAyB,CAAC;AAEnD,wBAAgB,UAAU;;;;;;;;;;;;;;;;;;;;;EASzB"}
|