@memberjunction/server 2.35.0 → 2.36.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.
Files changed (52) hide show
  1. package/README.md +15 -1
  2. package/dist/config.d.ts +69 -1
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +11 -1
  5. package/dist/config.js.map +1 -1
  6. package/dist/generated/generated.d.ts +15 -12
  7. package/dist/generated/generated.d.ts.map +1 -1
  8. package/dist/generated/generated.js +73 -58
  9. package/dist/generated/generated.js.map +1 -1
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +41 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/resolvers/AskSkipResolver.d.ts +60 -5
  15. package/dist/resolvers/AskSkipResolver.d.ts.map +1 -1
  16. package/dist/resolvers/AskSkipResolver.js +587 -31
  17. package/dist/resolvers/AskSkipResolver.js.map +1 -1
  18. package/dist/rest/EntityCRUDHandler.d.ts +29 -0
  19. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -0
  20. package/dist/rest/EntityCRUDHandler.js +197 -0
  21. package/dist/rest/EntityCRUDHandler.js.map +1 -0
  22. package/dist/rest/RESTEndpointHandler.d.ts +41 -0
  23. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -0
  24. package/dist/rest/RESTEndpointHandler.js +537 -0
  25. package/dist/rest/RESTEndpointHandler.js.map +1 -0
  26. package/dist/rest/ViewOperationsHandler.d.ts +21 -0
  27. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -0
  28. package/dist/rest/ViewOperationsHandler.js +144 -0
  29. package/dist/rest/ViewOperationsHandler.js.map +1 -0
  30. package/dist/rest/index.d.ts +5 -0
  31. package/dist/rest/index.d.ts.map +1 -0
  32. package/dist/rest/index.js +5 -0
  33. package/dist/rest/index.js.map +1 -0
  34. package/dist/rest/setupRESTEndpoints.d.ts +12 -0
  35. package/dist/rest/setupRESTEndpoints.d.ts.map +1 -0
  36. package/dist/rest/setupRESTEndpoints.js +27 -0
  37. package/dist/rest/setupRESTEndpoints.js.map +1 -0
  38. package/dist/scheduler/LearningCycleScheduler.d.ts +44 -0
  39. package/dist/scheduler/LearningCycleScheduler.d.ts.map +1 -0
  40. package/dist/scheduler/LearningCycleScheduler.js +188 -0
  41. package/dist/scheduler/LearningCycleScheduler.js.map +1 -0
  42. package/package.json +24 -26
  43. package/src/config.ts +15 -1
  44. package/src/generated/generated.ts +53 -44
  45. package/src/index.ts +56 -1
  46. package/src/resolvers/AskSkipResolver.ts +787 -51
  47. package/src/rest/EntityCRUDHandler.ts +279 -0
  48. package/src/rest/RESTEndpointHandler.ts +834 -0
  49. package/src/rest/ViewOperationsHandler.ts +207 -0
  50. package/src/rest/index.ts +4 -0
  51. package/src/rest/setupRESTEndpoints.ts +89 -0
  52. package/src/scheduler/LearningCycleScheduler.ts +312 -0
@@ -0,0 +1,537 @@
1
+ import express from 'express';
2
+ import { CompositeKey, EntityDeleteOptions, LogError, Metadata } from '@memberjunction/core';
3
+ import { EntityCRUDHandler } from './EntityCRUDHandler.js';
4
+ import { ViewOperationsHandler } from './ViewOperationsHandler.js';
5
+ export class RESTEndpointHandler {
6
+ router;
7
+ options;
8
+ constructor(options = {}) {
9
+ this.router = express.Router();
10
+ this.options = options;
11
+ this.setupRoutes();
12
+ }
13
+ isEntityAllowed(entityName) {
14
+ const name = entityName.toLowerCase();
15
+ const md = new Metadata();
16
+ const entity = md.Entities.find(e => e.Name.toLowerCase() === name);
17
+ if (!entity) {
18
+ return false;
19
+ }
20
+ const schemaName = entity.SchemaName.toLowerCase();
21
+ if (this.options.excludeSchemas && this.options.excludeSchemas.length > 0) {
22
+ if (this.options.excludeSchemas.some(schema => schema.toLowerCase() === schemaName)) {
23
+ return false;
24
+ }
25
+ }
26
+ if (this.options.excludeEntities && this.options.excludeEntities.length > 0) {
27
+ if (this.options.excludeEntities.includes(name)) {
28
+ return false;
29
+ }
30
+ for (const pattern of this.options.excludeEntities) {
31
+ if (pattern.includes('*')) {
32
+ const regex = new RegExp('^' + pattern.toLowerCase().replace(/\*/g, '.*') + '$');
33
+ if (regex.test(name)) {
34
+ return false;
35
+ }
36
+ }
37
+ }
38
+ }
39
+ if (this.options.includeSchemas && this.options.includeSchemas.length > 0) {
40
+ if (!this.options.includeSchemas.some(schema => schema.toLowerCase() === schemaName)) {
41
+ return false;
42
+ }
43
+ }
44
+ if (this.options.includeEntities && this.options.includeEntities.length > 0) {
45
+ if (this.options.includeEntities.includes(name)) {
46
+ return true;
47
+ }
48
+ for (const pattern of this.options.includeEntities) {
49
+ if (pattern.includes('*')) {
50
+ const regex = new RegExp('^' + pattern.toLowerCase().replace(/\*/g, '.*') + '$');
51
+ if (regex.test(name)) {
52
+ return true;
53
+ }
54
+ }
55
+ }
56
+ return false;
57
+ }
58
+ return true;
59
+ }
60
+ setupRoutes() {
61
+ this.router.use(this.extractMJUser);
62
+ this.router.use('/entities/:entityName', this.checkEntityAccess.bind(this));
63
+ this.router.use('/views/:entityName', this.checkEntityAccess.bind(this));
64
+ this.router.use('/metadata/entities/:entityName', this.checkEntityAccess.bind(this));
65
+ this.router.use('/users/:userId/favorites/:entityName', this.checkEntityAccess.bind(this));
66
+ this.router.get('/entities/:entityName', this.getEntityList.bind(this));
67
+ this.router.post('/entities/:entityName', this.createEntity.bind(this));
68
+ this.router.get('/entities/:entityName/:id', this.getEntity.bind(this));
69
+ this.router.put('/entities/:entityName/:id', this.updateEntity.bind(this));
70
+ this.router.delete('/entities/:entityName/:id', this.deleteEntity.bind(this));
71
+ this.router.get('/entities/:entityName/:id/changes', this.getRecordChanges.bind(this));
72
+ this.router.get('/entities/:entityName/:id/dependencies', this.getRecordDependencies.bind(this));
73
+ this.router.get('/entities/:entityName/:id/name', this.getEntityRecordName.bind(this));
74
+ this.router.post('/views/:entityName', this.runView.bind(this));
75
+ this.router.post('/views/batch', this.runViews.bind(this));
76
+ this.router.get('/views/entity', this.getViewEntity.bind(this));
77
+ this.router.get('/metadata/entities', this.getEntityMetadata.bind(this));
78
+ this.router.get('/metadata/entities/:entityName', this.getEntityFieldMetadata.bind(this));
79
+ this.router.get('/views/:entityName/metadata', this.getViewsMetadata.bind(this));
80
+ this.router.get('/users/current', this.getCurrentUser.bind(this));
81
+ this.router.get('/users/:userId/favorites/:entityName/:id', this.getRecordFavoriteStatus.bind(this));
82
+ this.router.put('/users/:userId/favorites/:entityName/:id', this.setRecordFavoriteStatus.bind(this));
83
+ this.router.delete('/users/:userId/favorites/:entityName/:id', this.removeRecordFavoriteStatus.bind(this));
84
+ this.router.post('/transactions', this.executeTransaction.bind(this));
85
+ this.router.get('/reports/:reportId', this.runReport.bind(this));
86
+ this.router.post('/queries/run', this.runQuery.bind(this));
87
+ this.router.use(this.errorHandler);
88
+ }
89
+ checkEntityAccess(req, res, next) {
90
+ const entityName = req.params.entityName;
91
+ if (!entityName) {
92
+ next();
93
+ return;
94
+ }
95
+ if (!this.isEntityAllowed(entityName)) {
96
+ res.status(403).json({
97
+ error: `Access to entity '${entityName}' is not allowed through the REST API`,
98
+ details: 'This entity is either not included in the allowlist or is explicitly excluded in the REST API configuration'
99
+ });
100
+ return;
101
+ }
102
+ next();
103
+ }
104
+ async extractMJUser(req, res, next) {
105
+ try {
106
+ if (req['user']) {
107
+ const md = new Metadata();
108
+ const userInfo = req['user'];
109
+ req['mjUser'] = userInfo;
110
+ if (!req['mjUser']) {
111
+ res.status(401).json({ error: 'User not found in MemberJunction' });
112
+ return;
113
+ }
114
+ }
115
+ else {
116
+ res.status(401).json({ error: 'Authentication required' });
117
+ return;
118
+ }
119
+ next();
120
+ }
121
+ catch (error) {
122
+ next(error);
123
+ }
124
+ }
125
+ errorHandler(err, req, res, next) {
126
+ LogError(err);
127
+ if (err.name === 'UnauthorizedError') {
128
+ res.status(401).json({ error: 'Invalid token' });
129
+ return;
130
+ }
131
+ res.status(500).json({ error: err?.message || 'Internal server error' });
132
+ }
133
+ async getCurrentUser(req, res) {
134
+ try {
135
+ const user = req['mjUser'];
136
+ res.json({
137
+ ID: user.ID,
138
+ Name: user.Name,
139
+ Email: user.Email,
140
+ FirstName: user.FirstName,
141
+ LastName: user.LastName,
142
+ IsAdmin: user.IsAdmin,
143
+ UserRoles: user.UserRoles.map(role => ({
144
+ ID: role.ID,
145
+ Name: role.Name,
146
+ Description: role.Description
147
+ }))
148
+ });
149
+ }
150
+ catch (error) {
151
+ LogError(error);
152
+ res.status(500).json({ error: error?.message || 'Unknown error' });
153
+ }
154
+ }
155
+ async getEntityList(req, res) {
156
+ try {
157
+ const { entityName } = req.params;
158
+ const { filter, orderBy, fields, maxRows, startRow } = req.query;
159
+ const user = req['mjUser'];
160
+ const params = {
161
+ EntityName: entityName,
162
+ ExtraFilter: filter,
163
+ OrderBy: orderBy,
164
+ Fields: fields ? fields.split(',') : undefined,
165
+ MaxRows: maxRows ? parseInt(maxRows) : undefined,
166
+ StartRow: startRow ? parseInt(startRow) : undefined
167
+ };
168
+ const result = await ViewOperationsHandler.listEntities(params, user);
169
+ res.json(result);
170
+ }
171
+ catch (error) {
172
+ LogError(error);
173
+ res.status(500).json({ error: error?.message || 'Unknown error' });
174
+ }
175
+ }
176
+ async getEntity(req, res) {
177
+ try {
178
+ const { entityName, id } = req.params;
179
+ const { include } = req.query;
180
+ const user = req['mjUser'];
181
+ const relatedEntities = include ? include.split(',') : null;
182
+ const result = await EntityCRUDHandler.getEntity(entityName, id, relatedEntities, user);
183
+ if (result.success) {
184
+ res.json(result.entity);
185
+ }
186
+ else {
187
+ res.status(result.error.includes('not found') ? 404 : 400).json({ error: result.error });
188
+ }
189
+ }
190
+ catch (error) {
191
+ LogError(error);
192
+ res.status(500).json({ error: error?.message || 'Unknown error' });
193
+ }
194
+ }
195
+ async createEntity(req, res) {
196
+ try {
197
+ const { entityName } = req.params;
198
+ const entityData = req.body;
199
+ const user = req['mjUser'];
200
+ const result = await EntityCRUDHandler.createEntity(entityName, entityData, user);
201
+ if (result.success) {
202
+ res.status(201).json(result.entity);
203
+ }
204
+ else {
205
+ res.status(400).json({
206
+ error: result.error,
207
+ details: result.details
208
+ });
209
+ }
210
+ }
211
+ catch (error) {
212
+ LogError(error);
213
+ res.status(500).json({ error: error?.message || 'Unknown error' });
214
+ }
215
+ }
216
+ async updateEntity(req, res) {
217
+ try {
218
+ const { entityName, id } = req.params;
219
+ const updateData = req.body;
220
+ const user = req['mjUser'];
221
+ const result = await EntityCRUDHandler.updateEntity(entityName, id, updateData, user);
222
+ if (result.success) {
223
+ res.json(result.entity);
224
+ }
225
+ else {
226
+ res.status(result.error.includes('not found') ? 404 : 400).json({
227
+ error: result.error,
228
+ details: result.details
229
+ });
230
+ }
231
+ }
232
+ catch (error) {
233
+ LogError(error);
234
+ res.status(500).json({ error: error?.message || 'Unknown error' });
235
+ }
236
+ }
237
+ async deleteEntity(req, res) {
238
+ try {
239
+ const { entityName, id } = req.params;
240
+ const options = req.query.options ? JSON.parse(req.query.options) : {};
241
+ const user = req['mjUser'];
242
+ const deleteOptions = new EntityDeleteOptions();
243
+ if (options.SkipEntityAIActions !== undefined)
244
+ deleteOptions.SkipEntityAIActions = !!options.SkipEntityAIActions;
245
+ if (options.SkipEntityActions !== undefined)
246
+ deleteOptions.SkipEntityActions = !!options.SkipEntityActions;
247
+ if (options.ReplayOnly !== undefined)
248
+ deleteOptions.ReplayOnly = !!options.ReplayOnly;
249
+ const result = await EntityCRUDHandler.deleteEntity(entityName, id, deleteOptions, user);
250
+ if (result.success) {
251
+ res.status(204).send();
252
+ }
253
+ else {
254
+ res.status(result.error.includes('not found') ? 404 : 400).json({ error: result.error });
255
+ }
256
+ }
257
+ catch (error) {
258
+ LogError(error);
259
+ res.status(500).json({ error: error?.message || 'Unknown error' });
260
+ }
261
+ }
262
+ async getRecordChanges(req, res) {
263
+ try {
264
+ const { entityName, id } = req.params;
265
+ const user = req['mjUser'];
266
+ const md = new Metadata();
267
+ const entity = await md.GetEntityObject(entityName, user);
268
+ const compositeKey = this.createCompositeKey(entity.EntityInfo, id);
269
+ const changes = [];
270
+ res.json(changes);
271
+ }
272
+ catch (error) {
273
+ LogError(error);
274
+ res.status(500).json({ error: error?.message || 'Unknown error' });
275
+ }
276
+ }
277
+ async getRecordDependencies(req, res) {
278
+ try {
279
+ const { entityName, id } = req.params;
280
+ const user = req['mjUser'];
281
+ const md = new Metadata();
282
+ const entity = await md.GetEntityObject(entityName, user);
283
+ const compositeKey = this.createCompositeKey(entity.EntityInfo, id);
284
+ const dependencies = [];
285
+ res.json(dependencies);
286
+ }
287
+ catch (error) {
288
+ LogError(error);
289
+ res.status(500).json({ error: error?.message || 'Unknown error' });
290
+ }
291
+ }
292
+ async getEntityRecordName(req, res) {
293
+ try {
294
+ const { entityName, id } = req.params;
295
+ const user = req['mjUser'];
296
+ const md = new Metadata();
297
+ const entity = await md.GetEntityObject(entityName, user);
298
+ const compositeKey = this.createCompositeKey(entity.EntityInfo, id);
299
+ const recordName = "Record Name";
300
+ res.json({ recordName });
301
+ }
302
+ catch (error) {
303
+ LogError(error);
304
+ res.status(500).json({ error: error?.message || 'Unknown error' });
305
+ }
306
+ }
307
+ async runView(req, res) {
308
+ try {
309
+ const { entityName } = req.params;
310
+ const viewParams = req.body;
311
+ const user = req['mjUser'];
312
+ const params = {
313
+ EntityName: entityName,
314
+ ...viewParams
315
+ };
316
+ const result = await ViewOperationsHandler.runView(params, user);
317
+ if (result.success) {
318
+ res.json(result.result);
319
+ }
320
+ else {
321
+ res.status(400).json({ error: result.error });
322
+ }
323
+ }
324
+ catch (error) {
325
+ LogError(error);
326
+ res.status(500).json({ error: error?.message || 'Unknown error' });
327
+ }
328
+ }
329
+ async runViews(req, res) {
330
+ try {
331
+ const { params } = req.body;
332
+ const user = req['mjUser'];
333
+ if (!Array.isArray(params)) {
334
+ res.status(400).json({ error: 'params must be an array of RunViewParams' });
335
+ return;
336
+ }
337
+ const filteredParams = params.filter(p => this.isEntityAllowed(p.EntityName));
338
+ if (filteredParams.length === 0 && params.length > 0) {
339
+ res.status(403).json({
340
+ error: 'None of the requested entities are allowed through the REST API',
341
+ details: 'The entities requested are either not included in the allowlist or are explicitly excluded in the REST API configuration'
342
+ });
343
+ return;
344
+ }
345
+ const result = await ViewOperationsHandler.runViews(filteredParams, user);
346
+ if (result.success) {
347
+ res.json(result.results);
348
+ }
349
+ else {
350
+ res.status(400).json({ error: result.error });
351
+ }
352
+ }
353
+ catch (error) {
354
+ LogError(error);
355
+ res.status(500).json({ error: error?.message || 'Unknown error' });
356
+ }
357
+ }
358
+ async getViewEntity(req, res) {
359
+ try {
360
+ const { ViewID, ViewName } = req.query;
361
+ const user = req['mjUser'];
362
+ if (!ViewID && !ViewName) {
363
+ res.status(400).json({ error: 'Either ViewID or ViewName must be provided' });
364
+ return;
365
+ }
366
+ const entityName = "SampleEntity";
367
+ res.json({ entityName });
368
+ }
369
+ catch (error) {
370
+ LogError(error);
371
+ res.status(500).json({ error: error?.message || 'Unknown error' });
372
+ }
373
+ }
374
+ async getEntityMetadata(req, res) {
375
+ try {
376
+ const user = req['mjUser'];
377
+ const md = new Metadata();
378
+ const entities = md.Entities.filter(e => {
379
+ if (!this.isEntityAllowed(e.Name)) {
380
+ return false;
381
+ }
382
+ const permissions = e.GetUserPermisions(user);
383
+ return permissions.CanRead;
384
+ });
385
+ const result = entities.map(e => ({
386
+ Name: e.Name,
387
+ ClassName: e.ClassName,
388
+ SchemaName: e.SchemaName,
389
+ DisplayName: e.DisplayName,
390
+ Description: e.Description,
391
+ IncludeInAPI: e.IncludeInAPI,
392
+ AllowCreateAPI: e.AllowCreateAPI,
393
+ AllowUpdateAPI: e.AllowUpdateAPI,
394
+ AllowDeleteAPI: e.AllowDeleteAPI
395
+ }));
396
+ res.json(result);
397
+ }
398
+ catch (error) {
399
+ LogError(error);
400
+ res.status(500).json({ error: error?.message || 'Unknown error' });
401
+ }
402
+ }
403
+ async getEntityFieldMetadata(req, res) {
404
+ try {
405
+ const { entityName } = req.params;
406
+ const user = req['mjUser'];
407
+ const md = new Metadata();
408
+ const entity = md.Entities.find(e => e.Name === entityName);
409
+ if (!entity) {
410
+ res.status(404).json({ error: `Entity '${entityName}' not found` });
411
+ return;
412
+ }
413
+ const permissions = entity.GetUserPermisions(user);
414
+ if (!permissions.CanRead) {
415
+ res.status(403).json({ error: 'Permission denied' });
416
+ return;
417
+ }
418
+ const result = entity.Fields.map(f => ({
419
+ Name: f.Name,
420
+ DisplayName: f.DisplayName,
421
+ Description: f.Description,
422
+ Type: f.Type,
423
+ IsRequired: f.AllowsNull === false,
424
+ IsPrimaryKey: f.IsPrimaryKey,
425
+ IsUnique: f.IsUnique,
426
+ MaxLength: f.MaxLength,
427
+ DefaultValue: f.DefaultValue,
428
+ CodeName: f.CodeName,
429
+ TSType: f.TSType
430
+ }));
431
+ res.json(result);
432
+ }
433
+ catch (error) {
434
+ LogError(error);
435
+ res.status(500).json({ error: error?.message || 'Unknown error' });
436
+ }
437
+ }
438
+ async getViewsMetadata(req, res) {
439
+ try {
440
+ const { entityName } = req.params;
441
+ const user = req['mjUser'];
442
+ const views = [];
443
+ res.json(views);
444
+ }
445
+ catch (error) {
446
+ LogError(error);
447
+ res.status(500).json({ error: error?.message || 'Unknown error' });
448
+ }
449
+ }
450
+ async getRecordFavoriteStatus(req, res) {
451
+ try {
452
+ const { userId, entityName, id } = req.params;
453
+ const user = req['mjUser'];
454
+ const md = new Metadata();
455
+ const entity = await md.GetEntityObject(entityName, user);
456
+ const compositeKey = this.createCompositeKey(entity.EntityInfo, id);
457
+ const isFavorite = false;
458
+ res.json({ isFavorite });
459
+ }
460
+ catch (error) {
461
+ LogError(error);
462
+ res.status(500).json({ error: error?.message || 'Unknown error' });
463
+ }
464
+ }
465
+ async setRecordFavoriteStatus(req, res) {
466
+ try {
467
+ const { userId, entityName, id } = req.params;
468
+ const user = req['mjUser'];
469
+ const md = new Metadata();
470
+ const entity = await md.GetEntityObject(entityName, user);
471
+ const compositeKey = this.createCompositeKey(entity.EntityInfo, id);
472
+ res.status(204).send();
473
+ }
474
+ catch (error) {
475
+ LogError(error);
476
+ res.status(500).json({ error: error?.message || 'Unknown error' });
477
+ }
478
+ }
479
+ async removeRecordFavoriteStatus(req, res) {
480
+ try {
481
+ const { userId, entityName, id } = req.params;
482
+ const user = req['mjUser'];
483
+ const md = new Metadata();
484
+ const entity = await md.GetEntityObject(entityName, user);
485
+ const compositeKey = this.createCompositeKey(entity.EntityInfo, id);
486
+ res.status(204).send();
487
+ }
488
+ catch (error) {
489
+ LogError(error);
490
+ res.status(500).json({ error: error?.message || 'Unknown error' });
491
+ }
492
+ }
493
+ async executeTransaction(req, res) {
494
+ try {
495
+ res.status(501).json({ error: 'Not implemented' });
496
+ }
497
+ catch (error) {
498
+ LogError(error);
499
+ res.status(500).json({ error: error?.message || 'Unknown error' });
500
+ }
501
+ }
502
+ async runReport(req, res) {
503
+ try {
504
+ res.status(501).json({ error: 'Not implemented' });
505
+ }
506
+ catch (error) {
507
+ LogError(error);
508
+ res.status(500).json({ error: error?.message || 'Unknown error' });
509
+ }
510
+ }
511
+ async runQuery(req, res) {
512
+ try {
513
+ res.status(501).json({ error: 'Not implemented' });
514
+ }
515
+ catch (error) {
516
+ LogError(error);
517
+ res.status(500).json({ error: error?.message || 'Unknown error' });
518
+ }
519
+ }
520
+ createCompositeKey(entityInfo, id) {
521
+ if (entityInfo.PrimaryKeys.length === 1) {
522
+ const primaryKeyField = entityInfo.PrimaryKeys[0].Name;
523
+ const compositeKey = new CompositeKey();
524
+ compositeKey.KeyValuePairs = [
525
+ { FieldName: primaryKeyField, Value: id }
526
+ ];
527
+ return compositeKey;
528
+ }
529
+ else {
530
+ throw new Error('Composite primary keys are not supported in this implementation');
531
+ }
532
+ }
533
+ getRouter() {
534
+ return this.router;
535
+ }
536
+ }
537
+ //# sourceMappingURL=RESTEndpointHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RESTEndpointHandler.js","sourceRoot":"","sources":["../../src/rest/RESTEndpointHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { RunViewParams, RunViewResult, UserInfo } from '@memberjunction/core';
2
+ export declare class ViewOperationsHandler {
3
+ static runView(params: RunViewParams, user: UserInfo): Promise<{
4
+ success: boolean;
5
+ result?: RunViewResult;
6
+ error?: string;
7
+ }>;
8
+ static runViews(paramsArray: RunViewParams[], user: UserInfo): Promise<{
9
+ success: boolean;
10
+ results?: RunViewResult[];
11
+ error?: string;
12
+ }>;
13
+ static listEntities(params: RunViewParams, user: UserInfo): Promise<RunViewResult>;
14
+ static getEntityViews(entityName: string, user: UserInfo): Promise<{
15
+ success: boolean;
16
+ views?: any[];
17
+ error?: string;
18
+ }>;
19
+ private static sanitizeRunViewParams;
20
+ }
21
+ //# sourceMappingURL=ViewOperationsHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewOperationsHandler.d.ts","sourceRoot":"","sources":["../../src/rest/ViewOperationsHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAC0B,aAAa,EAC1C,aAAa,EAAE,QAAQ,EAC1B,MAAM,sBAAsB,CAAC;AAM9B,qBAAa,qBAAqB;WAIjB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,aAAa,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;WAsCrH,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;WAyChI,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;WA6B3E,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAwD7H,OAAO,CAAC,MAAM,CAAC,qBAAqB;CA6BvC"}