UNPKG

cep-promise

Version:

Busca por CEP integrado diretamente aos serviços dos Correios e ViaCEP

1 lines 11 kB
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r(require("node-fetch")):"function"==typeof define&&define.amd?define(["node-fetch"],r):(e=e||self).cep=r(e.fetch)}(this,function(i){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function e(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),r&&c(e,r)}function n(e){return(n=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function c(e,r){return(c=Object.setPrototypeOf||function(e,r){return e.__proto__=r,e})(e,r)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}function u(e,r,t){return(u=s()?Reflect.construct:function(e,r,t){var o=[null];o.push.apply(o,r);var n=new(Function.bind.apply(e,o));return t&&c(n,t.prototype),n}).apply(null,arguments)}function r(e){var o="function"==typeof Map?new Map:void 0;return(r=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==o){if(o.has(e))return o.get(e);o.set(e,t)}function t(){return u(e,arguments,n(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),c(t,e)})(e)}function p(e,r){return!r||"object"!=typeof r&&"function"!=typeof r?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):r}function o(t){var o=s();return function(){var e,r=n(t);return p(this,o?(e=n(this).constructor,Reflect.construct(r,arguments,e)):r.apply(this,arguments))}}function f(e){return function(e){if(Array.isArray(e))return d(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,r){if(e){if("string"==typeof e)return d(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?d(e,r):void 0}}function d(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,o=new Array(r);t<r;t++)o[t]=e[t];return o}i=i&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i;var h=function(){e(c,r(Error));var i=o(c);function c(){var e,r=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=r.message,o=r.type,n=r.errors;return a(this,c),(e=i.call(this)).name="CepPromiseError",e.message=t,e.type=o,e.errors=n,e}return c}(),m=function(){e(i,r(Error));var n=o(i);function i(){var e,r=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=r.message,o=r.service;return a(this,i),(e=n.call(this)).name="ServiceError",e.message=t,e.service=o,e}return i}();function v(e,r){var t={method:"POST",body:'<?xml version="1.0"?>\n<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cli="http://cliente.bean.master.sigep.bsb.correios.com.br/">\n <soapenv:Header />\n <soapenv:Body>\n <cli:consultaCEP>\n <cep>'.concat(e,"</cep>\n </cli:consultaCEP>\n </soapenv:Body>\n</soapenv:Envelope>"),headers:{"Content-Type":"text/xml;charset=UTF-8","cache-control":"no-cache"},timeout:r.timeout||3e4};return i("https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente",t).then(y).catch(P)}function y(e){return e.ok?e.text().then(b).then(E):e.text().then(g).then(w)}function b(e){try{var r;return(null!==(r=e.replace(/\r?\n|\r/g,"").match(/<return>(.*)<\/return>/)[0])&&void 0!==r?r:"").replace("<return>","").replace("</return>","").split(/</).reduce(function(e,r){var t=r.split(">");return 1<t.length&&t[1].length&&(e[t[0]]=t[1]),e},{})}catch(e){throw new Error("Não foi possível interpretar o XML de resposta.")}}function g(e){try{var r;return(null!==(r=e.match(/<faultstring>(.*)<\/faultstring>/)[0])&&void 0!==r?r:"").replace("<faultstring>","").replace("</faultstring>","")}catch(e){throw new Error("Não foi possível interpretar o XML de resposta.")}}function w(e){throw new Error(e)}function E(e){return{cep:e.cep,state:e.uf,city:e.cidade,neighborhood:e.bairro,street:e.end,service:"correios"}}function P(e){var r=new m({message:e.message,service:"correios"});throw"FetchError"===e.name&&(r.message="Erro ao se conectar com o serviço dos Correios."),r}function j(e,r){var t={method:"POST",mode:"cors",headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8",Referer:"https://buscacepinter.correios.com.br/app/endereco/index.php","Referrer-Policy":"strict-origin-when-cross-origin"},body:"endereco=".concat(e,"&tipoCEP=ALL"),timeout:r.timeout||3e4};return i("https://buscacepinter.correios.com.br/app/endereco/carrega-cep-endereco.php",t).then(C).then(S).catch(O)}function C(e){return e.json().then(function(e){if(0===e.total||e.erro||""===e.dados[0].cep)throw new Error("CEP não encontrado na base dos Correios.");return e})}function S(e){var r=e.dados[0];return{cep:r.cep,state:r.uf,city:r.localidade,neighborhood:r.bairro,street:r.logradouroDNEC,service:"correios-alt"}}function O(e){var r=new m({message:e.message,service:"correios-alt"});throw"FetchError"===e.name&&(r.message="Erro ao se conectar com o serviço dos Correios Alt."),r}function x(e,r){var t="https://viacep.com.br/ws/".concat(e,"/json/"),o={method:"GET",mode:"cors",headers:{"content-type":"application/json;charset=utf-8"},timeout:r.timeout||3e4};return"undefined"==typeof window&&(o.headers["user-agent"]="cep-promise"),i(t,o).then(A).then(_).then(T).catch(F)}function A(e){if(e.ok)return e.json();throw Error("Erro ao se conectar com o serviço ViaCEP.")}function _(e){if(!0===e.erro)throw new Error("CEP não encontrado na base do ViaCEP.");return e}function T(e){return{cep:e.cep.replace("-",""),state:e.uf,city:e.localidade,neighborhood:e.bairro,street:e.logradouro,service:"viacep"}}function F(e){var r=new m({message:e.message,service:"viacep"});throw"FetchError"===e.name&&(r.message="Erro ao se conectar com o serviço ViaCEP."),r}function R(e,r){var t="".concat(e.slice(0,5),"-").concat(e.slice(5)),o="https://cdn.apicep.com/file/apicep/".concat(t,".json"),n={method:"GET",mode:"cors",headers:{accept:"application/json"},timeout:r.timeout||3e4};return i(o,n).then(I).then(N).then(k).catch(M)}function I(e){if(e.ok)return e.json();throw Error("Erro ao se conectar com o serviço WideNet.")}function N(e){if(!1===e.ok||200!==e.status)throw new Error("CEP não encontrado na base do WideNet.");return e}function k(e){return{cep:e.code.replace("-",""),state:e.state,city:e.city,neighborhood:e.district,street:e.address,service:"widenet"}}function M(e){var r=new m({message:e.message,service:"widenet"});throw"FetchError"===e.name&&(r.message="Erro ao se conectar com o serviço WideNet."),r}function z(e,r){var t="https://brasilapi.com.br/api/cep/v1/".concat(e),o={method:"GET",mode:"cors",headers:{"content-type":"application/json;charset=utf-8"},timeout:r.timeout||3e4};return i(t,o).then(B).then(D).catch(L)}function B(e){if(!1===e.ok||200!==e.status)throw new Error("CEP não encontrado na base do BrasilAPI.");return e.json()}function D(e){return{cep:e.cep,state:e.state,city:e.city,neighborhood:e.neighborhood,street:e.street,service:"brasilapi"}}function L(e){var r=new m({message:e.message,service:"brasilapi"});throw"FetchError"===e.name&&(r.message="Erro ao se conectar com o serviço BrasilAPI."),r}function V(){return"undefined"!=typeof window?{viacep:x,widenet:R,brasilapi:z}:{correios:v,"correios-alt":j,viacep:x,widenet:R,brasilapi:z}}function G(t){return new Promise(function(e,r){return Promise.resolve(t).then(r,e)})}Promise.any=function(e){return G(Promise.all(f(e).map(G)))};var U=Promise,W=8;function q(e){var r=t(e);if("number"===r||"string"===r)return e;throw new h({message:"Erro ao inicializar a instância do CepPromise.",type:"validation_error",errors:[{message:"Você deve chamar o construtor utilizando uma String ou um Number.",service:"cep_validation"}]})}function X(e){return e.toString().replace(/\D+/g,"")}function H(e){return"0".repeat(W-e.length)+e}function J(e){if(e.length<=W)return e;throw new h({message:"CEP deve conter exatamente ".concat(W," caracteres."),type:"validation_error",errors:[{message:"CEP informado possui mais do que ".concat(W," caracteres."),service:"cep_validation"}]})}function $(e){if(void 0!==e.length)throw new h({message:"Todos os serviços de CEP retornaram erro.",type:"service_error",errors:e});throw e}function K(e){var r=e.message,t=e.type,o=e.errors;throw new h({message:r,type:t,errors:o})}return function(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return U.resolve(e).then(q).then(function(e){return n.providers=n.providers?n.providers:[],function(e){var r=Object.keys(V());if(!Array.isArray(e))throw new h({message:"Erro ao inicializar a instância do CepPromise.",type:"validation_error",errors:[{message:"O parâmetro providers deve ser uma lista.",service:"providers_validation"}]});var t,o=function(e,r){var t;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(t=l(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var o=0,n=function(){};return{s:n,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,a=!1;return{s:function(){t=e[Symbol.iterator]()},n:function(){var e=t.next();return c=e.done,e},e:function(e){a=!0,i=e},f:function(){try{c||null==t.return||t.return()}finally{if(a)throw i}}}}(e);try{for(o.s();!(t=o.n()).done;){var n=t.value;if(!r.includes(n))throw new h({message:"Erro ao inicializar a instância do CepPromise.",type:"validation_error",errors:[{message:'O provider "'.concat(n,'" é inválido. Os providers disponíveis são: ["').concat(r.join('", "'),'"].'),service:"providers_validation"}]})}}catch(e){o.e(e)}finally{o.f()}}(n.providers),e}).then(X).then(J).then(H).then(function(e){return r=e,t=n,o=V(),0!==t.providers.length?U.any(t.providers.map(function(e){return o[e](r,t)})):U.any(Object.values(o).map(function(e){return e(r,t)}));var r,t,o}).catch($).catch(K)}});