@furystack/rest-client-fetch 5.0.10 → 5.0.12

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-client.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-client.spec.d.ts","sourceRoot":"","sources":["../src/create-client.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,197 @@
1
+ import { createClient } from './create-client.js';
2
+ import { describe, it, expect, vi } from 'vitest';
3
+ const endpointUrl = 'http://localhost';
4
+ globalThis.fetch = globalThis.fecth || (() => null);
5
+ describe('@furystack/rest-client-fetch', () => {
6
+ it('Should return a method', () => {
7
+ const result = createClient({ endpointUrl, fetch: () => undefined });
8
+ expect(typeof result).toBe('function');
9
+ });
10
+ it('Should create with native Fetch by default', () => {
11
+ const result = createClient({ endpointUrl });
12
+ expect(typeof result).toBe('function');
13
+ });
14
+ it('Should throw if request is not OK', async () => {
15
+ const json = vi.fn(async () => ({ value: 1 }));
16
+ const fetch = vi.fn(async () => ({
17
+ json,
18
+ ok: false,
19
+ }));
20
+ const client = createClient({
21
+ endpointUrl,
22
+ fetch,
23
+ });
24
+ await expect(client({
25
+ action: '/test',
26
+ method: 'GET',
27
+ })).rejects.toThrow('');
28
+ });
29
+ it('Should call a simple GET request', async () => {
30
+ const json = vi.fn(async () => ({ value: 1 }));
31
+ const fetch = vi.fn(async () => ({
32
+ json,
33
+ ok: true,
34
+ }));
35
+ const client = createClient({
36
+ endpointUrl,
37
+ fetch,
38
+ });
39
+ const result = await client({
40
+ action: '/test',
41
+ method: 'GET',
42
+ });
43
+ expect(result.result).toEqual({ value: 1 });
44
+ expect(fetch).toBeCalledWith(`${endpointUrl}/test`, { method: 'GET', body: undefined });
45
+ expect(json).toBeCalled();
46
+ });
47
+ it('Should call a GET request with query parameters', async () => {
48
+ const json = vi.fn(async () => ({ value: 1 }));
49
+ const fetch = vi.fn(async () => ({
50
+ json,
51
+ ok: true,
52
+ }));
53
+ const client = createClient({
54
+ endpointUrl,
55
+ fetch,
56
+ });
57
+ const result = await client({
58
+ action: '/test',
59
+ method: 'GET',
60
+ query: { value: 'asdasd' },
61
+ });
62
+ expect(result.result).toEqual({ value: 1 });
63
+ expect(fetch).toBeCalledWith(`${endpointUrl}/test?value=ImFzZGFzZCI%253D`, {
64
+ method: 'GET',
65
+ body: undefined,
66
+ });
67
+ expect(json).toBeCalled();
68
+ });
69
+ it('Should call a GET request with URL parameters', async () => {
70
+ const json = vi.fn(async () => ({ value: 1 }));
71
+ const fetch = vi.fn(async () => ({
72
+ json,
73
+ ok: true,
74
+ }));
75
+ const client = createClient({
76
+ endpointUrl,
77
+ fetch,
78
+ });
79
+ const result = await client({
80
+ action: '/test/:urlValue',
81
+ method: 'GET',
82
+ url: { urlValue: 'asd' },
83
+ });
84
+ expect(result.result).toEqual({ value: 1 });
85
+ expect(fetch).toBeCalledWith(`${endpointUrl}/test/asd`, {
86
+ method: 'GET',
87
+ body: undefined,
88
+ });
89
+ expect(json).toBeCalled();
90
+ });
91
+ it('Should call a simple POST request with body', async () => {
92
+ const json = vi.fn(async () => ({}));
93
+ const fetch = vi.fn(async () => ({
94
+ json,
95
+ ok: true,
96
+ }));
97
+ const client = createClient({
98
+ endpointUrl,
99
+ fetch,
100
+ });
101
+ await client({
102
+ action: '/test',
103
+ method: 'POST',
104
+ body: { foo: 3 },
105
+ });
106
+ expect(fetch).toBeCalledWith(`${endpointUrl}/test`, {
107
+ method: 'POST',
108
+ body: JSON.stringify({ foo: 3 }),
109
+ });
110
+ expect(json).toBeCalled();
111
+ });
112
+ it('Should call a request with headers', async () => {
113
+ const json = vi.fn(async () => ({}));
114
+ const fetch = vi.fn(async () => ({
115
+ json,
116
+ ok: true,
117
+ }));
118
+ const client = createClient({
119
+ endpointUrl,
120
+ fetch,
121
+ });
122
+ await client({
123
+ action: '/test',
124
+ method: 'POST',
125
+ headers: {
126
+ token: '123',
127
+ },
128
+ });
129
+ expect(fetch).toBeCalledWith(`${endpointUrl}/test`, {
130
+ method: 'POST',
131
+ headers: {
132
+ token: '123',
133
+ },
134
+ });
135
+ expect(json).toBeCalled();
136
+ });
137
+ it('Should parse a response with text/ headers', async () => {
138
+ const text = vi.fn(async () => 'alma');
139
+ const fetch = vi.fn(async () => ({
140
+ text,
141
+ headers: {
142
+ get: () => 'text/plain',
143
+ },
144
+ ok: true,
145
+ }));
146
+ const client = createClient({
147
+ endpointUrl,
148
+ fetch,
149
+ });
150
+ const result = await client({
151
+ action: '/test',
152
+ method: 'POST',
153
+ headers: {
154
+ token: '123',
155
+ },
156
+ });
157
+ expect(result.result).toBe('alma');
158
+ expect(fetch).toBeCalledWith(`${endpointUrl}/test`, {
159
+ method: 'POST',
160
+ headers: {
161
+ token: '123',
162
+ },
163
+ });
164
+ expect(text).toBeCalled();
165
+ });
166
+ it('Should parse a response with form/multipart headers', async () => {
167
+ const exampleValue = { foo: 1, bar: 'alma' };
168
+ const formData = vi.fn(async () => exampleValue);
169
+ const fetch = vi.fn(async () => ({
170
+ formData,
171
+ headers: {
172
+ get: () => 'form/multipart',
173
+ },
174
+ ok: true,
175
+ }));
176
+ const client = createClient({
177
+ endpointUrl,
178
+ fetch,
179
+ });
180
+ const result = await client({
181
+ action: '/test',
182
+ method: 'POST',
183
+ headers: {
184
+ token: '123',
185
+ },
186
+ });
187
+ expect(result.result).toBe(exampleValue);
188
+ expect(fetch).toBeCalledWith(`${endpointUrl}/test`, {
189
+ method: 'POST',
190
+ headers: {
191
+ token: '123',
192
+ },
193
+ });
194
+ expect(formData).toBeCalled();
195
+ });
196
+ });
197
+ //# sourceMappingURL=create-client.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-client.spec.js","sourceRoot":"","sources":["../src/create-client.spec.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export class ResponseError extends Error {
2
+ response;
2
3
  constructor(message, response) {
3
4
  super(message);
4
5
  this.response = response;
@@ -1 +1 @@
1
- {"version":3,"file":"response-error.js","sourceRoot":"","sources":["../src/response-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YACE,OAAe,EACR,QAAkB;QAEzB,KAAK,CAAC,OAAO,CAAC,CAAA;QAFP,aAAQ,GAAR,QAAQ,CAAU;IAG3B,CAAC;CACF"}
1
+ {"version":3,"file":"response-error.js","sourceRoot":"","sources":["../src/response-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAG7B;IAFT,YACE,OAAe,EACR,QAAkB;QAEzB,KAAK,CAAC,OAAO,CAAC,CAAA;QAFP,aAAQ,GAAR,QAAQ,CAAU;IAG3B,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/rest-client-fetch",
3
- "version": "5.0.10",
3
+ "version": "5.0.12",
4
4
  "description": "Native browser fetch based REST API implementation for FuryStack",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -37,12 +37,12 @@
37
37
  },
38
38
  "homepage": "https://github.com/furystack/furystack",
39
39
  "dependencies": {
40
- "@furystack/rest": "^5.0.10",
40
+ "@furystack/rest": "^5.0.12",
41
41
  "path-to-regexp": "^6.2.1"
42
42
  },
43
43
  "devDependencies": {
44
- "typescript": "^5.1.6",
45
- "vitest": "^0.34.2"
44
+ "typescript": "^5.2.2",
45
+ "vitest": "^0.34.6"
46
46
  },
47
47
  "gitHead": "1045d854bfd8c475b7035471d130d401417a2321"
48
48
  }
@@ -1,4 +1,4 @@
1
- import { createClient } from './'
1
+ import { createClient } from './create-client.js'
2
2
  import { describe, it, expect, vi } from 'vitest'
3
3
 
4
4
  const endpointUrl = 'http://localhost'