@modern-js/create-request 2.0.0-beta.2 → 2.0.0-beta.4

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.
@@ -1,58 +1,187 @@
1
- import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
- var handleRes = /*#__PURE__*/function () {
4
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(res) {
5
- var contentType, data;
6
- return _regeneratorRuntime().wrap(function _callee$(_context) {
7
- while (1) {
8
- switch (_context.prev = _context.next) {
9
- case 0:
10
- contentType = res.headers.get('content-type'); // https://developer.mozilla.org/en-US/docs/Web/API/Response/ok
11
- if (res.ok) {
12
- _context.next = 7;
13
- break;
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
14
22
  }
15
- _context.next = 4;
16
- return res.json();
17
- case 4:
18
- data = _context.sent;
19
- res.data = data;
20
- throw res;
21
- case 7:
22
- if (!(contentType !== null && contentType !== void 0 && contentType.includes('application/json') || contentType !== null && contentType !== void 0 && contentType.includes('text/json'))) {
23
- _context.next = 9;
24
- break;
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
25
  }
26
- return _context.abrupt("return", res.json());
27
- case 9:
28
- if (!(contentType !== null && contentType !== void 0 && contentType.includes('text/html') || contentType !== null && contentType !== void 0 && contentType.includes('text/plain'))) {
29
- _context.next = 11;
30
- break;
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ function _instanceof(left, right) {
31
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
32
+ return !!right[Symbol.hasInstance](left);
33
+ } else {
34
+ return left instanceof right;
35
+ }
36
+ }
37
+ var __generator = this && this.__generator || function(thisArg, body) {
38
+ var f, y, t, g, _ = {
39
+ label: 0,
40
+ sent: function() {
41
+ if (t[0] & 1) throw t[1];
42
+ return t[1];
43
+ },
44
+ trys: [],
45
+ ops: []
46
+ };
47
+ return(g = {
48
+ next: verb(0),
49
+ "throw": verb(1),
50
+ "return": verb(2)
51
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
52
+ return this;
53
+ }), g);
54
+ function verb(n) {
55
+ return function(v) {
56
+ return step([
57
+ n,
58
+ v
59
+ ]);
60
+ };
61
+ }
62
+ function step(op) {
63
+ if (f) throw new TypeError("Generator is already executing.");
64
+ while(_)try {
65
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
66
+ if (y = 0, t) op = [
67
+ op[0] & 2,
68
+ t.value
69
+ ];
70
+ switch(op[0]){
71
+ case 0:
72
+ case 1:
73
+ t = op;
74
+ break;
75
+ case 4:
76
+ _.label++;
77
+ return {
78
+ value: op[1],
79
+ done: false
80
+ };
81
+ case 5:
82
+ _.label++;
83
+ y = op[1];
84
+ op = [
85
+ 0
86
+ ];
87
+ continue;
88
+ case 7:
89
+ op = _.ops.pop();
90
+ _.trys.pop();
91
+ continue;
92
+ default:
93
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
94
+ _ = 0;
95
+ continue;
96
+ }
97
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
98
+ _.label = op[1];
99
+ break;
100
+ }
101
+ if (op[0] === 6 && _.label < t[1]) {
102
+ _.label = t[1];
103
+ t = op;
104
+ break;
105
+ }
106
+ if (t && _.label < t[2]) {
107
+ _.label = t[2];
108
+ _.ops.push(op);
109
+ break;
110
+ }
111
+ if (t[2]) _.ops.pop();
112
+ _.trys.pop();
113
+ continue;
31
114
  }
32
- return _context.abrupt("return", res.text());
33
- case 11:
34
- if (!((contentType !== null && contentType !== void 0 && contentType.includes('application/x-www-form-urlencoded') || contentType !== null && contentType !== void 0 && contentType.includes('multipart/form-data')) && res instanceof Response)) {
35
- _context.next = 13;
36
- break;
37
- }
38
- return _context.abrupt("return", res.formData());
39
- case 13:
40
- if (!(contentType !== null && contentType !== void 0 && contentType.includes('application/octet-stream'))) {
41
- _context.next = 15;
42
- break;
43
- }
44
- return _context.abrupt("return", res.arrayBuffer());
45
- case 15:
46
- return _context.abrupt("return", res.text());
47
- case 16:
48
- case "end":
49
- return _context.stop();
115
+ op = body.call(thisArg, _);
116
+ } catch (e) {
117
+ op = [
118
+ 6,
119
+ e
120
+ ];
121
+ y = 0;
122
+ } finally{
123
+ f = t = 0;
50
124
  }
51
- }
52
- }, _callee);
53
- }));
54
- return function handleRes(_x) {
55
- return _ref.apply(this, arguments);
56
- };
125
+ if (op[0] & 5) throw op[1];
126
+ return {
127
+ value: op[0] ? op[1] : void 0,
128
+ done: true
129
+ };
130
+ }
131
+ };
132
+ var handleRes = function() {
133
+ var _ref = _asyncToGenerator(function(res) {
134
+ var contentType, data;
135
+ return __generator(this, function(_state) {
136
+ switch(_state.label){
137
+ case 0:
138
+ contentType = res.headers.get("content-type");
139
+ if (!!res.ok) return [
140
+ 3,
141
+ 2
142
+ ];
143
+ return [
144
+ 4,
145
+ res.json()
146
+ ];
147
+ case 1:
148
+ data = _state.sent();
149
+ res.data = data;
150
+ throw res;
151
+ case 2:
152
+ if ((contentType === null || contentType === void 0 ? void 0 : contentType.includes("application/json")) || (contentType === null || contentType === void 0 ? void 0 : contentType.includes("text/json"))) {
153
+ return [
154
+ 2,
155
+ res.json()
156
+ ];
157
+ }
158
+ if ((contentType === null || contentType === void 0 ? void 0 : contentType.includes("text/html")) || (contentType === null || contentType === void 0 ? void 0 : contentType.includes("text/plain"))) {
159
+ return [
160
+ 2,
161
+ res.text()
162
+ ];
163
+ }
164
+ if (((contentType === null || contentType === void 0 ? void 0 : contentType.includes("application/x-www-form-urlencoded")) || (contentType === null || contentType === void 0 ? void 0 : contentType.includes("multipart/form-data"))) && _instanceof(res, Response)) {
165
+ return [
166
+ 2,
167
+ res.formData()
168
+ ];
169
+ }
170
+ if (contentType === null || contentType === void 0 ? void 0 : contentType.includes("application/octet-stream")) {
171
+ return [
172
+ 2,
173
+ res.arrayBuffer()
174
+ ];
175
+ }
176
+ return [
177
+ 2,
178
+ res.text()
179
+ ];
180
+ }
181
+ });
182
+ });
183
+ return function handleRes(res) {
184
+ return _ref.apply(this, arguments);
185
+ };
57
186
  }();
58
- export { handleRes };
187
+ export { handleRes };
@@ -1,7 +1,36 @@
1
- import { isBrowser } from '@modern-js/utils';
1
+ function _arrayLikeToArray(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _arrayWithoutHoles(arr) {
7
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
8
+ }
9
+ function _iterableToArray(iter) {
10
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
11
+ }
12
+ function _nonIterableSpread() {
13
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
14
+ }
15
+ function _toConsumableArray(arr) {
16
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
17
+ }
18
+ function _unsupportedIterableToArray(o, minLen) {
19
+ if (!o) return;
20
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
21
+ var n = Object.prototype.toString.call(o).slice(8, -1);
22
+ if (n === "Object" && o.constructor) n = o.constructor.name;
23
+ if (n === "Map" || n === "Set") return Array.from(n);
24
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
25
+ }
26
+ import { isBrowser } from "@modern-js/utils";
2
27
  import { createRequest as browser } from "./browser";
3
28
  import { createRequest as node } from "./node";
4
- var createRequest = function createRequest() {
5
- return isBrowser() ? browser.apply(void 0, arguments) : node.apply(void 0, arguments);
29
+ var createRequest = function() {
30
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
31
+ args[_key] = arguments[_key];
32
+ }
33
+ return isBrowser() ? browser.apply(void 0, _toConsumableArray(args)) : node.apply(void 0, _toConsumableArray(args));
6
34
  };
7
- export default createRequest;
35
+ var src_default = createRequest;
36
+ export { src_default as default };
@@ -1,98 +1,126 @@
1
- import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
2
- import _typeof from "@babel/runtime/helpers/esm/typeof";
3
- import nodeFetch from 'node-fetch';
4
- import { compile, pathToRegexp } from 'path-to-regexp';
5
- import { useHeaders } from '@modern-js/utils/ssr';
6
- import qs from 'query-string';
1
+ function _arrayLikeToArray(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _arrayWithoutHoles(arr) {
7
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
8
+ }
9
+ function _iterableToArray(iter) {
10
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
11
+ }
12
+ function _nonIterableSpread() {
13
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
14
+ }
15
+ function _toConsumableArray(arr) {
16
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
17
+ }
18
+ function _unsupportedIterableToArray(o, minLen) {
19
+ if (!o) return;
20
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
21
+ var n = Object.prototype.toString.call(o).slice(8, -1);
22
+ if (n === "Object" && o.constructor) n = o.constructor.name;
23
+ if (n === "Map" || n === "Set") return Array.from(n);
24
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
25
+ }
26
+ import nodeFetch from "node-fetch";
27
+ import { compile, pathToRegexp } from "path-to-regexp";
28
+ import { useHeaders } from "@modern-js/utils/ssr";
29
+ import qs from "query-string";
7
30
  import { handleRes } from "./handleRes";
8
31
  var realRequest;
9
32
  var realAllowedHeaders = [];
10
- var originFetch = function originFetch() {
11
- return nodeFetch.apply(void 0, arguments).then(handleRes);
12
- };
13
- export var configure = function configure(options) {
14
- var request = options.request,
15
- interceptor = options.interceptor,
16
- allowedHeaders = options.allowedHeaders;
17
- realRequest = request || originFetch;
18
- if (interceptor && !request) {
19
- realRequest = interceptor(nodeFetch);
20
- }
21
- if (Array.isArray(allowedHeaders)) {
22
- realAllowedHeaders = allowedHeaders;
23
- }
24
- };
25
- export var createRequest = function createRequest(path, method, port) {
26
- var fetch = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : nodeFetch;
27
- var getFinalPath = compile(path, {
28
- encode: encodeURIComponent
29
- });
30
- var keys = [];
31
- pathToRegexp(path, keys);
32
- var sender = function sender() {
33
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34
- args[_key] = arguments[_key];
35
- }
36
- var webRequestHeaders = useHeaders();
37
- var payload = _typeof(args[args.length - 1]) === 'object' ? args[args.length - 1] : {};
38
- payload.params = payload.params || {};
39
- var requestParams = args[0];
40
- // 这种场景下是使用 schema,所以 params 要从 args[0] 中获取
41
- if (_typeof(requestParams) === 'object' && requestParams.params) {
42
- var params = requestParams.params;
43
- keys.forEach(function (key) {
44
- payload.params[key.name] = params[key.name];
45
- });
46
- } else {
47
- keys.forEach(function (key, index) {
48
- payload.params[key.name] = args[index];
49
- });
33
+ var originFetch = function() {
34
+ for(var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++){
35
+ params[_key] = arguments[_key];
50
36
  }
51
- var plainPath = getFinalPath(payload.params);
52
- var finalPath = payload.query ? "".concat(plainPath, "?").concat(qs.stringify(payload.query)) : plainPath;
53
- var headers = payload.headers || {};
54
- var body;
55
- var _iterator = _createForOfIteratorHelper(realAllowedHeaders),
56
- _step;
57
- try {
58
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
59
- var key = _step.value;
60
- if (typeof webRequestHeaders[key] !== 'undefined') {
61
- headers[key] = webRequestHeaders[key];
62
- }
63
- }
64
- } catch (err) {
65
- _iterator.e(err);
66
- } finally {
67
- _iterator.f();
37
+ return nodeFetch.apply(void 0, _toConsumableArray(params)).then(handleRes);
38
+ };
39
+ var configure = function(options) {
40
+ var request = options.request, interceptor = options.interceptor, allowedHeaders = options.allowedHeaders;
41
+ realRequest = request || originFetch;
42
+ if (interceptor && !request) {
43
+ realRequest = interceptor(nodeFetch);
68
44
  }
69
- if (payload.data) {
70
- headers['Content-Type'] = 'application/json';
71
- body = _typeof(payload.data) === 'object' ? JSON.stringify(payload.data) : payload.body;
72
- } else if (payload.body) {
73
- headers['Content-Type'] = 'text/plain';
74
- // eslint-disable-next-line prefer-destructuring
75
- body = payload.body;
76
- } else if (payload.formData) {
77
- body = payload.formData;
78
- // https://stackoverflow.com/questions/44919424/bad-content-type-header-no-multipart-boundary-nodejs
79
- // need multipart boundary auto attached by node-fetch when multipart is true
80
- // headers['Content-Type'] = 'multipart/form-data';
81
- } else if (payload.formUrlencoded) {
82
- headers['Content-Type'] = 'application/x-www-form-urlencoded';
83
- if (_typeof(payload.formUrlencoded) === 'object') {
84
- body = qs.stringify(payload.formUrlencoded);
85
- } else {
86
- body = payload.formUrlencoded;
87
- }
45
+ if (Array.isArray(allowedHeaders)) {
46
+ realAllowedHeaders = allowedHeaders;
88
47
  }
89
- var url = "http://localhost:".concat(port).concat(finalPath);
90
- var fetcher = realRequest || originFetch;
91
- return fetcher(url, {
92
- method: method,
93
- body: body,
94
- headers: headers
48
+ };
49
+ var createRequest = function(path, method, port) {
50
+ var fetch = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : nodeFetch;
51
+ var getFinalPath = compile(path, {
52
+ encode: encodeURIComponent
95
53
  });
96
- };
97
- return sender;
98
- };
54
+ var keys = [];
55
+ pathToRegexp(path, keys);
56
+ var sender = function() {
57
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
58
+ args[_key] = arguments[_key];
59
+ }
60
+ var webRequestHeaders = useHeaders();
61
+ var payload = typeof args[args.length - 1] === "object" ? args[args.length - 1] : {};
62
+ payload.params = payload.params || {};
63
+ var requestParams = args[0];
64
+ if (typeof requestParams === "object" && requestParams.params) {
65
+ var params = requestParams.params;
66
+ keys.forEach(function(key) {
67
+ payload.params[key.name] = params[key.name];
68
+ });
69
+ } else {
70
+ keys.forEach(function(key, index) {
71
+ payload.params[key.name] = args[index];
72
+ });
73
+ }
74
+ var plainPath = getFinalPath(payload.params);
75
+ var finalPath = payload.query ? "".concat(plainPath, "?").concat(qs.stringify(payload.query)) : plainPath;
76
+ var headers = payload.headers || {};
77
+ var body;
78
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
79
+ try {
80
+ for(var _iterator = realAllowedHeaders[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
81
+ var key = _step.value;
82
+ if (typeof webRequestHeaders[key] !== "undefined") {
83
+ headers[key] = webRequestHeaders[key];
84
+ }
85
+ }
86
+ } catch (err) {
87
+ _didIteratorError = true;
88
+ _iteratorError = err;
89
+ } finally{
90
+ try {
91
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
92
+ _iterator.return();
93
+ }
94
+ } finally{
95
+ if (_didIteratorError) {
96
+ throw _iteratorError;
97
+ }
98
+ }
99
+ }
100
+ if (payload.data) {
101
+ headers["Content-Type"] = "application/json";
102
+ body = typeof payload.data === "object" ? JSON.stringify(payload.data) : payload.body;
103
+ } else if (payload.body) {
104
+ headers["Content-Type"] = "text/plain";
105
+ body = payload.body;
106
+ } else if (payload.formData) {
107
+ body = payload.formData;
108
+ } else if (payload.formUrlencoded) {
109
+ headers["Content-Type"] = "application/x-www-form-urlencoded";
110
+ if (typeof payload.formUrlencoded === "object") {
111
+ body = qs.stringify(payload.formUrlencoded);
112
+ } else {
113
+ body = payload.formUrlencoded;
114
+ }
115
+ }
116
+ var url = "http://localhost:".concat(port).concat(finalPath);
117
+ var fetcher = realRequest || originFetch;
118
+ return fetcher(url, {
119
+ method: method,
120
+ body: body,
121
+ headers: headers
122
+ });
123
+ };
124
+ return sender;
125
+ };
126
+ export { configure, createRequest };
@@ -0,0 +1 @@
1
+ "use strict";
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "2.0.0-beta.2",
14
+ "version": "2.0.0-beta.4",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/types/index.d.ts",
17
17
  "main": "./dist/js/node/index.js",
@@ -66,7 +66,7 @@
66
66
  "node-fetch": "^2.6.1",
67
67
  "path-to-regexp": "^6.2.0",
68
68
  "query-string": "^7.1.1",
69
- "@modern-js/utils": "2.0.0-beta.2"
69
+ "@modern-js/utils": "2.0.0-beta.4"
70
70
  },
71
71
  "devDependencies": {
72
72
  "@types/jest": "^27",
@@ -76,8 +76,8 @@
76
76
  "jest": "^27",
77
77
  "nock": "^13.2.1",
78
78
  "typescript": "^4",
79
- "@scripts/build": "2.0.0-beta.2",
80
- "@scripts/jest-config": "2.0.0-beta.2"
79
+ "@scripts/build": "2.0.0-beta.4",
80
+ "@scripts/jest-config": "2.0.0-beta.4"
81
81
  },
82
82
  "sideEffects": false,
83
83
  "publishConfig": {