@vulog/aima-promocode
Version:
Promo codes and referral system — validate, submit, and query promo/referral codes.
68 lines (67 loc) • 2.79 kB
JavaScript
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;