UNPKG

phil-address

Version:

Lightweight Philippine address data fetcher with smart caching, search, and request deduplication

5 lines (4 loc) 18.2 kB
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).PhilAddress={})}(this,function(e){"use strict";function n(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=Array(n);r<n;r++)t[r]=e[r];return t}function r(e,n,r,t,o,a,i){try{var c=e[a](i),u=c.value}catch(e){return void r(e)}c.done?n(u):Promise.resolve(u).then(t,o)}function t(e){return function(){var n=this,t=arguments;return new Promise(function(o,a){var i=e.apply(n,t);function c(e){r(i,o,a,c,u,"next",e)}function u(e){r(i,o,a,c,u,"throw",e)}c(void 0)})}}function o(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=h(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var t=0,o=function(){};return{s:o,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:o}}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 a,i=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){c=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw a}}}}function a(e,n,r){return(n=function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,n||"default");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),r.push.apply(r,t)}return r}function c(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach(function(n){a(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function u(){ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e,n,r="function"==typeof Symbol?Symbol:{},t=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,t,o,a){var u=t&&t.prototype instanceof c?t:c,f=Object.create(u.prototype);return s(f,"_invoke",function(r,t,o){var a,c,u,s=0,f=o||[],l=!1,p={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(n,r){return a=n,c=0,u=e,p.n=r,i}};function h(r,t){for(c=r,u=t,n=0;!l&&s&&!o&&n<f.length;n++){var o,a=f[n],h=p.p,y=a[2];r>3?(o=y===t)&&(u=a[(c=a[4])?5:(c=3,3)],a[4]=a[5]=e):a[0]<=h&&((o=r<2&&h<a[1])?(c=0,p.v=t,p.n=a[1]):h<y&&(o=r<3||a[0]>t||t>y)&&(a[4]=r,a[5]=t,p.n=y,c=0))}if(o||r>1)return i;throw l=!0,t}return function(o,f,y){if(s>1)throw TypeError("Generator is already running");for(l&&1===f&&h(f,y),c=f,u=y;(n=c<2?e:u)||!l;){a||(c?c<3?(c>1&&(p.n=-1),h(c,u)):p.n=u:p.v=u);try{if(s=2,a){if(c||(o="next"),n=a[o]){if(!(n=n.call(a,u)))throw TypeError("iterator result is not an object");if(!n.done)return n;u=n.value,c<2&&(c=0)}else 1===c&&(n=a.return)&&n.call(a),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);a=e}else if((n=(l=p.n<0)?u:r.call(t,p))!==i)break}catch(n){a=e,c=1,u=n}finally{s=1}}return{value:n,done:l}}}(r,o,a),!0),f}var i={};function c(){}function f(){}function l(){}n=Object.getPrototypeOf;var p=[][t]?n(n([][t]())):(s(n={},t,function(){return this}),n),h=l.prototype=c.prototype=Object.create(p);function y(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,s(e,o,"GeneratorFunction")),e.prototype=Object.create(h),e}return f.prototype=l,s(h,"constructor",l),s(l,"constructor",f),f.displayName="GeneratorFunction",s(l,o,"GeneratorFunction"),s(h),s(h,o,"Generator"),s(h,t,function(){return this}),s(h,"toString",function(){return"[object Generator]"}),(u=function(){return{w:a,m:y}})()}function s(e,n,r,t){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}s=function(e,n,r,t){if(n)o?o(e,n,{value:r,enumerable:!t,configurable:!t,writable:!t}):e[n]=r;else{function a(n,r){s(e,n,function(e){return this._invoke(n,r,e)})}a("next",0),a("throw",1),a("return",2)}},s(e,n,r,t)}function f(e){if(null!=e){var n=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],r=0;if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}throw new TypeError(typeof e+" is not iterable")}function l(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,o,a,i,c=[],u=!0,s=!1;try{if(a=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;u=!1}else for(;!(u=(t=a.call(r)).done)&&(c.push(t.value),c.length!==n);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return c}}(e,n)||h(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||h(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 h(e,r){if(e){if("string"==typeof e)return n(e,r);var t={}.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)?n(e,r):void 0}}var y="https://phil-address-api.portal-api.workers.dev",d={data:null,timestamp:0},v={},g={},m={},b=new Map,w={cacheTTL:36e5,timeout:1e4,retries:3};function k(e){w=c(c({},w),e)}function j(e){return C.apply(this,arguments)}function C(){return C=t(u().m(function e(n){var r,t,o,a,i,c=arguments;return u().w(function(e){for(;;)switch(e.n){case 0:return r=c.length>1&&void 0!==c[1]?c[1]:w.retries,t=new AbortController,o=setTimeout(function(){return t.abort()},w.timeout),e.p=1,e.n=2,fetch(n,{signal:t.signal});case 2:if(a=e.v,clearTimeout(o),a.ok||!(r>0)){e.n=4;break}return e.n=3,new Promise(function(e){return setTimeout(e,1e3*(w.retries-r+1))});case 3:case 7:return e.a(2,j(n,r-1));case 4:return e.a(2,a);case 5:if(e.p=5,i=e.v,clearTimeout(o),"AbortError"!==i.name){e.n=6;break}throw new Error("Request timeout");case 6:if(!(r>0)){e.n=8;break}return e.n=7,new Promise(function(e){return setTimeout(e,1e3*(w.retries-r+1))});case 8:throw i;case 9:return e.a(2)}},e,null,[[1,5]])})),C.apply(this,arguments)}var O={enabled:!1,logSlowRequests:!0,slowRequestThreshold:1e3},P={apiCalls:0,cacheHits:0,cacheMisses:0,totalResponseTime:0,slowRequests:[]};function T(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};O=c(c({},O),{},{enabled:e},n)}function S(){var e=P.apiCalls>0?Math.round(P.totalResponseTime/P.apiCalls):0,n=P.cacheHits+P.cacheMisses>0?Math.round(P.cacheHits/(P.cacheHits+P.cacheMisses)*100):0;return c(c({},P),{},{avgResponseTime:e,cacheHitRate:"".concat(n,"%"),summary:{totalCalls:P.apiCalls,avgResponseTime:"".concat(e,"ms"),cacheEfficiency:"".concat(n,"%"),slowRequestCount:P.slowRequests.length}})}function E(){P.apiCalls=0,P.cacheHits=0,P.cacheMisses=0,P.totalResponseTime=0,P.slowRequests=[]}function A(e,n,r){return R.apply(this,arguments)}function R(){return(R=t(u().m(function e(n,r,o){var a,i,c;return u().w(function(e){for(;;)switch(e.n){case 0:if(!((a=r[o])&&Date.now()-a.timestamp<w.cacheTTL)){e.n=1;break}return O.enabled&&P.cacheHits++,e.a(2,a.data);case 1:if(O.enabled&&P.cacheMisses++,i="".concat(n,"-").concat(o),!b.has(i)){e.n=2;break}return e.a(2,b.get(i));case 2:return c=t(u().m(function e(){var t,c,s;return u().w(function(e){for(;;)switch(e.n){case 0:return e.p=0,e.n=1,j("".concat(y).concat(n));case 1:if((t=e.v).ok){e.n=2;break}throw new Error("Network error while fetching ".concat(n));case 2:return e.n=3,t.json();case 3:return c=e.v,r[o]={data:c,timestamp:Date.now()},e.a(2,c);case 4:if(e.p=4,s=e.v,console.error("Error loading ".concat(n,":"),s),null==a||!a.data){e.n=5;break}return e.a(2,a.data);case 5:return e.a(2,[]);case 6:return e.p=6,b.delete(i),e.f(6);case 7:return e.a(2)}},e,null,[[0,4,6,7]])}))(),b.set(i,c),e.a(2,c)}},e)}))).apply(this,arguments)}function M(){return x.apply(this,arguments)}function x(){return(x=t(u().m(function e(){var n,r;return u().w(function(e){for(;;)switch(e.n){case 0:if(!(d.data&&Date.now()-d.timestamp<w.cacheTTL)){e.n=1;break}return e.a(2,d.data);case 1:if(n="regions",!b.has(n)){e.n=2;break}return e.a(2,b.get(n));case 2:return r=t(u().m(function e(){var r,t,o;return u().w(function(e){for(;;)switch(e.n){case 0:return e.p=0,e.n=1,j("".concat(y,"/regions"));case 1:if((r=e.v).ok){e.n=2;break}throw new Error("Network error while fetching regions");case 2:return e.n=3,r.json();case 3:return t=e.v,d={data:t,timestamp:Date.now()},e.a(2,t);case 4:if(e.p=4,o=e.v,console.error("Error in loadRegions:",o),!d.data){e.n=5;break}return e.a(2,d.data);case 5:return e.a(2,[]);case 6:return e.p=6,b.delete(n),e.f(6);case 7:return e.a(2)}},e,null,[[0,4,6,7]])}))(),b.set(n,r),e.a(2,r)}},e)}))).apply(this,arguments)}function I(e){return H.apply(this,arguments)}function H(){return(H=t(u().m(function e(n){var r;return u().w(function(e){for(;;)switch(e.n){case 0:if("string"==typeof n&&n){e.n=1;break}return console.error("Invalid region code"),e.a(2,[]);case 1:return r="provinces-".concat(n),e.a(2,A("/provinces/".concat(n),v,r))}},e)}))).apply(this,arguments)}function L(e){return N.apply(this,arguments)}function N(){return(N=t(u().m(function e(n){var r;return u().w(function(e){for(;;)switch(e.n){case 0:if("string"==typeof n&&n){e.n=1;break}return console.error("Invalid province code"),e.a(2,[]);case 1:return r="cities-".concat(n),e.a(2,A("/cities/".concat(n),g,r))}},e)}))).apply(this,arguments)}function q(e){return B.apply(this,arguments)}function B(){return(B=t(u().m(function e(n){var r;return u().w(function(e){for(;;)switch(e.n){case 0:if("string"==typeof n&&n){e.n=1;break}return console.error("Invalid city code"),e.a(2,[]);case 1:return r="barangays-".concat(n),e.a(2,A("/barangays/".concat(n),m,r))}},e)}))).apply(this,arguments)}function D(e){return[e.street,e.barangay,e.city,e.province,e.region,e.zipCode].filter(Boolean).join(", ")}function G(e){return _.apply(this,arguments)}function _(){return _=t(u().m(function e(n){var r,t,a,i,s,l,h,y,d,v,g,m,b,w,k,j,C,O,P,T=arguments;return u().w(function(e){for(;;)switch(e.n){case 0:if(t=(r=T.length>1&&void 0!==T[1]?T[1]:{}).includeRegions,a=void 0===t||t,i=r.includeProvinces,s=void 0===i||i,l=r.includeCities,h=void 0===l||l,r.includeBarangays,y=r.limit,d=void 0===y?10:y,n&&"string"==typeof n){e.n=1;break}return e.a(2,[]);case 1:if(v=n.toLowerCase().trim(),g=[],e.p=2,!a){e.n=4;break}return e.n=3,M();case 3:m=e.v,b=m.filter(function(e){return e.name.toLowerCase().includes(v)}).map(function(e){return c(c({},e),{},{type:"region"})}),g.push.apply(g,p(b));case 4:if(!s&&!h){e.n=13;break}return e.n=5,M();case 5:w=e.v,k=o(w),e.p=6,C=u().m(function e(){var n,r,t,a,i,l,y,m;return u().w(function(e){for(;;)switch(e.n){case 0:if(n=j.value,!(g.length>=d)){e.n=1;break}return e.a(2,1);case 1:if(!s){e.n=3;break}return e.n=2,I(n.psgcCode);case 2:r=e.v,t=r.filter(function(e){return e.name.toLowerCase().includes(v)}).map(function(e){return c(c({},e),{},{type:"province",regionName:n.name})}),g.push.apply(g,p(t));case 3:if(!(h&&g.length<d)){e.n=12;break}return e.n=4,I(n.psgcCode);case 4:a=e.v,i=o(a),e.p=5,y=u().m(function e(){var r,t,o;return u().w(function(e){for(;;)switch(e.n){case 0:if(r=l.value,!(g.length>=d)){e.n=1;break}return e.a(2,1);case 1:return e.n=2,L(r.id);case 2:t=e.v,o=t.filter(function(e){return e.name.toLowerCase().includes(v)}).map(function(e){return c(c({},e),{},{type:"city",provinceName:r.name,regionName:n.name})}),g.push.apply(g,p(o));case 3:return e.a(2)}},e)}),i.s();case 6:if((l=i.n()).done){e.n=9;break}return e.d(f(y()),7);case 7:if(!e.v){e.n=8;break}return e.a(3,9);case 8:e.n=6;break;case 9:e.n=11;break;case 10:e.p=10,m=e.v,i.e(m);case 11:return e.p=11,i.f(),e.f(11);case 12:return e.a(2)}},e,null,[[5,10,11,12]])}),k.s();case 7:if((j=k.n()).done){e.n=10;break}return e.d(f(C()),8);case 8:if(!e.v){e.n=9;break}return e.a(3,10);case 9:e.n=7;break;case 10:e.n=12;break;case 11:e.p=11,O=e.v,k.e(O);case 12:return e.p=12,k.f(),e.f(12);case 13:return e.a(2,g.slice(0,d));case 14:return e.p=14,P=e.v,console.error("Error in search:",P),e.a(2,[])}},e,null,[[6,11,12,13],[2,14]])})),_.apply(this,arguments)}function z(){d={data:null,timestamp:0},Object.keys(v).forEach(function(e){return delete v[e]}),Object.keys(g).forEach(function(e){return delete g[e]}),Object.keys(m).forEach(function(e){return delete m[e]}),b.clear()}function F(){var e=function(e){return Object.keys(e).length};return{regions:d.data?1:0,provinces:e(v),cities:e(g),barangays:e(m),pendingRequests:b.size,totalCached:(d.data?1:0)+e(v)+e(g)+e(m)}}function V(){return Z.apply(this,arguments)}function Z(){return(Z=t(u().m(function e(){return u().w(function(e){for(;;)if(0===e.n)return e.a(2,M())},e)}))).apply(this,arguments)}function $(e){return U.apply(this,arguments)}function U(){return(U=t(u().m(function e(n){return u().w(function(e){for(;;)if(0===e.n)return e.a(2,I(n))},e)}))).apply(this,arguments)}function W(e){return J.apply(this,arguments)}function J(){return(J=t(u().m(function e(n){return u().w(function(e){for(;;)if(0===e.n)return e.a(2,L(n))},e)}))).apply(this,arguments)}function K(e){return Q.apply(this,arguments)}function Q(){return(Q=t(u().m(function e(n){return u().w(function(e){for(;;)if(0===e.n)return e.a(2,q(n))},e)}))).apply(this,arguments)}function X(e){return Y.apply(this,arguments)}function Y(){return(Y=t(u().m(function e(n){var r;return u().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,V();case 1:return r=e.v,e.a(2,r.find(function(e){return e.psgcCode===n})||null)}},e)}))).apply(this,arguments)}function ee(e){return ne.apply(this,arguments)}function ne(){return(ne=t(u().m(function e(n){var r,t,a,i,s,f,l;return u().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,V();case 1:r=e.v,t=o(r),e.p=2,t.s();case 3:if((a=t.n()).done){e.n=6;break}return i=a.value,e.n=4,$(i.psgcCode);case 4:if(s=e.v,!(f=s.find(function(e){return e.psgcCode===n}))){e.n=5;break}return e.a(2,c(c({},f),{},{region:i}));case 5:e.n=3;break;case 6:e.n=8;break;case 7:e.p=7,l=e.v,t.e(l);case 8:return e.p=8,t.f(),e.f(8);case 9:return e.a(2,null)}},e,null,[[2,7,8,9]])}))).apply(this,arguments)}function re(e){return te.apply(this,arguments)}function te(){return(te=t(u().m(function e(n){var r,t,o,a,i,c,s,f,p,h,y,d,v,g;return u().w(function(e){for(;;)switch(e.n){case 0:if(n&&!(n.length<9)){e.n=1;break}return e.a(2,null);case 1:return r=n.substring(0,2),t=n.substring(0,4),o=n.substring(0,6),e.p=2,e.n=3,Promise.all([V(),$(r),W(t),K(o)]);case 3:if(a=e.v,i=l(a,4),c=i[0],s=i[1],f=i[2],p=i[3],h=c.find(function(e){return e.psgcCode===r}),y=s.find(function(e){return e.id===t}),d=f.find(function(e){return e.id===o}),v=p.find(function(e){return e.id===n}),h&&y&&d&&v){e.n=4;break}return e.a(2,null);case 4:return e.a(2,{region:h,province:y,city:d,barangay:v,fullAddress:D({barangay:v.name,city:d.name,province:y.name,region:h.name})});case 5:return e.p=5,g=e.v,console.error("Error getting address hierarchy:",g),e.a(2,null)}},e,null,[[2,5]])}))).apply(this,arguments)}function oe(e){return/^\d{4}$/.test(e)}function ae(){return ie.apply(this,arguments)}function ie(){return ie=t(u().m(function e(){var n,r;return u().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,V();case 1:return n=e.v,r={},e.n=2,Promise.all(n.map(function(){var e=t(u().m(function e(n){var t;return u().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,$(n.psgcCode);case 1:t=e.v,r[n.name]={code:n.psgcCode,provinces:t};case 2:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}()));case 2:return e.a(2,r)}},e)})),ie.apply(this,arguments)}function ce(e){return ue.apply(this,arguments)}function ue(){return ue=t(u().m(function e(n){var r,t,o=arguments;return u().w(function(e){for(;;)switch(e.n){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:{},e.n=1,G(n,r);case 1:return t=e.v,e.a(2,t.map(function(e){var r=e.name.toLowerCase(),t=n.toLowerCase(),o=0;return o=r===t?100:r.startsWith(t)?90:r.includes(t)?70:se(r,t),c(c({},e),{},{score:o})}).sort(function(e,n){return n.score-e.score}))}},e)})),ue.apply(this,arguments)}function se(e,n){var r=e.length>n.length?e:n,t=e.length>n.length?n:e;if(0===r.length)return 100;var o=function(e,n){for(var r=[],t=0;t<=n.length;t++)r[t]=[t];for(var o=0;o<=e.length;o++)r[0][o]=o;for(var a=1;a<=n.length;a++)for(var i=1;i<=e.length;i++)n.charAt(a-1)===e.charAt(i-1)?r[a][i]=r[a-1][i-1]:r[a][i]=Math.min(r[a-1][i-1]+1,r[a][i-1]+1,r[a-1][i]+1);return r[n.length][e.length]}(r,t);return Math.round((r.length-o)/r.length*100)}var fe={regions:V,provinces:$,cities:W,barangays:K,constructAddress:D,search:G,configure:k,clearCache:z,getCacheStats:F,getRegionByCode:X,getProvinceByCode:ee,getAddressHierarchy:re,isValidZipCode:oe,getProvincesGroupedByRegion:ae,fuzzySearch:ce,configurePerformanceMonitoring:T,getPerformanceMetrics:S,resetPerformanceMetrics:E};e.barangays=K,e.cities=W,e.clearCache=z,e.configure=k,e.configurePerformanceMonitoring=T,e.constructAddress=D,e.default=fe,e.fuzzySearch=ce,e.getAddressHierarchy=re,e.getCacheStats=F,e.getPerformanceMetrics=S,e.getProvinceByCode=ee,e.getProvincesGroupedByRegion=ae,e.getRegionByCode=X,e.isValidZipCode=oe,e.provinces=$,e.regions=V,e.resetPerformanceMetrics=E,e.search=G,Object.defineProperty(e,"__esModule",{value:!0})}); //# sourceMappingURL=index.min.js.map