public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile($@"Southwind.React\Dockerfile", file => { file.Replace("build-development", "build-production"); }); uctx.ChangeCodeFile($@"Southwind.React\Views\Home\Index.cshtml", file => { file.Replace("supportIE = true", "supportIE = false"); }); uctx.ChangeCodeFile($@"Southwind.React\App\SCSS\custom.scss", file => { file.InsertAfterFirstLine(a => a.Contains(@"@import ""./_bootswatch"";"), @".btn.input-group-text{ background: $input-group-addon-bg; border: $input-border-width solid $input-group-addon-border-color }"); }); uctx.ChangeCodeFile(@$ "Southwind.React\package.json", file => { file.Replace("--mode='production'", "--mode=production"); file.Replace( @"webpack --config webpack.config.polyfills.js && webpack --config webpack.config.dll.js --mode=production", @"webpack --config webpack.config.polyfills.js --mode=production && webpack --config webpack.config.dll.js --mode=production"); });
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.Entities/ApplicationConfiguration.cs ", file => { file.InsertBeforeFirstLine(a => a.Contains("[AutoInit]"), @" [Serializable] public class TranslationConfigurationEmbedded : EmbeddedEntity { [Description(""Azure Cognitive Service API Key"")] [StringLengthValidator(Max = 300), FileNameValidator] public string? AzureCognitiveServicesAPIKey { get; set; } [Description(""Azure Cognitive Service Region"")] [StringLengthValidator(Max = 300), FileNameValidator] public string? AzureCognitiveServicesRegion { get; set; } [Description(""DeepL API Key"")] [StringLengthValidator(Max = 300), FileNameValidator] public string? DeepLAPIKey { get; set; } } "); file.InsertAfterFirstLine(a => a.Contains("public FoldersConfigurationEmbedded Folders { get; set; }"), @" public TranslationConfigurationEmbedded Translation { get; set; }"); }); uctx.ChangeCodeFile(@"Southwind.React/App/Southwind/Templates/ApplicationConfiguration.tsx", file => { file.InsertAfterLastLine(a => a.Contains("</Tab>"), @"<Tab eventKey=""translation"" title={ctx.niceName(a => a.translation)}> <RenderEntity ctx={ctx.subCtx(a => a.translation)} /> </Tab>"); }); uctx.ChangeCodeFile(@"Southwind.React/Startup.cs", file => { file.ReplaceLine(a => a.Contains("TranslationServer.Start(app, new AlreadyTranslatedTranslator"), @"TranslationServer.Start(app, new AlreadyTranslatedTranslator(), new AzureTranslator( () => Starter.Configuration.Value.Translation.AzureCognitiveServicesAPIKey, () => Starter.Configuration.Value.Translation.AzureCognitiveServicesRegion), new DeepLTranslator(() => Starter.Configuration.Value.Translation.DeepLAPIKey) );"); }); var azureKey = SafeConsole.AskString("Azure API Key?"); var deeplKey = SafeConsole.AskString("DeepL API Key?"); uctx.ChangeCodeFile(@"Southwind.Terminal\SouthwindMigrations.cs", file => { file.InsertBeforeFirstLine(a => a.Contains("Folders = new FoldersConfigurationEmbedded"), @$ "Translation = new TranslationConfigurationEmbedded {{ AzureCognitiveServicesAPIKey = " "{azureKey}" ", DeepLAPIKey = " "{deeplKey}" ", }},");
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile($@"Southwind.React/App/polyfills.js", file => { file.RemoveAllLines( l => l.Contains("url-search-params-polyfill") ); file.ReplaceLine( l => l.Contains("es6-promise/auto"), "require('core-js/stable');" ); }); uctx.ChangeCodeFile($@"Southwind.React/package.json", file => { file.RemoveAllLines( l => l.Contains("url-search-params-polyfill") || l.Contains("es6-object-assign") || l.Contains("es6-promise") ); file.InsertAfterFirstLine( l => l.Contains("abortcontroller-polyfill"), @"""core-js"": ""3.6.5""," ); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.Entities/ApplicationConfiguration.cs", file => { file.InsertBeforeFirstLine(a => a.Contains(@"/*Exceptions*/"), @"/*Dashboard*/ [StringLengthValidator(Max = 300), FileNameValidator] public string CachedQueryFolder { get; set; } "); }); uctx.ChangeCodeFile(@"Southwind.Logic/Starter.cs", file => { file.ReplaceLine(a => a.Contains(@"DashboardLogic.Start(sb);"), @"DashboardLogic.Start(sb, GetFileTypeAlgorithm(p => p.CachedQueryFolder));"); file.WarningLevel = WarningLevel.None; file.Replace(@"PredictorLogic.Start(sb, () => ", @"PredictorLogic.Start(sb, "); }); uctx.ChangeCodeFile(@"Southwind.Terminal/SouthwindMigrations.cs", file => { file.InsertBeforeFirstLine(a => a.Contains(@"ExceptionsFolder"), @"CachedQueryFolder = localPrefix + @""cached-query"","); }); uctx.ChangeCodeFile(@"Southwind.Test.Environment/SouthwindEnvironment.cs", file => { file.InsertBeforeFirstLine(a => a.Contains(@"ExceptionsFolder"), @"CachedQueryFolder = localPrefix + @""cached-query"","); }); uctx.ChangeCodeFile(".editorconfig", file => { file.WarningLevel = WarningLevel.None; file.Replace("@csharp_style_namespace_declarations", "csharp_style_namespace_declarations"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ForeachCodeFile("*.cs", file => { file.Replace("TimeSpanPrecisionValidator", "TimePrecisionValidator"); }); uctx.ForeachCodeFile("*.csproj", file => { file.UpdateNugetReference("Signum.MSBuildTask", "6.0.0"); file.UpdateNugetReference("Selenium.WebDriver.ChromeDriver", "96.0.4664.4500"); file.UpdateNugetReference("Microsoft.TypeScript.MSBuild", "4.5.2"); }); uctx.ChangeCodeFile(@"Southwind.React\Dockerfile", file => { file.Replace("aspnet:5.0.9-buster-slim", "aspnet:6.0.0-bullseye-slim"); file.Replace("sdk:5.0.400-buster-slim", "sdk:6.0.100-bullseye-slim"); }); uctx.ChangeCodeFile(@"Southwind.React\package.json", file => { file.UpdateNpmPackage("typescript", "4.5.2"); }); uctx.ChangeCodeFile(".editorconfig", file => { file.InsertAfterFirstLine(line => line.Contains("indent_size = 4"), "csharp_style_namespace_declarations = file_scoped:warning"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React/App/MainPublic.tsx", file => { file.Replace( "../node_modules/react-widgets/lib/scss/react-widgets.scss", "../node_modules/react-widgets/scss/styles.scss"); }); uctx.ForeachCodeFile("*.tsx", "Southwind.React", file => { file.Replace( "react-widgets/lib", "react-widgets/cjs"); }); uctx.ChangeCodeFile(@"Southwind.React/package.json", file => { file.UpdateNpmPackage("@fortawesome/fontawesome-svg-core", "1.2.35"); file.UpdateNpmPackage("@fortawesome/free-regular-svg-icons", "5.15.3"); file.UpdateNpmPackage("@fortawesome/free-solid-svg-icons", "5.15.3"); file.UpdateNpmPackage("@fortawesome/free-brands-svg-icons", "5.15.3"); file.UpdateNpmPackage("@fortawesome/react-fontawesome", "0.1.14"); file.UpdateNpmPackage("@types/draft-js", "0.11.1"); file.UpdateNpmPackage("@types/luxon", "1.26.2"); file.UpdateNpmPackage("abortcontroller-polyfill", "1.7.1"); file.UpdateNpmPackage("bootstrap", "4.6.0"); file.UpdateNpmPackage("codemirror", "5.60.0"); file.UpdateNpmPackage("core-js", "3.9.1"); file.UpdateNpmPackage("d3", "6.6.2"); file.UpdateNpmPackage("luxon", "1.26.0"); file.UpdateNpmPackage("msal", "1.4.8"); file.UpdateNpmPackage("react", "17.0.2"); file.UpdateNpmPackage("react-bootstrap", "1.5.2"); file.UpdateNpmPackage("react-dom", "17.0.2"); file.UpdateNpmPackage("react-widgets", "5.0.0"); file.UpdateNpmPackage("whatwg-fetch", "3.6.2"); file.UpdateNpmPackage("css-loader", "5.2.0"); file.ReplaceLine(a => a.Contains("node-sass"), @"""sass"": ""1.32.8"","); file.UpdateNpmPackage("sass-loader", "11.0.1"); file.UpdateNpmPackage("ts-loader", "8.1.0"); file.UpdateNpmPackage("typescript", "4.2.3"); file.UpdateNpmPackage("webpack", "5.28.0"); file.UpdateNpmPackage("webpack-cli", "4.6.0"); file.UpdateNpmPackage("webpack-notifier", "1.13.0"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ForeachCodeFile(@"*.csproj", file => { file.Replace(@"\Extensions\", @"\Framework\"); }); uctx.ForeachCodeFile(@"*.sln", file => { file.Replace(@"""Extensions\", @"""Framework\"); }); uctx.ChangeCodeFile(@"Southwind.React\webpack.config.js", file => { file.Replace(@"/Extensions/", @"/Framework/"); }); uctx.ChangeCodeFile(@"Southwind.React/tsconfig.json", file => { file.Replace(@"/Extensions/", @"/Framework/"); }); uctx.ChangeCodeFile(@"Southwind.React/package.json", file => { file.Replace(@"/Extensions/", @"/Framework/"); }); uctx.ChangeCodeFile(@"Southwind.React/Dockerfile", file => { file.Replace(@"""Extensions/", @"""Framework/"); }); uctx.ChangeCodeFile(@".gitmodules", file => { file.RemoveAllLines(a => a.Contains("extensions", StringComparison.InvariantCultureIgnoreCase)); }); uctx.ForeachCodeFile(@"*.ts, *.tsx", file => { file.Replace(@"../../../../Extensions/Signum.React.Extensions/", @"@extensions/"); file.Replace(@"../../../Extensions/Signum.React.Extensions/", @"@extensions/"); file.Replace(@"../../Extensions/Signum.React.Extensions/", @"@extensions/"); file.Replace(@"../../../../Framework/Signum.React/Scripts/", @"@framework/"); file.Replace(@"../../../Framework/Signum.React/Scripts/", @"@framework/"); file.Replace(@"../../Framework/Signum.React/Scripts/", @"@framework/"); }); if (SafeConsole.Ask("Do you want to delete 'Extensions' folder with all his content?")) { Directory.Delete(Path.Combine(uctx.RootFolder, "Extensions"), true); Console.WriteLine("deleted"); } }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@".gitignore", file => { file.InsertAfterLastLine( a => a.Contains("ts_out"), @"/Southwind.React/TensorFlowModels/**"); }); uctx.ChangeCodeFile(@"Southwind.Logic/Southwind.Logic.csproj", file => { file.Replace( @"Signum.Engine.MachineLearning.CNTK\Signum.Engine.MachineLearning.CNTK.csproj", @"Signum.Engine.MachineLearning.TensorFlow\Signum.Engine.MachineLearning.TensorFlow.csproj"); }, WarningLevel.Warning); uctx.ChangeCodeFile(@"Southwind.React/Southwind.React.csproj", file => { file.ReplaceLine(a => a.Contains("CNTK.CPUOnly"), @"<PackageReference Include=""SciSharp.TensorFlow.Redist"" Version=""2.3.1"" />" ); }, WarningLevel.Warning); uctx.ChangeCodeFile(@"Southwind.Logic/Starter.cs", file => { file.Replace( @"using Signum.Engine.MachineLearning.CNTK;", @"using Signum.Engine.MachineLearning.TensorFlow;"); file.Replace( @"CNTKPredictorAlgorithm.NeuralNetwork, new CNTKNeuralNetworkPredictorAlgorithm()", @"TensorFlowPredictorAlgorithm.NeuralNetworkGraph, new TensorFlowNeuralNetworkPredictor()"); }, WarningLevel.Warning); uctx.ChangeCodeFile(@"Southwind.Terminal/SouthwindMigrations.cs", file => { file.Replace( @"CNTKPredictorAlgorithm.NeuralNetwork", @"TensorFlowPredictorAlgorithm.NeuralNetworkGraph"); file.Replace( @"Learner = NeuralNetworkLearner.MomentumSGD", @"Optimizer = TensorFlowOptimizer.GradientDescentOptimizer"); file.Replace( @"LossFunction = NeuralNetworkEvalFunction.SquaredError", @"LossFunction = NeuralNetworkEvalFunction.MeanSquaredError"); file.ReplaceBetweenIncluded( a => a.Contains("LearningRate = 0.1,"), a => a.Contains("LearningUnitGain = false,"), @"LearningRate = 0.0001,"); }, WarningLevel.Warning); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile($@"Southwind.React/App/MainPublic.tsx", file => { file.Replace( "import * as moment from \"moment\"", "import * as luxon from \"luxon\""); file.RemoveAllLines( l => l.Contains("require('moment/locale") ); file.RemoveAllLines( l => l.Contains("ConfigureReactWidgets.asumeGlobalUtcMode(moment, false);") ); file.ReplaceBetweenExcluded( l => l.Contains("const culture = ci.name"), l => l.Contains("});"), @" luxon.Settings.defaultLocale = culture; numbro.setLanguage(culture);" ); }); uctx.ForeachCodeFile($@"*.tsx, *.ts", uctx.ReactDirectory, file => { file.Replace("import * as moment from 'moment'", "import { DateTime } from 'luxon'"); file.Replace("format()", "toISO()"); file.Replace("moment()", "DateTime.local()"); file.Replace("moment(", "DateTime.fromISO("); file.Replace(".fromNow(true)", ".toRelative()"); }); uctx.ChangeCodeFile($@"Southwind.React/App/vendors.js", file => { file.Replace( "require(\"moment\");", "require(\"luxon\");"); }); uctx.ChangeCodeFile($@"Southwind.React/package.json", file => { file.ReplaceLine(a => a.Contains("\"moment\""), @"""@types/luxon"": ""1.24.4"", ""luxon"": ""1.25.0""," ); }); uctx.ChangeCodeFile($@"Southwind.React/webpack.config.js", file => { file.RemoveAllLines(a => a.Contains("webpack.ContextReplacementPlugin")); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React/package.json", file => { file.UpdateNpmPackage("ts-loader", "9.2.5"); file.UpdateNpmPackage("typescript", "4.4.2"); }); uctx.ChangeCodeFile(@"Southwind.React/Southwind.React.csproj", file => { file.UpdateNugetReference("Microsoft.TypeScript.MSBuild", "4.4.2"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React/Views/Home/Index.cshtml", file => { file.InsertBeforeFirstLine(a => a.Contains("pre.innerText = error.stack;"), @"pre.style.whiteSpace = ""pre-wrap"";"); }); uctx.ChangeCodeFile(@"Southwind.React/App/MainPublic.tsx", file => { file.ReplaceLine(a => a.Contains("window.onerror = (message: Event | string, filename?: string, lineno?:"), @"ErrorModal.register();"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React\tsconfig.json", file => { file.Replace(@"""target"": ""es5"",", @"""target"": ""ES2017"","); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React/package.json", file => { file.ReplaceLine(a => a.Contains("msal"), @"""@azure/msal-browser"": ""2.14.1"","); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React/package.json", file => { file.UpdateNpmPackage("react-widgets", "5.0.3"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React\Dockerfile", file => { file.RemoveAllLines(a => a == @$ "RUN dotnet build " "{uctx.ApplicationName}.React.csproj" " -c Release # -o /app/build"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ForeachCodeFile("*.csproj", file => { file.Replace(@"<TargetFramework>net5.0</TargetFramework>", @"<TargetFramework>net6.0</TargetFramework>"); file.UpdateNugetReference("Microsoft.Extensions.Configuration", "6.0.0"); file.UpdateNugetReference("Microsoft.Extensions.Configuration.Binder", "6.0.0"); file.UpdateNugetReference("Microsoft.Extensions.Configuration.Json", "6.0.0"); file.UpdateNugetReference("Microsoft.Extensions.Configuration.UserSecrets", "6.0.0"); file.UpdateNugetReference("Signum.TSGenerator", "6.0.0"); file.UpdateNugetReference("Selenium.WebDriver.ChromeDriver", "95.0.4638.6900"); }); uctx.ChangeCodeFile("Southwind.Terminal/Program.cs", file => { file.Replace("AddUserSecrets<Program>()", "AddUserSecrets<Program>(optional: true)\n"); }); uctx.ForeachCodeFile("*.cs", file => { file.Replace(new Regex(@"\bDate.Today\b"), "TimeZoneManager.Now"); file.Replace(new Regex(@"\bDate\b"), "DateOnly"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile("deployToAzure.ps1", file => { file.InsertAfterFirstLine(a => a.Contains("docker push"), @"az webapp restart --name southwind-webapp --resource-group southwind-resourceGroup"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile("Southwind.Logic/Starter.cs", file => { file.Replace( "typeof(UserChartPartEntity),", "typeof(UserChartPartEntity), typeof(CombinedUserChartPartEntity),"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile("Southwind.Terminal/SouthwindMigrations.cs", file => { file.ReplaceLine(a => a.Contains("UserAssetsImporter.Import(bytes, preview);"), @"using (UserHolder.UserSession(AuthLogic.SystemUser!)) UserAssetsImporter.Import(bytes, preview); "); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React\Southwind.React.csproj", file => { file.UpdateNugetReference("Microsoft.TypeScript.MSBuild", "4.1.4"); file.WarningLevel = WarningLevel.Warning; file.UpdateNugetReference("Swashbuckle.AspNetCore", "6.0.3"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.Terminal\Program.cs", file => { file.ReplaceLine(a => a.Contains(@"{""N"", NewDatabase},"), @"{""N"", Administrator.NewDatabase},"); file.ReplaceLine(a => a.Contains(@"{""S"", Synchronize},"), @"{""S"", Administrator.Synchronize},"); file.ReplaceBetween(a => a.Contains("public static void NewDatabase()"), +0, a => a.Contains(@"Console.WriteLine(""Done."");"), +1, ""); file.ReplaceBetween(a => a.Contains("static void Synchronize()"), +0, a => a.Contains(@"command.OpenSqlFileRetry();"), +1, ""); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React\webpack.config.dll.js", file => { file.ReplaceLine( a => a.Contains(@"context: path.resolve(__dirname, ""App"")"), @"context: path.resolve(__dirname, ""App""), entryOnly: false," ); file.InsertAfterFirstLine( a => a.Contains(@"require('assets-webpack-plugin');"), "//const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;" ); file.InsertBeforeFirstLine( a => a.Contains(@"new webpack.DllPlugin({"), "//new BundleAnalyzerPlugin()," ); }); uctx.ChangeCodeFile(@"Southwind.React\webpack.config.js", file => { file.InsertAfterFirstLine( a => a.Contains(@"require('webpack-notifier')"), "//const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;" ); file.InsertBeforeFirstLine( a => a.Contains(@"new webpack.DllReferencePlugin({"), "//new BundleAnalyzerPlugin()," ); }); uctx.ChangeCodeFile(@"Southwind.React\package.json", file => { file.InsertAfterFirstLine( a => a.Contains(@"""webpack"""), @"""webpack-bundle-analyzer"": ""4.4.0""," ); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.Logic/Starter.cs", file => { file.InsertAfterFirstLine(line => line.Contains("UserQueryLogic.RegisterRoleTypeCondition"), "UserQueryLogic.RegisterTranslatableRoutes();"); file.InsertAfterFirstLine(line => line.Contains("UserChartLogic.RegisterRoleTypeCondition"), "UserChartLogic.RegisterTranslatableRoutes();"); file.InsertAfterFirstLine(line => line.Contains("DashboardLogic.RegisterRoleTypeCondition"), "DashboardLogic.RegisterTranslatableRoutes();"); file.InsertAfterFirstLine(line => line.Contains("ToolbarLogic.Start(sb);"), "ToolbarLogic.RegisterTranslatableRoutes();"); file.InsertAfterFirstLine(line => line.Contains("TranslationLogic.Start("), "TranslatedInstanceLogic.Start(sb, () => CultureInfo.GetCultureInfo(\"en\"));"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React/Dockerfile", file => { file.ReplaceBetweenExcluded(a => a.Contains("WORKDIR /app"), a => a.Contains("EXPOSE 80"), @"ENV TZ=Europe/Berlin RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone"); file.Replace("CNTK", "TensorFlow"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile("Southwind.React/package.json", file => { file.UpdateNpmPackage("ts-loader", "8.0.11"); file.UpdateNpmPackage("typescript", "4.1.2"); }); uctx.ChangeCodeFile("Southwind.React/Southwind.React.csproj", file => { file.UpdateNugetReference("Microsoft.TypeScript.MSBuild", "4.1.2"); }); uctx.ChangeCodeFile("Southwind.React/tsconfig.json", file => { file.RemoveAllLines(a => a.Contains(@"""baseUrl"": ""."",")); file.Replace("\"*\": [", "temp123"); file.Replace("\"*\"", "\"./*\""); file.Replace("temp123", "\"*\": ["); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile($@"Southwind.React/App/MainPublic.tsx", file => { file.RemoveAllLines( l => l.Contains("import numbro from \"numbro\"") ); file.Replace("reloadTypes }", "NumberFormatSettings, reloadTypes }"); file.RemoveAllLines( l => l.Contains("numbro.registerLanguage") ); file.ReplaceLine( l => l.Contains("numbro.setLanguage"), "NumberFormatSettings.defaultNumberFormatLocale = culture;" ); }); uctx.ForeachCodeFile($@"*.tsx, *.ts", uctx.ReactDirectory, file => { file.Replace(@"import numbro from ""numbro""", "import { toNumberFormat } from '@framework/Reflection'"); file.Replace(@"import numbro from 'numbro'", "import { toNumberFormat } from '@framework/Reflection'"); file.Replace(new Regex(@"numbro\((?<val>::EXPR::)\)\.format\((?<frmt>::EXPR::)\)").WithMacros(), m => $@"toNumberFormat({m.Groups["frmt"].Value})/*move-to-local-var*/.format({m.Groups["val"].Value})"); }); uctx.ChangeCodeFile($@"Southwind.React/App/vendors.js", file => { file.RemoveAllLines(a => a.Contains("require(\"numbro\");")); }); uctx.ChangeCodeFile($@"Southwind.React\package.json", file => { file.RemoveAllLines(a => a.Contains("\"numbro\"")); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile("Southwind.React/package.json", file => { file.InsertAfterFirstLine(a => a.Contains("\"homepage\""), @"""resolutions"": { ""@types/react"": ""file:../Framework/Signum.React/node_modules/@types/react"" },"); file.UpdateNpmPackage("react", "16.14.0"); file.UpdateNpmPackage("react-bootstrap", "1.4.0"); file.UpdateNpmPackage("react-dom", "16.14.0"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ChangeCodeFile(@"Southwind.React\Views\Home\Index.cshtml", file => { file.InsertAfterFirstLine(a => a.Contains(@"})(window.navigator.userAgent.toLowerCase());"), @"/** * @@param {...(a: HTMLElement) => void } complete - Blabla */ function newElement(tagName, complete) { var result = document.createElement(tagName); complete(result); return result; } window.onerror = function (message, filename, lineno, colno, error) { var spinner = document.querySelector(""#reactDiv .loading-spinner""); spinner.parentElement.removeChild(spinner); var title = document.querySelector(""#reactDiv h3"").replaceWith( newElement(""div"", function (div) { div.style.fontFamily = ""'Segoe UI', 'Source Sans Pro' , Calibri, Candara, Arial, sans-serif""; div.style.fontSize = ""1.3rem""; div.appendChild(newElement(""h3"", function (h3) { h3.appendChild(newElement(""span"", function (span) { span.style.color = ""red""; span.innerText = error.name; })); h3.appendChild(newElement(""span"", function (span) { span.style.color = ""darkread""; span.style.marginLeft = ""10px""; span.innerText = error.message; })); })); div.appendChild(newElement(""pre"", function (pre) { pre.innerText = error.stack; })); })); };"); file.ReplaceLine(a => a.Contains("const scriptToLoad = ["), @"(function () { var scriptToLoad = ["); file.ReplaceLine(a => a.Contains("loadNextScript();"), @" loadNextScript(); })();"); SafeConsole.WriteLineColor(ConsoleColor.Red, "Please 'Format Document' '" + file.FilePath + "' in Visual Studio"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ForeachCodeFile("*.csproj", file => { file.UpdateNugetReference(@"Microsoft.TypeScript.MSBuild", @"4.2.2"); file.UpdateNugetReference(@"Microsoft.NET.Test.Sdk", @"16.9.1"); file.UpdateNugetReference(@"Selenium.Chrome.WebDriver", @"85.0.0"); }); uctx.ChangeCodeFile("Southwind.React/package.json", file => { file.UpdateNpmPackage("ts-loader", "8.0.17"); file.UpdateNpmPackage("typescript", "4.2.2"); }); }
public override void Execute(UpgradeContext uctx) { uctx.ForeachCodeFile(@"*.csproj", file => { file.RemoveAllLines(a => a.Contains("<Platforms>")); file.ReplaceBetweenIncluded( a => a.Contains("<PropertyGroup Condition="), a => a.Contains("</PropertyGroup>"), ""); }); uctx.ChangeCodeFile(@"Southwind.sln", file => { file.Replace("x64", "Any CPU"); }); }