@nevis-security/nevis-mobile-authentication-sdk-react
Version:
React Native plugin for Nevis Mobile Authentication SDK. Supports only mobile.
72 lines (61 loc) • 2.04 kB
text/typescript
/**
* Copyright © 2024 Nevis Security AG. All rights reserved.
*/
import { AndroidMetaData } from './AndroidMetaData';
import { IOSMetaData } from './IOSMetaData';
/**
* The object containing information about the Nevis Mobile Authentication SDK.
*/
export abstract class MetaData {
/**
* The object containing information about the native iOS SDK.
*/
abstract iosMetaData: IOSMetaData | undefined;
/**
* The object containing information about the native Android SDK.
*/
abstract androidMetaData: AndroidMetaData | undefined;
/**
* Default constructor for {@link MetaData}.
*
* @param iosMetaData the object containing information about the native iOS SDK.
* @param androidMetaData The object containing information about the native Android SDK.
* @returns a {@link MetaData} instance.
*/
static create(
iosMetaData: IOSMetaData | undefined,
androidMetaData: AndroidMetaData | undefined
): MetaData {
return new MetaDataImpl(iosMetaData, androidMetaData);
}
/**
* Alternate constructor that creates a {@link MetaData} from a json.
*
* @param json contains the source for instance creation.
* @returns a {@link MetaData} instance.
*/
static fromJson(json: any): MetaData {
return MetaDataImpl.fromJson(json);
}
}
export class MetaDataImpl extends MetaData {
iosMetaData: IOSMetaData | undefined;
androidMetaData: AndroidMetaData | undefined;
constructor(
iosMetaData: IOSMetaData | undefined,
androidMetaData: AndroidMetaData | undefined
) {
super();
this.iosMetaData = iosMetaData;
this.androidMetaData = androidMetaData;
}
static fromJson(json: any): MetaDataImpl {
const iosMetaData = json.iosMetaData && IOSMetaData.fromJson(json.iosMetaData);
const androidMetaData =
json.androidMetaData && AndroidMetaData.fromJson(json.androidMetaData);
if (iosMetaData === undefined && androidMetaData === undefined) {
throw new Error('Unknown MetaData; No iOS and Android metaData present');
}
return new MetaDataImpl(iosMetaData, androidMetaData);
}
}