@smess/networking 1.0.1
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.
- package/README.md +104 -0
- package/dist/core/axios.d.ts +51 -0
- package/dist/core/axios.js +67 -0
- package/dist/core/axios.observable.d.ts +11 -0
- package/dist/core/axios.observable.js +60 -0
- package/dist/core/base.provider.advanced.test.d.ts +1 -0
- package/dist/core/base.provider.advanced.test.js +25 -0
- package/dist/core/base.provider.d.ts +15 -0
- package/dist/core/base.provider.js +13 -0
- package/dist/core/base.provider.test.d.ts +1 -0
- package/dist/core/base.provider.test.js +28 -0
- package/dist/core/base.service.wrapper.advanced.test.d.ts +1 -0
- package/dist/core/base.service.wrapper.advanced.test.js +44 -0
- package/dist/core/base.service.wrapper.d.ts +7 -0
- package/dist/core/base.service.wrapper.js +14 -0
- package/dist/core/base.service.wrapper.test.d.ts +1 -0
- package/dist/core/base.service.wrapper.test.js +27 -0
- package/dist/core/product.service.d.ts +19 -0
- package/dist/core/product.service.js +46 -0
- package/dist/core/product.service.test.d.ts +1 -0
- package/dist/core/product.service.test.js +63 -0
- package/dist/core/rx.http.service.d.ts +51 -0
- package/dist/core/rx.http.service.js +67 -0
- package/dist/core/user.service.d.ts +15 -0
- package/dist/core/user.service.js +39 -0
- package/dist/core/user.service.test.d.ts +1 -0
- package/dist/core/user.service.test.js +45 -0
- package/dist/scripts/real-test.d.ts +1 -0
- package/dist/scripts/real-test.js +74 -0
- package/dist/services/logger.service.d.ts +31 -0
- package/dist/services/logger.service.js +97 -0
- package/dist/services/logger.service.test.d.ts +1 -0
- package/dist/services/logger.service.test.js +33 -0
- package/dist/services/smess.service.d.ts +29 -0
- package/dist/services/smess.service.js +136 -0
- package/dist/services/smess.service.test.d.ts +1 -0
- package/dist/services/smess.service.test.js +80 -0
- package/dist/src/core/axios.d.ts +51 -0
- package/dist/src/core/axios.js +68 -0
- package/dist/src/core/axios.observable.d.ts +11 -0
- package/dist/src/core/axios.observable.js +61 -0
- package/dist/src/core/base.provider.advanced.test.d.ts +1 -0
- package/dist/src/core/base.provider.advanced.test.js +31 -0
- package/dist/src/core/base.provider.d.ts +15 -0
- package/dist/src/core/base.provider.js +13 -0
- package/dist/src/core/base.provider.test.d.ts +1 -0
- package/dist/src/core/base.provider.test.js +34 -0
- package/dist/src/core/base.service.wrapper.advanced.test.d.ts +1 -0
- package/dist/src/core/base.service.wrapper.advanced.test.js +38 -0
- package/dist/src/core/base.service.wrapper.d.ts +7 -0
- package/dist/src/core/base.service.wrapper.js +15 -0
- package/dist/src/core/base.service.wrapper.test.d.ts +1 -0
- package/dist/src/core/base.service.wrapper.test.js +27 -0
- package/dist/src/core/rx.http.service.d.ts +51 -0
- package/dist/src/core/rx.http.service.js +68 -0
- package/dist/src/domain/auth.provider.d.ts +12 -0
- package/dist/src/domain/auth.provider.js +67 -0
- package/dist/src/domain/product.service.d.ts +21 -0
- package/dist/src/domain/product.service.js +47 -0
- package/dist/src/domain/smess.service.d.ts +35 -0
- package/dist/src/domain/smess.service.js +137 -0
- package/dist/src/domain/tests/auth.service.test.d.ts +1 -0
- package/dist/src/domain/tests/auth.service.test.js +80 -0
- package/dist/src/domain/tests/product.service.test.d.ts +1 -0
- package/dist/src/domain/tests/product.service.test.js +47 -0
- package/dist/src/domain/tests/smess.service.test.d.ts +1 -0
- package/dist/src/domain/tests/smess.service.test.js +106 -0
- package/dist/src/domain/tests/user.service.test.d.ts +1 -0
- package/dist/src/domain/tests/user.service.test.js +51 -0
- package/dist/src/domain/user.service.d.ts +16 -0
- package/dist/src/domain/user.service.js +39 -0
- package/dist/src/services/logger.service.d.ts +31 -0
- package/dist/src/services/logger.service.js +97 -0
- package/dist/src/services/logger.service.test.d.ts +1 -0
- package/dist/src/services/logger.service.test.js +33 -0
- package/dist/src/types/types.d.ts +95 -0
- package/dist/src/types/types.js +89 -0
- package/dist/src/types/types.test.d.ts +1 -0
- package/dist/src/types/types.test.js +27 -0
- package/dist/src/utils/networking-import.d.ts +4 -0
- package/dist/src/utils/networking-import.js +43 -0
- package/dist/src/utils/rxjs-import.d.ts +5 -0
- package/dist/src/utils/rxjs-import.js +34 -0
- package/dist/types/types.d.ts +89 -0
- package/dist/types/types.js +89 -0
- package/dist/types/types.test.d.ts +1 -0
- package/dist/types/types.test.js +27 -0
- package/dist/utils/networking-import.d.ts +4 -0
- package/dist/utils/networking-import.js +43 -0
- package/dist/utils/networking-settings.d.ts +6 -0
- package/dist/utils/networking-settings.js +19 -0
- package/dist/utils/networking-settings.test.d.ts +1 -0
- package/dist/utils/networking-settings.test.js +21 -0
- package/dist/utils/rxjs-import.d.ts +5 -0
- package/dist/utils/rxjs-import.js +34 -0
- package/package.json +33 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
DEBUG = 0,
|
|
3
|
+
INFO = 1,
|
|
4
|
+
WARN = 2,
|
|
5
|
+
ERROR = 3,
|
|
6
|
+
NONE = 4
|
|
7
|
+
}
|
|
8
|
+
export interface LogEntry {
|
|
9
|
+
level: LogLevel;
|
|
10
|
+
message: string;
|
|
11
|
+
data?: unknown;
|
|
12
|
+
timestamp: number;
|
|
13
|
+
context?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class LoggerService {
|
|
16
|
+
private currentLevel;
|
|
17
|
+
private logs;
|
|
18
|
+
private maxLogs;
|
|
19
|
+
setLogLevel(level: LogLevel): void;
|
|
20
|
+
private shouldLog;
|
|
21
|
+
private formatMessage;
|
|
22
|
+
private getEmojiForLevel;
|
|
23
|
+
private log;
|
|
24
|
+
debug(message: string, data?: unknown, context?: string): void;
|
|
25
|
+
info(message: string, data?: unknown, context?: string): void;
|
|
26
|
+
warn(message: string, data?: unknown, context?: string): void;
|
|
27
|
+
error(message: string, data?: unknown, context?: string): void;
|
|
28
|
+
getLogs(): LogEntry[];
|
|
29
|
+
clearLogs(): void;
|
|
30
|
+
}
|
|
31
|
+
export declare const $logger: LoggerService;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.$logger = exports.LoggerService = exports.LogLevel = void 0;
|
|
4
|
+
var LogLevel;
|
|
5
|
+
(function (LogLevel) {
|
|
6
|
+
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
7
|
+
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
8
|
+
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
9
|
+
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
10
|
+
LogLevel[LogLevel["NONE"] = 4] = "NONE";
|
|
11
|
+
})(LogLevel || (exports.LogLevel = LogLevel = {}));
|
|
12
|
+
class LoggerService {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.currentLevel = LogLevel.DEBUG;
|
|
15
|
+
this.logs = [];
|
|
16
|
+
this.maxLogs = 1000;
|
|
17
|
+
}
|
|
18
|
+
setLogLevel(level) {
|
|
19
|
+
this.currentLevel = level;
|
|
20
|
+
}
|
|
21
|
+
shouldLog(level) {
|
|
22
|
+
return level >= this.currentLevel;
|
|
23
|
+
}
|
|
24
|
+
formatMessage(level, message, context) {
|
|
25
|
+
const emoji = this.getEmojiForLevel(level);
|
|
26
|
+
const levelName = LogLevel[level];
|
|
27
|
+
const contextStr = context ? ` [${context}]` : '';
|
|
28
|
+
return `${emoji} ${levelName}${contextStr}: ${message}`;
|
|
29
|
+
}
|
|
30
|
+
getEmojiForLevel(level) {
|
|
31
|
+
switch (level) {
|
|
32
|
+
case LogLevel.DEBUG:
|
|
33
|
+
return '🔍';
|
|
34
|
+
case LogLevel.INFO:
|
|
35
|
+
return 'ℹ️';
|
|
36
|
+
case LogLevel.WARN:
|
|
37
|
+
return '⚠️';
|
|
38
|
+
case LogLevel.ERROR:
|
|
39
|
+
return '❌';
|
|
40
|
+
default:
|
|
41
|
+
return '📝';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
log(level, message, data, context) {
|
|
45
|
+
if (!this.shouldLog(level))
|
|
46
|
+
return;
|
|
47
|
+
const logEntry = {
|
|
48
|
+
level,
|
|
49
|
+
message,
|
|
50
|
+
data,
|
|
51
|
+
timestamp: Date.now(),
|
|
52
|
+
context
|
|
53
|
+
};
|
|
54
|
+
// Store log entry
|
|
55
|
+
this.logs.push(logEntry);
|
|
56
|
+
if (this.logs.length > this.maxLogs) {
|
|
57
|
+
this.logs.shift();
|
|
58
|
+
}
|
|
59
|
+
// Console output
|
|
60
|
+
const formattedMessage = this.formatMessage(level, message, context);
|
|
61
|
+
switch (level) {
|
|
62
|
+
case LogLevel.DEBUG:
|
|
63
|
+
console.debug(formattedMessage, data || '');
|
|
64
|
+
break;
|
|
65
|
+
case LogLevel.INFO:
|
|
66
|
+
console.info(formattedMessage, data || '');
|
|
67
|
+
break;
|
|
68
|
+
case LogLevel.WARN:
|
|
69
|
+
console.warn(formattedMessage, data || '');
|
|
70
|
+
break;
|
|
71
|
+
case LogLevel.ERROR:
|
|
72
|
+
console.error(formattedMessage, data || '');
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
debug(message, data, context) {
|
|
77
|
+
this.log(LogLevel.DEBUG, message, data, context);
|
|
78
|
+
}
|
|
79
|
+
info(message, data, context) {
|
|
80
|
+
this.log(LogLevel.INFO, message, data, context);
|
|
81
|
+
}
|
|
82
|
+
warn(message, data, context) {
|
|
83
|
+
this.log(LogLevel.WARN, message, data, context);
|
|
84
|
+
}
|
|
85
|
+
error(message, data, context) {
|
|
86
|
+
this.log(LogLevel.ERROR, message, data, context);
|
|
87
|
+
}
|
|
88
|
+
getLogs() {
|
|
89
|
+
return [...this.logs];
|
|
90
|
+
}
|
|
91
|
+
clearLogs() {
|
|
92
|
+
this.logs = [];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.LoggerService = LoggerService;
|
|
96
|
+
// Export singleton instance
|
|
97
|
+
exports.$logger = new LoggerService();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const logger_service_1 = require("./logger.service");
|
|
4
|
+
describe('LoggerService', () => {
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
logger_service_1.$logger.clearLogs();
|
|
7
|
+
logger_service_1.$logger.setLogLevel(logger_service_1.LogLevel.DEBUG);
|
|
8
|
+
});
|
|
9
|
+
it('should log info', () => {
|
|
10
|
+
logger_service_1.$logger.info('info message', { foo: 1 }, 'test');
|
|
11
|
+
const logs = logger_service_1.$logger.getLogs();
|
|
12
|
+
expect(logs[0].level).toBe(logger_service_1.LogLevel.INFO);
|
|
13
|
+
expect(logs[0].message).toBe('info message');
|
|
14
|
+
expect(logs[0].data).toEqual({ foo: 1 });
|
|
15
|
+
expect(logs[0].context).toBe('test');
|
|
16
|
+
});
|
|
17
|
+
it('should log warn and error', () => {
|
|
18
|
+
logger_service_1.$logger.warn('warn message');
|
|
19
|
+
logger_service_1.$logger.error('error message', { bar: 2 });
|
|
20
|
+
const logs = logger_service_1.$logger.getLogs();
|
|
21
|
+
expect(logs[0].level).toBe(logger_service_1.LogLevel.WARN);
|
|
22
|
+
expect(logs[1].level).toBe(logger_service_1.LogLevel.ERROR);
|
|
23
|
+
expect(logs[1].data).toEqual({ bar: 2 });
|
|
24
|
+
});
|
|
25
|
+
it('should respect log level', () => {
|
|
26
|
+
logger_service_1.$logger.setLogLevel(logger_service_1.LogLevel.ERROR);
|
|
27
|
+
logger_service_1.$logger.info('should not log');
|
|
28
|
+
logger_service_1.$logger.error('should log');
|
|
29
|
+
const logs = logger_service_1.$logger.getLogs();
|
|
30
|
+
expect(logs.length).toBe(1);
|
|
31
|
+
expect(logs[0].level).toBe(logger_service_1.LogLevel.ERROR);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
export type CallbackHandler = () => void;
|
|
2
|
+
interface AlertModelable {
|
|
3
|
+
isUnauthenticated: boolean;
|
|
4
|
+
isNetworkingError: boolean;
|
|
5
|
+
}
|
|
6
|
+
interface AlertButtonModelable {
|
|
7
|
+
title: string;
|
|
8
|
+
handler?: CallbackHandler;
|
|
9
|
+
}
|
|
10
|
+
export declare class AlertButtonModel implements AlertButtonModelable {
|
|
11
|
+
title: string;
|
|
12
|
+
handler?: CallbackHandler | undefined;
|
|
13
|
+
constructor(title: string, handler?: CallbackHandler | undefined);
|
|
14
|
+
static buttonYes(handler?: CallbackHandler): AlertButtonModelable;
|
|
15
|
+
static buttonNo(handler?: CallbackHandler): AlertButtonModelable;
|
|
16
|
+
}
|
|
17
|
+
export declare class AlertModel implements AlertModelable {
|
|
18
|
+
message: string;
|
|
19
|
+
httpErrorCode: number;
|
|
20
|
+
isDisplayable: boolean;
|
|
21
|
+
title?: string | undefined;
|
|
22
|
+
data?: unknown | undefined;
|
|
23
|
+
buttons?: AlertButtonModelable[] | undefined;
|
|
24
|
+
constructor(message: string, httpErrorCode: number, isDisplayable?: boolean, title?: string | undefined, data?: unknown | undefined, buttons?: AlertButtonModelable[] | undefined);
|
|
25
|
+
get isUnauthenticated(): boolean;
|
|
26
|
+
get isNetworkingError(): boolean;
|
|
27
|
+
static default(): AlertModel;
|
|
28
|
+
}
|
|
29
|
+
export declare class ValidationErrorMessage {
|
|
30
|
+
message: string;
|
|
31
|
+
constructor(message: string);
|
|
32
|
+
}
|
|
33
|
+
export type NetworkingFailed = {
|
|
34
|
+
alertModel: AlertModel;
|
|
35
|
+
};
|
|
36
|
+
export type NetworkingSucceeded<ResponseType> = {
|
|
37
|
+
responseBody: ResponseType;
|
|
38
|
+
};
|
|
39
|
+
export declare enum NetworkingUIEvent {
|
|
40
|
+
waiting = "waiting",
|
|
41
|
+
succeeded = "succeeded",
|
|
42
|
+
failed = "failed"
|
|
43
|
+
}
|
|
44
|
+
export declare class NetworkingUIEventWrapped<JSONResponse> {
|
|
45
|
+
private event;
|
|
46
|
+
private succeeded?;
|
|
47
|
+
private failed?;
|
|
48
|
+
constructor(event: NetworkingUIEvent, succeeded?: NetworkingSucceeded<JSONResponse> | undefined, failed?: NetworkingFailed | undefined);
|
|
49
|
+
get response(): JSONResponse | null;
|
|
50
|
+
get alertModel(): AlertModel | null;
|
|
51
|
+
get isWaiting(): boolean;
|
|
52
|
+
get hasSuccess(): boolean;
|
|
53
|
+
get hasFailed(): boolean;
|
|
54
|
+
get isUnauthenticated(): boolean;
|
|
55
|
+
static waiting<JSONResponse>(): NetworkingUIEventWrapped<JSONResponse>;
|
|
56
|
+
static succeeded<JSONResponse>(data: JSONResponse): NetworkingUIEventWrapped<JSONResponse>;
|
|
57
|
+
static failed<JSONResponse>(alertModel: AlertModel): NetworkingUIEventWrapped<JSONResponse>;
|
|
58
|
+
}
|
|
59
|
+
export interface ProviderType {
|
|
60
|
+
baseURL: string;
|
|
61
|
+
path: string;
|
|
62
|
+
method: string;
|
|
63
|
+
headers: Record<string, string | undefined>;
|
|
64
|
+
getPath(...queryParams: unknown[]): string;
|
|
65
|
+
}
|
|
66
|
+
export interface ProviderTypeMockable {
|
|
67
|
+
shouldUseMockData: boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface HeaderType {
|
|
70
|
+
shouldAddEncryptionHeader?: boolean;
|
|
71
|
+
shouldAddClientIdHeader?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface HttpResponse {
|
|
74
|
+
data: unknown;
|
|
75
|
+
}
|
|
76
|
+
export interface ServerValidationErrorMessage {
|
|
77
|
+
message: string;
|
|
78
|
+
parameters?: {
|
|
79
|
+
error_code?: string;
|
|
80
|
+
field?: string;
|
|
81
|
+
[key: string]: unknown;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export interface ServerErrorResponse {
|
|
85
|
+
errors?: {
|
|
86
|
+
[field: string]: ServerValidationErrorMessage[];
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export interface NetworkingConfig {
|
|
90
|
+
baseUrl: string;
|
|
91
|
+
isProd: boolean;
|
|
92
|
+
clientId?: string;
|
|
93
|
+
apiKey?: string;
|
|
94
|
+
}
|
|
95
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NetworkingUIEventWrapped = exports.NetworkingUIEvent = exports.ValidationErrorMessage = exports.AlertModel = exports.AlertButtonModel = void 0;
|
|
4
|
+
class AlertButtonModel {
|
|
5
|
+
constructor(title, handler) {
|
|
6
|
+
this.title = title;
|
|
7
|
+
this.handler = handler;
|
|
8
|
+
}
|
|
9
|
+
static buttonYes(handler) {
|
|
10
|
+
return new AlertButtonModel('Yes', handler);
|
|
11
|
+
}
|
|
12
|
+
static buttonNo(handler) {
|
|
13
|
+
return new AlertButtonModel('No', handler);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.AlertButtonModel = AlertButtonModel;
|
|
17
|
+
class AlertModel {
|
|
18
|
+
constructor(message, httpErrorCode, isDisplayable = false, title, data, buttons) {
|
|
19
|
+
this.message = message;
|
|
20
|
+
this.httpErrorCode = httpErrorCode;
|
|
21
|
+
this.isDisplayable = isDisplayable;
|
|
22
|
+
this.title = title;
|
|
23
|
+
this.data = data;
|
|
24
|
+
this.buttons = buttons;
|
|
25
|
+
}
|
|
26
|
+
get isUnauthenticated() {
|
|
27
|
+
return this.httpErrorCode == 401;
|
|
28
|
+
}
|
|
29
|
+
get isNetworkingError() {
|
|
30
|
+
return this.httpErrorCode == 0;
|
|
31
|
+
}
|
|
32
|
+
static default() {
|
|
33
|
+
return new AlertModel('Generic Error', 0, true, '', null, [
|
|
34
|
+
AlertButtonModel.buttonYes(),
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.AlertModel = AlertModel;
|
|
39
|
+
class ValidationErrorMessage {
|
|
40
|
+
constructor(message) {
|
|
41
|
+
this.message = message;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.ValidationErrorMessage = ValidationErrorMessage;
|
|
45
|
+
var NetworkingUIEvent;
|
|
46
|
+
(function (NetworkingUIEvent) {
|
|
47
|
+
NetworkingUIEvent["waiting"] = "waiting";
|
|
48
|
+
NetworkingUIEvent["succeeded"] = "succeeded";
|
|
49
|
+
NetworkingUIEvent["failed"] = "failed";
|
|
50
|
+
})(NetworkingUIEvent || (exports.NetworkingUIEvent = NetworkingUIEvent = {}));
|
|
51
|
+
class NetworkingUIEventWrapped {
|
|
52
|
+
constructor(event, succeeded, failed) {
|
|
53
|
+
this.event = event;
|
|
54
|
+
this.succeeded = succeeded;
|
|
55
|
+
this.failed = failed;
|
|
56
|
+
}
|
|
57
|
+
get response() {
|
|
58
|
+
return this.succeeded ? this.succeeded.responseBody : null;
|
|
59
|
+
}
|
|
60
|
+
get alertModel() {
|
|
61
|
+
return this.failed ? this.failed.alertModel : null;
|
|
62
|
+
}
|
|
63
|
+
get isWaiting() {
|
|
64
|
+
return this.event == NetworkingUIEvent.waiting;
|
|
65
|
+
}
|
|
66
|
+
get hasSuccess() {
|
|
67
|
+
return this.event == NetworkingUIEvent.succeeded;
|
|
68
|
+
}
|
|
69
|
+
get hasFailed() {
|
|
70
|
+
return this.event == NetworkingUIEvent.failed;
|
|
71
|
+
}
|
|
72
|
+
get isUnauthenticated() {
|
|
73
|
+
return this.alertModel ? this.alertModel.isUnauthenticated : false;
|
|
74
|
+
}
|
|
75
|
+
static waiting() {
|
|
76
|
+
return new NetworkingUIEventWrapped(NetworkingUIEvent.waiting);
|
|
77
|
+
}
|
|
78
|
+
static succeeded(data) {
|
|
79
|
+
return new NetworkingUIEventWrapped(NetworkingUIEvent.succeeded, {
|
|
80
|
+
responseBody: data,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
static failed(alertModel) {
|
|
84
|
+
return new NetworkingUIEventWrapped(NetworkingUIEvent.failed, undefined, {
|
|
85
|
+
alertModel: alertModel,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.NetworkingUIEventWrapped = NetworkingUIEventWrapped;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const types_1 = require("./types");
|
|
4
|
+
describe('NetworkingUIEventWrapped', () => {
|
|
5
|
+
it('should wrap succeeded response', () => {
|
|
6
|
+
const wrap = types_1.NetworkingUIEventWrapped.succeeded({ foo: 'bar' });
|
|
7
|
+
expect(wrap.response).toEqual({ foo: 'bar' });
|
|
8
|
+
expect(wrap.hasSuccess).toBe(true);
|
|
9
|
+
expect(wrap.hasFailed).toBe(false);
|
|
10
|
+
expect(wrap.isWaiting).toBe(false);
|
|
11
|
+
});
|
|
12
|
+
it('should wrap failed response and set alertModel', () => {
|
|
13
|
+
const alert = new types_1.AlertModel('err', 500, true, 'Error', { detail: 'fail' });
|
|
14
|
+
const wrap = types_1.NetworkingUIEventWrapped.failed(alert);
|
|
15
|
+
expect(wrap.response).toBeNull();
|
|
16
|
+
expect(wrap.hasSuccess).toBe(false);
|
|
17
|
+
expect(wrap.hasFailed).toBe(true);
|
|
18
|
+
expect(wrap.isWaiting).toBe(false);
|
|
19
|
+
expect(wrap.alertModel).toBe(alert);
|
|
20
|
+
});
|
|
21
|
+
it('should wrap waiting state', () => {
|
|
22
|
+
const wrap = types_1.NetworkingUIEventWrapped.waiting();
|
|
23
|
+
expect(wrap.isWaiting).toBe(true);
|
|
24
|
+
expect(wrap.hasSuccess).toBe(false);
|
|
25
|
+
expect(wrap.hasFailed).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.HttpStatusCode = exports.axios = void 0;
|
|
40
|
+
__exportStar(require("axios"), exports);
|
|
41
|
+
const axios_1 = __importStar(require("axios"));
|
|
42
|
+
exports.axios = axios_1.default;
|
|
43
|
+
Object.defineProperty(exports, "HttpStatusCode", { enumerable: true, get: function () { return axios_1.HttpStatusCode; } });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BehaviorSubject, Observable, Subject, Subscription, Subscriber, catchError, combineLatest, concatMap, distinctUntilChanged, filter, firstValueFrom, from, fromEvent, merge, NEVER, interval, map, mergeMap, of, pipe, shareReplay, startWith, tap, timeout, retry, throwError, combineLatestWith, debounceTime, delay, takeUntil } from 'rxjs';
|
|
2
|
+
export { Observable, Subject, BehaviorSubject, Subscription, Subscriber };
|
|
3
|
+
export { startWith, firstValueFrom, from, fromEvent, tap, pipe, distinctUntilChanged, of, mergeMap, interval, map, concatMap, combineLatest, merge, combineLatestWith, debounceTime, delay, timeout, retry, takeUntil, NEVER };
|
|
4
|
+
export { shareReplay, filter };
|
|
5
|
+
export { catchError, throwError };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.throwError = exports.catchError = exports.filter = exports.shareReplay = exports.NEVER = exports.takeUntil = exports.retry = exports.timeout = exports.delay = exports.debounceTime = exports.combineLatestWith = exports.merge = exports.combineLatest = exports.concatMap = exports.map = exports.interval = exports.mergeMap = exports.of = exports.distinctUntilChanged = exports.pipe = exports.tap = exports.fromEvent = exports.from = exports.firstValueFrom = exports.startWith = exports.Subscriber = exports.Subscription = exports.BehaviorSubject = exports.Subject = exports.Observable = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
Object.defineProperty(exports, "BehaviorSubject", { enumerable: true, get: function () { return rxjs_1.BehaviorSubject; } });
|
|
6
|
+
Object.defineProperty(exports, "Observable", { enumerable: true, get: function () { return rxjs_1.Observable; } });
|
|
7
|
+
Object.defineProperty(exports, "Subject", { enumerable: true, get: function () { return rxjs_1.Subject; } });
|
|
8
|
+
Object.defineProperty(exports, "Subscription", { enumerable: true, get: function () { return rxjs_1.Subscription; } });
|
|
9
|
+
Object.defineProperty(exports, "Subscriber", { enumerable: true, get: function () { return rxjs_1.Subscriber; } });
|
|
10
|
+
Object.defineProperty(exports, "catchError", { enumerable: true, get: function () { return rxjs_1.catchError; } });
|
|
11
|
+
Object.defineProperty(exports, "combineLatest", { enumerable: true, get: function () { return rxjs_1.combineLatest; } });
|
|
12
|
+
Object.defineProperty(exports, "concatMap", { enumerable: true, get: function () { return rxjs_1.concatMap; } });
|
|
13
|
+
Object.defineProperty(exports, "distinctUntilChanged", { enumerable: true, get: function () { return rxjs_1.distinctUntilChanged; } });
|
|
14
|
+
Object.defineProperty(exports, "filter", { enumerable: true, get: function () { return rxjs_1.filter; } });
|
|
15
|
+
Object.defineProperty(exports, "firstValueFrom", { enumerable: true, get: function () { return rxjs_1.firstValueFrom; } });
|
|
16
|
+
Object.defineProperty(exports, "from", { enumerable: true, get: function () { return rxjs_1.from; } });
|
|
17
|
+
Object.defineProperty(exports, "fromEvent", { enumerable: true, get: function () { return rxjs_1.fromEvent; } });
|
|
18
|
+
Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return rxjs_1.merge; } });
|
|
19
|
+
Object.defineProperty(exports, "NEVER", { enumerable: true, get: function () { return rxjs_1.NEVER; } });
|
|
20
|
+
Object.defineProperty(exports, "interval", { enumerable: true, get: function () { return rxjs_1.interval; } });
|
|
21
|
+
Object.defineProperty(exports, "map", { enumerable: true, get: function () { return rxjs_1.map; } });
|
|
22
|
+
Object.defineProperty(exports, "mergeMap", { enumerable: true, get: function () { return rxjs_1.mergeMap; } });
|
|
23
|
+
Object.defineProperty(exports, "of", { enumerable: true, get: function () { return rxjs_1.of; } });
|
|
24
|
+
Object.defineProperty(exports, "pipe", { enumerable: true, get: function () { return rxjs_1.pipe; } });
|
|
25
|
+
Object.defineProperty(exports, "shareReplay", { enumerable: true, get: function () { return rxjs_1.shareReplay; } });
|
|
26
|
+
Object.defineProperty(exports, "startWith", { enumerable: true, get: function () { return rxjs_1.startWith; } });
|
|
27
|
+
Object.defineProperty(exports, "tap", { enumerable: true, get: function () { return rxjs_1.tap; } });
|
|
28
|
+
Object.defineProperty(exports, "timeout", { enumerable: true, get: function () { return rxjs_1.timeout; } });
|
|
29
|
+
Object.defineProperty(exports, "retry", { enumerable: true, get: function () { return rxjs_1.retry; } });
|
|
30
|
+
Object.defineProperty(exports, "throwError", { enumerable: true, get: function () { return rxjs_1.throwError; } });
|
|
31
|
+
Object.defineProperty(exports, "combineLatestWith", { enumerable: true, get: function () { return rxjs_1.combineLatestWith; } });
|
|
32
|
+
Object.defineProperty(exports, "debounceTime", { enumerable: true, get: function () { return rxjs_1.debounceTime; } });
|
|
33
|
+
Object.defineProperty(exports, "delay", { enumerable: true, get: function () { return rxjs_1.delay; } });
|
|
34
|
+
Object.defineProperty(exports, "takeUntil", { enumerable: true, get: function () { return rxjs_1.takeUntil; } });
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export type CallbackHandler = () => void;
|
|
2
|
+
interface AlertModelable {
|
|
3
|
+
isUnauthenticated: boolean;
|
|
4
|
+
isNetworkingError: boolean;
|
|
5
|
+
}
|
|
6
|
+
interface AlertButtonModelable {
|
|
7
|
+
title: string;
|
|
8
|
+
handler?: CallbackHandler;
|
|
9
|
+
}
|
|
10
|
+
export declare class AlertButtonModel implements AlertButtonModelable {
|
|
11
|
+
title: string;
|
|
12
|
+
handler?: CallbackHandler | undefined;
|
|
13
|
+
constructor(title: string, handler?: CallbackHandler | undefined);
|
|
14
|
+
static buttonYes(handler?: CallbackHandler): AlertButtonModelable;
|
|
15
|
+
static buttonNo(handler?: CallbackHandler): AlertButtonModelable;
|
|
16
|
+
}
|
|
17
|
+
export declare class AlertModel implements AlertModelable {
|
|
18
|
+
message: string;
|
|
19
|
+
httpErrorCode: number;
|
|
20
|
+
isDisplayable: boolean;
|
|
21
|
+
title?: string | undefined;
|
|
22
|
+
data?: any | undefined;
|
|
23
|
+
buttons?: AlertButtonModelable[] | undefined;
|
|
24
|
+
constructor(message: string, httpErrorCode: number, isDisplayable?: boolean, title?: string | undefined, data?: any | undefined, buttons?: AlertButtonModelable[] | undefined);
|
|
25
|
+
get isUnauthenticated(): boolean;
|
|
26
|
+
get isNetworkingError(): boolean;
|
|
27
|
+
static default(): AlertModel;
|
|
28
|
+
}
|
|
29
|
+
export declare class ValidationErrorMessage {
|
|
30
|
+
message: string;
|
|
31
|
+
constructor(message: string);
|
|
32
|
+
}
|
|
33
|
+
export type NetworkingFailed = {
|
|
34
|
+
alertModel: AlertModel;
|
|
35
|
+
};
|
|
36
|
+
export type NetworkingSucceeded<ResponseType> = {
|
|
37
|
+
responseBody: ResponseType;
|
|
38
|
+
};
|
|
39
|
+
export declare enum NetworkingUIEvent {
|
|
40
|
+
waiting = "waiting",
|
|
41
|
+
succeeded = "succeeded",
|
|
42
|
+
failed = "failed"
|
|
43
|
+
}
|
|
44
|
+
export declare class NetworkingUIEventWrapped<JSONResponse> {
|
|
45
|
+
private event;
|
|
46
|
+
private succeeded?;
|
|
47
|
+
private failed?;
|
|
48
|
+
constructor(event: NetworkingUIEvent, succeeded?: NetworkingSucceeded<JSONResponse> | undefined, failed?: NetworkingFailed | undefined);
|
|
49
|
+
get response(): JSONResponse | null;
|
|
50
|
+
get alertModel(): AlertModel | null;
|
|
51
|
+
get isWaiting(): boolean;
|
|
52
|
+
get hasSuccess(): boolean;
|
|
53
|
+
get hasFailed(): boolean;
|
|
54
|
+
get isUnauthenticated(): boolean;
|
|
55
|
+
static waiting<JSONResponse>(): NetworkingUIEventWrapped<JSONResponse>;
|
|
56
|
+
static succeeded<JSONResponse>(data: JSONResponse): NetworkingUIEventWrapped<JSONResponse>;
|
|
57
|
+
static failed<JSONResponse>(alertModel: AlertModel): NetworkingUIEventWrapped<JSONResponse>;
|
|
58
|
+
}
|
|
59
|
+
export interface ProviderType {
|
|
60
|
+
baseURL: string;
|
|
61
|
+
path: string;
|
|
62
|
+
method: string;
|
|
63
|
+
headers: any;
|
|
64
|
+
getPath(...queryParams: any[]): string;
|
|
65
|
+
}
|
|
66
|
+
export interface ProviderTypeMockable {
|
|
67
|
+
shouldUseMockData: boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface HeaderType {
|
|
70
|
+
shouldAddEncryptionHeader?: boolean;
|
|
71
|
+
shouldAddClientIdHeader?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface HttpResponse {
|
|
74
|
+
data: unknown;
|
|
75
|
+
}
|
|
76
|
+
export interface ServerValidationErrorMessage {
|
|
77
|
+
message: string;
|
|
78
|
+
parameters?: {
|
|
79
|
+
error_code?: string;
|
|
80
|
+
field?: string;
|
|
81
|
+
[key: string]: any;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export interface ServerErrorResponse {
|
|
85
|
+
errors?: {
|
|
86
|
+
[field: string]: ServerValidationErrorMessage[];
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NetworkingUIEventWrapped = exports.NetworkingUIEvent = exports.ValidationErrorMessage = exports.AlertModel = exports.AlertButtonModel = void 0;
|
|
4
|
+
class AlertButtonModel {
|
|
5
|
+
constructor(title, handler) {
|
|
6
|
+
this.title = title;
|
|
7
|
+
this.handler = handler;
|
|
8
|
+
}
|
|
9
|
+
static buttonYes(handler) {
|
|
10
|
+
return new AlertButtonModel('Yes', handler);
|
|
11
|
+
}
|
|
12
|
+
static buttonNo(handler) {
|
|
13
|
+
return new AlertButtonModel('No', handler);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.AlertButtonModel = AlertButtonModel;
|
|
17
|
+
class AlertModel {
|
|
18
|
+
constructor(message, httpErrorCode, isDisplayable = false, title, data, buttons) {
|
|
19
|
+
this.message = message;
|
|
20
|
+
this.httpErrorCode = httpErrorCode;
|
|
21
|
+
this.isDisplayable = isDisplayable;
|
|
22
|
+
this.title = title;
|
|
23
|
+
this.data = data;
|
|
24
|
+
this.buttons = buttons;
|
|
25
|
+
}
|
|
26
|
+
get isUnauthenticated() {
|
|
27
|
+
return this.httpErrorCode == 401;
|
|
28
|
+
}
|
|
29
|
+
get isNetworkingError() {
|
|
30
|
+
return this.httpErrorCode == 0;
|
|
31
|
+
}
|
|
32
|
+
static default() {
|
|
33
|
+
return new AlertModel('Generic Error', 0, true, '', null, [
|
|
34
|
+
AlertButtonModel.buttonYes(),
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.AlertModel = AlertModel;
|
|
39
|
+
class ValidationErrorMessage {
|
|
40
|
+
constructor(message) {
|
|
41
|
+
this.message = message;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.ValidationErrorMessage = ValidationErrorMessage;
|
|
45
|
+
var NetworkingUIEvent;
|
|
46
|
+
(function (NetworkingUIEvent) {
|
|
47
|
+
NetworkingUIEvent["waiting"] = "waiting";
|
|
48
|
+
NetworkingUIEvent["succeeded"] = "succeeded";
|
|
49
|
+
NetworkingUIEvent["failed"] = "failed";
|
|
50
|
+
})(NetworkingUIEvent || (exports.NetworkingUIEvent = NetworkingUIEvent = {}));
|
|
51
|
+
class NetworkingUIEventWrapped {
|
|
52
|
+
constructor(event, succeeded, failed) {
|
|
53
|
+
this.event = event;
|
|
54
|
+
this.succeeded = succeeded;
|
|
55
|
+
this.failed = failed;
|
|
56
|
+
}
|
|
57
|
+
get response() {
|
|
58
|
+
return this.succeeded ? this.succeeded.responseBody : null;
|
|
59
|
+
}
|
|
60
|
+
get alertModel() {
|
|
61
|
+
return this.failed ? this.failed.alertModel : null;
|
|
62
|
+
}
|
|
63
|
+
get isWaiting() {
|
|
64
|
+
return this.event == NetworkingUIEvent.waiting;
|
|
65
|
+
}
|
|
66
|
+
get hasSuccess() {
|
|
67
|
+
return this.event == NetworkingUIEvent.succeeded;
|
|
68
|
+
}
|
|
69
|
+
get hasFailed() {
|
|
70
|
+
return this.event == NetworkingUIEvent.failed;
|
|
71
|
+
}
|
|
72
|
+
get isUnauthenticated() {
|
|
73
|
+
return this.alertModel ? this.alertModel.isUnauthenticated : false;
|
|
74
|
+
}
|
|
75
|
+
static waiting() {
|
|
76
|
+
return new NetworkingUIEventWrapped(NetworkingUIEvent.waiting);
|
|
77
|
+
}
|
|
78
|
+
static succeeded(data) {
|
|
79
|
+
return new NetworkingUIEventWrapped(NetworkingUIEvent.succeeded, {
|
|
80
|
+
responseBody: data,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
static failed(alertModel) {
|
|
84
|
+
return new NetworkingUIEventWrapped(NetworkingUIEvent.failed, undefined, {
|
|
85
|
+
alertModel: alertModel,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.NetworkingUIEventWrapped = NetworkingUIEventWrapped;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|