protected override byte[] GenerateCode(string inputFileName, string inputFileContent)
        {
            ProjectItem item = (Dte as DTE2).Solution.FindProjectItem(inputFileName);

            originalExt = Path.GetExtension(inputFileName);
            if (item != null)
            {
                try
                {
                    var dts = GenerationService.ConvertToTypeScript(item);

                    Telemetry.TrackOperation("FileGenerated");

                    InsertToIndex(item, Path.GetFileNameWithoutExtension(inputFileName));

                    return(Encoding.UTF8.GetBytes(dts));
                }
                catch (Exception ex)
                {
                    Telemetry.TrackOperation("FileGenerated", Microsoft.VisualStudio.Telemetry.TelemetryResult.Failure);
                    Telemetry.TrackException("FileGenerated", ex);
                }
            }

            return(new byte[0]);
        }
        protected override byte[] GenerateCode(string inputFileName, string inputFileContent)
        {
            ProjectItem item = Dte.Solution.FindProjectItem(inputFileName);

            this.originalExt = Path.GetExtension(inputFileName);
            if (item != null)
            {
                // Sometimes "DtsPackage.Options"==null at this point. Make sure that options get loaded now.
                DtsPackage.EnsurePackageLoad();

                try
                {
                    string dts = GenerationService.ConvertToTypeScript(item);

                    Telemetry.TrackOperation("FileGenerated");

                    return(Encoding.UTF8.GetBytes(dts));
                }
                catch (Exception ex)
                {
                    Telemetry.TrackOperation("FileGenerated", Microsoft.VisualStudio.Telemetry.TelemetryResult.Failure);
                    Telemetry.TrackException("FileGenerated", ex);
                }
            }

            return(new byte[0]);
        }
        protected override byte[] GenerateCode(string inputFileName, string inputFileContent)
        {
            ProjectItem item = Dte.Solution.FindProjectItem(inputFileName);

            OriginalExt = Path.GetExtension(inputFileName);
            if (item != null)
            {
                try
                {
                    Telemetry.TrackOperation("FileGenerated");

                    string output = GenerationService.ConvertToTypeScript(item);

                    if (!string.IsNullOrWhiteSpace(Options.NodeModulePath))
                    {
                        // generate a Node module instead of a d.ts file.
                        string outputFile  = Path.ChangeExtension(inputFileName, ".ts");
                        string projectPath = Path.GetDirectoryName(item.ContainingProject.FileName);
                        outputFile = outputFile.Substring(projectPath.Length + 1); // strip the initial part of the path
                        outputFile = Path.Combine(projectPath, Options.NodeModulePath, outputFile);
                        var di = Directory.CreateDirectory(Path.GetDirectoryName(outputFile));
                        if (di != null && di.Exists)
                        {
                            VSHelpers.CheckFileOutOfSourceControl(outputFile);
                            File.WriteAllText(outputFile, output);

                            output = $"// Node module file generated at {MakeRelativePath(InputFilePath, outputFile)}";
                        }
                    }

                    return(Encoding.UTF8.GetBytes(output));
                }
                catch (Exception ex)
                {
                    VSHelpers.WriteOnOutputWindow(string.Format("{0} - File Generation Failure", inputFileName));
                    VSHelpers.WriteOnOutputWindow(ex.StackTrace);
                    Telemetry.TrackOperation("FileGenerated", Microsoft.VisualStudio.Telemetry.TelemetryResult.Failure);
                    Telemetry.TrackException("FileGenerated", ex);
                }
            }

            return(new byte[0]);
        }