@memberjunction/server 0.9.3 → 0.9.5

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.
Files changed (59) hide show
  1. package/.eslintignore +5 -6
  2. package/.eslintrc +24 -24
  3. package/README.md +141 -141
  4. package/config.json +14 -14
  5. package/dist/apolloServer/TransactionPlugin.js +45 -45
  6. package/dist/apolloServer/index.js +26 -26
  7. package/dist/auth/exampleNewUserSubClass.js +67 -67
  8. package/dist/auth/index.js +87 -87
  9. package/dist/auth/newUsers.js +66 -66
  10. package/dist/cache.js +10 -10
  11. package/dist/config.js +55 -55
  12. package/dist/context.js +100 -100
  13. package/dist/directives/Public.js +33 -33
  14. package/dist/directives/index.js +17 -17
  15. package/dist/generated/generated.js +19245 -0
  16. package/dist/generated/generated.js.map +1 -0
  17. package/dist/generic/PushStatusResolver.js +59 -0
  18. package/dist/generic/PushStatusResolver.js.map +1 -0
  19. package/dist/generic/ResolverBase.js +187 -0
  20. package/dist/generic/ResolverBase.js.map +1 -0
  21. package/dist/generic/RunViewResolver.js +308 -0
  22. package/dist/generic/RunViewResolver.js.map +1 -0
  23. package/dist/index.js +114 -114
  24. package/dist/index.js.map +1 -1
  25. package/dist/orm.js +21 -22
  26. package/dist/orm.js.map +1 -1
  27. package/dist/resolvers/AskSkipResolver.js +244 -0
  28. package/dist/resolvers/AskSkipResolver.js.map +1 -0
  29. package/dist/resolvers/ColorResolver.js +95 -0
  30. package/dist/resolvers/ColorResolver.js.map +1 -0
  31. package/dist/resolvers/DatasetResolver.js +168 -0
  32. package/dist/resolvers/DatasetResolver.js.map +1 -0
  33. package/dist/resolvers/EntityRecordNameResolver.js +108 -0
  34. package/dist/resolvers/EntityRecordNameResolver.js.map +1 -0
  35. package/dist/resolvers/EntityResolver.js +60 -0
  36. package/dist/resolvers/EntityResolver.js.map +1 -0
  37. package/dist/resolvers/ReportResolver.js +74 -0
  38. package/dist/resolvers/ReportResolver.js.map +1 -0
  39. package/dist/resolvers/UserFavoriteResolver.js +188 -0
  40. package/dist/resolvers/UserFavoriteResolver.js.map +1 -0
  41. package/dist/resolvers/UserResolver.js +70 -0
  42. package/dist/resolvers/UserResolver.js.map +1 -0
  43. package/dist/resolvers/UserViewResolver.js +104 -0
  44. package/dist/resolvers/UserViewResolver.js.map +1 -0
  45. package/dist/types.js +2 -2
  46. package/package.json +74 -74
  47. package/src/apolloServer/TransactionPlugin.ts +54 -54
  48. package/src/apolloServer/index.ts +33 -33
  49. package/src/auth/exampleNewUserSubClass.ts +70 -70
  50. package/src/auth/index.ts +117 -117
  51. package/src/auth/newUsers.ts +55 -55
  52. package/src/cache.ts +10 -10
  53. package/src/config.ts +67 -67
  54. package/src/context.ts +105 -105
  55. package/src/directives/Public.ts +42 -42
  56. package/src/directives/index.ts +1 -1
  57. package/src/index.ts +105 -104
  58. package/src/orm.ts +23 -20
  59. package/src/types.ts +19 -19
package/dist/context.js CHANGED
@@ -1,101 +1,101 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.contextFunction = exports.getUserPayload = void 0;
27
- const url = __importStar(require("url"));
28
- const jsonwebtoken_1 = require("jsonwebtoken");
29
- require("reflect-metadata");
30
- const rxjs_1 = require("rxjs");
31
- const type_graphql_1 = require("type-graphql");
32
- const auth_1 = require("./auth");
33
- const cache_1 = require("./cache");
34
- const config_1 = require("./config");
35
- const verifyAsync = async (issuer, options, token) => new Promise((resolve, reject) => {
36
- (0, jsonwebtoken_1.verify)(token, (0, auth_1.getSigningKeys)(issuer), options, (err, jwt) => {
37
- if (jwt && typeof jwt !== 'string' && !err) {
38
- const payload = jwt.payload ?? jwt;
39
- console.log(`Valid token: ${payload.name} (${payload.email ? payload.email : payload.preferred_username})`);
40
- resolve(payload);
41
- }
42
- else {
43
- console.warn('Invalid token');
44
- reject(err);
45
- }
46
- });
47
- });
48
- const getUserPayload = async (bearerToken, sessionId = 'default', dataSource, requestDomain) => {
49
- try {
50
- const token = bearerToken.replace('Bearer ', '');
51
- if (!token) {
52
- console.warn('No token to validate');
53
- throw new type_graphql_1.AuthenticationError('Missing token');
54
- }
55
- const payload = (0, jsonwebtoken_1.decode)(token);
56
- if (!payload || typeof payload === 'string') {
57
- throw new type_graphql_1.AuthenticationError('Invalid token payload');
58
- }
59
- if (!cache_1.authCache.has(token)) {
60
- const issuer = payload.iss;
61
- if (!issuer) {
62
- console.warn('No issuer claim on token');
63
- throw new type_graphql_1.AuthenticationError('Missing issuer claim on token');
64
- }
65
- await verifyAsync(issuer, auth_1.validationOptions[issuer], token);
66
- cache_1.authCache.set(token, true);
67
- }
68
- const email = payload?.email
69
- ? config_1.userEmailMap[payload?.email] ?? payload?.email
70
- : payload?.preferred_username;
71
- const fullName = payload?.name;
72
- const firstName = payload?.given_name || fullName?.split(' ')[0];
73
- const lastName = payload?.family_name || fullName?.split(' ')[1] || fullName?.split(' ')[0];
74
- const userRecord = await (0, auth_1.verifyUserRecord)(email, firstName, lastName, requestDomain, dataSource);
75
- if (!userRecord) {
76
- console.error(`User ${email} not found`);
77
- throw new type_graphql_1.AuthorizationError();
78
- }
79
- else if (!userRecord.IsActive) {
80
- console.error(`User ${email} found but inactive`);
81
- throw new type_graphql_1.AuthorizationError();
82
- }
83
- return { userRecord, email, sessionId };
84
- }
85
- catch (e) {
86
- return {};
87
- }
88
- };
89
- exports.getUserPayload = getUserPayload;
90
- const contextFunction = ({ setupComplete$, dataSource }) => async ({ req }) => {
91
- await (0, rxjs_1.firstValueFrom)(setupComplete$);
92
- const sessionIdRaw = req.headers['x-session-id'];
93
- const requestDomain = url.parse(req.headers.origin || '');
94
- const sessionId = sessionIdRaw ? sessionIdRaw.toString() : '';
95
- const bearerToken = req.headers.authorization ?? '';
96
- const userPayload = await (0, exports.getUserPayload)(bearerToken, sessionId, dataSource, requestDomain?.hostname ? requestDomain.hostname : undefined);
97
- console.log(req.body?.operationName);
98
- return { dataSource, userPayload };
99
- };
100
- exports.contextFunction = contextFunction;
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.contextFunction = exports.getUserPayload = void 0;
27
+ const url = __importStar(require("url"));
28
+ const jsonwebtoken_1 = require("jsonwebtoken");
29
+ require("reflect-metadata");
30
+ const rxjs_1 = require("rxjs");
31
+ const type_graphql_1 = require("type-graphql");
32
+ const auth_1 = require("./auth");
33
+ const cache_1 = require("./cache");
34
+ const config_1 = require("./config");
35
+ const verifyAsync = async (issuer, options, token) => new Promise((resolve, reject) => {
36
+ (0, jsonwebtoken_1.verify)(token, (0, auth_1.getSigningKeys)(issuer), options, (err, jwt) => {
37
+ if (jwt && typeof jwt !== 'string' && !err) {
38
+ const payload = jwt.payload ?? jwt;
39
+ console.log(`Valid token: ${payload.name} (${payload.email ? payload.email : payload.preferred_username})`);
40
+ resolve(payload);
41
+ }
42
+ else {
43
+ console.warn('Invalid token');
44
+ reject(err);
45
+ }
46
+ });
47
+ });
48
+ const getUserPayload = async (bearerToken, sessionId = 'default', dataSource, requestDomain) => {
49
+ try {
50
+ const token = bearerToken.replace('Bearer ', '');
51
+ if (!token) {
52
+ console.warn('No token to validate');
53
+ throw new type_graphql_1.AuthenticationError('Missing token');
54
+ }
55
+ const payload = (0, jsonwebtoken_1.decode)(token);
56
+ if (!payload || typeof payload === 'string') {
57
+ throw new type_graphql_1.AuthenticationError('Invalid token payload');
58
+ }
59
+ if (!cache_1.authCache.has(token)) {
60
+ const issuer = payload.iss;
61
+ if (!issuer) {
62
+ console.warn('No issuer claim on token');
63
+ throw new type_graphql_1.AuthenticationError('Missing issuer claim on token');
64
+ }
65
+ await verifyAsync(issuer, auth_1.validationOptions[issuer], token);
66
+ cache_1.authCache.set(token, true);
67
+ }
68
+ const email = payload?.email
69
+ ? config_1.userEmailMap[payload?.email] ?? payload?.email
70
+ : payload?.preferred_username;
71
+ const fullName = payload?.name;
72
+ const firstName = payload?.given_name || fullName?.split(' ')[0];
73
+ const lastName = payload?.family_name || fullName?.split(' ')[1] || fullName?.split(' ')[0];
74
+ const userRecord = await (0, auth_1.verifyUserRecord)(email, firstName, lastName, requestDomain, dataSource);
75
+ if (!userRecord) {
76
+ console.error(`User ${email} not found`);
77
+ throw new type_graphql_1.AuthorizationError();
78
+ }
79
+ else if (!userRecord.IsActive) {
80
+ console.error(`User ${email} found but inactive`);
81
+ throw new type_graphql_1.AuthorizationError();
82
+ }
83
+ return { userRecord, email, sessionId };
84
+ }
85
+ catch (e) {
86
+ return {};
87
+ }
88
+ };
89
+ exports.getUserPayload = getUserPayload;
90
+ const contextFunction = ({ setupComplete$, dataSource }) => async ({ req }) => {
91
+ await (0, rxjs_1.firstValueFrom)(setupComplete$);
92
+ const sessionIdRaw = req.headers['x-session-id'];
93
+ const requestDomain = url.parse(req.headers.origin || '');
94
+ const sessionId = sessionIdRaw ? sessionIdRaw.toString() : '';
95
+ const bearerToken = req.headers.authorization ?? '';
96
+ const userPayload = await (0, exports.getUserPayload)(bearerToken, sessionId, dataSource, requestDomain?.hostname ? requestDomain.hostname : undefined);
97
+ console.log(req.body?.operationName);
98
+ return { dataSource, userPayload };
99
+ };
100
+ exports.contextFunction = contextFunction;
101
101
  //# sourceMappingURL=context.js.map
@@ -1,34 +1,34 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.publicDirective = exports.Public = void 0;
4
- const utils_1 = require("@graphql-tools/utils");
5
- const graphql_1 = require("graphql");
6
- const type_graphql_1 = require("type-graphql");
7
- const DIRECTIVE_NAME = 'Public';
8
- function Public() {
9
- return (targetOrPrototype, propertyKey, descriptor) => (0, type_graphql_1.Directive)(`@${DIRECTIVE_NAME}`)(targetOrPrototype, propertyKey, descriptor);
10
- }
11
- exports.Public = Public;
12
- exports.publicDirective = {
13
- typeDefs: `directive @${DIRECTIVE_NAME} on FIELD_DEFINITION`,
14
- transformer: (schema) => {
15
- const fieldMapper = (fieldConfig) => {
16
- const directive = (0, utils_1.getDirective)(schema, fieldConfig, DIRECTIVE_NAME)?.[0];
17
- if (directive) {
18
- return fieldConfig;
19
- }
20
- else {
21
- const { resolve = graphql_1.defaultFieldResolver } = fieldConfig;
22
- const directiveResolver = async (source, args, context, info) => {
23
- if (!context?.userPayload?.userRecord?.IsActive) {
24
- throw new type_graphql_1.AuthorizationError();
25
- }
26
- return await resolve(source, args, context, info);
27
- };
28
- return { ...fieldConfig, resolve: directiveResolver };
29
- }
30
- };
31
- return (0, utils_1.mapSchema)(schema, { [utils_1.MapperKind.OBJECT_FIELD]: fieldMapper });
32
- },
33
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.publicDirective = exports.Public = void 0;
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ const graphql_1 = require("graphql");
6
+ const type_graphql_1 = require("type-graphql");
7
+ const DIRECTIVE_NAME = 'Public';
8
+ function Public() {
9
+ return (targetOrPrototype, propertyKey, descriptor) => (0, type_graphql_1.Directive)(`@${DIRECTIVE_NAME}`)(targetOrPrototype, propertyKey, descriptor);
10
+ }
11
+ exports.Public = Public;
12
+ exports.publicDirective = {
13
+ typeDefs: `directive @${DIRECTIVE_NAME} on FIELD_DEFINITION`,
14
+ transformer: (schema) => {
15
+ const fieldMapper = (fieldConfig) => {
16
+ const directive = (0, utils_1.getDirective)(schema, fieldConfig, DIRECTIVE_NAME)?.[0];
17
+ if (directive) {
18
+ return fieldConfig;
19
+ }
20
+ else {
21
+ const { resolve = graphql_1.defaultFieldResolver } = fieldConfig;
22
+ const directiveResolver = async (source, args, context, info) => {
23
+ if (!context?.userPayload?.userRecord?.IsActive) {
24
+ throw new type_graphql_1.AuthorizationError();
25
+ }
26
+ return await resolve(source, args, context, info);
27
+ };
28
+ return { ...fieldConfig, resolve: directiveResolver };
29
+ }
30
+ };
31
+ return (0, utils_1.mapSchema)(schema, { [utils_1.MapperKind.OBJECT_FIELD]: fieldMapper });
32
+ },
33
+ };
34
34
  //# sourceMappingURL=Public.js.map
@@ -1,18 +1,18 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./Public"), exports);
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
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Public"), exports);
18
18
  //# sourceMappingURL=index.js.map