From 79ee230edd6574b72b392282035b6dd403c01e93 Mon Sep 17 00:00:00 2001 From: Tien Nguyen Date: Thu, 10 Sep 2015 11:38:41 -0700 Subject: [PATCH 01/27] Create the menu group. --- .../InteractiveWindow/InteractiveWindow.vsct | 3 +- .../Communication/DebuggerConnection.cs | 550 +++++++++--------- Nodejs/Product/Nodejs/NodejsTools.vsct | 15 +- Nodejs/Product/Nodejs/PkgCmdId.cs | 1 + .../Nodejs/Project/NodejsProjectNode.cs | 6 + 5 files changed, 298 insertions(+), 277 deletions(-) diff --git a/Nodejs/Product/InteractiveWindow/InteractiveWindow.vsct b/Nodejs/Product/InteractiveWindow/InteractiveWindow.vsct index 537db3672..55873f187 100644 --- a/Nodejs/Product/InteractiveWindow/InteractiveWindow.vsct +++ b/Nodejs/Product/InteractiveWindow/InteractiveWindow.vsct @@ -299,12 +299,13 @@ - + + diff --git a/Nodejs/Product/Nodejs/Debugger/Communication/DebuggerConnection.cs b/Nodejs/Product/Nodejs/Debugger/Communication/DebuggerConnection.cs index 1130e425e..d2b61f36e 100644 --- a/Nodejs/Product/Nodejs/Debugger/Communication/DebuggerConnection.cs +++ b/Nodejs/Product/Nodejs/Debugger/Communication/DebuggerConnection.cs @@ -1,124 +1,124 @@ -//*********************************************************// -// Copyright (c) Microsoft. All rights reserved. -// -// Apache 2.0 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. -// -//*********************************************************// - -using System; -using System.Diagnostics; -using System.IO; -using System.Net.Sockets; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using Microsoft.NodejsTools.Logging; -using Microsoft.VisualStudioTools; -using Microsoft.VisualStudioTools.Project; -using Newtonsoft.Json; - -namespace Microsoft.NodejsTools.Debugger.Communication { - sealed class DebuggerConnection : IDebuggerConnection { - private static readonly Encoding _encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false, throwOnInvalidBytes: true); - private static readonly Regex _contentLengthFieldRegex = new Regex(@"Content-Length: (\d+)", RegexOptions.Compiled); - private static readonly Regex _nodeVersionFieldRegex = new Regex(@"Embedding-Host: node v([0-9.]+)", RegexOptions.Compiled); - - private readonly AsyncProducerConsumerCollection _packetsToSend = new AsyncProducerConsumerCollection(); - private readonly INetworkClientFactory _networkClientFactory; - private INetworkClient _networkClient; - private readonly object _networkClientLock = new object(); - private volatile Version _nodeVersion; - - public DebuggerConnection(INetworkClientFactory networkClientFactory) { - Utilities.ArgumentNotNull("networkClientFactory", networkClientFactory); - - _networkClientFactory = networkClientFactory; - } - - public void Dispose() { - Close(); - } - - /// - /// Close connection. - /// - public void Close() { - lock (_networkClientLock) { - if (_networkClient != null) { - _networkClient.Dispose(); - _networkClient = null; - } - } - } - - /// - /// Send a message. - /// - /// Message. - public void SendMessage(string message) { - Utilities.ArgumentNotNullOrEmpty("message", message); - - if (!Connected) { - return; - } - - LiveLogger.WriteLine("Request: " + message, typeof(DebuggerConnection)); - - var messageBody = _encoding.GetBytes(message); - var messageHeader = _encoding.GetBytes(string.Format("Content-Length: {0}\r\n\r\n", messageBody.Length)); - _packetsToSend.Add(messageHeader); - _packetsToSend.Add(messageBody); - } - - /// - /// Fired when received inbound message. - /// - public event EventHandler OutputMessage; - - /// - /// Fired when connection was closed. - /// - public event EventHandler ConnectionClosed; - - /// - /// Gets a value indicating whether connection established. - /// - public bool Connected { - get { - lock (_networkClientLock) { - return _networkClient != null && _networkClient.Connected; - } - } - } - - /// - /// Gets a Node.js version, or null if it was not supplied by the debuggee. - /// - public Version NodeVersion { - get { return _nodeVersion; } - } - - /// - /// Connect to specified debugger endpoint. - /// - /// URI identifying the endpoint to connect to. - public void Connect(Uri uri) { - Utilities.ArgumentNotNull("uri", uri); - LiveLogger.WriteLine("Debugger connecting to URI: {0}", uri); - - Close(); - lock (_networkClientLock) { - int connection_attempts = 0; - const int MAX_ATTEMPTS = 5; +//*********************************************************// +// Copyright (c) Microsoft. All rights reserved. +// +// Apache 2.0 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. +// +//*********************************************************// + +using System; +using System.Diagnostics; +using System.IO; +using System.Net.Sockets; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Microsoft.NodejsTools.Logging; +using Microsoft.VisualStudioTools; +using Microsoft.VisualStudioTools.Project; +using Newtonsoft.Json; + +namespace Microsoft.NodejsTools.Debugger.Communication { + sealed class DebuggerConnection : IDebuggerConnection { + private static readonly Encoding _encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false, throwOnInvalidBytes: true); + private static readonly Regex _contentLengthFieldRegex = new Regex(@"Content-Length: (\d+)", RegexOptions.Compiled); + private static readonly Regex _nodeVersionFieldRegex = new Regex(@"Embedding-Host: node v([0-9.]+)", RegexOptions.Compiled); + + private readonly AsyncProducerConsumerCollection _packetsToSend = new AsyncProducerConsumerCollection(); + private readonly INetworkClientFactory _networkClientFactory; + private INetworkClient _networkClient; + private readonly object _networkClientLock = new object(); + private volatile Version _nodeVersion; + + public DebuggerConnection(INetworkClientFactory networkClientFactory) { + Utilities.ArgumentNotNull("networkClientFactory", networkClientFactory); + + _networkClientFactory = networkClientFactory; + } + + public void Dispose() { + Close(); + } + + /// + /// Close connection. + /// + public void Close() { + lock (_networkClientLock) { + if (_networkClient != null) { + _networkClient.Dispose(); + _networkClient = null; + } + } + } + + /// + /// Send a message. + /// + /// Message. + public void SendMessage(string message) { + Utilities.ArgumentNotNullOrEmpty("message", message); + + if (!Connected) { + return; + } + + LiveLogger.WriteLine("Request: " + message, typeof(DebuggerConnection)); + + var messageBody = _encoding.GetBytes(message); + var messageHeader = _encoding.GetBytes(string.Format("Content-Length: {0}\r\n\r\n", messageBody.Length)); + _packetsToSend.Add(messageHeader); + _packetsToSend.Add(messageBody); + } + + /// + /// Fired when received inbound message. + /// + public event EventHandler OutputMessage; + + /// + /// Fired when connection was closed. + /// + public event EventHandler ConnectionClosed; + + /// + /// Gets a value indicating whether connection established. + /// + public bool Connected { + get { + lock (_networkClientLock) { + return _networkClient != null && _networkClient.Connected; + } + } + } + + /// + /// Gets a Node.js version, or null if it was not supplied by the debuggee. + /// + public Version NodeVersion { + get { return _nodeVersion; } + } + + /// + /// Connect to specified debugger endpoint. + /// + /// URI identifying the endpoint to connect to. + public void Connect(Uri uri) { + Utilities.ArgumentNotNull("uri", uri); + LiveLogger.WriteLine("Debugger connecting to URI: {0}", uri); + + Close(); + lock (_networkClientLock) { + int connection_attempts = 0; + const int MAX_ATTEMPTS = 5; while (true) { connection_attempts++; try { @@ -155,158 +155,158 @@ public void Connect(Uri uri) { System.Threading.Thread.Sleep(200); } } - } - } - - Task.Factory.StartNew(ReceiveAndDispatchMessagesWorker); - Task.Factory.StartNew(SendPacketsWorker); - } - - /// - /// Sends packets queued by . - /// - private async void SendPacketsWorker() { - INetworkClient networkClient; - lock (_networkClientLock) { - networkClient = _networkClient; - } - if (networkClient == null) { - return; - } - - try { - var stream = networkClient.GetStream(); - while (Connected) { - byte[] packet = await _packetsToSend.TakeAsync().ConfigureAwait(false); - await stream.WriteAsync(packet, 0, packet.Length).ConfigureAwait(false); - await stream.FlushAsync().ConfigureAwait(false); - } - } catch (SocketException) { - } catch (ObjectDisposedException) { - } catch (IOException) { - } catch (Exception e) { - LiveLogger.WriteLine(string.Format("Failed to write message {0}.", e), typeof(DebuggerConnection)); - throw; - } - } - - /// - /// Receives messages from debugger, parses them to extract the body, and dispatches them to listeners. - /// - private async void ReceiveAndDispatchMessagesWorker() { - LiveLogger.WriteLine("Established connection.", typeof(DebuggerConnection)); - - INetworkClient networkClient; - lock (_networkClientLock) { - networkClient = _networkClient; - } - if (networkClient == null) { - return; - } - - try { - var stream = networkClient.GetStream(); - - // Use a single read buffer and a single StringBuilder (periodically cleared) across loop iterations, - // to avoid costly repeated allocations. - var buffer = new byte[0x1000]; - var sb = new StringBuilder(); - - // Read and process incoming messages until disconnected. - while (true) { - // Read the header of this message. - int contentLength = 0; - while (true) { - // Read a single header field. - string field; - sb.Clear(); - while (true) { - int bytesRead = await stream.ReadAsync(buffer, 0, 1).ConfigureAwait(false); - if (bytesRead < 1) { - // End of stream - we are disconnected from debuggee. - throw new EndOfStreamException(); - } - - // All fields that we care about are ASCII, and for all the other fields we only need to recognize - // the trailing \r\n, so there's no need to do proper decoding here. - sb.Append((char)buffer[0]); - - // "\r\n" terminates the field. - if (sb.Length >= 2 && sb[sb.Length - 2] == '\r' && sb[sb.Length - 1] == '\n') { - field = sb.ToString(0, sb.Length - 2); - break; - } - } - - // Blank line terminates the header. - if (string.IsNullOrEmpty(field)) { - break; - } - - // Otherwise, it's an actual field. Parse it if it's something we care about. - - // Content-Length - var match = _contentLengthFieldRegex.Match(field); - if (match.Success) { - int.TryParse(match.Groups[1].Value, out contentLength); - continue; - } - - // Embedding-Host, which contains the Node.js version number. Only try parsing that if we don't know the version yet - - // it normally comes in the very first packet, so this saves time trying to parse all the consequent ones. - if (NodeVersion == null) { - match = _nodeVersionFieldRegex.Match(field); - if (match.Success) { - Version nodeVersion; - Version.TryParse(match.Groups[1].Value, out nodeVersion); - _nodeVersion = nodeVersion; - } - } - } - - if (contentLength == 0) { - continue; - } - - // Read the body of this message. - - // If our preallocated buffer is large enough, use it - this should be true for vast majority of messages. - // If not, allocate a buffer that is large enough and use that, then throw it away - don't replace the original - // buffer with it, so that we don't hold onto a huge chunk of memory for the rest of the debugging session just - // because of a single long message. - var bodyBuffer = buffer.Length >= contentLength ? buffer : new byte[contentLength]; - - for (int i = 0; i < contentLength; ) { - i += await stream.ReadAsync(bodyBuffer, i, contentLength - i).ConfigureAwait(false); - } - - string message = _encoding.GetString(bodyBuffer, 0, contentLength); - LiveLogger.WriteLine("Response: " + message, typeof(DebuggerConnection)); - - // Notify subscribers. - var outputMessage = OutputMessage; - if (outputMessage != null) { - outputMessage(this, new MessageEventArgs(message)); - } - } - } catch (SocketException) { - } catch (IOException) { - } catch (ObjectDisposedException) { - } catch (DecoderFallbackException ex) { - LiveLogger.WriteLine(string.Format("Error decoding response body: {0}", ex), typeof(DebuggerConnection)); - } catch (JsonReaderException ex) { - LiveLogger.WriteLine(string.Format("Error parsing JSON response: {0}", ex), typeof(DebuggerConnection)); - } catch (Exception ex) { - LiveLogger.WriteLine(string.Format("Message processing failed: {0}", ex), typeof(DebuggerConnection)); - throw; - } finally { - LiveLogger.WriteLine("Connection was closed.", typeof(DebuggerConnection)); - - var connectionClosed = ConnectionClosed; - if (connectionClosed != null) { - connectionClosed(this, EventArgs.Empty); - } - } - } - } + } + } + + Task.Factory.StartNew(ReceiveAndDispatchMessagesWorker); + Task.Factory.StartNew(SendPacketsWorker); + } + + /// + /// Sends packets queued by . + /// + private async void SendPacketsWorker() { + INetworkClient networkClient; + lock (_networkClientLock) { + networkClient = _networkClient; + } + if (networkClient == null) { + return; + } + + try { + var stream = networkClient.GetStream(); + while (Connected) { + byte[] packet = await _packetsToSend.TakeAsync().ConfigureAwait(false); + await stream.WriteAsync(packet, 0, packet.Length).ConfigureAwait(false); + await stream.FlushAsync().ConfigureAwait(false); + } + } catch (SocketException) { + } catch (ObjectDisposedException) { + } catch (IOException) { + } catch (Exception e) { + LiveLogger.WriteLine(string.Format("Failed to write message {0}.", e), typeof(DebuggerConnection)); + throw; + } + } + + /// + /// Receives messages from debugger, parses them to extract the body, and dispatches them to listeners. + /// + private async void ReceiveAndDispatchMessagesWorker() { + LiveLogger.WriteLine("Established connection.", typeof(DebuggerConnection)); + + INetworkClient networkClient; + lock (_networkClientLock) { + networkClient = _networkClient; + } + if (networkClient == null) { + return; + } + + try { + var stream = networkClient.GetStream(); + + // Use a single read buffer and a single StringBuilder (periodically cleared) across loop iterations, + // to avoid costly repeated allocations. + var buffer = new byte[0x1000]; + var sb = new StringBuilder(); + + // Read and process incoming messages until disconnected. + while (true) { + // Read the header of this message. + int contentLength = 0; + while (true) { + // Read a single header field. + string field; + sb.Clear(); + while (true) { + int bytesRead = await stream.ReadAsync(buffer, 0, 1).ConfigureAwait(false); + if (bytesRead < 1) { + // End of stream - we are disconnected from debuggee. + throw new EndOfStreamException(); + } + + // All fields that we care about are ASCII, and for all the other fields we only need to recognize + // the trailing \r\n, so there's no need to do proper decoding here. + sb.Append((char)buffer[0]); + + // "\r\n" terminates the field. + if (sb.Length >= 2 && sb[sb.Length - 2] == '\r' && sb[sb.Length - 1] == '\n') { + field = sb.ToString(0, sb.Length - 2); + break; + } + } + + // Blank line terminates the header. + if (string.IsNullOrEmpty(field)) { + break; + } + + // Otherwise, it's an actual field. Parse it if it's something we care about. + + // Content-Length + var match = _contentLengthFieldRegex.Match(field); + if (match.Success) { + int.TryParse(match.Groups[1].Value, out contentLength); + continue; + } + + // Embedding-Host, which contains the Node.js version number. Only try parsing that if we don't know the version yet - + // it normally comes in the very first packet, so this saves time trying to parse all the consequent ones. + if (NodeVersion == null) { + match = _nodeVersionFieldRegex.Match(field); + if (match.Success) { + Version nodeVersion; + Version.TryParse(match.Groups[1].Value, out nodeVersion); + _nodeVersion = nodeVersion; + } + } + } + + if (contentLength == 0) { + continue; + } + + // Read the body of this message. + + // If our preallocated buffer is large enough, use it - this should be true for vast majority of messages. + // If not, allocate a buffer that is large enough and use that, then throw it away - don't replace the original + // buffer with it, so that we don't hold onto a huge chunk of memory for the rest of the debugging session just + // because of a single long message. + var bodyBuffer = buffer.Length >= contentLength ? buffer : new byte[contentLength]; + + for (int i = 0; i < contentLength; ) { + i += await stream.ReadAsync(bodyBuffer, i, contentLength - i).ConfigureAwait(false); + } + + string message = _encoding.GetString(bodyBuffer, 0, contentLength); + LiveLogger.WriteLine("Response: " + message, typeof(DebuggerConnection)); + + // Notify subscribers. + var outputMessage = OutputMessage; + if (outputMessage != null) { + outputMessage(this, new MessageEventArgs(message)); + } + } + } catch (SocketException) { + } catch (IOException) { + } catch (ObjectDisposedException) { + } catch (DecoderFallbackException ex) { + LiveLogger.WriteLine(string.Format("Error decoding response body: {0}", ex), typeof(DebuggerConnection)); + } catch (JsonReaderException ex) { + LiveLogger.WriteLine(string.Format("Error parsing JSON response: {0}", ex), typeof(DebuggerConnection)); + } catch (Exception ex) { + LiveLogger.WriteLine(string.Format("Message processing failed: {0}", ex), typeof(DebuggerConnection)); + throw; + } finally { + LiveLogger.WriteLine("Connection was closed.", typeof(DebuggerConnection)); + + var connectionClosed = ConnectionClosed; + if (connectionClosed != null) { + connectionClosed(this, EventArgs.Empty); + } + } + } + } } \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/NodejsTools.vsct b/Nodejs/Product/Nodejs/NodejsTools.vsct index a884b4137..903120a62 100644 --- a/Nodejs/Product/Nodejs/NodejsTools.vsct +++ b/Nodejs/Product/Nodejs/NodejsTools.vsct @@ -51,6 +51,10 @@ + + + + @@ -87,6 +91,13 @@ DynamicVisibility If you do not want an image next to your command, remove the Icon node or set it to --> + + + + + + + + @@ -376,6 +397,9 @@ + + + diff --git a/Nodejs/Product/Nodejs/PkgCmdId.cs b/Nodejs/Product/Nodejs/PkgCmdId.cs index 73f1f51dd..23c05d3c8 100644 --- a/Nodejs/Product/Nodejs/PkgCmdId.cs +++ b/Nodejs/Product/Nodejs/PkgCmdId.cs @@ -37,6 +37,9 @@ class PkgCmdId { public const int cmdidSetAsContent = 0x209; public const int cmdidSetAsCompile = 0x210; public const int cmdidAddNewJavaScriptFileCommand = 0x211; + public const int cmdidAddNewTypeScriptFileCommand = 0x212; + public const int cmdidAddNewHTMLFileCommand = 0x213; + public const int cmdidAddNewCSSFileCommand = 0x214; public const int cmdidNpmManageModules = 0x300; public const int cmdidNpmInstallModules = 0x301; diff --git a/Nodejs/Product/Nodejs/Project/NewFileNameForm.Designer.cs b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.Designer.cs similarity index 95% rename from Nodejs/Product/Nodejs/Project/NewFileNameForm.Designer.cs rename to Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.Designer.cs index d2cac3bd0..d524c763f 100644 --- a/Nodejs/Product/Nodejs/Project/NewFileNameForm.Designer.cs +++ b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.Designer.cs @@ -48,6 +48,7 @@ private void InitializeComponent() this.textBox.Name = "textBox"; this.textBox.Size = new System.Drawing.Size(306, 20); this.textBox.TabIndex = 1; + this.textBox.TextChanged += this.TextBox_TextChanged; // // cancelButton // @@ -87,7 +88,6 @@ private void InitializeComponent() this.ShowIcon = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Specify Name for Item"; - this.Load += new System.EventHandler(this.NewFileNameForm_Load); this.ResumeLayout(false); this.PerformLayout(); diff --git a/Nodejs/Product/Nodejs/Project/NewFileNameForm.cs b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.cs similarity index 71% rename from Nodejs/Product/Nodejs/Project/NewFileNameForm.cs rename to Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.cs index 64bf80d30..7bcd2515d 100644 --- a/Nodejs/Product/Nodejs/Project/NewFileNameForm.cs +++ b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.cs @@ -1,17 +1,17 @@ -//*********************************************************// -// Copyright (c) Microsoft. All rights reserved. -// -// Apache 2.0 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. -// +//*********************************************************// +// Copyright (c) Microsoft. All rights reserved. +// +// Apache 2.0 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. +// //*********************************************************// using System; @@ -21,14 +21,11 @@ namespace Microsoft.NodejsTools.Project { public partial class NewFileNameForm : Form { - public NewFileNameForm() + public NewFileNameForm(string initialFileName) { InitializeComponent(); - } - - private void NewFileNameForm_Load(object sender, EventArgs e) - { + TextBox.Text = initialFileName; } public TextBox TextBox @@ -37,5 +34,15 @@ public TextBox TextBox return textBox; } } + + private void TextBox_TextChanged(object sender, EventArgs e) + { + if (TextBox.Text.Trim().Length == 0) { + okButton.Enabled = false; + } + else { + okButton.Enabled = true; + } + } } } diff --git a/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileUtilities.cs b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileUtilities.cs new file mode 100644 index 000000000..26ff13289 --- /dev/null +++ b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileUtilities.cs @@ -0,0 +1,104 @@ +using System; +using System.Diagnostics; +using Microsoft.VisualStudio.Shell.Interop; + + +namespace Microsoft.NodejsTools.Project.NewFileMenuGroup +{ + internal static class NewFileUtilities + { + public static string GetTemplateFile(string fileType) + { + string templateFileName = null; + + switch (fileType) { + case NodejsConstants.JavaScript: + templateFileName = "EmptyJs.js"; + break; + case NodejsConstants.TypeScript: + templateFileName = "EmptyTs.ts"; + break; + case NodejsConstants.HTML: + templateFileName = "EmptyHTML.html"; + break; + case NodejsConstants.CSS: + templateFileName = "EmptyCSS.css"; + break; + } + + if (templateFileName == null) { + Debug.Fail(String.Format("Invalid file type: {0}", fileType)); + } + + return NodejsToolsInstallPath.GetFile("FileTemplates\\NewItem\\" + templateFileName); + } + + private static string GetInitialName(string fileType) + { + string name = null; + + switch (fileType) { + case NodejsConstants.JavaScript: + name = "JavaScript.js"; + break; + case NodejsConstants.TypeScript: + name = "TypeScript.ts"; + break; + case NodejsConstants.HTML: + name = "HTML.html"; + break; + case NodejsConstants.CSS: + name = "CSS.css"; + break; + } + + if (name == null) { + Debug.Fail(String.Format("Invalid file type: {0}", fileType)); + } + + return name; + } + + private static void CreateNewFile(NodejsProjectNode projectNode, uint containerId, string fileType) + { + using (var dialog = new NewFileNameForm(GetInitialName(fileType))) { + if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { + string itemName = dialog.TextBox.Text; + + VSADDRESULT[] pResult = new VSADDRESULT[1]; + projectNode.AddItem( + containerId, // Identifier of the container folder. + VSADDITEMOPERATION.VSADDITEMOP_CLONEFILE, // Indicate that we want to create this new file by cloning a template file. + itemName, + 1, // Number of templates in the next parameter. Must be 1 if using VSADDITEMOP_CLONEFILE. + new string[] { GetTemplateFile(fileType) }, // Array contains the template file path. + IntPtr.Zero, // Handle to the Add Item dialog box. Must be Zero if using VSADDITEMOP_CLONEFILE. + pResult + ); + + // TODO: Do we need to check if result[0] = VSADDRESULT.ADDRESULT_Success here? + } + } + } + + internal static void CreateNewJavaScriptFile(NodejsProjectNode projectNode, uint containerId) + { + CreateNewFile(projectNode, containerId, NodejsConstants.JavaScript); + } + + internal static void CreateNewTypeScriptFile(NodejsProjectNode projectNode, uint containerId) + { + CreateNewFile(projectNode, containerId, NodejsConstants.TypeScript); + } + + internal static void CreateNewHTMLFile(NodejsProjectNode projectNode, uint containerId) + { + CreateNewFile(projectNode, containerId, NodejsConstants.HTML); + } + + internal static void CreateNewCSSFile(NodejsProjectNode projectNode, uint containerId) + { + CreateNewFile(projectNode, containerId, NodejsConstants.CSS); + } + } +} diff --git a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs index 2c3c3f122..6036ed159 100644 --- a/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs +++ b/Nodejs/Product/Nodejs/Project/NodejsProjectNode.cs @@ -1028,6 +1028,9 @@ protected override QueryStatusResult QueryStatusSelectionOnNodes(IList Date: Sun, 13 Sep 2015 18:39:12 -0700 Subject: [PATCH 05/27] The only change in these files is line ending format. --- .../Nodejs/Commands/DiagnosticsForm.cs | 82 +-- .../Communication/DebuggerConnection.cs | 550 +++++++++--------- 2 files changed, 316 insertions(+), 316 deletions(-) diff --git a/Nodejs/Product/Nodejs/Commands/DiagnosticsForm.cs b/Nodejs/Product/Nodejs/Commands/DiagnosticsForm.cs index 140a3c8c6..1f8d44ee8 100644 --- a/Nodejs/Product/Nodejs/Commands/DiagnosticsForm.cs +++ b/Nodejs/Product/Nodejs/Commands/DiagnosticsForm.cs @@ -1,46 +1,46 @@ -//*********************************************************// -// Copyright (c) Microsoft. All rights reserved. -// -// Apache 2.0 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. -// -//*********************************************************// - -using System; -using System.Windows.Forms; - -namespace Microsoft.NodejsTools.Commands { - public partial class DiagnosticsForm : Form { - public DiagnosticsForm(string content) { - InitializeComponent(); - _textBox.Text = content; - } - - public TextBox TextBox { - get { - return _textBox; - } - } - - private void _ok_Click(object sender, EventArgs e) { - Close(); - } - - private void _copy_Click(object sender, EventArgs e) { - _textBox.SelectAll(); - Clipboard.SetText(_textBox.SelectedText); +//*********************************************************// +// Copyright (c) Microsoft. All rights reserved. +// +// Apache 2.0 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. +// +//*********************************************************// + +using System; +using System.Windows.Forms; + +namespace Microsoft.NodejsTools.Commands { + public partial class DiagnosticsForm : Form { + public DiagnosticsForm(string content) { + InitializeComponent(); + _textBox.Text = content; + } + + public TextBox TextBox { + get { + return _textBox; + } + } + + private void _ok_Click(object sender, EventArgs e) { + Close(); + } + + private void _copy_Click(object sender, EventArgs e) { + _textBox.SelectAll(); + Clipboard.SetText(_textBox.SelectedText); } private void _diagnosticLoggingCheckbox_CheckedChanged(object sender, EventArgs e) { NodejsPackage.Instance.DiagnosticsOptionsPage.IsLiveDiagnosticsEnabled = _diagnosticLoggingCheckbox.Checked; } - } -} + } +} diff --git a/Nodejs/Product/Nodejs/Debugger/Communication/DebuggerConnection.cs b/Nodejs/Product/Nodejs/Debugger/Communication/DebuggerConnection.cs index d2b61f36e..1130e425e 100644 --- a/Nodejs/Product/Nodejs/Debugger/Communication/DebuggerConnection.cs +++ b/Nodejs/Product/Nodejs/Debugger/Communication/DebuggerConnection.cs @@ -1,124 +1,124 @@ -//*********************************************************// -// Copyright (c) Microsoft. All rights reserved. -// -// Apache 2.0 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. -// -//*********************************************************// - -using System; -using System.Diagnostics; -using System.IO; -using System.Net.Sockets; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using Microsoft.NodejsTools.Logging; -using Microsoft.VisualStudioTools; -using Microsoft.VisualStudioTools.Project; -using Newtonsoft.Json; - -namespace Microsoft.NodejsTools.Debugger.Communication { - sealed class DebuggerConnection : IDebuggerConnection { - private static readonly Encoding _encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false, throwOnInvalidBytes: true); - private static readonly Regex _contentLengthFieldRegex = new Regex(@"Content-Length: (\d+)", RegexOptions.Compiled); - private static readonly Regex _nodeVersionFieldRegex = new Regex(@"Embedding-Host: node v([0-9.]+)", RegexOptions.Compiled); - - private readonly AsyncProducerConsumerCollection _packetsToSend = new AsyncProducerConsumerCollection(); - private readonly INetworkClientFactory _networkClientFactory; - private INetworkClient _networkClient; - private readonly object _networkClientLock = new object(); - private volatile Version _nodeVersion; - - public DebuggerConnection(INetworkClientFactory networkClientFactory) { - Utilities.ArgumentNotNull("networkClientFactory", networkClientFactory); - - _networkClientFactory = networkClientFactory; - } - - public void Dispose() { - Close(); - } - - /// - /// Close connection. - /// - public void Close() { - lock (_networkClientLock) { - if (_networkClient != null) { - _networkClient.Dispose(); - _networkClient = null; - } - } - } - - /// - /// Send a message. - /// - /// Message. - public void SendMessage(string message) { - Utilities.ArgumentNotNullOrEmpty("message", message); - - if (!Connected) { - return; - } - - LiveLogger.WriteLine("Request: " + message, typeof(DebuggerConnection)); - - var messageBody = _encoding.GetBytes(message); - var messageHeader = _encoding.GetBytes(string.Format("Content-Length: {0}\r\n\r\n", messageBody.Length)); - _packetsToSend.Add(messageHeader); - _packetsToSend.Add(messageBody); - } - - /// - /// Fired when received inbound message. - /// - public event EventHandler OutputMessage; - - /// - /// Fired when connection was closed. - /// - public event EventHandler ConnectionClosed; - - /// - /// Gets a value indicating whether connection established. - /// - public bool Connected { - get { - lock (_networkClientLock) { - return _networkClient != null && _networkClient.Connected; - } - } - } - - /// - /// Gets a Node.js version, or null if it was not supplied by the debuggee. - /// - public Version NodeVersion { - get { return _nodeVersion; } - } - - /// - /// Connect to specified debugger endpoint. - /// - /// URI identifying the endpoint to connect to. - public void Connect(Uri uri) { - Utilities.ArgumentNotNull("uri", uri); - LiveLogger.WriteLine("Debugger connecting to URI: {0}", uri); - - Close(); - lock (_networkClientLock) { - int connection_attempts = 0; - const int MAX_ATTEMPTS = 5; +//*********************************************************// +// Copyright (c) Microsoft. All rights reserved. +// +// Apache 2.0 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. +// +//*********************************************************// + +using System; +using System.Diagnostics; +using System.IO; +using System.Net.Sockets; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Microsoft.NodejsTools.Logging; +using Microsoft.VisualStudioTools; +using Microsoft.VisualStudioTools.Project; +using Newtonsoft.Json; + +namespace Microsoft.NodejsTools.Debugger.Communication { + sealed class DebuggerConnection : IDebuggerConnection { + private static readonly Encoding _encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false, throwOnInvalidBytes: true); + private static readonly Regex _contentLengthFieldRegex = new Regex(@"Content-Length: (\d+)", RegexOptions.Compiled); + private static readonly Regex _nodeVersionFieldRegex = new Regex(@"Embedding-Host: node v([0-9.]+)", RegexOptions.Compiled); + + private readonly AsyncProducerConsumerCollection _packetsToSend = new AsyncProducerConsumerCollection(); + private readonly INetworkClientFactory _networkClientFactory; + private INetworkClient _networkClient; + private readonly object _networkClientLock = new object(); + private volatile Version _nodeVersion; + + public DebuggerConnection(INetworkClientFactory networkClientFactory) { + Utilities.ArgumentNotNull("networkClientFactory", networkClientFactory); + + _networkClientFactory = networkClientFactory; + } + + public void Dispose() { + Close(); + } + + /// + /// Close connection. + /// + public void Close() { + lock (_networkClientLock) { + if (_networkClient != null) { + _networkClient.Dispose(); + _networkClient = null; + } + } + } + + /// + /// Send a message. + /// + /// Message. + public void SendMessage(string message) { + Utilities.ArgumentNotNullOrEmpty("message", message); + + if (!Connected) { + return; + } + + LiveLogger.WriteLine("Request: " + message, typeof(DebuggerConnection)); + + var messageBody = _encoding.GetBytes(message); + var messageHeader = _encoding.GetBytes(string.Format("Content-Length: {0}\r\n\r\n", messageBody.Length)); + _packetsToSend.Add(messageHeader); + _packetsToSend.Add(messageBody); + } + + /// + /// Fired when received inbound message. + /// + public event EventHandler OutputMessage; + + /// + /// Fired when connection was closed. + /// + public event EventHandler ConnectionClosed; + + /// + /// Gets a value indicating whether connection established. + /// + public bool Connected { + get { + lock (_networkClientLock) { + return _networkClient != null && _networkClient.Connected; + } + } + } + + /// + /// Gets a Node.js version, or null if it was not supplied by the debuggee. + /// + public Version NodeVersion { + get { return _nodeVersion; } + } + + /// + /// Connect to specified debugger endpoint. + /// + /// URI identifying the endpoint to connect to. + public void Connect(Uri uri) { + Utilities.ArgumentNotNull("uri", uri); + LiveLogger.WriteLine("Debugger connecting to URI: {0}", uri); + + Close(); + lock (_networkClientLock) { + int connection_attempts = 0; + const int MAX_ATTEMPTS = 5; while (true) { connection_attempts++; try { @@ -155,158 +155,158 @@ public void Connect(Uri uri) { System.Threading.Thread.Sleep(200); } } - } - } - - Task.Factory.StartNew(ReceiveAndDispatchMessagesWorker); - Task.Factory.StartNew(SendPacketsWorker); - } - - /// - /// Sends packets queued by . - /// - private async void SendPacketsWorker() { - INetworkClient networkClient; - lock (_networkClientLock) { - networkClient = _networkClient; - } - if (networkClient == null) { - return; - } - - try { - var stream = networkClient.GetStream(); - while (Connected) { - byte[] packet = await _packetsToSend.TakeAsync().ConfigureAwait(false); - await stream.WriteAsync(packet, 0, packet.Length).ConfigureAwait(false); - await stream.FlushAsync().ConfigureAwait(false); - } - } catch (SocketException) { - } catch (ObjectDisposedException) { - } catch (IOException) { - } catch (Exception e) { - LiveLogger.WriteLine(string.Format("Failed to write message {0}.", e), typeof(DebuggerConnection)); - throw; - } - } - - /// - /// Receives messages from debugger, parses them to extract the body, and dispatches them to listeners. - /// - private async void ReceiveAndDispatchMessagesWorker() { - LiveLogger.WriteLine("Established connection.", typeof(DebuggerConnection)); - - INetworkClient networkClient; - lock (_networkClientLock) { - networkClient = _networkClient; - } - if (networkClient == null) { - return; - } - - try { - var stream = networkClient.GetStream(); - - // Use a single read buffer and a single StringBuilder (periodically cleared) across loop iterations, - // to avoid costly repeated allocations. - var buffer = new byte[0x1000]; - var sb = new StringBuilder(); - - // Read and process incoming messages until disconnected. - while (true) { - // Read the header of this message. - int contentLength = 0; - while (true) { - // Read a single header field. - string field; - sb.Clear(); - while (true) { - int bytesRead = await stream.ReadAsync(buffer, 0, 1).ConfigureAwait(false); - if (bytesRead < 1) { - // End of stream - we are disconnected from debuggee. - throw new EndOfStreamException(); - } - - // All fields that we care about are ASCII, and for all the other fields we only need to recognize - // the trailing \r\n, so there's no need to do proper decoding here. - sb.Append((char)buffer[0]); - - // "\r\n" terminates the field. - if (sb.Length >= 2 && sb[sb.Length - 2] == '\r' && sb[sb.Length - 1] == '\n') { - field = sb.ToString(0, sb.Length - 2); - break; - } - } - - // Blank line terminates the header. - if (string.IsNullOrEmpty(field)) { - break; - } - - // Otherwise, it's an actual field. Parse it if it's something we care about. - - // Content-Length - var match = _contentLengthFieldRegex.Match(field); - if (match.Success) { - int.TryParse(match.Groups[1].Value, out contentLength); - continue; - } - - // Embedding-Host, which contains the Node.js version number. Only try parsing that if we don't know the version yet - - // it normally comes in the very first packet, so this saves time trying to parse all the consequent ones. - if (NodeVersion == null) { - match = _nodeVersionFieldRegex.Match(field); - if (match.Success) { - Version nodeVersion; - Version.TryParse(match.Groups[1].Value, out nodeVersion); - _nodeVersion = nodeVersion; - } - } - } - - if (contentLength == 0) { - continue; - } - - // Read the body of this message. - - // If our preallocated buffer is large enough, use it - this should be true for vast majority of messages. - // If not, allocate a buffer that is large enough and use that, then throw it away - don't replace the original - // buffer with it, so that we don't hold onto a huge chunk of memory for the rest of the debugging session just - // because of a single long message. - var bodyBuffer = buffer.Length >= contentLength ? buffer : new byte[contentLength]; - - for (int i = 0; i < contentLength; ) { - i += await stream.ReadAsync(bodyBuffer, i, contentLength - i).ConfigureAwait(false); - } - - string message = _encoding.GetString(bodyBuffer, 0, contentLength); - LiveLogger.WriteLine("Response: " + message, typeof(DebuggerConnection)); - - // Notify subscribers. - var outputMessage = OutputMessage; - if (outputMessage != null) { - outputMessage(this, new MessageEventArgs(message)); - } - } - } catch (SocketException) { - } catch (IOException) { - } catch (ObjectDisposedException) { - } catch (DecoderFallbackException ex) { - LiveLogger.WriteLine(string.Format("Error decoding response body: {0}", ex), typeof(DebuggerConnection)); - } catch (JsonReaderException ex) { - LiveLogger.WriteLine(string.Format("Error parsing JSON response: {0}", ex), typeof(DebuggerConnection)); - } catch (Exception ex) { - LiveLogger.WriteLine(string.Format("Message processing failed: {0}", ex), typeof(DebuggerConnection)); - throw; - } finally { - LiveLogger.WriteLine("Connection was closed.", typeof(DebuggerConnection)); - - var connectionClosed = ConnectionClosed; - if (connectionClosed != null) { - connectionClosed(this, EventArgs.Empty); - } - } - } - } + } + } + + Task.Factory.StartNew(ReceiveAndDispatchMessagesWorker); + Task.Factory.StartNew(SendPacketsWorker); + } + + /// + /// Sends packets queued by . + /// + private async void SendPacketsWorker() { + INetworkClient networkClient; + lock (_networkClientLock) { + networkClient = _networkClient; + } + if (networkClient == null) { + return; + } + + try { + var stream = networkClient.GetStream(); + while (Connected) { + byte[] packet = await _packetsToSend.TakeAsync().ConfigureAwait(false); + await stream.WriteAsync(packet, 0, packet.Length).ConfigureAwait(false); + await stream.FlushAsync().ConfigureAwait(false); + } + } catch (SocketException) { + } catch (ObjectDisposedException) { + } catch (IOException) { + } catch (Exception e) { + LiveLogger.WriteLine(string.Format("Failed to write message {0}.", e), typeof(DebuggerConnection)); + throw; + } + } + + /// + /// Receives messages from debugger, parses them to extract the body, and dispatches them to listeners. + /// + private async void ReceiveAndDispatchMessagesWorker() { + LiveLogger.WriteLine("Established connection.", typeof(DebuggerConnection)); + + INetworkClient networkClient; + lock (_networkClientLock) { + networkClient = _networkClient; + } + if (networkClient == null) { + return; + } + + try { + var stream = networkClient.GetStream(); + + // Use a single read buffer and a single StringBuilder (periodically cleared) across loop iterations, + // to avoid costly repeated allocations. + var buffer = new byte[0x1000]; + var sb = new StringBuilder(); + + // Read and process incoming messages until disconnected. + while (true) { + // Read the header of this message. + int contentLength = 0; + while (true) { + // Read a single header field. + string field; + sb.Clear(); + while (true) { + int bytesRead = await stream.ReadAsync(buffer, 0, 1).ConfigureAwait(false); + if (bytesRead < 1) { + // End of stream - we are disconnected from debuggee. + throw new EndOfStreamException(); + } + + // All fields that we care about are ASCII, and for all the other fields we only need to recognize + // the trailing \r\n, so there's no need to do proper decoding here. + sb.Append((char)buffer[0]); + + // "\r\n" terminates the field. + if (sb.Length >= 2 && sb[sb.Length - 2] == '\r' && sb[sb.Length - 1] == '\n') { + field = sb.ToString(0, sb.Length - 2); + break; + } + } + + // Blank line terminates the header. + if (string.IsNullOrEmpty(field)) { + break; + } + + // Otherwise, it's an actual field. Parse it if it's something we care about. + + // Content-Length + var match = _contentLengthFieldRegex.Match(field); + if (match.Success) { + int.TryParse(match.Groups[1].Value, out contentLength); + continue; + } + + // Embedding-Host, which contains the Node.js version number. Only try parsing that if we don't know the version yet - + // it normally comes in the very first packet, so this saves time trying to parse all the consequent ones. + if (NodeVersion == null) { + match = _nodeVersionFieldRegex.Match(field); + if (match.Success) { + Version nodeVersion; + Version.TryParse(match.Groups[1].Value, out nodeVersion); + _nodeVersion = nodeVersion; + } + } + } + + if (contentLength == 0) { + continue; + } + + // Read the body of this message. + + // If our preallocated buffer is large enough, use it - this should be true for vast majority of messages. + // If not, allocate a buffer that is large enough and use that, then throw it away - don't replace the original + // buffer with it, so that we don't hold onto a huge chunk of memory for the rest of the debugging session just + // because of a single long message. + var bodyBuffer = buffer.Length >= contentLength ? buffer : new byte[contentLength]; + + for (int i = 0; i < contentLength; ) { + i += await stream.ReadAsync(bodyBuffer, i, contentLength - i).ConfigureAwait(false); + } + + string message = _encoding.GetString(bodyBuffer, 0, contentLength); + LiveLogger.WriteLine("Response: " + message, typeof(DebuggerConnection)); + + // Notify subscribers. + var outputMessage = OutputMessage; + if (outputMessage != null) { + outputMessage(this, new MessageEventArgs(message)); + } + } + } catch (SocketException) { + } catch (IOException) { + } catch (ObjectDisposedException) { + } catch (DecoderFallbackException ex) { + LiveLogger.WriteLine(string.Format("Error decoding response body: {0}", ex), typeof(DebuggerConnection)); + } catch (JsonReaderException ex) { + LiveLogger.WriteLine(string.Format("Error parsing JSON response: {0}", ex), typeof(DebuggerConnection)); + } catch (Exception ex) { + LiveLogger.WriteLine(string.Format("Message processing failed: {0}", ex), typeof(DebuggerConnection)); + throw; + } finally { + LiveLogger.WriteLine("Connection was closed.", typeof(DebuggerConnection)); + + var connectionClosed = ConnectionClosed; + if (connectionClosed != null) { + connectionClosed(this, EventArgs.Empty); + } + } + } + } } \ No newline at end of file From 2f7fbabb460be8ba5b876e77be08539d1c369785 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 25 Apr 2016 15:47:51 -0700 Subject: [PATCH 06/27] Add header and auto formatting --- .../NewFileNameForm.Designer.cs | 28 +++++--- .../NewFileMenuGroup/NewFileNameForm.cs | 19 ++---- .../NewFileMenuGroup/NewFileUtilities.cs | 68 +++++++++---------- 3 files changed, 59 insertions(+), 56 deletions(-) diff --git a/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.Designer.cs b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.Designer.cs index 9c0b1ee4f..ce6ec5307 100644 --- a/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.Designer.cs +++ b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.Designer.cs @@ -1,7 +1,21 @@ -namespace Microsoft.NodejsTools.Project -{ - partial class NewFileNameForm - { +//*********************************************************// +// Copyright (c) Microsoft. All rights reserved. +// +// Apache 2.0 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. +// +//*********************************************************// + +namespace Microsoft.NodejsTools.Project { + partial class NewFileNameForm { /// /// Required designer variable. /// @@ -11,8 +25,7 @@ partial class NewFileNameForm /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { + protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } @@ -25,8 +38,7 @@ protected override void Dispose(bool disposing) /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// - private void InitializeComponent() - { + private void InitializeComponent() { this.label = new System.Windows.Forms.Label(); this.textBox = new System.Windows.Forms.TextBox(); this.cancelButton = new System.Windows.Forms.Button(); diff --git a/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.cs b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.cs index 95a91dbc0..9fa97576c 100644 --- a/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.cs +++ b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileNameForm.cs @@ -17,30 +17,23 @@ using System; using System.Windows.Forms; -namespace Microsoft.NodejsTools.Project -{ - public partial class NewFileNameForm : Form - { - public NewFileNameForm(string initialFileName) - { +namespace Microsoft.NodejsTools.Project { + public partial class NewFileNameForm : Form { + public NewFileNameForm(string initialFileName) { InitializeComponent(); - TextBox.Text = initialFileName; } - public TextBox TextBox - { + public TextBox TextBox { get { return textBox; } } - private void TextBox_TextChanged(object sender, EventArgs e) - { + private void TextBox_TextChanged(object sender, EventArgs e) { if (TextBox.Text.Trim().Length == 0) { okButton.Enabled = false; - } - else { + } else { okButton.Enabled = true; } } diff --git a/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileUtilities.cs b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileUtilities.cs index 0aac2ad5e..f27d33768 100644 --- a/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileUtilities.cs +++ b/Nodejs/Product/Nodejs/Project/NewFileMenuGroup/NewFileUtilities.cs @@ -1,14 +1,26 @@ -using System; +//*********************************************************// +// Copyright (c) Microsoft. All rights reserved. +// +// Apache 2.0 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. +// +//*********************************************************// + +using System; using System.Diagnostics; using Microsoft.VisualStudio.Shell.Interop; - -namespace Microsoft.NodejsTools.Project.NewFileMenuGroup -{ - internal static class NewFileUtilities - { - public static string GetTemplateFile(string fileType) - { +namespace Microsoft.NodejsTools.Project.NewFileMenuGroup { + internal static class NewFileUtilities { + public static string GetTemplateFile(string fileType) { string templateFileName = null; switch (fileType) { @@ -33,34 +45,24 @@ public static string GetTemplateFile(string fileType) return NodejsToolsInstallPath.GetFile("FileTemplates\\NewItem\\" + templateFileName); } - private static string GetInitialName(string fileType) - { - string name = null; + private static string GetInitialName(string fileType) { switch (fileType) { case NodejsConstants.JavaScript: - name = "JavaScript.js"; - break; + return "JavaScript.js"; case NodejsConstants.TypeScript: - name = "TypeScript.ts"; - break; + return "TypeScript.ts"; case NodejsConstants.HTML: - name = "HTML.html"; - break; + return "HTML.html"; case NodejsConstants.CSS: - name = "CSS.css"; - break; + return "CSS.css"; + default: + Debug.Fail(String.Format("Invalid file type: {0}", fileType)); + return null; } - - if (name == null) { - Debug.Fail(String.Format("Invalid file type: {0}", fileType)); - } - - return name; } - private static void CreateNewFile(NodejsProjectNode projectNode, uint containerId, string fileType) - { + private static void CreateNewFile(NodejsProjectNode projectNode, uint containerId, string fileType) { using (var dialog = new NewFileNameForm(GetInitialName(fileType))) { if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string itemName = dialog.TextBox.Text; @@ -81,23 +83,19 @@ private static void CreateNewFile(NodejsProjectNode projectNode, uint containerI } } - internal static void CreateNewJavaScriptFile(NodejsProjectNode projectNode, uint containerId) - { + internal static void CreateNewJavaScriptFile(NodejsProjectNode projectNode, uint containerId) { CreateNewFile(projectNode, containerId, NodejsConstants.JavaScript); } - internal static void CreateNewTypeScriptFile(NodejsProjectNode projectNode, uint containerId) - { + internal static void CreateNewTypeScriptFile(NodejsProjectNode projectNode, uint containerId) { CreateNewFile(projectNode, containerId, NodejsConstants.TypeScript); } - internal static void CreateNewHTMLFile(NodejsProjectNode projectNode, uint containerId) - { + internal static void CreateNewHTMLFile(NodejsProjectNode projectNode, uint containerId) { CreateNewFile(projectNode, containerId, NodejsConstants.HTML); } - internal static void CreateNewCSSFile(NodejsProjectNode projectNode, uint containerId) - { + internal static void CreateNewCSSFile(NodejsProjectNode projectNode, uint containerId) { CreateNewFile(projectNode, containerId, NodejsConstants.CSS); } } From 8add2a7ba135d59c1e5e284929b7de1734c30cf8 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 29 Jun 2016 11:17:15 -0700 Subject: [PATCH 07/27] Add workspaces reference --- Nodejs/Product/Analysis/Analysis.csproj | 4 +++- Nodejs/Product/Analysis/packages.config | 4 ++++ Nodejs/Product/Nodejs/Nodejs.csproj | 5 +++++ Nodejs/Product/Nodejs/app.config | 11 +++++++++++ Nodejs/Product/Nodejs/packages.config | 1 - Nodejs/Product/Npm/packages.config | 1 - Nodejs/Product/Profiling/Profiling.csproj | 1 + Nodejs/Product/Profiling/app.config | 11 +++++++++++ Nodejs/Product/TestAdapter/packages.config | 1 - Nodejs/Tests/AnalysisTests/JSAnalysisTests.csproj | 3 +++ Nodejs/Tests/AnalysisTests/app.config | 11 +++++++++++ .../AzurePublishing.Tests.UI.csproj | 3 +++ Nodejs/Tests/AzurePublishing.UI/app.config | 11 +++++++++++ Nodejs/Tests/Core.UI/Nodejs.Tests.UI.csproj | 5 ++++- Nodejs/Tests/Core.UI/app.config | 11 +++++++++++ Nodejs/Tests/Core/NodejsTests.csproj | 5 +++-- Nodejs/Tests/Core/app.config | 11 +++++++++++ Nodejs/Tests/Core/packages.config | 1 - Nodejs/Tests/NpmTests/packages.config | 1 - Nodejs/Tests/Profiling.UI/ProfilerUITests.csproj | 3 +++ Nodejs/Tests/Profiling.UI/app.config | 11 +++++++++++ Nodejs/Tests/Profiling/ProfilerTests.csproj | 3 +++ Nodejs/Tests/Profiling/app.config | 11 +++++++++++ Nodejs/Tests/TestAdapterTests/TestAdapterTests.csproj | 3 +++ Nodejs/Tests/TestAdapterTests/app.config | 11 +++++++++++ .../Utilities.Nodejs/TestUtilities.Nodejs.csproj | 3 +++ Nodejs/Tests/Utilities.Nodejs/app.config | 11 +++++++++++ nuget.config | 6 ++++++ 28 files changed, 154 insertions(+), 9 deletions(-) create mode 100644 Nodejs/Product/Analysis/packages.config create mode 100644 Nodejs/Product/Nodejs/app.config create mode 100644 Nodejs/Product/Profiling/app.config create mode 100644 Nodejs/Tests/AnalysisTests/app.config create mode 100644 Nodejs/Tests/AzurePublishing.UI/app.config create mode 100644 Nodejs/Tests/Core.UI/app.config create mode 100644 Nodejs/Tests/Core/app.config create mode 100644 Nodejs/Tests/Profiling.UI/app.config create mode 100644 Nodejs/Tests/Profiling/app.config create mode 100644 Nodejs/Tests/TestAdapterTests/app.config create mode 100644 Nodejs/Tests/Utilities.Nodejs/app.config create mode 100644 nuget.config diff --git a/Nodejs/Product/Analysis/Analysis.csproj b/Nodejs/Product/Analysis/Analysis.csproj index b638f3021..728ed193b 100644 --- a/Nodejs/Product/Analysis/Analysis.csproj +++ b/Nodejs/Product/Analysis/Analysis.csproj @@ -291,7 +291,9 @@ JScript.Designer.cs - + + + diff --git a/Nodejs/Product/Analysis/packages.config b/Nodejs/Product/Analysis/packages.config new file mode 100644 index 000000000..3ce4940d9 --- /dev/null +++ b/Nodejs/Product/Analysis/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/Nodejs.csproj b/Nodejs/Product/Nodejs/Nodejs.csproj index 280db6b95..dbb5f3079 100644 --- a/Nodejs/Product/Nodejs/Nodejs.csproj +++ b/Nodejs/Product/Nodejs/Nodejs.csproj @@ -178,6 +178,10 @@ false $(DevEnvDir)Extensions\Microsoft\Windows Azure Tools\Common\Microsoft.VisualStudio.WindowsAzure.CommonAzureTools.Contracts.dll + + ..\..\packages\Microsoft.VisualStudio.Workspaces.14.0.719-pre-g3a6acd5580\lib\net45\Microsoft.VisualStudio.Workspace.dll + True + @@ -910,6 +914,7 @@ true ItemTemplates + Designer diff --git a/Nodejs/Product/Nodejs/app.config b/Nodejs/Product/Nodejs/app.config new file mode 100644 index 000000000..4a1c0bf1f --- /dev/null +++ b/Nodejs/Product/Nodejs/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/packages.config b/Nodejs/Product/Nodejs/packages.config index 4e84c7a12..9e6202524 100644 --- a/Nodejs/Product/Nodejs/packages.config +++ b/Nodejs/Product/Nodejs/packages.config @@ -1,6 +1,5 @@  - diff --git a/Nodejs/Product/Npm/packages.config b/Nodejs/Product/Npm/packages.config index 22c133c63..992a6e6d0 100644 --- a/Nodejs/Product/Npm/packages.config +++ b/Nodejs/Product/Npm/packages.config @@ -1,5 +1,4 @@  - \ No newline at end of file diff --git a/Nodejs/Product/Profiling/Profiling.csproj b/Nodejs/Product/Profiling/Profiling.csproj index 8cd68bb8d..861eaa6cc 100644 --- a/Nodejs/Product/Profiling/Profiling.csproj +++ b/Nodejs/Product/Profiling/Profiling.csproj @@ -180,6 +180,7 @@ + Designer diff --git a/Nodejs/Product/Profiling/app.config b/Nodejs/Product/Profiling/app.config new file mode 100644 index 000000000..4a1c0bf1f --- /dev/null +++ b/Nodejs/Product/Profiling/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Nodejs/Product/TestAdapter/packages.config b/Nodejs/Product/TestAdapter/packages.config index 22c133c63..992a6e6d0 100644 --- a/Nodejs/Product/TestAdapter/packages.config +++ b/Nodejs/Product/TestAdapter/packages.config @@ -1,5 +1,4 @@  - \ No newline at end of file diff --git a/Nodejs/Tests/AnalysisTests/JSAnalysisTests.csproj b/Nodejs/Tests/AnalysisTests/JSAnalysisTests.csproj index c061c63d2..657bfc1be 100644 --- a/Nodejs/Tests/AnalysisTests/JSAnalysisTests.csproj +++ b/Nodejs/Tests/AnalysisTests/JSAnalysisTests.csproj @@ -104,6 +104,9 @@ + + + diff --git a/Nodejs/Tests/TestAdapterTests/app.config b/Nodejs/Tests/TestAdapterTests/app.config new file mode 100644 index 000000000..4a1c0bf1f --- /dev/null +++ b/Nodejs/Tests/TestAdapterTests/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Nodejs/Tests/Utilities.Nodejs/TestUtilities.Nodejs.csproj b/Nodejs/Tests/Utilities.Nodejs/TestUtilities.Nodejs.csproj index cc41b51f7..390ae192c 100644 --- a/Nodejs/Tests/Utilities.Nodejs/TestUtilities.Nodejs.csproj +++ b/Nodejs/Tests/Utilities.Nodejs/TestUtilities.Nodejs.csproj @@ -119,5 +119,8 @@ Nodejs + + + \ No newline at end of file diff --git a/Nodejs/Tests/Utilities.Nodejs/app.config b/Nodejs/Tests/Utilities.Nodejs/app.config new file mode 100644 index 000000000..4a1c0bf1f --- /dev/null +++ b/Nodejs/Tests/Utilities.Nodejs/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/nuget.config b/nuget.config new file mode 100644 index 000000000..678c16402 --- /dev/null +++ b/nuget.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From d3de8af2a41f24cbf57e84388c5ddbc48e2252e6 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 30 Jun 2016 18:03:38 -0700 Subject: [PATCH 08/27] Port Node Debug provider to NTVS This change takes the existing node debugger provider embedded in the Open Folder team's code base, and moves it into the NTVS code. This will allow us to maintain the debug provider going forward. Testing Tested on VS15. There seems to be a bug with anycode where `ProviderPriority` is not respected, so the builtin copy of the node debug provider is always used over this new debug provider in the NTVS codebase. I changed the file extension type to test this change, and saw this debug provider being used. --- Nodejs/Product/Analysis/Analysis.csproj | 3 - Nodejs/Product/Analysis/packages.config | 4 - .../Nodejs/Debugger/NodeDebugProvider.cs | 94 +++++++++++++++++++ Nodejs/Product/Nodejs/Nodejs.csproj | 21 ++++- Nodejs/Product/Nodejs/packages.config | 4 +- 5 files changed, 114 insertions(+), 12 deletions(-) delete mode 100644 Nodejs/Product/Analysis/packages.config create mode 100644 Nodejs/Product/Nodejs/Debugger/NodeDebugProvider.cs diff --git a/Nodejs/Product/Analysis/Analysis.csproj b/Nodejs/Product/Analysis/Analysis.csproj index 728ed193b..58b961753 100644 --- a/Nodejs/Product/Analysis/Analysis.csproj +++ b/Nodejs/Product/Analysis/Analysis.csproj @@ -291,9 +291,6 @@ JScript.Designer.cs - - - diff --git a/Nodejs/Product/Analysis/packages.config b/Nodejs/Product/Analysis/packages.config deleted file mode 100644 index 3ce4940d9..000000000 --- a/Nodejs/Product/Analysis/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/Debugger/NodeDebugProvider.cs b/Nodejs/Product/Nodejs/Debugger/NodeDebugProvider.cs new file mode 100644 index 000000000..2a62159f9 --- /dev/null +++ b/Nodejs/Product/Nodejs/Debugger/NodeDebugProvider.cs @@ -0,0 +1,94 @@ +//*********************************************************// +// Copyright (c) Microsoft. All rights reserved. +// +// Apache 2.0 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. +// +//*********************************************************// + +#if DEV15 + +using System; +using System.ComponentModel.Composition; +using Microsoft.VisualStudio.Shell.Interop; +using Microsoft.VisualStudio.Workspace; +using Microsoft.VisualStudio.Workspace.Debug; +using Microsoft.VisualStudio.Workspace.Extensions.VS.Debug; + +namespace Microsoft.NodejsTools.Debugger { + /// + /// Extension to Vs Launch Debugger to handle js files from a Node Js project + /// + [ExportVsDebugLaunchTarget(ProviderType, new string[] { ".js" }, ProviderPriority.Highest)] + internal class NodeJsDebugLaunchProvider : IVsDebugLaunchTargetProvider { + private const string ProviderType = "6C01D598-DE83-4D5B-B7E5-757FBA8443DD"; + private const string NodeExeKey = "nodeExe"; + + private const string NodeJsSchema = +@"{ + ""definitions"": { + ""nodejs"": { + ""type"": ""object"", + ""properties"": { + ""type"": {""type"": ""string"",""enum"": [ ""nodejs"" ]}, + ""nodeExe"": { ""type"": ""string"" } + } + }, + ""nodejsFile"": { + ""allOf"": [ + { ""$ref"": ""#/definitions/default"" }, + { ""$ref"": ""#/definitions/nodejs"" } + ] + } + }, + ""defaults"": { + ""nodejs"": { ""$ref"": ""#/definitions/nodejs"" } + }, + ""configuration"": ""#/definitions/nodejsFile"" +}"; + + public void SetupDebugTargetInfo(ref VsDebugTargetInfo vsDebugTargetInfo, DebugLaunchActionContext debugLaunchContext) { + string target = vsDebugTargetInfo.bstrExe; + vsDebugTargetInfo.bstrExe = debugLaunchContext.LaunchConfiguration.GetValue(NodeExeKey, Nodejs.GetPathToNodeExecutableFromEnvironment()); + string nodeJsArgs = vsDebugTargetInfo.bstrArg; + vsDebugTargetInfo.bstrArg = "\"" + target + "\""; + if (!string.IsNullOrEmpty(nodeJsArgs)) + { + vsDebugTargetInfo.bstrArg += " "; + vsDebugTargetInfo.bstrArg += nodeJsArgs; + } + + vsDebugTargetInfo.clsidCustom = DebugEngine.AD7Engine.DebugEngineGuid; + vsDebugTargetInfo.bstrOptions = "WAIT_ON_ABNORMAL_EXIT=true"; + vsDebugTargetInfo.grfLaunch = (uint)__VSDBGLAUNCHFLAGS.DBGLAUNCH_StopDebuggingOnEnd; + } + + [ExportLaunchConfigurationProvider( + LaunchConfigurationProviderType, + new string[] { ".js" }, + "nodejs", + NodeJsSchema)] + public class LaunchConfigurationProvider : ILaunchConfigurationProvider { + private const string LaunchConfigurationProviderType = "1DB21619-2C53-4BEF-84E4-B1C4D6771A51"; + + public void CustomizeLaunchConfiguration(DebugLaunchActionContext debugLaunchActionContext, IPropertySettings launchSettings) { + // noop + } + + /// + public bool IsDebugLaunchActionSupported(DebugLaunchActionContext debugLaunchActionContext) { + throw new NotImplementedException(); + } + } + } +} + +#endif \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/Nodejs.csproj b/Nodejs/Product/Nodejs/Nodejs.csproj index dbb5f3079..cd9e84801 100644 --- a/Nodejs/Product/Nodejs/Nodejs.csproj +++ b/Nodejs/Product/Nodejs/Nodejs.csproj @@ -122,6 +122,22 @@ True + + ..\..\packages\Microsoft.VisualStudio.Validation.14.1.144\lib\net45\Microsoft.VisualStudio.Validation.dll + True + + + ..\..\packages\Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86\lib\net46\Microsoft.VisualStudio.Workspace.dll + True + + + ..\..\packages\Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86\lib\net46\Microsoft.VisualStudio.Workspace.Extensions.dll + True + + + ..\..\packages\Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86\lib\net46\Microsoft.VisualStudio.Workspace.Extensions.VS.dll + True + True @@ -178,10 +194,6 @@ false $(DevEnvDir)Extensions\Microsoft\Windows Azure Tools\Common\Microsoft.VisualStudio.WindowsAzure.CommonAzureTools.Contracts.dll - - ..\..\packages\Microsoft.VisualStudio.Workspaces.14.0.719-pre-g3a6acd5580\lib\net45\Microsoft.VisualStudio.Workspace.dll - True - @@ -269,6 +281,7 @@ + diff --git a/Nodejs/Product/Nodejs/packages.config b/Nodejs/Product/Nodejs/packages.config index 9e6202524..c7dbd93ea 100644 --- a/Nodejs/Product/Nodejs/packages.config +++ b/Nodejs/Product/Nodejs/packages.config @@ -1,6 +1,8 @@  - + + + \ No newline at end of file From 825c17117c31e4255679ec46542f19b0de4c2346 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 8 Jul 2016 11:55:18 -0700 Subject: [PATCH 09/27] Move to using local copy of workspaces instead --- ...t.VisualStudio.Workspace.Extensions.VS.dll | Bin 0 -> 11936 bytes ...t.VisualStudio.Workspace.Extensions.VS.xml | 56 + ...soft.VisualStudio.Workspace.Extensions.dll | Bin 0 -> 16544 bytes ...soft.VisualStudio.Workspace.Extensions.xml | 222 ++ .../Microsoft.VisualStudio.Workspace.dll | Bin 0 -> 63648 bytes .../Microsoft.VisualStudio.Workspace.xml | 3026 +++++++++++++++++ Nodejs/Product/Nodejs/Nodejs.csproj | 12 +- Nodejs/Product/Nodejs/packages.config | 1 - 8 files changed, 3310 insertions(+), 7 deletions(-) create mode 100644 Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.VS.dll create mode 100644 Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.VS.xml create mode 100644 Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.dll create mode 100644 Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.xml create mode 100644 Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.dll create mode 100644 Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.xml diff --git a/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.VS.dll b/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.VS.dll new file mode 100644 index 0000000000000000000000000000000000000000..8f3c48b513c006d74350e080e074e76c9b1f224e GIT binary patch literal 11936 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 literal 0 HcmV?d00001 diff --git a/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.VS.xml b/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.VS.xml new file mode 100644 index 000000000..a1b99c220 --- /dev/null +++ b/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.VS.xml @@ -0,0 +1,56 @@ + + + + Microsoft.VisualStudio.Workspace.Extensions.VS + + + + + Exports an to the MEF catalog + with metadata as described by . + + + + + Initializes a new instance of the class. + + The unique type for this Provider + + The set of file extensions (including the leading period) that this debug provider + is capable of. + Provider priority + + + + IVsDebugLaunchTargetProvider interface + + + + + Allow customization to happen on a VsDebugTargetInfo struct + + The VS specific target info struct + Debug launch being passed + + + + IVsDebugLaunchTargetProviderMetadata interface definition + + + + + Represents an item that should be displayed in the Visual Studio host. + + + + + Gets the command group for a command. + + + + + Gets the command id for a specific command in a group. + + + + diff --git a/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.dll b/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.Extensions.dll new file mode 100644 index 0000000000000000000000000000000000000000..954a42053428098271f2129b031bd966858ff0e9 GIT binary patch literal 16544 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 + + + Microsoft.VisualStudio.Workspace.Extensions + + + + + BuildActionContext context class + + + + + Identifies an action context that launches a build. + + 1B8311D1-09CE-4D9F-A2A5-C885F5763A4A + + + + The Clean target build type + + + + + The Rebuild target build type + + + + + Identifies an action context that launches a build. + + {D9212C5D-975A-49E6-A753-2F586BFBF077} + + + + Clean context type GUID + + + + + Rebuild context type GUID + + + + + Initializes a new instance of the class. + + The path of the process or script to launch (without arguments). + The arguments to pass to the process. + The build configuration context of this build action + + + + + + + Return the matching Type for a build type + + The target build type + The GUID of the context type + + + + Build types available to target + + + + + Normal incremental build + + + + + Clean build outputs + + + + + Re build target + + + + + Interface to describe a process launch action context + + + + + Gets the path of the process or script to launch (without arguments). + + + + + Gets the arguments to pass to the process. + + + + + Describes the context that can start processes based on file context. + + + + + Initializes a new instance of the class. + + The path of the process or script to launch (without arguments). + The arguments to pass to the process. + + + + + + + + + + Exports an to the MEF catalog + + + + + Initializes a new instance of the class. + + type of provider + Supported extension for this provider + Priority + + + + Metadata definition for interface IProjectFilesProvider + + + + + IProjectFilesProvider interface + + + + + Get the project files + + Path to a project File + A Cancellation token + Array of FileSystemInfo + + + + Describes Roslyn-based language service projects. + + + + + Identifies a Roslyn project context. + + D9212C5D-975A-49E6-A753-2F586BFBF077 + + + + Identifies a Roslyn project context. + + {D9212C5D-975A-49E6-A753-2F586BFBF077} + + + + Initializes a new instance of the class. + + The name of the project (the file name without extension). + A value from the managed LanguageNames. + The command line arguments that would be passed to the compiler. + The workspace-relative path to the project directory. + + + + Gets the file name of the project without directory or extension. + + + + + Gets the language of this project. + + + + + Gets the command line arguments passed to the compiler. + + + + + Gets the workspace-relative path to the project directory. + + + + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Path must be rooted.. + + + + + Looks up a localized string similar to Path must be relative.. + + + + diff --git a/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.dll b/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.dll new file mode 100644 index 0000000000000000000000000000000000000000..6891f953a6e25eee147ee966e0100f08f2764c74 GIT binary patch literal 63648 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 Hj2ZO5$~L+k literal 0 HcmV?d00001 diff --git a/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.xml b/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.xml new file mode 100644 index 000000000..945b49dc0 --- /dev/null +++ b/Nodejs/Common/Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86/Microsoft.VisualStudio.Workspace.xml @@ -0,0 +1,3026 @@ + + + + Microsoft.VisualStudio.Workspace + + + + + A collection of file system path analysis and manipulation functions. + + + + + Generates an absolute path from a base path and another path. + + + An absolute path to use as the root if is relative. + IMPORTANT: if basePath is a directory, it must end with a directory separator character or else + it will be treated like a filename and discarded. + + A relative or absolute path, that needs to be absolute. + Thrown when the argument is not an absolute path. + + A normalized, absolute path. A path with relative parents (i.e. c:\temp\tmp\..\a.txt) will never be returned. + Not necessarily canonical, in that the file casing of the path is not guaranteed to be consistent. + + + + + given the absolute location of a file, and a disc location, returns relative file path to that disk location. + + + The base path we want to relativize to. Must be absolute. + Should not include a filename as the last segment will be interpreted as a directory. + + + The path we need to make relative to basePath. The path can be either absolute path or a relative path in which case it is relative to the base path + + + The relative path (can be the full path when no relationship exists). + If and are equivalent, the empty string is returned. + + + + + Make sure there is no [unnececery] trailing directory separator. + + directory path + directory path without trailing slash + + + + Make sure there is a trailing directory separator. + + directory path + directory path with trailing slash + + + + Detects whether a given file falls within a given directory. + + The absolute, normalized path to the directory. + The absolute, normalized path to the file. + true if the given file falls within the given directory. + + The current implementation of this method does NOT normalize the paths before the check. + + + + + Tests a path to see if it is absolute or not. More reliable that Path.IsPathRooted. + + The path to check. + true if the path is rooted; false otherwise. + + + + Gets the correctly cased path for a given directory. + + Directory to find the correct casing for. + New directory with correctly cased path. + + + + A few fast checks that determine whether normalization of a path is warranted. + + A non-empty path. + true if normalization is likely needed; false if normalization doesn't appear to be needed. + + In the interest of executing very fast (since this method is used in fast-or-slow-path checks) + this method by no means is comprehensive, but it should catch the common causes for needing normalization. + + + + + Helper function to create Uri object form path. + + path string + uri object + + + + Fixes common problems with local paths like double-backslash. + + The path to fix up. + The cleaned up path. + + + + Async Event class to support firing async EventHandlers + + The EventArgs type to support + + + + Initializes a new instance of the class. + + + + + Return the async invocation list + + + + + Operator += to support standard mechanism of event subscription + + The async event class + Async event callback to add + The existing or created Async event class + + + + Operator -= to support standard mechanism of event subscription + + The async event class + Async event callback to remove + The Async event + + + + Insert a callback in a pos + + The async event class + Position where to insert the callback + Async event callback + The Async event + + + + Invoke async to await for each + + sender object + Event Argument instance + The task to await to wait for all notifications to complete + + + + Invoked when changes to the Invocation List are added or removed + + If a new item was added otherwise remove + + + + Class BatchFileSystemEventArgs + Allow a notification of multiple FileSystemEventArgs entities + + + + + Initializes a new instance of the class. + + All file systems events + + + + All file system events + + + + + Build configuration changed event args + + + + + Initializes a new instance of the class. + + The project file relative path + The new build configuration + + + + The project file affected + + + + + The new build configuration + + + + + Build Configuration Context implementation + + + + + Identifies an action context that launches a debug session. + + + + + Identifies an action context that launches a debug session. + + + + + Initializes a new instance of the class. + + The build configuration + + + + + + + BuildUpToDateActionContext class + + + + + Identifies an action context that invoke up to date check + + + + + Guid of ContextType + + + + + Initializes a new instance of the class. + + IBuildUpToDateCheckProvider provider + The contetx project file + Optional build configuration + + + + Check if the context project file is up to date + + A cancellation token + True or false depending if the context project file is up to date + + + + ExportBuildUpToDateCheckAttribute class to MEF export Build up to date provider attributes + + + + + Initializes a new instance of the class. + + The unique type for this IBuildUpToDateCheckProviderMetadata + The supported file extension + File scanner priority + + + + interface IBuildUpToDateCheckProvider + + + + + Check if project file is up to date based on a build configuration + + The project target file to evaluate + An optional build configuration + Cancellation token + true of if the project file is up to date or false otherwise + + + + IBuildUpToDateCheckProviderMetadata interface + + + + + IWorkspace helper classes for build related tasks + + + + + Get a Build Configuration Context type action + + Workspace instance + The target project file + The desired context type + Callback to invoke to match a file context + File context actions that match the passed target project build configuration + + + + Get a Build Configuration Context type action + + Workspace instance + The target project file + The desired context type + Optional target project build configuration + File context actions that match the passed target project build configuration + + + + Get all file contexts that match a specific target project build configuration + + Workspace instance + The target project file + The desired context type + Optional target project build configuration + File Contexts grouped by provider + + + + Return a valid BuildUpToDateActionContext to a project file + + Workspace instance + The target project file + Optional target project build configuration + Null or a valid BuildUpToDateActionContext for a project file + + + + Build a project by invoking a build context actions from a provider + + Workspace instance + The target project file + The build configuration + The desired build context type + A progress monitor + Optional cancellation token + Completion task with build succeed result + + + + Define a Build Configuration Context + + + + + Configuration setting context + + + + + A Debugger Launch Action context + + + + + Identifies an action context that launches a debug session. + + + + + Startup Project name entry + + + + + Identifies an action context that launches a debug session. + + + + + Initializes a new instance of the class. + + Debug target path + Provider to launch this context + Build Configuration setting + + + + Initializes a new instance of the class. + + Launch configuration parameters + Provider to launch this context + Build Configuration setting + + + + Launch configuration parameters + + + + + Launch the target using the provider being initialized + + The service provider + + + + MEF export helper for ILaunchConfigurationProviderMetadata + + + + + Initializes a new instance of the class. + + The unique type for this ILaunchDebugTargetProviderMetadata + The supported file extension + Launch type name + Launch Json schema content + If Runtime support context is supported + File scanner priority + + + + + + + + + + + + + Specialized Context action to debug that support a build step action + + + + + A pre build step action to invoke before the debug action is executed + + + + + Debug Context progress update + + + + + Controls whether the debugging experience should continue or not + + + + + ILaunchConfigurationProvider interface + + + + + If a project file is being supported by this launch configuration provider + + Debug Launch Action context + true if this context is being supported for this provider + + + + Create a launch configuration settings for a project file + + Debug Launch Action context + The launch ettings instance + + + + ILaunchConfigurationProviderMetadata interface + + + + + Launch type name + + + + + The launch json schema + + + + + If Context support is being resolved on runtime or only by its static metadata + + + + + Launch Configuration Constants + + + + + Name key + + + + + Project Key + + + + + Type Key + + + + + Target Key + + + + + Debug Type key + + + + + Arguments Key + + + + + Env Key + + + + + Current Directory Key + + + + + Remote machine key + + + + + Port name key + + + + + Debug engine key + + + + + Configurations Key + + + + + Defaults Key + + + + + Defaults Key + + + + + Launch Json version Value + + + + + DebugLaunchActionContextAttribute class to MEF export debug launch attributes + + + + + Initializes a new instance of the class. + + The unique type for this ILaunchDebugTargetProviderMetadata + The supported file extension + If Runtime support context is supported + File scanner priority + + + + + + + IDebugLaunchActionContext interface + + + + + Launch a Debug Context + + The service provider context + The Debug context to launch + + + + If this context is supported for this Provider + + A file workspace + true if this provider is able to handle this context + + + + ILaunchDebugTargetProviderMetadata interface + + + + + If the provider is capable to handle context + + + + + Default implementation for a IFileContextActionResult interface + + + + + Initializes a new instance of the class. + + If success or not this result instance + + + + + + + Describes an action supported by a . + + + + + Executes the action. + + A means to report progress as the action executes. + A token that may cancel the action. + A task whose result describes the result of the action. + + + + IHostService interface definition + + + + + Gets the path to the root directory for the host app local data. + + An absolute path. + + + + FileDataValue class to return from IFileScanner interface + + + + + Initializes a new instance of the class. + + The type of this data value + Name of the entry + Value entry(can be null) + + + + Type of this scanned entry + + + + + Name of the scanned entry + + + + + Value of the scanned entry + + + + + Default enumeration types for FileScannerInfo + + + + + None + + + + + A source file + + + + + An output file + + + + + A Project Reference file + + + + + A imported dependency + + + + + Exports an to the MEF catalog + with metadata as described by . + + + + + Initializes a new instance of the class. + + The unique type for this IFileScannerMetadata + A simple name that describes the kind of files this scanner is suitable for. + + The set of file extensions (including the leading period) that this scanner + is capable of parsing. + List of types supported by this file scanner + File scanner priority + + + + Initializes a new instance of the class. + + The unique type for this IFileScannerMetadata + A simple name that describes the kind of files this scanner is suitable for. + + The set of file extensions (including the leading period) that this scanner + is capable of parsing. + List of types supported by this file scanner + + + + Initializes a new instance of the class. + + The unique type for this IFileScannerMetadata + A simple name that describes the kind of files this scanner is suitable for. + The supported file extension + The supported type to be scanned + + + + Gets a simple name that describes the kind of files this scanner is suitable for. + + A short string, such as "C++" or "C#". + + + + Gets the set of return types supported by this scanner + + + + + File Index Info + + + + + Initializes a new instance of the class. + + read only collection of file references + read only collection of file dependencies + + + + Empty File Scanner array + + + + + File References + + + + + File Dependencies + + + + + if we have both empty containers + + true if both collections are empty + + + + EventArg for File scanning phase + + + + + Initializes a new instance of the class. + + Relative workspace file path + Type of the FileScanning phase + scanned data value + + + + Relative workspace file path + + + + + Type of the FileScanning phase + + + + + The Scanned data completed + + + + + Class FileScannerTypes + + + + + File Reference scanner type + + + + + File Data scanner type + + + + + Symbol scanner type + + + + + File Index Info Type + + + + + File Data Values Info Type + + + + + Symbols defintion type + + + + + Describes the definition of a file reference + + + + + Initializes a new instance of the class. + + The file relative path + The context of this reference (or null) + Type of this reference (or null) + If file system entity can be used + + + + The workspace relative reference file path + + + + + The Context of this Reference (or null if there is none) + + + + + If File system entity can be used to track the workspace reference + + + + + The reference type + + + + + + + + + + + + + + Offers services to discover symbols defined in source files. + + + An implementing type should export this interface with + the . + Each instance of this interface should be prepared to deal with just one + file type. If a single scanner advertises multiple + , it should be + prepared to identify which file type it is (if necessary) based solely on + the content of the file and not the file name. + If the file extension is an important distinguishing factor, use multiple + instances of this interface, each advertising support for the various file + extensions. + + + + + Scan a source file for symbol definitions. + + the expected type to be scanned + The workspace file to scan + A token that can cancel the scan. + A task whose result is the collection of discovered symbols. + + + + Describes an extension's applicability and capabilities. + + + + + Gets a simple name that describes the kind of files this scanner is suitable for. + + A short string, such as "C++" or "C#". + + + + Gets the set of return types supported by this scanner + + + + + An interface that may be exported to provide a collection of symbol scanners at runtime. + + + + + Gets a collection of symbol scanners. + + A cancellation token. + A collection of symbol scanners with metadata. + + + + IIndexWorkspaceService interface definition + + + + + Index Workspace state + + + + + To receive notifications when properties are changed + + + + + File Scanner notification + + + + + Verify if a path is being part of this indexing + + The file enetity exist + True if the indexing has this entitye + + + + Refreshes the contents of any caches or subscriptions with the actual contents from disk. + + Type of elements being refreshed + + Use true to continuously watch the file system and provide updates + until is canceled. + Use false to refresh just once. + + + A progress reference callback + + + A token to cancel the refresh operation. + Must not be if is true. + + A task representing the long-running operation. + + + + Refresh an element + + Reference to element path + Cancellation token + A task representing the long-running operation. + + + + Refresh an element + + Enumerable of entities to refresh + Cancellation token + A task representing the long-running operation. + + + + Get the File scanner state type + + Reference to element path + Type of file scanner + Datetime when the file scanner data or null + + + + Return file dependants to a file contained in our workspace + + File entity path + Context for the reference (or null) + reference types + list of dependant files + + + + Return file references to a file contained in our workspace + + File entity path + Context for the reference (or null) + reference types + list of references + + + + Return a dictionary of data from a File system entity + + Type of Value being excpected + File entity path + The type of data being retrieved + A dictionary of data + + + + IndexProgress class + + + + + Initializes a new instance of the class. + + The progress state + Percent completed + Current elements progress + + + + Current elements + + + + + Current state of the indexing progress + + + + + Gets the symbol name and location. + + + + + Index progress state + + + + + Initialize state + + + + + File indexing + + + + + File Index Info scanning + + + + + File symbols scanning + + + + + File Data values scanning + + + + + Completed state + + + + + The elements stored in the index. + + + + + No index element. + + + + + The cache of the file listings in the workspace. + + + + + The cache of all symbol definitions in the workspace. + + + + + The cache of all the contexts in which source files may appear. + + + + + All elements of the cache. + + + + + IndexWorkspace properties + + + + + State property + + + + + Our Index Workspace state + + + + + None + + + + + FileSystem is in progress + + + + + FileReferences is in progress + + + + + FileDataValues is in progress + + + + + SymbolScanning is in progress + + + + + Indexing is completed + + + + + Describes the visibility of the symbol to surrounding code. + + + + + None + + + + + The symbol has public visibility. + + + + + The symbol has internal visibility. + + + + + The symbol has friend visibility. + + + + + The symbol has protected visibility. + + + + + The symbol has private visibility. + + + + + Describes the definition of a symbol, within the context of a source file. + + + This interface does not specify the path to the source file because some + of its producers (e.g. may not know the path + to the source file. Also, some source files may not even exist locally, + so setting the context of which file the symbol appears in is the + responsibility of other code that hands this interface around. + + + + + Initializes a new instance of the class. + + The name of the symbol. + The kind of symbol. + The visibility of the symbol to surrounding code. + The location of the definition. + + + + Initializes a new instance of the class. + + The name of the symbol. + The fully-qualified name of the symbol. + The kind of symbol. + The visibility of the symbol to surrounding code. + The location of the definition. + + + + Gets the short name of the symbol. + + + + + Gets the fully-qualified name of the symbol. + + + + + Gets the position of the symbol's definition within the source file. + + + + + Gets the kind of symbol. + + + + + Gets the accessibility of the symbol. + + + + + + + + + + + + + + Describes a symbol's definition with metadata describing where it is found. + + + + + Initializes a new instance of the class. + + The symbol definition. + The path to the file that defines the symbol. + + + + Gets the symbol name and location. + + + + + Gets the absolute path to the file containing the symbol. + + + + + Describes the various types of symbols. + + + + + None + + + + + A class. + + + + + A constant. + + + + + A delegate. + + + + + An enum. + + + + + A member of an enum. + + + + + An event. + + + + + A field. + + + + + An interface. + + + + + A method. + + + + + A module. + + + + + A property. + + + + + A structure. + + + + + A namespace + + + + + Symbol scanner base class + + + + + + + + perform a symbol scanning on a file content + + the content of source file + a cancellation token + Symbols found during scanning + + + + Describes a location in a text file. + + + + + Initializes a new instance of the struct. + + The line number in the text file. Starts at 1. + The column number in the text file. Starts at 1. + + + + Gets the line number within the text file. + The first line of a file is considered Line 1. + + + + + Gets the column within the text file. + The first column on a line is considered column 1. + + + + + + + + + + + + + + + + + A symbol type service + + + + + Searches for symbol definitions that match a given query. + + A leading substring of the symbol to find. + Receives + A token that may cancel the search. + A task whose completion indicates the search is complete. + + + + Helper utils for FileSystemEventArgs class + + + + + Check if related to a directory changed event + + The File System Event + true is a directory changed event + + + + IProjectConfigurationManager interface + + + + + Active workspace + + + + + To receive notifications when properties in this are changed + + + + + Build configuration changed + + + + + All project file configurations from the different sources + + + + + Get the Current Project + + + + + Retrieve project configuration for a Project File + + The project file path + Optional name of the configuration + The Active build configuration + A project file settings instance + + + + Return all build configurations for a project file + + The project file + list of build configurations or null if not found + + + + Get active build configuration + + The project file + The active buidl configuration + + + + Create Debug launch settings for a project file + + The project file + Debug Launch Action context + list of launch settings to composite + A Composite launch settings + + + + Return a build action based on an existing build action context + + The context project file + The original build context action + Completion task + + + + Workspace (settings based) Item Filter; + + + + + the filter key (used to create this filter by IWorkspaceItemFilterService). + + + + + Fires when fillter settings (may have) changed + + + + + Check a single item against the filter + + full path to the item (file or folder) we want to check + true to consider path a folder, flase a file + true if items is "filtered out" by curent filter settings + + + + Check a single item against the filter. The item must exist on disk. + + full path to the item (file or folder) we want to check + true if items is "filtered out" by curent filter settings + + + + Workspace Item Filter service. + + + + + Gets the Item Filter object for the given filterKey. + + the item filter key.The "filterKey" is used as a name of the string array property in the Generic Workspace settings + that contains individual filter patterns. + item filter object + + + + Filters change event data. + + + + + Initializes a new instance of the class. + + afected cone + + + + Full path. the ScopePath is the "root" of a subtree that is being (potentially) affected by the changes. + All items outside the ScopePath cone are not affected by the changes. + + + + + Provider workspace factory + + Type of provider to create + + + + Create an instance of provider + + The workspace context + Created instance of a provider type + + + + Change type enumeration + + + + + AllProjectFileConfigurations property changed + + + + + Current Active Project + + + + + Current Debug Context Action + + + + + Current Build Context Action + + + + + PropertyChangedEventArgs class + + Properties type + + + + Initializes a new instance of the class. + + Array of properties that changed + + + + The property that changed + + + + + Return true if this event contians a change for a property + + The property id + true if the property is part of this event + + + + Helper class for the type IPropertySettings + + + + + Deep copy of a configuration instance + + The input sttings instance + Factory creator for IPropertySettings + Copy of the configuration instance + + + + Get Value of type (T) + + Desired type excpected + The input sttings instance + Key to look for in the configuration + The value contained in the configuration + + + + Get Value of type (T) + + Desired type expected + The setting instnace + Key to look for in the configuration + Default value to provide if no value is found + The value contained in the configuration or the default value being passed + + + + GetValues using Reflection API + + The setting instance + Target object to set values + List of property infos to populate + An optional property name converter + + + + GetValues using Reflection API + + The setting instance + Target object to set values + Binding flags of target + An optional property name converter + + + + SetValues using Reflection API + + The setting instance + Source object to get values + List of property infos to populate + An optional property name converter + + + + SetValues using Reflection API + + The setting instance + Source object to get values + Binding flags of target + An optional property name converter + + + + Return an array of PropertyInfo from a type + + The type class + List of property names + Array of PropertyInfo types + + + + Exports an to the MEF catalog + with metadata as described by . + + + + + Initializes a new instance of the class. + + The unique type for this IFileContextActionProviderMetadata + The provider priority + + A collection of GUIDs that identify the values + that this language service can initialize from. + + + + + Initializes a new instance of the class. + + The unique type for this IFileContextActionProviderMetadata + + A collection of GUIDs that identify the values + that this language service can initialize from. + + + + + Gets a collection of GUIDs that identify the values + that this build action provider may provide build actions for. + + + + + Exports an to the MEF catalog + with metadata as described by . + + + + + Initializes a new instance of the class. + + The unique type for this IFileContextProviderMetadata + The provider priority + + A collection of the values that may be produced for + by this provider. + + + + + Initializes a new instance of the class. + + The unique type for this IFileContextProviderMetadata + + A collection of the values that may be produced for + by this provider. + + + + + + + + Export File Extension provide base + + + + + Initializes a new instance of the class. + + The unique type for this Provider + + The set of file extensions (including the leading period) that this scanner + is capable of parsing. + Provider priority + Contract type + + + + Gets the set of file extensions (including the leading period) that this provider + is capable of. + + + + + Exports an to the MEF catalog + with metadata as described by . + + + + + Initializes a new instance of the class. + + The unique type for this ILanguageServiceProviderMetadata + The provider priority + + A collection of GUIDs that identify the values + that this language service can initialize from. + + + + + Gets a collection of GUIDs that identify the values + that this language service can initialize from. + + + + + Offers language service activation for open files. + + + An implementing type should export this interface with + the . + + + + + Initializes the language service for the specified file, or updates it with a new set of contexts. + + The absolute path of the file to initialize the language service for. + The contexts available for this file. + A token that may cancel initialization of the language service. + A task that tracks the asynchronous operation. + + + + Removes the language service integration for the specified file. + + The absolute path of the file to initialize the language service for. + A task that tracks the asynchronous operation. + + + + Describes an extension's applicability and capabilities. + + + + + Base export attribute to support IProviderMetadataBase + + + + + Initializes a new instance of the class. + + The unique type for this IProviderMetadataBase + The provider priority + Contract Type + + + + Initializes a new instance of the class. + + The unique type for this IProviderMetadataBase + Contract Type + + + + The unique type for this IProviderMetadataBase + + + + + The provider export Priority + + + + + Describes the context a file may belong to, such as a compilation unit for a source file, + a consuming HTML page for a .js file, etc. + + + An instance of this type may be shared across many files, or members of the context. + + + + + Initializes a new instance of the class. + + + An identifier for the type of the proivider who create thif Context + + + An identifier for the type of object and data represented in . + This may be used to match with a compatible language service provider. + + + The information a language service would need to fully initialize for a member of this context. + + + The set of workspace-relative paths to files that served as inputs to the construction of this context. + This is *not* the set of files that would be read during execution of a build. + + + The user-friendly name for this context (e.g. "Debug|Any CPU"). May be empty, but must not be null. + + + The INotifyFileContextChanged implementation to use it for notification + + + + + + + + The Provider source for this Context + + + + + Gets an identifier for the type of object and data represented in . + This may be used to match with a compatible language service provider. + + + + + Gets the information a language service would need + to fully initialize for a member of this context. + + + + + Gets the set of workspace-relative paths to files that served as inputs to computing this context. + This is *not* the set of source files that would go into a compilation unit, but rather + the set of files read to determine *how* to assembly the context. + + + This collection may be used to know when to refresh this context + (e.g. when the user changes the project file or project.lock.json). + + + + + Gets the name for this context (if any) that may be displayed to the user + to pick among several available contexts. + + + Typically a full configuration name (e.g. "Debug|Any CPU"). + But may be . Never null. + + + + + FileContextActionDelegate class + + + + + Initializes a new instance of the class. + + The delegate IFileContextAction + Display name + + + + + + + + + + The inner action of this delegate. + + + + + + + + A trivial implementation of . + + The key of the group. + The element type of the group. + + + + The elements in the group. + + + + + Initializes a new instance of the class. + + The key for this group. + The elements in this group. + + + + + + + + + + + + + IPropertySettings interface + + + + + Default IPropertySettings implementation + + + + + Initializes a new instance of the class. + + Array of KeyValuePair to initialize + + + + Initializes a new instance of the class. + + + + + + + + + + + Describes an action supported by a . + + + + + File Context source of this Action + + + + + Gets the name of this action as it should be presented to the user. + + + + + Provides an update on the progress of an ongoing operation. + + + Other interfaces may be implemented by objects that implement this interface in order to provide + action specific updates. + + + + + Offers arbitrary action execution for files. + + + An implementing type should export this interface with + the . + + + + + Gets the actions appropriate for a given file and context. + + + The file workspace being passed + + The context to act with. + A token that may cancel the request. + + A task whose result is a list of actions that may be invoked for a given file and context. + + + + + Describes an extension's applicability and capabilities. + + + + + Describes the result of some . + + + Other interfaces may be implemented by objects that implement this interface + in order to provide data that is specific to a particular kind of action. + + + + + Gets a value indicating whether the action was successful. + + + + + Describes an + + + + + Gets the set of file extensions (including the leading period) that this extension + is capable of parsing. + + + + + Interface to provide an action when a file context has been modified + + + + + When the File Context has changed + + + + + An interface describing metadata found on exports that consume specific types of file contexts. + + + + + Gets a collection of GUIDs that identify the values + that this language service can initialize from. + + + + + Offers services to discover contexts defined in source files. + + + + An implementing type should export this interface using + the . + + + Implementations should register contexts both for source files and outputs + that may serve as inputs to other contexts. + For example when a project B references project A, someone interested in initializing + a language service for B may need to discover the context for A given A's primary output, + which serves as an input for B. + + + + + + Finds contexts for a given file. + + + The file workspace being passed + + A token whose cancellation should terminate the search. + + A task whose result is collection of contexts that the file belongs to. + The collection should never be null, but it may be empty. + + + A file may belong to contexts that are not discoverable on-demand with this method. + + + + + Describes an extension's applicability and capabilities. + + + + + Gets a collection of the values that may be produced for + by this provider. + + + + + Class FileSystemContextChanged. + Use the workspace file system watcher notification to propagate a FileContext notification + + + + + Initializes a new instance of the class. + + Workspace instance + Teh file system event filter to apply + + + + Initializes a new instance of the class. + + Workspace instance + Input files to track + Change types to track + + + + + + + Class NotifyFileContextChanged + + + + + Initializes a new instance of the class. + + Callback action when subscriptions changed + + + + + + + A interface that allow to be dispose usign an async mechanism + + + + + Dipose usign async mechanism + + Completion task + + + + Interface IFileWatcherService + Sink events to receive file system notification changes using an async pattern + + + + + Event File system notification + + + + + Batch Event File system notification + + + + + Workspace service to find files + + + + + Searches the workspace for files matching a pattern. + + The query to match filenames on. It may be matched based on substring, or a richer parsing of the files. + Receives the full path to each file as it is discovered. + A token whose cancellation will cancel the query. + A task that completes when all match files have been reported. + + + + Provider Metadata Base + + + + + The Unique Type for this Provider + + + + + Provider priority + + + + + IWorkspace interface definition + + + + + Gets the path to the root directory of the source tree. + + An absolute path. + + + + Gets the absolute path for a given path, which may be relative to Workspace.Location. + + + The path that is absolute, or relative to the workspace root folder. + May be empty. + + An absolute path. + + + + Converts an absolute path to a path relative to the root of this workspace. + + The path to make relative. + A relative path. + + + + Gets the file contexts associated with the specified workspace location. + + + The path to the file or folder for which a context is required. + May be absolute or relative to workspace root . + + The collection of file context types of interest ot the caller. + A cancellation token. + The collection of applicable file context providers. + + + + Return matched ILanguageServiceProvider's for a file context path + + Absolute path of the file which will provide the context + Cancellation token + Collection with matched services with it's file contexts + + + + Gets the actions available at the specified path. + + + The path to the file or folder for which a context is required. + May be absolute or relative to workspace root . + + Optional list of file context types + A cancellation token. + + A task whose result is a collection of actions that can be taken on the specified . + The collection should never be null, but it may be empty. + + + + + Gets a set of files within the workspace. + + + The folder within the workspace that should be searched for files. + May be absolute, or relative to the . + An empty path is interpreted as the workspace root. + + + true to return files in and its subfolders; + false to return only files found in the immediate folder. + + A token that cancels the query. + A task whose result is the set of files found. + + + + Gets a set of directories within the workspace. + + + The folder within the workspace that should be searched for directories. + May be absolute, or relative to the . + An empty path is interpreted as the workspace root. + + + true to return files in and its subfolders; + false to return only files found in the immediate folder. + + A token that cancels the query. + A task whose result is the set of files found. + + + + Logger listener delegate + + Log Record generated + + + + Workspace Logger class + + + + + CurrentLevel Singleton property + + + + + Name property + + + + + Level property + + + + + Create a logger instance using a name + + name of the logger + a Logger class instance + + + + Add a logger listener delegete + + listener delegate instance + + + + Remove a logger listener delegete + + listener delegate instance + + + + Log a message + + level desired for this message + Message being logged + Message arguments being passed + + + + Return true if a logging level is enabled + + level desired to evlauate + true if the level is enabled + + + + Error logging level + + Message being logged + Message arguments being passed + + + + Debug logging level + + Message being logged + Message arguments being passed + + + + Info logging level + + Message being logged + Message arguments being passed + + + + Initializes a new instance of the class. + + + + + Logging level property + + + + + Add a logger listener delegete + + listener delegate instance + + + + Remove a logger listener delegete + + listener delegate instance + + + + Log internal + + the Logger instance + level desired + Message being logged + + + + Logging level enumeration + + + + + Logging is off + + + + + Fatal level + + + + + Error level + + + + + Warning level + + + + + Info level + + + + + Debug level + + + + + Trace level + + + + + LogRecord class + + + + + Initializes a new instance of the class. + + Logger instance + desired level + Message being logged + + + + Logger instance who generated this Record + + + + + Logging level of the Record + + + + + When logging happened + + + + + Managed thread id of Record + + + + + Message being logged + + + + + Priority enum for Providers + + + + + Lowest priority + + + + + BelowNormal priority + + + + + Normal priority + + + + + AboveNormal priority + + + + + Highest priority + + + + + Result of retreival a single setting value from the current settings files. + + + + + the value was successfuly read from a settings file. This result means there is a such an element set in settings file. + + + + + The value is not present in the settings file. A default value is returned instead. + + + + + The value is present in the settings file, but it is corrupted (for example wrong type). A default value is returned instead. + + + + + Workspace Settings inteface. + + + + + Get the absolute path for the property scope where definition originate. + + + + + Parent (lower priority) Settings wrapper. + + + + + get a [base] settings value (property), the type and meaning of the value is defined by the caller. + This override also specifies the particular settings source that provided the value. + Used in cases where implied root is needed, or when doing "unification" for arrays. + + type of the value + the name of the property + the current value as persisted in the settings + the workspace settings source that is prividing the value. + optional default value to use if the current value is not present or corrupted + see WorkspaceSettingsResult + + + + Per workspace object that is responsible for facilitating the reading and writing the workspace settings as well as coresponding notifications. + Retreived by "Workspace.SettingsManager". + + + + + Event fire when a setting source (a file or in memory provider) changes. + Listeners would need to reaquire (via GetAggregatedSettingsAsync) a new settings collection if they need to reflect the settings changes. + The SettingsChangedEventArgs parameter can be used to narrow down the changes to a particular settings type and scopePath. + + + + + the settings reader (note that when reading the settings hierarchy is already applied, the consumer should not diferentiate between where property is defined on use). + The object returned by this property is immutable. when changes happen a new object will be create (and OnWorkspaceSettingsChanged fired). + + will apply build in inheritance override rules(aka PerUser > PerWorkspace > PerMachine) and return the winning value for a named property, array or child settings + + settings type (coresponding to the independent settings file name) Use SettingsTypes class constants + location under workspace we reqire the settings for. Note that because of hierarchical aggregation model different parts of the workspace tree will have + different settings values. + + settings reader + + + + "Parse" a single single settings file. + + the full path to a settings file + the settings object + + + + Access the settings writer. All changes made are in memory untill the writer is released. + note we will not lock any of the settings files untill commit. Also we are not going to lock the writer within the process. + the individual actions (like individual property writes) will be protected. + We would ensure a machine-wise locking via named event, which will protect against multiple VS instance writing at the same time, + yet it would be possible if via other editor (notepad) or when settings file is shared on network, to have a conflicting writes. + in this rare case comit may still fail. + + if true the caller does not need to call commit at the end (note it is still possible to abort) + the persistance instance + + + + Workspace Settings inteface. + + + + + Enumerate all available property names. + + property names enumerator + + + + get a [base] settings value (property), the type and meaning of the value is defined by the caller. + + type of the value + the name of the property + the current value as persisted in the settings + optional default value to use if the current value is not present or corrupted + see WorkspaceSettingsResult + + + + transactional writer. Note within the single VS process multiple of this can be active simultaneosly. + Last release will trigger settings file writes on disk. It is expected that the persistance writer wrappes to be very short lived. + + + + + Get a writer for a single file. + + settings tupe (coresponding to the independent settings file name) Use SettingsTypes class constants + (relative) location under workspace root where to place the file. + null = "per user /per workspace" (under our .vs folder) + Empty = "workspace root". + + writer + + + + notify that writing was successful for this scope. Needed if autoCommit was false, otherwise closing the scope will cause entire write transation + to be canceled. Used by features that needs to write multple related properties when a partial persistance may cause inconsistent results. + + + + + Abort setting writing transaction. The settings files will not be updated on disk + + + + + Dynamic settings providers + These providers contribute properties to the hierarchical settings collection that comes from a different sources than on disk json files. + Example can be "intristic in memory providers" or "converters" (components that parse other tools formats into AnyCode settings schema). + + + + + Event fire when a settings source managed by the particular provider changes. + The Settings manager will monitor this events and will propagate them to consumers as required. + + + + + Provide a workspace schema settings collection to be merged with the rest of AnyCode sources. + Note provider should only provide a single source that applies only to the "scopePath". + + settings type (coresponding to the independent settings file name) Use SettingsTypes class constants + location under workspace we reqire the settings for. + settings reader + + + + caled when workspace is disposed. The provider should disconnect listeners to other IWorkspace related components here, release resource and such. + The potentially cached IWorkspace is awaialbe to be used, but some functionality may not work (for example it is likely attempting to use SymbolsService will fail) + + async task + + + + Dynamic settings providers + These providers contribute properties to the hierarchical settings collection that comes from a different sources than on disk json files. + Example can be "intristic in memory providers" or "converters" (components that parse other tools formats into our settings schema). + + The factory interface is + + + + + the priority property is used to order the provider settings among other potential providers that can apply for the exact same location. + + + + + Create provider object for the given workspace instance + + workspace that will query for the settings + settings reader + + + + Workspace Settings source writer inteface. + Used for "automated" settings persistance driven by features. + + + + + Persist a value in worspace setings. + + >type of the value + the name of this entry + the value to persist + + + + delete a particular setting (regardles of type - can be property, propertycollection or array ) + + the propery name + + + + Create a new inner scope workspace (to be used later for SetProperty[Array](key, IWorkspaceSettingsSource...); + + a compatable IWorkspaceSettingsSource implementation + + + + Settings change events data. + + + + + Initializes a new instance of the class. + + settings type + settings scope + + + + Settins tupe (aka generic launch) + + + + + The relative path to location under workspace folders, that is affected by the particular change. + This is related to the Settings scope used to aquire the settings from Settings manager such that + any such location uder The value presented here should be considered invalidated. + + + + + standard settings types + + + + + Launch.json we use that for setings specificaly related to F5 experience + + + + + Generic Workspace settings. + + + + + Conviniece extension for IWorkspaceSettings interface + + + + + Wrapper around WorkspaceSettingsResult GetProperty. + Used when caller is not interested by the current state, but just want to get the current value to use. + + type of the value + the settings instance + the name of the property + optional default value to use if the current value is not present or corrupted + the current value as persisted in the settings or default + + + + Get a string value with implied root + + the settings instance + the name of the property + the string value + the implied root + true if exist + + + + Get a string value representing potentially relative path as full path, using implied root as a base + + the settings instance + the name of the property + default value + the absolute path + + + + Wrapper around WorkspaceSettingsResult GetPropertyArray. + Used when caller is not interested by the current state, but just want to get the current value to use. + + type of the elements in array + the settings instance + the name of the property + the current value as persisted in the settings or empty array if there is none + + + + This method will return union of all values in heirarchical chain, not just the top array. + + type of the elements in array + the settings instance + the name of the property + the current value as persisted in the settings or empty array if there is none + + + + A special accessor for inner named settings collection (T=IWorkspaceSettings) + Used when caller is not interested by the current state, but just want to get the current value to use. + + the settings instance + the name of the property + the current value as persisted in the settings or empty + + + + A variant of "Scope", used during "Save" it will create and add a colleciton property with "key" name if it does not already exists. + Used when caller is not interested by the current state, but just want to get the current value to use. + + the settings instance + the name of the property + the current value as persisted in the settings or empty + + + + A special accessor for inner named settings collection arya (T=IWorkspaceSettings) + Used when caller is not interested by the current state, but just want to get the current value to use. + + the settings instance + the name of the property + the current value as persisted in the settings or empty aray + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Collection must not be empty.. + + + + + Looks up a localized string similar to All members must be initialized.. + + + + + Looks up a localized string similar to Value must not be the empty string.. + + + + + Workspace service factory + + + + + Create an instance of a service in the context of a IWorkspace + + The workspace context instance + A Service representing + + + + IWorkspace service helpers + Contains method to access IWorkspace based services + + + + + Get a service type from a workspace + + Type of the service to ask for + The workspace context + Throw exception if service not found + The workpace service or null if not found + + + + Get the IFindFilesService service for a workspace + + workspace instance + The instance of the IFindFilesService + + + + Get the IFileSystemChanged service for a workspace + + workspace instance + The instance of the IFileSystemChanged + + + + Get the IWorkspaceSettingsManager service for a workspace + + workspace instance + The instance of the IWorkspaceSettingsManager + + + + Get the IFileScannerService for a workspace instance + + workspace instance + The instance of the IFileScannerService or null if not found + + + diff --git a/Nodejs/Product/Nodejs/Nodejs.csproj b/Nodejs/Product/Nodejs/Nodejs.csproj index cd9e84801..c3568e6ad 100644 --- a/Nodejs/Product/Nodejs/Nodejs.csproj +++ b/Nodejs/Product/Nodejs/Nodejs.csproj @@ -127,16 +127,16 @@ True - ..\..\packages\Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86\lib\net46\Microsoft.VisualStudio.Workspace.dll - True + False + ..\..\Common\Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86\Microsoft.VisualStudio.Workspace.dll - ..\..\packages\Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86\lib\net46\Microsoft.VisualStudio.Workspace.Extensions.dll - True + False + ..\..\Common\Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86\Microsoft.VisualStudio.Workspace.Extensions.dll - ..\..\packages\Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86\lib\net46\Microsoft.VisualStudio.Workspace.Extensions.VS.dll - True + False + ..\..\Common\Microsoft.VisualStudio.Workspaces.14.0.723-pre-g99eb5f2f86\Microsoft.VisualStudio.Workspace.Extensions.VS.dll True diff --git a/Nodejs/Product/Nodejs/packages.config b/Nodejs/Product/Nodejs/packages.config index c7dbd93ea..154eacfa7 100644 --- a/Nodejs/Product/Nodejs/packages.config +++ b/Nodejs/Product/Nodejs/packages.config @@ -3,6 +3,5 @@ - \ No newline at end of file From 8f512dcc399730455757292c767e9f882c22537c Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 8 Jul 2016 13:23:49 -0700 Subject: [PATCH 10/27] Copy validation package internal too --- .../Microsoft.VisualStudio.Validation.dll | Bin 0 -> 24736 bytes .../Microsoft.VisualStudio.Validation.xml | 532 ++++++++++++++++++ Nodejs/Product/Nodejs/Nodejs.csproj | 4 +- 3 files changed, 534 insertions(+), 2 deletions(-) create mode 100644 Nodejs/Common/Microsoft.VisualStudio.Validation.14.1.144/Microsoft.VisualStudio.Validation.dll create mode 100644 Nodejs/Common/Microsoft.VisualStudio.Validation.14.1.144/Microsoft.VisualStudio.Validation.xml diff --git a/Nodejs/Common/Microsoft.VisualStudio.Validation.14.1.144/Microsoft.VisualStudio.Validation.dll b/Nodejs/Common/Microsoft.VisualStudio.Validation.14.1.144/Microsoft.VisualStudio.Validation.dll new file mode 100644 index 0000000000000000000000000000000000000000..8b3c791600bd524b4a39dac8cf90c4716870350b GIT binary patch literal 24736 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 literal 0 HcmV?d00001 diff --git a/Nodejs/Common/Microsoft.VisualStudio.Validation.14.1.144/Microsoft.VisualStudio.Validation.xml b/Nodejs/Common/Microsoft.VisualStudio.Validation.14.1.144/Microsoft.VisualStudio.Validation.xml new file mode 100644 index 000000000..b04fcbd9a --- /dev/null +++ b/Nodejs/Common/Microsoft.VisualStudio.Validation.14.1.144/Microsoft.VisualStudio.Validation.xml @@ -0,0 +1,532 @@ + + + + Microsoft.VisualStudio.Validation + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to '{0}' must contain at least one element.. + + + + + Looks up a localized string similar to '{0}' cannot be an empty string ("") or start with the null character.. + + + + + Looks up a localized string similar to '{0}' cannot contain a null (Nothing in Visual Basic) element.. + + + + + Looks up a localized string similar to The parameter "{0}" cannot consist entirely of white space characters.. + + + + + Looks up a localized string similar to An internal error occurred. Please contact Microsoft Product Support Services.. + + + + + Looks up a localized string similar to Cannot find an instance of the {0} service.. + + + + + Common runtime checks that throw exceptions upon failure. + + + Common runtime checks that throw exceptions upon failure. + + + + + Throws an exception if the given value is negative. + + The HRESULT corresponding to the desired exception. + If true, prevents ThrowExceptionForHR from returning an exception from a previous COM call and instead always use the HRESULT specified. + + No exception is thrown for S_FALSE. + + + + + Throws an if a condition is false. + + + + + Throws an if a condition is false. + + + + + Throws an if a condition is false. + + + + + Throws an if a condition is false. + + + + + Throws an if a condition is false. + + + + + Throws an . + + + Nothing. This method always throws. + The signature claims to return an exception to allow callers to throw this method + to satisfy C# execution path constraints. + + + + + Throws an if an object is disposed. + + + + + Throws an if a condition is false. + + + + + Throws an if a condition is false. + + + + + Common runtime checks that throw public error exceptions upon failure. + + + Contains the inner exception thrown by Assumes. + + + + + Throws an exception if the specified value is null. + + The type of value to test. + + + + Throws an exception if the specified value is null or empty. + + + + + Throws an exception if the specified value is null or empty. + + The type of value to test. + + + + Throws an exception if the specified value is null or empty. + + The type of value to test. + + + + Throws an exception if the specified value is not null. + + The type of value to test. + + + + Throws an exception if the specified object is not of a given type. + + The type the value is expected to be. + The value to test. + + + + Throws an public exception if a condition evaluates to true. + + + + + Throws an public exception if a condition evaluates to true. + + + + + Throws an public exception if a condition evaluates to true. + + + + + Throws an public exception if a condition evaluates to false. + + + + + Throws an public exception if a condition evaluates to false. + + + + + Throws an public exception if a condition evaluates to false. + + + + + Throws an public exception. + + + + + Verifies that a value is not null, and throws an exception about a missing service otherwise. + + The interface of the imported part. + + + + Throws an public exception. + + Nothing, as this method always throws. The signature allows for "throwing" Fail so C# knows execution will stop. + + + + Throws an public exception. + + Nothing, as this method always throws. The signature allows for "throwing" Fail so C# knows execution will stop. + + + + Helper method that formats string arguments. + + + + + The exception that is thrown when an internal assumption failed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Show the assert if showAssert==true. + + Whether to show the assert. + + The assertion dialog may yet be suppressed if + ((DefaultTraceListener)System.Diagnostics.Trace.Listeners["Default"]).AssertUiEnabled == false + + + + + Extension methods to make it easier to safely invoke events. + + + + + Invokes any event handlers that are hooked to the specified event. + + The event. Null is allowed. + The value to pass as the sender of the event. + Event arguments to include. + + + + Invokes any event handlers that are hooked to the specified event. + + The event. Null is allowed. + The value to pass as the sender of the event. + Event arguments to include. + + + + Invokes any event handlers that are hooked to the specified event. + + The type of EventArgs. + The event. Null is allowed. + The value to pass as the sender of the event. + Event arguments to include. + + + + A disposable object that also provides a safe way to query its disposed status. + + + + + Gets a value indicating whether this instance has been disposed. + + + + + Common utility methods used by the various error detection and reporting classes. + + + + + Trims away a given surrounding type, returning just the generic type argument, + if the given type is in fact a generic type with just one type argument and + the generic type matches a given wrapper type. Otherwise, it returns the original type. + + The type to trim, or return unmodified. + The SomeType<> generic type definition to trim away from if it is present. + , if it is not a generic type instance of ; otherwise the type argument. + + + + Helper method that formats string arguments. + + + + + Common runtime checks that trace messages and invoke an assertion failure, + but does *not* throw exceptions. + + + + + Verifies that a value is not null, and reports an error about a missing MEF component otherwise. + + The interface of the imported part. + + + + Reports an error if a condition evaluates to true. + + + + + Reports an error if a condition does not evaluate to true. + + + + + Reports an error if a condition does not evaluate to true. + + + + + Reports an error if a condition does not evaluate to true. + + + + + Reports an error if a condition does not evaluate to true. + + + + + Reports a certain failure. + + + + + Reports a certain failure. + + + + + Common runtime checks that throw ArgumentExceptions upon failure. + + + + + Throws an exception if the specified parameter's value is null. + + The type of the parameter. + The value of the argument. + The name of the parameter to include in any thrown exception. + The value of the parameter. + Thrown if is null + + + + Throws an exception if the specified parameter's value is IntPtr.Zero. + + The value of the argument. + The name of the parameter to include in any thrown exception. + The value of the parameter. + Thrown if is IntPtr.Zero + + + + Throws an exception if the specified parameter's value is null. + + The value of the argument. + The name of the parameter to include in any thrown exception. + Thrown if is null + + This method allows async methods to use Requires.NotNull without having to assign the result + to local variables to avoid C# warnings. + + + + + Throws an exception if the specified parameter's value is null. + + The type of the return value of the task. + The value of the argument. + The name of the parameter to include in any thrown exception. + Thrown if is null + + This method allows async methods to use Requires.NotNull without having to assign the result + to local variables to avoid C# warnings. + + + + + Throws an exception if the specified parameter's value is null. + + The type of the parameter. + The value of the argument. + The name of the parameter to include in any thrown exception. + The value of the parameter. + Thrown if is null + + This method exists for callers who themselves only know the type as a generic parameter which + may or may not be a class, but certainly cannot be null. + + + + + Throws an exception if the specified parameter's value is null or empty. + + The value of the argument. + The name of the parameter to include in any thrown exception. + Thrown if is null or empty. + + + + Throws an exception if the specified parameter's value is null, empty, or whitespace. + + The value of the argument. + The name of the parameter to include in any thrown exception. + Thrown if is null or empty. + + + + Throws an exception if the specified parameter's value is null, + has no elements or has an element with a null value. + + The value of the argument. + The name of the parameter to include in any thrown exception. + Thrown if the tested condition is false. + + + + Throws an exception if the specified parameter's value is null, + has no elements or has an element with a null value. + + The type of the elements in the sequence. + The value of the argument. + The name of the parameter to include in any thrown exception. + Thrown if the tested condition is false. + + + + Throws an exception if the specified parameter's value is not null + and has an element with a null value. + + The type of the elements in the sequence. + The value of the argument. + The name of the parameter to include in any thrown exception. + Thrown if the tested condition is false. + + + + Throws an if a condition does not evaluate to true. + + + + + Throws an if a condition does not evaluate to true. + + Nothing. This method always throws. + + + + Throws an ArgumentException if a condition does not evaluate to true. + + + + + Throws an ArgumentException if a condition does not evaluate to true. + + + + + Throws an ArgumentException if a condition does not evaluate to true. + + + + + Throws an ArgumentException if a condition does not evaluate to true. + + + + + Throws an ArgumentException. + + Nothing. It always throws. + + + + Throws an ArgumentException. + + Nothing. It always throws. + + + + Throws an ArgumentException. + + + + + Helper method that formats string arguments. + + + + + Indicates to Code Analysis that a method validates a particular parameter. + + + + + Initializes a new instance of the class. + + + + diff --git a/Nodejs/Product/Nodejs/Nodejs.csproj b/Nodejs/Product/Nodejs/Nodejs.csproj index c3568e6ad..ae747eadd 100644 --- a/Nodejs/Product/Nodejs/Nodejs.csproj +++ b/Nodejs/Product/Nodejs/Nodejs.csproj @@ -123,8 +123,8 @@ True - ..\..\packages\Microsoft.VisualStudio.Validation.14.1.144\lib\net45\Microsoft.VisualStudio.Validation.dll - True + False + ..\..\Common\Microsoft.VisualStudio.Validation.14.1.144\Microsoft.VisualStudio.Validation.dll False From 23c078e2ff1fe7f0d0db9a18344deb5d4dfa4013 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 8 Jul 2016 13:27:11 -0700 Subject: [PATCH 11/27] Remove validation from package.config list --- Nodejs/Product/Nodejs/packages.config | 1 - 1 file changed, 1 deletion(-) diff --git a/Nodejs/Product/Nodejs/packages.config b/Nodejs/Product/Nodejs/packages.config index 154eacfa7..437b18d65 100644 --- a/Nodejs/Product/Nodejs/packages.config +++ b/Nodejs/Product/Nodejs/packages.config @@ -2,6 +2,5 @@ - \ No newline at end of file From 75dcbefd90296de1b6ec306685969e55ada154b1 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 10 Aug 2016 11:57:44 -0700 Subject: [PATCH 12/27] Use signed webrole.dll for VS15 (#1200) * Use signed version of webrole.dll * Use full path for CopyOutputsToPath * Use WebRoleDllPath based on existance of SignedBinariesPath * Delete custom target for targets build * pull webrole from webrole binaries * Revert removal of _CopyWixOutputsToPath * Add a few debug messages * Remove reference to swix from setup files * Remove correct line in dirs.proj * revert dirs.proj changes * Try adding custom MSBuildAllProjects path to trigger rebuild * Clean up change and remove log statements * Swtich to force clean build root output * Fix WebRoleDll paths * Redo dirs.proj change * Restore workaround to retrigger build and revert dirs.proj change * Use buildversion variable instead of hardcoded 1.2 version for vsix packages * Use build.buildnumber instead * Use custom defined buildversion * Update other swix files * Use custom defined buildversion (#1199) * Use custom defined buildversion * Update other swix files * Use MsiVersion instead of custom version logic * REmove custom build logic --- ...icrosoft.VisualStudio.NodejsTools.InteractiveWindow.swixproj | 2 +- .../Microsoft.VisualStudio.NodejsTools.NodejsTools.swixproj | 2 +- .../swix/Microsoft.VisualStudio.NodejsTools.Profiling.swixproj | 2 +- .../swix/Microsoft.VisualStudio.NodejsTools.Targets.swixproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.InteractiveWindow.swixproj b/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.InteractiveWindow.swixproj index d3f8f0af7..719e42bb5 100644 --- a/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.InteractiveWindow.swixproj +++ b/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.InteractiveWindow.swixproj @@ -9,7 +9,7 @@ - $(PackagePreprocessorDefinitions);BuildOutputRoot=$(BuildOutputRoot);BuildVersion=$(Build.BuildNumber) + $(PackagePreprocessorDefinitions);BuildOutputRoot=$(BuildOutputRoot);BuildVersion=$(MsiVersion) diff --git a/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.NodejsTools.swixproj b/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.NodejsTools.swixproj index c6286e60b..74db309ae 100644 --- a/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.NodejsTools.swixproj +++ b/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.NodejsTools.swixproj @@ -9,7 +9,7 @@ - $(PackagePreprocessorDefinitions);BuildOutputRoot=$(BuildOutputRoot);BuildVersion=$(Build.BuildNumber) + $(PackagePreprocessorDefinitions);BuildOutputRoot=$(BuildOutputRoot);BuildVersion=$(MsiVersion) diff --git a/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.Profiling.swixproj b/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.Profiling.swixproj index 9954379aa..e5b69e87c 100644 --- a/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.Profiling.swixproj +++ b/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.Profiling.swixproj @@ -9,7 +9,7 @@ - $(PackagePreprocessorDefinitions);BuildOutputRoot=$(BuildOutputRoot);BuildVersion=$(Build.BuildNumber) + $(PackagePreprocessorDefinitions);BuildOutputRoot=$(BuildOutputRoot);BuildVersion=$(MsiVersion) diff --git a/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.Targets.swixproj b/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.Targets.swixproj index 7ce198f44..93b8cbf20 100644 --- a/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.Targets.swixproj +++ b/Nodejs/Setup/swix/Microsoft.VisualStudio.NodejsTools.Targets.swixproj @@ -11,7 +11,7 @@ $(BuildOutputRoot)Setup\Microsoft.VisualStudio.NodejsTools.Targets.vsix $(SignedBinariesPath)\Microsoft.NodejsTools.WebRole.dll $(BuildOutputRoot)\Binaries\WebRole\Microsoft.NodejsTools.WebRole.dll - $(PackagePreprocessorDefinitions);BuildOutputRoot=$(BuildOutputRoot);BuildVersion=$(Build.BuildNumber);WebRoleDll=$(WebRoleDll) + $(PackagePreprocessorDefinitions);BuildOutputRoot=$(BuildOutputRoot);BuildVersion=$(MsiVersion);WebRoleDll=$(WebRoleDll) $(WebRoleDll) From 3f041dde794cd8d31f6417cc0f3a00e2873b38d9 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 12 Aug 2016 11:40:20 -0700 Subject: [PATCH 13/27] Remove dev11 and dev12 references from msbuild files (#1202) * Remove additional dev11 and dev12 references from msbuild files NTVS 1.2 no longer supports VS11 or VS12. This change removes a few remaining references from the msbuild files. Also removes the c++ targets logic. * Revert assemblyversion change --- Build/Common.Build.CSharp.settings | 27 +-------- Build/Common.Build.Cpp.settings | 93 ------------------------------ Build/Common.Build.settings | 15 +---- Build/default.12.0Exp.testsettings | 23 -------- 4 files changed, 3 insertions(+), 155 deletions(-) delete mode 100644 Build/Common.Build.Cpp.settings delete mode 100644 Build/default.12.0Exp.testsettings diff --git a/Build/Common.Build.CSharp.settings b/Build/Common.Build.CSharp.settings index e1786c645..a0c3b736c 100644 --- a/Build/Common.Build.CSharp.settings +++ b/Build/Common.Build.CSharp.settings @@ -29,14 +29,10 @@ true TRACE;$(DefineConstants) - - - $(DefineConstants);FEATURE_AZURE_REMOTE_DEBUG - - $(DefineConstants);DEV15;DEV15_OR_LATER;DEV14_OR_LATER;DEV12_OR_LATER;DEV11_OR_LATER DEV15;DEV15_OR_LATER;DEV14_OR_LATER;DEV12_OR_LATER;DEV11_OR_LATER + $(DefineConstants);DEV15;DEV15_OR_LATER;DEV14_OR_LATER;DEV12_OR_LATER;DEV11_OR_LATER 15.0.0.0 Core @@ -47,27 +43,6 @@ 14.0.0.0 Core - - - $(DefineConstants);DEV12;DEV12_OR_LATER;DEV11_OR_LATER - DEV12;DEV12_OR_LATER;DEV11_OR_LATER - 12.0.0.0 - v12.0 - - - - $(DefineConstants);DEV11;DEV11_OR_LATER - DEV11;DEV11_OR_LATER - 4.0.0.0 - v4.0 - - - - $(DefineConstants);DEV10 - DEV10 - 4.0.0.0 - v4.0 - false diff --git a/Build/Common.Build.Cpp.settings b/Build/Common.Build.Cpp.settings deleted file mode 100644 index b32ed474a..000000000 --- a/Build/Common.Build.Cpp.settings +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - - - C++ - Win32 - - - - DEV15;DEV15_OR_LATER;DEV14_OR_LATER;DEV12_OR_LATER;DEV11_OR_LATER;%(PreprocessorDefinitions) - - - - - - DEV14;DEV14_OR_LATER;DEV12_OR_LATER;DEV11_OR_LATER;%(PreprocessorDefinitions) - - - - - - DEV12;DEV12_OR_LATER;DEV11_OR_LATER;%(PreprocessorDefinitions) - - - - - - DEV11;DEV11_OR_LATER;%(PreprocessorDefinitions) - - - - - - DEV10;%(PreprocessorDefinitions) - - - - - - Level3 - Use - $(TreatWarningsAsErrors) - - - true - - - - - - Disabled - _DEBUG;%(PreprocessorDefinitions) - - - - - - - MaxSpeed - true - true - NDEBUG;%(PreprocessorDefinitions) - - - - true - true - - - - - - WIN32;%(PreprocessorDefinitions) - - - - - - WIN64;%(PreprocessorDefinitions) - - - - diff --git a/Build/Common.Build.settings b/Build/Common.Build.settings index 740d491ee..1ea5af1b5 100644 --- a/Build/Common.Build.settings +++ b/Build/Common.Build.settings @@ -25,12 +25,9 @@ true - 10.0 + 14.0 15.0 - 14.0 - 12.0 - 11.0 - 10.0 + 14.0 false v4.6 @@ -89,7 +86,6 @@ - prompt 4 @@ -116,12 +112,6 @@ $([System.Double]::Parse($(VSTarget))) <_VSUpdateVersion Condition="$(VSUpdateVersion)=='' and $(VisualStudioVersion)!='10.0'">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\vs\Servicing\$(VSTarget)\devenv', 'UpdateVersion', null, RegistryView.Registry32)) $([System.Int32]::Parse($(_VSUpdateVersion.Substring($([MSBuild]::Add(1, $(_VSUpdateVersion.LastIndexOf(`.`)))))))) - - - $(ReleaseBuild) - - - true @@ -143,7 +133,6 @@ - diff --git a/Build/default.12.0Exp.testsettings b/Build/default.12.0Exp.testsettings deleted file mode 100644 index 71d8b96bc..000000000 --- a/Build/default.12.0Exp.testsettings +++ /dev/null @@ -1,23 +0,0 @@ - - - Local test runs with the VS 2013 Experimental Hive - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From c99a52c8731ddeb0c89c5cb984b7dcc1002681bc Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 12 Aug 2016 11:40:52 -0700 Subject: [PATCH 14/27] Fix breaking on plain old errors (#1193) * Fix breaking on plain old errors closes #1192 **bug** ```js throw new Error('I am'); ``` is not handled, even with all node.js exceptions enabled **fix** Use correct name when enabling or disabling errors. **testing** Tested this case before and after fix. See error being handled correctly now. * Fix core duplication problem that was the root cause of this issue --- .../Nodejs/Debugger/ExceptionHandler.cs | 115 +--------- .../Product/Nodejs/NodejsPackage.Debugger.cs | 200 +++++++++--------- 2 files changed, 111 insertions(+), 204 deletions(-) diff --git a/Nodejs/Product/Nodejs/Debugger/ExceptionHandler.cs b/Nodejs/Product/Nodejs/Debugger/ExceptionHandler.cs index 370bd9286..72194a955 100644 --- a/Nodejs/Product/Nodejs/Debugger/ExceptionHandler.cs +++ b/Nodejs/Product/Nodejs/Debugger/ExceptionHandler.cs @@ -84,117 +84,14 @@ public ExceptionHitTreatment GetExceptionHitTreatment(string exceptionName) { } private Dictionary GetDefaultExceptionTreatments() { - // Keep exception types in sync with those declared in ProvideDebugExceptionAttribute's in NodePackage.Debugger.cs -#if FALSE - string[] exceptionTypes = { - }; -#endif - - string[] breakNeverTypes = { - // should probably be break on unhandled when we have just my code support - "Error", - "Error(EACCES)", - "Error(EADDRINUSE)", - "Error(EADDRNOTAVAIL)", - "Error(EAFNOSUPPORT)", - "Error(EAGAIN)", - "Error(EWOULDBLOCK)", - "Error(EALREADY)", - "Error(EBADF)", - "Error(EBADMSG)", - "Error(EBUSY)", - "Error(ECANCELED)", - "Error(ECHILD)", - "Error(ECONNABORTED)", - "Error(ECONNREFUSED)", - "Error(ECONNRESET)", - "Error(EDEADLK)", - "Error(EDESTADDRREQ)", - "Error(EDOM)", - "Error(EEXIST)", - "Error(EFAULT)", - "Error(EFBIG)", - "Error(EHOSTUNREACH)", - "Error(EIDRM)", - "Error(EILSEQ)", - "Error(EINPROGRESS)", - "Error(EINTR)", - "Error(EINVAL)", - "Error(EIO)", - "Error(EISCONN)", - "Error(EISDIR)", - "Error(ELOOP)", - "Error(EMFILE)", - "Error(EMLINK)", - "Error(EMSGSIZE)", - "Error(ENAMETOOLONG)", - "Error(ENETDOWN)", - "Error(ENETRESET)", - "Error(ENETUNREACH)", - "Error(ENFILE)", - "Error(ENOBUFS)", - "Error(ENODATA)", - "Error(ENODEV)", - "Error(ENOENT)", - "Error(ENOEXEC)", - "Error(ENOLINK)", - "Error(ENOLCK)", - "Error(ENOMEM)", - "Error(ENOMSG)", - "Error(ENOPROTOOPT)", - "Error(ENOSPC)", - "Error(ENOSR)", - "Error(ENOSTR)", - "Error(ENOSYS)", - "Error(ENOTCONN)", - "Error(ENOTDIR)", - "Error(ENOTEMPTY)", - "Error(ENOTSOCK)", - "Error(ENOTSUP)", - "Error(ENOTTY)", - "Error(ENXIO)", - "Error(EOVERFLOW)", - "Error(EPERM)", - "Error(EPIPE)", - "Error(EPROTO)", - "Error(EPROTONOSUPPORT)", - "Error(EPROTOTYPE)", - "Error(ERANGE)", - "Error(EROFS)", - "Error(ESPIPE)", - "Error(ESRCH)", - "Error(ETIME)", - "Error(ETIMEDOUT)", - "Error(ETXTBSY)", - "Error(EXDEV)", - "Error(MODULE_NOT_FOUND)", - "Error(SIGHUP)", - "Error(SIGINT)", - "Error(SIGILL)", - "Error(SIGABRT)", - "Error(SIGFPE)", - "Error(SIGKILL)", - "Error(SIGSEGV)", - "Error(SIGTERM)", - "Error(SIGBREAK)", - "Error(SIGWINCH)", - "EvalError", - "RangeError", - "ReferenceError", - "SyntaxError", - "TypeError", - "URIError", - }; - var defaultExceptionTreatments = new Dictionary(); -#if FALSE - foreach (string exceptionType in exceptionTypes) { - defaultExceptionTreatments[exceptionType] = ExceptionHitTreatment.BreakAlways; - } -#endif - foreach (string exceptionType in breakNeverTypes) { - defaultExceptionTreatments[exceptionType] = ExceptionHitTreatment.BreakNever; + // Get exception names from in NodePackage.Debugger.cs + foreach (var attr in System.Attribute.GetCustomAttributes(typeof(NodejsPackage))) { + var debugAttr = attr as ProvideNodeDebugExceptionAttribute; + if (debugAttr != null && !string.IsNullOrEmpty(debugAttr.ExceptionName)) { + defaultExceptionTreatments[debugAttr.ExceptionName] = ExceptionHitTreatment.BreakNever; + } } return defaultExceptionTreatments; diff --git a/Nodejs/Product/Nodejs/NodejsPackage.Debugger.cs b/Nodejs/Product/Nodejs/NodejsPackage.Debugger.cs index dc8496d3e..75eb1fdbe 100644 --- a/Nodejs/Product/Nodejs/NodejsPackage.Debugger.cs +++ b/Nodejs/Product/Nodejs/NodejsPackage.Debugger.cs @@ -14,109 +14,119 @@ // //*********************************************************// +using System.Linq; using Microsoft.NodejsTools.Debugger.DebugEngine; using Microsoft.VisualStudio.Debugger.Interop; using Microsoft.VisualStudioTools; namespace Microsoft.NodejsTools { + sealed class ProvideNodeDebugExceptionAttribute : ProvideDebugExceptionAttribute { + public readonly string ExceptionName; + + public ProvideNodeDebugExceptionAttribute(params string[] exceptionPath) : base(AD7Engine.DebugEngineId, "Node.js Exceptions", exceptionPath) { + State = enum_EXCEPTION_STATE.EXCEPTION_NONE; + ExceptionName = exceptionPath.LastOrDefault(); + } + } + // Keep declared exceptions in sync with those given default values in NodeDebugger.GetDefaultExceptionTreatments() - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] + [ProvideNodeDebugException()] + [ProvideNodeDebugException("Error")] #if DEV14_OR_LATER - // VS2015's exception manager uses a different nesting structure, so it's necessary to register Error() explicitly. - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error()", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] + // VS2015's exception manager uses a different nesting structure, so it's necessary to register Error explicitly. + [ProvideNodeDebugException("Error", "Error")] #endif - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EACCES)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EADDRINUSE)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EADDRNOTAVAIL)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EAFNOSUPPORT)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EAGAIN)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EWOULDBLOCK)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EALREADY)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EBADF)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EBADMSG)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EBUSY)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ECANCELED)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ECHILD)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ECONNABORTED)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ECONNREFUSED)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ECONNRESET)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EDEADLK)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EDESTADDRREQ)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EDOM)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EEXIST)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EFAULT)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EFBIG)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EHOSTUNREACH)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EIDRM)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EILSEQ)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EINPROGRESS)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EINTR)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EINVAL)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EIO)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EISCONN)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EISDIR)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ELOOP)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EMFILE)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EMLINK)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EMSGSIZE)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENAMETOOLONG)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENETDOWN)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENETRESET)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENETUNREACH)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENFILE)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOBUFS)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENODATA)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENODEV)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOENT)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOEXEC)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOLINK)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOLCK)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOMEM)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOMSG)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOPROTOOPT)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOSPC)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOSR)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOSTR)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOSYS)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOTCONN)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOTDIR)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOTEMPTY)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOTSOCK)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOTSUP)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENOTTY)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ENXIO)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EOVERFLOW)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EPERM)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EPIPE)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EPROTO)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EPROTONOSUPPORT)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EPROTOTYPE)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ERANGE)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EROFS)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ESPIPE)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ESRCH)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ETIME)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ETIMEDOUT)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(ETXTBSY)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(EXDEV)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(MODULE_NOT_FOUND)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGHUP)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGINT)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGILL)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGABRT)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGFPE)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGKILL)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGSEGV)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGTERM)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGBREAK)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "Error", "Error(SIGWINCH)", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "EvalError", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "RangeError", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "ReferenceError", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "SyntaxError", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "TypeError", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] - [ProvideDebugException(AD7Engine.DebugEngineId, "Node.js Exceptions", "URIError", State = enum_EXCEPTION_STATE.EXCEPTION_NONE)] + [ProvideNodeDebugException("Error", "Error(EACCES)")] + [ProvideNodeDebugException("Error", "Error(EADDRINUSE)")] + [ProvideNodeDebugException("Error", "Error(EADDRNOTAVAIL)")] + [ProvideNodeDebugException("Error", "Error(EAFNOSUPPORT)")] + [ProvideNodeDebugException("Error", "Error(EAGAIN)")] + [ProvideNodeDebugException("Error", "Error(EWOULDBLOCK)")] + [ProvideNodeDebugException("Error", "Error(EALREADY)")] + [ProvideNodeDebugException("Error", "Error(EBADF)")] + [ProvideNodeDebugException("Error", "Error(EBADMSG)")] + [ProvideNodeDebugException("Error", "Error(EBUSY)")] + [ProvideNodeDebugException("Error", "Error(ECANCELED)")] + [ProvideNodeDebugException("Error", "Error(ECHILD)")] + [ProvideNodeDebugException("Error", "Error(ECONNABORTED)")] + [ProvideNodeDebugException("Error", "Error(ECONNREFUSED)")] + [ProvideNodeDebugException("Error", "Error(ECONNRESET)")] + [ProvideNodeDebugException("Error", "Error(EDEADLK)")] + [ProvideNodeDebugException("Error", "Error(EDESTADDRREQ)")] + [ProvideNodeDebugException("Error", "Error(EDOM)")] + [ProvideNodeDebugException("Error", "Error(EEXIST)")] + [ProvideNodeDebugException("Error", "Error(EFAULT)")] + [ProvideNodeDebugException("Error", "Error(EFBIG)")] + [ProvideNodeDebugException("Error", "Error(EHOSTUNREACH)")] + [ProvideNodeDebugException("Error", "Error(EIDRM)")] + [ProvideNodeDebugException("Error", "Error(EILSEQ)")] + [ProvideNodeDebugException("Error", "Error(EINPROGRESS)")] + [ProvideNodeDebugException("Error", "Error(EINTR)")] + [ProvideNodeDebugException("Error", "Error(EINVAL)")] + [ProvideNodeDebugException("Error", "Error(EIO)")] + [ProvideNodeDebugException("Error", "Error(EISCONN)")] + [ProvideNodeDebugException("Error", "Error(EISDIR)")] + [ProvideNodeDebugException("Error", "Error(ELOOP)")] + [ProvideNodeDebugException("Error", "Error(EMFILE)")] + [ProvideNodeDebugException("Error", "Error(EMLINK)")] + [ProvideNodeDebugException("Error", "Error(EMSGSIZE)")] + [ProvideNodeDebugException("Error", "Error(ENAMETOOLONG)")] + [ProvideNodeDebugException("Error", "Error(ENETDOWN)")] + [ProvideNodeDebugException("Error", "Error(ENETRESET)")] + [ProvideNodeDebugException("Error", "Error(ENETUNREACH)")] + [ProvideNodeDebugException("Error", "Error(ENFILE)")] + [ProvideNodeDebugException("Error", "Error(ENOBUFS)")] + [ProvideNodeDebugException("Error", "Error(ENODATA)")] + [ProvideNodeDebugException("Error", "Error(ENODEV)")] + [ProvideNodeDebugException("Error", "Error(ENOENT)")] + [ProvideNodeDebugException("Error", "Error(ENOEXEC)")] + [ProvideNodeDebugException("Error", "Error(ENOLINK)")] + [ProvideNodeDebugException("Error", "Error(ENOLCK)")] + [ProvideNodeDebugException("Error", "Error(ENOMEM)")] + [ProvideNodeDebugException("Error", "Error(ENOMSG)")] + [ProvideNodeDebugException("Error", "Error(ENOPROTOOPT)")] + [ProvideNodeDebugException("Error", "Error(ENOSPC)")] + [ProvideNodeDebugException("Error", "Error(ENOSR)")] + [ProvideNodeDebugException("Error", "Error(ENOSTR)")] + [ProvideNodeDebugException("Error", "Error(ENOSYS)")] + [ProvideNodeDebugException("Error", "Error(ENOTCONN)")] + [ProvideNodeDebugException("Error", "Error(ENOTDIR)")] + [ProvideNodeDebugException("Error", "Error(ENOTEMPTY)")] + [ProvideNodeDebugException("Error", "Error(ENOTSOCK)")] + [ProvideNodeDebugException("Error", "Error(ENOTSUP)")] + [ProvideNodeDebugException("Error", "Error(ENOTTY)")] + [ProvideNodeDebugException("Error", "Error(ENXIO)")] + [ProvideNodeDebugException("Error", "Error(EOVERFLOW)")] + [ProvideNodeDebugException("Error", "Error(EPERM)")] + [ProvideNodeDebugException("Error", "Error(EPIPE)")] + [ProvideNodeDebugException("Error", "Error(EPROTO)")] + [ProvideNodeDebugException("Error", "Error(EPROTONOSUPPORT)")] + [ProvideNodeDebugException("Error", "Error(EPROTOTYPE)")] + [ProvideNodeDebugException("Error", "Error(ERANGE)")] + [ProvideNodeDebugException("Error", "Error(EROFS)")] + [ProvideNodeDebugException("Error", "Error(ESPIPE)")] + [ProvideNodeDebugException("Error", "Error(ESRCH)")] + [ProvideNodeDebugException("Error", "Error(ETIME)")] + [ProvideNodeDebugException("Error", "Error(ETIMEDOUT)")] + [ProvideNodeDebugException("Error", "Error(ETXTBSY)")] + [ProvideNodeDebugException("Error", "Error(EXDEV)")] + [ProvideNodeDebugException("Error", "Error(MODULE_NOT_FOUND)")] + [ProvideNodeDebugException("Error", "Error(SIGHUP)")] + [ProvideNodeDebugException("Error", "Error(SIGINT)")] + [ProvideNodeDebugException("Error", "Error(SIGILL)")] + [ProvideNodeDebugException("Error", "Error(SIGABRT)")] + [ProvideNodeDebugException("Error", "Error(SIGFPE)")] + [ProvideNodeDebugException("Error", "Error(SIGKILL)")] + [ProvideNodeDebugException("Error", "Error(SIGSEGV)")] + [ProvideNodeDebugException("Error", "Error(SIGTERM)")] + [ProvideNodeDebugException("Error", "Error(SIGBREAK)")] + [ProvideNodeDebugException("Error", "Error(SIGWINCH)")] + [ProvideNodeDebugException("EvalError")] + [ProvideNodeDebugException("RangeError")] + [ProvideNodeDebugException("ReferenceError")] + [ProvideNodeDebugException("SyntaxError")] + [ProvideNodeDebugException("TypeError")] + [ProvideNodeDebugException("URIError")] partial class NodejsPackage : CommonPackage { } } From b84f66a30396393936bce3146f897417259d6aba Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 18 Aug 2016 15:11:17 -0700 Subject: [PATCH 15/27] Delete Starter Express App Templates **Bug** The starter express app templates are very out of date and do not provide a good example of best practices while developing a modern node web application. We do not have the resources to keep them up to date. We also do not want to ship templates that are out of date and promote bad design (for example, we still are referencing Jade in all of these templates, which has been renamed to Pug). If we ever do want to provide a more feature-rich template for new users, starting from scatch would be better IMO would be better than trying to update all these templates. **Fix** Just delete all these templates. Any projects created from these templates will continue to work fine, this only effects the new project experiance. We would want to take this into NTVS 1.3 and probably VS15 Preview 5. --- Nodejs/Product/Nodejs/Nodejs.csproj | 284 +- .../AddWebSiteAzureStarterExpressApp.njsproj | 122 - ...SiteAzureStarterExpressApp.vstemplate.base | 85 - .../ChangeConfig.ps1 | 15 - .../Preview.png | Bin 22136 -> 0 bytes .../README.md | 3 - .../Web.Debug.config | 39 - .../Web.config | 64 - .../_references.js | 5 - .../about.jade | 6 - .../AddWebSiteAzureStarterExpressApp/app.js | 37 - .../bootstrap.css | 6816 ------------ .../bootstrap.js | 2014 ---- .../bootstrap.min.css | 20 - .../bootstrap.min.js | 21 - .../contact.jade | 19 - .../download.ps1 | 87 - .../glyphicons-halflings-regular.eot | Bin 14079 -> 0 bytes .../glyphicons-halflings-regular.svg | 228 - .../glyphicons-halflings-regular.ttf | Bin 29512 -> 0 bytes .../glyphicons-halflings-regular.woff | Bin 16448 -> 0 bytes .../index.jade | 24 - .../AddWebSiteAzureStarterExpressApp/index.js | 16 - .../jquery-1.10.2.intellisense.js | 2671 ----- .../jquery-1.10.2.js | 9803 ----------------- .../jquery-1.10.2.min.js | 23 - .../jquery-1.10.2.min.map | 1 - .../jquery.validate-vsdoc.js | 1302 --- .../jquery.validate.js | 1245 --- .../jquery.validate.min.js | 16 - .../jquery.validate.unobtrusive.js | 344 - .../jquery.validate.unobtrusive.min.js | 19 - .../layout.jade | 37 - .../modernizr-2.6.2.js | 1416 --- .../AddWebSiteAzureStarterExpressApp/node.cmd | 1 - .../package.json | 14 - .../respond.js | 340 - .../respond.min.js | 20 - .../setup_web.cmd | 57 - .../style.styl | 33 - .../typings.json | 6 - .../AddWebSiteAzureStarterExpressApp/user.js | 8 - .../AddWebSiteStarterExpressApp.njsproj | 115 - ...ddWebSiteStarterExpressApp.vstemplate.base | 77 - .../AddWebSiteStarterExpressApp/Preview.png | Bin 22136 -> 0 bytes .../AddWebSiteStarterExpressApp/README.md | 3 - .../_references.js | 5 - .../AddWebSiteStarterExpressApp/about.jade | 6 - .../AddWebSiteStarterExpressApp/app.js | 37 - .../AddWebSiteStarterExpressApp/bootstrap.css | 6816 ------------ .../AddWebSiteStarterExpressApp/bootstrap.js | 2014 ---- .../bootstrap.min.css | 20 - .../bootstrap.min.js | 21 - .../AddWebSiteStarterExpressApp/contact.jade | 19 - .../glyphicons-halflings-regular.eot | Bin 14079 -> 0 bytes .../glyphicons-halflings-regular.svg | 228 - .../glyphicons-halflings-regular.ttf | Bin 29512 -> 0 bytes .../glyphicons-halflings-regular.woff | Bin 16448 -> 0 bytes .../AddWebSiteStarterExpressApp/index.jade | 24 - .../AddWebSiteStarterExpressApp/index.js | 16 - .../jquery-1.10.2.intellisense.js | 2671 ----- .../jquery-1.10.2.js | 9803 ----------------- .../jquery-1.10.2.min.js | 23 - .../jquery-1.10.2.min.map | 1 - .../jquery.validate-vsdoc.js | 1302 --- .../jquery.validate.js | 1245 --- .../jquery.validate.min.js | 16 - .../jquery.validate.unobtrusive.js | 344 - .../jquery.validate.unobtrusive.min.js | 19 - .../AddWebSiteStarterExpressApp/layout.jade | 37 - .../modernizr-2.6.2.js | 1416 --- .../AddWebSiteStarterExpressApp/package.json | 14 - .../AddWebSiteStarterExpressApp/respond.js | 340 - .../respond.min.js | 20 - .../AddWebSiteStarterExpressApp/style.styl | 33 - .../AddWebSiteStarterExpressApp/typings.json | 6 - .../AddWebSiteStarterExpressApp/user.js | 8 - .../AzureStarterExpressApp.njsproj | 122 - .../AzureStarterExpressApp.vstemplate | 80 - .../AzureStarterExpressApp/ChangeConfig.ps1 | 15 - .../AzureStarterExpressApp/Preview.png | Bin 22136 -> 0 bytes .../AzureStarterExpressApp/README.md | 3 - .../AzureStarterExpressApp/Web.Debug.config | 39 - .../AzureStarterExpressApp/Web.config | 64 - .../AzureStarterExpressApp/_references.js | 5 - .../AzureStarterExpressApp/about.jade | 6 - .../AzureStarterExpressApp/app.js | 37 - .../AzureStarterExpressApp/bootstrap.css | 6816 ------------ .../AzureStarterExpressApp/bootstrap.js | 2014 ---- .../AzureStarterExpressApp/bootstrap.min.css | 20 - .../AzureStarterExpressApp/bootstrap.min.js | 21 - .../AzureStarterExpressApp/contact.jade | 19 - .../AzureStarterExpressApp/download.ps1 | 87 - .../glyphicons-halflings-regular.eot | Bin 14079 -> 0 bytes .../glyphicons-halflings-regular.svg | 228 - .../glyphicons-halflings-regular.ttf | Bin 29512 -> 0 bytes .../glyphicons-halflings-regular.woff | Bin 16448 -> 0 bytes .../AzureStarterExpressApp/index.jade | 24 - .../AzureStarterExpressApp/index.js | 16 - .../jquery-1.10.2.intellisense.js | 2671 ----- .../AzureStarterExpressApp/jquery-1.10.2.js | 9803 ----------------- .../jquery-1.10.2.min.js | 23 - .../jquery-1.10.2.min.map | 1 - .../jquery.validate-vsdoc.js | 1302 --- .../AzureStarterExpressApp/jquery.validate.js | 1245 --- .../jquery.validate.min.js | 16 - .../jquery.validate.unobtrusive.js | 344 - .../jquery.validate.unobtrusive.min.js | 19 - .../AzureStarterExpressApp/layout.jade | 37 - .../AzureStarterExpressApp/modernizr-2.6.2.js | 1416 --- .../AzureStarterExpressApp/node.cmd | 1 - .../AzureStarterExpressApp/package.json | 14 - .../AzureStarterExpressApp/respond.js | 340 - .../AzureStarterExpressApp/respond.min.js | 20 - .../AzureStarterExpressApp/setup_web.cmd | 57 - .../AzureStarterExpressApp/style.styl | 33 - .../AzureStarterExpressApp/typings.json | 6 - .../AzureStarterExpressApp/user.js | 8 - .../StarterExpressApp/Preview.png | Bin 22136 -> 0 bytes .../StarterExpressApp/README.md | 3 - .../StarterExpressApp.njsproj | 115 - .../StarterExpressApp.vstemplate | 72 - .../StarterExpressApp/_references.js | 1 - .../StarterExpressApp/about.jade | 6 - .../ProjectTemplates/StarterExpressApp/app.js | 37 - .../StarterExpressApp/bootstrap.css | 6816 ------------ .../StarterExpressApp/bootstrap.js | 2014 ---- .../StarterExpressApp/bootstrap.min.css | 20 - .../StarterExpressApp/bootstrap.min.js | 21 - .../StarterExpressApp/contact.jade | 19 - .../glyphicons-halflings-regular.eot | Bin 14079 -> 0 bytes .../glyphicons-halflings-regular.svg | 228 - .../glyphicons-halflings-regular.ttf | Bin 29512 -> 0 bytes .../glyphicons-halflings-regular.woff | Bin 16448 -> 0 bytes .../StarterExpressApp/index.jade | 24 - .../StarterExpressApp/index.js | 16 - .../jquery-1.10.2.intellisense.js | 2671 ----- .../StarterExpressApp/jquery-1.10.2.js | 9803 ----------------- .../StarterExpressApp/jquery-1.10.2.min.js | 23 - .../StarterExpressApp/jquery-1.10.2.min.map | 1 - .../jquery.validate-vsdoc.js | 1302 --- .../StarterExpressApp/jquery.validate.js | 1245 --- .../StarterExpressApp/jquery.validate.min.js | 16 - .../jquery.validate.unobtrusive.js | 344 - .../jquery.validate.unobtrusive.min.js | 19 - .../StarterExpressApp/layout.jade | 37 - .../StarterExpressApp/modernizr-2.6.2.js | 1416 --- .../StarterExpressApp/package.json | 14 - .../StarterExpressApp/respond.js | 340 - .../StarterExpressApp/respond.min.js | 20 - .../StarterExpressApp/style.styl | 33 - .../StarterExpressApp/typings.json | 6 - .../StarterExpressApp/user.js | 8 - .../ChangeConfig.ps1 | 15 - .../Preview.png | Bin 22136 -> 0 bytes .../README.md | 3 - .../TypeScriptAzureStarterExpressApp.njsproj | 128 - ...ypeScriptAzureStarterExpressApp.vstemplate | 89 - .../Web.Debug.config | 39 - .../Web.config | 64 - .../_references.js | 5 - .../about.jade | 6 - .../TypeScriptAzureStarterExpressApp/app.ts | 34 - .../bootstrap.css | 6816 ------------ .../bootstrap.js | 2014 ---- .../bootstrap.min.css | 20 - .../bootstrap.min.js | 21 - .../contact.jade | 19 - .../download.ps1 | 87 - .../express.d.ts | 1817 --- .../glyphicons-halflings-regular.eot | Bin 14079 -> 0 bytes .../glyphicons-halflings-regular.svg | 228 - .../glyphicons-halflings-regular.ttf | Bin 29512 -> 0 bytes .../glyphicons-halflings-regular.woff | Bin 16448 -> 0 bytes .../index.jade | 24 - .../TypeScriptAzureStarterExpressApp/index.ts | 16 - .../jquery-1.10.2.intellisense.js | 2671 ----- .../jquery-1.10.2.js | 9803 ----------------- .../jquery-1.10.2.min.js | 23 - .../jquery-1.10.2.min.map | 1 - .../jquery.validate-vsdoc.js | 1302 --- .../jquery.validate.js | 1245 --- .../jquery.validate.min.js | 16 - .../jquery.validate.unobtrusive.js | 344 - .../jquery.validate.unobtrusive.min.js | 19 - .../layout.jade | 37 - .../modernizr-2.6.2.js | 1416 --- .../TypeScriptAzureStarterExpressApp/node.cmd | 1 - .../package.json | 14 - .../respond.js | 340 - .../respond.min.js | 20 - .../setup_web.cmd | 57 - .../style.styl | 33 - .../stylus.d.ts | 3 - .../TypeScriptAzureStarterExpressApp/user.js | 8 - .../TypeScriptStarterExpressApp/Preview.png | Bin 22136 -> 0 bytes .../TypeScriptStarterExpressApp/README.md | 3 - .../TypeScriptStarterExpressApp.njsproj | 121 - .../TypeScriptStarterExpressApp.vstemplate | 81 - .../_references.js | 5 - .../TypeScriptStarterExpressApp/about.jade | 6 - .../TypeScriptStarterExpressApp/app.ts | 34 - .../TypeScriptStarterExpressApp/bootstrap.css | 6816 ------------ .../TypeScriptStarterExpressApp/bootstrap.js | 2014 ---- .../bootstrap.min.css | 20 - .../bootstrap.min.js | 21 - .../TypeScriptStarterExpressApp/contact.jade | 19 - .../TypeScriptStarterExpressApp/express.d.ts | 1817 --- .../glyphicons-halflings-regular.eot | Bin 14079 -> 0 bytes .../glyphicons-halflings-regular.svg | 228 - .../glyphicons-halflings-regular.ttf | Bin 29512 -> 0 bytes .../glyphicons-halflings-regular.woff | Bin 16448 -> 0 bytes .../TypeScriptStarterExpressApp/index.jade | 24 - .../TypeScriptStarterExpressApp/index.ts | 16 - .../jquery-1.10.2.intellisense.js | 2671 ----- .../jquery-1.10.2.js | 9803 ----------------- .../jquery-1.10.2.min.js | 23 - .../jquery-1.10.2.min.map | 1 - .../jquery.validate-vsdoc.js | 1302 --- .../jquery.validate.js | 1245 --- .../jquery.validate.min.js | 16 - .../jquery.validate.unobtrusive.js | 344 - .../jquery.validate.unobtrusive.min.js | 19 - .../TypeScriptStarterExpressApp/layout.jade | 37 - .../modernizr-2.6.2.js | 1416 --- .../TypeScriptStarterExpressApp/package.json | 14 - .../TypeScriptStarterExpressApp/respond.js | 340 - .../respond.min.js | 20 - .../TypeScriptStarterExpressApp/style.styl | 33 - .../TypeScriptStarterExpressApp/stylus.d.ts | 3 - .../TypeScriptStarterExpressApp/user.js | 8 - 231 files changed, 16 insertions(+), 164924 deletions(-) delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/AddWebSiteAzureStarterExpressApp.njsproj delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/AddWebSiteAzureStarterExpressApp.vstemplate.base delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/ChangeConfig.ps1 delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/Preview.png delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/README.md delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/Web.Debug.config delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/Web.config delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/_references.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/about.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/app.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.min.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/contact.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/download.ps1 delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/glyphicons-halflings-regular.eot delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/glyphicons-halflings-regular.svg delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/glyphicons-halflings-regular.ttf delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/glyphicons-halflings-regular.woff delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/index.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/index.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/jquery-1.10.2.intellisense.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/jquery-1.10.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/jquery-1.10.2.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/jquery-1.10.2.min.map delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/jquery.validate-vsdoc.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/jquery.validate.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/jquery.validate.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/jquery.validate.unobtrusive.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/jquery.validate.unobtrusive.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/layout.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/modernizr-2.6.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/node.cmd delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/package.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/respond.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/respond.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/setup_web.cmd delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/style.styl delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/typings.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/user.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/AddWebSiteStarterExpressApp.njsproj delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/AddWebSiteStarterExpressApp.vstemplate.base delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/Preview.png delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/README.md delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/_references.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/about.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/app.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/bootstrap.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/bootstrap.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/bootstrap.min.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/bootstrap.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/contact.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/glyphicons-halflings-regular.eot delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/glyphicons-halflings-regular.svg delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/glyphicons-halflings-regular.ttf delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/glyphicons-halflings-regular.woff delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/index.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/index.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/jquery-1.10.2.intellisense.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/jquery-1.10.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/jquery-1.10.2.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/jquery-1.10.2.min.map delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/jquery.validate-vsdoc.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/jquery.validate.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/jquery.validate.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/jquery.validate.unobtrusive.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/jquery.validate.unobtrusive.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/layout.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/modernizr-2.6.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/package.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/respond.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/respond.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/style.styl delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/typings.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteStarterExpressApp/user.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/AzureStarterExpressApp.njsproj delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/AzureStarterExpressApp.vstemplate delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/ChangeConfig.ps1 delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/Preview.png delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/README.md delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/Web.Debug.config delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/Web.config delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/_references.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/about.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/app.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/bootstrap.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/bootstrap.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/bootstrap.min.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/bootstrap.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/contact.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/download.ps1 delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/glyphicons-halflings-regular.eot delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/glyphicons-halflings-regular.svg delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/glyphicons-halflings-regular.ttf delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/glyphicons-halflings-regular.woff delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/index.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/index.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/jquery-1.10.2.intellisense.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/jquery-1.10.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/jquery-1.10.2.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/jquery-1.10.2.min.map delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/jquery.validate-vsdoc.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/jquery.validate.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/jquery.validate.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/jquery.validate.unobtrusive.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/jquery.validate.unobtrusive.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/layout.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/modernizr-2.6.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/node.cmd delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/package.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/respond.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/respond.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/setup_web.cmd delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/style.styl delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/typings.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/AzureStarterExpressApp/user.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/Preview.png delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/README.md delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/StarterExpressApp.njsproj delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/StarterExpressApp.vstemplate delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/_references.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/about.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/app.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/bootstrap.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/bootstrap.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/bootstrap.min.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/bootstrap.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/contact.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/glyphicons-halflings-regular.eot delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/glyphicons-halflings-regular.svg delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/glyphicons-halflings-regular.ttf delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/glyphicons-halflings-regular.woff delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/index.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/index.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/jquery-1.10.2.intellisense.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/jquery-1.10.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/jquery-1.10.2.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/jquery-1.10.2.min.map delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/jquery.validate-vsdoc.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/jquery.validate.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/jquery.validate.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/jquery.validate.unobtrusive.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/jquery.validate.unobtrusive.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/layout.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/modernizr-2.6.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/package.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/respond.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/respond.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/style.styl delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/typings.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/StarterExpressApp/user.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/ChangeConfig.ps1 delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/Preview.png delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/README.md delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/TypeScriptAzureStarterExpressApp.njsproj delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/TypeScriptAzureStarterExpressApp.vstemplate delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/Web.Debug.config delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/Web.config delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/_references.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/about.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/app.ts delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/bootstrap.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/bootstrap.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/bootstrap.min.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/bootstrap.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/contact.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/download.ps1 delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/express.d.ts delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/glyphicons-halflings-regular.eot delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/glyphicons-halflings-regular.svg delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/glyphicons-halflings-regular.ttf delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/glyphicons-halflings-regular.woff delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/index.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/index.ts delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/jquery-1.10.2.intellisense.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/jquery-1.10.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/jquery-1.10.2.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/jquery-1.10.2.min.map delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/jquery.validate-vsdoc.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/jquery.validate.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/jquery.validate.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/jquery.validate.unobtrusive.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/jquery.validate.unobtrusive.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/layout.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/modernizr-2.6.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/node.cmd delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/package.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/respond.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/respond.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/setup_web.cmd delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/style.styl delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/stylus.d.ts delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptAzureStarterExpressApp/user.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/Preview.png delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/README.md delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/TypeScriptStarterExpressApp.njsproj delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/TypeScriptStarterExpressApp.vstemplate delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/_references.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/about.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/app.ts delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/bootstrap.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/bootstrap.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/bootstrap.min.css delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/bootstrap.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/contact.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/express.d.ts delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/glyphicons-halflings-regular.eot delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/glyphicons-halflings-regular.svg delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/glyphicons-halflings-regular.ttf delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/glyphicons-halflings-regular.woff delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/index.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/index.ts delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/jquery-1.10.2.intellisense.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/jquery-1.10.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/jquery-1.10.2.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/jquery-1.10.2.min.map delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/jquery.validate-vsdoc.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/jquery.validate.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/jquery.validate.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/jquery.validate.unobtrusive.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/jquery.validate.unobtrusive.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/layout.jade delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/modernizr-2.6.2.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/package.json delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/respond.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/respond.min.js delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/style.styl delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/stylus.d.ts delete mode 100644 Nodejs/Product/Nodejs/ProjectTemplates/TypeScriptStarterExpressApp/user.js diff --git a/Nodejs/Product/Nodejs/Nodejs.csproj b/Nodejs/Product/Nodejs/Nodejs.csproj index 19c0470ad..2d4d8455f 100644 --- a/Nodejs/Product/Nodejs/Nodejs.csproj +++ b/Nodejs/Product/Nodejs/Nodejs.csproj @@ -935,11 +935,7 @@ - - - - @@ -975,171 +971,6 @@ Resources\Icons\TSProject_SolutionExplorerNode.png Microsoft.VisualStudioTools.Resources.Icons.TSProject_SolutionExplorerNode.png - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - Designer - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - Designer - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - Designer - - - - - - - - - - - - - - - - - - - - - - Designer - - - Designer - - - - Designer - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - - - - - - - - - - - - - - - @@ -1185,10 +1016,10 @@ - + Designer - + Designer @@ -1199,40 +1030,6 @@ Designer - - Designer - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - - - - - Designer @@ -1417,18 +1214,18 @@ true PreserveNewest - + Designer - - - - - - - - - + + + + + + + + + Designer @@ -1453,56 +1250,11 @@ Designer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer @@ -1621,19 +1373,13 @@ - + - - - - - - @@ -1645,7 +1391,9 @@ - + + + - - - - - - - False - True - 0 - / - http://localhost:48022/ - False - True - http://localhost:1337 - False - - - - - - - CurrentPage - True - False - False - False - - - - - - - - - False - False - - - - - \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/AddWebSiteAzureStarterExpressApp.vstemplate.base b/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/AddWebSiteAzureStarterExpressApp.vstemplate.base deleted file mode 100644 index 4477acb9e..000000000 --- a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/AddWebSiteAzureStarterExpressApp.vstemplate.base +++ /dev/null @@ -1,85 +0,0 @@ - - - Starter Azure Node.js Express 3 Application - A project for creating an application for Microsoft Azure using the Express 3 web framework with the Jade template engine. It features sample pages that use the Twitter Bootstrap framework for responsive web design. - - Web - JavaScript - Microsoft.JavaScript.AddWebSiteAzureStarterExpressApp - 146 - true - ExpressApp - true - 1 - true - Preview.png - - - - - - glyphicons-halflings-regular.eot - glyphicons-halflings-regular.svg - glyphicons-halflings-regular.ttf - glyphicons-halflings-regular.woff - - - - _references.js - bootstrap.js - bootstrap.min.js - jquery.validate.js - jquery.validate.min.js - jquery.validate.unobtrusive.js - jquery.validate.unobtrusive.min.js - jquery.validate-vsdoc.js - jquery-1.10.2.intellisense.js - jquery-1.10.2.js - jquery-1.10.2.min.js - jquery-1.10.2.min.map - modernizr-2.6.2.js - respond.js - respond.min.js - - - style.styl - bootstrap.css - bootstrap.min.css - - - - index.js - - - about.jade - contact.jade - index.jade - layout.jade - - app.js - package.json - typings.json - README.md - Web.config - Web.Debug.config - - ChangeConfig.ps1 - download.ps1 - setup_web.cmd - node.cmd - - - - - Microsoft.VisualStudio.Web, Version=_VSVERSION_.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - Microsoft.VisualStudio.Web.Wizard.EmptyWebTemplateWizard - - - Microsoft.NodejsTools.ProjectWizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - Microsoft.NodejsTools.ProjectWizard.NpmWizardExtension - - - Microsoft.NodejsTools.ProjectWizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - Microsoft.NodejsTools.ProjectWizard.NodejsPackageParametersExtension - - diff --git a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/ChangeConfig.ps1 b/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/ChangeConfig.ps1 deleted file mode 100644 index 044634574..000000000 --- a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/ChangeConfig.ps1 +++ /dev/null @@ -1,15 +0,0 @@ -$configFile = $args[0] - -Write-Host "Adding iisnode section to config file '$configFile'" -$config = New-Object System.Xml.XmlDocument -$config.load($configFile) -$xpath = $config.CreateNavigator() -$parentElement = $xpath.SelectSingleNode("//configuration/configSections/sectionGroup[@name='system.webServer']") -$iisnodeElement = $parentElement.SelectSingleNode("//section[@name='iisnode']") -if ($iisnodeElement) { - Write-Host "Removing existing iisnode section from config file '$configFile'" - $iisnodeElement.DeleteSelf() -} - -$parentElement.AppendChild("
") -$config.Save($configFile) diff --git a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/Preview.png b/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/Preview.png deleted file mode 100644 index ce3ea9d04e20f21e59220b0c4fbecdf0a0e3fef6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22136 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.P`?zdD>s*A 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/Web.config b/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/Web.config deleted file mode 100644 index f21f2b423..000000000 --- a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/Web.config +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/_references.js b/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/_references.js deleted file mode 100644 index 84ede03cc..000000000 --- a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/_references.js +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// -/// -/// -/// \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/about.jade b/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/about.jade deleted file mode 100644 index e288a6dad..000000000 --- a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/about.jade +++ /dev/null @@ -1,6 +0,0 @@ -extends layout - -block content - h2 #{title} - h3 #{message} - p Use this area to provide additional information. diff --git a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/app.js b/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/app.js deleted file mode 100644 index fcdb0d6fb..000000000 --- a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/app.js +++ /dev/null @@ -1,37 +0,0 @@ - -/** - * Module dependencies. - */ - -var express = require('express'); -var routes = require('./routes'); -var http = require('http'); -var path = require('path'); - -var app = express(); - -// all environments -app.set('port', process.env.PORT || 3000); -app.set('views', path.join(__dirname, 'views')); -app.set('view engine', 'jade'); -app.use(express.favicon()); -app.use(express.logger('dev')); -app.use(express.json()); -app.use(express.urlencoded()); -app.use(express.methodOverride()); -app.use(app.router); -app.use(require('stylus').middleware(path.join(__dirname, 'public'))); -app.use(express.static(path.join(__dirname, 'public'))); - -// development only -if ('development' == app.get('env')) { - app.use(express.errorHandler()); -} - -app.get('/', routes.index); -app.get('/about', routes.about); -app.get('/contact', routes.contact); - -http.createServer(app).listen(app.get('port'), function () { - console.log('Express server listening on port ' + app.get('port')); -}); diff --git a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.css b/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.css deleted file mode 100644 index 6d6e68281..000000000 --- a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.css +++ /dev/null @@ -1,6816 +0,0 @@ -/* NUGET: BEGIN LICENSE TEXT - * - * Microsoft grants you the right to use these script files for the sole - * purpose of either: (i) interacting through your browser with the Microsoft - * website or online service, subject to the applicable licensing or use - * terms; or (ii) using the files as included with a Microsoft product subject - * to that product's license terms. Microsoft reserves all other rights to the - * files not expressly granted by Microsoft, whether by implication, estoppel - * or otherwise. The notices and licenses below are for informational purposes only. - * - * NUGET: END LICENSE TEXT */ -/*! - * Bootstrap v3.0.0 - * - * Copyright 2013 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world by @mdo and @fat. - */ - -/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} - -audio, -canvas, -video { - display: inline-block; -} - -audio:not([controls]) { - display: none; - height: 0; -} - -[hidden] { - display: none; -} - -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -body { - margin: 0; -} - -a:focus { - outline: thin dotted; -} - -a:active, -a:hover { - outline: 0; -} - -h1 { - margin: 0.67em 0; - font-size: 2em; -} - -abbr[title] { - border-bottom: 1px dotted; -} - -b, -strong { - font-weight: bold; -} - -dfn { - font-style: italic; -} - -hr { - height: 0; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -mark { - color: #000; - background: #ff0; -} - -code, -kbd, -pre, -samp { - font-family: monospace, serif; - font-size: 1em; -} - -pre { - white-space: pre-wrap; -} - -q { - quotes: "\201C" "\201D" "\2018" "\2019"; -} - -small { - font-size: 80%; -} - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -img { - border: 0; -} - -svg:not(:root) { - overflow: hidden; -} - -figure { - margin: 0; -} - -fieldset { - padding: 0.35em 0.625em 0.75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} - -legend { - padding: 0; - border: 0; -} - -button, -input, -select, -textarea { - margin: 0; - font-family: inherit; - font-size: 100%; -} - -button, -input { - line-height: normal; -} - -button, -select { - text-transform: none; -} - -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - cursor: pointer; - -webkit-appearance: button; -} - -button[disabled], -html input[disabled] { - cursor: default; -} - -input[type="checkbox"], -input[type="radio"] { - padding: 0; - box-sizing: border-box; -} - -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} - -textarea { - overflow: auto; - vertical-align: top; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -@media print { - * { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - @page { - margin: 2cm .5cm; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .table td, - .table th { - background-color: #fff !important; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} - -*, -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -html { - font-size: 62.5%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.428571429; - color: #333333; - background-color: #ffffff; -} - -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -button, -input, -select[multiple], -textarea { - background-image: none; -} - -a { - color: #428bca; - text-decoration: none; -} - -a:hover, -a:focus { - color: #2a6496; - text-decoration: underline; -} - -a:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -img { - vertical-align: middle; -} - -.img-responsive { - display: block; - height: auto; - max-width: 100%; -} - -.img-rounded { - border-radius: 6px; -} - -.img-thumbnail { - display: inline-block; - height: auto; - max-width: 100%; - padding: 4px; - line-height: 1.428571429; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} - -.img-circle { - border-radius: 50%; -} - -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eeeeee; -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0 0 0 0); - border: 0; -} - -p { - margin: 0 0 10px; -} - -.lead { - margin-bottom: 20px; - font-size: 16.099999999999998px; - font-weight: 200; - line-height: 1.4; -} - -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} - -small { - font-size: 85%; -} - -cite { - font-style: normal; -} - -.text-muted { - color: #999999; -} - -.text-primary { - color: #428bca; -} - -.text-warning { - color: #c09853; -} - -.text-danger { - color: #b94a48; -} - -.text-success { - color: #468847; -} - -.text-info { - color: #3a87ad; -} - -.text-left { - text-align: left; -} - -.text-right { - text-align: right; -} - -.text-center { - text-align: center; -} - -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 500; - line-height: 1.1; -} - -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small { - font-weight: normal; - line-height: 1; - color: #999999; -} - -h1, -h2, -h3 { - margin-top: 20px; - margin-bottom: 10px; -} - -h4, -h5, -h6 { - margin-top: 10px; - margin-bottom: 10px; -} - -h1, -.h1 { - font-size: 36px; -} - -h2, -.h2 { - font-size: 30px; -} - -h3, -.h3 { - font-size: 24px; -} - -h4, -.h4 { - font-size: 18px; -} - -h5, -.h5 { - font-size: 14px; -} - -h6, -.h6 { - font-size: 12px; -} - -h1 small, -.h1 small { - font-size: 24px; -} - -h2 small, -.h2 small { - font-size: 18px; -} - -h3 small, -.h3 small, -h4 small, -.h4 small { - font-size: 14px; -} - -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eeeeee; -} - -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} - -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} - -.list-unstyled { - padding-left: 0; - list-style: none; -} - -.list-inline { - padding-left: 0; - list-style: none; -} - -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} - -dl { - margin-bottom: 20px; -} - -dt, -dd { - line-height: 1.428571429; -} - -dt { - font-weight: bold; -} - -dd { - margin-left: 0; -} - -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } - .dl-horizontal dd:before, - .dl-horizontal dd:after { - display: table; - content: " "; - } - .dl-horizontal dd:after { - clear: both; - } - .dl-horizontal dd:before, - .dl-horizontal dd:after { - display: table; - content: " "; - } - .dl-horizontal dd:after { - clear: both; - } -} - -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999999; -} - -abbr.initialism { - font-size: 90%; - text-transform: uppercase; -} - -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - border-left: 5px solid #eeeeee; -} - -blockquote p { - font-size: 17.5px; - font-weight: 300; - line-height: 1.25; -} - -blockquote p:last-child { - margin-bottom: 0; -} - -blockquote small { - display: block; - line-height: 1.428571429; - color: #999999; -} - -blockquote small:before { - content: '\2014 \00A0'; -} - -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; -} - -blockquote.pull-right p, -blockquote.pull-right small { - text-align: right; -} - -blockquote.pull-right small:before { - content: ''; -} - -blockquote.pull-right small:after { - content: '\00A0 \2014'; -} - -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} - -address { - display: block; - margin-bottom: 20px; - font-style: normal; - line-height: 1.428571429; -} - -code, -pre { - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; -} - -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - white-space: nowrap; - background-color: #f9f2f4; - border-radius: 4px; -} - -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.428571429; - color: #333333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #cccccc; - border-radius: 4px; -} - -pre.prettyprint { - margin-bottom: 20px; -} - -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border: 0; -} - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} - -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} - -.container:before, -.container:after { - display: table; - content: " "; -} - -.container:after { - clear: both; -} - -.container:before, -.container:after { - display: table; - content: " "; -} - -.container:after { - clear: both; -} - -.row { - margin-right: -15px; - margin-left: -15px; -} - -.row:before, -.row:after { - display: table; - content: " "; -} - -.row:after { - clear: both; -} - -.row:before, -.row:after { - display: table; - content: " "; -} - -.row:after { - clear: both; -} - -.col-xs-1, -.col-xs-2, -.col-xs-3, -.col-xs-4, -.col-xs-5, -.col-xs-6, -.col-xs-7, -.col-xs-8, -.col-xs-9, -.col-xs-10, -.col-xs-11, -.col-xs-12, -.col-sm-1, -.col-sm-2, -.col-sm-3, -.col-sm-4, -.col-sm-5, -.col-sm-6, -.col-sm-7, -.col-sm-8, -.col-sm-9, -.col-sm-10, -.col-sm-11, -.col-sm-12, -.col-md-1, -.col-md-2, -.col-md-3, -.col-md-4, -.col-md-5, -.col-md-6, -.col-md-7, -.col-md-8, -.col-md-9, -.col-md-10, -.col-md-11, -.col-md-12, -.col-lg-1, -.col-lg-2, -.col-lg-3, -.col-lg-4, -.col-lg-5, -.col-lg-6, -.col-lg-7, -.col-lg-8, -.col-lg-9, -.col-lg-10, -.col-lg-11, -.col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} - -.col-xs-1, -.col-xs-2, -.col-xs-3, -.col-xs-4, -.col-xs-5, -.col-xs-6, -.col-xs-7, -.col-xs-8, -.col-xs-9, -.col-xs-10, -.col-xs-11 { - float: left; -} - -.col-xs-1 { - width: 8.333333333333332%; -} - -.col-xs-2 { - width: 16.666666666666664%; -} - -.col-xs-3 { - width: 25%; -} - -.col-xs-4 { - width: 33.33333333333333%; -} - -.col-xs-5 { - width: 41.66666666666667%; -} - -.col-xs-6 { - width: 50%; -} - -.col-xs-7 { - width: 58.333333333333336%; -} - -.col-xs-8 { - width: 66.66666666666666%; -} - -.col-xs-9 { - width: 75%; -} - -.col-xs-10 { - width: 83.33333333333334%; -} - -.col-xs-11 { - width: 91.66666666666666%; -} - -.col-xs-12 { - width: 100%; -} - -@media (min-width: 768px) { - .container { - max-width: 750px; - } - .col-sm-1, - .col-sm-2, - .col-sm-3, - .col-sm-4, - .col-sm-5, - .col-sm-6, - .col-sm-7, - .col-sm-8, - .col-sm-9, - .col-sm-10, - .col-sm-11 { - float: left; - } - .col-sm-1 { - width: 8.333333333333332%; - } - .col-sm-2 { - width: 16.666666666666664%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-4 { - width: 33.33333333333333%; - } - .col-sm-5 { - width: 41.66666666666667%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-7 { - width: 58.333333333333336%; - } - .col-sm-8 { - width: 66.66666666666666%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-10 { - width: 83.33333333333334%; - } - .col-sm-11 { - width: 91.66666666666666%; - } - .col-sm-12 { - width: 100%; - } - .col-sm-push-1 { - left: 8.333333333333332%; - } - .col-sm-push-2 { - left: 16.666666666666664%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-4 { - left: 33.33333333333333%; - } - .col-sm-push-5 { - left: 41.66666666666667%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-7 { - left: 58.333333333333336%; - } - .col-sm-push-8 { - left: 66.66666666666666%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-10 { - left: 83.33333333333334%; - } - .col-sm-push-11 { - left: 91.66666666666666%; - } - .col-sm-pull-1 { - right: 8.333333333333332%; - } - .col-sm-pull-2 { - right: 16.666666666666664%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-4 { - right: 33.33333333333333%; - } - .col-sm-pull-5 { - right: 41.66666666666667%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-7 { - right: 58.333333333333336%; - } - .col-sm-pull-8 { - right: 66.66666666666666%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-10 { - right: 83.33333333333334%; - } - .col-sm-pull-11 { - right: 91.66666666666666%; - } - .col-sm-offset-1 { - margin-left: 8.333333333333332%; - } - .col-sm-offset-2 { - margin-left: 16.666666666666664%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-4 { - margin-left: 33.33333333333333%; - } - .col-sm-offset-5 { - margin-left: 41.66666666666667%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-7 { - margin-left: 58.333333333333336%; - } - .col-sm-offset-8 { - margin-left: 66.66666666666666%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-10 { - margin-left: 83.33333333333334%; - } - .col-sm-offset-11 { - margin-left: 91.66666666666666%; - } -} - -@media (min-width: 992px) { - .container { - max-width: 970px; - } - .col-md-1, - .col-md-2, - .col-md-3, - .col-md-4, - .col-md-5, - .col-md-6, - .col-md-7, - .col-md-8, - .col-md-9, - .col-md-10, - .col-md-11 { - float: left; - } - .col-md-1 { - width: 8.333333333333332%; - } - .col-md-2 { - width: 16.666666666666664%; - } - .col-md-3 { - width: 25%; - } - .col-md-4 { - width: 33.33333333333333%; - } - .col-md-5 { - width: 41.66666666666667%; - } - .col-md-6 { - width: 50%; - } - .col-md-7 { - width: 58.333333333333336%; - } - .col-md-8 { - width: 66.66666666666666%; - } - .col-md-9 { - width: 75%; - } - .col-md-10 { - width: 83.33333333333334%; - } - .col-md-11 { - width: 91.66666666666666%; - } - .col-md-12 { - width: 100%; - } - .col-md-push-0 { - left: auto; - } - .col-md-push-1 { - left: 8.333333333333332%; - } - .col-md-push-2 { - left: 16.666666666666664%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-4 { - left: 33.33333333333333%; - } - .col-md-push-5 { - left: 41.66666666666667%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-7 { - left: 58.333333333333336%; - } - .col-md-push-8 { - left: 66.66666666666666%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-10 { - left: 83.33333333333334%; - } - .col-md-push-11 { - left: 91.66666666666666%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-pull-1 { - right: 8.333333333333332%; - } - .col-md-pull-2 { - right: 16.666666666666664%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-4 { - right: 33.33333333333333%; - } - .col-md-pull-5 { - right: 41.66666666666667%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-7 { - right: 58.333333333333336%; - } - .col-md-pull-8 { - right: 66.66666666666666%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-10 { - right: 83.33333333333334%; - } - .col-md-pull-11 { - right: 91.66666666666666%; - } - .col-md-offset-0 { - margin-left: 0; - } - .col-md-offset-1 { - margin-left: 8.333333333333332%; - } - .col-md-offset-2 { - margin-left: 16.666666666666664%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-4 { - margin-left: 33.33333333333333%; - } - .col-md-offset-5 { - margin-left: 41.66666666666667%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-7 { - margin-left: 58.333333333333336%; - } - .col-md-offset-8 { - margin-left: 66.66666666666666%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-10 { - margin-left: 83.33333333333334%; - } - .col-md-offset-11 { - margin-left: 91.66666666666666%; - } -} - -@media (min-width: 1200px) { - .container { - max-width: 1170px; - } - .col-lg-1, - .col-lg-2, - .col-lg-3, - .col-lg-4, - .col-lg-5, - .col-lg-6, - .col-lg-7, - .col-lg-8, - .col-lg-9, - .col-lg-10, - .col-lg-11 { - float: left; - } - .col-lg-1 { - width: 8.333333333333332%; - } - .col-lg-2 { - width: 16.666666666666664%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-4 { - width: 33.33333333333333%; - } - .col-lg-5 { - width: 41.66666666666667%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-7 { - width: 58.333333333333336%; - } - .col-lg-8 { - width: 66.66666666666666%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-10 { - width: 83.33333333333334%; - } - .col-lg-11 { - width: 91.66666666666666%; - } - .col-lg-12 { - width: 100%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-push-1 { - left: 8.333333333333332%; - } - .col-lg-push-2 { - left: 16.666666666666664%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-4 { - left: 33.33333333333333%; - } - .col-lg-push-5 { - left: 41.66666666666667%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-7 { - left: 58.333333333333336%; - } - .col-lg-push-8 { - left: 66.66666666666666%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-10 { - left: 83.33333333333334%; - } - .col-lg-push-11 { - left: 91.66666666666666%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-pull-1 { - right: 8.333333333333332%; - } - .col-lg-pull-2 { - right: 16.666666666666664%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-4 { - right: 33.33333333333333%; - } - .col-lg-pull-5 { - right: 41.66666666666667%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-7 { - right: 58.333333333333336%; - } - .col-lg-pull-8 { - right: 66.66666666666666%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-10 { - right: 83.33333333333334%; - } - .col-lg-pull-11 { - right: 91.66666666666666%; - } - .col-lg-offset-0 { - margin-left: 0; - } - .col-lg-offset-1 { - margin-left: 8.333333333333332%; - } - .col-lg-offset-2 { - margin-left: 16.666666666666664%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-4 { - margin-left: 33.33333333333333%; - } - .col-lg-offset-5 { - margin-left: 41.66666666666667%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-7 { - margin-left: 58.333333333333336%; - } - .col-lg-offset-8 { - margin-left: 66.66666666666666%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-10 { - margin-left: 83.33333333333334%; - } - .col-lg-offset-11 { - margin-left: 91.66666666666666%; - } -} - -table { - max-width: 100%; - background-color: transparent; -} - -th { - text-align: left; -} - -.table { - width: 100%; - margin-bottom: 20px; -} - -.table thead > tr > th, -.table tbody > tr > th, -.table tfoot > tr > th, -.table thead > tr > td, -.table tbody > tr > td, -.table tfoot > tr > td { - padding: 8px; - line-height: 1.428571429; - vertical-align: top; - border-top: 1px solid #dddddd; -} - -.table thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #dddddd; -} - -.table caption + thead tr:first-child th, -.table colgroup + thead tr:first-child th, -.table thead:first-child tr:first-child th, -.table caption + thead tr:first-child td, -.table colgroup + thead tr:first-child td, -.table thead:first-child tr:first-child td { - border-top: 0; -} - -.table tbody + tbody { - border-top: 2px solid #dddddd; -} - -.table .table { - background-color: #ffffff; -} - -.table-condensed thead > tr > th, -.table-condensed tbody > tr > th, -.table-condensed tfoot > tr > th, -.table-condensed thead > tr > td, -.table-condensed tbody > tr > td, -.table-condensed tfoot > tr > td { - padding: 5px; -} - -.table-bordered { - border: 1px solid #dddddd; -} - -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #dddddd; -} - -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} - -.table-striped > tbody > tr:nth-child(odd) > td, -.table-striped > tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} - -.table-hover > tbody > tr:hover > td, -.table-hover > tbody > tr:hover > th { - background-color: #f5f5f5; -} - -table col[class*="col-"] { - display: table-column; - float: none; -} - -table td[class*="col-"], -table th[class*="col-"] { - display: table-cell; - float: none; -} - -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} - -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; - border-color: #d6e9c6; -} - -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td { - background-color: #d0e9c6; - border-color: #c9e2b3; -} - -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; - border-color: #eed3d7; -} - -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td { - background-color: #ebcccc; - border-color: #e6c1c7; -} - -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; - border-color: #fbeed5; -} - -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td { - background-color: #faf2cc; - border-color: #f8e5be; -} - -@media (max-width: 768px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-x: scroll; - overflow-y: hidden; - border: 1px solid #dddddd; - } - .table-responsive > .table { - margin-bottom: 0; - background-color: #fff; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > thead > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > thead > tr:last-child > td, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} - -fieldset { - padding: 0; - margin: 0; - border: 0; -} - -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} - -label { - display: inline-block; - margin-bottom: 5px; - font-weight: bold; -} - -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - /* IE8-9 */ - - line-height: normal; -} - -input[type="file"] { - display: block; -} - -select[multiple], -select[size] { - height: auto; -} - -select optgroup { - font-family: inherit; - font-size: inherit; - font-style: inherit; -} - -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -input[type="number"]::-webkit-outer-spin-button, -input[type="number"]::-webkit-inner-spin-button { - height: auto; -} - -.form-control:-moz-placeholder { - color: #999999; -} - -.form-control::-moz-placeholder { - color: #999999; -} - -.form-control:-ms-input-placeholder { - color: #999999; -} - -.form-control::-webkit-input-placeholder { - color: #999999; -} - -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.428571429; - color: #555555; - vertical-align: middle; - background-color: #ffffff; - border: 1px solid #cccccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; - transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; -} - -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); -} - -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - cursor: not-allowed; - background-color: #eeeeee; -} - -textarea.form-control { - height: auto; -} - -.form-group { - margin-bottom: 15px; -} - -.radio, -.checkbox { - display: block; - min-height: 20px; - padding-left: 20px; - margin-top: 10px; - margin-bottom: 10px; - vertical-align: middle; -} - -.radio label, -.checkbox label { - display: inline; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} - -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - float: left; - margin-left: -20px; -} - -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} - -.radio-inline, -.checkbox-inline { - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} - -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} - -input[type="radio"][disabled], -input[type="checkbox"][disabled], -.radio[disabled], -.radio-inline[disabled], -.checkbox[disabled], -.checkbox-inline[disabled], -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"], -fieldset[disabled] .radio, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} - -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} - -select.input-sm { - height: 30px; - line-height: 30px; -} - -textarea.input-sm { - height: auto; -} - -.input-lg { - height: 45px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} - -select.input-lg { - height: 45px; - line-height: 45px; -} - -textarea.input-lg { - height: auto; -} - -.has-warning .help-block, -.has-warning .control-label { - color: #c09853; -} - -.has-warning .form-control { - border-color: #c09853; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.has-warning .form-control:focus { - border-color: #a47e3c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -} - -.has-warning .input-group-addon { - color: #c09853; - background-color: #fcf8e3; - border-color: #c09853; -} - -.has-error .help-block, -.has-error .control-label { - color: #b94a48; -} - -.has-error .form-control { - border-color: #b94a48; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.has-error .form-control:focus { - border-color: #953b39; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; -} - -.has-error .input-group-addon { - color: #b94a48; - background-color: #f2dede; - border-color: #b94a48; -} - -.has-success .help-block, -.has-success .control-label { - color: #468847; -} - -.has-success .form-control { - border-color: #468847; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} - -.has-success .form-control:focus { - border-color: #356635; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -} - -.has-success .input-group-addon { - color: #468847; - background-color: #dff0d8; - border-color: #468847; -} - -.form-control-static { - padding-top: 7px; - margin-bottom: 0; -} - -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} - -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - padding-left: 0; - margin-top: 0; - margin-bottom: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - float: none; - margin-left: 0; - } -} - -.form-horizontal .control-label, -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} - -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} - -.form-horizontal .form-group:before, -.form-horizontal .form-group:after { - display: table; - content: " "; -} - -.form-horizontal .form-group:after { - clear: both; -} - -.form-horizontal .form-group:before, -.form-horizontal .form-group:after { - display: table; - content: " "; -} - -.form-horizontal .form-group:after { - clear: both; -} - -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - } -} - -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.428571429; - text-align: center; - white-space: nowrap; - vertical-align: middle; - cursor: pointer; - border: 1px solid transparent; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; -} - -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -.btn:hover, -.btn:focus { - color: #333333; - text-decoration: none; -} - -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - pointer-events: none; - cursor: not-allowed; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} - -.btn-default { - color: #333333; - background-color: #ffffff; - border-color: #cccccc; -} - -.btn-default:hover, -.btn-default:focus, -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - color: #333333; - background-color: #ebebeb; - border-color: #adadad; -} - -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - background-image: none; -} - -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #ffffff; - border-color: #cccccc; -} - -.btn-primary { - color: #ffffff; - background-color: #428bca; - border-color: #357ebd; -} - -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; -} - -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - background-image: none; -} - -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #428bca; - border-color: #357ebd; -} - -.btn-warning { - color: #ffffff; - background-color: #f0ad4e; - border-color: #eea236; -} - -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #ed9c28; - border-color: #d58512; -} - -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - background-image: none; -} - -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} - -.btn-danger { - color: #ffffff; - background-color: #d9534f; - border-color: #d43f3a; -} - -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #d2322d; - border-color: #ac2925; -} - -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - background-image: none; -} - -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} - -.btn-success { - color: #ffffff; - background-color: #5cb85c; - border-color: #4cae4c; -} - -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #47a447; - border-color: #398439; -} - -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - background-image: none; -} - -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} - -.btn-info { - color: #ffffff; - background-color: #5bc0de; - border-color: #46b8da; -} - -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #39b3d7; - border-color: #269abc; -} - -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - background-image: none; -} - -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} - -.btn-link { - font-weight: normal; - color: #428bca; - cursor: pointer; - border-radius: 0; -} - -.btn-link, -.btn-link:active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} - -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} - -.btn-link:hover, -.btn-link:focus { - color: #2a6496; - text-decoration: underline; - background-color: transparent; -} - -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #999999; - text-decoration: none; -} - -.btn-lg { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} - -.btn-sm, -.btn-xs { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} - -.btn-xs { - padding: 1px 5px; -} - -.btn-block { - display: block; - width: 100%; - padding-right: 0; - padding-left: 0; -} - -.btn-block + .btn-block { - margin-top: 5px; -} - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} - -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} - -.fade.in { - opacity: 1; -} - -.collapse { - display: none; -} - -.collapse.in { - display: block; -} - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height 0.35s ease; - transition: height 0.35s ease; -} - -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg'); -} - -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - -webkit-font-smoothing: antialiased; - font-style: normal; - font-weight: normal; - line-height: 1; -} - -.glyphicon-asterisk:before { - content: "\2a"; -} - -.glyphicon-plus:before { - content: "\2b"; -} - -.glyphicon-euro:before { - content: "\20ac"; -} - -.glyphicon-minus:before { - content: "\2212"; -} - -.glyphicon-cloud:before { - content: "\2601"; -} - -.glyphicon-envelope:before { - content: "\2709"; -} - -.glyphicon-pencil:before { - content: "\270f"; -} - -.glyphicon-glass:before { - content: "\e001"; -} - -.glyphicon-music:before { - content: "\e002"; -} - -.glyphicon-search:before { - content: "\e003"; -} - -.glyphicon-heart:before { - content: "\e005"; -} - -.glyphicon-star:before { - content: "\e006"; -} - -.glyphicon-star-empty:before { - content: "\e007"; -} - -.glyphicon-user:before { - content: "\e008"; -} - -.glyphicon-film:before { - content: "\e009"; -} - -.glyphicon-th-large:before { - content: "\e010"; -} - -.glyphicon-th:before { - content: "\e011"; -} - -.glyphicon-th-list:before { - content: "\e012"; -} - -.glyphicon-ok:before { - content: "\e013"; -} - -.glyphicon-remove:before { - content: "\e014"; -} - -.glyphicon-zoom-in:before { - content: "\e015"; -} - -.glyphicon-zoom-out:before { - content: "\e016"; -} - -.glyphicon-off:before { - content: "\e017"; -} - -.glyphicon-signal:before { - content: "\e018"; -} - -.glyphicon-cog:before { - content: "\e019"; -} - -.glyphicon-trash:before { - content: "\e020"; -} - -.glyphicon-home:before { - content: "\e021"; -} - -.glyphicon-file:before { - content: "\e022"; -} - -.glyphicon-time:before { - content: "\e023"; -} - -.glyphicon-road:before { - content: "\e024"; -} - -.glyphicon-download-alt:before { - content: "\e025"; -} - -.glyphicon-download:before { - content: "\e026"; -} - -.glyphicon-upload:before { - content: "\e027"; -} - -.glyphicon-inbox:before { - content: "\e028"; -} - -.glyphicon-play-circle:before { - content: "\e029"; -} - -.glyphicon-repeat:before { - content: "\e030"; -} - -.glyphicon-refresh:before { - content: "\e031"; -} - -.glyphicon-list-alt:before { - content: "\e032"; -} - -.glyphicon-flag:before { - content: "\e034"; -} - -.glyphicon-headphones:before { - content: "\e035"; -} - -.glyphicon-volume-off:before { - content: "\e036"; -} - -.glyphicon-volume-down:before { - content: "\e037"; -} - -.glyphicon-volume-up:before { - content: "\e038"; -} - -.glyphicon-qrcode:before { - content: "\e039"; -} - -.glyphicon-barcode:before { - content: "\e040"; -} - -.glyphicon-tag:before { - content: "\e041"; -} - -.glyphicon-tags:before { - content: "\e042"; -} - -.glyphicon-book:before { - content: "\e043"; -} - -.glyphicon-print:before { - content: "\e045"; -} - -.glyphicon-font:before { - content: "\e047"; -} - -.glyphicon-bold:before { - content: "\e048"; -} - -.glyphicon-italic:before { - content: "\e049"; -} - -.glyphicon-text-height:before { - content: "\e050"; -} - -.glyphicon-text-width:before { - content: "\e051"; -} - -.glyphicon-align-left:before { - content: "\e052"; -} - -.glyphicon-align-center:before { - content: "\e053"; -} - -.glyphicon-align-right:before { - content: "\e054"; -} - -.glyphicon-align-justify:before { - content: "\e055"; -} - -.glyphicon-list:before { - content: "\e056"; -} - -.glyphicon-indent-left:before { - content: "\e057"; -} - -.glyphicon-indent-right:before { - content: "\e058"; -} - -.glyphicon-facetime-video:before { - content: "\e059"; -} - -.glyphicon-picture:before { - content: "\e060"; -} - -.glyphicon-map-marker:before { - content: "\e062"; -} - -.glyphicon-adjust:before { - content: "\e063"; -} - -.glyphicon-tint:before { - content: "\e064"; -} - -.glyphicon-edit:before { - content: "\e065"; -} - -.glyphicon-share:before { - content: "\e066"; -} - -.glyphicon-check:before { - content: "\e067"; -} - -.glyphicon-move:before { - content: "\e068"; -} - -.glyphicon-step-backward:before { - content: "\e069"; -} - -.glyphicon-fast-backward:before { - content: "\e070"; -} - -.glyphicon-backward:before { - content: "\e071"; -} - -.glyphicon-play:before { - content: "\e072"; -} - -.glyphicon-pause:before { - content: "\e073"; -} - -.glyphicon-stop:before { - content: "\e074"; -} - -.glyphicon-forward:before { - content: "\e075"; -} - -.glyphicon-fast-forward:before { - content: "\e076"; -} - -.glyphicon-step-forward:before { - content: "\e077"; -} - -.glyphicon-eject:before { - content: "\e078"; -} - -.glyphicon-chevron-left:before { - content: "\e079"; -} - -.glyphicon-chevron-right:before { - content: "\e080"; -} - -.glyphicon-plus-sign:before { - content: "\e081"; -} - -.glyphicon-minus-sign:before { - content: "\e082"; -} - -.glyphicon-remove-sign:before { - content: "\e083"; -} - -.glyphicon-ok-sign:before { - content: "\e084"; -} - -.glyphicon-question-sign:before { - content: "\e085"; -} - -.glyphicon-info-sign:before { - content: "\e086"; -} - -.glyphicon-screenshot:before { - content: "\e087"; -} - -.glyphicon-remove-circle:before { - content: "\e088"; -} - -.glyphicon-ok-circle:before { - content: "\e089"; -} - -.glyphicon-ban-circle:before { - content: "\e090"; -} - -.glyphicon-arrow-left:before { - content: "\e091"; -} - -.glyphicon-arrow-right:before { - content: "\e092"; -} - -.glyphicon-arrow-up:before { - content: "\e093"; -} - -.glyphicon-arrow-down:before { - content: "\e094"; -} - -.glyphicon-share-alt:before { - content: "\e095"; -} - -.glyphicon-resize-full:before { - content: "\e096"; -} - -.glyphicon-resize-small:before { - content: "\e097"; -} - -.glyphicon-exclamation-sign:before { - content: "\e101"; -} - -.glyphicon-gift:before { - content: "\e102"; -} - -.glyphicon-leaf:before { - content: "\e103"; -} - -.glyphicon-eye-open:before { - content: "\e105"; -} - -.glyphicon-eye-close:before { - content: "\e106"; -} - -.glyphicon-warning-sign:before { - content: "\e107"; -} - -.glyphicon-plane:before { - content: "\e108"; -} - -.glyphicon-random:before { - content: "\e110"; -} - -.glyphicon-comment:before { - content: "\e111"; -} - -.glyphicon-magnet:before { - content: "\e112"; -} - -.glyphicon-chevron-up:before { - content: "\e113"; -} - -.glyphicon-chevron-down:before { - content: "\e114"; -} - -.glyphicon-retweet:before { - content: "\e115"; -} - -.glyphicon-shopping-cart:before { - content: "\e116"; -} - -.glyphicon-folder-close:before { - content: "\e117"; -} - -.glyphicon-folder-open:before { - content: "\e118"; -} - -.glyphicon-resize-vertical:before { - content: "\e119"; -} - -.glyphicon-resize-horizontal:before { - content: "\e120"; -} - -.glyphicon-hdd:before { - content: "\e121"; -} - -.glyphicon-bullhorn:before { - content: "\e122"; -} - -.glyphicon-certificate:before { - content: "\e124"; -} - -.glyphicon-thumbs-up:before { - content: "\e125"; -} - -.glyphicon-thumbs-down:before { - content: "\e126"; -} - -.glyphicon-hand-right:before { - content: "\e127"; -} - -.glyphicon-hand-left:before { - content: "\e128"; -} - -.glyphicon-hand-up:before { - content: "\e129"; -} - -.glyphicon-hand-down:before { - content: "\e130"; -} - -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} - -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} - -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} - -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} - -.glyphicon-globe:before { - content: "\e135"; -} - -.glyphicon-tasks:before { - content: "\e137"; -} - -.glyphicon-filter:before { - content: "\e138"; -} - -.glyphicon-fullscreen:before { - content: "\e140"; -} - -.glyphicon-dashboard:before { - content: "\e141"; -} - -.glyphicon-heart-empty:before { - content: "\e143"; -} - -.glyphicon-link:before { - content: "\e144"; -} - -.glyphicon-phone:before { - content: "\e145"; -} - -.glyphicon-usd:before { - content: "\e148"; -} - -.glyphicon-gbp:before { - content: "\e149"; -} - -.glyphicon-sort:before { - content: "\e150"; -} - -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} - -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} - -.glyphicon-sort-by-order:before { - content: "\e153"; -} - -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} - -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} - -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} - -.glyphicon-unchecked:before { - content: "\e157"; -} - -.glyphicon-expand:before { - content: "\e158"; -} - -.glyphicon-collapse-down:before { - content: "\e159"; -} - -.glyphicon-collapse-up:before { - content: "\e160"; -} - -.glyphicon-log-in:before { - content: "\e161"; -} - -.glyphicon-flash:before { - content: "\e162"; -} - -.glyphicon-log-out:before { - content: "\e163"; -} - -.glyphicon-new-window:before { - content: "\e164"; -} - -.glyphicon-record:before { - content: "\e165"; -} - -.glyphicon-save:before { - content: "\e166"; -} - -.glyphicon-open:before { - content: "\e167"; -} - -.glyphicon-saved:before { - content: "\e168"; -} - -.glyphicon-import:before { - content: "\e169"; -} - -.glyphicon-export:before { - content: "\e170"; -} - -.glyphicon-send:before { - content: "\e171"; -} - -.glyphicon-floppy-disk:before { - content: "\e172"; -} - -.glyphicon-floppy-saved:before { - content: "\e173"; -} - -.glyphicon-floppy-remove:before { - content: "\e174"; -} - -.glyphicon-floppy-save:before { - content: "\e175"; -} - -.glyphicon-floppy-open:before { - content: "\e176"; -} - -.glyphicon-credit-card:before { - content: "\e177"; -} - -.glyphicon-transfer:before { - content: "\e178"; -} - -.glyphicon-cutlery:before { - content: "\e179"; -} - -.glyphicon-header:before { - content: "\e180"; -} - -.glyphicon-compressed:before { - content: "\e181"; -} - -.glyphicon-earphone:before { - content: "\e182"; -} - -.glyphicon-phone-alt:before { - content: "\e183"; -} - -.glyphicon-tower:before { - content: "\e184"; -} - -.glyphicon-stats:before { - content: "\e185"; -} - -.glyphicon-sd-video:before { - content: "\e186"; -} - -.glyphicon-hd-video:before { - content: "\e187"; -} - -.glyphicon-subtitles:before { - content: "\e188"; -} - -.glyphicon-sound-stereo:before { - content: "\e189"; -} - -.glyphicon-sound-dolby:before { - content: "\e190"; -} - -.glyphicon-sound-5-1:before { - content: "\e191"; -} - -.glyphicon-sound-6-1:before { - content: "\e192"; -} - -.glyphicon-sound-7-1:before { - content: "\e193"; -} - -.glyphicon-copyright-mark:before { - content: "\e194"; -} - -.glyphicon-registration-mark:before { - content: "\e195"; -} - -.glyphicon-cloud-download:before { - content: "\e197"; -} - -.glyphicon-cloud-upload:before { - content: "\e198"; -} - -.glyphicon-tree-conifer:before { - content: "\e199"; -} - -.glyphicon-tree-deciduous:before { - content: "\e200"; -} - -.glyphicon-briefcase:before { - content: "\1f4bc"; -} - -.glyphicon-calendar:before { - content: "\1f4c5"; -} - -.glyphicon-pushpin:before { - content: "\1f4cc"; -} - -.glyphicon-paperclip:before { - content: "\1f4ce"; -} - -.glyphicon-camera:before { - content: "\1f4f7"; -} - -.glyphicon-lock:before { - content: "\1f512"; -} - -.glyphicon-bell:before { - content: "\1f514"; -} - -.glyphicon-bookmark:before { - content: "\1f516"; -} - -.glyphicon-fire:before { - content: "\1f525"; -} - -.glyphicon-wrench:before { - content: "\1f527"; -} - -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px solid #000000; - border-right: 4px solid transparent; - border-bottom: 0 dotted; - border-left: 4px solid transparent; - content: ""; -} - -.dropdown { - position: relative; -} - -.dropdown-toggle:focus { - outline: 0; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - list-style: none; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} - -.dropdown-menu.pull-right { - right: 0; - left: auto; -} - -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} - -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.428571429; - color: #333333; - white-space: nowrap; -} - -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #ffffff; - text-decoration: none; - background-color: #428bca; -} - -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #ffffff; - text-decoration: none; - background-color: #428bca; - outline: 0; -} - -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #999999; -} - -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.open > .dropdown-menu { - display: block; -} - -.open > a { - outline: 0; -} - -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.428571429; - color: #999999; -} - -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} - -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} - -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0 dotted; - border-bottom: 4px solid #000000; - content: ""; -} - -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} - -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } -} - -.btn-default .caret { - border-top-color: #333333; -} - -.btn-primary .caret, -.btn-success .caret, -.btn-warning .caret, -.btn-danger .caret, -.btn-info .caret { - border-top-color: #fff; -} - -.dropup .btn-default .caret { - border-bottom-color: #333333; -} - -.dropup .btn-primary .caret, -.dropup .btn-success .caret, -.dropup .btn-warning .caret, -.dropup .btn-danger .caret, -.dropup .btn-info .caret { - border-bottom-color: #fff; -} - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} - -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} - -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} - -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus { - outline: none; -} - -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} - -.btn-toolbar:before, -.btn-toolbar:after { - display: table; - content: " "; -} - -.btn-toolbar:after { - clear: both; -} - -.btn-toolbar:before, -.btn-toolbar:after { - display: table; - content: " "; -} - -.btn-toolbar:after { - clear: both; -} - -.btn-toolbar .btn-group { - float: left; -} - -.btn-toolbar > .btn + .btn, -.btn-toolbar > .btn-group + .btn, -.btn-toolbar > .btn + .btn-group, -.btn-toolbar > .btn-group + .btn-group { - margin-left: 5px; -} - -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} - -.btn-group > .btn:first-child { - margin-left: 0; -} - -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} - -.btn-group > .btn-group { - float: left; -} - -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} - -.btn-group > .btn-group:first-child > .btn:last-child, -.btn-group > .btn-group:first-child > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.btn-group > .btn-group:last-child > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} - -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} - -.btn-group-xs > .btn { - padding: 5px 10px; - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} - -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} - -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} - -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} - -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} - -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - -.btn .caret { - margin-left: 0; -} - -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} - -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} - -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group { - display: block; - float: none; - width: 100%; - max-width: 100%; -} - -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after { - display: table; - content: " "; -} - -.btn-group-vertical > .btn-group:after { - clear: both; -} - -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after { - display: table; - content: " "; -} - -.btn-group-vertical > .btn-group:after { - clear: both; -} - -.btn-group-vertical > .btn-group > .btn { - float: none; -} - -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} - -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} - -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-right-radius: 0; - border-bottom-left-radius: 4px; - border-top-left-radius: 0; -} - -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} - -.btn-group-vertical > .btn-group:first-child > .btn:last-child, -.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.btn-group-vertical > .btn-group:last-child > .btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} - -.btn-group-justified { - display: table; - width: 100%; - border-collapse: separate; - table-layout: fixed; -} - -.btn-group-justified .btn { - display: table-cell; - float: none; - width: 1%; -} - -[data-toggle="buttons"] > .btn > input[type="radio"], -[data-toggle="buttons"] > .btn > input[type="checkbox"] { - display: none; -} - -.input-group { - position: relative; - display: table; - border-collapse: separate; -} - -.input-group.col { - float: none; - padding-right: 0; - padding-left: 0; -} - -.input-group .form-control { - width: 100%; - margin-bottom: 0; -} - -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 45px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} - -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 45px; - line-height: 45px; -} - -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn { - height: auto; -} - -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} - -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} - -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn { - height: auto; -} - -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} - -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} - -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} - -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - text-align: center; - background-color: #eeeeee; - border: 1px solid #cccccc; - border-radius: 4px; -} - -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} - -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} - -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} - -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.input-group-addon:first-child { - border-right: 0; -} - -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} - -.input-group-addon:last-child { - border-left: 0; -} - -.input-group-btn { - position: relative; - white-space: nowrap; -} - -.input-group-btn > .btn { - position: relative; -} - -.input-group-btn > .btn + .btn { - margin-left: -4px; -} - -.input-group-btn > .btn:hover, -.input-group-btn > .btn:active { - z-index: 2; -} - -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} - -.nav:before, -.nav:after { - display: table; - content: " "; -} - -.nav:after { - clear: both; -} - -.nav:before, -.nav:after { - display: table; - content: " "; -} - -.nav:after { - clear: both; -} - -.nav > li { - position: relative; - display: block; -} - -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} - -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} - -.nav > li.disabled > a { - color: #999999; -} - -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #999999; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} - -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eeeeee; - border-color: #428bca; -} - -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} - -.nav > li > a > img { - max-width: none; -} - -.nav-tabs { - border-bottom: 1px solid #dddddd; -} - -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} - -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.428571429; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} - -.nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee #dddddd; -} - -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555555; - cursor: default; - background-color: #ffffff; - border: 1px solid #dddddd; - border-bottom-color: transparent; -} - -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} - -.nav-tabs.nav-justified > li { - float: none; -} - -.nav-tabs.nav-justified > li > a { - text-align: center; -} - -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } -} - -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-bottom: 1px solid #dddddd; -} - -.nav-tabs.nav-justified > .active > a { - border-bottom-color: #ffffff; -} - -.nav-pills > li { - float: left; -} - -.nav-pills > li > a { - border-radius: 5px; -} - -.nav-pills > li + li { - margin-left: 2px; -} - -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #ffffff; - background-color: #428bca; -} - -.nav-stacked > li { - float: none; -} - -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} - -.nav-justified { - width: 100%; -} - -.nav-justified > li { - float: none; -} - -.nav-justified > li > a { - text-align: center; -} - -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } -} - -.nav-tabs-justified { - border-bottom: 0; -} - -.nav-tabs-justified > li > a { - margin-right: 0; - border-bottom: 1px solid #dddddd; -} - -.nav-tabs-justified > .active > a { - border-bottom-color: #ffffff; -} - -.tabbable:before, -.tabbable:after { - display: table; - content: " "; -} - -.tabbable:after { - clear: both; -} - -.tabbable:before, -.tabbable:after { - display: table; - content: " "; -} - -.tabbable:after { - clear: both; -} - -.tab-content > .tab-pane, -.pill-content > .pill-pane { - display: none; -} - -.tab-content > .active, -.pill-content > .active { - display: block; -} - -.nav .caret { - border-top-color: #428bca; - border-bottom-color: #428bca; -} - -.nav a:hover .caret { - border-top-color: #2a6496; - border-bottom-color: #2a6496; -} - -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} - -.navbar { - position: relative; - z-index: 1000; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} - -.navbar:before, -.navbar:after { - display: table; - content: " "; -} - -.navbar:after { - clear: both; -} - -.navbar:before, -.navbar:after { - display: table; - content: " "; -} - -.navbar:after { - clear: both; -} - -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} - -.navbar-header:before, -.navbar-header:after { - display: table; - content: " "; -} - -.navbar-header:after { - clear: both; -} - -.navbar-header:before, -.navbar-header:after { - display: table; - content: " "; -} - -.navbar-header:after { - clear: both; -} - -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} - -.navbar-collapse { - max-height: 340px; - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} - -.navbar-collapse:before, -.navbar-collapse:after { - display: table; - content: " "; -} - -.navbar-collapse:after { - clear: both; -} - -.navbar-collapse:before, -.navbar-collapse:after { - display: table; - content: " "; -} - -.navbar-collapse:after { - clear: both; -} - -.navbar-collapse.in { - overflow-y: auto; -} - -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-collapse .navbar-nav.navbar-left:first-child { - margin-left: -15px; - } - .navbar-collapse .navbar-nav.navbar-right:last-child { - margin-right: -15px; - } - .navbar-collapse .navbar-text:last-child { - margin-right: 0; - } -} - -.container > .navbar-header, -.container > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} - -@media (min-width: 768px) { - .container > .navbar-header, - .container > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} - -.navbar-static-top { - border-width: 0 0 1px; -} - -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} - -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - border-width: 0 0 1px; -} - -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} - -.navbar-fixed-top { - top: 0; - z-index: 1030; -} - -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; -} - -.navbar-brand { - float: left; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} - -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} - -@media (min-width: 768px) { - .navbar > .container .navbar-brand { - margin-left: -15px; - } -} - -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - border: 1px solid transparent; - border-radius: 4px; -} - -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} - -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} - -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} - -.navbar-nav { - margin: 7.5px -15px; -} - -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} - -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} - -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} - -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - } -} - -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); -} - -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - padding-left: 0; - margin-top: 0; - margin-bottom: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - float: none; - margin-left: 0; - } -} - -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } -} - -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} - -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} - -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.navbar-nav.pull-right > li > .dropdown-menu, -.navbar-nav > li > .dropdown-menu.pull-right { - right: 0; - left: auto; -} - -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} - -.navbar-text { - float: left; - margin-top: 15px; - margin-bottom: 15px; -} - -@media (min-width: 768px) { - .navbar-text { - margin-right: 15px; - margin-left: 15px; - } -} - -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} - -.navbar-default .navbar-brand { - color: #777777; -} - -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} - -.navbar-default .navbar-text { - color: #777777; -} - -.navbar-default .navbar-nav > li > a { - color: #777777; -} - -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333333; - background-color: transparent; -} - -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555555; - background-color: #e7e7e7; -} - -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} - -.navbar-default .navbar-toggle { - border-color: #dddddd; -} - -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #dddddd; -} - -.navbar-default .navbar-toggle .icon-bar { - background-color: #cccccc; -} - -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e6e6e6; -} - -.navbar-default .navbar-nav > .dropdown > a:hover .caret, -.navbar-default .navbar-nav > .dropdown > a:focus .caret { - border-top-color: #333333; - border-bottom-color: #333333; -} - -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555555; - background-color: #e7e7e7; -} - -.navbar-default .navbar-nav > .open > a .caret, -.navbar-default .navbar-nav > .open > a:hover .caret, -.navbar-default .navbar-nav > .open > a:focus .caret { - border-top-color: #555555; - border-bottom-color: #555555; -} - -.navbar-default .navbar-nav > .dropdown > a .caret { - border-top-color: #777777; - border-bottom-color: #777777; -} - -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} - -.navbar-default .navbar-link { - color: #777777; -} - -.navbar-default .navbar-link:hover { - color: #333333; -} - -.navbar-inverse { - background-color: #222222; - border-color: #080808; -} - -.navbar-inverse .navbar-brand { - color: #999999; -} - -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #ffffff; - background-color: transparent; -} - -.navbar-inverse .navbar-text { - color: #999999; -} - -.navbar-inverse .navbar-nav > li > a { - color: #999999; -} - -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; -} - -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #080808; -} - -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444444; - background-color: transparent; -} - -.navbar-inverse .navbar-toggle { - border-color: #333333; -} - -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333333; -} - -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #ffffff; -} - -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} - -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #ffffff; - background-color: #080808; -} - -.navbar-inverse .navbar-nav > .dropdown > a:hover .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} - -.navbar-inverse .navbar-nav > .dropdown > a .caret { - border-top-color: #999999; - border-bottom-color: #999999; -} - -.navbar-inverse .navbar-nav > .open > a .caret, -.navbar-inverse .navbar-nav > .open > a:hover .caret, -.navbar-inverse .navbar-nav > .open > a:focus .caret { - border-top-color: #ffffff; - border-bottom-color: #ffffff; -} - -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #999999; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444444; - background-color: transparent; - } -} - -.navbar-inverse .navbar-link { - color: #999999; -} - -.navbar-inverse .navbar-link:hover { - color: #ffffff; -} - -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} - -.breadcrumb > li { - display: inline-block; -} - -.breadcrumb > li + li:before { - padding: 0 5px; - color: #cccccc; - content: "/\00a0"; -} - -.breadcrumb > .active { - color: #999999; -} - -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} - -.pagination > li { - display: inline; -} - -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.428571429; - text-decoration: none; - background-color: #ffffff; - border: 1px solid #dddddd; -} - -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; -} - -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - background-color: #eeeeee; -} - -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #ffffff; - cursor: default; - background-color: #428bca; - border-color: #428bca; -} - -.pagination > .disabled > span, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #999999; - cursor: not-allowed; - background-color: #ffffff; - border-color: #dddddd; -} - -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} - -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-bottom-left-radius: 6px; - border-top-left-radius: 6px; -} - -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} - -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} - -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} - -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} - -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} - -.pager:before, -.pager:after { - display: table; - content: " "; -} - -.pager:after { - clear: both; -} - -.pager:before, -.pager:after { - display: table; - content: " "; -} - -.pager:after { - clear: both; -} - -.pager li { - display: inline; -} - -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 15px; -} - -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} - -.pager .next > a, -.pager .next > span { - float: right; -} - -.pager .previous > a, -.pager .previous > span { - float: left; -} - -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #999999; - cursor: not-allowed; - background-color: #ffffff; -} - -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #ffffff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} - -.label[href]:hover, -.label[href]:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} - -.label:empty { - display: none; -} - -.label-default { - background-color: #999999; -} - -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #808080; -} - -.label-primary { - background-color: #428bca; -} - -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #3071a9; -} - -.label-success { - background-color: #5cb85c; -} - -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} - -.label-info { - background-color: #5bc0de; -} - -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} - -.label-warning { - background-color: #f0ad4e; -} - -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} - -.label-danger { - background-color: #d9534f; -} - -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} - -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #ffffff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #999999; - border-radius: 10px; -} - -.badge:empty { - display: none; -} - -a.badge:hover, -a.badge:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} - -.btn .badge { - position: relative; - top: -1px; -} - -a.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #428bca; - background-color: #ffffff; -} - -.nav-pills > li > a > .badge { - margin-left: 3px; -} - -.jumbotron { - padding: 30px; - margin-bottom: 30px; - font-size: 21px; - font-weight: 200; - line-height: 2.1428571435; - color: inherit; - background-color: #eeeeee; -} - -.jumbotron h1 { - line-height: 1; - color: inherit; -} - -.jumbotron p { - line-height: 1.4; -} - -.container .jumbotron { - border-radius: 6px; -} - -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1 { - font-size: 63px; - } -} - -.thumbnail { - display: inline-block; - display: block; - height: auto; - max-width: 100%; - padding: 4px; - line-height: 1.428571429; - background-color: #ffffff; - border: 1px solid #dddddd; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} - -.thumbnail > img { - display: block; - height: auto; - max-width: 100%; -} - -a.thumbnail:hover, -a.thumbnail:focus { - border-color: #428bca; -} - -.thumbnail > img { - margin-right: auto; - margin-left: auto; -} - -.thumbnail .caption { - padding: 9px; - color: #333333; -} - -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} - -.alert h4 { - margin-top: 0; - color: inherit; -} - -.alert .alert-link { - font-weight: bold; -} - -.alert > p, -.alert > ul { - margin-bottom: 0; -} - -.alert > p + p { - margin-top: 5px; -} - -.alert-dismissable { - padding-right: 35px; -} - -.alert-dismissable .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} - -.alert-success { - color: #468847; - background-color: #dff0d8; - border-color: #d6e9c6; -} - -.alert-success hr { - border-top-color: #c9e2b3; -} - -.alert-success .alert-link { - color: #356635; -} - -.alert-info { - color: #3a87ad; - background-color: #d9edf7; - border-color: #bce8f1; -} - -.alert-info hr { - border-top-color: #a6e1ec; -} - -.alert-info .alert-link { - color: #2d6987; -} - -.alert-warning { - color: #c09853; - background-color: #fcf8e3; - border-color: #fbeed5; -} - -.alert-warning hr { - border-top-color: #f8e5be; -} - -.alert-warning .alert-link { - color: #a47e3c; -} - -.alert-danger { - color: #b94a48; - background-color: #f2dede; - border-color: #eed3d7; -} - -.alert-danger hr { - border-top-color: #e6c1c7; -} - -.alert-danger .alert-link { - color: #953b39; -} - -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -@-moz-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -@-o-keyframes progress-bar-stripes { - from { - background-position: 0 0; - } - to { - background-position: 40px 0; - } -} - -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} - -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} - -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - color: #ffffff; - text-align: center; - background-color: #428bca; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - transition: width 0.6s ease; -} - -.progress-striped .progress-bar { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} - -.progress.active .progress-bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -moz-animation: progress-bar-stripes 2s linear infinite; - -ms-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} - -.progress-bar-success { - background-color: #5cb85c; -} - -.progress-striped .progress-bar-success { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-bar-info { - background-color: #5bc0de; -} - -.progress-striped .progress-bar-info { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-bar-warning { - background-color: #f0ad4e; -} - -.progress-striped .progress-bar-warning { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.progress-bar-danger { - background-color: #d9534f; -} - -.progress-striped .progress-bar-danger { - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.media, -.media-body { - overflow: hidden; - zoom: 1; -} - -.media, -.media .media { - margin-top: 15px; -} - -.media:first-child { - margin-top: 0; -} - -.media-object { - display: block; -} - -.media-heading { - margin: 0 0 5px; -} - -.media > .pull-left { - margin-right: 10px; -} - -.media > .pull-right { - margin-left: 10px; -} - -.media-list { - padding-left: 0; - list-style: none; -} - -.list-group { - padding-left: 0; - margin-bottom: 20px; -} - -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #ffffff; - border: 1px solid #dddddd; -} - -.list-group-item:first-child { - border-top-right-radius: 4px; - border-top-left-radius: 4px; -} - -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} - -.list-group-item > .badge { - float: right; -} - -.list-group-item > .badge + .badge { - margin-right: 5px; -} - -a.list-group-item { - color: #555555; -} - -a.list-group-item .list-group-item-heading { - color: #333333; -} - -a.list-group-item:hover, -a.list-group-item:focus { - text-decoration: none; - background-color: #f5f5f5; -} - -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #ffffff; - background-color: #428bca; - border-color: #428bca; -} - -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading { - color: inherit; -} - -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #e1edf7; -} - -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} - -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} - -.panel { - margin-bottom: 20px; - background-color: #ffffff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} - -.panel-body { - padding: 15px; -} - -.panel-body:before, -.panel-body:after { - display: table; - content: " "; -} - -.panel-body:after { - clear: both; -} - -.panel-body:before, -.panel-body:after { - display: table; - content: " "; -} - -.panel-body:after { - clear: both; -} - -.panel > .list-group { - margin-bottom: 0; -} - -.panel > .list-group .list-group-item { - border-width: 1px 0; -} - -.panel > .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} - -.panel > .list-group .list-group-item:last-child { - border-bottom: 0; -} - -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} - -.panel > .table { - margin-bottom: 0; -} - -.panel > .panel-body + .table { - border-top: 1px solid #dddddd; -} - -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} - -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; -} - -.panel-title > a { - color: inherit; -} - -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #dddddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} - -.panel-group .panel { - margin-bottom: 0; - overflow: hidden; - border-radius: 4px; -} - -.panel-group .panel + .panel { - margin-top: 5px; -} - -.panel-group .panel-heading { - border-bottom: 0; -} - -.panel-group .panel-heading + .panel-collapse .panel-body { - border-top: 1px solid #dddddd; -} - -.panel-group .panel-footer { - border-top: 0; -} - -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #dddddd; -} - -.panel-default { - border-color: #dddddd; -} - -.panel-default > .panel-heading { - color: #333333; - background-color: #f5f5f5; - border-color: #dddddd; -} - -.panel-default > .panel-heading + .panel-collapse .panel-body { - border-top-color: #dddddd; -} - -.panel-default > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #dddddd; -} - -.panel-primary { - border-color: #428bca; -} - -.panel-primary > .panel-heading { - color: #ffffff; - background-color: #428bca; - border-color: #428bca; -} - -.panel-primary > .panel-heading + .panel-collapse .panel-body { - border-top-color: #428bca; -} - -.panel-primary > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #428bca; -} - -.panel-success { - border-color: #d6e9c6; -} - -.panel-success > .panel-heading { - color: #468847; - background-color: #dff0d8; - border-color: #d6e9c6; -} - -.panel-success > .panel-heading + .panel-collapse .panel-body { - border-top-color: #d6e9c6; -} - -.panel-success > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #d6e9c6; -} - -.panel-warning { - border-color: #fbeed5; -} - -.panel-warning > .panel-heading { - color: #c09853; - background-color: #fcf8e3; - border-color: #fbeed5; -} - -.panel-warning > .panel-heading + .panel-collapse .panel-body { - border-top-color: #fbeed5; -} - -.panel-warning > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #fbeed5; -} - -.panel-danger { - border-color: #eed3d7; -} - -.panel-danger > .panel-heading { - color: #b94a48; - background-color: #f2dede; - border-color: #eed3d7; -} - -.panel-danger > .panel-heading + .panel-collapse .panel-body { - border-top-color: #eed3d7; -} - -.panel-danger > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #eed3d7; -} - -.panel-info { - border-color: #bce8f1; -} - -.panel-info > .panel-heading { - color: #3a87ad; - background-color: #d9edf7; - border-color: #bce8f1; -} - -.panel-info > .panel-heading + .panel-collapse .panel-body { - border-top-color: #bce8f1; -} - -.panel-info > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #bce8f1; -} - -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} - -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} - -.well-lg { - padding: 24px; - border-radius: 6px; -} - -.well-sm { - padding: 9px; - border-radius: 3px; -} - -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} - -.close:hover, -.close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} - -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} - -.modal-open { - overflow: hidden; -} - -body.modal-open, -.modal-open .navbar-fixed-top, -.modal-open .navbar-fixed-bottom { - margin-right: 15px; -} - -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - display: none; - overflow: auto; - overflow-y: scroll; -} - -.modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -moz-transition: -moz-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} - -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - transform: translate(0, 0); -} - -.modal-dialog { - z-index: 1050; - width: auto; - padding: 10px; - margin-right: auto; - margin-left: auto; -} - -.modal-content { - position: relative; - background-color: #ffffff; - border: 1px solid #999999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - outline: none; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; -} - -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; - background-color: #000000; -} - -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} - -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} - -.modal-header { - min-height: 16.428571429px; - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} - -.modal-header .close { - margin-top: -2px; -} - -.modal-title { - margin: 0; - line-height: 1.428571429; -} - -.modal-body { - position: relative; - padding: 20px; -} - -.modal-footer { - padding: 19px 20px 20px; - margin-top: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} - -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} - -.modal-footer:after { - clear: both; -} - -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} - -.modal-footer:after { - clear: both; -} - -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} - -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} - -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} - -@media screen and (min-width: 768px) { - .modal-dialog { - right: auto; - left: 50%; - width: 600px; - padding-top: 30px; - padding-bottom: 30px; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } -} - -.tooltip { - position: absolute; - z-index: 1030; - display: block; - font-size: 12px; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); - visibility: visible; -} - -.tooltip.in { - opacity: 0.9; - filter: alpha(opacity=90); -} - -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} - -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} - -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} - -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} - -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #ffffff; - text-align: center; - text-decoration: none; - background-color: #000000; - border-radius: 4px; -} - -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-top-color: #000000; - border-width: 5px 5px 0; -} - -.tooltip.top-left .tooltip-arrow { - bottom: 0; - left: 5px; - border-top-color: #000000; - border-width: 5px 5px 0; -} - -.tooltip.top-right .tooltip-arrow { - right: 5px; - bottom: 0; - border-top-color: #000000; - border-width: 5px 5px 0; -} - -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-right-color: #000000; - border-width: 5px 5px 5px 0; -} - -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-left-color: #000000; - border-width: 5px 0 5px 5px; -} - -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-bottom-color: #000000; - border-width: 0 5px 5px; -} - -.tooltip.bottom-left .tooltip-arrow { - top: 0; - left: 5px; - border-bottom-color: #000000; - border-width: 0 5px 5px; -} - -.tooltip.bottom-right .tooltip-arrow { - top: 0; - right: 5px; - border-bottom-color: #000000; - border-width: 0 5px 5px; -} - -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - white-space: normal; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - background-clip: padding-box; -} - -.popover.top { - margin-top: -10px; -} - -.popover.right { - margin-left: 10px; -} - -.popover.bottom { - margin-top: 10px; -} - -.popover.left { - margin-left: -10px; -} - -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} - -.popover-content { - padding: 9px 14px; -} - -.popover .arrow, -.popover .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.popover .arrow { - border-width: 11px; -} - -.popover .arrow:after { - border-width: 10px; - content: ""; -} - -.popover.top .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999999; - border-top-color: rgba(0, 0, 0, 0.25); - border-bottom-width: 0; -} - -.popover.top .arrow:after { - bottom: 1px; - margin-left: -10px; - border-top-color: #ffffff; - border-bottom-width: 0; - content: " "; -} - -.popover.right .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999999; - border-right-color: rgba(0, 0, 0, 0.25); - border-left-width: 0; -} - -.popover.right .arrow:after { - bottom: -10px; - left: 1px; - border-right-color: #ffffff; - border-left-width: 0; - content: " "; -} - -.popover.bottom .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-bottom-color: #999999; - border-bottom-color: rgba(0, 0, 0, 0.25); - border-top-width: 0; -} - -.popover.bottom .arrow:after { - top: 1px; - margin-left: -10px; - border-bottom-color: #ffffff; - border-top-width: 0; - content: " "; -} - -.popover.left .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-left-color: #999999; - border-left-color: rgba(0, 0, 0, 0.25); - border-right-width: 0; -} - -.popover.left .arrow:after { - right: 1px; - bottom: -10px; - border-left-color: #ffffff; - border-right-width: 0; - content: " "; -} - -.carousel { - position: relative; -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} - -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} - -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - height: auto; - max-width: 100%; - line-height: 1; -} - -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} - -.carousel-inner > .active { - left: 0; -} - -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} - -.carousel-inner > .next { - left: 100%; -} - -.carousel-inner > .prev { - left: -100%; -} - -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} - -.carousel-inner > .active.left { - left: -100%; -} - -.carousel-inner > .active.right { - left: 100%; -} - -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); - opacity: 0.5; - filter: alpha(opacity=50); -} - -.carousel-control.left { - background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); - background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} - -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); - background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} - -.carousel-control:hover, -.carousel-control:focus { - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} - -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - left: 50%; - z-index: 5; - display: inline-block; -} - -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - margin-left: -10px; - font-family: serif; -} - -.carousel-control .icon-prev:before { - content: '\2039'; -} - -.carousel-control .icon-next:before { - content: '\203a'; -} - -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} - -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - border: 1px solid #ffffff; - border-radius: 10px; -} - -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #ffffff; -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} - -.carousel-caption .btn { - text-shadow: none; -} - -@media screen and (min-width: 768px) { - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - margin-left: -15px; - font-size: 30px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} - -.clearfix:before, -.clearfix:after { - display: table; - content: " "; -} - -.clearfix:after { - clear: both; -} - -.pull-right { - float: right !important; -} - -.pull-left { - float: left !important; -} - -.hide { - display: none !important; -} - -.show { - display: block !important; -} - -.invisible { - visibility: hidden; -} - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} - -.affix { - position: fixed; -} - -@-ms-viewport { - width: device-width; -} - -@media screen and (max-width: 400px) { - @-ms-viewport { - width: 320px; - } -} - -.hidden { - display: none !important; - visibility: hidden !important; -} - -.visible-xs { - display: none !important; -} - -tr.visible-xs { - display: none !important; -} - -th.visible-xs, -td.visible-xs { - display: none !important; -} - -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .visible-xs.visible-sm { - display: block !important; - } - tr.visible-xs.visible-sm { - display: table-row !important; - } - th.visible-xs.visible-sm, - td.visible-xs.visible-sm { - display: table-cell !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-xs.visible-md { - display: block !important; - } - tr.visible-xs.visible-md { - display: table-row !important; - } - th.visible-xs.visible-md, - td.visible-xs.visible-md { - display: table-cell !important; - } -} - -@media (min-width: 1200px) { - .visible-xs.visible-lg { - display: block !important; - } - tr.visible-xs.visible-lg { - display: table-row !important; - } - th.visible-xs.visible-lg, - td.visible-xs.visible-lg { - display: table-cell !important; - } -} - -.visible-sm { - display: none !important; -} - -tr.visible-sm { - display: none !important; -} - -th.visible-sm, -td.visible-sm { - display: none !important; -} - -@media (max-width: 767px) { - .visible-sm.visible-xs { - display: block !important; - } - tr.visible-sm.visible-xs { - display: table-row !important; - } - th.visible-sm.visible-xs, - td.visible-sm.visible-xs { - display: table-cell !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-sm.visible-md { - display: block !important; - } - tr.visible-sm.visible-md { - display: table-row !important; - } - th.visible-sm.visible-md, - td.visible-sm.visible-md { - display: table-cell !important; - } -} - -@media (min-width: 1200px) { - .visible-sm.visible-lg { - display: block !important; - } - tr.visible-sm.visible-lg { - display: table-row !important; - } - th.visible-sm.visible-lg, - td.visible-sm.visible-lg { - display: table-cell !important; - } -} - -.visible-md { - display: none !important; -} - -tr.visible-md { - display: none !important; -} - -th.visible-md, -td.visible-md { - display: none !important; -} - -@media (max-width: 767px) { - .visible-md.visible-xs { - display: block !important; - } - tr.visible-md.visible-xs { - display: table-row !important; - } - th.visible-md.visible-xs, - td.visible-md.visible-xs { - display: table-cell !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .visible-md.visible-sm { - display: block !important; - } - tr.visible-md.visible-sm { - display: table-row !important; - } - th.visible-md.visible-sm, - td.visible-md.visible-sm { - display: table-cell !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} - -@media (min-width: 1200px) { - .visible-md.visible-lg { - display: block !important; - } - tr.visible-md.visible-lg { - display: table-row !important; - } - th.visible-md.visible-lg, - td.visible-md.visible-lg { - display: table-cell !important; - } -} - -.visible-lg { - display: none !important; -} - -tr.visible-lg { - display: none !important; -} - -th.visible-lg, -td.visible-lg { - display: none !important; -} - -@media (max-width: 767px) { - .visible-lg.visible-xs { - display: block !important; - } - tr.visible-lg.visible-xs { - display: table-row !important; - } - th.visible-lg.visible-xs, - td.visible-lg.visible-xs { - display: table-cell !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .visible-lg.visible-sm { - display: block !important; - } - tr.visible-lg.visible-sm { - display: table-row !important; - } - th.visible-lg.visible-sm, - td.visible-lg.visible-sm { - display: table-cell !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .visible-lg.visible-md { - display: block !important; - } - tr.visible-lg.visible-md { - display: table-row !important; - } - th.visible-lg.visible-md, - td.visible-lg.visible-md { - display: table-cell !important; - } -} - -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} - -.hidden-xs { - display: block !important; -} - -tr.hidden-xs { - display: table-row !important; -} - -th.hidden-xs, -td.hidden-xs { - display: table-cell !important; -} - -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } - tr.hidden-xs { - display: none !important; - } - th.hidden-xs, - td.hidden-xs { - display: none !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .hidden-xs.hidden-sm { - display: none !important; - } - tr.hidden-xs.hidden-sm { - display: none !important; - } - th.hidden-xs.hidden-sm, - td.hidden-xs.hidden-sm { - display: none !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-xs.hidden-md { - display: none !important; - } - tr.hidden-xs.hidden-md { - display: none !important; - } - th.hidden-xs.hidden-md, - td.hidden-xs.hidden-md { - display: none !important; - } -} - -@media (min-width: 1200px) { - .hidden-xs.hidden-lg { - display: none !important; - } - tr.hidden-xs.hidden-lg { - display: none !important; - } - th.hidden-xs.hidden-lg, - td.hidden-xs.hidden-lg { - display: none !important; - } -} - -.hidden-sm { - display: block !important; -} - -tr.hidden-sm { - display: table-row !important; -} - -th.hidden-sm, -td.hidden-sm { - display: table-cell !important; -} - -@media (max-width: 767px) { - .hidden-sm.hidden-xs { - display: none !important; - } - tr.hidden-sm.hidden-xs { - display: none !important; - } - th.hidden-sm.hidden-xs, - td.hidden-sm.hidden-xs { - display: none !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } - tr.hidden-sm { - display: none !important; - } - th.hidden-sm, - td.hidden-sm { - display: none !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-sm.hidden-md { - display: none !important; - } - tr.hidden-sm.hidden-md { - display: none !important; - } - th.hidden-sm.hidden-md, - td.hidden-sm.hidden-md { - display: none !important; - } -} - -@media (min-width: 1200px) { - .hidden-sm.hidden-lg { - display: none !important; - } - tr.hidden-sm.hidden-lg { - display: none !important; - } - th.hidden-sm.hidden-lg, - td.hidden-sm.hidden-lg { - display: none !important; - } -} - -.hidden-md { - display: block !important; -} - -tr.hidden-md { - display: table-row !important; -} - -th.hidden-md, -td.hidden-md { - display: table-cell !important; -} - -@media (max-width: 767px) { - .hidden-md.hidden-xs { - display: none !important; - } - tr.hidden-md.hidden-xs { - display: none !important; - } - th.hidden-md.hidden-xs, - td.hidden-md.hidden-xs { - display: none !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .hidden-md.hidden-sm { - display: none !important; - } - tr.hidden-md.hidden-sm { - display: none !important; - } - th.hidden-md.hidden-sm, - td.hidden-md.hidden-sm { - display: none !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } - tr.hidden-md { - display: none !important; - } - th.hidden-md, - td.hidden-md { - display: none !important; - } -} - -@media (min-width: 1200px) { - .hidden-md.hidden-lg { - display: none !important; - } - tr.hidden-md.hidden-lg { - display: none !important; - } - th.hidden-md.hidden-lg, - td.hidden-md.hidden-lg { - display: none !important; - } -} - -.hidden-lg { - display: block !important; -} - -tr.hidden-lg { - display: table-row !important; -} - -th.hidden-lg, -td.hidden-lg { - display: table-cell !important; -} - -@media (max-width: 767px) { - .hidden-lg.hidden-xs { - display: none !important; - } - tr.hidden-lg.hidden-xs { - display: none !important; - } - th.hidden-lg.hidden-xs, - td.hidden-lg.hidden-xs { - display: none !important; - } -} - -@media (min-width: 768px) and (max-width: 991px) { - .hidden-lg.hidden-sm { - display: none !important; - } - tr.hidden-lg.hidden-sm { - display: none !important; - } - th.hidden-lg.hidden-sm, - td.hidden-lg.hidden-sm { - display: none !important; - } -} - -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-lg.hidden-md { - display: none !important; - } - tr.hidden-lg.hidden-md { - display: none !important; - } - th.hidden-lg.hidden-md, - td.hidden-lg.hidden-md { - display: none !important; - } -} - -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } - tr.hidden-lg { - display: none !important; - } - th.hidden-lg, - td.hidden-lg { - display: none !important; - } -} - -.visible-print { - display: none !important; -} - -tr.visible-print { - display: none !important; -} - -th.visible-print, -td.visible-print { - display: none !important; -} - -@media print { - .visible-print { - display: block !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } - .hidden-print { - display: none !important; - } - tr.hidden-print { - display: none !important; - } - th.hidden-print, - td.hidden-print { - display: none !important; - } -} \ No newline at end of file diff --git a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.js b/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.js deleted file mode 100644 index 5aa9982ed..000000000 --- a/Nodejs/Product/Nodejs/ProjectTemplates/AddWebSiteAzureStarterExpressApp/bootstrap.js +++ /dev/null @@ -1,2014 +0,0 @@ -/* NUGET: BEGIN LICENSE TEXT - * - * Microsoft grants you the right to use these script files for the sole - * purpose of either: (i) interacting through your browser with the Microsoft - * website or online service, subject to the applicable licensing or use - * terms; or (ii) using the files as included with a Microsoft product subject - * to that product's license terms. Microsoft reserves all other rights to the - * files not expressly granted by Microsoft, whether by implication, estoppel - * or otherwise. Insofar as a script file is dual licensed under GPL, - * Microsoft neither took the code under GPL nor distributes it thereunder but - * under the terms set out in this paragraph. All notices and licenses - * below are for informational purposes only. - * - * NUGET: END LICENSE TEXT */ - -/** -* bootstrap.js v3.0.0 by @fat and @mdo -* Copyright 2013 Twitter Inc. -* http://www.apache.org/licenses/LICENSE-2.0 -*/ -if (!jQuery) { throw new Error("Bootstrap requires jQuery") } - -/* ======================================================================== - * Bootstrap: transition.js v3.0.0 - * http://twbs.github.com/bootstrap/javascript.html#transitions - * ======================================================================== - * Copyright 2013 Twitter, 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. - * ======================================================================== */ - - -+function ($) { "use strict"; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - 'WebkitTransition' : 'webkitTransitionEnd' - , 'MozTransition' : 'transitionend' - , 'OTransition' : 'oTransitionEnd otransitionend' - , 'transition' : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false, $el = this - $(this).one($.support.transition.end, function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - }) - -}(window.jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.0.0 - * http://twbs.github.com/bootstrap/javascript.html#alerts - * ======================================================================== - * Copyright 2013 Twitter, 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. - * ======================================================================== */ - - -+function ($) { "use strict"; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.hasClass('alert') ? $this : $this.parent() - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - $parent.trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one($.support.transition.end, removeElement) - .emulateTransitionEnd(150) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - var old = $.fn.alert - - $.fn.alert = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(window.jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.0.0 - * http://twbs.github.com/bootstrap/javascript.html#buttons - * ======================================================================== - * Copyright 2013 Twitter, 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. - * ======================================================================== */ - - -+function ($) { "use strict"; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - } - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state = state + 'Text' - - if (!data.resetText) $el.data('resetText', $el[val]()) - - $el[val](data[state] || this.options[state]) - - // push to event loop to allow forms to submit - setTimeout(function () { - state == 'loadingText' ? - $el.addClass(d).attr(d, d) : - $el.removeClass(d).removeAttr(d); - }, 0) - } - - Button.prototype.toggle = function () { - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - .prop('checked', !this.$element.hasClass('active')) - .trigger('change') - if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') - } - - this.$element.toggleClass('active') - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - var old = $.fn.button - - $.fn.button = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - $btn.button('toggle') - e.preventDefault() - }) - -}(window.jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.0.0 - * http://twbs.github.com/bootstrap/javascript.html#carousel - * ======================================================================== - * Copyright 2012 Twitter, 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. - * ======================================================================== */ - - -+function ($) { "use strict"; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = - this.sliding = - this.interval = - this.$active = - this.$items = null - - this.options.pause == 'hover' && this.$element - .on('mouseenter', $.proxy(this.pause, this)) - .on('mouseleave', $.proxy(this.cycle, this)) - } - - Carousel.DEFAULTS = { - interval: 5000 - , pause: 'hover' - , wrap: true - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getActiveIndex = function () { - this.$active = this.$element.find('.item.active') - this.$items = this.$active.parent().children() - - return this.$items.index(this.$active) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getActiveIndex() - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition.end) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || $active[type]() - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var fallback = type == 'next' ? 'first' : 'last' - var that = this - - if (!$next.length) { - if (!this.options.wrap) return - $next = this.$element.find('.item')[fallback]() - } - - this.sliding = true - - isCycling && this.pause() - - var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) - - if ($next.hasClass('active')) return - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - this.$element.one('slid', function () { - var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) - $nextIndicator && $nextIndicator.addClass('active') - }) - } - - if ($.support.transition && this.$element.hasClass('slide')) { - this.$element.trigger(e) - if (e.isDefaultPrevented()) return - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one($.support.transition.end, function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { that.$element.trigger('slid') }, 0) - }) - .emulateTransitionEnd(600) - } else { - this.$element.trigger(e) - if (e.isDefaultPrevented()) return - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger('slid') - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - var old = $.fn.carousel - - $.fn.carousel = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { - var $this = $(this), href - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - $target.carousel(options) - - if (slideIndex = $this.attr('data-slide-to')) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - }) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - $carousel.carousel($carousel.data()) - }) - }) - -}(window.jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.0.0 - * http://twbs.github.com/bootstrap/javascript.html#collapse - * ======================================================================== - * Copyright 2012 Twitter, 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. - * ======================================================================== */ - - -+function ($) { "use strict"; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.transitioning = null - - if (this.options.parent) this.$parent = $(this.options.parent) - if (this.options.toggle) this.toggle() - } - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var actives = this.$parent && this.$parent.find('> .panel > .in') - - if (actives && actives.length) { - var hasData = actives.data('bs.collapse') - if (hasData && hasData.transitioning) return - actives.collapse('hide') - hasData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing') - [dimension](0) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('in') - [dimension]('auto') - this.transitioning = 0 - this.$element.trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350) - [dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element - [dimension](this.$element[dimension]()) - [0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse') - .removeClass('in') - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .trigger('hidden.bs.collapse') - .removeClass('collapsing') - .addClass('collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - var old = $.fn.collapse - - $.fn.collapse = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { - var $this = $(this), href - var target = $this.attr('data-target') - || e.preventDefault() - || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 - var $target = $(target) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - var parent = $this.attr('data-parent') - var $parent = parent && $(parent) - - if (!data || !data.transitioning) { - if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') - $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') - } - - $target.collapse(option) - }) - -}(window.jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.0.0 - * http://twbs.github.com/bootstrap/javascript.html#dropdowns - * ======================================================================== - * Copyright 2012 Twitter, 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. - * ======================================================================== */ - - -+function ($) { "use strict"; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle=dropdown]' - var Dropdown = function (element) { - var $el = $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we we use a backdrop because click events don't delegate - $('