{"version":3,"file":"index.mjs","sources":["../../../../src/clients/users/index.ts"],"sourcesContent":["import { GenericData } from \"@knocklabs/types\";\n\nimport { ApiResponse } from \"../../api\";\nimport { ChannelData, User } from \"../../interfaces\";\nimport Knock from \"../../knock\";\nimport { guidesApiRootPath } from \"../guide/client\";\nimport {\n  GuideEngagementEventBaseParams,\n  ResetGuideEngagementParams,\n  ResetGuideEngagementResponse,\n} from \"../guide/types\";\nimport {\n  GetPreferencesOptions,\n  PreferenceOptions,\n  PreferenceSet,\n  SetPreferencesProperties,\n} from \"../preferences/interfaces\";\n\nimport { GetChannelDataInput, SetChannelDataInput } from \"./interfaces\";\n\nconst DEFAULT_PREFERENCE_SET_ID = \"default\";\n\nclass UserClient {\n  private instance: Knock;\n\n  constructor(instance: Knock) {\n    this.instance = instance;\n  }\n\n  async get() {\n    this.instance.failIfNotAuthenticated();\n\n    const result = await this.instance.client().makeRequest({\n      method: \"GET\",\n      url: `/v1/users/${this.instance.userId}`,\n    });\n\n    return this.handleResponse<User>(result);\n  }\n\n  async identify(props: GenericData = {}) {\n    this.instance.failIfNotAuthenticated();\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}`,\n      data: props,\n    });\n\n    return this.handleResponse<User>(result);\n  }\n\n  async getAllPreferences() {\n    this.instance.failIfNotAuthenticated();\n\n    const result = await this.instance.client().makeRequest({\n      method: \"GET\",\n      url: `/v1/users/${this.instance.userId}/preferences`,\n    });\n\n    return this.handleResponse<PreferenceSet[]>(result);\n  }\n\n  async getPreferences(\n    options: GetPreferencesOptions = {},\n  ): Promise<PreferenceSet> {\n    this.instance.failIfNotAuthenticated();\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n    const result = await this.instance.client().makeRequest({\n      method: \"GET\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}`,\n      params: { tenant: options.tenant },\n    });\n\n    return this.handleResponse<PreferenceSet>(result);\n  }\n\n  async setPreferences(\n    preferenceSet: SetPreferencesProperties,\n    options: PreferenceOptions = {},\n  ): Promise<PreferenceSet> {\n    this.instance.failIfNotAuthenticated();\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}`,\n      data: preferenceSet,\n    });\n\n    return this.handleResponse<PreferenceSet>(result);\n  }\n\n  async getChannelData<T = GenericData>(params: GetChannelDataInput) {\n    this.instance.failIfNotAuthenticated();\n\n    const result = await this.instance.client().makeRequest({\n      method: \"GET\",\n      url: `/v1/users/${this.instance.userId}/channel_data/${params.channelId}`,\n    });\n\n    return this.handleResponse<ChannelData<T>>(result);\n  }\n\n  async setChannelData<T = GenericData>({\n    channelId,\n    channelData,\n  }: SetChannelDataInput) {\n    this.instance.failIfNotAuthenticated();\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}/channel_data/${channelId}`,\n      data: { data: channelData },\n    });\n\n    return this.handleResponse<ChannelData<T>>(result);\n  }\n\n  async getGuides<P, R>(channelId: string, params: P) {\n    const result = await this.instance.client().makeRequest({\n      method: \"GET\",\n      url: `${guidesApiRootPath(this.instance.userId)}/${channelId}`,\n      params,\n    });\n\n    return this.handleResponse<R>(result);\n  }\n\n  async markGuideStepAs<P extends GuideEngagementEventBaseParams, R>(\n    status: \"seen\" | \"interacted\" | \"archived\",\n    params: P,\n  ) {\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `${guidesApiRootPath(this.instance.userId)}/messages/${status}`,\n      data: params,\n    });\n\n    return this.handleResponse<R>(result);\n  }\n\n  async resetGuideEngagement(params: ResetGuideEngagementParams) {\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `${guidesApiRootPath(this.instance.userId)}/engagements/reset`,\n      data: params,\n    });\n\n    return this.handleResponse<ResetGuideEngagementResponse>(result);\n  }\n\n  private handleResponse<T>(response: ApiResponse) {\n    if (response.statusCode === \"error\") {\n      throw new Error(response.error || response.body);\n    }\n\n    return response.body as T;\n  }\n}\n\nexport default UserClient;\n"],"names":["DEFAULT_PREFERENCE_SET_ID","UserClient","instance","__publicField","result","props","options","preferenceSetId","preferenceSet","params","channelId","channelData","guidesApiRootPath","status","response"],"mappings":"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"}