{"version":3,"sources":["../src/index.ts"],"names":["z","axios","stdResponse"],"mappings":"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","file":"index.cjs","sourcesContent":["import axios from \"axios\";\r\nimport { stdResponse, type StdResponse } from \"@digicroz/js-kit\";\r\nimport z from \"zod\";\r\n\r\nlet osClientZodSchema = z.object({\r\n  appId: z.string(),\r\n  apiKey: z.string(),\r\n});\r\n\r\ntype TCreateOneSignalClient = z.infer<typeof osClientZodSchema>;\r\n\r\nexport const createOneSignalClient = ({\r\n  appId,\r\n  apiKey,\r\n}: TCreateOneSignalClient) => {\r\n  const headers = {\r\n    \"Content-Type\": \"application/json; charset=utf-8\",\r\n    Authorization: `Basic ${apiKey}`,\r\n  } as const;\r\n\r\n  let commonZodSchema = {\r\n    message: z.string(),\r\n    heading: z.string().optional(),\r\n    onClickLink: z.string().optional(),\r\n    thumbnailUrl: z.string().optional(),\r\n  };\r\n  const pushToAllUsersZod = z.object({\r\n    ...commonZodSchema,\r\n  });\r\n\r\n  type TPushNotificationToAllUsers = z.infer<typeof pushToAllUsersZod>;\r\n  const pushNotificationToAllUsers = async ({\r\n    message,\r\n    heading,\r\n    onClickLink,\r\n    thumbnailUrl,\r\n  }: TPushNotificationToAllUsers) => {\r\n    try {\r\n      let payload: any = {\r\n        app_id: appId,\r\n        contents: { en: message },\r\n        priority: 10,\r\n        included_segments: [\"All\"],\r\n      };\r\n\r\n      if (heading) {\r\n        payload.headings = { en: heading };\r\n      }\r\n\r\n      if (thumbnailUrl) {\r\n        payload.big_picture = thumbnailUrl;\r\n      }\r\n\r\n      if (onClickLink) {\r\n        payload.url = onClickLink;\r\n      }\r\n\r\n      const response = await axios.post(\r\n        \"https://onesignal.com/api/v1/notifications\",\r\n        payload,\r\n        { headers },\r\n      );\r\n      // console.log(\"pushNotificationToAllUsers::\", response);\r\n\r\n      const data = response.data;\r\n\r\n      if (data.errors && data.errors.length > 0) {\r\n        let errMsg = data.errors?.[0] ?? \"\";\r\n\r\n        switch (errMsg) {\r\n          case \"All included players are not subscribed\":\r\n            return stdResponse.error(\"all_included_players_are_not_subscribed\");\r\n        }\r\n      }\r\n\r\n      if (data.id) {\r\n        return stdResponse.success({ id: data.id as string });\r\n      }\r\n      console.log(\"pushNotificationToAllUsers::\", data);\r\n      return stdResponse.error(\"onesignal_unknown_response\");\r\n    } catch (error: any) {\r\n      const data = error.response.data;\r\n\r\n      if (data.errors && data.errors.length > 0) {\r\n        let errMsg = data.errors?.[0] ?? \"\";\r\n\r\n        switch (errMsg) {\r\n          case \"Request is malformed: Failed to parse app_id from request\":\r\n            return stdResponse.error(\"onesignal_app_id_is_invalid\");\r\n          case \"Failed to parse app_id from request (app_id is present but malformed)\":\r\n            return stdResponse.error(\"onesignal_app_id_is_invalid\");\r\n          case \"Access denied.  Please include an 'Authorization: ...' header with a valid API key (https://documentation.onesignal.com/docs/en/keys-and-ids#api-keys).\":\r\n            return stdResponse.error(\"onesignal_api_key_is_invalid\");\r\n          case \"Message Notifications must have Any/English language content\":\r\n            return stdResponse.error(\"onesignal_message_content_is_invalid\");\r\n        }\r\n      }\r\n\r\n      console.log(\"pushNotificationToAllUsersError::\", data);\r\n      return stdResponse.error(\"onesignal_unknown_error\");\r\n    }\r\n  };\r\n\r\n  let pushToSpecificUsersZod = z.object({\r\n    ...commonZodSchema,\r\n    externalUserIds: z.array(z.string()),\r\n  });\r\n\r\n  type TPushNotificationToSpecificUsers = z.infer<\r\n    typeof pushToSpecificUsersZod\r\n  >;\r\n\r\n  const pushNotificationToSpecificUsers = async ({\r\n    message,\r\n    heading,\r\n    onClickLink,\r\n    thumbnailUrl,\r\n    externalUserIds,\r\n  }: TPushNotificationToSpecificUsers) => {\r\n    try {\r\n      let payload: any = {\r\n        app_id: appId,\r\n        contents: { en: message },\r\n        priority: 10,\r\n        channel_for_external_user_ids: \"push\",\r\n        include_external_user_ids: externalUserIds,\r\n      };\r\n\r\n      if (heading) {\r\n        payload.headings = { en: heading };\r\n      }\r\n\r\n      if (thumbnailUrl) {\r\n        payload.big_picture = thumbnailUrl;\r\n      }\r\n\r\n      if (onClickLink) {\r\n        payload.url = onClickLink;\r\n      }\r\n\r\n      const response = await axios.post(\r\n        \"https://onesignal.com/api/v1/notifications\",\r\n        payload,\r\n        { headers },\r\n      );\r\n      const data = response.data;\r\n      // console.log(\"pushNotificationToSpecificUsersResponse::\", data);\r\n      if (data.errors && data.errors.length > 0) {\r\n        let errMsg = data.errors?.[0] ?? \"\";\r\n\r\n        switch (errMsg) {\r\n          case \"All included players are not subscribed\":\r\n            return stdResponse.error(\"all_included_players_are_not_subscribed\");\r\n        }\r\n      }\r\n\r\n      if (data.id) {\r\n        let invalidExternalUserIds: string[] = [];\r\n\r\n        const warningMsg = data?.warnings?.invalid_external_user_ids;\r\n\r\n        if (warningMsg) {\r\n          const match = warningMsg.match(/\\[(.*?)\\]/);\r\n\r\n          if (match) {\r\n            try {\r\n              invalidExternalUserIds = JSON.parse(match[0]);\r\n            } catch (e) {\r\n              console.warn(\"Failed to parse invalid_external_user_ids\", e);\r\n            }\r\n          }\r\n        }\r\n\r\n        return stdResponse.success({\r\n          id: data.id as string,\r\n          invalidExternalUserIds,\r\n        });\r\n      }\r\n      console.log(\"pushNotificationToSpecificUsersResponse::\", data);\r\n      return stdResponse.error(\"onesignal_unknown_response\");\r\n    } catch (error: any) {\r\n      const data = error.response.data;\r\n      // console.log(\"pushNotificationToSpecificUsersError::\", data);\r\n      if (data.errors && data.errors.length > 0) {\r\n        let errMsg = data.errors?.[0] ?? \"\";\r\n\r\n        switch (errMsg) {\r\n          case \"Request is malformed: Failed to parse app_id from request\":\r\n            return stdResponse.error(\"onesignal_app_id_is_invalid\");\r\n          case \"Failed to parse app_id from request (app_id is present but malformed)\":\r\n            return stdResponse.error(\"onesignal_app_id_is_invalid\");\r\n          case \"Access denied.  Please include an 'Authorization: ...' header with a valid API key (https://documentation.onesignal.com/docs/en/keys-and-ids#api-keys).\":\r\n            return stdResponse.error(\"onesignal_api_key_is_invalid\");\r\n          case \"Message Notifications must have Any/English language content\":\r\n            return stdResponse.error(\"onesignal_message_content_is_invalid\");\r\n          case \"You must include which players, segments, or tags you wish to send this notification to\":\r\n          case \"include_external_user_ids must be an array of non empty strings\":\r\n            return stdResponse.error(\"onesignal_message_recipients_is_invalid\");\r\n        }\r\n      }\r\n\r\n      console.log(\"pushNotificationToSpecificUsersError::\", data);\r\n      return stdResponse.error(\"onesignal_unknown_error\");\r\n    }\r\n  };\r\n\r\n  return {\r\n    pushNotificationToAllUsers,\r\n    pushNotificationToSpecificUsers,\r\n  } as const;\r\n};\r\n\r\nexport default createOneSignalClient;\r\n"]}