@atlaskit/editor-card-provider 1.0.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 +11 -0
- package/LICENSE.md +13 -0
- package/README.md +16 -0
- package/dist/cjs/api.js +89 -0
- package/dist/cjs/environments.js +46 -0
- package/dist/cjs/index.js +18 -0
- package/dist/cjs/provider.js +480 -0
- package/dist/cjs/transformer.js +60 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/utils.js +24 -0
- package/dist/cjs/version.json +5 -0
- package/dist/es2019/api.js +37 -0
- package/dist/es2019/environments.js +36 -0
- package/dist/es2019/index.js +1 -0
- package/dist/es2019/provider.js +182 -0
- package/dist/es2019/transformer.js +37 -0
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/utils.js +20 -0
- package/dist/es2019/version.json +5 -0
- package/dist/esm/api.js +82 -0
- package/dist/esm/environments.js +36 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/provider.js +467 -0
- package/dist/esm/transformer.js +52 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils.js +17 -0
- package/dist/esm/version.json +5 -0
- package/dist/types/api.d.ts +5 -0
- package/dist/types/environments.d.ts +13 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/provider.d.ts +32 -0
- package/dist/types/transformer.d.ts +7 -0
- package/dist/types/types.d.ts +34 -0
- package/dist/types/utils.d.ts +3 -0
- package/package.json +44 -0
- package/report.api.md +77 -0
- package/tmp/api-report-tmp.d.ts +44 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# @atlaskit/editor-card-provider
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [`12223b3ee04`](https://bitbucket.org/atlassian/atlassian-frontend/commits/12223b3ee04) - Move EditorCardProvider to new package instead of using imports from Link Provider and Smart Card
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright 2022 Atlassian Pty Ltd
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# @atlaskit/editor-card-provider
|
|
2
|
+
This package is designed to be used with the editor.
|
|
3
|
+
|
|
4
|
+
## Usage
|
|
5
|
+
|
|
6
|
+
```Typescript
|
|
7
|
+
import { EditorCardProvider } from '@atlaskit/editor-card-provider'
|
|
8
|
+
|
|
9
|
+
// Default usage
|
|
10
|
+
const provider = new EditorCardProvider('stg');
|
|
11
|
+
|
|
12
|
+
// You may also pass in a base url override, if you'd like EditorCardProvider
|
|
13
|
+
// to make requests other than api-private.atlassian.com (prod) or pug.jira-dev.com (stg)
|
|
14
|
+
const provider = new EditorCardProvider('stg', 'www.acme.com/your-api-here');
|
|
15
|
+
|
|
16
|
+
```
|
package/dist/cjs/api.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.NetworkError = void 0;
|
|
8
|
+
exports.request = request;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
16
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
17
|
+
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
18
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
20
|
+
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); }; }
|
|
21
|
+
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; } }
|
|
22
|
+
var ALLOWED_RESPONSE_STATUS_CODES = [200, 401, 404];
|
|
23
|
+
var NetworkError = /*#__PURE__*/function (_Error) {
|
|
24
|
+
(0, _inherits2.default)(NetworkError, _Error);
|
|
25
|
+
var _super = _createSuper(NetworkError);
|
|
26
|
+
function NetworkError(error) {
|
|
27
|
+
(0, _classCallCheck2.default)(this, NetworkError);
|
|
28
|
+
return _super.call(this, error);
|
|
29
|
+
}
|
|
30
|
+
return (0, _createClass2.default)(NetworkError);
|
|
31
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error)); // NOTE: This is copied from @atlaskit/link-provider as we are in the middle of a deprecation.
|
|
32
|
+
// To read more, see https://hello.atlassian.net/browse/ENGHEALTH-661
|
|
33
|
+
// Also: https://product-fabric.atlassian.net/browse/EDM-5755
|
|
34
|
+
exports.NetworkError = NetworkError;
|
|
35
|
+
function request(_x, _x2, _x3, _x4) {
|
|
36
|
+
return _request.apply(this, arguments);
|
|
37
|
+
}
|
|
38
|
+
function _request() {
|
|
39
|
+
_request = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(method, url, data, headers) {
|
|
40
|
+
var requestConfig, response;
|
|
41
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
42
|
+
while (1) {
|
|
43
|
+
switch (_context.prev = _context.next) {
|
|
44
|
+
case 0:
|
|
45
|
+
requestConfig = _objectSpread({
|
|
46
|
+
method: method,
|
|
47
|
+
credentials: 'include',
|
|
48
|
+
headers: _objectSpread({
|
|
49
|
+
Accept: 'application/json',
|
|
50
|
+
'Cache-Control': 'no-cache',
|
|
51
|
+
'Content-Type': 'application/json'
|
|
52
|
+
}, headers)
|
|
53
|
+
}, data ? {
|
|
54
|
+
body: JSON.stringify(data)
|
|
55
|
+
} : {});
|
|
56
|
+
_context.prev = 1;
|
|
57
|
+
_context.next = 4;
|
|
58
|
+
return fetch(url, requestConfig);
|
|
59
|
+
case 4:
|
|
60
|
+
response = _context.sent;
|
|
61
|
+
if (!(response.ok || ALLOWED_RESPONSE_STATUS_CODES.includes(response.status))) {
|
|
62
|
+
_context.next = 9;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
_context.next = 8;
|
|
66
|
+
return response.json();
|
|
67
|
+
case 8:
|
|
68
|
+
return _context.abrupt("return", _context.sent);
|
|
69
|
+
case 9:
|
|
70
|
+
throw response;
|
|
71
|
+
case 12:
|
|
72
|
+
_context.prev = 12;
|
|
73
|
+
_context.t0 = _context["catch"](1);
|
|
74
|
+
if (!(typeof _context.t0 === 'string' || _context.t0 instanceof TypeError)) {
|
|
75
|
+
_context.next = 16;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
throw new NetworkError(_context.t0);
|
|
79
|
+
case 16:
|
|
80
|
+
throw _context.t0;
|
|
81
|
+
case 17:
|
|
82
|
+
case "end":
|
|
83
|
+
return _context.stop();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}, _callee, null, [[1, 12]]);
|
|
87
|
+
}));
|
|
88
|
+
return _request.apply(this, arguments);
|
|
89
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getResolverUrl = exports.getBaseUrl = exports.default = exports.BaseUrls = void 0;
|
|
7
|
+
// NOTE: This is copied from @atlaskit/link-provider.
|
|
8
|
+
// This should be moved into @atlaskit/linking-common, to be done in
|
|
9
|
+
// https://product-fabric.atlassian.net/browse/EDM-6042
|
|
10
|
+
var devBaseUrl = 'https://api-private.dev.atlassian.com';
|
|
11
|
+
var stgBaseUrl = 'https://pug.jira-dev.com/gateway/api';
|
|
12
|
+
var prodBaseUrl = 'https://api-private.atlassian.com';
|
|
13
|
+
var BaseUrls = {
|
|
14
|
+
dev: devBaseUrl,
|
|
15
|
+
development: devBaseUrl,
|
|
16
|
+
stg: stgBaseUrl,
|
|
17
|
+
staging: stgBaseUrl,
|
|
18
|
+
prd: prodBaseUrl,
|
|
19
|
+
prod: prodBaseUrl,
|
|
20
|
+
production: prodBaseUrl
|
|
21
|
+
};
|
|
22
|
+
exports.BaseUrls = BaseUrls;
|
|
23
|
+
var getBaseUrl = function getBaseUrl(envKey) {
|
|
24
|
+
// If an environment is provided, then use Stargate.
|
|
25
|
+
if (envKey) {
|
|
26
|
+
return envKey in BaseUrls ? BaseUrls[envKey] : prodBaseUrl;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Otherwise, use the current origin of the page.
|
|
30
|
+
return window.location.origin;
|
|
31
|
+
};
|
|
32
|
+
exports.getBaseUrl = getBaseUrl;
|
|
33
|
+
var getResolverUrl = function getResolverUrl(envKey, baseUrlOverride) {
|
|
34
|
+
// If an environment is provided, then use Stargate directly for requests.
|
|
35
|
+
if (envKey || baseUrlOverride) {
|
|
36
|
+
var baseUrl = baseUrlOverride || getBaseUrl(envKey);
|
|
37
|
+
return "".concat(baseUrl, "/object-resolver");
|
|
38
|
+
} else {
|
|
39
|
+
// Otherwise, we fallback to using the Edge Proxy to access Stargate,
|
|
40
|
+
// which fixes some cookie issues with strict Browser policies.
|
|
41
|
+
return '/gateway/api/object-resolver';
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.getResolverUrl = getResolverUrl;
|
|
45
|
+
var _default = BaseUrls;
|
|
46
|
+
exports.default = _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "EditorCardProvider", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _provider.EditorCardProvider;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "editorCardProvider", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _provider.editorCardProvider;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
var _provider = require("./provider");
|
|
@@ -0,0 +1,480 @@
|
|
|
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.editorCardProvider = exports.EditorCardProvider = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
+
require("setimmediate");
|
|
15
|
+
var _dataloader = _interopRequireDefault(require("dataloader"));
|
|
16
|
+
var _linkingCommon = require("@atlaskit/linking-common");
|
|
17
|
+
var _transformer = require("./transformer");
|
|
18
|
+
var _environments = require("./environments");
|
|
19
|
+
var _utils = require("./utils");
|
|
20
|
+
var _linkProvider = require("@atlaskit/link-provider");
|
|
21
|
+
var api = _interopRequireWildcard(require("./api"));
|
|
22
|
+
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); }
|
|
23
|
+
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; }
|
|
24
|
+
// import setimmediate to temporary fix dataloader 2.0.0 bug
|
|
25
|
+
// @see https://github.com/graphql/dataloader/issues/249
|
|
26
|
+
|
|
27
|
+
var BATCH_WAIT_TIME = 50;
|
|
28
|
+
var isJiraRoadMap = function isJiraRoadMap(url) {
|
|
29
|
+
return url.match(/^https:\/\/.*?\/jira\/software\/(c\/)?projects\/[^\/]+?\/boards\/.*?\/roadmap\/?/);
|
|
30
|
+
};
|
|
31
|
+
var isPolarisView = function isPolarisView(url) {
|
|
32
|
+
return url.match(/^https:\/\/.*?\/jira\/polaris\/projects\/[^\/]+?\/ideas\/view\/\d+$|^https:\/\/.*?\/secure\/JiraProductDiscoveryAnonymous\.jspa\?hash=\w+|^https:\/\/.*?\/jira\/polaris\/share\/\w+/);
|
|
33
|
+
};
|
|
34
|
+
var isJwmView = function isJwmView(url) {
|
|
35
|
+
return url.match(/^https:\/\/.*?\/jira\/core\/projects\/[^\/]+?\/(timeline|calendar|list|board|summary|(form\/[^\/]+?))\/?/);
|
|
36
|
+
};
|
|
37
|
+
var isGiphyMedia = function isGiphyMedia(url) {
|
|
38
|
+
return url.match(/^https:\/\/(.*?\.)?giphy\.com\/(gifs|media|clips)\//);
|
|
39
|
+
};
|
|
40
|
+
var isProformaView = function isProformaView(url) {
|
|
41
|
+
return url.match(/^https:\/\/[^/]+\/jira\/(core|software(\/c)?|servicedesk)\/projects\/\w+\/forms\/form\/direct\/\d+\/\d+.*$/);
|
|
42
|
+
};
|
|
43
|
+
var EditorCardProvider = /*#__PURE__*/function () {
|
|
44
|
+
function EditorCardProvider(envKey, baseUrlOverride) {
|
|
45
|
+
var _this = this;
|
|
46
|
+
(0, _classCallCheck2.default)(this, EditorCardProvider);
|
|
47
|
+
this.baseUrl = baseUrlOverride || (0, _environments.getBaseUrl)(envKey);
|
|
48
|
+
this.resolverUrl = (0, _environments.getResolverUrl)(envKey, baseUrlOverride);
|
|
49
|
+
this.transformer = new _transformer.Transformer();
|
|
50
|
+
this.requestHeaders = {
|
|
51
|
+
Origin: this.baseUrl
|
|
52
|
+
};
|
|
53
|
+
this.providersLoader = new _dataloader.default(function (keys) {
|
|
54
|
+
return _this.batchProviders(keys);
|
|
55
|
+
}, {
|
|
56
|
+
batchScheduleFn: function batchScheduleFn(callback) {
|
|
57
|
+
return setTimeout(callback, BATCH_WAIT_TIME);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
this.cardClient = new _linkProvider.CardClient(envKey, baseUrlOverride);
|
|
61
|
+
}
|
|
62
|
+
(0, _createClass2.default)(EditorCardProvider, [{
|
|
63
|
+
key: "batchProviders",
|
|
64
|
+
value: function () {
|
|
65
|
+
var _batchProviders = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(keys) {
|
|
66
|
+
var providersData;
|
|
67
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
68
|
+
while (1) {
|
|
69
|
+
switch (_context.prev = _context.next) {
|
|
70
|
+
case 0:
|
|
71
|
+
_context.next = 2;
|
|
72
|
+
return this.fetchProvidersData();
|
|
73
|
+
case 2:
|
|
74
|
+
providersData = _context.sent;
|
|
75
|
+
return _context.abrupt("return", keys.map(function () {
|
|
76
|
+
return providersData;
|
|
77
|
+
}));
|
|
78
|
+
case 4:
|
|
79
|
+
case "end":
|
|
80
|
+
return _context.stop();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, _callee, this);
|
|
84
|
+
}));
|
|
85
|
+
function batchProviders(_x) {
|
|
86
|
+
return _batchProviders.apply(this, arguments);
|
|
87
|
+
}
|
|
88
|
+
return batchProviders;
|
|
89
|
+
}()
|
|
90
|
+
}, {
|
|
91
|
+
key: "check",
|
|
92
|
+
value: function () {
|
|
93
|
+
var _check = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(resourceUrl) {
|
|
94
|
+
var response;
|
|
95
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
96
|
+
while (1) {
|
|
97
|
+
switch (_context2.prev = _context2.next) {
|
|
98
|
+
case 0:
|
|
99
|
+
_context2.prev = 0;
|
|
100
|
+
_context2.next = 3;
|
|
101
|
+
return this.cardClient.fetchData(resourceUrl);
|
|
102
|
+
case 3:
|
|
103
|
+
response = _context2.sent;
|
|
104
|
+
if (!((0, _utils.getStatus)(response) !== 'not_found')) {
|
|
105
|
+
_context2.next = 6;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
return _context2.abrupt("return", true);
|
|
109
|
+
case 6:
|
|
110
|
+
_context2.next = 11;
|
|
111
|
+
break;
|
|
112
|
+
case 8:
|
|
113
|
+
_context2.prev = 8;
|
|
114
|
+
_context2.t0 = _context2["catch"](0);
|
|
115
|
+
return _context2.abrupt("return", false);
|
|
116
|
+
case 11:
|
|
117
|
+
case "end":
|
|
118
|
+
return _context2.stop();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}, _callee2, this, [[0, 8]]);
|
|
122
|
+
}));
|
|
123
|
+
function check(_x2) {
|
|
124
|
+
return _check.apply(this, arguments);
|
|
125
|
+
}
|
|
126
|
+
return check;
|
|
127
|
+
}()
|
|
128
|
+
}, {
|
|
129
|
+
key: "fetchProvidersData",
|
|
130
|
+
value: function () {
|
|
131
|
+
var _fetchProvidersData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
132
|
+
var endpoint, response;
|
|
133
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
134
|
+
while (1) {
|
|
135
|
+
switch (_context3.prev = _context3.next) {
|
|
136
|
+
case 0:
|
|
137
|
+
endpoint = "".concat(this.resolverUrl, "/providers");
|
|
138
|
+
_context3.next = 3;
|
|
139
|
+
return api.request('post', endpoint, undefined, this.requestHeaders);
|
|
140
|
+
case 3:
|
|
141
|
+
response = _context3.sent;
|
|
142
|
+
return _context3.abrupt("return", {
|
|
143
|
+
patterns: response.providers.reduce(function (allSources, provider) {
|
|
144
|
+
return allSources.concat(provider.patterns);
|
|
145
|
+
}, []),
|
|
146
|
+
userPreferences: response.userPreferences
|
|
147
|
+
});
|
|
148
|
+
case 5:
|
|
149
|
+
case "end":
|
|
150
|
+
return _context3.stop();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}, _callee3, this);
|
|
154
|
+
}));
|
|
155
|
+
function fetchProvidersData() {
|
|
156
|
+
return _fetchProvidersData.apply(this, arguments);
|
|
157
|
+
}
|
|
158
|
+
return fetchProvidersData;
|
|
159
|
+
}()
|
|
160
|
+
}, {
|
|
161
|
+
key: "loadProviderData",
|
|
162
|
+
value: function () {
|
|
163
|
+
var _loadProviderData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
164
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
165
|
+
while (1) {
|
|
166
|
+
switch (_context4.prev = _context4.next) {
|
|
167
|
+
case 0:
|
|
168
|
+
_context4.prev = 0;
|
|
169
|
+
_context4.next = 3;
|
|
170
|
+
return this.providersLoader.load('providersData');
|
|
171
|
+
case 3:
|
|
172
|
+
this.providersData = _context4.sent;
|
|
173
|
+
_context4.next = 11;
|
|
174
|
+
break;
|
|
175
|
+
case 6:
|
|
176
|
+
_context4.prev = 6;
|
|
177
|
+
_context4.t0 = _context4["catch"](0);
|
|
178
|
+
// eslint-disable-next-line
|
|
179
|
+
console.error('failed to fetch /providers', _context4.t0);
|
|
180
|
+
this.providersLoader.clear('providerData');
|
|
181
|
+
return _context4.abrupt("return", undefined);
|
|
182
|
+
case 11:
|
|
183
|
+
case "end":
|
|
184
|
+
return _context4.stop();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}, _callee4, this, [[0, 6]]);
|
|
188
|
+
}));
|
|
189
|
+
function loadProviderData() {
|
|
190
|
+
return _loadProviderData.apply(this, arguments);
|
|
191
|
+
}
|
|
192
|
+
return loadProviderData;
|
|
193
|
+
}()
|
|
194
|
+
}, {
|
|
195
|
+
key: "findPattern",
|
|
196
|
+
value: function () {
|
|
197
|
+
var _findPattern = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(url) {
|
|
198
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
199
|
+
while (1) {
|
|
200
|
+
switch (_context5.prev = _context5.next) {
|
|
201
|
+
case 0:
|
|
202
|
+
_context5.next = 2;
|
|
203
|
+
return this.findPatternData(url);
|
|
204
|
+
case 2:
|
|
205
|
+
_context5.t0 = !!_context5.sent;
|
|
206
|
+
if (_context5.t0) {
|
|
207
|
+
_context5.next = 7;
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
_context5.next = 6;
|
|
211
|
+
return this.check(url);
|
|
212
|
+
case 6:
|
|
213
|
+
_context5.t0 = !!_context5.sent;
|
|
214
|
+
case 7:
|
|
215
|
+
return _context5.abrupt("return", _context5.t0);
|
|
216
|
+
case 8:
|
|
217
|
+
case "end":
|
|
218
|
+
return _context5.stop();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}, _callee5, this);
|
|
222
|
+
}));
|
|
223
|
+
function findPattern(_x3) {
|
|
224
|
+
return _findPattern.apply(this, arguments);
|
|
225
|
+
}
|
|
226
|
+
return findPattern;
|
|
227
|
+
}()
|
|
228
|
+
}, {
|
|
229
|
+
key: "doesUrlMatchPath",
|
|
230
|
+
value: function doesUrlMatchPath(path, url) {
|
|
231
|
+
// Using [a-zA-Z0-9] here instead of \w since that includes underscores
|
|
232
|
+
var startingRegex = new RegExp(/^[a-zA-Z0-9]/).test(path) ? '(^|[^a-zA-Z0-9])' : '';
|
|
233
|
+
var endingRegex = new RegExp(/[a-zA-Z0-9]$/).test(path) ? '($|[^a-zA-Z0-9])' : '';
|
|
234
|
+
var escapedPath = path.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
235
|
+
var regexPattern = new RegExp("".concat(startingRegex).concat(escapedPath).concat(endingRegex));
|
|
236
|
+
return regexPattern.test(url);
|
|
237
|
+
}
|
|
238
|
+
}, {
|
|
239
|
+
key: "findUserPreference",
|
|
240
|
+
value: function () {
|
|
241
|
+
var _findUserPreference = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(url) {
|
|
242
|
+
var _this$providersData,
|
|
243
|
+
_this2 = this;
|
|
244
|
+
var userPreferences, defaultAppearance, appearances, allMatchedLabeledAppearances, longestMatchedLabeledAppearance;
|
|
245
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
246
|
+
while (1) {
|
|
247
|
+
switch (_context6.prev = _context6.next) {
|
|
248
|
+
case 0:
|
|
249
|
+
if (this.providersData) {
|
|
250
|
+
_context6.next = 3;
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
_context6.next = 3;
|
|
254
|
+
return this.loadProviderData();
|
|
255
|
+
case 3:
|
|
256
|
+
userPreferences = (_this$providersData = this.providersData) === null || _this$providersData === void 0 ? void 0 : _this$providersData.userPreferences;
|
|
257
|
+
if (!userPreferences) {
|
|
258
|
+
_context6.next = 12;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
defaultAppearance = userPreferences.defaultAppearance, appearances = userPreferences.appearances;
|
|
262
|
+
allMatchedLabeledAppearances = appearances.filter(function (_ref) {
|
|
263
|
+
var urlSegment = _ref.urlSegment;
|
|
264
|
+
return _this2.doesUrlMatchPath(urlSegment, url);
|
|
265
|
+
});
|
|
266
|
+
if (!(allMatchedLabeledAppearances.length > 0)) {
|
|
267
|
+
_context6.next = 10;
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
longestMatchedLabeledAppearance = allMatchedLabeledAppearances.reduce(function (previousLabeledAppearance, currentLabeledAppearance) {
|
|
271
|
+
return previousLabeledAppearance.urlSegment.length > currentLabeledAppearance.urlSegment.length ? previousLabeledAppearance : currentLabeledAppearance;
|
|
272
|
+
});
|
|
273
|
+
return _context6.abrupt("return", longestMatchedLabeledAppearance.appearance);
|
|
274
|
+
case 10:
|
|
275
|
+
if (!(defaultAppearance !== 'inline')) {
|
|
276
|
+
_context6.next = 12;
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
return _context6.abrupt("return", defaultAppearance);
|
|
280
|
+
case 12:
|
|
281
|
+
case "end":
|
|
282
|
+
return _context6.stop();
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}, _callee6, this);
|
|
286
|
+
}));
|
|
287
|
+
function findUserPreference(_x4) {
|
|
288
|
+
return _findUserPreference.apply(this, arguments);
|
|
289
|
+
}
|
|
290
|
+
return findUserPreference;
|
|
291
|
+
}()
|
|
292
|
+
}, {
|
|
293
|
+
key: "findPatternData",
|
|
294
|
+
value: function () {
|
|
295
|
+
var _findPatternData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(url) {
|
|
296
|
+
var _this$providersData2;
|
|
297
|
+
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
298
|
+
while (1) {
|
|
299
|
+
switch (_context7.prev = _context7.next) {
|
|
300
|
+
case 0:
|
|
301
|
+
if (this.providersData) {
|
|
302
|
+
_context7.next = 3;
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
_context7.next = 3;
|
|
306
|
+
return this.loadProviderData();
|
|
307
|
+
case 3:
|
|
308
|
+
return _context7.abrupt("return", (_this$providersData2 = this.providersData) === null || _this$providersData2 === void 0 ? void 0 : _this$providersData2.patterns.find(function (pattern) {
|
|
309
|
+
return url.match(pattern.source);
|
|
310
|
+
}));
|
|
311
|
+
case 4:
|
|
312
|
+
case "end":
|
|
313
|
+
return _context7.stop();
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}, _callee7, this);
|
|
317
|
+
}));
|
|
318
|
+
function findPatternData(_x5) {
|
|
319
|
+
return _findPatternData.apply(this, arguments);
|
|
320
|
+
}
|
|
321
|
+
return findPatternData;
|
|
322
|
+
}()
|
|
323
|
+
}, {
|
|
324
|
+
key: "getHardCodedAppearance",
|
|
325
|
+
value: function getHardCodedAppearance(url) {
|
|
326
|
+
if (isJiraRoadMap(url) || isPolarisView(url) || isJwmView(url) || isGiphyMedia(url) || isProformaView(url)) {
|
|
327
|
+
return 'embed';
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Make a /resolve call and find out if result has embed capability
|
|
333
|
+
* @param url
|
|
334
|
+
* @private
|
|
335
|
+
*/
|
|
336
|
+
}, {
|
|
337
|
+
key: "canBeResolvedAsEmbed",
|
|
338
|
+
value: function () {
|
|
339
|
+
var _canBeResolvedAsEmbed = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(url) {
|
|
340
|
+
var details, data, preview;
|
|
341
|
+
return _regenerator.default.wrap(function _callee8$(_context8) {
|
|
342
|
+
while (1) {
|
|
343
|
+
switch (_context8.prev = _context8.next) {
|
|
344
|
+
case 0:
|
|
345
|
+
_context8.prev = 0;
|
|
346
|
+
_context8.next = 3;
|
|
347
|
+
return this.cardClient.fetchData(url);
|
|
348
|
+
case 3:
|
|
349
|
+
details = _context8.sent;
|
|
350
|
+
data = details && details.data;
|
|
351
|
+
if (data) {
|
|
352
|
+
_context8.next = 7;
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
return _context8.abrupt("return", false);
|
|
356
|
+
case 7:
|
|
357
|
+
if (!((0, _utils.getStatus)(details) !== 'resolved')) {
|
|
358
|
+
_context8.next = 9;
|
|
359
|
+
break;
|
|
360
|
+
}
|
|
361
|
+
return _context8.abrupt("return", false);
|
|
362
|
+
case 9:
|
|
363
|
+
preview = (0, _linkingCommon.extractPreview)(data, 'web');
|
|
364
|
+
return _context8.abrupt("return", !!preview);
|
|
365
|
+
case 13:
|
|
366
|
+
_context8.prev = 13;
|
|
367
|
+
_context8.t0 = _context8["catch"](0);
|
|
368
|
+
return _context8.abrupt("return", false);
|
|
369
|
+
case 16:
|
|
370
|
+
case "end":
|
|
371
|
+
return _context8.stop();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}, _callee8, this, [[0, 13]]);
|
|
375
|
+
}));
|
|
376
|
+
function canBeResolvedAsEmbed(_x6) {
|
|
377
|
+
return _canBeResolvedAsEmbed.apply(this, arguments);
|
|
378
|
+
}
|
|
379
|
+
return canBeResolvedAsEmbed;
|
|
380
|
+
}()
|
|
381
|
+
}, {
|
|
382
|
+
key: "resolve",
|
|
383
|
+
value: function () {
|
|
384
|
+
var _resolve = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(url, appearance, shouldForceAppearance) {
|
|
385
|
+
var hardCodedAppearance, _yield$Promise$all, _yield$Promise$all2, matchedProviderPattern, userPreference, isSupported, providerDefaultAppearance, preferredAppearance, canItBeEmbed;
|
|
386
|
+
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
387
|
+
while (1) {
|
|
388
|
+
switch (_context9.prev = _context9.next) {
|
|
389
|
+
case 0:
|
|
390
|
+
_context9.prev = 0;
|
|
391
|
+
if (!(shouldForceAppearance === true)) {
|
|
392
|
+
_context9.next = 3;
|
|
393
|
+
break;
|
|
394
|
+
}
|
|
395
|
+
return _context9.abrupt("return", this.transformer.toAdf(url, appearance));
|
|
396
|
+
case 3:
|
|
397
|
+
hardCodedAppearance = this.getHardCodedAppearance(url);
|
|
398
|
+
_context9.next = 6;
|
|
399
|
+
return Promise.all([this.findPatternData(url), this.findUserPreference(url)]);
|
|
400
|
+
case 6:
|
|
401
|
+
_yield$Promise$all = _context9.sent;
|
|
402
|
+
_yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2);
|
|
403
|
+
matchedProviderPattern = _yield$Promise$all2[0];
|
|
404
|
+
userPreference = _yield$Promise$all2[1];
|
|
405
|
+
if (!(shouldForceAppearance === false && userPreference === 'url')) {
|
|
406
|
+
_context9.next = 12;
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
return _context9.abrupt("return", Promise.reject(undefined));
|
|
410
|
+
case 12:
|
|
411
|
+
_context9.t0 = !!matchedProviderPattern;
|
|
412
|
+
if (_context9.t0) {
|
|
413
|
+
_context9.next = 17;
|
|
414
|
+
break;
|
|
415
|
+
}
|
|
416
|
+
_context9.next = 16;
|
|
417
|
+
return this.check(url);
|
|
418
|
+
case 16:
|
|
419
|
+
_context9.t0 = _context9.sent;
|
|
420
|
+
case 17:
|
|
421
|
+
isSupported = _context9.t0;
|
|
422
|
+
if (!isSupported) {
|
|
423
|
+
_context9.next = 27;
|
|
424
|
+
break;
|
|
425
|
+
}
|
|
426
|
+
providerDefaultAppearance = matchedProviderPattern === null || matchedProviderPattern === void 0 ? void 0 : matchedProviderPattern.defaultView;
|
|
427
|
+
preferredAppearance = shouldForceAppearance === undefined ?
|
|
428
|
+
// Ignore both User and provider's appearances if older editor that doesn't send shouldForceAppearance
|
|
429
|
+
hardCodedAppearance || appearance :
|
|
430
|
+
// User preferred appearance. It would be either one that has matching domain/path pattern OR
|
|
431
|
+
// if user's default choice is NOT "inline" (so, block or embed at this point, url was dealt with above)
|
|
432
|
+
userPreference ||
|
|
433
|
+
// If user's default choice is "inline" or user hasn't specified preferences at all,
|
|
434
|
+
// we check whatever one of the hardcoded providers match url (jira roadmap, polaris, etc)
|
|
435
|
+
hardCodedAppearance ||
|
|
436
|
+
// If non match, we see if this provider has default appearance for this particular regexp
|
|
437
|
+
providerDefaultAppearance ||
|
|
438
|
+
// If not, we pick what editor (or any other client) requested
|
|
439
|
+
appearance;
|
|
440
|
+
if (!(preferredAppearance === userPreference && userPreference === 'embed')) {
|
|
441
|
+
_context9.next = 26;
|
|
442
|
+
break;
|
|
443
|
+
}
|
|
444
|
+
_context9.next = 24;
|
|
445
|
+
return this.canBeResolvedAsEmbed(url);
|
|
446
|
+
case 24:
|
|
447
|
+
canItBeEmbed = _context9.sent;
|
|
448
|
+
if (!canItBeEmbed) {
|
|
449
|
+
preferredAppearance = 'inline';
|
|
450
|
+
}
|
|
451
|
+
case 26:
|
|
452
|
+
return _context9.abrupt("return", this.transformer.toAdf(url, preferredAppearance));
|
|
453
|
+
case 27:
|
|
454
|
+
_context9.next = 32;
|
|
455
|
+
break;
|
|
456
|
+
case 29:
|
|
457
|
+
_context9.prev = 29;
|
|
458
|
+
_context9.t1 = _context9["catch"](0);
|
|
459
|
+
// eslint-disable-next-line
|
|
460
|
+
console.warn("Error when trying to check Smart Card url \"".concat(url, "\"").concat(_context9.t1 instanceof Error ? " - ".concat(_context9.t1.name, " ").concat(_context9.t1.message) : ''), _context9.t1);
|
|
461
|
+
case 32:
|
|
462
|
+
return _context9.abrupt("return", Promise.reject(undefined));
|
|
463
|
+
case 33:
|
|
464
|
+
case "end":
|
|
465
|
+
return _context9.stop();
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}, _callee9, this, [[0, 29]]);
|
|
469
|
+
}));
|
|
470
|
+
function resolve(_x7, _x8, _x9) {
|
|
471
|
+
return _resolve.apply(this, arguments);
|
|
472
|
+
}
|
|
473
|
+
return resolve;
|
|
474
|
+
}()
|
|
475
|
+
}]);
|
|
476
|
+
return EditorCardProvider;
|
|
477
|
+
}();
|
|
478
|
+
exports.EditorCardProvider = EditorCardProvider;
|
|
479
|
+
var editorCardProvider = new EditorCardProvider();
|
|
480
|
+
exports.editorCardProvider = editorCardProvider;
|