msw-dev-tool 1.1.4 → 1.1.5

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.
Files changed (80) hide show
  1. package/dist/cjs/index.js +28242 -4
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/msw-dev-tool.css +1 -1
  4. package/dist/esm/index.js +28226 -2
  5. package/dist/esm/index.js.map +1 -1
  6. package/dist/esm/msw-dev-tool.css +1 -1
  7. package/dist/types/index.d.ts +1 -1
  8. package/package.json +6 -2
  9. package/dist/cjs/_virtual/_commonjsHelpers.js +0 -6
  10. package/dist/cjs/_virtual/_commonjsHelpers.js.map +0 -1
  11. package/dist/cjs/_virtual/lodash.js +0 -6
  12. package/dist/cjs/_virtual/lodash.js.map +0 -1
  13. package/dist/cjs/const/handler.js +0 -10
  14. package/dist/cjs/const/handler.js.map +0 -1
  15. package/dist/cjs/hook/useFlattenHandlersTable.js +0 -71
  16. package/dist/cjs/hook/useFlattenHandlersTable.js.map +0 -1
  17. package/dist/cjs/lib/handlerStore.js +0 -66
  18. package/dist/cjs/lib/handlerStore.js.map +0 -1
  19. package/dist/cjs/lib/util.js +0 -64
  20. package/dist/cjs/lib/util.js.map +0 -1
  21. package/dist/cjs/node_modules/.pnpm/@tanstack_react-table@8.20.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.js +0 -137
  22. package/dist/cjs/node_modules/.pnpm/@tanstack_react-table@8.20.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.js.map +0 -1
  23. package/dist/cjs/node_modules/.pnpm/@tanstack_table-core@8.20.5/node_modules/@tanstack/table-core/build/lib/index.js +0 -3012
  24. package/dist/cjs/node_modules/.pnpm/@tanstack_table-core@8.20.5/node_modules/@tanstack/table-core/build/lib/index.js.map +0 -1
  25. package/dist/cjs/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/lodash.js +0 -17209
  26. package/dist/cjs/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/lodash.js.map +0 -1
  27. package/dist/cjs/store/uiControlStore.js +0 -13
  28. package/dist/cjs/store/uiControlStore.js.map +0 -1
  29. package/dist/cjs/ui/DevToolContent/DevToolContentContainer.js +0 -18
  30. package/dist/cjs/ui/DevToolContent/DevToolContentContainer.js.map +0 -1
  31. package/dist/cjs/ui/DevToolContent/HttpControl.js +0 -21
  32. package/dist/cjs/ui/DevToolContent/HttpControl.js.map +0 -1
  33. package/dist/cjs/ui/MSWDevTool.js +0 -16
  34. package/dist/cjs/ui/MSWDevTool.js.map +0 -1
  35. package/dist/cjs/ui/Table/PreviewHandler/KeyValueInputList.js +0 -73
  36. package/dist/cjs/ui/Table/PreviewHandler/KeyValueInputList.js.map +0 -1
  37. package/dist/cjs/ui/Table/PreviewHandler/PathParamSetter.js +0 -22
  38. package/dist/cjs/ui/Table/PreviewHandler/PathParamSetter.js.map +0 -1
  39. package/dist/cjs/ui/Table/PreviewHandler/RequestPreview.js +0 -68
  40. package/dist/cjs/ui/Table/PreviewHandler/RequestPreview.js.map +0 -1
  41. package/dist/cjs/ui/Table/PreviewHandler/index.js +0 -61
  42. package/dist/cjs/ui/Table/PreviewHandler/index.js.map +0 -1
  43. package/dist/cjs/utils/url.js +0 -43
  44. package/dist/cjs/utils/url.js.map +0 -1
  45. package/dist/esm/_virtual/_commonjsHelpers.js +0 -4
  46. package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
  47. package/dist/esm/_virtual/lodash.js +0 -4
  48. package/dist/esm/_virtual/lodash.js.map +0 -1
  49. package/dist/esm/const/handler.js +0 -7
  50. package/dist/esm/const/handler.js.map +0 -1
  51. package/dist/esm/hook/useFlattenHandlersTable.js +0 -69
  52. package/dist/esm/hook/useFlattenHandlersTable.js.map +0 -1
  53. package/dist/esm/lib/handlerStore.js +0 -63
  54. package/dist/esm/lib/handlerStore.js.map +0 -1
  55. package/dist/esm/lib/util.js +0 -58
  56. package/dist/esm/lib/util.js.map +0 -1
  57. package/dist/esm/node_modules/.pnpm/@tanstack_react-table@8.20.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.js +0 -75
  58. package/dist/esm/node_modules/.pnpm/@tanstack_react-table@8.20.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.js.map +0 -1
  59. package/dist/esm/node_modules/.pnpm/@tanstack_table-core@8.20.5/node_modules/@tanstack/table-core/build/lib/index.js +0 -2970
  60. package/dist/esm/node_modules/.pnpm/@tanstack_table-core@8.20.5/node_modules/@tanstack/table-core/build/lib/index.js.map +0 -1
  61. package/dist/esm/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/lodash.js +0 -17207
  62. package/dist/esm/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/lodash.js.map +0 -1
  63. package/dist/esm/store/uiControlStore.js +0 -11
  64. package/dist/esm/store/uiControlStore.js.map +0 -1
  65. package/dist/esm/ui/DevToolContent/DevToolContentContainer.js +0 -16
  66. package/dist/esm/ui/DevToolContent/DevToolContentContainer.js.map +0 -1
  67. package/dist/esm/ui/DevToolContent/HttpControl.js +0 -19
  68. package/dist/esm/ui/DevToolContent/HttpControl.js.map +0 -1
  69. package/dist/esm/ui/MSWDevTool.js +0 -14
  70. package/dist/esm/ui/MSWDevTool.js.map +0 -1
  71. package/dist/esm/ui/Table/PreviewHandler/KeyValueInputList.js +0 -71
  72. package/dist/esm/ui/Table/PreviewHandler/KeyValueInputList.js.map +0 -1
  73. package/dist/esm/ui/Table/PreviewHandler/PathParamSetter.js +0 -20
  74. package/dist/esm/ui/Table/PreviewHandler/PathParamSetter.js.map +0 -1
  75. package/dist/esm/ui/Table/PreviewHandler/RequestPreview.js +0 -66
  76. package/dist/esm/ui/Table/PreviewHandler/RequestPreview.js.map +0 -1
  77. package/dist/esm/ui/Table/PreviewHandler/index.js +0 -59
  78. package/dist/esm/ui/Table/PreviewHandler/index.js.map +0 -1
  79. package/dist/esm/utils/url.js +0 -39
  80. package/dist/esm/utils/url.js.map +0 -1
@@ -1,11 +0,0 @@
1
- import { create } from 'zustand';
2
-
3
- const useUiControlStore = create((set) => ({
4
- isOpen: false,
5
- openModal: () => set({ isOpen: true }),
6
- closeModal: () => set({ isOpen: false }),
7
- toggleModal: () => set((state) => ({ isOpen: !state.isOpen })),
8
- }));
9
-
10
- export { useUiControlStore as default };
11
- //# sourceMappingURL=uiControlStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uiControlStore.js","sources":["../../../src/store/uiControlStore.ts"],"sourcesContent":["import { create } from \"zustand\";\n\nexport type UiControlState = {\n isOpen: boolean;\n openModal: () => void;\n closeModal: () => void;\n toggleModal: () => void;\n};\n\nconst useUiControlStore = create<UiControlState>((set) => ({\n isOpen: false,\n openModal: () => set({ isOpen: true }),\n closeModal: () => set({ isOpen: false }),\n toggleModal: () => set((state) => ({ isOpen: !state.isOpen })),\n}));\n\nexport default useUiControlStore;\n"],"names":[],"mappings":";;AASM,MAAA,iBAAiB,GAAG,MAAM,CAAiB,CAAC,GAAG,MAAM;AACzD,IAAA,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACtC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAA,CAAC;;;;"}
@@ -1,16 +0,0 @@
1
- import React__default from 'react';
2
- import { createPortal } from 'react-dom';
3
- import useUiControlStore from '../../store/uiControlStore.js';
4
- import { HttpControl } from './HttpControl.js';
5
-
6
- const DevToolContentContainer = () => {
7
- const { toggleModal } = useUiControlStore();
8
- return createPortal(React__default.createElement("div", { className: "msw-dev-tool-container" },
9
- React__default.createElement("div", { className: "msw-dev-tool-title-container" },
10
- React__default.createElement("p", null, "MSW DEV TOOL"),
11
- React__default.createElement("button", { onClick: toggleModal }, "X")),
12
- React__default.createElement(HttpControl, null)), document.body);
13
- };
14
-
15
- export { DevToolContentContainer };
16
- //# sourceMappingURL=DevToolContentContainer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DevToolContentContainer.js","sources":["../../../../src/ui/DevToolContent/DevToolContentContainer.tsx"],"sourcesContent":["import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport useUiControlStore from \"../../store/uiControlStore\";\nimport { HttpControl } from \"./HttpControl\";\n\nexport const DevToolContentContainer = () => {\n const { toggleModal } = useUiControlStore();\n return createPortal(\n <div className=\"msw-dev-tool-container\">\n <div className=\"msw-dev-tool-title-container\">\n <p>MSW DEV TOOL</p>\n <button onClick={toggleModal}>X</button>\n </div>\n <HttpControl />\n </div>,\n document.body\n );\n};\n"],"names":["React"],"mappings":";;;;;AAKO,MAAM,uBAAuB,GAAG,MAAK;AAC1C,IAAA,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAAC;AAC5C,IAAA,OAAO,YAAY,CACjBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wBAAwB,EAAA;QACrCA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,8BAA8B,EAAA;YAC3CA,cAAmB,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAA,cAAA,CAAA;AACnB,YAAAA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,OAAO,EAAE,WAAW,EAAA,EAAA,GAAA,CAAY,CACpC;QACNA,cAAC,CAAA,aAAA,CAAA,WAAW,OAAG,CACX,EACN,QAAQ,CAAC,IAAI,CACd,CAAC;AACJ;;;;"}
@@ -1,19 +0,0 @@
1
- import React__default from 'react';
2
- import { flexRender } from '../../node_modules/.pnpm/@tanstack_react-table@8.20.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-table/build/lib/index.js';
3
- import { useFlattenHandlersTable } from '../../hook/useFlattenHandlersTable.js';
4
- import { useHandlerStore } from '../../lib/handlerStore.js';
5
-
6
- const HttpControl = () => {
7
- const table = useFlattenHandlersTable();
8
- const { resetMSWDevTool } = useHandlerStore();
9
- return (React__default.createElement("div", null,
10
- React__default.createElement("button", { onClick: () => resetMSWDevTool() }, "Reset Dev tool"),
11
- React__default.createElement("table", null,
12
- React__default.createElement("thead", null, table.getHeaderGroups().map((headerGroup) => (React__default.createElement("tr", { key: headerGroup.id }, headerGroup.headers.map((header) => (React__default.createElement("th", { key: header.id }, header.isPlaceholder
13
- ? null
14
- : flexRender(header.column.columnDef.header, header.getContext())))))))),
15
- React__default.createElement("tbody", null, table.getRowModel().rows.map((row) => (React__default.createElement("tr", { key: row.id }, row.getVisibleCells().map((cell) => (React__default.createElement("td", { key: cell.id }, flexRender(cell.column.columnDef.cell, cell.getContext())))))))))));
16
- };
17
-
18
- export { HttpControl };
19
- //# sourceMappingURL=HttpControl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HttpControl.js","sources":["../../../../src/ui/DevToolContent/HttpControl.tsx"],"sourcesContent":["import React from \"react\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { useFlattenHandlersTable } from \"../../hook/useFlattenHandlersTable\";\nimport { useHandlerStore } from \"../../lib/handlerStore\";\n\nexport const HttpControl = () => {\n const table = useFlattenHandlersTable();\n const { resetMSWDevTool } = useHandlerStore();\n\n return (\n <div>\n <button onClick={() => resetMSWDevTool()}>Reset Dev tool</button>\n <table>\n <thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <th key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {table.getRowModel().rows.map((row) => (\n <tr key={row.id}>\n {row.getVisibleCells().map((cell) => (\n <td key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};\n"],"names":["React"],"mappings":";;;;;AAKO,MAAM,WAAW,GAAG,MAAK;AAC9B,IAAA,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;AACxC,IAAA,MAAM,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAAC;AAE9C,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACE,QAAAA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,OAAO,EAAE,MAAM,eAAe,EAAE,EAAyB,EAAA,gBAAA,CAAA;AACjE,QAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA;AACE,YAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,EACG,KAAK,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,MACvCA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,GAAG,EAAE,WAAW,CAAC,EAAE,EAAA,EACpB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAC9BA,cAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,GAAG,EAAE,MAAM,CAAC,EAAE,EACf,EAAA,MAAM,CAAC,aAAa;AACnB,kBAAE,IAAI;kBACJ,UAAU,CACR,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAC9B,MAAM,CAAC,UAAU,EAAE,CACpB,CACF,CACN,CAAC,CACC,CACN,CAAC,CACI;AACR,YAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,EACG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAChCA,cAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,GAAG,EAAE,GAAG,CAAC,EAAE,IACZ,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAC9BA,cAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,GAAG,EAAE,IAAI,CAAC,EAAE,EAAA,EACb,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CACvD,CACN,CAAC,CACC,CACN,CAAC,CACI,CACF,CACJ,EACN;AACJ;;;;"}
@@ -1,14 +0,0 @@
1
- import React__default from 'react';
2
- import { createPortal } from 'react-dom';
3
- import useUiControlStore from '../store/uiControlStore.js';
4
- import { DevToolContentContainer } from './DevToolContent/DevToolContentContainer.js';
5
-
6
- const MSWDevTool = () => {
7
- const { isOpen, toggleModal } = useUiControlStore();
8
- return createPortal(React__default.createElement(React__default.Fragment, null,
9
- React__default.createElement("div", { className: "entry-msw-dev-tool", onClick: toggleModal }, "M"),
10
- isOpen && React__default.createElement(DevToolContentContainer, null)), document.body);
11
- };
12
-
13
- export { MSWDevTool };
14
- //# sourceMappingURL=MSWDevTool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MSWDevTool.js","sources":["../../../src/ui/MSWDevTool.tsx"],"sourcesContent":["import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport useUiControlStore from \"../store/uiControlStore\";\nimport { DevToolContentContainer } from \"./DevToolContent/DevToolContentContainer\";\n\nexport const MSWDevTool = () => {\n const { isOpen, toggleModal } = useUiControlStore();\n return createPortal(\n <>\n <div className=\"entry-msw-dev-tool\" onClick={toggleModal}>\n M\n </div>\n {isOpen && <DevToolContentContainer />}\n </>,\n document.body\n );\n};\n"],"names":["React"],"mappings":";;;;;AAKO,MAAM,UAAU,GAAG,MAAK;IAC7B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAAC;AACpD,IAAA,OAAO,YAAY,CACjBA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;AACE,QAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAC,OAAO,EAAE,WAAW,EAElD,EAAA,GAAA,CAAA;QACL,MAAM,IAAIA,cAAC,CAAA,aAAA,CAAA,uBAAuB,EAAG,IAAA,CAAA,CACrC,EACH,QAAQ,CAAC,IAAI,CACd,CAAC;AACJ;;;;"}
@@ -1,71 +0,0 @@
1
- import React__default, { useState } from 'react';
2
-
3
- const KeyValueInputList = ({ items, setItems, }) => {
4
- const [key, setKey] = useState("");
5
- const [value, setValue] = useState("");
6
- const handleAdd = () => {
7
- if (!key.trim() || !value.trim())
8
- return;
9
- setItems((prev) => ({
10
- ...prev,
11
- [key]: value,
12
- }));
13
- setKey("");
14
- setValue("");
15
- };
16
- const handleDelete = (keyToDelete) => {
17
- setItems((prev) => {
18
- const newItems = { ...prev };
19
- delete newItems[keyToDelete];
20
- return newItems;
21
- });
22
- };
23
- return (React__default.createElement("div", null,
24
- React__default.createElement("div", { style: {
25
- display: "flex",
26
- gap: "8px",
27
- width: "100%",
28
- alignItems: "center",
29
- } },
30
- React__default.createElement("input", { type: "text", value: key, onChange: (e) => setKey(e.target.value), placeholder: "Key", style: {
31
- padding: "8px",
32
- borderRadius: "4px",
33
- border: "1px solid #ccc",
34
- width: "100px",
35
- } }),
36
- React__default.createElement("input", { type: "text", value: value, onChange: (e) => setValue(e.target.value), placeholder: "Value", style: {
37
- padding: "8px",
38
- borderRadius: "4px",
39
- border: "1px solid #ccc",
40
- width: "100px",
41
- } }),
42
- React__default.createElement("button", { onClick: handleAdd, style: {
43
- padding: "8px 16px",
44
- backgroundColor: "#0066ff",
45
- color: "white",
46
- border: "none",
47
- borderRadius: "4px",
48
- cursor: "pointer",
49
- } }, "Add")),
50
- React__default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "8px" } }, Object.entries(items).map(([key, value]) => (React__default.createElement("div", { key: key, style: {
51
- display: "flex",
52
- alignItems: "center",
53
- padding: "8px",
54
- backgroundColor: "#f5f5f5",
55
- borderRadius: "4px",
56
- gap: "8px",
57
- } },
58
- React__default.createElement("span", { style: { flex: 1 } }, key),
59
- React__default.createElement("span", { style: { flex: 1 } }, value),
60
- React__default.createElement("button", { onClick: () => handleDelete(key), style: {
61
- padding: "4px 8px",
62
- backgroundColor: "#ff4444",
63
- color: "white",
64
- border: "none",
65
- borderRadius: "4px",
66
- cursor: "pointer",
67
- } }, "Delete")))))));
68
- };
69
-
70
- export { KeyValueInputList };
71
- //# sourceMappingURL=KeyValueInputList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KeyValueInputList.js","sources":["../../../../../src/ui/Table/PreviewHandler/KeyValueInputList.tsx"],"sourcesContent":["import React, { useState } from \"react\";\n\ninterface KeyValueInputListProps {\n items: Record<string, string>;\n setItems: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n}\n\nexport const KeyValueInputList = ({\n items,\n setItems,\n}: KeyValueInputListProps) => {\n const [key, setKey] = useState(\"\");\n const [value, setValue] = useState(\"\");\n\n const handleAdd = () => {\n if (!key.trim() || !value.trim()) return;\n\n setItems((prev) => ({\n ...prev,\n [key]: value,\n }));\n setKey(\"\");\n setValue(\"\");\n };\n\n const handleDelete = (keyToDelete: string) => {\n setItems((prev) => {\n const newItems = { ...prev };\n delete newItems[keyToDelete];\n return newItems;\n });\n };\n\n return (\n <div>\n <div\n style={{\n display: \"flex\",\n gap: \"8px\",\n width: \"100%\",\n alignItems: \"center\",\n }}\n >\n <input\n type=\"text\"\n value={key}\n onChange={(e) => setKey(e.target.value)}\n placeholder=\"Key\"\n style={{\n padding: \"8px\",\n borderRadius: \"4px\",\n border: \"1px solid #ccc\",\n width: \"100px\",\n }}\n />\n <input\n type=\"text\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n placeholder=\"Value\"\n style={{\n padding: \"8px\",\n borderRadius: \"4px\",\n border: \"1px solid #ccc\",\n width: \"100px\",\n }}\n />\n <button\n onClick={handleAdd}\n style={{\n padding: \"8px 16px\",\n backgroundColor: \"#0066ff\",\n color: \"white\",\n border: \"none\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n }}\n >\n Add\n </button>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\n {Object.entries(items).map(([key, value]) => (\n <div\n key={key}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"8px\",\n backgroundColor: \"#f5f5f5\",\n borderRadius: \"4px\",\n gap: \"8px\",\n }}\n >\n <span style={{ flex: 1 }}>{key}</span>\n <span style={{ flex: 1 }}>{value}</span>\n <button\n onClick={() => handleDelete(key)}\n style={{\n padding: \"4px 8px\",\n backgroundColor: \"#ff4444\",\n color: \"white\",\n border: \"none\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n }}\n >\n Delete\n </button>\n </div>\n ))}\n </div>\n </div>\n );\n};\n"],"names":["React"],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import React__default from 'react';
2
-
3
- const PathParamSetter = ({ paramValues, onParamChange, }) => {
4
- return (paramValues &&
5
- Object.keys(paramValues).length > 0 && (React__default.createElement(React__default.Fragment, null,
6
- React__default.createElement("h3", null, "Path Parameters"),
7
- React__default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "8px" } }, Object.entries(paramValues).map(([key, value]) => (React__default.createElement("div", { key: key, style: { display: "flex", alignItems: "center", gap: "8px" } },
8
- React__default.createElement("label", { htmlFor: `param-${key}`, style: { minWidth: "100px" } },
9
- key,
10
- ":"),
11
- React__default.createElement("input", { id: `param-${key}`, type: "text", value: value, onChange: (e) => onParamChange(key, e.target.value), placeholder: "value of path param", style: {
12
- padding: "4px 8px",
13
- borderRadius: "4px",
14
- border: "1px solid #ccc",
15
- width: "100%",
16
- } }))))))));
17
- };
18
-
19
- export { PathParamSetter };
20
- //# sourceMappingURL=PathParamSetter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PathParamSetter.js","sources":["../../../../../src/ui/Table/PreviewHandler/PathParamSetter.tsx"],"sourcesContent":["import { PathParams } from \"msw\";\nimport React from \"react\";\n\nexport const PathParamSetter = ({\n paramValues,\n onParamChange,\n}: {\n paramValues?: PathParams<string>;\n onParamChange: (key: string, value: string) => void;\n}) => {\n return (\n paramValues &&\n Object.keys(paramValues).length > 0 && (\n <>\n <h3>Path Parameters</h3>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\n {Object.entries(paramValues).map(([key, value]) => (\n <div\n key={key}\n style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}\n >\n <label htmlFor={`param-${key}`} style={{ minWidth: \"100px\" }}>\n {key}:\n </label>\n <input\n id={`param-${key}`}\n type=\"text\"\n value={value}\n onChange={(e) => onParamChange(key, e.target.value)}\n placeholder=\"value of path param\"\n style={{\n padding: \"4px 8px\",\n borderRadius: \"4px\",\n border: \"1px solid #ccc\",\n width: \"100%\",\n }}\n />\n </div>\n ))}\n </div>\n </>\n )\n );\n};\n"],"names":["React"],"mappings":";;AAGa,MAAA,eAAe,GAAG,CAAC,EAC9B,WAAW,EACX,aAAa,GAId,KAAI;AACH,IAAA,QACE,WAAW;QACX,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,KACjCA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;QACEA,cAAwB,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,CAAA;QACxBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EACjE,EAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAC5CA,cACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA;AAE5D,YAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,CAAS,MAAA,EAAA,GAAG,CAAE,CAAA,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAA;gBACzD,GAAG;AACE,gBAAA,GAAA,CAAA;AACR,YAAAA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EACE,EAAE,EAAE,CAAA,MAAA,EAAS,GAAG,CAAA,CAAE,EAClB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACnD,WAAW,EAAC,qBAAqB,EACjC,KAAK,EAAE;AACL,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,MAAM,EAAE,gBAAgB;AACxB,oBAAA,KAAK,EAAE,MAAM;AACd,iBAAA,EAAA,CACD,CACE,CACP,CAAC,CACE,CACL,CACJ,EACD;AACJ;;;;"}
@@ -1,66 +0,0 @@
1
- import React__default, { useState } from 'react';
2
- import { getPathWithParams, getSearchParams, getTotalUrl } from '../../../utils/url.js';
3
-
4
- const RequestPreview = ({ url, paramValues, headers = {}, searchParams = {}, }) => {
5
- const [loading, setLoading] = useState(false);
6
- const [error, setError] = useState(null);
7
- const [response, setResponse] = useState(null);
8
- const finalPath = getPathWithParams(url, paramValues);
9
- const searchParamsString = getSearchParams(searchParams);
10
- const totalUrl = getTotalUrl(url.origin, finalPath, searchParamsString);
11
- const handleFetch = () => {
12
- setLoading(true);
13
- setError(null);
14
- fetch(totalUrl, {
15
- headers: {
16
- 'Content-Type': 'application/json',
17
- ...headers,
18
- },
19
- })
20
- .then((res) => res.json())
21
- .then((data) => {
22
- setResponse(data);
23
- setLoading(false);
24
- })
25
- .catch((err) => {
26
- setError(err instanceof Error ? err : new Error("Failed to fetch"));
27
- setLoading(false);
28
- });
29
- };
30
- return (React__default.createElement("div", { style: { marginTop: "20px" } },
31
- React__default.createElement("h3", null, "Response"),
32
- React__default.createElement("div", { style: {
33
- fontFamily: "monospace",
34
- wordBreak: "break-all",
35
- } },
36
- React__default.createElement("button", { onClick: handleFetch, disabled: loading, style: {
37
- padding: "4px 12px",
38
- borderRadius: "4px",
39
- border: "1px solid #ccc",
40
- backgroundColor: loading ? "#f5f5f5" : "white",
41
- cursor: loading ? "not-allowed" : "pointer",
42
- } }, loading ? "Fetching..." : "Send Request"),
43
- error && (React__default.createElement("div", { style: {
44
- marginTop: "8px",
45
- color: "#f44336",
46
- backgroundColor: "#f5f5f5",
47
- } },
48
- "Error: ",
49
- error.message)),
50
- response && (React__default.createElement("div", { style: {
51
- marginTop: "8px",
52
- maxHeight: "200px",
53
- overflow: "scroll",
54
- backgroundColor: "#f5f5f5",
55
- } },
56
- React__default.createElement("pre", { style: {
57
- margin: 0,
58
- overflow: "auto",
59
- borderRadius: "4px",
60
- fontFamily: "monospace",
61
- wordBreak: "break-all",
62
- } }, JSON.stringify(response, null, 2)))))));
63
- };
64
-
65
- export { RequestPreview };
66
- //# sourceMappingURL=RequestPreview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RequestPreview.js","sources":["../../../../../src/ui/Table/PreviewHandler/RequestPreview.tsx"],"sourcesContent":["import { PathParams } from \"msw\";\nimport React, { useState } from \"react\";\nimport { getPathWithParams, getSearchParams, getTotalUrl } from \"../../../utils/url\";\n\nexport const RequestPreview = ({\n url,\n paramValues,\n headers = {},\n searchParams = {},\n}: {\n url: URL;\n paramValues?: PathParams<string>;\n headers?: Record<string, string>;\n searchParams?: Record<string, string>;\n}) => {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [response, setResponse] = useState<any>(null);\n\n const finalPath = getPathWithParams(url, paramValues);\n const searchParamsString = getSearchParams(searchParams);\n const totalUrl = getTotalUrl(url.origin, finalPath, searchParamsString);\n\n const handleFetch = () => {\n setLoading(true);\n setError(null);\n\n fetch(totalUrl, {\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n })\n .then((res) => res.json())\n .then((data) => {\n setResponse(data);\n setLoading(false);\n })\n .catch((err) => {\n setError(err instanceof Error ? err : new Error(\"Failed to fetch\"));\n setLoading(false);\n });\n };\n\n return (\n <div style={{ marginTop: \"20px\" }}>\n <h3>Response</h3>\n <div\n style={{\n fontFamily: \"monospace\",\n wordBreak: \"break-all\",\n }}\n >\n <button\n onClick={handleFetch}\n disabled={loading}\n style={{\n padding: \"4px 12px\",\n borderRadius: \"4px\",\n border: \"1px solid #ccc\",\n backgroundColor: loading ? \"#f5f5f5\" : \"white\",\n cursor: loading ? \"not-allowed\" : \"pointer\",\n }}\n >\n {loading ? \"Fetching...\" : \"Send Request\"}\n </button>\n\n {error && (\n <div\n style={{\n marginTop: \"8px\",\n color: \"#f44336\",\n backgroundColor: \"#f5f5f5\",\n }}\n >\n Error: {error.message}\n </div>\n )}\n\n {response && (\n <div\n style={{\n marginTop: \"8px\",\n maxHeight: \"200px\",\n overflow: \"scroll\",\n backgroundColor: \"#f5f5f5\",\n }}\n >\n <pre\n style={{\n margin: 0,\n overflow: \"auto\",\n borderRadius: \"4px\",\n fontFamily: \"monospace\",\n wordBreak: \"break-all\",\n }}\n >\n {JSON.stringify(response, null, 2)}\n </pre>\n </div>\n )}\n </div>\n </div>\n );\n};"],"names":["React"],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- import React__default, { useState } from 'react';
2
- import { createPortal } from 'react-dom';
3
- import { matchRequestUrl } from 'msw';
4
- import { PathParamSetter } from './PathParamSetter.js';
5
- import { RequestPreview } from './RequestPreview.js';
6
- import { KeyValueInputList } from './KeyValueInputList.js';
7
-
8
- const PreviewHandler = ({ handler, onClose }) => {
9
- const path = handler.info.path;
10
- const url = new URL(String(path), location.href);
11
- const { params } = matchRequestUrl(url, path, url.origin);
12
- const [paramValues, setParamValues] = useState(params
13
- ? Object.keys(params).reduce((acc, key) => ({
14
- ...acc,
15
- [key]: "",
16
- }), {})
17
- : undefined);
18
- const [headers, setHeaders] = useState({});
19
- const [searchParams, setSearchParams] = useState({});
20
- const handleParamChange = (key, value) => {
21
- setParamValues((prev) => ({
22
- ...prev,
23
- [key]: value,
24
- }));
25
- };
26
- return createPortal(React__default.createElement("div", { style: {
27
- padding: "20px",
28
- position: "fixed",
29
- zIndex: 9999,
30
- backgroundColor: "white",
31
- boxShadow: "0 2px 10px rgba(0, 0, 0, 0.1)",
32
- borderRadius: "8px",
33
- width: "320px",
34
- maxHeight: "500px",
35
- overflow: "scroll",
36
- } },
37
- React__default.createElement("div", { style: { position: "relative" } },
38
- React__default.createElement("button", { onClick: onClose, style: {
39
- position: "absolute",
40
- right: 0,
41
- top: 0,
42
- background: "none",
43
- border: "none",
44
- cursor: "pointer",
45
- fontSize: "1.2rem",
46
- padding: "4px",
47
- } }, "\u2715"),
48
- React__default.createElement("h2", { style: { marginBottom: "20px", paddingRight: "24px" } }, "Handler Preview"),
49
- React__default.createElement("p", { style: { fontSize: "0.8rem", color: "#666", overflow: "scroll" } }, url.toString()),
50
- React__default.createElement(PathParamSetter, { paramValues: paramValues, onParamChange: handleParamChange }),
51
- React__default.createElement("h3", null, "Search Params"),
52
- React__default.createElement(KeyValueInputList, { items: searchParams, setItems: setSearchParams }),
53
- React__default.createElement("h3", null, "Headers"),
54
- React__default.createElement(KeyValueInputList, { items: headers, setItems: setHeaders }),
55
- React__default.createElement(RequestPreview, { url: url, paramValues: paramValues, headers: headers, searchParams: searchParams }))), document.body);
56
- };
57
-
58
- export { PreviewHandler };
59
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/ui/Table/PreviewHandler/index.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { HttpHandler, matchRequestUrl, PathParams } from \"msw\";\nimport { PathParamSetter } from \"./PathParamSetter\";\nimport { RequestPreview } from \"./RequestPreview\";\nimport { KeyValueInputList } from \"./KeyValueInputList\";\n\ninterface PreviewHandlerProps {\n handler: HttpHandler;\n onClose: () => void;\n}\n\nexport const PreviewHandler = ({ handler, onClose }: PreviewHandlerProps) => {\n const path = handler.info.path;\n const url = new URL(String(path), location.href);\n const { params } = matchRequestUrl(url, path, url.origin);\n\n const [paramValues, setParamValues] = useState<\n PathParams<string> | undefined\n >(\n params\n ? Object.keys(params).reduce(\n (acc, key) => ({\n ...acc,\n [key]: \"\",\n }),\n {}\n )\n : undefined\n );\n const [headers, setHeaders] = useState<Record<string, string>>({});\n const [searchParams, setSearchParams] = useState<Record<string, string>>({});\n\n const handleParamChange = (key: string, value: string) => {\n setParamValues((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n return createPortal(\n <div\n style={{\n padding: \"20px\",\n position: \"fixed\",\n zIndex: 9999,\n backgroundColor: \"white\",\n boxShadow: \"0 2px 10px rgba(0, 0, 0, 0.1)\",\n borderRadius: \"8px\",\n width: \"320px\",\n maxHeight: \"500px\",\n overflow: \"scroll\",\n }}\n >\n <div style={{ position: \"relative\" }}>\n <button\n onClick={onClose}\n style={{\n position: \"absolute\",\n right: 0,\n top: 0,\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"1.2rem\",\n padding: \"4px\",\n }}\n >\n ✕\n </button>\n\n <h2 style={{ marginBottom: \"20px\", paddingRight: \"24px\" }}>\n Handler Preview\n </h2>\n <p style={{ fontSize: \"0.8rem\", color: \"#666\", overflow: \"scroll\" }}>\n {url.toString()}\n </p>\n <PathParamSetter\n paramValues={paramValues}\n onParamChange={handleParamChange}\n />\n <h3>Search Params</h3>\n <KeyValueInputList items={searchParams} setItems={setSearchParams} />\n <h3>Headers</h3>\n <KeyValueInputList items={headers} setItems={setHeaders} />\n <RequestPreview\n url={url}\n paramValues={paramValues}\n headers={headers}\n searchParams={searchParams}\n />\n </div>\n </div>,\n document.body\n );\n};\n"],"names":["React"],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Replace path parameters with path object and formatted path
3
- */
4
- const getPathWithParams = (url, paramValues) => {
5
- if (!paramValues)
6
- return url.pathname;
7
- return url.pathname
8
- .split("/")
9
- .map((segment) => {
10
- if (segment.startsWith(":")) {
11
- const paramName = segment.slice(1); // remove ':'
12
- return paramValues[paramName] || "undefined"; // replace with param value if exists, otherwise "undefined"
13
- }
14
- return segment;
15
- })
16
- .join("/");
17
- };
18
- const getSearchParams = (searchParams) => {
19
- if (!searchParams || Object.keys(searchParams).length === 0)
20
- return "";
21
- const urlSearchParams = new URLSearchParams();
22
- Object.entries(searchParams).forEach(([key, value]) => {
23
- urlSearchParams.set(key, value);
24
- });
25
- return urlSearchParams.toString();
26
- };
27
- /**
28
- * Create full URL string
29
- */
30
- const getTotalUrl = (origin, path, searchParams) => {
31
- const url = new URL(`${origin}${path}`);
32
- if (searchParams) {
33
- url.search = searchParams;
34
- }
35
- return url.toString();
36
- };
37
-
38
- export { getPathWithParams, getSearchParams, getTotalUrl };
39
- //# sourceMappingURL=url.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"url.js","sources":["../../../src/utils/url.ts"],"sourcesContent":["import { PathParams } from \"msw\";\n\n/**\n * Replace path parameters with path object and formatted path\n */\nexport const getPathWithParams = (\n url: URL,\n paramValues?: PathParams<string>\n): string => {\n if (!paramValues) return url.pathname;\n\n return url.pathname\n .split(\"/\")\n .map((segment) => {\n if (segment.startsWith(\":\")) {\n const paramName = segment.slice(1); // remove ':'\n return paramValues[paramName] || \"undefined\"; // replace with param value if exists, otherwise \"undefined\"\n }\n return segment;\n })\n .join(\"/\");\n};\n\nexport const getSearchParams = (\n searchParams?: Record<string, string>\n): string => {\n if (!searchParams || Object.keys(searchParams).length === 0) return \"\";\n\n const urlSearchParams = new URLSearchParams();\n Object.entries(searchParams).forEach(([key, value]) => {\n urlSearchParams.set(key, value);\n });\n\n return urlSearchParams.toString();\n};\n/**\n * Create full URL string\n */\nexport const getTotalUrl = (\n origin: string,\n path: string,\n searchParams: string\n): string => {\n const url = new URL(`${origin}${path}`);\n if (searchParams) {\n url.search = searchParams;\n }\n return url.toString();\n};\n"],"names":[],"mappings":"AAEA;;AAEG;MACU,iBAAiB,GAAG,CAC/B,GAAQ,EACR,WAAgC,KACtB;AACV,IAAA,IAAI,CAAC,WAAW;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;IAEtC,OAAO,GAAG,CAAC,QAAQ;SAChB,KAAK,CAAC,GAAG,CAAC;AACV,SAAA,GAAG,CAAC,CAAC,OAAO,KAAI;AACf,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC;SAC9C;AACD,QAAA,OAAO,OAAO,CAAC;AACjB,KAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,EAAE;AAEW,MAAA,eAAe,GAAG,CAC7B,YAAqC,KAC3B;AACV,IAAA,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE,CAAC;AAEvE,IAAA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AAC9C,IAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACpD,QAAA,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,eAAe,CAAC,QAAQ,EAAE,CAAC;AACpC,EAAE;AACF;;AAEG;AACU,MAAA,WAAW,GAAG,CACzB,MAAc,EACd,IAAY,EACZ,YAAoB,KACV;IACV,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAG,EAAA,MAAM,CAAG,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;IACxC,IAAI,YAAY,EAAE;AAChB,QAAA,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC;KAC3B;AACD,IAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB;;;;"}