@scalar/oas-utils 0.2.120 → 0.2.122

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 (40) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/diff/diff.d.ts.map +1 -1
  3. package/dist/diff/diff.js +2 -1
  4. package/dist/helpers/createHash.d.ts.map +1 -1
  5. package/dist/helpers/createHash.js +2 -1
  6. package/dist/helpers/ensure-protocol.d.ts.map +1 -1
  7. package/dist/helpers/ensure-protocol.js +2 -1
  8. package/dist/helpers/fetchSpecFromUrl.d.ts.map +1 -1
  9. package/dist/helpers/fetchSpecFromUrl.js +3 -3
  10. package/dist/helpers/iterateTitle.d.ts.map +1 -1
  11. package/dist/helpers/iterateTitle.js +2 -1
  12. package/dist/helpers/json2xml.d.ts.map +1 -1
  13. package/dist/helpers/json2xml.js +13 -8
  14. package/dist/helpers/merge-urls.d.ts.map +1 -1
  15. package/dist/helpers/merge-urls.js +5 -3
  16. package/dist/helpers/parse.d.ts.map +1 -1
  17. package/dist/helpers/parse.js +12 -6
  18. package/dist/helpers/prettyPrintJson.js +1 -1
  19. package/dist/helpers/redirectToProxy.d.ts.map +1 -1
  20. package/dist/helpers/redirectToProxy.js +6 -3
  21. package/dist/helpers/replaceVariables.d.ts.map +1 -1
  22. package/dist/helpers/replaceVariables.js +1 -3
  23. package/dist/helpers/schema-model.js +2 -1
  24. package/dist/migrations/local-storage.d.ts.map +1 -1
  25. package/dist/migrations/local-storage.js +6 -3
  26. package/dist/migrations/migrator.d.ts.map +1 -1
  27. package/dist/migrations/migrator.js +10 -5
  28. package/dist/migrations/semver.d.ts.map +1 -1
  29. package/dist/migrations/semver.js +9 -5
  30. package/dist/migrations/v-2.1.0/migration.d.ts.map +1 -1
  31. package/dist/migrations/v-2.1.0/migration.js +21 -11
  32. package/dist/migrations/v-2.2.0/migration.d.ts.map +1 -1
  33. package/dist/migrations/v-2.2.0/migration.js +4 -2
  34. package/dist/spec-getters/getExampleFromSchema.d.ts.map +1 -1
  35. package/dist/spec-getters/getExampleFromSchema.js +6 -8
  36. package/dist/spec-getters/getParametersFromOperation.d.ts.map +1 -1
  37. package/dist/spec-getters/getParametersFromOperation.js +4 -2
  38. package/dist/transforms/import-spec.d.ts.map +1 -1
  39. package/dist/transforms/import-spec.js +32 -17
  40. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @scalar/oas-utils
2
2
 
3
+ ## 0.2.122
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [543a16c]
8
+ - Updated dependencies [57e96a0]
9
+ - @scalar/types@0.1.3
10
+ - @scalar/themes@0.9.81
11
+
12
+ ## 0.2.121
13
+
14
+ ### Patch Changes
15
+
16
+ - 0f13162: chore: enable more Biome flags, apply linter fixes
17
+ - 0212daa: fix(api-client): client not being set without scope
18
+ - Updated dependencies [7a8965c]
19
+ - Updated dependencies [49dffff]
20
+ - @scalar/types@0.1.2
21
+ - @scalar/themes@0.9.80
22
+
3
23
  ## 0.2.120
4
24
 
5
25
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/diff/diff.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,KAAK;;;;CAID,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAA;AAE/D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAqC5C"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/diff/diff.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,KAAK;;;;CAID,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAA;AAE/D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAsC5C"}
package/dist/diff/diff.js CHANGED
@@ -19,11 +19,12 @@ function diffSpec(a, b) {
19
19
  .slice(0, 3)
20
20
  .map((p) => String(p).replaceAll('/', '~1'))
21
21
  .join('/');
22
- if (!requestChanges[key])
22
+ if (!requestChanges[key]) {
23
23
  requestChanges[key] = {
24
24
  type: types[d.type],
25
25
  mutations: [],
26
26
  };
27
+ }
27
28
  if (d.type === 'CHANGE') {
28
29
  requestChanges[key].mutations.push({
29
30
  ...d,
@@ -1 +1 @@
1
- {"version":3,"file":"createHash.d.ts","sourceRoot":"","sources":["../../src/helpers/createHash.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,MAa3C,CAAA"}
1
+ {"version":3,"file":"createHash.d.ts","sourceRoot":"","sources":["../../src/helpers/createHash.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,MAe3C,CAAA"}
@@ -7,8 +7,9 @@ const createHash = (input) => {
7
7
  let chr = 0;
8
8
  let hash = 0;
9
9
  let i = 0;
10
- if (!input?.length)
10
+ if (!input?.length) {
11
11
  return hash;
12
+ }
12
13
  for (i = 0; i < input.length; i++) {
13
14
  chr = input.charCodeAt(i);
14
15
  hash = (hash << 5) - hash + chr;
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-protocol.d.ts","sourceRoot":"","sources":["../../src/helpers/ensure-protocol.ts"],"names":[],"mappings":"AAEA,uCAAuC;AACvC,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKlD"}
1
+ {"version":3,"file":"ensure-protocol.d.ts","sourceRoot":"","sources":["../../src/helpers/ensure-protocol.ts"],"names":[],"mappings":"AAEA,uCAAuC;AACvC,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOlD"}
@@ -2,8 +2,9 @@ import { REGEX } from './regexHelpers.js';
2
2
 
3
3
  /** Ensure URL has a protocol prefix */
4
4
  function ensureProtocol(url) {
5
- if (REGEX.PROTOCOL.test(url))
5
+ if (REGEX.PROTOCOL.test(url)) {
6
6
  return url;
7
+ }
7
8
  // Default to http if no protocol is specified
8
9
  return `http://${url.replace(/^\//, '')}`;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetchSpecFromUrl.d.ts","sourceRoot":"","sources":["../../src/helpers/fetchSpecFromUrl.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BpG"}
1
+ {"version":3,"file":"fetchSpecFromUrl.d.ts","sourceRoot":"","sources":["../../src/helpers/fetchSpecFromUrl.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BpG"}
@@ -27,10 +27,10 @@ async function fetchSpecFromUrl(url, proxy, beautify = true) {
27
27
  throw new Error(`Failed to fetch the specification (Status: ${response.status})`);
28
28
  }
29
29
  // If it’s JSON, make it pretty
30
- if (beautify)
30
+ if (beautify) {
31
31
  return formatJsonOrYamlString(await response.text());
32
- else
33
- return await response.text();
32
+ }
33
+ return await response.text();
34
34
  }
35
35
 
36
36
  export { fetchSpecFromUrl };
@@ -1 +1 @@
1
- {"version":3,"file":"iterateTitle.d.ts","sourceRoot":"","sources":["../../src/helpers/iterateTitle.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,YAAY,UAAW,MAAM,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,yBAAqB,MAW3G,CAAA"}
1
+ {"version":3,"file":"iterateTitle.d.ts","sourceRoot":"","sources":["../../src/helpers/iterateTitle.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,YAAY,UAAW,MAAM,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,yBAAqB,MAa3G,CAAA"}
@@ -3,8 +3,9 @@
3
3
  */
4
4
  const iterateTitle = (title, checkDuplicates, separator = ' #') => {
5
5
  // If the title is not a duplicate return
6
- if (!checkDuplicates(title))
6
+ if (!checkDuplicates(title)) {
7
7
  return title;
8
+ }
8
9
  const split = title.split(separator);
9
10
  const newTitle = split.length > 1
10
11
  ? `${split.slice(0, -1).join()}${separator}${Number(split.at(-1)) + 1}`
@@ -1 +1 @@
1
- {"version":3,"file":"json2xml.d.ts","sourceRoot":"","sources":["../../src/helpers/json2xml.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,UAyC/D"}
1
+ {"version":3,"file":"json2xml.d.ts","sourceRoot":"","sources":["../../src/helpers/json2xml.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,UAgD/D"}
@@ -4,31 +4,36 @@
4
4
  function json2xml(data, tab) {
5
5
  const toXml = (value, key, indentation) => {
6
6
  let xml = '';
7
- if (value instanceof Array) {
7
+ if (Array.isArray(value)) {
8
8
  for (let i = 0, n = value.length; i < n; i++) {
9
9
  xml += indentation + toXml(value[i], key, indentation + '\t') + '\n';
10
10
  }
11
11
  }
12
- else if (typeof value == 'object') {
12
+ else if (typeof value === 'object') {
13
13
  let hasChild = false;
14
14
  xml += indentation + '<' + key;
15
15
  for (const m in value) {
16
- if (m.charAt(0) == '@')
16
+ if (m.charAt(0) === '@') {
17
17
  xml += ' ' + m.substr(1) + '="' + value[m].toString() + '"';
18
- else
18
+ }
19
+ else {
19
20
  hasChild = true;
21
+ }
20
22
  }
21
23
  xml += hasChild ? '>' : '/>';
22
24
  if (hasChild) {
23
25
  for (const m in value) {
24
- if (m == '#text')
26
+ if (m === '#text') {
25
27
  xml += value[m];
26
- else if (m == '#cdata')
28
+ }
29
+ else if (m === '#cdata') {
27
30
  xml += '<![CDATA[' + value[m] + ']]>';
28
- else if (m.charAt(0) != '@')
31
+ }
32
+ else if (m.charAt(0) !== '@') {
29
33
  xml += toXml(value[m], m, indentation + '\t');
34
+ }
30
35
  }
31
- xml += (xml.charAt(xml.length - 1) == '\n' ? indentation : '') + '</' + key + '>';
36
+ xml += (xml.charAt(xml.length - 1) === '\n' ? indentation : '') + '</' + key + '>';
32
37
  }
33
38
  }
34
39
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"merge-urls.d.ts","sourceRoot":"","sources":["../../src/helpers/merge-urls.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,cAAe,eAAe,EAAE,KAAG,eA6BhE,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,QAAS,MAAM,QAAQ,MAAM,WAM1D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,QACf,MAAM,QACL,MAAM,cACD,eAAe,0CAkC3B,CAAA"}
1
+ {"version":3,"file":"merge-urls.d.ts","sourceRoot":"","sources":["../../src/helpers/merge-urls.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,cAAe,eAAe,EAAE,KAAG,eA6BhE,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,QAAS,MAAM,QAAQ,MAAM,WAU1D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,QACf,MAAM,QACL,MAAM,cACD,eAAe,0CAmC3B,CAAA"}
@@ -34,10 +34,12 @@ const mergeSearchParams = (...params) => {
34
34
  };
35
35
  /** Combines a base URL and a path ensuring there's only one slash between them */
36
36
  const combineUrlAndPath = (url, path) => {
37
- if (!path || url === path)
37
+ if (!path || url === path) {
38
38
  return url.trim();
39
- if (!url)
39
+ }
40
+ if (!url) {
40
41
  return path.trim();
42
+ }
41
43
  return `${url.trim()}/${path.trim()}`.replace(REGEX.MULTIPLE_SLASHES, '/');
42
44
  };
43
45
  /**
@@ -70,7 +72,7 @@ disableOriginPrefix = false) => {
70
72
  const search = mergedSearchParams.toString();
71
73
  return search ? `${mergedUrl}?${search}` : mergedUrl;
72
74
  }
73
- else if (path) {
75
+ if (path) {
74
76
  return combineUrlAndPath(url, path);
75
77
  }
76
78
  return '';
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/helpers/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAS,SAAS,EAAE,MAAM,MAAM,CAAA;AAEvC,KAAK,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;AAE9E,4CAA4C;AAC5C,eAAO,MAAM,IAAI;IACf,2DAA2D;iBAC9C,MAAM,KAGI,aAAa;IAEpC,6CAA6C;cACnC,CAAC,SAAS,iBAAiB,OAAO,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC;;CAQxG,CAAA;AAED,4CAA4C;AAC5C,eAAO,MAAM,IAAI;IACf,2DAA2D;iBAC9C,MAAM,KAAG,aAAa;IAKnC,6CAA6C;cACnC,CAAC,SAAS,iBAAiB,OAAO,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC;qBAOtF,MAAM;CACxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,WAAY,GAAG,YAIvC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,UAAW,MAAM,WAG5C,CAAA;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,UAYnD;AAED,wCAAwC;AACxC,eAAO,MAAM,eAAe,UAAW,MAAM,GAAG,aAAa,KAAG,aAc/D,CAAA"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/helpers/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAS,SAAS,EAAE,MAAM,MAAM,CAAA;AAEvC,KAAK,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;AAE9E,4CAA4C;AAC5C,eAAO,MAAM,IAAI;IACf,2DAA2D;iBAC9C,MAAM,KAKI,aAAa;IAEpC,6CAA6C;cACnC,CAAC,SAAS,iBAAiB,OAAO,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC;;CAQxG,CAAA;AAED,4CAA4C;AAC5C,eAAO,MAAM,IAAI;IACf,2DAA2D;iBAC9C,MAAM,KAAG,aAAa;IAOnC,6CAA6C;cACnC,CAAC,SAAS,iBAAiB,OAAO,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC;qBAOtF,MAAM;CACxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,WAAY,GAAG,YAMvC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,UAAW,MAAM,WAG5C,CAAA;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,UAcnD;AAED,wCAAwC;AACxC,eAAO,MAAM,eAAe,UAAW,MAAM,GAAG,aAAa,KAAG,aAkB/D,CAAA"}
@@ -5,8 +5,9 @@ const yaml = {
5
5
  /** Parse and throw if the return value is not an object */
6
6
  parse: (val) => {
7
7
  const yamlObject = parse(val);
8
- if (typeof yamlObject !== 'object')
8
+ if (typeof yamlObject !== 'object') {
9
9
  throw Error('Invalid YAML object');
10
+ }
10
11
  return yamlObject;
11
12
  },
12
13
  /** Parse and return a fallback on failure */
@@ -25,8 +26,9 @@ const json = {
25
26
  /** Parse and throw if the return value is not an object */
26
27
  parse: (val) => {
27
28
  const jsonObject = JSON.parse(val);
28
- if (typeof jsonObject !== 'object')
29
+ if (typeof jsonObject !== 'object') {
29
30
  throw Error('Invalid JSON object');
31
+ }
30
32
  return jsonObject;
31
33
  },
32
34
  /** Parse and return a fallback on failure */
@@ -44,8 +46,9 @@ const json = {
44
46
  * Check if value is a valid JSON string
45
47
  */
46
48
  const isJsonString = (value) => {
47
- if (typeof value !== 'string')
49
+ if (typeof value !== 'string') {
48
50
  return false;
51
+ }
49
52
  return !!json.parseSafe(value, false);
50
53
  };
51
54
  /**
@@ -59,8 +62,9 @@ const transformToJson = (value) => {
59
62
  function formatJsonOrYamlString(value) {
60
63
  // If we don't start with a bracket assume yaml
61
64
  const trimmed = value.trim();
62
- if (trimmed[0] !== '{' && trimmed[0] !== '[')
65
+ if (trimmed[0] !== '{' && trimmed[0] !== '[') {
63
66
  return value;
67
+ }
64
68
  try {
65
69
  // JSON
66
70
  return JSON.stringify(JSON.parse(value), null, 2);
@@ -72,11 +76,13 @@ function formatJsonOrYamlString(value) {
72
76
  }
73
77
  /** Parse JSON or YAML into an object */
74
78
  const parseJsonOrYaml = (value) => {
75
- if (typeof value !== 'string')
79
+ if (typeof value !== 'string') {
76
80
  return value;
81
+ }
77
82
  const jsonObject = json.parseSafe(value, null);
78
- if (jsonObject)
83
+ if (jsonObject) {
79
84
  return jsonObject;
85
+ }
80
86
  // Value is probably supposed to be JSON. Throw
81
87
  if (value.length > 0 && ['{', '['].includes(value[0])) {
82
88
  throw Error('Invalid JSON or YAML');
@@ -28,7 +28,7 @@ const prettyPrintJson = (value) => {
28
28
  */
29
29
  function replaceCircularDependencies(content) {
30
30
  const cache = new Set();
31
- return JSON.stringify(content, (key, value) => {
31
+ return JSON.stringify(content, (_key, value) => {
32
32
  if (typeof value === 'object' && value !== null) {
33
33
  if (cache.has(value)) {
34
34
  return '[Circular]';
@@ -1 +1 @@
1
- {"version":3,"file":"redirectToProxy.d.ts","sourceRoot":"","sources":["../../src/helpers/redirectToProxy.ts"],"names":[],"mappings":"AAIA,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAepE;AAED,wEAAwE;AACxE,eAAO,MAAM,cAAc,QAAS,MAAM,YAazC,CAAA;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAWpE"}
1
+ {"version":3,"file":"redirectToProxy.d.ts","sourceRoot":"","sources":["../../src/helpers/redirectToProxy.ts"],"names":[],"mappings":"AAIA,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAepE;AAED,wEAAwE;AACxE,eAAO,MAAM,cAAc,QAAS,MAAM,YAazC,CAAA;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAiBpE"}
@@ -30,14 +30,17 @@ const isRelativePath = (url) => {
30
30
  /** Returns false for requests to localhost, relative URLs, if no proxy is defined … */
31
31
  function shouldUseProxy(proxy, url) {
32
32
  // No proxy or url
33
- if (!proxy || !url)
33
+ if (!proxy || !url) {
34
34
  return false;
35
+ }
35
36
  // Relative URLs
36
- if (isRelativePath(url))
37
+ if (isRelativePath(url)) {
37
38
  return false;
39
+ }
38
40
  // Requests to localhost
39
- if (isLocalUrl(url))
41
+ if (isLocalUrl(url)) {
40
42
  return false;
43
+ }
41
44
  return true;
42
45
  }
43
46
 
@@ -1 +1 @@
1
- {"version":3,"file":"replaceVariables.d.ts","sourceRoot":"","sources":["../../src/helpers/replaceVariables.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,UAgBnF"}
1
+ {"version":3,"file":"replaceVariables.d.ts","sourceRoot":"","sources":["../../src/helpers/replaceVariables.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,UAenF"}
@@ -9,9 +9,7 @@ function replaceVariables(value, variablesOrCallback) {
9
9
  if (typeof variablesOrCallback === 'function') {
10
10
  return variablesOrCallback(match);
11
11
  }
12
- else {
13
- return variablesOrCallback[match]?.toString() || `{${match}}`;
14
- }
12
+ return variablesOrCallback[match]?.toString() || `{${match}}`;
15
13
  };
16
14
  // Loop through all matches and replace the match with the variable value
17
15
  return value.replace(doubleCurlyBrackets, callback).replace(singleCurlyBrackets, callback);
@@ -7,8 +7,9 @@ function schemaModel(data, schema, throwError = true, errorLocation) {
7
7
  console.log('Received: ', data);
8
8
  console.groupEnd();
9
9
  }
10
- if (throwError && !result.success)
10
+ if (throwError && !result.success) {
11
11
  throw new Error('Zod validation failure');
12
+ }
12
13
  return result.data;
13
14
  }
14
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"local-storage.d.ts","sourceRoot":"","sources":["../../src/migrations/local-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC;;GAEG;AACH,eAAO,MAAM,iBAAiB,UAAW,CAAC,OAAO,OAAO,EAAE,MAAM,OAAO,OAAO,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAKvG,CAAA;AAED,oDAAoD;AACpD,eAAO,MAAM,sBAAsB,QAAO,MAmBzC,CAAA"}
1
+ {"version":3,"file":"local-storage.d.ts","sourceRoot":"","sources":["../../src/migrations/local-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC;;GAEG;AACH,eAAO,MAAM,iBAAiB,UAAW,CAAC,OAAO,OAAO,EAAE,MAAM,OAAO,OAAO,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAKvG,CAAA;AAED,oDAAoD;AACpD,eAAO,MAAM,sBAAsB,QAAO,MAyBzC,CAAA"}
@@ -13,16 +13,19 @@ const parseLocalStorage = (lsKey) => {
13
13
  const getLocalStorageVersion = () => {
14
14
  const collectionStr = localStorage.getItem('collection');
15
15
  const dataVersion = localStorage.getItem(DATA_VERSION_LS_LEY);
16
- if (dataVersion)
16
+ if (dataVersion) {
17
17
  return dataVersion;
18
+ }
18
19
  // No flatted means first version
19
- if (!collectionStr?.length || collectionStr?.[0] === '{')
20
+ if (!collectionStr?.length || collectionStr?.[0] === '{') {
20
21
  return '0.0.0';
22
+ }
21
23
  // Flatted + types means > 2.1.0 but we should have a data version
22
24
  try {
23
25
  const [collection] = Object.values(parse(collectionStr) ?? {});
24
- if (collection?.type === 'collection')
26
+ if (collection?.type === 'collection') {
25
27
  return '2.1.0';
28
+ }
26
29
  return '0.0.0';
27
30
  }
28
31
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/migrations/migrator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEpE,6CAA6C;AAC7C,eAAO,MAAM,QAAQ,QAAO,OAAO,CAAC,WAAW,CA0C9C,CAAA"}
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/migrations/migrator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAEpE,6CAA6C;AAC7C,eAAO,MAAM,QAAQ,QAAO,OAAO,CAAC,WAAW,CAoD9C,CAAA"}
@@ -23,20 +23,25 @@ const migrator = () => {
23
23
  workspaces: parseLocalStorage('workspace'),
24
24
  };
25
25
  // 0.0.0 -> 2.1.0 migration
26
- if (semverLessThan(dataVersion, '2.1.0'))
26
+ if (semverLessThan(dataVersion, '2.1.0')) {
27
27
  data = migrate_v_2_1_0(data);
28
+ }
28
29
  // 2.1.0 -> 2.2.0 migration
29
- if (semverLessThan(dataVersion, '2.2.0'))
30
+ if (semverLessThan(dataVersion, '2.2.0')) {
30
31
  data = migrate_v_2_2_0(data);
32
+ }
31
33
  // 2.2.0 -> 2.3.0 migration
32
- if (semverLessThan(dataVersion, '2.3.0'))
34
+ if (semverLessThan(dataVersion, '2.3.0')) {
33
35
  data = migrate_v_2_3_0(data);
36
+ }
34
37
  // 2.3.0 -> 2.4.0 migration
35
- if (semverLessThan(dataVersion, '2.4.0'))
38
+ if (semverLessThan(dataVersion, '2.4.0')) {
36
39
  data = migrate_v_2_4_0(data);
40
+ }
37
41
  // 2.4.0 -> 2.5.0 migration
38
- if (semverLessThan(dataVersion, '2.5.0'))
42
+ if (semverLessThan(dataVersion, '2.5.0')) {
39
43
  data = migrate_v_2_5_0(data);
44
+ }
40
45
  // Convert to data array
41
46
  data = {
42
47
  collections: Object.values(data.collections),
@@ -1 +1 @@
1
- {"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../src/migrations/semver.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,SAAU,MAAM,SAAS,MAAM,KAAG,OAiB5D,CAAA"}
1
+ {"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../src/migrations/semver.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,SAAU,MAAM,SAAS,MAAM,KAAG,OAyB5D,CAAA"}
@@ -4,19 +4,23 @@
4
4
  const semverLessThan = (left, right) => {
5
5
  // Parse the strings into numbers
6
6
  const parseSemver = (version) => {
7
- const [major, minor = 0, patch = 0] = version.split('.').map((part) => parseInt(part, 10));
7
+ const [major, minor = 0, patch = 0] = version.split('.').map((part) => Number.parseInt(part, 10));
8
8
  return { major, minor, patch };
9
9
  };
10
10
  const { major: major1, minor: minor1, patch: patch1 } = parseSemver(left);
11
11
  const { major: major2, minor: minor2, patch: patch2 } = parseSemver(right);
12
- if (major1 < major2)
12
+ if (major1 < major2) {
13
13
  return true;
14
- if (major1 > major2)
14
+ }
15
+ if (major1 > major2) {
15
16
  return false;
16
- if (minor1 < minor2)
17
+ }
18
+ if (minor1 < minor2) {
17
19
  return true;
18
- if (minor1 > minor2)
20
+ }
21
+ if (minor1 > minor2) {
19
22
  return false;
23
+ }
20
24
  return patch1 < patch2;
21
25
  };
22
26
 
@@ -1 +1 @@
1
- {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/migrations/v-2.1.0/migration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAEnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,mCAAmC;AACnC,eAAO,MAAM,eAAe,SAAU,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;;;;;;;;;;CA+TxE,CAAA"}
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/migrations/v-2.1.0/migration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAEnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,mCAAmC;AACnC,eAAO,MAAM,eAAe,SAAU,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;;;;;;;;;;CA0UxE,CAAA"}
@@ -35,25 +35,28 @@ const migrate_v_2_1_0 = (data) => {
35
35
  });
36
36
  /** Migrate values from old securitySchemes to the new auth */
37
37
  const migrateAuth = (scheme) => {
38
- if (scheme.type === 'apiKey')
38
+ if (scheme.type === 'apiKey') {
39
39
  // ApiKey
40
40
  return { type: 'apiKey', name: scheme.name, value: scheme.value ?? '' };
41
+ }
41
42
  // HTTP
42
- if (scheme.type === 'http')
43
+ if (scheme.type === 'http') {
43
44
  return {
44
45
  type: 'http',
45
46
  username: scheme.value ?? '',
46
47
  password: scheme.secondValue ?? '',
47
48
  token: scheme.value ?? '',
48
49
  };
50
+ }
49
51
  // Oauth2 Implicit
50
- if (scheme.type === 'oauth2' && scheme.flow.type === 'implicit')
52
+ if (scheme.type === 'oauth2' && scheme.flow.type === 'implicit') {
51
53
  return {
52
54
  type: 'oauth-implicit',
53
55
  token: scheme.flow.token ?? '',
54
56
  };
57
+ }
55
58
  // Oauth2 Password
56
- if (scheme.type === 'oauth2' && scheme.flow.type === 'password')
59
+ if (scheme.type === 'oauth2' && scheme.flow.type === 'password') {
57
60
  return {
58
61
  type: 'oauth-password',
59
62
  token: scheme.flow.token ?? '',
@@ -61,20 +64,23 @@ const migrate_v_2_1_0 = (data) => {
61
64
  password: scheme.flow.secondValue ?? '',
62
65
  clientSecret: scheme.flow.clientSecret ?? '',
63
66
  };
67
+ }
64
68
  // Oauth2 clientCredentials
65
- if (scheme.type === 'oauth2' && scheme.flow.type === 'clientCredentials')
69
+ if (scheme.type === 'oauth2' && scheme.flow.type === 'clientCredentials') {
66
70
  return {
67
71
  type: 'oauth-clientCredentials',
68
72
  token: scheme.flow.token ?? '',
69
73
  clientSecret: scheme.flow.clientSecret ?? '',
70
74
  };
75
+ }
71
76
  // Oauth2 Authorization Code
72
- if (scheme.type === 'oauth2' && scheme.flow.type === 'authorizationCode')
77
+ if (scheme.type === 'oauth2' && scheme.flow.type === 'authorizationCode') {
73
78
  return {
74
79
  type: 'oauth-authorizationCode',
75
80
  token: scheme.flow.token ?? '',
76
81
  clientSecret: scheme.flow.clientSecret ?? '',
77
82
  };
83
+ }
78
84
  // Default - should not get hit
79
85
  return {
80
86
  type: 'apiKey',
@@ -95,8 +101,9 @@ const migrate_v_2_1_0 = (data) => {
95
101
  // Migrate auth
96
102
  const auth = securitySchemes.reduce((_prev, uid) => {
97
103
  const scheme = oldData.securitySchemes[uid];
98
- if (scheme?.uid && _prev)
104
+ if (scheme?.uid && _prev) {
99
105
  _prev[uid] = migrateAuth(scheme);
106
+ }
100
107
  return _prev;
101
108
  }, {});
102
109
  prev[c.uid] = {
@@ -168,25 +175,28 @@ const migrate_v_2_1_0 = (data) => {
168
175
  selectedScopes: flow.selectedScopes || [],
169
176
  scopes: flow.scopes || {},
170
177
  };
171
- if (flow.type === 'implicit')
178
+ if (flow.type === 'implicit') {
172
179
  return {
173
180
  ...flow,
174
181
  ...base,
175
182
  'type': 'implicit',
176
183
  'x-scalar-redirect-uri': ('redirectUri' in flow ? flow.redirectUri : '') || '',
177
184
  };
178
- if (flow.type === 'password')
185
+ }
186
+ if (flow.type === 'password') {
179
187
  return {
180
188
  ...flow,
181
189
  ...base,
182
190
  tokenUrl: flow.tokenUrl || '',
183
191
  };
184
- if (flow.type === 'clientCredentials')
192
+ }
193
+ if (flow.type === 'clientCredentials') {
185
194
  return {
186
195
  ...flow,
187
196
  ...base,
188
197
  tokenUrl: flow.tokenUrl || '',
189
198
  };
199
+ }
190
200
  return {
191
201
  ...flow,
192
202
  ...base,
@@ -207,7 +217,7 @@ const migrate_v_2_1_0 = (data) => {
207
217
  case 'oauth2':
208
218
  return camelToTitleWords(scheme.flow.type);
209
219
  case 'openIdConnect':
210
- return `Open ID Connect`;
220
+ return 'Open ID Connect';
211
221
  default:
212
222
  return 'None';
213
223
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/migrations/v-2.2.0/migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAEnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAkGhD,mCAAmC;AACnC,eAAO,MAAM,eAAe,SAAU,OAAO,CAAC,UAAU,KAAG,OAAO,CAAC,UAyBlE,CAAA"}
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/migrations/v-2.2.0/migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAEnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAkGhD,mCAAmC;AACnC,eAAO,MAAM,eAAe,SAAU,OAAO,CAAC,UAAU,KAAG,OAAO,CAAC,UA6BlE,CAAA"}
@@ -89,11 +89,13 @@ const migrate_v_2_2_0 = (data) => {
89
89
  const securitySchemes = Object.values(data.securitySchemes).reduce((prev, s) => {
90
90
  const collection = Object.values(data.collections).find((c) => c.securitySchemes.includes(s.uid));
91
91
  const auth = collection?.auth?.[s.uid];
92
- if (!auth)
92
+ if (!auth) {
93
93
  return prev;
94
+ }
94
95
  const newScheme = migrateSecurityScheme(s, auth);
95
- if (newScheme)
96
+ if (newScheme) {
96
97
  prev[s.uid] = newScheme;
98
+ }
97
99
  return prev;
98
100
  }, {});
99
101
  // No changes to servers
@@ -1 +1 @@
1
- {"version":3,"file":"getExampleFromSchema.d.ts","sourceRoot":"","sources":["../../src/spec-getters/getExampleFromSchema.ts"],"names":[],"mappings":"AAyDA;;GAEG;AACH,eAAO,MAAM,oBAAoB,WACvB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YACjB;IACR;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B;;;OAGG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAA;CACzC,UACM,MAAM,iBACE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SAC3B,MAAM,KACZ,GA+QF,CAAA"}
1
+ {"version":3,"file":"getExampleFromSchema.d.ts","sourceRoot":"","sources":["../../src/spec-getters/getExampleFromSchema.ts"],"names":[],"mappings":"AAyDA;;GAEG;AACH,eAAO,MAAM,oBAAoB,WACvB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YACjB;IACR;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B;;;OAGG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAA;CACzC,UACM,MAAM,iBACE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SAC3B,MAAM,KACZ,GA8QF,CAAA"}
@@ -80,7 +80,7 @@ const getExampleFromSchema = (schema, options, level = 0, parentSchema, name) =>
80
80
  if (value !== undefined) {
81
81
  // Type-casting
82
82
  if (schema.type === 'number' || schema.type === 'integer') {
83
- return parseInt(value, 10);
83
+ return Number.parseInt(value, 10);
84
84
  }
85
85
  return cache(schema, value);
86
86
  }
@@ -185,13 +185,11 @@ const getExampleFromSchema = (schema, options, level = 0, parentSchema, name) =>
185
185
  const mergedExample = getExampleFromSchema({ type: 'object', allOf: schema.items.allOf }, options, level + 1, schema);
186
186
  return cache(schema, wrapItems ? [{ [itemsXmlTagName]: mergedExample }] : [mergedExample]);
187
187
  }
188
- else {
189
- // For non-objects (like strings), collect all examples
190
- const examples = schema.items.allOf
191
- .map((item) => getExampleFromSchema(item, options, level + 1, schema))
192
- .filter((item) => item !== undefined);
193
- return cache(schema, wrapItems ? examples.map((example) => ({ [itemsXmlTagName]: example })) : examples);
194
- }
188
+ // For non-objects (like strings), collect all examples
189
+ const examples = schema.items.allOf
190
+ .map((item) => getExampleFromSchema(item, options, level + 1, schema))
191
+ .filter((item) => item !== undefined);
192
+ return cache(schema, wrapItems ? examples.map((example) => ({ [itemsXmlTagName]: example })) : examples);
195
193
  }
196
194
  // Handle other rules (anyOf, oneOf)
197
195
  const rules = ['anyOf', 'oneOf'];
@@ -1 +1 @@
1
- {"version":3,"file":"getParametersFromOperation.d.ts","sourceRoot":"","sources":["../../src/spec-getters/getParametersFromOperation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAI/E;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,EACjD,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,EACnE,YAAY,GAAE,OAAc,GAC3B,aAAa,EAAE,CA6BjB"}
1
+ {"version":3,"file":"getParametersFromOperation.d.ts","sourceRoot":"","sources":["../../src/spec-getters/getParametersFromOperation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAI/E;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,EACjD,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,EACnE,YAAY,GAAE,OAAc,GAC3B,aAAa,EAAE,CAiCjB"}
@@ -29,11 +29,13 @@ function getParametersFromOperation(operation, where, requiredOnly = true) {
29
29
  }));
30
30
  return params.sort((a, b) => {
31
31
  // Move a up if a is required and b is not
32
- if (a.required && !b.required)
32
+ if (a.required && !b.required) {
33
33
  return -1;
34
+ }
34
35
  // Move b up if b is required and a is not
35
- if (!a.required && b.required)
36
+ if (!a.required && b.required) {
36
37
  return 1;
38
+ }
37
39
  // Keep original order if both have the same required status
38
40
  return 0;
39
41
  });
@@ -1 +1 @@
1
- {"version":3,"file":"import-spec.d.ts","sourceRoot":"","sources":["../../src/transforms/import-spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,cAAc,EAGnB,KAAK,MAAM,EACX,KAAK,GAAG,EAMT,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,0BAA0B,CAAA;AAMjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,mFAAmF;AACnF,eAAO,MAAM,WAAW,SAAgB,MAAM,GAAG,aAAa;;;IAkC1D;;;OAGG;YAC8C,WAAW,CAAC,QAAQ;;EAGxE,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,yBAClB,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,0BACnB,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,iCAC1B,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,KACvD,0BAWF,CAAA;AAED,iCAAiC;AACjC,eAAO,MAAM,UAAU,SAAU,MAAM,KAA2B,UAAU,CAAC,KAAK,CAAC,CAAA;AAEnF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,WAAW,CAAC,GAC1F,IAAI,CAAC,yBAAyB,EAAE,gBAAgB,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG;IACzF,mFAAmF;IACnF,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,GAAG,aAAa,EAC5B,EACE,cAAc,EACd,aAAa,EACb,WAAW,EACX,OAAO,EAAE,iBAAiB,EAC1B,qBAA6B,EAC7B,IAAI,EACJ,UAAU,EACV,SAAiB,GAClB,GAAE,yBAA8B,GAChC,OAAO,CACN;IACE,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAA;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,eAAe,EAAE,cAAc,EAAE,CAAA;CAClC,GACD;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,SAAS,CAAA;CAAE,CACnE,CAkUA;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,WAAW,CAAC,YAAY,EAAE,GAAG,SAAS,EAC/C,EAAE,aAAa,EAAE,GAAE,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAM,GACvE,MAAM,EAAE,CAwCV"}
1
+ {"version":3,"file":"import-spec.d.ts","sourceRoot":"","sources":["../../src/transforms/import-spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,cAAc,EAGnB,KAAK,MAAM,EACX,KAAK,GAAG,EAMT,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,0BAA0B,CAAA;AAMjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,mFAAmF;AACnF,eAAO,MAAM,WAAW,SAAgB,MAAM,GAAG,aAAa;;;IAoC1D;;;OAGG;YAC8C,WAAW,CAAC,QAAQ;;EAGxE,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,yBAClB,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,0BACnB,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,iCAC1B,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,KACvD,0BAWF,CAAA;AAED,iCAAiC;AACjC,eAAO,MAAM,UAAU,SAAU,MAAM,KAA2B,UAAU,CAAC,KAAK,CAAC,CAAA;AAEnF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,GAAG,WAAW,CAAC,GAC1F,IAAI,CAAC,yBAAyB,EAAE,gBAAgB,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG;IACzF,mFAAmF;IACnF,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,GAAG,aAAa,EAC5B,EACE,cAAc,EACd,aAAa,EACb,WAAW,EACX,OAAO,EAAE,iBAAiB,EAC1B,qBAA6B,EAC7B,IAAI,EACJ,UAAU,EACV,SAAiB,GAClB,GAAE,yBAA8B,GAChC,OAAO,CACN;IACE,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAA;IAC5B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,eAAe,EAAE,cAAc,EAAE,CAAA;CAClC,GACD;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,SAAS,CAAA;CAAE,CACnE,CA0VA;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,WAAW,CAAC,YAAY,EAAE,GAAG,SAAS,EAC/C,EAAE,aAAa,EAAE,GAAE,IAAI,CAAC,yBAAyB,EAAE,eAAe,CAAM,GACvE,MAAM,EAAE,CA0CV"}
@@ -39,8 +39,9 @@ const parseSchema = async (spec, { shouldLoad = true } = {}) => {
39
39
  }
40
40
  const { specification } = upgrade(filesystem);
41
41
  const { schema, errors: derefErrors = [] } = await dereference(specification);
42
- if (!schema)
42
+ if (!schema) {
43
43
  console.warn('[@scalar/oas-utils] OpenAPI Parser Warning: Schema is undefined');
44
+ }
44
45
  return {
45
46
  /**
46
47
  * Temporary fix for the parser returning an empty array
@@ -78,8 +79,9 @@ const getSlugUid = (slug) => `slug-uid-${slug}`;
78
79
  async function importSpecToWorkspace(spec, { authentication, baseServerURL, documentUrl, servers: configuredServers, setCollectionSecurity = false, slug, shouldLoad, watchMode = false, } = {}) {
79
80
  const { schema, errors } = await parseSchema(spec, { shouldLoad });
80
81
  const importWarnings = [...errors.map((e) => e.message)];
81
- if (!schema)
82
+ if (!schema) {
82
83
  return { importWarnings, error: true, collection: undefined };
84
+ }
83
85
  // ---------------------------------------------------------------------------
84
86
  // Some entities will be broken out as individual lists for modification in the workspace
85
87
  const start = performance.now();
@@ -114,37 +116,44 @@ async function importSpecToWorkspace(spec, { authentication, baseServerURL, docu
114
116
  if (payload.type === 'oauth2' && payload.flows) {
115
117
  const flowKeys = Object.keys(payload.flows);
116
118
  flowKeys.forEach((key) => {
117
- if (!payload.flows?.[key])
119
+ if (!payload.flows?.[key]) {
118
120
  return;
121
+ }
119
122
  const flow = payload.flows[key];
120
123
  // Set the type
121
124
  flow.type = key;
122
125
  // Prefill values from authorization config
123
126
  if (authentication?.oAuth2) {
124
- if (authentication.oAuth2.accessToken)
127
+ if (authentication.oAuth2.accessToken) {
125
128
  flow.token = authentication.oAuth2.accessToken;
126
- if (flow.type === 'password') {
127
- flow.username = authentication.oAuth2.username;
128
- flow.password = authentication.oAuth2.password;
129
+ }
130
+ if (authentication.oAuth2.clientId) {
131
+ flow['x-scalar-client-id'] = authentication.oAuth2.clientId;
129
132
  }
130
133
  if (authentication.oAuth2.scopes) {
131
134
  flow.selectedScopes = authentication.oAuth2.scopes;
132
- flow['x-scalar-client-id'] = authentication.oAuth2.clientId;
135
+ }
136
+ if (flow.type === 'password') {
137
+ flow.username = authentication.oAuth2.username;
138
+ flow.password = authentication.oAuth2.password;
133
139
  }
134
140
  }
135
141
  // Convert scopes to an object
136
- if (Array.isArray(flow.scopes))
142
+ if (Array.isArray(flow.scopes)) {
137
143
  flow.scopes = flow.scopes.reduce((prev, s) => ({ ...prev, [s]: '' }), {});
144
+ }
138
145
  // Handle x-defaultClientId
139
- if (flow['x-defaultClientId'])
146
+ if (flow['x-defaultClientId']) {
140
147
  flow['x-scalar-client-id'] = flow['x-defaultClientId'];
148
+ }
141
149
  });
142
150
  }
143
151
  // Otherwise we just prefill
144
152
  else if (authentication) {
145
153
  // ApiKey
146
- if (payload.type === 'apiKey' && authentication.apiKey?.token)
154
+ if (payload.type === 'apiKey' && authentication.apiKey?.token) {
147
155
  payload.value = authentication.apiKey.token;
156
+ }
148
157
  // HTTP
149
158
  else if (payload.type === 'http') {
150
159
  if (payload.scheme === 'basic' && authentication.http?.basic) {
@@ -164,8 +173,9 @@ async function importSpecToWorkspace(spec, { authentication, baseServerURL, docu
164
173
  }
165
174
  }
166
175
  const scheme = schemaModel(payload, securitySchemeSchema, false);
167
- if (!scheme)
176
+ if (!scheme) {
168
177
  importWarnings.push(`Security scheme ${nameKey} is invalid.`);
178
+ }
169
179
  return scheme;
170
180
  })
171
181
  .filter((v) => !!v);
@@ -178,8 +188,9 @@ async function importSpecToWorkspace(spec, { authentication, baseServerURL, docu
178
188
  // REQUEST HANDLING
179
189
  keysOf(schema.paths ?? {}).forEach((pathString) => {
180
190
  const path = schema?.paths?.[pathString];
181
- if (!path)
191
+ if (!path) {
182
192
  return;
193
+ }
183
194
  // Path level servers must be saved
184
195
  const pathServers = serverSchema.array().parse(path.servers ?? []);
185
196
  servers.push(...pathServers);
@@ -230,7 +241,7 @@ async function importSpecToWorkspace(spec, { authentication, baseServerURL, docu
230
241
  }
231
242
  // Add list of UIDs to associate security schemes
232
243
  // As per the spec if there is operation level security we ignore the top level requirements
233
- if (operationSecurity?.length)
244
+ if (operationSecurity?.length) {
234
245
  requestPayload.security = operationSecurity.map((s) => {
235
246
  const keys = Object.keys(s);
236
247
  // Handle the case of {} for optional
@@ -242,12 +253,15 @@ async function importSpecToWorkspace(spec, { authentication, baseServerURL, docu
242
253
  }
243
254
  return s;
244
255
  });
256
+ }
245
257
  // Save parse the request
246
258
  const request = schemaModel(requestPayload, requestSchema, false);
247
- if (!request)
259
+ if (!request) {
248
260
  importWarnings.push(`${method} Request at ${path} is invalid.`);
249
- else
261
+ }
262
+ else {
250
263
  requests.push(request);
264
+ }
251
265
  });
252
266
  });
253
267
  // ---------------------------------------------------------------------------
@@ -352,8 +366,9 @@ async function importSpecToWorkspace(spec, { authentication, baseServerURL, docu
352
366
  * Retrieves a list of servers from an OpenAPI document and converts them to a list of Server entities.
353
367
  */
354
368
  function getServersFromOpenApiDocument(servers, { baseServerURL } = {}) {
355
- if (!servers || !Array.isArray(servers))
369
+ if (!servers || !Array.isArray(servers)) {
356
370
  return [];
371
+ }
357
372
  return servers
358
373
  .map((server) => {
359
374
  try {
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "specification",
17
17
  "yaml"
18
18
  ],
19
- "version": "0.2.120",
19
+ "version": "0.2.122",
20
20
  "engines": {
21
21
  "node": ">=18"
22
22
  },
@@ -123,13 +123,13 @@
123
123
  "@hyperjump/json-schema": "^1.9.6",
124
124
  "flatted": "^3.3.1",
125
125
  "microdiff": "^1.4.0",
126
- "nanoid": "^5.0.9",
126
+ "nanoid": "^5.1.5",
127
127
  "yaml": "^2.4.5",
128
128
  "zod": "^3.23.8",
129
129
  "@scalar/object-utils": "1.1.13",
130
130
  "@scalar/openapi-types": "0.1.9",
131
- "@scalar/themes": "0.9.79",
132
- "@scalar/types": "0.1.1"
131
+ "@scalar/themes": "0.9.81",
132
+ "@scalar/types": "0.1.3"
133
133
  },
134
134
  "devDependencies": {
135
135
  "type-fest": "^4.20.0",
@@ -137,7 +137,7 @@
137
137
  "vitest": "^1.6.0",
138
138
  "zod-to-ts": "github:amritk/zod-to-ts#build",
139
139
  "@scalar/build-tooling": "0.1.17",
140
- "@scalar/openapi-parser": "0.10.10",
140
+ "@scalar/openapi-parser": "0.10.12",
141
141
  "@scalar/openapi-types": "0.1.9"
142
142
  },
143
143
  "scripts": {