@scalar/api-reference 1.24.19 → 1.24.21

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 (85) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/browser/standalone.js +11841 -11462
  3. package/dist/browser/webpack-stats.json +1 -1
  4. package/dist/components/ApiClientModal.vue.d.ts.map +1 -1
  5. package/dist/components/ApiClientModal.vue.js +18 -12
  6. package/dist/components/ApiClientModal.vue3.js +5 -0
  7. package/dist/components/ApiReferenceLayout.vue.d.ts.map +1 -1
  8. package/dist/components/ApiReferenceLayout.vue.js +2 -2
  9. package/dist/components/ApiReferenceLayout.vue2.js +105 -116
  10. package/dist/components/Content/Content.vue.d.ts +0 -3
  11. package/dist/components/Content/Content.vue.d.ts.map +1 -1
  12. package/dist/components/Content/Content.vue.js +2 -2
  13. package/dist/components/Content/Content.vue2.js +70 -93
  14. package/dist/components/Content/Introduction/Introduction.vue.d.ts +2 -2
  15. package/dist/components/Content/Operation/TestRequestButton.vue.d.ts.map +1 -1
  16. package/dist/components/Content/Operation/TestRequestButton.vue.js +1 -1
  17. package/dist/components/Content/Operation/TestRequestButton.vue2.js +8 -6
  18. package/dist/components/Content/Schema/Schema.vue.d.ts +2 -2
  19. package/dist/components/Content/Schema/SchemaHeading.vue.d.ts +2 -2
  20. package/dist/components/api-client-bus.d.ts +15 -3
  21. package/dist/components/api-client-bus.d.ts.map +1 -1
  22. package/dist/{components/Content/BaseUrl/ServerVariables.vue.d.ts → features/BaseUrl/BaseUrl.vue.d.ts} +18 -4
  23. package/dist/features/BaseUrl/BaseUrl.vue.d.ts.map +1 -0
  24. package/dist/features/BaseUrl/BaseUrl.vue.js +87 -0
  25. package/dist/features/BaseUrl/BaseUrl.vue2.js +4 -0
  26. package/dist/features/BaseUrl/ServerForm.vue.d.ts +41 -0
  27. package/dist/features/BaseUrl/ServerForm.vue.d.ts.map +1 -0
  28. package/dist/features/BaseUrl/ServerForm.vue.js +7 -0
  29. package/dist/features/BaseUrl/ServerForm.vue2.js +66 -0
  30. package/dist/{components/Content/BaseUrl/ServerItem.vue.d.ts → features/BaseUrl/ServerUrl.vue.d.ts} +6 -6
  31. package/dist/features/BaseUrl/ServerUrl.vue.d.ts.map +1 -0
  32. package/dist/features/BaseUrl/ServerUrl.vue.js +8 -0
  33. package/dist/features/BaseUrl/ServerUrl.vue2.js +29 -0
  34. package/dist/features/BaseUrl/ServerUrlSelect.vue.d.ts +30 -0
  35. package/dist/features/BaseUrl/ServerUrlSelect.vue.d.ts.map +1 -0
  36. package/dist/features/BaseUrl/ServerUrlSelect.vue.js +7 -0
  37. package/dist/features/BaseUrl/ServerUrlSelect.vue2.js +56 -0
  38. package/dist/features/BaseUrl/ServerVariablesForm.vue.d.ts +23 -0
  39. package/dist/features/BaseUrl/ServerVariablesForm.vue.d.ts.map +1 -0
  40. package/dist/features/BaseUrl/ServerVariablesForm.vue.js +7 -0
  41. package/dist/features/BaseUrl/ServerVariablesForm.vue2.js +53 -0
  42. package/dist/{components/Content/BaseUrl/ServerVariableSelect.vue.d.ts → features/BaseUrl/ServerVariablesSelect.vue.d.ts} +1 -1
  43. package/dist/features/BaseUrl/ServerVariablesSelect.vue.d.ts.map +1 -0
  44. package/dist/features/BaseUrl/ServerVariablesSelect.vue.js +7 -0
  45. package/dist/{components/Content/BaseUrl/ServerVariableSelect.vue2.js → features/BaseUrl/ServerVariablesSelect.vue2.js} +1 -1
  46. package/dist/{components/Content/BaseUrl/ServerVariableTextbox.vue.d.ts → features/BaseUrl/ServerVariablesTextbox.vue.d.ts} +1 -1
  47. package/dist/features/BaseUrl/ServerVariablesTextbox.vue.d.ts.map +1 -0
  48. package/dist/features/BaseUrl/ServerVariablesTextbox.vue.js +7 -0
  49. package/dist/{components/Content/BaseUrl/ServerVariableTextbox.vue2.js → features/BaseUrl/ServerVariablesTextbox.vue2.js} +6 -6
  50. package/dist/features/BaseUrl/index.d.ts +3 -0
  51. package/dist/features/BaseUrl/index.d.ts.map +1 -0
  52. package/dist/features/BaseUrl/types.d.ts +10 -0
  53. package/dist/features/BaseUrl/types.d.ts.map +1 -0
  54. package/dist/features/BaseUrl/utils/getServers.d.ts +15 -0
  55. package/dist/features/BaseUrl/utils/getServers.d.ts.map +1 -0
  56. package/dist/features/BaseUrl/utils/getServers.js +29 -0
  57. package/dist/features/BaseUrl/utils/index.d.ts +2 -0
  58. package/dist/features/BaseUrl/utils/index.d.ts.map +1 -0
  59. package/dist/helpers/createEmptySpecification.d.ts +1 -1
  60. package/dist/helpers/createEmptySpecification.d.ts.map +1 -1
  61. package/dist/helpers/createEmptySpecification.js +5 -4
  62. package/dist/helpers/getModels.d.ts +1 -1
  63. package/dist/hooks/useReactiveSpec.d.ts +8 -8
  64. package/dist/index.js +1 -1
  65. package/dist/style.css +1 -1
  66. package/dist/types.d.ts +1 -4
  67. package/dist/types.d.ts.map +1 -1
  68. package/package.json +11 -10
  69. package/dist/components/ApiClientModal.vue2.js +0 -4
  70. package/dist/components/Content/BaseUrl/BaseUrl.vue.d.ts +0 -3
  71. package/dist/components/Content/BaseUrl/BaseUrl.vue.d.ts.map +0 -1
  72. package/dist/components/Content/BaseUrl/BaseUrl.vue.js +0 -7
  73. package/dist/components/Content/BaseUrl/BaseUrl.vue2.js +0 -90
  74. package/dist/components/Content/BaseUrl/ServerItem.vue.d.ts.map +0 -1
  75. package/dist/components/Content/BaseUrl/ServerItem.vue.js +0 -8
  76. package/dist/components/Content/BaseUrl/ServerItem.vue2.js +0 -35
  77. package/dist/components/Content/BaseUrl/ServerVariableSelect.vue.d.ts.map +0 -1
  78. package/dist/components/Content/BaseUrl/ServerVariableSelect.vue.js +0 -7
  79. package/dist/components/Content/BaseUrl/ServerVariableTextbox.vue.d.ts.map +0 -1
  80. package/dist/components/Content/BaseUrl/ServerVariableTextbox.vue.js +0 -7
  81. package/dist/components/Content/BaseUrl/ServerVariables.vue.d.ts.map +0 -1
  82. package/dist/components/Content/BaseUrl/ServerVariables.vue.js +0 -7
  83. package/dist/components/Content/BaseUrl/ServerVariables.vue2.js +0 -47
  84. package/dist/components/Content/BaseUrl/index.d.ts +0 -2
  85. package/dist/components/Content/BaseUrl/index.d.ts.map +0 -1
@@ -1,114 +1,91 @@
1
- import { defineComponent as E, watch as P, computed as S, openBlock as s, createElementBlock as p, Fragment as m, createElementVNode as w, renderSlot as y, createVNode as f, unref as o, createBlock as i, withCtx as u, normalizeClass as W, renderList as $, resolveDynamicComponent as k, createCommentVNode as L, createStaticVNode as D } from "vue";
2
- import { useServerStore as F } from "@scalar/api-client";
3
- import j from "./Tag/TagAccordion.vue.js";
4
- import q from "./Tag/Tag.vue.js";
5
- import G from "./Operation/OperationAccordion.vue.js";
6
- import H from "./Operation/Operation.vue.js";
7
- import J from "./Lazy/Loading.vue.js";
1
+ import { defineComponent as O, computed as m, openBlock as r, createElementBlock as n, Fragment as c, createElementVNode as k, renderSlot as u, createVNode as p, unref as o, createBlock as i, withCtx as l, normalizeClass as T, renderList as L, resolveDynamicComponent as b, createCommentVNode as $, createStaticVNode as E } from "vue";
2
+ import R from "./Tag/TagAccordion.vue.js";
3
+ import D from "./Tag/Tag.vue.js";
4
+ import F from "./Operation/OperationAccordion.vue.js";
5
+ import W from "./Operation/Operation.vue.js";
6
+ import j from "./Lazy/Loading.vue.js";
8
7
  /* empty css */
9
- import K from "./Introduction/Introduction.vue.js";
10
- import Q from "./BaseUrl/BaseUrl.vue.js";
11
- import X from "./Authentication/Authentication.vue.js";
12
- import Y from "./ClientLibraries/ClientLibraries.vue.js";
8
+ import q from "./Introduction/Introduction.vue.js";
9
+ import G from "../../features/BaseUrl/BaseUrl.vue.js";
10
+ import H from "./Authentication/Authentication.vue.js";
11
+ import J from "./ClientLibraries/ClientLibraries.vue.js";
13
12
  import C from "./Lazy/Lazy.vue.js";
14
- import Z from "./Webhooks/Webhooks.vue.js";
15
- import _ from "./Models/ModelsAccordion.vue.js";
16
- import x from "./Models/Models.vue.js";
17
- import { useSidebar as ee } from "../../hooks/useSidebar.js";
18
- import { hasModels as oe } from "../../helpers/hasModels.js";
19
- import { getModels as g } from "../../helpers/getModels.js";
20
- import { useNavState as re } from "../../hooks/useNavState.js";
21
- const se = /* @__PURE__ */ D('<div class="section-flare" data-v-54f6ce8b><div class="section-flare-item" data-v-54f6ce8b></div><div class="section-flare-item" data-v-54f6ce8b></div><div class="section-flare-item" data-v-54f6ce8b></div><div class="section-flare-item" data-v-54f6ce8b></div><div class="section-flare-item" data-v-54f6ce8b></div><div class="section-flare-item" data-v-54f6ce8b></div><div class="section-flare-item" data-v-54f6ce8b></div><div class="section-flare-item" data-v-54f6ce8b></div></div>', 1), te = { class: "narrow-references-container" }, ge = /* @__PURE__ */ E({
13
+ import K from "./Webhooks/Webhooks.vue.js";
14
+ import P from "./Models/ModelsAccordion.vue.js";
15
+ import Q from "./Models/Models.vue.js";
16
+ import { useSidebar as X } from "../../hooks/useSidebar.js";
17
+ import { hasModels as Y } from "../../helpers/hasModels.js";
18
+ import { getModels as w } from "../../helpers/getModels.js";
19
+ import { useNavState as Z } from "../../hooks/useNavState.js";
20
+ const _ = /* @__PURE__ */ E('<div class="section-flare" data-v-378846e4><div class="section-flare-item" data-v-378846e4></div><div class="section-flare-item" data-v-378846e4></div><div class="section-flare-item" data-v-378846e4></div><div class="section-flare-item" data-v-378846e4></div><div class="section-flare-item" data-v-378846e4></div><div class="section-flare-item" data-v-378846e4></div><div class="section-flare-item" data-v-378846e4></div><div class="section-flare-item" data-v-378846e4></div></div>', 1), x = { class: "narrow-references-container" }, Le = /* @__PURE__ */ O({
22
21
  __name: "Content",
23
22
  props: {
24
23
  parsedSpec: {},
25
24
  layout: {},
26
25
  baseServerURL: {},
27
- proxy: {},
28
- servers: {}
26
+ proxy: {}
29
27
  },
30
28
  setup(z) {
31
- const r = z, { getOperationId: h, getTagId: l, hash: I } = re(), { setServer: M } = F(), { hideModels: N, collapsedSidebarItems: R } = ee(), U = (e) => {
32
- if (e.url.match(/^(?!(https?|file):\/\/|{).+/)) {
33
- let t = r.baseServerURL ?? window.location.origin;
34
- t = t.replace(/\/$/, "");
35
- const d = e.url.startsWith("/") ? e.url : `/${e.url}`;
36
- e.url = `${t}${d}`.replace(/\/$/, "");
37
- }
38
- return e;
39
- };
40
- P(
41
- () => r.parsedSpec,
42
- (e) => {
43
- var d, c;
44
- let t = [
45
- { url: typeof window < "u" ? window.location.origin : "/" }
46
- ];
47
- r.servers ? t = r.servers : e.servers && e.servers.length > 0 ? t = e.servers : r.parsedSpec.host && (t = [
48
- {
49
- url: `${((d = r.parsedSpec.schemes) == null ? void 0 : d[0]) ?? "http"}://${r.parsedSpec.host}${((c = r.parsedSpec) == null ? void 0 : c.basePath) ?? ""}`
50
- }
51
- ]), (r.baseServerURL || typeof window < "u") && (t = t.map(U)), M({ servers: t });
52
- },
53
- { deep: !0, immediate: !0 }
54
- );
55
- const V = S(
56
- () => r.layout === "accordion" ? j : q
57
- ), A = S(
58
- () => r.layout === "accordion" ? G : H
59
- ), B = S(
60
- () => r.layout === "accordion" ? "after" : "aside"
61
- ), O = r.layout !== "accordion" && !I.value.startsWith("model");
62
- return (e, t) => {
63
- var d, c, v, b;
64
- return s(), p(m, null, [
65
- se,
66
- w("div", te, [
67
- y(e.$slots, "start", {}, void 0, !0),
68
- f(o(J), {
29
+ const t = z, { getOperationId: f, getTagId: d, hash: I } = Z(), { hideModels: M, collapsedSidebarItems: N } = X(), V = m(
30
+ () => t.layout === "accordion" ? R : D
31
+ ), A = m(
32
+ () => t.layout === "accordion" ? F : W
33
+ ), U = m(
34
+ () => t.layout === "accordion" ? "after" : "aside"
35
+ ), g = t.layout !== "accordion" && !I.value.startsWith("model");
36
+ return (e, ee) => {
37
+ var v, y, S, h;
38
+ return r(), n(c, null, [
39
+ _,
40
+ k("div", x, [
41
+ u(e.$slots, "start", {}, void 0, !0),
42
+ p(o(j), {
69
43
  layout: e.layout,
70
44
  parsedSpec: e.parsedSpec
71
45
  }, null, 8, ["layout", "parsedSpec"]),
72
- (c = (d = e.parsedSpec) == null ? void 0 : d.info) != null && c.title || (b = (v = e.parsedSpec) == null ? void 0 : v.info) != null && b.description ? (s(), i(o(K), {
46
+ (y = (v = e.parsedSpec) == null ? void 0 : v.info) != null && y.title || (h = (S = e.parsedSpec) == null ? void 0 : S.info) != null && h.description ? (r(), i(o(q), {
73
47
  key: 0,
74
48
  info: e.parsedSpec.info,
75
49
  parsedSpec: e.parsedSpec
76
50
  }, {
77
- [B.value]: u(() => [
78
- w("div", {
79
- class: W(["introduction-card", { "introduction-card-row": e.layout === "accordion" }])
51
+ [U.value]: l(() => [
52
+ k("div", {
53
+ class: T(["introduction-card", { "introduction-card-row": e.layout === "accordion" }])
80
54
  }, [
81
- f(o(Q)),
82
- f(o(X), {
55
+ p(o(G), {
56
+ defaultServerUrl: e.baseServerURL,
57
+ specification: e.parsedSpec
58
+ }, null, 8, ["defaultServerUrl", "specification"]),
59
+ p(o(H), {
83
60
  parsedSpec: e.parsedSpec,
84
61
  proxy: e.proxy
85
62
  }, null, 8, ["parsedSpec", "proxy"]),
86
- f(o(Y))
63
+ p(o(J))
87
64
  ], 2)
88
65
  ]),
89
66
  _: 2
90
- }, 1032, ["info", "parsedSpec"])) : y(e.$slots, "empty-state", { key: 1 }, void 0, !0),
91
- (s(!0), p(m, null, $(e.parsedSpec.tags, (a) => (s(), i(o(C), {
92
- id: o(l)(a),
93
- key: o(l)(a),
94
- isLazy: o(O) && !o(R)[o(l)(a)]
67
+ }, 1032, ["info", "parsedSpec"])) : u(e.$slots, "empty-state", { key: 1 }, void 0, !0),
68
+ (r(!0), n(c, null, L(e.parsedSpec.tags, (a) => (r(), i(o(C), {
69
+ id: o(d)(a),
70
+ key: o(d)(a),
71
+ isLazy: o(g) && !o(N)[o(d)(a)]
95
72
  }, {
96
- default: u(() => [
97
- (s(), i(k(V.value), {
98
- id: o(l)(a),
73
+ default: l(() => [
74
+ (r(), i(b(V.value), {
75
+ id: o(d)(a),
99
76
  spec: e.parsedSpec,
100
77
  tag: a
101
78
  }, {
102
- default: u(() => [
103
- (s(!0), p(m, null, $(a.operations, (n, T) => (s(), i(o(C), {
104
- id: o(h)(n, a),
105
- key: `${n.httpVerb}-${n.operationId}`,
106
- isLazy: T > 0
79
+ default: l(() => [
80
+ (r(!0), n(c, null, L(a.operations, (s, B) => (r(), i(o(C), {
81
+ id: o(f)(s, a),
82
+ key: `${s.httpVerb}-${s.operationId}`,
83
+ isLazy: B > 0
107
84
  }, {
108
- default: u(() => [
109
- (s(), i(k(A.value), {
110
- id: o(h)(n, a),
111
- operation: n,
85
+ default: l(() => [
86
+ (r(), i(b(A.value), {
87
+ id: o(f)(s, a),
88
+ operation: s,
112
89
  tag: a
113
90
  }, null, 8, ["id", "operation", "tag"]))
114
91
  ]),
@@ -120,25 +97,25 @@ const se = /* @__PURE__ */ D('<div class="section-flare" data-v-54f6ce8b><div cl
120
97
  ]),
121
98
  _: 2
122
99
  }, 1032, ["id", "isLazy"]))), 128)),
123
- e.parsedSpec.webhooks ? (s(), i(o(Z), {
100
+ e.parsedSpec.webhooks ? (r(), i(o(K), {
124
101
  key: 2,
125
102
  webhooks: e.parsedSpec.webhooks
126
- }, null, 8, ["webhooks"])) : L("", !0),
127
- o(oe)(e.parsedSpec) && !o(N) ? (s(), p(m, { key: 3 }, [
128
- e.layout === "accordion" ? (s(), i(o(_), {
103
+ }, null, 8, ["webhooks"])) : $("", !0),
104
+ o(Y)(e.parsedSpec) && !o(M) ? (r(), n(c, { key: 3 }, [
105
+ e.layout === "accordion" ? (r(), i(o(P), {
129
106
  key: 0,
130
- schemas: o(g)(e.parsedSpec)
131
- }, null, 8, ["schemas"])) : (s(), i(o(x), {
107
+ schemas: o(w)(e.parsedSpec)
108
+ }, null, 8, ["schemas"])) : (r(), i(o(Q), {
132
109
  key: 1,
133
- schemas: o(g)(e.parsedSpec)
110
+ schemas: o(w)(e.parsedSpec)
134
111
  }, null, 8, ["schemas"]))
135
- ], 64)) : L("", !0),
136
- y(e.$slots, "end", {}, void 0, !0)
112
+ ], 64)) : $("", !0),
113
+ u(e.$slots, "end", {}, void 0, !0)
137
114
  ])
138
115
  ], 64);
139
116
  };
140
117
  }
141
118
  });
142
119
  export {
143
- ge as default
120
+ Le as default
144
121
  };
@@ -1,10 +1,10 @@
1
1
  import type { Spec } from '@scalar/oas-utils';
2
2
  import type { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from '@scalar/openapi-parser';
3
3
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToOption<{
4
- info: Partial<OpenAPIV2.InfoObject | OpenAPIV3.InfoObject | OpenAPIV3_1.InfoObject>;
4
+ info: Partial<OpenAPIV3.InfoObject | OpenAPIV3_1.InfoObject | OpenAPIV2.InfoObject>;
5
5
  parsedSpec: Spec;
6
6
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<{
7
- info: Partial<OpenAPIV2.InfoObject | OpenAPIV3.InfoObject | OpenAPIV3_1.InfoObject>;
7
+ info: Partial<OpenAPIV3.InfoObject | OpenAPIV3_1.InfoObject | OpenAPIV2.InfoObject>;
8
8
  parsedSpec: Spec;
9
9
  }>>>, {}, {}>, {
10
10
  aside?(_: {}): any;
@@ -1 +1 @@
1
- {"version":3,"file":"TestRequestButton.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Content/Operation/TestRequestButton.vue"],"names":[],"mappings":"AA2EA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;;;;;;AAmH7D,wBAMG;AAOH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAC5D,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC"}
1
+ {"version":3,"file":"TestRequestButton.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Content/Operation/TestRequestButton.vue"],"names":[],"mappings":"AA6EA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;;;;;;AAqH7D,wBAMG;AAOH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAC5D,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import t from "./TestRequestButton.vue2.js";
2
2
  /* empty css */
3
3
  import o from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ o(t, [["__scopeId", "data-v-4b36d4bc"]]);
4
+ const m = /* @__PURE__ */ o(t, [["__scopeId", "data-v-98c21b42"]]);
5
5
  export {
6
6
  m as default
7
7
  };
@@ -1,11 +1,11 @@
1
- import { defineComponent as i, inject as a, openBlock as s, createBlock as m, unref as t, withModifiers as c, withCtx as d, createVNode as l, pushScopeId as u, popScopeId as f, createElementVNode as h } from "vue";
1
+ import { defineComponent as i, inject as a, openBlock as s, createBlock as m, unref as t, withModifiers as c, withCtx as l, createVNode as u, pushScopeId as d, popScopeId as f, createElementVNode as h } from "vue";
2
2
  import { HttpMethod as _ } from "@scalar/api-client";
3
3
  import { ScalarIcon as b } from "@scalar/components";
4
4
  import { NEW_API_MODAL as S } from "../../../features.js";
5
5
  import { apiClientBus as B } from "../../api-client-bus.js";
6
6
  import { GLOBAL_SECURITY_SYMBOL as C } from "../../../helpers/provideSymbols.js";
7
7
  import { openClientFor as I } from "../../../helpers/openClientFor.js";
8
- const w = (o) => (u("data-v-4b36d4bc"), o = o(), f(), o), A = /* @__PURE__ */ w(() => /* @__PURE__ */ h("span", null, "Test Request", -1)), T = /* @__PURE__ */ i({
8
+ const w = (o) => (d("data-v-98c21b42"), o = o(), f(), o), A = /* @__PURE__ */ w(() => /* @__PURE__ */ h("span", null, "Test Request", -1)), T = /* @__PURE__ */ i({
9
9
  __name: "TestRequestButton",
10
10
  props: {
11
11
  operation: {}
@@ -22,8 +22,10 @@ const w = (o) => (u("data-v-4b36d4bc"), o = o(), f(), o), A = /* @__PURE__ */ w(
22
22
  return t(S) ? (
23
23
  // @scalar/api-client@2.0
24
24
  t(B).emit({
25
- path: e.operation.path,
26
- method: e.operation.httpVerb
25
+ open: {
26
+ path: e.operation.path,
27
+ method: e.operation.httpVerb
28
+ }
27
29
  })
28
30
  ) : (
29
31
  // @scalar/api-client@1.x
@@ -31,8 +33,8 @@ const w = (o) => (u("data-v-4b36d4bc"), o = o(), f(), o), A = /* @__PURE__ */ w(
31
33
  );
32
34
  }, ["stop"]))
33
35
  }, {
34
- default: d(() => [
35
- l(t(b), { icon: "PaperAirplane" }),
36
+ default: l(() => [
37
+ u(t(b), { icon: "PaperAirplane" }),
36
38
  A
37
39
  ]),
38
40
  _: 1
@@ -1,6 +1,6 @@
1
1
  import type { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from '@scalar/openapi-parser';
2
2
  declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<{
3
- value?: OpenAPIV3_1.SchemaObject | OpenAPIV3.SchemaObject | OpenAPIV2.DefinitionsObject | undefined;
3
+ value?: OpenAPIV2.DefinitionsObject | OpenAPIV3_1.SchemaObject | OpenAPIV3.SchemaObject | undefined;
4
4
  /** Track how deep we’ve gone */
5
5
  level?: number | undefined;
6
6
  name?: string | undefined;
@@ -11,7 +11,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
11
11
  }>, {
12
12
  level: number;
13
13
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
14
- value?: OpenAPIV3_1.SchemaObject | OpenAPIV3.SchemaObject | OpenAPIV2.DefinitionsObject | undefined;
14
+ value?: OpenAPIV2.DefinitionsObject | OpenAPIV3_1.SchemaObject | OpenAPIV3.SchemaObject | undefined;
15
15
  /** Track how deep we’ve gone */
16
16
  level?: number | undefined;
17
17
  name?: string | undefined;
@@ -1,9 +1,9 @@
1
1
  import type { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from '@scalar/openapi-parser';
2
2
  declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<{
3
- value: OpenAPIV3_1.SchemaObject | OpenAPIV3.SchemaObject | OpenAPIV2.DefinitionsObject;
3
+ value: OpenAPIV2.DefinitionsObject | OpenAPIV3_1.SchemaObject | OpenAPIV3.SchemaObject;
4
4
  name?: string | undefined;
5
5
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<{
6
- value: OpenAPIV3_1.SchemaObject | OpenAPIV3.SchemaObject | OpenAPIV2.DefinitionsObject;
6
+ value: OpenAPIV2.DefinitionsObject | OpenAPIV3_1.SchemaObject | OpenAPIV3.SchemaObject;
7
7
  name?: string | undefined;
8
8
  }>>>, {}, {}>;
9
9
  export default _default;
@@ -1,9 +1,21 @@
1
- import type { OpenClientPayload } from '@scalar/api-client-modal';
2
- /** Event bus to open the API Client */
3
- export declare const apiClientBus: import("@vueuse/core").UseEventBusReturn<OpenClientPayload, any>;
1
+ import type { OpenClientPayload } from '@scalar/client-app';
2
+ import type { AuthenticationState } from '@scalar/oas-utils';
3
+ import type { RequireAtLeastOne } from 'type-fest';
4
+ type ApiClientEvents = RequireAtLeastOne<{
5
+ open?: OpenClientPayload;
6
+ updateAuth?: AuthenticationState;
7
+ }>;
8
+ /**
9
+ * Event bus for controlling the Api Client
10
+ *
11
+ * There is a limitation in useEventBus with mapping the event with the payload type. This is a workaround, however
12
+ * doing it this way allows us to "fire" multiple events at the same time which is actually kind of nice
13
+ */
14
+ export declare const apiClientBus: import("@vueuse/core").UseEventBusReturn<ApiClientEvents, any>;
4
15
  export declare const modalStateBus: import("@vueuse/core").UseEventBusReturn<{
5
16
  open: boolean;
6
17
  show: () => void;
7
18
  hide: () => void;
8
19
  }, any>;
20
+ export {};
9
21
  //# sourceMappingURL=api-client-bus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-client-bus.d.ts","sourceRoot":"","sources":["../../src/components/api-client-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAOjE,uCAAuC;AACvC,eAAO,MAAM,YAAY,kEAA+B,CAAA;AACxD,eAAO,MAAM,aAAa;;;;OAAyC,CAAA"}
1
+ {"version":3,"file":"api-client-bus.d.ts","sourceRoot":"","sources":["../../src/components/api-client-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAElD,KAAK,eAAe,GAAG,iBAAiB,CAAC;IACvC,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB,UAAU,CAAC,EAAE,mBAAmB,CAAA;CACjC,CAAC,CAAA;AAIF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,gEAA+B,CAAA;AACxD,eAAO,MAAM,aAAa;;;;OAAyC,CAAA"}
@@ -1,8 +1,22 @@
1
- import { type Variable } from '@scalar/api-client';
1
+ import type { Spec } from '@scalar/oas-utils';
2
2
  declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<{
3
- value?: Variable[] | undefined;
3
+ /**
4
+ * The specification to get the servers from
5
+ */
6
+ specification?: Spec | undefined;
7
+ /**
8
+ * The fallback server URL to use if no servers are found in the specification
9
+ */
10
+ defaultServerUrl?: string | undefined;
4
11
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<{
5
- value?: Variable[] | undefined;
12
+ /**
13
+ * The specification to get the servers from
14
+ */
15
+ specification?: Spec | undefined;
16
+ /**
17
+ * The fallback server URL to use if no servers are found in the specification
18
+ */
19
+ defaultServerUrl?: string | undefined;
6
20
  }>>>, {}, {}>;
7
21
  export default _default;
8
22
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
@@ -14,4 +28,4 @@ type __VLS_TypePropsToOption<T> = {
14
28
  required: true;
15
29
  };
16
30
  };
17
- //# sourceMappingURL=ServerVariables.vue.d.ts.map
31
+ //# sourceMappingURL=BaseUrl.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseUrl.vue.d.ts","sourceRoot":"","sources":["../../../src/features/BaseUrl/BaseUrl.vue"],"names":[],"mappings":"AA2HA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;;IAU3C;;OAEG;;IAEH;;OAEG;;;IANH;;OAEG;;IAEH;;OAEG;;;AA+JL,wBAMG;AAOH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAC5D,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { defineComponent as b, ref as S, watch as c, openBlock as U, createBlock as g, unref as u } from "vue";
2
+ import { useServerStore as j } from "@scalar/api-client";
3
+ import O from "./ServerForm.vue.js";
4
+ import { getServers as _ } from "./utils/getServers.js";
5
+ const k = /* @__PURE__ */ b({
6
+ __name: "BaseUrl",
7
+ props: {
8
+ specification: {},
9
+ defaultServerUrl: {}
10
+ },
11
+ setup(f) {
12
+ const i = f, { server: s, setServer: o } = j(), t = S(0);
13
+ c(
14
+ t,
15
+ () => o({
16
+ selectedServer: t.value
17
+ }),
18
+ {
19
+ immediate: !0
20
+ }
21
+ ), c(
22
+ () => i.specification,
23
+ () => {
24
+ var e;
25
+ const r = _(i.specification, {
26
+ defaultServerUrl: i.defaultServerUrl
27
+ });
28
+ o({
29
+ servers: r,
30
+ variables: {
31
+ // Set the initial values for the variables
32
+ ...m(
33
+ ((e = r[t.value]) == null ? void 0 : e.variables) ?? {}
34
+ ),
35
+ // Don’t overwrite existing values, but filter out non-existing variables
36
+ ...p(
37
+ s.variables,
38
+ r[t.value]
39
+ )
40
+ }
41
+ });
42
+ },
43
+ { deep: !0, immediate: !0 }
44
+ );
45
+ function m(r) {
46
+ return Object.fromEntries(
47
+ Object.entries(r ?? {}).map(([e, a]) => {
48
+ var n, l, v;
49
+ return [
50
+ e,
51
+ // 1) Default
52
+ ((n = a.default) == null ? void 0 : n.toString()) ?? // 2) First enum value
53
+ ((v = (l = a.enum) == null ? void 0 : l[0]) == null ? void 0 : v.toString()) ?? // 3) Empty string
54
+ ""
55
+ ];
56
+ })
57
+ );
58
+ }
59
+ function p(r, e) {
60
+ return Object.fromEntries(
61
+ Object.entries(r).filter(
62
+ ([a]) => a in (e.variables ?? {})
63
+ )
64
+ );
65
+ }
66
+ function d(r, e) {
67
+ o({
68
+ variables: {
69
+ ...s.variables,
70
+ [r]: e
71
+ }
72
+ });
73
+ }
74
+ return (r, e) => (U(), g(O, {
75
+ selected: t.value,
76
+ servers: u(s).servers,
77
+ variables: u(s).variables,
78
+ "onUpdate:selected": e[0] || (e[0] = (a) => {
79
+ t.value = a;
80
+ }),
81
+ "onUpdate:variable": d
82
+ }, null, 8, ["selected", "servers", "variables"]));
83
+ }
84
+ });
85
+ export {
86
+ k as default
87
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./BaseUrl.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1,41 @@
1
+ import type { Server, ServerVariableValues } from './types';
2
+ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<{
3
+ selected?: string | number | undefined;
4
+ servers?: Server[] | undefined;
5
+ variables?: ServerVariableValues | undefined;
6
+ }>, {
7
+ selected: number;
8
+ }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
+ "update:selected": (v: number) => void;
10
+ "update:variable": (name: string, value: string) => void;
11
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
12
+ selected?: string | number | undefined;
13
+ servers?: Server[] | undefined;
14
+ variables?: ServerVariableValues | undefined;
15
+ }>, {
16
+ selected: number;
17
+ }>>> & {
18
+ "onUpdate:variable"?: ((name: string, value: string) => any) | undefined;
19
+ "onUpdate:selected"?: ((v: number) => any) | undefined;
20
+ }, {
21
+ selected: string | number;
22
+ }, {}>;
23
+ export default _default;
24
+ type __VLS_WithDefaults<P, D> = {
25
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
26
+ default: D[K];
27
+ }> : P[K];
28
+ };
29
+ type __VLS_Prettify<T> = {
30
+ [K in keyof T]: T[K];
31
+ } & {};
32
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
33
+ type __VLS_TypePropsToOption<T> = {
34
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
35
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
36
+ } : {
37
+ type: import('vue').PropType<T[K]>;
38
+ required: true;
39
+ };
40
+ };
41
+ //# sourceMappingURL=ServerForm.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerForm.vue.d.ts","sourceRoot":"","sources":["../../../src/features/BaseUrl/ServerForm.vue"],"names":[],"mappings":"AAoHA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;;;;;;;;;;;;;;;;;;;;;;AA8K3D,wBAOG;AAOH,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAC7C,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KAAC,CAAC,GACvC,CAAC,CAAC,CAAC,CAAC;CACP,CAAC;AAEN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AAExD,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAC5D,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import o from "./ServerForm.vue2.js";
2
+ /* empty css */
3
+ import r from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const p = /* @__PURE__ */ r(o, [["__scopeId", "data-v-1bd31bc3"]]);
5
+ export {
6
+ p as default
7
+ };
@@ -0,0 +1,66 @@
1
+ import { defineComponent as S, toRef as I, computed as k, openBlock as c, createElementBlock as u, createElementVNode as t, createVNode as o, withCtx as w, unref as C, createCommentVNode as p, pushScopeId as N, popScopeId as U } from "vue";
2
+ import { ScalarMarkdown as V } from "@scalar/components";
3
+ import B from "./ServerUrl.vue.js";
4
+ import R from "./ServerUrlSelect.vue.js";
5
+ import g from "./ServerVariablesForm.vue.js";
6
+ const y = (r) => (N("data-v-1bd31bc3"), r = r(), U(), r), E = { key: 0 }, F = /* @__PURE__ */ y(() => /* @__PURE__ */ t("span", { class: "server-form-title" }, "Base URL", -1)), L = { class: "server-form" }, M = { class: "server-form-container" }, $ = { class: "server-item" }, j = {
7
+ key: 0,
8
+ muted: ""
9
+ }, q = { class: "description" }, H = /* @__PURE__ */ S({
10
+ __name: "ServerForm",
11
+ props: {
12
+ selected: { default: 0 },
13
+ servers: {},
14
+ variables: {}
15
+ },
16
+ emits: ["update:selected", "update:variable"],
17
+ setup(r, { emit: m }) {
18
+ const i = r, f = m, l = I(Number(i.selected)), b = (e) => {
19
+ const s = parseInt(e, 10);
20
+ f("update:selected", s), l.value = s;
21
+ }, a = k(() => {
22
+ var e;
23
+ return (e = i.servers) == null ? void 0 : e[l.value];
24
+ });
25
+ return (e, s) => {
26
+ var v, d, n;
27
+ return (v = e.servers) != null && v.length ? (c(), u("div", E, [
28
+ F,
29
+ t("div", L, [
30
+ t("div", M, [
31
+ t("div", $, [
32
+ o(R, {
33
+ options: e.servers,
34
+ value: l.value,
35
+ onChange: b
36
+ }, {
37
+ default: w(() => [
38
+ o(B, {
39
+ server: a.value,
40
+ variables: e.variables
41
+ }, null, 8, ["server", "variables"])
42
+ ]),
43
+ _: 1
44
+ }, 8, ["options", "value"])
45
+ ]),
46
+ o(g, {
47
+ values: e.variables,
48
+ variables: (d = a.value) == null ? void 0 : d.variables,
49
+ "onUpdate:variable": s[0] || (s[0] = (_, h) => e.$emit("update:variable", _, h))
50
+ }, null, 8, ["values", "variables"])
51
+ ])
52
+ ]),
53
+ (n = a.value) != null && n.description ? (c(), u("div", j, [
54
+ t("div", q, [
55
+ o(C(V), {
56
+ value: a.value.description
57
+ }, null, 8, ["value"])
58
+ ])
59
+ ])) : p("", !0)
60
+ ])) : p("", !0);
61
+ };
62
+ }
63
+ });
64
+ export {
65
+ H as default
66
+ };
@@ -1,10 +1,10 @@
1
- import { type Server, type Variable } from '@scalar/api-client';
1
+ import type { Server, ServerVariableValues } from './types';
2
2
  declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<{
3
- value?: Server | undefined;
4
- variables?: Variable[] | undefined;
3
+ server?: Server | undefined;
4
+ variables?: ServerVariableValues | undefined;
5
5
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<{
6
- value?: Server | undefined;
7
- variables?: Variable[] | undefined;
6
+ server?: Server | undefined;
7
+ variables?: ServerVariableValues | undefined;
8
8
  }>>>, {}, {}>;
9
9
  export default _default;
10
10
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
@@ -16,4 +16,4 @@ type __VLS_TypePropsToOption<T> = {
16
16
  required: true;
17
17
  };
18
18
  };
19
- //# sourceMappingURL=ServerItem.vue.d.ts.map
19
+ //# sourceMappingURL=ServerUrl.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerUrl.vue.d.ts","sourceRoot":"","sources":["../../../src/features/BaseUrl/ServerUrl.vue"],"names":[],"mappings":"AA+DA,OAAO,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;;;;;;;;AAuE3D,wBAMG;AAOH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAC5D,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import r from "./ServerUrl.vue2.js";
2
+ /* empty css */
3
+ /* empty css */
4
+ import o from "../../_virtual/_plugin-vue_export-helper.js";
5
+ const _ = /* @__PURE__ */ o(r, [["__scopeId", "data-v-01cb81b8"]]);
6
+ export {
7
+ _ as default
8
+ };