@inrupt/solid-client-authn-browser 1.11.9-alpha.1 → 1.11.9-alpha.4

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 (262) hide show
  1. package/dist/index.es.js +4 -352
  2. package/dist/index.es.js.map +1 -0
  3. package/dist/index.js +12 -360
  4. package/dist/index.js.map +1 -1
  5. package/dist/solid-client-authn.bundle.js +14 -363
  6. package/dist/solid-client-authn.bundle.js.map +1 -0
  7. package/package.json +8 -5
  8. package/.eslintrc.js +0 -16
  9. package/NOTICE +0 -5
  10. package/coverage/clover.xml +0 -547
  11. package/coverage/coverage-final.json +0 -28
  12. package/coverage/lcov-report/base.css +0 -224
  13. package/coverage/lcov-report/block-navigation.js +0 -87
  14. package/coverage/lcov-report/favicon.png +0 -0
  15. package/coverage/lcov-report/index.html +0 -266
  16. package/coverage/lcov-report/prettify.css +0 -1
  17. package/coverage/lcov-report/prettify.js +0 -2
  18. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  19. package/coverage/lcov-report/sorter.js +0 -196
  20. package/coverage/lcov-report/src/ClientAuthentication.ts.html +0 -631
  21. package/coverage/lcov-report/src/Session.ts.html +0 -1435
  22. package/coverage/lcov-report/src/constant.ts.html +0 -163
  23. package/coverage/lcov-report/src/defaultSession.ts.html +0 -460
  24. package/coverage/lcov-report/src/dependencies.ts.html +0 -400
  25. package/coverage/lcov-report/src/iframe.ts.html +0 -394
  26. package/coverage/lcov-report/src/index.browser.ts.html +0 -157
  27. package/coverage/lcov-report/src/index.html +0 -206
  28. package/coverage/lcov-report/src/login/AggregateLoginHandler.ts.html +0 -226
  29. package/coverage/lcov-report/src/login/index.html +0 -116
  30. package/coverage/lcov-report/src/login/oidc/AggregateOidcHandler.ts.html +0 -226
  31. package/coverage/lcov-report/src/login/oidc/ClientRegistrar.ts.html +0 -415
  32. package/coverage/lcov-report/src/login/oidc/IssuerConfigFetcher.ts.html +0 -646
  33. package/coverage/lcov-report/src/login/oidc/OidcLoginHandler.ts.html +0 -436
  34. package/coverage/lcov-report/src/login/oidc/Redirector.ts.html +0 -229
  35. package/coverage/lcov-report/src/login/oidc/index.html +0 -176
  36. package/coverage/lcov-report/src/login/oidc/oidcHandlers/AuthorizationCodeWithPkceOidcHandler.ts.html +0 -478
  37. package/coverage/lcov-report/src/login/oidc/oidcHandlers/OidcHandlerCanHandleTest.ts.html +0 -319
  38. package/coverage/lcov-report/src/login/oidc/oidcHandlers/index.html +0 -131
  39. package/coverage/lcov-report/src/login/oidc/redirectHandler/AggregateRedirectHandler.ts.html +0 -226
  40. package/coverage/lcov-report/src/login/oidc/redirectHandler/AuthCodeRedirectHandler.ts.html +0 -667
  41. package/coverage/lcov-report/src/login/oidc/redirectHandler/ErrorOidcHandler.ts.html +0 -283
  42. package/coverage/lcov-report/src/login/oidc/redirectHandler/FallbackRedirectHandler.ts.html +0 -265
  43. package/coverage/lcov-report/src/login/oidc/redirectHandler/index.html +0 -161
  44. package/coverage/lcov-report/src/login/oidc/refresh/TokenRefresher.ts.html +0 -385
  45. package/coverage/lcov-report/src/login/oidc/refresh/index.html +0 -116
  46. package/coverage/lcov-report/src/login/webid/WebIdLoginHandler.ts.html +0 -250
  47. package/coverage/lcov-report/src/login/webid/index.html +0 -116
  48. package/coverage/lcov-report/src/logout/GeneralLogoutHandler.ts.html +0 -220
  49. package/coverage/lcov-report/src/logout/index.html +0 -116
  50. package/coverage/lcov-report/src/sessionInfo/SessionInfoManager.ts.html +0 -775
  51. package/coverage/lcov-report/src/sessionInfo/index.html +0 -116
  52. package/coverage/lcov-report/src/storage/BrowserStorage.ts.html +0 -229
  53. package/coverage/lcov-report/src/storage/StorageUtility.ts.html +0 -214
  54. package/coverage/lcov-report/src/storage/index.html +0 -131
  55. package/coverage/lcov-report/src/util/UuidGenerator.ts.html +0 -226
  56. package/coverage/lcov-report/src/util/index.html +0 -131
  57. package/coverage/lcov-report/src/util/urlPath.ts.html +0 -208
  58. package/coverage/lcov.info +0 -1001
  59. package/dist/ClientAuthentication.js +0 -64
  60. package/dist/ClientAuthentication.js.map +0 -1
  61. package/dist/Session.js +0 -165
  62. package/dist/Session.js.map +0 -1
  63. package/dist/constant.js +0 -7
  64. package/dist/constant.js.map +0 -1
  65. package/dist/defaultSession.js +0 -48
  66. package/dist/defaultSession.js.map +0 -1
  67. package/dist/dependencies.js +0 -41
  68. package/dist/dependencies.js.map +0 -1
  69. package/dist/iframe.js +0 -43
  70. package/dist/iframe.js.map +0 -1
  71. package/dist/index.browser.d.ts +0 -1
  72. package/dist/index.browser.js +0 -28
  73. package/dist/index.browser.js.map +0 -1
  74. package/dist/login/AggregateLoginHandler.js +0 -10
  75. package/dist/login/AggregateLoginHandler.js.map +0 -1
  76. package/dist/login/oidc/AggregateOidcHandler.js +0 -10
  77. package/dist/login/oidc/AggregateOidcHandler.js.map +0 -1
  78. package/dist/login/oidc/ClientRegistrar.js +0 -51
  79. package/dist/login/oidc/ClientRegistrar.js.map +0 -1
  80. package/dist/login/oidc/IssuerConfigFetcher.js +0 -124
  81. package/dist/login/oidc/IssuerConfigFetcher.js.map +0 -1
  82. package/dist/login/oidc/OidcLoginHandler.js +0 -40
  83. package/dist/login/oidc/OidcLoginHandler.js.map +0 -1
  84. package/dist/login/oidc/Redirector.js +0 -21
  85. package/dist/login/oidc/Redirector.js.map +0 -1
  86. package/dist/login/oidc/__mocks__/IOidcOptions.d.ts +0 -2
  87. package/dist/login/oidc/__mocks__/IOidcOptions.js +0 -25
  88. package/dist/login/oidc/__mocks__/IOidcOptions.js.map +0 -1
  89. package/dist/login/oidc/oidcHandlers/AuthorizationCodeWithPkceOidcHandler.js +0 -56
  90. package/dist/login/oidc/oidcHandlers/AuthorizationCodeWithPkceOidcHandler.js.map +0 -1
  91. package/dist/login/oidc/oidcHandlers/OidcHandlerCanHandleTest.js +0 -47
  92. package/dist/login/oidc/oidcHandlers/OidcHandlerCanHandleTest.js.map +0 -1
  93. package/dist/login/oidc/redirectHandler/AggregateRedirectHandler.js +0 -10
  94. package/dist/login/oidc/redirectHandler/AggregateRedirectHandler.js.map +0 -1
  95. package/dist/login/oidc/redirectHandler/AuthCodeRedirectHandler.js +0 -92
  96. package/dist/login/oidc/redirectHandler/AuthCodeRedirectHandler.js.map +0 -1
  97. package/dist/login/oidc/redirectHandler/ErrorOidcHandler.js +0 -26
  98. package/dist/login/oidc/redirectHandler/ErrorOidcHandler.js.map +0 -1
  99. package/dist/login/oidc/redirectHandler/FallbackRedirectHandler.js +0 -20
  100. package/dist/login/oidc/redirectHandler/FallbackRedirectHandler.js.map +0 -1
  101. package/dist/login/oidc/refresh/TokenRefresher.js +0 -31
  102. package/dist/login/oidc/refresh/TokenRefresher.js.map +0 -1
  103. package/dist/login/webid/WebIdLoginHandler.js +0 -12
  104. package/dist/login/webid/WebIdLoginHandler.js.map +0 -1
  105. package/dist/logout/GeneralLogoutHandler.js +0 -15
  106. package/dist/logout/GeneralLogoutHandler.js.map +0 -1
  107. package/dist/sessionInfo/SessionInfoManager.js +0 -95
  108. package/dist/sessionInfo/SessionInfoManager.js.map +0 -1
  109. package/dist/solid-client-authn.bundle.js.LICENSE.txt +0 -17
  110. package/dist/storage/BrowserStorage.js +0 -18
  111. package/dist/storage/BrowserStorage.js.map +0 -1
  112. package/dist/storage/StorageUtility.js +0 -10
  113. package/dist/storage/StorageUtility.js.map +0 -1
  114. package/dist/util/UuidGenerator.js +0 -10
  115. package/dist/util/UuidGenerator.js.map +0 -1
  116. package/dist/util/urlPath.js +0 -11
  117. package/dist/util/urlPath.js.map +0 -1
  118. package/docs/api/Makefile +0 -76
  119. package/docs/api/README.md +0 -46
  120. package/docs/api/build/docs-assets/README.md +0 -183
  121. package/docs/api/build/docs-assets/_static/css/inrupt.css +0 -349
  122. package/docs/api/build/docs-assets/_templates/breadcrumb-navigation.html +0 -10
  123. package/docs/api/build/docs-assets/_templates/copyright.html +0 -3
  124. package/docs/api/build/docs-assets/_templates/docs-sidebar.html +0 -32
  125. package/docs/api/build/docs-assets/_templates/docs-version-selector.html +0 -21
  126. package/docs/api/build/docs-assets/_templates/jira-feedback.html +0 -21
  127. package/docs/api/build/docs-assets/_templates/layout.html +0 -34
  128. package/docs/api/build/docs-assets/_templates/matomo.html +0 -18
  129. package/docs/api/build/docs-assets/_templates/navbar-logo.html +0 -5
  130. package/docs/api/build/docs-assets/_templates/navbar-nav.html +0 -44
  131. package/docs/api/build/docs-assets/_templates/prev-next.html +0 -19
  132. package/docs/api/build/docs-assets/_templates/versioned-canonical.html +0 -8
  133. package/docs/api/build/docs-assets/themes/inrupt/theme.conf +0 -18
  134. package/docs/api/build/doctrees/classes/ConfigurationError.doctree +0 -0
  135. package/docs/api/build/doctrees/classes/InMemoryStorage.doctree +0 -0
  136. package/docs/api/build/doctrees/classes/NotImplementedError.doctree +0 -0
  137. package/docs/api/build/doctrees/classes/Session.doctree +0 -0
  138. package/docs/api/build/doctrees/environment.pickle +0 -0
  139. package/docs/api/build/doctrees/functions.doctree +0 -0
  140. package/docs/api/build/doctrees/index.doctree +0 -0
  141. package/docs/api/build/doctrees/interfaces/ILoginInputOptions.doctree +0 -0
  142. package/docs/api/build/doctrees/interfaces/ISessionInfo.doctree +0 -0
  143. package/docs/api/build/doctrees/interfaces/ISessionOptions.doctree +0 -0
  144. package/docs/api/build/doctrees/interfaces/IStorage.doctree +0 -0
  145. package/docs/api/build/html/.buildinfo +0 -4
  146. package/docs/api/build/html/_static/basic.css +0 -905
  147. package/docs/api/build/html/_static/css/blank.css +0 -2
  148. package/docs/api/build/html/_static/css/index.ff1ffe594081f20da1ef19478df9384b.css +0 -6
  149. package/docs/api/build/html/_static/css/inrupt.css +0 -349
  150. package/docs/api/build/html/_static/css/theme.css +0 -120
  151. package/docs/api/build/html/_static/doctools.js +0 -323
  152. package/docs/api/build/html/_static/documentation_options.js +0 -12
  153. package/docs/api/build/html/_static/file.png +0 -0
  154. package/docs/api/build/html/_static/jquery-3.5.1.js +0 -10872
  155. package/docs/api/build/html/_static/jquery.js +0 -2
  156. package/docs/api/build/html/_static/js/index.be7d3bbb2ef33a8344ce.js +0 -32
  157. package/docs/api/build/html/_static/language_data.js +0 -297
  158. package/docs/api/build/html/_static/minus.png +0 -0
  159. package/docs/api/build/html/_static/plus.png +0 -0
  160. package/docs/api/build/html/_static/pygments.css +0 -74
  161. package/docs/api/build/html/_static/searchtools.js +0 -529
  162. package/docs/api/build/html/_static/underscore-1.13.1.js +0 -2042
  163. package/docs/api/build/html/_static/underscore.js +0 -6
  164. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/LICENSE.txt +0 -34
  165. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/css/all.min.css +0 -5
  166. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.eot +0 -0
  167. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.svg +0 -3570
  168. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.ttf +0 -0
  169. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff +0 -0
  170. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2 +0 -0
  171. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.eot +0 -0
  172. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.svg +0 -803
  173. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.ttf +0 -0
  174. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff +0 -0
  175. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff2 +0 -0
  176. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.eot +0 -0
  177. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.svg +0 -4938
  178. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.ttf +0 -0
  179. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff +0 -0
  180. package/docs/api/build/html/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2 +0 -0
  181. package/docs/api/build/html/_static/webpack-macros.html +0 -25
  182. package/docs/api/build/html/classes/ConfigurationError.html +0 -726
  183. package/docs/api/build/html/classes/InMemoryStorage.html +0 -636
  184. package/docs/api/build/html/classes/NotImplementedError.html +0 -726
  185. package/docs/api/build/html/classes/Session.html +0 -2428
  186. package/docs/api/build/html/functions.html +0 -834
  187. package/docs/api/build/html/genindex.html +0 -311
  188. package/docs/api/build/html/index.html +0 -342
  189. package/docs/api/build/html/interfaces/ILoginInputOptions.html +0 -595
  190. package/docs/api/build/html/interfaces/ISessionInfo.html +0 -481
  191. package/docs/api/build/html/interfaces/ISessionOptions.html +0 -463
  192. package/docs/api/build/html/interfaces/IStorage.html +0 -531
  193. package/docs/api/build/html/objects.inv +0 -0
  194. package/docs/api/build/html/search.html +0 -340
  195. package/docs/api/build/html/searchindex.js +0 -1
  196. package/docs/api/build/source/classes/ConfigurationError.md +0 -159
  197. package/docs/api/build/source/classes/InMemoryStorage.md +0 -112
  198. package/docs/api/build/source/classes/NotImplementedError.md +0 -159
  199. package/docs/api/build/source/classes/Session.md +0 -907
  200. package/docs/api/build/source/functions.md +0 -235
  201. package/docs/api/build/source/index.rst +0 -13
  202. package/docs/api/build/source/interfaces/ILoginInputOptions.md +0 -109
  203. package/docs/api/build/source/interfaces/ISessionInfo.md +0 -63
  204. package/docs/api/build/source/interfaces/ISessionOptions.md +0 -60
  205. package/docs/api/build/source/interfaces/IStorage.md +0 -76
  206. package/docs/api/conf.py +0 -135
  207. package/docs/api/redirects.txt +0 -41
  208. package/docs/api/requirements.txt +0 -5
  209. package/docs/api/source/api/.nojekyll +0 -1
  210. package/docs/api/source/api/classes/ConfigurationError.md +0 -163
  211. package/docs/api/source/api/classes/InMemoryStorage.md +0 -112
  212. package/docs/api/source/api/classes/NotImplementedError.md +0 -163
  213. package/docs/api/source/api/classes/Session.md +0 -1426
  214. package/docs/api/source/api/index.md +0 -251
  215. package/docs/api/source/api/interfaces/ILoginInputOptions.md +0 -109
  216. package/docs/api/source/api/interfaces/ISessionInfo.md +0 -63
  217. package/docs/api/source/api/interfaces/ISessionOptions.md +0 -60
  218. package/docs/api/source/api/interfaces/IStorage.md +0 -76
  219. package/docs/api/source/functions.md +0 -3
  220. package/docs/api/source/index.rst +0 -13
  221. package/examples/demoAuthentiationMonitor/index.js +0 -34
  222. package/examples/demoAuthentiationMonitor/package-lock.json +0 -916
  223. package/examples/demoAuthentiationMonitor/package.json +0 -15
  224. package/examples/demoClientApp/.babelrc +0 -3
  225. package/examples/demoClientApp/package-lock.json +0 -11710
  226. package/examples/demoClientApp/package.json +0 -37
  227. package/examples/demoClientApp/src/DemoClientApp.js +0 -686
  228. package/examples/demoClientApp/src/index.html +0 -142
  229. package/examples/demoClientApp/src/index.js +0 -26
  230. package/examples/demoClientApp/webpack.config.js +0 -39
  231. package/examples/single/bundle/.babelrc +0 -3
  232. package/examples/single/bundle/README.md +0 -11
  233. package/examples/single/bundle/client-app-profile.ttl +0 -10
  234. package/examples/single/bundle/package-lock.json +0 -11196
  235. package/examples/single/bundle/package.json +0 -31
  236. package/examples/single/bundle/src/App.js +0 -123
  237. package/examples/single/bundle/src/index.html +0 -10
  238. package/examples/single/bundle/src/index.js +0 -26
  239. package/examples/single/bundle/webpack.config.js +0 -33
  240. package/examples/single/script/README.md +0 -11
  241. package/examples/single/script/index.html +0 -36
  242. package/examples/single/script/package-lock.json +0 -1293
  243. package/examples/single/script/package.json +0 -20
  244. package/examples/single/script/server.ts +0 -18
  245. package/jest.config.js +0 -10
  246. package/licenses.csv +0 -147
  247. package/rollup.config.js +0 -54
  248. package/sampleFlows/SolidAuthClientArchitecture.png +0 -0
  249. package/sampleFlows/authorization-code-with-pkce.png +0 -0
  250. package/sampleFlows/authorization-code-with-pkce.seqdiag +0 -46
  251. package/sampleFlows/authorization-code.png +0 -0
  252. package/sampleFlows/authorization-code.seqdiag +0 -50
  253. package/sampleFlows/client-credentials.png +0 -0
  254. package/sampleFlows/client-credentials.seqdiag +0 -38
  255. package/sampleFlows/legacy-implicit-flow.png +0 -0
  256. package/sampleFlows/legacy-implicit-flow.seqdiag +0 -43
  257. package/sampleFlows/self-signed.png +0 -0
  258. package/sampleFlows/self-signed.seqdiag +0 -49
  259. package/sampleFlows/signatory-access-control.seqdiag +0 -36
  260. package/sampleFlows/signatory-access-control.svg +0 -1
  261. package/tsconfig.eslint.json +0 -6
  262. package/tsconfig.json +0 -17
@@ -1,529 +0,0 @@
1
- /*
2
- * searchtools.js
3
- * ~~~~~~~~~~~~~~~~
4
- *
5
- * Sphinx JavaScript utilities for the full-text search.
6
- *
7
- * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
8
- * :license: BSD, see LICENSE for details.
9
- *
10
- */
11
-
12
- if (!Scorer) {
13
- /**
14
- * Simple result scoring code.
15
- */
16
- var Scorer = {
17
- // Implement the following function to further tweak the score for each result
18
- // The function takes a result array [filename, title, anchor, descr, score]
19
- // and returns the new score.
20
- /*
21
- score: function(result) {
22
- return result[4];
23
- },
24
- */
25
-
26
- // query matches the full name of an object
27
- objNameMatch: 11,
28
- // or matches in the last dotted part of the object name
29
- objPartialMatch: 6,
30
- // Additive scores depending on the priority of the object
31
- objPrio: {0: 15, // used to be importantResults
32
- 1: 5, // used to be objectResults
33
- 2: -5}, // used to be unimportantResults
34
- // Used when the priority is not in the mapping.
35
- objPrioDefault: 0,
36
-
37
- // query found in title
38
- title: 15,
39
- partialTitle: 7,
40
- // query found in terms
41
- term: 5,
42
- partialTerm: 2
43
- };
44
- }
45
-
46
- if (!splitQuery) {
47
- function splitQuery(query) {
48
- return query.split(/\s+/);
49
- }
50
- }
51
-
52
- /**
53
- * Search Module
54
- */
55
- var Search = {
56
-
57
- _index : null,
58
- _queued_query : null,
59
- _pulse_status : -1,
60
-
61
- htmlToText : function(htmlString) {
62
- var virtualDocument = document.implementation.createHTMLDocument('virtual');
63
- var htmlElement = $(htmlString, virtualDocument);
64
- htmlElement.find('.headerlink').remove();
65
- docContent = htmlElement.find('[role=main]')[0];
66
- if(docContent === undefined) {
67
- console.warn("Content block not found. Sphinx search tries to obtain it " +
68
- "via '[role=main]'. Could you check your theme or template.");
69
- return "";
70
- }
71
- return docContent.textContent || docContent.innerText;
72
- },
73
-
74
- init : function() {
75
- var params = $.getQueryParameters();
76
- if (params.q) {
77
- var query = params.q[0];
78
- $('input[name="q"]')[0].value = query;
79
- this.performSearch(query);
80
- }
81
- },
82
-
83
- loadIndex : function(url) {
84
- $.ajax({type: "GET", url: url, data: null,
85
- dataType: "script", cache: true,
86
- complete: function(jqxhr, textstatus) {
87
- if (textstatus != "success") {
88
- document.getElementById("searchindexloader").src = url;
89
- }
90
- }});
91
- },
92
-
93
- setIndex : function(index) {
94
- var q;
95
- this._index = index;
96
- if ((q = this._queued_query) !== null) {
97
- this._queued_query = null;
98
- Search.query(q);
99
- }
100
- },
101
-
102
- hasIndex : function() {
103
- return this._index !== null;
104
- },
105
-
106
- deferQuery : function(query) {
107
- this._queued_query = query;
108
- },
109
-
110
- stopPulse : function() {
111
- this._pulse_status = 0;
112
- },
113
-
114
- startPulse : function() {
115
- if (this._pulse_status >= 0)
116
- return;
117
- function pulse() {
118
- var i;
119
- Search._pulse_status = (Search._pulse_status + 1) % 4;
120
- var dotString = '';
121
- for (i = 0; i < Search._pulse_status; i++)
122
- dotString += '.';
123
- Search.dots.text(dotString);
124
- if (Search._pulse_status > -1)
125
- window.setTimeout(pulse, 500);
126
- }
127
- pulse();
128
- },
129
-
130
- /**
131
- * perform a search for something (or wait until index is loaded)
132
- */
133
- performSearch : function(query) {
134
- // create the required interface elements
135
- this.out = $('#search-results');
136
- this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
137
- this.dots = $('<span></span>').appendTo(this.title);
138
- this.status = $('<p class="search-summary">&nbsp;</p>').appendTo(this.out);
139
- this.output = $('<ul class="search"/>').appendTo(this.out);
140
-
141
- $('#search-progress').text(_('Preparing search...'));
142
- this.startPulse();
143
-
144
- // index already loaded, the browser was quick!
145
- if (this.hasIndex())
146
- this.query(query);
147
- else
148
- this.deferQuery(query);
149
- },
150
-
151
- /**
152
- * execute search (requires search index to be loaded)
153
- */
154
- query : function(query) {
155
- var i;
156
-
157
- // stem the searchterms and add them to the correct list
158
- var stemmer = new Stemmer();
159
- var searchterms = [];
160
- var excluded = [];
161
- var hlterms = [];
162
- var tmp = splitQuery(query);
163
- var objectterms = [];
164
- for (i = 0; i < tmp.length; i++) {
165
- if (tmp[i] !== "") {
166
- objectterms.push(tmp[i].toLowerCase());
167
- }
168
-
169
- if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
170
- // skip this "word"
171
- continue;
172
- }
173
- // stem the word
174
- var word = stemmer.stemWord(tmp[i].toLowerCase());
175
- // prevent stemmer from cutting word smaller than two chars
176
- if(word.length < 3 && tmp[i].length >= 3) {
177
- word = tmp[i];
178
- }
179
- var toAppend;
180
- // select the correct list
181
- if (word[0] == '-') {
182
- toAppend = excluded;
183
- word = word.substr(1);
184
- }
185
- else {
186
- toAppend = searchterms;
187
- hlterms.push(tmp[i].toLowerCase());
188
- }
189
- // only add if not already in the list
190
- if (!$u.contains(toAppend, word))
191
- toAppend.push(word);
192
- }
193
- var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
194
-
195
- // console.debug('SEARCH: searching for:');
196
- // console.info('required: ', searchterms);
197
- // console.info('excluded: ', excluded);
198
-
199
- // prepare search
200
- var terms = this._index.terms;
201
- var titleterms = this._index.titleterms;
202
-
203
- // array of [filename, title, anchor, descr, score]
204
- var results = [];
205
- $('#search-progress').empty();
206
-
207
- // lookup as object
208
- for (i = 0; i < objectterms.length; i++) {
209
- var others = [].concat(objectterms.slice(0, i),
210
- objectterms.slice(i+1, objectterms.length));
211
- results = results.concat(this.performObjectSearch(objectterms[i], others));
212
- }
213
-
214
- // lookup as search terms in fulltext
215
- results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
216
-
217
- // let the scorer override scores with a custom scoring function
218
- if (Scorer.score) {
219
- for (i = 0; i < results.length; i++)
220
- results[i][4] = Scorer.score(results[i]);
221
- }
222
-
223
- // now sort the results by score (in opposite order of appearance, since the
224
- // display function below uses pop() to retrieve items) and then
225
- // alphabetically
226
- results.sort(function(a, b) {
227
- var left = a[4];
228
- var right = b[4];
229
- if (left > right) {
230
- return 1;
231
- } else if (left < right) {
232
- return -1;
233
- } else {
234
- // same score: sort alphabetically
235
- left = a[1].toLowerCase();
236
- right = b[1].toLowerCase();
237
- return (left > right) ? -1 : ((left < right) ? 1 : 0);
238
- }
239
- });
240
-
241
- // for debugging
242
- //Search.lastresults = results.slice(); // a copy
243
- //console.info('search results:', Search.lastresults);
244
-
245
- // print the results
246
- var resultCount = results.length;
247
- function displayNextItem() {
248
- // results left, load the summary and display it
249
- if (results.length) {
250
- var item = results.pop();
251
- var listItem = $('<li></li>');
252
- var requestUrl = "";
253
- var linkUrl = "";
254
- if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
255
- // dirhtml builder
256
- var dirname = item[0] + '/';
257
- if (dirname.match(/\/index\/$/)) {
258
- dirname = dirname.substring(0, dirname.length-6);
259
- } else if (dirname == 'index/') {
260
- dirname = '';
261
- }
262
- requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname;
263
- linkUrl = requestUrl;
264
-
265
- } else {
266
- // normal html builders
267
- requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX;
268
- linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX;
269
- }
270
- listItem.append($('<a/>').attr('href',
271
- linkUrl +
272
- highlightstring + item[2]).html(item[1]));
273
- if (item[3]) {
274
- listItem.append($('<span> (' + item[3] + ')</span>'));
275
- Search.output.append(listItem);
276
- setTimeout(function() {
277
- displayNextItem();
278
- }, 5);
279
- } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
280
- $.ajax({url: requestUrl,
281
- dataType: "text",
282
- complete: function(jqxhr, textstatus) {
283
- var data = jqxhr.responseText;
284
- if (data !== '' && data !== undefined) {
285
- var summary = Search.makeSearchSummary(data, searchterms, hlterms);
286
- if (summary) {
287
- listItem.append(summary);
288
- }
289
- }
290
- Search.output.append(listItem);
291
- setTimeout(function() {
292
- displayNextItem();
293
- }, 5);
294
- }});
295
- } else {
296
- // no source available, just display title
297
- Search.output.append(listItem);
298
- setTimeout(function() {
299
- displayNextItem();
300
- }, 5);
301
- }
302
- }
303
- // search finished, update title and status message
304
- else {
305
- Search.stopPulse();
306
- Search.title.text(_('Search Results'));
307
- if (!resultCount)
308
- Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
309
- else
310
- Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
311
- Search.status.fadeIn(500);
312
- }
313
- }
314
- displayNextItem();
315
- },
316
-
317
- /**
318
- * search for object names
319
- */
320
- performObjectSearch : function(object, otherterms) {
321
- var filenames = this._index.filenames;
322
- var docnames = this._index.docnames;
323
- var objects = this._index.objects;
324
- var objnames = this._index.objnames;
325
- var titles = this._index.titles;
326
-
327
- var i;
328
- var results = [];
329
-
330
- for (var prefix in objects) {
331
- for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) {
332
- var match = objects[prefix][iMatch];
333
- var name = match[4];
334
- var fullname = (prefix ? prefix + '.' : '') + name;
335
- var fullnameLower = fullname.toLowerCase()
336
- if (fullnameLower.indexOf(object) > -1) {
337
- var score = 0;
338
- var parts = fullnameLower.split('.');
339
- // check for different match types: exact matches of full name or
340
- // "last name" (i.e. last dotted part)
341
- if (fullnameLower == object || parts[parts.length - 1] == object) {
342
- score += Scorer.objNameMatch;
343
- // matches in last name
344
- } else if (parts[parts.length - 1].indexOf(object) > -1) {
345
- score += Scorer.objPartialMatch;
346
- }
347
- var objname = objnames[match[1]][2];
348
- var title = titles[match[0]];
349
- // If more than one term searched for, we require other words to be
350
- // found in the name/title/description
351
- if (otherterms.length > 0) {
352
- var haystack = (prefix + ' ' + name + ' ' +
353
- objname + ' ' + title).toLowerCase();
354
- var allfound = true;
355
- for (i = 0; i < otherterms.length; i++) {
356
- if (haystack.indexOf(otherterms[i]) == -1) {
357
- allfound = false;
358
- break;
359
- }
360
- }
361
- if (!allfound) {
362
- continue;
363
- }
364
- }
365
- var descr = objname + _(', in ') + title;
366
-
367
- var anchor = match[3];
368
- if (anchor === '')
369
- anchor = fullname;
370
- else if (anchor == '-')
371
- anchor = objnames[match[1]][1] + '-' + fullname;
372
- // add custom score for some objects according to scorer
373
- if (Scorer.objPrio.hasOwnProperty(match[2])) {
374
- score += Scorer.objPrio[match[2]];
375
- } else {
376
- score += Scorer.objPrioDefault;
377
- }
378
- results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
379
- }
380
- }
381
- }
382
-
383
- return results;
384
- },
385
-
386
- /**
387
- * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
388
- */
389
- escapeRegExp : function(string) {
390
- return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
391
- },
392
-
393
- /**
394
- * search for full-text terms in the index
395
- */
396
- performTermsSearch : function(searchterms, excluded, terms, titleterms) {
397
- var docnames = this._index.docnames;
398
- var filenames = this._index.filenames;
399
- var titles = this._index.titles;
400
-
401
- var i, j, file;
402
- var fileMap = {};
403
- var scoreMap = {};
404
- var results = [];
405
-
406
- // perform the search on the required terms
407
- for (i = 0; i < searchterms.length; i++) {
408
- var word = searchterms[i];
409
- var files = [];
410
- var _o = [
411
- {files: terms[word], score: Scorer.term},
412
- {files: titleterms[word], score: Scorer.title}
413
- ];
414
- // add support for partial matches
415
- if (word.length > 2) {
416
- var word_regex = this.escapeRegExp(word);
417
- for (var w in terms) {
418
- if (w.match(word_regex) && !terms[word]) {
419
- _o.push({files: terms[w], score: Scorer.partialTerm})
420
- }
421
- }
422
- for (var w in titleterms) {
423
- if (w.match(word_regex) && !titleterms[word]) {
424
- _o.push({files: titleterms[w], score: Scorer.partialTitle})
425
- }
426
- }
427
- }
428
-
429
- // no match but word was a required one
430
- if ($u.every(_o, function(o){return o.files === undefined;})) {
431
- break;
432
- }
433
- // found search word in contents
434
- $u.each(_o, function(o) {
435
- var _files = o.files;
436
- if (_files === undefined)
437
- return
438
-
439
- if (_files.length === undefined)
440
- _files = [_files];
441
- files = files.concat(_files);
442
-
443
- // set score for the word in each file to Scorer.term
444
- for (j = 0; j < _files.length; j++) {
445
- file = _files[j];
446
- if (!(file in scoreMap))
447
- scoreMap[file] = {};
448
- scoreMap[file][word] = o.score;
449
- }
450
- });
451
-
452
- // create the mapping
453
- for (j = 0; j < files.length; j++) {
454
- file = files[j];
455
- if (file in fileMap && fileMap[file].indexOf(word) === -1)
456
- fileMap[file].push(word);
457
- else
458
- fileMap[file] = [word];
459
- }
460
- }
461
-
462
- // now check if the files don't contain excluded terms
463
- for (file in fileMap) {
464
- var valid = true;
465
-
466
- // check if all requirements are matched
467
- var filteredTermCount = // as search terms with length < 3 are discarded: ignore
468
- searchterms.filter(function(term){return term.length > 2}).length
469
- if (
470
- fileMap[file].length != searchterms.length &&
471
- fileMap[file].length != filteredTermCount
472
- ) continue;
473
-
474
- // ensure that none of the excluded terms is in the search result
475
- for (i = 0; i < excluded.length; i++) {
476
- if (terms[excluded[i]] == file ||
477
- titleterms[excluded[i]] == file ||
478
- $u.contains(terms[excluded[i]] || [], file) ||
479
- $u.contains(titleterms[excluded[i]] || [], file)) {
480
- valid = false;
481
- break;
482
- }
483
- }
484
-
485
- // if we have still a valid result we can add it to the result list
486
- if (valid) {
487
- // select one (max) score for the file.
488
- // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
489
- var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
490
- results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
491
- }
492
- }
493
- return results;
494
- },
495
-
496
- /**
497
- * helper function to return a node containing the
498
- * search summary for a given text. keywords is a list
499
- * of stemmed words, hlwords is the list of normal, unstemmed
500
- * words. the first one is used to find the occurrence, the
501
- * latter for highlighting it.
502
- */
503
- makeSearchSummary : function(htmlText, keywords, hlwords) {
504
- var text = Search.htmlToText(htmlText);
505
- if (text == "") {
506
- return null;
507
- }
508
- var textLower = text.toLowerCase();
509
- var start = 0;
510
- $.each(keywords, function() {
511
- var i = textLower.indexOf(this.toLowerCase());
512
- if (i > -1)
513
- start = i;
514
- });
515
- start = Math.max(start - 120, 0);
516
- var excerpt = ((start > 0) ? '...' : '') +
517
- $.trim(text.substr(start, 240)) +
518
- ((start + 240 - text.length) ? '...' : '');
519
- var rv = $('<p class="context"></p>').text(excerpt);
520
- $.each(hlwords, function() {
521
- rv = rv.highlightText(this, 'highlighted');
522
- });
523
- return rv;
524
- }
525
- };
526
-
527
- $(document).ready(function() {
528
- Search.init();
529
- });