@memberjunction/server 5.48.0 → 5.49.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 (117) hide show
  1. package/README.md +9 -0
  2. package/dist/auth/magicLink/MagicLinkKeys.d.ts.map +1 -1
  3. package/dist/auth/magicLink/MagicLinkKeys.js +11 -4
  4. package/dist/auth/magicLink/MagicLinkKeys.js.map +1 -1
  5. package/dist/auth/magicLink/MagicLinkRouter.js +2 -2
  6. package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
  7. package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
  8. package/dist/auth/magicLink/MagicLinkService.js +4 -0
  9. package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
  10. package/dist/config.d.ts +40 -0
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +12 -0
  13. package/dist/config.js.map +1 -1
  14. package/dist/context.d.ts.map +1 -1
  15. package/dist/context.js +28 -2
  16. package/dist/context.js.map +1 -1
  17. package/dist/generated/generated.d.ts +122 -0
  18. package/dist/generated/generated.d.ts.map +1 -1
  19. package/dist/generated/generated.js +629 -0
  20. package/dist/generated/generated.js.map +1 -1
  21. package/dist/generic/ResolverBase.d.ts.map +1 -1
  22. package/dist/generic/ResolverBase.js +4 -2
  23. package/dist/generic/ResolverBase.js.map +1 -1
  24. package/dist/generic/RunViewResolver.d.ts +1 -0
  25. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  26. package/dist/generic/RunViewResolver.js +12 -0
  27. package/dist/generic/RunViewResolver.js.map +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +73 -11
  30. package/dist/index.js.map +1 -1
  31. package/dist/integration/CustomColumnPromoter.d.ts +15 -2
  32. package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
  33. package/dist/integration/CustomColumnPromoter.js +113 -11
  34. package/dist/integration/CustomColumnPromoter.js.map +1 -1
  35. package/dist/integration/EntityMapLifecycle.d.ts +66 -0
  36. package/dist/integration/EntityMapLifecycle.d.ts.map +1 -0
  37. package/dist/integration/EntityMapLifecycle.js +189 -0
  38. package/dist/integration/EntityMapLifecycle.js.map +1 -0
  39. package/dist/realtimeProxy/RealtimeProxyServer.d.ts +10 -0
  40. package/dist/realtimeProxy/RealtimeProxyServer.d.ts.map +1 -1
  41. package/dist/realtimeProxy/RealtimeProxyServer.js +67 -1
  42. package/dist/realtimeProxy/RealtimeProxyServer.js.map +1 -1
  43. package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
  44. package/dist/realtimeWidget/WidgetRouter.js +6 -2
  45. package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
  46. package/dist/resolvers/AdhocQueryResolver.d.ts +17 -0
  47. package/dist/resolvers/AdhocQueryResolver.d.ts.map +1 -1
  48. package/dist/resolvers/AdhocQueryResolver.js +81 -25
  49. package/dist/resolvers/AdhocQueryResolver.js.map +1 -1
  50. package/dist/resolvers/GetDataResolver.d.ts +16 -0
  51. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  52. package/dist/resolvers/GetDataResolver.js +26 -1
  53. package/dist/resolvers/GetDataResolver.js.map +1 -1
  54. package/dist/resolvers/IntegrationDiscoveryResolver.d.ts +53 -1
  55. package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
  56. package/dist/resolvers/IntegrationDiscoveryResolver.js +522 -60
  57. package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
  58. package/dist/resolvers/QueryResolver.d.ts.map +1 -1
  59. package/dist/resolvers/QueryResolver.js +0 -6
  60. package/dist/resolvers/QueryResolver.js.map +1 -1
  61. package/dist/resolvers/RSUResolver.d.ts +10 -0
  62. package/dist/resolvers/RSUResolver.d.ts.map +1 -1
  63. package/dist/resolvers/RSUResolver.js +28 -0
  64. package/dist/resolvers/RSUResolver.js.map +1 -1
  65. package/dist/resolvers/RunAIAgentResolver.d.ts +9 -6
  66. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  67. package/dist/resolvers/RunAIAgentResolver.js +135 -132
  68. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  69. package/dist/resolvers/TransactionGroupResolver.d.ts +8 -1
  70. package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
  71. package/dist/resolvers/TransactionGroupResolver.js +29 -1
  72. package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
  73. package/dist/resolvers/adhoc-query-helpers.d.ts +27 -0
  74. package/dist/resolvers/adhoc-query-helpers.d.ts.map +1 -0
  75. package/dist/resolvers/adhoc-query-helpers.js +42 -0
  76. package/dist/resolvers/adhoc-query-helpers.js.map +1 -0
  77. package/dist/rest/OAuthCallbackHandler.d.ts +9 -0
  78. package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
  79. package/dist/rest/OAuthCallbackHandler.js +21 -4
  80. package/dist/rest/OAuthCallbackHandler.js.map +1 -1
  81. package/dist/telephony/media-upgrade-router.d.ts +14 -0
  82. package/dist/telephony/media-upgrade-router.d.ts.map +1 -1
  83. package/dist/telephony/media-upgrade-router.js +17 -1
  84. package/dist/telephony/media-upgrade-router.js.map +1 -1
  85. package/package.json +88 -88
  86. package/src/__tests__/AdhocQueryResolver.pagination.test.ts +114 -0
  87. package/src/__tests__/EntityMapLifecycle.dagWarnings.test.ts +91 -0
  88. package/src/__tests__/OAuthCallbackHandler.xss.test.ts +83 -0
  89. package/src/__tests__/RealtimeProxyServer.test.ts +53 -1
  90. package/src/__tests__/adhoc-query-helpers.test.ts +50 -0
  91. package/src/__tests__/magicLinkService.provisionLog.test.ts +106 -0
  92. package/src/__tests__/media-upgrade-router.test.ts +43 -0
  93. package/src/__tests__/unifiedAuth.test.ts +18 -3
  94. package/src/auth/magicLink/MagicLinkKeys.ts +12 -6
  95. package/src/auth/magicLink/MagicLinkRouter.ts +2 -2
  96. package/src/auth/magicLink/MagicLinkService.ts +4 -0
  97. package/src/config.ts +14 -0
  98. package/src/context.ts +28 -2
  99. package/src/generated/generated.ts +446 -1
  100. package/src/generic/ResolverBase.ts +5 -2
  101. package/src/generic/RunViewResolver.ts +11 -0
  102. package/src/index.ts +75 -11
  103. package/src/integration/CustomColumnPromoter.ts +123 -6
  104. package/src/integration/EntityMapLifecycle.ts +221 -0
  105. package/src/realtimeProxy/RealtimeProxyServer.ts +70 -1
  106. package/src/realtimeWidget/WidgetRouter.ts +6 -2
  107. package/src/resolvers/AdhocQueryResolver.ts +97 -30
  108. package/src/resolvers/GetDataResolver.ts +30 -1
  109. package/src/resolvers/IntegrationDiscoveryResolver.ts +514 -60
  110. package/src/resolvers/QueryResolver.ts +1 -7
  111. package/src/resolvers/RSUResolver.ts +28 -0
  112. package/src/resolvers/RunAIAgentResolver.ts +74 -70
  113. package/src/resolvers/TransactionGroupResolver.ts +36 -2
  114. package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +138 -0
  115. package/src/resolvers/adhoc-query-helpers.ts +50 -0
  116. package/src/rest/OAuthCallbackHandler.ts +22 -4
  117. package/src/telephony/media-upgrade-router.ts +18 -1
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Pure, dependency-free helpers for {@link AdhocQueryResolver}. Kept in their own
3
+ * module (no type-graphql / mssql imports) so the total-row-count boundary logic is
4
+ * unit-testable without standing up the GraphQL resolver or a database.
5
+ */
6
+ /**
7
+ * Determines the exact total row count from the page alone, when it can be known
8
+ * without a separate `COUNT(*)`:
9
+ *
10
+ * - **Not paging** (`maxRows == null`): the query ran uncapped, so every row came
11
+ * back — the total is just the number returned.
12
+ * - **Short page** (`pageLength < maxRows`): a page shorter than the page size means
13
+ * there are no rows beyond it, so the total is `startRow + pageLength` exactly.
14
+ * - **Full page** (`pageLength >= maxRows`): more rows may exist — returns `null` to
15
+ * signal that a `COUNT(*)` is required to know the true total.
16
+ */
17
+ export declare function exactTotalFromPage(startRow: number, pageLength: number, maxRows: number | null): number | null;
18
+ /**
19
+ * Reads the total row count from a `COUNT(*)` recordset (`[{ TotalRowCount }]`),
20
+ * falling back to `fallback` when the count is absent, non-numeric, or negative — so
21
+ * an unexpected count shape never yields a misleading total. `fallback` should be a
22
+ * safe lower bound (e.g. `startRow + rowsReturned`).
23
+ */
24
+ export declare function resolveAdhocTotalRowCount(countRows: ReadonlyArray<{
25
+ TotalRowCount?: unknown;
26
+ }> | null | undefined, fallback: number): number;
27
+ //# sourceMappingURL=adhoc-query-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adhoc-query-helpers.d.ts","sourceRoot":"","sources":["../../src/resolvers/adhoc-query-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,GAAG,IAAI,CAQf;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACrC,SAAS,EAAE,aAAa,CAAC;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACxE,QAAQ,EAAE,MAAM,GACjB,MAAM,CASR"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Pure, dependency-free helpers for {@link AdhocQueryResolver}. Kept in their own
3
+ * module (no type-graphql / mssql imports) so the total-row-count boundary logic is
4
+ * unit-testable without standing up the GraphQL resolver or a database.
5
+ */
6
+ /**
7
+ * Determines the exact total row count from the page alone, when it can be known
8
+ * without a separate `COUNT(*)`:
9
+ *
10
+ * - **Not paging** (`maxRows == null`): the query ran uncapped, so every row came
11
+ * back — the total is just the number returned.
12
+ * - **Short page** (`pageLength < maxRows`): a page shorter than the page size means
13
+ * there are no rows beyond it, so the total is `startRow + pageLength` exactly.
14
+ * - **Full page** (`pageLength >= maxRows`): more rows may exist — returns `null` to
15
+ * signal that a `COUNT(*)` is required to know the true total.
16
+ */
17
+ export function exactTotalFromPage(startRow, pageLength, maxRows) {
18
+ if (maxRows == null) {
19
+ return pageLength;
20
+ }
21
+ if (pageLength < maxRows) {
22
+ return startRow + pageLength;
23
+ }
24
+ return null;
25
+ }
26
+ /**
27
+ * Reads the total row count from a `COUNT(*)` recordset (`[{ TotalRowCount }]`),
28
+ * falling back to `fallback` when the count is absent, non-numeric, or negative — so
29
+ * an unexpected count shape never yields a misleading total. `fallback` should be a
30
+ * safe lower bound (e.g. `startRow + rowsReturned`).
31
+ */
32
+ export function resolveAdhocTotalRowCount(countRows, fallback) {
33
+ const raw = countRows?.[0]?.TotalRowCount;
34
+ if (raw != null) {
35
+ const n = Number(raw);
36
+ if (Number.isFinite(n) && n >= 0) {
37
+ return Math.floor(n);
38
+ }
39
+ }
40
+ return fallback;
41
+ }
42
+ //# sourceMappingURL=adhoc-query-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adhoc-query-helpers.js","sourceRoot":"","sources":["../../src/resolvers/adhoc-query-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAC9B,QAAgB,EAChB,UAAkB,EAClB,OAAsB;IAEtB,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,UAAU,CAAC;IACtB,CAAC;IACD,IAAI,UAAU,GAAG,OAAO,EAAE,CAAC;QACvB,OAAO,QAAQ,GAAG,UAAU,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACrC,SAAwE,EACxE,QAAgB;IAEhB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC;IAC1C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -99,6 +99,15 @@ export declare class OAuthCallbackHandler {
99
99
  * @param res - Express response
100
100
  */
101
101
  private handleExchange;
102
+ /**
103
+ * Escapes HTML-special characters in a string so untrusted (e.g. query-string-derived)
104
+ * values can be safely interpolated into an HTML response without introducing
105
+ * reflected-XSS. Escapes `&`, `<`, `>`, `"`, and `'`.
106
+ *
107
+ * @param value - The raw string to escape
108
+ * @returns The HTML-escaped string
109
+ */
110
+ private escapeHtml;
102
111
  /**
103
112
  * Gets the system user from cache.
104
113
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OAuthCallbackHandler.d.ts","sourceRoot":"","sources":["../../src/rest/OAuthCallbackHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAgB9B;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;gBAEzC,OAAO,EAAE,2BAA2B;IAYhD;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8BzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmCvB;;;;;;;;OAQG;YACW,cAAc;IAkF5B;;;;;;;OAOG;YACW,SAAS;IA0EvB;;;;;;;OAOG;YACW,YAAY;IA2F1B;;;;;;;;;OASG;YACW,cAAc;IA+F5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;YACW,sBAAsB;IAoDpC;;OAEG;YACW,oBAAoB;IAmElC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAwBzB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACI,iBAAiB,IAAI,OAAO,CAAC,MAAM;IAI1C;;OAEG;IACI,sBAAsB,IAAI,OAAO,CAAC,MAAM;CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG;IAC9E,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC;CACvC,CAMA"}
1
+ {"version":3,"file":"OAuthCallbackHandler.d.ts","sourceRoot":"","sources":["../../src/rest/OAuthCallbackHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAgB9B;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;gBAEzC,OAAO,EAAE,2BAA2B;IAYhD;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmCvB;;;;;;;;OAQG;YACW,cAAc;IAkF5B;;;;;;;OAOG;YACW,SAAS;IA0EvB;;;;;;;OAOG;YACW,YAAY;IA2F1B;;;;;;;;;OASG;YACW,cAAc;IA+F5B;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;YACW,sBAAsB;IAoDpC;;OAEG;YACW,oBAAoB;IAmElC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAwBzB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACI,iBAAiB,IAAI,OAAO,CAAC,MAAM;IAI1C;;OAEG;IACI,sBAAsB,IAAI,OAAO,CAAC,MAAM;CAGlD;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG;IAC9E,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC;CACvC,CAMA"}
@@ -71,7 +71,8 @@ export class OAuthCallbackHandler {
71
71
  * Renders a success page after OAuth authorization completes.
72
72
  */
73
73
  handleSuccessPage(req, res) {
74
- const { state, connectionId } = req.query;
74
+ const { connectionId } = req.query;
75
+ const safeConnectionId = connectionId ? this.escapeHtml(String(connectionId)) : '';
75
76
  res.status(200).send(`
76
77
  <!DOCTYPE html>
77
78
  <html lang="en">
@@ -93,7 +94,7 @@ export class OAuthCallbackHandler {
93
94
  <div class="icon">✅</div>
94
95
  <h1>Authorization Successful</h1>
95
96
  <p>Your MCP server connection has been authorized. You can close this window and return to MemberJunction.</p>
96
- ${connectionId ? `<div class="details">Connection ID: ${connectionId}</div>` : ''}
97
+ ${safeConnectionId ? `<div class="details">Connection ID: ${safeConnectionId}</div>` : ''}
97
98
  </div>
98
99
  </body>
99
100
  </html>
@@ -104,8 +105,8 @@ export class OAuthCallbackHandler {
104
105
  */
105
106
  handleErrorPage(req, res) {
106
107
  const { error, error_description } = req.query;
107
- const errorCode = error ? String(error) : 'unknown_error';
108
- const errorMessage = error_description ? String(error_description) : 'An error occurred during authorization.';
108
+ const errorCode = this.escapeHtml(error ? String(error) : 'unknown_error');
109
+ const errorMessage = this.escapeHtml(error_description ? String(error_description) : 'An error occurred during authorization.');
109
110
  res.status(200).send(`
110
111
  <!DOCTYPE html>
111
112
  <html lang="en">
@@ -463,6 +464,22 @@ export class OAuthCallbackHandler {
463
464
  // ========================================
464
465
  // Helper Methods
465
466
  // ========================================
467
+ /**
468
+ * Escapes HTML-special characters in a string so untrusted (e.g. query-string-derived)
469
+ * values can be safely interpolated into an HTML response without introducing
470
+ * reflected-XSS. Escapes `&`, `<`, `>`, `"`, and `'`.
471
+ *
472
+ * @param value - The raw string to escape
473
+ * @returns The HTML-escaped string
474
+ */
475
+ escapeHtml(value) {
476
+ return value
477
+ .replace(/&/g, '&amp;')
478
+ .replace(/</g, '&lt;')
479
+ .replace(/>/g, '&gt;')
480
+ .replace(/"/g, '&quot;')
481
+ .replace(/'/g, '&#39;');
482
+ }
466
483
  /**
467
484
  * Gets the system user from cache.
468
485
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OAuthCallbackHandler.js","sourceRoot":"","sources":["../../src/rest/OAuthCallbackHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAY,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAG/E,6CAA6C;AAC7C,MAAM,6BAA6B,GAAG,4BAA4B,CAAC;AAEnE,kCAAkC;AAClC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAE7C,iDAAiD;AACjD,MAAM,iCAAiC,GAAG,iCAAiC,CAAC;AAc5E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,oBAAoB;IAM7B,YAAY,OAAoC;QAC5C,IAAI,CAAC,OAAO,GAAG;YACX,kBAAkB,EAAE,GAAG,OAAO,CAAC,SAAS,gBAAgB;YACxD,gBAAgB,EAAE,GAAG,OAAO,CAAC,SAAS,cAAc;YACpD,GAAG,OAAO;SACb,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,WAAW;QACf,iCAAiC;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAErE,kFAAkF;QAClF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnE,uBAAuB;QACvB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,GAAoB,EAAE,GAAqB;QACjE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;UAqBnB,YAAY,CAAC,CAAC,CAAC,uCAAuC,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE;;;;SAIhF,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,GAAoB,EAAE,GAAqB;QAC/D,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;QAC1D,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,yCAAyC,CAAC;QAE/G,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;kCAqBK,SAAS;qCACN,YAAY;;;;;SAKxC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,cAAc,CAAC,GAAoB,EAAE,GAAqB;QACpE,SAAS,CAAC,uCAAuC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAC5D,SAAS,CAAC,wCAAwC,KAAK,WAAW,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,YAAY,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;QAE7H,sCAAsC;QACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;YACxE,OAAO;QACX,CAAC;QAED,IAAI,CAAC;YACD,qCAAqC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,QAAQ,CAAC,4CAA4C,CAAC,CAAC;gBACvD,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,4BAA4B,CAAC,CAAC;gBACxE,OAAO;YACX,CAAC;YAED,0DAA0D;YAC1D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACvE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,0CAA0C,CAAC,CAAC;gBACvF,OAAO;YACX,CAAC;YAED,iCAAiC;YACjC,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,QAAQ,CAAC,yBAAyB,SAAS,CAAC,MAAM,qBAAqB,CAAC,CAAC;gBACzE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,wBAAwB,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBACjG,OAAO;YACX,CAAC;YAED,yCAAyC;YACzC,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;gBAC5F,MAAM,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAC5C,KAAK,EACL,MAAM,CAAC,KAAK,CAAC,EACb,YAAY,EACZ,WAAW,CACd,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBACpF,OAAO;YACX,CAAC;YAED,yCAAyC;YACzC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBACxG,OAAO;YACX,CAAC;YAED,2BAA2B;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAE3F,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,SAAS,CAAC,sDAAsD,KAAK,EAAE,CAAC,CAAC;gBACzE,2DAA2D;gBAC3D,gBAAgB,CAAC,QAAQ,CAAC,iCAAiC,CAAC,SAAS,CAAC,YAAY,EAAE;oBAChF,cAAc,EAAE,KAAK;oBACrB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACxC,CAAC,CAAC;gBACH,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC5F,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,0CAA0C,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC1E,IAAI,CAAC,eAAe,CAChB,GAAG,EACH,MAAM,CAAC,SAAS,IAAI,sBAAsB,EAC1C,MAAM,CAAC,YAAY,IAAI,sBAAsB,EAC7C,SAAS,CAAC,iBAAiB,CAC9B,CAAC;YACN,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,QAAQ,CAAC,sCAAsC,YAAY,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,8BAA8B,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,SAAS,CAAC,GAAoB,EAAE,GAAqB;QAC/D,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC;QAC7C,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;QACpF,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAa,CAAC;QAE9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,yBAAyB;aAC1C,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAEjF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,WAAW;oBACtB,YAAY,EAAE,+BAA+B;iBAChD,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,8BAA8B;YAC9B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,WAAW;oBACtB,YAAY,EAAE,eAAe;iBAChC,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,aAAa;YACb,IAAI,MAAsD,CAAC;YAC3D,QAAQ,SAAS,CAAC,MAAM,EAAE,CAAC;gBACvB,KAAK,SAAS;oBACV,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;oBACnE,MAAM;gBACV,KAAK,WAAW;oBACZ,MAAM,GAAG,WAAW,CAAC;oBACrB,MAAM;gBACV,KAAK,QAAQ;oBACT,MAAM,GAAG,QAAQ,CAAC;oBAClB,MAAM;gBACV,KAAK,SAAS;oBACV,MAAM,GAAG,SAAS,CAAC;oBACnB,MAAM;gBACV;oBACI,MAAM,GAAG,SAAS,CAAC;YAC3B,CAAC;YAED,GAAG,CAAC,IAAI,CAAC;gBACL,MAAM;gBACN,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE;gBACjD,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,YAAY,EAAE,SAAS,CAAC,gBAAgB;gBACxC,WAAW,EAAE,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS;aAC3D,CAAC,CAAC;QAEP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,QAAQ,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;YAClD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,cAAc;gBACzB,YAAY,EAAE,oCAAoC;aACrD,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,YAAY,CAAC,GAAoB,EAAE,GAAqB;QAClE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACvE,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAa,CAAC;QAE9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,yBAAyB;aAC1C,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,iBAAiB;gBAC5B,YAAY,EAAE,0BAA0B;aAC3C,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,CAAC;YACD,oCAAoC;YACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,WAAW;oBACtB,YAAY,EAAE,sBAAsB;iBACvC,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,qBAAqB;YACrB,MAAM,WAAW,GAAyB;gBACtC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,WAAW,EAAE,gBAAgB;oBACzB,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC,IAAI,EAAE;oBAC1D,CAAC,CAAC,MAAM,CAAC,WAAW;gBACxB,4BAA4B,EAAE,MAAM,CAAC,4BAA4B;gBACjE,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;gBAC7D,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;aAC5C,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,uBAAuB;oBAClC,YAAY,EAAE,yCAAyC;iBAC1D,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,sDAAsD;YACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAC5D,YAAY,EACZ,MAAM,CAAC,QAAQ,EACf,WAAW,EACX,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,WAAW,EACX,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CACnF,CAAC;YAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,GAAG,CAAC,IAAI,CAAC;oBACL,OAAO,EAAE,IAAI;oBACb,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE;oBAC1C,OAAO,EAAE,mDAAmD;iBAC/D,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,mBAAmB;oBAC9B,YAAY,EAAE,MAAM,CAAC,YAAY;iBACpC,CAAC,CAAC;YACP,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,QAAQ,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;YACpD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,cAAc;gBACzB,YAAY,EAAE,+BAA+B;aAChD,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,cAAc,CAAC,GAAoB,EAAE,GAAqB;QACpE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACjC,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAa,CAAC;QAE9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,cAAc;gBACzB,YAAY,EAAE,yBAAyB;aAC1C,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,iBAAiB;gBAC5B,YAAY,EAAE,mCAAmC;aACpD,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,iBAAiB;gBAC5B,YAAY,EAAE,oCAAoC;aACrD,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,CAAC;YACD,wDAAwD;YACxD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAExE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,iBAAiB;oBAC5B,YAAY,EAAE,0CAA0C;iBAC3D,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,8DAA8D;YAC9D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChD,QAAQ,CAAC,yBAAyB,WAAW,CAAC,EAAE,kDAAkD,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,WAAW;oBACtB,YAAY,EAAE,4DAA4D;iBAC7E,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,8CAA8C;YAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAE3F,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,SAAS,CAAC,+DAA+D,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;gBAEnG,2DAA2D;gBAC3D,gBAAgB,CAAC,QAAQ,CAAC,iCAAiC,CAAC,SAAS,CAAC,YAAY,EAAE;oBAChF,cAAc,EAAE,KAAK;oBACrB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACxC,CAAC,CAAC;gBAEH,GAAG,CAAC,IAAI,CAAC;oBACL,OAAO,EAAE,IAAI;oBACb,YAAY,EAAE,SAAS,CAAC,YAAY;iBACvC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,2CAA2C,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC3E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,iBAAiB;oBAChD,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,kDAAkD;oBACvF,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;iBAC3C,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,QAAQ,CAAC,sCAAsC,YAAY,EAAE,CAAC,CAAC;YAC/D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,cAAc;gBACzB,YAAY,EAAE,oDAAoD;aACrE,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,iBAAiB;IACjB,2CAA2C;IAE3C;;OAEG;IACK,aAAa;QACjB,IAAI,CAAC;YACD,OAAO,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAChC,cAAsB,EACtB,WAAqB;QAWrB,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAS5B;gBACC,UAAU,EAAE,iCAAiC;gBAC7C,WAAW,EAAE,mBAAmB,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;gBACrE,MAAM,EAAE,CAAC,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,CAAC;gBACvI,UAAU,EAAE,QAAQ;aACvB,EAAE,WAAW,CAAC,CAAC;YAEhB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpE,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,OAAO;gBACH,YAAY,EAAE,MAAM,CAAC,qBAAqB;gBAC1C,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;gBACxC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,SAAS;gBACtD,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBACrC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1E,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,SAAS;aAC3D,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,QAAQ,CAAC,wDAAwD,KAAK,EAAE,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAC9B,YAAoB,EACpB,WAAqB;QAUrB,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YAEzB,kCAAkC;YAClC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAA0B;gBACzD,UAAU,EAAE,6BAA6B;gBACzC,WAAW,EAAE,OAAO,YAAY,GAAG;gBACnC,MAAM,EAAE,CAAC,aAAa,CAAC;gBACvB,UAAU,EAAE,QAAQ;aACvB,EAAE,WAAW,CAAC,CAAC;YAEhB,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChF,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAEnD,0BAA0B;YAC1B,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,OAAO,CAOlC;gBACC,UAAU,EAAE,kBAAkB;gBAC9B,WAAW,EAAE,OAAO,QAAQ,GAAG;gBAC/B,MAAM,EAAE;oBACJ,gBAAgB,EAAE,aAAa,EAAE,8BAA8B;oBAC/D,eAAe,EAAE,4BAA4B,EAAE,kBAAkB;iBACpE;gBACD,UAAU,EAAE,QAAQ;aACvB,EAAE,WAAW,CAAC,CAAC;YAEhB,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtF,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvC,OAAO;gBACH,QAAQ;gBACR,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,SAAS;gBAClD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;gBAC5C,4BAA4B,EAAE,MAAM,CAAC,4BAA4B,IAAI,SAAS;gBAC9E,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,SAAS;gBAChD,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,IAAI,SAAS;gBAC1E,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,SAAS;aACzD,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,QAAQ,CAAC,sDAAsD,KAAK,EAAE,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,GAAqB,EAAE,KAAa,EAAE,YAAoB,EAAE,iBAA0B;QAC5G,6EAA6E;QAC7E,IAAI,iBAAiB,EAAE,CAAC;YACpB,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACvC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACzC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;gBACnD,SAAS,CAAC,iDAAiD,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC7E,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClC,OAAO;YACX,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,QAAQ,CAAC,iDAAiD,iBAAiB,4BAA4B,CAAC,CAAC;gBACzG,mCAAmC;YACvC,CAAC;QACL,CAAC;QAED,6CAA6C;QAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAmB,CAAC,CAAC;QACtD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QACnD,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,GAAqB,EAAE,SAAiB,EAAE,YAAoB,EAAE,iBAA0B;QAC9G,2EAA2E;QAC3E,IAAI,iBAAiB,EAAE,CAAC;YACpB,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBACvC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACvC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACzC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;gBACxD,SAAS,CAAC,4DAA4D,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACxF,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClC,OAAO;YACX,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,QAAQ,CAAC,iDAAiD,iBAAiB,4BAA4B,CAAC,CAAC;gBACzG,mCAAmC;YACvC,CAAC;QACL,CAAC;QAED,2CAA2C;QAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAiB,CAAC,CAAC;QACpD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACzC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;QACxD,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,iBAAiB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,sBAAsB;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;CACJ;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAoC;IAI3E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO;QACH,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAC3C,mBAAmB,EAAE,OAAO,CAAC,sBAAsB,EAAE;KACxD,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"OAuthCallbackHandler.js","sourceRoot":"","sources":["../../src/rest/OAuthCallbackHandler.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,20 @@ import type { Server as HttpServer } from 'node:http';
19
19
  import type { WebSocketServer } from 'ws';
20
20
  /** Registers a media WebSocket route. Called by each vendor router's attach step. */
21
21
  export declare function RegisterMediaUpgradeRoute(path: string, wss: WebSocketServer): void;
22
+ /**
23
+ * Whether an upgrade request's pathname should be routed to the GraphQL subscriptions socket.
24
+ *
25
+ * `GRAPHQL_ROOT_PATH` defaults to `/` (see `config.ts` / the docker README). On the HTTP side that
26
+ * default is invisible — Express's `app.use(graphqlRootPath, ...)` mounts with PREFIX matching, so a
27
+ * request to `/graphql` lands on the GraphQL middleware even when the configured root is the bare `/`.
28
+ * A WebSocket upgrade has no such prefix-matching fallback: it needs an exact pathname match. With no
29
+ * override, a stock install's default root (`/`) never matches the shipped MJExplorer client's hardcoded
30
+ * `GRAPHQL_WS_URI` (`ws://<host>/graphql`), so every subscription upgrade gets silently rejected — surfaces
31
+ * client-side as "WebSocket handshake: Unexpected response code: 400". Accept the conventional `/graphql`
32
+ * suffix as an alias of the bare root so a stock install works out of the box; a non-default `graphqlPath`
33
+ * (e.g. `/api`) keeps requiring an exact match, unchanged.
34
+ */
35
+ export declare function IsGraphQLWsPath(pathname: string, graphqlPath: string): boolean;
22
36
  /**
23
37
  * Installs the single path-routing `upgrade` dispatcher. No-op when no media routes are registered, so
24
38
  * the GraphQL server keeps its own listener untouched. Otherwise it removes the auto-attached listeners
@@ -1 +1 @@
1
- {"version":3,"file":"media-upgrade-router.d.ts","sourceRoot":"","sources":["../../src/telephony/media-upgrade-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAmB,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAK1C,qFAAqF;AACrF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CAElF;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAqB5H"}
1
+ {"version":3,"file":"media-upgrade-router.d.ts","sourceRoot":"","sources":["../../src/telephony/media-upgrade-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAmB,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAK1C,qFAAqF;AACrF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CAElF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAE9E;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAqB5H"}
@@ -21,6 +21,22 @@ const mediaRoutes = new Map();
21
21
  export function RegisterMediaUpgradeRoute(path, wss) {
22
22
  mediaRoutes.set(path, wss);
23
23
  }
24
+ /**
25
+ * Whether an upgrade request's pathname should be routed to the GraphQL subscriptions socket.
26
+ *
27
+ * `GRAPHQL_ROOT_PATH` defaults to `/` (see `config.ts` / the docker README). On the HTTP side that
28
+ * default is invisible — Express's `app.use(graphqlRootPath, ...)` mounts with PREFIX matching, so a
29
+ * request to `/graphql` lands on the GraphQL middleware even when the configured root is the bare `/`.
30
+ * A WebSocket upgrade has no such prefix-matching fallback: it needs an exact pathname match. With no
31
+ * override, a stock install's default root (`/`) never matches the shipped MJExplorer client's hardcoded
32
+ * `GRAPHQL_WS_URI` (`ws://<host>/graphql`), so every subscription upgrade gets silently rejected — surfaces
33
+ * client-side as "WebSocket handshake: Unexpected response code: 400". Accept the conventional `/graphql`
34
+ * suffix as an alias of the bare root so a stock install works out of the box; a non-default `graphqlPath`
35
+ * (e.g. `/api`) keeps requiring an exact match, unchanged.
36
+ */
37
+ export function IsGraphQLWsPath(pathname, graphqlPath) {
38
+ return pathname === graphqlPath || (graphqlPath === '/' && pathname === '/graphql');
39
+ }
24
40
  /**
25
41
  * Installs the single path-routing `upgrade` dispatcher. No-op when no media routes are registered, so
26
42
  * the GraphQL server keeps its own listener untouched. Otherwise it removes the auto-attached listeners
@@ -41,7 +57,7 @@ export function InstallMediaUpgradeDispatcher(httpServer, graphqlWss, graphqlPat
41
57
  };
42
58
  httpServer.on('upgrade', (req, socket, head) => {
43
59
  const pathname = (req.url ?? '').split('?')[0];
44
- if (pathname === graphqlPath) {
60
+ if (IsGraphQLWsPath(pathname, graphqlPath)) {
45
61
  dispatch(graphqlWss, req, socket, head);
46
62
  return;
47
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"media-upgrade-router.js","sourceRoot":"","sources":["../../src/telephony/media-upgrade-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,mEAAmE;AACnE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEvD,qFAAqF;AACrF,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,GAAoB;IACxE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,6BAA6B,CAAC,UAAsB,EAAE,UAA2B,EAAE,WAAmB;IAClH,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;IACX,CAAC;IACD,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,GAAoB,EAAE,GAAoB,EAAE,MAAc,EAAE,IAAY,EAAQ,EAAE;QAChG,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC;IACF,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAoB,EAAE,MAAc,EAAE,IAAY,EAAE,EAAE;QAC5E,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC3B,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO;QACX,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,GAAG,EAAE,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACjC,OAAO;QACX,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"media-upgrade-router.js","sourceRoot":"","sources":["../../src/telephony/media-upgrade-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,mEAAmE;AACnE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEvD,qFAAqF;AACrF,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,GAAoB;IACxE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,WAAmB;IACjE,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,WAAW,KAAK,GAAG,IAAI,QAAQ,KAAK,UAAU,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,6BAA6B,CAAC,UAAsB,EAAE,UAA2B,EAAE,WAAmB;IAClH,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;IACX,CAAC;IACD,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,GAAoB,EAAE,GAAoB,EAAE,MAAc,EAAE,IAAY,EAAQ,EAAE;QAChG,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC;IACF,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAoB,EAAE,MAAc,EAAE,IAAY,EAAE,EAAE;QAC5E,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;YACzC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO;QACX,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,GAAG,EAAE,CAAC;YACN,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACjC,OAAO;QACX,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/server",
3
- "version": "5.48.0",
3
+ "version": "5.49.0",
4
4
  "description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./src/index.ts",
@@ -27,93 +27,93 @@
27
27
  "@as-integrations/express5": "^1.0.0",
28
28
  "@graphql-tools/schema": "latest",
29
29
  "@graphql-tools/utils": "^11.0.0",
30
- "@memberjunction/actions": "5.48.0",
31
- "@memberjunction/actions-apollo": "5.48.0",
32
- "@memberjunction/actions-base": "5.48.0",
33
- "@memberjunction/actions-bizapps-accounting": "5.48.0",
34
- "@memberjunction/actions-bizapps-crm": "5.48.0",
35
- "@memberjunction/actions-bizapps-formbuilders": "5.48.0",
36
- "@memberjunction/actions-bizapps-lms": "5.48.0",
37
- "@memberjunction/actions-bizapps-social": "5.48.0",
38
- "@memberjunction/ai": "5.48.0",
39
- "@memberjunction/ai-agent-manager": "5.48.0",
40
- "@memberjunction/ai-agent-manager-actions": "5.48.0",
41
- "@memberjunction/ai-agents": "5.48.0",
42
- "@memberjunction/ai-bridge-base": "5.48.0",
43
- "@memberjunction/ai-bridge-ringcentral": "5.48.0",
44
- "@memberjunction/ai-bridge-server": "5.48.0",
45
- "@memberjunction/ai-bridge-teams": "5.48.0",
46
- "@memberjunction/ai-bridge-twilio": "5.48.0",
47
- "@memberjunction/ai-bridge-vonage": "5.48.0",
48
- "@memberjunction/ai-core-plus": "5.48.0",
49
- "@memberjunction/ai-engine-base": "5.48.0",
50
- "@memberjunction/ai-mcp-client": "5.48.0",
51
- "@memberjunction/ai-prompts": "5.48.0",
52
- "@memberjunction/ai-provider-bundle": "5.48.0",
53
- "@memberjunction/ai-vector-sync": "5.48.0",
54
- "@memberjunction/ai-vectordb": "5.48.0",
55
- "@memberjunction/ai-vectors-pinecone": "5.48.0",
56
- "@memberjunction/aiengine": "5.48.0",
57
- "@memberjunction/api-keys": "5.48.0",
58
- "@memberjunction/auth-providers": "5.48.0",
59
- "@memberjunction/clustering-engine": "5.48.0",
60
- "@memberjunction/codegen-lib": "5.48.0",
61
- "@memberjunction/communication-engine": "5.48.0",
62
- "@memberjunction/communication-ms-graph": "5.48.0",
63
- "@memberjunction/notifications": "5.48.0",
64
- "@memberjunction/communication-sendgrid": "5.48.0",
65
- "@memberjunction/communication-types": "5.48.0",
66
- "@memberjunction/component-registry-client-sdk": "5.48.0",
67
- "@memberjunction/computer-use": "5.48.0",
68
- "@memberjunction/computer-use-engine": "5.48.0",
69
- "@memberjunction/config": "5.48.0",
70
- "@memberjunction/core": "5.48.0",
71
- "@memberjunction/core-actions": "5.48.0",
72
- "@memberjunction/core-entities": "5.48.0",
73
- "@memberjunction/core-entities-server": "5.48.0",
74
- "@memberjunction/credentials": "5.48.0",
75
- "@memberjunction/data-context": "5.48.0",
76
- "@memberjunction/data-context-server": "5.48.0",
77
- "@memberjunction/doc-utils": "5.48.0",
78
- "@memberjunction/encryption": "5.48.0",
79
- "@memberjunction/entity-communications-base": "5.48.0",
80
- "@memberjunction/entity-communications-server": "5.48.0",
81
- "@memberjunction/esignature": "5.48.0",
82
- "@memberjunction/external-change-detection": "5.48.0",
83
- "@memberjunction/generic-database-provider": "5.48.0",
84
- "@memberjunction/global": "5.48.0",
85
- "@memberjunction/graphql-dataprovider": "5.48.0",
86
- "@memberjunction/integration-engine": "5.48.0",
87
- "@memberjunction/integration-progress-artifacts": "5.48.0",
88
- "@memberjunction/integration-schema-builder": "5.48.0",
89
- "@memberjunction/interactive-component-types": "5.48.0",
90
- "@memberjunction/lists": "5.48.0",
91
- "@memberjunction/lists-base": "5.48.0",
92
- "@memberjunction/livekit-room-server": "5.48.0",
93
- "@memberjunction/postgresql-dataprovider": "5.48.0",
94
- "@memberjunction/queue": "5.48.0",
95
- "@memberjunction/record-comparison": "5.48.0",
96
- "@memberjunction/redis-provider": "5.48.0",
97
- "@memberjunction/remote-browser-base": "5.48.0",
98
- "@memberjunction/remote-browser-cdp": "5.48.0",
99
- "@memberjunction/remote-browser-selfhost": "5.48.0",
100
- "@memberjunction/remote-browser-server": "5.48.0",
101
- "@memberjunction/scheduling-actions": "5.48.0",
102
- "@memberjunction/scheduling-base-types": "5.48.0",
103
- "@memberjunction/scheduling-engine": "5.48.0",
104
- "@memberjunction/scheduling-engine-base": "5.48.0",
105
- "@memberjunction/schema-engine": "5.48.0",
106
- "@memberjunction/search-engine": "5.48.0",
107
- "@memberjunction/server-extensions-core": "5.48.0",
108
- "@memberjunction/sql-dialect": "5.48.0",
109
- "@memberjunction/sqlserver-dataprovider": "5.48.0",
110
- "@memberjunction/storage": "5.48.0",
111
- "@memberjunction/tag-engine": "5.48.0",
112
- "@memberjunction/tag-engine-base": "5.48.0",
113
- "@memberjunction/templates": "5.48.0",
114
- "@memberjunction/testing-engine": "5.48.0",
115
- "@memberjunction/testing-engine-base": "5.48.0",
116
- "@memberjunction/version-history": "5.48.0",
30
+ "@memberjunction/actions": "5.49.0",
31
+ "@memberjunction/actions-apollo": "5.49.0",
32
+ "@memberjunction/actions-base": "5.49.0",
33
+ "@memberjunction/actions-bizapps-accounting": "5.49.0",
34
+ "@memberjunction/actions-bizapps-crm": "5.49.0",
35
+ "@memberjunction/actions-bizapps-formbuilders": "5.49.0",
36
+ "@memberjunction/actions-bizapps-lms": "5.49.0",
37
+ "@memberjunction/actions-bizapps-social": "5.49.0",
38
+ "@memberjunction/ai": "5.49.0",
39
+ "@memberjunction/ai-agent-manager": "5.49.0",
40
+ "@memberjunction/ai-agent-manager-actions": "5.49.0",
41
+ "@memberjunction/ai-agents": "5.49.0",
42
+ "@memberjunction/ai-bridge-base": "5.49.0",
43
+ "@memberjunction/ai-bridge-ringcentral": "5.49.0",
44
+ "@memberjunction/ai-bridge-server": "5.49.0",
45
+ "@memberjunction/ai-bridge-teams": "5.49.0",
46
+ "@memberjunction/ai-bridge-twilio": "5.49.0",
47
+ "@memberjunction/ai-bridge-vonage": "5.49.0",
48
+ "@memberjunction/ai-core-plus": "5.49.0",
49
+ "@memberjunction/ai-engine-base": "5.49.0",
50
+ "@memberjunction/ai-mcp-client": "5.49.0",
51
+ "@memberjunction/ai-prompts": "5.49.0",
52
+ "@memberjunction/ai-provider-bundle": "5.49.0",
53
+ "@memberjunction/ai-vector-sync": "5.49.0",
54
+ "@memberjunction/ai-vectordb": "5.49.0",
55
+ "@memberjunction/ai-vectors-pinecone": "5.49.0",
56
+ "@memberjunction/aiengine": "5.49.0",
57
+ "@memberjunction/api-keys": "5.49.0",
58
+ "@memberjunction/auth-providers": "5.49.0",
59
+ "@memberjunction/clustering-engine": "5.49.0",
60
+ "@memberjunction/codegen-lib": "5.49.0",
61
+ "@memberjunction/communication-engine": "5.49.0",
62
+ "@memberjunction/communication-ms-graph": "5.49.0",
63
+ "@memberjunction/notifications": "5.49.0",
64
+ "@memberjunction/communication-sendgrid": "5.49.0",
65
+ "@memberjunction/communication-types": "5.49.0",
66
+ "@memberjunction/component-registry-client-sdk": "5.49.0",
67
+ "@memberjunction/computer-use": "5.49.0",
68
+ "@memberjunction/computer-use-engine": "5.49.0",
69
+ "@memberjunction/config": "5.49.0",
70
+ "@memberjunction/core": "5.49.0",
71
+ "@memberjunction/core-actions": "5.49.0",
72
+ "@memberjunction/core-entities": "5.49.0",
73
+ "@memberjunction/core-entities-server": "5.49.0",
74
+ "@memberjunction/credentials": "5.49.0",
75
+ "@memberjunction/data-context": "5.49.0",
76
+ "@memberjunction/data-context-server": "5.49.0",
77
+ "@memberjunction/doc-utils": "5.49.0",
78
+ "@memberjunction/encryption": "5.49.0",
79
+ "@memberjunction/entity-communications-base": "5.49.0",
80
+ "@memberjunction/entity-communications-server": "5.49.0",
81
+ "@memberjunction/esignature": "5.49.0",
82
+ "@memberjunction/external-change-detection": "5.49.0",
83
+ "@memberjunction/generic-database-provider": "5.49.0",
84
+ "@memberjunction/global": "5.49.0",
85
+ "@memberjunction/graphql-dataprovider": "5.49.0",
86
+ "@memberjunction/integration-engine": "5.49.0",
87
+ "@memberjunction/integration-progress-artifacts": "5.49.0",
88
+ "@memberjunction/integration-schema-builder": "5.49.0",
89
+ "@memberjunction/interactive-component-types": "5.49.0",
90
+ "@memberjunction/lists": "5.49.0",
91
+ "@memberjunction/lists-base": "5.49.0",
92
+ "@memberjunction/livekit-room-server": "5.49.0",
93
+ "@memberjunction/postgresql-dataprovider": "5.49.0",
94
+ "@memberjunction/queue": "5.49.0",
95
+ "@memberjunction/record-comparison": "5.49.0",
96
+ "@memberjunction/redis-provider": "5.49.0",
97
+ "@memberjunction/remote-browser-base": "5.49.0",
98
+ "@memberjunction/remote-browser-cdp": "5.49.0",
99
+ "@memberjunction/remote-browser-selfhost": "5.49.0",
100
+ "@memberjunction/remote-browser-server": "5.49.0",
101
+ "@memberjunction/scheduling-actions": "5.49.0",
102
+ "@memberjunction/scheduling-base-types": "5.49.0",
103
+ "@memberjunction/scheduling-engine": "5.49.0",
104
+ "@memberjunction/scheduling-engine-base": "5.49.0",
105
+ "@memberjunction/schema-engine": "5.49.0",
106
+ "@memberjunction/search-engine": "5.49.0",
107
+ "@memberjunction/server-extensions-core": "5.49.0",
108
+ "@memberjunction/sql-dialect": "5.49.0",
109
+ "@memberjunction/sqlserver-dataprovider": "5.49.0",
110
+ "@memberjunction/storage": "5.49.0",
111
+ "@memberjunction/tag-engine": "5.49.0",
112
+ "@memberjunction/tag-engine-base": "5.49.0",
113
+ "@memberjunction/templates": "5.49.0",
114
+ "@memberjunction/testing-engine": "5.49.0",
115
+ "@memberjunction/testing-engine-base": "5.49.0",
116
+ "@memberjunction/version-history": "5.49.0",
117
117
  "@octokit/auth-app": "^7.1.5",
118
118
  "@octokit/rest": "^21.1.1",
119
119
  "@types/compression": "^1.8.1",
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Regression suite for the AdhocQueryResolver pagination / total-row-count bug.
3
+ *
4
+ * Bug #4 — First-page ad-hoc queries reported a TotalRowCount equal to the
5
+ * returned page size, so the artifact viewer's pager never appeared
6
+ * and a >100-row result looked like it only had 100 rows.
7
+ *
8
+ * Two compounding causes in ExecuteAdhocQuery:
9
+ * 1. `usePaging` required `startRow > 0`, so page 1 (StartRow 0)
10
+ * fell back to a TOP-N hard cap instead of OFFSET/FETCH paging.
11
+ * 2. `TotalRowCount` was set to `recordset.length` (the capped page),
12
+ * with no COUNT(*) query — so the true total was never computed.
13
+ *
14
+ * The fix pages whenever `MaxRows > 0` (including StartRow 0) and reads
15
+ * the true total from the RenderPipeline's PagingResult.CountSQL —
16
+ * matching the saved-query path (GenericDatabaseProvider → WrapWithPaging).
17
+ *
18
+ * Same hybrid strategy as AdhocQueryResolver.bugs.test.ts:
19
+ * 1. Source-shape contract tests — assert structural properties of the fix.
20
+ * 2. Pipeline behavior tests — exercise RenderPipeline.Run with the exact
21
+ * first-page inputs the resolver now relies on (data OFFSET/FETCH + count).
22
+ */
23
+ import { describe, it, expect, vi, afterEach } from 'vitest';
24
+ import { readFileSync } from 'fs';
25
+ import { resolve } from 'path';
26
+ import { Metadata } from '@memberjunction/core';
27
+ import { RenderPipeline } from '@memberjunction/generic-database-provider';
28
+
29
+ const ADHOC_RESOLVER_PATH = resolve(__dirname, '../resolvers/AdhocQueryResolver.ts');
30
+
31
+ function readResolverSource(): string {
32
+ return readFileSync(ADHOC_RESOLVER_PATH, 'utf8');
33
+ }
34
+
35
+ function stubMetadata(): void {
36
+ vi.spyOn(Metadata, 'Provider', 'get').mockReturnValue({
37
+ Queries: [],
38
+ QueryDependencies: [],
39
+ } as ReturnType<typeof Metadata.Provider>);
40
+ }
41
+
42
+ afterEach(() => {
43
+ vi.restoreAllMocks();
44
+ });
45
+
46
+ // The real-world query from the bug report: no top-level TOP, an ORDER BY,
47
+ // ~2,087 rows in production, requested as page 1 (StartRow 0, MaxRows 100).
48
+ const BUG_REPORT_SQL = `SELECT
49
+ d.ID,
50
+ d.Title,
51
+ d.Value,
52
+ ISNULL(d.DealStage, 'Open (Unspecified)') AS DealStage
53
+ FROM crm.vwDeals d
54
+ WHERE
55
+ d.IsDeleted = 0
56
+ AND (d.DealStage NOT IN ('Closed won', 'Closed lost') OR d.DealStage IS NULL)
57
+ ORDER BY
58
+ d.Value DESC,
59
+ d.CloseDate ASC`;
60
+
61
+ // ════════════════════════════════════════════════════════════════════
62
+ // Source-shape contract tests
63
+ // ════════════════════════════════════════════════════════════════════
64
+
65
+ describe('AdhocQueryResolver pagination source-shape contract', () => {
66
+
67
+ it('must NOT gate paging on `startRow > 0` (page 1 must still page)', () => {
68
+ const src = readResolverSource();
69
+ // The bug: `usePaging = ... && startRow > 0`. After the fix, first-page
70
+ // requests (StartRow 0) must page too, so no `startRow > 0` guard remains.
71
+ expect(/startRow\s*>\s*0/.test(src)).toBe(false);
72
+ });
73
+
74
+ it('must derive TotalRowCount from a COUNT query, not the returned page length', () => {
75
+ const src = readResolverSource();
76
+ // The bug: `TotalRowCount: recordset.length`. After the fix, the total
77
+ // comes from the count query (via a resolved variable), never directly
78
+ // from the page recordset length.
79
+ expect(/TotalRowCount:\s*recordset\.length/.test(src)).toBe(false);
80
+ });
81
+
82
+ it('must consume the RenderPipeline PagingResult.CountSQL', () => {
83
+ const src = readResolverSource();
84
+ expect(/PagingResult\??\.CountSQL/.test(src)).toBe(true);
85
+ });
86
+ });
87
+
88
+ // ════════════════════════════════════════════════════════════════════
89
+ // Pipeline behavior — first page (StartRow 0) yields data + count SQL
90
+ // ════════════════════════════════════════════════════════════════════
91
+
92
+ describe('RenderPipeline first-page paging (the contract the resolver relies on)', () => {
93
+
94
+ it('StartRow 0 + MaxRows 100 produces a PagingResult with OFFSET/FETCH data SQL AND a COUNT(*) count SQL', () => {
95
+ stubMetadata();
96
+
97
+ const result = RenderPipeline.Run(BUG_REPORT_SQL, {
98
+ Platform: 'sqlserver',
99
+ Paging: { StartRow: 0, MaxRows: 100 },
100
+ });
101
+
102
+ // Paging must be applied even at StartRow 0 (the bug caused it to be skipped).
103
+ expect(result.PagingResult).not.toBeNull();
104
+
105
+ // Data SQL: OFFSET/FETCH at the first page, preserving the query's ORDER BY.
106
+ expect(result.FinalSQL).toMatch(/OFFSET\s+0\s+ROWS\s+FETCH\s+NEXT\s+100\s+ROWS\s+ONLY/i);
107
+ expect(result.PagingResult!.DataSQL).toMatch(/OFFSET\s+0\s+ROWS\s+FETCH\s+NEXT\s+100\s+ROWS\s+ONLY/i);
108
+
109
+ // Count SQL: a COUNT(*) over the full (uncapped) set — the true total the
110
+ // viewer's pager needs. It must NOT carry the page's OFFSET/FETCH cap.
111
+ expect(result.PagingResult!.CountSQL).toMatch(/COUNT\(\*\)\s+AS\s+TotalRowCount/i);
112
+ expect(result.PagingResult!.CountSQL).not.toMatch(/FETCH\s+NEXT\s+100\s+ROWS/i);
113
+ });
114
+ });