@ps-aux/api-client-angular 0.2.2-rc1 → 0.3.0-rc1

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.
@@ -2,4 +2,4 @@ import { HttpClient as AngularHttpClient } from '@angular/common/http';
2
2
  import { UrlConverter, ObservableHttpClient } from '@ps-aux/api-client-common';
3
3
  export declare const qsUrlConverter: () => UrlConverter;
4
4
  export declare const springBootUrlConverter: () => UrlConverter;
5
- export declare const createHttpClient: (client: AngularHttpClient, urlConverter?: UrlConverter) => ObservableHttpClient;
5
+ export declare const createHttpClient: (client: AngularHttpClient, urlConverter?: UrlConverter) => ObservableHttpClient<never>;
@@ -1,2 +1 @@
1
- export { createHttpClient, springBootUrlConverter, qsUrlConverter } from './AngularApiHttpClient'
2
-
1
+ export { createHttpClient, springBootUrlConverter, qsUrlConverter } from './AngularApiHttpClient';
package/dist/index.esm.js CHANGED
@@ -265,18 +265,17 @@ const getFileNameFromContentDispositionHeader = (contentDispositionHeader) => {
265
265
  };
266
266
 
267
267
  const ContentType = {
268
- Json: 'application/json',
269
- FormData: 'multipart/form-data',
268
+ FormData: 'multipart/form-data'
270
269
  };
271
270
 
272
271
  const qsUrlConverter = () => ({ query, path }) => {
273
272
  return {
274
- url: path + (query ? `?${serializeQueryWithQs(query)}` : ''),
273
+ url: path + (query ? `?${serializeQueryWithQs(query)}` : '')
275
274
  };
276
275
  };
277
276
  const springBootUrlConverter = () => ({ query, path }) => {
278
277
  return {
279
- url: path + (query ? `?${serializeQueryForSpringBoot(query)}` : ''),
278
+ url: path + (query ? `?${serializeQueryForSpringBoot(query)}` : '')
280
279
  };
281
280
  };
282
281
  const createHttpClient = (client, urlConverter = qsUrlConverter()) => {
@@ -288,7 +287,7 @@ const createHttpClient = (client, urlConverter = qsUrlConverter()) => {
288
287
  params,
289
288
  body: prepareBody(req.body, req.type),
290
289
  responseType: (isBlob ? 'blob' : 'json'),
291
- observe: 'response',
290
+ observe: 'response'
292
291
  });
293
292
  return obs.pipe(map((r) => {
294
293
  const { body } = r;
@@ -300,7 +299,7 @@ const createHttpClient = (client, urlConverter = qsUrlConverter()) => {
300
299
  type: data.type
301
300
  });
302
301
  }));
303
- },
302
+ }
304
303
  };
305
304
  };
306
305
  const prepareBody = (payload, type) => {
package/dist/index.js CHANGED
@@ -267,18 +267,17 @@ const getFileNameFromContentDispositionHeader = (contentDispositionHeader) => {
267
267
  };
268
268
 
269
269
  const ContentType = {
270
- Json: 'application/json',
271
- FormData: 'multipart/form-data',
270
+ FormData: 'multipart/form-data'
272
271
  };
273
272
 
274
273
  const qsUrlConverter = () => ({ query, path }) => {
275
274
  return {
276
- url: path + (query ? `?${serializeQueryWithQs(query)}` : ''),
275
+ url: path + (query ? `?${serializeQueryWithQs(query)}` : '')
277
276
  };
278
277
  };
279
278
  const springBootUrlConverter = () => ({ query, path }) => {
280
279
  return {
281
- url: path + (query ? `?${serializeQueryForSpringBoot(query)}` : ''),
280
+ url: path + (query ? `?${serializeQueryForSpringBoot(query)}` : '')
282
281
  };
283
282
  };
284
283
  const createHttpClient = (client, urlConverter = qsUrlConverter()) => {
@@ -290,7 +289,7 @@ const createHttpClient = (client, urlConverter = qsUrlConverter()) => {
290
289
  params,
291
290
  body: prepareBody(req.body, req.type),
292
291
  responseType: (isBlob ? 'blob' : 'json'),
293
- observe: 'response',
292
+ observe: 'response'
294
293
  });
295
294
  return obs.pipe(rxjs.map((r) => {
296
295
  const { body } = r;
@@ -302,7 +301,7 @@ const createHttpClient = (client, urlConverter = qsUrlConverter()) => {
302
301
  type: data.type
303
302
  });
304
303
  }));
305
- },
304
+ }
306
305
  };
307
306
  };
308
307
  const prepareBody = (payload, type) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ps-aux/api-client-angular",
3
- "version": "0.2.2-rc1",
3
+ "version": "0.3.0-rc1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/index.esm.js",
@@ -16,9 +16,7 @@
16
16
  "qs": "^6.11.2"
17
17
  },
18
18
  "peerDependencies": {
19
- "rxjs": "^7.8.1"
20
- },
21
- "devDependencies": {
19
+ "rxjs": "^7.8.1",
22
20
  "@angular/common": "^16.2.12"
23
21
  }
24
22
  }
@@ -1,3 +0,0 @@
1
- import { HttpClient as AngularHttpClient } from '@angular/common/http';
2
- import { HttpClient } from './types';
3
- export declare const createHttpClient: (client: AngularHttpClient) => HttpClient;
@@ -1 +0,0 @@
1
- export { createHttpClient } from './AngularApiHttpClient';
@@ -1,2 +0,0 @@
1
- export declare const serializeQuery: (obj: any) => any;
2
- export declare const flattenObject: (obj: any, prefix?: string) => any;
@@ -1,20 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- export type ContentType = {};
3
- export type RequestParams = {};
4
- export declare const ContentType: {
5
- Json: string;
6
- FormData: string;
7
- };
8
- export type Request = {
9
- path: string;
10
- method: 'GET' | 'POST' | 'PUT' | 'DELETE';
11
- format?: 'json';
12
- query?: any;
13
- body?: any;
14
- type?: string;
15
- secure?: boolean;
16
- responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
17
- };
18
- export type HttpClient<Any = any> = {
19
- request: <Data, A = any>(req: Request) => Observable<Data>;
20
- };
@@ -1 +0,0 @@
1
- export declare const myFun: (f: string) => string;
package/dist/types.d.ts DELETED
@@ -1,19 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- export type ContentType = {};
3
- export type RequestParams = {};
4
- export declare const ContentType: {
5
- Json: string;
6
- FormData: string;
7
- };
8
- export type Request = {
9
- path: string;
10
- method: 'GET' | 'POST' | 'PUT' | 'DELETE';
11
- format?: 'json';
12
- query?: any;
13
- body?: any;
14
- type?: string;
15
- secure?: boolean;
16
- };
17
- export type HttpClient<Any = any> = {
18
- request: <Data, A = any>(req: Request) => Observable<Data>;
19
- };
@@ -1,87 +0,0 @@
1
- import { HttpClient as AngularHttpClient, HttpResponse } from '@angular/common/http'
2
- import { map, Observable } from 'rxjs'
3
- import {
4
- serializeQueryForSpringBoot,
5
- serializeQueryWithQs,
6
- UrlConverter,
7
- ObservableHttpClient,
8
- Request, ContentType, getFileNameFromContentDispositionHeader,
9
- } from '@ps-aux/api-client-common'
10
-
11
- export const qsUrlConverter: () => UrlConverter = () => ({ query, path }) => {
12
- return {
13
- url: path + (query ? `?${serializeQueryWithQs(query)}` : ''),
14
- }
15
- }
16
-
17
- export const springBootUrlConverter: () => UrlConverter = () => ({ query, path }) => {
18
- return {
19
- url: path + (query ? `?${serializeQueryForSpringBoot(query)}` : ''),
20
- }
21
- }
22
-
23
-
24
- export const createHttpClient = (client: AngularHttpClient, urlConverter: UrlConverter = qsUrlConverter()): ObservableHttpClient => {
25
- return {
26
- request: <D>(req: Request): Observable<D> => {
27
- const { url, params } = urlConverter(req)
28
-
29
- const isBlob = req.format === 'document'
30
-
31
- const obs = client.request<D>(
32
- req.method,
33
- url,
34
- {
35
- params,
36
- body: prepareBody(req.body, req.type),
37
- responseType: (isBlob ? 'blob' : 'json') as any,
38
- observe: 'response',
39
- })
40
-
41
- return obs.pipe(
42
- map((r: HttpResponse<D>) => {
43
- const { body } = r
44
-
45
- if (!isBlob)
46
- return body as D
47
-
48
- const data = body as Blob
49
-
50
- const contDisp = r.headers.get('content-disposition')
51
- return new File([data], getFileNameFromContentDispositionHeader(contDisp), {
52
- type: data.type
53
- }) as D
54
- }),
55
- )
56
- },
57
- }
58
- }
59
-
60
- const prepareBody = (payload: any, type?: string): any => {
61
- if (type === ContentType.FormData) {
62
- return convertToFormData(payload)
63
- }
64
-
65
- return payload
66
- }
67
-
68
- const convertToFormData = (payload: Record<string, any>): FormData => {
69
- const formData = new FormData()
70
- const addProp = (key: string, val: any) => {
71
- if (Array.isArray(val) || val instanceof FileList) {
72
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
73
- // @ts-ignore - seems that FileList is iterable despite the warning
74
- // TODO change to other iteration method if this is not true
75
- for (const valItem of val) {
76
- addProp(key, valItem)
77
- }
78
- } else if (typeof val === 'object' && val != null && !(val instanceof File)) {
79
- throw new Error('Object serialization into FormData not supported')
80
- } else {
81
- formData.append(key, val)
82
- }
83
- }
84
-
85
- Object.entries(payload).forEach(([key, val]) => addProp(key, val))
86
- return formData
87
- }
@@ -1,45 +0,0 @@
1
- // @ts-nocheck
2
-
3
- // TODO improve typings and check implementation
4
- export const serializeQuery = (obj: any): any => {
5
- let result = {};
6
- if (obj) {
7
- Object.entries(obj).forEach(([key, val]) => {
8
- if (Array.isArray(val)) {
9
- val.map(v => {
10
- if (result[key]) {
11
- result[key] += `&${key}=${v}`;
12
- } else {
13
- result[key] = v;
14
- }
15
- });
16
- } else if (typeof val === 'object') {
17
- result = { ...result, ...flattenObject(val) };
18
- } else {
19
- result[key] = val;
20
- }
21
- });
22
- }
23
- return result;
24
- };
25
-
26
- export const flattenObject = (obj: any, prefix?: string): any => {
27
- let str = {};
28
- const pfix = prefix ? prefix + '.' : '';
29
-
30
- for (const p in obj) {
31
- if (obj.hasOwnProperty(p)) {
32
- if (Array.isArray(obj[p])) {
33
- str[pfix + p] = obj[p];
34
- } else if (obj[p] === null) {
35
- str[pfix + p] = null;
36
- } else if (typeof obj[p] === 'object') {
37
- str = { ...str, ...flattenObject(obj[p], pfix + p) };
38
- } else if (obj[p] !== undefined) {
39
- str[pfix + p] = obj[p];
40
- }
41
- }
42
- }
43
-
44
- return str;
45
- };