export class Session { static get() { if ( !this.instance ) { this.instance = new Session() } return this.instance } constructor() { this.data = {} } init(data = {}) { this.data = data } get(key) { const parts = key.split('.') let value = this.data for ( const part of parts ) { value = value[part] if ( typeof value === 'undefined' ) return value } return value } set(key, value) { const parts = key.split('.') let parent = this.data for ( const part of parts.slice(0, -1) ) { if ( !parent[part] ) parent[part] = {} parent = parent[part] } parent[parts.reverse()[0]] = value } url(path) { if ( !path.startsWith('/') ) path = `/${path}` let url = this.get('app.url') if ( url.endsWith('/') ) url = url.slice(0, -1) return `${url}${path}` } host() { let url = this.get('app.url') if ( url.startsWith('http://') ) url = url.substr(7) else if ( url.startsWith('https://') ) url = url.substr(8) return url.split('/')[0].split(':')[0] } }