All files / sn-client-js/src ContentSerializer.ts

100% Statements 9/9
100% Branches 2/2
100% Functions 3/3
100% Lines 9/9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28    1x   1x         1x   2x 1x   1x 1x             2x     2x    
import{Content} from './Content';
import { BaseRepository } from './Repository/BaseRepository';
import { ODataHelper } from './SN';
 
export class SerializedContent<T extends Content>{
    Data: T['options'];
    Origin: string;
}
 
export class ContentSerializer {
    public static Serialize<T extends Content>(content: T): SerializedContent<T> {
        if (!content.Path){
            throw new Error('Content Path required!');
        }
        const repoUrl = (content['repository'] as BaseRepository).ODataBaseUrl;
        return {
            Data: content.GetFields(true),
            Origin: ODataHelper.joinPaths(`${repoUrl}`, content.Path)
        }
    }
 
    public static Stringify<T extends Content>(content: T){
        return JSON.stringify(this.Serialize(content));
    }
    public static Parse<T extends Content = Content>(contentString: string): SerializedContent<T>{
        return JSON.parse(contentString) as SerializedContent<T>;
    }
}