@mysteryinfosolutions/api-core 1.1.0 → 1.2.0
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.
|
@@ -97,10 +97,11 @@ class BaseService {
|
|
|
97
97
|
return this.http.put(`${this.baseUrl}/${id}`, data);
|
|
98
98
|
}
|
|
99
99
|
delete(id, method = 'soft') {
|
|
100
|
+
const methodQuery = `?method=${method}`;
|
|
100
101
|
if (method === 'soft') {
|
|
101
|
-
return this.http.put(`${this.baseUrl}/${id}
|
|
102
|
+
return this.http.put(`${this.baseUrl}/${id}${methodQuery}`, {});
|
|
102
103
|
}
|
|
103
|
-
return this.http.delete(`${this.baseUrl}/${id}
|
|
104
|
+
return this.http.delete(`${this.baseUrl}/${id}${methodQuery}`);
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysteryinfosolutions-api-core.mjs","sources":["../../../projects/api-core/src/lib/api-core.ts","../../../projects/api-core/src/lib/utils/query-utils.ts","../../../projects/api-core/src/lib/models/sort.model.ts","../../../projects/api-core/src/lib/models/filter.model.ts","../../../projects/api-core/src/lib/services/base.service.ts","../../../projects/api-core/src/public-api.ts","../../../projects/api-core/src/mysteryinfosolutions-api-core.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-api-core',\r\n imports: [],\r\n template: `\r\n <p>\r\n api-core works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class ApiCore {\r\n\r\n}\r\n","import { SortItem } from '../models/sort.model';\r\n\r\nexport const sortObjectToString = (sortItems: SortItem[]): string => {\r\n if (!Array.isArray(sortItems) || sortItems.length === 0) return '';\r\n return sortItems.map(s => `${s.field}:${s.order}`).join(',');\r\n};\r\n\r\nexport const jsonToQueryString = (json: any): string => {\r\n if (!json || typeof json !== 'object') return '';\r\n\r\n if (json.hasOwnProperty('sort')) {\r\n json.sort = sortObjectToString(json.sort);\r\n }\r\n\r\n const queryArray = Object.keys(json)\r\n .filter(key => json[key] !== undefined && json[key] !== null)\r\n .map(key => {\r\n if (Array.isArray(json[key])) {\r\n return `${encodeURIComponent(key)}=${encodeURIComponent('[' + json[key].toString() + ']')}`;\r\n } else {\r\n return `${encodeURIComponent(key)}=${encodeURIComponent(json[key])}`;\r\n }\r\n });\r\n\r\n return queryArray.length > 0 ? `?${queryArray.join('&')}` : '';\r\n};\r\n\r\nexport const isEmpty = (obj: any): boolean => {\r\n return !obj || Object.keys(obj).length === 0;\r\n};\r\n","export class SortItem {\r\n constructor(\r\n public field: string,\r\n public order: 'ASC' | 'DESC'\r\n ) {}\r\n}\r\n\r\n","import { SortItem } from './sort.model';\r\nimport { SELECT_MODE } from '../enums/selectmodes.enum';\r\n\r\nexport abstract class Filter {\r\n dateRangeColumn?: string;\r\n dateRangeFrom?: string;\r\n dateRangeTo?: string;\r\n\r\n page: number = 1;\r\n pageLength: number = 10;\r\n\r\n sort?: SortItem[] = [];\r\n\r\n search?: string;\r\n searchColumns?: string;\r\n selectColumns?: string;\r\n selectMode?: SELECT_MODE;\r\n\r\n toQueryParams(): Record<string, any> {\r\n const result: any = {};\r\n Object.entries(this).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null && value !== '') {\r\n result[key] = value;\r\n }\r\n });\r\n return result;\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { jsonToQueryString, isEmpty } from '../utils/query-utils';\r\nimport { IMultiresult, IResponse } from '../models/response.model';\r\n\r\nexport abstract class BaseService
|
|
1
|
+
{"version":3,"file":"mysteryinfosolutions-api-core.mjs","sources":["../../../projects/api-core/src/lib/api-core.ts","../../../projects/api-core/src/lib/utils/query-utils.ts","../../../projects/api-core/src/lib/models/sort.model.ts","../../../projects/api-core/src/lib/models/filter.model.ts","../../../projects/api-core/src/lib/services/base.service.ts","../../../projects/api-core/src/public-api.ts","../../../projects/api-core/src/mysteryinfosolutions-api-core.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-api-core',\r\n imports: [],\r\n template: `\r\n <p>\r\n api-core works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class ApiCore {\r\n\r\n}\r\n","import { SortItem } from '../models/sort.model';\r\n\r\nexport const sortObjectToString = (sortItems: SortItem[]): string => {\r\n if (!Array.isArray(sortItems) || sortItems.length === 0) return '';\r\n return sortItems.map(s => `${s.field}:${s.order}`).join(',');\r\n};\r\n\r\nexport const jsonToQueryString = (json: any): string => {\r\n if (!json || typeof json !== 'object') return '';\r\n\r\n if (json.hasOwnProperty('sort')) {\r\n json.sort = sortObjectToString(json.sort);\r\n }\r\n\r\n const queryArray = Object.keys(json)\r\n .filter(key => json[key] !== undefined && json[key] !== null)\r\n .map(key => {\r\n if (Array.isArray(json[key])) {\r\n return `${encodeURIComponent(key)}=${encodeURIComponent('[' + json[key].toString() + ']')}`;\r\n } else {\r\n return `${encodeURIComponent(key)}=${encodeURIComponent(json[key])}`;\r\n }\r\n });\r\n\r\n return queryArray.length > 0 ? `?${queryArray.join('&')}` : '';\r\n};\r\n\r\nexport const isEmpty = (obj: any): boolean => {\r\n return !obj || Object.keys(obj).length === 0;\r\n};\r\n","export class SortItem {\r\n constructor(\r\n public field: string,\r\n public order: 'ASC' | 'DESC'\r\n ) {}\r\n}\r\n\r\n","import { SortItem } from './sort.model';\r\nimport { SELECT_MODE } from '../enums/selectmodes.enum';\r\n\r\nexport abstract class Filter {\r\n dateRangeColumn?: string;\r\n dateRangeFrom?: string;\r\n dateRangeTo?: string;\r\n\r\n page: number = 1;\r\n pageLength: number = 10;\r\n\r\n sort?: SortItem[] = [];\r\n\r\n search?: string;\r\n searchColumns?: string;\r\n selectColumns?: string;\r\n selectMode?: SELECT_MODE;\r\n\r\n toQueryParams(): Record<string, any> {\r\n const result: any = {};\r\n Object.entries(this).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null && value !== '') {\r\n result[key] = value;\r\n }\r\n });\r\n return result;\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { jsonToQueryString, isEmpty } from '../utils/query-utils';\r\nimport { IMultiresult, IResponse } from '../models/response.model';\r\nimport { Filter } from '../models/filter.model';\r\n\r\nexport abstract class BaseService<\r\n T, // Full model type\r\n TFilter extends Partial<T> & Filter = Partial<T> & Filter, // Filter: model fields + pagination/sorting\r\n TCreate = Partial<T>, // DTO for create\r\n TUpdate = Partial<T> // DTO for update\r\n> {\r\n constructor(\r\n protected http: HttpClient,\r\n protected baseUrl: string\r\n ) { }\r\n\r\n getAll(filter: TFilter = {} as TFilter): Observable<IResponse<IMultiresult<T>>> {\r\n const query = !isEmpty(filter) ? jsonToQueryString(filter) : '';\r\n return this.http.get<IResponse<IMultiresult<T>>>(`${this.baseUrl}${query}`);\r\n }\r\n\r\n getDetails(id: number): Observable<IResponse<T>> {\r\n return this.http.get<IResponse<T>>(`${this.baseUrl}/${id}`);\r\n }\r\n\r\n create(data: TCreate): Observable<IResponse<T>> {\r\n return this.http.post<IResponse<T>>(this.baseUrl, data);\r\n }\r\n\r\n update(id: number, data: TUpdate): Observable<IResponse<T>> {\r\n return this.http.put<IResponse<T>>(`${this.baseUrl}/${id}`, data);\r\n }\r\n\r\n delete(id: number, method: 'soft' | 'hard' = 'soft'): Observable<any> {\r\n const methodQuery = `?method=${method}`;\r\n if (method === 'soft') {\r\n return this.http.put(`${this.baseUrl}/${id}${methodQuery}`, {});\r\n }\r\n return this.http.delete(`${this.baseUrl}/${id}${methodQuery}`);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of api-core\r\n */\r\n\r\nexport * from './lib/api-core';\r\nexport * from './lib/utils/query-utils';\r\nexport * from './lib/models/sort.model';\r\nexport * from './lib/models/filter.model';\r\nexport * from './lib/models/response.model';\r\nexport * from './lib/services/base.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -67,14 +67,17 @@ interface IResponse<T> {
|
|
|
67
67
|
type PagedResponse<T> = IResponse<IMultiresult<T>>;
|
|
68
68
|
type SingleResponse<T> = IResponse<T>;
|
|
69
69
|
|
|
70
|
-
declare abstract class BaseService<T,
|
|
70
|
+
declare abstract class BaseService<T, // Full model type
|
|
71
|
+
TFilter extends Partial<T> & Filter = Partial<T> & Filter, // Filter: model fields + pagination/sorting
|
|
72
|
+
TCreate = Partial<T>, // DTO for create
|
|
73
|
+
TUpdate = Partial<T>> {
|
|
71
74
|
protected http: HttpClient;
|
|
72
75
|
protected baseUrl: string;
|
|
73
76
|
constructor(http: HttpClient, baseUrl: string);
|
|
74
77
|
getAll(filter?: TFilter): Observable<IResponse<IMultiresult<T>>>;
|
|
75
78
|
getDetails(id: number): Observable<IResponse<T>>;
|
|
76
|
-
create(data:
|
|
77
|
-
update(id: number, data:
|
|
79
|
+
create(data: TCreate): Observable<IResponse<T>>;
|
|
80
|
+
update(id: number, data: TUpdate): Observable<IResponse<T>>;
|
|
78
81
|
delete(id: number, method?: 'soft' | 'hard'): Observable<any>;
|
|
79
82
|
}
|
|
80
83
|
|
package/package.json
CHANGED
package/fesm2022/api-core.mjs
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
|
|
4
|
-
class ApiCore {
|
|
5
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: ApiCore, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.2", type: ApiCore, isStandalone: true, selector: "lib-api-core", ngImport: i0, template: `
|
|
7
|
-
<p>
|
|
8
|
-
api-core works!
|
|
9
|
-
</p>
|
|
10
|
-
`, isInline: true, styles: [""] });
|
|
11
|
-
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: ApiCore, decorators: [{
|
|
13
|
-
type: Component,
|
|
14
|
-
args: [{ selector: 'lib-api-core', imports: [], template: `
|
|
15
|
-
<p>
|
|
16
|
-
api-core works!
|
|
17
|
-
</p>
|
|
18
|
-
` }]
|
|
19
|
-
}] });
|
|
20
|
-
|
|
21
|
-
const sortObjectToString = (sortItems) => {
|
|
22
|
-
if (!Array.isArray(sortItems) || sortItems.length === 0)
|
|
23
|
-
return '';
|
|
24
|
-
return sortItems.map(s => `${s.field}:${s.order}`).join(',');
|
|
25
|
-
};
|
|
26
|
-
const jsonToQueryString = (json) => {
|
|
27
|
-
if (!json || typeof json !== 'object')
|
|
28
|
-
return '';
|
|
29
|
-
if (json.hasOwnProperty('sort')) {
|
|
30
|
-
json.sort = sortObjectToString(json.sort);
|
|
31
|
-
}
|
|
32
|
-
const queryArray = Object.keys(json)
|
|
33
|
-
.filter(key => json[key] !== undefined && json[key] !== null)
|
|
34
|
-
.map(key => {
|
|
35
|
-
if (Array.isArray(json[key])) {
|
|
36
|
-
return `${encodeURIComponent(key)}=${encodeURIComponent('[' + json[key].toString() + ']')}`;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
return `${encodeURIComponent(key)}=${encodeURIComponent(json[key])}`;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
return queryArray.length > 0 ? `?${queryArray.join('&')}` : '';
|
|
43
|
-
};
|
|
44
|
-
const isEmpty = (obj) => {
|
|
45
|
-
return !obj || Object.keys(obj).length === 0;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
class SortItem {
|
|
49
|
-
field;
|
|
50
|
-
order;
|
|
51
|
-
constructor(field, order) {
|
|
52
|
-
this.field = field;
|
|
53
|
-
this.order = order;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
class Filter {
|
|
58
|
-
dateRangeColumn;
|
|
59
|
-
dateRangeFrom;
|
|
60
|
-
dateRangeTo;
|
|
61
|
-
page = 1;
|
|
62
|
-
pageLength = 10;
|
|
63
|
-
sort = [];
|
|
64
|
-
search;
|
|
65
|
-
searchColumns;
|
|
66
|
-
selectColumns;
|
|
67
|
-
selectMode;
|
|
68
|
-
toQueryParams() {
|
|
69
|
-
const result = {};
|
|
70
|
-
Object.entries(this).forEach(([key, value]) => {
|
|
71
|
-
if (value !== undefined && value !== null && value !== '') {
|
|
72
|
-
result[key] = value;
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
return result;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
class BaseService {
|
|
80
|
-
http;
|
|
81
|
-
baseUrl;
|
|
82
|
-
constructor(http, baseUrl) {
|
|
83
|
-
this.http = http;
|
|
84
|
-
this.baseUrl = baseUrl;
|
|
85
|
-
}
|
|
86
|
-
getAll(filter = {}) {
|
|
87
|
-
const query = !isEmpty(filter) ? jsonToQueryString(filter) : '';
|
|
88
|
-
return this.http.get(`${this.baseUrl}${query}`);
|
|
89
|
-
}
|
|
90
|
-
getDetails(id) {
|
|
91
|
-
return this.http.get(`${this.baseUrl}/${id}`);
|
|
92
|
-
}
|
|
93
|
-
create(data) {
|
|
94
|
-
return this.http.post(this.baseUrl, data);
|
|
95
|
-
}
|
|
96
|
-
update(id, data) {
|
|
97
|
-
return this.http.put(`${this.baseUrl}/${id}`, data);
|
|
98
|
-
}
|
|
99
|
-
delete(id, method = 'soft') {
|
|
100
|
-
if (method === 'soft') {
|
|
101
|
-
return this.http.put(`${this.baseUrl}/${id}?method=soft`, {});
|
|
102
|
-
}
|
|
103
|
-
return this.http.delete(`${this.baseUrl}/${id}?method=hard`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/*
|
|
108
|
-
* Public API Surface of api-core
|
|
109
|
-
*/
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Generated bundle index. Do not edit.
|
|
113
|
-
*/
|
|
114
|
-
|
|
115
|
-
export { ApiCore, BaseService, Filter, SortItem, isEmpty, jsonToQueryString, sortObjectToString };
|
|
116
|
-
//# sourceMappingURL=api-core.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-core.mjs","sources":["../../../projects/api-core/src/lib/api-core.ts","../../../projects/api-core/src/lib/utils/query-utils.ts","../../../projects/api-core/src/lib/models/sort.model.ts","../../../projects/api-core/src/lib/models/filter.model.ts","../../../projects/api-core/src/lib/services/base.service.ts","../../../projects/api-core/src/public-api.ts","../../../projects/api-core/src/api-core.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-api-core',\r\n imports: [],\r\n template: `\r\n <p>\r\n api-core works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class ApiCore {\r\n\r\n}\r\n","import { SortItem } from '../models/sort.model';\r\n\r\nexport const sortObjectToString = (sortItems: SortItem[]): string => {\r\n if (!Array.isArray(sortItems) || sortItems.length === 0) return '';\r\n return sortItems.map(s => `${s.field}:${s.order}`).join(',');\r\n};\r\n\r\nexport const jsonToQueryString = (json: any): string => {\r\n if (!json || typeof json !== 'object') return '';\r\n\r\n if (json.hasOwnProperty('sort')) {\r\n json.sort = sortObjectToString(json.sort);\r\n }\r\n\r\n const queryArray = Object.keys(json)\r\n .filter(key => json[key] !== undefined && json[key] !== null)\r\n .map(key => {\r\n if (Array.isArray(json[key])) {\r\n return `${encodeURIComponent(key)}=${encodeURIComponent('[' + json[key].toString() + ']')}`;\r\n } else {\r\n return `${encodeURIComponent(key)}=${encodeURIComponent(json[key])}`;\r\n }\r\n });\r\n\r\n return queryArray.length > 0 ? `?${queryArray.join('&')}` : '';\r\n};\r\n\r\nexport const isEmpty = (obj: any): boolean => {\r\n return !obj || Object.keys(obj).length === 0;\r\n};\r\n","export class SortItem {\r\n constructor(\r\n public field: string,\r\n public order: 'ASC' | 'DESC'\r\n ) {}\r\n}\r\n\r\n","import { SortItem } from './sort.model';\r\nimport { SELECT_MODE } from '../enums/selectmodes.enum';\r\n\r\nexport abstract class Filter {\r\n dateRangeColumn?: string;\r\n dateRangeFrom?: string;\r\n dateRangeTo?: string;\r\n\r\n page: number = 1;\r\n pageLength: number = 10;\r\n\r\n sort?: SortItem[] = [];\r\n\r\n search?: string;\r\n searchColumns?: string;\r\n selectColumns?: string;\r\n selectMode?: SELECT_MODE;\r\n\r\n toQueryParams(): Record<string, any> {\r\n const result: any = {};\r\n Object.entries(this).forEach(([key, value]) => {\r\n if (value !== undefined && value !== null && value !== '') {\r\n result[key] = value;\r\n }\r\n });\r\n return result;\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { jsonToQueryString, isEmpty } from '../utils/query-utils';\r\n\r\nexport abstract class BaseService<T, TFilter = any> {\r\n constructor(\r\n protected http: HttpClient,\r\n protected baseUrl: string\r\n ) { }\r\n\r\n getAll(filter: TFilter = {} as TFilter): Observable<T[]> {\r\n const query = !isEmpty(filter) ? jsonToQueryString(filter) : '';\r\n return this.http.get<T[]>(`${this.baseUrl}${query}`);\r\n }\r\n\r\n getDetails(id: number): Observable<T> {\r\n return this.http.get<T>(`${this.baseUrl}/${id}`);\r\n }\r\n\r\n create(data: T): Observable<T> {\r\n return this.http.post<T>(this.baseUrl, data);\r\n }\r\n\r\n update(id: number, data: T): Observable<T> {\r\n return this.http.put<T>(`${this.baseUrl}/${id}`, data);\r\n }\r\n\r\n delete(id: number, method: 'soft' | 'hard' = 'soft'): Observable<any> {\r\n if (method === 'soft') {\r\n return this.http.put(`${this.baseUrl}/${id}?method=soft`, {});\r\n }\r\n return this.http.delete(`${this.baseUrl}/${id}?method=hard`);\r\n }\r\n}","/*\r\n * Public API Surface of api-core\r\n */\r\n\r\nexport * from './lib/api-core';\r\nexport * from './lib/utils/query-utils';\r\nexport * from './lib/models/sort.model';\r\nexport * from './lib/models/filter.model';\r\nexport * from './lib/models/response.model';\r\nexport * from './lib/services/base.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|