UNPKG

paypal-rest-api

Version:

A typescript module for integrating with PayPal REST APIs.

82 lines (81 loc) 3.17 kB
"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();