msw 0.28.0 → 0.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/RequestHandler-deps.js +1 -1
- package/lib/esm/index.js +11 -3
- package/lib/esm/mockServiceWorker.js +2 -2
- package/lib/iife/index.js +1 -1
- package/lib/iife/mockServiceWorker.js +2 -2
- package/lib/umd/index.js +12 -4
- package/lib/umd/mockServiceWorker.js +2 -2
- package/native/lib/index.js +11 -3
- package/node/lib/index.js +11 -3
- package/package.json +2 -5
|
@@ -1453,7 +1453,7 @@ function parseMultipartData(data, headers) {
|
|
|
1453
1453
|
if (!contentType) {
|
|
1454
1454
|
return undefined;
|
|
1455
1455
|
}
|
|
1456
|
-
const [, ...directives] = contentType.split(
|
|
1456
|
+
const [, ...directives] = contentType.split(/; */);
|
|
1457
1457
|
const boundary = directives
|
|
1458
1458
|
.filter((d) => d.startsWith('boundary='))
|
|
1459
1459
|
.map((s) => s.replace(/^boundary=/, ''))[0];
|
package/lib/esm/index.js
CHANGED
|
@@ -690,9 +690,17 @@ const getResponse = (request, handlers) => __awaiter(void 0, void 0, void 0, fun
|
|
|
690
690
|
return acc;
|
|
691
691
|
}
|
|
692
692
|
const result = yield handler.run(request);
|
|
693
|
-
if (result === null ||
|
|
693
|
+
if (result === null || result.handler.shouldSkip) {
|
|
694
694
|
return null;
|
|
695
695
|
}
|
|
696
|
+
if (!result.response) {
|
|
697
|
+
return {
|
|
698
|
+
request: result.request,
|
|
699
|
+
handler: result.handler,
|
|
700
|
+
response: undefined,
|
|
701
|
+
parsedResult: result.parsedResult,
|
|
702
|
+
};
|
|
703
|
+
}
|
|
696
704
|
if (result.response.once) {
|
|
697
705
|
handler.markAsSkipped(true);
|
|
698
706
|
}
|
|
@@ -1458,8 +1466,8 @@ function requestIntegrityCheck(context, serviceWorker) {
|
|
|
1458
1466
|
const { payload: actualChecksum } = yield context.events.once('INTEGRITY_CHECK_RESPONSE');
|
|
1459
1467
|
// Compare the response from the Service Worker and the
|
|
1460
1468
|
// global variable set by webpack upon build.
|
|
1461
|
-
if (actualChecksum !== "
|
|
1462
|
-
throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"
|
|
1469
|
+
if (actualChecksum !== "82ef9b96d8393b6da34527d1d6e19187") {
|
|
1470
|
+
throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"82ef9b96d8393b6da34527d1d6e19187"}).`);
|
|
1463
1471
|
}
|
|
1464
1472
|
return serviceWorker;
|
|
1465
1473
|
});
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
/* eslint-disable */
|
|
8
8
|
/* tslint:disable */
|
|
9
9
|
|
|
10
|
-
const INTEGRITY_CHECKSUM = '
|
|
10
|
+
const INTEGRITY_CHECKSUM = '82ef9b96d8393b6da34527d1d6e19187'
|
|
11
11
|
const bypassHeaderName = 'x-msw-bypass'
|
|
12
12
|
const activeClientIds = new Set()
|
|
13
13
|
|
|
@@ -114,7 +114,7 @@ async function handleRequest(event, requestId) {
|
|
|
114
114
|
// Send back the response clone for the "response:*" life-cycle events.
|
|
115
115
|
// Ensure MSW is active and ready to handle the message, otherwise
|
|
116
116
|
// this message will pend indefinitely.
|
|
117
|
-
if (activeClientIds.has(client.id)) {
|
|
117
|
+
if (client && activeClientIds.has(client.id)) {
|
|
118
118
|
;(async function () {
|
|
119
119
|
const clonedResponse = response.clone()
|
|
120
120
|
sendToClient(client, {
|
package/lib/iife/index.js
CHANGED
|
@@ -20,4 +20,4 @@ var MockServiceWorker=function(e){"use strict";var t={100:"Continue",101:"Switch
|
|
|
20
20
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
21
21
|
PERFORMANCE OF THIS SOFTWARE.
|
|
22
22
|
***************************************************************************** */
|
|
23
|
-
function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}(t,["operations","map"]),o=C(r)||{};if(!o.query)return null;const s=C(n||"")||{},a=o.variables?function(e,t,r){const n={variables:e};for(const[e,i]of Object.entries(t)){if(!(e in r))throw new Error(`Given files do not have a key '${e}' .`);for(const t of i){const[i,...o]=t.split(".").reverse(),s=o.reverse();let a=n;for(const e of s){if(!(e in a))throw new Error(`Property '${s}' is not in operations.`);a=a[e]}a[i]=r[e]}}return n.variables}(o.variables,s,i):{};return{query:o.query,variables:a}}default:return null}}function Ft(e){const t=Mt(e);if(!t||!t.query)return;const{query:r,variables:n}=t,i=Pt(r);if(i instanceof Error){const t=Dt(e);return console.error(`[MSW] Failed to intercept a GraphQL request to "${e.method} ${t}": cannot parse query. See the error message from the parser below.`),void console.error(i)}return{operationType:i.operationType,operationName:i.operationName,variables:n}}function Ut(e,t){return e.toLowerCase()===t.toLowerCase()}function qt(e){return e<300?"#69AB32":e<400?"#F0BB4B":"#E95F5D"}function Bt(){const e=new Date;return[e.getHours(),e.getMinutes(),e.getSeconds()].map(String).map((e=>e.slice(0,2))).map((e=>e.padStart(2,"0"))).join(":")}function Ht(e){return Object.assign(Object.assign({},e),{headers:e.headers.all()})}function Kt(e){var t,r;const n=T.stringToHeaders(e),i=n.get("content-type")||"text/plain",o=n.get("content-disposition");if(!o)throw new Error('"Content-Disposition" header is required.');const s=o.split(";").reduce(((e,t)=>{const[r,...n]=t.trim().split("=");return e[r]=n.join("="),e}),{});return{name:null===(t=s.name)||void 0===t?void 0:t.slice(1,-1),filename:null===(r=s.filename)||void 0===r?void 0:r.slice(1,-1),contentType:i}}function $t(e,t){if(e){const r=null==t?void 0:t.get("content-type");if((null==r?void 0:r.startsWith("multipart/form-data"))&&"object"!=typeof e)return function(e,t){const r=null==t?void 0:t.get("content-type");if(!r)return;const[,...n]=r.split("; "),i=n.filter((e=>e.startsWith("boundary="))).map((e=>e.replace(/^boundary=/,"")))[0];if(!i)return;const o=new RegExp(`--+${i}`),s=e.split(o).filter((e=>e.startsWith("\r\n")&&e.endsWith("\r\n"))).map((e=>e.trimStart().replace(/\r\n$/,"")));if(!s.length)return;const a={};try{for(const e of s){const[t,...r]=e.split("\r\n\r\n"),n=r.join("\r\n\r\n"),{contentType:i,filename:o,name:s}=Kt(t),c=void 0===o?n:new File([n],o,{type:i}),u=a[s];void 0===u?a[s]=c:Array.isArray(u)?a[s]=[...u,c]:a[s]=[u,c]}return a}catch(e){return}}(e,t)||e;return(null==r?void 0:r.includes("json"))&&"object"!=typeof e&&C(e)||e}return e}function Wt(e){const t=T.listToHeaders(e.headers);return Object.assign(Object.assign({},e),{body:$t(e.body,t)})}const Vt=(e,t)=>{const r=(e instanceof RegExp?e:(e=>{const t=e.replace(/\./g,"\\.").replace(/\//g,"/").replace(/\?/g,"\\?").replace(/\/+$/,"").replace(/\*+/g,".*").replace(/:([^\d|^\/][a-zA-Z0-9_]*(?=(?:\/|\\.)|$))/g,((e,t)=>`(?<${t}>[^/]+?)`)).concat("(\\/|$)");return new RegExp(t,"gi")})(e)).exec(t)||!1,n=e instanceof RegExp?!!r:!!r&&r[0]===r.input;return{matches:n,params:r&&n&&r.groups||null}};var Yt=i((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getCleanUrl=void 0,t.getCleanUrl=function(e,t){return void 0===t&&(t=!0),[t&&e.origin,e.pathname].filter(Boolean).join("")}}));const Gt=e=>{const t="undefined"!=typeof location;return"string"==typeof e&&e.startsWith("/")?`${t?location.origin:""}${e}`:e};function Jt(e){if(e instanceof RegExp||e.includes("*"))return e;try{return new URL(Gt(e))}catch(t){return e}}function zt(e,t){const r=function(e){return e instanceof URL?Yt.getCleanUrl(e):e instanceof RegExp?e:Gt(e)}(Jt(t)),n=Yt.getCleanUrl(e);return Vt(r,n)}function Qt(...e){return(...t)=>e.reduceRight(((e,t)=>e instanceof Promise?Promise.resolve(e).then(t):t(e)),t[0])}class Xt extends Error{constructor(e){super(e),this.name="NetworkError"}}const Zt={status:200,statusText:"OK",body:null,delay:0,once:!1},er=[];function tr(e,t=er){return(...r)=>pe(this,void 0,void 0,(function*(){const n=Object.assign({},Zt,{headers:new T.Headers({"x-powered-by":"msw"})},e),i=[...t,...r].filter(Boolean);return i.length>0?Qt(...i)(n):n}))}const rr=Object.assign(tr(),{once:tr({once:!0}),networkError(e){throw new Xt(e)}});const nr={status:r,set:O,delay:q,fetch:$};class ir{constructor(e){this.shouldSkip=!1,this.ctx=e.ctx||nr,this.resolver=e.resolver;const t=function(){const e=((new Error).stack||"").split("\n"),t=/(node_modules)?[\/\\]lib[\/\\](umd|esm|iief|cjs)[\/\\]|^[^\/\\]*$/,r=e.slice(1).find((e=>!t.test(e)));if(!r)return;return r.replace(/\s*at [^()]*\(([^)]+)\)/,"$1").replace(/^@/,"")}();this.info=Object.assign(Object.assign({},e.info),{callFrame:t})}parse(e){return null}test(e){return this.predicate(e,this.parse(e))}getPublicRequest(e,t){return e}markAsSkipped(e=!0){this.shouldSkip=e}run(e){return pe(this,void 0,void 0,(function*(){if(this.shouldSkip)return null;const t=this.parse(e);if(!this.predicate(e,t))return null;const r=this.getPublicRequest(e,t),n=yield this.resolver(r,rr,this.ctx);return this.createExecutionResult(t,r,n)}))}createExecutionResult(e,t,r){return{handler:this,parsedResult:e||null,request:t,response:r||null}}}var or;e.RESTMethods=void 0,(or=e.RESTMethods||(e.RESTMethods={})).HEAD="HEAD",or.GET="GET",or.POST="POST",or.PUT="PUT",or.PATCH="PATCH",or.OPTIONS="OPTIONS",or.DELETE="DELETE";const sr={set:O,status:r,cookie:A,body:R,text:W,json:D,xml:V,delay:q,fetch:$};class ar extends ir{constructor(e,t,r){super({info:{header:`${e} ${t}`,mask:t,method:e},ctx:sr,resolver:r}),this.checkRedundantQueryParameters()}checkRedundantQueryParameters(){const{method:e,mask:t}=this.info,r=Jt(t);if(r instanceof URL&&""!==r.search){const n=[];r.searchParams.forEach(((e,t)=>{n.push(t)})),console.warn(`[MSW] Found a redundant usage of query parameters in the request handler URL for "${e} ${t}". Please match against a path instead, and access query parameters in the response resolver function:\n\nrest.${e.toLowerCase()}("${r.pathname}", (req, res, ctx) => {\n const query = req.url.searchParams\n${n.map((e=>` const ${e} = query.get("${e}")`)).join("\n")}\n}) `)}}parse(e){return zt(e.url,this.info.mask)}getPublicRequest(e,t){return Object.assign(Object.assign({},e),{params:t.params})}predicate(e,t){return Ut(this.info.method,e.method)&&t.matches}log(e,t){const r=Dt(e),n=Ht(e),i=Wt(t);console.groupCollapsed("[MSW] %s %s %s (%c%s%c)",Bt(),e.method,r,`color:${qt(t.status)}`,t.status,"color:inherit"),console.log("Request",n),console.log("Handler:",{mask:this.info.mask,resolver:this.resolver}),console.log("Response",i),console.groupEnd()}}const cr={set:O,status:r,delay:q,fetch:$,data:P,errors:B};class ur extends ir{constructor(e,t,r,n){super({info:{header:"all"===e?`${e} (origin: ${r.toString()})`:`${e} ${t} (origin: ${r.toString()})`,operationType:e,operationName:t},ctx:cr,resolver:n}),this.endpoint=r}parse(e){return Ft(e)}getPublicRequest(e,t){return Object.assign(Object.assign({},e),{variables:(null==t?void 0:t.variables)||{}})}predicate(e,t){if(!t)return!1;if(!t.operationName){const t=Dt(e);return console.warn(`[MSW] Failed to intercept a GraphQL request at "${e.method} ${t}": unnamed GraphQL operations are not supported.\n\nConsider naming this operation or using "graphql.operation" request handler to intercept GraphQL requests regardless of their operation name/type. Read more: https://mswjs.io/docs/api/graphql/operation `),!1}const r=zt(e.url,this.endpoint),n="all"===this.info.operationType||t.operationType===this.info.operationType,i=this.info.operationName instanceof RegExp?this.info.operationName.test(t.operationName):t.operationName===this.info.operationName;return r.matches&&n&&i}log(e,t){const r=Ht(e),n=Wt(t);console.groupCollapsed("[MSW] %s %s (%c%s%c)",Bt(),this.info.operationName,`color:${qt(t.status)}`,t.status,"color:inherit"),console.log("Request:",r),console.log("Handler:",this),console.log("Response:",n),console.groupEnd()}}function lr(e,t,r="bypass"){if("function"==typeof r)return void r(e);const n=Ft(e),i=function(e){return e.reduce(((e,t)=>(t instanceof ar&&e.rest.push(t),t instanceof ur&&e.graphql.push(t),e)),{rest:[],graphql:[]})}(t),o=function(e,t,r){return t.reduce(((t,n)=>{const i=r(e,n);return t.concat([[i,n]])}),[]).sort((([e],[t])=>e-t)).filter((([e])=>e<=3)).slice(0,4).map((([,e])=>e))}(e,n?i.graphql:i.rest,n?(s=n,(e,t)=>{if(void 0===s.operationName)return 1/0;const{operationType:r,operationName:n}=t.info,i=s.operationType===r?.5:0;return ye(s.operationName,n)-i}):(e,t)=>{const{mask:r,method:n}=t.info;if(r instanceof RegExp)return 1/0;const i=Ut(e.method,n)?.5:0,o=Dt(e);return ye(o,r)-i});var s;const a=o.length>0?function(e){return e.length>1?`Did you mean to request one of the following resources instead?\n\n${e.map((e=>` • ${e.info.header}`)).join("\n")}`:`Did you mean to request "${e[0].info.header}" instead?`}(o):"",c=Dt(e),u=["captured a request without a matching request handler:",` • ${n?`${n.operationType} ${n.operationName} (${e.method} ${c})`:`${e.method} ${c}`}`,a,"If you still wish to intercept this unhandled request, please create a request handler for it.\nRead more: https://mswjs.io/docs/getting-started/mocks"].filter(Boolean).join("\n\n");switch(r){case"error":console.error(`[MSW] Error: ${u}`);break;case"warn":console.warn(`[MSW] Warning: ${u}`);break;default:return}}var hr={decodeValues:!0,map:!1,silent:!1};function pr(e){return"string"==typeof e&&!!e.trim()}function fr(e,t){var r=e.split(";").filter(pr),n=r.shift().split("="),i=n.shift(),o=n.join("=");t=t?Object.assign({},hr,t):hr;try{o=t.decodeValues?decodeURIComponent(o):o}catch(e){console.error("set-cookie-parser encountered an error while decoding a cookie with value '"+o+"'. Set options.decodeValues to false to disable this feature.",e)}var s={name:i,value:o};return r.forEach((function(e){var t=e.split("="),r=t.shift().trimLeft().toLowerCase(),n=t.join("=");"expires"===r?s.expires=new Date(n):"max-age"===r?s.maxAge=parseInt(n,10):"secure"===r?s.secure=!0:"httponly"===r?s.httpOnly=!0:"samesite"===r?s.sameSite=n:s[r]=n})),s}function dr(e,t){if(t=t?Object.assign({},hr,t):hr,!e)return t.map?{}:[];if(e.headers&&e.headers["set-cookie"])e=e.headers["set-cookie"];else if(e.headers){var r=e.headers[Object.keys(e.headers).find((function(e){return"set-cookie"===e.toLowerCase()}))];r||!e.headers.cookie||t.silent||console.warn("Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."),e=r}if(Array.isArray(e)||(e=[e]),(t=t?Object.assign({},hr,t):hr).map){return e.filter(pr).reduce((function(e,r){var n=fr(r,t);return e[n.name]=n,e}),{})}return e.filter(pr).map((function(e){return fr(e,t)}))}var vr=dr,yr=dr,mr=fr,gr=function(e){if(Array.isArray(e))return e;if("string"!=typeof e)return[];var t,r,n,i,o,s=[],a=0;function c(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,o=!1;c();)if(","===(r=e.charAt(a))){for(n=a,a+=1,c(),i=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(o=!0,a=i,s.push(e.substring(t,n)),t=a):a=n+1}else a+=1;(!o||a>=e.length)&&s.push(e.substring(t,e.length))}return s};vr.parse=yr,vr.parseString=mr,vr.splitCookiesString=gr;var Er=i((function(e,t){var r=n&&n.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.PERSISTENCY_KEY=void 0,t.PERSISTENCY_KEY="MSW_COOKIE_STORE";t.default=new class{constructor(){this.store=new Map,this.supportsPersistency="undefined"!=typeof window}add(e,t){if("omit"===e.credentials)return;const n=new URL(e.url),i=t.headers.get("set-cookie");if(!i)return;const o=Date.now(),s=vr.parse(i).map((e=>{var{maxAge:t}=e,n=r(e,["maxAge"]);return Object.assign(Object.assign({},n),{expires:void 0===t?n.expires:new Date(o+1e3*t),maxAge:t})})).filter((({expires:e})=>void 0===e||e.getTime()>o)),a=this.store.get(n.origin)||new Map;s.forEach((e=>{this.store.set(n.origin,a.set(e.name,e))}))}get(e){this.deleteExpiredCookies();const t=new URL(e.url),r=this.store.get(t.origin)||new Map;switch(e.credentials){case"include":return vr.parse(document.cookie).forEach((e=>{r.set(e.name,e)})),r;case"same-origin":return r;default:return new Map}}getAll(){return this.deleteExpiredCookies(),this.store}deleteAll(e){const t=new URL(e.url);this.store.delete(t.origin)}clear(){this.store.clear()}hydrate(){if(!this.supportsPersistency)return;const e=localStorage.getItem(t.PERSISTENCY_KEY);if(e)try{JSON.parse(e).forEach((([e,t])=>{this.store.set(e,new Map(t.map((e=>{var[t,n]=e,{expires:i}=n,o=r(n,["expires"]);return[t,void 0===i?o:Object.assign(Object.assign({},o),{expires:new Date(i)})]}))))}))}catch(e){console.warn(`\n[virtual-cookie] Failed to parse a stored cookie from the localStorage (key "${t.PERSISTENCY_KEY}").\n\nStored value:\n${localStorage.getItem(t.PERSISTENCY_KEY)}\n\nThrown exception:\n${e}\n\nInvalid value has been removed from localStorage to prevent subsequent failed parsing attempts.`),localStorage.removeItem(t.PERSISTENCY_KEY)}}persist(){if(!this.supportsPersistency)return;const e=Array.from(this.store.entries()).map((([e,t])=>[e,Array.from(t.entries())]));localStorage.setItem(t.PERSISTENCY_KEY,JSON.stringify(e))}deleteExpiredCookies(){const e=Date.now();this.store.forEach(((t,r)=>{t.forEach((({expires:r,name:n})=>{void 0!==r&&r.getTime()<=e&&t.delete(n)})),0===t.size&&this.store.delete(r)}))}}})),br=i((function(e,t){var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PERSISTENCY_KEY=t.store=void 0,Object.defineProperty(t,"store",{enumerable:!0,get:function(){return r(Er).default}}),Object.defineProperty(t,"PERSISTENCY_KEY",{enumerable:!0,get:function(){return Er.PERSISTENCY_KEY}})}));function Tr(){return w(document.cookie)}function Or(e){var t;br.store.hydrate(),e.cookies=Object.assign(Object.assign({},function(e){if("undefined"==typeof location)return{};switch(e.credentials){case"same-origin":return location.origin===e.url.origin?Tr():{};case"include":return Tr();default:return{}}}(e)),Array.from(null===(t=br.store.get(Object.assign(Object.assign({},e),{url:e.url.toString()})))||void 0===t?void 0:t.entries()).reduce(((e,[t,{value:r}])=>Object.assign(e,{[t]:r})),{})),e.headers.set("cookie",Object.entries(e.cookies).map((([e,t])=>`${e}=${t}`)).join("; "))}function wr(e){if(!e.method||!Ut(e.method,"GET")||""!==e.body)return e.body}const _r=(e,t)=>(r,n)=>pe(void 0,void 0,void 0,(function*(){const i=(e=>{const t=e.ports[0];return{send(e){t&&t.postMessage(e)}}})(r);try{const r=function(e){const t={id:e.id,cache:e.cache,credentials:e.credentials,method:e.method,url:new URL(e.url),referrer:e.referrer,referrerPolicy:e.referrerPolicy,redirect:e.redirect,mode:e.mode,params:{},cookies:{},integrity:e.integrity,keepalive:e.keepalive,destination:e.destination,body:wr(e),bodyUsed:e.bodyUsed,headers:new T.Headers(e.headers)};return Or(t),t.body=$t(t.body,t.headers),t}(n.payload);e.emitter.emit("request:start",r),Or(r);const{response:o,handler:s,publicRequest:a,parsedRequest:c}=yield((e,t)=>pe(void 0,void 0,void 0,(function*(){const r=t.filter((t=>t.test(e)));if(0===r.length)return{handler:void 0,response:void 0};const n=yield r.reduce(((t,r)=>pe(void 0,void 0,void 0,(function*(){const n=yield t;if(null==n?void 0:n.response)return t;const i=yield r.run(e);return null===i||!i.response||i.handler.shouldSkip?null:(i.response.once&&r.markAsSkipped(!0),i)}))),Promise.resolve(null));return n?{handler:n.handler,publicRequest:n.request,parsedRequest:n.parsedResult,response:n.response}:{handler:void 0,response:void 0}})))(r,e.requestHandlers);if(!s)return lr(r,e.requestHandlers,t.onUnhandledRequest),e.emitter.emit("request:unhandled",r),e.emitter.emit("request:end",r),i.send({type:"MOCK_NOT_FOUND"});if(e.emitter.emit("request:match",r),!o)return console.warn("[MSW] Expected a mocking resolver function to return a mocked response Object, but got: %s. Original response is going to be used instead.",o),e.emitter.emit("request:end",r),i.send({type:"MOCK_NOT_FOUND"});!function(e,t){br.store.add(Object.assign(Object.assign({},e),{url:e.url.toString()}),t),br.store.persist()}(r,o);const u=Object.assign(Object.assign({},o),{headers:T.headersToList(o.headers)});t.quiet||setTimeout((()=>{s.log(a,u,s,c)}),o.delay),e.emitter.emit("request:end",r),i.send({type:"MOCK_SUCCESS",payload:u})}catch(e){if(e instanceof Xt)return i.send({type:"NETWORK_ERROR",payload:{name:e.name,message:e.message}});i.send({type:"INTERNAL_ERROR",payload:{status:500,body:JSON.stringify({errorType:e.constructor.name,message:e.message,location:e.stack})}})}}));const Nr={serviceWorker:{url:"/mockServiceWorker.js",options:null},quiet:!1,waitUntilReady:!0,onUnhandledRequest:"bypass",findWorker:(e,t)=>e===t},Sr=e=>function(t){const r=j(Nr,t||{});e.startOptions=r;const n=(()=>pe(this,void 0,void 0,(function*(){if(!("serviceWorker"in navigator))throw new Error("[MSW] Failed to register a Service Worker: this browser does not support Service Workers (see https://caniuse.com/serviceworkers), or your application is running on an insecure host (consider using HTTPS for custom hostnames).");e.events.removeAllListeners(),e.workerChannel.on("REQUEST",_r(e,r)),e.workerChannel.on("RESPONSE",function(e){return(t,r)=>{var n;const{payload:i}=r;if(null===(n=i.type)||void 0===n?void 0:n.includes("opaque"))return;const o=new Response(i.body||null,i);"msw"===o.headers.get("x-powered-by")?e.emitter.emit("response:mocked",o,i.requestId):e.emitter.emit("response:bypass",o,i.requestId)}}(e));const n=yield ve(r.serviceWorker.url,r.serviceWorker.options,r.findWorker),[i,o]=n;if(!i){const e=(null==t?void 0:t.findWorker)?`[MSW] Failed to locate the Service Worker registration using a custom "findWorker" predicate.\n\nPlease ensure that the custom predicate properly locates the Service Worker registration at "${r.serviceWorker.url}".\nMore details: https://mswjs.io/docs/api/setup-worker/start#findworker\n`:`[MSW] Failed to locate the Service Worker registration.\n\nThis most likely means that the worker script URL "${r.serviceWorker.url}" cannot resolve against the actual public hostname (${location.host}). This may happen if your application runs behind a proxy, or has a dynamic hostname.\n\nPlease consider using a custom "serviceWorker.url" option to point to the actual worker script location, or a custom "findWorker" option to resolve the Service Worker registration manually. More details: https://mswjs.io/docs/api/setup-worker/start`;throw new Error(e)}e.worker=i,e.registration=o,e.events.addListener(window,"beforeunload",(()=>{"redundant"!==i.state&&e.workerChannel.send("CLIENT_CLOSED"),window.clearInterval(e.keepAliveInterval)}));const[s]=yield fe((()=>function(e,t){return pe(this,void 0,void 0,(function*(){e.workerChannel.send("INTEGRITY_CHECK_REQUEST");const{payload:r}=yield e.events.once("INTEGRITY_CHECK_RESPONSE");if("795882c72c7304f6fa1d4a65a2418900"!==r)throw new Error(`Currently active Service Worker (${r}) is behind the latest published one (795882c72c7304f6fa1d4a65a2418900).`);return t}))}(e,i)));return s&&console.error(`[MSW] Detected outdated Service Worker: ${s.message}\n\nThe mocking is still enabled, but it's highly recommended that you update your Service Worker by running:\n\n$ npx msw init <PUBLIC_DIR>\n\nThis is necessary to ensure that the Service Worker is in sync with the library to guarantee its stability.\nIf this message still persists after updating, please report an issue: https://github.com/open-draft/msw/issues `),yield((e,t)=>pe(void 0,void 0,void 0,(function*(){return e.workerChannel.send("MOCK_ACTIVATE"),e.events.once("MOCKING_ENABLED").then((()=>{(null==t?void 0:t.quiet)||(console.groupCollapsed("%c[MSW] Mocking enabled.","color:orangered;font-weight:bold;"),console.log("%cDocumentation: %chttps://mswjs.io/docs","font-weight:bold","font-weight:normal"),console.log("Found an issue? https://github.com/mswjs/msw/issues"),console.groupEnd())}))})))(e,t).catch((e=>{throw new Error(`Failed to enable mocking: ${null==e?void 0:e.message}`)})),e.keepAliveInterval=window.setInterval((()=>e.workerChannel.send("KEEPALIVE_REQUEST")),5e3),o})))();return r.waitUntilReady&&function(e){const t=window.XMLHttpRequest.prototype.send;window.XMLHttpRequest.prototype.send=function(...r){fe((()=>e)).then((()=>{window.XMLHttpRequest.prototype.send=t,this.send(...r)}))};const r=window.fetch;window.fetch=(...t)=>pe(this,void 0,void 0,(function*(){return yield fe((()=>e)),window.fetch=r,window.fetch(...t)}))}(n),n},kr=e=>function(){var t;e.workerChannel.send("MOCK_DEACTIVATE"),e.events.removeAllListeners(),e.emitter.removeAllListeners(),window.clearInterval(e.keepAliveInterval),(null===(t=e.startOptions)||void 0===t?void 0:t.quiet)||console.log("%c[MSW] Mocking disabled.","color:orangered;font-weight:bold;")};let Ir=[];function xr(e){return(t,r)=>new ar(e,t,r)}const Ar={head:xr(e.RESTMethods.HEAD),get:xr(e.RESTMethods.GET),post:xr(e.RESTMethods.POST),put:xr(e.RESTMethods.PUT),delete:xr(e.RESTMethods.DELETE),patch:xr(e.RESTMethods.PATCH),options:xr(e.RESTMethods.OPTIONS)};function Rr(e,t){return(r,n)=>new ur(e,r,t,n)}function Cr(e){return t=>new ur("all",new RegExp(".*"),e,t)}const Lr={operation:Cr("*"),query:Rr("query","*"),mutation:Rr("mutation","*")};const jr=Object.assign(Object.assign({},Lr),{link:function(e){return{operation:Cr(e),query:Rr("query",e),mutation:Rr("mutation",e)}}});return e.GraphQLHandler=ur,e.RequestHandler=ir,e.RestHandler=ar,e.compose=Qt,e.context=G,e.createResponseComposition=tr,e.defaultContext=nr,e.defaultResponse=Zt,e.graphql=jr,e.graphqlContext=cr,e.matchRequestUrl=zt,e.response=rr,e.rest=Ar,e.restContext=sr,e.setupWorker=function(...e){e.forEach((e=>{if(Array.isArray(e))throw new Error('[MSW] Failed to call "setupWorker" given an Array of request handlers (setupWorker([a, b])), expected to receive each handler individually: setupWorker(a, b).')}));const t={startOptions:void 0,worker:null,registration:null,requestHandlers:[...e],emitter:new he.StrictEventEmitter,workerChannel:{on(e,r){t.events.addListener(navigator.serviceWorker,"message",(n=>{if(n.source!==t.worker)return;const i=C(n.data);i&&i.type===e&&r(n,i)}))},send(e){var r;null===(r=t.worker)||void 0===r||r.postMessage(e)}},events:{addListener:(e,t,r)=>(e.addEventListener(t,r),Ir.push({eventType:t,target:e,callback:r}),()=>{e.removeEventListener(t,r)}),removeAllListeners(){for(const{target:e,eventType:t,callback:r}of Ir)e.removeEventListener(t,r);Ir=[]},once(e){const r=[];return new Promise(((n,i)=>{r.push(t.events.addListener(navigator.serviceWorker,"message",(t=>{try{const r=JSON.parse(t.data);r.type===e&&n(r)}catch(e){i(e)}})),t.events.addListener(navigator.serviceWorker,"messageerror",i))})).finally((()=>{r.forEach((e=>e()))}))}}};if(M())throw new Error("[MSW] Failed to execute `setupWorker` in a non-browser environment. Consider using `setupServer` for Node.js environment instead.");return{start:Sr(t),stop:kr(t),use(...e){console.log("adding new handlers",e),function(e,...t){e.unshift(...t)}(t.requestHandlers,...e)},restoreHandlers(){t.requestHandlers.forEach((e=>{e.markAsSkipped(!1)}))},resetHandlers(...r){t.requestHandlers=function(e,...t){return t.length>0?[...t]:[...e]}(e,...r)},printHandlers(){t.requestHandlers.forEach((e=>{const{header:t,callFrame:r}=e.info,n=e.info.hasOwnProperty("operationType")?"[graphql]":"[rest]";console.groupCollapsed(`${n} ${t}`),r&&console.log(`Declaration: ${r}`),console.log("Handler:",e),e instanceof ar&&console.log("Match:",`https://mswjs.io/repl?path=${e.info.mask}`),console.groupEnd()}))},on(e,r){t.emitter.addListener(e,r)}}},e}({});
|
|
23
|
+
function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}(t,["operations","map"]),o=C(r)||{};if(!o.query)return null;const s=C(n||"")||{},a=o.variables?function(e,t,r){const n={variables:e};for(const[e,i]of Object.entries(t)){if(!(e in r))throw new Error(`Given files do not have a key '${e}' .`);for(const t of i){const[i,...o]=t.split(".").reverse(),s=o.reverse();let a=n;for(const e of s){if(!(e in a))throw new Error(`Property '${s}' is not in operations.`);a=a[e]}a[i]=r[e]}}return n.variables}(o.variables,s,i):{};return{query:o.query,variables:a}}default:return null}}function Ft(e){const t=Mt(e);if(!t||!t.query)return;const{query:r,variables:n}=t,i=Pt(r);if(i instanceof Error){const t=Dt(e);return console.error(`[MSW] Failed to intercept a GraphQL request to "${e.method} ${t}": cannot parse query. See the error message from the parser below.`),void console.error(i)}return{operationType:i.operationType,operationName:i.operationName,variables:n}}function Ut(e,t){return e.toLowerCase()===t.toLowerCase()}function qt(e){return e<300?"#69AB32":e<400?"#F0BB4B":"#E95F5D"}function Bt(){const e=new Date;return[e.getHours(),e.getMinutes(),e.getSeconds()].map(String).map((e=>e.slice(0,2))).map((e=>e.padStart(2,"0"))).join(":")}function Ht(e){return Object.assign(Object.assign({},e),{headers:e.headers.all()})}function Kt(e){var t,r;const n=T.stringToHeaders(e),i=n.get("content-type")||"text/plain",o=n.get("content-disposition");if(!o)throw new Error('"Content-Disposition" header is required.');const s=o.split(";").reduce(((e,t)=>{const[r,...n]=t.trim().split("=");return e[r]=n.join("="),e}),{});return{name:null===(t=s.name)||void 0===t?void 0:t.slice(1,-1),filename:null===(r=s.filename)||void 0===r?void 0:r.slice(1,-1),contentType:i}}function $t(e,t){if(e){const r=null==t?void 0:t.get("content-type");if((null==r?void 0:r.startsWith("multipart/form-data"))&&"object"!=typeof e)return function(e,t){const r=null==t?void 0:t.get("content-type");if(!r)return;const[,...n]=r.split(/; */),i=n.filter((e=>e.startsWith("boundary="))).map((e=>e.replace(/^boundary=/,"")))[0];if(!i)return;const o=new RegExp(`--+${i}`),s=e.split(o).filter((e=>e.startsWith("\r\n")&&e.endsWith("\r\n"))).map((e=>e.trimStart().replace(/\r\n$/,"")));if(!s.length)return;const a={};try{for(const e of s){const[t,...r]=e.split("\r\n\r\n"),n=r.join("\r\n\r\n"),{contentType:i,filename:o,name:s}=Kt(t),c=void 0===o?n:new File([n],o,{type:i}),u=a[s];void 0===u?a[s]=c:Array.isArray(u)?a[s]=[...u,c]:a[s]=[u,c]}return a}catch(e){return}}(e,t)||e;return(null==r?void 0:r.includes("json"))&&"object"!=typeof e&&C(e)||e}return e}function Wt(e){const t=T.listToHeaders(e.headers);return Object.assign(Object.assign({},e),{body:$t(e.body,t)})}const Vt=(e,t)=>{const r=(e instanceof RegExp?e:(e=>{const t=e.replace(/\./g,"\\.").replace(/\//g,"/").replace(/\?/g,"\\?").replace(/\/+$/,"").replace(/\*+/g,".*").replace(/:([^\d|^\/][a-zA-Z0-9_]*(?=(?:\/|\\.)|$))/g,((e,t)=>`(?<${t}>[^/]+?)`)).concat("(\\/|$)");return new RegExp(t,"gi")})(e)).exec(t)||!1,n=e instanceof RegExp?!!r:!!r&&r[0]===r.input;return{matches:n,params:r&&n&&r.groups||null}};var Yt=i((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.getCleanUrl=void 0,t.getCleanUrl=function(e,t){return void 0===t&&(t=!0),[t&&e.origin,e.pathname].filter(Boolean).join("")}}));const Gt=e=>{const t="undefined"!=typeof location;return"string"==typeof e&&e.startsWith("/")?`${t?location.origin:""}${e}`:e};function Jt(e){if(e instanceof RegExp||e.includes("*"))return e;try{return new URL(Gt(e))}catch(t){return e}}function zt(e,t){const r=function(e){return e instanceof URL?Yt.getCleanUrl(e):e instanceof RegExp?e:Gt(e)}(Jt(t)),n=Yt.getCleanUrl(e);return Vt(r,n)}function Qt(...e){return(...t)=>e.reduceRight(((e,t)=>e instanceof Promise?Promise.resolve(e).then(t):t(e)),t[0])}class Xt extends Error{constructor(e){super(e),this.name="NetworkError"}}const Zt={status:200,statusText:"OK",body:null,delay:0,once:!1},er=[];function tr(e,t=er){return(...r)=>pe(this,void 0,void 0,(function*(){const n=Object.assign({},Zt,{headers:new T.Headers({"x-powered-by":"msw"})},e),i=[...t,...r].filter(Boolean);return i.length>0?Qt(...i)(n):n}))}const rr=Object.assign(tr(),{once:tr({once:!0}),networkError(e){throw new Xt(e)}});const nr={status:r,set:O,delay:q,fetch:$};class ir{constructor(e){this.shouldSkip=!1,this.ctx=e.ctx||nr,this.resolver=e.resolver;const t=function(){const e=((new Error).stack||"").split("\n"),t=/(node_modules)?[\/\\]lib[\/\\](umd|esm|iief|cjs)[\/\\]|^[^\/\\]*$/,r=e.slice(1).find((e=>!t.test(e)));if(!r)return;return r.replace(/\s*at [^()]*\(([^)]+)\)/,"$1").replace(/^@/,"")}();this.info=Object.assign(Object.assign({},e.info),{callFrame:t})}parse(e){return null}test(e){return this.predicate(e,this.parse(e))}getPublicRequest(e,t){return e}markAsSkipped(e=!0){this.shouldSkip=e}run(e){return pe(this,void 0,void 0,(function*(){if(this.shouldSkip)return null;const t=this.parse(e);if(!this.predicate(e,t))return null;const r=this.getPublicRequest(e,t),n=yield this.resolver(r,rr,this.ctx);return this.createExecutionResult(t,r,n)}))}createExecutionResult(e,t,r){return{handler:this,parsedResult:e||null,request:t,response:r||null}}}var or;e.RESTMethods=void 0,(or=e.RESTMethods||(e.RESTMethods={})).HEAD="HEAD",or.GET="GET",or.POST="POST",or.PUT="PUT",or.PATCH="PATCH",or.OPTIONS="OPTIONS",or.DELETE="DELETE";const sr={set:O,status:r,cookie:A,body:R,text:W,json:D,xml:V,delay:q,fetch:$};class ar extends ir{constructor(e,t,r){super({info:{header:`${e} ${t}`,mask:t,method:e},ctx:sr,resolver:r}),this.checkRedundantQueryParameters()}checkRedundantQueryParameters(){const{method:e,mask:t}=this.info,r=Jt(t);if(r instanceof URL&&""!==r.search){const n=[];r.searchParams.forEach(((e,t)=>{n.push(t)})),console.warn(`[MSW] Found a redundant usage of query parameters in the request handler URL for "${e} ${t}". Please match against a path instead, and access query parameters in the response resolver function:\n\nrest.${e.toLowerCase()}("${r.pathname}", (req, res, ctx) => {\n const query = req.url.searchParams\n${n.map((e=>` const ${e} = query.get("${e}")`)).join("\n")}\n}) `)}}parse(e){return zt(e.url,this.info.mask)}getPublicRequest(e,t){return Object.assign(Object.assign({},e),{params:t.params})}predicate(e,t){return Ut(this.info.method,e.method)&&t.matches}log(e,t){const r=Dt(e),n=Ht(e),i=Wt(t);console.groupCollapsed("[MSW] %s %s %s (%c%s%c)",Bt(),e.method,r,`color:${qt(t.status)}`,t.status,"color:inherit"),console.log("Request",n),console.log("Handler:",{mask:this.info.mask,resolver:this.resolver}),console.log("Response",i),console.groupEnd()}}const cr={set:O,status:r,delay:q,fetch:$,data:P,errors:B};class ur extends ir{constructor(e,t,r,n){super({info:{header:"all"===e?`${e} (origin: ${r.toString()})`:`${e} ${t} (origin: ${r.toString()})`,operationType:e,operationName:t},ctx:cr,resolver:n}),this.endpoint=r}parse(e){return Ft(e)}getPublicRequest(e,t){return Object.assign(Object.assign({},e),{variables:(null==t?void 0:t.variables)||{}})}predicate(e,t){if(!t)return!1;if(!t.operationName){const t=Dt(e);return console.warn(`[MSW] Failed to intercept a GraphQL request at "${e.method} ${t}": unnamed GraphQL operations are not supported.\n\nConsider naming this operation or using "graphql.operation" request handler to intercept GraphQL requests regardless of their operation name/type. Read more: https://mswjs.io/docs/api/graphql/operation `),!1}const r=zt(e.url,this.endpoint),n="all"===this.info.operationType||t.operationType===this.info.operationType,i=this.info.operationName instanceof RegExp?this.info.operationName.test(t.operationName):t.operationName===this.info.operationName;return r.matches&&n&&i}log(e,t){const r=Ht(e),n=Wt(t);console.groupCollapsed("[MSW] %s %s (%c%s%c)",Bt(),this.info.operationName,`color:${qt(t.status)}`,t.status,"color:inherit"),console.log("Request:",r),console.log("Handler:",this),console.log("Response:",n),console.groupEnd()}}function lr(e,t,r="bypass"){if("function"==typeof r)return void r(e);const n=Ft(e),i=function(e){return e.reduce(((e,t)=>(t instanceof ar&&e.rest.push(t),t instanceof ur&&e.graphql.push(t),e)),{rest:[],graphql:[]})}(t),o=function(e,t,r){return t.reduce(((t,n)=>{const i=r(e,n);return t.concat([[i,n]])}),[]).sort((([e],[t])=>e-t)).filter((([e])=>e<=3)).slice(0,4).map((([,e])=>e))}(e,n?i.graphql:i.rest,n?(s=n,(e,t)=>{if(void 0===s.operationName)return 1/0;const{operationType:r,operationName:n}=t.info,i=s.operationType===r?.5:0;return ye(s.operationName,n)-i}):(e,t)=>{const{mask:r,method:n}=t.info;if(r instanceof RegExp)return 1/0;const i=Ut(e.method,n)?.5:0,o=Dt(e);return ye(o,r)-i});var s;const a=o.length>0?function(e){return e.length>1?`Did you mean to request one of the following resources instead?\n\n${e.map((e=>` • ${e.info.header}`)).join("\n")}`:`Did you mean to request "${e[0].info.header}" instead?`}(o):"",c=Dt(e),u=["captured a request without a matching request handler:",` • ${n?`${n.operationType} ${n.operationName} (${e.method} ${c})`:`${e.method} ${c}`}`,a,"If you still wish to intercept this unhandled request, please create a request handler for it.\nRead more: https://mswjs.io/docs/getting-started/mocks"].filter(Boolean).join("\n\n");switch(r){case"error":console.error(`[MSW] Error: ${u}`);break;case"warn":console.warn(`[MSW] Warning: ${u}`);break;default:return}}var hr={decodeValues:!0,map:!1,silent:!1};function pr(e){return"string"==typeof e&&!!e.trim()}function fr(e,t){var r=e.split(";").filter(pr),n=r.shift().split("="),i=n.shift(),o=n.join("=");t=t?Object.assign({},hr,t):hr;try{o=t.decodeValues?decodeURIComponent(o):o}catch(e){console.error("set-cookie-parser encountered an error while decoding a cookie with value '"+o+"'. Set options.decodeValues to false to disable this feature.",e)}var s={name:i,value:o};return r.forEach((function(e){var t=e.split("="),r=t.shift().trimLeft().toLowerCase(),n=t.join("=");"expires"===r?s.expires=new Date(n):"max-age"===r?s.maxAge=parseInt(n,10):"secure"===r?s.secure=!0:"httponly"===r?s.httpOnly=!0:"samesite"===r?s.sameSite=n:s[r]=n})),s}function dr(e,t){if(t=t?Object.assign({},hr,t):hr,!e)return t.map?{}:[];if(e.headers&&e.headers["set-cookie"])e=e.headers["set-cookie"];else if(e.headers){var r=e.headers[Object.keys(e.headers).find((function(e){return"set-cookie"===e.toLowerCase()}))];r||!e.headers.cookie||t.silent||console.warn("Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."),e=r}if(Array.isArray(e)||(e=[e]),(t=t?Object.assign({},hr,t):hr).map){return e.filter(pr).reduce((function(e,r){var n=fr(r,t);return e[n.name]=n,e}),{})}return e.filter(pr).map((function(e){return fr(e,t)}))}var vr=dr,yr=dr,mr=fr,gr=function(e){if(Array.isArray(e))return e;if("string"!=typeof e)return[];var t,r,n,i,o,s=[],a=0;function c(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,o=!1;c();)if(","===(r=e.charAt(a))){for(n=a,a+=1,c(),i=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(o=!0,a=i,s.push(e.substring(t,n)),t=a):a=n+1}else a+=1;(!o||a>=e.length)&&s.push(e.substring(t,e.length))}return s};vr.parse=yr,vr.parseString=mr,vr.splitCookiesString=gr;var Er=i((function(e,t){var r=n&&n.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.PERSISTENCY_KEY=void 0,t.PERSISTENCY_KEY="MSW_COOKIE_STORE";t.default=new class{constructor(){this.store=new Map,this.supportsPersistency="undefined"!=typeof window}add(e,t){if("omit"===e.credentials)return;const n=new URL(e.url),i=t.headers.get("set-cookie");if(!i)return;const o=Date.now(),s=vr.parse(i).map((e=>{var{maxAge:t}=e,n=r(e,["maxAge"]);return Object.assign(Object.assign({},n),{expires:void 0===t?n.expires:new Date(o+1e3*t),maxAge:t})})).filter((({expires:e})=>void 0===e||e.getTime()>o)),a=this.store.get(n.origin)||new Map;s.forEach((e=>{this.store.set(n.origin,a.set(e.name,e))}))}get(e){this.deleteExpiredCookies();const t=new URL(e.url),r=this.store.get(t.origin)||new Map;switch(e.credentials){case"include":return vr.parse(document.cookie).forEach((e=>{r.set(e.name,e)})),r;case"same-origin":return r;default:return new Map}}getAll(){return this.deleteExpiredCookies(),this.store}deleteAll(e){const t=new URL(e.url);this.store.delete(t.origin)}clear(){this.store.clear()}hydrate(){if(!this.supportsPersistency)return;const e=localStorage.getItem(t.PERSISTENCY_KEY);if(e)try{JSON.parse(e).forEach((([e,t])=>{this.store.set(e,new Map(t.map((e=>{var[t,n]=e,{expires:i}=n,o=r(n,["expires"]);return[t,void 0===i?o:Object.assign(Object.assign({},o),{expires:new Date(i)})]}))))}))}catch(e){console.warn(`\n[virtual-cookie] Failed to parse a stored cookie from the localStorage (key "${t.PERSISTENCY_KEY}").\n\nStored value:\n${localStorage.getItem(t.PERSISTENCY_KEY)}\n\nThrown exception:\n${e}\n\nInvalid value has been removed from localStorage to prevent subsequent failed parsing attempts.`),localStorage.removeItem(t.PERSISTENCY_KEY)}}persist(){if(!this.supportsPersistency)return;const e=Array.from(this.store.entries()).map((([e,t])=>[e,Array.from(t.entries())]));localStorage.setItem(t.PERSISTENCY_KEY,JSON.stringify(e))}deleteExpiredCookies(){const e=Date.now();this.store.forEach(((t,r)=>{t.forEach((({expires:r,name:n})=>{void 0!==r&&r.getTime()<=e&&t.delete(n)})),0===t.size&&this.store.delete(r)}))}}})),br=i((function(e,t){var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PERSISTENCY_KEY=t.store=void 0,Object.defineProperty(t,"store",{enumerable:!0,get:function(){return r(Er).default}}),Object.defineProperty(t,"PERSISTENCY_KEY",{enumerable:!0,get:function(){return Er.PERSISTENCY_KEY}})}));function Tr(){return w(document.cookie)}function Or(e){var t;br.store.hydrate(),e.cookies=Object.assign(Object.assign({},function(e){if("undefined"==typeof location)return{};switch(e.credentials){case"same-origin":return location.origin===e.url.origin?Tr():{};case"include":return Tr();default:return{}}}(e)),Array.from(null===(t=br.store.get(Object.assign(Object.assign({},e),{url:e.url.toString()})))||void 0===t?void 0:t.entries()).reduce(((e,[t,{value:r}])=>Object.assign(e,{[t]:r})),{})),e.headers.set("cookie",Object.entries(e.cookies).map((([e,t])=>`${e}=${t}`)).join("; "))}function wr(e){if(!e.method||!Ut(e.method,"GET")||""!==e.body)return e.body}const _r=(e,t)=>(r,n)=>pe(void 0,void 0,void 0,(function*(){const i=(e=>{const t=e.ports[0];return{send(e){t&&t.postMessage(e)}}})(r);try{const r=function(e){const t={id:e.id,cache:e.cache,credentials:e.credentials,method:e.method,url:new URL(e.url),referrer:e.referrer,referrerPolicy:e.referrerPolicy,redirect:e.redirect,mode:e.mode,params:{},cookies:{},integrity:e.integrity,keepalive:e.keepalive,destination:e.destination,body:wr(e),bodyUsed:e.bodyUsed,headers:new T.Headers(e.headers)};return Or(t),t.body=$t(t.body,t.headers),t}(n.payload);e.emitter.emit("request:start",r),Or(r);const{response:o,handler:s,publicRequest:a,parsedRequest:c}=yield((e,t)=>pe(void 0,void 0,void 0,(function*(){const r=t.filter((t=>t.test(e)));if(0===r.length)return{handler:void 0,response:void 0};const n=yield r.reduce(((t,r)=>pe(void 0,void 0,void 0,(function*(){const n=yield t;if(null==n?void 0:n.response)return t;const i=yield r.run(e);return null===i||i.handler.shouldSkip?null:i.response?(i.response.once&&r.markAsSkipped(!0),i):{request:i.request,handler:i.handler,response:void 0,parsedResult:i.parsedResult}}))),Promise.resolve(null));return n?{handler:n.handler,publicRequest:n.request,parsedRequest:n.parsedResult,response:n.response}:{handler:void 0,response:void 0}})))(r,e.requestHandlers);if(!s)return lr(r,e.requestHandlers,t.onUnhandledRequest),e.emitter.emit("request:unhandled",r),e.emitter.emit("request:end",r),i.send({type:"MOCK_NOT_FOUND"});if(e.emitter.emit("request:match",r),!o)return console.warn("[MSW] Expected a mocking resolver function to return a mocked response Object, but got: %s. Original response is going to be used instead.",o),e.emitter.emit("request:end",r),i.send({type:"MOCK_NOT_FOUND"});!function(e,t){br.store.add(Object.assign(Object.assign({},e),{url:e.url.toString()}),t),br.store.persist()}(r,o);const u=Object.assign(Object.assign({},o),{headers:T.headersToList(o.headers)});t.quiet||setTimeout((()=>{s.log(a,u,s,c)}),o.delay),e.emitter.emit("request:end",r),i.send({type:"MOCK_SUCCESS",payload:u})}catch(e){if(e instanceof Xt)return i.send({type:"NETWORK_ERROR",payload:{name:e.name,message:e.message}});i.send({type:"INTERNAL_ERROR",payload:{status:500,body:JSON.stringify({errorType:e.constructor.name,message:e.message,location:e.stack})}})}}));const Nr={serviceWorker:{url:"/mockServiceWorker.js",options:null},quiet:!1,waitUntilReady:!0,onUnhandledRequest:"bypass",findWorker:(e,t)=>e===t},Sr=e=>function(t){const r=j(Nr,t||{});e.startOptions=r;const n=(()=>pe(this,void 0,void 0,(function*(){if(!("serviceWorker"in navigator))throw new Error("[MSW] Failed to register a Service Worker: this browser does not support Service Workers (see https://caniuse.com/serviceworkers), or your application is running on an insecure host (consider using HTTPS for custom hostnames).");e.events.removeAllListeners(),e.workerChannel.on("REQUEST",_r(e,r)),e.workerChannel.on("RESPONSE",function(e){return(t,r)=>{var n;const{payload:i}=r;if(null===(n=i.type)||void 0===n?void 0:n.includes("opaque"))return;const o=new Response(i.body||null,i);"msw"===o.headers.get("x-powered-by")?e.emitter.emit("response:mocked",o,i.requestId):e.emitter.emit("response:bypass",o,i.requestId)}}(e));const n=yield ve(r.serviceWorker.url,r.serviceWorker.options,r.findWorker),[i,o]=n;if(!i){const e=(null==t?void 0:t.findWorker)?`[MSW] Failed to locate the Service Worker registration using a custom "findWorker" predicate.\n\nPlease ensure that the custom predicate properly locates the Service Worker registration at "${r.serviceWorker.url}".\nMore details: https://mswjs.io/docs/api/setup-worker/start#findworker\n`:`[MSW] Failed to locate the Service Worker registration.\n\nThis most likely means that the worker script URL "${r.serviceWorker.url}" cannot resolve against the actual public hostname (${location.host}). This may happen if your application runs behind a proxy, or has a dynamic hostname.\n\nPlease consider using a custom "serviceWorker.url" option to point to the actual worker script location, or a custom "findWorker" option to resolve the Service Worker registration manually. More details: https://mswjs.io/docs/api/setup-worker/start`;throw new Error(e)}e.worker=i,e.registration=o,e.events.addListener(window,"beforeunload",(()=>{"redundant"!==i.state&&e.workerChannel.send("CLIENT_CLOSED"),window.clearInterval(e.keepAliveInterval)}));const[s]=yield fe((()=>function(e,t){return pe(this,void 0,void 0,(function*(){e.workerChannel.send("INTEGRITY_CHECK_REQUEST");const{payload:r}=yield e.events.once("INTEGRITY_CHECK_RESPONSE");if("82ef9b96d8393b6da34527d1d6e19187"!==r)throw new Error(`Currently active Service Worker (${r}) is behind the latest published one (82ef9b96d8393b6da34527d1d6e19187).`);return t}))}(e,i)));return s&&console.error(`[MSW] Detected outdated Service Worker: ${s.message}\n\nThe mocking is still enabled, but it's highly recommended that you update your Service Worker by running:\n\n$ npx msw init <PUBLIC_DIR>\n\nThis is necessary to ensure that the Service Worker is in sync with the library to guarantee its stability.\nIf this message still persists after updating, please report an issue: https://github.com/open-draft/msw/issues `),yield((e,t)=>pe(void 0,void 0,void 0,(function*(){return e.workerChannel.send("MOCK_ACTIVATE"),e.events.once("MOCKING_ENABLED").then((()=>{(null==t?void 0:t.quiet)||(console.groupCollapsed("%c[MSW] Mocking enabled.","color:orangered;font-weight:bold;"),console.log("%cDocumentation: %chttps://mswjs.io/docs","font-weight:bold","font-weight:normal"),console.log("Found an issue? https://github.com/mswjs/msw/issues"),console.groupEnd())}))})))(e,t).catch((e=>{throw new Error(`Failed to enable mocking: ${null==e?void 0:e.message}`)})),e.keepAliveInterval=window.setInterval((()=>e.workerChannel.send("KEEPALIVE_REQUEST")),5e3),o})))();return r.waitUntilReady&&function(e){const t=window.XMLHttpRequest.prototype.send;window.XMLHttpRequest.prototype.send=function(...r){fe((()=>e)).then((()=>{window.XMLHttpRequest.prototype.send=t,this.send(...r)}))};const r=window.fetch;window.fetch=(...t)=>pe(this,void 0,void 0,(function*(){return yield fe((()=>e)),window.fetch=r,window.fetch(...t)}))}(n),n},kr=e=>function(){var t;e.workerChannel.send("MOCK_DEACTIVATE"),e.events.removeAllListeners(),e.emitter.removeAllListeners(),window.clearInterval(e.keepAliveInterval),(null===(t=e.startOptions)||void 0===t?void 0:t.quiet)||console.log("%c[MSW] Mocking disabled.","color:orangered;font-weight:bold;")};let Ir=[];function xr(e){return(t,r)=>new ar(e,t,r)}const Ar={head:xr(e.RESTMethods.HEAD),get:xr(e.RESTMethods.GET),post:xr(e.RESTMethods.POST),put:xr(e.RESTMethods.PUT),delete:xr(e.RESTMethods.DELETE),patch:xr(e.RESTMethods.PATCH),options:xr(e.RESTMethods.OPTIONS)};function Rr(e,t){return(r,n)=>new ur(e,r,t,n)}function Cr(e){return t=>new ur("all",new RegExp(".*"),e,t)}const Lr={operation:Cr("*"),query:Rr("query","*"),mutation:Rr("mutation","*")};const jr=Object.assign(Object.assign({},Lr),{link:function(e){return{operation:Cr(e),query:Rr("query",e),mutation:Rr("mutation",e)}}});return e.GraphQLHandler=ur,e.RequestHandler=ir,e.RestHandler=ar,e.compose=Qt,e.context=G,e.createResponseComposition=tr,e.defaultContext=nr,e.defaultResponse=Zt,e.graphql=jr,e.graphqlContext=cr,e.matchRequestUrl=zt,e.response=rr,e.rest=Ar,e.restContext=sr,e.setupWorker=function(...e){e.forEach((e=>{if(Array.isArray(e))throw new Error('[MSW] Failed to call "setupWorker" given an Array of request handlers (setupWorker([a, b])), expected to receive each handler individually: setupWorker(a, b).')}));const t={startOptions:void 0,worker:null,registration:null,requestHandlers:[...e],emitter:new he.StrictEventEmitter,workerChannel:{on(e,r){t.events.addListener(navigator.serviceWorker,"message",(n=>{if(n.source!==t.worker)return;const i=C(n.data);i&&i.type===e&&r(n,i)}))},send(e){var r;null===(r=t.worker)||void 0===r||r.postMessage(e)}},events:{addListener:(e,t,r)=>(e.addEventListener(t,r),Ir.push({eventType:t,target:e,callback:r}),()=>{e.removeEventListener(t,r)}),removeAllListeners(){for(const{target:e,eventType:t,callback:r}of Ir)e.removeEventListener(t,r);Ir=[]},once(e){const r=[];return new Promise(((n,i)=>{r.push(t.events.addListener(navigator.serviceWorker,"message",(t=>{try{const r=JSON.parse(t.data);r.type===e&&n(r)}catch(e){i(e)}})),t.events.addListener(navigator.serviceWorker,"messageerror",i))})).finally((()=>{r.forEach((e=>e()))}))}}};if(M())throw new Error("[MSW] Failed to execute `setupWorker` in a non-browser environment. Consider using `setupServer` for Node.js environment instead.");return{start:Sr(t),stop:kr(t),use(...e){console.log("adding new handlers",e),function(e,...t){e.unshift(...t)}(t.requestHandlers,...e)},restoreHandlers(){t.requestHandlers.forEach((e=>{e.markAsSkipped(!1)}))},resetHandlers(...r){t.requestHandlers=function(e,...t){return t.length>0?[...t]:[...e]}(e,...r)},printHandlers(){t.requestHandlers.forEach((e=>{const{header:t,callFrame:r}=e.info,n=e.info.hasOwnProperty("operationType")?"[graphql]":"[rest]";console.groupCollapsed(`${n} ${t}`),r&&console.log(`Declaration: ${r}`),console.log("Handler:",e),e instanceof ar&&console.log("Match:",`https://mswjs.io/repl?path=${e.info.mask}`),console.groupEnd()}))},on(e,r){t.emitter.addListener(e,r)}}},e}({});
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
/* eslint-disable */
|
|
8
8
|
/* tslint:disable */
|
|
9
9
|
|
|
10
|
-
const INTEGRITY_CHECKSUM = '
|
|
10
|
+
const INTEGRITY_CHECKSUM = '82ef9b96d8393b6da34527d1d6e19187'
|
|
11
11
|
const bypassHeaderName = 'x-msw-bypass'
|
|
12
12
|
const activeClientIds = new Set()
|
|
13
13
|
|
|
@@ -114,7 +114,7 @@ async function handleRequest(event, requestId) {
|
|
|
114
114
|
// Send back the response clone for the "response:*" life-cycle events.
|
|
115
115
|
// Ensure MSW is active and ready to handle the message, otherwise
|
|
116
116
|
// this message will pend indefinitely.
|
|
117
|
-
if (activeClientIds.has(client.id)) {
|
|
117
|
+
if (client && activeClientIds.has(client.id)) {
|
|
118
118
|
;(async function () {
|
|
119
119
|
const clonedResponse = response.clone()
|
|
120
120
|
sendToClient(client, {
|
package/lib/umd/index.js
CHANGED
|
@@ -1822,9 +1822,17 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
|
|
|
1822
1822
|
return acc;
|
|
1823
1823
|
}
|
|
1824
1824
|
const result = yield handler.run(request);
|
|
1825
|
-
if (result === null ||
|
|
1825
|
+
if (result === null || result.handler.shouldSkip) {
|
|
1826
1826
|
return null;
|
|
1827
1827
|
}
|
|
1828
|
+
if (!result.response) {
|
|
1829
|
+
return {
|
|
1830
|
+
request: result.request,
|
|
1831
|
+
handler: result.handler,
|
|
1832
|
+
response: undefined,
|
|
1833
|
+
parsedResult: result.parsedResult,
|
|
1834
|
+
};
|
|
1835
|
+
}
|
|
1828
1836
|
if (result.response.once) {
|
|
1829
1837
|
handler.markAsSkipped(true);
|
|
1830
1838
|
}
|
|
@@ -6593,7 +6601,7 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
|
|
|
6593
6601
|
if (!contentType) {
|
|
6594
6602
|
return undefined;
|
|
6595
6603
|
}
|
|
6596
|
-
const [, ...directives] = contentType.split(
|
|
6604
|
+
const [, ...directives] = contentType.split(/; */);
|
|
6597
6605
|
const boundary = directives
|
|
6598
6606
|
.filter((d) => d.startsWith('boundary='))
|
|
6599
6607
|
.map((s) => s.replace(/^boundary=/, ''))[0];
|
|
@@ -7707,8 +7715,8 @@ Invalid value has been removed from localStorage to prevent subsequent failed pa
|
|
|
7707
7715
|
const { payload: actualChecksum } = yield context.events.once('INTEGRITY_CHECK_RESPONSE');
|
|
7708
7716
|
// Compare the response from the Service Worker and the
|
|
7709
7717
|
// global variable set by webpack upon build.
|
|
7710
|
-
if (actualChecksum !== "
|
|
7711
|
-
throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"
|
|
7718
|
+
if (actualChecksum !== "82ef9b96d8393b6da34527d1d6e19187") {
|
|
7719
|
+
throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"82ef9b96d8393b6da34527d1d6e19187"}).`);
|
|
7712
7720
|
}
|
|
7713
7721
|
return serviceWorker;
|
|
7714
7722
|
});
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
/* eslint-disable */
|
|
8
8
|
/* tslint:disable */
|
|
9
9
|
|
|
10
|
-
const INTEGRITY_CHECKSUM = '
|
|
10
|
+
const INTEGRITY_CHECKSUM = '82ef9b96d8393b6da34527d1d6e19187'
|
|
11
11
|
const bypassHeaderName = 'x-msw-bypass'
|
|
12
12
|
const activeClientIds = new Set()
|
|
13
13
|
|
|
@@ -114,7 +114,7 @@ async function handleRequest(event, requestId) {
|
|
|
114
114
|
// Send back the response clone for the "response:*" life-cycle events.
|
|
115
115
|
// Ensure MSW is active and ready to handle the message, otherwise
|
|
116
116
|
// this message will pend indefinitely.
|
|
117
|
-
if (activeClientIds.has(client.id)) {
|
|
117
|
+
if (client && activeClientIds.has(client.id)) {
|
|
118
118
|
;(async function () {
|
|
119
119
|
const clonedResponse = response.clone()
|
|
120
120
|
sendToClient(client, {
|
package/native/lib/index.js
CHANGED
|
@@ -2218,9 +2218,17 @@ const getResponse = (request, handlers) => __awaiter(void 0, void 0, void 0, fun
|
|
|
2218
2218
|
return acc;
|
|
2219
2219
|
}
|
|
2220
2220
|
const result = yield handler.run(request);
|
|
2221
|
-
if (result === null ||
|
|
2221
|
+
if (result === null || result.handler.shouldSkip) {
|
|
2222
2222
|
return null;
|
|
2223
2223
|
}
|
|
2224
|
+
if (!result.response) {
|
|
2225
|
+
return {
|
|
2226
|
+
request: result.request,
|
|
2227
|
+
handler: result.handler,
|
|
2228
|
+
response: undefined,
|
|
2229
|
+
parsedResult: result.parsedResult,
|
|
2230
|
+
};
|
|
2231
|
+
}
|
|
2224
2232
|
if (result.response.once) {
|
|
2225
2233
|
handler.markAsSkipped(true);
|
|
2226
2234
|
}
|
|
@@ -2812,7 +2820,7 @@ function parseMultipartData(data, headers) {
|
|
|
2812
2820
|
if (!contentType) {
|
|
2813
2821
|
return undefined;
|
|
2814
2822
|
}
|
|
2815
|
-
const [, ...directives] = contentType.split(
|
|
2823
|
+
const [, ...directives] = contentType.split(/; */);
|
|
2816
2824
|
const boundary = directives
|
|
2817
2825
|
.filter((d) => d.startsWith('boundary='))
|
|
2818
2826
|
.map((s) => s.replace(/^boundary=/, ''))[0];
|
|
@@ -7612,10 +7620,10 @@ function createSetupServer(...interceptors$1) {
|
|
|
7612
7620
|
const { response, handler } = yield getResponse(mockedRequest, currentHandlers);
|
|
7613
7621
|
if (!handler) {
|
|
7614
7622
|
emitter.emit('request:unhandled', mockedRequest);
|
|
7623
|
+
onUnhandledRequest(mockedRequest, currentHandlers, resolvedOptions.onUnhandledRequest);
|
|
7615
7624
|
}
|
|
7616
7625
|
if (!response) {
|
|
7617
7626
|
emitter.emit('request:end', mockedRequest);
|
|
7618
|
-
onUnhandledRequest(mockedRequest, currentHandlers, resolvedOptions.onUnhandledRequest);
|
|
7619
7627
|
return;
|
|
7620
7628
|
}
|
|
7621
7629
|
emitter.emit('request:match', mockedRequest);
|
package/node/lib/index.js
CHANGED
|
@@ -2220,9 +2220,17 @@ const getResponse = (request, handlers) => __awaiter(void 0, void 0, void 0, fun
|
|
|
2220
2220
|
return acc;
|
|
2221
2221
|
}
|
|
2222
2222
|
const result = yield handler.run(request);
|
|
2223
|
-
if (result === null ||
|
|
2223
|
+
if (result === null || result.handler.shouldSkip) {
|
|
2224
2224
|
return null;
|
|
2225
2225
|
}
|
|
2226
|
+
if (!result.response) {
|
|
2227
|
+
return {
|
|
2228
|
+
request: result.request,
|
|
2229
|
+
handler: result.handler,
|
|
2230
|
+
response: undefined,
|
|
2231
|
+
parsedResult: result.parsedResult,
|
|
2232
|
+
};
|
|
2233
|
+
}
|
|
2226
2234
|
if (result.response.once) {
|
|
2227
2235
|
handler.markAsSkipped(true);
|
|
2228
2236
|
}
|
|
@@ -2814,7 +2822,7 @@ function parseMultipartData(data, headers) {
|
|
|
2814
2822
|
if (!contentType) {
|
|
2815
2823
|
return undefined;
|
|
2816
2824
|
}
|
|
2817
|
-
const [, ...directives] = contentType.split(
|
|
2825
|
+
const [, ...directives] = contentType.split(/; */);
|
|
2818
2826
|
const boundary = directives
|
|
2819
2827
|
.filter((d) => d.startsWith('boundary='))
|
|
2820
2828
|
.map((s) => s.replace(/^boundary=/, ''))[0];
|
|
@@ -7614,10 +7622,10 @@ function createSetupServer(...interceptors$1) {
|
|
|
7614
7622
|
const { response, handler } = yield getResponse(mockedRequest, currentHandlers);
|
|
7615
7623
|
if (!handler) {
|
|
7616
7624
|
emitter.emit('request:unhandled', mockedRequest);
|
|
7625
|
+
onUnhandledRequest(mockedRequest, currentHandlers, resolvedOptions.onUnhandledRequest);
|
|
7617
7626
|
}
|
|
7618
7627
|
if (!response) {
|
|
7619
7628
|
emitter.emit('request:end', mockedRequest);
|
|
7620
|
-
onUnhandledRequest(mockedRequest, currentHandlers, resolvedOptions.onUnhandledRequest);
|
|
7621
7629
|
return;
|
|
7622
7630
|
}
|
|
7623
7631
|
emitter.emit('request:match', mockedRequest);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "msw",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.1",
|
|
4
4
|
"description": "Seamless REST/GraphQL API mocking library for browser and Node.js.",
|
|
5
5
|
"main": "lib/umd/index.js",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
@@ -92,7 +92,6 @@
|
|
|
92
92
|
"@rollup/plugin-json": "^4.1.0",
|
|
93
93
|
"@rollup/plugin-node-resolve": "^11.1.0",
|
|
94
94
|
"@rollup/plugin-replace": "^2.4.1",
|
|
95
|
-
"@types/express": "^4.17.11",
|
|
96
95
|
"@types/fs-extra": "^9.0.6",
|
|
97
96
|
"@types/jest": "^26.0.20",
|
|
98
97
|
"@types/json-bigint": "^1.0.0",
|
|
@@ -109,15 +108,13 @@
|
|
|
109
108
|
"eslint": "^7.18.0",
|
|
110
109
|
"eslint-config-prettier": "^8.1.0",
|
|
111
110
|
"eslint-plugin-prettier": "^3.3.1",
|
|
112
|
-
"express": "^4.17.1",
|
|
113
111
|
"fs-extra": "^9.1.0",
|
|
114
112
|
"fs-teardown": "^0.1.1",
|
|
115
113
|
"husky": "^5.1.1",
|
|
116
|
-
"ignore-loader": "^0.1.2",
|
|
117
114
|
"jest": "^26.6.3",
|
|
118
115
|
"json-bigint": "^1.0.0",
|
|
119
116
|
"lint-staged": "^10.5.1",
|
|
120
|
-
"page-with": "^0.
|
|
117
|
+
"page-with": "^0.3.4",
|
|
121
118
|
"prettier": "^2.2.1",
|
|
122
119
|
"regenerator-runtime": "^0.13.7",
|
|
123
120
|
"rimraf": "^3.0.2",
|