openapi-explorer 0.9.311 → 0.9.312

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 (123) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/dist/{openapi-explorer.min.js → browser/openapi-explorer.min.js} +1 -1
  3. package/dist/{openapi-explorer.min.js.LICENSE.txt → browser/openapi-explorer.min.js.LICENSE.txt} +1 -1
  4. package/dist/browser/openapi-explorer.min.js.LICENSE.txt.gz +0 -0
  5. package/dist/browser/openapi-explorer.min.js.gz +0 -0
  6. package/dist/{openapi-explorer.min.js.map → browser/openapi-explorer.min.js.map} +0 -0
  7. package/dist/{openapi-explorer.min.js.map.gz → browser/openapi-explorer.min.js.map.gz} +0 -0
  8. package/dist/{report.html → browser/report.html} +1 -1
  9. package/dist/es/components/api-request.js +936 -0
  10. package/dist/es/components/api-response.js +184 -0
  11. package/dist/es/components/json-tree.js +67 -0
  12. package/{src → dist/es}/components/mime-types.js +10 -16
  13. package/dist/es/components/schema-table.js +156 -0
  14. package/dist/es/components/schema-tree.js +191 -0
  15. package/dist/es/components/tag-input.js +67 -0
  16. package/{src → dist/es}/openapi-explorer-oauth-handler.js +2 -2
  17. package/{src → dist/es}/openapi-explorer.js +364 -371
  18. package/dist/es/styles/advanced-search-styles.js +2 -0
  19. package/dist/es/styles/api-request-styles.js +2 -0
  20. package/dist/es/styles/border-styles.js +2 -0
  21. package/dist/es/styles/endpoint-styles.js +2 -0
  22. package/dist/es/styles/flex-styles.js +2 -0
  23. package/dist/es/styles/font-styles.js +2 -0
  24. package/dist/es/styles/info-styles.js +2 -0
  25. package/dist/es/styles/input-styles.js +4 -0
  26. package/dist/es/styles/nav-styles.js +2 -0
  27. package/dist/es/styles/prism-styles.js +2 -0
  28. package/dist/es/styles/schema-styles.js +2 -0
  29. package/dist/es/styles/tab-styles.js +2 -0
  30. package/dist/es/styles/table-styles.js +2 -0
  31. package/dist/es/templates/advance-search-template.js +37 -0
  32. package/dist/es/templates/callback-template.js +7 -0
  33. package/dist/es/templates/code-samples-template.js +26 -0
  34. package/dist/es/templates/components-template.js +17 -0
  35. package/dist/es/templates/endpoint-template.js +94 -0
  36. package/dist/es/templates/expanded-endpoint-template.js +32 -0
  37. package/{src → dist/es}/templates/focused-endpoint-template.js +15 -15
  38. package/dist/es/templates/navbar-template.js +46 -0
  39. package/dist/es/templates/overview-template.js +9 -0
  40. package/dist/es/templates/responsiveViewMainBodyTemplate.js +30 -0
  41. package/dist/es/templates/security-scheme-template.js +330 -0
  42. package/dist/es/templates/server-template.js +42 -0
  43. package/{src → dist/es}/utils/color-utils.js +53 -16
  44. package/{src → dist/es}/utils/common-utils.js +18 -18
  45. package/{src → dist/es}/utils/schema-utils.js +248 -124
  46. package/{src → dist/es}/utils/spec-parser.js +112 -71
  47. package/dist/es/utils/theme.js +75 -0
  48. package/{src → dist/es}/utils/xml/xml.js +41 -38
  49. package/dist/lib/components/api-request.js +957 -0
  50. package/dist/lib/components/api-response.js +206 -0
  51. package/dist/lib/components/json-tree.js +82 -0
  52. package/dist/lib/components/mime-types.js +70 -0
  53. package/dist/lib/components/schema-table.js +170 -0
  54. package/dist/lib/components/schema-tree.js +206 -0
  55. package/dist/lib/components/tag-input.js +76 -0
  56. package/dist/lib/openapi-explorer-oauth-handler.js +19 -0
  57. package/dist/lib/openapi-explorer.js +817 -0
  58. package/dist/lib/styles/advanced-search-styles.js +10 -0
  59. package/dist/lib/styles/api-request-styles.js +10 -0
  60. package/dist/lib/styles/border-styles.js +10 -0
  61. package/dist/lib/styles/endpoint-styles.js +10 -0
  62. package/dist/lib/styles/flex-styles.js +10 -0
  63. package/dist/lib/styles/font-styles.js +10 -0
  64. package/dist/lib/styles/info-styles.js +10 -0
  65. package/dist/lib/styles/input-styles.js +11 -0
  66. package/dist/lib/styles/nav-styles.js +10 -0
  67. package/dist/lib/styles/prism-styles.js +10 -0
  68. package/dist/lib/styles/schema-styles.js +10 -0
  69. package/dist/lib/styles/tab-styles.js +10 -0
  70. package/dist/lib/styles/table-styles.js +10 -0
  71. package/dist/lib/templates/advance-search-template.js +42 -0
  72. package/dist/lib/templates/callback-template.js +12 -0
  73. package/dist/lib/templates/code-samples-template.js +36 -0
  74. package/dist/lib/templates/components-template.js +27 -0
  75. package/dist/lib/templates/endpoint-template.js +111 -0
  76. package/dist/lib/templates/expanded-endpoint-template.js +48 -0
  77. package/dist/lib/templates/focused-endpoint-template.js +95 -0
  78. package/dist/lib/templates/navbar-template.js +54 -0
  79. package/dist/lib/templates/overview-template.js +16 -0
  80. package/dist/lib/templates/responsiveViewMainBodyTemplate.js +47 -0
  81. package/dist/lib/templates/security-scheme-template.js +342 -0
  82. package/dist/lib/templates/server-template.js +49 -0
  83. package/dist/lib/utils/color-utils.js +112 -0
  84. package/dist/lib/utils/common-utils.js +156 -0
  85. package/dist/lib/utils/schema-utils.js +743 -0
  86. package/dist/lib/utils/spec-parser.js +361 -0
  87. package/dist/lib/utils/theme.js +84 -0
  88. package/dist/lib/utils/xml/xml.js +239 -0
  89. package/package.json +18 -6
  90. package/dist/openapi-explorer.min.js.LICENSE.txt.gz +0 -0
  91. package/dist/openapi-explorer.min.js.gz +0 -0
  92. package/src/components/api-request.js +0 -1244
  93. package/src/components/api-response.js +0 -340
  94. package/src/components/json-tree.js +0 -129
  95. package/src/components/schema-table.js +0 -250
  96. package/src/components/schema-tree.js +0 -280
  97. package/src/components/tag-input.js +0 -109
  98. package/src/styles/advanced-search-styles.js +0 -84
  99. package/src/styles/api-request-styles.js +0 -111
  100. package/src/styles/border-styles.js +0 -24
  101. package/src/styles/css/main.css +0 -24
  102. package/src/styles/endpoint-styles.js +0 -222
  103. package/src/styles/flex-styles.js +0 -15
  104. package/src/styles/font-styles.js +0 -266
  105. package/src/styles/info-styles.js +0 -20
  106. package/src/styles/input-styles.js +0 -236
  107. package/src/styles/nav-styles.js +0 -141
  108. package/src/styles/prism-styles.js +0 -107
  109. package/src/styles/schema-styles.js +0 -121
  110. package/src/styles/tab-styles.js +0 -44
  111. package/src/styles/table-styles.js +0 -48
  112. package/src/templates/advance-search-template.js +0 -81
  113. package/src/templates/callback-template.js +0 -63
  114. package/src/templates/code-samples-template.js +0 -35
  115. package/src/templates/components-template.js +0 -43
  116. package/src/templates/endpoint-template.js +0 -175
  117. package/src/templates/expanded-endpoint-template.js +0 -104
  118. package/src/templates/navbar-template.js +0 -175
  119. package/src/templates/overview-template.js +0 -58
  120. package/src/templates/responsiveViewMainBodyTemplate.js +0 -72
  121. package/src/templates/security-scheme-template.js +0 -487
  122. package/src/templates/server-template.js +0 -106
  123. package/src/utils/theme.js +0 -163
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.advancedSearch = advancedSearch;
5
+ exports.componentIsInSearch = componentIsInSearch;
6
+ exports.copyToClipboard = copyToClipboard;
7
+ exports.debounce = debounce;
8
+ exports.getBaseUrlFromUrl = getBaseUrlFromUrl;
9
+ exports.getCurrentElement = getCurrentElement;
10
+ exports.invalidCharsRegEx = void 0;
11
+ exports.pathIsInSearch = pathIsInSearch;
12
+ exports.replaceState = replaceState;
13
+ exports.schemaKeys = schemaKeys;
14
+ exports.sleep = sleep;
15
+
16
+ /* For Delayed Event Handler Execution */
17
+ function debounce(fn, delay) {
18
+ let timeoutID = null;
19
+ return (...args) => {
20
+ clearTimeout(timeoutID);
21
+ const that = this;
22
+ timeoutID = setTimeout(() => {
23
+ fn.apply(that, args);
24
+ }, delay);
25
+ };
26
+ }
27
+
28
+ const invalidCharsRegEx = new RegExp(/[\s#:?&={}]/, 'g'); // used for generating valid html element ids by replacing the invalid chars with hyphen (-)
29
+
30
+ exports.invalidCharsRegEx = invalidCharsRegEx;
31
+
32
+ function sleep(ms) {
33
+ return new Promise(resolve => setTimeout(resolve, ms));
34
+ }
35
+
36
+ function copyToClipboard(data, e) {
37
+ const btnEl = e.currentTarget;
38
+ const textArea = document.createElement('textarea');
39
+ textArea.value = data;
40
+ textArea.style.position = 'fixed'; // avoid scrolling to bottom
41
+
42
+ document.body.appendChild(textArea);
43
+ textArea.focus();
44
+ textArea.select();
45
+
46
+ try {
47
+ document.execCommand('copy');
48
+ btnEl.innerText = 'Copied';
49
+ setTimeout(() => {
50
+ btnEl.innerText = 'Copy';
51
+ }, 5000);
52
+ } catch (err) {
53
+ console.error('Unable to copy', err); // eslint-disable-line no-console
54
+ }
55
+
56
+ document.body.removeChild(textArea);
57
+ }
58
+
59
+ function getBaseUrlFromUrl(url) {
60
+ const pathArray = url.split('/');
61
+ return `${pathArray[0]}//${pathArray[2]}`;
62
+ }
63
+
64
+ function componentIsInSearch(searchVal, component) {
65
+ return component.name.toLowerCase().includes(searchVal.toLowerCase());
66
+ }
67
+
68
+ function pathIsInSearch(searchVal, path) {
69
+ const stringToSearch = `${path.method} ${path.path} ${path.summary || path.description || ''} ${path.operationId || ''}`.toLowerCase();
70
+ return stringToSearch.includes(searchVal.toLowerCase());
71
+ }
72
+
73
+ function schemaKeys(schemaProps, result = new Set()) {
74
+ if (!schemaProps) {
75
+ return result;
76
+ }
77
+
78
+ Object.keys(schemaProps).forEach(key => {
79
+ result.add(key);
80
+
81
+ if (schemaProps[key].properties) {
82
+ schemaKeys(schemaProps[key].properties, result);
83
+ } else if (schemaProps[key].items && schemaProps[key].items.properties) {
84
+ schemaKeys(schemaProps[key].items.properties, result);
85
+ }
86
+ });
87
+ return result;
88
+ }
89
+
90
+ function advancedSearch(searchVal, allSpecTags, searchOptions = []) {
91
+ if (!searchVal.trim() || searchOptions.length === 0) {
92
+ return undefined;
93
+ }
94
+
95
+ const pathsMatched = [];
96
+ allSpecTags.forEach(tag => {
97
+ tag.paths.forEach(path => {
98
+ let stringToSearch = '';
99
+
100
+ if (searchOptions.includes('search-api-path')) {
101
+ stringToSearch = path.path;
102
+ }
103
+
104
+ if (searchOptions.includes('search-api-descr')) {
105
+ stringToSearch = `${stringToSearch} ${path.summary || path.description || ''}`;
106
+ }
107
+
108
+ if (searchOptions.includes('search-api-params')) {
109
+ stringToSearch = `${stringToSearch} ${path.parameters && path.parameters.map(v => v.name).join(' ') || ''}`;
110
+ }
111
+
112
+ if (searchOptions.includes('search-api-request-body') && path.requestBody) {
113
+ let schemaKeySet = new Set();
114
+
115
+ for (const contentType in path.requestBody && path.requestBody.content) {
116
+ if (path.requestBody.content[contentType].schema && path.requestBody.content[contentType].schema.properties) {
117
+ schemaKeySet = schemaKeys(path.requestBody.content[contentType].schema.properties);
118
+ }
119
+
120
+ stringToSearch = `${stringToSearch} ${[...schemaKeySet].join(' ')}`;
121
+ }
122
+ }
123
+
124
+ if (searchOptions.includes('search-api-resp-descr')) {
125
+ stringToSearch = `${stringToSearch} ${Object.values(path.responses).map(v => v.description || '').join(' ')}`;
126
+ }
127
+
128
+ if (stringToSearch.toLowerCase().includes(searchVal.trim().toLowerCase())) {
129
+ pathsMatched.push({
130
+ elementId: path.elementId,
131
+ method: path.method,
132
+ path: path.path,
133
+ summary: path.summary || path.description || '',
134
+ deprecated: path.deprecated
135
+ });
136
+ }
137
+ });
138
+ });
139
+ return pathsMatched;
140
+ }
141
+
142
+ function getCurrentElement() {
143
+ const currentQuery = (window.location.hash || '').split('?')[1];
144
+ const query = new URLSearchParams(currentQuery);
145
+ return decodeURIComponent(query.get('route') || '');
146
+ }
147
+
148
+ function replaceState(rawElementId) {
149
+ const elementId = rawElementId && rawElementId.replace(/^#/, '') || '';
150
+ const currentNavigationHashPart = (window.location.hash || '').split('?')[0].replace(/^#/, '');
151
+ const currentQuery = (window.location.hash || '').split('?')[1];
152
+ const query = new URLSearchParams(currentQuery);
153
+ query.delete('route');
154
+ const newQuery = query.toString().length > 1 ? `${query.toString()}&route=${elementId}` : `route=${elementId}`;
155
+ window.history.replaceState(null, null, `#${currentNavigationHashPart}?${newQuery}`);
156
+ }