openapi-explorer 0.9.310 → 0.9.314

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 (121) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/dist/{openapi-explorer.min.js → browser/openapi-explorer.min.js} +3 -3
  3. package/dist/{openapi-explorer.min.js.map → browser/openapi-explorer.min.js.map} +0 -0
  4. package/dist/es/components/api-request.js +936 -0
  5. package/dist/es/components/api-response.js +184 -0
  6. package/dist/es/components/json-tree.js +67 -0
  7. package/{src → dist/es}/components/mime-types.js +11 -17
  8. package/dist/es/components/schema-table.js +156 -0
  9. package/dist/es/components/schema-tree.js +191 -0
  10. package/dist/es/components/tag-input.js +67 -0
  11. package/{src → dist/es}/openapi-explorer-oauth-handler.js +2 -2
  12. package/{src → dist/es}/openapi-explorer.js +364 -371
  13. package/dist/es/styles/advanced-search-styles.js +2 -0
  14. package/dist/es/styles/api-request-styles.js +2 -0
  15. package/dist/es/styles/border-styles.js +2 -0
  16. package/dist/es/styles/endpoint-styles.js +2 -0
  17. package/dist/es/styles/flex-styles.js +2 -0
  18. package/dist/es/styles/font-styles.js +2 -0
  19. package/dist/es/styles/info-styles.js +2 -0
  20. package/dist/es/styles/input-styles.js +4 -0
  21. package/dist/es/styles/nav-styles.js +2 -0
  22. package/dist/es/styles/prism-styles.js +2 -0
  23. package/dist/es/styles/schema-styles.js +2 -0
  24. package/dist/es/styles/tab-styles.js +2 -0
  25. package/dist/es/styles/table-styles.js +2 -0
  26. package/dist/es/templates/advance-search-template.js +37 -0
  27. package/dist/es/templates/callback-template.js +7 -0
  28. package/dist/es/templates/code-samples-template.js +26 -0
  29. package/dist/es/templates/components-template.js +17 -0
  30. package/dist/es/templates/endpoint-template.js +94 -0
  31. package/dist/es/templates/expanded-endpoint-template.js +32 -0
  32. package/{src → dist/es}/templates/focused-endpoint-template.js +15 -15
  33. package/dist/es/templates/navbar-template.js +46 -0
  34. package/dist/es/templates/overview-template.js +9 -0
  35. package/dist/es/templates/responsiveViewMainBodyTemplate.js +30 -0
  36. package/dist/es/templates/security-scheme-template.js +330 -0
  37. package/dist/es/templates/server-template.js +42 -0
  38. package/{src → dist/es}/utils/color-utils.js +53 -16
  39. package/{src → dist/es}/utils/common-utils.js +18 -18
  40. package/{src → dist/es}/utils/schema-utils.js +248 -124
  41. package/{src → dist/es}/utils/spec-parser.js +112 -71
  42. package/dist/es/utils/theme.js +75 -0
  43. package/{src → dist/es}/utils/xml/xml.js +41 -38
  44. package/dist/lib/components/api-request.js +957 -0
  45. package/dist/lib/components/api-response.js +206 -0
  46. package/dist/lib/components/json-tree.js +82 -0
  47. package/dist/lib/components/mime-types.js +70 -0
  48. package/dist/lib/components/schema-table.js +170 -0
  49. package/dist/lib/components/schema-tree.js +206 -0
  50. package/dist/lib/components/tag-input.js +76 -0
  51. package/dist/lib/openapi-explorer-oauth-handler.js +19 -0
  52. package/dist/lib/openapi-explorer.js +817 -0
  53. package/dist/lib/styles/advanced-search-styles.js +10 -0
  54. package/dist/lib/styles/api-request-styles.js +10 -0
  55. package/dist/lib/styles/border-styles.js +10 -0
  56. package/dist/lib/styles/endpoint-styles.js +10 -0
  57. package/dist/lib/styles/flex-styles.js +10 -0
  58. package/dist/lib/styles/font-styles.js +10 -0
  59. package/dist/lib/styles/info-styles.js +10 -0
  60. package/dist/lib/styles/input-styles.js +11 -0
  61. package/dist/lib/styles/nav-styles.js +10 -0
  62. package/dist/lib/styles/prism-styles.js +10 -0
  63. package/dist/lib/styles/schema-styles.js +10 -0
  64. package/dist/lib/styles/tab-styles.js +10 -0
  65. package/dist/lib/styles/table-styles.js +10 -0
  66. package/dist/lib/templates/advance-search-template.js +42 -0
  67. package/dist/lib/templates/callback-template.js +12 -0
  68. package/dist/lib/templates/code-samples-template.js +36 -0
  69. package/dist/lib/templates/components-template.js +27 -0
  70. package/dist/lib/templates/endpoint-template.js +111 -0
  71. package/dist/lib/templates/expanded-endpoint-template.js +48 -0
  72. package/dist/lib/templates/focused-endpoint-template.js +95 -0
  73. package/dist/lib/templates/navbar-template.js +54 -0
  74. package/dist/lib/templates/overview-template.js +16 -0
  75. package/dist/lib/templates/responsiveViewMainBodyTemplate.js +47 -0
  76. package/dist/lib/templates/security-scheme-template.js +342 -0
  77. package/dist/lib/templates/server-template.js +49 -0
  78. package/dist/lib/utils/color-utils.js +112 -0
  79. package/dist/lib/utils/common-utils.js +156 -0
  80. package/dist/lib/utils/schema-utils.js +743 -0
  81. package/dist/lib/utils/spec-parser.js +361 -0
  82. package/dist/lib/utils/theme.js +84 -0
  83. package/dist/lib/utils/xml/xml.js +239 -0
  84. package/package.json +19 -6
  85. package/dist/openapi-explorer.min.js.LICENSE.txt +0 -71
  86. package/dist/openapi-explorer.min.js.LICENSE.txt.gz +0 -0
  87. package/dist/openapi-explorer.min.js.gz +0 -0
  88. package/dist/openapi-explorer.min.js.map.gz +0 -0
  89. package/dist/report.html +0 -38
  90. package/src/components/api-request.js +0 -1244
  91. package/src/components/api-response.js +0 -340
  92. package/src/components/json-tree.js +0 -129
  93. package/src/components/schema-table.js +0 -250
  94. package/src/components/schema-tree.js +0 -280
  95. package/src/components/tag-input.js +0 -109
  96. package/src/styles/advanced-search-styles.js +0 -84
  97. package/src/styles/api-request-styles.js +0 -111
  98. package/src/styles/border-styles.js +0 -24
  99. package/src/styles/css/main.css +0 -24
  100. package/src/styles/endpoint-styles.js +0 -222
  101. package/src/styles/flex-styles.js +0 -15
  102. package/src/styles/font-styles.js +0 -266
  103. package/src/styles/info-styles.js +0 -20
  104. package/src/styles/input-styles.js +0 -236
  105. package/src/styles/nav-styles.js +0 -141
  106. package/src/styles/prism-styles.js +0 -107
  107. package/src/styles/schema-styles.js +0 -121
  108. package/src/styles/tab-styles.js +0 -44
  109. package/src/styles/table-styles.js +0 -48
  110. package/src/templates/advance-search-template.js +0 -81
  111. package/src/templates/callback-template.js +0 -63
  112. package/src/templates/code-samples-template.js +0 -35
  113. package/src/templates/components-template.js +0 -43
  114. package/src/templates/endpoint-template.js +0 -175
  115. package/src/templates/expanded-endpoint-template.js +0 -104
  116. package/src/templates/navbar-template.js +0 -175
  117. package/src/templates/overview-template.js +0 -58
  118. package/src/templates/responsiveViewMainBodyTemplate.js +0 -72
  119. package/src/templates/security-scheme-template.js +0 -487
  120. package/src/templates/server-template.js +0 -106
  121. 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
+ }