@atlaskit/link-datasource 1.12.3 → 1.13.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 (116) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/analytics/constants.js +1 -1
  3. package/dist/cjs/services/useBasicFilterAGG.js +40 -82
  4. package/dist/cjs/services/utils.js +1 -1
  5. package/dist/cjs/ui/issue-like-table/draggable-table-heading.js +0 -12
  6. package/dist/cjs/ui/issue-like-table/styled.js +1 -1
  7. package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.js +94 -0
  8. package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +24 -13
  9. package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/index.js +3 -1
  10. package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.js +93 -0
  11. package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.js +146 -0
  12. package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/transformers.js +15 -3
  13. package/dist/cjs/ui/jira-issues-modal/jira-search-container/buildJQL.js +3 -2
  14. package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +23 -9
  15. package/dist/cjs/ui/jira-issues-modal/jira-search-container/messages.js +5 -0
  16. package/dist/cjs/ui/jira-issues-modal/mode-switcher/index.js +28 -16
  17. package/dist/es2019/analytics/constants.js +1 -1
  18. package/dist/es2019/services/useBasicFilterAGG.js +30 -53
  19. package/dist/es2019/services/utils.js +1 -1
  20. package/dist/es2019/ui/issue-like-table/draggable-table-heading.js +0 -12
  21. package/dist/es2019/ui/issue-like-table/styled.js +16 -4
  22. package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.js +52 -0
  23. package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +15 -7
  24. package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/index.js +3 -1
  25. package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.js +77 -0
  26. package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.js +105 -0
  27. package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/transformers.js +14 -2
  28. package/dist/es2019/ui/jira-issues-modal/jira-search-container/buildJQL.js +2 -1
  29. package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +15 -4
  30. package/dist/es2019/ui/jira-issues-modal/jira-search-container/messages.js +5 -0
  31. package/dist/es2019/ui/jira-issues-modal/mode-switcher/index.js +19 -9
  32. package/dist/esm/analytics/constants.js +1 -1
  33. package/dist/esm/services/useBasicFilterAGG.js +41 -83
  34. package/dist/esm/services/utils.js +1 -1
  35. package/dist/esm/ui/issue-like-table/draggable-table-heading.js +0 -12
  36. package/dist/esm/ui/issue-like-table/styled.js +1 -1
  37. package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.js +87 -0
  38. package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +24 -13
  39. package/dist/esm/ui/jira-issues-modal/basic-filters/ui/index.js +3 -1
  40. package/dist/esm/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.js +86 -0
  41. package/dist/esm/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.js +140 -0
  42. package/dist/esm/ui/jira-issues-modal/basic-filters/utils/transformers.js +12 -2
  43. package/dist/esm/ui/jira-issues-modal/jira-search-container/buildJQL.js +2 -1
  44. package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +23 -9
  45. package/dist/esm/ui/jira-issues-modal/jira-search-container/messages.js +5 -0
  46. package/dist/esm/ui/jira-issues-modal/mode-switcher/index.js +29 -17
  47. package/dist/types/services/useBasicFilterAGG.d.ts +9 -1
  48. package/dist/types/services/utils.d.ts +1 -1
  49. package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.d.ts +18 -0
  50. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +2 -1
  51. package/dist/types/ui/jira-issues-modal/basic-filters/ui/index.d.ts +2 -1
  52. package/dist/types/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.d.ts +2 -0
  53. package/dist/types/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.d.ts +1 -0
  54. package/dist/types/ui/jira-issues-modal/basic-filters/utils/transformers.d.ts +3 -1
  55. package/dist/types/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +1 -0
  56. package/dist/types/ui/jira-issues-modal/jira-search-container/index.d.ts +1 -0
  57. package/dist/types/ui/jira-issues-modal/jira-search-container/messages.d.ts +5 -0
  58. package/dist/types/ui/jira-issues-modal/mode-switcher/index.d.ts +2 -0
  59. package/dist/types-ts4.5/services/useBasicFilterAGG.d.ts +9 -1
  60. package/dist/types-ts4.5/services/utils.d.ts +1 -1
  61. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.d.ts +18 -0
  62. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +2 -1
  63. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/index.d.ts +2 -1
  64. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.d.ts +2 -0
  65. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.d.ts +1 -0
  66. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/utils/transformers.d.ts +3 -1
  67. package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +1 -0
  68. package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/index.d.ts +1 -0
  69. package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/messages.d.ts +5 -0
  70. package/dist/types-ts4.5/ui/jira-issues-modal/mode-switcher/index.d.ts +2 -0
  71. package/package.json +1 -2
  72. package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.js +0 -75
  73. package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.js +0 -12
  74. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +0 -20
  75. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +0 -155
  76. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +0 -82
  77. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +0 -87
  78. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +0 -97
  79. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +0 -18
  80. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +0 -111
  81. package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.js +0 -39
  82. package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.js +0 -6
  83. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +0 -14
  84. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +0 -149
  85. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +0 -76
  86. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +0 -81
  87. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +0 -91
  88. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +0 -12
  89. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +0 -105
  90. package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.js +0 -68
  91. package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.js +0 -6
  92. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +0 -14
  93. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +0 -149
  94. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +0 -76
  95. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +0 -81
  96. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +0 -91
  97. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +0 -12
  98. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +0 -105
  99. package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +0 -12
  100. package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.d.ts +0 -3
  101. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.d.ts +0 -3
  102. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.d.ts +0 -17
  103. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.d.ts +0 -8
  104. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.d.ts +0 -8
  105. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.d.ts +0 -8
  106. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.d.ts +0 -3
  107. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.d.ts +0 -29
  108. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +0 -12
  109. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.d.ts +0 -3
  110. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.d.ts +0 -3
  111. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.d.ts +0 -17
  112. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.d.ts +0 -8
  113. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.d.ts +0 -8
  114. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.d.ts +0 -8
  115. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.d.ts +0 -3
  116. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.d.ts +0 -29
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @atlaskit/link-datasource
2
2
 
3
+ ## 1.13.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#42523](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42523) [`8cf0628d658`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8cf0628d658) - Add logic to disable switching to Basic mode when the query is complex
8
+
9
+ ## 1.12.4
10
+
11
+ ### Patch Changes
12
+
13
+ - [#42612](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42612) [`eb39b74b03b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/eb39b74b03b) - Adds hook to get field values from graphQL for basic filters.
14
+ - [#42598](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42598) [`6105d017042`](https://bitbucket.org/atlassian/atlassian-frontend/commits/6105d017042) - [ux] Updated styles of the table header.
15
+
3
16
  ## 1.12.3
4
17
 
5
18
  ### Patch Changes
@@ -7,5 +7,5 @@ exports.packageMetaData = exports.EVENT_CHANNEL = void 0;
7
7
  var EVENT_CHANNEL = exports.EVENT_CHANNEL = 'media';
8
8
  var packageMetaData = exports.packageMetaData = {
9
9
  packageName: "@atlaskit/link-datasource",
10
- packageVersion: "1.12.3"
10
+ packageVersion: "1.13.0"
11
11
  };
@@ -19,97 +19,55 @@ var useBasicFilterAGG = exports.useBasicFilterAGG = function useBasicFilterAGG()
19
19
  var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
20
20
  client = _useSmartLinkContext.connections.client;
21
21
  var gatewayGraphqlUrl = getGraphqlUrl(client.envKey, client.baseUrlOverride);
22
- var aggHeaders = (0, _react.useMemo)(function () {
23
- return new Headers({
24
- 'Content-Type': 'application/json',
25
- 'X-ExperimentalApi': 'JiraJqlBuilder'
26
- });
27
- }, []);
28
- var getHydratedJQL = (0, _react.useCallback)( /*#__PURE__*/function () {
29
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(cloudId, jql) {
30
- var body, request, response;
22
+ var requestCall = (0, _react.useCallback)( /*#__PURE__*/function () {
23
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(body) {
31
24
  return _regenerator.default.wrap(function _callee$(_context) {
32
25
  while (1) switch (_context.prev = _context.next) {
33
26
  case 0:
34
- body = JSON.stringify({
35
- variables: {
36
- cloudId: cloudId,
37
- jql: jql
38
- },
39
- operationName: 'hydrate',
40
- query: _utils.hydrateJQLQuery
41
- });
42
- request = new Request(gatewayGraphqlUrl, {
43
- method: 'POST',
44
- headers: aggHeaders,
45
- body: body
46
- });
47
- _context.prev = 2;
48
- _context.next = 5;
49
- return fetch(request);
50
- case 5:
51
- response = _context.sent;
52
- return _context.abrupt("return", response.json());
53
- case 9:
54
- _context.prev = 9;
55
- _context.t0 = _context["catch"](2);
56
- throw new Error(_context.t0);
57
- case 12:
27
+ return _context.abrupt("return", (0, _linkingCommon.request)('post', gatewayGraphqlUrl, body, {
28
+ 'X-ExperimentalApi': 'JiraJqlBuilder'
29
+ }, [200, 201, 202, 203, 204]));
30
+ case 1:
58
31
  case "end":
59
32
  return _context.stop();
60
33
  }
61
- }, _callee, null, [[2, 9]]);
34
+ }, _callee);
62
35
  }));
63
- return function (_x, _x2) {
36
+ return function (_x) {
64
37
  return _ref.apply(this, arguments);
65
38
  };
66
- }(), [gatewayGraphqlUrl, aggHeaders]);
67
- var getFieldValues = (0, _react.useCallback)( /*#__PURE__*/function () {
68
- var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(cloudId, jql, jqlTerm, searchString, pageCursor) {
69
- var body, request, response;
70
- return _regenerator.default.wrap(function _callee2$(_context2) {
71
- while (1) switch (_context2.prev = _context2.next) {
72
- case 0:
73
- body = JSON.stringify({
74
- variables: {
75
- cloudId: cloudId,
76
- jql: jql,
77
- first: 10,
78
- jqlTerm: jqlTerm,
79
- searchString: searchString,
80
- after: pageCursor
81
- },
82
- operationName: 'fieldValues',
83
- query: _utils.fieldValuesQuery
84
- });
85
- request = new Request(gatewayGraphqlUrl, {
86
- method: 'POST',
87
- headers: aggHeaders,
88
- body: body
89
- });
90
- _context2.prev = 2;
91
- _context2.next = 5;
92
- return fetch(request);
93
- case 5:
94
- response = _context2.sent;
95
- _context2.next = 8;
96
- return response.json();
97
- case 8:
98
- return _context2.abrupt("return", _context2.sent);
99
- case 11:
100
- _context2.prev = 11;
101
- _context2.t0 = _context2["catch"](2);
102
- throw new Error(_context2.t0);
103
- case 14:
104
- case "end":
105
- return _context2.stop();
106
- }
107
- }, _callee2, null, [[2, 11]]);
108
- }));
109
- return function (_x3, _x4, _x5, _x6, _x7) {
110
- return _ref2.apply(this, arguments);
111
- };
112
- }(), [gatewayGraphqlUrl, aggHeaders]);
39
+ }(), [gatewayGraphqlUrl]);
40
+ var getHydratedJQL = (0, _react.useCallback)(function (cloudId, jql) {
41
+ return requestCall({
42
+ variables: {
43
+ cloudId: cloudId,
44
+ jql: jql
45
+ },
46
+ operationName: 'hydrate',
47
+ query: _utils.hydrateJQLQuery
48
+ });
49
+ }, [requestCall]);
50
+ var getFieldValues = (0, _react.useCallback)(function (_ref2) {
51
+ var cloudId = _ref2.cloudId,
52
+ _ref2$jql = _ref2.jql,
53
+ jql = _ref2$jql === void 0 ? '' : _ref2$jql,
54
+ jqlTerm = _ref2.jqlTerm,
55
+ _ref2$searchString = _ref2.searchString,
56
+ searchString = _ref2$searchString === void 0 ? '' : _ref2$searchString,
57
+ pageCursor = _ref2.pageCursor;
58
+ return requestCall({
59
+ variables: {
60
+ cloudId: cloudId,
61
+ jql: jql,
62
+ first: 10,
63
+ jqlTerm: jqlTerm,
64
+ searchString: searchString,
65
+ after: pageCursor
66
+ },
67
+ operationName: 'fieldValues',
68
+ query: _utils.fieldValuesQuery
69
+ });
70
+ }, [requestCall]);
113
71
  return (0, _react.useMemo)(function () {
114
72
  return {
115
73
  getHydratedJQL: getHydratedJQL,
@@ -5,4 +5,4 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.hydrateJQLQuery = exports.fieldValuesQuery = void 0;
7
7
  var hydrateJQLQuery = exports.hydrateJQLQuery = "query hydrate($cloudId: ID!, $jql: String!) {\n jira {\n jqlBuilder(cloudId: $cloudId) {\n hydrateJqlQuery(query: $jql) {\n ... on JiraJqlHydratedQuery {\n fields {\n ... on JiraJqlQueryHydratedField {\n jqlTerm\n values {\n ... on JiraJqlQueryHydratedValue {\n values {\n ... on JiraJqlProjectFieldValue {\n jqlTerm\n displayName\n project {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlStatusFieldValue {\n jqlTerm\n displayName\n statusCategory {\n colorName\n }\n }\n ... on JiraJqlIssueTypeFieldValue {\n jqlTerm\n displayName\n issueTypes {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlUserFieldValue {\n jqlTerm\n displayName\n user {\n picture\n }\n }\n ... on JiraJqlGroupFieldValue {\n jqlTerm\n displayName\n group {\n name\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}";
8
- var fieldValuesQuery = exports.fieldValuesQuery = "query fieldValues($cloudId: ID!, $first: Int = 10, $jqlTerm: String!, $jql: String!, $searchString: String!, $after: String, $projectOptions: JiraProjectOptions) {\n jira {\n jqlBuilder(cloudId: $cloudId) {\n fieldValues(\n first: $first\n jqlTerm: $jqlTerm\n jqlContext: $jql\n searchString: $searchString\n after: $after\n ) {\n totalCount\n pageInfo {\n endCursor\n }\n edges {\n node {\n jqlTerm\n displayName\n ... on JiraJqlProjectFieldValue {\n project {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlIssueTypeFieldValue {\n issueTypes {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlStatusFieldValue {\n statusCategory {\n colorName\n }\n }\n ... on JiraJqlUserFieldValue {\n user {\n picture\n }\n }\n ... on JiraJqlGroupFieldValue {\n group {\n name\n }\n }\n }\n }\n }\n }\n }\n}";
8
+ var fieldValuesQuery = exports.fieldValuesQuery = "query fieldValues($cloudId: ID!, $first: Int = 10, $jqlTerm: String!, $jql: String!, $searchString: String!, $after: String) {\n jira {\n jqlBuilder(cloudId: $cloudId) {\n fieldValues(\n first: $first\n jqlTerm: $jqlTerm\n jqlContext: $jql\n searchString: $searchString\n after: $after\n ) {\n totalCount\n pageInfo {\n endCursor\n }\n edges {\n node {\n jqlTerm\n displayName\n ... on JiraJqlProjectFieldValue {\n project {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlIssueTypeFieldValue {\n issueTypes {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlStatusFieldValue {\n statusCategory {\n colorName\n }\n }\n ... on JiraJqlUserFieldValue {\n user {\n picture\n }\n }\n ... on JiraJqlGroupFieldValue {\n group {\n name\n }\n }\n }\n }\n }\n }\n }\n}";
@@ -22,17 +22,6 @@ var _styled = require("./styled");
22
22
  var _index = require("./index");
23
23
  /** @jsx jsx */
24
24
 
25
- var tableHeadingStatusStyles = {
26
- idle: (0, _react2.css)({
27
- ':hover': {
28
- background: "var(--ds-surface-hovered, #091E4224)"
29
- }
30
- }),
31
- dragging: (0, _react2.css)({
32
- background: "var(--ds-background-disabled, #091E4224)",
33
- color: "var(--ds-text-disabled, #091E424F)"
34
- })
35
- };
36
25
  var verticallyAlignedStyles = (0, _react2.css)({
37
26
  display: 'flex',
38
27
  alignItems: 'center',
@@ -275,7 +264,6 @@ var DraggableTableHeading = exports.DraggableTableHeading = function DraggableTa
275
264
  }, [id, index, onWidthChange, state, tableId, width]);
276
265
  return (0, _react2.jsx)(_styled.TableHeading, {
277
266
  ref: mainHeaderCellRef,
278
- css: [tableHeadingStatusStyles[state.type]],
279
267
  "data-testid": "".concat(id, "-column-heading"),
280
268
  style: {
281
269
  width: width,
@@ -12,4 +12,4 @@ var _templateObject, _templateObject2;
12
12
  var ScrollableContainerHeight = exports.ScrollableContainerHeight = 590;
13
13
  var FieldTextFontSize = exports.FieldTextFontSize = '14px';
14
14
  var Table = exports.Table = _styled.default.table(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: 100%;\n"])));
15
- var TableHeading = exports.TableHeading = _styled.default.th(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n position: relative;\n padding-block: ", " ", ";\n line-height: ", ";\n border-bottom: 2px solid ", ";\n & [data-testid='datasource-header-content--container'] {\n margin-top: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n"])), "var(--ds-space-300, 24px)", "var(--ds-space-100, 8px)", "var(--ds-font-lineHeight-300, 16px)", "var(--ds-background-accent-gray-subtler, ".concat(_colors.N40, ")"));
15
+ var TableHeading = exports.TableHeading = _styled.default.th(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n position: relative;\n line-height: ", ";\n border-bottom: 2px solid ", ";\n height: calc(52px - ", " * 2 - 2px);\n vertical-align: bottom;\n\n & [data-testid='datasource-header-content--container'] {\n width: 100%;\n padding: ", " ", ";\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n white-space: normal;\n overflow: hidden;\n max-height: 2.5rem;\n word-wrap: break-word;\n\n &:hover {\n background: ", ";\n border-radius: 3px;\n }\n }\n"])), "var(--ds-font-lineHeight-300, 16px)", "var(--ds-background-accent-gray-subtler, ".concat(_colors.N40, ")"), "var(--ds-space-050, 4px)", "var(--ds-space-100, 4px)", "var(--ds-space-050, 2px)", "var(--ds-background-input-hovered, #F7F8F9)");
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useFilterOptions = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _react = require("react");
13
+ var _useBasicFilterAGG2 = require("../../../../services/useBasicFilterAGG");
14
+ var _transformers = require("../utils/transformers");
15
+ var useFilterOptions = exports.useFilterOptions = function useFilterOptions(_ref) {
16
+ var filterType = _ref.filterType,
17
+ cloudId = _ref.cloudId;
18
+ var _useState = (0, _react.useState)([]),
19
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
20
+ filterOptions = _useState2[0],
21
+ setFilterOptions = _useState2[1];
22
+ var _useState3 = (0, _react.useState)(0),
23
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
24
+ totalCount = _useState4[0],
25
+ setTotalCount = _useState4[1];
26
+ var _useState5 = (0, _react.useState)('empty'),
27
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
28
+ status = _useState6[0],
29
+ setStatus = _useState6[1];
30
+ var _useState7 = (0, _react.useState)(undefined),
31
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
32
+ nextPageCursor = _useState8[0],
33
+ setNextPageCursor = _useState8[1];
34
+ var _useBasicFilterAGG = (0, _useBasicFilterAGG2.useBasicFilterAGG)(),
35
+ getFieldValues = _useBasicFilterAGG.getFieldValues;
36
+ var fetchFilterOptions = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
37
+ var _ref3,
38
+ pageCursor,
39
+ searchString,
40
+ response,
41
+ isNewSearch,
42
+ _args = arguments;
43
+ return _regenerator.default.wrap(function _callee$(_context) {
44
+ while (1) switch (_context.prev = _context.next) {
45
+ case 0:
46
+ _ref3 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, pageCursor = _ref3.pageCursor, searchString = _ref3.searchString;
47
+ setStatus('loading');
48
+ _context.prev = 2;
49
+ _context.next = 5;
50
+ return getFieldValues({
51
+ cloudId: cloudId,
52
+ jql: '',
53
+ jqlTerm: filterType,
54
+ searchString: searchString,
55
+ pageCursor: pageCursor
56
+ });
57
+ case 5:
58
+ response = _context.sent;
59
+ if (!(response.errors && response.errors.length > 0)) {
60
+ _context.next = 9;
61
+ break;
62
+ }
63
+ setStatus('rejected');
64
+ return _context.abrupt("return");
65
+ case 9:
66
+ isNewSearch = !pageCursor;
67
+ if (isNewSearch) {
68
+ setFilterOptions((0, _transformers.mapFieldValuesToFilterOptions)(response));
69
+ } else {
70
+ setFilterOptions([].concat((0, _toConsumableArray2.default)(filterOptions), (0, _toConsumableArray2.default)((0, _transformers.mapFieldValuesToFilterOptions)(response))));
71
+ }
72
+ setTotalCount((0, _transformers.mapFieldValuesToTotalCount)(response));
73
+ setNextPageCursor((0, _transformers.mapFieldValuesToPageCursor)(response));
74
+ setStatus('resolved');
75
+ _context.next = 19;
76
+ break;
77
+ case 16:
78
+ _context.prev = 16;
79
+ _context.t0 = _context["catch"](2);
80
+ setStatus('rejected');
81
+ case 19:
82
+ case "end":
83
+ return _context.stop();
84
+ }
85
+ }, _callee, null, [[2, 16]]);
86
+ })), [cloudId, filterOptions, filterType, getFieldValues]);
87
+ return {
88
+ filterOptions: filterOptions,
89
+ fetchFilterOptions: fetchFilterOptions,
90
+ totalCount: totalCount,
91
+ pageCursor: nextPageCursor,
92
+ status: status
93
+ };
94
+ };
@@ -14,7 +14,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
14
14
  var _react = _interopRequireWildcard(require("react"));
15
15
  var _reactIntlNext = require("react-intl-next");
16
16
  var _select = require("@atlaskit/select");
17
- var _useFieldValues2 = require("../../hooks/useFieldValues");
17
+ var _useFilterOptions2 = require("../../hooks/useFilterOptions");
18
18
  var _control = _interopRequireDefault(require("./control"));
19
19
  var _footer = _interopRequireDefault(require("./footer"));
20
20
  var _formatOptionLabel = _interopRequireDefault(require("./formatOptionLabel"));
@@ -29,6 +29,7 @@ var noFilterOptions = function noFilterOptions() {
29
29
  };
30
30
  var AsyncPopupSelect = function AsyncPopupSelect(_ref) {
31
31
  var filterType = _ref.filterType,
32
+ cloudId = _ref.cloudId,
32
33
  selection = _ref.selection,
33
34
  _ref$onSelectionChang = _ref.onSelectionChange,
34
35
  onSelectionChange = _ref$onSelectionChang === void 0 ? function () {} : _ref$onSelectionChang;
@@ -43,13 +44,14 @@ var AsyncPopupSelect = function AsyncPopupSelect(_ref) {
43
44
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
44
45
  selectedOptions = _useState4[0],
45
46
  setSelectedOptions = _useState4[1];
46
- var _useFieldValues = (0, _useFieldValues2.useFieldValues)({
47
- filterType: filterType
47
+ var _useFilterOptions = (0, _useFilterOptions2.useFilterOptions)({
48
+ filterType: filterType,
49
+ cloudId: cloudId
48
50
  }),
49
- filterOptions = _useFieldValues.filterOptions,
50
- fetchFilterOptions = _useFieldValues.fetchFilterOptions,
51
- totalCount = _useFieldValues.totalCount,
52
- status = _useFieldValues.status;
51
+ filterOptions = _useFilterOptions.filterOptions,
52
+ fetchFilterOptions = _useFilterOptions.fetchFilterOptions,
53
+ totalCount = _useFilterOptions.totalCount,
54
+ status = _useFilterOptions.status;
53
55
  var handleInputChange = (0, _react.useCallback)(function (searchString, actionMeta) {
54
56
  if (actionMeta.action === 'input-change' && searchString !== searchTerm) {
55
57
  setSearchTerm(searchString);
@@ -63,10 +65,13 @@ var AsyncPopupSelect = function AsyncPopupSelect(_ref) {
63
65
  return _regenerator.default.wrap(function _callee$(_context) {
64
66
  while (1) switch (_context.prev = _context.next) {
65
67
  case 0:
66
- if (status === 'empty') {
67
- fetchFilterOptions();
68
+ if (!(status === 'empty')) {
69
+ _context.next = 3;
70
+ break;
68
71
  }
69
- case 1:
72
+ _context.next = 3;
73
+ return fetchFilterOptions();
74
+ case 3:
70
75
  case "end":
71
76
  return _context.stop();
72
77
  }
@@ -79,18 +84,24 @@ var AsyncPopupSelect = function AsyncPopupSelect(_ref) {
79
84
  pickerRef === null || pickerRef === void 0 || (_pickerRef$current = pickerRef.current) === null || _pickerRef$current === void 0 || (_pickerRef$current = _pickerRef$current.selectRef) === null || _pickerRef$current === void 0 || (_pickerRef$current = _pickerRef$current.inputRef) === null || _pickerRef$current === void 0 || _pickerRef$current.focus();
80
85
  }
81
86
  }, [status]);
87
+ var isLoading = status === 'loading' || status === 'empty';
82
88
  return /*#__PURE__*/_react.default.createElement(_select.PopupSelect, {
83
89
  isMulti: true,
84
90
  maxMenuWidth: 300,
85
91
  minMenuWidth: 300,
86
92
  ref: pickerRef,
87
93
  testId: "jlol-basic-filter-popup-select",
88
- inputId: "jlol-basic-filter-popup-select--input",
89
- searchThreshold: 0,
94
+ inputId: "jlol-basic-filter-popup-select--input"
95
+ /*
96
+ this threshold controls the display of the search control (input field for search)
97
+ if this threshold is less than 0, when typing a search string that returns no results it will not remove the search control
98
+ if this threshold is 0 or higher, it will remove the search control when there are no results, the user will be unable to clear the search to see more results
99
+ */,
100
+ searchThreshold: -1,
90
101
  inputValue: searchTerm,
91
102
  closeMenuOnSelect: false,
92
103
  hideSelectedOptions: false,
93
- isLoading: status === 'loading',
104
+ isLoading: isLoading,
94
105
  placeholder: formatMessage(_messages.asyncPopupSelectMessages.selectPlaceholder),
95
106
  components: {
96
107
  /* @ts-expect-error - This component has stricter OptionType, hence a temp setup untill its made generic */
@@ -15,7 +15,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
15
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
16
  var availableBasicFilterTypes = ['project', 'issuetype', 'status', 'assignee'];
17
17
  var BasicFilterContainer = function BasicFilterContainer(_ref) {
18
- var jql = _ref.jql;
18
+ var jql = _ref.jql,
19
+ cloudId = _ref.cloudId;
19
20
  var _useState = (0, _react.useState)([]),
20
21
  _useState2 = (0, _slicedToArray2.default)(_useState, 1),
21
22
  selection = _useState2[0];
@@ -30,6 +31,7 @@ var BasicFilterContainer = function BasicFilterContainer(_ref) {
30
31
  testId: "jlol-basic-filter-container"
31
32
  }, availableBasicFilterTypes.map(function (filter) {
32
33
  return /*#__PURE__*/_react.default.createElement(_asyncPopupSelect.default, {
34
+ cloudId: cloudId,
33
35
  filterType: filter,
34
36
  key: filter,
35
37
  selection: selection,
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.isClauseTooComplex = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _jqlAst = require("@atlaskit/jql-ast");
10
+ var _buildJQL = require("../../jira-search-container/buildJQL");
11
+ var removeFuzzyCharacter = function removeFuzzyCharacter(value) {
12
+ if (value !== null && value !== void 0 && value.endsWith(_buildJQL.fuzzyCharacter)) {
13
+ return value.slice(0, -1);
14
+ }
15
+ return value;
16
+ };
17
+ var getValueFromTerminalClause = function getValueFromTerminalClause(clause) {
18
+ var operand = clause.operand;
19
+ return operand !== undefined && operand.operandType === _jqlAst.OPERAND_TYPE_VALUE && removeFuzzyCharacter(operand.value) || undefined;
20
+ };
21
+ var areClauseFieldValuesEqual = function areClauseFieldValuesEqual(clauseA, clauseB, clauseC) {
22
+ var valueA = clauseA && getValueFromTerminalClause(clauseA);
23
+ var valueB = clauseB && getValueFromTerminalClause(clauseB);
24
+ var valueC = clauseC && getValueFromTerminalClause(clauseC);
25
+ var values = [valueA, valueB, valueC].filter(Boolean);
26
+
27
+ // checks if valid fields, text, summary and key have the same value, if not, its a complex query and cannnot be recreated in basic mode
28
+ return values.length > 1 && values.every(function (value) {
29
+ return value === values[0];
30
+ });
31
+ };
32
+ var areClauseFieldKeysAllowed = function areClauseFieldKeysAllowed(clauseA, clauseB, clauseC) {
33
+ var fieldA = clauseA.field.value;
34
+ var fieldB = clauseB.field.value;
35
+ var fieldC = clauseC === null || clauseC === void 0 ? void 0 : clauseC.field.value; // clauseC only if jql with 3 OR clauses, 'text ~ "EDM-6023*" or summary ~ "EDM-6023*" or key = EDM-6023 ORDER BY created DESC',
36
+
37
+ return [fieldA, fieldB, fieldC].filter(Boolean).every(function (field) {
38
+ return ['summary', 'text', 'key'].includes(field);
39
+ });
40
+ };
41
+ var doesCompoundClauseContainAllTerminalClauses = function doesCompoundClauseContainAllTerminalClauses(clauses) {
42
+ return clauses.every(function (clauses) {
43
+ return clauses.clauseType === _jqlAst.CLAUSE_TYPE_TERMINAL;
44
+ });
45
+ };
46
+ var isClauseTooComplex = exports.isClauseTooComplex = function isClauseTooComplex(clauses, key) {
47
+ if (key === 'text') {
48
+ var _clauses = (0, _slicedToArray2.default)(clauses, 1),
49
+ clause = _clauses[0];
50
+ if (clause.clauseType === _jqlAst.CLAUSE_TYPE_COMPOUND) {
51
+ var textClauses = clause.clauses;
52
+
53
+ /**
54
+ * valid: text ~ "test*" or summary ~ "test*" ORDER BY created DESC
55
+ * valid: text ~ "EDM-6023*" or summary ~ "EDM-6023*" or key = EDM-6023 ORDER BY created DESC
56
+ * invalid: assignee = "me" or text ~ "EDM-6023*" or summary ~ "EDM-6023*" or key = EDM-6023 ORDER BY created DESC
57
+ */
58
+ if (textClauses.length !== 2 && textClauses.length !== 3) {
59
+ return true;
60
+ }
61
+
62
+ /**
63
+ * valid: text ~ "test*" or summary ~ "test*"
64
+ * invalid: text ~ "test" or (summary ~ "test" or key = "test")
65
+ */
66
+ if (!doesCompoundClauseContainAllTerminalClauses(textClauses)) {
67
+ return true;
68
+ }
69
+ var _textClauses = (0, _slicedToArray2.default)(textClauses, 3),
70
+ clauseA = _textClauses[0],
71
+ clauseB = _textClauses[1],
72
+ clauseC = _textClauses[2];
73
+
74
+ /**
75
+ * valid: text ~ "EDM-6023*" or summary ~ "EDM-6023*" or key = EDM-6023 ORDER BY created DESC
76
+ * invalid: text ~ "EDM-6023*" or summary ~ "anotherValue" ORDER BY created DESC
77
+ * invalid: text ~ "EDM-6023*" or text ~ "anotherValue" ORDER BY created DESC
78
+ */
79
+ if (!areClauseFieldValuesEqual(clauseA, clauseB, clauseC)) {
80
+ return true;
81
+ }
82
+
83
+ /**
84
+ * valid: text ~ "EDM-6023*" ORDER BY created DESC
85
+ * invalid: resolution = 40134 ORDER BY created DESC
86
+ */
87
+ if (!areClauseFieldKeysAllowed(clauseA, clauseB, clauseC)) {
88
+ return true;
89
+ }
90
+ }
91
+ }
92
+ return clauses.length > 1;
93
+ };
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.isQueryTooComplex = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
+ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
17
+ var _mergeWith = _interopRequireDefault(require("lodash/mergeWith"));
18
+ var _jqlAst = require("@atlaskit/jql-ast");
19
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
+ var _jiraSearchContainer = require("../../jira-search-container");
21
+ var _isClauseTooComplex = require("./isClauseTooComplex");
22
+ var _index = require("./index");
23
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
24
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
25
+ // Map of field keys to their respective clauses in the Jast
26
+
27
+ var allowedFields = [
28
+ // basic filter fields
29
+ 'assignee', 'issuetype', 'project', 'status',
30
+ // search input fields
31
+ 'text', 'summary', 'key',
32
+ // orderby field
33
+ 'created'];
34
+ var fallbackOperators = [_jqlAst.OPERATOR_IN];
35
+ var fieldSpecificOperators = {
36
+ text: [_jqlAst.OPERATOR_LIKE, _jqlAst.OPERATOR_EQUALS],
37
+ summary: [_jqlAst.OPERATOR_LIKE, _jqlAst.OPERATOR_EQUALS],
38
+ key: [_jqlAst.OPERATOR_EQUALS],
39
+ created: [_jqlAst.OPERATOR_GT_EQUALS],
40
+ project: [_jqlAst.OPERATOR_IN, _jqlAst.OPERATOR_EQUALS],
41
+ issuetype: [_jqlAst.OPERATOR_IN, _jqlAst.OPERATOR_EQUALS],
42
+ status: [_jqlAst.OPERATOR_IN, _jqlAst.OPERATOR_EQUALS],
43
+ assignee: [_jqlAst.OPERATOR_IN, _jqlAst.OPERATOR_EQUALS]
44
+ };
45
+ var JqlClauseCollectingVisitorError = /*#__PURE__*/function (_Error) {
46
+ (0, _inherits2.default)(JqlClauseCollectingVisitorError, _Error);
47
+ var _super = _createSuper(JqlClauseCollectingVisitorError);
48
+ function JqlClauseCollectingVisitorError() {
49
+ (0, _classCallCheck2.default)(this, JqlClauseCollectingVisitorError);
50
+ return _super.apply(this, arguments);
51
+ }
52
+ return (0, _createClass2.default)(JqlClauseCollectingVisitorError);
53
+ }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
54
+ /**
55
+ * Rather than having to navigate the entire tree structure ourself, we extend AbstractJastVisitor
56
+ * class and implement visitor functions for node types that we wish to process.
57
+ * A list of available visitor can be viewed in packages/jql/jql-ast/src/types/api/jast-visitor.ts
58
+ * more info - https://atlaskit.atlassian.com/packages/jql/jql-ast/docs/traversing-the-ast
59
+ * */
60
+ var JqlClauseCollectingVisitor = /*#__PURE__*/function (_AbstractJastVisitor) {
61
+ (0, _inherits2.default)(JqlClauseCollectingVisitor, _AbstractJastVisitor);
62
+ var _super2 = _createSuper(JqlClauseCollectingVisitor);
63
+ function JqlClauseCollectingVisitor() {
64
+ var _this;
65
+ (0, _classCallCheck2.default)(this, JqlClauseCollectingVisitor);
66
+ _this = _super2.call(this);
67
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "visitNotClause", function () {
68
+ throw new JqlClauseCollectingVisitorError('Visited an unsupported node while traversing the AST');
69
+ });
70
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "visitOrderByField", function (orderByField) {
71
+ var _orderByField$field$v;
72
+ var fieldValue = (_orderByField$field$v = orderByField.field.value) === null || _orderByField$field$v === void 0 ? void 0 : _orderByField$field$v.toLowerCase();
73
+ if (fieldValue && !_jiraSearchContainer.ALLOWED_ORDER_BY_KEYS.includes(fieldValue)) {
74
+ throw new JqlClauseCollectingVisitorError("query with order by field '".concat(fieldValue, "' is not supported"));
75
+ }
76
+ return {};
77
+ });
78
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "visitCompoundClause", function (compoundClause) {
79
+ var clauseMap = {};
80
+ var operator = compoundClause.operator.value;
81
+ if (operator === _jqlAst.COMPOUND_OPERATOR_AND) {
82
+ return compoundClause.clauses.reduce(function (result, clause) {
83
+ return _this.aggregateResult(clause.accept((0, _assertThisInitialized2.default)(_this)), result);
84
+ }, clauseMap);
85
+ }
86
+ if (operator === _jqlAst.COMPOUND_OPERATOR_OR) {
87
+ // this is delt with in isClauseTooComplex
88
+ return _this.aggregateResult({
89
+ text: [compoundClause]
90
+ }, clauseMap);
91
+ }
92
+ throw new JqlClauseCollectingVisitorError("Compound clauses using the operator '".concat(operator, "' is not supported"));
93
+ });
94
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "visitTerminalClause", function (terminalClause) {
95
+ var _terminalClause$opera;
96
+ var fieldName = terminalClause.field.value.toLowerCase();
97
+ if (!allowedFields.includes(fieldName)) {
98
+ throw new JqlClauseCollectingVisitorError("Field with name '".concat(fieldName, "' of type ").concat(terminalClause.clauseType, " is not supported"));
99
+ }
100
+ var operator = (_terminalClause$opera = terminalClause.operator) === null || _terminalClause$opera === void 0 ? void 0 : _terminalClause$opera.value;
101
+ var allowedOperators = fieldSpecificOperators[fieldName] || fallbackOperators;
102
+ if (operator && !allowedOperators.includes(operator.toLowerCase())) {
103
+ throw new JqlClauseCollectingVisitorError("Field with name '".concat(fieldName, "' using operator ").concat(operator, " is not supported"));
104
+ }
105
+ return (0, _defineProperty2.default)({}, terminalClause.field.value.toLowerCase(), [terminalClause]);
106
+ });
107
+ return _this;
108
+ }
109
+ (0, _createClass2.default)(JqlClauseCollectingVisitor, [{
110
+ key: "aggregateResult",
111
+ value: function aggregateResult(aggregate, nextResult) {
112
+ return (0, _mergeWith.default)(aggregate, nextResult, function (destValue, srcValue) {
113
+ return srcValue.concat(destValue !== null && destValue !== void 0 ? destValue : []);
114
+ });
115
+ }
116
+ }, {
117
+ key: "defaultResult",
118
+ value: function defaultResult() {
119
+ return {};
120
+ }
121
+ }]);
122
+ return JqlClauseCollectingVisitor;
123
+ }(_jqlAst.AbstractJastVisitor);
124
+ var isQueryTooComplex = exports.isQueryTooComplex = function isQueryTooComplex(jql) {
125
+ if (!(0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.datasource.show-jlol-basic-filters') || !jql) {
126
+ return false;
127
+ }
128
+ if (!(0, _index.isValidJql)(jql)) {
129
+ return true;
130
+ }
131
+ var jast = new _jqlAst.JastBuilder().build(jql);
132
+ try {
133
+ var jqlClauseCollectingVisitor = new JqlClauseCollectingVisitor();
134
+ var clauseMap = jast.query ? jast.query.accept(jqlClauseCollectingVisitor) : {}; // jast.query is defined as void | Query, hence the fallback
135
+
136
+ var hasAnyKeyWithComplexClause = Object.entries(clauseMap).some(function (_ref2) {
137
+ var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
138
+ key = _ref3[0],
139
+ clauses = _ref3[1];
140
+ return (0, _isClauseTooComplex.isClauseTooComplex)(clauses, key);
141
+ });
142
+ return hasAnyKeyWithComplexClause;
143
+ } catch (error) {
144
+ return true;
145
+ }
146
+ };