UNPKG

@vulog/aima-promocode

Version:

Promo codes and referral system — validate, submit, and query promo/referral codes.

68 lines (67 loc) 2.79 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); let zod = require("zod"); //#region src/checkInvitationCode.ts const checkInvitationCode = async (client, referralCode) => { const result = zod.z.string().trim().min(1).safeParse(referralCode); if (!result.success) throw new TypeError("Invalid referralCode", { cause: result.error.issues }); return client.get(`boapi/proxy/user/fleets/${client.clientOptions.fleetId}/invitation/check/${referralCode}`).then(({ data }) => data).catch((error) => { if (error.formattedError?.status === 404) return; throw error; }); }; //#endregion //#region src/getPromoCode.ts const getPromoCodeByReference = async (client, reference) => { const result = zod.z.string().trim().min(1).safeParse(reference); if (!result.success) throw new TypeError("Invalid reference", { cause: result.error.issues }); return client.get(`boapi/proxy/billing/fleets/${client.clientOptions.fleetId}/promoCodes?reference=${reference}`).then(({ data: [r] }) => r); }; const getPromoCodeById = async (client, id) => { const result = zod.z.number().positive().safeParse(id); if (!result.success) throw new TypeError("Invalid id", { cause: result.error.issues }); return client.get(`boapi/proxy/billing/fleets/${client.clientOptions.fleetId}/promoCodes/${id}`).then(({ data }) => data).catch((error) => { if (error.formattedError?.status === 404) return; throw error; }); }; //#endregion //#region src/submitPromoCode.ts const schema$1 = zod.z.object({ userId: zod.z.string().uuid(), entityId: zod.z.string().uuid(), code: zod.z.string().min(1) }); const submitPromoCode = async (client, userId, entityId, code) => { const result = schema$1.safeParse({ userId, entityId, code }); if (!result.success) throw new TypeError("Invalid args", { cause: result.error.issues }); return client.put(`boapi/proxy/user/billing/fleets/${client.clientOptions.fleetId}/promoCodes/redeem/${code}`, { userId, entityId }).then(({ data }) => data); }; //#endregion //#region src/submitReferral.ts const schema = zod.z.object({ userId: zod.z.string().uuid(), entityId: zod.z.string().uuid(), code: zod.z.string().min(1) }); const submitReferral = async (client, userId, entityId, code) => { const result = schema.safeParse({ userId, entityId, code }); if (!result.success) throw new TypeError("Invalid args", { cause: result.error.issues }); await client.post(`boapi/proxy/user/fleets/${client.clientOptions.fleetId}/invitation/users/${userId}/entity/${entityId}/redeem/${code}`); }; //#endregion exports.checkInvitationCode = checkInvitationCode; exports.getPromoCodeById = getPromoCodeById; exports.getPromoCodeByReference = getPromoCodeByReference; exports.submitPromoCode = submitPromoCode; exports.submitReferral = submitReferral;