@atlaskit/link-datasource 0.27.3 → 0.28.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.
- package/CHANGELOG.md +20 -0
- package/dist/cjs/hooks/useAssetsClient.js +70 -0
- package/dist/cjs/hooks/useValidateAqlText.js +48 -0
- package/dist/cjs/index.js +13 -0
- package/dist/cjs/services/cmdbService.js +53 -0
- package/dist/cjs/types/assets/types.js +5 -0
- package/dist/cjs/ui/assets-modal/index.js +31 -0
- package/dist/cjs/ui/assets-modal/modal/index.js +68 -0
- package/dist/cjs/ui/assets-modal/modal/messages.js +20 -0
- package/dist/cjs/ui/assets-modal/modal/render-assets-content/index.js +27 -0
- package/dist/cjs/ui/assets-modal/modal/styled.js +12 -0
- package/dist/cjs/ui/assets-modal/types.js +5 -0
- package/dist/cjs/ui/common/error-state/modal-loading-error.js +2 -2
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/hooks/useAssetsClient.js +32 -0
- package/dist/es2019/hooks/useValidateAqlText.js +17 -0
- package/dist/es2019/index.js +3 -1
- package/dist/es2019/services/cmdbService.js +21 -0
- package/dist/es2019/types/assets/types.js +1 -0
- package/dist/es2019/ui/assets-modal/index.js +13 -0
- package/dist/es2019/ui/assets-modal/modal/index.js +52 -0
- package/dist/es2019/ui/assets-modal/modal/messages.js +13 -0
- package/dist/es2019/ui/assets-modal/modal/render-assets-content/index.js +21 -0
- package/dist/es2019/ui/assets-modal/modal/styled.js +6 -0
- package/dist/es2019/ui/assets-modal/types.js +1 -0
- package/dist/es2019/ui/common/error-state/modal-loading-error.js +2 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/hooks/useAssetsClient.js +62 -0
- package/dist/esm/hooks/useValidateAqlText.js +40 -0
- package/dist/esm/index.js +3 -1
- package/dist/esm/services/cmdbService.js +43 -0
- package/dist/esm/types/assets/types.js +1 -0
- package/dist/esm/ui/assets-modal/index.js +17 -0
- package/dist/esm/ui/assets-modal/modal/index.js +56 -0
- package/dist/esm/ui/assets-modal/modal/messages.js +13 -0
- package/dist/esm/ui/assets-modal/modal/render-assets-content/index.js +19 -0
- package/dist/esm/ui/assets-modal/modal/styled.js +4 -0
- package/dist/esm/ui/assets-modal/types.js +1 -0
- package/dist/esm/ui/common/error-state/modal-loading-error.js +2 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/hooks/useAssetsClient.d.ts +6 -0
- package/dist/types/hooks/useValidateAqlText.d.ts +4 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/services/cmdbService.d.ts +6 -0
- package/dist/types/types/assets/types.d.ts +23 -0
- package/dist/types/ui/assets-modal/index.d.ts +5 -0
- package/dist/types/ui/assets-modal/modal/index.d.ts +3 -0
- package/dist/types/ui/assets-modal/modal/messages.d.ts +12 -0
- package/dist/types/ui/assets-modal/modal/render-assets-content/index.d.ts +8 -0
- package/dist/types/ui/assets-modal/modal/styled.d.ts +5 -0
- package/dist/types/ui/assets-modal/types.d.ts +23 -0
- package/dist/types/ui/common/error-state/modal-loading-error.d.ts +1 -1
- package/dist/types-ts4.5/hooks/useAssetsClient.d.ts +6 -0
- package/dist/types-ts4.5/hooks/useValidateAqlText.d.ts +4 -0
- package/dist/types-ts4.5/index.d.ts +3 -0
- package/dist/types-ts4.5/services/cmdbService.d.ts +6 -0
- package/dist/types-ts4.5/types/assets/types.d.ts +23 -0
- package/dist/types-ts4.5/ui/assets-modal/index.d.ts +5 -0
- package/dist/types-ts4.5/ui/assets-modal/modal/index.d.ts +3 -0
- package/dist/types-ts4.5/ui/assets-modal/modal/messages.d.ts +12 -0
- package/dist/types-ts4.5/ui/assets-modal/modal/render-assets-content/index.d.ts +8 -0
- package/dist/types-ts4.5/ui/assets-modal/modal/styled.d.ts +5 -0
- package/dist/types-ts4.5/ui/assets-modal/types.d.ts +23 -0
- package/dist/types-ts4.5/ui/common/error-state/modal-loading-error.d.ts +1 -1
- package/package.json +3 -2
- package/report.api.md +46 -0
- package/tmp/api-report-tmp.d.ts +43 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 0.28.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`1c595c5a9d1`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1c595c5a9d1) - Added assets modal to link-datasource, which includes the following API additions:
|
|
8
|
+
|
|
9
|
+
- datasource ID for assets: `ASSETS_LIST_OF_LINKS_DATASOURCE_ID`
|
|
10
|
+
- new component: `JSMAssetsConfigModal`
|
|
11
|
+
- addition of 2 new types: `AssetsDatasourceAdf` and `AssetsDatasourceParameters`
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies
|
|
16
|
+
|
|
17
|
+
## 0.27.4
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- [`45562e99798`](https://bitbucket.org/atlassian/atlassian-frontend/commits/45562e99798) - Added cmdbService, useAssetsClient hook and useValidateAqlText hook
|
|
22
|
+
|
|
3
23
|
## 0.27.3
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useAssetsClient = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _react = require("react");
|
|
12
|
+
var _cmdbService = require("../services/cmdbService");
|
|
13
|
+
// TODO: Pass in localhost:3000 for testing locally - remember to remove this code after
|
|
14
|
+
// You must also have a proxy server running to forward requests from http://localhost:3000 to a JSM premium url
|
|
15
|
+
var useAssetsClient = function useAssetsClient(hostname) {
|
|
16
|
+
var _useState = (0, _react.useState)(),
|
|
17
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
18
|
+
objectSchemas = _useState2[0],
|
|
19
|
+
setObjectSchemas = _useState2[1];
|
|
20
|
+
var _useState3 = (0, _react.useState)(),
|
|
21
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
22
|
+
workspaceId = _useState4[0],
|
|
23
|
+
setWorkspaceId = _useState4[1];
|
|
24
|
+
var _useState5 = (0, _react.useState)(),
|
|
25
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
26
|
+
error = _useState6[0],
|
|
27
|
+
setError = _useState6[1];
|
|
28
|
+
(0, _react.useEffect)(function () {
|
|
29
|
+
(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
30
|
+
var _workspaceId, objectSchemasResponse;
|
|
31
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
32
|
+
while (1) switch (_context.prev = _context.next) {
|
|
33
|
+
case 0:
|
|
34
|
+
_context.prev = 0;
|
|
35
|
+
_context.next = 3;
|
|
36
|
+
return (0, _cmdbService.getWorkspaceId)(hostname);
|
|
37
|
+
case 3:
|
|
38
|
+
_workspaceId = _context.sent;
|
|
39
|
+
_context.next = 6;
|
|
40
|
+
return (0, _cmdbService.fetchObjectSchemas)(_workspaceId, hostname);
|
|
41
|
+
case 6:
|
|
42
|
+
objectSchemasResponse = _context.sent;
|
|
43
|
+
setWorkspaceId(_workspaceId);
|
|
44
|
+
setObjectSchemas(objectSchemasResponse.values);
|
|
45
|
+
_context.next = 14;
|
|
46
|
+
break;
|
|
47
|
+
case 11:
|
|
48
|
+
_context.prev = 11;
|
|
49
|
+
_context.t0 = _context["catch"](0);
|
|
50
|
+
if (_context.t0 instanceof Error) {
|
|
51
|
+
setError(_context.t0);
|
|
52
|
+
} else {
|
|
53
|
+
setError(new Error('Unexpected error occured'));
|
|
54
|
+
// eslint-disable-next-line no-console
|
|
55
|
+
console.error(_context.t0);
|
|
56
|
+
}
|
|
57
|
+
case 14:
|
|
58
|
+
case "end":
|
|
59
|
+
return _context.stop();
|
|
60
|
+
}
|
|
61
|
+
}, _callee, null, [[0, 11]]);
|
|
62
|
+
}))();
|
|
63
|
+
}, [hostname]);
|
|
64
|
+
return {
|
|
65
|
+
workspaceId: workspaceId,
|
|
66
|
+
objectSchemas: objectSchemas,
|
|
67
|
+
error: error
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
exports.useAssetsClient = useAssetsClient;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useValidateAqlText = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _react = require("react");
|
|
12
|
+
var _cmdbService = require("../services/cmdbService");
|
|
13
|
+
var useValidateAqlText = function useValidateAqlText(workspaceId, hostname) {
|
|
14
|
+
var _useState = (0, _react.useState)(false),
|
|
15
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
16
|
+
isLoading = _useState2[0],
|
|
17
|
+
setIsLoading = _useState2[1];
|
|
18
|
+
var validateAqlText = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
19
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(aql) {
|
|
20
|
+
var validateAqlResponse;
|
|
21
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
22
|
+
while (1) switch (_context.prev = _context.next) {
|
|
23
|
+
case 0:
|
|
24
|
+
setIsLoading(true);
|
|
25
|
+
_context.next = 3;
|
|
26
|
+
return (0, _cmdbService.validateAql)(workspaceId, {
|
|
27
|
+
qlQuery: aql
|
|
28
|
+
}, hostname);
|
|
29
|
+
case 3:
|
|
30
|
+
validateAqlResponse = _context.sent;
|
|
31
|
+
setIsLoading(false);
|
|
32
|
+
return _context.abrupt("return", validateAqlResponse.isValid);
|
|
33
|
+
case 6:
|
|
34
|
+
case "end":
|
|
35
|
+
return _context.stop();
|
|
36
|
+
}
|
|
37
|
+
}, _callee);
|
|
38
|
+
}));
|
|
39
|
+
return function (_x) {
|
|
40
|
+
return _ref.apply(this, arguments);
|
|
41
|
+
};
|
|
42
|
+
}(), [hostname, workspaceId]);
|
|
43
|
+
return {
|
|
44
|
+
validateAqlText: validateAqlText,
|
|
45
|
+
isLoading: isLoading
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
exports.useValidateAqlText = useValidateAqlText;
|
package/dist/cjs/index.js
CHANGED
|
@@ -5,6 +5,12 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
Object.defineProperty(exports, "ASSETS_LIST_OF_LINKS_DATASOURCE_ID", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _assetsModal.ASSETS_LIST_OF_LINKS_DATASOURCE_ID;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
8
14
|
Object.defineProperty(exports, "DatasourceTableView", {
|
|
9
15
|
enumerable: true,
|
|
10
16
|
get: function get() {
|
|
@@ -17,6 +23,12 @@ Object.defineProperty(exports, "JIRA_LIST_OF_LINKS_DATASOURCE_ID", {
|
|
|
17
23
|
return _jiraIssuesModal.JIRA_LIST_OF_LINKS_DATASOURCE_ID;
|
|
18
24
|
}
|
|
19
25
|
});
|
|
26
|
+
Object.defineProperty(exports, "JSMAssetsConfigModal", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function get() {
|
|
29
|
+
return _assetsModal.default;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
20
32
|
Object.defineProperty(exports, "JiraIssuesConfigModal", {
|
|
21
33
|
enumerable: true,
|
|
22
34
|
get: function get() {
|
|
@@ -25,5 +37,6 @@ Object.defineProperty(exports, "JiraIssuesConfigModal", {
|
|
|
25
37
|
});
|
|
26
38
|
var _jiraIssuesModal = _interopRequireWildcard(require("./ui/jira-issues-modal"));
|
|
27
39
|
var _datasourceTableView = _interopRequireDefault(require("./ui/datasource-table-view"));
|
|
40
|
+
var _assetsModal = _interopRequireWildcard(require("./ui/assets-modal"));
|
|
28
41
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
42
|
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; }
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.validateAql = exports.getWorkspaceId = exports.fetchObjectSchemas = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _linkingCommon = require("@atlaskit/linking-common");
|
|
11
|
+
var getWorkspaceId = /*#__PURE__*/function () {
|
|
12
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(hostname) {
|
|
13
|
+
var _workspaceDetailsResp;
|
|
14
|
+
var url, workspaceDetailsResponse;
|
|
15
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
16
|
+
while (1) switch (_context.prev = _context.next) {
|
|
17
|
+
case 0:
|
|
18
|
+
url = "".concat(hostname || '', "/rest/servicedesk/cmdb/latest/workspace");
|
|
19
|
+
_context.next = 3;
|
|
20
|
+
return (0, _linkingCommon.request)('get', url, undefined, undefined, [200, 201, 202, 203, 204]);
|
|
21
|
+
case 3:
|
|
22
|
+
workspaceDetailsResponse = _context.sent;
|
|
23
|
+
if ((_workspaceDetailsResp = workspaceDetailsResponse.results) !== null && _workspaceDetailsResp !== void 0 && _workspaceDetailsResp.length) {
|
|
24
|
+
_context.next = 6;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
throw new Error('No workspace results found');
|
|
28
|
+
case 6:
|
|
29
|
+
return _context.abrupt("return", workspaceDetailsResponse.results[0].id);
|
|
30
|
+
case 7:
|
|
31
|
+
case "end":
|
|
32
|
+
return _context.stop();
|
|
33
|
+
}
|
|
34
|
+
}, _callee);
|
|
35
|
+
}));
|
|
36
|
+
return function getWorkspaceId(_x) {
|
|
37
|
+
return _ref.apply(this, arguments);
|
|
38
|
+
};
|
|
39
|
+
}();
|
|
40
|
+
exports.getWorkspaceId = getWorkspaceId;
|
|
41
|
+
var validateAql = function validateAql(workspaceId, data, hostname) {
|
|
42
|
+
var url = "".concat(hostname || '', "/gateway/api/jsm/assets/workspace/").concat(workspaceId, "/v1/aql/validate");
|
|
43
|
+
return (0, _linkingCommon.request)('post', url, {
|
|
44
|
+
qlQuery: data.qlQuery,
|
|
45
|
+
context: 'SMART_LINKS'
|
|
46
|
+
}, undefined, [200, 201, 202, 203, 204]);
|
|
47
|
+
};
|
|
48
|
+
exports.validateAql = validateAql;
|
|
49
|
+
var fetchObjectSchemas = function fetchObjectSchemas(workspaceId, hostname) {
|
|
50
|
+
var url = "".concat(hostname || '', "/gateway/api/jsm/assets/workspace/").concat(workspaceId, "/v1/objectschema/list?maxResults=100");
|
|
51
|
+
return (0, _linkingCommon.request)('get', url, undefined, undefined, [200, 201, 202, 203, 204]);
|
|
52
|
+
};
|
|
53
|
+
exports.fetchObjectSchemas = fetchObjectSchemas;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = exports.ASSETS_LIST_OF_LINKS_DATASOURCE_ID = void 0;
|
|
8
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(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; }
|
|
12
|
+
var ASSETS_LIST_OF_LINKS_DATASOURCE_ID = '361d618a-3c04-40ad-9b27-3c8ea6927020';
|
|
13
|
+
exports.ASSETS_LIST_OF_LINKS_DATASOURCE_ID = ASSETS_LIST_OF_LINKS_DATASOURCE_ID;
|
|
14
|
+
var LazyAssetsConfigModal = /*#__PURE__*/(0, _react.lazy)(function () {
|
|
15
|
+
return Promise.resolve().then(function () {
|
|
16
|
+
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_linkdatasource-assetsmodal" */'./modal'));
|
|
17
|
+
}).then(function (module) {
|
|
18
|
+
return {
|
|
19
|
+
default: module.AssetsConfigModal
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
var AssetsConfigModalWithWrappers = function AssetsConfigModalWithWrappers(props) {
|
|
24
|
+
return /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
25
|
+
fallback: /*#__PURE__*/_react.default.createElement("div", {
|
|
26
|
+
"data-testid": 'assets-aql-datasource-table-suspense'
|
|
27
|
+
})
|
|
28
|
+
}, /*#__PURE__*/_react.default.createElement(LazyAssetsConfigModal, props));
|
|
29
|
+
};
|
|
30
|
+
var _default = AssetsConfigModalWithWrappers;
|
|
31
|
+
exports.default = _default;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.AssetsConfigModal = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
var _react2 = require("@emotion/react");
|
|
12
|
+
var _reactIntlNext = require("react-intl-next");
|
|
13
|
+
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
14
|
+
var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
|
|
15
|
+
var _useDatasourceTableState = require("../../../hooks/useDatasourceTableState");
|
|
16
|
+
var _messages = require("./messages");
|
|
17
|
+
var _renderAssetsContent = require("./render-assets-content");
|
|
18
|
+
var _styled = require("./styled");
|
|
19
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
|
+
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; }
|
|
21
|
+
/** @jsx jsx */
|
|
22
|
+
|
|
23
|
+
var AssetsConfigModal = function AssetsConfigModal(props) {
|
|
24
|
+
var datasourceId = props.datasourceId,
|
|
25
|
+
initialParameters = props.parameters,
|
|
26
|
+
onCancel = props.onCancel;
|
|
27
|
+
var _useState = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql),
|
|
28
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 1),
|
|
29
|
+
aql = _useState2[0];
|
|
30
|
+
var _useState3 = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId),
|
|
31
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 1),
|
|
32
|
+
schemaId = _useState4[0];
|
|
33
|
+
var parameters = (0, _react.useMemo)(function () {
|
|
34
|
+
return {
|
|
35
|
+
aql: aql || '',
|
|
36
|
+
schemaId: schemaId || '',
|
|
37
|
+
workspaceId: '' /* TODO FLY-1240: Add workspace Id */
|
|
38
|
+
};
|
|
39
|
+
}, [aql, schemaId]);
|
|
40
|
+
var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)({
|
|
41
|
+
datasourceId: datasourceId,
|
|
42
|
+
parameters: parameters
|
|
43
|
+
}),
|
|
44
|
+
status = _useDatasourceTableSt.status,
|
|
45
|
+
responseItems = _useDatasourceTableSt.responseItems;
|
|
46
|
+
var isDisabled = status === 'rejected' || status === 'loading' || status === 'empty' || status === 'resolved' && !responseItems.length;
|
|
47
|
+
var onInsertPressed = (0, _react.useCallback)(function () {
|
|
48
|
+
/* Placeholder for inserting of ADF, to do in FLY-1241 */
|
|
49
|
+
}, []);
|
|
50
|
+
return (0, _react2.jsx)(_modalDialog.ModalTransition, null, (0, _react2.jsx)(_modalDialog.default, {
|
|
51
|
+
testId: 'asset-datasource-modal',
|
|
52
|
+
onClose: onCancel,
|
|
53
|
+
width: "x-large",
|
|
54
|
+
shouldScrollInViewport: true
|
|
55
|
+
}, (0, _react2.jsx)(_modalDialog.ModalHeader, null, (0, _react2.jsx)(_modalDialog.ModalTitle, null)), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(_styled.ModalContentContainer, null, (0, _react2.jsx)(_renderAssetsContent.RenderAssetsContent, {
|
|
56
|
+
status: status,
|
|
57
|
+
responseItems: responseItems
|
|
58
|
+
}))), (0, _react2.jsx)(_modalDialog.ModalFooter, null, (0, _react2.jsx)(_standardButton.default, {
|
|
59
|
+
appearance: "default",
|
|
60
|
+
onClick: onCancel
|
|
61
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.cancelButtonText)), (0, _react2.jsx)(_standardButton.default, {
|
|
62
|
+
appearance: "primary",
|
|
63
|
+
onClick: onInsertPressed,
|
|
64
|
+
isDisabled: isDisabled,
|
|
65
|
+
testId: 'asset-datasource-modal--insert-button'
|
|
66
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesButtonText)))));
|
|
67
|
+
};
|
|
68
|
+
exports.AssetsConfigModal = AssetsConfigModal;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.modalMessages = void 0;
|
|
7
|
+
var _reactIntlNext = require("react-intl-next");
|
|
8
|
+
var modalMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
+
cancelButtonText: {
|
|
10
|
+
id: 'linkDataSource.assets.configmodal.cancelButtonText',
|
|
11
|
+
description: 'Button text to close the modal with no changes being made',
|
|
12
|
+
defaultMessage: 'Cancel'
|
|
13
|
+
},
|
|
14
|
+
insertIssuesButtonText: {
|
|
15
|
+
id: 'linkDataSource.assets.configmodal.insertIssuesButtonText',
|
|
16
|
+
description: 'Button text to insert the displayed content',
|
|
17
|
+
defaultMessage: 'Insert objects'
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
exports.modalMessages = modalMessages;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.RenderAssetsContent = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _modalLoadingError = require("../../../common/error-state/modal-loading-error");
|
|
10
|
+
var _noResults = require("../../../common/error-state/no-results");
|
|
11
|
+
var _issueLikeTable = require("../../../issue-like-table");
|
|
12
|
+
var RenderAssetsContent = function RenderAssetsContent(props) {
|
|
13
|
+
var status = props.status,
|
|
14
|
+
responseItems = props.responseItems;
|
|
15
|
+
var resolvedWithNoResults = status === 'resolved' && !responseItems.length;
|
|
16
|
+
if (status === 'rejected') {
|
|
17
|
+
return /*#__PURE__*/_react.default.createElement(_modalLoadingError.ModalLoadingError, null);
|
|
18
|
+
} else if (resolvedWithNoResults) {
|
|
19
|
+
return /*#__PURE__*/_react.default.createElement(_noResults.NoResults, null);
|
|
20
|
+
} else if (status === 'empty') {
|
|
21
|
+
return /*#__PURE__*/_react.default.createElement(_issueLikeTable.EmptyState, {
|
|
22
|
+
testId: "assets-aql-datasource-modal--empty-state"
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement("p", null, "TODO add IssueLikeDataTableView component.");
|
|
26
|
+
};
|
|
27
|
+
exports.RenderAssetsContent = RenderAssetsContent;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ModalContentContainer = void 0;
|
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
|
+
var _templateObject;
|
|
11
|
+
var ModalContentContainer = _styled.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: 'grid';\n height: '420px';\n overflow: 'auto';\n"])));
|
|
12
|
+
exports.ModalContentContainer = ModalContentContainer;
|
|
@@ -41,7 +41,7 @@ var ModalLoadingError = function ModalLoadingError(_ref) {
|
|
|
41
41
|
css: errorMessageStyles
|
|
42
42
|
}, (0, _react.jsx)(_reactIntlNext.FormattedMessage, _messages.loadingErrorMessages.unableToLoadResults)), (0, _react.jsx)("p", {
|
|
43
43
|
css: errorDescriptionStyles
|
|
44
|
-
}, (0, _react.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.loadingErrorMessages.checkConnectionWithSource, {
|
|
44
|
+
}, url ? (0, _react.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.loadingErrorMessages.checkConnectionWithSource, {
|
|
45
45
|
values: {
|
|
46
46
|
a: function a(chunk) {
|
|
47
47
|
return (0, _react.jsx)("a", {
|
|
@@ -49,6 +49,6 @@ var ModalLoadingError = function ModalLoadingError(_ref) {
|
|
|
49
49
|
}, chunk);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
})))));
|
|
52
|
+
})) : (0, _react.jsx)(_reactIntlNext.FormattedMessage, _messages.loadingErrorMessages.checkConnection))));
|
|
53
53
|
};
|
|
54
54
|
exports.ModalLoadingError = ModalLoadingError;
|
package/dist/cjs/version.json
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { fetchObjectSchemas, getWorkspaceId } from '../services/cmdbService';
|
|
3
|
+
// TODO: Pass in localhost:3000 for testing locally - remember to remove this code after
|
|
4
|
+
// You must also have a proxy server running to forward requests from http://localhost:3000 to a JSM premium url
|
|
5
|
+
export const useAssetsClient = hostname => {
|
|
6
|
+
const [objectSchemas, setObjectSchemas] = useState();
|
|
7
|
+
const [workspaceId, setWorkspaceId] = useState();
|
|
8
|
+
const [error, setError] = useState();
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
(async () => {
|
|
11
|
+
try {
|
|
12
|
+
const workspaceId = await getWorkspaceId(hostname);
|
|
13
|
+
const objectSchemasResponse = await fetchObjectSchemas(workspaceId, hostname);
|
|
14
|
+
setWorkspaceId(workspaceId);
|
|
15
|
+
setObjectSchemas(objectSchemasResponse.values);
|
|
16
|
+
} catch (err) {
|
|
17
|
+
if (err instanceof Error) {
|
|
18
|
+
setError(err);
|
|
19
|
+
} else {
|
|
20
|
+
setError(new Error('Unexpected error occured'));
|
|
21
|
+
// eslint-disable-next-line no-console
|
|
22
|
+
console.error(err);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
})();
|
|
26
|
+
}, [hostname]);
|
|
27
|
+
return {
|
|
28
|
+
workspaceId,
|
|
29
|
+
objectSchemas,
|
|
30
|
+
error
|
|
31
|
+
};
|
|
32
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useCallback, useState } from 'react';
|
|
2
|
+
import { validateAql } from '../services/cmdbService';
|
|
3
|
+
export const useValidateAqlText = (workspaceId, hostname) => {
|
|
4
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
5
|
+
const validateAqlText = useCallback(async aql => {
|
|
6
|
+
setIsLoading(true);
|
|
7
|
+
const validateAqlResponse = await validateAql(workspaceId, {
|
|
8
|
+
qlQuery: aql
|
|
9
|
+
}, hostname);
|
|
10
|
+
setIsLoading(false);
|
|
11
|
+
return validateAqlResponse.isValid;
|
|
12
|
+
}, [hostname, workspaceId]);
|
|
13
|
+
return {
|
|
14
|
+
validateAqlText,
|
|
15
|
+
isLoading
|
|
16
|
+
};
|
|
17
|
+
};
|
package/dist/es2019/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { default as JiraIssuesConfigModal } from './ui/jira-issues-modal';
|
|
2
2
|
export { default as DatasourceTableView } from './ui/datasource-table-view';
|
|
3
|
-
export {
|
|
3
|
+
export { default as JSMAssetsConfigModal } from './ui/assets-modal';
|
|
4
|
+
export { JIRA_LIST_OF_LINKS_DATASOURCE_ID } from './ui/jira-issues-modal';
|
|
5
|
+
export { ASSETS_LIST_OF_LINKS_DATASOURCE_ID } from './ui/assets-modal';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { request } from '@atlaskit/linking-common';
|
|
2
|
+
export const getWorkspaceId = async hostname => {
|
|
3
|
+
var _workspaceDetailsResp;
|
|
4
|
+
const url = `${hostname || ''}/rest/servicedesk/cmdb/latest/workspace`;
|
|
5
|
+
const workspaceDetailsResponse = await request('get', url, undefined, undefined, [200, 201, 202, 203, 204]);
|
|
6
|
+
if (!((_workspaceDetailsResp = workspaceDetailsResponse.results) !== null && _workspaceDetailsResp !== void 0 && _workspaceDetailsResp.length)) {
|
|
7
|
+
throw new Error('No workspace results found');
|
|
8
|
+
}
|
|
9
|
+
return workspaceDetailsResponse.results[0].id;
|
|
10
|
+
};
|
|
11
|
+
export const validateAql = (workspaceId, data, hostname) => {
|
|
12
|
+
const url = `${hostname || ''}/gateway/api/jsm/assets/workspace/${workspaceId}/v1/aql/validate`;
|
|
13
|
+
return request('post', url, {
|
|
14
|
+
qlQuery: data.qlQuery,
|
|
15
|
+
context: 'SMART_LINKS'
|
|
16
|
+
}, undefined, [200, 201, 202, 203, 204]);
|
|
17
|
+
};
|
|
18
|
+
export const fetchObjectSchemas = (workspaceId, hostname) => {
|
|
19
|
+
const url = `${hostname || ''}/gateway/api/jsm/assets/workspace/${workspaceId}/v1/objectschema/list?maxResults=100`;
|
|
20
|
+
return request('get', url, undefined, undefined, [200, 201, 202, 203, 204]);
|
|
21
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { lazy, Suspense } from 'react';
|
|
2
|
+
export const ASSETS_LIST_OF_LINKS_DATASOURCE_ID = '361d618a-3c04-40ad-9b27-3c8ea6927020';
|
|
3
|
+
const LazyAssetsConfigModal = /*#__PURE__*/lazy(() => import( /* webpackChunkName: "@atlaskit-internal_linkdatasource-assetsmodal" */'./modal').then(module => ({
|
|
4
|
+
default: module.AssetsConfigModal
|
|
5
|
+
})));
|
|
6
|
+
const AssetsConfigModalWithWrappers = props => {
|
|
7
|
+
return /*#__PURE__*/React.createElement(Suspense, {
|
|
8
|
+
fallback: /*#__PURE__*/React.createElement("div", {
|
|
9
|
+
"data-testid": 'assets-aql-datasource-table-suspense'
|
|
10
|
+
})
|
|
11
|
+
}, /*#__PURE__*/React.createElement(LazyAssetsConfigModal, props));
|
|
12
|
+
};
|
|
13
|
+
export default AssetsConfigModalWithWrappers;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
import { FormattedMessage } from 'react-intl-next';
|
|
5
|
+
import Button from '@atlaskit/button/standard-button';
|
|
6
|
+
import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
|
|
7
|
+
import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
|
|
8
|
+
import { modalMessages } from './messages';
|
|
9
|
+
import { RenderAssetsContent } from './render-assets-content';
|
|
10
|
+
import { ModalContentContainer } from './styled';
|
|
11
|
+
export const AssetsConfigModal = props => {
|
|
12
|
+
const {
|
|
13
|
+
datasourceId,
|
|
14
|
+
parameters: initialParameters,
|
|
15
|
+
onCancel
|
|
16
|
+
} = props;
|
|
17
|
+
const [aql] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql);
|
|
18
|
+
const [schemaId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId);
|
|
19
|
+
const parameters = useMemo(() => ({
|
|
20
|
+
aql: aql || '',
|
|
21
|
+
schemaId: schemaId || '',
|
|
22
|
+
workspaceId: '' /* TODO FLY-1240: Add workspace Id */
|
|
23
|
+
}), [aql, schemaId]);
|
|
24
|
+
const {
|
|
25
|
+
status,
|
|
26
|
+
responseItems
|
|
27
|
+
} = useDatasourceTableState({
|
|
28
|
+
datasourceId,
|
|
29
|
+
parameters
|
|
30
|
+
});
|
|
31
|
+
const isDisabled = status === 'rejected' || status === 'loading' || status === 'empty' || status === 'resolved' && !responseItems.length;
|
|
32
|
+
const onInsertPressed = useCallback(() => {
|
|
33
|
+
/* Placeholder for inserting of ADF, to do in FLY-1241 */
|
|
34
|
+
}, []);
|
|
35
|
+
return jsx(ModalTransition, null, jsx(Modal, {
|
|
36
|
+
testId: 'asset-datasource-modal',
|
|
37
|
+
onClose: onCancel,
|
|
38
|
+
width: "x-large",
|
|
39
|
+
shouldScrollInViewport: true
|
|
40
|
+
}, jsx(ModalHeader, null, jsx(ModalTitle, null)), jsx(ModalBody, null, jsx(ModalContentContainer, null, jsx(RenderAssetsContent, {
|
|
41
|
+
status: status,
|
|
42
|
+
responseItems: responseItems
|
|
43
|
+
}))), jsx(ModalFooter, null, jsx(Button, {
|
|
44
|
+
appearance: "default",
|
|
45
|
+
onClick: onCancel
|
|
46
|
+
}, jsx(FormattedMessage, modalMessages.cancelButtonText)), jsx(Button, {
|
|
47
|
+
appearance: "primary",
|
|
48
|
+
onClick: onInsertPressed,
|
|
49
|
+
isDisabled: isDisabled,
|
|
50
|
+
testId: 'asset-datasource-modal--insert-button'
|
|
51
|
+
}, jsx(FormattedMessage, modalMessages.insertIssuesButtonText)))));
|
|
52
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
export const modalMessages = defineMessages({
|
|
3
|
+
cancelButtonText: {
|
|
4
|
+
id: 'linkDataSource.assets.configmodal.cancelButtonText',
|
|
5
|
+
description: 'Button text to close the modal with no changes being made',
|
|
6
|
+
defaultMessage: 'Cancel'
|
|
7
|
+
},
|
|
8
|
+
insertIssuesButtonText: {
|
|
9
|
+
id: 'linkDataSource.assets.configmodal.insertIssuesButtonText',
|
|
10
|
+
description: 'Button text to insert the displayed content',
|
|
11
|
+
defaultMessage: 'Insert objects'
|
|
12
|
+
}
|
|
13
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ModalLoadingError } from '../../../common/error-state/modal-loading-error';
|
|
3
|
+
import { NoResults } from '../../../common/error-state/no-results';
|
|
4
|
+
import { EmptyState } from '../../../issue-like-table';
|
|
5
|
+
export const RenderAssetsContent = props => {
|
|
6
|
+
const {
|
|
7
|
+
status,
|
|
8
|
+
responseItems
|
|
9
|
+
} = props;
|
|
10
|
+
const resolvedWithNoResults = status === 'resolved' && !responseItems.length;
|
|
11
|
+
if (status === 'rejected') {
|
|
12
|
+
return /*#__PURE__*/React.createElement(ModalLoadingError, null);
|
|
13
|
+
} else if (resolvedWithNoResults) {
|
|
14
|
+
return /*#__PURE__*/React.createElement(NoResults, null);
|
|
15
|
+
} else if (status === 'empty') {
|
|
16
|
+
return /*#__PURE__*/React.createElement(EmptyState, {
|
|
17
|
+
testId: "assets-aql-datasource-modal--empty-state"
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return /*#__PURE__*/React.createElement("p", null, "TODO add IssueLikeDataTableView component.");
|
|
21
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|