@myparcel/sdk
Advanced tools
Comparing version 2.4.0 to 2.5.0
@@ -1,2 +0,2 @@ | ||
// @myparcel/sdk@2.3.1 2022-08-03T08:17:01.453Z | ||
// @myparcel/sdk@2.4.0 2022-08-11T12:35:40.973Z | ||
'use strict'; | ||
@@ -59,2 +59,6 @@ | ||
/** | ||
* @protected | ||
*/ | ||
parameters; | ||
/** | ||
* Array of headers that are required. Client will throw an error if any are missing. | ||
@@ -68,2 +72,3 @@ * | ||
this.headers = config?.headers ?? {}; | ||
this.parameters = config?.parameters ?? {}; | ||
} | ||
@@ -166,2 +171,7 @@ get requiredHeaders() { | ||
...options, | ||
parameters: { | ||
...this.parameters, | ||
...options.parameters, | ||
...endpoint.getParameters(), | ||
}, | ||
headers: { | ||
@@ -174,9 +184,2 @@ ...(HTTP_METHODS_WITH_CONTENT.includes(endpoint.method) ? { 'Content-Type': 'application/json' } : {}), | ||
}; | ||
// Convert all parameters to lowercase. | ||
if (options.parameters) { | ||
newOptions.parameters = Object.entries(options.parameters).reduce((acc, [key, parameter]) => ({ | ||
...acc, | ||
[key.toLowerCase()]: parameter.toString(), | ||
}), {}); | ||
} | ||
if (isOfType(options, 'body')) { | ||
@@ -220,5 +223,20 @@ newOptions.body = { | ||
responseProperty; | ||
/** | ||
* Headers to include when calling this endpoint. | ||
*/ | ||
headers; | ||
/** | ||
* Parameters to include in the endpoint url. | ||
*/ | ||
parameters; | ||
constructor(options) { | ||
this.headers = options?.headers ?? {}; | ||
this.parameters = options?.parameters ?? {}; | ||
} | ||
getHeaders() { | ||
return {}; | ||
return this.headers; | ||
} | ||
getParameters() { | ||
return this.parameters; | ||
} | ||
getPath() { | ||
@@ -269,2 +287,3 @@ return this.path; | ||
// noinspection JSUnusedGlobalSymbols | ||
const POST_NL_ID = 1; | ||
@@ -373,2 +392,3 @@ const POST_NL_NAME = 'postnl'; | ||
// noinspection JSUnusedGlobalSymbols | ||
const AFGHANISTAN = 'AF'; | ||
@@ -907,2 +927,3 @@ const ALAND_ISLANDS = 'AX'; | ||
// noinspection JSUnusedGlobalSymbols | ||
const MORNING_ID = 1; | ||
@@ -951,2 +972,3 @@ const MORNING_NAME = 'morning'; | ||
// noinspection JSUnusedGlobalSymbols | ||
const PACKAGE_ID = 1; | ||
@@ -995,2 +1017,3 @@ const PACKAGE_NAME = 'package'; | ||
// noinspection JSUnusedGlobalSymbols | ||
const MYPARCEL_ID = 1; | ||
@@ -1039,2 +1062,3 @@ const MYPARCEL_NAME = 'myparcel'; | ||
// noinspection JSUnusedGlobalSymbols | ||
const AGE_CHECK_HUMAN = 'Age check'; | ||
@@ -1041,0 +1065,0 @@ const AGE_CHECK_NAME = 'age_check'; |
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class R extends Error{data;constructor(A){super(A.message),Object.setPrototypeOf(this,R.prototype),this.name="ApiException",this.data=A}}class s extends Error{name="user";constructor(A){super(A),Object.setPrototypeOf(this,s.prototype),this.name="UserException"}}const dN=(E,A)=>{if(A){const t=Object.entries(A).map(([N,I])=>`${N}=${I}`);t.length&&(E+=`?${t.join("&")}`)}return E};function c(E,A){return E&&E[A]!==void 0}const O="https://api.myparcel.nl",KN=["POST","PUT"];class L{baseUrl;headers;_requiredHeaders=[];constructor(A){this.baseUrl=(A?.baseUrl??O).replace(/\/+$/,""),this.headers=A?.headers??{}}get requiredHeaders(){return this._requiredHeaders}set requiredHeaders(A){this._requiredHeaders=A}async doRequest(A,t){const N=this.normalizeOptions(A,t);this.validateHeaders(A,N);const I=await this.request(A,N);if(c(I,"errors"))throw new R(I);return c(I,"data")?I.data[A.getResponseProperty()]:I}getHeaders(){return{Accept:"application/json",...this.headers}}createUrl(A,t){let N=A.getPath();if(N.startsWith("/")||(N=`/${N}`),t?.path&&(N=this.substitutePath(N,t.path)),N.includes("/:"))throw new s(`One or more path variables are missing in ${N}`);return t?.parameters&&(N=dN(N,t.parameters)),this.baseUrl+N}substitutePath(A,t){return t&&Object.entries(t).forEach(([N,I])=>{A=A.replace(`:${N}`,String(I))}),A.includes(":")&&A.match(/:\w+?\?/g)?.forEach(I=>{A=A.replace(`/${I}`,"")}),A}validateHeaders(A,t){const N=Object.entries(t.headers).reduce((n,[e,YN])=>({...n,[e.toLowerCase()]:YN}),{}),I=this.requiredHeaders.filter(n=>!(n.toLowerCase()in N));if(I.length)throw new s(`Required headers are missing: ${I.join(", ")}`)}normalizeOptions(A,t){const N={...t,headers:{...KN.includes(A.method)?{"Content-Type":"application/json"}:{},...this.getHeaders(),...t.headers,...A.getHeaders()}};return t.parameters&&(N.parameters=Object.entries(t.parameters).reduce((I,[n,e])=>({...I,[n.toLowerCase()]:e.toString()}),{})),c(t,"body")&&(N.body={data:{[A.getProperty()]:t.body}}),N}}class lN extends L{request=async(A,t)=>{const N={method:A.method,headers:t.headers};c(t,"body")&&(N.body=JSON.stringify(t.body));const I=await fetch(this.createUrl(A,t),N);if(I.body)return I.headers.get("Content-Type")?.includes("application/json")?I.json():I.text()}}class S{method="GET";responseProperty;getHeaders(){return{}}getPath(){return this.path}getProperty(){return this.property}getResponseProperty(){return this.responseProperty??this.property}}class o extends S{}class _ extends S{}function M(E,A){if(!A.length)throw new s("At least one endpoint must be passed.");return A.reduce((t,N)=>({...t,[N.name]:async I=>E.doRequest(N,I??{})}),{})}const hN=(E,A)=>(E.requiredHeaders=["Authorization"],M(E,A)),uN=(E,A)=>M(E,A),T=1,D="postnl",U="PostNL",r=2,C="bpost",P="bpost",G=3,H="cheapcargo",a="Cheap Cargo",i=4,B="dpd",p="DPD",Y=5,d="instabox",K="Instabox",l=6,h="dhl",u="DHL",V=7,F="bol.com",m="Bol.com",y=8,Z="ups",b="UPS",VN={NAME:D,ID:T,HUMAN:U},FN={NAME:C,ID:r,HUMAN:P},W={NAME:H,ID:G,HUMAN:a},g={NAME:B,ID:i,HUMAN:p},f={NAME:d,ID:Y,HUMAN:K},J={NAME:h,ID:l,HUMAN:u},v={NAME:F,ID:V,HUMAN:m},X={NAME:Z,ID:y,HUMAN:b},mN=[W,g,f,J,v,X];var yN=Object.freeze({__proto__:null,POST_NL_ID:T,POST_NL_NAME:D,POST_NL_HUMAN:U,BPOST_ID:r,BPOST_NAME:C,BPOST_HUMAN:P,CHEAP_CARGO_ID:G,CHEAP_CARGO_NAME:H,CHEAP_CARGO_HUMAN:a,DPD_ID:i,DPD_NAME:B,DPD_HUMAN:p,INSTABOX_ID:Y,INSTABOX_NAME:d,INSTABOX_HUMAN:K,DHL_ID:l,DHL_NAME:h,DHL_HUMAN:u,BOL_COM_ID:V,BOL_COM_NAME:F,BOL_COM_HUMAN:m,UPS_ID:y,UPS_NAME:Z,UPS_HUMAN:b,POSTNL:VN,BPOST:FN,CHEAP_CARGO:W,DPD:g,INSTABOX:f,DHL:J,BOL_COM:v,UPS:X,ALL:mN});const ZN="AF",bN="AX",WN="AL",gN="DZ",fN="AS",JN="VI",vN="AD",XN="AO",jN="AI",kN="AQ",xN="AG",QN="AR",wN="AM",$N="AW",qN="AU",j="AT",zN="AZ",At="BS",Nt="BH",tt="BD",Et="BB",It="BY",k="BE",st="BZ",nt="BJ",ot="BM",ct="BT",_t="BO",Rt="BA",et="BW",St="BV",Mt="BR",Ot="IO",Lt="VG",Tt="BN",x="BG",Dt="BF",Ut="BI",rt="CV",Ct="KH",Pt="CM",Gt="CA",Ht="KY",at="CF",it="TD",Bt="CL",pt="CN",Yt="CX",dt="CC",Kt="CO",lt="KM",ht="CG",ut="CD",Vt="CK",Ft="CR",mt="CI",Q="HR",yt="CU",Zt="CW",w="CY",$="CZ",q="DK",bt="DJ",Wt="DM",gt="DO",ft="BQ",Jt="EC",vt="EG",Xt="SV",jt="GQ",kt="ER",z="EE",xt="SZ",Qt="ET",wt="FK",$t="FO",qt="FJ",AA="FI",NA="FR",zt="GF",AE="PF",NE="TF",tE="GA",EE="GM",IE="GE",tA="DE",sE="GH",nE="GI",EA="GR",oE="GL",cE="GD",_E="GP",RE="GU",eE="GT",SE="GG",ME="GN",OE="GW",LE="GY",TE="HT",DE="HM",UE="VA",rE="HN",CE="HK",IA="HU",PE="IS",GE="IN",HE="ID",aE="IR",iE="IQ",sA="IE",BE="IM",pE="IL",nA="IT",YE="JM",dE="JP",KE="JE",lE="JO",hE="KZ",uE="KE",VE="KI",FE="KR",mE="XK",yE="KW",ZE="KG",bE="LA",oA="LV",WE="LB",gE="LS",fE="LR",JE="LY",vE="LI",cA="LT",_A="LU",XE="MO",jE="MG",kE="MW",xE="MY",QE="MV",wE="ML",RA="MT",$E="MH",qE="MQ",zE="MR",AI="MU",NI="YT",tI="MX",EI="FM",II="MD",sI="MC",nI="MN",oI="ME",cI="MS",_I="MA",RI="MZ",eI="MM",SI="NA",MI="NR",OI="NP",eA="NL",LI="NC",TI="NZ",DI="NI",UI="NE",rI="NG",CI="NU",PI="NF",GI="MP",HI="MK",aI="NO",iI="OM",BI="PK",pI="PW",YI="PS",dI="PA",KI="PG",lI="PY",hI="PE",uI="PH",VI="PN",SA="PL",MA="PT",FI="PR",mI="QA",yI="RE",OA="RO",ZI="RU",bI="RW",WI="BL",gI="SH",fI="KN",JI="LC",vI="MF",XI="PM",jI="VC",kI="WS",xI="SM",QI="ST",wI="SA",$I="SN",qI="RS",zI="SC",As="SL",Ns="SG",ts="SX",LA="SK",TA="SI",Es="SB",Is="SO",ss="ZA",ns="GS",os="SS",DA="ES",cs="LK",_s="SD",Rs="SR",es="SJ",UA="SE",Ss="CH",Ms="SY",Os="TW",Ls="TJ",Ts="TZ",Ds="TH",Us="TL",rs="TG",Cs="TK",Ps="TO",Gs="TT",Hs="TN",as="TR",is="TM",Bs="TC",ps="TV",Ys="UG",ds="UA",Ks="AE",ls="GB",hs="UM",us="US",Vs="UY",Fs="UZ",ms="VU",ys="VE",Zs="VN",bs="WF",Ws="EH",gs="YE",fs="ZM",Js="ZW",vs=[j,k,x,Q,w,$,q,z,AA,NA,tA,EA,IA,sA,nA,oA,cA,_A,RA,eA,SA,MA,OA,LA,TA,DA,UA];var Xs=Object.freeze({__proto__:null,AFGHANISTAN:ZN,ALAND_ISLANDS:bN,ALBANIA:WN,ALGERIA:gN,AMERICAN_SAMOA:fN,AMERICAN_VIRGIN_ISLANDS:JN,ANDORRA:vN,ANGOLA:XN,ANGUILLA:jN,ANTARCTICA:kN,ANTIGUA_AND_BARBUDA:xN,ARGENTINA:QN,ARMENIA:wN,ARUBA:$N,AUSTRALIA:qN,AUSTRIA:j,AZERBAIJAN:zN,BAHAMAS:At,BAHRAIN:Nt,BANGLADESH:tt,BARBADOS:Et,BELARUS:It,BELGIUM:k,BELIZE:st,BENIN:nt,BERMUDA:ot,BHUTAN:ct,BOLIVIA:_t,BOSNIA_AND_HERZEGOVINA:Rt,BOTSWANA:et,BOUVET_ISLAND:St,BRAZIL:Mt,BRITISH_INDIAN_OCEAN_TERRITORY:Ot,BRITISH_VIRGIN_ISLANDS:Lt,BRUNEI_DARUSSALAM:Tt,BULGARIA:x,BURKINA_FASO:Dt,BURUNDI:Ut,CABO_VERDE:rt,CAMBODIA:Ct,CAMEROON:Pt,CANADA:Gt,CAYMAN_ISLANDS:Ht,CENTRAL_AFRICAN_REPUBLIC:at,CHAD:it,CHILE:Bt,CHINA:pt,CHRISTMAS_ISLAND:Yt,COCOS_ISLANDS:dt,COLOMBIA:Kt,COMOROS:lt,CONGO_BRAZZAVILLE:ht,CONGO_KINSHASA:ut,COOK_ISLANDS:Vt,COSTA_RICA:Ft,COTE_D_IVOIRE:mt,CROATIA:Q,CUBA:yt,CURACAO:Zt,CYPRUS:w,CZECH_REPUBLIC:$,DENMARK:q,DJIBOUTI:bt,DOMINICA:Wt,DOMINICAN_REPUBLIC:gt,DUTCH_ANTILLES:ft,ECUADOR:Jt,EGYPT:vt,EL_SALVADOR:Xt,EQUATORIAL_GUINEA:jt,ERITREA:kt,ESTONIA:z,ESWATINI:xt,ETHIOPIA:Qt,FALKLAND_ISLANDS:wt,FAROE_ISLANDS:$t,FIJI:qt,FINLAND:AA,FRANCE:NA,FRENCH_GUIANA:zt,FRENCH_POLYNESIA:AE,FRENCH_SOUTHERN_TERRITORIES:NE,GABON:tE,GAMBIA:EE,GEORGIA:IE,GERMANY:tA,GHANA:sE,GIBRALTAR:nE,GREECE:EA,GREENLAND:oE,GRENADA:cE,GUADELOUPE:_E,GUAM:RE,GUATEMALA:eE,GUERNSEY:SE,GUINEA:ME,GUINEA_BISSAU:OE,GUYANA:LE,HAITI:TE,HEARD_ISLAND_AND_MCDONALD_ISLANDS:DE,HOLY_SEE:UE,HONDURAS:rE,HONG_KONG:CE,HUNGARY:IA,ICELAND:PE,INDIA:GE,INDONESIA:HE,IRAN:aE,IRAQ:iE,IRELAND:sA,ISLE_OF_MAN:BE,ISRAEL:pE,ITALY:nA,JAMAICA:YE,JAPAN:dE,JERSEY:KE,JORDAN:lE,KAZAKHSTAN:hE,KENYA:uE,KIRIBATI:VE,KOREA:FE,KOSOVO:mE,KUWAIT:yE,KYRGYZSTAN:ZE,LAO_PEOPLE_DEMOCRATIC_REPUBLIC:bE,LATVIA:oA,LEBANON:WE,LESOTHO:gE,LIBERIA:fE,LIBYA:JE,LIECHTENSTEIN:vE,LITHUANIA:cA,LUXEMBOURG:_A,MACAO:XE,MADAGASCAR:jE,MALAWI:kE,MALAYSIA:xE,MALDIVES:QE,MALI:wE,MALTA:RA,MARSHALL_ISLANDS:$E,MARTINIQUE:qE,MAURITANIA:zE,MAURITIUS:AI,MAYOTTE:NI,MEXICO:tI,MICRONESIA:EI,MOLDOVA:II,MONACO:sI,MONGOLIA:nI,MONTENEGRO:oI,MONTSERRAT:cI,MOROCCO:_I,MOZAMBIQUE:RI,MYANMAR:eI,NAMIBIA:SI,NAURU:MI,NEPAL:OI,NETHERLANDS:eA,NEW_CALEDONIA:LI,NEW_ZEALAND:TI,NICARAGUA:DI,NIGER:UI,NIGERIA:rI,NIUE:CI,NORFOLK_ISLAND:PI,NORTHERN_MARIANA_ISLANDS:GI,NORTH_MACEDONIA:HI,NORWAY:aI,OMAN:iI,PAKISTAN:BI,PALAU:pI,PALESTINE:YI,PANAMA:dI,PAPUA_NEW_GUINEA:KI,PARAGUAY:lI,PERU:hI,PHILIPPINES:uI,PITCAIRN:VI,POLAND:SA,PORTUGAL:MA,PUERTO_RICO:FI,QATAR:mI,REUNION:yI,ROMANIA:OA,RUSSIAN_FEDERATION:ZI,RWANDA:bI,SAINT_BARTHELEMY:WI,SAINT_HELENA:gI,SAINT_KITTS_AND_NEVIS:fI,SAINT_LUCIA:JI,SAINT_MARTIN:vI,SAINT_PIERRE_AND_MIQUELON:XI,SAINT_VINCENT_AND_THE_GRENADINES:jI,SAMOA:kI,SAN_MARINO:xI,SAO_TOME_AND_PRINCIPE:QI,SAUDI_ARABIA:wI,SENEGAL:$I,SERBIA:qI,SEYCHELLES:zI,SIERRA_LEONE:As,SINGAPORE:Ns,SINT_MAARTEN:ts,SLOVAKIA:LA,SLOVENIA:TA,SOLOMON_ISLANDS:Es,SOMALIA:Is,SOUTH_AFRICA:ss,SOUTH_GEORGIA_AND_THE_SOUTH_SANDWICH_ISLANDS:ns,SOUTH_SUDAN:os,SPAIN:DA,SRI_LANKA:cs,SUDAN:_s,SURINAME:Rs,SVALBARD_AND_JAN_MAYEN:es,SWEDEN:UA,SWITZERLAND:Ss,SYRIAN_ARAB_REPUBLIC:Ms,TAIWAN:Os,TAJIKISTAN:Ls,TANZANIA:Ts,THAILAND:Ds,TIMOR_LESTE:Us,TOGO:rs,TOKELAU:Cs,TONGA:Ps,TRINIDAD_AND_TOBAGO:Gs,TUNISIA:Hs,TURKEY:as,TURKMENISTAN:is,TURKS_AND_CAICOS_ISLANDS:Bs,TUVALU:ps,UGANDA:Ys,UKRAINE:ds,UNITED_ARAB_EMIRATES:Ks,UNITED_KINGDOM:ls,UNITED_STATES_MINOR_OUTLYING_ISLANDS:hs,UNITED_STATES_OF_AMERICA:us,URUGUAY:Vs,UZBEKISTAN:Fs,VANUATU:ms,VENEZUELA:ys,VIETNAM:Zs,WALLIS_AND_FUTUNA:bs,WESTERN_SAHARA:Ws,YEMEN:gs,ZAMBIA:fs,ZIMBABWE:Js,EU:vs});const rA=1,CA="morning",PA=2,GA="standard",HA=3,aA="evening",iA=4,BA="pickup",pA={ID:rA,NAME:CA},YA={ID:PA,NAME:GA},dA={ID:HA,NAME:aA},KA={ID:iA,NAME:BA},js=[pA,YA,dA,KA];var ks=Object.freeze({__proto__:null,MORNING_ID:rA,MORNING_NAME:CA,STANDARD_ID:PA,STANDARD_NAME:GA,EVENING_ID:HA,EVENING_NAME:aA,PICKUP_ID:iA,PICKUP_NAME:BA,MORNING:pA,STANDARD:YA,EVENING:dA,PICKUP:KA,ALL:js});const lA=1,hA="package",uA=2,VA="mailbox",FA=3,mA="letter",yA=4,ZA="digital_stamp",bA={ID:lA,NAME:hA},WA={ID:uA,NAME:VA},gA={ID:FA,NAME:mA},fA={ID:yA,NAME:ZA},xs=[bA,WA,gA,fA];var Qs=Object.freeze({__proto__:null,PACKAGE_ID:lA,PACKAGE_NAME:hA,MAILBOX_ID:uA,MAILBOX_NAME:VA,LETTER_ID:FA,LETTER_NAME:mA,DIGITAL_STAMP_ID:yA,DIGITAL_STAMP_NAME:ZA,PACKAGE:bA,MAILBOX:WA,LETTER:gA,DIGITAL_STAMP:fA,ALL:xs});const JA=1,vA="myparcel",XA="MyParcel",jA=2,kA="belgie",xA="SendMyParcel",QA=3,wA="flespakket",$A="Flespakket",qA={ID:JA,NAME:vA,HUMAN:XA},zA={ID:jA,NAME:kA,HUMAN:xA},AN={ID:QA,NAME:wA,HUMAN:$A},ws=[qA,zA,AN];var $s=Object.freeze({__proto__:null,MYPARCEL_ID:JA,MYPARCEL_NAME:vA,MYPARCEL_HUMAN:XA,SENDMYPARCEL_ID:jA,SENDMYPARCEL_NAME:kA,SENDMYPARCEL_HUMAN:xA,FLESPAKKET_ID:QA,FLESPAKKET_NAME:wA,FLESPAKKET_HUMAN:$A,MYPARCEL:qA,SENDMYPARCEL:zA,FLESPAKKET:AN,ALL:ws});const NN="Age check",tN="age_check",EN="Cooled delivery",IN="cooled_delivery",sN="Insurance",nN="insurance",oN="Large format",cN="large_format",_N="Only recipient",RN="only_recipient",eN="Printerless return",SN="printerless_return",MN="Return",ON="return",LN="Same day delivery",TN="same_day_delivery",DN="Signature",UN="signature",rN={NAME:tN,HUMAN:NN},CN={NAME:IN,HUMAN:EN},PN={NAME:nN,HUMAN:sN},GN={NAME:cN,HUMAN:oN},HN={NAME:RN,HUMAN:_N},aN={NAME:SN,HUMAN:eN},iN={NAME:ON,HUMAN:MN},BN={NAME:TN,HUMAN:LN},pN={NAME:UN,HUMAN:DN},qs=[rN,CN,PN,GN,HN,aN,iN,BN,pN];var zs=Object.freeze({__proto__:null,AGE_CHECK_HUMAN:NN,AGE_CHECK_NAME:tN,COOLED_DELIVERY_HUMAN:EN,COOLED_DELIVERY_NAME:IN,INSURANCE_HUMAN:sN,INSURANCE_NAME:nN,LARGE_FORMAT_HUMAN:oN,LARGE_FORMAT_NAME:cN,ONLY_RECIPIENT_HUMAN:_N,ONLY_RECIPIENT_NAME:RN,PRINTERLESS_RETURN_HUMAN:eN,PRINTERLESS_RETURN_NAME:SN,RETURN_HUMAN:MN,RETURN_NAME:ON,SAME_DAY_DELIVERY_HUMAN:LN,SAME_DAY_DELIVERY_NAME:TN,SIGNATURE_HUMAN:DN,SIGNATURE_NAME:UN,AGE_CHECK:rN,COOLED_DELIVERY:CN,INSURANCE:PN,LARGE_FORMAT:GN,ONLY_RECIPIENT:HN,PRINTERLESS_RETURN:aN,RETURN:iN,SAME_DAY_DELIVERY:BN,SIGNATURE:pN,ALL:qs});class An extends _{name="getShipment";path="shipments/:id";property="shipments"}class Nn extends _{name="getShipments";path="shipments";property="shipments"}class tn extends _{method="POST";name="postShipments";path="shipments";property="shipments";responseProperty="ids"}class En extends o{name="getCarrier";path="carriers/:carrier";property="carriers"}class In extends o{name="getCarriers";path="carriers";property="carriers"}class sn extends o{name="getDeliveryOptions";path="delivery_options";property="deliveries";getHeaders(){return{...super.getHeaders(),Accept:"application/json;version=2.0"}}}class nn extends o{name="getPickupLocations";path="pickup_locations";property="pickup_locations"}exports.AbstractClient=L,exports.AbstractEndpoint=S,exports.AbstractPrivateEndpoint=_,exports.AbstractPublicEndpoint=o,exports.ApiException=R,exports.BASE_URL=O,exports.CARRIERS=yN,exports.COUNTRIES=Xs,exports.DELIVERY_TYPES=ks,exports.FetchClient=lN,exports.GetCarrier=En,exports.GetCarriers=In,exports.GetDeliveryOptions=sn,exports.GetPickupLocations=nn,exports.GetShipment=An,exports.GetShipments=Nn,exports.PACKAGE_TYPES=Qs,exports.PLATFORMS=$s,exports.PostShipments=tn,exports.SHIPMENT_OPTIONS=zs,exports.UserException=s,exports.createMyParcelSdk=M,exports.createPrivateSdk=hN,exports.createPublicSdk=uN; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class _ extends Error{data;constructor(A){super(A.message),Object.setPrototypeOf(this,_.prototype),this.name="ApiException",this.data=A}}class s extends Error{name="user";constructor(A){super(A),Object.setPrototypeOf(this,s.prototype),this.name="UserException"}}const dN=(E,A)=>{if(A){const t=Object.entries(A).map(([N,I])=>`${N}=${I}`);t.length&&(E+=`?${t.join("&")}`)}return E};function o(E,A){return E&&E[A]!==void 0}const M="https://api.myparcel.nl",KN=["POST","PUT"];class O{baseUrl;headers;parameters;_requiredHeaders=[];constructor(A){this.baseUrl=(A?.baseUrl??M).replace(/\/+$/,""),this.headers=A?.headers??{},this.parameters=A?.parameters??{}}get requiredHeaders(){return this._requiredHeaders}set requiredHeaders(A){this._requiredHeaders=A}async doRequest(A,t){const N=this.normalizeOptions(A,t);this.validateHeaders(A,N);const I=await this.request(A,N);if(o(I,"errors"))throw new _(I);return o(I,"data")?I.data[A.getResponseProperty()]:I}getHeaders(){return{Accept:"application/json",...this.headers}}createUrl(A,t){let N=A.getPath();if(N.startsWith("/")||(N=`/${N}`),t?.path&&(N=this.substitutePath(N,t.path)),N.includes("/:"))throw new s(`One or more path variables are missing in ${N}`);return t?.parameters&&(N=dN(N,t.parameters)),this.baseUrl+N}substitutePath(A,t){return t&&Object.entries(t).forEach(([N,I])=>{A=A.replace(`:${N}`,String(I))}),A.includes(":")&&A.match(/:\w+?\?/g)?.forEach(I=>{A=A.replace(`/${I}`,"")}),A}validateHeaders(A,t){const N=Object.entries(t.headers).reduce((e,[pN,YN])=>({...e,[pN.toLowerCase()]:YN}),{}),I=this.requiredHeaders.filter(e=>!(e.toLowerCase()in N));if(I.length)throw new s(`Required headers are missing: ${I.join(", ")}`)}normalizeOptions(A,t){const N={...t,parameters:{...this.parameters,...t.parameters,...A.getParameters()},headers:{...KN.includes(A.method)?{"Content-Type":"application/json"}:{},...this.getHeaders(),...t.headers,...A.getHeaders()}};return o(t,"body")&&(N.body={data:{[A.getProperty()]:t.body}}),N}}class lN extends O{request=async(A,t)=>{const N={method:A.method,headers:t.headers};o(t,"body")&&(N.body=JSON.stringify(t.body));const I=await fetch(this.createUrl(A,t),N);if(I.body)return I.headers.get("Content-Type")?.includes("application/json")?I.json():I.text()}}class R{method="GET";responseProperty;headers;parameters;constructor(A){this.headers=A?.headers??{},this.parameters=A?.parameters??{}}getHeaders(){return this.headers}getParameters(){return this.parameters}getPath(){return this.path}getProperty(){return this.property}getResponseProperty(){return this.responseProperty??this.property}}class n extends R{}class c extends R{}function S(E,A){if(!A.length)throw new s("At least one endpoint must be passed.");return A.reduce((t,N)=>({...t,[N.name]:async I=>E.doRequest(N,I??{})}),{})}const hN=(E,A)=>(E.requiredHeaders=["Authorization"],S(E,A)),uN=(E,A)=>S(E,A),L=1,T="postnl",D="PostNL",r=2,U="bpost",C="bpost",a=3,P="cheapcargo",G="Cheap Cargo",H=4,i="dpd",B="DPD",p=5,Y="instabox",d="Instabox",K=6,l="dhl",h="DHL",u=7,V="bol.com",m="Bol.com",F=8,y="ups",Z="UPS",VN={NAME:T,ID:L,HUMAN:D},mN={NAME:U,ID:r,HUMAN:C},W={NAME:P,ID:a,HUMAN:G},b={NAME:i,ID:H,HUMAN:B},g={NAME:Y,ID:p,HUMAN:d},f={NAME:l,ID:K,HUMAN:h},J={NAME:V,ID:u,HUMAN:m},v={NAME:y,ID:F,HUMAN:Z},FN=[W,b,g,f,J,v];var yN=Object.freeze({__proto__:null,POST_NL_ID:L,POST_NL_NAME:T,POST_NL_HUMAN:D,BPOST_ID:r,BPOST_NAME:U,BPOST_HUMAN:C,CHEAP_CARGO_ID:a,CHEAP_CARGO_NAME:P,CHEAP_CARGO_HUMAN:G,DPD_ID:H,DPD_NAME:i,DPD_HUMAN:B,INSTABOX_ID:p,INSTABOX_NAME:Y,INSTABOX_HUMAN:d,DHL_ID:K,DHL_NAME:l,DHL_HUMAN:h,BOL_COM_ID:u,BOL_COM_NAME:V,BOL_COM_HUMAN:m,UPS_ID:F,UPS_NAME:y,UPS_HUMAN:Z,POSTNL:VN,BPOST:mN,CHEAP_CARGO:W,DPD:b,INSTABOX:g,DHL:f,BOL_COM:J,UPS:v,ALL:FN});const ZN="AF",WN="AX",bN="AL",gN="DZ",fN="AS",JN="VI",vN="AD",XN="AO",kN="AI",xN="AQ",jN="AG",QN="AR",wN="AM",$N="AW",qN="AU",X="AT",zN="AZ",At="BS",Nt="BH",tt="BD",Et="BB",It="BY",k="BE",st="BZ",nt="BJ",ot="BM",ct="BT",_t="BO",et="BA",Rt="BW",St="BV",Mt="BR",Ot="IO",Lt="VG",Tt="BN",x="BG",Dt="BF",rt="BI",Ut="CV",Ct="KH",at="CM",Pt="CA",Gt="KY",Ht="CF",it="TD",Bt="CL",pt="CN",Yt="CX",dt="CC",Kt="CO",lt="KM",ht="CG",ut="CD",Vt="CK",mt="CR",Ft="CI",j="HR",yt="CU",Zt="CW",Q="CY",w="CZ",$="DK",Wt="DJ",bt="DM",gt="DO",ft="BQ",Jt="EC",vt="EG",Xt="SV",kt="GQ",xt="ER",q="EE",jt="SZ",Qt="ET",wt="FK",$t="FO",qt="FJ",z="FI",AA="FR",zt="GF",AE="PF",NE="TF",tE="GA",EE="GM",IE="GE",NA="DE",sE="GH",nE="GI",tA="GR",oE="GL",cE="GD",_E="GP",eE="GU",RE="GT",SE="GG",ME="GN",OE="GW",LE="GY",TE="HT",DE="HM",rE="VA",UE="HN",CE="HK",EA="HU",aE="IS",PE="IN",GE="ID",HE="IR",iE="IQ",IA="IE",BE="IM",pE="IL",sA="IT",YE="JM",dE="JP",KE="JE",lE="JO",hE="KZ",uE="KE",VE="KI",mE="KR",FE="XK",yE="KW",ZE="KG",WE="LA",nA="LV",bE="LB",gE="LS",fE="LR",JE="LY",vE="LI",oA="LT",cA="LU",XE="MO",kE="MG",xE="MW",jE="MY",QE="MV",wE="ML",_A="MT",$E="MH",qE="MQ",zE="MR",AI="MU",NI="YT",tI="MX",EI="FM",II="MD",sI="MC",nI="MN",oI="ME",cI="MS",_I="MA",eI="MZ",RI="MM",SI="NA",MI="NR",OI="NP",eA="NL",LI="NC",TI="NZ",DI="NI",rI="NE",UI="NG",CI="NU",aI="NF",PI="MP",GI="MK",HI="NO",iI="OM",BI="PK",pI="PW",YI="PS",dI="PA",KI="PG",lI="PY",hI="PE",uI="PH",VI="PN",RA="PL",SA="PT",mI="PR",FI="QA",yI="RE",MA="RO",ZI="RU",WI="RW",bI="BL",gI="SH",fI="KN",JI="LC",vI="MF",XI="PM",kI="VC",xI="WS",jI="SM",QI="ST",wI="SA",$I="SN",qI="RS",zI="SC",As="SL",Ns="SG",ts="SX",OA="SK",LA="SI",Es="SB",Is="SO",ss="ZA",ns="GS",os="SS",TA="ES",cs="LK",_s="SD",es="SR",Rs="SJ",DA="SE",Ss="CH",Ms="SY",Os="TW",Ls="TJ",Ts="TZ",Ds="TH",rs="TL",Us="TG",Cs="TK",as="TO",Ps="TT",Gs="TN",Hs="TR",is="TM",Bs="TC",ps="TV",Ys="UG",ds="UA",Ks="AE",ls="GB",hs="UM",us="US",Vs="UY",ms="UZ",Fs="VU",ys="VE",Zs="VN",Ws="WF",bs="EH",gs="YE",fs="ZM",Js="ZW",vs=[X,k,x,j,Q,w,$,q,z,AA,NA,tA,EA,IA,sA,nA,oA,cA,_A,eA,RA,SA,MA,OA,LA,TA,DA];var Xs=Object.freeze({__proto__:null,AFGHANISTAN:ZN,ALAND_ISLANDS:WN,ALBANIA:bN,ALGERIA:gN,AMERICAN_SAMOA:fN,AMERICAN_VIRGIN_ISLANDS:JN,ANDORRA:vN,ANGOLA:XN,ANGUILLA:kN,ANTARCTICA:xN,ANTIGUA_AND_BARBUDA:jN,ARGENTINA:QN,ARMENIA:wN,ARUBA:$N,AUSTRALIA:qN,AUSTRIA:X,AZERBAIJAN:zN,BAHAMAS:At,BAHRAIN:Nt,BANGLADESH:tt,BARBADOS:Et,BELARUS:It,BELGIUM:k,BELIZE:st,BENIN:nt,BERMUDA:ot,BHUTAN:ct,BOLIVIA:_t,BOSNIA_AND_HERZEGOVINA:et,BOTSWANA:Rt,BOUVET_ISLAND:St,BRAZIL:Mt,BRITISH_INDIAN_OCEAN_TERRITORY:Ot,BRITISH_VIRGIN_ISLANDS:Lt,BRUNEI_DARUSSALAM:Tt,BULGARIA:x,BURKINA_FASO:Dt,BURUNDI:rt,CABO_VERDE:Ut,CAMBODIA:Ct,CAMEROON:at,CANADA:Pt,CAYMAN_ISLANDS:Gt,CENTRAL_AFRICAN_REPUBLIC:Ht,CHAD:it,CHILE:Bt,CHINA:pt,CHRISTMAS_ISLAND:Yt,COCOS_ISLANDS:dt,COLOMBIA:Kt,COMOROS:lt,CONGO_BRAZZAVILLE:ht,CONGO_KINSHASA:ut,COOK_ISLANDS:Vt,COSTA_RICA:mt,COTE_D_IVOIRE:Ft,CROATIA:j,CUBA:yt,CURACAO:Zt,CYPRUS:Q,CZECH_REPUBLIC:w,DENMARK:$,DJIBOUTI:Wt,DOMINICA:bt,DOMINICAN_REPUBLIC:gt,DUTCH_ANTILLES:ft,ECUADOR:Jt,EGYPT:vt,EL_SALVADOR:Xt,EQUATORIAL_GUINEA:kt,ERITREA:xt,ESTONIA:q,ESWATINI:jt,ETHIOPIA:Qt,FALKLAND_ISLANDS:wt,FAROE_ISLANDS:$t,FIJI:qt,FINLAND:z,FRANCE:AA,FRENCH_GUIANA:zt,FRENCH_POLYNESIA:AE,FRENCH_SOUTHERN_TERRITORIES:NE,GABON:tE,GAMBIA:EE,GEORGIA:IE,GERMANY:NA,GHANA:sE,GIBRALTAR:nE,GREECE:tA,GREENLAND:oE,GRENADA:cE,GUADELOUPE:_E,GUAM:eE,GUATEMALA:RE,GUERNSEY:SE,GUINEA:ME,GUINEA_BISSAU:OE,GUYANA:LE,HAITI:TE,HEARD_ISLAND_AND_MCDONALD_ISLANDS:DE,HOLY_SEE:rE,HONDURAS:UE,HONG_KONG:CE,HUNGARY:EA,ICELAND:aE,INDIA:PE,INDONESIA:GE,IRAN:HE,IRAQ:iE,IRELAND:IA,ISLE_OF_MAN:BE,ISRAEL:pE,ITALY:sA,JAMAICA:YE,JAPAN:dE,JERSEY:KE,JORDAN:lE,KAZAKHSTAN:hE,KENYA:uE,KIRIBATI:VE,KOREA:mE,KOSOVO:FE,KUWAIT:yE,KYRGYZSTAN:ZE,LAO_PEOPLE_DEMOCRATIC_REPUBLIC:WE,LATVIA:nA,LEBANON:bE,LESOTHO:gE,LIBERIA:fE,LIBYA:JE,LIECHTENSTEIN:vE,LITHUANIA:oA,LUXEMBOURG:cA,MACAO:XE,MADAGASCAR:kE,MALAWI:xE,MALAYSIA:jE,MALDIVES:QE,MALI:wE,MALTA:_A,MARSHALL_ISLANDS:$E,MARTINIQUE:qE,MAURITANIA:zE,MAURITIUS:AI,MAYOTTE:NI,MEXICO:tI,MICRONESIA:EI,MOLDOVA:II,MONACO:sI,MONGOLIA:nI,MONTENEGRO:oI,MONTSERRAT:cI,MOROCCO:_I,MOZAMBIQUE:eI,MYANMAR:RI,NAMIBIA:SI,NAURU:MI,NEPAL:OI,NETHERLANDS:eA,NEW_CALEDONIA:LI,NEW_ZEALAND:TI,NICARAGUA:DI,NIGER:rI,NIGERIA:UI,NIUE:CI,NORFOLK_ISLAND:aI,NORTHERN_MARIANA_ISLANDS:PI,NORTH_MACEDONIA:GI,NORWAY:HI,OMAN:iI,PAKISTAN:BI,PALAU:pI,PALESTINE:YI,PANAMA:dI,PAPUA_NEW_GUINEA:KI,PARAGUAY:lI,PERU:hI,PHILIPPINES:uI,PITCAIRN:VI,POLAND:RA,PORTUGAL:SA,PUERTO_RICO:mI,QATAR:FI,REUNION:yI,ROMANIA:MA,RUSSIAN_FEDERATION:ZI,RWANDA:WI,SAINT_BARTHELEMY:bI,SAINT_HELENA:gI,SAINT_KITTS_AND_NEVIS:fI,SAINT_LUCIA:JI,SAINT_MARTIN:vI,SAINT_PIERRE_AND_MIQUELON:XI,SAINT_VINCENT_AND_THE_GRENADINES:kI,SAMOA:xI,SAN_MARINO:jI,SAO_TOME_AND_PRINCIPE:QI,SAUDI_ARABIA:wI,SENEGAL:$I,SERBIA:qI,SEYCHELLES:zI,SIERRA_LEONE:As,SINGAPORE:Ns,SINT_MAARTEN:ts,SLOVAKIA:OA,SLOVENIA:LA,SOLOMON_ISLANDS:Es,SOMALIA:Is,SOUTH_AFRICA:ss,SOUTH_GEORGIA_AND_THE_SOUTH_SANDWICH_ISLANDS:ns,SOUTH_SUDAN:os,SPAIN:TA,SRI_LANKA:cs,SUDAN:_s,SURINAME:es,SVALBARD_AND_JAN_MAYEN:Rs,SWEDEN:DA,SWITZERLAND:Ss,SYRIAN_ARAB_REPUBLIC:Ms,TAIWAN:Os,TAJIKISTAN:Ls,TANZANIA:Ts,THAILAND:Ds,TIMOR_LESTE:rs,TOGO:Us,TOKELAU:Cs,TONGA:as,TRINIDAD_AND_TOBAGO:Ps,TUNISIA:Gs,TURKEY:Hs,TURKMENISTAN:is,TURKS_AND_CAICOS_ISLANDS:Bs,TUVALU:ps,UGANDA:Ys,UKRAINE:ds,UNITED_ARAB_EMIRATES:Ks,UNITED_KINGDOM:ls,UNITED_STATES_MINOR_OUTLYING_ISLANDS:hs,UNITED_STATES_OF_AMERICA:us,URUGUAY:Vs,UZBEKISTAN:ms,VANUATU:Fs,VENEZUELA:ys,VIETNAM:Zs,WALLIS_AND_FUTUNA:Ws,WESTERN_SAHARA:bs,YEMEN:gs,ZAMBIA:fs,ZIMBABWE:Js,EU:vs});const rA=1,UA="morning",CA=2,aA="standard",PA=3,GA="evening",HA=4,iA="pickup",BA={ID:rA,NAME:UA},pA={ID:CA,NAME:aA},YA={ID:PA,NAME:GA},dA={ID:HA,NAME:iA},ks=[BA,pA,YA,dA];var xs=Object.freeze({__proto__:null,MORNING_ID:rA,MORNING_NAME:UA,STANDARD_ID:CA,STANDARD_NAME:aA,EVENING_ID:PA,EVENING_NAME:GA,PICKUP_ID:HA,PICKUP_NAME:iA,MORNING:BA,STANDARD:pA,EVENING:YA,PICKUP:dA,ALL:ks});const KA=1,lA="package",hA=2,uA="mailbox",VA=3,mA="letter",FA=4,yA="digital_stamp",ZA={ID:KA,NAME:lA},WA={ID:hA,NAME:uA},bA={ID:VA,NAME:mA},gA={ID:FA,NAME:yA},js=[ZA,WA,bA,gA];var Qs=Object.freeze({__proto__:null,PACKAGE_ID:KA,PACKAGE_NAME:lA,MAILBOX_ID:hA,MAILBOX_NAME:uA,LETTER_ID:VA,LETTER_NAME:mA,DIGITAL_STAMP_ID:FA,DIGITAL_STAMP_NAME:yA,PACKAGE:ZA,MAILBOX:WA,LETTER:bA,DIGITAL_STAMP:gA,ALL:js});const fA=1,JA="myparcel",vA="MyParcel",XA=2,kA="belgie",xA="SendMyParcel",jA=3,QA="flespakket",wA="Flespakket",$A={ID:fA,NAME:JA,HUMAN:vA},qA={ID:XA,NAME:kA,HUMAN:xA},zA={ID:jA,NAME:QA,HUMAN:wA},ws=[$A,qA,zA];var $s=Object.freeze({__proto__:null,MYPARCEL_ID:fA,MYPARCEL_NAME:JA,MYPARCEL_HUMAN:vA,SENDMYPARCEL_ID:XA,SENDMYPARCEL_NAME:kA,SENDMYPARCEL_HUMAN:xA,FLESPAKKET_ID:jA,FLESPAKKET_NAME:QA,FLESPAKKET_HUMAN:wA,MYPARCEL:$A,SENDMYPARCEL:qA,FLESPAKKET:zA,ALL:ws});const AN="Age check",NN="age_check",tN="Cooled delivery",EN="cooled_delivery",IN="Insurance",sN="insurance",nN="Large format",oN="large_format",cN="Only recipient",_N="only_recipient",eN="Printerless return",RN="printerless_return",SN="Return",MN="return",ON="Same day delivery",LN="same_day_delivery",TN="Signature",DN="signature",rN={NAME:NN,HUMAN:AN},UN={NAME:EN,HUMAN:tN},CN={NAME:sN,HUMAN:IN},aN={NAME:oN,HUMAN:nN},PN={NAME:_N,HUMAN:cN},GN={NAME:RN,HUMAN:eN},HN={NAME:MN,HUMAN:SN},iN={NAME:LN,HUMAN:ON},BN={NAME:DN,HUMAN:TN},qs=[rN,UN,CN,aN,PN,GN,HN,iN,BN];var zs=Object.freeze({__proto__:null,AGE_CHECK_HUMAN:AN,AGE_CHECK_NAME:NN,COOLED_DELIVERY_HUMAN:tN,COOLED_DELIVERY_NAME:EN,INSURANCE_HUMAN:IN,INSURANCE_NAME:sN,LARGE_FORMAT_HUMAN:nN,LARGE_FORMAT_NAME:oN,ONLY_RECIPIENT_HUMAN:cN,ONLY_RECIPIENT_NAME:_N,PRINTERLESS_RETURN_HUMAN:eN,PRINTERLESS_RETURN_NAME:RN,RETURN_HUMAN:SN,RETURN_NAME:MN,SAME_DAY_DELIVERY_HUMAN:ON,SAME_DAY_DELIVERY_NAME:LN,SIGNATURE_HUMAN:TN,SIGNATURE_NAME:DN,AGE_CHECK:rN,COOLED_DELIVERY:UN,INSURANCE:CN,LARGE_FORMAT:aN,ONLY_RECIPIENT:PN,PRINTERLESS_RETURN:GN,RETURN:HN,SAME_DAY_DELIVERY:iN,SIGNATURE:BN,ALL:qs});class An extends c{name="getShipment";path="shipments/:id";property="shipments"}class Nn extends c{name="getShipments";path="shipments";property="shipments"}class tn extends c{method="POST";name="postShipments";path="shipments";property="shipments";responseProperty="ids"}class En extends n{name="getCarrier";path="carriers/:carrier";property="carriers"}class In extends n{name="getCarriers";path="carriers";property="carriers"}class sn extends n{name="getDeliveryOptions";path="delivery_options";property="deliveries";getHeaders(){return{...super.getHeaders(),Accept:"application/json;version=2.0"}}}class nn extends n{name="getPickupLocations";path="pickup_locations";property="pickup_locations"}exports.AbstractClient=O,exports.AbstractEndpoint=R,exports.AbstractPrivateEndpoint=c,exports.AbstractPublicEndpoint=n,exports.ApiException=_,exports.BASE_URL=M,exports.CARRIERS=yN,exports.COUNTRIES=Xs,exports.DELIVERY_TYPES=xs,exports.FetchClient=lN,exports.GetCarrier=En,exports.GetCarriers=In,exports.GetDeliveryOptions=sn,exports.GetPickupLocations=nn,exports.GetShipment=An,exports.GetShipments=Nn,exports.PACKAGE_TYPES=Qs,exports.PLATFORMS=$s,exports.PostShipments=tn,exports.SHIPMENT_OPTIONS=zs,exports.UserException=s,exports.createMyParcelSdk=S,exports.createPrivateSdk=hN,exports.createPublicSdk=uN; | ||
//# sourceMappingURL=index.min.js.map |
{ | ||
"name": "@myparcel/sdk", | ||
"version": "2.4.0", | ||
"version": "2.5.0", | ||
"description": "JavaScript SDK to connect to the MyParcel API via Node.js or browser", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
196
README.md
# @myparcel/sdk | ||
[](https://www.npmjs.com/package/@myparcel/sdk/) | ||
[](https://codecov.io/gh/myparcelnl/js-sdk) | ||
[](https://www.npmjs.com/package/@myparcel/sdk/) | ||
[](https://github.com/myparcelnl/js-sdk/releases) | ||
Official JavaScript SDK to connect to the MyParcel API via Node.js or browser. | ||
## Installation | ||
## Documentation | ||
```shell | ||
# Using Yarn | ||
yarn add @myparcel/sdk | ||
To the [documentation](https://developer.myparcel.nl/documentation/51.javascript-sdk.html). | ||
# Or NPM | ||
npm i @myparcel/sdk | ||
``` | ||
## Endpoints | ||
### Public | ||
Public endpoints do not require authorization and are safe to use in a browser. | ||
- Delivery options | ||
- [GetDeliveryOptions](./src/endpoints/public/delivery-options/GetDeliveryOptions.ts) | ||
- Pickup locations | ||
- [GetPickupLocations](./src/endpoints/public/pickup-locations/GetPickupLocations.ts) | ||
- Carriers | ||
- [GetCarriers](./src/endpoints/public/carriers/GetCarriers.ts) | ||
- [GetCarrier](./src/endpoints/public/carriers/GetCarrier.ts) | ||
### Private | ||
Private endpoints require an Authorization header. This should be a base64 | ||
encoded MyParcel API key. You can create one in the shop settings in | ||
our [backoffice]. See [Authorization] in the API documentation for more | ||
information. | ||
- Shipments | ||
- [GetShipment](./src/endpoints/private/shipments/GetShipment.ts) | ||
- [GetShipments](./src/endpoints/private/shipments/GetShipments.ts) | ||
- [PostShipments](./src/endpoints/private/shipments/PostShipments.ts) | ||
## Usage examples | ||
### Basic usage | ||
The client is Promise-based, so you can use `async/await`, or `Promise.then`. | ||
First, instantiate an SDK and pass the endpoints you want to use. | ||
```js | ||
import { createPrivateSdk, PostShipments } from '@myparcel/sdk'; | ||
const clientConfig = { | ||
headers: { | ||
Authorization: 'bearer ' + MY_BASE_64_ENCODED_API_KEY | ||
} | ||
}; | ||
const sdk = createPrivateSdk(new FetchClient(clientConfig), [ | ||
new PostShipments(), | ||
]); | ||
``` | ||
Then call the endpoint. There are constants available in our SDK for data like | ||
carriers, package types, delivery types and more. | ||
See [constants](#using-constants) | ||
#### POST Shipments example | ||
```js | ||
const result = await sdk.postShipments({ | ||
body: [ | ||
{ | ||
carrier: 1, | ||
options: { | ||
package_type: 'package', | ||
}, | ||
recipient: { | ||
cc: 'NL', | ||
city: 'Hoofddorp', | ||
person: 'Ms. Parcel', | ||
street: 'Antareslaan 31', | ||
}, | ||
}, | ||
] | ||
}); | ||
console.log(result); // [ 123456 ] (The ID of the shipment that was just created) | ||
``` | ||
#### GET Shipment example | ||
To get a shipment, you need to pass the shipment ID as a path parameter: | ||
```js | ||
import { createPrivateSdk, GetShipment } from '@myparcel/sdk'; | ||
const clientConfig = { | ||
headers: { | ||
Authorization: 'bearer ' + MY_BASE_64_ENCODED_API_KEY | ||
} | ||
}; | ||
const sdk = createPrivateSdk(new FetchClient(clientConfig), [ | ||
new GetShipment(), | ||
]); | ||
const result = await sdk.getShipment({ path: { id: 123456 } }); | ||
console.log(result); // [{ ... }] (Array with singular shipment object) | ||
``` | ||
### Using constants | ||
Our SDK exposes some constants to make working with our API easier. | ||
- Carriers | ||
```js | ||
import { CARRIERS } from '@myparcelnl/sdk'; | ||
CARRIERS.POSTNL_NAME // "postnl" | ||
``` | ||
- **Package types:** Contains all package types' names and IDs. | ||
```js | ||
import { PACKAGE_TYPES } from '@myparcelnl/sdk'; | ||
PACKAGE_TYPES.DIGITAL_STAMP_NAME // "digital_stamp" | ||
PACKAGE_TYPES.PACKAGE_ID // 1 | ||
PACKAGE_TYPES.LETTER // { ID: 3, NAME: "letter" } | ||
// etc | ||
``` | ||
- **Delivery types** | ||
```js | ||
import { DELIVERY_TYPES } from '@myparcelnl/sdk'; | ||
DELIVERY_TYPES.STANDARD_NAME // "standard" | ||
DELIVERY_TYPES.PICKUP_ID // 4 | ||
DELIVERY_TYPES.MORNING // { ID: 1, NAME: "morning" } | ||
// etc | ||
``` | ||
- **Countries:** Contains constants for all countries, by name. | ||
```js | ||
import { COUNTRIES } from '@myparcelnl/sdk'; | ||
COUNTRIES.NETHERLANDS // "NL" | ||
COUNTRIES.GERMANY // "DE" | ||
// etc | ||
``` | ||
### Creating a new endpoint | ||
To create a new endpoint, you can extend either `AbstractPrivateEndpoint` | ||
or `AbstractPublicEndpoint` and fill in the derived class as needed. | ||
Feel free to add open a pull request to add it to our repository! | ||
See [CONTRIBUTING.md]. | ||
### Creating a new client | ||
In this example we're creating an Axios client. | ||
```js | ||
class AxiosClient extends AbstractClient { | ||
async request(endpoint, options) { | ||
try { | ||
const response = await axios.request({ | ||
method: endpoint.method, | ||
url: this.createUrl(endpoint, options), | ||
headers: options.headers, | ||
}); | ||
return response.data; | ||
} catch (e) { | ||
return e.response.data; | ||
} | ||
} | ||
} | ||
``` | ||
Now use the new client with an SDK instance: | ||
```js | ||
const sdk = createPublicSdk(new AxiosClient(), [new GetCarriers()]); | ||
const carriers = await sdk.getCarriers(); | ||
console.log(carriers); // [ { "id": 1, "name": "postnl", (etc...) | ||
``` | ||
## Contributing | ||
See [CONTRIBUTING.md]. | ||
[backoffice]: https://backoffice.myparcel.nl/settings | ||
[Authorization]: https://myparcelnl.github.io/api/#5 | ||
[CONTRIBUTING.md]: ./CONTRIBUTING.md | ||
See [CONTRIBUTING.md](./CONTRIBUTING.md). |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
4102
261307
15