@resolution/atlassian-api-common 0.6.2 → 0.6.3
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/lib/fetch/common/index.d.ts +19 -0
- package/lib/fetch/common/index.js +51 -1
- package/lib/fetch/common/index.js.map +1 -1
- package/lib/fetch/createAceFetch.js +4 -2
- package/lib/fetch/createAceFetch.js.map +1 -1
- package/lib/fetch/createApFetch.js +11 -4
- package/lib/fetch/createApFetch.js.map +1 -1
- package/lib/fetch/createForgeApiExternalFetch.js +1 -10
- package/lib/fetch/createForgeApiExternalFetch.js.map +1 -1
- package/lib/fetch/createForgeApiFetch.js +1 -10
- package/lib/fetch/createForgeApiFetch.js.map +1 -1
- package/lib/fetch/createForgeBridgeFetch.js +1 -10
- package/lib/fetch/createForgeBridgeFetch.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.6.3](https://bitbucket.org/resolutiongmbh/atlassian-api-clients/compare/v0.6.2...v0.6.3) (2024-09-10)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* handle incorrect http response from Atlassian API: empty body with json content-type ([dfb35f2](https://bitbucket.org/resolutiongmbh/atlassian-api-clients/commits/dfb35f289df15f148ba39510736af9f882d0e035))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [0.6.2](https://bitbucket.org/resolutiongmbh/atlassian-api-clients/compare/v0.6.1...v0.6.2) (2024-09-05)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -1,2 +1,21 @@
|
|
|
1
|
+
import type { APIResponse } from "@forge/api";
|
|
2
|
+
import type { CommonHttpClientFetchResponseBody } from "api-typescript-generator/openapi-client";
|
|
1
3
|
export declare const contentTypeHeaderName = "content-type";
|
|
4
|
+
export declare const contentLengthHeaderName = "content-length";
|
|
5
|
+
export declare const emptyJsonResponseBody: CommonHttpClientFetchResponseBody;
|
|
2
6
|
export declare const isJsonMediaType: (mediaType: string) => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Atlassian API Endpoints contradict HTTP specification by returning `content-length: 0`
|
|
9
|
+
* and empty body for JSON responses.
|
|
10
|
+
* This function helps to handle such cases across different fetch implementations.
|
|
11
|
+
*/
|
|
12
|
+
export declare function shouldReturnEmptyJsonResponseBody(
|
|
13
|
+
/** Content type raw header value. */
|
|
14
|
+
contentType: string | undefined | null,
|
|
15
|
+
/** Content length raw header value. */
|
|
16
|
+
contentLength: string | undefined | null): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Helper function to get response body from fetch response.
|
|
19
|
+
* Uses `shouldReturnEmptyJsonResponseBody()` to handle Atlassian API Endpoints specifics.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getResponseBodyFromFetchResponse(response: Response | APIResponse): Promise<CommonHttpClientFetchResponseBody>;
|
|
@@ -1,7 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isJsonMediaType = exports.contentTypeHeaderName = void 0;
|
|
12
|
+
exports.getResponseBodyFromFetchResponse = exports.shouldReturnEmptyJsonResponseBody = exports.isJsonMediaType = exports.emptyJsonResponseBody = exports.contentLengthHeaderName = exports.contentTypeHeaderName = void 0;
|
|
4
13
|
exports.contentTypeHeaderName = "content-type";
|
|
14
|
+
exports.contentLengthHeaderName = "content-length";
|
|
15
|
+
exports.emptyJsonResponseBody = {
|
|
16
|
+
type: "json",
|
|
17
|
+
data: null,
|
|
18
|
+
};
|
|
5
19
|
const isJsonMediaType = (mediaType) => Boolean(mediaType.match(/^application\/(\w+\+)?json/));
|
|
6
20
|
exports.isJsonMediaType = isJsonMediaType;
|
|
21
|
+
/**
|
|
22
|
+
* Atlassian API Endpoints contradict HTTP specification by returning `content-length: 0`
|
|
23
|
+
* and empty body for JSON responses.
|
|
24
|
+
* This function helps to handle such cases across different fetch implementations.
|
|
25
|
+
*/
|
|
26
|
+
function shouldReturnEmptyJsonResponseBody(
|
|
27
|
+
/** Content type raw header value. */
|
|
28
|
+
contentType,
|
|
29
|
+
/** Content length raw header value. */
|
|
30
|
+
contentLength) {
|
|
31
|
+
return Boolean(contentType && (0, exports.isJsonMediaType)(contentType) && contentLength === "0");
|
|
32
|
+
}
|
|
33
|
+
exports.shouldReturnEmptyJsonResponseBody = shouldReturnEmptyJsonResponseBody;
|
|
34
|
+
/**
|
|
35
|
+
* Helper function to get response body from fetch response.
|
|
36
|
+
* Uses `shouldReturnEmptyJsonResponseBody()` to handle Atlassian API Endpoints specifics.
|
|
37
|
+
*/
|
|
38
|
+
function getResponseBodyFromFetchResponse(response) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
const contentType = response.headers.get(exports.contentTypeHeaderName);
|
|
41
|
+
const contentLength = response.headers.get(exports.contentLengthHeaderName);
|
|
42
|
+
if (shouldReturnEmptyJsonResponseBody(contentType, contentLength)) {
|
|
43
|
+
return exports.emptyJsonResponseBody;
|
|
44
|
+
}
|
|
45
|
+
return contentType && (0, exports.isJsonMediaType)(contentType)
|
|
46
|
+
? {
|
|
47
|
+
type: "json",
|
|
48
|
+
data: yield response.json(),
|
|
49
|
+
}
|
|
50
|
+
: {
|
|
51
|
+
type: "blob",
|
|
52
|
+
data: new Blob([yield response.arrayBuffer()]),
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
exports.getResponseBodyFromFetchResponse = getResponseBodyFromFetchResponse;
|
|
7
57
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fetch/common/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fetch/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGa,QAAA,qBAAqB,GAAG,cAAc,CAAC;AACvC,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AAE3C,QAAA,qBAAqB,GAAsC;IACtE,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,IAAI;CACX,CAAC;AAEK,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAW,EAAE,CAC5D,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;AAD5C,QAAA,eAAe,mBAC6B;AAEzD;;;;GAIG;AACH,SAAgB,iCAAiC;AAC/C,qCAAqC;AACrC,WAAsC;AACtC,uCAAuC;AACvC,aAAwC;IAExC,OAAO,OAAO,CACZ,WAAW,IAAI,IAAA,uBAAe,EAAC,WAAW,CAAC,IAAI,aAAa,KAAK,GAAG,CACrE,CAAC;AACJ,CAAC;AATD,8EASC;AAED;;;GAGG;AACH,SAAsB,gCAAgC,CACpD,QAAgC;;QAEhC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAAqB,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAAuB,CAAC,CAAC;QAEpE,IAAI,iCAAiC,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC;YAClE,OAAO,6BAAqB,CAAC;QAC/B,CAAC;QAED,OAAO,WAAW,IAAI,IAAA,uBAAe,EAAC,WAAW,CAAC;YAChD,CAAC,CAAC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAC5B;YACH,CAAC,CAAC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;aAC/C,CAAC;IACR,CAAC;CAAA;AAnBD,4EAmBC"}
|
|
@@ -21,7 +21,7 @@ function createAceFetch({ ace, clientKey, userAccountId, }) {
|
|
|
21
21
|
return function aceFetch(url, request) {
|
|
22
22
|
const lowerMethodName = toLowerCase(request.method);
|
|
23
23
|
if (lowerMethodName === "connect" || lowerMethodName === "options") {
|
|
24
|
-
throw new Error(`${request.method} is not supported
|
|
24
|
+
throw new Error(`${request.method} is not supported.`);
|
|
25
25
|
}
|
|
26
26
|
const methodName = lowerMethodName === "delete" ? "del" : lowerMethodName;
|
|
27
27
|
return new Promise((resolve, reject) => {
|
|
@@ -45,7 +45,9 @@ function createAceFetch({ ace, clientKey, userAccountId, }) {
|
|
|
45
45
|
statusText: response.statusMessage,
|
|
46
46
|
customRequestProps: request.customRequestProps,
|
|
47
47
|
ok: response.statusCode >= 200 && response.statusCode < 300,
|
|
48
|
-
body:
|
|
48
|
+
body: (0, common_1.shouldReturnEmptyJsonResponseBody)(response.headers[common_1.contentTypeHeaderName], response.headers[common_1.contentLengthHeaderName])
|
|
49
|
+
? common_1.emptyJsonResponseBody
|
|
50
|
+
: { type: "blob", data: getBlob(body) },
|
|
49
51
|
});
|
|
50
52
|
});
|
|
51
53
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAceFetch.js","sourceRoot":"","sources":["../../src/fetch/createAceFetch.ts"],"names":[],"mappings":";;;AAOA,
|
|
1
|
+
{"version":3,"file":"createAceFetch.js","sourceRoot":"","sources":["../../src/fetch/createAceFetch.ts"],"names":[],"mappings":";;;AAOA,qCAKkB;AAsBlB;;GAEG;AACH,SAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,SAAS,EACT,aAAa,GACO;IACpB,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9D,IAAI,aAAa,EAAE,CAAC;QAClB,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS,WAAW,CAAmB,KAAQ;QAC7C,OAAO,KAAK,CAAC,WAAW,EAAkB,CAAC;IAC7C,CAAC;IAED,SAAS,OAAO,CAAC,MAAc;QAC7B,OAAO,IAAI,IAAI,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,KAAK,CACjB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CACtC;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,QAAQ,CACtB,GAAQ,EACR,OAAqC;QAErC,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,oBAAoB,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;QAE1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,cAAc,GAClB,EAAE,CAAC;YAEL,IACE,OAAO,CAAC,OAAO,CAAC,8BAAqB,CAAC,KAAK,SAAS;gBACpD,OAAO,CAAC,OAAO,CAAC,8BAAqB,CAAC,CAAC,QAAQ,CAC7C,qBAAqB,CACtB,KAAK,IAAI,EACV,CAAC;gBACD,cAAc,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACrC,CAAC;YAED,mEAAmE;YACnE,UAAU,CAAC,UAAU,CAAC,+BAElB,GAAG,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,EACnC,OAAO,EAAE,OAAO,CAAC,OAAO,IACrB,cAAc,KACjB,cAAc,EAAE,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAC7C,QAAQ,EAAE,IAAI,KAEhB,CACE,KAAwB,EACxB,QAAyB,EACzB,IAAsB,EACtB,EAAE;gBACF,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;gBAED,OAAO,CAAC;oBACN,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;oBAC9B,OAAO,EAAE,QAAQ,CAAC,OAAiC;oBACnD,MAAM,EAAE,QAAQ,CAAC,UAAU;oBAC3B,UAAU,EAAE,QAAQ,CAAC,aAAa;oBAClC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;oBAC9C,EAAE,EAAE,QAAQ,CAAC,UAAU,IAAI,GAAG,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG;oBAC3D,IAAI,EAAE,IAAA,0CAAiC,EACrC,QAAQ,CAAC,OAAO,CAAC,8BAAqB,CAAC,EACvC,QAAQ,CAAC,OAAO,CAAC,gCAAuB,CAAC,CAC1C;wBACC,CAAC,CAAC,8BAAqB;wBACvB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAc,CAAC,EAAE;iBACpD,CAAC,CAAC;YACL,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AArFD,wCAqFC"}
|
|
@@ -11,6 +11,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.createApFetch = void 0;
|
|
13
13
|
const common_1 = require("./common");
|
|
14
|
+
function getResponseBody(headers, body) {
|
|
15
|
+
const contentType = headers[common_1.contentTypeHeaderName];
|
|
16
|
+
if (contentType && (0, common_1.isJsonMediaType)(contentType)) {
|
|
17
|
+
if ((0, common_1.shouldReturnEmptyJsonResponseBody)(contentType, headers[common_1.contentLengthHeaderName])) {
|
|
18
|
+
return common_1.emptyJsonResponseBody;
|
|
19
|
+
}
|
|
20
|
+
return { type: "json", data: JSON.parse(new TextDecoder().decode(body)) };
|
|
21
|
+
}
|
|
22
|
+
return { type: "blob", data: new Blob([body]) };
|
|
23
|
+
}
|
|
14
24
|
/**
|
|
15
25
|
* Creates a fetch function for AP-based API client.
|
|
16
26
|
*/
|
|
@@ -38,10 +48,7 @@ function createApFetch({ AP }) {
|
|
|
38
48
|
statusText: xhr.statusText,
|
|
39
49
|
customRequestProps: request.customRequestProps,
|
|
40
50
|
ok: xhr.status >= 200 && xhr.status < 300,
|
|
41
|
-
body: headers
|
|
42
|
-
(0, common_1.isJsonMediaType)(headers[common_1.contentTypeHeaderName])
|
|
43
|
-
? { type: "json", data: JSON.parse(textDecoder.decode(body)) }
|
|
44
|
-
: { type: "blob", data: new Blob([body]) },
|
|
51
|
+
body: getResponseBody(headers, body),
|
|
45
52
|
};
|
|
46
53
|
}
|
|
47
54
|
const textDecoder = new TextDecoder();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createApFetch.js","sourceRoot":"","sources":["../../src/fetch/createApFetch.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createApFetch.js","sourceRoot":"","sources":["../../src/fetch/createApFetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,22 +24,13 @@ exports.createForgeApiExternalFetch = void 0;
|
|
|
24
24
|
const common_1 = require("./common");
|
|
25
25
|
function createForgeApiExternalFetch({ fetch, }) {
|
|
26
26
|
return function forgeBridgeFetch(url, request) {
|
|
27
|
-
var _a;
|
|
28
27
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
28
|
const requestProps = __rest(request, []);
|
|
30
29
|
const requestInit = requestProps;
|
|
31
30
|
const response = yield fetch(url.toString(), Object.assign(Object.assign({}, requestInit), { headers: request.headers,
|
|
32
31
|
// Body types should be compatible.
|
|
33
32
|
body: request.body }));
|
|
34
|
-
const body = (0, common_1.
|
|
35
|
-
? {
|
|
36
|
-
type: "json",
|
|
37
|
-
data: yield response.json(),
|
|
38
|
-
}
|
|
39
|
-
: {
|
|
40
|
-
type: "blob",
|
|
41
|
-
data: new Blob([yield response.arrayBuffer()]),
|
|
42
|
-
};
|
|
33
|
+
const body = yield (0, common_1.getResponseBodyFromFetchResponse)(response);
|
|
43
34
|
const headers = {};
|
|
44
35
|
response.headers.forEach((value, key) => {
|
|
45
36
|
headers[key] = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createForgeApiExternalFetch.js","sourceRoot":"","sources":["../../src/fetch/createForgeApiExternalFetch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createForgeApiExternalFetch.js","sourceRoot":"","sources":["../../src/fetch/createForgeApiExternalFetch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA,qCAA4D;AAkB5D,SAAgB,2BAA2B,CAAC,EAC1C,KAAK,GAC4B;IACjC,OAAO,SAAe,gBAAgB,CACpC,GAAQ,EACR,OAAqC;;YAErC,MAAW,YAAY,UAAK,OAAO,EAA7B,EAAmB,CAAU,CAAC;YACpC,MAAM,WAAW,GAAgB,YAAY,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kCACtC,WAAW,KACd,OAAO,EAAE,OAAO,CAAC,OAAiC;gBAClD,mCAAmC;gBACnC,IAAI,EAAE,OAAO,CAAC,IAAa,IAC3B,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAA,yCAAgC,EAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAoC,EAAE,CAAC;YACpD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,IACE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI;gBAC3C,cAAc,IAAI,QAAQ,CAAC,OAAO,EAClC,CAAC;gBACD,OAAO,CAAC,YAAY,CAAC,GACnB,QAAQ,CAAC,OAGV,CAAC,YAAY,EAAE,CAAC;YACnB,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,IAAI;gBACJ,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACnB,OAAO;gBACP,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;aAC/C,CAAC;QACJ,CAAC;KAAA,CAAC;AACJ,CAAC;AAxCD,kEAwCC"}
|
|
@@ -16,20 +16,11 @@ const common_1 = require("./common");
|
|
|
16
16
|
*/
|
|
17
17
|
function createForgeApiFetch({ forgeApi, asApp, }) {
|
|
18
18
|
return function forgeApiFetch(url, request) {
|
|
19
|
-
var _a;
|
|
20
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
20
|
const response = yield (asApp ? forgeApi.asApp() : forgeApi.asUser()).requestJira(forgeApi.assumeTrustedRoute(`${url.pathname}${url.search}`), Object.assign(Object.assign({}, request), {
|
|
22
21
|
// Forge API package uses BodyInit from `node-fetch` package, which is a bit different to the native one.
|
|
23
22
|
body: request.body }));
|
|
24
|
-
const body = (0, common_1.
|
|
25
|
-
? {
|
|
26
|
-
type: "json",
|
|
27
|
-
data: yield response.json(),
|
|
28
|
-
}
|
|
29
|
-
: {
|
|
30
|
-
type: "blob",
|
|
31
|
-
data: new Blob([yield response.arrayBuffer()]),
|
|
32
|
-
};
|
|
23
|
+
const body = yield (0, common_1.getResponseBodyFromFetchResponse)(response);
|
|
33
24
|
const headers = {};
|
|
34
25
|
response.headers.forEach((value, key) => {
|
|
35
26
|
headers[key] = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createForgeApiFetch.js","sourceRoot":"","sources":["../../src/fetch/createForgeApiFetch.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createForgeApiFetch.js","sourceRoot":"","sources":["../../src/fetch/createForgeApiFetch.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,qCAA4D;AAkB5D;;GAEG;AACH,SAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,KAAK,GACoB;IACzB,OAAO,SAAe,aAAa,CACjC,GAAQ,EACR,OAAqC;;YAErC,MAAM,QAAQ,GAAG,MAAM,CACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAC7C,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,kCACpE,OAAO;gBACV,yGAAyG;gBACzG,IAAI,EAAE,OAAO,CAAC,IAAa,IAC3B,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAA,yCAAgC,EAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAoC,EAAE,CAAC;YACpD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,IACE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI;gBAC3C,cAAc,IAAI,QAAQ,CAAC,OAAO,EAClC,CAAC;gBACD,OAAO,CAAC,YAAY,CAAC,GACnB,QAAQ,CAAC,OAGV,CAAC,YAAY,EAAE,CAAC;YACnB,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,IAAI;gBACJ,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACnB,OAAO;gBACP,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;aAC/C,CAAC;QACJ,CAAC;KAAA,CAAC;AACJ,CAAC;AAxCD,kDAwCC"}
|
|
@@ -28,20 +28,11 @@ const createConfluenceForgeBridgeFetch = ({ requestConfluence, }) => createForge
|
|
|
28
28
|
exports.createConfluenceForgeBridgeFetch = createConfluenceForgeBridgeFetch;
|
|
29
29
|
function createForgeBridgeFetch({ bridgeRequest, }) {
|
|
30
30
|
return function forgeBridgeFetch(url, request) {
|
|
31
|
-
var _a;
|
|
32
31
|
return __awaiter(this, void 0, void 0, function* () {
|
|
33
32
|
const requestProps = __rest(request, []);
|
|
34
33
|
const requestInit = requestProps;
|
|
35
34
|
const response = yield bridgeRequest(`${url.pathname}${url.search}`, requestInit);
|
|
36
|
-
const body = (0, index_1.
|
|
37
|
-
? {
|
|
38
|
-
type: "json",
|
|
39
|
-
data: yield response.json(),
|
|
40
|
-
}
|
|
41
|
-
: {
|
|
42
|
-
type: "blob",
|
|
43
|
-
data: yield response.blob(),
|
|
44
|
-
};
|
|
35
|
+
const body = yield (0, index_1.getResponseBodyFromFetchResponse)(response);
|
|
45
36
|
const headers = {};
|
|
46
37
|
response.headers.forEach((value, key) => {
|
|
47
38
|
headers[key] = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createForgeBridgeFetch.js","sourceRoot":"","sources":["../../src/fetch/createForgeBridgeFetch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createForgeBridgeFetch.js","sourceRoot":"","sources":["../../src/fetch/createForgeBridgeFetch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA,0CAAkE;AAoB3D,MAAM,0BAA0B,GAAG,CAAC,EACzC,WAAW,GACqB,EAAE,EAAE,CACpC,sBAAsB,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;AAH5C,QAAA,0BAA0B,8BAGkB;AAElD,MAAM,gCAAgC,GAAG,CAAC,EAC/C,iBAAiB,GACqB,EAAE,EAAE,CAC1C,sBAAsB,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAHlD,QAAA,gCAAgC,oCAGkB;AAQ/D,SAAS,sBAAsB,CAAC,EAC9B,aAAa,GACe;IAC5B,OAAO,SAAe,gBAAgB,CACpC,GAAQ,EACR,OAAqC;;YAErC,MAAW,YAAY,UAAK,OAAO,EAA7B,EAAmB,CAAU,CAAC;YACpC,MAAM,WAAW,GAAgB,YAAY,CAAC;YAC9C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,EAC9B,WAAW,CACZ,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAA,wCAAgC,EAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAoC,EAAE,CAAC;YACpD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,IACE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI;gBAC3C,cAAc,IAAI,QAAQ,CAAC,OAAO,EAClC,CAAC;gBACD,OAAO,CAAC,YAAY,CAAC,GACnB,QAAQ,CAAC,OAGV,CAAC,YAAY,EAAE,CAAC;YACnB,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,IAAI;gBACJ,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,OAAO;gBACP,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;aAC/C,CAAC;QACJ,CAAC;KAAA,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@resolution/atlassian-api-common",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"description": "Shared code across different implementations of Atlassian API Clients.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "14e65aed940693ca5c816a1b92c73af214dee803"
|
|
47
47
|
}
|