{"version":3,"file":"admin.cjs","sources":["../../src/admin.ts"],"sourcesContent":["import { MetricsConnection } from './connection'\nimport Metrics from './core'\nimport { ClientSideActionPrevented } from './error'\nimport { DecodeJWT } from './lib/jwt'\nimport { Cache, CacheKeysResponse, CacheObjectResponse } from './models/cache'\nimport { CardioExerciseListResponse, CardioExerciseResponse, CardioExerciseSorting, PrivilegedCardioExercise, PrivilegedCardioExercises } from './models/cardioExercise'\nimport { CardioExerciseMuscleResponse, PrivilegedCardioExerciseMuscle } from './models/cardioExerciseMuscle'\nimport { CardioExerciseVariantResponse, PrivilegedCardioExerciseVariant } from './models/cardioExerciseVariant'\nimport { ExerciseAliasListResponse, ExerciseAliasResponse, ExerciseAliasSorting, ExerciseAliasType, PrivilegedExerciseAlias, PrivilegedExerciseAliases } from './models/exerciseAlias'\nimport { ExerciseOrdinalSetListResponse, ExerciseOrdinalSetResponse, ExerciseOrdinalSetSorting, PrivilegedExerciseOrdinalSet, PrivilegedExerciseOrdinalSets } from './models/exerciseOrdinalSet'\nimport { ExerciseOrdinalSetAssignmentResponse, PrivilegedExerciseOrdinalSetAssignment } from './models/exerciseOrdinalSetAssignment'\nimport { FacilityLicense, FacilityLicenseListResponse, FacilityLicenseResponse, FacilityLicenses, FacilityLicenseSorting, LicenseType } from './models/facilityLicense'\nimport { AnalyticPermission, ExercisePermission, GlobalAccessControl, GlobalAccessControlCreationResponse, GlobalAccessControlData, GlobalAccessControlListResponse, GlobalAccessControlResponse, GlobalAccessControls, GlobalAccessControlSorting, MSeriesGuidedSessionPermission, Permission } from './models/globalAccessControl'\nimport { StatListResponse, Stats, StatSorting } from './models/stat'\nimport { PrivilegedStrengthExercise, PrivilegedStrengthExercises, StrengthExerciseCategory, StrengthExerciseListResponse, StrengthExerciseMovement, StrengthExerciseMovementDEP, StrengthExercisePlane, StrengthExerciseResponse, StrengthExerciseSorting } from './models/strengthExercise'\nimport { PrivilegedStrengthExerciseMuscle, StrengthExerciseMuscleResponse } from './models/strengthExerciseMuscle'\nimport { PrivilegedStrengthExerciseVariant, StrengthExerciseVariantResponse } from './models/strengthExerciseVariant'\nimport { PrivilegedStretchExercise, PrivilegedStretchExercises, StretchExerciseListResponse, StretchExerciseResponse, StretchExerciseSorting } from './models/stretchExercise'\nimport { PrivilegedStretchExerciseMuscle, StretchExerciseMuscleResponse } from './models/stretchExerciseMuscle'\nimport { PrivilegedStretchExerciseVariant, StretchExerciseVariantResponse } from './models/stretchExerciseVariant'\nimport { FailedTasks, Queue, ResqueDetailsResponse, TaskFailedResponse, TaskQueueResponse, Tasks, WorkersResponse } from './models/task'\nimport { User, UserListResponse, UserResponse, Users, UserSorting } from './models/user'\nimport { AccessToken, UserSession } from './session'\n\nexport default class MetricsAdmin extends Metrics {\n  /** @deprecated */\n  async authenticateAdminWithCredentials (params: { email: string, password: string, token: string, refreshable?: boolean }) {\n    const response = await this._connection.action('admin:login', { refreshable: true, ...params }) as UserResponse\n    const accessToken = DecodeJWT(response.accessToken) as AccessToken\n    if (typeof accessToken.globalAccessControl === 'undefined' || accessToken.globalAccessControl === null) {\n      throw new ClientSideActionPrevented({ explanation: 'Session token is not valid for admin session.' })\n    }\n    return new AdminSession(response, this._connection, accessToken.globalAccessControl)\n  }\n\n  async authenticateAdminWithToken (params: { token: string }) {\n    const response = await this._connection.action('user:show', { authorization: params.token }) as UserResponse\n    const accessToken = DecodeJWT(response.accessToken) as AccessToken\n    if (typeof accessToken.globalAccessControl === 'undefined' || accessToken.globalAccessControl === null) {\n      throw new ClientSideActionPrevented({ explanation: 'Session token is not valid for admin session.' })\n    }\n    return new AdminSession(response, this._connection, accessToken.globalAccessControl)\n  }\n\n  async authenticateAdminWithExchangeToken (params: { exchangeToken: string }) {\n    const response = await this._connection.action('auth:exchangeFulfillment', params) as UserResponse\n    const accessToken = DecodeJWT(response.accessToken) as AccessToken\n    if (typeof accessToken.globalAccessControl === 'undefined' || accessToken.globalAccessControl === null) {\n      throw new ClientSideActionPrevented({ explanation: 'Session token is not valid for admin session.' })\n    }\n    return new AdminSession(response, this._connection, accessToken.globalAccessControl)\n  }\n}\n\nexport class AdminSession extends UserSession {\n  private readonly _globalAccessControl: GlobalAccessControl\n\n  constructor (loginResponse: UserResponse, connection: MetricsConnection, globalAccessControlData: GlobalAccessControlData) {\n    super(loginResponse, connection)\n    this._globalAccessControl = new GlobalAccessControl(globalAccessControlData, this.sessionHandler)\n  }\n\n  get globalAccessControl () {\n    return this._globalAccessControl\n  }\n\n  async getStats (options: { from?: Date, to?: Date, sort?: StatSorting, ascending?: boolean, limit?: number, offset?: number } = { }) {\n    const { stats, statsMeta } = await this.action('stats:list', options) as StatListResponse\n    return new Stats(stats, statsMeta, this.sessionHandler)\n  }\n\n  async getUser (params: { userId: number }) {\n    const { user } = await this.action('user:show', params) as UserResponse\n    return new User(user, this.sessionHandler)\n  }\n\n  async getUsers (options: { name?: string, email?: string, sort?: UserSorting, ascending?: boolean, limit?: number, offset?: number } = { }) {\n    const { users, usersMeta } = await this.action('user:list', options) as UserListResponse\n    return new Users(users, usersMeta, this.sessionHandler)\n  }\n\n  async mergeUsers (params: { fromUserId: number, toUserId: number }) {\n    const { user } = await this.action('user:merge', params) as UserResponse\n    return new User(user, this.sessionHandler)\n  }\n\n  async getCacheKeys (options: { filter?: string } = { }) {\n    const { cacheKeys } = await this.action('resque:cache:list') as CacheKeysResponse\n    return cacheKeys.filter(key => key.startsWith('cache:' + (options?.filter ?? ''))).map(key => new Cache(key.replace(/$cache:/, ''), this.sessionHandler))\n  }\n\n  async getCacheKey (key: string) {\n    const { cacheObject } = await this.action('resque:cache:show', { key }) as CacheObjectResponse\n    return new Cache(cacheObject.key, this.sessionHandler)\n  }\n\n  async createCacheKey (params: { key: string, value: string, expireIn?: number }) {\n    const { cacheObject } = await this.action('resque:cache:create', params) as CacheObjectResponse\n    return new Cache(cacheObject.key, this.sessionHandler)\n  }\n\n  async getResqueDetails () {\n    const { details } = await this.action('resque:details') as ResqueDetailsResponse\n    return details\n  }\n\n  async getWorkers () {\n    const { workers } = await this.action('resque:worker:list') as WorkersResponse\n    return Object.keys(workers).map(key => ({ worker: key, status: workers[key] }))\n  }\n\n  async getTasks (options: { queue: Queue, offset?: number, limit?: number }) {\n    const { tasks, tasksMeta } = await this.action('resque:task:queue', options) as TaskQueueResponse\n    return new Tasks(tasks, tasksMeta, this.sessionHandler)\n  }\n\n  async getFailedTasks (options: { offset?: number, limit?: number } = { }) {\n    const { tasks, tasksMeta } = await this.action('resque:task:failures', options) as TaskFailedResponse\n    return new FailedTasks(tasks, tasksMeta, this.sessionHandler)\n  }\n\n  async retryAllFailedTasks () {\n    await this.action('resque:task:retryAllFailed')\n  }\n\n  async deleteAllFailedTasks () {\n    await this.action('resque:task:deleteAllFailed')\n  }\n\n  async getExerciseAlias (params: { id: number }) {\n    const { exerciseAlias } = await this.action('exerciseAlias:show', params) as ExerciseAliasResponse\n    return new PrivilegedExerciseAlias(exerciseAlias, this.sessionHandler)\n  }\n\n  async getExerciseAliases (options: { alias?: string, type?: ExerciseAliasType, sort?: ExerciseAliasSorting, ascending?: boolean, limit?: number, offset?: number } = { }) {\n    const { exerciseAliases, exerciseAliasesMeta } = await this.action('exerciseAlias:list', options) as ExerciseAliasListResponse\n    return new PrivilegedExerciseAliases(exerciseAliases, exerciseAliasesMeta, this.sessionHandler)\n  }\n\n  async getExerciseOrdinalSetAssignment (params: { id: number }) {\n    const { exerciseOrdinalSetAssignment } = await this.action('exerciseOrdinalSetAssignment:show', params) as ExerciseOrdinalSetAssignmentResponse\n    return new PrivilegedExerciseOrdinalSetAssignment(exerciseOrdinalSetAssignment, this.sessionHandler)\n  }\n\n  async getExerciseOrdinalSet (params: { id: number }) {\n    const { exerciseOrdinalSet } = await this.action('exerciseOrdinalSet:show', params) as ExerciseOrdinalSetResponse\n    return new PrivilegedExerciseOrdinalSet(exerciseOrdinalSet, this.sessionHandler)\n  }\n\n  async getExerciseOrdinalSets (options: { code?: string, name?: string, sort?: ExerciseOrdinalSetSorting, ascending?: boolean, limit?: number, offset?: number } = { }) {\n    const { exerciseOrdinalSets, exerciseOrdinalSetsMeta } = await this.action('exerciseOrdinalSet:list', options) as ExerciseOrdinalSetListResponse\n    return new PrivilegedExerciseOrdinalSets(exerciseOrdinalSets, exerciseOrdinalSetsMeta, this.sessionHandler)\n  }\n\n  async createExerciseOrdinalSet (params: { code: string, name: string, description: string }) {\n    const { exerciseOrdinalSet } = await this.action('exerciseOrdinalSet:create', params) as ExerciseOrdinalSetResponse\n    return new PrivilegedExerciseOrdinalSet(exerciseOrdinalSet, this.sessionHandler)\n  }\n\n  async getStrengthExercise (params: { id: number }) {\n    const { strengthExercise } = await this.action('strengthExercise:show', params) as StrengthExerciseResponse\n    return new PrivilegedStrengthExercise(strengthExercise, this.sessionHandler)\n  }\n\n  async getStrengthExercises (options: { defaultAlias?: string, category?: StrengthExerciseCategory, movement?: StrengthExerciseMovementDEP, plane?: StrengthExercisePlane, humanMovement?: StrengthExerciseMovement, sort?: StrengthExerciseSorting, ascending?: boolean, limit?: number, offset?: number } = { }) {\n    const { strengthExercises, strengthExercisesMeta } = await this.action('strengthExercise:list', options) as StrengthExerciseListResponse\n    return new PrivilegedStrengthExercises(strengthExercises, strengthExercisesMeta, this.sessionHandler)\n  }\n\n  async createStrengthExercise (params: { defaultExerciseAlias: string, category: StrengthExerciseCategory, movement?: StrengthExerciseMovementDEP, plane: StrengthExercisePlane, humanMovement: StrengthExerciseMovement }) {\n    const { strengthExercise } = await this.action('strengthExercise:create', params) as StrengthExerciseResponse\n    return new PrivilegedStrengthExercise(strengthExercise, this.sessionHandler)\n  }\n\n  async getStrengthExerciseVariant (params: { id: number }) {\n    const { strengthExerciseVariant } = await this.action('strengthExerciseVariant:show', { ...params }) as StrengthExerciseVariantResponse\n    return new PrivilegedStrengthExerciseVariant(strengthExerciseVariant, this.sessionHandler)\n  }\n\n  async getStrengthExerciseMuscle (params: { id: number }) {\n    const { strengthExerciseMuscle } = await this.action('strengthExerciseMuscle:show', { ...params }) as StrengthExerciseMuscleResponse\n    return new PrivilegedStrengthExerciseMuscle(strengthExerciseMuscle, this.sessionHandler)\n  }\n\n  async getStretchExercise (params: { id: number }) {\n    const { stretchExercise } = await this.action('stretchExercise:show', params) as StretchExerciseResponse\n    return new PrivilegedStretchExercise(stretchExercise, this.sessionHandler)\n  }\n\n  async getStretchExercises (options: { defaultAlias?: string, sort?: StretchExerciseSorting, ascending?: boolean, limit?: number, offset?: number } = { }) {\n    const { stretchExercises, stretchExercisesMeta } = await this.action('stretchExercise:list', options) as StretchExerciseListResponse\n    return new PrivilegedStretchExercises(stretchExercises, stretchExercisesMeta, this.sessionHandler)\n  }\n\n  async createStretchExercise (params: { defaultExerciseAlias: string }) {\n    const { stretchExercise } = await this.action('stretchExercise:create', params) as StretchExerciseResponse\n    return new PrivilegedStretchExercise(stretchExercise, this.sessionHandler)\n  }\n\n  async getStretchExerciseVariant (params: { id: number }) {\n    const { stretchExerciseVariant } = await this.action('stretchExerciseVariant:show', { ...params }) as StretchExerciseVariantResponse\n    return new PrivilegedStretchExerciseVariant(stretchExerciseVariant, this.sessionHandler)\n  }\n\n  async getStretchExerciseMuscle (params: { id: number }) {\n    const { stretchExerciseMuscle } = await this.action('stretchExerciseMuscle:show', { ...params }) as StretchExerciseMuscleResponse\n    return new PrivilegedStretchExerciseMuscle(stretchExerciseMuscle, this.sessionHandler)\n  }\n\n  async getCardioExercise (params: { id: number }) {\n    const { cardioExercise } = await this.action('cardioExercise:show', params) as CardioExerciseResponse\n    return new PrivilegedCardioExercise(cardioExercise, this.sessionHandler)\n  }\n\n  async getCardioExercises (options: { defaultAlias?: string, sort?: CardioExerciseSorting, ascending?: boolean, limit?: number, offset?: number } = { }) {\n    const { cardioExercises, cardioExercisesMeta } = await this.action('cardioExercise:list', options) as CardioExerciseListResponse\n    return new PrivilegedCardioExercises(cardioExercises, cardioExercisesMeta, this.sessionHandler)\n  }\n\n  async createCardioExercise (params: { defaultExerciseAlias: string }) {\n    const { cardioExercise } = await this.action('cardioExercise:create', params) as CardioExerciseResponse\n    return new PrivilegedCardioExercise(cardioExercise, this.sessionHandler)\n  }\n\n  async getCardioExerciseVariant (params: { id: number }) {\n    const { cardioExerciseVariant } = await this.action('cardioExerciseVariant:show', { ...params }) as CardioExerciseVariantResponse\n    return new PrivilegedCardioExerciseVariant(cardioExerciseVariant, this.sessionHandler)\n  }\n\n  async getCardioExerciseMuscle (params: { id: number }) {\n    const { cardioExerciseMuscle } = await this.action('cardioExerciseMuscle:show', { ...params }) as CardioExerciseMuscleResponse\n    return new PrivilegedCardioExerciseMuscle(cardioExerciseMuscle, this.sessionHandler)\n  }\n\n  async getFacilityLicense (params: { id: number }) {\n    const { facilityLicense } = await this.action('facilityLicense:show', params) as FacilityLicenseResponse\n    return new FacilityLicense(facilityLicense, this.sessionHandler)\n  }\n\n  async getFacilityLicenses (options: { name?: string, key?: string, type?: LicenseType, accountId?: string, sort?: FacilityLicenseSorting, ascending?: boolean, limit?: number, offset?: number } = { }) {\n    const { facilityLicenses, facilityLicensesMeta } = await this.action('facilityLicense:list', options) as FacilityLicenseListResponse\n    return new FacilityLicenses(facilityLicenses, facilityLicensesMeta, this.sessionHandler)\n  }\n\n  async createFacilityLicense (params: { accountId?: string, term: number, type: LicenseType, name?: string, email?: string }) {\n    const { facilityLicense } = await this.action('facilityLicense:create', params) as FacilityLicenseResponse\n    return new FacilityLicense(facilityLicense, this.sessionHandler)\n  }\n\n  async getGlobalAccessControl (params: { userId: number}) {\n    const { globalAccessControl } = await this.action('globalAccessControl:show', params) as GlobalAccessControlResponse\n    return new GlobalAccessControl(globalAccessControl, this.sessionHandler)\n  }\n\n  async getGlobalAccessControls (options: { name?: string, sort?: GlobalAccessControlSorting, ascending?: boolean, limit?: number, offset?: number } = { }) {\n    const { globalAccessControls, globalAccessControlsMeta } = await this.action('globalAccessControl:list', options) as GlobalAccessControlListResponse\n    return new GlobalAccessControls(globalAccessControls, globalAccessControlsMeta, this.sessionHandler)\n  }\n\n  async createGlobalAccessControl (params: {userId: number, userRights?: Permission, exerciseRights?: ExercisePermission, mSeriesGuidedSessionRights?: MSeriesGuidedSessionPermission, facilityRights?: Permission, licenseRights?: Permission, accessControlRights?: Permission, resqueRights?: Permission, analyticRights?: AnalyticPermission }) {\n    const { globalAccessControl, globalAccessControlSecret } = await this.action('globalAccessControl:create', params) as GlobalAccessControlCreationResponse\n    return {\n      globalAccessControl: new GlobalAccessControl(globalAccessControl, this.sessionHandler),\n      globalAccessControlSecret\n    }\n  }\n}\n"],"names":["Metrics","DecodeJWT","ClientSideActionPrevented","UserSession","GlobalAccessControl","Stats","user","User","Users","Cache","Tasks","FailedTasks","exerciseAlias","PrivilegedExerciseAlias","PrivilegedExerciseAliases","exerciseOrdinalSetAssignment","PrivilegedExerciseOrdinalSetAssignment","exerciseOrdinalSet","PrivilegedExerciseOrdinalSet","PrivilegedExerciseOrdinalSets","strengthExercise","PrivilegedStrengthExercise","PrivilegedStrengthExercises","strengthExerciseVariant","PrivilegedStrengthExerciseVariant","strengthExerciseMuscle","PrivilegedStrengthExerciseMuscle","stretchExercise","PrivilegedStretchExercise","PrivilegedStretchExercises","stretchExerciseVariant","PrivilegedStretchExerciseVariant","stretchExerciseMuscle","PrivilegedStretchExerciseMuscle","cardioExercise","PrivilegedCardioExercise","PrivilegedCardioExercises","cardioExerciseVariant","PrivilegedCardioExerciseVariant","cardioExerciseMuscle","PrivilegedCardioExerciseMuscle","facilityLicense","FacilityLicense","FacilityLicenses","globalAccessControl","GlobalAccessControls"],"mappings":"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"}