@memberjunction/core 2.72.0 → 2.74.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 (46) hide show
  1. package/dist/generic/applicationInfo.d.ts +92 -1
  2. package/dist/generic/applicationInfo.d.ts.map +1 -1
  3. package/dist/generic/applicationInfo.js +92 -1
  4. package/dist/generic/applicationInfo.js.map +1 -1
  5. package/dist/generic/baseInfo.d.ts +15 -0
  6. package/dist/generic/baseInfo.d.ts.map +1 -1
  7. package/dist/generic/baseInfo.js +15 -0
  8. package/dist/generic/baseInfo.js.map +1 -1
  9. package/dist/generic/entityInfo.d.ts +184 -3
  10. package/dist/generic/entityInfo.d.ts.map +1 -1
  11. package/dist/generic/entityInfo.js +184 -3
  12. package/dist/generic/entityInfo.js.map +1 -1
  13. package/dist/generic/interfaces.d.ts +119 -4
  14. package/dist/generic/interfaces.d.ts.map +1 -1
  15. package/dist/generic/interfaces.js +44 -3
  16. package/dist/generic/interfaces.js.map +1 -1
  17. package/dist/generic/providerBase.d.ts +248 -8
  18. package/dist/generic/providerBase.d.ts.map +1 -1
  19. package/dist/generic/providerBase.js +185 -2
  20. package/dist/generic/providerBase.js.map +1 -1
  21. package/dist/generic/queryInfo.d.ts +312 -1
  22. package/dist/generic/queryInfo.d.ts.map +1 -1
  23. package/dist/generic/queryInfo.js +371 -2
  24. package/dist/generic/queryInfo.js.map +1 -1
  25. package/dist/generic/querySQLFilters.d.ts +54 -0
  26. package/dist/generic/querySQLFilters.d.ts.map +1 -0
  27. package/dist/generic/querySQLFilters.js +84 -0
  28. package/dist/generic/querySQLFilters.js.map +1 -0
  29. package/dist/generic/runQuery.d.ts +42 -0
  30. package/dist/generic/runQuery.d.ts.map +1 -1
  31. package/dist/generic/runQuery.js +26 -0
  32. package/dist/generic/runQuery.js.map +1 -1
  33. package/dist/generic/runQuerySQLFilterImplementations.d.ts +51 -0
  34. package/dist/generic/runQuerySQLFilterImplementations.d.ts.map +1 -0
  35. package/dist/generic/runQuerySQLFilterImplementations.js +238 -0
  36. package/dist/generic/runQuerySQLFilterImplementations.js.map +1 -0
  37. package/dist/generic/securityInfo.d.ts +212 -13
  38. package/dist/generic/securityInfo.d.ts.map +1 -1
  39. package/dist/generic/securityInfo.js +200 -14
  40. package/dist/generic/securityInfo.js.map +1 -1
  41. package/dist/index.d.ts +4 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -0
  44. package/dist/index.js.map +1 -1
  45. package/package.json +2 -2
  46. package/readme.md +550 -1
@@ -1,43 +1,178 @@
1
1
  import { BaseInfo } from "./baseInfo";
2
2
  import { EntityInfo } from "./entityInfo";
3
+ import { UserInfo } from "./securityInfo";
3
4
  /**
4
- * Metadata about a single stored query in the database.
5
+ * Catalog of stored queries. This is useful for any arbitrary query that is known to be performant and correct and can be reused.
6
+ * Queries can be viewed/run by a user, used programatically via RunQuery, and also used by AI systems for improved reliability
7
+ * instead of dynamically generated SQL. Queries can also improve security since they store the SQL instead of using dynamic SQL.
5
8
  */
6
9
  export declare class QueryInfo extends BaseInfo {
10
+ /**
11
+ * Unique identifier for the query record
12
+ */
7
13
  ID: string;
14
+ /**
15
+ * Name of the query for display and reference
16
+ */
8
17
  Name: string;
18
+ /**
19
+ * Detailed description of what the query does and what data it returns
20
+ */
9
21
  Description: string;
22
+ /**
23
+ * Foreign key reference to the Query Categories entity
24
+ */
10
25
  CategoryID: string;
26
+ /**
27
+ * The actual SQL query text to execute, may include Nunjucks template parameters
28
+ */
11
29
  SQL: string;
30
+ /**
31
+ * The original SQL before any optimization or modification, kept for reference and comparison
32
+ */
12
33
  OriginalSQL: string;
34
+ /**
35
+ * User feedback on query accuracy, performance, or suggested improvements
36
+ */
13
37
  Feedback: string;
38
+ /**
39
+ * Current status of the query in the approval workflow
40
+ */
14
41
  Status: 'Pending' | 'In-Review' | 'Approved' | 'Rejected' | 'Obsolete';
42
+ /**
43
+ * Value indicating the quality of the query, higher values mean better quality
44
+ */
15
45
  QualityRank: number;
46
+ /**
47
+ * Automatically set to true when the SQL column contains Nunjucks template markers like {{paramName}}
48
+ */
49
+ UsesTemplate: boolean;
50
+ /**
51
+ * Date and time when this query record was created
52
+ */
16
53
  __mj_CreatedAt: Date;
54
+ /**
55
+ * Date and time when this query record was last updated
56
+ */
17
57
  __mj_UpdatedAt: Date;
58
+ /**
59
+ * Category name from the related Query Categories entity
60
+ */
18
61
  Category: string;
19
62
  private _fields;
63
+ /**
64
+ * Gets the field metadata for this query, including display names, data types, and formatting rules.
65
+ * @returns {QueryFieldInfo[]} Array of field metadata for the query
66
+ */
20
67
  get Fields(): QueryFieldInfo[];
68
+ /**
69
+ * Gets the permissions that control access to this query, defining which users and roles can run it.
70
+ * @returns {QueryPermissionInfo[]} Array of permission settings for the query
71
+ */
21
72
  get Permissions(): QueryPermissionInfo[];
73
+ private _parameters;
74
+ /**
75
+ * Gets the parameter definitions for this parameterized query if it uses Nunjucks templates.
76
+ * Parameters include validation filters and metadata for type-safe query execution.
77
+ * @returns {QueryParameterInfo[]} Array of parameter definitions for the query
78
+ */
79
+ get Parameters(): QueryParameterInfo[];
80
+ private _entities;
81
+ /**
82
+ * Gets the entities that are involved in this query, tracking which MemberJunction entities are referenced.
83
+ * @returns {QueryEntityInfo[]} Array of entities used by the query
84
+ */
85
+ get Entities(): QueryEntityInfo[];
22
86
  constructor(initData?: any);
87
+ /**
88
+ * Gets the category information for this query, supporting hierarchical organization.
89
+ * @returns {QueryCategoryInfo} The category this query belongs to, or undefined if not categorized
90
+ */
23
91
  get CategoryInfo(): QueryCategoryInfo;
92
+ /**
93
+ * Checks if a user has permission to run this query based on their roles.
94
+ * A user can run a query if:
95
+ * 1. The query has no permissions defined (open to all)
96
+ * 2. The user has at least one role that is granted permission
97
+ *
98
+ * @param user The user to check permissions for
99
+ * @returns true if the user has permission to run the query
100
+ */
101
+ UserHasRunPermissions(user: UserInfo): boolean;
102
+ /**
103
+ * Checks if a user can run this query, considering both permissions and query status.
104
+ * A query can be run if:
105
+ * 1. The user has permission to run it (via UserHasRunPermissions)
106
+ * 2. The query status is 'Approved'
107
+ *
108
+ * @param user The user to check
109
+ * @returns true if the user can run the query right now
110
+ */
111
+ UserCanRun(user: UserInfo): boolean;
24
112
  }
113
+ /**
114
+ * Organizes saved queries into categories for discovery and management, supporting folder-like organization of queries.
115
+ */
25
116
  export declare class QueryCategoryInfo extends BaseInfo {
117
+ /**
118
+ * Unique identifier for the query category
119
+ */
26
120
  ID: string;
121
+ /**
122
+ * Name of the category for organizing queries
123
+ */
27
124
  Name: string;
125
+ /**
126
+ * Foreign key to parent category for hierarchical organization
127
+ */
28
128
  ParentID: string;
129
+ /**
130
+ * Description of what types of queries belong in this category
131
+ */
29
132
  Description: string;
133
+ /**
134
+ * Date and time when this category was created
135
+ */
30
136
  __mj_CreatedAt: Date;
137
+ /**
138
+ * Date and time when this category was last updated
139
+ */
31
140
  __mj_UpdatedAt: Date;
141
+ /**
142
+ * Parent category name from the related category
143
+ */
32
144
  Parent: string;
33
145
  constructor(initData?: any);
146
+ /**
147
+ * Gets the parent category information for hierarchical category organization.
148
+ * @returns {QueryCategoryInfo} The parent category, or undefined if this is a top-level category
149
+ */
34
150
  get ParentCategoryInfo(): QueryCategoryInfo;
151
+ /**
152
+ * Gets all queries that belong to this category.
153
+ * @returns {QueryInfo[]} Array of queries in this category
154
+ */
35
155
  get Queries(): QueryInfo[];
36
156
  }
157
+ /**
158
+ * Stores field-level metadata for queries including display names, data types, and formatting rules for result presentation.
159
+ */
37
160
  export declare class QueryFieldInfo extends BaseInfo {
161
+ /**
162
+ * Name of the field as it appears in query results
163
+ */
38
164
  Name: string;
165
+ /**
166
+ * Foreign key to the parent query
167
+ */
39
168
  QueryID: string;
169
+ /**
170
+ * Description of what this field represents
171
+ */
40
172
  Description: string;
173
+ /**
174
+ * Display order of this field in query results
175
+ */
41
176
  Sequence: number;
42
177
  /**
43
178
  * The base type, not including parameters, in SQL. For example this field would be nvarchar or decimal, and wouldn't include type parameters. The SQLFullType field provides that information.
@@ -47,24 +182,200 @@ export declare class QueryFieldInfo extends BaseInfo {
47
182
  * The full SQL type for the field, for example datetime or nvarchar(10) etc.
48
183
  */
49
184
  SQLFullType: string;
185
+ /**
186
+ * Foreign key to the source entity this field comes from
187
+ */
50
188
  SourceEntityID: string;
189
+ /**
190
+ * Name of the field in the source entity
191
+ */
51
192
  SourceFieldName: string;
193
+ /**
194
+ * Whether this field is computed rather than directly selected from a table
195
+ */
52
196
  IsComputed: boolean;
197
+ /**
198
+ * Explanation of how this computed field is calculated
199
+ */
53
200
  ComputationDescription: string;
201
+ /**
202
+ * Whether this field represents a summary/aggregate value
203
+ */
54
204
  IsSummary: boolean;
205
+ /**
206
+ * Description of the summary calculation
207
+ */
55
208
  SummaryDescription: string;
209
+ /**
210
+ * Date and time when this field was created
211
+ */
56
212
  __mj_CreatedAt: Date;
213
+ /**
214
+ * Date and time when this field was last updated
215
+ */
57
216
  __mj_UpdatedAt: Date;
217
+ /**
218
+ * Source entity name if field is from an entity
219
+ */
58
220
  SourceEntity: string;
59
221
  constructor(initData?: any);
222
+ /**
223
+ * Gets the entity information for the source entity this field comes from.
224
+ * @returns {EntityInfo} The source entity metadata, or undefined if not linked to an entity
225
+ */
60
226
  get SourceEntityInfo(): EntityInfo;
227
+ /**
228
+ * Gets the query information this field belongs to.
229
+ * @returns {QueryInfo} The parent query metadata
230
+ */
61
231
  get QueryInfo(): QueryInfo;
62
232
  }
233
+ /**
234
+ * Controls access to queries by defining which users and roles can run specific queries.
235
+ */
63
236
  export declare class QueryPermissionInfo extends BaseInfo {
237
+ /**
238
+ * Foreign key to the query this permission applies to
239
+ */
64
240
  QueryID: string;
241
+ /**
242
+ * Name of the role that has permission to run this query
243
+ */
65
244
  RoleName: string;
245
+ /**
246
+ * Query name from the related query
247
+ */
248
+ Query: string;
249
+ constructor(initData?: any);
250
+ /**
251
+ * Gets the query information this permission applies to.
252
+ * @returns {QueryInfo} The query metadata this permission controls
253
+ */
254
+ get QueryInfo(): QueryInfo;
255
+ }
256
+ /**
257
+ * Tracks which entities are involved in a given query. The Queries table stores SQL and descriptions for stored queries
258
+ * that can be executed and serve as examples for AI.
259
+ */
260
+ export declare class QueryEntityInfo extends BaseInfo {
261
+ /**
262
+ * References the ID of the query in the Queries table
263
+ */
264
+ QueryID: string;
265
+ /**
266
+ * References the ID of the entity in the Entities table
267
+ */
268
+ EntityID: string;
269
+ /**
270
+ * Order sequence for multiple entities in a query
271
+ */
272
+ Sequence: number;
273
+ /**
274
+ * How this entity association was detected: AI (automatic) or Manual (user-specified)
275
+ */
276
+ DetectionMethod: 'AI' | 'Manual';
277
+ /**
278
+ * Confidence score (0.00-1.00) when AI detection was used
279
+ */
280
+ AutoDetectConfidenceScore: number;
281
+ /**
282
+ * Date and time when this association was created
283
+ */
284
+ __mj_CreatedAt: Date;
285
+ /**
286
+ * Date and time when this association was last updated
287
+ */
288
+ __mj_UpdatedAt: Date;
289
+ /**
290
+ * Query name from the related query
291
+ */
66
292
  Query: string;
293
+ /**
294
+ * Entity name from the related entity
295
+ */
296
+ Entity: string;
67
297
  constructor(initData?: any);
298
+ /**
299
+ * Gets the query information this entity relationship belongs to.
300
+ * @returns {QueryInfo} The parent query metadata
301
+ */
68
302
  get QueryInfo(): QueryInfo;
303
+ /**
304
+ * Gets the entity information for the entity involved in this query.
305
+ * @returns {EntityInfo} The entity metadata
306
+ */
307
+ get EntityInfo(): EntityInfo;
308
+ }
309
+ /**
310
+ * Stores parameter definitions for parameterized queries that use Nunjucks templates. Each parameter represents a dynamic value
311
+ * that can be passed when executing the query. Parameters are automatically extracted from the query template by the QueryEntityServer
312
+ * using LLM analysis, or can be manually defined. The combination of parameter metadata and validation filters creates a
313
+ * self-documenting, type-safe query execution system.
314
+ */
315
+ export declare class QueryParameterInfo extends BaseInfo {
316
+ /**
317
+ * Foreign key to the query this parameter belongs to
318
+ */
319
+ QueryID: string;
320
+ /**
321
+ * The name of the parameter as it appears in the Nunjucks template (e.g., {{parameterName}})
322
+ */
323
+ Name: string;
324
+ /**
325
+ * Data type of the parameter for validation and type casting
326
+ */
327
+ Type: 'string' | 'number' | 'date' | 'boolean' | 'array';
328
+ /**
329
+ * Whether this parameter must be provided when executing the query
330
+ */
331
+ IsRequired: boolean;
332
+ /**
333
+ * Default value to use when parameter is not provided
334
+ */
335
+ DefaultValue: string;
336
+ /**
337
+ * Human-readable description of what this parameter is for
338
+ */
339
+ Description: string;
340
+ /**
341
+ * Example value demonstrating the proper format for this parameter
342
+ */
343
+ SampleValue: string;
344
+ /**
345
+ * JSON array of Nunjucks filter definitions for value transformation
346
+ */
347
+ ValidationFilters: string;
348
+ /**
349
+ * How this parameter was detected: AI (automatic) or Manual (user-specified)
350
+ */
351
+ DetectionMethod: 'AI' | 'Manual';
352
+ /**
353
+ * Confidence score (0.00-1.00) when AI detection was used
354
+ */
355
+ AutoDetectConfidenceScore: number;
356
+ /**
357
+ * Date and time when this parameter was created
358
+ */
359
+ __mj_CreatedAt: Date;
360
+ /**
361
+ * Date and time when this parameter was last updated
362
+ */
363
+ __mj_UpdatedAt: Date;
364
+ /**
365
+ * Query name from the related query
366
+ */
367
+ Query: string;
368
+ constructor(initData?: any);
369
+ /**
370
+ * Gets the query information this parameter belongs to.
371
+ * @returns {QueryInfo} The parent query metadata
372
+ */
373
+ get QueryInfo(): QueryInfo;
374
+ /**
375
+ * Gets the parsed validation filters for this parameter.
376
+ * Parses the JSON string of filter definitions into an array of filter objects.
377
+ * @returns {any[]} Array of parsed filter definitions, or empty array if parsing fails
378
+ */
379
+ get ParsedFilters(): any[];
69
380
  }
70
381
  //# sourceMappingURL=queryInfo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queryInfo.d.ts","sourceRoot":"","sources":["../../src/generic/queryInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C;;GAEG;AACH,qBAAa,SAAU,SAAQ,QAAQ;IAC5B,EAAE,EAAE,MAAM,CAAO;IACjB,IAAI,EAAE,MAAM,CAAO;IACnB,WAAW,EAAE,MAAM,CAAQ;IAC3B,UAAU,EAAE,MAAM,CAAO;IACzB,GAAG,EAAE,MAAM,CAAO;IAClB,WAAW,EAAE,MAAM,CAAO;IAC1B,QAAQ,EAAE,MAAM,CAAO;IACvB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAO;IAC7E,WAAW,EAAE,MAAM,CAAO;IACjC,cAAc,EAAE,IAAI,CAAO;IAC3B,cAAc,EAAE,IAAI,CAAO;IAG3B,QAAQ,EAAE,MAAM,CAAO;IAEvB,OAAO,CAAC,OAAO,CAAyB;IACxC,IAAW,MAAM,IAAI,cAAc,EAAE,CAKpC;IAED,IAAW,WAAW,IAAI,mBAAmB,EAAE,CAE9C;gBAEW,QAAQ,GAAE,GAAU;IAiBhC,IAAI,YAAY,IAAI,iBAAiB,CAEpC;CACJ;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;IACpC,EAAE,EAAE,MAAM,CAAO;IACjB,IAAI,EAAE,MAAM,CAAO;IACnB,QAAQ,EAAE,MAAM,CAAO;IACvB,WAAW,EAAE,MAAM,CAAO;IACjC,cAAc,EAAE,IAAI,CAAO;IAC3B,cAAc,EAAE,IAAI,CAAO;IAG3B,MAAM,EAAE,MAAM,CAAO;gBAET,QAAQ,GAAE,GAAU;IAOhC,IAAI,kBAAkB,IAAI,iBAAiB,CAE1C;IAED,IAAI,OAAO,IAAI,SAAS,EAAE,CAEzB;CACJ;AAED,qBAAa,cAAe,SAAQ,QAAQ;IACxC,IAAI,EAAE,MAAM,CAAO;IACnB,OAAO,EAAE,MAAM,CAAO;IACtB,WAAW,EAAE,MAAM,CAAO;IAC1B,QAAQ,EAAE,MAAM,CAAO;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAC1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAC1B,cAAc,EAAE,MAAM,CAAO;IAC7B,eAAe,EAAE,MAAM,CAAO;IAC9B,UAAU,EAAE,OAAO,CAAO;IAC1B,sBAAsB,EAAE,MAAM,CAAO;IACrC,SAAS,EAAE,OAAO,CAAO;IACzB,kBAAkB,EAAE,MAAM,CAAO;IACjC,cAAc,EAAE,IAAI,CAAO;IAC3B,cAAc,EAAE,IAAI,CAAO;IAG3B,YAAY,EAAE,MAAM,CAAO;gBAEf,QAAQ,GAAE,GAAU;IAOhC,IAAI,gBAAgB,IAAI,UAAU,CAEjC;IAED,IAAI,SAAS,IAAI,SAAS,CAEzB;CACJ;AAGD,qBAAa,mBAAoB,SAAQ,QAAQ;IACtC,OAAO,EAAE,MAAM,CAAO;IACtB,QAAQ,EAAE,MAAM,CAAO;IAG9B,KAAK,EAAE,MAAM,CAAO;gBAER,QAAQ,GAAE,GAAU;IAOhC,IAAI,SAAS,IAAI,SAAS,CAEzB;CACJ"}
1
+ {"version":3,"file":"queryInfo.d.ts","sourceRoot":"","sources":["../../src/generic/queryInfo.ts"],"names":[],"mappings":"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"}