From 43024c6c309d73e95eac34a71b34be23c41baea6 Mon Sep 17 00:00:00 2001 From: "phares@iscn5cg20977xq" Date: Mon, 4 Aug 2025 16:58:37 -0700 Subject: [PATCH] Export run-data-sheet-root in last-update-user of logistics Started Bun support but CORS fails process-data-standard-format code alignment --- Adaptation/.editorconfig | 3 +- Adaptation/.vscode/launch.json | 2 +- Adaptation/.vscode/tasks.json | 133 +++++++++++++- .../FileHandlers/OpenInsight/FileRead.cs | 9 - .../FileHandlers/TIBCO/Transport/Common.cs | 3 + .../FileHandlers/TIBCO/Transport/Job.cs | 164 ++++++++++-------- .../TIBCO/Transport/ReactorRoot.cs | 6 +- .../TIBCO/Transport/RunDataSheetRoot.cs | 7 +- .../Shared/ProcessDataStandardFormat.cs | 6 +- Adaptation/_Tests/Static/wizard.js | 20 +++ Adaptation/bun.lock | 76 ++++++++ Adaptation/package.json | 43 +++-- Adaptation/tsconfig.json | 29 ++++ 13 files changed, 390 insertions(+), 111 deletions(-) create mode 100644 Adaptation/_Tests/Static/wizard.js create mode 100644 Adaptation/bun.lock create mode 100644 Adaptation/tsconfig.json diff --git a/Adaptation/.editorconfig b/Adaptation/.editorconfig index b22ed15..e393d5b 100644 --- a/Adaptation/.editorconfig +++ b/Adaptation/.editorconfig @@ -110,7 +110,7 @@ dotnet_diagnostic.CA2254.severity = none # CA2254: The logging message template dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2"); dotnet_diagnostic.IDE0004.severity = warning # IDE0004: Cast is redundant. -dotnet_diagnostic.IDE0005.severity = warning # Using directive is unnecessary +dotnet_diagnostic.IDE0005.severity = none # Using directive is unnecessary dotnet_diagnostic.IDE0028.severity = none # IDE0028: Collection initialization can be simplified dotnet_diagnostic.IDE0031.severity = warning # Use null propagation (IDE0031) dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed @@ -122,6 +122,7 @@ dotnet_diagnostic.IDE0290.severity = none # Use primary constructor [Distance]cs dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization can be simplified dotnet_diagnostic.IDE0301.severity = none #IDE0301: Collection initialization can be simplified dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified +dotnet_diagnostic.MSTEST0015.severity = none # MSTEST0015: Test method {method} should not be ignored dotnet_diagnostic.MSTEST0037.severity = error # MSTEST0037: Use proper 'Assert' methods dotnet_diagnostic.SYSLIB1045.severity = none # SYSLIB1045: diagnostics for regex source generation dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning diff --git a/Adaptation/.vscode/launch.json b/Adaptation/.vscode/launch.json index ca8ab68..91f2aae 100644 --- a/Adaptation/.vscode/launch.json +++ b/Adaptation/.vscode/launch.json @@ -4,7 +4,7 @@ "name": ".NET Core Attach", "type": "coreclr", "request": "attach", - "processId": 8912 + "processId": 18520 } ] } diff --git a/Adaptation/.vscode/tasks.json b/Adaptation/.vscode/tasks.json index 57ed7a7..13003fa 100644 --- a/Adaptation/.vscode/tasks.json +++ b/Adaptation/.vscode/tasks.json @@ -1,19 +1,134 @@ { "version": "2.0.0", + "inputs": [ + { + "default": "Development", + "description": "Which ASP Net Core Environment?", + "id": "ASPNETCORE_ENVIRONMENT", + "options": [ + "Development", + "Production" + ], + "type": "pickString" + }, + { + "default": "{AssemblyTitle}", + "description": "What Assembly Title?", + "id": "AssemblyTitle", + "type": "promptString" + }, + { + "default": "{Build.BuildId}", + "description": "Which Build BuildId?", + "id": "Build.BuildId", + "type": "promptString" + }, + { + "default": "{Build.Reason}", + "description": "Which Build Reason?", + "id": "Build.Reason", + "type": "promptString" + }, + { + "default": "{Build.Repository.Id}", + "description": "Which Build Repository Id?", + "id": "Build.Repository.Id", + "type": "promptString" + }, + { + "default": "{Build.Repository.Name}", + "description": "Which Build Repository Name?", + "id": "Build.Repository.Name", + "type": "promptString" + }, + { + "default": "{Build.SourceVersion}", + "description": "Which Build Source Version?", + "id": "Build.SourceVersion", + "type": "promptString" + }, + { + "default": "Debug", + "description": "Which Configuration?", + "id": "Configuration", + "options": [ + "Debug", + "Release" + ], + "type": "pickString" + }, + { + "default": "net8.0", + "description": "Which Core Version?", + "id": "CoreVersion", + "options": [ + "net8.0" + ], + "type": "pickString" + }, + { + "default": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe", + "description": "Which MS Build?", + "id": "MSBuild", + "type": "promptString" + }, + { + "default": "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/", + "description": "Which Nuget Source?", + "id": "NugetSource", + "type": "promptString" + }, + { + "default": "win-x64", + "description": "Which Runtime?", + "id": "Runtime", + "options": [ + "win-x64", + "win-x32", + "linux-x64", + "linux-x32" + ], + "type": "pickString" + }, + { + "default": "L:/", + "description": "Which System DefaultWorkingDirectory?", + "id": "System.DefaultWorkingDirectory", + "options": [ + "L:/", + "D:/", + "C:/" + ], + "type": "pickString" + }, + { + "default": "v4.8", + "description": "Which Core Target Framework Version?", + "id": "TargetFrameworkVersion", + "options": [ + "v4.8" + ], + "type": "pickString" + }, + { + "default": "{UserSecretsId}", + "description": "Which Core User Secrets Id?", + "id": "UserSecretsId", + "type": "promptString" + } + ], "tasks": [ { "label": "Build", "command": "dotnet", "type": "process", "args": [ - "build", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" + "build" ], "problemMatcher": "$msCompile" }, { - "label": "Test-Debug", + "label": "Test Debug", "command": "dotnet", "type": "process", "args": [ @@ -24,7 +139,7 @@ "problemMatcher": "$msCompile" }, { - "label": "Test-Release", + "label": "Test Release", "command": "dotnet", "type": "process", "args": [ @@ -50,7 +165,7 @@ "problemMatcher": "$msCompile" }, { - "label": "Format-Whitespaces", + "label": "Format Whitespaces", "command": "dotnet", "type": "process", "args": [ @@ -87,13 +202,13 @@ "problemMatcher": "$msCompile" }, { - "label": "Project", + "label": "Code Project", "type": "shell", "command": "code ../MET08DDUPSP1TBI.csproj", "problemMatcher": [] }, { - "label": "Readme", + "label": "Code Read Me", "type": "shell", "command": "code ../README.md", "problemMatcher": [] @@ -113,7 +228,7 @@ "problemMatcher": [] }, { - "label": "Git Config", + "label": "Code Git Config", "type": "shell", "command": "code ../.git/config", "problemMatcher": [] diff --git a/Adaptation/FileHandlers/OpenInsight/FileRead.cs b/Adaptation/FileHandlers/OpenInsight/FileRead.cs index 91aff8f..6cb4015 100644 --- a/Adaptation/FileHandlers/OpenInsight/FileRead.cs +++ b/Adaptation/FileHandlers/OpenInsight/FileRead.cs @@ -119,15 +119,6 @@ public class FileRead : Shared.FileRead, IFileRead if (!Directory.Exists(duplicateDirectory)) _ = Directory.CreateDirectory(duplicateDirectory); string successDirectory = _FileConnectorConfiguration.AlternateTargetFolder; - if (!Directory.Exists(Path.Combine(duplicateDirectory, "1"))) - { - string parentParent = GetParentParent(_FileConnectorConfiguration.SourceFileLocation); - if (parentParent.Contains(_CellInstanceName)) - parentParent = Path.GetDirectoryName(parentParent); - duplicateDirectory = Path.Combine(parentParent, "Data"); - if (!Directory.Exists(duplicateDirectory)) - _ = Directory.CreateDirectory(duplicateDirectory); - } if (descriptions.Count == 0 || tests.Length == 0) duplicateFile = Path.Combine(duplicateDirectory, Path.GetFileName(reportFullPath)); else diff --git a/Adaptation/FileHandlers/TIBCO/Transport/Common.cs b/Adaptation/FileHandlers/TIBCO/Transport/Common.cs index 199ccdc..9d4a4fd 100644 --- a/Adaptation/FileHandlers/TIBCO/Transport/Common.cs +++ b/Adaptation/FileHandlers/TIBCO/Transport/Common.cs @@ -11,6 +11,7 @@ public class Common public int? ReactorNumber { get; } public string? Zone { get; } public string? Employee { get; } + public RunDataSheetRoot? RunDataSheetRoot { get; } public WorkOrder? WorkOrder { get; } public Common(string? layer, @@ -19,6 +20,7 @@ public class Common int? reactor, string? zone, string? employee, + RunDataSheetRoot? runDataSheetRoot, WorkOrder? workOrder) { Layer = layer; @@ -27,6 +29,7 @@ public class Common ReactorNumber = reactor; Zone = zone; Employee = employee; + RunDataSheetRoot = runDataSheetRoot; WorkOrder = workOrder; } diff --git a/Adaptation/FileHandlers/TIBCO/Transport/Job.cs b/Adaptation/FileHandlers/TIBCO/Transport/Job.cs index 3f27a81..bfd9cad 100644 --- a/Adaptation/FileHandlers/TIBCO/Transport/Job.cs +++ b/Adaptation/FileHandlers/TIBCO/Transport/Job.cs @@ -55,6 +55,7 @@ public partial class Job const string hyphen = "-"; const string bioRad2 = "BIORAD2"; const string bioRad3 = "BIORAD3"; + RunDataSheetRoot? runDataSheetRoot; const string twoAlphaPattern = "^[a-zA-z]{2,3}"; const string reactorNumberPattern = @"^[0-9]{2}--"; Input input = JsonSerializer.Deserialize(mid) ?? throw new Exception(); @@ -64,11 +65,9 @@ public partial class Job DateTime = new DateTime(sequence); const string dep08CEPIEPSILON = "DEP08CEPIEPSILON"; if (input.EquipmentType == dep08CEPIEPSILON) - { - common = Get(input, httpClient); - } + common = ReactorGet(input, httpClient); else if (!string.IsNullOrEmpty(input.MID) && !string.IsNullOrEmpty(input.MesEntity) && Regex.IsMatch(input.MID, reactorNumberPattern) && input.MesEntity is bioRad2 or bioRad3) - common = Get(input, barcodeHostFileShare); + common = Get(input, barcodeHostFileShare, httpClient); else { reactorNumber = GetReactorNumber(input); @@ -80,11 +79,12 @@ public partial class Job reactor: null, zone: null, employee: null, + runDataSheetRoot: null, workOrder: workOrder); else if (!string.IsNullOrEmpty(input.MID) && input.MID.Length is 2 or 3 && Regex.IsMatch(input.MID, twoAlphaPattern)) common = GetTwoAlphaPattern(metrologyFileShare, input); else - common = Get(input); + common = Get(input, httpClient); } bool isValid = IsValid(common.RDSNumber); if (isValid) @@ -99,11 +99,19 @@ public partial class Job psn: common.PSN, reactorNumber: common.ReactorNumber, zone: hyphen); + if (commonB.RDSNumber is null || common.RunDataSheetRoot is not null) + runDataSheetRoot = common.RunDataSheetRoot; + else + { + try + { runDataSheetRoot = GetRunDataSheetRoot(httpClient, commonB.RDSNumber.Value); } + catch (Exception) + { runDataSheetRoot = null; } + } Qty = "1"; Status = hyphen; // INFO CreationUser = hyphen; // ? LotState = hyphen; // LAYER2 - LastUpdateUser = hyphen; // ? Equipment = input.MesEntity; // ? PackageName = hyphen; // WAFER_ID Qty2 = input.Sequence; // SEQUENCE @@ -111,30 +119,24 @@ public partial class Job IsAreaSi = input.Area == "Si"; // N/A StateModel = input.EquipmentType; // ? JobName = DateTime.Ticks.ToString(); // ? - BasicType = GetComment(hyphen, httpClient, commonB); // BASIC_TYPE + BasicType = GetComment(hyphen, runDataSheetRoot, commonB); // BASIC_TYPE AutomationMode = string.Concat(DateTime.Ticks, ".", input.MesEntity); // ? SpecName = !string.IsNullOrEmpty(commonB.Layer) ? commonB.Layer : hyphen; // LAYER ProductName = !string.IsNullOrEmpty(commonB.PSN) ? commonB.PSN : hyphen; // PRODUCT ProcessSpecName = !string.IsNullOrEmpty(commonB.Zone) ? commonB.Zone : hyphen; // WAFER_POS LotName = commonB.RDSNumber is not null ? commonB.RDSNumber.Value.ToString() : input.MID; // MID + LastUpdateUser = string.IsNullOrEmpty(runDataSheetRoot?.Json) ? "{}" : runDataSheetRoot.Json; // NULL_DATA ProcessType = commonB.ReactorNumber is not null ? commonB.ReactorNumber.Value.ToString() : hyphen; // PROCESS_JOBID Items.Add(new Item { Name = "0", Type = "NA", Number = (0 + 1).ToString(), Qty = "1", CarrierName = hyphen }); } } - private static string GetComment(string hyphen, HttpClient httpClient, CommonB commonB) + private static string GetComment(string hyphen, RunDataSheetRoot? runDataSheetRoot, CommonB commonB) { string result; string? loadLockSide = commonB.LoadLockSide; if (string.IsNullOrEmpty(loadLockSide) && commonB.RDSNumber is not null) - { - RunDataSheetRoot? runDataSheetRoot; - try - { runDataSheetRoot = GetRunDataSheetRoot(httpClient, commonB.RDSNumber.Value); } - catch (Exception) - { runDataSheetRoot = null; } loadLockSide = runDataSheetRoot?.RunDataSheet?.LoadLockSide; - } if (string.IsNullOrEmpty(loadLockSide) || string.IsNullOrEmpty(commonB.ReactorType)) result = hyphen; else @@ -270,8 +272,9 @@ public partial class Job return result; } - private static Common Get(Input input) + private static Common Get(Input input, HttpClient httpClient) { + Common result; string? psn; string? rds; int rdsCheck; @@ -281,6 +284,7 @@ public partial class Job string? reactor; string? employee; int? reactorNumber; + RunDataSheetRoot? runDataSheetRoot; string mid = string.IsNullOrEmpty(input.MID) ? string.Empty : input.MID; if (mid.Length > 2 && mid[0] == '1' && (mid[1] == 'T' || mid[1] == 't')) mid = mid.Substring(2); @@ -290,13 +294,14 @@ public partial class Job (reactor, rds) = GetReactorAndRDS(input.MID, mid, segments); rdsNumber = string.IsNullOrEmpty(rds) || !int.TryParse(rds, out rdsCheck) ? null : rdsCheck; bool isInvalid = IsInvalid(rdsNumber); - if (isInvalid || !int.TryParse(reactor, out int reactorCheck)) + if (rdsNumber is null || isInvalid || !int.TryParse(reactor, out int reactorCheck)) { psn = null; zone = null; layer = null; employee = null; reactorNumber = null; + runDataSheetRoot = null; } else { @@ -304,14 +309,17 @@ public partial class Job reactorNumber = reactorCheck; (layer, psn) = GetLayerAndPSN(segments); employee = segments.Length <= 4 ? null : segments[4]; + runDataSheetRoot = GetRunDataSheetRoot(httpClient, rdsNumber.Value); } - return new(layer: layer, - psn: psn, - rdsNumber: rdsNumber, - reactor: reactorNumber, - zone: zone, - employee: employee, - workOrder: null); + result = new(layer: layer, + psn: psn, + rdsNumber: rdsNumber, + reactor: reactorNumber, + zone: zone, + employee: employee, + runDataSheetRoot: runDataSheetRoot, + workOrder: null); + return result; } private static string[] GetDirectories(string fileShare) @@ -330,6 +338,7 @@ public partial class Job private static Common GetTwoAlphaPattern(string metrologyFileShare, Input input) { + Common result; string lines; const int zero = 0; string? psn = null; @@ -369,13 +378,15 @@ public partial class Job zone = workMaterialOut.Zone; break; } - return new(layer: layer, - psn: psn, - rdsNumber: rdsNumber, - reactor: reactor, - zone: zone, - employee: null, - workOrder: null); + result = new(layer: layer, + psn: psn, + rdsNumber: rdsNumber, + reactor: reactor, + zone: zone, + employee: null, + runDataSheetRoot: null, + workOrder: null); + return result; } private static List GetFiles(Input input, string barcodeHostFileShare) @@ -414,27 +425,16 @@ public partial class Job return result; } - private static Common Get(Input input, HttpClient httpClient) + private static Common ReactorGet(Input input, HttpClient httpClient) { int? rds; string? psn; Common result; - Task streamTask; - Task httpResponseMessageTask; string mid = string.IsNullOrEmpty(input.MID) ? string.Empty : input.MID; JsonSerializerOptions jsonSerializerOptions = new() { PropertyNameCaseInsensitive = true }; int? reactor = mid.Length < 2 || !int.TryParse(mid.Substring(0, 2), out int reactorNumber) ? null : reactorNumber; - httpResponseMessageTask = httpClient.GetAsync($"{httpClient.BaseAddress}/reactors/{reactor}"); - httpResponseMessageTask.Wait(); - if (httpResponseMessageTask.Result.StatusCode != System.Net.HttpStatusCode.OK) - throw new Exception($"Unable to OI <{httpResponseMessageTask.Result.StatusCode}>"); - streamTask = httpResponseMessageTask.Result.Content.ReadAsStreamAsync(); - streamTask.Wait(); - if (!streamTask.Result.CanRead) - throw new NullReferenceException(nameof(streamTask)); - ReactorRoot? reactorRoot = JsonSerializer.Deserialize(streamTask.Result, jsonSerializerOptions); - streamTask.Result.Dispose(); - if (reactorRoot is null || reactor != reactorRoot.Reactor.ReactorNo || reactorRoot.Reactor.LoadedRDS is null || reactorRoot.Reactor.LoadedRDS.Length < 1) + ReactorRoot? reactorRoot = reactor is null ? null : GetReactorRoot(httpClient, jsonSerializerOptions, reactor); + if (reactorRoot?.Reactor is null || reactor != reactorRoot.Reactor.ReactorNo || reactorRoot.Reactor.LoadedRDS is null || reactorRoot.Reactor.LoadedRDS.Length < 1) { rds = null; psn = null; @@ -444,13 +444,14 @@ public partial class Job reactor: reactor, zone: null, employee: null, + runDataSheetRoot: null, workOrder: null); } else { rds = reactorRoot.Reactor.LoadedRDS[0]; RunDataSheetRoot? runDataSheetRoot = GetRunDataSheetRoot(httpClient, rds.Value); - if (runDataSheetRoot is null || reactor != runDataSheetRoot.RunDataSheet.Reactor) + if (runDataSheetRoot?.RunDataSheet is null || reactor != runDataSheetRoot.RunDataSheet.Reactor) { psn = null; result = new(layer: null, @@ -459,6 +460,7 @@ public partial class Job reactor: reactor, zone: null, employee: null, + runDataSheetRoot: runDataSheetRoot, workOrder: null); } else @@ -470,30 +472,51 @@ public partial class Job reactor: reactor, zone: null, employee: null, + runDataSheetRoot: runDataSheetRoot, workOrder: null); } } return result; } - private static RunDataSheetRoot? GetRunDataSheetRoot(HttpClient httpClient, int rds) + private static ReactorRoot? GetReactorRoot(HttpClient httpClient, JsonSerializerOptions jsonSerializerOptions, int? reactor) { - RunDataSheetRoot? runDataSheetRoot; - JsonSerializerOptions jsonSerializerOptions = new() { PropertyNameCaseInsensitive = true }; - using Task httpResponseMessageTask = httpClient.GetAsync($"{httpClient.BaseAddress}/materials/rds/{rds}"); - httpResponseMessageTask.Wait(); - if (httpResponseMessageTask.Result.StatusCode != System.Net.HttpStatusCode.OK) - throw new Exception($"Unable to OI <{httpResponseMessageTask.Result.StatusCode}>"); - using Task streamTask = httpResponseMessageTask.Result.Content.ReadAsStreamAsync(); - streamTask.Wait(); - if (!streamTask.Result.CanRead) - throw new NullReferenceException(nameof(streamTask)); - runDataSheetRoot = JsonSerializer.Deserialize(streamTask.Result, jsonSerializerOptions); - streamTask.Result.Dispose(); - return runDataSheetRoot; + ReactorRoot? result; + try + { + Task httpResponseMessageTask = httpClient.GetAsync($"{httpClient.BaseAddress}/reactors/{reactor}"); + httpResponseMessageTask.Wait(); + if (httpResponseMessageTask.Result.StatusCode != System.Net.HttpStatusCode.OK) + throw new Exception($"Unable to OI <{httpResponseMessageTask.Result.StatusCode}>"); + using Task streamTask = httpResponseMessageTask.Result.Content.ReadAsStreamAsync(); + streamTask.Wait(); + result = !streamTask.Result.CanRead ? null : JsonSerializer.Deserialize(streamTask.Result, jsonSerializerOptions); + } + catch (Exception) { result = null; } + return result; } - private static Common Get(Input input, string barcodeHostFileShare) + private static RunDataSheetRoot? GetRunDataSheetRoot(HttpClient httpClient, int rds) + { + RunDataSheetRoot? result; + try + { + JsonSerializerOptions jsonSerializerOptions = new() { PropertyNameCaseInsensitive = true }; + using Task httpResponseMessageTask = httpClient.GetAsync($"{httpClient.BaseAddress}/materials/rds/{rds}"); + httpResponseMessageTask.Wait(); + if (httpResponseMessageTask.Result.StatusCode != System.Net.HttpStatusCode.OK) + throw new Exception($"Unable to OI <{httpResponseMessageTask.Result.StatusCode}>"); + Task json = httpResponseMessageTask.Result.Content.ReadAsStringAsync(); + json.Wait(); + result = JsonSerializer.Deserialize(json.Result, jsonSerializerOptions); + result ??= new RunDataSheetRoot(null); + result.Json = json.Result; + } + catch (Exception) { result = null; } + return result; + } + + private static Common Get(Input input, string barcodeHostFileShare, HttpClient httpClient) { Common result; if (string.IsNullOrEmpty(barcodeHostFileShare) || !Directory.Exists(barcodeHostFileShare)) @@ -501,6 +524,7 @@ public partial class Job int? rds; long sequence = 0; WorkOrder? workOrder; + RunDataSheetRoot? runDataSheetRoot; string mid = string.IsNullOrEmpty(input.MID) ? string.Empty : input.MID; int? reactor = mid.Length < 2 || !int.TryParse(mid.Substring(0, 2), out int reactorNumber) ? null : reactorNumber; bool parsed = !string.IsNullOrEmpty(input.Sequence) && long.TryParse(input.Sequence, out sequence); @@ -514,24 +538,28 @@ public partial class Job { rds = null; workOrder = null; + runDataSheetRoot = null; } else if (!text.Contains('.')) { workOrder = null; - rds = !int.TryParse(text.Substring(2), out int rdsNumber) ? null : rdsNumber; + rds = !int.TryParse(text.Substring(2), out int rdsNumber) || IsInvalid(rdsNumber) ? null : rdsNumber; + runDataSheetRoot = rds is null ? null : GetRunDataSheetRoot(httpClient, rds.Value); } else { rds = null; + runDataSheetRoot = null; workOrder = GetWorkOrder(new(input, text.Substring(2))); } result = new(layer: null, - psn: null, - rdsNumber: rds, - reactor: reactor, - zone: null, - employee: null, - workOrder: workOrder); + psn: null, + rdsNumber: rds, + reactor: reactor, + zone: null, + employee: null, + runDataSheetRoot: runDataSheetRoot, + workOrder: workOrder); return result; } diff --git a/Adaptation/FileHandlers/TIBCO/Transport/ReactorRoot.cs b/Adaptation/FileHandlers/TIBCO/Transport/ReactorRoot.cs index 53c00d1..c34f157 100644 --- a/Adaptation/FileHandlers/TIBCO/Transport/ReactorRoot.cs +++ b/Adaptation/FileHandlers/TIBCO/Transport/ReactorRoot.cs @@ -2,13 +2,15 @@ using System.Text.Json.Serialization; namespace Adaptation.FileHandlers.TIBCO.Transport; +#nullable enable + public class ReactorRoot { [JsonConstructor] - public ReactorRoot(Reactor reactor) => + public ReactorRoot(Reactor? reactor) => Reactor = reactor; - [JsonPropertyName("reactor")] public Reactor Reactor { get; } // { init; get; } + [JsonPropertyName("reactor")] public Reactor? Reactor { get; } // { init; get; } } \ No newline at end of file diff --git a/Adaptation/FileHandlers/TIBCO/Transport/RunDataSheetRoot.cs b/Adaptation/FileHandlers/TIBCO/Transport/RunDataSheetRoot.cs index 4b53cf5..e1c4991 100644 --- a/Adaptation/FileHandlers/TIBCO/Transport/RunDataSheetRoot.cs +++ b/Adaptation/FileHandlers/TIBCO/Transport/RunDataSheetRoot.cs @@ -2,13 +2,16 @@ using System.Text.Json.Serialization; namespace Adaptation.FileHandlers.TIBCO.Transport; +#nullable enable + public class RunDataSheetRoot { [JsonConstructor] - public RunDataSheetRoot(RunDataSheet runDataSheet) => + public RunDataSheetRoot(RunDataSheet? runDataSheet) => RunDataSheet = runDataSheet; - [JsonPropertyName("rds")] public RunDataSheet RunDataSheet { get; } // { init; get; } + public string? Json { get; set; } + [JsonPropertyName("rds")] public RunDataSheet? RunDataSheet { get; } // { init; get; } } \ No newline at end of file diff --git a/Adaptation/Shared/ProcessDataStandardFormat.cs b/Adaptation/Shared/ProcessDataStandardFormat.cs index a2b056e..c5110e2 100644 --- a/Adaptation/Shared/ProcessDataStandardFormat.cs +++ b/Adaptation/Shared/ProcessDataStandardFormat.cs @@ -559,15 +559,15 @@ internal class ProcessDataStandardFormat { results.Add(string.Empty); List hyphens = new(); - results.AddRange(processDataStandardFormat.InputPDSF.Header.Select(l => l.Replace('\t', '|'))); + results.AddRange(processDataStandardFormat.InputPDSF.Header.Select(l => $"|{l.Replace('\t', '|')}|")); results.Add(string.Empty); results.Add($"|{string.Join("|", processDataStandardFormat.InputPDSF.Columns)}|"); for (int i = 0; i < processDataStandardFormat.InputPDSF.Columns.Count; i++) hyphens.Add('-'); results.Add($"|{string.Join("|", hyphens)}|"); - results.AddRange(processDataStandardFormat.InputPDSF.Body.Select(l => l.Replace('\t', '|'))); + results.AddRange(processDataStandardFormat.InputPDSF.Body.Select(l => $"|{l.Replace('\t', '|')}|")); results.Add(string.Empty); - results.AddRange(processDataStandardFormat.InputPDSF.Footer.Select(l => l.Replace('\t', '|'))); + results.AddRange(processDataStandardFormat.InputPDSF.Footer.Select(l => $"|{l.Replace('\t', '|')}|")); results.Add(string.Empty); results.Add("EOF"); results.Add(string.Empty); diff --git a/Adaptation/_Tests/Static/wizard.js b/Adaptation/_Tests/Static/wizard.js new file mode 100644 index 0000000..ba357dc --- /dev/null +++ b/Adaptation/_Tests/Static/wizard.js @@ -0,0 +1,20 @@ +"use strict"; + +const rds = 'http://messa020ec.infineon.com:8080/api/oiWizard/materials/rds/1005602'; + +let workItemCollection = []; + +await fetch(rds) + .then((res) => res.text()) + .then((text) => { + const records = JSON.parse(text); + if (records != undefined) { + if (records != undefined) { + } + } + }) + .catch((e) => console.error(e)); + +workItemCollection.forEach(element => { + console.log(`{"Id": "${element.Id}", "State": "${element.State}", "ClosedDate": "${element.ClosedDate}", "TargetDate": "${element.TargetDate}", "IterationPath": "${element.IterationPath}", "AssignedTo": "${element.AssignedTo}", "Title": "${element.Title}"},`); +}); diff --git a/Adaptation/bun.lock b/Adaptation/bun.lock new file mode 100644 index 0000000..ca1ce24 --- /dev/null +++ b/Adaptation/bun.lock @@ -0,0 +1,76 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "adaptation", + "devDependencies": { + "@types/bun": "latest", + "axios": "^1.11.0", + }, + "peerDependencies": { + "typescript": "^5", + }, + }, + }, + "packages": { + "@types/bun": ["@types/bun@1.2.19", "", { "dependencies": { "bun-types": "1.2.19" } }, "sha512-d9ZCmrH3CJ2uYKXQIUuZ/pUnTqIvLDS0SK7pFmbx8ma+ziH/FRMoAq5bYpRG7y+w1gl+HgyNZbtqgMq4W4e2Lg=="], + + "@types/node": ["@types/node@24.1.0", "", { "dependencies": { "undici-types": "~7.8.0" } }, "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w=="], + + "@types/react": ["@types/react@19.1.9", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA=="], + + "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], + + "axios": ["axios@1.11.0", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA=="], + + "bun-types": ["bun-types@1.2.19", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-uAOTaZSPuYsWIXRpj7o56Let0g/wjihKCkeRqUBhlLVM/Bt+Fj9xTo+LhC1OV1XDaGkz4hNC80et5xgy+9KTHQ=="], + + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], + + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], + + "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], + + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], + + "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], + + "form-data": ["form-data@4.0.4", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow=="], + + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], + + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], + + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + + "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], + + "typescript": ["typescript@5.9.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="], + + "undici-types": ["undici-types@7.8.0", "", {}, "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw=="], + } +} diff --git a/Adaptation/package.json b/Adaptation/package.json index b1480f4..de6e90e 100644 --- a/Adaptation/package.json +++ b/Adaptation/package.json @@ -1,18 +1,29 @@ { - "scripts": { - "AA-CreateSelfDescription.Staging.v2_47_1-SP101_EQPT": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.CreateSelfDescription.Staging.v2_47_1 & ClassName~SP101_EQPT\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "BA-CreateSelfDescription.Staging.v2_47_1-SP101": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.CreateSelfDescription.Staging.v2_47_1 & ClassName~SP101\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "CA-CreateSelfDescription.Staging.v2_47_1-MET08DDUPSP1TBI": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.CreateSelfDescription.Staging.v2_47_1 & ClassName~MET08DDUPSP1TBI\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "DA-CreateSelfDescription.Staging.v2_47_1": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.CreateSelfDescription.Staging.v2_47_1\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "EA-Extract.Staging.v2_47_1-SP101_EQPT-Staging__v2_47_1__SP101_EQPT__DownloadRsMFile637953072332628623__Normal": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~SP101_EQPT & Name~Staging__v2_47_1__SP101_EQPT__DownloadRsMFile637953072332628623__Normal\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "FA-Extract.Staging.v2_47_1-SP101-Staging__v2_47_1__SP101__txt637955319879801344__Normal": "dotnet test --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~SP101 & Name~Staging__v2_47_1__SP101__txt637955319879801344__Normal\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "GA-Extract.Staging.v2_47_1-MET08DDUPSP1TBI-Staging__v2_47_1__MET08DDUPSP1TBI__MoveMatchingFiles637955319879801344__Normal": "dotnet test --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~MET08DDUPSP1TBI & Name~Staging__v2_47_1__MET08DDUPSP1TBI__MoveMatchingFiles637955319879801344__Normal\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "HA-Extract.Staging.v2_47_1-SP101-Staging__v2_47_1__SP101__pcl637812984345592512__MinFileLength": "dotnet test --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~SP101 & Name~Staging__v2_47_1__SP101__pcl637812984345592512__MinFileLength\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "HB-Extract.Staging.v2_47_1-MET08DDUPSP1TBI-Staging__v2_47_1__MET08DDUPSP1TBI__OpenInsight638052814829645888__IqsSql": "dotnet test --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~MET08DDUPSP1TBI & Name~Staging__v2_47_1__MET08DDUPSP1TBI__OpenInsight638052814829645888__IqsSql\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "IA-Extract.Staging.v2_47_1-MET08DDUPSP1TBI-Staging__v2_47_1__MET08DDUPSP1TBI__TIBCO": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~MET08DDUPSP1TBI & Name~Staging__v2_47_1__MET08DDUPSP1TBI__TIBCO\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", - "Alpha": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "kanbn.board": "kanbn board", - "kanbn.board.json": "kanbn board -j > .kanbn/board.json", - "garbage-collect": "git gc" - } + "devDependencies": { + "@types/bun": "latest", + "axios": "^1.11.0" + }, + "module": "index.ts", + "name": "adaptation", + "peerDependencies": { + "typescript": "^5" + }, + "private": true, + "scripts": { + "AA-CreateSelfDescription.Staging.v2_47_1-SP101_EQPT": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.CreateSelfDescription.Staging.v2_47_1 & ClassName~SP101_EQPT\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "Alpha": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", + "BA-CreateSelfDescription.Staging.v2_47_1-SP101": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.CreateSelfDescription.Staging.v2_47_1 & ClassName~SP101\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "CA-CreateSelfDescription.Staging.v2_47_1-MET08DDUPSP1TBI": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.CreateSelfDescription.Staging.v2_47_1 & ClassName~MET08DDUPSP1TBI\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "DA-CreateSelfDescription.Staging.v2_47_1": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.CreateSelfDescription.Staging.v2_47_1\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "EA-Extract.Staging.v2_47_1-SP101_EQPT-Staging__v2_47_1__SP101_EQPT__DownloadRsMFile637953072332628623__Normal": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~SP101_EQPT & Name~Staging__v2_47_1__SP101_EQPT__DownloadRsMFile637953072332628623__Normal\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "FA-Extract.Staging.v2_47_1-SP101-Staging__v2_47_1__SP101__txt637955319879801344__Normal": "dotnet test --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~SP101 & Name~Staging__v2_47_1__SP101__txt637955319879801344__Normal\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "GA-Extract.Staging.v2_47_1-MET08DDUPSP1TBI-Staging__v2_47_1__MET08DDUPSP1TBI__MoveMatchingFiles637955319879801344__Normal": "dotnet test --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~MET08DDUPSP1TBI & Name~Staging__v2_47_1__MET08DDUPSP1TBI__MoveMatchingFiles637955319879801344__Normal\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "garbage-collect": "git gc", + "HA-Extract.Staging.v2_47_1-SP101-Staging__v2_47_1__SP101__pcl637812984345592512__MinFileLength": "dotnet test --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~SP101 & Name~Staging__v2_47_1__SP101__pcl637812984345592512__MinFileLength\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "HB-Extract.Staging.v2_47_1-MET08DDUPSP1TBI-Staging__v2_47_1__MET08DDUPSP1TBI__OpenInsight638052814829645888__IqsSql": "dotnet test --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~MET08DDUPSP1TBI & Name~Staging__v2_47_1__MET08DDUPSP1TBI__OpenInsight638052814829645888__IqsSql\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "IA-Extract.Staging.v2_47_1-MET08DDUPSP1TBI-Staging__v2_47_1__MET08DDUPSP1TBI__TIBCO": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_47_1 & ClassName~MET08DDUPSP1TBI & Name~Staging__v2_47_1__MET08DDUPSP1TBI__TIBCO\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")", + "kanbn.board": "kanbn board", + "kanbn.board.json": "kanbn board -j > .kanbn/board.json" + }, + "type": "module" } \ No newline at end of file diff --git a/Adaptation/tsconfig.json b/Adaptation/tsconfig.json new file mode 100644 index 0000000..bfa0fea --- /dev/null +++ b/Adaptation/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + // Environment setup & latest features + "lib": ["ESNext"], + "target": "ESNext", + "module": "Preserve", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +}