api-def 0.12.0-alpha.39 → 0.12.0-alpha.40
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/cjs/ApiTypes.d.ts +2 -1
- package/cjs/backend/AxiosRequestBackend.js +36 -1
- package/cjs/backend/FetchRequestBackend.js +2 -1
- package/cjs/cache/ClientCacheBackend.d.ts +6 -0
- package/cjs/cache/ClientCaching.d.ts +10 -0
- package/cjs/cache/{Caching.js → ClientCaching.js} +17 -17
- package/cjs/cache/LocalForageClientCacheBackend.d.ts +9 -0
- package/cjs/{tests/state.test.js → cache/LocalForageClientCacheBackend.js} +52 -52
- package/cjs/cache/LocalStorageClientCacheBackend.d.ts +7 -0
- package/cjs/cache/{LocalStorageCacheBackend.js → LocalStorageClientCacheBackend.js} +14 -14
- package/cjs/index.d.ts +4 -4
- package/cjs/index.js +10 -10
- package/cjs/middleware/ClientCacheMiddleware.d.ts +7 -0
- package/cjs/middleware/{CacheMiddleware.js → ClientCacheMiddleware.js} +16 -14
- package/esm/ApiTypes.d.ts +2 -1
- package/esm/backend/AxiosRequestBackend.js +25 -1
- package/esm/backend/FetchRequestBackend.js +2 -1
- package/esm/cache/ClientCacheBackend.d.ts +6 -0
- package/esm/cache/ClientCaching.d.ts +10 -0
- package/esm/cache/{Caching.js → ClientCaching.js} +12 -12
- package/esm/cache/LocalForageClientCacheBackend.d.ts +9 -0
- package/esm/cache/LocalForageClientCacheBackend.js +36 -0
- package/esm/cache/LocalStorageClientCacheBackend.d.ts +7 -0
- package/esm/cache/{LocalStorageCacheBackend.js → LocalStorageClientCacheBackend.js} +8 -8
- package/esm/index.d.ts +4 -4
- package/esm/index.js +4 -4
- package/esm/middleware/ClientCacheMiddleware.d.ts +7 -0
- package/esm/middleware/{CacheMiddleware.js → ClientCacheMiddleware.js} +14 -12
- package/package.json +3 -3
- package/cjs/cache/CacheBackend.d.ts +0 -6
- package/cjs/cache/Caching.d.ts +0 -10
- package/cjs/cache/LocalForageCacheBackend.d.ts +0 -9
- package/cjs/cache/LocalForageCacheBackend.js +0 -23
- package/cjs/cache/LocalStorageCacheBackend.d.ts +0 -7
- package/cjs/middleware/CacheMiddleware.d.ts +0 -7
- package/cjs/tests/api.test.js +0 -166
- package/cjs/tests/axios.test.d.ts +0 -1
- package/cjs/tests/axios.test.js +0 -94
- package/cjs/tests/backend.test.d.ts +0 -1
- package/cjs/tests/backend.test.js +0 -92
- package/cjs/tests/bodyTypes.test.d.ts +0 -1
- package/cjs/tests/bodyTypes.test.js +0 -58
- package/cjs/tests/mock/MockApi.d.ts +0 -16
- package/cjs/tests/mock/MockApi.js +0 -67
- package/cjs/tests/params.test.d.ts +0 -1
- package/cjs/tests/params.test.js +0 -147
- package/cjs/tests/retry.test.d.ts +0 -1
- package/cjs/tests/retry.test.js +0 -134
- package/cjs/tests/state.test.d.ts +0 -1
- package/cjs/tests/streaming.test.d.ts +0 -1
- package/cjs/tests/streaming.test.js +0 -207
- package/cjs/tests/validation.test.d.ts +0 -1
- package/cjs/tests/validation.test.js +0 -124
- package/esm/cache/CacheBackend.d.ts +0 -6
- package/esm/cache/CacheBackend.js +0 -1
- package/esm/cache/Caching.d.ts +0 -10
- package/esm/cache/LocalForageCacheBackend.d.ts +0 -9
- package/esm/cache/LocalForageCacheBackend.js +0 -19
- package/esm/cache/LocalStorageCacheBackend.d.ts +0 -7
- package/esm/middleware/CacheMiddleware.d.ts +0 -7
- package/esm/tests/api.test.d.ts +0 -1
- package/esm/tests/api.test.js +0 -108
- package/esm/tests/axios.test.d.ts +0 -1
- package/esm/tests/axios.test.js +0 -51
- package/esm/tests/backend.test.d.ts +0 -1
- package/esm/tests/backend.test.js +0 -49
- package/esm/tests/bodyTypes.test.d.ts +0 -1
- package/esm/tests/bodyTypes.test.js +0 -21
- package/esm/tests/mock/MockApi.d.ts +0 -16
- package/esm/tests/mock/MockApi.js +0 -64
- package/esm/tests/params.test.d.ts +0 -1
- package/esm/tests/params.test.js +0 -88
- package/esm/tests/retry.test.d.ts +0 -1
- package/esm/tests/retry.test.js +0 -77
- package/esm/tests/state.test.d.ts +0 -1
- package/esm/tests/state.test.js +0 -52
- package/esm/tests/streaming.test.d.ts +0 -1
- package/esm/tests/streaming.test.js +0 -123
- package/esm/tests/validation.test.d.ts +0 -1
- package/esm/tests/validation.test.js +0 -81
- /package/cjs/cache/{CacheBackend.js → ClientCacheBackend.js} +0 -0
- /package/{cjs/tests/api.test.d.ts → esm/cache/ClientCacheBackend.js} +0 -0
|
@@ -1,58 +0,0 @@
|
|
|
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
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
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;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
var MockApi_1 = require("./mock/MockApi");
|
|
40
|
-
it("correctly parses body for form url encoded request", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
41
|
-
var res;
|
|
42
|
-
return __generator(this, function (_a) {
|
|
43
|
-
switch (_a.label) {
|
|
44
|
-
case 0: return [4 /*yield*/, MockApi_1.postFormUrlEncoded.submit({
|
|
45
|
-
body: {
|
|
46
|
-
test: 123,
|
|
47
|
-
b: "test",
|
|
48
|
-
},
|
|
49
|
-
})];
|
|
50
|
-
case 1:
|
|
51
|
-
res = _a.sent();
|
|
52
|
-
expect(res.data).toEqual(["test=123&b=test"]);
|
|
53
|
-
return [2 /*return*/];
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
}); });
|
|
57
|
-
// @ts-expect-error
|
|
58
|
-
var a = { data: 123 };
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Api } from "../../Api";
|
|
2
|
-
declare const api: Api;
|
|
3
|
-
export declare const fetchRequiresToken: import("../..").Endpoint<unknown, undefined, undefined, undefined, import("../..").State, "/requires-token", import("../..").RawHeaders | undefined, import("../..").RawHeaders | undefined>;
|
|
4
|
-
export declare const postFormUrlEncoded: import("../..").Endpoint<string[], undefined, undefined, {
|
|
5
|
-
test: number;
|
|
6
|
-
b: string;
|
|
7
|
-
}, import("../..").State, "/send-data", import("../..").RawHeaders | undefined, import("../..").RawHeaders | undefined>;
|
|
8
|
-
export declare const postIdVerifStatus: import("../..").Endpoint<{
|
|
9
|
-
transactionStatus: any;
|
|
10
|
-
transactionId?: string;
|
|
11
|
-
verifPayload?: any;
|
|
12
|
-
}, undefined, undefined, {
|
|
13
|
-
validationService: 1;
|
|
14
|
-
forceReset: boolean;
|
|
15
|
-
}, import("../..").State, "/id-verif/verif-status", import("../..").RawHeaders | undefined, import("../..").RawHeaders | undefined>;
|
|
16
|
-
export default api;
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.postIdVerifStatus = exports.postFormUrlEncoded = exports.fetchRequiresToken = void 0;
|
|
4
|
-
var Api_1 = require("../../Api");
|
|
5
|
-
var ApiConstants_1 = require("../../ApiConstants");
|
|
6
|
-
var api = new Api_1.Api({
|
|
7
|
-
baseUrl: "example.com",
|
|
8
|
-
name: "Example API",
|
|
9
|
-
mocking: {
|
|
10
|
-
enabled: true,
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
exports.fetchRequiresToken = api.endpoint().build({
|
|
14
|
-
name: "Requires Token",
|
|
15
|
-
id: "fetchRequiresToken",
|
|
16
|
-
method: ApiConstants_1.RequestMethod.GET,
|
|
17
|
-
path: "/requires-token",
|
|
18
|
-
mocking: {
|
|
19
|
-
handler: function (req, res) {
|
|
20
|
-
if (!req.headers.token) {
|
|
21
|
-
return res.status(400).send({
|
|
22
|
-
code: "auth/invalid-token",
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
return res.status(200).send({ hello: true });
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
exports.postFormUrlEncoded = api
|
|
30
|
-
.endpoint()
|
|
31
|
-
.bodyOf()
|
|
32
|
-
.responseOf()
|
|
33
|
-
.build({
|
|
34
|
-
id: "sendFormUrlEncoded",
|
|
35
|
-
method: "post",
|
|
36
|
-
path: "/send-data",
|
|
37
|
-
config: {
|
|
38
|
-
headers: {
|
|
39
|
-
"Content-type": "application/x-www-form-urlencoded",
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
mocking: {
|
|
43
|
-
handler: function (req, res) {
|
|
44
|
-
return res.status(200).send([req.body.toString()]);
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
exports.postIdVerifStatus = api
|
|
49
|
-
.endpoint()
|
|
50
|
-
.bodyOf()
|
|
51
|
-
.responseOf()
|
|
52
|
-
.build({
|
|
53
|
-
id: "id-verif-status",
|
|
54
|
-
method: ApiConstants_1.RequestMethod.POST,
|
|
55
|
-
path: "/id-verif/verif-status",
|
|
56
|
-
responseType: "json",
|
|
57
|
-
config: {
|
|
58
|
-
acceptableStatus: [200],
|
|
59
|
-
retry: false, // outcome screen has it's own retry
|
|
60
|
-
},
|
|
61
|
-
mocking: {
|
|
62
|
-
handler: function (req, res) {
|
|
63
|
-
return res.status(200).send({ url: req.url });
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
exports.default = api;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/cjs/tests/params.test.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
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
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
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;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
var Api_1 = require("../Api");
|
|
40
|
-
var ApiConstants_1 = require("../ApiConstants");
|
|
41
|
-
var api = new Api_1.Api({
|
|
42
|
-
baseUrl: "example.com",
|
|
43
|
-
name: "Example API",
|
|
44
|
-
mocking: {
|
|
45
|
-
enabled: true,
|
|
46
|
-
},
|
|
47
|
-
middleware: [
|
|
48
|
-
{
|
|
49
|
-
beforeSend: function (context) { return __awaiter(void 0, void 0, void 0, function () {
|
|
50
|
-
return __generator(this, function (_a) {
|
|
51
|
-
context.updateQuery({
|
|
52
|
-
test: "abc",
|
|
53
|
-
});
|
|
54
|
-
return [2 /*return*/];
|
|
55
|
-
});
|
|
56
|
-
}); },
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
});
|
|
60
|
-
var withColons = api
|
|
61
|
-
.endpoint()
|
|
62
|
-
.paramsOf()
|
|
63
|
-
.build({
|
|
64
|
-
name: "Fetch Users",
|
|
65
|
-
id: "fetchUsers",
|
|
66
|
-
method: ApiConstants_1.RequestMethod.GET,
|
|
67
|
-
path: "/users/:id/:sub_id",
|
|
68
|
-
mocking: {
|
|
69
|
-
handler: function (req, res) {
|
|
70
|
-
return res.status(200).send([{ name: "Test", data: req.url }]);
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
});
|
|
74
|
-
var withBrackets = api
|
|
75
|
-
.endpoint()
|
|
76
|
-
.paramsOf()
|
|
77
|
-
.build({
|
|
78
|
-
name: "Fetch Users",
|
|
79
|
-
id: "fetchUsers",
|
|
80
|
-
method: ApiConstants_1.RequestMethod.GET,
|
|
81
|
-
path: "/users/{id}/{sub_id}",
|
|
82
|
-
mocking: {
|
|
83
|
-
handler: function (req, res) {
|
|
84
|
-
return res.status(200).send([{ name: "Test", data: req.url }]);
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
});
|
|
88
|
-
it("should throw error if missing param", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
89
|
-
var res, res2;
|
|
90
|
-
return __generator(this, function (_a) {
|
|
91
|
-
switch (_a.label) {
|
|
92
|
-
case 0: return [4 /*yield*/, expect((function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
93
|
-
var res;
|
|
94
|
-
return __generator(this, function (_a) {
|
|
95
|
-
switch (_a.label) {
|
|
96
|
-
case 0: return [4 /*yield*/, withColons.submit({
|
|
97
|
-
params: {
|
|
98
|
-
id: "123",
|
|
99
|
-
},
|
|
100
|
-
})];
|
|
101
|
-
case 1:
|
|
102
|
-
res = _a.sent();
|
|
103
|
-
return [2 /*return*/, res];
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}); })()).rejects.toThrowError("[api-def] Not all path params have been resolved: '/users/123/:sub_id'")];
|
|
107
|
-
case 1:
|
|
108
|
-
_a.sent();
|
|
109
|
-
return [4 /*yield*/, expect((function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
110
|
-
var res;
|
|
111
|
-
return __generator(this, function (_a) {
|
|
112
|
-
switch (_a.label) {
|
|
113
|
-
case 0: return [4 /*yield*/, withBrackets.submit({
|
|
114
|
-
params: {
|
|
115
|
-
id: "123",
|
|
116
|
-
},
|
|
117
|
-
})];
|
|
118
|
-
case 1:
|
|
119
|
-
res = _a.sent();
|
|
120
|
-
return [2 /*return*/, res];
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
}); })()).rejects.toThrowError("[api-def] Not all path params have been resolved: '/users/123/{sub_id}'")];
|
|
124
|
-
case 2:
|
|
125
|
-
_a.sent();
|
|
126
|
-
return [4 /*yield*/, withColons.submit({
|
|
127
|
-
params: {
|
|
128
|
-
id: "123",
|
|
129
|
-
sub_id: "456",
|
|
130
|
-
},
|
|
131
|
-
})];
|
|
132
|
-
case 3:
|
|
133
|
-
res = _a.sent();
|
|
134
|
-
expect(res.data).toEqual([{ name: "Test", data: "https://example.com/users/123/456" }]);
|
|
135
|
-
return [4 /*yield*/, withBrackets.submit({
|
|
136
|
-
params: {
|
|
137
|
-
id: "123",
|
|
138
|
-
sub_id: "456",
|
|
139
|
-
},
|
|
140
|
-
})];
|
|
141
|
-
case 4:
|
|
142
|
-
res2 = _a.sent();
|
|
143
|
-
expect(res2.data).toEqual([{ name: "Test", data: "https://example.com/users/123/456" }]);
|
|
144
|
-
return [2 /*return*/];
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
}); });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/cjs/tests/retry.test.js
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
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
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
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;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
var Api_1 = require("../Api");
|
|
40
|
-
var MockApi_1 = require("./mock/MockApi");
|
|
41
|
-
it("allow for retries in middleware", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
42
|
-
var thrownError, e_1, _a, _b;
|
|
43
|
-
return __generator(this, function (_c) {
|
|
44
|
-
switch (_c.label) {
|
|
45
|
-
case 0:
|
|
46
|
-
_c.trys.push([0, 2, , 3]);
|
|
47
|
-
return [4 /*yield*/, MockApi_1.fetchRequiresToken.submit({})];
|
|
48
|
-
case 1:
|
|
49
|
-
_c.sent();
|
|
50
|
-
return [3 /*break*/, 3];
|
|
51
|
-
case 2:
|
|
52
|
-
e_1 = _c.sent();
|
|
53
|
-
thrownError = e_1;
|
|
54
|
-
return [3 /*break*/, 3];
|
|
55
|
-
case 3:
|
|
56
|
-
expect(thrownError.toJSON).toBe(undefined);
|
|
57
|
-
expect(thrownError).toMatchObject({
|
|
58
|
-
response: {
|
|
59
|
-
data: {
|
|
60
|
-
code: "auth/invalid-token",
|
|
61
|
-
},
|
|
62
|
-
status: 400,
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
_a = expect;
|
|
66
|
-
return [4 /*yield*/, MockApi_1.fetchRequiresToken.submit({
|
|
67
|
-
headers: {
|
|
68
|
-
token: "test",
|
|
69
|
-
},
|
|
70
|
-
})];
|
|
71
|
-
case 4:
|
|
72
|
-
_a.apply(void 0, [_c.sent()]).toMatchObject({
|
|
73
|
-
status: 200,
|
|
74
|
-
data: { hello: true },
|
|
75
|
-
});
|
|
76
|
-
MockApi_1.default.middleware.push({
|
|
77
|
-
error: function (context) {
|
|
78
|
-
var _a, _b, _c;
|
|
79
|
-
if (((_c = (_b = (_a = context.error) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.code) === "auth/invalid-token") {
|
|
80
|
-
context.updateHeaders({
|
|
81
|
-
token: "updated-token",
|
|
82
|
-
});
|
|
83
|
-
return {
|
|
84
|
-
type: "retry",
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
_b = expect;
|
|
90
|
-
return [4 /*yield*/, MockApi_1.fetchRequiresToken.submit({})];
|
|
91
|
-
case 5:
|
|
92
|
-
_b.apply(void 0, [_c.sent()]).toMatchObject({
|
|
93
|
-
status: 200,
|
|
94
|
-
data: { hello: true },
|
|
95
|
-
});
|
|
96
|
-
return [2 /*return*/];
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
}); });
|
|
100
|
-
it("make sure retry only happens a max number of times", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
101
|
-
var api, endpoint, error, e_2;
|
|
102
|
-
return __generator(this, function (_a) {
|
|
103
|
-
switch (_a.label) {
|
|
104
|
-
case 0:
|
|
105
|
-
api = new Api_1.Api({
|
|
106
|
-
baseUrl: "httpstat.us",
|
|
107
|
-
name: "Http Status API",
|
|
108
|
-
});
|
|
109
|
-
endpoint = api.endpoint().build({
|
|
110
|
-
id: "404",
|
|
111
|
-
method: "get",
|
|
112
|
-
path: "/404",
|
|
113
|
-
config: {
|
|
114
|
-
retry: 3,
|
|
115
|
-
},
|
|
116
|
-
});
|
|
117
|
-
_a.label = 1;
|
|
118
|
-
case 1:
|
|
119
|
-
_a.trys.push([1, 3, , 4]);
|
|
120
|
-
return [4 /*yield*/, endpoint.submit({})];
|
|
121
|
-
case 2:
|
|
122
|
-
_a.sent();
|
|
123
|
-
return [3 /*break*/, 4];
|
|
124
|
-
case 3:
|
|
125
|
-
e_2 = _a.sent();
|
|
126
|
-
error = e_2;
|
|
127
|
-
return [3 /*break*/, 4];
|
|
128
|
-
case 4:
|
|
129
|
-
expect(error.response.status).toBe(404);
|
|
130
|
-
expect(error.attempts).toBe(4);
|
|
131
|
-
return [2 /*return*/];
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}); });
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,207 +0,0 @@
|
|
|
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
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
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;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
39
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
40
|
-
var m = o[Symbol.asyncIterator], i;
|
|
41
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
42
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
43
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
44
|
-
};
|
|
45
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
-
var node_http_1 = require("node:http");
|
|
47
|
-
var axios_1 = require("axios");
|
|
48
|
-
var Api_1 = require("../Api");
|
|
49
|
-
var AxiosRequestBackend_1 = require("../backend/AxiosRequestBackend");
|
|
50
|
-
var FetchRequestBackend_1 = require("../backend/FetchRequestBackend");
|
|
51
|
-
describe("Streaming Response Tests", function () {
|
|
52
|
-
var server;
|
|
53
|
-
var baseUrl;
|
|
54
|
-
beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
55
|
-
return __generator(this, function (_a) {
|
|
56
|
-
switch (_a.label) {
|
|
57
|
-
case 0:
|
|
58
|
-
server = (0, node_http_1.createServer)(function (req, res) {
|
|
59
|
-
if (req.url === "/stream" && req.method === "GET") {
|
|
60
|
-
res.setHeader("Content-Type", "text/event-stream");
|
|
61
|
-
res.setHeader("Cache-Control", "no-cache");
|
|
62
|
-
res.setHeader("Connection", "keep-alive");
|
|
63
|
-
var count_1 = 0;
|
|
64
|
-
var interval_1 = setInterval(function () {
|
|
65
|
-
if (count_1 >= 3) {
|
|
66
|
-
clearInterval(interval_1);
|
|
67
|
-
res.end();
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
res.write("data: ".concat(JSON.stringify({ count: count_1++ }), "\n\n"));
|
|
71
|
-
}, 100);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
res.statusCode = 404;
|
|
75
|
-
res.end();
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
return [4 /*yield*/, new Promise(function (resolve) {
|
|
79
|
-
server.listen(0, function () {
|
|
80
|
-
var port = server.address().port;
|
|
81
|
-
baseUrl = "http://localhost:".concat(port);
|
|
82
|
-
resolve();
|
|
83
|
-
});
|
|
84
|
-
})];
|
|
85
|
-
case 1:
|
|
86
|
-
_a.sent();
|
|
87
|
-
return [2 /*return*/];
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}); });
|
|
91
|
-
afterAll(function (done) {
|
|
92
|
-
server.close(done);
|
|
93
|
-
});
|
|
94
|
-
var collectStreamData = function (iterator) { return __awaiter(void 0, void 0, void 0, function () {
|
|
95
|
-
var results, chunk, text, lines, _i, lines_1, line, e_1_1;
|
|
96
|
-
var _a, iterator_1, iterator_1_1;
|
|
97
|
-
var _b, e_1, _c, _d;
|
|
98
|
-
return __generator(this, function (_e) {
|
|
99
|
-
switch (_e.label) {
|
|
100
|
-
case 0:
|
|
101
|
-
results = [];
|
|
102
|
-
_e.label = 1;
|
|
103
|
-
case 1:
|
|
104
|
-
_e.trys.push([1, 6, 7, 12]);
|
|
105
|
-
_a = true, iterator_1 = __asyncValues(iterator);
|
|
106
|
-
_e.label = 2;
|
|
107
|
-
case 2: return [4 /*yield*/, iterator_1.next()];
|
|
108
|
-
case 3:
|
|
109
|
-
if (!(iterator_1_1 = _e.sent(), _b = iterator_1_1.done, !_b)) return [3 /*break*/, 5];
|
|
110
|
-
_d = iterator_1_1.value;
|
|
111
|
-
_a = false;
|
|
112
|
-
chunk = _d;
|
|
113
|
-
text = new TextDecoder().decode(chunk);
|
|
114
|
-
lines = text.split("\n");
|
|
115
|
-
for (_i = 0, lines_1 = lines; _i < lines_1.length; _i++) {
|
|
116
|
-
line = lines_1[_i];
|
|
117
|
-
if (line.startsWith("data: ")) {
|
|
118
|
-
try {
|
|
119
|
-
results.push(JSON.parse(line.slice(6)));
|
|
120
|
-
}
|
|
121
|
-
catch (e) {
|
|
122
|
-
// Ignore parsing errors
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
_e.label = 4;
|
|
127
|
-
case 4:
|
|
128
|
-
_a = true;
|
|
129
|
-
return [3 /*break*/, 2];
|
|
130
|
-
case 5: return [3 /*break*/, 12];
|
|
131
|
-
case 6:
|
|
132
|
-
e_1_1 = _e.sent();
|
|
133
|
-
e_1 = { error: e_1_1 };
|
|
134
|
-
return [3 /*break*/, 12];
|
|
135
|
-
case 7:
|
|
136
|
-
_e.trys.push([7, , 10, 11]);
|
|
137
|
-
if (!(!_a && !_b && (_c = iterator_1.return))) return [3 /*break*/, 9];
|
|
138
|
-
return [4 /*yield*/, _c.call(iterator_1)];
|
|
139
|
-
case 8:
|
|
140
|
-
_e.sent();
|
|
141
|
-
_e.label = 9;
|
|
142
|
-
case 9: return [3 /*break*/, 11];
|
|
143
|
-
case 10:
|
|
144
|
-
if (e_1) throw e_1.error;
|
|
145
|
-
return [7 /*endfinally*/];
|
|
146
|
-
case 11: return [7 /*endfinally*/];
|
|
147
|
-
case 12: return [2 /*return*/, results];
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
}); };
|
|
151
|
-
it("should handle streaming responses with Fetch backend", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
152
|
-
var api, endpoint, response, results;
|
|
153
|
-
return __generator(this, function (_a) {
|
|
154
|
-
switch (_a.label) {
|
|
155
|
-
case 0:
|
|
156
|
-
api = new Api_1.Api({
|
|
157
|
-
name: "test-api",
|
|
158
|
-
baseUrl: baseUrl,
|
|
159
|
-
requestBackend: new FetchRequestBackend_1.default(),
|
|
160
|
-
});
|
|
161
|
-
endpoint = api.endpoint().build({
|
|
162
|
-
id: "stream",
|
|
163
|
-
method: "get",
|
|
164
|
-
path: "/stream",
|
|
165
|
-
responseType: "stream",
|
|
166
|
-
});
|
|
167
|
-
return [4 /*yield*/, endpoint.submit({})];
|
|
168
|
-
case 1:
|
|
169
|
-
response = _a.sent();
|
|
170
|
-
return [4 /*yield*/, collectStreamData(response.data)];
|
|
171
|
-
case 2:
|
|
172
|
-
results = _a.sent();
|
|
173
|
-
expect(results).toHaveLength(3);
|
|
174
|
-
expect(results).toEqual([{ count: 0 }, { count: 1 }, { count: 2 }]);
|
|
175
|
-
return [2 /*return*/];
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
}); });
|
|
179
|
-
it("should handle streaming responses with Axios backend", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
180
|
-
var api, endpoint, response, results;
|
|
181
|
-
return __generator(this, function (_a) {
|
|
182
|
-
switch (_a.label) {
|
|
183
|
-
case 0:
|
|
184
|
-
api = new Api_1.Api({
|
|
185
|
-
name: "test-api",
|
|
186
|
-
baseUrl: baseUrl,
|
|
187
|
-
requestBackend: new AxiosRequestBackend_1.default(axios_1.default),
|
|
188
|
-
});
|
|
189
|
-
endpoint = api.endpoint().build({
|
|
190
|
-
id: "stream",
|
|
191
|
-
method: "get",
|
|
192
|
-
path: "/stream",
|
|
193
|
-
responseType: "stream",
|
|
194
|
-
});
|
|
195
|
-
return [4 /*yield*/, endpoint.submit({})];
|
|
196
|
-
case 1:
|
|
197
|
-
response = _a.sent();
|
|
198
|
-
return [4 /*yield*/, collectStreamData(response.data)];
|
|
199
|
-
case 2:
|
|
200
|
-
results = _a.sent();
|
|
201
|
-
expect(results).toHaveLength(3);
|
|
202
|
-
expect(results).toEqual([{ count: 0 }, { count: 1 }, { count: 2 }]);
|
|
203
|
-
return [2 /*return*/];
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
}); });
|
|
207
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|