Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Initial import of Couchbase ELMAH provider with sample app

  • Loading branch information...
commit d366082e487cb72f6f28da26c6875594e85ac877 1 parent a8bf12b
@johnzablocki johnzablocki authored
Showing with 153,278 additions and 2 deletions.
  1. +30 −2 README.md
  2. BIN  lib/Couchbase/Couchbase.dll
  3. BIN  lib/Couchbase/Couchbase.pdb
  4. BIN  lib/Couchbase/Enyim.Caching.dll
  5. BIN  lib/Couchbase/Enyim.Caching.pdb
  6. BIN  lib/Couchbase/Hammock.dll
  7. BIN  lib/Couchbase/Hammock.pdb
  8. BIN  lib/Couchbase/Newtonsoft.Json.dll
  9. BIN  lib/Couchbase/Newtonsoft.Json.pdb
  10. +7,320 −0 lib/Couchbase/Newtonsoft.Json.xml
  11. +48 −0 src/Elmah.Couchbase/CouchbaseClientFactory.cs
  12. +146 −0 src/Elmah.Couchbase/CouchbaseErrorLog.cs
  13. +6 −0 src/Elmah.Couchbase/CouchbaseErrorLog.json
  14. +73 −0 src/Elmah.Couchbase/Elmah.Couchbase.csproj
  15. +2 −0  src/Elmah.Couchbase/Elmah.Couchbase.csproj.DotSettings.user
  16. +31 −0 src/Elmah.Couchbase/Elmah.Couchbase.sln
  17. +2 −0  src/Elmah.Couchbase/Elmah.Couchbase.sln.DotSettings.user
  18. BIN  src/Elmah.Couchbase/Elmah.Couchbase.suo
  19. +36 −0 src/Elmah.Couchbase/Properties/AssemblyInfo.cs
  20. BIN  src/Elmah.Couchbase/_ReSharper.Elmah.Couchbase/ProjectModel/projectModel.dat
  21. +5 −0 src/Elmah.Couchbase/packages.config
  22. BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/CouchbaseNetClient.1.1.6.nupkg
  23. BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Couchbase.dll
  24. BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Couchbase.pdb
  25. +454 −0 src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Couchbase.xml
  26. BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Enyim.Caching.dll
  27. BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Enyim.Caching.pdb
  28. +2,026 −0 src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Enyim.Caching.xml
  29. BIN  src/Elmah.Couchbase/packages/EntityFramework.4.1.10331.0/EntityFramework.4.1.10331.0.nupkg
  30. BIN  src/Elmah.Couchbase/packages/EntityFramework.4.1.10331.0/lib/EntityFramework.dll
  31. +13,206 −0 src/Elmah.Couchbase/packages/EntityFramework.4.1.10331.0/lib/EntityFramework.xml
  32. +969 −0 src/Elmah.Couchbase/packages/Modernizr.1.7/Content/Scripts/modernizr-1.7.js
  33. +10 −0 src/Elmah.Couchbase/packages/Modernizr.1.7/Content/Scripts/modernizr-1.7.min.js
  34. BIN  src/Elmah.Couchbase/packages/Modernizr.1.7/Modernizr.1.7.nupkg
  35. BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/Newtonsoft.Json.4.5.7.nupkg
  36. BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net20/Newtonsoft.Json.dll
  37. +8,204 −0 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net20/Newtonsoft.Json.xml
  38. BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net35/Newtonsoft.Json.dll
  39. +7,340 −0 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net35/Newtonsoft.Json.xml
  40. BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net40/Newtonsoft.Json.dll
  41. +7,583 −0 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net40/Newtonsoft.Json.xml
  42. BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl3-wp/Newtonsoft.Json.dll
  43. +6,883 −0 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl3-wp/Newtonsoft.Json.xml
  44. BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl4-windowsphone71/Newtonsoft.Json.dll
  45. +6,883 −0 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl4-windowsphone71/Newtonsoft.Json.xml
  46. BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl4/Newtonsoft.Json.dll
  47. +6,905 −0 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl4/Newtonsoft.Json.xml
  48. BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/winrt45/Newtonsoft.Json.dll
  49. +7,101 −0 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/winrt45/Newtonsoft.Json.xml
  50. +15 −0 src/Elmah.Couchbase/packages/elmah.1.2.2/Readme.txt
  51. +15 −0 src/Elmah.Couchbase/packages/elmah.1.2.2/content/App_Readme/Elmah.txt
  52. +59 −0 src/Elmah.Couchbase/packages/elmah.1.2.2/content/web.config.transform
  53. BIN  src/Elmah.Couchbase/packages/elmah.1.2.2/elmah.1.2.2.nupkg
  54. BIN  src/Elmah.Couchbase/packages/elmah.corelibrary.1.2.2/elmah.corelibrary.1.2.2.nupkg
  55. BIN  src/Elmah.Couchbase/packages/elmah.corelibrary.1.2.2/lib/Elmah.dll
  56. +8,325 −0 src/Elmah.Couchbase/packages/jQuery.1.5.1/Content/Scripts/jquery-1.5.1.js
  57. +19 −0 src/Elmah.Couchbase/packages/jQuery.1.5.1/Content/Scripts/jquery-1.5.1.min.js
  58. BIN  src/Elmah.Couchbase/packages/jQuery.1.5.1/jQuery.1.5.1.nupkg
  59. BIN  ...chbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png
  60. BIN  ...hbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png
  61. BIN  ...hbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png
  62. BIN  ...hbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
  63. BIN  ...hbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png
  64. BIN  ...hbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png
  65. BIN  ...hbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png
  66. BIN  ...kages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png
  67. BIN  ...Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_222222_256x240.png
  68. BIN  ...Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_2e83ff_256x240.png
  69. BIN  ...Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_454545_256x240.png
  70. BIN  ...Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_888888_256x240.png
  71. BIN  ...Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_cd0a0a_256x240.png
  72. +24 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.accordion.css
  73. +16 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.all.css
  74. +62 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.autocomplete.css
  75. +11 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.base.css
  76. +43 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.button.css
  77. +46 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.core.css
  78. +73 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.datepicker.css
  79. +26 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.dialog.css
  80. +16 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.progressbar.css
  81. +25 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.resizable.css
  82. +15 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.selectable.css
  83. +29 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.slider.css
  84. +23 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.tabs.css
  85. +257 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.theme.css
  86. +11,700 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Scripts/jquery-ui-1.8.11.js
  87. +938 −0 src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/Content/Scripts/jquery-ui-1.8.11.min.js
  88. BIN  src/Elmah.Couchbase/packages/jQuery.UI.Combined.1.8.11/jQuery.UI.Combined.1.8.11.nupkg
  89. +1,299 −0 src/Elmah.Couchbase/packages/jQuery.Validation.1.8.0/Content/Scripts/jquery.validate-vsdoc.js
  90. +1,162 −0 src/Elmah.Couchbase/packages/jQuery.Validation.1.8.0/Content/Scripts/jquery.validate.js
  91. +53 −0 src/Elmah.Couchbase/packages/jQuery.Validation.1.8.0/Content/Scripts/jquery.validate.min.js
  92. BIN  src/Elmah.Couchbase/packages/jQuery.Validation.1.8.0/jQuery.Validation.1.8.0.nupkg
  93. +9,110 −0 src/Elmah.Couchbase/packages/jQuery.vsdoc.1.5.1/Content/Scripts/jquery-1.5.1-vsdoc.js
  94. BIN  src/Elmah.Couchbase/packages/jQuery.vsdoc.1.5.1/jQuery.vsdoc.1.5.1.nupkg
  95. +5 −0 src/Elmah.Couchbase/packages/repositories.config
  96. +15 −0 src/ElmahCouchbaseSample/App_Readme/Elmah.txt
  97. +324 −0 src/ElmahCouchbaseSample/Content/Site.css
  98. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png
  99. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png
  100. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png
  101. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
  102. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png
  103. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png
  104. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png
  105. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png
  106. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-icons_222222_256x240.png
  107. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-icons_2e83ff_256x240.png
  108. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-icons_454545_256x240.png
  109. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-icons_888888_256x240.png
  110. BIN  src/ElmahCouchbaseSample/Content/themes/base/images/ui-icons_cd0a0a_256x240.png
  111. +24 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.accordion.css
  112. +16 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.all.css
  113. +62 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.autocomplete.css
  114. +11 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.base.css
  115. +43 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.button.css
  116. +46 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.core.css
  117. +73 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.datepicker.css
  118. +26 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.dialog.css
  119. +16 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.progressbar.css
  120. +25 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.resizable.css
  121. +15 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.selectable.css
  122. +29 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.slider.css
  123. +23 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.tabs.css
  124. +257 −0 src/ElmahCouchbaseSample/Content/themes/base/jquery.ui.theme.css
  125. +193 −0 src/ElmahCouchbaseSample/Controllers/AccountController.cs
  126. +23 −0 src/ElmahCouchbaseSample/Controllers/HomeController.cs
  127. +188 −0 src/ElmahCouchbaseSample/ElmahCouchbaseSample.csproj
  128. +2 −0  src/ElmahCouchbaseSample/ElmahCouchbaseSample.csproj.DotSettings.user
  129. +28 −0 src/ElmahCouchbaseSample/ElmahCouchbaseSample.csproj.user
  130. +1 −0  src/ElmahCouchbaseSample/Global.asax
  131. +40 −0 src/ElmahCouchbaseSample/Global.asax.cs
  132. +67 −0 src/ElmahCouchbaseSample/Models/AccountModels.cs
  133. +35 −0 src/ElmahCouchbaseSample/Properties/AssemblyInfo.cs
  134. +7,117 −0 src/ElmahCouchbaseSample/Scripts/MicrosoftAjax.debug.js
  135. +6 −0 src/ElmahCouchbaseSample/Scripts/MicrosoftAjax.js
  136. +408 −0 src/ElmahCouchbaseSample/Scripts/MicrosoftMvcAjax.debug.js
  137. +25 −0 src/ElmahCouchbaseSample/Scripts/MicrosoftMvcAjax.js
  138. +883 −0 src/ElmahCouchbaseSample/Scripts/MicrosoftMvcValidation.debug.js
  139. +55 −0 src/ElmahCouchbaseSample/Scripts/MicrosoftMvcValidation.js
  140. +9,110 −0 src/ElmahCouchbaseSample/Scripts/jquery-1.5.1-vsdoc.js
  141. +8,325 −0 src/ElmahCouchbaseSample/Scripts/jquery-1.5.1.js
  142. +19 −0 src/ElmahCouchbaseSample/Scripts/jquery-1.5.1.min.js
  143. +11,700 −0 src/ElmahCouchbaseSample/Scripts/jquery-ui-1.8.11.js
  144. +938 −0 src/ElmahCouchbaseSample/Scripts/jquery-ui-1.8.11.min.js
  145. +165 −0 src/ElmahCouchbaseSample/Scripts/jquery.unobtrusive-ajax.js
  146. +5 −0 src/ElmahCouchbaseSample/Scripts/jquery.unobtrusive-ajax.min.js
  147. +1,299 −0 src/ElmahCouchbaseSample/Scripts/jquery.validate-vsdoc.js
  148. +1,162 −0 src/ElmahCouchbaseSample/Scripts/jquery.validate.js
  149. +53 −0 src/ElmahCouchbaseSample/Scripts/jquery.validate.min.js
  150. +319 −0 src/ElmahCouchbaseSample/Scripts/jquery.validate.unobtrusive.js
  151. +5 −0 src/ElmahCouchbaseSample/Scripts/jquery.validate.unobtrusive.min.js
  152. +969 −0 src/ElmahCouchbaseSample/Scripts/modernizr-1.7.js
  153. +10 −0 src/ElmahCouchbaseSample/Scripts/modernizr-1.7.min.js
  154. +53 −0 src/ElmahCouchbaseSample/Views/Account/ChangePassword.cshtml
  155. +8 −0 src/ElmahCouchbaseSample/Views/Account/ChangePasswordSuccess.cshtml
  156. +48 −0 src/ElmahCouchbaseSample/Views/Account/LogOn.cshtml
  157. +61 −0 src/ElmahCouchbaseSample/Views/Account/Register.cshtml
  158. +8 −0 src/ElmahCouchbaseSample/Views/Home/About.cshtml
  159. +8 −0 src/ElmahCouchbaseSample/Views/Home/Index.cshtml
  160. +9 −0 src/ElmahCouchbaseSample/Views/Shared/Error.cshtml
  161. +33 −0 src/ElmahCouchbaseSample/Views/Shared/_Layout.cshtml
  162. +7 −0 src/ElmahCouchbaseSample/Views/Shared/_LogOnPartial.cshtml
  163. +58 −0 src/ElmahCouchbaseSample/Views/Web.config
  164. +3 −0  src/ElmahCouchbaseSample/Views/_ViewStart.cshtml
  165. +30 −0 src/ElmahCouchbaseSample/Web.Debug.config
  166. +31 −0 src/ElmahCouchbaseSample/Web.Release.config
  167. +126 −0 src/ElmahCouchbaseSample/Web.config
  168. +11 −0 src/ElmahCouchbaseSample/packages.config
View
32 README.md
@@ -1,4 +1,32 @@
elmah-couchbase
-===============
+===========================
-Couchbase provider for ELMAH
+Logging provider for using Couchbase Server 2.0 with ELMAH.
+
+#Usage
+
+##Configure the Couchbase .NET Client Library
+
+ <section name="couchbase" type="Couchbase.Configuration.CouchbaseClientSection, Couchbase" />
+
+ <couchbase>
+ <documentNameTransformer type="Couchbase.Configuration.DevelopmentModeNameTransformer, Couchbase" />
+ <httpClientFactory type="Couchbase.HammockHttpClientFactory, Couchbase" />
+ <servers bucket="default">
+ <add uri="http://127.0.0.1:8091/pools" />
+ </servers>
+ </couchbase>
+
+##Configure elmah-couchbase
+
+ <elmah>
+ <errorLog type="Elmah.Couchbase.CouchbaseErrorLog, Elmah.Couchbase" couchbaseConfigSection="<other-than-default-couchbase-section-name>" />
+ </elmah>
+
+To learn how to configure multiple buckets, see http://www.couchbase.com/wiki/display/couchbase/Couchbase+.NET+Client+Library.
+
+#Notes
+
+Couchbase Server 2.0 required. Developer preview version of .NET Client Library for Couchbase included in "lib" directory.
+
+Be sure to deploy the view found in CouchbaseErrorLog.json at the root of the provider.
View
BIN  lib/Couchbase/Couchbase.dll
Binary file not shown
View
BIN  lib/Couchbase/Couchbase.pdb
Binary file not shown
View
BIN  lib/Couchbase/Enyim.Caching.dll
Binary file not shown
View
BIN  lib/Couchbase/Enyim.Caching.pdb
Binary file not shown
View
BIN  lib/Couchbase/Hammock.dll
Binary file not shown
View
BIN  lib/Couchbase/Hammock.pdb
Binary file not shown
View
BIN  lib/Couchbase/Newtonsoft.Json.dll
Binary file not shown
View
BIN  lib/Couchbase/Newtonsoft.Json.pdb
Binary file not shown
View
7,320 lib/Couchbase/Newtonsoft.Json.xml
7,320 additions, 0 deletions not shown
View
48 src/Elmah.Couchbase/CouchbaseClientFactory.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Couchbase;
+using Couchbase.Configuration;
+using System.Configuration;
+
+namespace Elmah.Couchbase
+{
+ public static class CouchbaseClientFactory
+ {
+ public static CouchbaseClient CreateCouchbaseClient(string couchbaseConfigSection = null)
+ {
+ if (couchbaseConfigSection != null)
+ {
+ var config = ConfigurationManager.GetSection(couchbaseConfigSection) as ICouchbaseClientConfiguration;
+ if (config == null)
+ throw new ArgumentException("Couchbase config section " + couchbaseConfigSection + " not found.");
+
+ return new CouchbaseClient(config);
+ }
+
+ return new CouchbaseClient();
+ }
+ }
+}
+
+#region [ License information ]
+/* ************************************************************
+ *
+ * @author Couchbase <info@couchbase.com>
+ * @copyright 2012 Couchbase, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ************************************************************/
+#endregion
View
146 src/Elmah.Couchbase/CouchbaseErrorLog.cs
@@ -0,0 +1,146 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Couchbase;
+using System.Collections;
+using Couchbase.Configuration;
+using Elmah;
+using Enyim.Caching.Memcached;
+using Newtonsoft.Json;
+
+namespace Elmah.Couchbase
+{
+ /// <summary>
+ /// ErrorLog implementation using Couchbase Server 2.0 as backing store.
+ /// </summary>
+ public class CouchbaseErrorLog : ErrorLog
+ {
+ private static CouchbaseClient _client;
+
+ /// <summary>
+ /// Initialize new instance of CouchbaseClient using either default config
+ /// or specified configuration name
+ /// </summary>
+ public CouchbaseErrorLog(IDictionary config)
+ {
+ if (config == null)
+ throw new ArgumentNullException("config");
+
+ if (_client == null)
+ {
+ if (config.Contains("couchbaseConfigSection"))
+ {
+ _client = CouchbaseClientFactory.CreateCouchbaseClient(config["couchbaseConfigSection"] as string);
+ }
+ else
+ {
+ _client = CouchbaseClientFactory.CreateCouchbaseClient();
+ }
+
+ if (config.Contains("applicationName"))
+ {
+ ApplicationName = config["applicationName"] as string;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Get error log entry by id
+ /// </summary>
+ public override ErrorLogEntry GetError(string id)
+ {
+ if (string.IsNullOrEmpty(id))
+ throw new ArgumentNullException("id");
+
+ Guid errorGuid;
+ try
+ {
+ errorGuid = new Guid(id);
+ }
+ catch (FormatException e)
+ {
+ throw new ArgumentException(e.Message, "id", e);
+ }
+
+ var errorJson = _client.Get<string>(id);
+ var error = JsonConvert.DeserializeObject<Error>(errorJson);
+ return new ErrorLogEntry(this, id, error);
+ }
+
+ /// <summary>
+ /// Get list of errors for view in Elmah web viewer
+ /// </summary>
+ public override int GetErrors(int pageIndex, int pageSize, IList errorEntryList)
+ {
+ if (pageIndex < 0)
+ throw new ArgumentOutOfRangeException("pageIndex", pageIndex, null);
+
+ if (pageSize < 0)
+ throw new ArgumentOutOfRangeException("pageSize", pageSize, null);
+
+ var skip = pageSize * pageIndex;
+
+ //this is NOT the most efficient way to page in Couchbase/CouchDB, but is necessary because
+ //there is no way to keep state of the startkey between requests
+ //see http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-querying-pagination.html
+ //for more information
+ var view = _client.GetView("errors", "by_date").Descending(true).Skip(skip).Limit(pageSize);
+
+ foreach (var item in view)
+ {
+ var errorLogEntry = GetError(item.ItemId);
+ errorEntryList.Add(errorLogEntry);
+ }
+
+ return view.TotalRows;
+ }
+
+ /// <summary>
+ /// Log an error
+ /// </summary>
+ public override string Log(Error error)
+ {
+ if (error == null)
+ throw new ArgumentNullException("error");
+
+ var key = Guid.NewGuid().ToString();
+ _client.Store(StoreMode.Set, key, JsonConvert.SerializeObject(error));
+
+ return key;
+ }
+
+ /// <summary>
+ /// Name displayed in ELMAH viewer
+ /// </summary>
+ public override string Name
+ {
+ get
+ {
+ return "Couchbase Server Error Log";
+ }
+ }
+
+ }
+}
+
+#region [ License information ]
+/* ************************************************************
+ *
+ * @author Couchbase <info@couchbase.com>
+ * @copyright 2012 Couchbase, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ************************************************************/
+#endregion
View
6 src/Elmah.Couchbase/CouchbaseErrorLog.json
@@ -0,0 +1,6 @@
+//view code for Elmah viewer. Must be named "by_date" and located in design document named "errors" without the quotes.
+function (doc) {
+ if (doc.Exception) {
+ emit(doc.Time, null);
+ }
+}
View
73 src/Elmah.Couchbase/Elmah.Couchbase.csproj
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{BAA4BB41-7894-4C7F-98E1-3921FE4FE675}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Elmah.Couchbase</RootNamespace>
+ <AssemblyName>Elmah.Couchbase</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Couchbase, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\..\lib\Couchbase\Couchbase.dll</HintPath>
+ </Reference>
+ <Reference Include="Elmah">
+ <HintPath>packages\elmah.corelibrary.1.2.2\lib\Elmah.dll</HintPath>
+ </Reference>
+ <Reference Include="Enyim.Caching, Version=2.12.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\lib\Couchbase\Enyim.Caching.dll</HintPath>
+ </Reference>
+ <Reference Include="Newtonsoft.Json">
+ <HintPath>packages\Newtonsoft.Json.4.5.7\lib\net40\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="CouchbaseClientFactory.cs" />
+ <Compile Include="CouchbaseErrorLog.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="CouchbaseErrorLog.json" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
View
2  src/Elmah.Couchbase/Elmah.Couchbase.csproj.DotSettings.user
@@ -0,0 +1,2 @@
+<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+ <s:Boolean x:Key="/Default/Housekeeping/ProjectSettingsUpgraded/IsUpgraded/@EntryValue">True</s:Boolean></wpf:ResourceDictionary>
View
31 src/Elmah.Couchbase/Elmah.Couchbase.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elmah.Couchbase", "Elmah.Couchbase.csproj", "{BAA4BB41-7894-4C7F-98E1-3921FE4FE675}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElmahCouchbaseSample", "..\ElmahCouchbaseSample\ElmahCouchbaseSample.csproj", "{7F2B73D5-6AD3-4727-B47A-B16FEEF7C41D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5813B801-2877-4F71-BD2E-FBF1856C8137}"
+ ProjectSection(SolutionItems) = preProject
+ ..\..\README.md = ..\..\README.md
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BAA4BB41-7894-4C7F-98E1-3921FE4FE675}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BAA4BB41-7894-4C7F-98E1-3921FE4FE675}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BAA4BB41-7894-4C7F-98E1-3921FE4FE675}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BAA4BB41-7894-4C7F-98E1-3921FE4FE675}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7F2B73D5-6AD3-4727-B47A-B16FEEF7C41D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F2B73D5-6AD3-4727-B47A-B16FEEF7C41D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7F2B73D5-6AD3-4727-B47A-B16FEEF7C41D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7F2B73D5-6AD3-4727-B47A-B16FEEF7C41D}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
View
2  src/Elmah.Couchbase/Elmah.Couchbase.sln.DotSettings.user
@@ -0,0 +1,2 @@
+<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+ <s:Boolean x:Key="/Default/Housekeeping/SolutionSettingsUpgraded/IsUpgraded/@EntryValue">True</s:Boolean></wpf:ResourceDictionary>
View
BIN  src/Elmah.Couchbase/Elmah.Couchbase.suo
Binary file not shown
View
36 src/Elmah.Couchbase/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Elmah.Couchbase")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Elmah.Couchbase")]
+[assembly: AssemblyCopyright("Copyright © 2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("1601fc5d-5c30-4993-ae96-6f7bcfc3221a")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
View
BIN  src/Elmah.Couchbase/_ReSharper.Elmah.Couchbase/ProjectModel/projectModel.dat
Binary file not shown
View
5 src/Elmah.Couchbase/packages.config
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="elmah.corelibrary" version="1.2.2" />
+ <package id="Newtonsoft.Json" version="4.5.7" />
+</packages>
View
BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/CouchbaseNetClient.1.1.6.nupkg
Binary file not shown
View
BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Couchbase.dll
Binary file not shown
View
BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Couchbase.pdb
Binary file not shown
View
454 src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Couchbase.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>Couchbase</name>
+ </assembly>
+ <members>
+ <member name="M:Couchbase.BucketConfigListener.Start">
+ <summary>
+ Starts listening for configuration data. This method blocks until the initial configuration is received. (Or until all pool urls fail.)
+ </summary>
+ </member>
+ <member name="M:Couchbase.BucketConfigListener.ReleaseListener(Couchbase.MessageStreamListener)">
+ <summary>
+ Unsubscibes from a pooled listener, and destrpys it if no additionals subscribers are present.
+ </summary>
+ <param name="listener"></param>
+ </member>
+ <member name="M:Couchbase.BucketConfigListener.GetPooledListener">
+ <summary>
+ Returns a MessageStreamListener instance based on this instance's configuratino (timeout, bucket name etc.)
+
+ When multiple listeners are requested with the exact same parameters (usually when multiple clients are instantiated from the same configuration),
+ the same listener will be returned each time.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:Couchbase.BucketConfigListener.Timeout">
+ <summary>
+ Connection timeout in milliseconds for connecting the pool.
+ </summary>
+ </member>
+ <member name="P:Couchbase.BucketConfigListener.DeadTimeout">
+ <summary>
+ Time to wait in milliseconds to reconnect to the pool when all nodes are down.
+ </summary>
+ </member>
+ <member name="E:Couchbase.BucketConfigListener.ClusterConfigChanged">
+ <summary>
+ Raised when the pool's configuration changes.
+ </summary>
+ </member>
+ <member name="M:Couchbase.ConfigHelper.DeserializeUri``1(System.Net.WebClient,System.Uri,System.Collections.Generic.IEnumerable{System.Web.Script.Serialization.JavaScriptConverter})">
+ <summary>
+ Deserializes the content of an url as a json object
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="uri"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Couchbase.ConfigHelper.ResolveBucket(System.Net.WebClient,System.Uri,System.String)">
+ <summary>
+ Asks the cluster for the specified bucket's configuration.
+ </summary>
+ <param name="bootstrapUri"></param>
+ <param name="name"></param>
+ <returns></returns>
+ </member>
+ <member name="F:Couchbase.Configuration.BucketPortType.Proxy">
+ <summary>
+ Connect to the nodes using moxy
+ </summary>
+ </member>
+ <member name="F:Couchbase.Configuration.BucketPortType.Direct">
+ <summary>
+ Connect to the nodes directly using the Memcached port
+ </summary>
+ </member>
+ <member name="T:Couchbase.Configuration.IHeartbeatMonitorConfiguration">
+ <summary>
+ Defines an interface for setting Heartbeat monitor attributes
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.IHeartbeatMonitorConfiguration.Interval">
+ <summary>
+ Time between checks, in milliseconds
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.IHeartbeatMonitorConfiguration.Enabled">
+ <summary>
+ Determines whether to run the heartbeat checks
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.HeartbeatMonitorElement.Uri">
+ <summary>
+ Gets or sets the endpoint uri for the heartbeat request
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.HeartbeatMonitorElement.Interval">
+ <summary>
+ Gets or sets the interval between heartbeat requests
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.HeartbeatMonitorElement.Enabled">
+ <summary>
+ Enables or disables the heartbeat requests
+ </summary>
+ </member>
+ <member name="M:Couchbase.Configuration.ICouchbaseClientConfiguration.CreateKeyTransformer">
+ <summary>
+ Creates an <see cref="T:Enyim.Caching.Memcached.IMemcachedKeyTransformer"/> instance which will be used to convert item keys for Memcached.
+ </summary>
+ </member>
+ <member name="M:Couchbase.Configuration.ICouchbaseClientConfiguration.CreateNodeLocator">
+ <summary>
+ Creates an <see cref="T:Enyim.Caching.Memcached.IMemcachedNodeLocator"/> instance which will be used to assign items to Memcached nodes.
+ </summary>
+ </member>
+ <member name="M:Couchbase.Configuration.ICouchbaseClientConfiguration.CreateTranscoder">
+ <summary>
+ Creates an <see cref="T:Enyim.Caching.Memcached.ITranscoder"/> instance which will be used to serialize or deserialize items.
+ </summary>
+ </member>
+ <member name="M:Couchbase.Configuration.ICouchbaseClientConfiguration.CreatePerformanceMonitor">
+ <summary>
+ Creates an <see cref="T:Enyim.Caching.Memcached.IPerformanceMonitor"/> instance which will be used to monitor the performance of the client.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.ICouchbaseClientConfiguration.Bucket">
+ <summary>
+ Gets the name of the bucket to be used. If not specified the "default" bucket will be used.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.ICouchbaseClientConfiguration.BucketPassword">
+ <summary>
+ Gets the pasword used to connect to the bucket.
+ </summary>
+ <remarks> If null, the bucket name will be used. Set to String.Empty to use an empty password.</remarks>
+ </member>
+ <member name="P:Couchbase.Configuration.ICouchbaseClientConfiguration.Urls">
+ <summary>
+ Gets a list of <see cref="T:IPEndPoint"/> each representing a Memcached server in the pool.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.ICouchbaseClientConfiguration.SocketPool">
+ <summary>
+ Gets the configuration of the socket pool.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.ICouchbaseClientConfiguration.HeartbeatMonitor">
+ <summary>
+ Gets the configuration of the heartbeat monitor.
+ </summary>
+ </member>
+ <member name="T:Couchbase.Configuration.CouchbaseClientConfiguration">
+ <summary>
+ Configuration class
+ </summary>
+ </member>
+ <member name="M:Couchbase.Configuration.CouchbaseClientConfiguration.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:MemcachedClientConfiguration"/> class.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.Bucket">
+ <summary>
+ Gets or sets the name of the bucket to be used. Can be overriden at the pool's constructor, and if not specified the "default" bucket will be used.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.BucketPassword">
+ <summary>
+ Gets or sets the pasword used to connect to the bucket.
+ </summary>
+ <remarks> If null, the bucket name will be used. Set to String.Empty to use an empty password.</remarks>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.Urls">
+ <summary>
+ Gets a list of <see cref="T:IPEndPoint"/> each representing a Memcached server in the pool.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.SocketPool">
+ <summary>
+ Gets the configuration of the socket pool.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.HeartbeatMonitor">
+ <summary>
+ Gets or sets the configuration of the heartbeat monitor.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.KeyTransformer">
+ <summary>
+ Gets or sets the <see cref="T:Enyim.Caching.Memcached.IMemcachedKeyTransformer"/> which will be used to convert item keys for Memcached.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.NodeLocator">
+ <summary>
+ Gets or sets the Type of the <see cref="T:Enyim.Caching.Memcached.IMemcachedNodeLocator"/> which will be used to assign items to Memcached nodes.
+ </summary>
+ <remarks>If both <see cref="M:NodeLocator"/> and <see cref="M:NodeLocatorFactory"/> are assigned then the latter takes precedence.</remarks>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.NodeLocatorFactory">
+ <summary>
+ Gets or sets the NodeLocatorFactory instance which will be used to create a new IMemcachedNodeLocator instances.
+ </summary>
+ <remarks>If both <see cref="M:NodeLocator"/> and <see cref="M:NodeLocatorFactory"/> are assigned then the latter takes precedence.</remarks>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.Transcoder">
+ <summary>
+ Gets or sets the <see cref="T:Enyim.Caching.Memcached.ITranscoder"/> which will be used serialzie or deserialize items.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientConfiguration.PerformanceMonitorFactory">
+ <summary>
+ Gets or sets the <see cref="T:Enyim.Caching.Memcached.IPerformanceMonitor"/> instance which will be used monitor the performance of the client.
+ </summary>
+ </member>
+ <member name="T:Couchbase.Configuration.CouchbaseClientSection">
+ <summary>
+ Configures the <see cref="T:CouchbaseClient"/>. This class cannot be inherited.
+ </summary>
+ </member>
+ <member name="M:Couchbase.Configuration.CouchbaseClientSection.PostDeserialize">
+ <summary>
+ Called after deserialization.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientSection.SocketPool">
+ <summary>
+ Gets or sets the configuration of the socket pool.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientSection.HeartbeatMonitor">
+ <summary>
+ Gets or sets the configuration of the socket pool.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientSection.NodeLocator">
+ <summary>
+ Gets or sets the <see cref="T:Enyim.Caching.Memcached.IMemcachedNodeLocator"/> which will be used to assign items to Memcached nodes.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientSection.KeyTransformer">
+ <summary>
+ Gets or sets the <see cref="T:Enyim.Caching.Memcached.IMemcachedKeyTransformer"/> which will be used to convert item keys for Memcached.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientSection.Transcoder">
+ <summary>
+ Gets or sets the <see cref="T:Enyim.Caching.Memcached.ITranscoder"/> which will be used serialize or deserialize items.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.CouchbaseClientSection.PerformanceMonitorFactory">
+ <summary>
+ Gets or sets the <see cref="T:Enyim.Caching.Memcached.IPerformanceMonitor"/> which will be used monitor the performance of the client.
+ </summary>
+ </member>
+ <member name="T:Couchbase.Configuration.ServersElement">
+ <summary>
+ Configures the <see cref="T:MemcachedClient"/>. This class cannot be inherited.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.ServersElement.Bucket">
+ <summary>
+ Gets or sets the name of the bucket to be used. Can be overriden at the pool's constructor, and if not specified the "default" bucket will be used.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.ServersElement.BucketPassword">
+ <summary>
+ Gets or sets the pasword used to connect to the bucket.
+ </summary>
+ <remarks> If null, the bucket name will be used. Set to String.Empty to use an empty password.</remarks>
+ </member>
+ <member name="P:Couchbase.Configuration.ServersElement.UserName">
+ <summary>
+ (Obsolete) Gets or sets the user name used to connect to a secured cluster
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.ServersElement.Password">
+ <summary>
+ (Obsolete) Gets or sets the password used to connect to a secured cluster
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.ServersElement.Urls">
+ <summary>
+ Returns a collection of nodes in the cluster the client should use to retrieve the Memcached nodes.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.ServersElement.Port">
+ <summary>
+ Determines which port the client should use to connect to the nodes
+ </summary>
+ </member>
+ <member name="T:Couchbase.Configuration.UriElement">
+ <summary>
+ Represents a configuration element that contains a Memcached node address. This class cannot be inherited.
+ </summary>
+ </member>
+ <member name="P:Couchbase.Configuration.UriElement.Uri">
+ <summary>
+ Gets or sets the ip address of the node.
+ </summary>
+ </member>
+ <member name="T:Couchbase.Configuration.UriElementCollection">
+ <summary>
+ Represents a collection of <see cref="T:EndPointElement"/> instances. This class cannot be inherited.
+ </summary>
+ </member>
+ <member name="M:Couchbase.Configuration.UriElementCollection.CreateNewElement">
+ <summary>
+ Creates a new <see cref="T:ConfigurationElement"/>.
+ </summary>
+ <returns>A new <see cref="T:ConfigurationElement"/>.</returns>
+ </member>
+ <member name="M:Couchbase.Configuration.UriElementCollection.GetElementKey(System.Configuration.ConfigurationElement)">
+ <summary>
+ Gets the element key for a specified configuration element when overridden in a derived class.
+ </summary>
+ <param name="element">The <see cref="T:ConfigurationElement"/> to return the key for. </param>
+ <returns>An <see cref="T:Object"/> that acts as the key for the specified <see cref="T:ConfigurationElement"/>.</returns>
+ </member>
+ <member name="M:Couchbase.Configuration.UriElementCollection.ToUriCollection">
+ <summary>
+ Helper method; converts the collection into an <see cref="T:IPEndPoint"/> collection for the interface implementation.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Couchbase.MessageStreamListener">
+ <summary>
+ Listens on a streamingUri and processes the messages
+ </summary>
+ </member>
+ <member name="M:Couchbase.MessageStreamListener.#ctor(System.Uri[],System.Uri,System.Int32,System.Boolean,System.Func{Couchbase.WebClientWithTimeout,System.Uri,System.Uri})">
+ <summary>
+ Creates a new instance of MessageStreamListener
+ </summary>
+ <param name="urls"></param>
+ <param name="converter">You use this to redirect the original url into somewhere else. Called only once for each url before the MessageStreamListener starts processing it.</param>
+ </member>
+ <member name="M:Couchbase.MessageStreamListener.Start">
+ <summary>
+ Starts processing the streaming URI
+ </summary>
+ </member>
+ <member name="M:Couchbase.MessageStreamListener.Stop">
+ <summary>
+ Stops processing
+ </summary>
+ </member>
+ <member name="M:Couchbase.MessageStreamListener.SleepUntil(System.Int32)">
+ <summary>
+ Sleeps until the time elapses. Returns false if the sleep was aborted.
+ </summary>
+ <param name="milliseconds"></param>
+ <returns></returns>
+ </member>
+ <member name="P:Couchbase.MessageStreamListener.Credentials">
+ <summary>
+ The credentials used to connect to the urls.
+ </summary>
+ </member>
+ <member name="P:Couchbase.MessageStreamListener.ConnectionTimeout">
+ <summary>
+ Connection timeout in milliseconds for connecting the urls.
+ </summary>
+ </member>
+ <member name="P:Couchbase.MessageStreamListener.DeadTimeout">
+ <summary>
+ The time in milliseconds the listener should wait when retrying after the whole server list goes down.
+ </summary>
+ </member>
+ <member name="T:Couchbase.CouchbaseClient">
+ <summary>
+ Client which can be used to connect to NothScale's Memcached and Couchbase servers.
+ </summary>
+ </member>
+ <member name="M:Couchbase.CouchbaseClient.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:Couchbase.CouchbaseClient" /> class using the default configuration and bucket.
+ </summary>
+ <remarks>The configuration is taken from the /configuration/Couchbase section.</remarks>
+ </member>
+ <member name="M:Couchbase.CouchbaseClient.#ctor(System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Couchbase.CouchbaseClient" /> class using the default configuration and the specified bucket.
+ </summary>
+ <remarks>The configuration is taken from the /configuration/Couchbase section.</remarks>
+ </member>
+ <member name="M:Couchbase.CouchbaseClient.#ctor(Couchbase.Configuration.ICouchbaseClientConfiguration)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Couchbase.CouchbaseClient" /> class using a custom configuration provider.
+ </summary>
+ <param name="configuration">The custom configuration provider.</param>
+ </member>
+ <member name="M:Couchbase.CouchbaseClient.#ctor(System.String,System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Couchbase.CouchbaseClient" /> class using the specified configuration
+ section and the specified bucket.
+ </summary>
+ <param name="sectionName">The name of the configuration section to load.</param>
+ <param name="bucketName">The name of the bucket this client will connect to.</param>
+ <param name="bucketPassword">The password of the bucket this client will connect to.</param>
+ </member>
+ <member name="M:Couchbase.CouchbaseClient.#ctor(Couchbase.Configuration.ICouchbaseClientConfiguration,System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Couchbase.CouchbaseClient" /> class
+ using a custom configuration provider and the specified bucket name and password.
+ </summary>
+ <param name="configuration">The custom configuration provider.</param>
+ <param name="bucketName">The name of the bucket this client will connect to.</param>
+ <param name="bucketPassword">The password of the bucket this client will connect to.</param>
+ </member>
+ <member name="M:Couchbase.CouchbaseClient.#ctor(System.String)">
+ <summary>Obsolete. Use .ctor(bucket, password) to explicitly set the bucket password.</summary>
+ </member>
+ <member name="M:Couchbase.CouchbaseClient.#ctor(Couchbase.Configuration.ICouchbaseClientConfiguration,System.String)">
+ <summary>Obsolete. Use .ctor(config, bucket, password) to explicitly set the bucket password.</summary>
+ </member>
+ <member name="T:Couchbase.CouchbasePool">
+ <summary>
+ Socket pool using the Couchbase server's dynamic node list
+ </summary>
+ </member>
+ <member name="M:Couchbase.CouchbasePool.#ctor(Couchbase.Configuration.ICouchbaseClientConfiguration)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Couchbase.CouchbasePool" />.
+ </summary>
+ <param name="configuration">The configuration to be used.</param>
+ </member>
+ <member name="M:Couchbase.CouchbasePool.#ctor(Couchbase.Configuration.ICouchbaseClientConfiguration,System.String)">
+ <summary>Obsolete. Use .ctor(config, bucket, password) to explicitly set the bucket password.</summary>
+ </member>
+ <member name="M:Couchbase.CouchbasePool.#ctor(Couchbase.Configuration.ICouchbaseClientConfiguration,System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:Couchbase.CouchbasePool" /> class using the specified configuration,
+ bucket name and password.
+ </summary>
+ <param name="configuration">The configuration to be used.</param>
+ <param name="bucketName">The name of the bucket to connect to. Overrides the configuration's Bucket property.</param>
+ <param name="bucketPassword">The password to the bucket. Overrides the configuration's BucketPassword property.</param>
+ </member>
+ <member name="T:Couchbase.VBucketAwareOperationFactory">
+ <summary>
+ Couchbase requires each item operation to have a vbucket index set in the request's "reserved" field. (This is used for replicatiom and failover.) This op factory provides customized operations handling these indexes.
+ </summary>
+ </member>
+ <member name="M:Couchbase.WebClientWithTimeout.GetWebRequest(System.Uri,System.String)">
+ <summary>
+ Returns a <see cref="T:System.Net.WebRequest"/> object for the specified resource. The returned instance will have a custom ConnectionGroup to avoid running into connection limits.
+ </summary>
+ <param name="address">A <see cref="T:System.Uri"/> that identifies the resource to request. </param>
+ <returns>A new <see cref="T:System.Net.WebRequest"/> object for the specified resource. </returns>
+ </member>
+ <member name="P:Couchbase.WebClientWithTimeout.Timeout">
+ <summary>
+ Connection timeout in msec.
+ </summary>
+ </member>
+ <member name="P:Couchbase.WebClientWithTimeout.PreAuthenticate">
+ <summary>
+ This will send the credentials (using basic auth) every time without getting a 401 response from the server.
+ </summary>
+ </member>
+ </members>
+</doc>
View
BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Enyim.Caching.dll
Binary file not shown
View
BIN  src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Enyim.Caching.pdb
Binary file not shown
View
2,026 src/Elmah.Couchbase/packages/CouchbaseNetClient.1.1.6/lib/net35/Enyim.Caching.xml
2,026 additions, 0 deletions not shown
View
BIN  src/Elmah.Couchbase/packages/EntityFramework.4.1.10331.0/EntityFramework.4.1.10331.0.nupkg
Binary file not shown
View
BIN  src/Elmah.Couchbase/packages/EntityFramework.4.1.10331.0/lib/EntityFramework.dll
Binary file not shown
View
13,206 src/Elmah.Couchbase/packages/EntityFramework.4.1.10331.0/lib/EntityFramework.xml
13,206 additions, 0 deletions not shown
View
969 src/Elmah.Couchbase/packages/Modernizr.1.7/Content/Scripts/modernizr-1.7.js
@@ -0,0 +1,969 @@
+/*!
+* Note: While Microsoft is not the author of this file, Microsoft is
+* offering you a license subject to the terms of the Microsoft Software
+* License Terms for Microsoft ASP.NET Model View Controller 3.
+* Microsoft reserves all other rights. The notices below are provided
+* for informational purposes only and are not the license terms under
+* which Microsoft distributed this file.
+*
+* Modernizr v1.7
+* http://www.modernizr.com
+*
+* Developed by:
+* - Faruk Ates http://farukat.es/
+* - Paul Irish http://paulirish.com/
+*
+* Copyright (c) 2009-2011
+*/
+
+
+/*
+ * Modernizr is a script that detects native CSS3 and HTML5 features
+ * available in the current UA and provides an object containing all
+ * features with a true/false value, depending on whether the UA has
+ * native support for it or not.
+ *
+ * Modernizr will also add classes to the <html> element of the page,
+ * one for each feature it detects. If the UA supports it, a class
+ * like "cssgradients" will be added. If not, the class name will be
+ * "no-cssgradients". This allows for simple if-conditionals in your
+ * CSS, giving you fine control over the look & feel of your website.
+ *
+ * @author Faruk Ates
+ * @author Paul Irish
+ * @copyright (c) 2009-2011 Faruk Ates.
+ * @contributor Ben Alman
+ */
+
+window.Modernizr = (function(window,document,undefined){
+
+ var version = '1.7',
+
+ ret = {},
+
+ /**
+ * !! DEPRECATED !!
+ *
+ * enableHTML5 is a private property for advanced use only. If enabled,
+ * it will make Modernizr.init() run through a brief while() loop in
+ * which it will create all HTML5 elements in the DOM to allow for
+ * styling them in Internet Explorer, which does not recognize any
+ * non-HTML4 elements unless created in the DOM this way.
+ *
+ * enableHTML5 is ON by default.
+ *
+ * The enableHTML5 toggle option is DEPRECATED as per 1.6, and will be
+ * replaced in 2.0 in lieu of the modular, configurable nature of 2.0.
+ */
+ enableHTML5 = true,
+
+
+ docElement = document.documentElement,
+ docHead = document.head || document.getElementsByTagName('head')[0],
+
+ /**
+ * Create our "modernizr" element that we do most feature tests on.
+ */
+ mod = 'modernizr',
+ modElem = document.createElement( mod ),
+ m_style = modElem.style,
+
+ /**
+ * Create the input element for various Web Forms feature tests.
+ */
+ inputElem = document.createElement( 'input' ),
+
+ smile = ':)',
+
+ tostring = Object.prototype.toString,
+
+ // List of property values to set for css tests. See ticket #21
+ prefixes = ' -webkit- -moz- -o- -ms- -khtml- '.split(' '),
+
+ // Following spec is to expose vendor-specific style properties as:
+ // elem.style.WebkitBorderRadius
+ // and the following would be incorrect:
+ // elem.style.webkitBorderRadius
+
+ // Webkit ghosts their properties in lowercase but Opera & Moz do not.
+ // Microsoft foregoes prefixes entirely <= IE8, but appears to
+ // use a lowercase `ms` instead of the correct `Ms` in IE9
+
+ // More here: http://github.com/Modernizr/Modernizr/issues/issue/21
+ domPrefixes = 'Webkit Moz O ms Khtml'.split(' '),
+
+ ns = {'svg': 'http://www.w3.org/2000/svg'},
+
+ tests = {},
+ inputs = {},
+ attrs = {},
+
+ classes = [],
+
+ featurename, // used in testing loop
+
+
+
+ // todo: consider using http://javascript.nwbox.com/CSSSupport/css-support.js instead
+ testMediaQuery = function(mq){
+
+ var st = document.createElement('style'),
+ div = document.createElement('div'),
+ ret;
+
+ st.textContent = mq + '{#modernizr{height:3px}}';
+ docHead.appendChild(st);
+ div.id = 'modernizr';
+ docElement.appendChild(div);
+
+ ret = div.offsetHeight === 3;
+
+ st.parentNode.removeChild(st);
+ div.parentNode.removeChild(div);
+
+ return !!ret;
+
+ },
+
+
+ /**
+ * isEventSupported determines if a given element supports the given event
+ * function from http://yura.thinkweb2.com/isEventSupported/
+ */
+ isEventSupported = (function(){
+
+ var TAGNAMES = {
+ 'select':'input','change':'input',
+ 'submit':'form','reset':'form',
+ 'error':'img','load':'img','abort':'img'
+ };
+
+ function isEventSupported(eventName, element) {
+
+ element = element || document.createElement(TAGNAMES[eventName] || 'div');
+ eventName = 'on' + eventName;
+
+ // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
+ var isSupported = (eventName in element);
+
+ if (!isSupported) {
+ // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
+ if (!element.setAttribute) {
+ element = document.createElement('div');
+ }
+ if (element.setAttribute && element.removeAttribute) {
+ element.setAttribute(eventName, '');
+ isSupported = is(element[eventName], 'function');
+
+ // If property was created, "remove it" (by setting value to `undefined`)
+ if (!is(element[eventName], undefined)) {
+ element[eventName] = undefined;
+ }
+ element.removeAttribute(eventName);
+ }
+ }
+
+ element = null;
+ return isSupported;
+ }
+ return isEventSupported;
+ })();
+
+
+ // hasOwnProperty shim by kangax needed for Safari 2.0 support
+ var _hasOwnProperty = ({}).hasOwnProperty, hasOwnProperty;
+ if (!is(_hasOwnProperty, undefined) && !is(_hasOwnProperty.call, undefined)) {
+ hasOwnProperty = function (object, property) {
+ return _hasOwnProperty.call(object, property);
+ };
+ }
+ else {
+ hasOwnProperty = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
+ return ((property in object) && is(object.constructor.prototype[property], undefined));
+ };
+ }
+
+ /**
+ * set_css applies given styles to the Modernizr DOM node.
+ */
+ function set_css( str ) {
+ m_style.cssText = str;
+ }
+
+ /**
+ * set_css_all extrapolates all vendor-specific css strings.
+ */
+ function set_css_all( str1, str2 ) {
+ return set_css(prefixes.join(str1 + ';') + ( str2 || '' ));
+ }
+
+ /**
+ * is returns a boolean for if typeof obj is exactly type.
+ */
+ function is( obj, type ) {
+ return typeof obj === type;
+ }
+
+ /**
+ * contains returns a boolean for if substr is found within str.
+ */
+ function contains( str, substr ) {
+ return (''+str).indexOf( substr ) !== -1;
+ }
+
+ /**
+ * test_props is a generic CSS / DOM property test; if a browser supports
+ * a certain property, it won't return undefined for it.
+ * A supported CSS property returns empty string when its not yet set.
+ */
+ function test_props( props, callback ) {
+ for ( var i in props ) {
+ if ( m_style[ props[i] ] !== undefined && ( !callback || callback( props[i], modElem ) ) ) {
+ return true;
+ }
+ }
+ }
+
+ /**
+ * test_props_all tests a list of DOM properties we want to check against.
+ * We specify literally ALL possible (known and/or likely) properties on
+ * the element including the non-vendor prefixed one, for forward-
+ * compatibility.
+ */
+ function test_props_all( prop, callback ) {
+
+ var uc_prop = prop.charAt(0).toUpperCase() + prop.substr(1),
+ props = (prop + ' ' + domPrefixes.join(uc_prop + ' ') + uc_prop).split(' ');
+
+ return !!test_props( props, callback );
+ }
+
+
+ /**
+ * Tests
+ * -----
+ */
+
+ tests['flexbox'] = function() {
+ /**
+ * set_prefixed_value_css sets the property of a specified element
+ * adding vendor prefixes to the VALUE of the property.
+ * @param {Element} element
+ * @param {string} property The property name. This will not be prefixed.
+ * @param {string} value The value of the property. This WILL be prefixed.
+ * @param {string=} extra Additional CSS to append unmodified to the end of
+ * the CSS string.
+ */
+ function set_prefixed_value_css(element, property, value, extra) {
+ property += ':';
+ element.style.cssText = (property + prefixes.join(value + ';' + property)).slice(0, -property.length) + (extra || '');
+ }
+
+ /**
+ * set_prefixed_property_css sets the property of a specified element
+ * adding vendor prefixes to the NAME of the property.
+ * @param {Element} element
+ * @param {string} property The property name. This WILL be prefixed.
+ * @param {string} value The value of the property. This will not be prefixed.
+ * @param {string=} extra Additional CSS to append unmodified to the end of
+ * the CSS string.
+ */
+ function set_prefixed_property_css(element, property, value, extra) {
+ element.style.cssText = prefixes.join(property + ':' + value + ';') + (extra || '');
+ }
+
+ var c = document.createElement('div'),
+ elem = document.createElement('div');
+
+ set_prefixed_value_css(c, 'display', 'box', 'width:42px;padding:0;');
+ set_prefixed_property_css(elem, 'box-flex', '1', 'width:10px;');
+
+ c.appendChild(elem);
+ docElement.appendChild(c);
+
+ var ret = elem.offsetWidth === 42;
+
+ c.removeChild(elem);
+ docElement.removeChild(c);
+
+ return ret;
+ };
+
+ // On the S60 and BB Storm, getContext exists, but always returns undefined
+ // http://github.com/Modernizr/Modernizr/issues/issue/97/
+
+ tests['canvas'] = function() {
+ var elem = document.createElement( 'canvas' );
+ return !!(elem.getContext && elem.getContext('2d'));
+ };
+
+ tests['canvastext'] = function() {
+ return !!(ret['canvas'] && is(document.createElement( 'canvas' ).getContext('2d').fillText, 'function'));
+ };
+
+ // This WebGL test false positives in FF depending on graphics hardware. But really it's quite impossible to know
+ // wether webgl will succeed until after you create the context. You might have hardware that can support
+ // a 100x100 webgl canvas, but will not support a 1000x1000 webgl canvas. So this feature inference is weak,
+ // but intentionally so.
+ tests['webgl'] = function(){
+ return !!window.WebGLRenderingContext;
+ };
+
+ /*
+ * The Modernizr.touch test only indicates if the browser supports
+ * touch events, which does not necessarily reflect a touchscreen
+ * device, as evidenced by tablets running Windows 7 or, alas,
+ * the Palm Pre / WebOS (touch) phones.
+ *
+ * Additionally, Chrome (desktop) used to lie about its support on this,
+ * but that has since been rectified: http://crbug.com/36415
+ *
+ * We also test for Firefox 4 Multitouch Support.
+ *
+ * For more info, see: http://modernizr.github.com/Modernizr/touch.html
+ */
+
+ tests['touch'] = function() {
+
+ return ('ontouchstart' in window) || testMediaQuery('@media ('+prefixes.join('touch-enabled),(')+'modernizr)');
+
+ };
+
+
+ /**
+ * geolocation tests for the new Geolocation API specification.
+ * This test is a standards compliant-only test; for more complete
+ * testing, including a Google Gears fallback, please see:
+ * http://code.google.com/p/geo-location-javascript/
+ * or view a fallback solution using google's geo API:
+ * http://gist.github.com/366184
+ */
+ tests['geolocation'] = function() {
+ return !!navigator.geolocation;
+ };
+
+ // Per 1.6:
+ // This used to be Modernizr.crosswindowmessaging but the longer
+ // name has been deprecated in favor of a shorter and property-matching one.
+ // The old API is still available in 1.6, but as of 2.0 will throw a warning,
+ // and in the first release thereafter disappear entirely.
+ tests['postmessage'] = function() {
+ return !!window.postMessage;
+ };
+
+ // Web SQL database detection is tricky:
+
+ // In chrome incognito mode, openDatabase is truthy, but using it will
+ // throw an exception: http://crbug.com/42380
+ // We can create a dummy database, but there is no way to delete it afterwards.
+
+ // Meanwhile, Safari users can get prompted on any database creation.
+ // If they do, any page with Modernizr will give them a prompt:
+ // http://github.com/Modernizr/Modernizr/issues/closed#issue/113
+
+ // We have chosen to allow the Chrome incognito false positive, so that Modernizr
+ // doesn't litter the web with these test databases. As a developer, you'll have
+ // to account for this gotcha yourself.
+ tests['websqldatabase'] = function() {
+ var result = !!window.openDatabase;
+ /* if (result){
+ try {
+ result = !!openDatabase( mod + "testdb", "1.0", mod + "testdb", 2e4);
+ } catch(e) {
+ }
+ } */
+ return result;
+ };
+
+ // Vendors have inconsistent prefixing with the experimental Indexed DB:
+ // - Firefox is shipping indexedDB in FF4 as moz_indexedDB
+ // - Webkit's implementation is accessible through webkitIndexedDB
+ // We test both styles.
+ tests['indexedDB'] = function(){
+ for (var i = -1, len = domPrefixes.length; ++i < len; ){
+ var prefix = domPrefixes[i].toLowerCase();
+ if (window[prefix + '_indexedDB'] || window[prefix + 'IndexedDB']){
+ return true;
+ }
+ }
+ return false;
+ };
+
+ // documentMode logic from YUI to filter out IE8 Compat Mode
+ // which false positives.
+ tests['hashchange'] = function() {
+ return isEventSupported('hashchange', window) && ( document.documentMode === undefined || document.documentMode > 7 );
+ };
+
+ // Per 1.6:
+ // This used to be Modernizr.historymanagement but the longer
+ // name has been deprecated in favor of a shorter and property-matching one.
+ // The old API is still available in 1.6, but as of 2.0 will throw a warning,
+ // and in the first release thereafter disappear entirely.
+ tests['history'] = function() {
+ return !!(window.history && history.pushState);
+ };
+
+ tests['draganddrop'] = function() {
+ return isEventSupported('dragstart') && isEventSupported('drop');
+ };
+
+ tests['websockets'] = function(){
+ return ('WebSocket' in window);
+ };
+
+
+ // http://css-tricks.com/rgba-browser-support/
+ tests['rgba'] = function() {
+ // Set an rgba() color and check the returned value
+
+ set_css( 'background-color:rgba(150,255,150,.5)' );
+
+ return contains( m_style.backgroundColor, 'rgba' );
+ };
+
+ tests['hsla'] = function() {
+ // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
+ // except IE9 who retains it as hsla
+
+ set_css('background-color:hsla(120,40%,100%,.5)' );
+
+ return contains( m_style.backgroundColor, 'rgba' ) || contains( m_style.backgroundColor, 'hsla' );
+ };
+
+ tests['multiplebgs'] = function() {
+ // Setting multiple images AND a color on the background shorthand property
+ // and then querying the style.background property value for the number of
+ // occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
+
+ set_css( 'background:url(//:),url(//:),red url(//:)' );
+
+ // If the UA supports multiple backgrounds, there should be three occurrences
+ // of the string "url(" in the return value for elem_style.background
+
+ return new RegExp("(url\\s*\\(.*?){3}").test(m_style.background);
+ };
+
+
+ // In testing support for a given CSS property, it's legit to test:
+ // `elem.style[styleName] !== undefined`
+ // If the property is supported it will return an empty string,
+ // if unsupported it will return undefined.
+
+ // We'll take advantage of this quick test and skip setting a style
+ // on our modernizr element, but instead just testing undefined vs
+ // empty string.
+
+
+ tests['backgroundsize'] = function() {
+ return test_props_all( 'backgroundSize' );
+ };
+
+ tests['borderimage'] = function() {
+ return test_props_all( 'borderImage' );
+ };
+
+
+ // Super comprehensive table about all the unique implementations of
+ // border-radius: http://muddledramblings.com/table-of-css3-border-radius-compliance
+
+ tests['borderradius'] = function() {
+ return test_props_all( 'borderRadius', '', function( prop ) {
+ return contains( prop, 'orderRadius' );
+ });
+ };
+
+ // WebOS unfortunately false positives on this test.
+ tests['boxshadow'] = function() {
+ return test_props_all( 'boxShadow' );
+ };
+
+ // FF3.0 will false positive on this test
+ tests['textshadow'] = function(){
+ return document.createElement('div').style.textShadow === '';
+ };
+
+
+ tests['opacity'] = function() {
+ // Browsers that actually have CSS Opacity implemented have done so
+ // according to spec, which means their return values are within the
+ // range of [0.0,1.0] - including the leading zero.
+
+ set_css_all( 'opacity:.55' );
+
+ // The non-literal . in this regex is intentional:
+ // German Chrome returns this value as 0,55
+ // https://github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
+ return /^0.55$/.test(m_style.opacity);
+ };
+
+
+ tests['cssanimations'] = function() {
+ return test_props_all( 'animationName' );
+ };
+
+
+ tests['csscolumns'] = function() {
+ return test_props_all( 'columnCount' );
+ };
+
+
+ tests['cssgradients'] = function() {
+ /**
+ * For CSS Gradients syntax, please see:
+ * http://webkit.org/blog/175/introducing-css-gradients/
+ * https://developer.mozilla.org/en/CSS/-moz-linear-gradient
+ * https://developer.mozilla.org/en/CSS/-moz-radial-gradient
+ * http://dev.w3.org/csswg/css3-images/#gradients-
+ */
+
+ var str1 = 'background-image:',
+ str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
+ str3 = 'linear-gradient(left top,#9f9, white);';
+
+ set_css(
+ (str1 + prefixes.join(str2 + str1) + prefixes.join(str3 + str1)).slice(0,-str1.length)
+ );
+
+ return contains( m_style.backgroundImage, 'gradient' );
+ };
+
+
+ tests['cssreflections'] = function() {
+ return test_props_all( 'boxReflect' );
+ };
+
+
+ tests['csstransforms'] = function() {
+ return !!test_props([ 'transformProperty', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform' ]);
+ };
+
+
+ tests['csstransforms3d'] = function() {
+
+ var ret = !!test_props([ 'perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective' ]);
+
+ // Webkit’s 3D transforms are passed off to the browser's own graphics renderer.
+ // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
+ // some conditions. As a result, Webkit typically recognizes the syntax but
+ // will sometimes throw a false positive, thus we must do a more thorough check:
+ if (ret && 'webkitPerspective' in docElement.style){
+
+ // Webkit allows this media query to succeed only if the feature is enabled.
+ // `@media (transform-3d),(-o-transform-3d),(-moz-transform-3d),(-ms-transform-3d),(-webkit-transform-3d),(modernizr){ ... }`
+ ret = testMediaQuery('@media ('+prefixes.join('transform-3d),(')+'modernizr)');
+ }
+ return ret;
+ };
+
+
+ tests['csstransitions'] = function() {
+ return test_props_all( 'transitionProperty' );
+ };
+
+
+ // @font-face detection routine by Diego Perini
+ // http://javascript.nwbox.com/CSSSupport/
+ tests['fontface'] = function(){
+
+ var
+ sheet, bool,
+ head = docHead || docElement,
+ style = document.createElement("style"),
+ impl = document.implementation || { hasFeature: function() { return false; } };
+
+ style.type = 'text/css';
+ head.insertBefore(style, head.firstChild);
+ sheet = style.sheet || style.styleSheet;
+
+ var supportAtRule = impl.hasFeature('CSS2', '') ?
+ function(rule) {
+ if (!(sheet && rule)) return false;
+ var result = false;
+ try {
+ sheet.insertRule(rule, 0);
+ result = (/src/i).test(sheet.cssRules[0].cssText);
+ sheet.deleteRule(sheet.cssRules.length - 1);
+ } catch(e) { }
+ return result;
+ } :
+ function(rule) {
+ if (!(sheet && rule)) return false;
+ sheet.cssText = rule;
+
+ return sheet.cssText.length !== 0 && (/src/i).test(sheet.cssText) &&
+ sheet.cssText
+ .replace(/\r+|\n+/g, '')
+ .indexOf(rule.split(' ')[0]) === 0;
+ };
+
+ bool = supportAtRule('@font-face { font-family: "font"; src: url(data:,); }');
+ head.removeChild(style);
+ return bool;
+ };
+
+
+ // These tests evaluate support of the video/audio elements, as well as
+ // testing what types of content they support.
+ //
+ // We're using the Boolean constructor here, so that we can extend the value
+ // e.g. Modernizr.video // true
+ // Modernizr.video.ogg // 'probably'
+ //
+ // Codec values from : http://github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
+ // thx to NielsLeenheer and zcorpan
+
+ // Note: in FF 3.5.1 and 3.5.0, "no" was a return value instead of empty string.
+ // Modernizr does not normalize for that.
+
+ tests['video'] = function() {
+ var elem = document.createElement('video'),
+ bool = !!elem.canPlayType;
+
+ if (bool){
+ bool = new Boolean(bool);
+ bool.ogg = elem.canPlayType('video/ogg; codecs="theora"');
+
+ // Workaround required for IE9, which doesn't report video support without audio codec specified.
+ // bug 599718 @ msft connect
+ var h264 = 'video/mp4; codecs="avc1.42E01E';
+ bool.h264 = elem.canPlayType(h264 + '"') || elem.canPlayType(h264 + ', mp4a.40.2"');
+
+ bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"');
+ }
+ return bool;
+ };
+
+ tests['audio'] = function() {
+ var elem = document.createElement('audio'),
+ bool = !!elem.canPlayType;
+
+ if (bool){
+ bool = new Boolean(bool);
+ bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"');
+ bool.mp3 = elem.canPlayType('audio/mpeg;');
+
+ // Mimetypes accepted:
+ // https://developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
+ // http://bit.ly/iphoneoscodecs
+ bool.wav = elem.canPlayType('audio/wav; codecs="1"');
+ bool.m4a = elem.canPlayType('audio/x-m4a;') || elem.canPlayType('audio/aac;');
+ }
+ return bool;
+ };
+
+
+ // Firefox has made these tests rather unfun.
+
+ // In FF4, if disabled, window.localStorage should === null.
+
+ // Normally, we could not test that directly and need to do a
+ // `('localStorage' in window) && ` test first because otherwise Firefox will
+ // throw http://bugzil.la/365772 if cookies are disabled
+
+ // However, in Firefox 4 betas, if dom.storage.enabled == false, just mentioning
+ // the property will throw an exception. http://bugzil.la/599479
+ // This looks to be fixed for FF4 Final.
+
+ // Because we are forced to try/catch this, we'll go aggressive.
+
+ // FWIW: IE8 Compat mode supports these features completely:
+ // http://www.quirksmode.org/dom/html5.html
+ // But IE8 doesn't support either with local files
+
+ tests['localstorage'] = function() {
+ try {
+ return !!localStorage.getItem;
+ } catch(e) {
+ return false;
+ }
+ };
+
+ tests['sessionstorage'] = function() {
+ try {
+ return !!sessionStorage.getItem;
+ } catch(e){
+ return false;
+ }
+ };
+
+
+ tests['webWorkers'] = function () {
+ return !!window.Worker;
+ };
+
+
+ tests['applicationcache'] = function() {
+ return !!window.applicationCache;
+ };
+
+
+ // Thanks to Erik Dahlstrom
+ tests['svg'] = function(){
+ return !!document.createElementNS && !!document.createElementNS(ns.svg, "svg").createSVGRect;
+ };
+
+ tests['inlinesvg'] = function() {
+ var div = document.createElement('div');
+ div.innerHTML = '<svg/>';
+ return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
+ };
+
+ // Thanks to F1lt3r and lucideer
+ // http://github.com/Modernizr/Modernizr/issues#issue/35
+ tests['smil'] = function(){
+ return !!document.createElementNS && /SVG/.test(tostring.call(document.createElementNS(ns.svg,'animate')));
+ };
+
+ tests['svgclippaths'] = function(){
+ // Possibly returns a false positive in Safari 3.2?
+ return !!document.createElementNS && /SVG/.test(tostring.call(document.createElementNS(ns.svg,'clipPath')));
+ };
+
+
+ // input features and input types go directly onto the ret object, bypassing the tests loop.
+ // Hold this guy to execute in a moment.
+ function webforms(){
+
+ // Run through HTML5's new input attributes to see if the UA understands any.
+ // We're using f which is the <input> element created early on
+ // Mike Taylr has created a comprehensive resource for testing these attributes
+ // when applied to all input types:
+ // http://miketaylr.com/code/input-type-attr.html
+ // spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
+ ret['input'] = (function(props) {
+ for (var i = 0, len = props.length; i<len; i++) {
+ attrs[ props[i] ] = !!(props[i] in inputElem);
+ }
+ return attrs;
+ })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
+
+ // Run through HTML5's new input types to see if the UA understands any.
+ // This is put behind the tests runloop because it doesn't return a
+ // true/false like all the other tests; instead, it returns an object
+ // containing each input type with its corresponding true/false value
+
+ // Big thanks to @miketaylr for the html5 forms expertise. http://miketaylr.com/
+ ret['inputtypes'] = (function(props) {
+
+ for (var i = 0, bool, inputElemType, defaultView, len=props.length; i < len; i++) {
+
+ inputElem.setAttribute('type', inputElemType = props[i]);
+ bool = inputElem.type !== 'text';
+
+ // We first check to see if the type we give it sticks..
+ // If the type does, we feed it a textual value, which shouldn't be valid.
+ // If the value doesn't stick, we know there's input sanitization which infers a custom UI
+ if (bool){
+
+ inputElem.value = smile;
+ inputElem.style.cssText = 'position:absolute;visibility:hidden;';
+
+ if (/^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined){
+
+ docElement.appendChild(inputElem);
+ defaultView = document.defaultView;
+
+ // Safari 2-4 allows the smiley as a value, despite making a slider
+ bool = defaultView.getComputedStyle &&
+ defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
+ // Mobile android web browser has false positive, so must
+ // check the height to see if the widget is actually there.
+ (inputElem.offsetHeight !== 0);
+
+ docElement.removeChild(inputElem);
+
+ } else if (/^(search|tel)$/.test(inputElemType)){
+ // Spec doesnt define any special parsing or detectable UI
+ // behaviors so we pass these through as true
+
+ // Interestingly, opera fails the earlier test, so it doesn't
+ // even make it here.
+
+ } else if (/^(url|email)$/.test(inputElemType)) {
+ // Real url and email support comes with prebaked validation.
+ bool = inputElem.checkValidity && inputElem.checkValidity() === false;
+
+ } else if (/^color$/.test(inputElemType)) {
+ // chuck into DOM and force reflow for Opera bug in 11.00
+ // github.com/Modernizr/Modernizr/issues#issue/159
+ docElement.appendChild(inputElem);
+ docElement.offsetWidth;
+ bool = inputElem.value != smile;
+ docElement.removeChild(inputElem);
+
+ } else {
+ // If the upgraded input compontent rejects the :) text, we got a winner
+ bool = inputElem.value != smile;
+ }
+ }
+
+ inputs[ props[i] ] = !!bool;
+ }
+ return inputs;
+ })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
+
+ }
+
+
+
+ // End of test definitions
+ // -----------------------
+
+
+
+ // Run through all tests and detect their support in the current UA.
+ // todo: hypothetically we could be doing an array of tests and use a basic loop here.
+ for ( var feature in tests ) {
+ if ( hasOwnProperty( tests, feature ) ) {
+ // run the test, throw the return value into the Modernizr,
+ // then based on that boolean, define an appropriate className
+ // and push it into an array of classes we'll join later.
+ featurename = feature.toLowerCase();
+ ret[ featurename ] = tests[ feature ]();
+
+ classes.push( ( ret[ featurename ] ? '' : 'no-' ) + featurename );
+ }
+ }
+
+ // input tests need to run.
+ if (!ret.input) webforms();
+
+
+
+ // Per 1.6: deprecated API is still accesible for now:
+ ret.crosswindowmessaging = ret.postmessage;
+ ret.historymanagement = ret.history;
+
+
+
+ /**
+ * Addtest allows the user to define their own feature tests
+ * the result will be added onto the Modernizr object,
+ * as well as an appropriate className set on the html element
+ *
+ * @param feature - String naming the feature
+ * @param test - Function returning true if feature is supported, false if not
+ */
+ ret.addTest = function (feature, test) {
+ feature = feature.toLowerCase();
+
+ if (ret[ feature ]) {
+ return; // quit if you're trying to overwrite an existing test
+ }
+ test = !!(test());
+ docElement.className += ' ' + (test ? '' : 'no-') + feature;
+ ret[ feature ] = test;
+ return ret; // allow chaining.
+ };
+
+ /**
+ * Reset m.style.cssText to nothing to reduce memory footprint.
+ */
+ set_css( '' );
+ modElem = inputElem = null;
+
+ //>>BEGIN IEPP
+ // Enable HTML 5 elements for styling in IE.
+ // fyi: jscript version does not reflect trident version
+ // therefore ie9 in ie7 mode will still have a jScript v.9
+ if ( enableHTML5 && window.attachEvent && (function(){ var elem = document.createElement("div");
+ elem.innerHTML = "<elem></elem>";
+ return elem.childNodes.length !== 1; })()) {
+ // iepp v1.6.2 by @jon_neal : code.google.com/p/ie-print-protector
+ (function(win, doc) {
+ var elems = 'abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video',
+ elemsArr = elems.split('|'),
+ elemsArrLen = elemsArr.length,
+ elemRegExp = new RegExp('(^|\\s)('+elems+')', 'gi'),
+ tagRegExp = new RegExp('<(\/*)('+elems+')', 'gi'),
+ ruleRegExp = new RegExp('(^|[^\\n]*?\\s)('+elems+')([^\\n]*)({[\\n\\w\\W]*?})', 'gi'),
+ docFrag = doc.createDocumentFragment(),
+ html = doc.documentElement,
+ head = html.firstChild,
+ bodyElem = doc.createElement('body'),
+ styleElem = doc.createElement('style'),
+ body;
+ function shim(doc) {
+ var a = -1;
+ while (++a < elemsArrLen)
+ // Use createElement so IE allows HTML5-named elements in a document
+ doc.createElement(elemsArr[a]);
+ }
+ function getCSS(styleSheetList, mediaType) {
+ var a = -1,
+ len = styleSheetList.length,
+ styleSheet,
+ cssTextArr = [];
+ while (++a < len) {
+ styleSheet = styleSheetList[a];
+ // Get css from all non-screen stylesheets and their imports
+ if ((mediaType = styleSheet.media || mediaType) != 'screen') cssTextArr.push(getCSS(styleSheet.imports, mediaType), styleSheet.cssText);
+ }
+ return cssTextArr.join('');
+ }
+ // Shim the document and iepp fragment
+ shim(doc);
+ shim(docFrag);
+ // Add iepp custom print style element
+ head.insertBefore(styleElem, head.firstChild);
+ styleElem.media = 'print';
+ win.attachEvent(
+ 'onbeforeprint',
+ function() {
+ var a = -1,
+ cssText = getCSS(doc.styleSheets, 'all'),
+ cssTextArr = [],
+ rule;
+ body = body || doc.body;
+ // Get only rules which reference HTML5 elements by name
+ while ((rule = ruleRegExp.exec(cssText)) != null)
+ // Replace all html5 element references with iepp substitute classnames
+ cssTextArr.push((rule[1]+rule[2]+rule[3]).replace(elemRegExp, '$1.iepp_$2')+rule[4]);
+ // Write iepp custom print CSS
+ styleElem.styleSheet.cssText = cssTextArr.join('\n');
+ while (++a < elemsArrLen) {
+ var nodeList = doc.getElementsByTagName(elemsArr[a]),
+ nodeListLen = nodeList.length,
+ b = -1;
+ while (++b < nodeListLen)
+ if (nodeList[b].className.indexOf('iepp_') < 0)
+ // Append iepp substitute classnames to all html5 elements
+ nodeList[b].className += ' iepp_'+elemsArr[a];
+ }
+ docFrag.appendChild(body);
+ html.appendChild(bodyElem);
+ // Write iepp substitute print-safe document
+ bodyElem.className = body.className;
+ // Replace HTML5 elements with <font> which is print-safe and shouldn't conflict since it isn't part of html5
+ bodyElem.innerHTML = body.innerHTML.replace(tagRegExp, '<$1font');
+ }
+ );
+ win.attachEvent(
+ 'onafterprint',
+ function() {
+ // Undo everything done in onbeforeprint
+ bodyElem.innerHTML = '';
+ html.removeChild(bodyElem);
+ html.appendChild(body);
+ styleElem.styleSheet.cssText = '';
+ }
+ );
+ })(window, document);
+ }
+ //>>END IEPP
+
+ // Assign private properties to the return object with prefix
+ ret._enableHTML5 = enableHTML5;
+ ret._version = version;
+
+ // Remove "no-js" class from <html> element, if it exists:
+ docElement.className = docElement.className.replace(/\bno-js\b/,'')
+ + ' js '
+
+ // Add the new classes to the <html> element.
+ + classes.join( ' ' );
+
+ return ret;
+
+})(this,this.document);
View
10 src/Elmah.Couchbase/packages/Modernizr.1.7/Content/Scripts/modernizr-1.7.min.js
@@ -0,0 +1,10 @@
+/*!
+* Note: While Microsoft is not the author of this file, Microsoft is
+* offering you a license subject to the terms of the Microsoft Software
+* License Terms for Microsoft ASP.NET Model View Controller 3.
+* Microsoft reserves all other rights. The notices below are provided
+* for informational purposes only and are not the license terms under
+* which Microsoft distributed this file.
+*/
+// Modernizr v1.7 www.modernizr.com
+window.Modernizr=function(a,b,c){function G(){e.input=function(a){for(var b=0,c=a.length;b<c;b++)t[a[b]]=!!(a[b]in l);return t}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)l.setAttribute("type",f=a[d]),e=l.type!=="text",e&&(l.value=m,l.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&l.style.WebkitAppearance!==c?(g.appendChild(l),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(l,null).WebkitAppearance!=="textfield"&&l.offsetHeight!==0,g.removeChild(l)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=l.checkValidity&&l.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(l),g.offsetWidth,e=l.value!=m,g.removeChild(l)):e=l.value!=m)),s[a[d]]=!!e;return s}("search tel url email datetime date month week time datetime-local number range color".split(" "))}function F(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+p.join(c+" ")+c).split(" ");return!!E(d,b)}function E(a,b){for(var d in a)if(k[a[d]]!==c&&(!b||b(a[d],j)))return!0}function D(a,b){return(""+a).indexOf(b)!==-1}function C(a,b){return typeof a===b}function B(a,b){return A(o.join(a+";")+(b||""))}function A(a){k.cssText=a}var d="1.7",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l=b.createElement("input"),m=":)",n=Object.prototype.toString,o=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),p="Webkit Moz O ms Khtml".split(" "),q={svg:"http://www.w3.org/2000/svg"},r={},s={},t={},u=[],v,w=function(a){var c=b.createElement("style"),d=b.createElement("div"),e;c.textContent=a+"{#modernizr{height:3px}}",h.appendChild(c),d.id="modernizr",g.appendChild(d),e=d.offsetHeight===3,c.parentNode.removeChild(c),d.parentNode.removeChild(d);return!!e},x=function(){function d(d,e){e=e||b.createElement(a[d]||"div");var f=(d="on"+d)in e;f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=C(e[d],"function"),C(e[d],c)||(e[d]=c),e.removeAttribute(d))),e=null;return f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),y=({}).hasOwnProperty,z;C(y,c)||C(y.call,c)?z=function(a,b){return b in a&&C(a.constructor.prototype[b],c)}:z=function(a,b){return y.call(a,b)},r.flexbox=function(){function c(a,b,c,d){a.style.cssText=o.join(b+":"+c+";")+(d||"")}function a(a,b,c,d){b+=":",a.style.cssText=(b+o.join(c+";"+b)).slice(0,-b.length)+(d||"")}var d=b.createElement("div"),e=b.createElement("div");a(d,"display","box","width:42px;padding:0;"),c(e,"box-flex","1","width:10px;"),d.appendChild(e),g.appendChild(d);var f=e.offsetWidth===42;d.removeChild(e),g.removeChild(d);return f},r.canvas=function(){var a=b.createElement("canvas");return a.getContext&&a.getContext("2d")},r.canvastext=function(){return e.canvas&&C(b.createElement("canvas").getContext("2d").fillText,"function")},r.webgl=function(){return!!a.WebGLRenderingContext},r.touch=function(){return"ontouchstart"in a||w("@media ("+o.join("touch-enabled),(")+"modernizr)")},r.geolocation=function(){return!!navigator.geolocation},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){var b=!!a.openDatabase;return b},r.indexedDB=function(){for(var b=-1,c=p.length;++b<c;){var d=p[b].toLowerCase();if(a[d+"_indexedDB"]||a[d+"IndexedDB"])return!0}return!1},r.hashchange=function(){return x("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return !!(a.history&&history.pushState)},r.draganddrop=function(){return x("dragstart")&&x("drop")},r.websockets=function(){return"WebSocket"in a},r.rgba=function(){A("background-color:rgba(150,255,150,.5)");return D(k.backgroundColor,"rgba")},r.hsla=function(){A("background-color:hsla(120,40%,100%,.5)");return D(k.backgroundColor,"rgba")||D(k.backgroundColor,"hsla")},r.multiplebgs=function(){A("background:url(//:),url(//:),red url(//:)");return(new RegExp("(url\\s*\\(.*?){3}")).test(k.background)},r.backgroundsize=function(){return F("backgroundSize")},r.borderimage=function(){return F("borderImage")},r.borderradius=function(){return F("borderRadius","",function(a){return D(a,"orderRadius")})},r.boxshadow=function(){return F("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){B("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return F("animationName")},r.csscolumns=function(){return F("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";A((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return D(k.backgroundImage,"gradient")},r.cssreflections=function(){return F("boxReflect")},r.csstransforms=function(){return!!E(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!E(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=w("@media ("+o.join("transform-3d),(")+"modernizr)"));return a},r.csstransitions=function(){return F("transitionProperty")},r.fontface=function(){var a,c,d=h||g,e=b.createElement("style"),f=b.implementation||{hasFeature:function(){return!1}};e.type="text/css",d.insertBefore(e,d.firstChild),a=e.sheet||e.styleSheet;var i=f.hasFeature("CSS2","")?function(b){if(!a||!b)return!1;var c=!1;try{a.insertRule(b,0),c=/src/i.test(a.cssRules[0].cssText),a.deleteRule(a.cssRules.length-1)}catch(d){}return c}:function(b){if(!a||!b)return!1;a.cssText=b;return a.cssText.length!==0&&/src/i.test(a.cssText)&&a.cssText.replace(/\r+|\n+/g,"").indexOf(b.split(" ")[0])===0};c=i('@font-face { font-family: "font"; src: url(data:,); }'),d.removeChild(e);return c},r.video=function(){var a=b.createElement("video"),c=!!a.canPlayType;if(c){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return c},r.audio=function(){var a=b.createElement("audio"),c=!!a.canPlayType;c&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;"));return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webWorkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML="<svg/>";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var H in r)z(r,H)&&(v=H.toLowerCase(),e[v]=r[H](),u.push((e[v]?"":"no-")+v));e.input||G(),e.crosswindowmessaging=e.postmessage,e.historymanagement=e.history,e.addTest=function(a,b){a=a.toLowerCase();if(!e[a]){b=!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b;return e}},A(""),j=l=null,f&&a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function p(a,b){var c=-1,d=a.length,e,f=[];while(++c<d)e=a[c],(b=e.media||b)!="screen"&&f.push(p(e.imports,b),e.cssText);return f.join("")}function o(a){var b=-1;while(++b<e)a.createElement(d[b])}var c="abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",d=c.split("|"),e=d.length,f=new RegExp("(^|\\s)("+c+")","gi"),g=new RegExp("<(/*)("+c+")","gi"),h=new RegExp("(^|[^\\n]*?\\s)("+c+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),i=b.createDocumentFragment(),j=b.documentElement,k=j.firstChild,l=b.createElement("body"),m=b.createElement("style"),n;o(b),o(i),k.insertBefore(m,k.firstChild),m.media="print",a.attachEvent("onbeforeprint",function(){var a=-1,c=p(b.styleSheets,"all"),k=[],o;n=n||b.body;while((o=h.exec(c))!=null)k.push((o[1]+o[2]+o[3]).replace(f,"$1.iepp_$2")+o[4]);m.styleSheet.cssText=k.join("\n");while(++a<e){var q=b.getElementsByTagName(d[a]),r=q.length,s=-1;while(++s<r)q[s].className.indexOf("iepp_")<0&&(q[s].className+=" iepp_"+d[a])}i.appendChild(n),j.appendChild(l),l.className=n.className,l.innerHTML=n.innerHTML.replace(g,"<$1font")}),a.attachEvent("onafterprint",function(){l.innerHTML="",j.removeChild(l),j.appendChild(n),m.styleSheet.cssText=""})}(a,b),e._enableHTML5=f,e._version=d,g.className=g.className.replace(/\bno-js\b/,"")+" js "+u.join(" ");return e}(this,this.document)
View
BIN  src/Elmah.Couchbase/packages/Modernizr.1.7/Modernizr.1.7.nupkg
Binary file not shown
View
BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/Newtonsoft.Json.4.5.7.nupkg
Binary file not shown
View
BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net20/Newtonsoft.Json.dll
Binary file not shown
View
8,204 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net20/Newtonsoft.Json.xml
8,204 additions, 0 deletions not shown
View
BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net35/Newtonsoft.Json.dll
Binary file not shown
View
7,340 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net35/Newtonsoft.Json.xml
7,340 additions, 0 deletions not shown
View
BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net40/Newtonsoft.Json.dll
Binary file not shown
View
7,583 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/net40/Newtonsoft.Json.xml
7,583 additions, 0 deletions not shown
View
BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl3-wp/Newtonsoft.Json.dll
Binary file not shown
View
6,883 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl3-wp/Newtonsoft.Json.xml
6,883 additions, 0 deletions not shown
View
BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl4-windowsphone71/Newtonsoft.Json.dll
Binary file not shown
View
6,883 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl4-windowsphone71/Newtonsoft.Json.xml
6,883 additions, 0 deletions not shown
View
BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl4/Newtonsoft.Json.dll
Binary file not shown
View
6,905 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/sl4/Newtonsoft.Json.xml
6,905 additions, 0 deletions not shown
View
BIN  src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/winrt45/Newtonsoft.Json.dll
Binary file not shown
View
7,101 src/Elmah.Couchbase/packages/Newtonsoft.Json.4.5.7/lib/winrt45/Newtonsoft.Json.xml
7,101 additions, 0 deletions not shown
View
15 src/Elmah.Couchbase/packages/elmah.1.2.2/Readme.txt
@@ -0,0 +1,15 @@
+A new HTTP handler has been configured in your application for consulting the
+error log and its feeds. It is reachable at elmah.axd under your application
+root. If, for example, your application is deployed at http://www.example.com,
+the URL for ELMAH would be http://www.example.com/elmah.axd. You can, of
+course, change this path in your application's configuration file.
+
+ELMAH is also set up to be secure such that it can only be accessed locally.
+You can enable remote access but then it is paramount that you secure access
+to authorized users or/and roles only. This can be done using standard
+authorization rules and configuration already built into ASP.NET. For more
+information, see http://code.google.com/p/elmah/wiki/SecuringErrorLogPages on
+the project site.
+
+Please review the commented out authorization section under
+<location path="elmah.axd"> and make the appropriate changes.
View
15 src/Elmah.Couchbase/packages/elmah.1.2.2/content/App_Readme/Elmah.txt
@@ -0,0 +1,15 @@
+A new HTTP handler has been configured in your application for consulting the
+error log and its feeds. It is reachable at elmah.axd under your application
+root. If, for example, your application is deployed at http://www.example.com,
+the URL for ELMAH would be http://www.example.com/elmah.axd. You can, of
+course, change this path in your application's configuration file.
+
+ELMAH is also set up to be secure such that it can only be accessed locally.
+You can enable remote access but then it is paramount that you secure access
+to authorized users or/and roles only. This can be done using standard
+authorization rules and configuration already built into ASP.NET. For more
+information, see http://code.google.com/p/elmah/wiki/SecuringErrorLogPages on
+the project site.
+
+Please review the commented out authorization section under
+<location path="elmah.axd"> and make the appropriate changes.
View
59 src/Elmah.Couchbase/packages/elmah.1.2.2/content/web.config.transform
@@ -0,0 +1,59 @@
+<configuration>
+ <configSections>
+ <sectionGroup name="elmah">
+ <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
+ <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
+ <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
+ <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
+ </sectionGroup>
+ </configSections>
+ <system.web>
+ <httpModules>
+ <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
+ <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
+ <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
+ </httpModules>
+ </system.web>
+ <system.webServer>
+ <validation validateIntegratedModeConfiguration="false" />
+ <modules>
+ <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
+ <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
+ <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
+ </modules>
+ </system.webServer>
+ <elmah>
+ <!--
+ See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
+ more information on remote access and securing ELMAH.
+ -->
+ <security allowRemoteAccess="false" /> </