@furystack/rest-client-fetch 3.0.20 → 3.0.24

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.
@@ -3,11 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const _1 = require("./");
4
4
  const utils_1 = require("@furystack/utils");
5
5
  const endpointUrl = 'http://localhost';
6
+ globalThis.fetch = globalThis.fecth || (() => null);
6
7
  describe('@furystack/rest-client-fetch', () => {
7
8
  it('Should return a method', () => {
8
9
  const result = (0, _1.createClient)({ endpointUrl, fetch: () => undefined });
9
10
  expect(typeof result).toBe('function');
10
11
  });
12
+ it('Should create with native Fetch by default', () => {
13
+ const result = (0, _1.createClient)({ endpointUrl });
14
+ expect(typeof result).toBe('function');
15
+ });
11
16
  it('Should throw if request is not OK', async () => {
12
17
  const json = jest.fn(async () => ({ value: 1 }));
13
18
  const fetch = jest.fn(async () => ({
@@ -131,5 +136,64 @@ describe('@furystack/rest-client-fetch', () => {
131
136
  });
132
137
  expect(json).toBeCalled();
133
138
  });
139
+ it('Should parse a response with text/ headers', async () => {
140
+ const text = jest.fn(async () => 'alma');
141
+ const fetch = jest.fn(async () => ({
142
+ text,
143
+ headers: {
144
+ get: () => 'text/plain',
145
+ },
146
+ ok: true,
147
+ }));
148
+ const client = (0, _1.createClient)({
149
+ endpointUrl,
150
+ fetch,
151
+ });
152
+ const result = await client({
153
+ action: '/test',
154
+ method: 'POST',
155
+ headers: {
156
+ token: '123',
157
+ },
158
+ });
159
+ expect(result.result).toBe('alma');
160
+ expect(fetch).toBeCalledWith(utils_1.PathHelper.joinPaths(endpointUrl, 'test'), {
161
+ method: 'POST',
162
+ headers: {
163
+ token: '123',
164
+ },
165
+ });
166
+ expect(text).toBeCalled();
167
+ });
168
+ it('Should parse a response with form/multipart headers', async () => {
169
+ const exampleValue = { foo: 1, bar: 'alma' };
170
+ const formData = jest.fn(async () => exampleValue);
171
+ const fetch = jest.fn(async () => ({
172
+ formData,
173
+ headers: {
174
+ get: () => 'form/multipart',
175
+ },
176
+ ok: true,
177
+ }));
178
+ const client = (0, _1.createClient)({
179
+ endpointUrl,
180
+ fetch,
181
+ });
182
+ const result = await client({
183
+ action: '/test',
184
+ method: 'POST',
185
+ headers: {
186
+ token: '123',
187
+ },
188
+ });
189
+ expect(result.result).toBe(exampleValue);
190
+ expect(fetch).toBeCalledWith(utils_1.PathHelper.joinPaths(endpointUrl, 'test'), {
191
+ method: 'POST',
192
+ headers: {
193
+ token: '123',
194
+ },
195
+ });
196
+ expect(formData).toBeCalled();
197
+ });
134
198
  });
135
199
  //# sourceMappingURL=create-client.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-client.spec.js","sourceRoot":"","sources":["../src/create-client.spec.ts"],"names":[],"mappings":";;AAAA,yBAAiC;AACjC,4CAA6C;AAE7C,MAAM,WAAW,GAAG,kBAAkB,CAAA;AAEtC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,IAAA,eAAY,EAAC,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAgB,EAAE,CAAC,CAAA;QAC3E,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,MAAM,KAAK,GAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACtC,IAAI;YACJ,EAAE,EAAE,KAAK;SACV,CAAC,CAAC,CAAA;QAEH,MAAM,MAAM,GAAG,IAAA,eAAY,EAAoD;YAC7E,WAAW;YACX,KAAK;SACN,CAAC,CAAA;QAEF,MAAM,MAAM,CACV,MAAM,CAAC;YACL,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,KAAK;SACd,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,MAAM,KAAK,GAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACtC,IAAI;YACJ,EAAE,EAAE,IAAI;SACT,CAAC,CAAC,CAAA;QAEH,MAAM,MAAM,GAAG,IAAA,eAAY,EAAsD;YAC/E,WAAW;YACX,KAAK;SACN,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAEjD,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,kBAAU,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QAC3G,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,MAAM,KAAK,GAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACtC,IAAI;YACJ,EAAE,EAAE,IAAI;SACT,CAAC,CAAC,CAAA;QAEH,MAAM,MAAM,GAAG,IAAA,eAAY,EAExB;YACD,WAAW;YACX,KAAK;SACN,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAEjD,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,kBAAU,CAAC,SAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE;YACnF,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,MAAM,KAAK,GAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACtC,IAAI;YACJ,EAAE,EAAE,IAAI;SACT,CAAC,CAAC,CAAA;QAEH,MAAM,MAAM,GAAG,IAAA,eAAY,EAExB;YACD,WAAW;YACX,KAAK;SACN,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SACzB,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QAEjD,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,kBAAU,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE;YAC1E,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,KAAK,GAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACtC,IAAI;YACJ,EAAE,EAAE,IAAI;SACT,CAAC,CAAC,CAAA;QAEH,MAAM,MAAM,GAAG,IAAA,eAAY,EAA+D;YACxF,WAAW;YACX,KAAK;SACN,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC;YACX,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;SACjB,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,kBAAU,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YACtE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SACjC,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,KAAK,GAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACtC,IAAI;YACJ,EAAE,EAAE,IAAI;SACT,CAAC,CAAC,CAAA;QAEH,MAAM,MAAM,GAAG,IAAA,eAAY,EAAoE;YAC7F,WAAW;YACX,KAAK;SACN,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC;YACX,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,KAAK,EAAE,KAAK;aACb;SACF,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,kBAAU,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YACtE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,KAAK,EAAE,KAAK;aACb;SACF,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"create-client.spec.js","sourceRoot":"","sources":["../src/create-client.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/rest-client-fetch",
3
- "version": "3.0.20",
3
+ "version": "3.0.24",
4
4
  "description": "Native browser fetch based REST API implementation for FuryStack",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -29,16 +29,16 @@
29
29
  },
30
30
  "homepage": "https://github.com/furystack/furystack",
31
31
  "dependencies": {
32
- "@furystack/inject": "^4.0.75",
33
- "@furystack/logging": "^2.0.82",
34
- "@furystack/rest": "^3.0.21",
35
- "@furystack/utils": "^1.2.45",
32
+ "@furystack/inject": "^5.0.0",
33
+ "@furystack/logging": "^2.0.84",
34
+ "@furystack/rest": "^3.1.3",
35
+ "@furystack/utils": "^2.0.0",
36
36
  "path-to-regexp": "^6.2.0",
37
37
  "tslib": "^2.3.1"
38
38
  },
39
39
  "devDependencies": {
40
- "@types/jest": "^27.0.2"
40
+ "@types/jest": "^27.0.3"
41
41
  },
42
42
  "typings": "./dist/index.d.ts",
43
- "gitHead": "6813165dee08114fdc108b5147125a87c5068300"
43
+ "gitHead": "8a1860a227691def1a94e8de5e95a7c5067356cc"
44
44
  }
@@ -3,12 +3,19 @@ import { PathHelper } from '@furystack/utils'
3
3
 
4
4
  const endpointUrl = 'http://localhost'
5
5
 
6
+ globalThis.fetch = (globalThis as any).fecth || (() => null)
7
+
6
8
  describe('@furystack/rest-client-fetch', () => {
7
9
  it('Should return a method', () => {
8
10
  const result = createClient({ endpointUrl, fetch: () => undefined as any })
9
11
  expect(typeof result).toBe('function')
10
12
  })
11
13
 
14
+ it('Should create with native Fetch by default', () => {
15
+ const result = createClient({ endpointUrl })
16
+ expect(typeof result).toBe('function')
17
+ })
18
+
12
19
  it('Should throw if request is not OK', async () => {
13
20
  const json = jest.fn(async () => ({ value: 1 }))
14
21
  const fetch: any = jest.fn(async () => ({
@@ -163,4 +170,77 @@ describe('@furystack/rest-client-fetch', () => {
163
170
  })
164
171
  expect(json).toBeCalled()
165
172
  })
173
+
174
+ it('Should parse a response with text/ headers', async () => {
175
+ const text = jest.fn(async () => 'alma')
176
+ const fetch: any = jest.fn(async () => ({
177
+ text,
178
+ headers: {
179
+ get: () => 'text/plain',
180
+ },
181
+ ok: true,
182
+ }))
183
+
184
+ const client = createClient<{
185
+ POST: { '/test': { result: string; headers: { token: string } } }
186
+ }>({
187
+ endpointUrl,
188
+ fetch,
189
+ })
190
+
191
+ const result = await client({
192
+ action: '/test',
193
+ method: 'POST',
194
+ headers: {
195
+ token: '123',
196
+ },
197
+ })
198
+
199
+ expect(result.result).toBe('alma')
200
+
201
+ expect(fetch).toBeCalledWith(PathHelper.joinPaths(endpointUrl, 'test'), {
202
+ method: 'POST',
203
+ headers: {
204
+ token: '123',
205
+ },
206
+ })
207
+ expect(text).toBeCalled()
208
+ })
209
+
210
+ it('Should parse a response with form/multipart headers', async () => {
211
+ const exampleValue = { foo: 1, bar: 'alma' }
212
+ const formData = jest.fn(async () => exampleValue)
213
+ const fetch: any = jest.fn(async () => ({
214
+ formData,
215
+ headers: {
216
+ get: () => 'form/multipart',
217
+ },
218
+ ok: true,
219
+ }))
220
+
221
+ const client = createClient<{
222
+ POST: { '/test': { result: string; headers: { token: string } } }
223
+ }>({
224
+ endpointUrl,
225
+ fetch,
226
+ })
227
+
228
+ const result = await client({
229
+ action: '/test',
230
+ method: 'POST',
231
+ headers: {
232
+ token: '123',
233
+ },
234
+ })
235
+
236
+ expect(result.result).toBe(exampleValue)
237
+
238
+ expect(fetch).toBeCalledWith(PathHelper.joinPaths(endpointUrl, 'test'), {
239
+ method: 'POST',
240
+ headers: {
241
+ token: '123',
242
+ },
243
+ })
244
+ expect(formData).toBeCalled()
245
+ })
166
246
  })