@authme/core 2.2.0-rc.6 → 2.2.0-rc.8

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 CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [2.2.0-rc.8](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.7...v2.2.0-rc.8) (2022-12-07)
6
+
7
+ ## [2.2.0-rc.7](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.6...v2.2.0-rc.7) (2022-12-07)
8
+
5
9
  ## [2.2.0-rc.6](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.5...v2.2.0-rc.6) (2022-12-05)
6
10
 
7
11
  ## [2.2.0-rc.5](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.4...v2.2.0-rc.5) (2022-12-03)
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@authme/core",
3
- "version": "2.2.0-rc.6",
3
+ "version": "2.2.0-rc.8",
4
4
  "main": "./src/index.js",
5
5
  "typings": "./src/index.d.ts",
6
6
  "dependencies": {},
7
7
  "peerDependencies": {
8
- "@authme/util": "2.2.0-rc.6",
8
+ "@authme/util": "2.2.0-rc.8",
9
9
  "three": "^0.136.0",
10
10
  "tslib": "^2.3.0"
11
11
  }
@@ -6,4 +6,11 @@ export interface RequestOptions {
6
6
  [param: string]: string;
7
7
  };
8
8
  }
9
- export declare function sendRequest(url: string, method?: string, body?: any, contentType?: string): Promise<any>;
9
+ export declare function sendRequest<TResp = any>(url: string, method?: string, { body, contentType, expectedResponseContentTypes, accessToken, baseUrl, sdkInfo, }?: {
10
+ body?: unknown;
11
+ contentType?: string;
12
+ expectedResponseContentTypes?: string[];
13
+ accessToken?: string;
14
+ baseUrl?: string;
15
+ sdkInfo?: string;
16
+ }): Promise<TResp>;
@@ -4,40 +4,111 @@ exports.sendRequest = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const util_1 = require("@authme/util");
6
6
  const model_1 = require("../model");
7
- function sendRequest(url, method = 'GET', body = null, contentType = 'application/json') {
7
+ function tryLoadAndParseJsonAsync(response) {
8
8
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
- const options = {
10
- method,
11
- body,
12
- headers: {
13
- Authorization: util_1.Storage.getItem('token')
14
- ? 'Bearer ' + util_1.Storage.getItem('token')
15
- : '',
16
- 'Content-Type': contentType,
17
- 'sdk-info': `sdk-version: ${util_1.Storage.getItem('SDKVersion')};${(0, util_1.getUserAgent)()}`,
18
- },
19
- };
20
- if (contentType === 'multipart/form-data') {
21
- delete options.headers['Content-Type'];
22
- }
23
- const normalizedUrl = new URL(url, util_1.Storage.getItem('apiBaseUrl') || '');
9
+ try {
10
+ return [undefined, yield response.json()];
11
+ }
12
+ catch (error) {
13
+ return [error, undefined];
14
+ }
15
+ });
16
+ }
17
+ function tryLoadAndParseTextAsync(response) {
18
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
19
+ try {
20
+ return [undefined, yield response.text()];
21
+ }
22
+ catch (error) {
23
+ return [error, undefined];
24
+ }
25
+ });
26
+ }
27
+ function tryLoadArrayBufferAsync(response) {
28
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
29
+ try {
30
+ return [undefined, yield response.arrayBuffer()];
31
+ }
32
+ catch (error) {
33
+ return [error, undefined];
34
+ }
35
+ });
36
+ }
37
+ function sendRequest(url, method = 'GET', { body = undefined, contentType = 'application/json', expectedResponseContentTypes = null,
38
+ // 可以透過代入 null 的方式來取消預設值。
39
+ accessToken = util_1.Storage.getItem('token'), baseUrl = util_1.Storage.getItem('apiBaseUrl'), sdkInfo = [
40
+ `sdk-version: ${util_1.Storage.getItem('SDKVersion')}`,
41
+ (0, util_1.getUserAgent)(),
42
+ ].join(';'), } = {}) {
43
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
44
+ const options = Object.assign(Object.assign({ method }, (typeof body !== undefined ? { body: body } : {})), { headers: Object.assign(Object.assign(Object.assign({}, (accessToken
45
+ ? {
46
+ Authorization: 'Bearer ' + accessToken,
47
+ }
48
+ : {})), (typeof body !== 'undefined' && contentType !== 'multipart/form-data'
49
+ ? {
50
+ 'Content-Type': contentType,
51
+ }
52
+ : {})), (sdkInfo ? { 'sdk-info': sdkInfo } : {})) });
24
53
  let resp;
25
54
  try {
55
+ const normalizedUrl = baseUrl ? new URL(url, baseUrl).toString() : url;
26
56
  resp = yield fetch(normalizedUrl.toString(), options);
27
57
  }
28
58
  catch (error) {
29
59
  throw new model_1.AuthmeError(model_1.ErrorCode.NETWORK_ERROR, error);
30
60
  }
31
- if (resp === null || resp === void 0 ? void 0 : resp.ok) {
32
- return resp.json();
61
+ const responseContentType = resp.headers.has('content-type')
62
+ ? resp.headers.get('content-type')
63
+ : undefined;
64
+ const errorMessages = [];
65
+ let parsedError;
66
+ let responseContent;
67
+ if (!responseContentType) {
68
+ [parsedError, responseContent] = [undefined, undefined];
69
+ }
70
+ else if (responseContentType.indexOf('application/json') >= 0) {
71
+ [parsedError, responseContent] = yield tryLoadAndParseJsonAsync(resp);
72
+ }
73
+ else if (responseContentType.indexOf('text/json') >= 0) {
74
+ [parsedError, responseContent] = yield tryLoadAndParseJsonAsync(resp);
75
+ }
76
+ else if (responseContentType.indexOf('text/') >= 0) {
77
+ [parsedError, responseContent] = yield tryLoadAndParseTextAsync(resp);
78
+ }
79
+ else if (responseContentType.indexOf('application/javascript') >= 0) {
80
+ [parsedError, responseContent] = yield tryLoadAndParseTextAsync(resp);
33
81
  }
34
82
  else {
83
+ [parsedError, responseContent] = yield tryLoadArrayBufferAsync(resp);
84
+ }
85
+ if (!resp.ok) {
86
+ errorMessages.push('status code not in the range 200-299');
87
+ }
88
+ if (parsedError) {
89
+ errorMessages.push('parsedError when load/parse response');
90
+ }
91
+ if (expectedResponseContentTypes) {
92
+ if (!responseContentType ||
93
+ expectedResponseContentTypes.every((v) => responseContentType.indexOf(v) < 0)) {
94
+ errorMessages.push(`responseContentType: expected value = ${responseContentType}` +
95
+ `, but actual value = ${responseContentType}`);
96
+ }
97
+ }
98
+ if (errorMessages.length !== 0) {
35
99
  throw new model_1.AuthmeError(model_1.ErrorCode.HTTP_ERROR_RESPONSE, {
36
- status: resp.status,
37
- ok: resp.ok,
38
- error: yield resp.json(),
100
+ errorMessages,
101
+ meta: {
102
+ status: resp.status,
103
+ ok: resp.ok,
104
+ url,
105
+ responseContentType,
106
+ responseContent,
107
+ parsedError,
108
+ },
39
109
  });
40
110
  }
111
+ return responseContent;
41
112
  });
42
113
  }
43
114
  exports.sendRequest = sendRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/data-access/http-client.ts"],"names":[],"mappings":";;;;AAAA,uCAAqD;AACrD,oCAAkD;AAOlD,SAAsB,WAAW,CAC/B,GAAW,EACX,MAAM,GAAG,KAAK,EACd,OAAY,IAAI,EAChB,WAAW,GAAG,kBAAkB;;QAEhC,MAAM,OAAO,GAAG;YACd,MAAM;YACN,IAAI;YACJ,OAAO,EAAE;gBACP,aAAa,EAAE,cAAO,CAAC,OAAO,CAAC,OAAO,CAAC;oBACrC,CAAC,CAAC,SAAS,GAAG,cAAO,CAAC,OAAO,CAAC,OAAO,CAAC;oBACtC,CAAC,CAAC,EAAE;gBACN,cAAc,EAAE,WAAW;gBAC3B,UAAU,EAAE,gBAAgB,cAAO,CAAC,OAAO,CACzC,YAAY,CACb,IAAI,IAAA,mBAAY,GAAE,EAAE;aACtB;SACF,CAAC;QACF,IAAI,WAAW,KAAK,qBAAqB,EAAE;YACzC,OAAQ,OAAe,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SACjD;QACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,cAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC;QACT,IAAI;YACF,IAAI,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;SACvD;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,mBAAW,CAAC,iBAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;SACvD;QAED,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,EAAE;YACZ,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;SACpB;aAAM;YACL,MAAM,IAAI,mBAAW,CAAC,iBAAS,CAAC,mBAAmB,EAAE;gBACnD,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;aACzB,CAAC,CAAC;SACJ;IACH,CAAC;CAAA;AAvCD,kCAuCC"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/data-access/http-client.ts"],"names":[],"mappings":"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"}