@scalar/pre-post-request-scripts 0.3.11 → 0.3.13
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 +12 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/components/ViewLayout/ValueEmitter.vue.js +7 -0
- package/dist/components/ViewLayout/ValueEmitter.vue.js.map +1 -0
- package/dist/components/ViewLayout/ValueEmitter.vue.script.js +18 -0
- package/dist/components/ViewLayout/ValueEmitter.vue.script.js.map +1 -0
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.js +7 -0
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.js.map +1 -0
- package/dist/{ViewLayoutCollapse-BMrPz_sj.js → components/ViewLayout/ViewLayoutCollapse.vue.script.js} +5 -22
- package/dist/components/ViewLayout/ViewLayoutCollapse.vue.script.js.map +1 -0
- package/dist/components/ViewLayout/index.d.ts +1 -1
- package/dist/consts/example-scripts.js +82 -0
- package/dist/consts/example-scripts.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -3
- package/dist/libs/execute-scripts/context/console.js +14 -0
- package/dist/libs/execute-scripts/context/console.js.map +1 -0
- package/dist/libs/execute-scripts/execute-post-response-script.js +16 -0
- package/dist/libs/execute-scripts/execute-post-response-script.js.map +1 -0
- package/dist/libs/execute-scripts/index.d.ts +1 -1
- package/dist/libs/execute-scripts/index.js +1 -1
- package/dist/libs/execute-scripts/postman-sandbox-adapter.d.ts +2 -2
- package/dist/{execute-scripts-BV13zq7B.js → libs/execute-scripts/postman-sandbox-adapter.js} +2 -24
- package/dist/libs/execute-scripts/postman-sandbox-adapter.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue.js +7 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue.script.js +35 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue.script.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/PostResponseScripts.vue.js +7 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/PostResponseScripts.vue.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/PostResponseScripts.vue.script.js +49 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/PostResponseScripts.vue.script.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue.js +9 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue.script.js +36 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue.script.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/index.d.ts +1 -1
- package/dist/plugins/post-response-scripts/components/PostResponseScripts/index.js +1 -1
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultIndicator.vue.d.ts +1 -1
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultIndicator.vue.js +7 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultIndicator.vue.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultIndicator.vue.script.js +70 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultIndicator.vue.script.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultItem.vue.d.ts +1 -1
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultItem.vue.js +7 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultItem.vue.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultItem.vue.script.js +45 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResultItem.vue.script.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResults.vue.d.ts +1 -1
- package/dist/plugins/post-response-scripts/components/TestResults/TestResults.vue.js +7 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResults.vue.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResults.vue.script.js +73 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestResults.vue.script.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestSummary.vue.d.ts +1 -1
- package/dist/plugins/post-response-scripts/components/TestResults/TestSummary.vue.js +7 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestSummary.vue.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestSummary.vue.script.js +45 -0
- package/dist/plugins/post-response-scripts/components/TestResults/TestSummary.vue.script.js.map +1 -0
- package/dist/plugins/post-response-scripts/components/TestResults/index.d.ts +1 -1
- package/dist/plugins/post-response-scripts/components/TestResults/index.js +1 -1
- package/dist/plugins/post-response-scripts/index.d.ts +1 -1
- package/dist/plugins/post-response-scripts/index.js +1 -2
- package/dist/{post-response-scripts-ikk1wrl9.js → plugins/post-response-scripts/post-response-scripts-plugin.js} +5 -5
- package/dist/plugins/post-response-scripts/post-response-scripts-plugin.js.map +1 -0
- package/package.json +6 -6
- package/dist/PostResponseScripts-CrM65oAM.js +0 -202
- package/dist/PostResponseScripts-CrM65oAM.js.map +0 -1
- package/dist/TestResults-DIM8u91u.js +0 -224
- package/dist/TestResults-DIM8u91u.js.map +0 -1
- package/dist/ViewLayoutCollapse-BMrPz_sj.js.map +0 -1
- package/dist/execute-scripts-BV13zq7B.js.map +0 -1
- package/dist/post-response-scripts-ikk1wrl9.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @scalar/scripts
|
|
2
2
|
|
|
3
|
+
## 0.3.13
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#8563](https://github.com/scalar/scalar/pull/8563): fix: type declarations don't use the full path for imports
|
|
8
|
+
|
|
9
|
+
## 0.3.12
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#8529](https://github.com/scalar/scalar/pull/8529): rewrite declaration aliases in built type files
|
|
14
|
+
|
|
3
15
|
## 0.3.11
|
|
4
16
|
|
|
5
17
|
## 0.3.10
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region \0plugin-vue:export-helper
|
|
2
|
+
var _plugin_vue_export_helper_default = (sfc, props) => {
|
|
3
|
+
const target = sfc.__vccOpts || sfc;
|
|
4
|
+
for (const [key, val] of props) target[key] = val;
|
|
5
|
+
return target;
|
|
6
|
+
};
|
|
7
|
+
//#endregion
|
|
8
|
+
export { _plugin_vue_export_helper_default as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import ValueEmitter_vue_vue_type_script_setup_true_lang_default from "./ValueEmitter.vue.script.js";
|
|
2
|
+
//#region src/components/ViewLayout/ValueEmitter.vue
|
|
3
|
+
var ValueEmitter_default = ValueEmitter_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { ValueEmitter_default as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=ValueEmitter.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValueEmitter.vue.js","names":[],"sources":["../../../src/components/ViewLayout/ValueEmitter.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * This component takes in any value and emits it back\n *\n * This is useful when we need to catch the open state of a disclosure from its v-slot\n */\nexport default {\n name: 'ValueEmitter',\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { onBeforeUnmount, watch } from 'vue'\n\nconst { value } = defineProps<{ value: T }>()\nconst emit = defineEmits<{\n (e: 'change', value: T): void\n (e: 'unmount'): void\n}>()\n\nwatch(\n () => value,\n (newValue) => emit('change', newValue),\n { immediate: true },\n)\n\nonBeforeUnmount(() => emit('unmount'))\n</script>\n\n<!-- eslint-disable-next-line vue/valid-template-root -->\n<template>\n <!-- We use this hack to emit the slot value back to the parent -->\n</template>\n"],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { defineComponent, onBeforeUnmount, watch } from "vue";
|
|
2
|
+
var ValueEmitter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
3
|
+
name: "ValueEmitter",
|
|
4
|
+
props: { value: {} },
|
|
5
|
+
emits: ["change", "unmount"],
|
|
6
|
+
setup(__props, { emit: __emit }) {
|
|
7
|
+
const emit = __emit;
|
|
8
|
+
watch(() => __props.value, (newValue) => emit("change", newValue), { immediate: true });
|
|
9
|
+
onBeforeUnmount(() => emit("unmount"));
|
|
10
|
+
return (_ctx, _cache) => {
|
|
11
|
+
return null;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ValueEmitter_vue_vue_type_script_setup_true_lang_default as default };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=ValueEmitter.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValueEmitter.vue.script.js","names":[],"sources":["../../../src/components/ViewLayout/ValueEmitter.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * This component takes in any value and emits it back\n *\n * This is useful when we need to catch the open state of a disclosure from its v-slot\n */\nexport default {\n name: 'ValueEmitter',\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { onBeforeUnmount, watch } from 'vue'\n\nconst { value } = defineProps<{ value: T }>()\nconst emit = defineEmits<{\n (e: 'change', value: T): void\n (e: 'unmount'): void\n}>()\n\nwatch(\n () => value,\n (newValue) => emit('change', newValue),\n { immediate: true },\n)\n\nonBeforeUnmount(() => emit('unmount'))\n</script>\n\n<!-- eslint-disable-next-line vue/valid-template-root -->\n<template>\n <!-- We use this hack to emit the slot value back to the parent -->\n</template>\n"],"mappings":";;CAOE,MAAM;;;;EAQR,MAAM,OAAO;AAKb,cACQ,QAAA,QACL,aAAa,KAAK,UAAU,SAAS,EACtC,EAAE,WAAW,MAAM,CACrB;AAEA,wBAAsB,KAAK,UAAU,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import ViewLayoutCollapse_vue_vue_type_script_setup_true_lang_default from "./ViewLayoutCollapse.vue.script.js";
|
|
2
|
+
//#region src/components/ViewLayout/ViewLayoutCollapse.vue
|
|
3
|
+
var ViewLayoutCollapse_default = ViewLayoutCollapse_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { ViewLayoutCollapse_default as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=ViewLayoutCollapse.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewLayoutCollapse.vue.js","names":[],"sources":["../../../src/components/ViewLayout/ViewLayoutCollapse.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Simple collapsible section component that can be used to wrap content that should be collapsed and expanded\n *\n * Would like to replace with details/summary elements, but they are not supported in all browsers yet?\n */\nexport default {\n name: 'CollapsibleSection',\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/vue'\nimport { ScalarIcon } from '@scalar/components'\nimport { useId } from 'vue'\n\nimport ValueEmitter from './ValueEmitter.vue'\n\nconst {\n defaultOpen = true,\n itemCount = 0,\n isStatic,\n} = defineProps<{\n /** Whether the disclosure is open by default. */\n defaultOpen?: boolean\n /** Number of items to show in badge when collapsed. */\n itemCount?: number\n /** Whether the disclosure is static and cannot be toggled. */\n isStatic?: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst headingId = useId()\n</script>\n\n<template>\n <Disclosure\n v-slot=\"{ open }\"\n as=\"div\"\n class=\"group/collapse text-c-2 focus-within:text-c-1 last:ui-open:border-b-0 border-b\"\n :class=\"isStatic && 'last-of-type:first-of-type:border-b-0'\"\n :defaultOpen=\"defaultOpen\"\n :static=\"isStatic\">\n <!-- We use this hack to emit the slot value back to the parent -->\n <ValueEmitter\n :value=\"open as boolean\"\n @change=\"(value) => emit('update:modelValue', value)\" />\n\n <section\n :aria-labelledby=\"headingId\"\n class=\"contents\">\n <div\n class=\"bg-b-2 flex items-center\"\n :class=\"isStatic && 'rounded-t-lg border border-b-0'\">\n <!-- Main disclosure button that toggles the panel -->\n <DisclosureButton\n class=\"hover:text-c-1 group box-content flex max-h-8 flex-1 items-center gap-2.5 overflow-hidden px-1 py-1.5 text-base font-medium outline-none md:px-1.5 xl:pr-0.5 xl:pl-2\"\n :class=\"isStatic && '!pl-3'\"\n :disabled=\"isStatic\">\n <ScalarIcon\n v-if=\"!isStatic\"\n class=\"text-c-3 group-hover:text-c-1 rounded-px ui-open:rotate-90 ui-not-open:rotate-0 outline-offset-2 group-focus-visible:outline\"\n icon=\"ChevronRight\"\n size=\"md\" />\n\n <!-- Heading with title -->\n <h2\n class=\"text-c-1 m-0 flex flex-1 items-center gap-1.5 leading-[20px]\">\n <span\n :id=\"headingId\"\n class=\"contents\">\n <slot\n name=\"title\"\n :open=\"open\" />\n <span\n v-if=\"!open\"\n class=\"sr-only\">\n (Collapsed)\n </span>\n </span>\n\n <!-- Badge showing item count when collapsed. -->\n <span\n v-if=\"!open && itemCount\"\n class=\"bg-b-2 text-c-2 inline-flex h-5 w-5 items-center justify-center rounded-full border text-xs font-semibold\">\n {{ itemCount }}\n <span class=\"sr-only\">Item{{ itemCount === 1 ? '' : 's' }}</span>\n </span>\n </h2>\n </DisclosureButton>\n\n <!-- Optional actions slot that hides when the panel is closed. -->\n <div\n v-if=\"$slots.actions\"\n class=\"ui-not-open:hidden flex items-center gap-2 pr-0.75\">\n <slot\n name=\"actions\"\n :open=\"open\" />\n </div>\n </div>\n\n <!-- The collapsible content panel. -->\n <DisclosurePanel\n v-bind=\"$attrs\"\n class=\"diclosure-panel h-full max-h-fit rounded-b\">\n <slot :open=\"open\" />\n </DisclosurePanel>\n </section>\n </Disclosure>\n</template>\n"],"mappings":""}
|
|
@@ -1,22 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ValueEmitter_default from "./ValueEmitter.vue.js";
|
|
2
|
+
import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, renderSlot, toDisplayString, unref, useId, withCtx } from "vue";
|
|
2
3
|
import { Disclosure, DisclosureButton, DisclosurePanel } from "@headlessui/vue";
|
|
3
4
|
import { ScalarIcon } from "@scalar/components";
|
|
4
|
-
//#endregion
|
|
5
|
-
//#region src/components/ViewLayout/ValueEmitter.vue
|
|
6
|
-
var ValueEmitter_default = /* @__PURE__ */ defineComponent({
|
|
7
|
-
name: "ValueEmitter",
|
|
8
|
-
props: { value: {} },
|
|
9
|
-
emits: ["change", "unmount"],
|
|
10
|
-
setup(__props, { emit: __emit }) {
|
|
11
|
-
const emit = __emit;
|
|
12
|
-
watch(() => __props.value, (newValue) => emit("change", newValue), { immediate: true });
|
|
13
|
-
onBeforeUnmount(() => emit("unmount"));
|
|
14
|
-
return (_ctx, _cache) => {
|
|
15
|
-
return null;
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
//#endregion
|
|
20
5
|
//#region src/components/ViewLayout/ViewLayoutCollapse.vue?vue&type=script&setup=true&lang.ts
|
|
21
6
|
var _hoisted_1 = ["aria-labelledby"];
|
|
22
7
|
var _hoisted_2 = { class: "text-c-1 m-0 flex flex-1 items-center gap-1.5 leading-[20px]" };
|
|
@@ -34,9 +19,7 @@ var _hoisted_7 = {
|
|
|
34
19
|
key: 0,
|
|
35
20
|
class: "ui-not-open:hidden flex items-center gap-2 pr-0.75"
|
|
36
21
|
};
|
|
37
|
-
|
|
38
|
-
//#region src/components/ViewLayout/ViewLayoutCollapse.vue
|
|
39
|
-
var ViewLayoutCollapse_default = /* @__PURE__ */ defineComponent({
|
|
22
|
+
var ViewLayoutCollapse_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
40
23
|
name: "CollapsibleSection",
|
|
41
24
|
props: {
|
|
42
25
|
defaultOpen: {
|
|
@@ -91,6 +74,6 @@ var ViewLayoutCollapse_default = /* @__PURE__ */ defineComponent({
|
|
|
91
74
|
}
|
|
92
75
|
});
|
|
93
76
|
//#endregion
|
|
94
|
-
export {
|
|
77
|
+
export { ViewLayoutCollapse_vue_vue_type_script_setup_true_lang_default as default };
|
|
95
78
|
|
|
96
|
-
//# sourceMappingURL=ViewLayoutCollapse
|
|
79
|
+
//# sourceMappingURL=ViewLayoutCollapse.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewLayoutCollapse.vue.script.js","names":["$slots","$attrs"],"sources":["../../../src/components/ViewLayout/ViewLayoutCollapse.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Simple collapsible section component that can be used to wrap content that should be collapsed and expanded\n *\n * Would like to replace with details/summary elements, but they are not supported in all browsers yet?\n */\nexport default {\n name: 'CollapsibleSection',\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/vue'\nimport { ScalarIcon } from '@scalar/components'\nimport { useId } from 'vue'\n\nimport ValueEmitter from './ValueEmitter.vue'\n\nconst {\n defaultOpen = true,\n itemCount = 0,\n isStatic,\n} = defineProps<{\n /** Whether the disclosure is open by default. */\n defaultOpen?: boolean\n /** Number of items to show in badge when collapsed. */\n itemCount?: number\n /** Whether the disclosure is static and cannot be toggled. */\n isStatic?: boolean\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst headingId = useId()\n</script>\n\n<template>\n <Disclosure\n v-slot=\"{ open }\"\n as=\"div\"\n class=\"group/collapse text-c-2 focus-within:text-c-1 last:ui-open:border-b-0 border-b\"\n :class=\"isStatic && 'last-of-type:first-of-type:border-b-0'\"\n :defaultOpen=\"defaultOpen\"\n :static=\"isStatic\">\n <!-- We use this hack to emit the slot value back to the parent -->\n <ValueEmitter\n :value=\"open as boolean\"\n @change=\"(value) => emit('update:modelValue', value)\" />\n\n <section\n :aria-labelledby=\"headingId\"\n class=\"contents\">\n <div\n class=\"bg-b-2 flex items-center\"\n :class=\"isStatic && 'rounded-t-lg border border-b-0'\">\n <!-- Main disclosure button that toggles the panel -->\n <DisclosureButton\n class=\"hover:text-c-1 group box-content flex max-h-8 flex-1 items-center gap-2.5 overflow-hidden px-1 py-1.5 text-base font-medium outline-none md:px-1.5 xl:pr-0.5 xl:pl-2\"\n :class=\"isStatic && '!pl-3'\"\n :disabled=\"isStatic\">\n <ScalarIcon\n v-if=\"!isStatic\"\n class=\"text-c-3 group-hover:text-c-1 rounded-px ui-open:rotate-90 ui-not-open:rotate-0 outline-offset-2 group-focus-visible:outline\"\n icon=\"ChevronRight\"\n size=\"md\" />\n\n <!-- Heading with title -->\n <h2\n class=\"text-c-1 m-0 flex flex-1 items-center gap-1.5 leading-[20px]\">\n <span\n :id=\"headingId\"\n class=\"contents\">\n <slot\n name=\"title\"\n :open=\"open\" />\n <span\n v-if=\"!open\"\n class=\"sr-only\">\n (Collapsed)\n </span>\n </span>\n\n <!-- Badge showing item count when collapsed. -->\n <span\n v-if=\"!open && itemCount\"\n class=\"bg-b-2 text-c-2 inline-flex h-5 w-5 items-center justify-center rounded-full border text-xs font-semibold\">\n {{ itemCount }}\n <span class=\"sr-only\">Item{{ itemCount === 1 ? '' : 's' }}</span>\n </span>\n </h2>\n </DisclosureButton>\n\n <!-- Optional actions slot that hides when the panel is closed. -->\n <div\n v-if=\"$slots.actions\"\n class=\"ui-not-open:hidden flex items-center gap-2 pr-0.75\">\n <slot\n name=\"actions\"\n :open=\"open\" />\n </div>\n </div>\n\n <!-- The collapsible content panel. -->\n <DisclosurePanel\n v-bind=\"$attrs\"\n class=\"diclosure-panel h-full max-h-fit rounded-b\">\n <slot :open=\"open\" />\n </DisclosurePanel>\n </section>\n </Disclosure>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;CAOE,MAAM;;;;;;;;;;;EAwBR,MAAM,OAAO;EAIb,MAAM,YAAY,OAAM;;uBAItB,YAwEa,MAAA,WAAA,EAAA;IAtEX,IAAG;IACH,OAAK,eAAA,CAAC,kFACE,QAAA,YAAQ,wCAAA,CAAA;IACf,aAAa,QAAA;IACb,QAAQ,QAAA;;sBAIiD,EAThD,WAAI,CAOd,YAE0D,sBAAA;KADvD,OAAO;KACP,UAAM,OAAA,OAAA,OAAA,MAAG,UAAU,KAAI,qBAAsB,MAAK;4BAErD,mBA2DU,WAAA;KA1DP,mBAAiB,MAAA,UAAS;KAC3B,OAAM;QACN,mBAgDM,OAAA,EA/CJ,OAAK,eAAA,CAAC,4BACE,QAAA,YAAQ,iCAAA,CAAA,EAAA,EAAA,CAEhB,YAkCmB,MAAA,iBAAA,EAAA;KAjCjB,OAAK,eAAA,CAAC,wKACE,QAAA,YAAQ,QAAA,CAAA;KACf,UAAU,QAAA;;4BAKG,CAAA,CAHL,QAAA,YAAA,WAAA,EADT,YAIc,MAAA,WAAA,EAAA;;MAFZ,OAAM;MACN,MAAK;MACL,MAAK;yCAGP,mBAsBK,MAtBL,YAsBK,CApBH,mBAWO,QAAA;MAVJ,IAAI,MAAA,UAAS;MACd,OAAM;SACN,WAEiB,KAAA,QAAA,SAAA,EAAR,MAAI,CAAA,EAAA,CAEJ,QAAA,WAAA,EADT,mBAIO,QAJP,YAEkB,gBAElB,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,GAAA,WAAA,EAAA,CAKO,QAAQ,QAAA,aAAA,WAAA,EADjB,mBAKO,QALP,YAKO,CAAA,gBAAA,gBAFF,QAAA,UAAS,GAAG,KACf,EAAA,EAAA,mBAAiE,QAAjE,YAAsB,SAAI,gBAAG,QAAA,cAAS,IAAA,KAAA,IAAA,EAAA,EAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;qCAOpCA,KAAAA,OAAO,WAAA,WAAA,EADf,mBAMM,OANN,YAMM,CAHJ,WAEiB,KAAA,QAAA,WAAA,EAAR,MAAI,CAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,EAAA,EAKjB,YAIkB,MAAA,gBAAA,EAJlB,WACUC,KAGQ,QAHF,EACd,OAAM,8CAA4C,CAAA,EAAA;4BAC7B,CAArB,WAAqB,KAAA,QAAA,WAAA,EAAR,MAAI,CAAA,CAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default as ViewLayoutCollapse } from './ViewLayoutCollapse.vue';
|
|
1
|
+
export { default as ViewLayoutCollapse } from './ViewLayoutCollapse.vue.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
//#region src/consts/example-scripts.ts
|
|
2
|
+
var EXAMPLE_SCRIPTS = [
|
|
3
|
+
{
|
|
4
|
+
title: "Check the status code",
|
|
5
|
+
script: `pm.test("Status code is 200", () => {
|
|
6
|
+
pm.response.to.have.status(200)
|
|
7
|
+
})`,
|
|
8
|
+
mockResponse: {
|
|
9
|
+
status: 200,
|
|
10
|
+
body: { success: true }
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
title: "Check JSON response",
|
|
15
|
+
script: `pm.test("Response is valid JSON", () => {
|
|
16
|
+
const responseData = pm.response.json()
|
|
17
|
+
pm.expect(responseData).to.be.an('object')
|
|
18
|
+
})`,
|
|
19
|
+
mockResponse: {
|
|
20
|
+
status: 200,
|
|
21
|
+
body: { data: "test" },
|
|
22
|
+
headers: { "Content-Type": "application/json" }
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
title: "Check response headers",
|
|
27
|
+
script: `pm.test("Content-Type header is present", () => {
|
|
28
|
+
pm.response.to.have.header('Content-Type')
|
|
29
|
+
})`,
|
|
30
|
+
mockResponse: {
|
|
31
|
+
status: 200,
|
|
32
|
+
body: { success: true },
|
|
33
|
+
headers: { "Content-Type": "application/json" }
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
title: "Validate JSON schema",
|
|
38
|
+
script: `pm.test("Response matches schema", () => {
|
|
39
|
+
const schema = {
|
|
40
|
+
type: 'object',
|
|
41
|
+
required: ['id', 'name'],
|
|
42
|
+
properties: {
|
|
43
|
+
id: { type: 'number' },
|
|
44
|
+
name: { type: 'string' }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
pm.response.to.have.jsonSchema(schema)
|
|
48
|
+
})`,
|
|
49
|
+
mockResponse: {
|
|
50
|
+
status: 200,
|
|
51
|
+
body: {
|
|
52
|
+
id: 1,
|
|
53
|
+
name: "Test Item"
|
|
54
|
+
},
|
|
55
|
+
headers: { "Content-Type": "application/json" }
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
title: "Check response body",
|
|
60
|
+
script: `pm.test("Response body contains string", () => {
|
|
61
|
+
pm.expect(pm.response.text()).to.include('success')
|
|
62
|
+
})`,
|
|
63
|
+
mockResponse: {
|
|
64
|
+
status: 200,
|
|
65
|
+
body: "This is a successful response"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
title: "Successful POST request",
|
|
70
|
+
script: `pm.test("Successful POST request", () => {
|
|
71
|
+
pm.expect(pm.response.code).to.be.oneOf([201, 202])
|
|
72
|
+
})`,
|
|
73
|
+
mockResponse: {
|
|
74
|
+
status: 201,
|
|
75
|
+
body: { success: true }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
];
|
|
79
|
+
//#endregion
|
|
80
|
+
export { EXAMPLE_SCRIPTS };
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=example-scripts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-scripts.js","names":[],"sources":["../../src/consts/example-scripts.ts"],"sourcesContent":["type ExampleScript = {\n title: string\n script: string\n mockResponse: {\n body?: any\n status?: number\n headers?: Record<string, string>\n text?: () => string\n }\n}\n\nexport const EXAMPLE_SCRIPTS: ExampleScript[] = [\n {\n title: 'Check the status code',\n script: `pm.test(\"Status code is 200\", () => {\n pm.response.to.have.status(200)\n})`,\n mockResponse: {\n status: 200,\n body: { success: true },\n },\n },\n // TODO: We didn't add the proper response duration yet.\n // {\n // title: 'Check response time',\n // script: `pm.test(\"Response time is acceptable\", () => {\n // pm.expect(pm.response.responseTime).to.be.below(200)\n // })`,\n // mockResponse: {\n // status: 200,\n // body: { success: true },\n // },\n // },\n {\n title: 'Check JSON response',\n script: `pm.test(\"Response is valid JSON\", () => {\n const responseData = pm.response.json()\n pm.expect(responseData).to.be.an('object')\n})`,\n mockResponse: {\n status: 200,\n body: { data: 'test' },\n headers: { 'Content-Type': 'application/json' },\n },\n },\n {\n title: 'Check response headers',\n script: `pm.test(\"Content-Type header is present\", () => {\n pm.response.to.have.header('Content-Type')\n})`,\n mockResponse: {\n status: 200,\n body: { success: true },\n headers: { 'Content-Type': 'application/json' },\n },\n },\n {\n title: 'Validate JSON schema',\n script: `pm.test(\"Response matches schema\", () => {\n const schema = {\n type: 'object',\n required: ['id', 'name'],\n properties: {\n id: { type: 'number' },\n name: { type: 'string' }\n }\n }\n pm.response.to.have.jsonSchema(schema)\n})`,\n mockResponse: {\n status: 200,\n body: { id: 1, name: 'Test Item' },\n headers: { 'Content-Type': 'application/json' },\n },\n },\n {\n title: 'Check response body',\n script: `pm.test(\"Response body contains string\", () => {\n pm.expect(pm.response.text()).to.include('success')\n})`,\n mockResponse: {\n status: 200,\n body: 'This is a successful response',\n },\n },\n {\n title: 'Successful POST request',\n script: `pm.test(\"Successful POST request\", () => {\n pm.expect(pm.response.code).to.be.oneOf([201, 202])\n})`,\n mockResponse: {\n status: 201,\n body: { success: true },\n },\n },\n]\n"],"mappings":";AAWA,IAAa,kBAAmC;CAC9C;EACE,OAAO;EACP,QAAQ;;;EAGR,cAAc;GACZ,QAAQ;GACR,MAAM,EAAE,SAAS,MAAM;GACxB;EACF;CAYD;EACE,OAAO;EACP,QAAQ;;;;EAIR,cAAc;GACZ,QAAQ;GACR,MAAM,EAAE,MAAM,QAAQ;GACtB,SAAS,EAAE,gBAAgB,oBAAoB;GAChD;EACF;CACD;EACE,OAAO;EACP,QAAQ;;;EAGR,cAAc;GACZ,QAAQ;GACR,MAAM,EAAE,SAAS,MAAM;GACvB,SAAS,EAAE,gBAAgB,oBAAoB;GAChD;EACF;CACD;EACE,OAAO;EACP,QAAQ;;;;;;;;;;;EAWR,cAAc;GACZ,QAAQ;GACR,MAAM;IAAE,IAAI;IAAG,MAAM;IAAa;GAClC,SAAS,EAAE,gBAAgB,oBAAoB;GAChD;EACF;CACD;EACE,OAAO;EACP,QAAQ;;;EAGR,cAAc;GACZ,QAAQ;GACR,MAAM;GACP;EACF;CACD;EACE,OAAO;EACP,QAAQ;;;EAGR,cAAc;GACZ,QAAQ;GACR,MAAM,EAAE,SAAS,MAAM;GACxB;EACF;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { ViewLayoutCollapse } from './components/ViewLayout';
|
|
2
|
-
export { postResponseScriptsPlugin } from './plugins/post-response-scripts';
|
|
3
|
-
export { postResponseScriptsPluginV2 } from './plugins/post-response-scripts/post-response-scripts-plugin';
|
|
2
|
+
export { postResponseScriptsPlugin } from './plugins/post-response-scripts/index.js';
|
|
3
|
+
export { postResponseScriptsPluginV2 } from './plugins/post-response-scripts/post-response-scripts-plugin.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
import "./
|
|
3
|
-
import { n as postResponseScriptsPluginV2, t as postResponseScriptsPlugin } from "./post-response-scripts-ikk1wrl9.js";
|
|
1
|
+
import ViewLayoutCollapse_default from "./components/ViewLayout/ViewLayoutCollapse.vue.js";
|
|
2
|
+
import { postResponseScriptsPlugin, postResponseScriptsPluginV2 } from "./plugins/post-response-scripts/post-response-scripts-plugin.js";
|
|
4
3
|
export { ViewLayoutCollapse_default as ViewLayoutCollapse, postResponseScriptsPlugin, postResponseScriptsPluginV2 };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/libs/execute-scripts/context/console.ts
|
|
2
|
+
var createConsoleContext = () => ({
|
|
3
|
+
log: (...args) => console.log("[Script]", ...args),
|
|
4
|
+
error: (...args) => console.error("[Script Error]", ...args),
|
|
5
|
+
warn: (...args) => console.warn("[Script Warning]", ...args),
|
|
6
|
+
info: (...args) => console.info("[Script Info]", ...args),
|
|
7
|
+
debug: (...args) => console.debug("[Script Debug]", ...args),
|
|
8
|
+
trace: (...args) => console.trace("[Script Trace]", ...args),
|
|
9
|
+
table: (tabularData, properties) => console.table(tabularData, properties)
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { createConsoleContext };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=console.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.js","names":[],"sources":["../../../../src/libs/execute-scripts/context/console.ts"],"sourcesContent":["export interface ConsoleContext {\n log: (...args: any[]) => void\n error: (...args: any[]) => void\n warn: (...args: any[]) => void\n info: (...args: any[]) => void\n debug: (...args: any[]) => void\n trace: (...args: any[]) => void\n table: (tabularData: any, properties?: readonly string[]) => void\n}\n\nexport const createConsoleContext = (): ConsoleContext => ({\n log: (...args: any[]) => console.log('[Script]', ...args),\n error: (...args: any[]) => console.error('[Script Error]', ...args),\n warn: (...args: any[]) => console.warn('[Script Warning]', ...args),\n info: (...args: any[]) => console.info('[Script Info]', ...args),\n debug: (...args: any[]) => console.debug('[Script Debug]', ...args),\n trace: (...args: any[]) => console.trace('[Script Trace]', ...args),\n table: (tabularData: any, properties?: readonly string[]) => console.table(tabularData, properties),\n})\n"],"mappings":";AAUA,IAAa,8BAA8C;CACzD,MAAM,GAAG,SAAgB,QAAQ,IAAI,YAAY,GAAG,KAAK;CACzD,QAAQ,GAAG,SAAgB,QAAQ,MAAM,kBAAkB,GAAG,KAAK;CACnE,OAAO,GAAG,SAAgB,QAAQ,KAAK,oBAAoB,GAAG,KAAK;CACnE,OAAO,GAAG,SAAgB,QAAQ,KAAK,iBAAiB,GAAG,KAAK;CAChE,QAAQ,GAAG,SAAgB,QAAQ,MAAM,kBAAkB,GAAG,KAAK;CACnE,QAAQ,GAAG,SAAgB,QAAQ,MAAM,kBAAkB,GAAG,KAAK;CACnE,QAAQ,aAAkB,eAAmC,QAAQ,MAAM,aAAa,WAAW;CACpG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createConsoleContext } from "./context/console.js";
|
|
2
|
+
import { executeInPostmanSandbox } from "./postman-sandbox-adapter.js";
|
|
3
|
+
//#region src/libs/execute-scripts/execute-post-response-script.ts
|
|
4
|
+
var executePostResponseScript = async (script, data) => {
|
|
5
|
+
if (!script) return;
|
|
6
|
+
await executeInPostmanSandbox({
|
|
7
|
+
script,
|
|
8
|
+
response: data.response,
|
|
9
|
+
onTestResultsUpdate: data.onTestResultsUpdate,
|
|
10
|
+
scriptConsole: createConsoleContext()
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { executePostResponseScript };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=execute-post-response-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-post-response-script.js","names":[],"sources":["../../../src/libs/execute-scripts/execute-post-response-script.ts"],"sourcesContent":["import { createConsoleContext } from './context/console'\nimport { executeInPostmanSandbox } from './postman-sandbox-adapter'\n\nexport type TestResult = {\n title: string\n passed: boolean\n duration: number\n error?: string\n status: 'pending' | 'passed' | 'failed'\n}\n\nexport const executePostResponseScript = async (\n script: string | undefined,\n data: {\n response: Response\n onTestResultsUpdate?: ((results: TestResult[]) => void) | undefined\n },\n): Promise<void> => {\n if (!script) {\n return\n }\n await executeInPostmanSandbox({\n script,\n response: data.response,\n onTestResultsUpdate: data.onTestResultsUpdate,\n scriptConsole: createConsoleContext(),\n })\n}\n"],"mappings":";;;AAWA,IAAa,4BAA4B,OACvC,QACA,SAIkB;AAClB,KAAI,CAAC,OACH;AAEF,OAAM,wBAAwB;EAC5B;EACA,UAAU,KAAK;EACf,qBAAqB,KAAK;EAC1B,eAAe,sBAAsB;EACtC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { type TestResult, executePostResponseScript } from './execute-post-response-script';
|
|
1
|
+
export { type TestResult, executePostResponseScript } from './execute-post-response-script.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { executePostResponseScript } from "./execute-post-response-script.js";
|
|
2
2
|
export { executePostResponseScript };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ConsoleContext } from './context/console';
|
|
2
|
-
import type { TestResult } from './execute-post-response-script';
|
|
1
|
+
import type { ConsoleContext } from './context/console.js';
|
|
2
|
+
import type { TestResult } from './execute-post-response-script.js';
|
|
3
3
|
export declare const executeInPostmanSandbox: ({ script, response, onTestResultsUpdate, scriptConsole, }: {
|
|
4
4
|
script: string;
|
|
5
5
|
response: Response;
|
package/dist/{execute-scripts-BV13zq7B.js → libs/execute-scripts/postman-sandbox-adapter.js}
RENAMED
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
import Sandbox from "postman-sandbox";
|
|
2
|
-
//#region src/libs/execute-scripts/context/console.ts
|
|
3
|
-
var createConsoleContext = () => ({
|
|
4
|
-
log: (...args) => console.log("[Script]", ...args),
|
|
5
|
-
error: (...args) => console.error("[Script Error]", ...args),
|
|
6
|
-
warn: (...args) => console.warn("[Script Warning]", ...args),
|
|
7
|
-
info: (...args) => console.info("[Script Info]", ...args),
|
|
8
|
-
debug: (...args) => console.debug("[Script Debug]", ...args),
|
|
9
|
-
trace: (...args) => console.trace("[Script Trace]", ...args),
|
|
10
|
-
table: (tabularData, properties) => console.table(tabularData, properties)
|
|
11
|
-
});
|
|
12
|
-
//#endregion
|
|
13
2
|
//#region src/libs/execute-scripts/postman-sandbox-adapter.ts
|
|
14
3
|
var toPostmanResponse = async (response) => {
|
|
15
4
|
const responseText = await response.text();
|
|
@@ -109,17 +98,6 @@ var executeInPostmanSandbox = async ({ script, response, onTestResultsUpdate, sc
|
|
|
109
98
|
}
|
|
110
99
|
};
|
|
111
100
|
//#endregion
|
|
112
|
-
|
|
113
|
-
var executePostResponseScript = async (script, data) => {
|
|
114
|
-
if (!script) return;
|
|
115
|
-
await executeInPostmanSandbox({
|
|
116
|
-
script,
|
|
117
|
-
response: data.response,
|
|
118
|
-
onTestResultsUpdate: data.onTestResultsUpdate,
|
|
119
|
-
scriptConsole: createConsoleContext()
|
|
120
|
-
});
|
|
121
|
-
};
|
|
122
|
-
//#endregion
|
|
123
|
-
export { executePostResponseScript as t };
|
|
101
|
+
export { executeInPostmanSandbox };
|
|
124
102
|
|
|
125
|
-
//# sourceMappingURL=
|
|
103
|
+
//# sourceMappingURL=postman-sandbox-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postman-sandbox-adapter.js","names":[],"sources":["../../../src/libs/execute-scripts/postman-sandbox-adapter.ts"],"sourcesContent":["import type { SandboxContext } from 'postman-sandbox'\nimport Sandbox from 'postman-sandbox'\n\nimport type { ConsoleContext } from './context/console'\nimport type { TestResult } from './execute-post-response-script'\n\ntype AssertionEvent = {\n name: string\n index: number\n passed: boolean\n skipped: boolean\n error: { message?: string } | null\n}\n\nconst toPostmanResponse = async (response: Response) => {\n const responseText = await response.text()\n const responseBytes = Array.from(new TextEncoder().encode(responseText))\n\n return {\n code: response.status,\n status: response.statusText || String(response.status),\n header: Array.from(response.headers.entries()).map(([key, value]) => ({ key, value })),\n stream: {\n type: 'Buffer',\n data: responseBytes,\n },\n }\n}\n\nconst createContext = (): Promise<SandboxContext> =>\n new Promise((resolve, reject) => {\n Sandbox.createContext((error: unknown, context: SandboxContext) => {\n if (error) {\n reject(error)\n return\n }\n\n resolve(context)\n })\n })\n\nconst toErrorMessage = (error: unknown): string => {\n if (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string') {\n return error.message\n }\n\n return String(error)\n}\n\nconst upsertTestResult = (testResults: TestResult[], assertion: AssertionEvent, duration: number): void => {\n const title = assertion.name || `Assertion ${assertion.index + 1}`\n\n const nextResult: TestResult = {\n title,\n passed: assertion.passed,\n duration,\n error: assertion.error?.message,\n status: assertion.passed ? 'passed' : 'failed',\n }\n\n const existingResultIndex = testResults.findIndex((result) => result.title === title)\n if (existingResultIndex === -1) {\n testResults.push(nextResult)\n return\n }\n\n testResults[existingResultIndex] = nextResult\n}\n\nexport const executeInPostmanSandbox = async ({\n script,\n response,\n onTestResultsUpdate,\n scriptConsole,\n}: {\n script: string\n response: Response\n onTestResultsUpdate?: ((results: TestResult[]) => void) | undefined\n scriptConsole: ConsoleContext\n}): Promise<void> => {\n const testResults: TestResult[] = []\n let lastAssertionTime = 0\n let scriptExecutionStartedAt = 0\n const sandboxContext = await createContext()\n\n const handleAssertion = (_cursor: unknown, assertions: AssertionEvent[]) => {\n assertions.forEach((assertion) => {\n const duration = Number((performance.now() - lastAssertionTime).toFixed(2))\n lastAssertionTime = performance.now()\n upsertTestResult(testResults, assertion, duration)\n })\n onTestResultsUpdate?.([...testResults])\n }\n\n const handleConsole = (_cursor: unknown, level: keyof ConsoleContext, ...args: unknown[]) => {\n const consoleMethod = scriptConsole[level] ?? scriptConsole.log\n ;(consoleMethod as (...params: unknown[]) => void)(...args)\n }\n\n try {\n sandboxContext.on('execution.assertion', handleAssertion)\n sandboxContext.on('console', handleConsole)\n\n const postmanResponse = await toPostmanResponse(response)\n\n scriptExecutionStartedAt = performance.now()\n lastAssertionTime = scriptExecutionStartedAt\n\n await new Promise<void>((resolve) => {\n sandboxContext.execute(\n {\n listen: 'test',\n script: {\n exec: [script],\n },\n },\n {\n disableLegacyAPIs: true,\n context: {\n response: postmanResponse,\n },\n },\n (error: unknown) => {\n if (error) {\n const duration = Number((performance.now() - scriptExecutionStartedAt).toFixed(2))\n const errorMessage = toErrorMessage(error)\n\n scriptConsole.error(`[Post-Response Script] Error (${duration}ms):`, errorMessage)\n\n testResults.push({\n title: 'Script Execution',\n passed: false,\n duration,\n error: errorMessage,\n status: 'failed',\n })\n onTestResultsUpdate?.([...testResults])\n }\n\n resolve()\n },\n )\n })\n } finally {\n sandboxContext.off('execution.assertion', handleAssertion)\n sandboxContext.off('console', handleConsole)\n sandboxContext.dispose()\n }\n}\n"],"mappings":";;AAcA,IAAM,oBAAoB,OAAO,aAAuB;CACtD,MAAM,eAAe,MAAM,SAAS,MAAM;CAC1C,MAAM,gBAAgB,MAAM,KAAK,IAAI,aAAa,CAAC,OAAO,aAAa,CAAC;AAExE,QAAO;EACL,MAAM,SAAS;EACf,QAAQ,SAAS,cAAc,OAAO,SAAS,OAAO;EACtD,QAAQ,MAAM,KAAK,SAAS,QAAQ,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,YAAY;GAAE;GAAK;GAAO,EAAE;EACtF,QAAQ;GACN,MAAM;GACN,MAAM;GACP;EACF;;AAGH,IAAM,sBACJ,IAAI,SAAS,SAAS,WAAW;AAC/B,SAAQ,eAAe,OAAgB,YAA4B;AACjE,MAAI,OAAO;AACT,UAAO,MAAM;AACb;;AAGF,UAAQ,QAAQ;GAChB;EACF;AAEJ,IAAM,kBAAkB,UAA2B;AACjD,KAAI,SAAS,OAAO,UAAU,YAAY,aAAa,SAAS,OAAO,MAAM,YAAY,SACvF,QAAO,MAAM;AAGf,QAAO,OAAO,MAAM;;AAGtB,IAAM,oBAAoB,aAA2B,WAA2B,aAA2B;CACzG,MAAM,QAAQ,UAAU,QAAQ,aAAa,UAAU,QAAQ;CAE/D,MAAM,aAAyB;EAC7B;EACA,QAAQ,UAAU;EAClB;EACA,OAAO,UAAU,OAAO;EACxB,QAAQ,UAAU,SAAS,WAAW;EACvC;CAED,MAAM,sBAAsB,YAAY,WAAW,WAAW,OAAO,UAAU,MAAM;AACrF,KAAI,wBAAwB,IAAI;AAC9B,cAAY,KAAK,WAAW;AAC5B;;AAGF,aAAY,uBAAuB;;AAGrC,IAAa,0BAA0B,OAAO,EAC5C,QACA,UACA,qBACA,oBAMmB;CACnB,MAAM,cAA4B,EAAE;CACpC,IAAI,oBAAoB;CACxB,IAAI,2BAA2B;CAC/B,MAAM,iBAAiB,MAAM,eAAe;CAE5C,MAAM,mBAAmB,SAAkB,eAAiC;AAC1E,aAAW,SAAS,cAAc;GAChC,MAAM,WAAW,QAAQ,YAAY,KAAK,GAAG,mBAAmB,QAAQ,EAAE,CAAC;AAC3E,uBAAoB,YAAY,KAAK;AACrC,oBAAiB,aAAa,WAAW,SAAS;IAClD;AACF,wBAAsB,CAAC,GAAG,YAAY,CAAC;;CAGzC,MAAM,iBAAiB,SAAkB,OAA6B,GAAG,SAAoB;AAEzF,GADoB,cAAc,UAAU,cAAc,KACT,GAAG,KAAK;;AAG7D,KAAI;AACF,iBAAe,GAAG,uBAAuB,gBAAgB;AACzD,iBAAe,GAAG,WAAW,cAAc;EAE3C,MAAM,kBAAkB,MAAM,kBAAkB,SAAS;AAEzD,6BAA2B,YAAY,KAAK;AAC5C,sBAAoB;AAEpB,QAAM,IAAI,SAAe,YAAY;AACnC,kBAAe,QACb;IACE,QAAQ;IACR,QAAQ,EACN,MAAM,CAAC,OAAO,EACf;IACF,EACD;IACE,mBAAmB;IACnB,SAAS,EACP,UAAU,iBACX;IACF,GACA,UAAmB;AAClB,QAAI,OAAO;KACT,MAAM,WAAW,QAAQ,YAAY,KAAK,GAAG,0BAA0B,QAAQ,EAAE,CAAC;KAClF,MAAM,eAAe,eAAe,MAAM;AAE1C,mBAAc,MAAM,iCAAiC,SAAS,OAAO,aAAa;AAElF,iBAAY,KAAK;MACf,OAAO;MACP,QAAQ;MACR;MACA,OAAO;MACP,QAAQ;MACT,CAAC;AACF,2BAAsB,CAAC,GAAG,YAAY,CAAC;;AAGzC,aAAS;KAEZ;IACD;WACM;AACR,iBAAe,IAAI,uBAAuB,gBAAgB;AAC1D,iBAAe,IAAI,WAAW,cAAc;AAC5C,iBAAe,SAAS"}
|
package/dist/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import ExampleScripts_vue_vue_type_script_setup_true_lang_default from "./ExampleScripts.vue.script.js";
|
|
2
|
+
//#region src/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue
|
|
3
|
+
var ExampleScripts_default = ExampleScripts_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { ExampleScripts_default as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=ExampleScripts.vue.js.map
|
package/dist/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExampleScripts.vue.js","names":[],"sources":["../../../../../src/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { EXAMPLE_SCRIPTS } from '@/consts/example-scripts'\n\nconst props = defineProps<{\n modelValue: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n\nconst addExample = (example: string) => {\n let addition = example\n // Look at current value. If it's not empty, add a new line.\n if (props.modelValue.trim() !== '') {\n addition = `\\n\\n${addition}`\n }\n\n emit('update:modelValue', props.modelValue.trim() + addition)\n}\n</script>\n\n<template>\n <ul class=\"flex flex-wrap gap-1\">\n <li\n v-for=\"example in EXAMPLE_SCRIPTS\"\n :key=\"example.title\"\n class=\"bg-b-2 text-c-2 hover:bg-b-3 inline-flex flex-col rounded-full px-3 py-1 text-xs font-medium\">\n <button\n class=\"w-full\"\n type=\"button\"\n @click=\"addExample(example.script)\">\n {{ example.title }}\n </button>\n </li>\n </ul>\n</template>\n"],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { EXAMPLE_SCRIPTS } from "../../../../consts/example-scripts.js";
|
|
2
|
+
import { Fragment, createElementBlock, createElementVNode, defineComponent, openBlock, renderList, toDisplayString, unref } from "vue";
|
|
3
|
+
//#region src/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var _hoisted_1 = { class: "flex flex-wrap gap-1" };
|
|
5
|
+
var _hoisted_2 = ["onClick"];
|
|
6
|
+
var ExampleScripts_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
|
+
__name: "ExampleScripts",
|
|
8
|
+
props: { modelValue: {} },
|
|
9
|
+
emits: ["update:modelValue"],
|
|
10
|
+
setup(__props, { emit: __emit }) {
|
|
11
|
+
const props = __props;
|
|
12
|
+
const emit = __emit;
|
|
13
|
+
const addExample = (example) => {
|
|
14
|
+
let addition = example;
|
|
15
|
+
if (props.modelValue.trim() !== "") addition = `\n\n${addition}`;
|
|
16
|
+
emit("update:modelValue", props.modelValue.trim() + addition);
|
|
17
|
+
};
|
|
18
|
+
return (_ctx, _cache) => {
|
|
19
|
+
return openBlock(), createElementBlock("ul", _hoisted_1, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(EXAMPLE_SCRIPTS), (example) => {
|
|
20
|
+
return openBlock(), createElementBlock("li", {
|
|
21
|
+
key: example.title,
|
|
22
|
+
class: "bg-b-2 text-c-2 hover:bg-b-3 inline-flex flex-col rounded-full px-3 py-1 text-xs font-medium"
|
|
23
|
+
}, [createElementVNode("button", {
|
|
24
|
+
class: "w-full",
|
|
25
|
+
type: "button",
|
|
26
|
+
onClick: ($event) => addExample(example.script)
|
|
27
|
+
}, toDisplayString(example.title), 9, _hoisted_2)]);
|
|
28
|
+
}), 128))]);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
//#endregion
|
|
33
|
+
export { ExampleScripts_vue_vue_type_script_setup_true_lang_default as default };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=ExampleScripts.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExampleScripts.vue.script.js","names":[],"sources":["../../../../../src/plugins/post-response-scripts/components/PostResponseScripts/ExampleScripts.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { EXAMPLE_SCRIPTS } from '@/consts/example-scripts'\n\nconst props = defineProps<{\n modelValue: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n\nconst addExample = (example: string) => {\n let addition = example\n // Look at current value. If it's not empty, add a new line.\n if (props.modelValue.trim() !== '') {\n addition = `\\n\\n${addition}`\n }\n\n emit('update:modelValue', props.modelValue.trim() + addition)\n}\n</script>\n\n<template>\n <ul class=\"flex flex-wrap gap-1\">\n <li\n v-for=\"example in EXAMPLE_SCRIPTS\"\n :key=\"example.title\"\n class=\"bg-b-2 text-c-2 hover:bg-b-3 inline-flex flex-col rounded-full px-3 py-1 text-xs font-medium\">\n <button\n class=\"w-full\"\n type=\"button\"\n @click=\"addExample(example.script)\">\n {{ example.title }}\n </button>\n </li>\n </ul>\n</template>\n"],"mappings":";;;;;;;;;;EAGA,MAAM,QAAQ;EAId,MAAM,OAAO;EAIb,MAAM,cAAc,YAAoB;GACtC,IAAI,WAAW;AAEf,OAAI,MAAM,WAAW,MAAM,KAAK,GAC9B,YAAW,OAAO;AAGpB,QAAK,qBAAqB,MAAM,WAAW,MAAM,GAAG,SAAQ;;;uBAK5D,mBAYK,MAZL,YAYK,EAAA,UAAA,KAAA,EAXH,mBAUK,UAAA,MAAA,WATe,MAAA,gBAAe,GAA1B,YAAO;wBADhB,mBAUK,MAAA;KARF,KAAK,QAAQ;KACd,OAAM;QACN,mBAKS,UAAA;KAJP,OAAM;KACN,MAAK;KACJ,UAAK,WAAE,WAAW,QAAQ,OAAM;uBAC9B,QAAQ,MAAK,EAAA,GAAA,WAAA,CAAA,CAAA"}
|
package/dist/plugins/post-response-scripts/components/PostResponseScripts/PostResponseScripts.vue.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import PostResponseScripts_vue_vue_type_script_setup_true_lang_default from "./PostResponseScripts.vue.script.js";
|
|
2
|
+
//#region src/plugins/post-response-scripts/components/PostResponseScripts/PostResponseScripts.vue
|
|
3
|
+
var PostResponseScripts_default = PostResponseScripts_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { PostResponseScripts_default as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=PostResponseScripts.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostResponseScripts.vue.js","names":[],"sources":["../../../../../src/plugins/post-response-scripts/components/PostResponseScripts/PostResponseScripts.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Operation } from '@scalar/oas-utils/entities/spec'\nimport { computed } from 'vue'\n\nimport { ViewLayoutCollapse } from '@/components/ViewLayout'\n\nimport ExampleScripts from './ExampleScripts.vue'\nimport ScriptEditor from './ScriptEditor.vue'\n\nconst { operation } = defineProps<{\n operation: Pick<Operation, 'x-post-response'>\n}>()\n\nconst emit = defineEmits<{\n (e: 'operation:update:extension', payload: any): void\n}>()\n\nconst script = computed(() => (operation['x-post-response'] as string) || '')\n\nconst updatePostResponseScript = (value: string) => {\n emit('operation:update:extension', {\n 'x-post-response': value,\n })\n}\n</script>\n\n<template>\n <div class=\"w-full\">\n <ViewLayoutCollapse\n class=\"w-full\"\n :defaultOpen=\"true\">\n <template #title>Scripts</template>\n <template #suffix>\n <!-- Show an indicator whether we have a script -->\n <div class=\"mr-2\">\n <div\n v-if=\"script.length > 0\"\n class=\"bg-green h-2 w-2 rounded-full\" />\n </div>\n </template>\n\n <div class=\"text-c-3 flex h-8 items-center border-y px-3 text-sm\">\n Post-Response\n </div>\n\n <ScriptEditor\n :modelValue=\"script\"\n @update:modelValue=\"updatePostResponseScript\" />\n\n <div class=\"border-y p-3\">\n <ExampleScripts\n :modelValue=\"script\"\n @update:modelValue=\"updatePostResponseScript\" />\n </div>\n </ViewLayoutCollapse>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import ViewLayoutCollapse_default from "../../../../components/ViewLayout/ViewLayoutCollapse.vue.js";
|
|
2
|
+
import ExampleScripts_default from "./ExampleScripts.vue.js";
|
|
3
|
+
import ScriptEditor_default from "./ScriptEditor.vue.js";
|
|
4
|
+
import { computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
|
|
5
|
+
//#region src/plugins/post-response-scripts/components/PostResponseScripts/PostResponseScripts.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
+
var _hoisted_1 = { class: "w-full" };
|
|
7
|
+
var _hoisted_2 = { class: "mr-2" };
|
|
8
|
+
var _hoisted_3 = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "bg-green h-2 w-2 rounded-full"
|
|
11
|
+
};
|
|
12
|
+
var _hoisted_4 = { class: "border-y p-3" };
|
|
13
|
+
var PostResponseScripts_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
14
|
+
__name: "PostResponseScripts",
|
|
15
|
+
props: { operation: {} },
|
|
16
|
+
emits: ["operation:update:extension"],
|
|
17
|
+
setup(__props, { emit: __emit }) {
|
|
18
|
+
const emit = __emit;
|
|
19
|
+
const script = computed(() => __props.operation["x-post-response"] || "");
|
|
20
|
+
const updatePostResponseScript = (value) => {
|
|
21
|
+
emit("operation:update:extension", { "x-post-response": value });
|
|
22
|
+
};
|
|
23
|
+
return (_ctx, _cache) => {
|
|
24
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(ViewLayoutCollapse_default), {
|
|
25
|
+
class: "w-full",
|
|
26
|
+
defaultOpen: true
|
|
27
|
+
}, {
|
|
28
|
+
title: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode("Scripts", -1)])]),
|
|
29
|
+
suffix: withCtx(() => [createElementVNode("div", _hoisted_2, [script.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_3)) : createCommentVNode("", true)])]),
|
|
30
|
+
default: withCtx(() => [
|
|
31
|
+
_cache[1] || (_cache[1] = createElementVNode("div", { class: "text-c-3 flex h-8 items-center border-y px-3 text-sm" }, " Post-Response ", -1)),
|
|
32
|
+
createVNode(ScriptEditor_default, {
|
|
33
|
+
modelValue: script.value,
|
|
34
|
+
"onUpdate:modelValue": updatePostResponseScript
|
|
35
|
+
}, null, 8, ["modelValue"]),
|
|
36
|
+
createElementVNode("div", _hoisted_4, [createVNode(ExampleScripts_default, {
|
|
37
|
+
modelValue: script.value,
|
|
38
|
+
"onUpdate:modelValue": updatePostResponseScript
|
|
39
|
+
}, null, 8, ["modelValue"])])
|
|
40
|
+
]),
|
|
41
|
+
_: 1
|
|
42
|
+
})]);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
//#endregion
|
|
47
|
+
export { PostResponseScripts_vue_vue_type_script_setup_true_lang_default as default };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=PostResponseScripts.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostResponseScripts.vue.script.js","names":[],"sources":["../../../../../src/plugins/post-response-scripts/components/PostResponseScripts/PostResponseScripts.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Operation } from '@scalar/oas-utils/entities/spec'\nimport { computed } from 'vue'\n\nimport { ViewLayoutCollapse } from '@/components/ViewLayout'\n\nimport ExampleScripts from './ExampleScripts.vue'\nimport ScriptEditor from './ScriptEditor.vue'\n\nconst { operation } = defineProps<{\n operation: Pick<Operation, 'x-post-response'>\n}>()\n\nconst emit = defineEmits<{\n (e: 'operation:update:extension', payload: any): void\n}>()\n\nconst script = computed(() => (operation['x-post-response'] as string) || '')\n\nconst updatePostResponseScript = (value: string) => {\n emit('operation:update:extension', {\n 'x-post-response': value,\n })\n}\n</script>\n\n<template>\n <div class=\"w-full\">\n <ViewLayoutCollapse\n class=\"w-full\"\n :defaultOpen=\"true\">\n <template #title>Scripts</template>\n <template #suffix>\n <!-- Show an indicator whether we have a script -->\n <div class=\"mr-2\">\n <div\n v-if=\"script.length > 0\"\n class=\"bg-green h-2 w-2 rounded-full\" />\n </div>\n </template>\n\n <div class=\"text-c-3 flex h-8 items-center border-y px-3 text-sm\">\n Post-Response\n </div>\n\n <ScriptEditor\n :modelValue=\"script\"\n @update:modelValue=\"updatePostResponseScript\" />\n\n <div class=\"border-y p-3\">\n <ExampleScripts\n :modelValue=\"script\"\n @update:modelValue=\"updatePostResponseScript\" />\n </div>\n </ViewLayoutCollapse>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;EAaA,MAAM,OAAO;EAIb,MAAM,SAAS,eAAgB,QAAA,UAAU,sBAAiC,GAAE;EAE5E,MAAM,4BAA4B,UAAkB;AAClD,QAAK,8BAA8B,EACjC,mBAAmB,OACpB,CAAA;;;uBAKD,mBA4BM,OA5BN,YA4BM,CA3BJ,YA0BqB,MAAA,2BAAA,EAAA;IAzBnB,OAAM;IACL,aAAa;;IACH,OAAK,cAAQ,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAAP,WAAO,GAAA,CAAA,EAAA,CAAA;IACb,QAAM,cAMT,CAJN,mBAIM,OAJN,YAIM,CAFI,OAAA,MAAO,SAAM,KAAA,WAAA,EADrB,mBAE0C,OAF1C,WAE0C,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA,CAAA,CAAA;2BAMxC;+BAFN,mBAEM,OAAA,EAFD,OAAM,wDAAsD,EAAC,mBAElE,GAAA;KAEA,YAEkD,sBAAA;MAD/C,YAAY,OAAA;MACZ,uBAAmB;;KAEtB,mBAIM,OAJN,YAIM,CAHJ,YAEkD,wBAAA;MAD/C,YAAY,OAAA;MACZ,uBAAmB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import ScriptEditor_vue_vue_type_script_setup_true_lang_default from "./ScriptEditor.vue.script.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import _plugin_vue_export_helper_default from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
//#region src/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue
|
|
5
|
+
var ScriptEditor_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ScriptEditor_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-a9df3276"]]);
|
|
6
|
+
//#endregion
|
|
7
|
+
export { ScriptEditor_default as default };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=ScriptEditor.vue.js.map
|
package/dist/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptEditor.vue.js","names":[],"sources":["../../../../../src/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { javascript } from '@codemirror/lang-javascript'\nimport { useCodeMirror } from '@scalar/use-codemirror'\nimport { ref, toRef } from 'vue'\n\nconst props = defineProps<{\n modelValue: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n\nconst codeMirrorRef = ref<HTMLDivElement | null>(null)\n\nuseCodeMirror({\n codeMirrorRef,\n content: toRef(() => props.modelValue),\n language: undefined,\n // We want to use some custom configuration for the syntax highlighting.\n extensions: [javascript()],\n lineNumbers: true,\n onChange: (value) => {\n emit('update:modelValue', value)\n },\n})\n</script>\n\n<template>\n <div class=\"script-editor text-sm\">\n <div\n ref=\"codeMirrorRef\"\n class=\"editor-container\" />\n </div>\n</template>\n\n<style scoped>\n.script-editor {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.editor-container {\n width: 100%;\n height: 100%;\n background: var(--scalar-background-1);\n border-radius: var(--scalar-radius);\n overflow: hidden;\n padding-left: 3px;\n}\n\n:deep(.cm-editor) {\n height: 100%;\n outline: none;\n background: var(--scalar-background-1);\n}\n\n:deep(.cm-content) {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-small);\n padding: 8px 2px;\n}\n\n:deep(.cm-gutters) {\n border-right: none;\n color: var(--scalar-color-3);\n background: var(--scalar-background-1);\n font-size: var(--scalar-mini);\n line-height: 1.44;\n}\n\n:deep(.cm-gutters:before) {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: calc(100% - 2px);\n height: calc(100% - 4px);\n border-radius: var(--scalar-radius) 0 0 var(--scalar-radius);\n}\n\n:deep(.cm-gutterElement) {\n font-family: var(--scalar-font-code) !important;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative;\n}\n\n:deep(.cm-scroller) {\n overflow: auto;\n}\n\n:deep(.cm-activeLine),\n:deep(.cm-activeLineGutter) {\n background-color: var(--scalar-background-2);\n}\n\n:deep(.cm-selectionMatch),\n:deep(.cm-matchingBracket) {\n border-radius: var(--scalar-radius);\n background: var(--scalar-background-4) !important;\n}\n\n:deep(.cm-tooltip) {\n background: var(--scalar-background-1) !important;\n border: 1px solid var(--scalar-border-color) !important;\n border-radius: var(--scalar-radius);\n box-shadow: var(--scalar-shadow-2);\n}\n</style>\n"],"mappings":""}
|
package/dist/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue.script.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createElementBlock, createElementVNode, defineComponent, openBlock, ref, toRef } from "vue";
|
|
2
|
+
import { javascript } from "@codemirror/lang-javascript";
|
|
3
|
+
import { useCodeMirror } from "@scalar/use-codemirror";
|
|
4
|
+
//#region src/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var _hoisted_1 = { class: "script-editor text-sm" };
|
|
6
|
+
var ScriptEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
|
+
__name: "ScriptEditor",
|
|
8
|
+
props: { modelValue: {} },
|
|
9
|
+
emits: ["update:modelValue"],
|
|
10
|
+
setup(__props, { emit: __emit }) {
|
|
11
|
+
const props = __props;
|
|
12
|
+
const emit = __emit;
|
|
13
|
+
const codeMirrorRef = ref(null);
|
|
14
|
+
useCodeMirror({
|
|
15
|
+
codeMirrorRef,
|
|
16
|
+
content: toRef(() => props.modelValue),
|
|
17
|
+
language: void 0,
|
|
18
|
+
extensions: [javascript()],
|
|
19
|
+
lineNumbers: true,
|
|
20
|
+
onChange: (value) => {
|
|
21
|
+
emit("update:modelValue", value);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
return (_ctx, _cache) => {
|
|
25
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", {
|
|
26
|
+
ref_key: "codeMirrorRef",
|
|
27
|
+
ref: codeMirrorRef,
|
|
28
|
+
class: "editor-container"
|
|
29
|
+
}, null, 512)]);
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
//#endregion
|
|
34
|
+
export { ScriptEditor_vue_vue_type_script_setup_true_lang_default as default };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=ScriptEditor.vue.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptEditor.vue.script.js","names":[],"sources":["../../../../../src/plugins/post-response-scripts/components/PostResponseScripts/ScriptEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { javascript } from '@codemirror/lang-javascript'\nimport { useCodeMirror } from '@scalar/use-codemirror'\nimport { ref, toRef } from 'vue'\n\nconst props = defineProps<{\n modelValue: string\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n\nconst codeMirrorRef = ref<HTMLDivElement | null>(null)\n\nuseCodeMirror({\n codeMirrorRef,\n content: toRef(() => props.modelValue),\n language: undefined,\n // We want to use some custom configuration for the syntax highlighting.\n extensions: [javascript()],\n lineNumbers: true,\n onChange: (value) => {\n emit('update:modelValue', value)\n },\n})\n</script>\n\n<template>\n <div class=\"script-editor text-sm\">\n <div\n ref=\"codeMirrorRef\"\n class=\"editor-container\" />\n </div>\n</template>\n\n<style scoped>\n.script-editor {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.editor-container {\n width: 100%;\n height: 100%;\n background: var(--scalar-background-1);\n border-radius: var(--scalar-radius);\n overflow: hidden;\n padding-left: 3px;\n}\n\n:deep(.cm-editor) {\n height: 100%;\n outline: none;\n background: var(--scalar-background-1);\n}\n\n:deep(.cm-content) {\n font-family: var(--scalar-font-code);\n font-size: var(--scalar-small);\n padding: 8px 2px;\n}\n\n:deep(.cm-gutters) {\n border-right: none;\n color: var(--scalar-color-3);\n background: var(--scalar-background-1);\n font-size: var(--scalar-mini);\n line-height: 1.44;\n}\n\n:deep(.cm-gutters:before) {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: calc(100% - 2px);\n height: calc(100% - 4px);\n border-radius: var(--scalar-radius) 0 0 var(--scalar-radius);\n}\n\n:deep(.cm-gutterElement) {\n font-family: var(--scalar-font-code) !important;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n position: relative;\n}\n\n:deep(.cm-scroller) {\n overflow: auto;\n}\n\n:deep(.cm-activeLine),\n:deep(.cm-activeLineGutter) {\n background-color: var(--scalar-background-2);\n}\n\n:deep(.cm-selectionMatch),\n:deep(.cm-matchingBracket) {\n border-radius: var(--scalar-radius);\n background: var(--scalar-background-4) !important;\n}\n\n:deep(.cm-tooltip) {\n background: var(--scalar-background-1) !important;\n border: 1px solid var(--scalar-border-color) !important;\n border-radius: var(--scalar-radius);\n box-shadow: var(--scalar-shadow-2);\n}\n</style>\n"],"mappings":";;;;;;;;;;EAKA,MAAM,QAAQ;EAId,MAAM,OAAO;EAIb,MAAM,gBAAgB,IAA2B,KAAI;AAErD,gBAAc;GACZ;GACA,SAAS,YAAY,MAAM,WAAW;GACtC,UAAU,KAAA;GAEV,YAAY,CAAC,YAAY,CAAC;GAC1B,aAAa;GACb,WAAW,UAAU;AACnB,SAAK,qBAAqB,MAAK;;GAElC,CAAA;;uBAIC,mBAIM,OAJN,YAIM,CAHJ,mBAE6B,OAAA;aADvB;IAAJ,KAAI;IACJ,OAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default as PostResponseScripts } from './PostResponseScripts.vue';
|
|
1
|
+
export { default as PostResponseScripts } from './PostResponseScripts.vue.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import PostResponseScripts_default from "./PostResponseScripts.vue.js";
|
|
2
2
|
export { PostResponseScripts_default as PostResponseScripts };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import TestResultIndicator_vue_vue_type_script_setup_true_lang_default from "./TestResultIndicator.vue.script.js";
|
|
2
|
+
//#region src/plugins/post-response-scripts/components/TestResults/TestResultIndicator.vue
|
|
3
|
+
var TestResultIndicator_default = TestResultIndicator_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { TestResultIndicator_default as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=TestResultIndicator.vue.js.map
|