@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
package/README.md CHANGED
@@ -324,7 +324,9 @@ Supports comparisons (`==`, `!=`, `<`, `>`, `<=`, `>=`), logical operators (`&&`
324
324
 
325
325
  ### SQLExpressionValidator
326
326
 
327
- Validates user-provided SQL expressions against injection attacks. Provides context-aware validation (WHERE clauses, ORDER BY, aggregates, field references) with an allowlist of safe SQL functions.
327
+ Validates user-provided SQL expressions and full queries against injection attacks. Provides context-aware validation (WHERE clauses, ORDER BY, aggregates, field references, full queries) with an allowlist of safe SQL functions.
328
+
329
+ **Expression validation** (WHERE clauses, aggregates, ORDER BY):
328
330
 
329
331
  ```typescript
330
332
  import { SQLExpressionValidator } from '@memberjunction/global';
@@ -342,9 +344,22 @@ const bad = validator.validate("Name = 'test'; 1=1", {
342
344
  context: 'where_clause'
343
345
  });
344
346
  // bad.valid === false
345
- // bad.error === "Semicolons are not allowed in SQL expressions"
346
347
  ```
347
348
 
349
+ **Full query validation** (ad-hoc SELECT/WITH statements):
350
+
351
+ ```typescript
352
+ // Validate a complete SQL query — allows SELECT, JOINs, subqueries, set operations, comments
353
+ const result = validator.validateFullQuery('SELECT TOP 10 * FROM __mj.vwUsers WHERE IsActive = 1');
354
+ // result.valid === true
355
+
356
+ // Mutations and dangerous operations are blocked
357
+ const bad = validator.validateFullQuery("INSERT INTO Users (Name) VALUES ('hacked')");
358
+ // bad.valid === false, bad.trigger === 'INSERT'
359
+ ```
360
+
361
+ The `full_query` context allows keywords that are legitimate in SELECT statements (EXISTS, ANY, ALL, UNION, INTERSECT, EXCEPT, IF) while still blocking all mutations (INSERT, UPDATE, DELETE, DROP, etc.), dangerous operations (EXEC, OPENROWSET, WAITFOR), and multi-statement injection (semicolons).
362
+
348
363
  ### ClassUtils -- Reflection Helpers
349
364
 
350
365
  Functions for introspecting class hierarchies at runtime.
@@ -589,7 +604,8 @@ function RegisterClass(
589
604
  | Method | Returns | Description |
590
605
  |---|---|---|
591
606
  | `Instance` (static) | `SQLExpressionValidator` | Singleton accessor |
592
- | `validate(expression, options)` | `SQLValidationResult` | Validate a SQL expression |
607
+ | `validate(expression, options)` | `SQLValidationResult` | Validate a SQL expression with context-specific rules |
608
+ | `validateFullQuery(sql)` | `SQLValidationResult` | Validate a full SELECT/WITH query (convenience for `validate(sql, { context: 'full_query' })`) |
593
609
 
594
610
  ### WarningManager
595
611
 
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Dynamic Package Loading
3
+ *
4
+ * Provides runtime dynamic import capabilities for MJ Open App packages.
5
+ * Used by MJAPI startup to load server-side app bootstrap packages that
6
+ * register their classes with the ClassFactory via @RegisterClass decorators.
7
+ */
8
+ /**
9
+ * Describes a package to be dynamically imported at runtime.
10
+ * Typically read from the `dynamicPackages.server` section of mj.config.cjs.
11
+ */
12
+ export interface DynamicPackageLoad {
13
+ /** npm package name to dynamically import */
14
+ PackageName: string;
15
+ /** Named export to call after import (e.g., 'LoadAcmeCRMServer') */
16
+ StartupExport: string;
17
+ /** Open App name this package belongs to (for tracking) */
18
+ AppName: string;
19
+ /** Whether this package should be loaded. Allows disabling without removing. */
20
+ Enabled: boolean;
21
+ }
22
+ /**
23
+ * Result of attempting to dynamically load a single package.
24
+ */
25
+ export interface DynamicLoadResult {
26
+ /** The package that was loaded (or failed to load) */
27
+ PackageName: string;
28
+ /** Whether the package was loaded and its startup export called successfully */
29
+ Success: boolean;
30
+ /** Error message if the load failed */
31
+ Error?: string;
32
+ }
33
+ /**
34
+ * Utility class for dynamically loading npm packages at runtime.
35
+ *
36
+ * Used during MJAPI startup to load Open App server-side bootstrap packages.
37
+ * Each package is loaded in isolation — a failure in one package does not
38
+ * prevent others from loading.
39
+ */
40
+ export declare class DynamicPackageLoader {
41
+ /**
42
+ * Loads all enabled dynamic packages in parallel for better performance.
43
+ * For each package:
44
+ * 1. Skips if `Enabled` is false
45
+ * 2. Dynamically imports the package via `await import()`
46
+ * 3. Calls the named `StartupExport` function if it exists
47
+ * 4. Records success or failure
48
+ *
49
+ * Errors are isolated per-package — a broken package does not crash the server.
50
+ * All enabled packages are loaded concurrently using Promise.all().
51
+ *
52
+ * @param packages - Array of packages to load
53
+ * @returns Array of results indicating success/failure for each package
54
+ */
55
+ static LoadPackages(packages: DynamicPackageLoad[]): Promise<DynamicLoadResult[]>;
56
+ /**
57
+ * Attempts to dynamically import a single package and call its startup export.
58
+ */
59
+ private static LoadSinglePackage;
60
+ }
61
+ //# sourceMappingURL=DynamicPackageLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicPackageLoader.d.ts","sourceRoot":"","sources":["../src/DynamicPackageLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IAEpB,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAEhB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;IAEjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAC7B;;;;;;;;;;;;;OAaG;WACU,YAAY,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKvF;;OAEG;mBACkB,iBAAiB;CAqBzC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Dynamic Package Loading
3
+ *
4
+ * Provides runtime dynamic import capabilities for MJ Open App packages.
5
+ * Used by MJAPI startup to load server-side app bootstrap packages that
6
+ * register their classes with the ClassFactory via @RegisterClass decorators.
7
+ */
8
+ /**
9
+ * Utility class for dynamically loading npm packages at runtime.
10
+ *
11
+ * Used during MJAPI startup to load Open App server-side bootstrap packages.
12
+ * Each package is loaded in isolation — a failure in one package does not
13
+ * prevent others from loading.
14
+ */
15
+ export class DynamicPackageLoader {
16
+ /**
17
+ * Loads all enabled dynamic packages in parallel for better performance.
18
+ * For each package:
19
+ * 1. Skips if `Enabled` is false
20
+ * 2. Dynamically imports the package via `await import()`
21
+ * 3. Calls the named `StartupExport` function if it exists
22
+ * 4. Records success or failure
23
+ *
24
+ * Errors are isolated per-package — a broken package does not crash the server.
25
+ * All enabled packages are loaded concurrently using Promise.all().
26
+ *
27
+ * @param packages - Array of packages to load
28
+ * @returns Array of results indicating success/failure for each package
29
+ */
30
+ static async LoadPackages(packages) {
31
+ const enabledPackages = packages.filter(p => p.Enabled);
32
+ return Promise.all(enabledPackages.map(pkg => DynamicPackageLoader.LoadSinglePackage(pkg)));
33
+ }
34
+ /**
35
+ * Attempts to dynamically import a single package and call its startup export.
36
+ */
37
+ static async LoadSinglePackage(pkg) {
38
+ try {
39
+ const module = await import(pkg.PackageName);
40
+ if (pkg.StartupExport && typeof module[pkg.StartupExport] === 'function') {
41
+ module[pkg.StartupExport]();
42
+ }
43
+ return { PackageName: pkg.PackageName, Success: true };
44
+ }
45
+ catch (error) {
46
+ const errorMessage = error instanceof Error ? error.message : String(error);
47
+ console.error(`Failed to load dynamic package ${pkg.PackageName}: ${errorMessage}`);
48
+ return {
49
+ PackageName: pkg.PackageName,
50
+ Success: false,
51
+ Error: errorMessage
52
+ };
53
+ }
54
+ }
55
+ }
56
+ //# sourceMappingURL=DynamicPackageLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicPackageLoader.js","sourceRoot":"","sources":["../src/DynamicPackageLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkCH;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IAC7B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAA8B;QACpD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAuB;QAC1D,IAAI,CAAC;YACD,MAAM,MAAM,GAA4B,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAA4B,CAAC;YAEjG,IAAI,GAAG,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,UAAU,EAAE,CAAC;gBACtE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAgB,EAAE,CAAC;YAChD,CAAC;YAED,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3D,CAAC;QACD,OAAO,KAAc,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC,CAAC;YAEpF,OAAO;gBACH,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;aACtB,CAAC;QACN,CAAC;IACL,CAAC;CACJ"}
@@ -1,8 +1,9 @@
1
1
  /**
2
- * @fileoverview Unified SQL Expression Validation
2
+ * @fileoverview Unified SQL Expression and Query Validation
3
3
  *
4
- * Central utility for validating user-provided SQL expressions against injection attacks.
5
- * Used by RunView, aggregates, smart filters, and any other feature accepting SQL input.
4
+ * Central utility for validating user-provided SQL expressions and full queries
5
+ * against injection attacks. Used by RunView, aggregates, smart filters, ad-hoc
6
+ * query execution, and any other feature accepting SQL input.
6
7
  *
7
8
  * Located in MJGlobal (lowest-level package) so all packages can use it.
8
9
  *
@@ -12,6 +13,11 @@
12
13
  * Dangerous SQL keywords that are never allowed in user-provided expressions
13
14
  */
14
15
  export declare const DANGEROUS_SQL_KEYWORDS: readonly ["DROP", "CREATE", "ALTER", "TRUNCATE", "RENAME", "INSERT", "UPDATE", "DELETE", "MERGE", "REPLACE", "GRANT", "REVOKE", "DENY", "EXEC", "EXECUTE", "CALL", "PROCEDURE", "FUNCTION", "BEGIN", "COMMIT", "ROLLBACK", "SAVEPOINT", "USE", "DATABASE", "SCHEMA", "IF", "WHILE", "LOOP", "FOR", "GOTO", "UNION", "INTERSECT", "EXCEPT", "EXISTS", "ANY", "ALL", "SOME", "BULK", "OPENROWSET", "OPENDATASOURCE", "OPENQUERY", "XP_", "SP_", "DYNAMIC", "PREPARE", "DEALLOCATE", "WAITFOR", "DELAY", "SLEEP", "SHUTDOWN", "RECONFIGURE"];
16
+ /**
17
+ * Keywords from DANGEROUS_SQL_KEYWORDS that are legitimate in full SELECT queries.
18
+ * These are only unblocked when context is 'full_query'.
19
+ */
20
+ export declare const FULL_QUERY_ALLOWED_KEYWORDS: readonly ["EXISTS", "ANY", "ALL", "SOME", "UNION", "INTERSECT", "EXCEPT", "IF"];
15
21
  /**
16
22
  * Safe SQL functions allowed in expressions, organized by category
17
23
  */
@@ -29,7 +35,7 @@ export declare const ALLOWED_SQL_FUNCTIONS: {
29
35
  /**
30
36
  * Validation context - affects what's allowed
31
37
  */
32
- export type SQLValidationContext = 'where_clause' | 'order_by' | 'aggregate' | 'field_reference';
38
+ export type SQLValidationContext = 'where_clause' | 'order_by' | 'aggregate' | 'field_reference' | 'full_query';
33
39
  /**
34
40
  * Validation result with detailed error information
35
41
  */
@@ -117,9 +123,30 @@ export declare class SQLExpressionValidator {
117
123
  * Validate field references exist in entity (lenient mode - just for logging)
118
124
  */
119
125
  private checkFieldReferences;
126
+ /**
127
+ * Strip SQL comments (single-line -- and multi-line block comments) from a query.
128
+ * Used by full_query context to allow agent-generated header comments
129
+ * without triggering the comment injection check.
130
+ */
131
+ private stripSQLComments;
120
132
  /**
121
133
  * Escape special regex characters in a string
122
134
  */
123
135
  private escapeRegex;
136
+ /**
137
+ * Normalize literal escape sequences in SQL strings.
138
+ * Agent-generated SQL sometimes arrives with literal \n, \r, \t sequences
139
+ * (backslash + letter) instead of actual whitespace characters. This happens
140
+ * when JSON is double-escaped or the SQL passes through a transport layer
141
+ * that doesn't interpret escape sequences. Without normalization, comment
142
+ * stripping fails because the regex expects real newlines.
143
+ */
144
+ private normalizeSQLWhitespace;
145
+ /**
146
+ * Validate a full SQL query (SELECT or WITH/CTE statement).
147
+ * Blocks mutations, dangerous operations, and multi-statement injection.
148
+ * Allows SELECT, subqueries, set operations, and SQL comments.
149
+ */
150
+ validateFullQuery(sql: string): SQLValidationResult;
124
151
  }
125
152
  //# sourceMappingURL=SQLExpressionValidator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SQLExpressionValidator.d.ts","sourceRoot":"","sources":["../src/SQLExpressionValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB,2gBA0CzB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;CA2BxB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,cAAc,GACd,UAAU,GACV,WAAW,GACX,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,OAAO,EAAE,oBAAoB,CAAC;IAE9B,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,wHAAwH;IACxH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,iFAAiF;IACjF,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAyB;IAEjD,OAAO;IAEP;;OAEG;IACH,WAAkB,QAAQ,IAAI,sBAAsB,CAKnD;IAED;;;;;;OAMG;IACI,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,mBAAmB;IAiCvF;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgD9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;OAEG;IACH,OAAO,CAAC,WAAW;CAGpB"}
1
+ {"version":3,"file":"SQLExpressionValidator.d.ts","sourceRoot":"","sources":["../src/SQLExpressionValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB,2gBA0CzB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,2BAA2B,iFAS9B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;CA2BxB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,cAAc,GACd,UAAU,GACV,WAAW,GACX,iBAAiB,GACjB,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,OAAO,EAAE,oBAAoB,CAAC;IAE9B,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,wHAAwH;IACxH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,iFAAiF;IACjF,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAyB;IAEjD,OAAO;IAEP;;OAEG;IACH,WAAkB,QAAQ,IAAI,sBAAsB,CAKnD;IAED;;;;;;OAMG;IACI,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,mBAAmB;IAoCvF;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoE9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;;;OAIG;IACI,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB;CAO3D"}
@@ -1,8 +1,9 @@
1
1
  /**
2
- * @fileoverview Unified SQL Expression Validation
2
+ * @fileoverview Unified SQL Expression and Query Validation
3
3
  *
4
- * Central utility for validating user-provided SQL expressions against injection attacks.
5
- * Used by RunView, aggregates, smart filters, and any other feature accepting SQL input.
4
+ * Central utility for validating user-provided SQL expressions and full queries
5
+ * against injection attacks. Used by RunView, aggregates, smart filters, ad-hoc
6
+ * query execution, and any other feature accepting SQL input.
6
7
  *
7
8
  * Located in MJGlobal (lowest-level package) so all packages can use it.
8
9
  *
@@ -41,6 +42,18 @@ export const DANGEROUS_SQL_KEYWORDS = [
41
42
  // System operations
42
43
  'SHUTDOWN', 'RECONFIGURE'
43
44
  ];
45
+ /**
46
+ * Keywords from DANGEROUS_SQL_KEYWORDS that are legitimate in full SELECT queries.
47
+ * These are only unblocked when context is 'full_query'.
48
+ */
49
+ export const FULL_QUERY_ALLOWED_KEYWORDS = [
50
+ // Subquery operators — valid in WHERE EXISTS(...), x > ANY(...)
51
+ 'EXISTS', 'ANY', 'ALL', 'SOME',
52
+ // Set operations — valid for UNION/INTERSECT/EXCEPT queries
53
+ 'UNION', 'INTERSECT', 'EXCEPT',
54
+ // IIF() uses IF internally, CASE WHEN patterns are common
55
+ 'IF',
56
+ ];
44
57
  /**
45
58
  * Safe SQL functions allowed in expressions, organized by category
46
59
  */
@@ -117,10 +130,13 @@ export class SQLExpressionValidator {
117
130
  const dangerCheck = this.checkDangerousPatterns(withoutStrings, options);
118
131
  if (!dangerCheck.valid)
119
132
  return dangerCheck;
120
- // Step 3: Validate function names are in allowlist
121
- const functionCheck = this.checkFunctionNames(withoutStrings, options);
122
- if (!functionCheck.valid)
123
- return functionCheck;
133
+ // Step 3: Validate function names are in allowlist (skip for full queries —
134
+ // the function allowlist is designed for expression fragments, not full SQL statements)
135
+ if (options.context !== 'full_query') {
136
+ const functionCheck = this.checkFunctionNames(withoutStrings, options);
137
+ if (!functionCheck.valid)
138
+ return functionCheck;
139
+ }
124
140
  // Step 4: Context-specific validation
125
141
  const contextCheck = this.checkContextRules(withoutStrings, options);
126
142
  if (!contextCheck.valid)
@@ -144,20 +160,42 @@ export class SQLExpressionValidator {
144
160
  * Check for dangerous SQL patterns that indicate injection attempts
145
161
  */
146
162
  checkDangerousPatterns(expression, options) {
147
- const upper = expression.toUpperCase();
163
+ const isFullQuery = options.context === 'full_query';
148
164
  // Build blocked list - explicitly typed as string[] for mutability
149
- const blocked = [...DANGEROUS_SQL_KEYWORDS];
165
+ let blocked = [...DANGEROUS_SQL_KEYWORDS];
150
166
  if (options.additionalBlocked) {
151
167
  blocked.push(...options.additionalBlocked);
152
168
  }
153
- // Add SELECT to blocked unless explicitly allowed (prevents subqueries)
154
- if (!options.allowSubqueries && !blocked.includes('SELECT')) {
169
+ // For full_query context, remove keywords that are legitimate in SELECT statements
170
+ if (isFullQuery) {
171
+ const allowedSet = new Set(FULL_QUERY_ALLOWED_KEYWORDS.map(k => k.toUpperCase()));
172
+ blocked = blocked.filter(kw => !allowedSet.has(kw.toUpperCase()));
173
+ }
174
+ // Add SELECT to blocked unless context allows it (prevents subqueries in expressions)
175
+ if (!isFullQuery && !options.allowSubqueries && !blocked.includes('SELECT')) {
155
176
  blocked.push('SELECT');
156
177
  }
178
+ // For full_query, strip comments before keyword checking (agent SQL has header comment blocks).
179
+ // For expressions, comments are still rejected outright as injection vectors.
180
+ let textToCheck;
181
+ if (isFullQuery) {
182
+ textToCheck = this.stripSQLComments(expression).toUpperCase();
183
+ }
184
+ else {
185
+ const upper = expression.toUpperCase();
186
+ if (upper.includes('--') || upper.includes('/*') || upper.includes('*/')) {
187
+ return {
188
+ valid: false,
189
+ error: 'Comments are not allowed in SQL expressions',
190
+ trigger: 'comment'
191
+ };
192
+ }
193
+ textToCheck = upper;
194
+ }
157
195
  for (const keyword of blocked) {
158
196
  // Use word boundaries to avoid false positives (e.g., "DESCRIPTION" containing "EXEC")
159
197
  const pattern = new RegExp(`\\b${this.escapeRegex(keyword)}\\b`, 'i');
160
- if (pattern.test(upper)) {
198
+ if (pattern.test(textToCheck)) {
161
199
  return {
162
200
  valid: false,
163
201
  error: `Dangerous SQL keyword detected: ${keyword}`,
@@ -166,16 +204,14 @@ export class SQLExpressionValidator {
166
204
  };
167
205
  }
168
206
  }
169
- // Check comment patterns (common injection technique)
170
- if (upper.includes('--') || upper.includes('/*') || upper.includes('*/')) {
171
- return {
172
- valid: false,
173
- error: 'Comments are not allowed in SQL expressions',
174
- trigger: 'comment'
175
- };
176
- }
177
- // Check statement terminator (prevents multi-statement injection)
178
- if (expression.includes(';')) {
207
+ // Check statement terminator (prevents multi-statement injection).
208
+ // For full_query context, strip comments first (a trailing semicolon may be followed by
209
+ // an inline comment like `ORDER BY x DESC; -- highest first`), then strip the trailing
210
+ // semicolon. Only reject if semicolons remain mid-statement, indicating injection.
211
+ const textForSemicolonCheck = isFullQuery
212
+ ? this.stripSQLComments(expression).replace(/;\s*$/, '') // strip comments then trailing semicolon
213
+ : expression;
214
+ if (textForSemicolonCheck.includes(';')) {
179
215
  return {
180
216
  valid: false,
181
217
  error: 'Semicolons are not allowed in SQL expressions',
@@ -228,6 +264,18 @@ export class SQLExpressionValidator {
228
264
  };
229
265
  }
230
266
  }
267
+ // For full_query context, the query must start with SELECT or WITH (CTE)
268
+ if (options.context === 'full_query') {
269
+ const stripped = this.stripSQLComments(expression).trim();
270
+ const upper = stripped.toUpperCase();
271
+ if (!upper.startsWith('SELECT') && !upper.startsWith('WITH')) {
272
+ return {
273
+ valid: false,
274
+ error: 'Ad-hoc query must start with SELECT or WITH',
275
+ suggestion: 'Only SELECT statements and CTEs (WITH ... AS) are allowed'
276
+ };
277
+ }
278
+ }
231
279
  return { valid: true };
232
280
  }
233
281
  /**
@@ -256,11 +304,48 @@ export class SQLExpressionValidator {
256
304
  // For now, we allow it to pass
257
305
  }
258
306
  }
307
+ /**
308
+ * Strip SQL comments (single-line -- and multi-line block comments) from a query.
309
+ * Used by full_query context to allow agent-generated header comments
310
+ * without triggering the comment injection check.
311
+ */
312
+ stripSQLComments(sql) {
313
+ return sql
314
+ .replace(/--[^\n]*/g, '') // Single-line comments
315
+ .replace(/\/\*[\s\S]*?\*\//g, ''); // Block comments
316
+ }
259
317
  /**
260
318
  * Escape special regex characters in a string
261
319
  */
262
320
  escapeRegex(str) {
263
321
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
264
322
  }
323
+ /**
324
+ * Normalize literal escape sequences in SQL strings.
325
+ * Agent-generated SQL sometimes arrives with literal \n, \r, \t sequences
326
+ * (backslash + letter) instead of actual whitespace characters. This happens
327
+ * when JSON is double-escaped or the SQL passes through a transport layer
328
+ * that doesn't interpret escape sequences. Without normalization, comment
329
+ * stripping fails because the regex expects real newlines.
330
+ */
331
+ normalizeSQLWhitespace(sql) {
332
+ return sql
333
+ .replace(/\\r\\n/g, '\n') // Literal \r\n → newline
334
+ .replace(/\\n/g, '\n') // Literal \n → newline
335
+ .replace(/\\r/g, '\r') // Literal \r → carriage return
336
+ .replace(/\\t/g, '\t'); // Literal \t → tab
337
+ }
338
+ /**
339
+ * Validate a full SQL query (SELECT or WITH/CTE statement).
340
+ * Blocks mutations, dangerous operations, and multi-statement injection.
341
+ * Allows SELECT, subqueries, set operations, and SQL comments.
342
+ */
343
+ validateFullQuery(sql) {
344
+ // Normalize literal escape sequences before validation — agent-generated
345
+ // SQL may arrive with literal \n instead of real newlines, which breaks
346
+ // comment stripping and the "must start with SELECT" check.
347
+ const normalized = this.normalizeSQLWhitespace(sql);
348
+ return this.validate(normalized, { context: 'full_query' });
349
+ }
265
350
  }
266
351
  //# sourceMappingURL=SQLExpressionValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SQLExpressionValidator.js","sourceRoot":"","sources":["../src/SQLExpressionValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SQLExpressionValidator.js","sourceRoot":"","sources":["../src/SQLExpressionValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SQLExpressionValidator.security.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLExpressionValidator.security.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/SQLExpressionValidator.security.test.ts"],"names":[],"mappings":""}