paypal-rest-api
Version:
A typescript module for integrating with PayPal REST APIs.
82 lines (81 loc) • 3.17 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const joi = require("joi");
const us = require("us");
const schemas_1 = require("../client/schemas");
const customJoi = joi.extend((cjoi) => ({
base: cjoi.string(),
language: {
state: "needs to be a 2 character state",
},
name: "string",
pre(value, state, options) {
if (options.convert && value.length > 2) {
value = us.lookup(value).abbr;
}
return value;
},
rules: [
{
name: "convertState",
setup(params) {
this._flags.convertState = true;
},
validate(params, value, state, options) {
return value;
},
},
],
}));
exports.clientIdSchema = joi.string().empty("");
exports.secretSchema = joi.string().empty("");
exports.configurationSchema = joi.object({
client_id: exports.clientIdSchema.required(),
client_secret: exports.secretSchema.required(),
mode: joi.string().valid(["production", "sandbox"]).required(),
requestOptions: schemas_1.defaultRequestOptionsSchema.default(),
});
exports.stateAbbreviations = us.STATES.map((state) => {
return state.abbr;
});
exports.paypalPhoneSchema = joi.object().keys({
country_code: joi.string().regex(/^[0-9]{1,3}?$/).trim().empty("").default("1"),
national_number: joi.string().regex(/^[0-9]{1,14}?$/).trim().empty("").required(),
});
exports.paypalAddressSchema = joi.object().keys({
city: joi.string().trim().empty("").optional(),
country_code: joi.string().trim().empty("").max(2).default("US"),
line1: joi.string().trim().empty("").optional(),
line2: joi.string().trim().empty("").optional(),
phone: exports.paypalPhoneSchema.empty({}).optional(),
postal_code: joi.string().trim().empty("").optional(),
state: customJoi.string().trim().empty("").convertState().length(2).optional(),
})
.and(["city", "line1", "postal_code", "state"]);
exports.paypalCurrencySchema = joi.object().keys({
currency: joi.string().max(3).trim().empty("").default("USD"),
value: joi.string().trim().empty("").required(),
});
exports.paypalTaxSchema = joi.object().keys({
amount: exports.paypalCurrencySchema.optional(),
name: joi.string().trim().empty("").optional(),
percent: joi.number().min(0).max(100).optional(),
});
exports.paypalCostSchema = joi.object().keys({
amount: exports.paypalCurrencySchema.optional(),
percent: joi.number().min(0).max(100).optional(),
});
exports.paypalShippingCostSchema = joi.object().keys({
amount: exports.paypalCurrencySchema.required(),
tax: exports.paypalTaxSchema.optional(),
});
exports.paypalCustomAmountSchema = joi.object().keys({
amount: exports.paypalCurrencySchema.required(),
label: joi.string().trim().empty("").max(50).required(),
});
exports.updateRequestObjectSchema = joi.object({
op: joi.string().valid(["add", "replace"]).required(),
path: joi.string().regex(/\/.*/).required(),
value: joi.any().required(),
});
exports.updateRequestSchema = joi.array().items(exports.updateRequestObjectSchema).min(1).required();