{"version":3,"file":"mybeckhoff-service.js","mappings":"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","sources":["webpack://design-prototype/./src/js/mybeckhoff/service/http-adapter.ts","webpack://design-prototype/./src/js/mybeckhoff/service/service.ts","webpack://design-prototype/./src/js/mybeckhoff/service/index.ts"],"sourcesContent":["export async function http<T>(url: string, data: any, headers?: any): Promise<T> {\n  const urlParams = new URLSearchParams(data).toString();\n\n  const response = await fetch(`${url}?${urlParams}`, { headers: headers, credentials: 'include' });\n\n  if (response.ok) {\n    const data = await (<Promise<T>>response.json());\n    return data;\n  } else {\n    throw new Error('Server Error');\n  }\n}\n","import { http } from './http-adapter';\nimport { IMyBeckhoffService, LoginResponse, LoginState, MyBeckhoffRequestOptions } from '../types';\n\nexport const MyBeckhoffEvent = {\n  SESSION_UPDATE: 'SESSION_UPDATE',\n  MANUAL_LOGIN: 'MANUAL_LOGIN',\n};\n\nconst defaultLoginState: LoginState = {\n  exportControl: false,\n  loginStatus: false,\n  userid: undefined,\n  username: undefined,\n};\n\nexport class MyBeckhoffService implements IMyBeckhoffService {\n  readonly options = {\n    action: 'mybeckhoff-action',\n    cmsLanguage: '',\n    cmsId: '',\n    cmsTemplatename: '',\n    cookie: false,\n  };\n\n  private registeredPlugins = new Array<unknown>();\n\n  private subscriptions: Array<(event: string, payload?: any) => void> = [];\n\n  constructor() {\n    this.checkLoginState();\n  }\n\n  async login(username: string, password: string, remember: boolean, cmsLanguage = '') {\n    const basicAuthToken = btoa(`${username}:${password}`);\n    const response = await http<LoginResponse>(\n      webServiceMyBeckhoffUrl,\n      { ...this.options, action: 'Login', cookie: remember, cmsLanguage },\n      { Authorization: `Basic ${basicAuthToken}` },\n    );\n\n    this.loginState = {\n      exportControl: response.exportControl,\n      loginStatus: response.loginStatus,\n      userid: response.userid,\n      username: response.username,\n    };\n\n    this.emitEvent(MyBeckhoffEvent.MANUAL_LOGIN, response);\n    this.emitEvent(MyBeckhoffEvent.SESSION_UPDATE, this.loginState);\n  }\n\n  async logout() {\n    const response = await http<{ status: boolean; loginStatus: boolean }>(\n      webServiceMyBeckhoffUrl,\n      {\n        ...this.options,\n        action: 'Logout',\n      },\n    );\n\n    if (response.status && response.loginStatus === false) {\n      localStorage.removeItem('MyBeckhoffSession');\n      location.reload();\n    } else {\n      console.log('Logout failed!');\n    }\n  }\n\n  addPlugin(plugin: unknown) {\n    this.plugins.push(plugin);\n  }\n\n  get plugins() {\n    return this.registeredPlugins;\n  }\n\n  get loginState(): LoginState {\n    const localStorageValue = localStorage.getItem('MyBeckhoffSession');\n\n    if (localStorageValue) {\n      return { ...defaultLoginState, ...(<LoginState>JSON.parse(localStorageValue)) };\n    }\n\n    return defaultLoginState;\n  }\n\n  set loginState(state: LoginState) {\n    localStorage.setItem('MyBeckhoffSession', JSON.stringify(state));\n  }\n\n  updateLoginState(values: Partial<LoginState>) {\n    this.loginState = { ...this.loginState, ...values };\n  }\n\n  get isLoggedIn() {\n    return this.loginState.loginStatus === true;\n  }\n\n  async request<T>(options: Partial<MyBeckhoffRequestOptions>) {\n    return http<T>(webServiceMyBeckhoffUrl, { ...this.options, ...options });\n  }\n\n  async checkLoginState(): Promise<void> {\n    const options = { ...this.options, action: 'GetLoginStatus' };\n    const response = await http<LoginResponse>(webServiceMyBeckhoffUrl, options);\n    this.loginState = {\n      exportControl: response.exportControl,\n      loginStatus: response.loginStatus,\n      userid: response.userid,\n      username: response.username,\n    };\n\n    this.emitEvent(MyBeckhoffEvent.SESSION_UPDATE, this.loginState);\n  }\n\n  subscribe(callbackFn: (event: string, payload?: any) => void) {\n    this.subscriptions.push(callbackFn);\n  }\n\n  unsubscribe(callbackFn: (event: string, payload?: any) => void) {\n    this.subscriptions.splice(this.subscriptions.indexOf(callbackFn, 1));\n  }\n\n  private emitEvent(event: string, payload?: any) {\n    this.subscriptions.forEach((callbackFn) => callbackFn(event, payload));\n  }\n}\n","import { MyBeckhoffService } from './service';\n\nwindow.myBeckhoff = new MyBeckhoffService();\n"],"names":["http","url","data","headers","urlParams","response","URLSearchParams","toString","fetch","credentials","ok","json","Error","MyBeckhoffEvent","defaultLoginState","exportControl","loginStatus","userid","undefined","username","MyBeckhoffService","options","action","cmsLanguage","cmsId","cmsTemplatename","cookie","registeredPlugins","Array","subscriptions","this","checkLoginState","login","password","remember","basicAuthToken","btoa","webServiceMyBeckhoffUrl","Authorization","loginState","emitEvent","logout","status","localStorage","removeItem","location","reload","console","log","addPlugin","plugin","plugins","push","localStorageValue","getItem","JSON","parse","state","setItem","stringify","updateLoginState","values","isLoggedIn","request","subscribe","callbackFn","unsubscribe","splice","indexOf","event","payload","forEach","window","myBeckhoff"],"sourceRoot":""}