msw-dev-tool 3.0.0 → 3.1.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.
Files changed (97) hide show
  1. package/dist/cjs/lib/handlerStore.js +35 -0
  2. package/dist/cjs/lib/handlerStore.js.map +1 -1
  3. package/dist/cjs/lib/type.js +12 -0
  4. package/dist/cjs/lib/type.js.map +1 -1
  5. package/dist/cjs/lib/util.js +10 -2
  6. package/dist/cjs/lib/util.js.map +1 -1
  7. package/dist/cjs/msw-dev-tool.css +1 -1
  8. package/dist/cjs/node_modules/@radix-ui/react-dialog/dist/index.js +8 -8
  9. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/dialog.js +40 -0
  10. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/dialog.js.map +1 -0
  11. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/dialog.props.js +10 -0
  12. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/dialog.props.js.map +1 -0
  13. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/text-area.js +31 -0
  14. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/text-area.js.map +1 -0
  15. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/text-area.props.js +9 -0
  16. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/text-area.props.js.map +1 -0
  17. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/text-field.js +2 -1
  18. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/components/text-field.js.map +1 -1
  19. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/helpers/require-react-element.js +27 -0
  20. package/dist/cjs/node_modules/@radix-ui/themes/dist/esm/helpers/require-react-element.js.map +1 -0
  21. package/dist/cjs/node_modules/radix-ui/dist/internal.js +11 -0
  22. package/dist/cjs/node_modules/radix-ui/dist/internal.js.map +1 -0
  23. package/dist/cjs/node_modules/zod/lib/index.js +4515 -0
  24. package/dist/cjs/node_modules/zod/lib/index.js.map +1 -0
  25. package/dist/cjs/ui/DevToolContent/Form/FormFieldBase.js +18 -0
  26. package/dist/cjs/ui/DevToolContent/Form/FormFieldBase.js.map +1 -0
  27. package/dist/cjs/ui/DevToolContent/Form/InputFormField.js +15 -0
  28. package/dist/cjs/ui/DevToolContent/Form/InputFormField.js.map +1 -0
  29. package/dist/cjs/ui/DevToolContent/Form/Select.js +32 -0
  30. package/dist/cjs/ui/DevToolContent/Form/Select.js.map +1 -0
  31. package/dist/cjs/ui/DevToolContent/Form/SelectFormField.js +14 -0
  32. package/dist/cjs/ui/DevToolContent/Form/SelectFormField.js.map +1 -0
  33. package/dist/cjs/ui/DevToolContent/Form/TextAreaFormField.js +15 -0
  34. package/dist/cjs/ui/DevToolContent/Form/TextAreaFormField.js.map +1 -0
  35. package/dist/cjs/ui/DevToolContent/HandlerTable/BehaviorSelect.js +8 -25
  36. package/dist/cjs/ui/DevToolContent/HandlerTable/BehaviorSelect.js.map +1 -1
  37. package/dist/cjs/ui/DevToolContent/ToolButtonGroup/HandlerForm.js +58 -0
  38. package/dist/cjs/ui/DevToolContent/ToolButtonGroup/HandlerForm.js.map +1 -0
  39. package/dist/cjs/ui/DevToolContent/ToolButtonGroup/index.js +64 -0
  40. package/dist/cjs/ui/DevToolContent/ToolButtonGroup/index.js.map +1 -0
  41. package/dist/cjs/ui/DevToolContent/ToolButtonGroup/schema.js +31 -0
  42. package/dist/cjs/ui/DevToolContent/ToolButtonGroup/schema.js.map +1 -0
  43. package/dist/cjs/ui/DevToolContent/ToolButtonGroup/util.js +24 -0
  44. package/dist/cjs/ui/DevToolContent/ToolButtonGroup/util.js.map +1 -0
  45. package/dist/cjs/ui/MSWDevTool.js +7 -14
  46. package/dist/cjs/ui/MSWDevTool.js.map +1 -1
  47. package/dist/esm/lib/handlerStore.js +35 -1
  48. package/dist/esm/lib/handlerStore.js.map +1 -1
  49. package/dist/esm/lib/type.js +12 -1
  50. package/dist/esm/lib/type.js.map +1 -1
  51. package/dist/esm/lib/util.js +10 -2
  52. package/dist/esm/lib/util.js.map +1 -1
  53. package/dist/esm/msw-dev-tool.css +1 -1
  54. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/dialog.js +14 -0
  55. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/dialog.js.map +1 -0
  56. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/dialog.props.js +8 -0
  57. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/dialog.props.js.map +1 -0
  58. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/text-area.js +10 -0
  59. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/text-area.js.map +1 -0
  60. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/text-area.props.js +7 -0
  61. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/text-area.props.js.map +1 -0
  62. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/text-field.js +2 -1
  63. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/components/text-field.js.map +1 -1
  64. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/helpers/require-react-element.js +6 -0
  65. package/dist/esm/node_modules/@radix-ui/themes/dist/esm/helpers/require-react-element.js.map +1 -0
  66. package/dist/esm/node_modules/radix-ui/dist/internal.js +9 -0
  67. package/dist/esm/node_modules/radix-ui/dist/internal.js.map +1 -0
  68. package/dist/esm/node_modules/zod/lib/index.js +4406 -0
  69. package/dist/esm/node_modules/zod/lib/index.js.map +1 -0
  70. package/dist/esm/ui/DevToolContent/Form/FormFieldBase.js +16 -0
  71. package/dist/esm/ui/DevToolContent/Form/FormFieldBase.js.map +1 -0
  72. package/dist/esm/ui/DevToolContent/Form/InputFormField.js +13 -0
  73. package/dist/esm/ui/DevToolContent/Form/InputFormField.js.map +1 -0
  74. package/dist/esm/ui/DevToolContent/Form/Select.js +30 -0
  75. package/dist/esm/ui/DevToolContent/Form/Select.js.map +1 -0
  76. package/dist/esm/ui/DevToolContent/Form/SelectFormField.js +12 -0
  77. package/dist/esm/ui/DevToolContent/Form/SelectFormField.js.map +1 -0
  78. package/dist/esm/ui/DevToolContent/Form/TextAreaFormField.js +13 -0
  79. package/dist/esm/ui/DevToolContent/Form/TextAreaFormField.js.map +1 -0
  80. package/dist/esm/ui/DevToolContent/HandlerTable/BehaviorSelect.js +8 -25
  81. package/dist/esm/ui/DevToolContent/HandlerTable/BehaviorSelect.js.map +1 -1
  82. package/dist/esm/ui/DevToolContent/ToolButtonGroup/HandlerForm.js +56 -0
  83. package/dist/esm/ui/DevToolContent/ToolButtonGroup/HandlerForm.js.map +1 -0
  84. package/dist/esm/ui/DevToolContent/ToolButtonGroup/index.js +62 -0
  85. package/dist/esm/ui/DevToolContent/ToolButtonGroup/index.js.map +1 -0
  86. package/dist/esm/ui/DevToolContent/ToolButtonGroup/schema.js +29 -0
  87. package/dist/esm/ui/DevToolContent/ToolButtonGroup/schema.js.map +1 -0
  88. package/dist/esm/ui/DevToolContent/ToolButtonGroup/util.js +21 -0
  89. package/dist/esm/ui/DevToolContent/ToolButtonGroup/util.js.map +1 -0
  90. package/dist/esm/ui/MSWDevTool.js +2 -9
  91. package/dist/esm/ui/MSWDevTool.js.map +1 -1
  92. package/dist/types/index.d.ts +14 -1
  93. package/package.json +5 -3
  94. package/dist/cjs/ui/DevToolContent/ToolButtonGroup.js +0 -18
  95. package/dist/cjs/ui/DevToolContent/ToolButtonGroup.js.map +0 -1
  96. package/dist/esm/ui/DevToolContent/ToolButtonGroup.js +0 -16
  97. package/dist/esm/ui/DevToolContent/ToolButtonGroup.js.map +0 -1
@@ -0,0 +1,16 @@
1
+ import { Label } from '../../../node_modules/@radix-ui/react-label/dist/index.js';
2
+ import React__default from 'react';
3
+ import { Flex as p } from '../../../node_modules/@radix-ui/themes/dist/esm/components/flex.js';
4
+ import { Text as p$1 } from '../../../node_modules/@radix-ui/themes/dist/esm/components/text.js';
5
+
6
+ const FormFieldBase = ({ id, label, required, error, children, }) => {
7
+ return (React__default.createElement(p, { gap: "2", direction: "column" },
8
+ React__default.createElement(Label, { htmlFor: id },
9
+ label,
10
+ required && (React__default.createElement("span", { style: { color: "red", marginLeft: "0.2rem" } }, "*"))),
11
+ children,
12
+ error && (React__default.createElement(p$1, { size: "1", color: "red", weight: "medium" }, error))));
13
+ };
14
+
15
+ export { FormFieldBase };
16
+ //# sourceMappingURL=FormFieldBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldBase.js","sources":["../../../../../src/ui/DevToolContent/Form/FormFieldBase.tsx"],"sourcesContent":[null],"names":["React","Flex","Text"],"mappings":";;;;;AAWa,MAAA,aAAa,GAAG,CAAC,EAC5B,EAAE,EACF,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,GAC8B,KAAI;IAC1C,QACEA,cAAC,CAAA,aAAA,CAAAC,CAAI,EAAC,EAAA,GAAG,EAAC,GAAG,EAAC,SAAS,EAAC,QAAQ,EAAA;AAC9B,QAAAD,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAE,EAAE,EAAA;YACf,KAAK;AACL,YAAA,QAAQ,KACPA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,EAAA,GAAA,CAAU,CAC9D,CACK;QACP,QAAQ;QACR,KAAK,KACJA,cAAC,CAAA,aAAA,CAAAE,GAAI,IAAC,IAAI,EAAC,GAAG,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,EAAA,EACvC,KAAK,CACD,CACR,CACI,EACP;AACJ;;;;"}
@@ -0,0 +1,13 @@
1
+ import React__default, { forwardRef, useId } from 'react';
2
+ import { FormFieldBase } from './FormFieldBase.js';
3
+ import { Root as u } from '../../../node_modules/@radix-ui/themes/dist/esm/components/text-field.js';
4
+
5
+ const InputFormField = forwardRef(({ label, error, required, ...rest }, ref) => {
6
+ const id = useId();
7
+ return (React__default.createElement(FormFieldBase, { id: id, label: label, error: error, required: required },
8
+ React__default.createElement(u, { id: id, ref: ref, ...rest })));
9
+ });
10
+ InputFormField.displayName = "InputFormField";
11
+
12
+ export { InputFormField };
13
+ //# sourceMappingURL=InputFormField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputFormField.js","sources":["../../../../../src/ui/DevToolContent/Form/InputFormField.tsx"],"sourcesContent":[null],"names":["React","TextField.Root"],"mappings":";;;;MASa,cAAc,GAAG,UAAU,CACtC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,KAAI;AAC3C,IAAA,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AAEnB,IAAA,QACEA,cAAC,CAAA,aAAA,CAAA,aAAa,IAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAA;AACnE,QAAAA,cAAA,CAAA,aAAA,CAACC,CAAc,EAAC,EAAA,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAM,GAAA,IAAI,EAAI,CAAA,CAChC,EAChB;AACJ,CAAC,EACD;AAEF,cAAc,CAAC,WAAW,GAAG,gBAAgB;;;;"}
@@ -0,0 +1,30 @@
1
+ import React__default from 'react';
2
+ import { SelectItem as SelectItem$1, SelectItemText, SelectItemIndicator, Select as Select$1, SelectTrigger, SelectValue, SelectIcon, SelectPortal, SelectContent, SelectScrollUpButton, SelectViewport, SelectScrollDownButton } from '../../../node_modules/@radix-ui/react-select/dist/index.js';
3
+ import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
4
+
5
+ const Select = ({ options, placeholder, label, id, ...rest }) => {
6
+ return (React__default.createElement(Select$1, { "data-theme": "light", "data-radix-color-scheme": "light", ...rest },
7
+ React__default.createElement(SelectTrigger, { className: "msw-dt-select-trigger", "aria-label": label !== null && label !== void 0 ? label : "select", onClick: (e) => e.stopPropagation(), id: id },
8
+ React__default.createElement(SelectValue, { placeholder: placeholder, className: "msw-dt-text-ellipsis" }),
9
+ React__default.createElement(SelectIcon, { className: "msw-dt-select-icon" },
10
+ React__default.createElement(ChevronDownIcon, null))),
11
+ React__default.createElement(SelectPortal, null,
12
+ React__default.createElement(SelectContent, { className: "msw-dt-select-content", style: { zIndex: 10000 }, "data-theme": "light", "data-radix-color-scheme": "light" },
13
+ React__default.createElement(SelectScrollUpButton, { className: "msw-dt-select-scroll-button" },
14
+ React__default.createElement(ChevronUpIcon, null)),
15
+ React__default.createElement(SelectViewport, { className: "msw-dt-select-viewport" }, options.map((opt) => {
16
+ return (React__default.createElement(SelectItem, { key: opt.value, value: opt.value }, opt.label));
17
+ })),
18
+ React__default.createElement(SelectScrollDownButton, { className: "msw-dt-select-scroll-button" },
19
+ React__default.createElement(ChevronDownIcon, null))))));
20
+ };
21
+ const SelectItem = React__default.forwardRef(({ children, className, value, ...props }, forwardedRef) => {
22
+ return (React__default.createElement(SelectItem$1, { className: "msw-dt-select-item", value: value, ...props, ref: forwardedRef },
23
+ React__default.createElement(SelectItemText, null, children),
24
+ React__default.createElement(SelectItemIndicator, { className: "msw-dt-select-item-indicator" },
25
+ React__default.createElement(CheckIcon, null))));
26
+ });
27
+ SelectItem.displayName = "SelectItem";
28
+
29
+ export { Select };
30
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.js","sources":["../../../../../src/ui/DevToolContent/Form/Select.tsx"],"sourcesContent":[null],"names":["React","_Select","_SelectItem"],"mappings":";;;;AA8Ba,MAAA,MAAM,GAAG,CAAC,EACrB,OAAO,EACP,WAAW,EACX,KAAK,EACL,EAAE,EACF,GAAG,IAAI,EACK,KAAI;IAChB,QACEA,6BAACC,QAAO,EAAA,EAAA,YAAA,EAAY,OAAO,EAAyB,yBAAA,EAAA,OAAO,KAAK,IAAI,EAAA;AAClE,QAAAD,cAAA,CAAA,aAAA,CAAC,aAAa,EAAA,EACZ,SAAS,EAAC,uBAAuB,EAAA,YAAA,EACrB,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAL,KAAK,GAAI,QAAQ,EAC7B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EACnC,EAAE,EAAE,EAAE,EAAA;YAENA,cAAC,CAAA,aAAA,CAAA,WAAW,IACV,WAAW,EAAE,WAAW,EACxB,SAAS,EAAC,sBAAsB,EAChC,CAAA;AACF,YAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,SAAS,EAAC,oBAAoB,EAAA;gBACxCA,cAAC,CAAA,aAAA,CAAA,eAAe,EAAG,IAAA,CAAA,CACR,CACC;AAChB,QAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,IAAA;AACX,YAAAA,cAAA,CAAA,aAAA,CAAC,aAAa,EACZ,EAAA,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EACb,YAAA,EAAA,OAAO,6BACM,OAAO,EAAA;AAE/B,gBAAAA,cAAA,CAAA,aAAA,CAAC,oBAAoB,EAAA,EAAC,SAAS,EAAC,6BAA6B,EAAA;oBAC3DA,cAAC,CAAA,aAAA,CAAA,aAAa,OAAG,CACI;AACvB,gBAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EAAC,SAAS,EAAC,wBAAwB,EAAA,EAC/C,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;oBACnB,QACEA,6BAAC,UAAU,EAAA,EAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAA,EACzC,GAAG,CAAC,KAAK,CACC,EACb;AACJ,iBAAC,CAAC,CACa;AACjB,gBAAAA,cAAA,CAAA,aAAA,CAAC,sBAAsB,EAAA,EAAC,SAAS,EAAC,6BAA6B,EAAA;AAC7D,oBAAAA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAG,IAAA,CAAA,CACI,CACX,CACH,CACP,EACV;AACJ,EAAE;AAEF,MAAM,UAAU,GAAGA,cAAK,CAAC,UAAU,CACjC,CACE,EACE,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EAC2B,EACrC,YAA0C,KACxC;AACF,IAAA,QACEA,cAAC,CAAA,aAAA,CAAAE,YAAW,EACV,EAAA,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAE,KAAK,EACR,GAAA,KAAK,EACT,GAAG,EAAE,YAAY,EAAA;QAEjBF,cAAC,CAAA,aAAA,CAAA,cAAc,EAAE,IAAA,EAAA,QAAQ,CAAkB;AAC3C,QAAAA,cAAA,CAAA,aAAA,CAAC,mBAAmB,EAAA,EAAC,SAAS,EAAC,8BAA8B,EAAA;AAC3D,YAAAA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,IAAA,CAAG,CACO,CACV,EACd;AACJ,CAAC,CACF,CAAC;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY;;;;"}
@@ -0,0 +1,12 @@
1
+ import React__default, { useId } from 'react';
2
+ import { FormFieldBase } from './FormFieldBase.js';
3
+ import { Select } from './Select.js';
4
+
5
+ const SelectFormField = ({ label, error, required, ...rest }) => {
6
+ const id = useId();
7
+ return (React__default.createElement(FormFieldBase, { id: id, label: label, error: error, required: required },
8
+ React__default.createElement(Select, { id: id, ...rest })));
9
+ };
10
+
11
+ export { SelectFormField };
12
+ //# sourceMappingURL=SelectFormField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectFormField.js","sources":["../../../../../src/ui/DevToolContent/Form/SelectFormField.tsx"],"sourcesContent":[null],"names":["React"],"mappings":";;;;AAaa,MAAA,eAAe,GAAG,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,GAAG,IAAI,EACc,KAAI;AACzB,IAAA,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AACnB,IAAA,QACEA,cAAC,CAAA,aAAA,CAAA,aAAa,IAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAA;QACnEA,cAAC,CAAA,aAAA,CAAA,MAAM,EAAC,EAAA,EAAE,EAAE,EAAE,KAAM,IAAI,EAAA,CAAI,CACd,EAChB;AACJ;;;;"}
@@ -0,0 +1,13 @@
1
+ import React__default, { forwardRef, useId } from 'react';
2
+ import { FormFieldBase } from './FormFieldBase.js';
3
+ import { TextArea as r } from '../../../node_modules/@radix-ui/themes/dist/esm/components/text-area.js';
4
+
5
+ const TextAreaFormField = forwardRef(({ label, error, required, ...rest }, ref) => {
6
+ const id = useId();
7
+ return (React__default.createElement(FormFieldBase, { id: id, label: label, error: error, required: required },
8
+ React__default.createElement(r, { id: id, ref: ref, ...rest })));
9
+ });
10
+ TextAreaFormField.displayName = "TextAreaFormField";
11
+
12
+ export { TextAreaFormField };
13
+ //# sourceMappingURL=TextAreaFormField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextAreaFormField.js","sources":["../../../../../src/ui/DevToolContent/Form/TextAreaFormField.tsx"],"sourcesContent":[null],"names":["React","TextArea"],"mappings":";;;;MASa,iBAAiB,GAAG,UAAU,CACzC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,KAAI;AAC3C,IAAA,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AAEnB,IAAA,QACEA,cAAC,CAAA,aAAA,CAAA,aAAa,IAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAA;AACnE,QAAAA,cAAA,CAAA,aAAA,CAACC,CAAQ,EAAA,EAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAM,GAAA,IAAI,EAAI,CAAA,CAC1B,EAChB;AACJ,CAAC,EACD;AAEF,iBAAiB,CAAC,WAAW,GAAG,mBAAmB;;;;"}
@@ -1,38 +1,21 @@
1
- import React__default from 'react';
2
- import { SelectItem as SelectItem$1, SelectItemText, SelectItemIndicator, Select, SelectTrigger, SelectValue, SelectIcon, SelectPortal, SelectContent, SelectScrollUpButton, SelectViewport, SelectScrollDownButton } from '../../../node_modules/@radix-ui/react-select/dist/index.js';
3
- import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
4
1
  import { HttpHandlerBehavior } from '../../../lib/type.js';
5
2
  import { useHandlerStore } from '../../../lib/handlerStore.js';
3
+ import { Select } from '../Form/Select.js';
4
+ import React__default from 'react';
6
5
 
6
+ const options = Object.values(HttpHandlerBehavior).map((behavior) => ({
7
+ label: behavior,
8
+ value: behavior,
9
+ }));
7
10
  const BehaviorSelect = ({ row }) => {
8
11
  var _a;
9
12
  const id = row.original.id;
10
13
  const { setHandlerBehavior, getHandlerBehavior } = useHandlerStore();
11
- return (React__default.createElement(Select, { onValueChange: (_value) => {
14
+ return (React__default.createElement(Select, { options: options, placeholder: (_a = getHandlerBehavior(id)) !== null && _a !== void 0 ? _a : HttpHandlerBehavior.DEFAULT, onValueChange: (_value) => {
12
15
  const value = _value;
13
16
  setHandlerBehavior(row.original.id, value);
14
- }, "data-theme": "light", "data-radix-color-scheme": "light" },
15
- React__default.createElement(SelectTrigger, { className: "msw-dt-select-trigger", "aria-label": "Behavior", onClick: (e) => e.stopPropagation() },
16
- React__default.createElement(SelectValue, { placeholder: (_a = getHandlerBehavior(id)) !== null && _a !== void 0 ? _a : HttpHandlerBehavior.DEFAULT, className: "msw-dt-text-ellipsis" }),
17
- React__default.createElement(SelectIcon, { className: "msw-dt-select-icon" },
18
- React__default.createElement(ChevronDownIcon, null))),
19
- React__default.createElement(SelectPortal, null,
20
- React__default.createElement(SelectContent, { className: "msw-dt-select-content", style: { zIndex: 10000 }, "data-theme": "light", "data-radix-color-scheme": "light" },
21
- React__default.createElement(SelectScrollUpButton, { className: "msw-dt-select-scroll-button" },
22
- React__default.createElement(ChevronUpIcon, null)),
23
- React__default.createElement(SelectViewport, { className: "msw-dt-select-viewport" }, Object.values(HttpHandlerBehavior).map((behavior) => {
24
- return (React__default.createElement(SelectItem, { key: behavior, value: behavior }, behavior));
25
- })),
26
- React__default.createElement(SelectScrollDownButton, { className: "msw-dt-select-scroll-button" },
27
- React__default.createElement(ChevronDownIcon, null))))));
17
+ }, "data-theme": "light", "data-radix-color-scheme": "light" }));
28
18
  };
29
- const SelectItem = React__default.forwardRef(({ children, className, value, ...props }, forwardedRef) => {
30
- return (React__default.createElement(SelectItem$1, { className: "msw-dt-select-item", value: value, ...props, ref: forwardedRef },
31
- React__default.createElement(SelectItemText, null, children),
32
- React__default.createElement(SelectItemIndicator, { className: "msw-dt-select-item-indicator" },
33
- React__default.createElement(CheckIcon, null))));
34
- });
35
- SelectItem.displayName = "SelectItem";
36
19
 
37
20
  export { BehaviorSelect };
38
21
  //# sourceMappingURL=BehaviorSelect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BehaviorSelect.js","sources":["../../../../../src/ui/DevToolContent/HandlerTable/BehaviorSelect.tsx"],"sourcesContent":[null],"names":["React","_SelectItem"],"mappings":"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"}
1
+ {"version":3,"file":"BehaviorSelect.js","sources":["../../../../../src/ui/DevToolContent/HandlerTable/BehaviorSelect.tsx"],"sourcesContent":[null],"names":["React"],"mappings":";;;;;AAOA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM;AACpE,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,KAAK,EAAE,QAAkB;AAC1B,CAAA,CAAC,CAAC,CAAC;MAES,cAAc,GAAG,CAAC,EAAE,GAAG,EAAgC,KAAI;;AACtE,IAAA,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC3B,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,eAAe,EAAE,CAAC;IAErE,QACEA,cAAC,CAAA,aAAA,CAAA,MAAM,EACL,EAAA,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,CAAA,EAAA,GAAA,kBAAkB,CAAC,EAAE,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,mBAAmB,CAAC,OAAO,EAClE,aAAa,EAAE,CAAC,MAAM,KAAI;YACxB,MAAM,KAAK,GAAG,MAA6B,CAAC;YAC5C,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,SAAC,gBACU,OAAO,EAAA,yBAAA,EACM,OAAO,EAAA,CAC/B,EACF;AACJ;;;;"}
@@ -0,0 +1,56 @@
1
+ import { PlusIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
2
+ import React__default, { useState } from 'react';
3
+ import { handlerSchema } from './schema.js';
4
+ import { HttpMethod } from '../../../lib/type.js';
5
+ import { InputFormField } from '../Form/InputFormField.js';
6
+ import { TextAreaFormField } from '../Form/TextAreaFormField.js';
7
+ import { SelectFormField } from '../Form/SelectFormField.js';
8
+ import { useHandlerStore } from '../../../lib/handlerStore.js';
9
+ import { Flex as p } from '../../../node_modules/@radix-ui/themes/dist/esm/components/flex.js';
10
+ import { Button as o } from '../../../node_modules/@radix-ui/themes/dist/esm/components/button.js';
11
+
12
+ const options = Object.values(HttpMethod).map((method) => ({
13
+ label: method,
14
+ value: method,
15
+ }));
16
+ const HandlerForm = ({ onClose }) => {
17
+ const { addTempHandler } = useHandlerStore();
18
+ const [errors, setErrors] = useState({});
19
+ const validateForm = (e) => {
20
+ e.preventDefault();
21
+ const formData = new FormData(e.currentTarget);
22
+ const data = {
23
+ method: formData.get("method"),
24
+ path: formData.get("path"),
25
+ response: formData.get("response"),
26
+ };
27
+ const result = handlerSchema.safeParse(data);
28
+ if (!result.success) {
29
+ const formattedErrors = {};
30
+ result.error.issues.forEach((issue) => {
31
+ issue.path.forEach((path) => {
32
+ const key = path;
33
+ formattedErrors[key] = issue.message;
34
+ });
35
+ });
36
+ setErrors(formattedErrors);
37
+ return;
38
+ }
39
+ setErrors({});
40
+ addTempHandler(result.data);
41
+ onClose === null || onClose === void 0 ? void 0 : onClose();
42
+ };
43
+ return (React__default.createElement("form", { onSubmit: validateForm, style: { overflowY: "scroll", flexGrow: 1, paddingRight: "1.5rem" } },
44
+ React__default.createElement(p, { gap: "5", direction: "column" },
45
+ React__default.createElement(SelectFormField, { label: "Method", name: "method", error: errors.method, options: options, required: true, defaultValue: HttpMethod.GET }),
46
+ React__default.createElement(InputFormField, { label: "Path", name: "path", error: errors.path, placeholder: "api end point", required: true }),
47
+ React__default.createElement(TextAreaFormField, { label: "Response", name: "response", error: errors.response, placeholder: "JSON response", style: {
48
+ minHeight: "225px",
49
+ }, required: true }),
50
+ React__default.createElement(o, { type: "submit" },
51
+ React__default.createElement(PlusIcon, null),
52
+ "Add"))));
53
+ };
54
+
55
+ export { HandlerForm };
56
+ //# sourceMappingURL=HandlerForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandlerForm.js","sources":["../../../../../src/ui/DevToolContent/ToolButtonGroup/HandlerForm.tsx"],"sourcesContent":[null],"names":["React","Flex","Button"],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import React__default, { useState } from 'react';
2
+ import { useHandlerStore } from '../../../lib/handlerStore.js';
3
+ import { ReloadIcon, PlusIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
4
+ import { DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogClose, DialogDescription } from '../../../node_modules/@radix-ui/react-dialog/dist/index.js';
5
+ import { ThemeProvider } from '../../ThemeProvider.js';
6
+ import { HandlerForm } from './HandlerForm.js';
7
+ import { Flex as p } from '../../../node_modules/@radix-ui/themes/dist/esm/components/flex.js';
8
+ import { Button as o } from '../../../node_modules/@radix-ui/themes/dist/esm/components/button.js';
9
+ import { Root as s } from '../../../node_modules/@radix-ui/themes/dist/esm/components/dialog.js';
10
+
11
+ const ToolButtonGroup = () => {
12
+ const { resetMSWDevTool } = useHandlerStore();
13
+ const [isDialogOpen, setIsDialogOpen] = useState(false);
14
+ return (React__default.createElement(p, { gap: "6", py: "4" },
15
+ React__default.createElement(o, { onClick: () => resetMSWDevTool(), color: "crimson" },
16
+ React__default.createElement(ReloadIcon, null),
17
+ "Reset Dev tool"),
18
+ React__default.createElement(s, { open: isDialogOpen, onOpenChange: setIsDialogOpen },
19
+ React__default.createElement(DialogTrigger, { asChild: true },
20
+ React__default.createElement(o, null,
21
+ React__default.createElement(PlusIcon, null),
22
+ "Add Temp Handler")),
23
+ React__default.createElement(DialogPortal, null,
24
+ React__default.createElement(ThemeProvider, null,
25
+ React__default.createElement(DialogOverlay, { className: "dialog-overlay" }),
26
+ React__default.createElement(DialogContent, { style: {
27
+ position: "fixed",
28
+ top: "50%",
29
+ left: "50%",
30
+ transform: "translate(-50%, -50%)",
31
+ backgroundColor: "#FFF",
32
+ padding: "1rem 2rem",
33
+ display: "flex",
34
+ flexDirection: "column",
35
+ color: "#000",
36
+ borderRadius: "1rem",
37
+ maxHeight: "90vh",
38
+ maxWidth: "90vw",
39
+ overflow: "hidden",
40
+ } },
41
+ React__default.createElement(p, { align: "center", justify: "between" },
42
+ React__default.createElement(DialogTitle, null, "Add Temp Handler"),
43
+ React__default.createElement(DialogClose, { style: {
44
+ fontSize: "1.5rem",
45
+ backgroundColor: "transparent",
46
+ width: "2rem",
47
+ height: "2rem",
48
+ padding: 0,
49
+ textAlign: "center",
50
+ } }, "X")),
51
+ React__default.createElement(DialogDescription, null,
52
+ "Temp handler is stored in the session storage. If you",
53
+ " ",
54
+ React__default.createElement("span", { style: { fontWeight: "600" } }, "reset dev tool"),
55
+ ", it will be ",
56
+ React__default.createElement("span", { style: { color: "red" } }, "deleted"),
57
+ "."),
58
+ React__default.createElement(HandlerForm, { onClose: () => setIsDialogOpen(false) })))))));
59
+ };
60
+
61
+ export { ToolButtonGroup };
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/ui/DevToolContent/ToolButtonGroup/index.tsx"],"sourcesContent":[null],"names":["React","Flex","Button","Dialog.Root"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import z from '../../../node_modules/zod/lib/index.js';
2
+ import { isValidUrl, isValidJson } from './util.js';
3
+ import { HttpMethod } from '../../../lib/type.js';
4
+ import { isDuplicateHandler } from '../../../lib/handlerStore.js';
5
+ import { getRowId } from '../../../lib/util.js';
6
+
7
+ const handlerSchema = z
8
+ .object({
9
+ path: z.string().refine(isValidUrl, {
10
+ message: "Invalid URL format",
11
+ }),
12
+ response: z
13
+ .string()
14
+ .refine(isValidJson, { message: "Invalid JSON format" }),
15
+ method: z.nativeEnum(HttpMethod),
16
+ })
17
+ .refine((data) => {
18
+ const id = getRowId({
19
+ path: data.path,
20
+ method: data.method,
21
+ });
22
+ return !isDuplicateHandler(id);
23
+ }, {
24
+ message: "Duplicate handler. Change method or path.",
25
+ path: ["path", "method"],
26
+ });
27
+
28
+ export { handlerSchema };
29
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sources":["../../../../../src/ui/DevToolContent/ToolButtonGroup/schema.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAMO,MAAM,aAAa,GAAG,CAAC;AAC3B,KAAA,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,QAAA,OAAO,EAAE,oBAAoB;KAC9B,CAAC;AACF,IAAA,QAAQ,EAAE,CAAC;AACR,SAAA,MAAM,EAAE;SACR,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAC1D,IAAA,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;CACjC,CAAC;AACD,KAAA,MAAM,CACL,CAAC,IAAI,KAAI;IACP,MAAM,EAAE,GAAG,QAAQ,CAAC;QAClB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,KAAA,CAAC,CAAC;AACH,IAAA,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC,EACD;AACE,IAAA,OAAO,EAAE,2CAA2C;AACpD,IAAA,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;AACzB,CAAA;;;;"}
@@ -0,0 +1,21 @@
1
+ const isValidUrl = (input) => {
2
+ try {
3
+ new URL(input, window.location.href);
4
+ return true;
5
+ }
6
+ catch (error) {
7
+ return false;
8
+ }
9
+ };
10
+ const isValidJson = (input) => {
11
+ try {
12
+ JSON.parse(input);
13
+ return true;
14
+ }
15
+ catch (error) {
16
+ return false;
17
+ }
18
+ };
19
+
20
+ export { isValidJson, isValidUrl };
21
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sources":["../../../../../src/ui/DevToolContent/ToolButtonGroup/util.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAa,MAAA,UAAU,GAAG,CAAC,KAAa,KAAI;AAC1C,IAAA,IAAI;QACF,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,KAAK,CAAC;KACd;AACH,EAAE;AAEW,MAAA,WAAW,GAAG,CAAC,KAAa,KAAI;AAC3C,IAAA,IAAI;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,KAAK,CAAC;KACd;AACH;;;;"}
@@ -4,7 +4,7 @@ import { HandlerTable } from './DevToolContent/HandlerTable/index.js';
4
4
  import { DialogDescription } from '../node_modules/@radix-ui/react-dialog/dist/index.js';
5
5
  import { HandlerDebugger } from './DevToolContent/HandlerDebugger/index.js';
6
6
  import { ThemeProvider } from './ThemeProvider.js';
7
- import { ToolButtonGroup } from './DevToolContent/ToolButtonGroup.js';
7
+ import { ToolButtonGroup } from './DevToolContent/ToolButtonGroup/index.js';
8
8
  import { DefaultDevToolTrigger } from './Trigger.js';
9
9
  import { Flex as p } from '../node_modules/@radix-ui/themes/dist/esm/components/flex.js';
10
10
 
@@ -15,14 +15,7 @@ const MSWDevTool = ({ trigger }) => {
15
15
  React__default.createElement(DefaultDevToolTrigger, null))),
16
16
  React__default.createElement(Drawer.Portal, null,
17
17
  React__default.createElement(ThemeProvider, null,
18
- React__default.createElement(Drawer.Overlay, { style: {
19
- position: "fixed",
20
- top: 0,
21
- right: 0,
22
- bottom: 0,
23
- left: 0,
24
- backgroundColor: "rgba(0, 0, 0, 0.4)",
25
- } }),
18
+ React__default.createElement(Drawer.Overlay, { className: "dialog-overlay" }),
26
19
  React__default.createElement(Drawer.Content, { style: {
27
20
  position: "fixed",
28
21
  bottom: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"MSWDevTool.js","sources":["../../../src/ui/MSWDevTool.tsx"],"sourcesContent":[null],"names":["React","Flex"],"mappings":";;;;;;;;;;MAca,UAAU,GAAG,CAAC,EAAE,OAAO,EAAmB,KAAI;IACzD,QACEA,6BAAC,aAAa,EAAA,IAAA;QACZA,cAAC,CAAA,aAAA,CAAA,MAAM,CAAC,IAAI,EAAA,IAAA;YACT,OAAO,IACNA,6BAAC,MAAM,CAAC,OAAO,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,EAAE,OAAO,CAAkB,KAElDA,6BAAC,MAAM,CAAC,OAAO,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA;gBACrBA,cAAC,CAAA,aAAA,CAAA,qBAAqB,EAAG,IAAA,CAAA,CACV,CAClB;YACDA,cAAC,CAAA,aAAA,CAAA,MAAM,CAAC,MAAM,EAAA,IAAA;AACZ,gBAAAA,cAAA,CAAA,aAAA,CAAC,aAAa,EAAA,IAAA;AACZ,oBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,CAAC,OAAO,EAAA,EACb,KAAK,EAAE;AACL,4BAAA,QAAQ,EAAE,OAAO;AACjB,4BAAA,GAAG,EAAE,CAAC;AACN,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,IAAI,EAAE,CAAC;AACP,4BAAA,eAAe,EAAE,oBAAoB;yBACtC,EACD,CAAA;AACF,oBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,CAAC,OAAO,EAAA,EACb,KAAK,EAAE;AACL,4BAAA,QAAQ,EAAE,OAAO;AACjB,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,IAAI,EAAE,CAAC;AACP,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,MAAM,EAAE,KAAK;AACb,4BAAA,eAAe,EAAE,MAAM;AACvB,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,aAAa,EAAE,QAAQ;AACvB,4BAAA,KAAK,EAAE,MAAM;AACd,yBAAA,EAAA;wBAEDA,cAAC,CAAA,aAAA,CAAAC,CAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAA;AACpC,4BAAAD,cAAA,CAAA,aAAA,CAAC,MAAM,CAAC,KAAK,IACX,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAG/C,EAAA,cAAA,CAAA;AACf,4BAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,CAAC,KAAK,EAAA,EACX,KAAK,EAAE;AACL,oCAAA,QAAQ,EAAE,QAAQ;AAClB,oCAAA,eAAe,EAAE,aAAa;AAC9B,oCAAA,KAAK,EAAE,MAAM;AACb,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,OAAO,EAAE,CAAC;AACV,oCAAA,SAAS,EAAE,QAAQ;AACpB,iCAAA,EAAA,EAAA,GAAA,CAGY,CACV;AACP,wBAAAA,cAAA,CAAA,aAAA,CAAC,iBAAiB,EAAA,EAChB,SAAS,EAAC,iBAAiB,EAC3B,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAGR,EAAA,kEAAA,CAAA;AACpB,wBAAAA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAG,IAAA,CAAA;AACnB,wBAAAA,cAAA,CAAA,aAAA,CAACC,CAAI,EAAC,EAAA,GAAG,EAAC,GAAG,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAA;AAClD,4BAAAD,cAAA,CAAA,aAAA,CAAC,YAAY,EAAG,IAAA,CAAA;4BAChBA,cAAC,CAAA,aAAA,CAAA,eAAe,OAAG,CACd,CACQ,CACH,CACF,CACJ,CACA,EAChB;AACJ;;;;"}
1
+ {"version":3,"file":"MSWDevTool.js","sources":["../../../src/ui/MSWDevTool.tsx"],"sourcesContent":[null],"names":["React","Flex"],"mappings":";;;;;;;;;;MAca,UAAU,GAAG,CAAC,EAAE,OAAO,EAAmB,KAAI;IACzD,QACEA,6BAAC,aAAa,EAAA,IAAA;QACZA,cAAC,CAAA,aAAA,CAAA,MAAM,CAAC,IAAI,EAAA,IAAA;YACT,OAAO,IACNA,6BAAC,MAAM,CAAC,OAAO,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,EAAE,OAAO,CAAkB,KAElDA,6BAAC,MAAM,CAAC,OAAO,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA;gBACrBA,cAAC,CAAA,aAAA,CAAA,qBAAqB,EAAG,IAAA,CAAA,CACV,CAClB;YACDA,cAAC,CAAA,aAAA,CAAA,MAAM,CAAC,MAAM,EAAA,IAAA;AACZ,gBAAAA,cAAA,CAAA,aAAA,CAAC,aAAa,EAAA,IAAA;AACZ,oBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,CAAC,OAAO,IAAC,SAAS,EAAC,gBAAgB,EAAG,CAAA;AAC7C,oBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,CAAC,OAAO,EAAA,EACb,KAAK,EAAE;AACL,4BAAA,QAAQ,EAAE,OAAO;AACjB,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,IAAI,EAAE,CAAC;AACP,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,MAAM,EAAE,KAAK;AACb,4BAAA,eAAe,EAAE,MAAM;AACvB,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,aAAa,EAAE,QAAQ;AACvB,4BAAA,KAAK,EAAE,MAAM;AACd,yBAAA,EAAA;wBAEDA,cAAC,CAAA,aAAA,CAAAC,CAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,SAAS,EAAA;AACpC,4BAAAD,cAAA,CAAA,aAAA,CAAC,MAAM,CAAC,KAAK,IACX,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAG/C,EAAA,cAAA,CAAA;AACf,4BAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,CAAC,KAAK,EAAA,EACX,KAAK,EAAE;AACL,oCAAA,QAAQ,EAAE,QAAQ;AAClB,oCAAA,eAAe,EAAE,aAAa;AAC9B,oCAAA,KAAK,EAAE,MAAM;AACb,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,OAAO,EAAE,CAAC;AACV,oCAAA,SAAS,EAAE,QAAQ;AACpB,iCAAA,EAAA,EAAA,GAAA,CAGY,CACV;AACP,wBAAAA,cAAA,CAAA,aAAA,CAAC,iBAAiB,EAAA,EAChB,SAAS,EAAC,iBAAiB,EAC3B,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAGR,EAAA,kEAAA,CAAA;AACpB,wBAAAA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAG,IAAA,CAAA;AACnB,wBAAAA,cAAA,CAAA,aAAA,CAACC,CAAI,EAAC,EAAA,GAAG,EAAC,GAAG,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAA;AAClD,4BAAAD,cAAA,CAAA,aAAA,CAAC,YAAY,EAAG,IAAA,CAAA;4BAChBA,cAAC,CAAA,aAAA,CAAA,eAAe,OAAG,CACd,CACQ,CACH,CACF,CACJ,CACA,EAChB;AACJ;;;;"}
@@ -44,11 +44,24 @@ type HttpHandler = HttpHandler$1 & {
44
44
  type FlattenHandler = {
45
45
  id: string;
46
46
  path: string;
47
- method: string;
47
+ method: HttpMethod;
48
48
  handler: HttpHandler;
49
49
  behavior: HttpHandlerBehavior;
50
+ type: "temp" | "default";
50
51
  };
51
52
  type Handler = RequestHandler | WebSocketHandler;
53
+ declare const HttpMethod: {
54
+ readonly GET: "GET";
55
+ readonly POST: "POST";
56
+ readonly PUT: "PUT";
57
+ readonly DELETE: "DELETE";
58
+ readonly PATCH: "PATCH";
59
+ readonly OPTIONS: "OPTIONS";
60
+ readonly HEAD: "HEAD";
61
+ readonly TRACE: "TRACE";
62
+ readonly CONNECT: "CONNECT";
63
+ };
64
+ type HttpMethod = ValueUnion<typeof HttpMethod>;
52
65
 
53
66
  declare const setupDevToolWorker: (...handlers: Handler[]) => Promise<SetupWorker>;
54
67
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "msw-dev-tool",
3
- "version": "3.0.0",
3
+ "version": "3.1.1",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -33,7 +33,8 @@
33
33
  }
34
34
  },
35
35
  "scripts": {
36
- "build": "rollup -c"
36
+ "build": "rollup -c",
37
+ "clean": "rm -rf dist && rm -rf node_modules"
37
38
  },
38
39
  "peerDependencies": {
39
40
  "msw": "^2.7.0",
@@ -71,7 +72,8 @@
71
72
  "@types/lodash": "^4.17.15",
72
73
  "immer": "^10.1.1",
73
74
  "lodash": "^4.17.21",
74
- "vaul": "^1.1.2"
75
+ "vaul": "^1.1.2",
76
+ "zod": "^3.24.2"
75
77
  },
76
78
  "publishConfig": {
77
79
  "access": "public"
@@ -1,18 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
- var handlerStore = require('../../lib/handlerStore.js');
5
- var reactIcons_esm = require('../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js');
6
- var flex = require('../../node_modules/@radix-ui/themes/dist/esm/components/flex.js');
7
- var button = require('../../node_modules/@radix-ui/themes/dist/esm/components/button.js');
8
-
9
- const ToolButtonGroup = () => {
10
- const { resetMSWDevTool } = handlerStore.useHandlerStore();
11
- return (React.createElement(flex.Flex, { gap: "8", py: "4" },
12
- React.createElement(button.Button, { onClick: () => resetMSWDevTool() },
13
- React.createElement(reactIcons_esm.ReloadIcon, null),
14
- "Reset Dev tool")));
15
- };
16
-
17
- exports.ToolButtonGroup = ToolButtonGroup;
18
- //# sourceMappingURL=ToolButtonGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolButtonGroup.js","sources":["../../../../src/ui/DevToolContent/ToolButtonGroup.tsx"],"sourcesContent":[null],"names":["useHandlerStore","Flex","Button","ReloadIcon"],"mappings":";;;;;;;;AAKO,MAAM,eAAe,GAAG,MAAK;AAClC,IAAA,MAAM,EAAE,eAAe,EAAE,GAAGA,4BAAe,EAAE,CAAC;IAE9C,QACE,KAAC,CAAA,aAAA,CAAAC,SAAI,EAAC,EAAA,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAA;QAClB,KAAC,CAAA,aAAA,CAAAC,aAAM,IAAC,OAAO,EAAE,MAAM,eAAe,EAAE,EAAA;AACtC,YAAA,KAAA,CAAA,aAAA,CAACC,yBAAU,EAAG,IAAA,CAAA;AAEP,YAAA,gBAAA,CAAA,CACJ,EACP;AACJ;;;;"}
@@ -1,16 +0,0 @@
1
- import React__default from 'react';
2
- import { useHandlerStore } from '../../lib/handlerStore.js';
3
- import { ReloadIcon } from '../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
4
- import { Flex as p } from '../../node_modules/@radix-ui/themes/dist/esm/components/flex.js';
5
- import { Button as o } from '../../node_modules/@radix-ui/themes/dist/esm/components/button.js';
6
-
7
- const ToolButtonGroup = () => {
8
- const { resetMSWDevTool } = useHandlerStore();
9
- return (React__default.createElement(p, { gap: "8", py: "4" },
10
- React__default.createElement(o, { onClick: () => resetMSWDevTool() },
11
- React__default.createElement(ReloadIcon, null),
12
- "Reset Dev tool")));
13
- };
14
-
15
- export { ToolButtonGroup };
16
- //# sourceMappingURL=ToolButtonGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolButtonGroup.js","sources":["../../../../src/ui/DevToolContent/ToolButtonGroup.tsx"],"sourcesContent":[null],"names":["React","Flex","Button"],"mappings":";;;;;;AAKO,MAAM,eAAe,GAAG,MAAK;AAClC,IAAA,MAAM,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAAC;IAE9C,QACEA,cAAC,CAAA,aAAA,CAAAC,CAAI,EAAC,EAAA,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAA;QAClBD,cAAC,CAAA,aAAA,CAAAE,CAAM,IAAC,OAAO,EAAE,MAAM,eAAe,EAAE,EAAA;AACtC,YAAAF,cAAA,CAAA,aAAA,CAAC,UAAU,EAAG,IAAA,CAAA;AAEP,YAAA,gBAAA,CAAA,CACJ,EACP;AACJ;;;;"}