@squide/msw 4.0.4 → 4.0.6
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/CHANGELOG.md +18 -0
- package/dist/{mswPlugin.d.ts → MswPlugin.d.ts} +6 -1
- package/dist/{mswPlugin.js → MswPlugin.js} +17 -6
- package/dist/MswPlugin.js.map +1 -0
- package/dist/MswState.d.ts +12 -0
- package/dist/MswState.js +31 -0
- package/dist/MswState.js.map +1 -0
- package/dist/{requestHandlerRegistry.d.ts → RequestHandlerRegistry.d.ts} +2 -0
- package/dist/{requestHandlerRegistry.js → RequestHandlerRegistry.js} +7 -7
- package/dist/RequestHandlerRegistry.js.map +1 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +1 -0
- package/dist/internal.js +10 -0
- package/dist/internal.js.map +1 -0
- package/package.json +17 -12
- package/src/{mswPlugin.ts → MswPlugin.ts} +20 -3
- package/src/MswState.ts +40 -0
- package/src/{requestHandlerRegistry.ts → RequestHandlerRegistry.ts} +7 -2
- package/src/index.ts +2 -3
- package/src/internal.ts +2 -0
- package/dist/mswPlugin.js.map +0 -1
- package/dist/mswState.d.ts +0 -14
- package/dist/mswState.js +0 -54
- package/dist/mswState.js.map +0 -1
- package/dist/requestHandlerRegistry.js.map +0 -1
- package/src/mswState.ts +0 -65
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @squide/msw
|
|
2
2
|
|
|
3
|
+
## 4.0.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#342](https://github.com/workleap/wl-squide/pull/342) [`3be4070`](https://github.com/workleap/wl-squide/commit/3be4070d2d647804903b5cc01113e20d5d71cb11) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Minor fine tuning following v16 release.
|
|
8
|
+
|
|
9
|
+
- Updated dependencies [[`3be4070`](https://github.com/workleap/wl-squide/commit/3be4070d2d647804903b5cc01113e20d5d71cb11)]:
|
|
10
|
+
- @squide/core@6.1.5
|
|
11
|
+
|
|
12
|
+
## 4.0.5
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- [#339](https://github.com/workleap/wl-squide/pull/339) [`de6b333`](https://github.com/workleap/wl-squide/commit/de6b3335f538252bac9545d82c8f1218612eb923) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Bumped packages version.
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [[`de6b333`](https://github.com/workleap/wl-squide/commit/de6b3335f538252bac9545d82c8f1218612eb923)]:
|
|
19
|
+
- @squide/core@6.1.4
|
|
20
|
+
|
|
3
21
|
## 4.0.4
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { Plugin, type Runtime } from "@squide/core";
|
|
2
2
|
import type { Logger } from "@workleap/logging";
|
|
3
3
|
import type { RequestHandler } from "msw";
|
|
4
|
+
import { MswState } from "./MswState.ts";
|
|
4
5
|
export declare const MswPluginName = "msw-plugin";
|
|
6
|
+
export interface MswPluginOptions {
|
|
7
|
+
state?: MswState;
|
|
8
|
+
}
|
|
5
9
|
export interface MswPluginRegisterRequestHandlersOptions {
|
|
6
10
|
logger?: Logger;
|
|
7
11
|
}
|
|
8
12
|
export declare class MswPlugin extends Plugin {
|
|
9
13
|
#private;
|
|
10
|
-
constructor(runtime: Runtime);
|
|
14
|
+
constructor(runtime: Runtime, options?: MswPluginOptions);
|
|
15
|
+
get mswState(): MswState;
|
|
11
16
|
registerRequestHandlers(handlers: RequestHandler[], options?: MswPluginRegisterRequestHandlersOptions): void;
|
|
12
17
|
get requestHandlers(): RequestHandler[];
|
|
13
18
|
}
|
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
import { Plugin, isNil } from "@squide/core";
|
|
2
|
-
import {
|
|
2
|
+
import { MswState } from "./MswState.js";
|
|
3
|
+
import { RequestHandlerRegistry } from "./RequestHandlerRegistry.js";
|
|
3
4
|
|
|
4
5
|
;// CONCATENATED MODULE: external "@squide/core"
|
|
5
6
|
|
|
6
|
-
;// CONCATENATED MODULE: external "./
|
|
7
|
+
;// CONCATENATED MODULE: external "./MswState.js"
|
|
8
|
+
|
|
9
|
+
;// CONCATENATED MODULE: external "./RequestHandlerRegistry.js"
|
|
10
|
+
|
|
11
|
+
;// CONCATENATED MODULE: ./src/MswPlugin.ts
|
|
7
12
|
|
|
8
|
-
;// CONCATENATED MODULE: ./src/mswPlugin.ts
|
|
9
13
|
|
|
10
14
|
|
|
11
15
|
const MswPluginName = "msw-plugin";
|
|
12
16
|
class MswPlugin extends Plugin {
|
|
13
|
-
#
|
|
14
|
-
|
|
17
|
+
#mswState;
|
|
18
|
+
#requestHandlerRegistry;
|
|
19
|
+
constructor(runtime, options = {}){
|
|
20
|
+
const { state = new MswState() } = options;
|
|
15
21
|
super(MswPluginName, runtime);
|
|
22
|
+
this.#mswState = state;
|
|
23
|
+
this.#requestHandlerRegistry = new RequestHandlerRegistry(this.#mswState);
|
|
24
|
+
}
|
|
25
|
+
get mswState() {
|
|
26
|
+
return this.#mswState;
|
|
16
27
|
}
|
|
17
28
|
registerRequestHandlers(handlers, options = {}) {
|
|
18
29
|
const { logger } = options;
|
|
@@ -33,4 +44,4 @@ function getMswPlugin(runtime) {
|
|
|
33
44
|
|
|
34
45
|
export { MswPlugin, MswPluginName, getMswPlugin };
|
|
35
46
|
|
|
36
|
-
//# sourceMappingURL=
|
|
47
|
+
//# sourceMappingURL=MswPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MswPlugin.js","sources":["../src/MswPlugin.ts"],"sourcesContent":["import { Plugin, isNil, type Runtime } from \"@squide/core\";\nimport type { Logger } from \"@workleap/logging\";\nimport type { RequestHandler } from \"msw\";\nimport { MswState } from \"./MswState.ts\";\nimport { RequestHandlerRegistry } from \"./RequestHandlerRegistry.ts\";\n\nexport const MswPluginName = \"msw-plugin\";\n\nexport interface MswPluginOptions {\n state?: MswState;\n}\n\nexport interface MswPluginRegisterRequestHandlersOptions {\n logger?: Logger;\n}\n\nexport class MswPlugin extends Plugin {\n readonly #mswState: MswState;\n readonly #requestHandlerRegistry: RequestHandlerRegistry;\n\n constructor(runtime: Runtime, options: MswPluginOptions = {}) {\n const {\n state = new MswState()\n } = options;\n\n super(MswPluginName, runtime);\n\n this.#mswState = state;\n this.#requestHandlerRegistry = new RequestHandlerRegistry(this.#mswState);\n }\n\n get mswState() {\n return this.#mswState;\n }\n\n registerRequestHandlers(handlers: RequestHandler[], options: MswPluginRegisterRequestHandlersOptions = {}) {\n const {\n logger\n } = options;\n\n this.#requestHandlerRegistry.add(handlers);\n\n (logger ? logger : this._runtime.logger)\n .withText(\"[squide] The following MSW request handlers has been registered:\")\n .withObject(handlers)\n .debug();\n }\n\n get requestHandlers(): RequestHandler[] {\n return this.#requestHandlerRegistry.handlers;\n }\n}\n\nexport function getMswPlugin(runtime: Runtime) {\n const plugin = runtime.getPlugin(MswPluginName);\n\n if (isNil(plugin)) {\n throw new Error(\"[squide] The getMswPlugin function is called but no MswPlugin instance has been registered with the runtime.\");\n }\n\n return plugin as MswPlugin;\n}\n"],"names":["Plugin","isNil","MswState","RequestHandlerRegistry","MswPluginName","MswPlugin","runtime","options","state","handlers","logger","getMswPlugin","plugin","Error"],"mappings":";;;;;;;;;;;AAA2D;AAGlB;AAC4B;AAE9D,MAAMI,gBAAgB,aAAa;AAUnC,MAAMC,kBAAkBL,MAAMA;IACxB,SAAS,CAAW;IACpB,uBAAuB,CAAyB;IAEzD,YAAYM,OAAgB,EAAEC,UAA4B,CAAC,CAAC,CAAE;QAC1D,MAAM,EACFC,QAAQ,IAAIN,QAAQA,EAAE,EACzB,GAAGK;QAEJ,KAAK,CAACH,eAAeE;QAErB,IAAI,CAAC,SAAS,GAAGE;QACjB,IAAI,CAAC,uBAAuB,GAAG,IAAIL,sBAAsBA,CAAC,IAAI,CAAC,SAAS;IAC5E;IAEA,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,wBAAwBM,QAA0B,EAAEF,UAAmD,CAAC,CAAC,EAAE;QACvG,MAAM,EACFG,MAAM,EACT,GAAGH;QAEJ,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAACE;QAEhCC,CAAAA,SAASA,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAK,EACjC,QAAQ,CAAC,oEACT,UAAU,CAACD,UACX,KAAK;IACd;IAEA,IAAI,kBAAoC;QACpC,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ;IAChD;AACJ;AAEO,SAASE,aAAaL,OAAgB;IACzC,MAAMM,SAASN,QAAQ,SAAS,CAACF;IAEjC,IAAIH,KAAKA,CAACW,SAAS;QACf,MAAM,IAAIC,MAAM;IACpB;IAEA,OAAOD;AACX"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type MswReadyListener = () => void;
|
|
2
|
+
export interface MswStateOptions {
|
|
3
|
+
isReady?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class MswState {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(options?: MswStateOptions);
|
|
8
|
+
addMswReadyListener(callback: MswReadyListener): void;
|
|
9
|
+
removeMswReadyListener(callback: MswReadyListener): void;
|
|
10
|
+
setAsReady(): void;
|
|
11
|
+
get isReady(): boolean;
|
|
12
|
+
}
|
package/dist/MswState.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
;// CONCATENATED MODULE: ./src/MswState.ts
|
|
3
|
+
class MswState {
|
|
4
|
+
#isReady;
|
|
5
|
+
#mswReadyListeners = new Set();
|
|
6
|
+
constructor(options = {}){
|
|
7
|
+
const { isReady = false } = options;
|
|
8
|
+
this.#isReady = isReady;
|
|
9
|
+
}
|
|
10
|
+
addMswReadyListener(callback) {
|
|
11
|
+
this.#mswReadyListeners.add(callback);
|
|
12
|
+
}
|
|
13
|
+
removeMswReadyListener(callback) {
|
|
14
|
+
this.#mswReadyListeners.delete(callback);
|
|
15
|
+
}
|
|
16
|
+
setAsReady() {
|
|
17
|
+
if (!this.#isReady) {
|
|
18
|
+
this.#isReady = true;
|
|
19
|
+
this.#mswReadyListeners.forEach((x)=>{
|
|
20
|
+
x();
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
get isReady() {
|
|
25
|
+
return this.#isReady;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { MswState };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=MswState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MswState.js","sources":["../src/MswState.ts"],"sourcesContent":["export type MswReadyListener = () => void;\n\nexport interface MswStateOptions {\n isReady?: boolean;\n}\n\nexport class MswState {\n #isReady: boolean;\n readonly #mswReadyListeners = new Set<MswReadyListener>();\n\n constructor(options: MswStateOptions = {}) {\n const {\n isReady = false\n } = options;\n\n this.#isReady = isReady;\n }\n\n addMswReadyListener(callback: MswReadyListener) {\n this.#mswReadyListeners.add(callback);\n }\n\n removeMswReadyListener(callback: MswReadyListener) {\n this.#mswReadyListeners.delete(callback);\n }\n\n setAsReady() {\n if (!this.#isReady) {\n this.#isReady = true;\n\n this.#mswReadyListeners.forEach(x => {\n x();\n });\n }\n }\n\n get isReady() {\n return this.#isReady;\n }\n}\n"],"names":["MswState","Set","options","isReady","callback","x"],"mappings":";;AAMO,MAAMA;IACT,QAAQ,CAAU;IACT,kBAAkB,GAAG,IAAIC,MAAwB;IAE1D,YAAYC,UAA2B,CAAC,CAAC,CAAE;QACvC,MAAM,EACFC,UAAU,KAAK,EAClB,GAAGD;QAEJ,IAAI,CAAC,QAAQ,GAAGC;IACpB;IAEA,oBAAoBC,QAA0B,EAAE;QAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAACA;IAChC;IAEA,uBAAuBA,QAA0B,EAAE;QAC/C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAACA;IACnC;IAEA,aAAa;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG;YAEhB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAACC,CAAAA;gBAC5BA;YACJ;QACJ;IACJ;IAEA,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,QAAQ;IACxB;AACJ"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { isMswReady } from "./mswState.js";
|
|
2
|
-
|
|
3
|
-
;// CONCATENATED MODULE: external "./mswState.js"
|
|
4
|
-
|
|
5
|
-
;// CONCATENATED MODULE: ./src/requestHandlerRegistry.ts
|
|
6
1
|
|
|
2
|
+
;// CONCATENATED MODULE: ./src/RequestHandlerRegistry.ts
|
|
7
3
|
class RequestHandlerRegistry {
|
|
4
|
+
#mswState;
|
|
8
5
|
#handlers = [];
|
|
6
|
+
constructor(mswState){
|
|
7
|
+
this.#mswState = mswState;
|
|
8
|
+
}
|
|
9
9
|
add(handlers) {
|
|
10
|
-
if (
|
|
10
|
+
if (this.#mswState.isReady) {
|
|
11
11
|
throw new Error("[squide] MSW request handlers cannot be registered once MSW is started. Did you defer the registration of a MSW request handler?");
|
|
12
12
|
}
|
|
13
13
|
this.#handlers.push(...handlers);
|
|
@@ -21,4 +21,4 @@ class RequestHandlerRegistry {
|
|
|
21
21
|
|
|
22
22
|
export { RequestHandlerRegistry };
|
|
23
23
|
|
|
24
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=RequestHandlerRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestHandlerRegistry.js","sources":["../src/RequestHandlerRegistry.ts"],"sourcesContent":["import type { RequestHandler } from \"msw\";\nimport { MswState } from \"./MswState.ts\";\n\nexport class RequestHandlerRegistry {\n readonly #mswState: MswState;\n readonly #handlers: RequestHandler[] = [];\n\n constructor(mswState: MswState) {\n this.#mswState = mswState;\n }\n\n add(handlers: RequestHandler[]) {\n if (this.#mswState.isReady) {\n throw new Error(\"[squide] MSW request handlers cannot be registered once MSW is started. Did you defer the registration of a MSW request handler?\");\n }\n\n this.#handlers.push(...handlers);\n }\n\n // Must specify the return type, otherwise we get a TS2742: The inferred type cannot be named without a reference to X. This is likely not portable.\n // A type annotation is necessary.\n get handlers(): RequestHandler[] {\n return this.#handlers;\n }\n}\n\n"],"names":["RequestHandlerRegistry","mswState","handlers","Error"],"mappings":";;AAGO,MAAMA;IACA,SAAS,CAAW;IACpB,SAAS,GAAqB,EAAE,CAAC;IAE1C,YAAYC,QAAkB,CAAE;QAC5B,IAAI,CAAC,SAAS,GAAGA;IACrB;IAEA,IAAIC,QAA0B,EAAE;QAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACxB,MAAM,IAAIC,MAAM;QACpB;QAEA,IAAI,CAAC,SAAS,CAAC,IAAI,IAAID;IAC3B;IAEA,oJAAoJ;IACpJ,kCAAkC;IAClC,IAAI,WAA6B;QAC7B,OAAO,IAAI,CAAC,SAAS;IACzB;AACJ"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export * from "./requestHandlerRegistry.ts";
|
|
1
|
+
export { getMswPlugin, MswPlugin, MswPluginName, type MswPluginOptions, type MswPluginRegisterRequestHandlersOptions } from "./MswPlugin.ts";
|
|
2
|
+
export { MswState, type MswReadyListener, type MswStateOptions } from "./MswState.ts";
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export * from "./requestHandlerRegistry.js";
|
|
1
|
+
import { MswPlugin, MswPluginName, getMswPlugin } from "./MswPlugin.js";
|
|
2
|
+
import { MswState } from "./MswState.js";
|
|
4
3
|
|
|
5
|
-
;// CONCATENATED MODULE: ./
|
|
4
|
+
;// CONCATENATED MODULE: external "./MswPlugin.js"
|
|
5
|
+
|
|
6
|
+
;// CONCATENATED MODULE: external "./MswState.js"
|
|
6
7
|
|
|
8
|
+
;// CONCATENATED MODULE: ./src/index.ts
|
|
7
9
|
|
|
8
10
|
|
|
9
11
|
|
|
12
|
+
export { MswPlugin, MswPluginName, MswState, getMswPlugin };
|
|
10
13
|
|
|
11
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["export { getMswPlugin, MswPlugin, MswPluginName, type MswPluginOptions, type MswPluginRegisterRequestHandlersOptions } from \"./MswPlugin.ts\";\nexport { MswState, type MswReadyListener, type MswStateOptions } from \"./MswState.ts\";\n\n"],"names":["getMswPlugin","MswPlugin","MswPluginName","MswState"],"mappings":";;;;;;;;AAA6I;AACvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { MswState } from "./MswState.ts";
|
package/dist/internal.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sources":["../src/internal.ts"],"sourcesContent":["export { MswState } from \"./MswState.ts\";\n\n"],"names":["MswState"],"mappings":";;;;;AAAyC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@squide/msw",
|
|
3
3
|
"author": "Workleap",
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.6",
|
|
5
5
|
"description": "Add support for MSW to @squide application shell.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
"types": "./dist/index.d.ts",
|
|
20
20
|
"import": "./dist/index.js",
|
|
21
21
|
"default": "./dist/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./internal": {
|
|
24
|
+
"types": "./dist/internal.d.ts",
|
|
25
|
+
"import": "./dist/internal.js",
|
|
26
|
+
"default": "./dist/internal.js"
|
|
22
27
|
}
|
|
23
28
|
},
|
|
24
29
|
"files": [
|
|
@@ -27,28 +32,28 @@
|
|
|
27
32
|
"CHANGELOG.md"
|
|
28
33
|
],
|
|
29
34
|
"peerDependencies": {
|
|
30
|
-
"msw": "^2.
|
|
35
|
+
"msw": "^2.12.2"
|
|
31
36
|
},
|
|
32
37
|
"dependencies": {
|
|
33
|
-
"@workleap/logging": "^1.3.
|
|
34
|
-
"@squide/core": "6.1.
|
|
38
|
+
"@workleap/logging": "^1.3.2",
|
|
39
|
+
"@squide/core": "6.1.5"
|
|
35
40
|
},
|
|
36
41
|
"devDependencies": {
|
|
37
|
-
"@eslint/js": "9.
|
|
38
|
-
"@rsbuild/core": "1.
|
|
39
|
-
"@rslib/core": "0.
|
|
40
|
-
"@typescript-eslint/parser": "8.
|
|
41
|
-
"@workleap/eslint-configs": "
|
|
42
|
+
"@eslint/js": "9.39.1",
|
|
43
|
+
"@rsbuild/core": "1.6.7",
|
|
44
|
+
"@rslib/core": "0.18.0",
|
|
45
|
+
"@typescript-eslint/parser": "8.47.0",
|
|
46
|
+
"@workleap/eslint-configs": "1.1.5",
|
|
42
47
|
"@workleap/rslib-configs": "1.1.3",
|
|
43
48
|
"@workleap/typescript-configs": "3.0.7",
|
|
44
|
-
"eslint": "9.
|
|
49
|
+
"eslint": "9.39.1",
|
|
45
50
|
"typescript": "5.9.3",
|
|
46
|
-
"typescript-eslint": "8.
|
|
51
|
+
"typescript-eslint": "8.47.0"
|
|
47
52
|
},
|
|
48
53
|
"sideEffects": false,
|
|
49
54
|
"scripts": {
|
|
50
55
|
"build": "rslib build --config ./rslib.build.ts",
|
|
51
|
-
"eslint": "eslint . --max-warnings
|
|
56
|
+
"eslint": "eslint . --max-warnings=0 --cache --cache-location node_modules/.cache/eslint",
|
|
52
57
|
"typecheck": "tsc"
|
|
53
58
|
}
|
|
54
59
|
}
|
|
@@ -1,19 +1,36 @@
|
|
|
1
1
|
import { Plugin, isNil, type Runtime } from "@squide/core";
|
|
2
2
|
import type { Logger } from "@workleap/logging";
|
|
3
3
|
import type { RequestHandler } from "msw";
|
|
4
|
-
import {
|
|
4
|
+
import { MswState } from "./MswState.ts";
|
|
5
|
+
import { RequestHandlerRegistry } from "./RequestHandlerRegistry.ts";
|
|
5
6
|
|
|
6
7
|
export const MswPluginName = "msw-plugin";
|
|
7
8
|
|
|
9
|
+
export interface MswPluginOptions {
|
|
10
|
+
state?: MswState;
|
|
11
|
+
}
|
|
12
|
+
|
|
8
13
|
export interface MswPluginRegisterRequestHandlersOptions {
|
|
9
14
|
logger?: Logger;
|
|
10
15
|
}
|
|
11
16
|
|
|
12
17
|
export class MswPlugin extends Plugin {
|
|
13
|
-
readonly #
|
|
18
|
+
readonly #mswState: MswState;
|
|
19
|
+
readonly #requestHandlerRegistry: RequestHandlerRegistry;
|
|
20
|
+
|
|
21
|
+
constructor(runtime: Runtime, options: MswPluginOptions = {}) {
|
|
22
|
+
const {
|
|
23
|
+
state = new MswState()
|
|
24
|
+
} = options;
|
|
14
25
|
|
|
15
|
-
constructor(runtime: Runtime) {
|
|
16
26
|
super(MswPluginName, runtime);
|
|
27
|
+
|
|
28
|
+
this.#mswState = state;
|
|
29
|
+
this.#requestHandlerRegistry = new RequestHandlerRegistry(this.#mswState);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get mswState() {
|
|
33
|
+
return this.#mswState;
|
|
17
34
|
}
|
|
18
35
|
|
|
19
36
|
registerRequestHandlers(handlers: RequestHandler[], options: MswPluginRegisterRequestHandlersOptions = {}) {
|
package/src/MswState.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type MswReadyListener = () => void;
|
|
2
|
+
|
|
3
|
+
export interface MswStateOptions {
|
|
4
|
+
isReady?: boolean;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export class MswState {
|
|
8
|
+
#isReady: boolean;
|
|
9
|
+
readonly #mswReadyListeners = new Set<MswReadyListener>();
|
|
10
|
+
|
|
11
|
+
constructor(options: MswStateOptions = {}) {
|
|
12
|
+
const {
|
|
13
|
+
isReady = false
|
|
14
|
+
} = options;
|
|
15
|
+
|
|
16
|
+
this.#isReady = isReady;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
addMswReadyListener(callback: MswReadyListener) {
|
|
20
|
+
this.#mswReadyListeners.add(callback);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
removeMswReadyListener(callback: MswReadyListener) {
|
|
24
|
+
this.#mswReadyListeners.delete(callback);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
setAsReady() {
|
|
28
|
+
if (!this.#isReady) {
|
|
29
|
+
this.#isReady = true;
|
|
30
|
+
|
|
31
|
+
this.#mswReadyListeners.forEach(x => {
|
|
32
|
+
x();
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
get isReady() {
|
|
38
|
+
return this.#isReady;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import type { RequestHandler } from "msw";
|
|
2
|
-
import {
|
|
2
|
+
import { MswState } from "./MswState.ts";
|
|
3
3
|
|
|
4
4
|
export class RequestHandlerRegistry {
|
|
5
|
+
readonly #mswState: MswState;
|
|
5
6
|
readonly #handlers: RequestHandler[] = [];
|
|
6
7
|
|
|
8
|
+
constructor(mswState: MswState) {
|
|
9
|
+
this.#mswState = mswState;
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
add(handlers: RequestHandler[]) {
|
|
8
|
-
if (
|
|
13
|
+
if (this.#mswState.isReady) {
|
|
9
14
|
throw new Error("[squide] MSW request handlers cannot be registered once MSW is started. Did you defer the registration of a MSW request handler?");
|
|
10
15
|
}
|
|
11
16
|
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export * from "./requestHandlerRegistry.ts";
|
|
1
|
+
export { getMswPlugin, MswPlugin, MswPluginName, type MswPluginOptions, type MswPluginRegisterRequestHandlersOptions } from "./MswPlugin.ts";
|
|
2
|
+
export { MswState, type MswReadyListener, type MswStateOptions } from "./MswState.ts";
|
|
4
3
|
|
package/src/internal.ts
ADDED
package/dist/mswPlugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mswPlugin.js","sources":["webpack://@squide/msw/./src/mswPlugin.ts"],"sourcesContent":["import { Plugin, isNil, type Runtime } from \"@squide/core\";\nimport type { Logger } from \"@workleap/logging\";\nimport type { RequestHandler } from \"msw\";\nimport { RequestHandlerRegistry } from \"./requestHandlerRegistry.ts\";\n\nexport const MswPluginName = \"msw-plugin\";\n\nexport interface MswPluginRegisterRequestHandlersOptions {\n logger?: Logger;\n}\n\nexport class MswPlugin extends Plugin {\n readonly #requestHandlerRegistry = new RequestHandlerRegistry();\n\n constructor(runtime: Runtime) {\n super(MswPluginName, runtime);\n }\n\n registerRequestHandlers(handlers: RequestHandler[], options: MswPluginRegisterRequestHandlersOptions = {}) {\n const {\n logger\n } = options;\n\n this.#requestHandlerRegistry.add(handlers);\n\n (logger ? logger : this._runtime.logger)\n .withText(\"[squide] The following MSW request handlers has been registered:\")\n .withObject(handlers)\n .debug();\n }\n\n get requestHandlers(): RequestHandler[] {\n return this.#requestHandlerRegistry.handlers;\n }\n}\n\nexport function getMswPlugin(runtime: Runtime) {\n const plugin = runtime.getPlugin(MswPluginName);\n\n if (isNil(plugin)) {\n throw new Error(\"[squide] The getMswPlugin function is called but no MswPlugin instance has been registered with the runtime.\");\n }\n\n return plugin as MswPlugin;\n}\n"],"names":["Plugin","isNil","RequestHandlerRegistry","MswPluginName","MswPlugin","runtime","handlers","options","logger","getMswPlugin","plugin","Error"],"mappings":";;;;;;;;AAA2D;AAGU;AAE9D,MAAMG,gBAAgB,aAAa;AAMnC,MAAMC,kBAAkBJ,MAAMA;IACxB,uBAAuB,GAAG,IAAIE,sBAAsBA,GAAG;IAEhE,YAAYG,OAAgB,CAAE;QAC1B,KAAK,CAACF,eAAeE;IACzB;IAEA,wBAAwBC,QAA0B,EAAEC,UAAmD,CAAC,CAAC,EAAE;QACvG,MAAM,EACFC,MAAM,EACT,GAAGD;QAEJ,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAACD;QAEhCE,CAAAA,SAASA,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAK,EACjC,QAAQ,CAAC,oEACT,UAAU,CAACF,UACX,KAAK;IACd;IAEA,IAAI,kBAAoC;QACpC,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ;IAChD;AACJ;AAEO,SAASG,aAAaJ,OAAgB;IACzC,MAAMK,SAASL,QAAQ,SAAS,CAACF;IAEjC,IAAIF,KAAKA,CAACS,SAAS;QACf,MAAM,IAAIC,MAAM;IACpB;IAEA,OAAOD;AACX"}
|
package/dist/mswState.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export type MswStateChangedListener = () => void;
|
|
2
|
-
export declare class MswState {
|
|
3
|
-
#private;
|
|
4
|
-
addStateChangedListener(callback: MswStateChangedListener): void;
|
|
5
|
-
removeStateChangedListener(callback: MswStateChangedListener): void;
|
|
6
|
-
setAsReady(): void;
|
|
7
|
-
get isReady(): boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare function __setMswState(state: MswState): void;
|
|
10
|
-
export declare function __clearMswState(): void;
|
|
11
|
-
export declare function setMswAsReady(): void;
|
|
12
|
-
export declare function isMswReady(): boolean;
|
|
13
|
-
export declare function addMswStateChangedListener(callback: MswStateChangedListener): void;
|
|
14
|
-
export declare function removeMswStateChangedListener(callback: MswStateChangedListener): void;
|
package/dist/mswState.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
;// CONCATENATED MODULE: ./src/mswState.ts
|
|
3
|
-
class MswState {
|
|
4
|
-
#isReady = false;
|
|
5
|
-
#stateChangedListeners = new Set();
|
|
6
|
-
addStateChangedListener(callback) {
|
|
7
|
-
this.#stateChangedListeners.add(callback);
|
|
8
|
-
}
|
|
9
|
-
removeStateChangedListener(callback) {
|
|
10
|
-
this.#stateChangedListeners.delete(callback);
|
|
11
|
-
}
|
|
12
|
-
setAsReady() {
|
|
13
|
-
if (!this.#isReady) {
|
|
14
|
-
this.#isReady = true;
|
|
15
|
-
this.#stateChangedListeners.forEach((x)=>{
|
|
16
|
-
x();
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
get isReady() {
|
|
21
|
-
return this.#isReady;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
let mswState;
|
|
25
|
-
function getMswState() {
|
|
26
|
-
if (!mswState) {
|
|
27
|
-
mswState = new MswState();
|
|
28
|
-
}
|
|
29
|
-
return mswState;
|
|
30
|
-
}
|
|
31
|
-
// This function should only be used by tests.
|
|
32
|
-
function __setMswState(state) {
|
|
33
|
-
mswState = state;
|
|
34
|
-
}
|
|
35
|
-
// This function should only be used by tests.
|
|
36
|
-
function __clearMswState() {
|
|
37
|
-
mswState = undefined;
|
|
38
|
-
}
|
|
39
|
-
function setMswAsReady() {
|
|
40
|
-
getMswState().setAsReady();
|
|
41
|
-
}
|
|
42
|
-
function isMswReady() {
|
|
43
|
-
return getMswState().isReady;
|
|
44
|
-
}
|
|
45
|
-
function addMswStateChangedListener(callback) {
|
|
46
|
-
getMswState().addStateChangedListener(callback);
|
|
47
|
-
}
|
|
48
|
-
function removeMswStateChangedListener(callback) {
|
|
49
|
-
getMswState().removeStateChangedListener(callback);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export { MswState, __clearMswState, __setMswState, addMswStateChangedListener, isMswReady, removeMswStateChangedListener, setMswAsReady };
|
|
53
|
-
|
|
54
|
-
//# sourceMappingURL=mswState.js.map
|
package/dist/mswState.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mswState.js","sources":["webpack://@squide/msw/./src/mswState.ts"],"sourcesContent":["export type MswStateChangedListener = () => void;\n\nexport class MswState {\n #isReady = false;\n\n readonly #stateChangedListeners = new Set<MswStateChangedListener>();\n\n addStateChangedListener(callback: MswStateChangedListener) {\n this.#stateChangedListeners.add(callback);\n }\n\n removeStateChangedListener(callback: MswStateChangedListener) {\n this.#stateChangedListeners.delete(callback);\n }\n\n setAsReady() {\n if (!this.#isReady) {\n this.#isReady = true;\n\n this.#stateChangedListeners.forEach(x => {\n x();\n });\n }\n }\n\n get isReady() {\n return this.#isReady;\n }\n}\n\nlet mswState: MswState | undefined;\n\nfunction getMswState() {\n if (!mswState) {\n mswState = new MswState();\n }\n\n return mswState;\n}\n\n// This function should only be used by tests.\nexport function __setMswState(state: MswState) {\n mswState = state;\n}\n\n// This function should only be used by tests.\nexport function __clearMswState() {\n mswState = undefined;\n}\n\nexport function setMswAsReady() {\n getMswState().setAsReady();\n}\n\nexport function isMswReady() {\n return getMswState().isReady;\n}\n\nexport function addMswStateChangedListener(callback: MswStateChangedListener) {\n getMswState().addStateChangedListener(callback);\n}\n\nexport function removeMswStateChangedListener(callback: MswStateChangedListener) {\n getMswState().removeStateChangedListener(callback);\n}\n"],"names":["MswState","Set","callback","x","mswState","getMswState","__setMswState","state","__clearMswState","undefined","setMswAsReady","isMswReady","addMswStateChangedListener","removeMswStateChangedListener"],"mappings":";;AAEO,MAAMA;IACT,QAAQ,GAAG,MAAM;IAER,sBAAsB,GAAG,IAAIC,MAA+B;IAErE,wBAAwBC,QAAiC,EAAE;QACvD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAACA;IACpC;IAEA,2BAA2BA,QAAiC,EAAE;QAC1D,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAACA;IACvC;IAEA,aAAa;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG;YAEhB,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAACC,CAAAA;gBAChCA;YACJ;QACJ;IACJ;IAEA,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,QAAQ;IACxB;AACJ;AAEA,IAAIC;AAEJ,SAASC;IACL,IAAI,CAACD,UAAU;QACXA,WAAW,IAAIJ;IACnB;IAEA,OAAOI;AACX;AAEA,8CAA8C;AACvC,SAASE,cAAcC,KAAe;IACzCH,WAAWG;AACf;AAEA,8CAA8C;AACvC,SAASC;IACZJ,WAAWK;AACf;AAEO,SAASC;IACZL,cAAc,UAAU;AAC5B;AAEO,SAASM;IACZ,OAAON,cAAc,OAAO;AAChC;AAEO,SAASO,2BAA2BV,QAAiC;IACxEG,cAAc,uBAAuB,CAACH;AAC1C;AAEO,SAASW,8BAA8BX,QAAiC;IAC3EG,cAAc,0BAA0B,CAACH;AAC7C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requestHandlerRegistry.js","sources":["webpack://@squide/msw/./src/requestHandlerRegistry.ts"],"sourcesContent":["import type { RequestHandler } from \"msw\";\nimport { isMswReady } from \"./mswState.ts\";\n\nexport class RequestHandlerRegistry {\n readonly #handlers: RequestHandler[] = [];\n\n add(handlers: RequestHandler[]) {\n if (isMswReady()) {\n throw new Error(\"[squide] MSW request handlers cannot be registered once MSW is started. Did you defer the registration of a MSW request handler?\");\n }\n\n this.#handlers.push(...handlers);\n }\n\n // Must specify the return type, otherwise we get a TS2742: The inferred type cannot be named without a reference to X. This is likely not portable.\n // A type annotation is necessary.\n get handlers(): RequestHandler[] {\n return this.#handlers;\n }\n}\n\n"],"names":["isMswReady","RequestHandlerRegistry","handlers","Error"],"mappings":";;;;;AAC2C;AAEpC,MAAMC;IACA,SAAS,GAAqB,EAAE,CAAC;IAE1C,IAAIC,QAA0B,EAAE;QAC5B,IAAIF,UAAUA,IAAI;YACd,MAAM,IAAIG,MAAM;QACpB;QAEA,IAAI,CAAC,SAAS,CAAC,IAAI,IAAID;IAC3B;IAEA,oJAAoJ;IACpJ,kCAAkC;IAClC,IAAI,WAA6B;QAC7B,OAAO,IAAI,CAAC,SAAS;IACzB;AACJ"}
|
package/src/mswState.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
export type MswStateChangedListener = () => void;
|
|
2
|
-
|
|
3
|
-
export class MswState {
|
|
4
|
-
#isReady = false;
|
|
5
|
-
|
|
6
|
-
readonly #stateChangedListeners = new Set<MswStateChangedListener>();
|
|
7
|
-
|
|
8
|
-
addStateChangedListener(callback: MswStateChangedListener) {
|
|
9
|
-
this.#stateChangedListeners.add(callback);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
removeStateChangedListener(callback: MswStateChangedListener) {
|
|
13
|
-
this.#stateChangedListeners.delete(callback);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
setAsReady() {
|
|
17
|
-
if (!this.#isReady) {
|
|
18
|
-
this.#isReady = true;
|
|
19
|
-
|
|
20
|
-
this.#stateChangedListeners.forEach(x => {
|
|
21
|
-
x();
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
get isReady() {
|
|
27
|
-
return this.#isReady;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
let mswState: MswState | undefined;
|
|
32
|
-
|
|
33
|
-
function getMswState() {
|
|
34
|
-
if (!mswState) {
|
|
35
|
-
mswState = new MswState();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return mswState;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// This function should only be used by tests.
|
|
42
|
-
export function __setMswState(state: MswState) {
|
|
43
|
-
mswState = state;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// This function should only be used by tests.
|
|
47
|
-
export function __clearMswState() {
|
|
48
|
-
mswState = undefined;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function setMswAsReady() {
|
|
52
|
-
getMswState().setAsReady();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export function isMswReady() {
|
|
56
|
-
return getMswState().isReady;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export function addMswStateChangedListener(callback: MswStateChangedListener) {
|
|
60
|
-
getMswState().addStateChangedListener(callback);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export function removeMswStateChangedListener(callback: MswStateChangedListener) {
|
|
64
|
-
getMswState().removeStateChangedListener(callback);
|
|
65
|
-
}
|