netopia-client
Version:
A fully-typed, TypeScript-based client for the Netopia payments API V2.
87 lines (86 loc) • 2.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Product = exports.Payment = exports.Order = exports.Browser = void 0;
const zod_1 = require("zod");
const errors_1 = require("./errors");
var Browser;
(function (Browser) {
Browser.Schema = zod_1.z.object({
userAgent: zod_1.z.string(),
colorDepth: zod_1.z.number(),
language: zod_1.z.string(),
screenWidth: zod_1.z.number(),
screenHeight: zod_1.z.number(),
timeZone: zod_1.z.string(),
mobile: zod_1.z.boolean(),
});
Browser.parse = (data) => {
try {
return Browser.Schema.parse(data);
}
catch (error) {
throw (0, errors_1.invalidBrowser)(error.message);
}
};
})(Browser || (exports.Browser = Browser = {}));
var Order;
(function (Order) {
Order.Schema = zod_1.z.object({
posSignature: zod_1.z.string(),
amount: zod_1.z.number().positive(),
currency: zod_1.z.string().default("RON"),
orderID: zod_1.z.string(),
billing: zod_1.z.object({
firstName: zod_1.z.string(),
lastName: zod_1.z.string(),
email: zod_1.z.string().email(),
phone: zod_1.z.string(),
city: zod_1.z.string().optional(),
country: zod_1.z.number().default(642),
}),
products: zod_1.z.array(Product.Schema),
});
Order.parse = (data) => {
try {
return Order.Schema.parse(data);
}
catch (error) {
throw (0, errors_1.invalidOrder)(error.message);
}
};
})(Order || (exports.Order = Order = {}));
var Payment;
(function (Payment) {
Payment.Schema = zod_1.z.object({
account: zod_1.z.string(),
expMonth: zod_1.z.number().min(1).max(12),
expYear: zod_1.z.number().int().min(new Date().getFullYear()),
secretCode: zod_1.z.string(),
});
Payment.parse = (data) => {
try {
return Payment.Schema.parse(data);
}
catch (error) {
throw (0, errors_1.invalidPayment)(error.message);
}
};
})(Payment || (exports.Payment = Payment = {}));
var Product;
(function (Product) {
Product.Schema = zod_1.z.object({
category: zod_1.z.string().default("No Category"),
code: zod_1.z.string().default("No Code"),
name: zod_1.z.string().default("Unnamed Product"),
price: zod_1.z.number().nonnegative().default(0),
vat: zod_1.z.number().nonnegative().default(0),
});
Product.parse = (data) => {
try {
return Product.Schema.parse(data);
}
catch (error) {
throw new Error(error.message);
}
};
})(Product || (exports.Product = Product = {}));