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.
Files changed (82) hide show
  1. package/cjs/ApiTypes.d.ts +2 -1
  2. package/cjs/backend/AxiosRequestBackend.js +36 -1
  3. package/cjs/backend/FetchRequestBackend.js +2 -1
  4. package/cjs/cache/ClientCacheBackend.d.ts +6 -0
  5. package/cjs/cache/ClientCaching.d.ts +10 -0
  6. package/cjs/cache/{Caching.js → ClientCaching.js} +17 -17
  7. package/cjs/cache/LocalForageClientCacheBackend.d.ts +9 -0
  8. package/cjs/{tests/state.test.js → cache/LocalForageClientCacheBackend.js} +52 -52
  9. package/cjs/cache/LocalStorageClientCacheBackend.d.ts +7 -0
  10. package/cjs/cache/{LocalStorageCacheBackend.js → LocalStorageClientCacheBackend.js} +14 -14
  11. package/cjs/index.d.ts +4 -4
  12. package/cjs/index.js +10 -10
  13. package/cjs/middleware/ClientCacheMiddleware.d.ts +7 -0
  14. package/cjs/middleware/{CacheMiddleware.js → ClientCacheMiddleware.js} +16 -14
  15. package/esm/ApiTypes.d.ts +2 -1
  16. package/esm/backend/AxiosRequestBackend.js +25 -1
  17. package/esm/backend/FetchRequestBackend.js +2 -1
  18. package/esm/cache/ClientCacheBackend.d.ts +6 -0
  19. package/esm/cache/ClientCaching.d.ts +10 -0
  20. package/esm/cache/{Caching.js → ClientCaching.js} +12 -12
  21. package/esm/cache/LocalForageClientCacheBackend.d.ts +9 -0
  22. package/esm/cache/LocalForageClientCacheBackend.js +36 -0
  23. package/esm/cache/LocalStorageClientCacheBackend.d.ts +7 -0
  24. package/esm/cache/{LocalStorageCacheBackend.js → LocalStorageClientCacheBackend.js} +8 -8
  25. package/esm/index.d.ts +4 -4
  26. package/esm/index.js +4 -4
  27. package/esm/middleware/ClientCacheMiddleware.d.ts +7 -0
  28. package/esm/middleware/{CacheMiddleware.js → ClientCacheMiddleware.js} +14 -12
  29. package/package.json +3 -3
  30. package/cjs/cache/CacheBackend.d.ts +0 -6
  31. package/cjs/cache/Caching.d.ts +0 -10
  32. package/cjs/cache/LocalForageCacheBackend.d.ts +0 -9
  33. package/cjs/cache/LocalForageCacheBackend.js +0 -23
  34. package/cjs/cache/LocalStorageCacheBackend.d.ts +0 -7
  35. package/cjs/middleware/CacheMiddleware.d.ts +0 -7
  36. package/cjs/tests/api.test.js +0 -166
  37. package/cjs/tests/axios.test.d.ts +0 -1
  38. package/cjs/tests/axios.test.js +0 -94
  39. package/cjs/tests/backend.test.d.ts +0 -1
  40. package/cjs/tests/backend.test.js +0 -92
  41. package/cjs/tests/bodyTypes.test.d.ts +0 -1
  42. package/cjs/tests/bodyTypes.test.js +0 -58
  43. package/cjs/tests/mock/MockApi.d.ts +0 -16
  44. package/cjs/tests/mock/MockApi.js +0 -67
  45. package/cjs/tests/params.test.d.ts +0 -1
  46. package/cjs/tests/params.test.js +0 -147
  47. package/cjs/tests/retry.test.d.ts +0 -1
  48. package/cjs/tests/retry.test.js +0 -134
  49. package/cjs/tests/state.test.d.ts +0 -1
  50. package/cjs/tests/streaming.test.d.ts +0 -1
  51. package/cjs/tests/streaming.test.js +0 -207
  52. package/cjs/tests/validation.test.d.ts +0 -1
  53. package/cjs/tests/validation.test.js +0 -124
  54. package/esm/cache/CacheBackend.d.ts +0 -6
  55. package/esm/cache/CacheBackend.js +0 -1
  56. package/esm/cache/Caching.d.ts +0 -10
  57. package/esm/cache/LocalForageCacheBackend.d.ts +0 -9
  58. package/esm/cache/LocalForageCacheBackend.js +0 -19
  59. package/esm/cache/LocalStorageCacheBackend.d.ts +0 -7
  60. package/esm/middleware/CacheMiddleware.d.ts +0 -7
  61. package/esm/tests/api.test.d.ts +0 -1
  62. package/esm/tests/api.test.js +0 -108
  63. package/esm/tests/axios.test.d.ts +0 -1
  64. package/esm/tests/axios.test.js +0 -51
  65. package/esm/tests/backend.test.d.ts +0 -1
  66. package/esm/tests/backend.test.js +0 -49
  67. package/esm/tests/bodyTypes.test.d.ts +0 -1
  68. package/esm/tests/bodyTypes.test.js +0 -21
  69. package/esm/tests/mock/MockApi.d.ts +0 -16
  70. package/esm/tests/mock/MockApi.js +0 -64
  71. package/esm/tests/params.test.d.ts +0 -1
  72. package/esm/tests/params.test.js +0 -88
  73. package/esm/tests/retry.test.d.ts +0 -1
  74. package/esm/tests/retry.test.js +0 -77
  75. package/esm/tests/state.test.d.ts +0 -1
  76. package/esm/tests/state.test.js +0 -52
  77. package/esm/tests/streaming.test.d.ts +0 -1
  78. package/esm/tests/streaming.test.js +0 -123
  79. package/esm/tests/validation.test.d.ts +0 -1
  80. package/esm/tests/validation.test.js +0 -81
  81. /package/cjs/cache/{CacheBackend.js → ClientCacheBackend.js} +0 -0
  82. /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 {};
@@ -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 {};
@@ -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 {};