@scalar/api-client 2.13.0 → 2.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/libs/string-template.d.ts +2 -0
  3. package/dist/libs/string-template.d.ts.map +1 -1
  4. package/dist/style.css +1 -1
  5. package/dist/v2/blocks/operation-block/helpers/build-request-parameters.d.ts +33 -0
  6. package/dist/v2/blocks/operation-block/helpers/build-request-parameters.d.ts.map +1 -0
  7. package/dist/v2/blocks/operation-block/helpers/build-request-security.d.ts +18 -0
  8. package/dist/v2/blocks/operation-block/helpers/build-request-security.d.ts.map +1 -0
  9. package/dist/v2/blocks/operation-block/helpers/decode-buffer.d.ts +7 -0
  10. package/dist/v2/blocks/operation-block/helpers/decode-buffer.d.ts.map +1 -0
  11. package/dist/v2/blocks/operation-block/helpers/get-delimiter.d.ts +8 -0
  12. package/dist/v2/blocks/operation-block/helpers/get-delimiter.d.ts.map +1 -0
  13. package/dist/v2/blocks/operation-block/helpers/get-example.d.ts +4 -0
  14. package/dist/v2/blocks/operation-block/helpers/get-example.d.ts.map +1 -0
  15. package/dist/v2/blocks/request-block/components/RequestBody.vue.d.ts.map +1 -1
  16. package/dist/v2/blocks/request-block/components/RequestBody.vue.js +2 -2
  17. package/dist/v2/blocks/request-block/components/RequestBody.vue2.js +10 -9
  18. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.d.ts +2 -2
  19. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.d.ts.map +1 -1
  20. package/dist/v2/blocks/scalar-auth-selector-block/helpers/oauth.js +90 -75
  21. package/dist/v2/features/operation/Operation.vue.js +1 -1
  22. package/dist/v2/helpers/drag-handle-factory.d.ts.map +1 -1
  23. package/dist/v2/helpers/drag-handle-factory.js +72 -71
  24. package/dist/v2/hooks/use-sidebar-state.d.ts.map +1 -1
  25. package/dist/v2/hooks/use-sidebar-state.js +23 -19
  26. package/dist/views/Request/ResponseSection/ResponseEmpty.vue2.js +1 -1
  27. package/dist/views/Request/libs/oauth2.d.ts +2 -2
  28. package/dist/views/Request/libs/oauth2.d.ts.map +1 -1
  29. package/dist/views/Request/libs/oauth2.js +66 -53
  30. package/package.json +19 -19
@@ -1 +1 @@
1
- {"version":3,"file":"use-sidebar-state.d.ts","sourceRoot":"","sources":["../../../src/v2/hooks/use-sidebar-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAwB,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAA;AAChF,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,KAAK,CAAA;AAGrE,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,KAAK,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAA;IAC5D,kBAAkB,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,KAAK,cAAc,GAAG,SAAS,CAAA;CACjC,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,GAAI,8DAM7B;IACD,cAAc,EAAE,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IACvD,aAAa,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACnD,YAAY,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAClD,IAAI,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,MAAM,EAAE,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAC,CAAA;IAChD,WAAW,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CAClD,KAAG,qBAoOH,CAAA"}
1
+ {"version":3,"file":"use-sidebar-state.d.ts","sourceRoot":"","sources":["../../../src/v2/hooks/use-sidebar-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAwB,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAA;AAChF,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,KAAK,CAAA;AAGrE,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,KAAK,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAA;IAC5D,kBAAkB,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,UAAU,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,KAAK,cAAc,GAAG,SAAS,CAAA;CACjC,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,GAAI,8DAM7B;IACD,cAAc,EAAE,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IACvD,aAAa,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACnD,YAAY,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAClD,IAAI,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,MAAM,EAAE,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAC,CAAA;IAChD,WAAW,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CAClD,KAAG,qBAoOH,CAAA"}
@@ -1,19 +1,23 @@
1
1
  import { isDefined as h } from "@scalar/helpers/array/is-defined";
2
- import { createSidebarState as w, generateReverseIndex as b } from "@scalar/sidebar";
3
- import { getParentEntry as a } from "@scalar/workspace-store/navigation";
2
+ import { sortByOrder as w } from "@scalar/helpers/array/sort-by-order";
3
+ import { createSidebarState as b, generateReverseIndex as k } from "@scalar/sidebar";
4
+ import { getParentEntry as o } from "@scalar/workspace-store/navigation";
4
5
  import { computed as x, toValue as c, watch as f } from "vue";
5
- import { useRouter as R } from "vue-router";
6
- const U = ({
6
+ import { useRouter as O } from "vue-router";
7
+ const W = ({
7
8
  workspaceStore: d,
8
9
  documentSlug: y,
9
10
  path: E,
10
11
  method: S,
11
12
  exampleName: g
12
13
  }) => {
13
- const m = R(), u = x(() => {
14
+ const m = O(), u = x(() => {
14
15
  const e = c(d);
15
- return e ? (e.workspace["x-scalar-order"] ?? Object.keys(e.workspace.documents)).map((r) => e.workspace.documents[r]?.["x-scalar-navigation"]).filter(h) : [];
16
- }), n = w(u);
16
+ if (!e)
17
+ return [];
18
+ const t = e.workspace["x-scalar-order"] ?? Object.keys(e.workspace.documents);
19
+ return w(Object.keys(e.workspace.documents), t, (r) => r).map((r) => e.workspace.documents[r]?.["x-scalar-navigation"]).filter(h);
20
+ }), n = b(u);
17
21
  f(
18
22
  () => c(d),
19
23
  () => {
@@ -27,14 +31,14 @@ const U = ({
27
31
  document: e,
28
32
  path: t,
29
33
  method: r,
30
- example: o
31
- }) => JSON.stringify([e, t, r, o].filter(h)), i = x(
32
- () => b({
34
+ example: a
35
+ }) => JSON.stringify([e, t, r, a].filter(h)), i = x(
36
+ () => k({
33
37
  items: u.value,
34
38
  nestedKey: "children",
35
39
  filter: (e) => e.type === "document" || e.type === "operation" || e.type === "example",
36
40
  getId: (e) => {
37
- const t = a("document", e), r = a("operation", e);
41
+ const t = o("document", e), r = o("operation", e);
38
42
  return p({
39
43
  document: t?.name ?? "",
40
44
  path: r?.path,
@@ -68,11 +72,11 @@ const U = ({
68
72
  n.setExpanded(e, !n.isExpanded(e));
69
73
  return;
70
74
  }
71
- const r = t.children?.find((o) => o.type === "example");
75
+ const r = t.children?.find((a) => a.type === "example");
72
76
  return r ? (n.setSelected(r.id), n.setExpanded(r.id, !0)) : n.setSelected(e), m.push({
73
77
  name: "example",
74
78
  params: {
75
- documentSlug: a("document", t)?.name,
79
+ documentSlug: o("document", t)?.name,
76
80
  pathEncoded: encodeURIComponent(t.path),
77
81
  method: t.method,
78
82
  exampleName: r?.name ?? "default"
@@ -81,11 +85,11 @@ const U = ({
81
85
  }
82
86
  if (t.type === "example") {
83
87
  n.setSelected(e), n.setExpanded(e, !0);
84
- const r = a("operation", t);
88
+ const r = o("operation", t);
85
89
  return m.push({
86
90
  name: "example",
87
91
  params: {
88
- documentSlug: a("document", t)?.name,
92
+ documentSlug: o("document", t)?.name,
89
93
  pathEncoded: encodeURIComponent(r?.path ?? ""),
90
94
  method: r?.method,
91
95
  exampleName: t.name
@@ -96,14 +100,14 @@ const U = ({
96
100
  return m.push({
97
101
  name: "document.overview",
98
102
  params: {
99
- documentSlug: a("document", t)?.name
103
+ documentSlug: o("document", t)?.name
100
104
  }
101
105
  });
102
106
  n.setExpanded(e, !n.isExpanded(e));
103
107
  };
104
108
  return f(
105
109
  [() => c(d), y, E, S, g],
106
- ([e, t, r, o, I]) => {
110
+ ([e, t, r, a, I]) => {
107
111
  if (!t) {
108
112
  n.setSelected(null);
109
113
  return;
@@ -111,7 +115,7 @@ const U = ({
111
115
  const s = l({
112
116
  document: t,
113
117
  path: r,
114
- method: o,
118
+ method: a,
115
119
  example: I
116
120
  });
117
121
  s && (n.setSelected(s.id), n.setExpanded(s.id, !0));
@@ -126,5 +130,5 @@ const U = ({
126
130
  };
127
131
  };
128
132
  export {
129
- U as useSidebarState
133
+ W as useSidebarState
130
134
  };
@@ -33,7 +33,7 @@ const W = { class: "flex-center relative flex flex-1 flex-col gap-6 p-2 capitali
33
33
  }));
34
34
  }, f = (o) => {
35
35
  o?.createNew && g.name === "request" && d();
36
- }, v = "2.13.0";
36
+ }, v = "2.14.1";
37
37
  return q(() => a.hotKeys.on(f)), R(() => a.hotKeys.off(f)), (o, e) => (i(), l("div", W, [
38
38
  s("div", {
39
39
  class: y(["flex h-[calc(100%_-_50px)] flex-col items-center justify-center", {
@@ -27,10 +27,10 @@ proxyUrl?: string) => Promise<ErrorResponse<string>>;
27
27
  * Makes the BE authorization call to grab the token server to server
28
28
  * Used for clientCredentials and authorizationCode
29
29
  */
30
- export declare const authorizeServers: (flow: NonImplicitFlow, scopes: string, { code, pkce, proxyUrl, }?: {
30
+ export declare const authorizeServers: (flow: NonImplicitFlow, scopes: string, { code, pkce, proxyUrl, }: {
31
31
  code?: string;
32
32
  pkce?: PKCEState | null;
33
33
  proxyUrl?: string | undefined;
34
- }) => Promise<ErrorResponse<string>>;
34
+ } | undefined, activeServer: Server | undefined) => Promise<ErrorResponse<string>>;
35
35
  export {};
36
36
  //# sourceMappingURL=oauth2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth2.d.ts","sourceRoot":"","sources":["../../../../src/views/Request/libs/oauth2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAIzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,qDAAqD;AACrD,KAAK,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAA;AAEhE,KAAK,SAAS,GAAG;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAA;AAgBD;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAU,UAAU,MAAM,EAAE,UAAU,SAAS,GAAG,OAAO,KAAG,OAAO,CAAC,MAAM,CAkB3G,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,UAAU;AAChB,wEAAwE;AACxE,cAAc,MAAM;AACpB,kCAAkC;AAClC,WAAW,MAAM,KAChB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CA+J/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,eAAe,EACrB,QAAQ,MAAM,EACd,4BAIG;IACD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzB,KACL,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CA0F/B,CAAA"}
1
+ {"version":3,"file":"oauth2.d.ts","sourceRoot":"","sources":["../../../../src/views/Request/libs/oauth2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAIzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,qDAAqD;AACrD,KAAK,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAA;AAEhE,KAAK,SAAS,GAAG;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAA;AAgBD;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAU,UAAU,MAAM,EAAE,UAAU,SAAS,GAAG,OAAO,KAAG,OAAO,CAAC,MAAM,CAkB3G,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,UAAU;AAChB,wEAAwE;AACxE,cAAc,MAAM;AACpB,kCAAkC;AAClC,WAAW,MAAM,KAChB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CA4K/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,eAAe,EACrB,QAAQ,MAAM,EACd,2BAIG;IACD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B,YAAK,EACN,cAAc,MAAM,GAAG,SAAS,KAC/B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CA2F/B,CAAA"}
@@ -1,100 +1,113 @@
1
- import { shouldUseProxy as S } from "@scalar/oas-utils/helpers";
2
- import { fromUint8Array as P, encode as k } from "js-base64";
3
- const w = () => {
1
+ import { makeUrlAbsolute as x } from "@scalar/helpers/url/make-url-absolute";
2
+ import { shouldUseProxy as U } from "@scalar/oas-utils/helpers";
3
+ import { fromUint8Array as S, encode as w } from "js-base64";
4
+ const A = () => {
4
5
  const e = new Uint8Array(32);
5
- return crypto.getRandomValues(e), P(e, !0);
6
- }, U = async (e, l) => {
7
- if (l === "plain")
6
+ return crypto.getRandomValues(e), S(e, !0);
7
+ }, b = async (e, c) => {
8
+ if (c === "plain")
8
9
  return e;
9
10
  if (typeof crypto?.subtle?.digest != "function")
10
11
  return console.warn("SHA-256 is only supported when using https, using a plain text code challenge instead."), e;
11
- const n = new TextEncoder().encode(e), c = await crypto.subtle.digest("SHA-256", n);
12
- return P(new Uint8Array(c), !0);
13
- }, b = async (e, l, u) => {
12
+ const n = new TextEncoder().encode(e), o = await crypto.subtle.digest("SHA-256", n);
13
+ return S(new Uint8Array(o), !0);
14
+ }, T = async (e, c, u) => {
14
15
  try {
15
16
  if (!e)
16
17
  return [new Error("Flow not found"), null];
17
18
  const n = e.selectedScopes.join(" ");
18
19
  if (e.type === "clientCredentials" || e.type === "password")
19
- return x(e, n, {
20
- proxyUrl: u
21
- });
22
- const c = (Math.random() + 1).toString(36).substring(2, 10), t = new URL(e.authorizationUrl);
23
- let m = null;
20
+ return k(
21
+ e,
22
+ n,
23
+ {
24
+ proxyUrl: u
25
+ },
26
+ c
27
+ );
28
+ const o = (Math.random() + 1).toString(36).substring(2, 10), _ = x(e.authorizationUrl, {
29
+ baseUrl: c?.url
30
+ }), t = new URL(_);
31
+ let y = null;
24
32
  if (e.type === "implicit")
25
33
  t.searchParams.set("response_type", "token");
26
34
  else if (e.type === "authorizationCode" && (t.searchParams.set("response_type", "code"), e["x-usePkce"] !== "no")) {
27
- const r = w(), s = await U(r, e["x-usePkce"]);
28
- m = {
35
+ const r = A(), a = await b(r, e["x-usePkce"]);
36
+ y = {
29
37
  codeVerifier: r,
30
- codeChallenge: s,
38
+ codeChallenge: a,
31
39
  codeChallengeMethod: e["x-usePkce"] === "SHA-256" ? "S256" : "plain"
32
- }, t.searchParams.set("code_challenge", s), t.searchParams.set("code_challenge_method", m.codeChallengeMethod);
40
+ }, t.searchParams.set("code_challenge", a), t.searchParams.set("code_challenge_method", y.codeChallengeMethod);
33
41
  }
34
42
  if (e["x-scalar-redirect-uri"].startsWith("/")) {
35
- const r = l.url || window.location.origin + window.location.pathname, s = new URL(e["x-scalar-redirect-uri"], r).toString();
36
- t.searchParams.set("redirect_uri", s);
43
+ const r = c?.url || window.location.origin + window.location.pathname, a = x(e["x-scalar-redirect-uri"], { baseUrl: r });
44
+ t.searchParams.set("redirect_uri", a);
37
45
  } else
38
46
  t.searchParams.set("redirect_uri", e["x-scalar-redirect-uri"]);
39
47
  e["x-scalar-security-query"] && Object.keys(e["x-scalar-security-query"]).forEach((r) => {
40
- const s = e["x-scalar-security-query"]?.[r];
41
- s && t.searchParams.set(r, s);
42
- }), t.searchParams.set("client_id", e["x-scalar-client-id"]), t.searchParams.set("state", c), n && t.searchParams.set("scope", n);
43
- const a = window.open(t, "openAuth2Window", "left=100,top=100,width=800,height=600");
44
- return a ? new Promise((r) => {
45
- const s = setInterval(() => {
46
- let o = null, d = null, h = null, y = null;
48
+ const a = e["x-scalar-security-query"]?.[r];
49
+ a && t.searchParams.set(r, a);
50
+ }), t.searchParams.set("client_id", e["x-scalar-client-id"]), t.searchParams.set("state", o), n && t.searchParams.set("scope", n);
51
+ const s = window.open(t, "openAuth2Window", "left=100,top=100,width=800,height=600");
52
+ return s ? new Promise((r) => {
53
+ const a = setInterval(() => {
54
+ let h = null, l = null, d = null, m = null;
47
55
  try {
48
- const i = new URL(a.location.href).searchParams, _ = e["x-tokenName"] || "access_token";
49
- o = i.get(_), d = i.get("code"), h = i.get("error"), y = i.get("error_description");
50
- const g = new URLSearchParams(a.location.href.split("#")[1]);
51
- o ||= g.get(_), d ||= g.get("code"), h ||= g.get("error"), y ||= g.get("error_description");
56
+ const i = new URL(s.location.href).searchParams, P = e["x-tokenName"] || "access_token";
57
+ h = i.get(P), l = i.get("code"), d = i.get("error"), m = i.get("error_description");
58
+ const g = new URLSearchParams(s.location.href.split("#")[1]);
59
+ h ||= g.get(P), l ||= g.get("code"), d ||= g.get("error"), m ||= g.get("error_description");
52
60
  } catch {
53
61
  }
54
- if (a.closed || o || d || h)
55
- if (clearInterval(s), a.close(), h)
56
- r([new Error(`OAuth error: ${h}${y ? ` (${y})` : ""}`), null]);
57
- else if (o) {
58
- const i = a.location.href.match(/state=([^&]*)/)?.[1];
59
- r(i === c ? [null, o] : [new Error("State mismatch"), null]);
60
- } else d ? new URL(a.location.href).searchParams.get("state") === c ? x(e, n, {
61
- code: d,
62
- pkce: m,
63
- proxyUrl: u
64
- }).then(r) : r([new Error("State mismatch"), null]) : (clearInterval(s), r([new Error("Window was closed without granting authorization"), null]));
62
+ if (s.closed || h || l || d)
63
+ if (clearInterval(a), s.close(), d)
64
+ r([new Error(`OAuth error: ${d}${m ? ` (${m})` : ""}`), null]);
65
+ else if (h) {
66
+ const i = s.location.href.match(/state=([^&]*)/)?.[1];
67
+ r(i === o ? [null, h] : [new Error("State mismatch"), null]);
68
+ } else l ? new URL(s.location.href).searchParams.get("state") === o ? k(
69
+ e,
70
+ n,
71
+ {
72
+ code: l,
73
+ pkce: y,
74
+ proxyUrl: u
75
+ },
76
+ c
77
+ ).then(r) : r([new Error("State mismatch"), null]) : (clearInterval(a), r([new Error("Window was closed without granting authorization"), null]));
65
78
  }, 200);
66
79
  }) : [new Error("Failed to open auth window"), null];
67
80
  } catch {
68
81
  return [new Error("Failed to authorize oauth2 flow"), null];
69
82
  }
70
- }, x = async (e, l, {
83
+ }, k = async (e, c, {
71
84
  code: u,
72
85
  pkce: n,
73
- proxyUrl: c
74
- } = {}) => {
86
+ proxyUrl: o
87
+ } = {}, _) => {
75
88
  if (!e)
76
89
  return [new Error("OAuth2 flow was not defined"), null];
77
90
  const t = new URLSearchParams();
78
- t.set("client_id", e["x-scalar-client-id"]), l && (e.type === "clientCredentials" || e.type === "password") && t.set("scope", l), e.clientSecret && (!e["x-scalar-credentials-location"] || e["x-scalar-credentials-location"] === "body") && t.set("client_secret", e.clientSecret), "x-scalar-redirect-uri" in e && e["x-scalar-redirect-uri"] && t.set("redirect_uri", e["x-scalar-redirect-uri"]), u ? (t.set("code", u), t.set("grant_type", "authorization_code"), n && t.set("code_verifier", n.codeVerifier)) : e.type === "password" ? (t.set("grant_type", "password"), t.set("username", e.username), t.set("password", e.password)) : t.set("grant_type", "client_credentials"), e["x-scalar-security-body"] && Object.entries(e["x-scalar-security-body"]).forEach(([p, a]) => {
79
- a && t.set(p, a);
91
+ t.set("client_id", e["x-scalar-client-id"]), c && (e.type === "clientCredentials" || e.type === "password") && t.set("scope", c), e.clientSecret && (!e["x-scalar-credentials-location"] || e["x-scalar-credentials-location"] === "body") && t.set("client_secret", e.clientSecret), "x-scalar-redirect-uri" in e && e["x-scalar-redirect-uri"] && t.set("redirect_uri", e["x-scalar-redirect-uri"]), u ? (t.set("code", u), t.set("grant_type", "authorization_code"), n && t.set("code_verifier", n.codeVerifier)) : e.type === "password" ? (t.set("grant_type", "password"), t.set("username", e.username), t.set("password", e.password)) : t.set("grant_type", "client_credentials"), e["x-scalar-security-body"] && Object.entries(e["x-scalar-security-body"]).forEach(([p, s]) => {
92
+ s && t.set(p, s);
80
93
  });
81
94
  try {
82
95
  const p = {
83
96
  "Content-Type": "application/x-www-form-urlencoded"
84
97
  };
85
- e.clientSecret && (!e["x-scalar-credentials-location"] || e["x-scalar-credentials-location"] === "header") && (p.Authorization = `Basic ${k(`${e["x-scalar-client-id"]}:${e.clientSecret}`)}`);
86
- const r = S(c, e.tokenUrl) ? `${c}?${new URLSearchParams([["scalar_url", e.tokenUrl]]).toString()}` : e.tokenUrl, o = await (await fetch(r, {
98
+ e.clientSecret && (!e["x-scalar-credentials-location"] || e["x-scalar-credentials-location"] === "header") && (p.Authorization = `Basic ${w(`${e["x-scalar-client-id"]}:${e.clientSecret}`)}`);
99
+ const r = x(e.tokenUrl, { baseUrl: _?.url }), a = U(o, r) ? `${o}?${new URLSearchParams([["scalar_url", r]]).toString()}` : r, l = await (await fetch(a, {
87
100
  method: "POST",
88
101
  headers: p,
89
102
  body: t
90
103
  })).json(), d = e["x-tokenName"] || "access_token";
91
- return [null, o[d]];
104
+ return [null, l[d]];
92
105
  } catch {
93
106
  return [new Error("Failed to get an access token. Please check your credentials."), null];
94
107
  }
95
108
  };
96
109
  export {
97
- b as authorizeOauth2,
98
- x as authorizeServers,
99
- U as generateCodeChallenge
110
+ T as authorizeOauth2,
111
+ k as authorizeServers,
112
+ b as generateCodeChallenge
100
113
  };
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "rest",
19
19
  "testing"
20
20
  ],
21
- "version": "2.13.0",
21
+ "version": "2.14.1",
22
22
  "engines": {
23
23
  "node": ">=20"
24
24
  },
@@ -319,28 +319,28 @@
319
319
  "vue": "^3.5.21",
320
320
  "vue-router": "4.6.2",
321
321
  "whatwg-mimetype": "^4.0.0",
322
- "yaml": "2.8.0",
323
- "zod": "4.1.11",
324
- "@scalar/components": "0.16.5",
322
+ "yaml": "^2.8.0",
323
+ "zod": "^4.1.11",
324
+ "@scalar/analytics-client": "1.0.1",
325
+ "@scalar/components": "0.16.7",
325
326
  "@scalar/draggable": "0.3.0",
326
- "@scalar/analytics-client": "1.0.0",
327
- "@scalar/helpers": "0.1.3",
327
+ "@scalar/helpers": "0.2.1",
328
328
  "@scalar/icons": "0.5.0",
329
- "@scalar/import": "0.4.36",
330
- "@scalar/oas-utils": "0.6.5",
331
- "@scalar/object-utils": "1.2.13",
332
- "@scalar/json-magic": "0.8.3",
333
- "@scalar/openapi-parser": "0.23.4",
334
- "@scalar/openapi-types": "0.5.2",
335
- "@scalar/postman-to-openapi": "0.3.46",
336
- "@scalar/sidebar": "0.5.0",
337
- "@scalar/snippetz": "0.5.4",
338
- "@scalar/types": "0.5.1",
329
+ "@scalar/import": "0.4.38",
330
+ "@scalar/json-magic": "0.8.5",
331
+ "@scalar/oas-utils": "0.6.7",
332
+ "@scalar/object-utils": "1.2.15",
333
+ "@scalar/openapi-types": "0.5.3",
334
+ "@scalar/openapi-parser": "0.23.6",
335
+ "@scalar/postman-to-openapi": "0.3.48",
336
+ "@scalar/sidebar": "0.5.2",
337
+ "@scalar/snippetz": "0.5.5",
339
338
  "@scalar/themes": "0.13.25",
340
- "@scalar/use-codemirror": "0.12.49",
341
- "@scalar/use-hooks": "0.3.1",
339
+ "@scalar/types": "0.5.2",
340
+ "@scalar/use-hooks": "0.3.3",
342
341
  "@scalar/use-toasts": "0.9.1",
343
- "@scalar/workspace-store": "0.22.0"
342
+ "@scalar/workspace-store": "0.22.2",
343
+ "@scalar/use-codemirror": "0.13.1"
344
344
  },
345
345
  "devDependencies": {
346
346
  "@tailwindcss/vite": "^4.1.7",