@unvired/react-native-wrapper-sdk 0.0.7 → 0.0.9
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/dist/UnviredWrapper.d.ts +7 -12
- package/dist/UnviredWrapper.d.ts.map +1 -1
- package/dist/UnviredWrapper.js +28 -32
- package/dist/core/UnviredSDK.d.ts +107 -0
- package/dist/core/UnviredSDK.d.ts.map +1 -0
- package/dist/core/UnviredSDK.js +24 -0
- package/dist/core/platform/CordovaPlatformAdapter.d.ts +13 -0
- package/dist/core/platform/CordovaPlatformAdapter.d.ts.map +1 -0
- package/dist/core/platform/CordovaPlatformAdapter.js +62 -0
- package/dist/core/platform/PlatformInterface.d.ts +12 -0
- package/dist/core/platform/PlatformInterface.d.ts.map +1 -0
- package/dist/core/platform/PlatformInterface.js +2 -0
- package/dist/core/platform/PlatformManager.d.ts +10 -0
- package/dist/core/platform/PlatformManager.d.ts.map +1 -0
- package/dist/core/platform/PlatformManager.js +29 -0
- package/dist/core/platform/ReactNativePlatformAdapter.d.ts +13 -0
- package/dist/core/platform/ReactNativePlatformAdapter.d.ts.map +1 -0
- package/dist/core/platform/ReactNativePlatformAdapter.js +47 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/lib/AuthBuilder.d.ts +6 -42
- package/dist/lib/AuthBuilder.d.ts.map +1 -1
- package/dist/lib/AuthBuilder.js +7 -28
- package/package.json +1 -1
- package/src/UnviredWrapper.ts +36 -35
- package/src/core/UnviredSDK.ts +126 -0
- package/src/core/platform/CordovaPlatformAdapter.ts +69 -0
- package/src/core/platform/PlatformInterface.ts +12 -0
- package/src/core/platform/PlatformManager.ts +35 -0
- package/src/core/platform/ReactNativePlatformAdapter.ts +57 -0
- package/src/index.ts +5 -0
- package/src/lib/AuthBuilder.ts +28 -66
package/dist/UnviredWrapper.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import AuthBuilder from './lib/AuthBuilder';
|
|
2
|
-
/**
|
|
3
|
-
* React Native Wrapper for Unvired Core SDK
|
|
4
|
-
* Provides a clean, fluent API for React Native applications
|
|
5
|
-
*/
|
|
6
2
|
export declare class UnviredWrapper {
|
|
3
|
+
private unviredSDK;
|
|
7
4
|
constructor();
|
|
5
|
+
private static get logger();
|
|
8
6
|
/**
|
|
9
7
|
* Returns a builder for login method
|
|
10
8
|
* Can be awaited directly: await sdk.login().setAppName("my-app")
|
|
@@ -20,22 +18,19 @@ export declare class UnviredWrapper {
|
|
|
20
18
|
* Can be awaited directly: await sdk.authenticateLocal().setUsername("demo")
|
|
21
19
|
*/
|
|
22
20
|
authenticateLocal(): AuthBuilder;
|
|
23
|
-
/**
|
|
24
|
-
* Logout method - Logs out the current user
|
|
25
|
-
*/
|
|
26
|
-
logout(): Promise<any>;
|
|
27
|
-
/**
|
|
28
|
-
* Clear all data
|
|
29
|
-
*/
|
|
30
|
-
clearData(): Promise<any>;
|
|
31
21
|
static logInfo(className: string, methodName: string, message: string): void;
|
|
32
22
|
static logError(className: string, methodName: string, message: string): void;
|
|
33
23
|
static logDebug(className: string, methodName: string, message: string): void;
|
|
24
|
+
static logWarning(className: string, methodName: string, message: string): void;
|
|
34
25
|
static setLogLevel(level: string): void;
|
|
35
26
|
static getLogFileURL(): Promise<string>;
|
|
36
27
|
static getLogFileContent(): Promise<string>;
|
|
37
28
|
static getBackupLogFileContent(): Promise<string>;
|
|
38
29
|
static clearLogFile(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Logout method - Calls CoreWebSDK
|
|
32
|
+
*/
|
|
33
|
+
logout(): Promise<boolean>;
|
|
39
34
|
}
|
|
40
35
|
export default UnviredWrapper;
|
|
41
36
|
//# sourceMappingURL=UnviredWrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnviredWrapper.d.ts","sourceRoot":"","sources":["../src/UnviredWrapper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UnviredWrapper.d.ts","sourceRoot":"","sources":["../src/UnviredWrapper.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAK5C,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAa;;IAM/B,OAAO,CAAC,MAAM,KAAK,MAAM,GAGxB;IAED;;;OAGG;IACH,KAAK,IAAI,WAAW;IAIpB;;;OAGG;IACH,uBAAuB,IAAI,WAAW;IAItC;;;OAGG;IACH,iBAAiB,IAAI,WAAW;IAIhC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMrE,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAItE,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAItE,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIxE,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM;WAInB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;WAIhC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;WAIpC,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;WAI1C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjC;AAED,eAAe,cAAc,CAAC"}
|
package/dist/UnviredWrapper.js
CHANGED
|
@@ -4,75 +4,71 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.UnviredWrapper = void 0;
|
|
7
|
+
const UnviredSDK_1 = __importDefault(require("./core/UnviredSDK"));
|
|
7
8
|
const AuthBuilder_1 = __importDefault(require("./lib/AuthBuilder"));
|
|
8
|
-
const
|
|
9
|
-
/**
|
|
10
|
-
* React Native Wrapper for Unvired Core SDK
|
|
11
|
-
* Provides a clean, fluent API for React Native applications
|
|
12
|
-
*/
|
|
9
|
+
const PlatformManager_1 = __importDefault(require("@unvired/unvired-ts-core-sdk/platform/PlatformManager"));
|
|
13
10
|
class UnviredWrapper {
|
|
14
11
|
constructor() {
|
|
15
|
-
|
|
12
|
+
this.unviredSDK = new UnviredSDK_1.default();
|
|
13
|
+
}
|
|
14
|
+
static get logger() {
|
|
15
|
+
console.log('PlatformInterface from core SDK', PlatformManager_1.default);
|
|
16
|
+
return UnviredSDK_1.default.getPlatformManager().getPlatformAdapter();
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* Returns a builder for login method
|
|
19
20
|
* Can be awaited directly: await sdk.login().setAppName("my-app")
|
|
20
21
|
*/
|
|
21
22
|
login() {
|
|
22
|
-
return new AuthBuilder_1.default('login');
|
|
23
|
+
return new AuthBuilder_1.default(this.unviredSDK, 'login');
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
25
26
|
* Returns a builder for authenticateAndActivate method
|
|
26
27
|
* Can be awaited directly: await sdk.authenticateAndActivate().setUsername("demo")
|
|
27
28
|
*/
|
|
28
29
|
authenticateAndActivate() {
|
|
29
|
-
return new AuthBuilder_1.default('authenticateAndActivate');
|
|
30
|
+
return new AuthBuilder_1.default(this.unviredSDK, 'authenticateAndActivate');
|
|
30
31
|
}
|
|
31
32
|
/**
|
|
32
33
|
* Returns a builder for authenticateLocal method
|
|
33
34
|
* Can be awaited directly: await sdk.authenticateLocal().setUsername("demo")
|
|
34
35
|
*/
|
|
35
36
|
authenticateLocal() {
|
|
36
|
-
return new AuthBuilder_1.default('authenticateLocal');
|
|
37
|
+
return new AuthBuilder_1.default(this.unviredSDK, 'authenticateLocal');
|
|
37
38
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Logout method - Logs out the current user
|
|
40
|
-
*/
|
|
41
|
-
async logout() {
|
|
42
|
-
const authService = unvired_ts_core_sdk_1.AuthenticationService.instance;
|
|
43
|
-
return authService.logout();
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Clear all data
|
|
47
|
-
*/
|
|
48
|
-
async clearData() {
|
|
49
|
-
const authService = unvired_ts_core_sdk_1.AuthenticationService.instance;
|
|
50
|
-
return authService.clearData();
|
|
51
|
-
}
|
|
52
|
-
// Logging methods - delegating to PlatformManager's adapter
|
|
53
39
|
static logInfo(className, methodName, message) {
|
|
54
|
-
|
|
40
|
+
console.log('PlatformInterface from core SDK', PlatformManager_1.default);
|
|
41
|
+
this.logger.logInfo(className, methodName, message);
|
|
55
42
|
}
|
|
56
43
|
static logError(className, methodName, message) {
|
|
57
|
-
|
|
44
|
+
this.logger.logError(className, methodName, message);
|
|
58
45
|
}
|
|
59
46
|
static logDebug(className, methodName, message) {
|
|
60
|
-
|
|
47
|
+
this.logger.logDebug(className, methodName, message);
|
|
48
|
+
}
|
|
49
|
+
static logWarning(className, methodName, message) {
|
|
50
|
+
this.logger.logWarning(className, methodName, message);
|
|
61
51
|
}
|
|
62
52
|
static setLogLevel(level) {
|
|
63
|
-
|
|
53
|
+
this.logger.setLogLevel(level);
|
|
64
54
|
}
|
|
65
55
|
static async getLogFileURL() {
|
|
66
|
-
return
|
|
56
|
+
return this.logger.getLogFileURL();
|
|
67
57
|
}
|
|
68
58
|
static async getLogFileContent() {
|
|
69
|
-
return
|
|
59
|
+
return this.logger.getLogFileContent();
|
|
70
60
|
}
|
|
71
61
|
static async getBackupLogFileContent() {
|
|
72
|
-
return
|
|
62
|
+
return this.logger.getBackupLogFileContent();
|
|
73
63
|
}
|
|
74
64
|
static async clearLogFile() {
|
|
75
|
-
return
|
|
65
|
+
return this.logger.clearLogFile();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Logout method - Calls CoreWebSDK
|
|
69
|
+
*/
|
|
70
|
+
async logout() {
|
|
71
|
+
return this.unviredSDK.logout();
|
|
76
72
|
}
|
|
77
73
|
}
|
|
78
74
|
exports.UnviredWrapper = UnviredWrapper;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { PlatformManager } from './platform/PlatformManager';
|
|
2
|
+
export declare enum LoginType {
|
|
3
|
+
unvired = "UNVIRED_ID"
|
|
4
|
+
}
|
|
5
|
+
export declare class LoginParameters {
|
|
6
|
+
/**
|
|
7
|
+
* Set the application name as configured in UMP.
|
|
8
|
+
*/
|
|
9
|
+
appName: string;
|
|
10
|
+
/**
|
|
11
|
+
* Company name as configured in UMP.
|
|
12
|
+
*/
|
|
13
|
+
company: string;
|
|
14
|
+
/**
|
|
15
|
+
* Username of the user trying to login.
|
|
16
|
+
*/
|
|
17
|
+
username: string;
|
|
18
|
+
/**
|
|
19
|
+
* Password of the user trying to login.
|
|
20
|
+
*/
|
|
21
|
+
password: string;
|
|
22
|
+
/**
|
|
23
|
+
* UMP URL. For example: https://umpdev.unvired.io/UMP
|
|
24
|
+
*/
|
|
25
|
+
url: string;
|
|
26
|
+
/**
|
|
27
|
+
* Domain name. Required only if the login type is ADS or SAP.
|
|
28
|
+
*/
|
|
29
|
+
domain: string;
|
|
30
|
+
/**
|
|
31
|
+
* Set this value to one of the allowed login types for your app as configured in UMP.
|
|
32
|
+
*/
|
|
33
|
+
loginType: LoginType;
|
|
34
|
+
/**
|
|
35
|
+
* FrontEndUserId: This id uniquely identifies the user across devices of same type. If the Unvired user has multiple front end ids for a device type, you need to set this value.
|
|
36
|
+
* If the Unvired user has only one front end id, leave this field blank.
|
|
37
|
+
*/
|
|
38
|
+
feUserId: string;
|
|
39
|
+
/**
|
|
40
|
+
* Required only if the loginType is 'sap'. This sets the SAP Port Name.
|
|
41
|
+
*/
|
|
42
|
+
port: string;
|
|
43
|
+
/**
|
|
44
|
+
* Required for Browser Platform.
|
|
45
|
+
* For iOS Platform include the metadata.xml file as part of App Bundle
|
|
46
|
+
* For Android Platform include the metadata.xml file in src > res > raw
|
|
47
|
+
*/
|
|
48
|
+
metadataPath: string;
|
|
49
|
+
/**
|
|
50
|
+
* This is required for Android only. Setting this value would save the attachments as Base64 string for easy access.
|
|
51
|
+
*/
|
|
52
|
+
isRequiredAttachmentBase64: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Set an interval in seconds at which the framework has to make an attempt to send data from outbox.
|
|
55
|
+
* If the data-sender fails for reason, then the framework does not restart even if there are outbox items.
|
|
56
|
+
* In those cases, you will have to set this value, so that the framework always makes an attempt to send from outbox.
|
|
57
|
+
* Example:
|
|
58
|
+
* loginParameters.autoSendTime = '5' // Make an attempt to send data every 5 seconds.
|
|
59
|
+
*/
|
|
60
|
+
autoSendTime: string;
|
|
61
|
+
/**
|
|
62
|
+
* Set the number of seconds at which GetMessage should automatically run. When this value is set, GetMessage would run in a interval as long as there are entries in Sent Items.
|
|
63
|
+
* You may need to set this value if your app doesn't support Push Notifications.
|
|
64
|
+
* By default, the framework does not do GetMessage automatically.
|
|
65
|
+
* Example:
|
|
66
|
+
* loginParameters.autoSyncTime = '5' // Make an attempt to receive data (GetMessage) every 5 seconds.
|
|
67
|
+
*/
|
|
68
|
+
autoSyncTime: string;
|
|
69
|
+
/**
|
|
70
|
+
* Specify the metadata as a JSON string. This will override metadata.xml set at platform level.
|
|
71
|
+
*/
|
|
72
|
+
metadataJSON: string;
|
|
73
|
+
/**
|
|
74
|
+
* Specify the demo data xml string for demo mode.
|
|
75
|
+
*/
|
|
76
|
+
demoData: string;
|
|
77
|
+
/**
|
|
78
|
+
* Set 'true' if the application supports demo mode otherwise set 'false'.
|
|
79
|
+
*/
|
|
80
|
+
demoModeRequired: boolean;
|
|
81
|
+
persistWebDb: boolean;
|
|
82
|
+
jwtOptions: object;
|
|
83
|
+
/**
|
|
84
|
+
* Language code to be sent to UMP. Specify a two-letter language code.
|
|
85
|
+
* The default value of this is 'en'.
|
|
86
|
+
*/
|
|
87
|
+
loginLanguage: string;
|
|
88
|
+
/**
|
|
89
|
+
* Applicable for browser only. Set this flag to indicate that saved data should be reloaded upon launch.
|
|
90
|
+
*/
|
|
91
|
+
cacheWebData: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Set this value if you the login process requires client credentials to be set.
|
|
94
|
+
* You can pass the client credentials with the method: |unviredSDK.setClientCredentials(credentials)|
|
|
95
|
+
* The passed credentials will be used based on this flag.
|
|
96
|
+
*/
|
|
97
|
+
requireClientCredentials: boolean;
|
|
98
|
+
}
|
|
99
|
+
declare class UnviredSDK {
|
|
100
|
+
static getPlatformManager(): PlatformManager;
|
|
101
|
+
login(_loginParameters: LoginParameters): Promise<string>;
|
|
102
|
+
logout(): Promise<boolean>;
|
|
103
|
+
authenticateLocal(_loginParameters: LoginParameters): Promise<string>;
|
|
104
|
+
authenticateAndActivate(_loginParameters: LoginParameters): Promise<string>;
|
|
105
|
+
}
|
|
106
|
+
export default UnviredSDK;
|
|
107
|
+
//# sourceMappingURL=UnviredSDK.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnviredSDK.d.ts","sourceRoot":"","sources":["../../src/core/UnviredSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,OAAO,MAAM,SAAS;IAC3B,OAAO,eAAe;CACvB;AACD,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,0BAA0B,EAAE,OAAO,CAAC;IACpC;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,cAAM,UAAU;IACd,MAAM,CAAC,kBAAkB,IAAI,eAAe;IAItC,KAAK,CAAC,gBAAgB,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1B,iBAAiB,CAAC,gBAAgB,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrE,uBAAuB,CAAC,gBAAgB,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CAIlF;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const PlatformManager_1 = require("./platform/PlatformManager");
|
|
4
|
+
class UnviredSDK {
|
|
5
|
+
static getPlatformManager() {
|
|
6
|
+
return PlatformManager_1.PlatformManager.getInstance();
|
|
7
|
+
}
|
|
8
|
+
async login(_loginParameters) {
|
|
9
|
+
// Returns one of: auth_activation_required, app_requires_login, login_success, app_requires_current_account, login_demo
|
|
10
|
+
return 'auth_activation_required';
|
|
11
|
+
}
|
|
12
|
+
async logout() {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
async authenticateLocal(_loginParameters) {
|
|
16
|
+
// Returns one of: login_success, login_error
|
|
17
|
+
return 'login_success';
|
|
18
|
+
}
|
|
19
|
+
async authenticateAndActivate(_loginParameters) {
|
|
20
|
+
// Returns one of: auth_activation_success, auth_activation_error
|
|
21
|
+
return 'auth_activation_success';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.default = UnviredSDK;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PlatformInterface } from './PlatformInterface';
|
|
2
|
+
export declare class CordovaPlatformAdapter implements PlatformInterface {
|
|
3
|
+
logInfo(className: string, methodName: string, message: string): void;
|
|
4
|
+
logError(className: string, methodName: string, message: string): void;
|
|
5
|
+
logDebug(className: string, methodName: string, message: string): void;
|
|
6
|
+
logWarning(className: string, methodName: string, message: string): void;
|
|
7
|
+
setLogLevel(level: string): void;
|
|
8
|
+
getLogFileURL(): Promise<string>;
|
|
9
|
+
getLogFileContent(): Promise<string>;
|
|
10
|
+
getBackupLogFileContent(): Promise<string>;
|
|
11
|
+
clearLogFile(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=CordovaPlatformAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CordovaPlatformAdapter.d.ts","sourceRoot":"","sources":["../../../src/core/platform/CordovaPlatformAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,qBAAa,sBAAuB,YAAW,iBAAiB;IAG5D,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAItE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAItE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1B,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAWhC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAUpC,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAU1C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAUtC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CordovaPlatformAdapter = void 0;
|
|
4
|
+
class CordovaPlatformAdapter {
|
|
5
|
+
// Logger
|
|
6
|
+
logInfo(className, methodName, message) {
|
|
7
|
+
Logger.logInfo(className, methodName, message);
|
|
8
|
+
}
|
|
9
|
+
logError(className, methodName, message) {
|
|
10
|
+
Logger.logError(className, methodName, message);
|
|
11
|
+
}
|
|
12
|
+
logDebug(className, methodName, message) {
|
|
13
|
+
Logger.logDebug(className, methodName, message);
|
|
14
|
+
}
|
|
15
|
+
logWarning(className, methodName, message) {
|
|
16
|
+
Logger.logWarning(className, methodName, message);
|
|
17
|
+
}
|
|
18
|
+
setLogLevel(level) {
|
|
19
|
+
Logger.setLogLevel(level);
|
|
20
|
+
}
|
|
21
|
+
async getLogFileURL() {
|
|
22
|
+
return new Promise((resolve, reject) => {
|
|
23
|
+
try {
|
|
24
|
+
const url = Logger.getLogFileURL();
|
|
25
|
+
resolve(url);
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
reject(e);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async getLogFileContent() {
|
|
33
|
+
return new Promise((resolve, reject) => {
|
|
34
|
+
Logger.getLogFileContent((content) => {
|
|
35
|
+
resolve(content);
|
|
36
|
+
}, (error) => {
|
|
37
|
+
reject(error);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async getBackupLogFileContent() {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
Logger.getBackupLogFileContent((content) => {
|
|
44
|
+
resolve(content);
|
|
45
|
+
}, (error) => {
|
|
46
|
+
reject(error);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async clearLogFile() {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
try {
|
|
53
|
+
Logger.clearLogFile();
|
|
54
|
+
resolve();
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
reject(e);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.CordovaPlatformAdapter = CordovaPlatformAdapter;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface PlatformInterface {
|
|
2
|
+
logInfo(className: string, methodName: string, message: string): void;
|
|
3
|
+
logError(className: string, methodName: string, message: string): void;
|
|
4
|
+
logDebug(className: string, methodName: string, message: string): void;
|
|
5
|
+
logWarning(className: string, methodName: string, message: string): void;
|
|
6
|
+
setLogLevel(level: string): void;
|
|
7
|
+
getLogFileURL(): Promise<string>;
|
|
8
|
+
getLogFileContent(): Promise<string>;
|
|
9
|
+
getBackupLogFileContent(): Promise<string>;
|
|
10
|
+
clearLogFile(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=PlatformInterface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformInterface.d.ts","sourceRoot":"","sources":["../../../src/core/platform/PlatformInterface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAE9B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACzE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PlatformInterface } from './PlatformInterface';
|
|
2
|
+
export declare class PlatformManager {
|
|
3
|
+
private static instance;
|
|
4
|
+
private platformAdapter;
|
|
5
|
+
private constructor();
|
|
6
|
+
static getInstance(): PlatformManager;
|
|
7
|
+
getPlatformAdapter(): PlatformInterface;
|
|
8
|
+
setPlatformAdapter(adapter: PlatformInterface): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=PlatformManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformManager.d.ts","sourceRoot":"","sources":["../../../src/core/platform/PlatformManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAoB;IAE3C,OAAO;WAMO,WAAW,IAAI,eAAe;IAOrC,kBAAkB,IAAI,iBAAiB;IAIvC,kBAAkB,CAAC,OAAO,EAAE,iBAAiB;CAGvD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlatformManager = void 0;
|
|
4
|
+
const ReactNativePlatformAdapter_1 = require("./ReactNativePlatformAdapter");
|
|
5
|
+
class PlatformManager {
|
|
6
|
+
constructor() {
|
|
7
|
+
// Default to Cordova for now, or detect environment
|
|
8
|
+
// In a real scenario, we might inject this or detect based on environment variables
|
|
9
|
+
this.platformAdapter = new ReactNativePlatformAdapter_1.ReactNativePlatformAdapter();
|
|
10
|
+
}
|
|
11
|
+
static getInstance() {
|
|
12
|
+
if (!PlatformManager.instance) {
|
|
13
|
+
PlatformManager.instance = new PlatformManager();
|
|
14
|
+
}
|
|
15
|
+
return PlatformManager.instance;
|
|
16
|
+
}
|
|
17
|
+
getPlatformAdapter() {
|
|
18
|
+
return this.platformAdapter;
|
|
19
|
+
}
|
|
20
|
+
setPlatformAdapter(adapter) {
|
|
21
|
+
this.platformAdapter = adapter;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.PlatformManager = PlatformManager;
|
|
25
|
+
// Usage:
|
|
26
|
+
// import { PlatformManager } from './platform/PlatformManager';
|
|
27
|
+
// import { ReactNativePlatformAdapter } from './platform/ReactNativePlatformAdapter';
|
|
28
|
+
// // Initialize with React Native adapter
|
|
29
|
+
// PlatformManager.getInstance().setPlatformAdapter(new ReactNativePlatformAdapter());
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PlatformInterface } from './PlatformInterface';
|
|
2
|
+
export declare class ReactNativePlatformAdapter implements PlatformInterface {
|
|
3
|
+
logInfo(className: string, methodName: string, message: string): void;
|
|
4
|
+
logError(className: string, methodName: string, message: string): void;
|
|
5
|
+
logDebug(className: string, methodName: string, message: string): void;
|
|
6
|
+
logWarning(className: string, methodName: string, message: string): void;
|
|
7
|
+
setLogLevel(level: string): void;
|
|
8
|
+
getLogFileURL(): Promise<string>;
|
|
9
|
+
getLogFileContent(): Promise<string>;
|
|
10
|
+
getBackupLogFileContent(): Promise<string>;
|
|
11
|
+
clearLogFile(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ReactNativePlatformAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactNativePlatformAdapter.d.ts","sourceRoot":"","sources":["../../../src/core/platform/ReactNativePlatformAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,qBAAa,0BAA2B,YAAW,iBAAiB;IAElE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAMrE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAMtE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAMtE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAYxE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM1B,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpC,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReactNativePlatformAdapter = void 0;
|
|
4
|
+
const react_native_unvired_sdk_1 = require("@unvired/react-native-unvired-sdk");
|
|
5
|
+
class ReactNativePlatformAdapter {
|
|
6
|
+
// Logger
|
|
7
|
+
logInfo(className, methodName, message) {
|
|
8
|
+
react_native_unvired_sdk_1.logger.logInfo(className, methodName, message);
|
|
9
|
+
console.log(`[INFO] ${className}.${methodName}: ${message}`);
|
|
10
|
+
}
|
|
11
|
+
logError(className, methodName, message) {
|
|
12
|
+
react_native_unvired_sdk_1.logger.logError(className, methodName, message);
|
|
13
|
+
console.error(`[ERROR] ${className}.${methodName}: ${message}`);
|
|
14
|
+
}
|
|
15
|
+
logDebug(className, methodName, message) {
|
|
16
|
+
react_native_unvired_sdk_1.logger.logDebug(className, methodName, message);
|
|
17
|
+
console.debug(`[DEBUG] ${className}.${methodName}: ${message}`);
|
|
18
|
+
}
|
|
19
|
+
logWarning(className, methodName, message) {
|
|
20
|
+
// TODO: Update to logger.logWarning once available in react-native-wrapper-sdk
|
|
21
|
+
// Using logInfo as fallback for now
|
|
22
|
+
if (typeof react_native_unvired_sdk_1.logger.logWarning === 'function') {
|
|
23
|
+
react_native_unvired_sdk_1.logger.logWarning(className, methodName, message);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
react_native_unvired_sdk_1.logger.logInfo(className, methodName, `[WARNING] ${message}`);
|
|
27
|
+
}
|
|
28
|
+
console.warn(`[WARNING] ${className}.${methodName}: ${message}`);
|
|
29
|
+
}
|
|
30
|
+
setLogLevel(level) {
|
|
31
|
+
react_native_unvired_sdk_1.logger.setLogLevel(level.toUpperCase());
|
|
32
|
+
console.log(`[setLogLevel] ${level}`);
|
|
33
|
+
}
|
|
34
|
+
async getLogFileURL() {
|
|
35
|
+
return await react_native_unvired_sdk_1.logger.getLogFileURL();
|
|
36
|
+
}
|
|
37
|
+
async getLogFileContent() {
|
|
38
|
+
return await react_native_unvired_sdk_1.logger.getLogFileContent();
|
|
39
|
+
}
|
|
40
|
+
async getBackupLogFileContent() {
|
|
41
|
+
return await react_native_unvired_sdk_1.logger.getBackupLogFileContent();
|
|
42
|
+
}
|
|
43
|
+
async clearLogFile() {
|
|
44
|
+
await react_native_unvired_sdk_1.logger.clearLogFile();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.ReactNativePlatformAdapter = ReactNativePlatformAdapter;
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,eAAe,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG/D,eAAe,cAAc,CAAC;AAE9B,OAAO,GAAG,MAAM,8BAA8B,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.UMP = exports.LoginType = exports.LoginParameters = void 0;
|
|
6
7
|
// Export main SDK
|
|
7
8
|
const UnviredWrapper_1 = __importDefault(require("./UnviredWrapper"));
|
|
9
|
+
var UnviredSDK_1 = require("./core/UnviredSDK");
|
|
10
|
+
Object.defineProperty(exports, "LoginParameters", { enumerable: true, get: function () { return UnviredSDK_1.LoginParameters; } });
|
|
11
|
+
Object.defineProperty(exports, "LoginType", { enumerable: true, get: function () { return UnviredSDK_1.LoginType; } });
|
|
8
12
|
// Export the default SDK instance
|
|
9
13
|
exports.default = UnviredWrapper_1.default;
|
|
14
|
+
const unvired_ts_core_sdk_1 = __importDefault(require("@unvired/unvired-ts-core-sdk"));
|
|
15
|
+
exports.UMP = unvired_ts_core_sdk_1.default;
|
|
@@ -1,45 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare class LoginParameters {
|
|
5
|
-
appName?: string;
|
|
6
|
-
company?: string;
|
|
7
|
-
username?: string;
|
|
8
|
-
password?: string;
|
|
9
|
-
url?: string;
|
|
10
|
-
domain?: string;
|
|
11
|
-
loginType?: string;
|
|
12
|
-
feUserId?: string;
|
|
13
|
-
port?: string;
|
|
14
|
-
metadataPath?: string;
|
|
15
|
-
isRequiredAttachmentBase64?: boolean;
|
|
16
|
-
autoSendTime?: string;
|
|
17
|
-
autoSyncTime?: string;
|
|
18
|
-
metadataJSON?: string;
|
|
19
|
-
demoData?: string;
|
|
20
|
-
demoModeRequired?: boolean;
|
|
21
|
-
persistWebDb?: boolean;
|
|
22
|
-
jwtOptions?: object;
|
|
23
|
-
loginLanguage?: string;
|
|
24
|
-
cacheWebData?: boolean;
|
|
25
|
-
requireClientCredentials?: boolean;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* LoginType enum for different authentication types
|
|
29
|
-
*/
|
|
30
|
-
export declare enum LoginType {
|
|
31
|
-
UNVIRED = "UNVIRED",
|
|
32
|
-
LDAP = "LDAP",
|
|
33
|
-
SSO = "SSO"
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* AuthBuilder - Fluent API for building authentication requests
|
|
37
|
-
* Can be awaited directly without calling .execute()
|
|
38
|
-
*/
|
|
39
|
-
export default class AuthBuilder implements PromiseLike<any> {
|
|
1
|
+
import UnviredSDK, { LoginParameters, LoginType } from './../core/UnviredSDK';
|
|
2
|
+
export default class AuthBuilder implements PromiseLike<string> {
|
|
3
|
+
private sdk;
|
|
40
4
|
private method;
|
|
41
5
|
private loginParameters;
|
|
42
|
-
constructor(method: 'login' | 'authenticateAndActivate' | 'authenticateLocal');
|
|
6
|
+
constructor(sdk: UnviredSDK, method: 'login' | 'authenticateAndActivate' | 'authenticateLocal');
|
|
43
7
|
setAppName(appName: string): AuthBuilder;
|
|
44
8
|
setCompany(company: string): AuthBuilder;
|
|
45
9
|
setUsername(username: string): AuthBuilder;
|
|
@@ -61,8 +25,8 @@ export default class AuthBuilder implements PromiseLike<any> {
|
|
|
61
25
|
setLoginLanguage(loginLanguage: string): AuthBuilder;
|
|
62
26
|
setCacheWebData(cacheWebData: boolean): AuthBuilder;
|
|
63
27
|
setRequireClientCredentials(requireClientCredentials: boolean): AuthBuilder;
|
|
64
|
-
setItem(key:
|
|
28
|
+
setItem(key: keyof LoginParameters, value: any): AuthBuilder;
|
|
65
29
|
private execute;
|
|
66
|
-
then<TResult1 =
|
|
30
|
+
then<TResult1 = string, TResult2 = never>(onfulfilled?: ((value: string) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): PromiseLike<TResult1 | TResult2>;
|
|
67
31
|
}
|
|
68
32
|
//# sourceMappingURL=AuthBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthBuilder.d.ts","sourceRoot":"","sources":["../../src/lib/AuthBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AuthBuilder.d.ts","sourceRoot":"","sources":["../../src/lib/AuthBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,WAAW,CAAC,MAAM,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,MAAM,CAA4D;IAC1E,OAAO,CAAC,eAAe,CAAkB;gBAGrC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,OAAO,GAAG,yBAAyB,GAAG,mBAAmB;IAOrE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAKxC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAKxC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAK1C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAK1C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAKhC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW;IAKtC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;IAK/C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAK1C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAKlC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW;IAKlD,6BAA6B,CAAC,0BAA0B,EAAE,OAAO,GAAG,WAAW;IAK/E,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW;IAKlD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW;IAKlD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW;IAKlD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAK1C,mBAAmB,CAAC,gBAAgB,EAAE,OAAO,GAAG,WAAW;IAK3D,eAAe,CAAC,YAAY,EAAE,OAAO,GAAG,WAAW;IAKnD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW;IAK9C,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW;IAKpD,eAAe,CAAC,YAAY,EAAE,OAAO,GAAG,WAAW;IAKnD,2BAA2B,CAAC,wBAAwB,EAAE,OAAO,GAAG,WAAW;IAK3E,OAAO,CAAC,GAAG,EAAE,MAAM,eAAe,EAAE,KAAK,EAAE,GAAG,GAAG,WAAW;IAK5D,OAAO,CAAC,OAAO;IAaf,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,KAAK,EACpC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,EACtF,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,GACpF,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;CAGtC"}
|