@wordpress/api-fetch
Advanced tools
@@ -49,3 +49,3 @@ /** | ||
| if ('GET' === method && cache[path]) { | ||
| const cacheData = cache[path]; // Unsetting the cache key ensures that the data is only preloaded a single time | ||
| const cacheData = cache[path]; // Unsetting the cache key ensures that the data is only used a single time | ||
@@ -59,3 +59,6 @@ delete cache[path]; | ||
| } else if ('OPTIONS' === method && cache[method] && cache[method][path]) { | ||
| return Promise.resolve(parse ? cache[method][path].body : cache[method][path]); | ||
| const cacheData = cache[method][path]; // Unsetting the cache key ensures that the data is only used a single time | ||
| delete cache[method][path]; | ||
| return Promise.resolve(parse ? cacheData.body : cacheData); | ||
| } | ||
@@ -62,0 +65,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["@wordpress/api-fetch/src/middlewares/preloading.js"],"names":["getStablePath","path","splitted","split","query","base","map","entry","sort","a","b","localeCompare","pair","join","createPreloadingMiddleware","preloadedData","cache","Object","keys","reduce","result","options","next","parse","method","cacheData","Promise","resolve","body","window","Response","JSON","stringify","status","statusText","headers"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,aAAT,CAAwBC,IAAxB,EAA+B;AACrC,QAAMC,QAAQ,GAAGD,IAAI,CAACE,KAAL,CAAY,GAAZ,CAAjB;AACA,QAAMC,KAAK,GAAGF,QAAQ,CAAE,CAAF,CAAtB;AACA,QAAMG,IAAI,GAAGH,QAAQ,CAAE,CAAF,CAArB;;AACA,MAAK,CAAEE,KAAP,EAAe;AACd,WAAOC,IAAP;AACA,GANoC,CAQrC;;;AACA,SACCA,IAAI,GACJ,GADA,GAEAD,KAAK,CACJ;AADI,GAEHD,KAFF,CAES,GAFT,EAGC;AAHD,GAIEG,GAJF,CAISC,KAAF,IAAaA,KAAK,CAACJ,KAAN,CAAa,GAAb,CAJpB,EAKC;AALD,GAMEK,IANF,CAMQ,CAAEC,CAAF,EAAKC,CAAL,KAAYD,CAAC,CAAE,CAAF,CAAD,CAAOE,aAAP,CAAsBD,CAAC,CAAE,CAAF,CAAvB,CANpB,EAOC;AAPD,GAQEJ,GARF,CAQSM,IAAF,IAAYA,IAAI,CAACC,IAAL,CAAW,GAAX,CARnB,EASC;AATD,GAUEA,IAVF,CAUQ,GAVR,CAHD;AAeA;AAED;AACA;AACA;AACA;;AACA,SAASC,0BAAT,CAAqCC,aAArC,EAAqD;AACpD,QAAMC,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAaH,aAAb,EAA6BI,MAA7B,CAAqC,CAAEC,MAAF,EAAUnB,IAAV,KAAoB;AACtEmB,IAAAA,MAAM,CAAEpB,aAAa,CAAEC,IAAF,CAAf,CAAN,GAAkCc,aAAa,CAAEd,IAAF,CAA/C;AACA,WAAOmB,MAAP;AACA,GAHa;AAGX;AAAqC,IAH1B,CAAd;AAKA,SAAO,CAAEC,OAAF,EAAWC,IAAX,KAAqB;AAC3B,UAAM;AAAEC,MAAAA,KAAK,GAAG;AAAV,QAAmBF,OAAzB;;AACA,QAAK,OAAOA,OAAO,CAACpB,IAAf,KAAwB,QAA7B,EAAwC;AACvC,YAAMuB,MAAM,GAAGH,OAAO,CAACG,MAAR,IAAkB,KAAjC;AACA,YAAMvB,IAAI,GAAGD,aAAa,CAAEqB,OAAO,CAACpB,IAAV,CAA1B;;AAEA,UAAK,UAAUuB,MAAV,IAAoBR,KAAK,CAAEf,IAAF,CAA9B,EAAyC;AACxC,cAAMwB,SAAS,GAAGT,KAAK,CAAEf,IAAF,CAAvB,CADwC,CAGxC;;AACA,eAAOe,KAAK,CAAEf,IAAF,CAAZ;AAEA,eAAOyB,OAAO,CAACC,OAAR,CACNJ,KAAK,GACFE,SAAS,CAACG,IADR,GAEF,IAAIC,MAAM,CAACC,QAAX,CACAC,IAAI,CAACC,SAAL,CAAgBP,SAAS,CAACG,IAA1B,CADA,EAEA;AACCK,UAAAA,MAAM,EAAE,GADT;AAECC,UAAAA,UAAU,EAAE,IAFb;AAGCC,UAAAA,OAAO,EAAEV,SAAS,CAACU;AAHpB,SAFA,CAHG,CAAP;AAYA,OAlBD,MAkBO,IACN,cAAcX,MAAd,IACAR,KAAK,CAAEQ,MAAF,CADL,IAEAR,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAHM,EAIL;AACD,eAAOyB,OAAO,CAACC,OAAR,CACNJ,KAAK,GACFP,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,EAAwB2B,IADtB,GAEFZ,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAHG,CAAP;AAKA;AACD;;AAED,WAAOqB,IAAI,CAAED,OAAF,CAAX;AACA,GAtCD;AAuCA;;AAED,eAAeP,0BAAf","sourcesContent":["/**\n * Given a path, returns a normalized path where equal query parameter values\n * will be treated as identical, regardless of order they appear in the original\n * text.\n *\n * @param {string} path Original path.\n *\n * @return {string} Normalized path.\n */\nexport function getStablePath( path ) {\n\tconst splitted = path.split( '?' );\n\tconst query = splitted[ 1 ];\n\tconst base = splitted[ 0 ];\n\tif ( ! query ) {\n\t\treturn base;\n\t}\n\n\t// 'b=1&c=2&a=5'\n\treturn (\n\t\tbase +\n\t\t'?' +\n\t\tquery\n\t\t\t// [ 'b=1', 'c=2', 'a=5' ]\n\t\t\t.split( '&' )\n\t\t\t// [ [ 'b, '1' ], [ 'c', '2' ], [ 'a', '5' ] ]\n\t\t\t.map( ( entry ) => entry.split( '=' ) )\n\t\t\t// [ [ 'a', '5' ], [ 'b, '1' ], [ 'c', '2' ] ]\n\t\t\t.sort( ( a, b ) => a[ 0 ].localeCompare( b[ 0 ] ) )\n\t\t\t// [ 'a=5', 'b=1', 'c=2' ]\n\t\t\t.map( ( pair ) => pair.join( '=' ) )\n\t\t\t// 'a=5&b=1&c=2'\n\t\t\t.join( '&' )\n\t);\n}\n\n/**\n * @param {Record<string, any>} preloadedData\n * @return {import('../types').APIFetchMiddleware} Preloading middleware.\n */\nfunction createPreloadingMiddleware( preloadedData ) {\n\tconst cache = Object.keys( preloadedData ).reduce( ( result, path ) => {\n\t\tresult[ getStablePath( path ) ] = preloadedData[ path ];\n\t\treturn result;\n\t}, /** @type {Record<string, any>} */ ( {} ) );\n\n\treturn ( options, next ) => {\n\t\tconst { parse = true } = options;\n\t\tif ( typeof options.path === 'string' ) {\n\t\t\tconst method = options.method || 'GET';\n\t\t\tconst path = getStablePath( options.path );\n\n\t\t\tif ( 'GET' === method && cache[ path ] ) {\n\t\t\t\tconst cacheData = cache[ path ];\n\n\t\t\t\t// Unsetting the cache key ensures that the data is only preloaded a single time\n\t\t\t\tdelete cache[ path ];\n\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tparse\n\t\t\t\t\t\t? cacheData.body\n\t\t\t\t\t\t: new window.Response(\n\t\t\t\t\t\t\t\tJSON.stringify( cacheData.body ),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\t\t\t\tstatusText: 'OK',\n\t\t\t\t\t\t\t\t\theaders: cacheData.headers,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\t'OPTIONS' === method &&\n\t\t\t\tcache[ method ] &&\n\t\t\t\tcache[ method ][ path ]\n\t\t\t) {\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tparse\n\t\t\t\t\t\t? cache[ method ][ path ].body\n\t\t\t\t\t\t: cache[ method ][ path ]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn next( options );\n\t};\n}\n\nexport default createPreloadingMiddleware;\n"]} | ||
| {"version":3,"sources":["@wordpress/api-fetch/src/middlewares/preloading.js"],"names":["getStablePath","path","splitted","split","query","base","map","entry","sort","a","b","localeCompare","pair","join","createPreloadingMiddleware","preloadedData","cache","Object","keys","reduce","result","options","next","parse","method","cacheData","Promise","resolve","body","window","Response","JSON","stringify","status","statusText","headers"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,aAAT,CAAwBC,IAAxB,EAA+B;AACrC,QAAMC,QAAQ,GAAGD,IAAI,CAACE,KAAL,CAAY,GAAZ,CAAjB;AACA,QAAMC,KAAK,GAAGF,QAAQ,CAAE,CAAF,CAAtB;AACA,QAAMG,IAAI,GAAGH,QAAQ,CAAE,CAAF,CAArB;;AACA,MAAK,CAAEE,KAAP,EAAe;AACd,WAAOC,IAAP;AACA,GANoC,CAQrC;;;AACA,SACCA,IAAI,GACJ,GADA,GAEAD,KAAK,CACJ;AADI,GAEHD,KAFF,CAES,GAFT,EAGC;AAHD,GAIEG,GAJF,CAISC,KAAF,IAAaA,KAAK,CAACJ,KAAN,CAAa,GAAb,CAJpB,EAKC;AALD,GAMEK,IANF,CAMQ,CAAEC,CAAF,EAAKC,CAAL,KAAYD,CAAC,CAAE,CAAF,CAAD,CAAOE,aAAP,CAAsBD,CAAC,CAAE,CAAF,CAAvB,CANpB,EAOC;AAPD,GAQEJ,GARF,CAQSM,IAAF,IAAYA,IAAI,CAACC,IAAL,CAAW,GAAX,CARnB,EASC;AATD,GAUEA,IAVF,CAUQ,GAVR,CAHD;AAeA;AAED;AACA;AACA;AACA;;AACA,SAASC,0BAAT,CAAqCC,aAArC,EAAqD;AACpD,QAAMC,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAaH,aAAb,EAA6BI,MAA7B,CAAqC,CAAEC,MAAF,EAAUnB,IAAV,KAAoB;AACtEmB,IAAAA,MAAM,CAAEpB,aAAa,CAAEC,IAAF,CAAf,CAAN,GAAkCc,aAAa,CAAEd,IAAF,CAA/C;AACA,WAAOmB,MAAP;AACA,GAHa;AAGX;AAAqC,IAH1B,CAAd;AAKA,SAAO,CAAEC,OAAF,EAAWC,IAAX,KAAqB;AAC3B,UAAM;AAAEC,MAAAA,KAAK,GAAG;AAAV,QAAmBF,OAAzB;;AACA,QAAK,OAAOA,OAAO,CAACpB,IAAf,KAAwB,QAA7B,EAAwC;AACvC,YAAMuB,MAAM,GAAGH,OAAO,CAACG,MAAR,IAAkB,KAAjC;AACA,YAAMvB,IAAI,GAAGD,aAAa,CAAEqB,OAAO,CAACpB,IAAV,CAA1B;;AAEA,UAAK,UAAUuB,MAAV,IAAoBR,KAAK,CAAEf,IAAF,CAA9B,EAAyC;AACxC,cAAMwB,SAAS,GAAGT,KAAK,CAAEf,IAAF,CAAvB,CADwC,CAGxC;;AACA,eAAOe,KAAK,CAAEf,IAAF,CAAZ;AAEA,eAAOyB,OAAO,CAACC,OAAR,CACNJ,KAAK,GACFE,SAAS,CAACG,IADR,GAEF,IAAIC,MAAM,CAACC,QAAX,CACAC,IAAI,CAACC,SAAL,CAAgBP,SAAS,CAACG,IAA1B,CADA,EAEA;AACCK,UAAAA,MAAM,EAAE,GADT;AAECC,UAAAA,UAAU,EAAE,IAFb;AAGCC,UAAAA,OAAO,EAAEV,SAAS,CAACU;AAHpB,SAFA,CAHG,CAAP;AAYA,OAlBD,MAkBO,IACN,cAAcX,MAAd,IACAR,KAAK,CAAEQ,MAAF,CADL,IAEAR,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAHM,EAIL;AACD,cAAMwB,SAAS,GAAGT,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAAlB,CADC,CAGD;;AACA,eAAOe,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAAP;AAEA,eAAOyB,OAAO,CAACC,OAAR,CAAiBJ,KAAK,GAAGE,SAAS,CAACG,IAAb,GAAoBH,SAA1C,CAAP;AACA;AACD;;AAED,WAAOH,IAAI,CAAED,OAAF,CAAX;AACA,GAvCD;AAwCA;;AAED,eAAeP,0BAAf","sourcesContent":["/**\n * Given a path, returns a normalized path where equal query parameter values\n * will be treated as identical, regardless of order they appear in the original\n * text.\n *\n * @param {string} path Original path.\n *\n * @return {string} Normalized path.\n */\nexport function getStablePath( path ) {\n\tconst splitted = path.split( '?' );\n\tconst query = splitted[ 1 ];\n\tconst base = splitted[ 0 ];\n\tif ( ! query ) {\n\t\treturn base;\n\t}\n\n\t// 'b=1&c=2&a=5'\n\treturn (\n\t\tbase +\n\t\t'?' +\n\t\tquery\n\t\t\t// [ 'b=1', 'c=2', 'a=5' ]\n\t\t\t.split( '&' )\n\t\t\t// [ [ 'b, '1' ], [ 'c', '2' ], [ 'a', '5' ] ]\n\t\t\t.map( ( entry ) => entry.split( '=' ) )\n\t\t\t// [ [ 'a', '5' ], [ 'b, '1' ], [ 'c', '2' ] ]\n\t\t\t.sort( ( a, b ) => a[ 0 ].localeCompare( b[ 0 ] ) )\n\t\t\t// [ 'a=5', 'b=1', 'c=2' ]\n\t\t\t.map( ( pair ) => pair.join( '=' ) )\n\t\t\t// 'a=5&b=1&c=2'\n\t\t\t.join( '&' )\n\t);\n}\n\n/**\n * @param {Record<string, any>} preloadedData\n * @return {import('../types').APIFetchMiddleware} Preloading middleware.\n */\nfunction createPreloadingMiddleware( preloadedData ) {\n\tconst cache = Object.keys( preloadedData ).reduce( ( result, path ) => {\n\t\tresult[ getStablePath( path ) ] = preloadedData[ path ];\n\t\treturn result;\n\t}, /** @type {Record<string, any>} */ ( {} ) );\n\n\treturn ( options, next ) => {\n\t\tconst { parse = true } = options;\n\t\tif ( typeof options.path === 'string' ) {\n\t\t\tconst method = options.method || 'GET';\n\t\t\tconst path = getStablePath( options.path );\n\n\t\t\tif ( 'GET' === method && cache[ path ] ) {\n\t\t\t\tconst cacheData = cache[ path ];\n\n\t\t\t\t// Unsetting the cache key ensures that the data is only used a single time\n\t\t\t\tdelete cache[ path ];\n\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tparse\n\t\t\t\t\t\t? cacheData.body\n\t\t\t\t\t\t: new window.Response(\n\t\t\t\t\t\t\t\tJSON.stringify( cacheData.body ),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\t\t\t\tstatusText: 'OK',\n\t\t\t\t\t\t\t\t\theaders: cacheData.headers,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\t'OPTIONS' === method &&\n\t\t\t\tcache[ method ] &&\n\t\t\t\tcache[ method ][ path ]\n\t\t\t) {\n\t\t\t\tconst cacheData = cache[ method ][ path ];\n\n\t\t\t\t// Unsetting the cache key ensures that the data is only used a single time\n\t\t\t\tdelete cache[ method ][ path ];\n\n\t\t\t\treturn Promise.resolve( parse ? cacheData.body : cacheData );\n\t\t\t}\n\t\t}\n\n\t\treturn next( options );\n\t};\n}\n\nexport default createPreloadingMiddleware;\n"]} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"preloading.d.ts","sourceRoot":"","sources":["../../src/middlewares/preloading.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,oCAJW,MAAM,GAEL,MAAM,CA0BjB;;AAED;;;GAGG;AACH,2DAHW,OAAO,MAAM,EAAE,GAAG,CAAC,GAClB,OAAO,UAAU,EAAE,kBAAkB,CA+ChD"} | ||
| {"version":3,"file":"preloading.d.ts","sourceRoot":"","sources":["../../src/middlewares/preloading.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,oCAJW,MAAM,GAEL,MAAM,CA0BjB;;AAED;;;GAGG;AACH,2DAHW,OAAO,MAAM,EAAE,GAAG,CAAC,GAClB,OAAO,UAAU,EAAE,kBAAkB,CAgDhD"} |
@@ -58,3 +58,3 @@ "use strict"; | ||
| if ('GET' === method && cache[path]) { | ||
| const cacheData = cache[path]; // Unsetting the cache key ensures that the data is only preloaded a single time | ||
| const cacheData = cache[path]; // Unsetting the cache key ensures that the data is only used a single time | ||
@@ -68,3 +68,6 @@ delete cache[path]; | ||
| } else if ('OPTIONS' === method && cache[method] && cache[method][path]) { | ||
| return Promise.resolve(parse ? cache[method][path].body : cache[method][path]); | ||
| const cacheData = cache[method][path]; // Unsetting the cache key ensures that the data is only used a single time | ||
| delete cache[method][path]; | ||
| return Promise.resolve(parse ? cacheData.body : cacheData); | ||
| } | ||
@@ -71,0 +74,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["@wordpress/api-fetch/src/middlewares/preloading.js"],"names":["getStablePath","path","splitted","split","query","base","map","entry","sort","a","b","localeCompare","pair","join","createPreloadingMiddleware","preloadedData","cache","Object","keys","reduce","result","options","next","parse","method","cacheData","Promise","resolve","body","window","Response","JSON","stringify","status","statusText","headers"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,aAAT,CAAwBC,IAAxB,EAA+B;AACrC,QAAMC,QAAQ,GAAGD,IAAI,CAACE,KAAL,CAAY,GAAZ,CAAjB;AACA,QAAMC,KAAK,GAAGF,QAAQ,CAAE,CAAF,CAAtB;AACA,QAAMG,IAAI,GAAGH,QAAQ,CAAE,CAAF,CAArB;;AACA,MAAK,CAAEE,KAAP,EAAe;AACd,WAAOC,IAAP;AACA,GANoC,CAQrC;;;AACA,SACCA,IAAI,GACJ,GADA,GAEAD,KAAK,CACJ;AADI,GAEHD,KAFF,CAES,GAFT,EAGC;AAHD,GAIEG,GAJF,CAISC,KAAF,IAAaA,KAAK,CAACJ,KAAN,CAAa,GAAb,CAJpB,EAKC;AALD,GAMEK,IANF,CAMQ,CAAEC,CAAF,EAAKC,CAAL,KAAYD,CAAC,CAAE,CAAF,CAAD,CAAOE,aAAP,CAAsBD,CAAC,CAAE,CAAF,CAAvB,CANpB,EAOC;AAPD,GAQEJ,GARF,CAQSM,IAAF,IAAYA,IAAI,CAACC,IAAL,CAAW,GAAX,CARnB,EASC;AATD,GAUEA,IAVF,CAUQ,GAVR,CAHD;AAeA;AAED;AACA;AACA;AACA;;;AACA,SAASC,0BAAT,CAAqCC,aAArC,EAAqD;AACpD,QAAMC,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAaH,aAAb,EAA6BI,MAA7B,CAAqC,CAAEC,MAAF,EAAUnB,IAAV,KAAoB;AACtEmB,IAAAA,MAAM,CAAEpB,aAAa,CAAEC,IAAF,CAAf,CAAN,GAAkCc,aAAa,CAAEd,IAAF,CAA/C;AACA,WAAOmB,MAAP;AACA,GAHa;AAGX;AAAqC,IAH1B,CAAd;AAKA,SAAO,CAAEC,OAAF,EAAWC,IAAX,KAAqB;AAC3B,UAAM;AAAEC,MAAAA,KAAK,GAAG;AAAV,QAAmBF,OAAzB;;AACA,QAAK,OAAOA,OAAO,CAACpB,IAAf,KAAwB,QAA7B,EAAwC;AACvC,YAAMuB,MAAM,GAAGH,OAAO,CAACG,MAAR,IAAkB,KAAjC;AACA,YAAMvB,IAAI,GAAGD,aAAa,CAAEqB,OAAO,CAACpB,IAAV,CAA1B;;AAEA,UAAK,UAAUuB,MAAV,IAAoBR,KAAK,CAAEf,IAAF,CAA9B,EAAyC;AACxC,cAAMwB,SAAS,GAAGT,KAAK,CAAEf,IAAF,CAAvB,CADwC,CAGxC;;AACA,eAAOe,KAAK,CAAEf,IAAF,CAAZ;AAEA,eAAOyB,OAAO,CAACC,OAAR,CACNJ,KAAK,GACFE,SAAS,CAACG,IADR,GAEF,IAAIC,MAAM,CAACC,QAAX,CACAC,IAAI,CAACC,SAAL,CAAgBP,SAAS,CAACG,IAA1B,CADA,EAEA;AACCK,UAAAA,MAAM,EAAE,GADT;AAECC,UAAAA,UAAU,EAAE,IAFb;AAGCC,UAAAA,OAAO,EAAEV,SAAS,CAACU;AAHpB,SAFA,CAHG,CAAP;AAYA,OAlBD,MAkBO,IACN,cAAcX,MAAd,IACAR,KAAK,CAAEQ,MAAF,CADL,IAEAR,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAHM,EAIL;AACD,eAAOyB,OAAO,CAACC,OAAR,CACNJ,KAAK,GACFP,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,EAAwB2B,IADtB,GAEFZ,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAHG,CAAP;AAKA;AACD;;AAED,WAAOqB,IAAI,CAAED,OAAF,CAAX;AACA,GAtCD;AAuCA;;eAEcP,0B","sourcesContent":["/**\n * Given a path, returns a normalized path where equal query parameter values\n * will be treated as identical, regardless of order they appear in the original\n * text.\n *\n * @param {string} path Original path.\n *\n * @return {string} Normalized path.\n */\nexport function getStablePath( path ) {\n\tconst splitted = path.split( '?' );\n\tconst query = splitted[ 1 ];\n\tconst base = splitted[ 0 ];\n\tif ( ! query ) {\n\t\treturn base;\n\t}\n\n\t// 'b=1&c=2&a=5'\n\treturn (\n\t\tbase +\n\t\t'?' +\n\t\tquery\n\t\t\t// [ 'b=1', 'c=2', 'a=5' ]\n\t\t\t.split( '&' )\n\t\t\t// [ [ 'b, '1' ], [ 'c', '2' ], [ 'a', '5' ] ]\n\t\t\t.map( ( entry ) => entry.split( '=' ) )\n\t\t\t// [ [ 'a', '5' ], [ 'b, '1' ], [ 'c', '2' ] ]\n\t\t\t.sort( ( a, b ) => a[ 0 ].localeCompare( b[ 0 ] ) )\n\t\t\t// [ 'a=5', 'b=1', 'c=2' ]\n\t\t\t.map( ( pair ) => pair.join( '=' ) )\n\t\t\t// 'a=5&b=1&c=2'\n\t\t\t.join( '&' )\n\t);\n}\n\n/**\n * @param {Record<string, any>} preloadedData\n * @return {import('../types').APIFetchMiddleware} Preloading middleware.\n */\nfunction createPreloadingMiddleware( preloadedData ) {\n\tconst cache = Object.keys( preloadedData ).reduce( ( result, path ) => {\n\t\tresult[ getStablePath( path ) ] = preloadedData[ path ];\n\t\treturn result;\n\t}, /** @type {Record<string, any>} */ ( {} ) );\n\n\treturn ( options, next ) => {\n\t\tconst { parse = true } = options;\n\t\tif ( typeof options.path === 'string' ) {\n\t\t\tconst method = options.method || 'GET';\n\t\t\tconst path = getStablePath( options.path );\n\n\t\t\tif ( 'GET' === method && cache[ path ] ) {\n\t\t\t\tconst cacheData = cache[ path ];\n\n\t\t\t\t// Unsetting the cache key ensures that the data is only preloaded a single time\n\t\t\t\tdelete cache[ path ];\n\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tparse\n\t\t\t\t\t\t? cacheData.body\n\t\t\t\t\t\t: new window.Response(\n\t\t\t\t\t\t\t\tJSON.stringify( cacheData.body ),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\t\t\t\tstatusText: 'OK',\n\t\t\t\t\t\t\t\t\theaders: cacheData.headers,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\t'OPTIONS' === method &&\n\t\t\t\tcache[ method ] &&\n\t\t\t\tcache[ method ][ path ]\n\t\t\t) {\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tparse\n\t\t\t\t\t\t? cache[ method ][ path ].body\n\t\t\t\t\t\t: cache[ method ][ path ]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn next( options );\n\t};\n}\n\nexport default createPreloadingMiddleware;\n"]} | ||
| {"version":3,"sources":["@wordpress/api-fetch/src/middlewares/preloading.js"],"names":["getStablePath","path","splitted","split","query","base","map","entry","sort","a","b","localeCompare","pair","join","createPreloadingMiddleware","preloadedData","cache","Object","keys","reduce","result","options","next","parse","method","cacheData","Promise","resolve","body","window","Response","JSON","stringify","status","statusText","headers"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,aAAT,CAAwBC,IAAxB,EAA+B;AACrC,QAAMC,QAAQ,GAAGD,IAAI,CAACE,KAAL,CAAY,GAAZ,CAAjB;AACA,QAAMC,KAAK,GAAGF,QAAQ,CAAE,CAAF,CAAtB;AACA,QAAMG,IAAI,GAAGH,QAAQ,CAAE,CAAF,CAArB;;AACA,MAAK,CAAEE,KAAP,EAAe;AACd,WAAOC,IAAP;AACA,GANoC,CAQrC;;;AACA,SACCA,IAAI,GACJ,GADA,GAEAD,KAAK,CACJ;AADI,GAEHD,KAFF,CAES,GAFT,EAGC;AAHD,GAIEG,GAJF,CAISC,KAAF,IAAaA,KAAK,CAACJ,KAAN,CAAa,GAAb,CAJpB,EAKC;AALD,GAMEK,IANF,CAMQ,CAAEC,CAAF,EAAKC,CAAL,KAAYD,CAAC,CAAE,CAAF,CAAD,CAAOE,aAAP,CAAsBD,CAAC,CAAE,CAAF,CAAvB,CANpB,EAOC;AAPD,GAQEJ,GARF,CAQSM,IAAF,IAAYA,IAAI,CAACC,IAAL,CAAW,GAAX,CARnB,EASC;AATD,GAUEA,IAVF,CAUQ,GAVR,CAHD;AAeA;AAED;AACA;AACA;AACA;;;AACA,SAASC,0BAAT,CAAqCC,aAArC,EAAqD;AACpD,QAAMC,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAaH,aAAb,EAA6BI,MAA7B,CAAqC,CAAEC,MAAF,EAAUnB,IAAV,KAAoB;AACtEmB,IAAAA,MAAM,CAAEpB,aAAa,CAAEC,IAAF,CAAf,CAAN,GAAkCc,aAAa,CAAEd,IAAF,CAA/C;AACA,WAAOmB,MAAP;AACA,GAHa;AAGX;AAAqC,IAH1B,CAAd;AAKA,SAAO,CAAEC,OAAF,EAAWC,IAAX,KAAqB;AAC3B,UAAM;AAAEC,MAAAA,KAAK,GAAG;AAAV,QAAmBF,OAAzB;;AACA,QAAK,OAAOA,OAAO,CAACpB,IAAf,KAAwB,QAA7B,EAAwC;AACvC,YAAMuB,MAAM,GAAGH,OAAO,CAACG,MAAR,IAAkB,KAAjC;AACA,YAAMvB,IAAI,GAAGD,aAAa,CAAEqB,OAAO,CAACpB,IAAV,CAA1B;;AAEA,UAAK,UAAUuB,MAAV,IAAoBR,KAAK,CAAEf,IAAF,CAA9B,EAAyC;AACxC,cAAMwB,SAAS,GAAGT,KAAK,CAAEf,IAAF,CAAvB,CADwC,CAGxC;;AACA,eAAOe,KAAK,CAAEf,IAAF,CAAZ;AAEA,eAAOyB,OAAO,CAACC,OAAR,CACNJ,KAAK,GACFE,SAAS,CAACG,IADR,GAEF,IAAIC,MAAM,CAACC,QAAX,CACAC,IAAI,CAACC,SAAL,CAAgBP,SAAS,CAACG,IAA1B,CADA,EAEA;AACCK,UAAAA,MAAM,EAAE,GADT;AAECC,UAAAA,UAAU,EAAE,IAFb;AAGCC,UAAAA,OAAO,EAAEV,SAAS,CAACU;AAHpB,SAFA,CAHG,CAAP;AAYA,OAlBD,MAkBO,IACN,cAAcX,MAAd,IACAR,KAAK,CAAEQ,MAAF,CADL,IAEAR,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAHM,EAIL;AACD,cAAMwB,SAAS,GAAGT,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAAlB,CADC,CAGD;;AACA,eAAOe,KAAK,CAAEQ,MAAF,CAAL,CAAiBvB,IAAjB,CAAP;AAEA,eAAOyB,OAAO,CAACC,OAAR,CAAiBJ,KAAK,GAAGE,SAAS,CAACG,IAAb,GAAoBH,SAA1C,CAAP;AACA;AACD;;AAED,WAAOH,IAAI,CAAED,OAAF,CAAX;AACA,GAvCD;AAwCA;;eAEcP,0B","sourcesContent":["/**\n * Given a path, returns a normalized path where equal query parameter values\n * will be treated as identical, regardless of order they appear in the original\n * text.\n *\n * @param {string} path Original path.\n *\n * @return {string} Normalized path.\n */\nexport function getStablePath( path ) {\n\tconst splitted = path.split( '?' );\n\tconst query = splitted[ 1 ];\n\tconst base = splitted[ 0 ];\n\tif ( ! query ) {\n\t\treturn base;\n\t}\n\n\t// 'b=1&c=2&a=5'\n\treturn (\n\t\tbase +\n\t\t'?' +\n\t\tquery\n\t\t\t// [ 'b=1', 'c=2', 'a=5' ]\n\t\t\t.split( '&' )\n\t\t\t// [ [ 'b, '1' ], [ 'c', '2' ], [ 'a', '5' ] ]\n\t\t\t.map( ( entry ) => entry.split( '=' ) )\n\t\t\t// [ [ 'a', '5' ], [ 'b, '1' ], [ 'c', '2' ] ]\n\t\t\t.sort( ( a, b ) => a[ 0 ].localeCompare( b[ 0 ] ) )\n\t\t\t// [ 'a=5', 'b=1', 'c=2' ]\n\t\t\t.map( ( pair ) => pair.join( '=' ) )\n\t\t\t// 'a=5&b=1&c=2'\n\t\t\t.join( '&' )\n\t);\n}\n\n/**\n * @param {Record<string, any>} preloadedData\n * @return {import('../types').APIFetchMiddleware} Preloading middleware.\n */\nfunction createPreloadingMiddleware( preloadedData ) {\n\tconst cache = Object.keys( preloadedData ).reduce( ( result, path ) => {\n\t\tresult[ getStablePath( path ) ] = preloadedData[ path ];\n\t\treturn result;\n\t}, /** @type {Record<string, any>} */ ( {} ) );\n\n\treturn ( options, next ) => {\n\t\tconst { parse = true } = options;\n\t\tif ( typeof options.path === 'string' ) {\n\t\t\tconst method = options.method || 'GET';\n\t\t\tconst path = getStablePath( options.path );\n\n\t\t\tif ( 'GET' === method && cache[ path ] ) {\n\t\t\t\tconst cacheData = cache[ path ];\n\n\t\t\t\t// Unsetting the cache key ensures that the data is only used a single time\n\t\t\t\tdelete cache[ path ];\n\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tparse\n\t\t\t\t\t\t? cacheData.body\n\t\t\t\t\t\t: new window.Response(\n\t\t\t\t\t\t\t\tJSON.stringify( cacheData.body ),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\t\t\t\tstatusText: 'OK',\n\t\t\t\t\t\t\t\t\theaders: cacheData.headers,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\t'OPTIONS' === method &&\n\t\t\t\tcache[ method ] &&\n\t\t\t\tcache[ method ][ path ]\n\t\t\t) {\n\t\t\t\tconst cacheData = cache[ method ][ path ];\n\n\t\t\t\t// Unsetting the cache key ensures that the data is only used a single time\n\t\t\t\tdelete cache[ method ][ path ];\n\n\t\t\t\treturn Promise.resolve( parse ? cacheData.body : cacheData );\n\t\t\t}\n\t\t}\n\n\t\treturn next( options );\n\t};\n}\n\nexport default createPreloadingMiddleware;\n"]} |
+2
-2
| { | ||
| "name": "@wordpress/api-fetch", | ||
| "version": "5.2.3", | ||
| "version": "5.2.4", | ||
| "description": "Utility to make WordPress REST API requests.", | ||
@@ -37,3 +37,3 @@ "author": "The WordPress Contributors", | ||
| }, | ||
| "gitHead": "8f7f052bc04e3f4eb50f479ced14be1489b9fa79" | ||
| "gitHead": "157f4ae53ab98e574af01f72213ae5a9613159ff" | ||
| } |
@@ -55,3 +55,3 @@ /** | ||
| // Unsetting the cache key ensures that the data is only preloaded a single time | ||
| // Unsetting the cache key ensures that the data is only used a single time | ||
| delete cache[ path ]; | ||
@@ -76,7 +76,8 @@ | ||
| ) { | ||
| return Promise.resolve( | ||
| parse | ||
| ? cache[ method ][ path ].body | ||
| : cache[ method ][ path ] | ||
| ); | ||
| const cacheData = cache[ method ][ path ]; | ||
| // Unsetting the cache key ensures that the data is only used a single time | ||
| delete cache[ method ][ path ]; | ||
| return Promise.resolve( parse ? cacheData.body : cacheData ); | ||
| } | ||
@@ -83,0 +84,0 @@ } |
@@ -202,2 +202,30 @@ /** | ||
| it( 'should remove OPTIONS type requests from the cache after the first hit', async () => { | ||
| const body = { content: 'example' }; | ||
| const preloadedData = { | ||
| OPTIONS: { | ||
| 'wp/v2/demo': { body }, | ||
| }, | ||
| }; | ||
| const preloadingMiddleware = createPreloadingMiddleware( | ||
| preloadedData | ||
| ); | ||
| const requestOptions = { | ||
| method: 'OPTIONS', | ||
| path: 'wp/v2/demo', | ||
| }; | ||
| const firstMiddleware = jest.fn(); | ||
| preloadingMiddleware( requestOptions, firstMiddleware ); | ||
| expect( firstMiddleware ).not.toHaveBeenCalled(); | ||
| await preloadingMiddleware( requestOptions, firstMiddleware ); | ||
| const secondMiddleware = jest.fn(); | ||
| await preloadingMiddleware( requestOptions, secondMiddleware ); | ||
| expect( secondMiddleware ).toHaveBeenCalledTimes( 1 ); | ||
| } ); | ||
| describe.each( [ [ 'GET' ], [ 'OPTIONS' ] ] )( '%s', ( method ) => { | ||
@@ -204,0 +232,0 @@ describe.each( [ |
Sorry, the diff of this file is not supported yet
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
229247
0.64%2847
0.89%