{"version":3,"file":"core.cjs","sources":["../../src/core.ts"],"sourcesContent":["import { ConnectionOptions, MetricsConnection } from './connection'\nimport { Units } from './constants'\nimport { Core } from './models/core'\nimport { Gender } from './models/profile'\nimport { StrengthMachineIdentifier } from './models/strengthMachine'\nimport { UserResponse } from './models/user'\nimport { KioskSession, StrengthMachineInitializeResponse, StrengthMachineSession, UserSession } from './session'\n\ninterface SSORequestParameters {\n  returnUrl: string\n  requiresElevated?: boolean\n  refreshable?: boolean\n}\n\ninterface UserSSOParameters {\n  email?: string\n  name?: string\n  gender?: Gender\n  language?: string\n  birthday?: string\n  units?: Units\n  metricHeight?: number\n  metricWeight?: number\n}\n\ninterface CoreEndpointResponse {\n  endpoints: {\n    sso: string\n    metricsApp: string\n    facility: string\n  }\n}\n\nexport default class Metrics {\n  protected readonly _connection: MetricsConnection\n  protected readonly _core: Core\n\n  constructor (options: ConnectionOptions = { }) {\n    this._connection = new MetricsConnection(options)\n    this._core = new Core(this._connection)\n  }\n\n  get onDisposeEvent () {\n    return this._connection.onDisposeEvent\n  }\n\n  get socketConnected () {\n    return this._connection.socketConnected\n  }\n\n  get persistConnection () {\n    return this._connection.persistConnection\n  }\n\n  get core () {\n    return this._core\n  }\n\n  dispose () {\n    this._connection.dispose()\n  }\n\n  async action (action: string, params: Object = { }) {\n    return await this._connection.action(action, params)\n  }\n\n  get onConnectionChangeEvent () {\n    return this._connection.onConnectionChangeEvent\n  }\n\n  async generateSSORequestUrl (requestParameters: SSORequestParameters, userParameters?: UserSSOParameters) {\n    const response = await this._connection.action('core:endpoints') as CoreEndpointResponse\n    const ssoUrl = new URL(response.endpoints.sso)\n    for (const [name, value] of [...Object.entries(requestParameters), ...Object.entries(userParameters ?? {})]) {\n      ssoUrl.searchParams.append(name, value)\n    }\n    return ssoUrl\n  }\n\n  async authenticateWithExchangeToken (params: { exchangeToken: string}) {\n    const response = await this._connection.action('auth:exchangeFulfillment', params) as UserResponse\n    return new UserSession(response, this._connection)\n  }\n\n  /** @deprecated */\n  async authenticateWithCredentials (params: { email: string, password: string, refreshable?: boolean }) {\n    const response = await this._connection.action('auth:login', { refreshable: true, ...params }) as UserResponse\n    return new UserSession(response, this._connection)\n  }\n\n  /** @deprecated */\n  async authenticateWithWelcomeToken (params: { welcomeToken: string, password: string, refreshable?: boolean }) {\n    const response = await this._connection.action('auth:facilityWelcomeFulfillment', { refreshable: true, ...params }) as UserResponse\n    return new UserSession(response, this._connection)\n  }\n\n  async authenticateWithToken (params: { token: string }) {\n    const response = await this._connection.action('user:show', { authorization: params.token }) as UserResponse\n    return new UserSession(response, this._connection)\n  }\n\n  async authenticateWithKioskToken (params: { kioskToken: string }) {\n    await this._connection.action('facilityKioskToken:check', { authorization: params.kioskToken })\n    return new KioskSession({ accessToken: params.kioskToken }, this._connection)\n  }\n\n  async authenticateWithMachineToken (params: { machineToken: string, strengthMachineIdentifier: StrengthMachineIdentifier }) {\n    const initializationParams = {\n      ...params.strengthMachineIdentifier,\n      authorization: params.machineToken\n    }\n    const response = await this._connection.action('a500:initialize', initializationParams) as StrengthMachineInitializeResponse\n    return new StrengthMachineSession(response, this._connection)\n  }\n\n  async authenticateWithMachineInitializerToken (params: { machineInitializerToken: string, strengthMachineIdentifier: StrengthMachineIdentifier }) {\n    const initializationParams = {\n      ...params.strengthMachineIdentifier,\n      authorization: params.machineInitializerToken\n    }\n    const response = await this._connection.action('a500:initialize', initializationParams) as StrengthMachineInitializeResponse\n    return new StrengthMachineSession(response, this._connection)\n  }\n}\n"],"names":["MetricsConnection","Core","UserSession","KioskSession","StrengthMachineSession"],"mappings":"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"}