@memberjunction/global 5.0.0 → 5.2.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 (138) hide show
  1. package/README.md +19 -3
  2. package/dist/DynamicPackageLoader.d.ts +61 -0
  3. package/dist/DynamicPackageLoader.d.ts.map +1 -0
  4. package/dist/DynamicPackageLoader.js +56 -0
  5. package/dist/DynamicPackageLoader.js.map +1 -0
  6. package/dist/SQLExpressionValidator.d.ts +31 -4
  7. package/dist/SQLExpressionValidator.d.ts.map +1 -1
  8. package/dist/SQLExpressionValidator.js +107 -22
  9. package/dist/SQLExpressionValidator.js.map +1 -1
  10. package/dist/__tests__/SQLExpressionValidator.security.test.d.ts +2 -0
  11. package/dist/__tests__/SQLExpressionValidator.security.test.d.ts.map +1 -0
  12. package/dist/__tests__/SQLExpressionValidator.security.test.js +328 -0
  13. package/dist/__tests__/SQLExpressionValidator.security.test.js.map +1 -0
  14. package/dist/__tests__/SQLExpressionValidator.test.d.ts +2 -0
  15. package/dist/__tests__/SQLExpressionValidator.test.d.ts.map +1 -0
  16. package/dist/__tests__/SQLExpressionValidator.test.js +350 -0
  17. package/dist/__tests__/SQLExpressionValidator.test.js.map +1 -0
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/package.json +1 -1
  23. package/dist/Core.d.ts +0 -29
  24. package/dist/Core.d.ts.map +0 -1
  25. package/dist/Core.js +0 -58
  26. package/dist/Core.js.map +0 -1
  27. package/dist/generic/QueryCache.d.ts +0 -85
  28. package/dist/generic/QueryCache.d.ts.map +0 -1
  29. package/dist/generic/QueryCache.js +0 -198
  30. package/dist/generic/QueryCache.js.map +0 -1
  31. package/dist/generic/QueryCacheConfig.d.ts +0 -72
  32. package/dist/generic/QueryCacheConfig.d.ts.map +0 -1
  33. package/dist/generic/QueryCacheConfig.js +0 -3
  34. package/dist/generic/QueryCacheConfig.js.map +0 -1
  35. package/dist/generic/applicationInfo.d.ts +0 -138
  36. package/dist/generic/applicationInfo.d.ts.map +0 -1
  37. package/dist/generic/applicationInfo.js +0 -177
  38. package/dist/generic/applicationInfo.js.map +0 -1
  39. package/dist/generic/authEvaluator.d.ts +0 -25
  40. package/dist/generic/authEvaluator.d.ts.map +0 -1
  41. package/dist/generic/authEvaluator.js +0 -49
  42. package/dist/generic/authEvaluator.js.map +0 -1
  43. package/dist/generic/authTypes.d.ts +0 -193
  44. package/dist/generic/authTypes.d.ts.map +0 -1
  45. package/dist/generic/authTypes.js +0 -19
  46. package/dist/generic/authTypes.js.map +0 -1
  47. package/dist/generic/baseEngine.d.ts +0 -260
  48. package/dist/generic/baseEngine.d.ts.map +0 -1
  49. package/dist/generic/baseEngine.js +0 -510
  50. package/dist/generic/baseEngine.js.map +0 -1
  51. package/dist/generic/baseEntity.d.ts +0 -691
  52. package/dist/generic/baseEntity.d.ts.map +0 -1
  53. package/dist/generic/baseEntity.js +0 -1688
  54. package/dist/generic/baseEntity.js.map +0 -1
  55. package/dist/generic/baseInfo.d.ts +0 -24
  56. package/dist/generic/baseInfo.d.ts.map +0 -1
  57. package/dist/generic/baseInfo.js +0 -53
  58. package/dist/generic/baseInfo.js.map +0 -1
  59. package/dist/generic/compositeKey.d.ts +0 -206
  60. package/dist/generic/compositeKey.d.ts.map +0 -1
  61. package/dist/generic/compositeKey.js +0 -412
  62. package/dist/generic/compositeKey.js.map +0 -1
  63. package/dist/generic/databaseProviderBase.d.ts +0 -46
  64. package/dist/generic/databaseProviderBase.d.ts.map +0 -1
  65. package/dist/generic/databaseProviderBase.js +0 -14
  66. package/dist/generic/databaseProviderBase.js.map +0 -1
  67. package/dist/generic/entityInfo.d.ts +0 -983
  68. package/dist/generic/entityInfo.d.ts.map +0 -1
  69. package/dist/generic/entityInfo.js +0 -1401
  70. package/dist/generic/entityInfo.js.map +0 -1
  71. package/dist/generic/explorerNavigationItem.d.ts +0 -20
  72. package/dist/generic/explorerNavigationItem.d.ts.map +0 -1
  73. package/dist/generic/explorerNavigationItem.js +0 -29
  74. package/dist/generic/explorerNavigationItem.js.map +0 -1
  75. package/dist/generic/interfaces.d.ts +0 -610
  76. package/dist/generic/interfaces.d.ts.map +0 -1
  77. package/dist/generic/interfaces.js +0 -211
  78. package/dist/generic/interfaces.js.map +0 -1
  79. package/dist/generic/libraryInfo.d.ts +0 -40
  80. package/dist/generic/libraryInfo.d.ts.map +0 -1
  81. package/dist/generic/libraryInfo.js +0 -56
  82. package/dist/generic/libraryInfo.js.map +0 -1
  83. package/dist/generic/logging.d.ts +0 -179
  84. package/dist/generic/logging.d.ts.map +0 -1
  85. package/dist/generic/logging.js +0 -382
  86. package/dist/generic/logging.js.map +0 -1
  87. package/dist/generic/metadata.d.ts +0 -305
  88. package/dist/generic/metadata.d.ts.map +0 -1
  89. package/dist/generic/metadata.js +0 -454
  90. package/dist/generic/metadata.js.map +0 -1
  91. package/dist/generic/metadataUtil.d.ts +0 -8
  92. package/dist/generic/metadataUtil.d.ts.map +0 -1
  93. package/dist/generic/metadataUtil.js +0 -36
  94. package/dist/generic/metadataUtil.js.map +0 -1
  95. package/dist/generic/providerBase.d.ts +0 -546
  96. package/dist/generic/providerBase.d.ts.map +0 -1
  97. package/dist/generic/providerBase.js +0 -999
  98. package/dist/generic/providerBase.js.map +0 -1
  99. package/dist/generic/queryInfo.d.ts +0 -460
  100. package/dist/generic/queryInfo.d.ts.map +0 -1
  101. package/dist/generic/queryInfo.js +0 -633
  102. package/dist/generic/queryInfo.js.map +0 -1
  103. package/dist/generic/querySQLFilters.d.ts +0 -54
  104. package/dist/generic/querySQLFilters.d.ts.map +0 -1
  105. package/dist/generic/querySQLFilters.js +0 -84
  106. package/dist/generic/querySQLFilters.js.map +0 -1
  107. package/dist/generic/runQuery.d.ts +0 -96
  108. package/dist/generic/runQuery.d.ts.map +0 -1
  109. package/dist/generic/runQuery.js +0 -66
  110. package/dist/generic/runQuery.js.map +0 -1
  111. package/dist/generic/runQuerySQLFilterImplementations.d.ts +0 -51
  112. package/dist/generic/runQuerySQLFilterImplementations.d.ts.map +0 -1
  113. package/dist/generic/runQuerySQLFilterImplementations.js +0 -238
  114. package/dist/generic/runQuerySQLFilterImplementations.js.map +0 -1
  115. package/dist/generic/runReport.d.ts +0 -25
  116. package/dist/generic/runReport.d.ts.map +0 -1
  117. package/dist/generic/runReport.js +0 -42
  118. package/dist/generic/runReport.js.map +0 -1
  119. package/dist/generic/securityInfo.d.ts +0 -355
  120. package/dist/generic/securityInfo.d.ts.map +0 -1
  121. package/dist/generic/securityInfo.js +0 -425
  122. package/dist/generic/securityInfo.js.map +0 -1
  123. package/dist/generic/transactionGroup.d.ts +0 -184
  124. package/dist/generic/transactionGroup.d.ts.map +0 -1
  125. package/dist/generic/transactionGroup.js +0 -357
  126. package/dist/generic/transactionGroup.js.map +0 -1
  127. package/dist/generic/util.d.ts +0 -81
  128. package/dist/generic/util.d.ts.map +0 -1
  129. package/dist/generic/util.js +0 -301
  130. package/dist/generic/util.js.map +0 -1
  131. package/dist/views/runView.d.ts +0 -150
  132. package/dist/views/runView.d.ts.map +0 -1
  133. package/dist/views/runView.js +0 -100
  134. package/dist/views/runView.js.map +0 -1
  135. package/dist/views/viewInfo.d.ts +0 -121
  136. package/dist/views/viewInfo.d.ts.map +0 -1
  137. package/dist/views/viewInfo.js +0 -182
  138. package/dist/views/viewInfo.js.map +0 -1
@@ -0,0 +1,350 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { SQLExpressionValidator, DANGEROUS_SQL_KEYWORDS, FULL_QUERY_ALLOWED_KEYWORDS, ALLOWED_SQL_FUNCTIONS, } from '../SQLExpressionValidator.js';
3
+ describe('SQLExpressionValidator', () => {
4
+ let validator;
5
+ beforeEach(() => {
6
+ validator = SQLExpressionValidator.Instance;
7
+ });
8
+ describe('singleton', () => {
9
+ it('should return the same instance', () => {
10
+ const a = SQLExpressionValidator.Instance;
11
+ const b = SQLExpressionValidator.Instance;
12
+ expect(a).toBe(b);
13
+ });
14
+ });
15
+ // ---------------------------------------------------------------
16
+ // full_query context
17
+ // ---------------------------------------------------------------
18
+ describe('full_query context', () => {
19
+ const ctx = { context: 'full_query' };
20
+ describe('valid queries', () => {
21
+ it('should accept a simple SELECT', () => {
22
+ const r = validator.validate('SELECT TOP 10 * FROM Users', ctx);
23
+ expect(r.valid).toBe(true);
24
+ });
25
+ it('should accept SELECT with JOINs, WHERE, GROUP BY, ORDER BY', () => {
26
+ const sql = `
27
+ SELECT a.Name, COUNT(r.ID) AS TotalRuns
28
+ FROM __mj.vwAIAgents a
29
+ INNER JOIN __mj.vwAIAgentRuns r ON r.AgentID = a.ID
30
+ WHERE r.StartedAt >= DATEADD(DAY, -30, GETDATE())
31
+ GROUP BY a.Name
32
+ ORDER BY TotalRuns DESC
33
+ `;
34
+ const r = validator.validate(sql, ctx);
35
+ expect(r.valid).toBe(true);
36
+ });
37
+ it('should accept WITH (CTE) statement', () => {
38
+ const sql = `
39
+ WITH ActiveAgents AS (
40
+ SELECT AgentID, COUNT(*) AS RunCount
41
+ FROM __mj.vwAIAgentRuns
42
+ GROUP BY AgentID
43
+ )
44
+ SELECT a.Name, aa.RunCount
45
+ FROM __mj.vwAIAgents a
46
+ INNER JOIN ActiveAgents aa ON aa.AgentID = a.ID
47
+ `;
48
+ const r = validator.validate(sql, ctx);
49
+ expect(r.valid).toBe(true);
50
+ });
51
+ it('should accept SELECT with EXISTS subquery', () => {
52
+ const sql = `
53
+ SELECT * FROM __mj.vwUsers u
54
+ WHERE EXISTS (SELECT 1 FROM __mj.vwUserRoles ur WHERE ur.UserID = u.ID)
55
+ `;
56
+ const r = validator.validate(sql, ctx);
57
+ expect(r.valid).toBe(true);
58
+ });
59
+ it('should accept UNION queries', () => {
60
+ const sql = `
61
+ SELECT Name, 'Agent' AS Type FROM __mj.vwAIAgents
62
+ UNION ALL
63
+ SELECT Name, 'Model' AS Type FROM __mj.vwAIModels
64
+ `;
65
+ const r = validator.validate(sql, ctx);
66
+ expect(r.valid).toBe(true);
67
+ });
68
+ it('should accept INTERSECT queries', () => {
69
+ const sql = `
70
+ SELECT UserID FROM __mj.vwUserRoles WHERE RoleID = 'abc'
71
+ INTERSECT
72
+ SELECT UserID FROM __mj.vwUserRoles WHERE RoleID = 'def'
73
+ `;
74
+ const r = validator.validate(sql, ctx);
75
+ expect(r.valid).toBe(true);
76
+ });
77
+ it('should accept EXCEPT queries', () => {
78
+ const sql = `
79
+ SELECT UserID FROM __mj.vwUsers
80
+ EXCEPT
81
+ SELECT UserID FROM __mj.vwUserRoles
82
+ `;
83
+ const r = validator.validate(sql, ctx);
84
+ expect(r.valid).toBe(true);
85
+ });
86
+ it('should accept SQL with single-line comments (stripped, not rejected)', () => {
87
+ const sql = `
88
+ -- ============================================================
89
+ -- Member Event Attendance Summary
90
+ -- ============================================================
91
+ SELECT TOP 100 m.FirstName, m.LastName
92
+ FROM __mj.vwMembers m
93
+ `;
94
+ const r = validator.validate(sql, ctx);
95
+ expect(r.valid).toBe(true);
96
+ });
97
+ it('should accept SQL with block comments', () => {
98
+ const sql = `
99
+ /* Agent performance query */
100
+ SELECT a.Name FROM __mj.vwAIAgents a
101
+ `;
102
+ const r = validator.validate(sql, ctx);
103
+ expect(r.valid).toBe(true);
104
+ });
105
+ it('should accept WHERE x > ANY(...)', () => {
106
+ const sql = `
107
+ SELECT * FROM __mj.vwOrders
108
+ WHERE Total > ANY (SELECT AVG(Total) FROM __mj.vwOrders GROUP BY CustomerID)
109
+ `;
110
+ const r = validator.validate(sql, ctx);
111
+ expect(r.valid).toBe(true);
112
+ });
113
+ it('should accept WHERE x = ALL(...)', () => {
114
+ const sql = `
115
+ SELECT * FROM __mj.vwProducts
116
+ WHERE Price >= ALL (SELECT MIN(Price) FROM __mj.vwProducts GROUP BY CategoryID)
117
+ `;
118
+ const r = validator.validate(sql, ctx);
119
+ expect(r.valid).toBe(true);
120
+ });
121
+ it('should accept IIF function (uses IF keyword internally)', () => {
122
+ const sql = `SELECT IIF(Status = 'Active', 1, 0) AS IsActive FROM __mj.vwUsers`;
123
+ const r = validator.validate(sql, ctx);
124
+ expect(r.valid).toBe(true);
125
+ });
126
+ it('should accept queries with NULLIF, COALESCE, ISNULL', () => {
127
+ const sql = `SELECT COALESCE(FirstName, 'Unknown'), ISNULL(LastName, ''), NULLIF(Status, '') FROM __mj.vwUsers`;
128
+ const r = validator.validate(sql, ctx);
129
+ expect(r.valid).toBe(true);
130
+ });
131
+ it('should accept CASE WHEN expressions', () => {
132
+ const sql = `
133
+ SELECT Name,
134
+ CASE WHEN Status = 'Active' THEN 'Yes' ELSE 'No' END AS IsActive
135
+ FROM __mj.vwUsers
136
+ `;
137
+ const r = validator.validate(sql, ctx);
138
+ expect(r.valid).toBe(true);
139
+ });
140
+ });
141
+ describe('rejected queries', () => {
142
+ it('should reject INSERT statement', () => {
143
+ const r = validator.validate("INSERT INTO Users (Name) VALUES ('test')", ctx);
144
+ expect(r.valid).toBe(false);
145
+ expect(r.trigger).toBe('INSERT');
146
+ });
147
+ it('should reject UPDATE statement', () => {
148
+ const r = validator.validate("UPDATE Users SET Name = 'test'", ctx);
149
+ expect(r.valid).toBe(false);
150
+ expect(r.trigger).toBe('UPDATE');
151
+ });
152
+ it('should reject DELETE statement', () => {
153
+ const r = validator.validate('DELETE FROM Users WHERE ID = 1', ctx);
154
+ expect(r.valid).toBe(false);
155
+ expect(r.trigger).toBe('DELETE');
156
+ });
157
+ it('should reject DROP TABLE', () => {
158
+ const r = validator.validate('DROP TABLE Users', ctx);
159
+ expect(r.valid).toBe(false);
160
+ expect(r.trigger).toBe('DROP');
161
+ });
162
+ it('should reject TRUNCATE', () => {
163
+ const r = validator.validate('TRUNCATE TABLE Users', ctx);
164
+ expect(r.valid).toBe(false);
165
+ expect(r.trigger).toBe('TRUNCATE');
166
+ });
167
+ it('should reject EXEC', () => {
168
+ const r = validator.validate('EXEC sp_help', ctx);
169
+ expect(r.valid).toBe(false);
170
+ expect(r.trigger).toBe('EXEC');
171
+ });
172
+ it('should reject EXECUTE', () => {
173
+ const r = validator.validate("EXECUTE sp_executesql N'SELECT 1'", ctx);
174
+ expect(r.valid).toBe(false);
175
+ expect(r.trigger).toBe('EXECUTE');
176
+ });
177
+ it('should reject statements with semicolons', () => {
178
+ const r = validator.validate('SELECT 1; DROP TABLE Users', ctx);
179
+ expect(r.valid).toBe(false);
180
+ // DROP is detected before semicolon in the keyword scan
181
+ expect(r.trigger).toBe('DROP');
182
+ });
183
+ it('should reject query not starting with SELECT or WITH', () => {
184
+ const r = validator.validate('CREATE TABLE Foo (ID INT)', ctx);
185
+ expect(r.valid).toBe(false);
186
+ });
187
+ it('should reject WAITFOR DELAY', () => {
188
+ const r = validator.validate("WAITFOR DELAY '00:00:05'", ctx);
189
+ expect(r.valid).toBe(false);
190
+ expect(r.trigger).toBe('WAITFOR');
191
+ });
192
+ it('should reject OPENROWSET', () => {
193
+ const r = validator.validate("SELECT * FROM OPENROWSET('SQLNCLI', 'Server=hack;')", ctx);
194
+ expect(r.valid).toBe(false);
195
+ expect(r.trigger).toBe('OPENROWSET');
196
+ });
197
+ it('should reject GRANT', () => {
198
+ const r = validator.validate('GRANT SELECT ON Users TO public', ctx);
199
+ expect(r.valid).toBe(false);
200
+ expect(r.trigger).toBe('GRANT');
201
+ });
202
+ it('should reject SHUTDOWN', () => {
203
+ const r = validator.validate('SHUTDOWN', ctx);
204
+ expect(r.valid).toBe(false);
205
+ expect(r.trigger).toBe('SHUTDOWN');
206
+ });
207
+ });
208
+ });
209
+ // ---------------------------------------------------------------
210
+ // validateFullQuery convenience method
211
+ // ---------------------------------------------------------------
212
+ describe('validateFullQuery', () => {
213
+ it('should pass valid SELECT', () => {
214
+ const r = validator.validateFullQuery('SELECT 1 AS One');
215
+ expect(r.valid).toBe(true);
216
+ });
217
+ it('should pass valid CTE', () => {
218
+ const r = validator.validateFullQuery('WITH cte AS (SELECT 1) SELECT * FROM cte');
219
+ expect(r.valid).toBe(true);
220
+ });
221
+ it('should fail on mutation', () => {
222
+ const r = validator.validateFullQuery("DELETE FROM Users");
223
+ expect(r.valid).toBe(false);
224
+ });
225
+ it('should fail on empty string', () => {
226
+ const r = validator.validateFullQuery('');
227
+ expect(r.valid).toBe(false);
228
+ });
229
+ it('should normalize literal \\n sequences and pass SQL with comment header', () => {
230
+ // Agent-generated SQL arrives with literal \n instead of real newlines
231
+ const sql = '-- Header Comment\\nSELECT TOP 10 * FROM Users\\nWHERE Status = \'Active\'';
232
+ const r = validator.validateFullQuery(sql);
233
+ expect(r.valid).toBe(true);
234
+ });
235
+ it('should normalize literal \\r\\n sequences', () => {
236
+ const sql = '-- Header\\r\\nSELECT 1 AS One';
237
+ const r = validator.validateFullQuery(sql);
238
+ expect(r.valid).toBe(true);
239
+ });
240
+ it('should still reject dangerous queries after normalization', () => {
241
+ const sql = '-- Innocent header\\nDELETE FROM Users';
242
+ const r = validator.validateFullQuery(sql);
243
+ expect(r.valid).toBe(false);
244
+ });
245
+ });
246
+ // ---------------------------------------------------------------
247
+ // Existing contexts (where_clause, aggregate, etc.)
248
+ // ---------------------------------------------------------------
249
+ describe('where_clause context', () => {
250
+ it('should accept simple field comparison', () => {
251
+ const r = validator.validate("Status = 'Active'", { context: 'where_clause' });
252
+ expect(r.valid).toBe(true);
253
+ });
254
+ it('should accept LIKE expression', () => {
255
+ const r = validator.validate("Name LIKE '%test%'", { context: 'where_clause' });
256
+ expect(r.valid).toBe(true);
257
+ });
258
+ it('should accept BETWEEN', () => {
259
+ const r = validator.validate("Age BETWEEN 18 AND 65", { context: 'where_clause' });
260
+ expect(r.valid).toBe(true);
261
+ });
262
+ it('should reject SELECT (subquery) by default', () => {
263
+ const r = validator.validate("ID IN (SELECT ID FROM Users)", { context: 'where_clause' });
264
+ expect(r.valid).toBe(false);
265
+ expect(r.trigger).toBe('SELECT');
266
+ });
267
+ it('should allow SELECT when allowSubqueries is true', () => {
268
+ const r = validator.validate("ID IN (SELECT ID FROM Users)", { context: 'where_clause', allowSubqueries: true });
269
+ expect(r.valid).toBe(true);
270
+ });
271
+ it('should reject comments', () => {
272
+ const r = validator.validate("Status = 'Active' -- comment", { context: 'where_clause' });
273
+ expect(r.valid).toBe(false);
274
+ expect(r.trigger).toBe('comment');
275
+ });
276
+ it('should reject semicolons', () => {
277
+ const r = validator.validate("1=1; DROP TABLE Users", { context: 'where_clause' });
278
+ expect(r.valid).toBe(false);
279
+ // DROP is detected before semicolon in the keyword scan
280
+ expect(r.trigger).toBe('DROP');
281
+ });
282
+ });
283
+ describe('aggregate context', () => {
284
+ it('should accept COUNT expression', () => {
285
+ const r = validator.validate('COUNT(ID)', { context: 'aggregate' });
286
+ expect(r.valid).toBe(true);
287
+ });
288
+ it('should accept SUM expression', () => {
289
+ const r = validator.validate('SUM(OrderTotal)', { context: 'aggregate' });
290
+ expect(r.valid).toBe(true);
291
+ });
292
+ it('should reject non-aggregate expression', () => {
293
+ const r = validator.validate('FieldName', { context: 'aggregate' });
294
+ expect(r.valid).toBe(false);
295
+ expect(r.error).toContain('aggregate function');
296
+ });
297
+ it('should allow non-aggregate when requireAggregate is false', () => {
298
+ const r = validator.validate('FieldName', { context: 'aggregate', requireAggregate: false });
299
+ expect(r.valid).toBe(true);
300
+ });
301
+ });
302
+ describe('order_by context', () => {
303
+ it('should accept simple field name', () => {
304
+ const r = validator.validate('Name ASC', { context: 'order_by' });
305
+ expect(r.valid).toBe(true);
306
+ });
307
+ it('should accept DESC ordering', () => {
308
+ const r = validator.validate('CreatedAt DESC', { context: 'order_by' });
309
+ expect(r.valid).toBe(true);
310
+ });
311
+ });
312
+ // ---------------------------------------------------------------
313
+ // String literal handling (false positive prevention)
314
+ // ---------------------------------------------------------------
315
+ describe('string literal handling', () => {
316
+ it('should not flag keywords inside string literals', () => {
317
+ const r = validator.validate("SELECT * FROM __mj.vwUsers WHERE Description = 'This will DROP the ball'", { context: 'full_query' });
318
+ // The word DROP is inside a string literal, so it should be stripped before checking
319
+ expect(r.valid).toBe(true);
320
+ });
321
+ it('should not flag INSERT inside a string literal', () => {
322
+ const r = validator.validate("SELECT * FROM __mj.vwLogs WHERE Message = 'INSERT completed successfully'", { context: 'full_query' });
323
+ expect(r.valid).toBe(true);
324
+ });
325
+ });
326
+ // ---------------------------------------------------------------
327
+ // Constants exports
328
+ // ---------------------------------------------------------------
329
+ describe('exported constants', () => {
330
+ it('DANGEROUS_SQL_KEYWORDS should include key mutation keywords', () => {
331
+ expect(DANGEROUS_SQL_KEYWORDS).toContain('INSERT');
332
+ expect(DANGEROUS_SQL_KEYWORDS).toContain('UPDATE');
333
+ expect(DANGEROUS_SQL_KEYWORDS).toContain('DELETE');
334
+ expect(DANGEROUS_SQL_KEYWORDS).toContain('DROP');
335
+ expect(DANGEROUS_SQL_KEYWORDS).toContain('EXEC');
336
+ });
337
+ it('FULL_QUERY_ALLOWED_KEYWORDS should include set operations', () => {
338
+ expect(FULL_QUERY_ALLOWED_KEYWORDS).toContain('UNION');
339
+ expect(FULL_QUERY_ALLOWED_KEYWORDS).toContain('EXISTS');
340
+ expect(FULL_QUERY_ALLOWED_KEYWORDS).toContain('ANY');
341
+ expect(FULL_QUERY_ALLOWED_KEYWORDS).toContain('ALL');
342
+ });
343
+ it('ALLOWED_SQL_FUNCTIONS should include aggregate functions', () => {
344
+ expect(ALLOWED_SQL_FUNCTIONS.aggregates).toContain('COUNT');
345
+ expect(ALLOWED_SQL_FUNCTIONS.aggregates).toContain('SUM');
346
+ expect(ALLOWED_SQL_FUNCTIONS.aggregates).toContain('AVG');
347
+ });
348
+ });
349
+ });
350
+ //# sourceMappingURL=SQLExpressionValidator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLExpressionValidator.test.js","sourceRoot":"","sources":["../../src/__tests__/SQLExpressionValidator.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -14,4 +14,5 @@ export * from './warningManager.js';
14
14
  export * from './EncryptionUtils.js';
15
15
  export * from './Global.js';
16
16
  export * from './RegisterClass.js';
17
+ export * from './DynamicPackageLoader.js';
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AAMjC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AAMjC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA"}
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ export * from './EncryptionUtils.js';
18
18
  // Export the main classes
19
19
  export * from './Global.js';
20
20
  export * from './RegisterClass.js';
21
+ export * from './DynamicPackageLoader.js';
21
22
  // NOTE: RegisterForStartup has moved to @memberjunction/core
22
23
  // Import from there instead of here
23
24
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AAEjC,2DAA2D;AAC3D,oCAAoC;AAEpC,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAE/B,6DAA6D;AAC7D,oCAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AAEjC,2DAA2D;AAC3D,oCAAoC;AAEpC,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AAEtC,6DAA6D;AAC7D,oCAAoC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/global",
3
3
  "type": "module",
4
- "version": "5.0.0",
4
+ "version": "5.2.0",
5
5
  "description": "MemberJunction: Global Object - Needed for ALL other MJ components",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
package/dist/Core.d.ts DELETED
@@ -1,29 +0,0 @@
1
- export * from './generic/metadata.js';
2
- export * from './generic/baseInfo.js';
3
- export * from './generic/baseEngine.js';
4
- export * from './views/runView.js';
5
- export * from './generic/runReport.js';
6
- export * from './generic/runQuery.js';
7
- export * from './generic/interfaces.js';
8
- export * from './generic/baseEntity.js';
9
- export * from './generic/applicationInfo.js';
10
- export * from './generic/providerBase.js';
11
- export * from './generic/entityInfo.js';
12
- export * from './generic/securityInfo.js';
13
- export * from './generic/transactionGroup.js';
14
- export * from './generic/util.js';
15
- export * from './generic/logging.js';
16
- export * from './generic/queryInfo.js';
17
- export * from './generic/querySQLFilters.js';
18
- export * from './generic/runQuerySQLFilterImplementations.js';
19
- export * from './generic/libraryInfo.js';
20
- export * from './generic/QueryCacheConfig.js';
21
- export * from './generic/QueryCache.js';
22
- export * from './generic/explorerNavigationItem.js';
23
- export * from './generic/compositeKey.js';
24
- export * from './generic/authEvaluator.js';
25
- export * from './generic/metadataUtil.js';
26
- export * from './generic/authTypes.js';
27
- export * from './generic/databaseProviderBase.js';
28
- export declare function SetProvider(provider: any): void;
29
- //# sourceMappingURL=Core.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Core.d.ts","sourceRoot":"","sources":["../src/Core.ts"],"names":[],"mappings":"AAMA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,gCAAgC,CAAC;AAE/C,wBAAgB,WAAW,CAAC,QAAQ,KAAA,QAMnC"}
package/dist/Core.js DELETED
@@ -1,58 +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
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.SetProvider = void 0;
18
- const baseEntity_1 = require("./generic/baseEntity.js");
19
- const metadata_1 = require("./generic/metadata.js");
20
- const runQuery_1 = require("./generic/runQuery.js");
21
- const runReport_1 = require("./generic/runReport.js");
22
- const runView_1 = require("./views/runView.js");
23
- __exportStar(require("./generic/metadata.js"), exports);
24
- __exportStar(require("./generic/baseInfo.js"), exports);
25
- __exportStar(require("./generic/baseEngine.js"), exports);
26
- __exportStar(require("./views/runView.js"), exports);
27
- __exportStar(require("./generic/runReport.js"), exports);
28
- __exportStar(require("./generic/runQuery.js"), exports);
29
- __exportStar(require("./generic/interfaces.js"), exports);
30
- __exportStar(require("./generic/baseEntity.js"), exports);
31
- __exportStar(require("./generic/applicationInfo.js"), exports);
32
- __exportStar(require("./generic/providerBase.js"), exports);
33
- __exportStar(require("./generic/entityInfo.js"), exports);
34
- __exportStar(require("./generic/securityInfo.js"), exports);
35
- __exportStar(require("./generic/transactionGroup.js"), exports);
36
- __exportStar(require("./generic/util.js"), exports);
37
- __exportStar(require("./generic/logging.js"), exports);
38
- __exportStar(require("./generic/queryInfo.js"), exports);
39
- __exportStar(require("./generic/querySQLFilters.js"), exports);
40
- __exportStar(require("./generic/runQuerySQLFilterImplementations.js"), exports);
41
- __exportStar(require("./generic/libraryInfo.js"), exports);
42
- __exportStar(require("./generic/QueryCacheConfig.js"), exports);
43
- __exportStar(require("./generic/QueryCache.js"), exports);
44
- __exportStar(require("./generic/explorerNavigationItem.js"), exports);
45
- __exportStar(require("./generic/compositeKey.js"), exports);
46
- __exportStar(require("./generic/authEvaluator.js"), exports);
47
- __exportStar(require("./generic/metadataUtil.js"), exports);
48
- __exportStar(require("./generic/authTypes.js"), exports);
49
- __exportStar(require("./generic/databaseProviderBase.js"), exports);
50
- function SetProvider(provider) {
51
- metadata_1.Metadata.Provider = provider;
52
- baseEntity_1.BaseEntity.Provider = provider;
53
- runView_1.RunView.Provider = provider;
54
- runReport_1.RunReport.Provider = provider;
55
- runQuery_1.RunQuery.Provider = provider;
56
- }
57
- exports.SetProvider = SetProvider;
58
- //# sourceMappingURL=Core.js.map
package/dist/Core.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Core.js","sourceRoot":"","sources":["../src/Core.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAkD;AAClD,iDAA8C;AAC9C,iDAA8C;AAC9C,mDAAgD;AAChD,6CAA0C;AAE1C,qDAAmC;AACnC,qDAAmC;AACnC,uDAAqC;AACrC,kDAAgC;AAChC,sDAAoC;AACpC,qDAAmC;AACnC,uDAAqC;AACrC,uDAAqC;AACrC,4DAA0C;AAC1C,yDAAuC;AACvC,uDAAqC;AACrC,yDAAuC;AACvC,6DAA2C;AAC3C,iDAA+B;AAC/B,oDAAkC;AAClC,sDAAoC;AACpC,4DAA0C;AAC1C,6EAA2D;AAC3D,wDAAsC;AACtC,6DAA2C;AAC3C,uDAAqC;AACrC,mEAAiD;AACjD,yDAAuC;AACvC,0DAAwC;AACxC,yDAAuC;AACvC,sDAAoC;AAEpC,iEAA+C;AAE/C,SAAgB,WAAW,CAAC,QAAQ;IAClC,mBAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,uBAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/B,iBAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,qBAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,mBAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,CAAC;AAND,kCAMC"}
@@ -1,85 +0,0 @@
1
- import { QueryCacheConfig, QueryCacheEntry } from './QueryCacheConfig.js';
2
- /**
3
- * LRU (Least Recently Used) cache implementation for query results with TTL support.
4
- * This cache provides efficient storage and retrieval of query results with automatic
5
- * expiration based on time-to-live settings and size limits.
6
- */
7
- export declare class QueryCache {
8
- private cache;
9
- private accessOrder;
10
- private readonly DEFAULT_MAX_SIZE;
11
- private readonly DEFAULT_TTL_MINUTES;
12
- /**
13
- * Performance statistics for cache monitoring
14
- */
15
- private stats;
16
- /**
17
- * Generate a deterministic cache key from query ID and parameters.
18
- * The key is created by sorting parameter keys and creating a stable JSON representation.
19
- *
20
- * @param queryId - The unique query identifier
21
- * @param params - The query parameters
22
- * @returns A stable cache key string
23
- */
24
- private getCacheKey;
25
- /**
26
- * Get cached results if available and not expired.
27
- * Updates access order for LRU tracking and increments hit counter.
28
- *
29
- * @param queryId - The query identifier
30
- * @param params - The query parameters
31
- * @param config - Cache configuration settings
32
- * @returns The cached entry if valid, null otherwise
33
- */
34
- get(queryId: string, params: Record<string, any>, config: QueryCacheConfig): QueryCacheEntry | null;
35
- /**
36
- * Cache query results with TTL and LRU eviction.
37
- * Evicts least recently used entries when at capacity.
38
- *
39
- * @param queryId - The query identifier
40
- * @param params - The query parameters
41
- * @param results - The query results to cache
42
- * @param config - Cache configuration settings
43
- */
44
- set(queryId: string, params: Record<string, any>, results: any[], config: QueryCacheConfig): void;
45
- /**
46
- * Clear cache for specific query or all queries.
47
- *
48
- * @param queryId - Optional query ID to clear specific query cache
49
- */
50
- clear(queryId?: string): void;
51
- /**
52
- * Update the access order for LRU tracking.
53
- * Moves the accessed key to the end of the array (most recently used).
54
- *
55
- * @param key - The cache key that was accessed
56
- */
57
- private updateAccessOrder;
58
- /**
59
- * Remove a key from the access order tracking.
60
- *
61
- * @param key - The cache key to remove
62
- */
63
- private removeFromAccessOrder;
64
- /**
65
- * Get cache statistics for monitoring and debugging.
66
- *
67
- * @returns Object containing cache performance metrics
68
- */
69
- getStats(): {
70
- size: number;
71
- hits: number;
72
- misses: number;
73
- hitRate: number;
74
- evictions: number;
75
- expirations: number;
76
- };
77
- /**
78
- * Clean up expired entries from the cache.
79
- * This can be called periodically to free up memory.
80
- *
81
- * @returns Number of expired entries removed
82
- */
83
- cleanupExpired(): number;
84
- }
85
- //# sourceMappingURL=QueryCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QueryCache.d.ts","sourceRoot":"","sources":["../../src/generic/QueryCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGvE;;;;GAIG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAM;IAE1C;;OAEG;IACH,OAAO,CAAC,KAAK,CAKX;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;;;;OAQG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI;IA+BnG;;;;;;;;OAQG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;IA6BjG;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAmB7B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;OAIG;IACH,QAAQ,IAAI;QACR,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACvB;IAcD;;;;;OAKG;IACH,cAAc,IAAI,MAAM;CAmB3B"}