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
+ }
+}