@apiconvert/core 0.1.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -175
- package/dist/condition-expression-evaluator.d.ts +4 -0
- package/dist/condition-expression-evaluator.d.ts.map +1 -0
- package/dist/condition-expression-evaluator.js +63 -0
- package/dist/condition-expression-evaluator.js.map +1 -0
- package/dist/condition-expression-parser.d.ts +26 -0
- package/dist/condition-expression-parser.d.ts.map +1 -0
- package/dist/condition-expression-parser.js +191 -0
- package/dist/condition-expression-parser.js.map +1 -0
- package/dist/condition-expression-tokenizer.d.ts +3 -0
- package/dist/condition-expression-tokenizer.d.ts.map +1 -0
- package/dist/condition-expression-tokenizer.js +103 -0
- package/dist/condition-expression-tokenizer.js.map +1 -0
- package/dist/condition-expression-types.d.ts +29 -0
- package/dist/condition-expression-types.d.ts.map +1 -0
- package/dist/condition-expression-types.js +3 -0
- package/dist/condition-expression-types.js.map +1 -0
- package/dist/condition-expression.d.ts +9 -0
- package/dist/condition-expression.d.ts.map +1 -0
- package/dist/condition-expression.js +16 -0
- package/dist/condition-expression.js.map +1 -0
- package/dist/core-utils.d.ts +11 -0
- package/dist/core-utils.d.ts.map +1 -0
- package/dist/core-utils.js +126 -0
- package/dist/core-utils.js.map +1 -0
- package/dist/index.d.ts +5 -87
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -666
- package/dist/index.js.map +1 -1
- package/dist/mapping-engine.d.ts +3 -0
- package/dist/mapping-engine.d.ts.map +1 -0
- package/dist/mapping-engine.js +18 -0
- package/dist/mapping-engine.js.map +1 -0
- package/dist/payload-converter.d.ts +7 -0
- package/dist/payload-converter.d.ts.map +1 -0
- package/dist/payload-converter.js +37 -0
- package/dist/payload-converter.js.map +1 -0
- package/dist/query-payload.d.ts +3 -0
- package/dist/query-payload.d.ts.map +1 -0
- package/dist/query-payload.js +183 -0
- package/dist/query-payload.js.map +1 -0
- package/dist/rule-executor.d.ts +3 -0
- package/dist/rule-executor.d.ts.map +1 -0
- package/dist/rule-executor.js +108 -0
- package/dist/rule-executor.js.map +1 -0
- package/dist/rules-normalizer.d.ts +3 -0
- package/dist/rules-normalizer.d.ts.map +1 -0
- package/dist/rules-normalizer.js +158 -0
- package/dist/rules-normalizer.js.map +1 -0
- package/dist/source-resolver.d.ts +4 -0
- package/dist/source-resolver.d.ts.map +1 -0
- package/dist/source-resolver.js +155 -0
- package/dist/source-resolver.js.map +1 -0
- package/dist/types.d.ts +97 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +33 -0
- package/dist/types.js.map +1 -0
- package/dist/xml-payload.d.ts +3 -0
- package/dist/xml-payload.d.ts.map +1 -0
- package/dist/xml-payload.js +61 -0
- package/dist/xml-payload.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeConversionRules = normalizeConversionRules;
|
|
4
|
+
const core_utils_1 = require("./core-utils");
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
function normalizeConversionRules(raw) {
|
|
7
|
+
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
8
|
+
if (isConversionRules(raw)) {
|
|
9
|
+
return normalizeRules(raw);
|
|
10
|
+
}
|
|
11
|
+
return emptyRules();
|
|
12
|
+
}
|
|
13
|
+
if (typeof raw === "string") {
|
|
14
|
+
try {
|
|
15
|
+
const parsed = JSON.parse(raw);
|
|
16
|
+
return normalizeConversionRules(parsed);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return emptyRules();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return emptyRules();
|
|
23
|
+
}
|
|
24
|
+
function normalizeRules(rules) {
|
|
25
|
+
const validationErrors = [];
|
|
26
|
+
return {
|
|
27
|
+
inputFormat: rules.inputFormat ?? types_1.DataFormat.Json,
|
|
28
|
+
outputFormat: rules.outputFormat ?? types_1.DataFormat.Json,
|
|
29
|
+
rules: normalizeRuleNodes(rules.rules ?? [], "rules", validationErrors),
|
|
30
|
+
validationErrors
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function emptyRules(validationErrors = []) {
|
|
34
|
+
return {
|
|
35
|
+
inputFormat: types_1.DataFormat.Json,
|
|
36
|
+
outputFormat: types_1.DataFormat.Json,
|
|
37
|
+
rules: [],
|
|
38
|
+
validationErrors
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function normalizeValueSource(source) {
|
|
42
|
+
const normalized = source ?? { type: "path" };
|
|
43
|
+
const expression = normalized.expression?.trim();
|
|
44
|
+
return {
|
|
45
|
+
...normalized,
|
|
46
|
+
paths: normalized.paths ?? [],
|
|
47
|
+
expression: expression && expression.length > 0 ? expression : null,
|
|
48
|
+
trueSource: normalized.trueSource ? normalizeValueSource(normalized.trueSource) : null,
|
|
49
|
+
falseSource: normalized.falseSource ? normalizeValueSource(normalized.falseSource) : null,
|
|
50
|
+
elseIf: (normalized.elseIf ?? []).map((branch) => {
|
|
51
|
+
const branchExpression = branch.expression?.trim();
|
|
52
|
+
return {
|
|
53
|
+
expression: branchExpression && branchExpression.length > 0 ? branchExpression : null,
|
|
54
|
+
source: branch.source ? normalizeValueSource(branch.source) : null,
|
|
55
|
+
value: branch.value ?? null
|
|
56
|
+
};
|
|
57
|
+
})
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function isConversionRules(value) {
|
|
61
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
const record = value;
|
|
65
|
+
return "rules" in record || "inputFormat" in record || "outputFormat" in record;
|
|
66
|
+
}
|
|
67
|
+
function normalizeRuleNodes(nodes, path, validationErrors) {
|
|
68
|
+
const normalized = [];
|
|
69
|
+
nodes.forEach((node, index) => {
|
|
70
|
+
const nodePath = `${path}[${index}]`;
|
|
71
|
+
const kind = normalizeNodeKind(node);
|
|
72
|
+
if (kind == null) {
|
|
73
|
+
validationErrors.push(`${nodePath}: kind is required.`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (!isSupportedRuleKind(kind)) {
|
|
77
|
+
validationErrors.push(`${nodePath}: unsupported kind '${node?.kind ?? ""}'.`);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
switch (kind) {
|
|
81
|
+
case "field":
|
|
82
|
+
normalized.push(normalizeFieldRuleNode(node, nodePath, validationErrors));
|
|
83
|
+
return;
|
|
84
|
+
case "array":
|
|
85
|
+
normalized.push(normalizeArrayRuleNode(node, nodePath, validationErrors));
|
|
86
|
+
return;
|
|
87
|
+
default:
|
|
88
|
+
normalized.push(normalizeBranchRuleNode(node, nodePath, validationErrors));
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return normalized;
|
|
92
|
+
}
|
|
93
|
+
function normalizeNodeKind(node) {
|
|
94
|
+
const normalizedKind = (node?.kind ?? "").trim().toLowerCase();
|
|
95
|
+
return normalizedKind.length > 0 ? normalizedKind : null;
|
|
96
|
+
}
|
|
97
|
+
function isSupportedRuleKind(kind) {
|
|
98
|
+
return kind === "field" || kind === "array" || kind === "branch";
|
|
99
|
+
}
|
|
100
|
+
function normalizeFieldRuleNode(field, nodePath, validationErrors) {
|
|
101
|
+
const outputPaths = normalizeOutputPaths(field.outputPaths ?? []);
|
|
102
|
+
if (outputPaths.length === 0) {
|
|
103
|
+
validationErrors.push(`${nodePath}: outputPaths is required.`);
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
kind: "field",
|
|
107
|
+
outputPaths,
|
|
108
|
+
source: normalizeValueSource(field.source),
|
|
109
|
+
defaultValue: field.defaultValue ?? ""
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function normalizeArrayRuleNode(array, nodePath, validationErrors) {
|
|
113
|
+
const outputPaths = normalizeOutputPaths(array.outputPaths ?? []);
|
|
114
|
+
if (!array.inputPath || array.inputPath.trim().length === 0) {
|
|
115
|
+
validationErrors.push(`${nodePath}: inputPath is required.`);
|
|
116
|
+
}
|
|
117
|
+
if (outputPaths.length === 0) {
|
|
118
|
+
validationErrors.push(`${nodePath}: outputPaths is required.`);
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
kind: "array",
|
|
122
|
+
inputPath: (array.inputPath ?? "").trim(),
|
|
123
|
+
outputPaths,
|
|
124
|
+
coerceSingle: array.coerceSingle ?? false,
|
|
125
|
+
itemRules: normalizeRuleNodes(array.itemRules ?? [], `${nodePath}.itemRules`, validationErrors)
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function normalizeBranchRuleNode(branch, nodePath, validationErrors) {
|
|
129
|
+
const expression = branch.expression?.trim() || null;
|
|
130
|
+
if (!expression) {
|
|
131
|
+
validationErrors.push(`${nodePath}: expression is required.`);
|
|
132
|
+
}
|
|
133
|
+
const elseIf = (branch.elseIf ?? []).map((entry, elseIfIndex) => {
|
|
134
|
+
const elseIfPath = `${nodePath}.elseIf[${elseIfIndex}]`;
|
|
135
|
+
const elseIfExpression = entry.expression?.trim() || null;
|
|
136
|
+
if (!elseIfExpression) {
|
|
137
|
+
validationErrors.push(`${elseIfPath}: expression is required.`);
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
expression: elseIfExpression,
|
|
141
|
+
then: normalizeRuleNodes(entry.then ?? [], `${elseIfPath}.then`, validationErrors)
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
return {
|
|
145
|
+
kind: "branch",
|
|
146
|
+
expression,
|
|
147
|
+
then: normalizeRuleNodes(branch.then ?? [], `${nodePath}.then`, validationErrors),
|
|
148
|
+
elseIf,
|
|
149
|
+
else: normalizeRuleNodes(branch.else ?? [], `${nodePath}.else`, validationErrors)
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function normalizeOutputPaths(paths) {
|
|
153
|
+
return [...new Set(paths
|
|
154
|
+
.filter((path) => !!path && path.trim().length > 0)
|
|
155
|
+
.map((path) => (0, core_utils_1.normalizeWritePath)(path))
|
|
156
|
+
.filter((path) => path.length > 0))];
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=rules-normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-normalizer.js","sourceRoot":"","sources":["../src/rules-normalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ValueSource } from "./types";
|
|
2
|
+
export declare function resolveSourceValue(root: unknown, item: unknown, source: ValueSource, errors: string[], errorContext: string, depth?: number): unknown;
|
|
3
|
+
export declare function resolvePathValue(root: unknown, item: unknown, path: string): unknown;
|
|
4
|
+
//# sourceMappingURL=source-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-resolver.d.ts","sourceRoot":"","sources":["../src/source-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EAAE,EAChB,YAAY,EAAE,MAAM,EACpB,KAAK,SAAI,GACR,OAAO,CAiET;AA8HD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAapF"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveSourceValue = resolveSourceValue;
|
|
4
|
+
exports.resolvePathValue = resolvePathValue;
|
|
5
|
+
const core_utils_1 = require("./core-utils");
|
|
6
|
+
const condition_expression_1 = require("./condition-expression");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
function resolveSourceValue(root, item, source, errors, errorContext, depth = 0) {
|
|
9
|
+
if (depth > 32) {
|
|
10
|
+
errors.push(`${errorContext}: condition/source recursion limit exceeded.`);
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
switch (source.type) {
|
|
14
|
+
case "constant":
|
|
15
|
+
return (0, core_utils_1.parsePrimitive)(source.value ?? "");
|
|
16
|
+
case "path":
|
|
17
|
+
return resolvePathValue(root, item, source.path ?? "");
|
|
18
|
+
case "merge":
|
|
19
|
+
return resolveMergeSourceValue(root, item, source);
|
|
20
|
+
case "transform": {
|
|
21
|
+
if (source.transform === types_1.TransformType.Concat) {
|
|
22
|
+
const tokens = (source.path ?? "")
|
|
23
|
+
.split(",")
|
|
24
|
+
.map((token) => token.trim())
|
|
25
|
+
.filter((token) => token.length > 0);
|
|
26
|
+
let result = "";
|
|
27
|
+
for (const token of tokens) {
|
|
28
|
+
if (token.toLowerCase().startsWith("const:")) {
|
|
29
|
+
result += token.slice("const:".length);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const resolved = resolvePathValue(root, item, token);
|
|
33
|
+
result += resolved == null ? "" : String(resolved);
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
if (source.transform === types_1.TransformType.Split) {
|
|
38
|
+
const baseValue = resolvePathValue(root, item, source.path ?? "");
|
|
39
|
+
if (baseValue == null) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const separator = source.separator ?? " ";
|
|
43
|
+
if (separator.length === 0) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
let tokenIndex = source.tokenIndex ?? 0;
|
|
47
|
+
const trimAfterSplit = source.trimAfterSplit ?? true;
|
|
48
|
+
const rawTokens = String(baseValue).split(separator).filter((token) => token.length > 0);
|
|
49
|
+
const tokens = trimAfterSplit
|
|
50
|
+
? rawTokens.map((token) => token.trim()).filter((token) => token.length > 0)
|
|
51
|
+
: rawTokens;
|
|
52
|
+
if (tokenIndex < 0) {
|
|
53
|
+
tokenIndex = tokens.length + tokenIndex;
|
|
54
|
+
}
|
|
55
|
+
if (tokenIndex < 0 || tokenIndex >= tokens.length) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return tokens[tokenIndex];
|
|
59
|
+
}
|
|
60
|
+
const baseValue = resolvePathValue(root, item, source.path ?? "");
|
|
61
|
+
return resolveTransform(baseValue, source.transform ?? types_1.TransformType.ToLowerCase);
|
|
62
|
+
}
|
|
63
|
+
case "condition":
|
|
64
|
+
return resolveConditionSourceValue(root, item, source, errors, errorContext, depth);
|
|
65
|
+
default:
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function resolveConditionSourceValue(root, item, source, errors, errorContext, depth) {
|
|
70
|
+
const matched = evaluateCondition(root, item, source.expression, errors, errorContext, "condition expression");
|
|
71
|
+
if (source.conditionOutput === types_1.ConditionOutputMode.Match) {
|
|
72
|
+
return matched;
|
|
73
|
+
}
|
|
74
|
+
if (matched) {
|
|
75
|
+
return resolveConditionBranchValue(root, item, source.trueSource ?? null, source.trueValue ?? null, errors, `${errorContext} true branch`, depth);
|
|
76
|
+
}
|
|
77
|
+
const elseIfBranches = source.elseIf ?? [];
|
|
78
|
+
for (let index = 0; index < elseIfBranches.length; index += 1) {
|
|
79
|
+
const branch = elseIfBranches[index];
|
|
80
|
+
const elseIfMatched = evaluateCondition(root, item, branch.expression, errors, `${errorContext} elseIf[${index}]`, "elseIf expression");
|
|
81
|
+
if (!elseIfMatched) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
return resolveConditionBranchValue(root, item, branch.source ?? null, branch.value ?? null, errors, `${errorContext} elseIf[${index}] branch`, depth);
|
|
85
|
+
}
|
|
86
|
+
return resolveConditionBranchValue(root, item, source.falseSource ?? null, source.falseValue ?? null, errors, `${errorContext} false branch`, depth);
|
|
87
|
+
}
|
|
88
|
+
function evaluateCondition(root, item, expression, errors, errorContext, label) {
|
|
89
|
+
if (!expression || expression.trim().length === 0) {
|
|
90
|
+
errors.push(`${errorContext}: ${label} is required.`);
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const evaluation = (0, condition_expression_1.tryEvaluateConditionExpression)(expression, (path) => resolvePathValue(root, item, path));
|
|
94
|
+
if (!evaluation.ok) {
|
|
95
|
+
errors.push(`${errorContext}: invalid ${label} "${expression}": ${evaluation.error}`);
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
return evaluation.value;
|
|
99
|
+
}
|
|
100
|
+
function resolveConditionBranchValue(root, item, source, value, errors, errorContext, depth) {
|
|
101
|
+
if (source) {
|
|
102
|
+
return resolveSourceValue(root, item, source, errors, errorContext, depth + 1);
|
|
103
|
+
}
|
|
104
|
+
return (0, core_utils_1.parsePrimitive)(value ?? "");
|
|
105
|
+
}
|
|
106
|
+
function resolveMergeSourceValue(root, item, source) {
|
|
107
|
+
const values = (source.paths ?? [])
|
|
108
|
+
.filter((path) => !!path && path.trim().length > 0)
|
|
109
|
+
.map((path) => resolvePathValue(root, item, path));
|
|
110
|
+
const mode = source.mergeMode ?? types_1.MergeMode.Concat;
|
|
111
|
+
switch (mode) {
|
|
112
|
+
case types_1.MergeMode.FirstNonEmpty:
|
|
113
|
+
return values.find((value) => value != null && (typeof value !== "string" || value.length > 0)) ?? null;
|
|
114
|
+
case types_1.MergeMode.Array:
|
|
115
|
+
return values;
|
|
116
|
+
default:
|
|
117
|
+
return values.map((value) => (value == null ? "" : String(value))).join(source.separator ?? "");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function resolvePathValue(root, item, path) {
|
|
121
|
+
if (!path || path.trim().length === 0)
|
|
122
|
+
return null;
|
|
123
|
+
if (path === "$")
|
|
124
|
+
return root;
|
|
125
|
+
if (path.startsWith("$.", 0)) {
|
|
126
|
+
return (0, core_utils_1.getValueByPath)(root, path.slice(2));
|
|
127
|
+
}
|
|
128
|
+
if (path.startsWith("$[", 0)) {
|
|
129
|
+
return (0, core_utils_1.getValueByPath)(root, path.slice(1));
|
|
130
|
+
}
|
|
131
|
+
if (item != null) {
|
|
132
|
+
return (0, core_utils_1.getValueByPath)(item, path);
|
|
133
|
+
}
|
|
134
|
+
return (0, core_utils_1.getValueByPath)(root, path);
|
|
135
|
+
}
|
|
136
|
+
function resolveTransform(value, transform) {
|
|
137
|
+
switch (transform) {
|
|
138
|
+
case types_1.TransformType.ToLowerCase:
|
|
139
|
+
return typeof value === "string" ? value.toLowerCase() : value;
|
|
140
|
+
case types_1.TransformType.ToUpperCase:
|
|
141
|
+
return typeof value === "string" ? value.toUpperCase() : value;
|
|
142
|
+
case types_1.TransformType.Number:
|
|
143
|
+
return value == null || value === "" ? value : (0, core_utils_1.toNumber)(value);
|
|
144
|
+
case types_1.TransformType.Boolean:
|
|
145
|
+
if (typeof value === "boolean")
|
|
146
|
+
return value;
|
|
147
|
+
if (typeof value === "string") {
|
|
148
|
+
return ["true", "1", "yes", "y"].includes(value.toLowerCase());
|
|
149
|
+
}
|
|
150
|
+
return value != null;
|
|
151
|
+
default:
|
|
152
|
+
return value;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=source-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../src/source-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
export declare enum DataFormat {
|
|
2
|
+
Json = "json",
|
|
3
|
+
Xml = "xml",
|
|
4
|
+
Query = "query"
|
|
5
|
+
}
|
|
6
|
+
export declare enum TransformType {
|
|
7
|
+
ToLowerCase = "toLowerCase",
|
|
8
|
+
ToUpperCase = "toUpperCase",
|
|
9
|
+
Number = "number",
|
|
10
|
+
Boolean = "boolean",
|
|
11
|
+
Concat = "concat",
|
|
12
|
+
Split = "split"
|
|
13
|
+
}
|
|
14
|
+
export declare enum MergeMode {
|
|
15
|
+
Concat = "concat",
|
|
16
|
+
FirstNonEmpty = "firstNonEmpty",
|
|
17
|
+
Array = "array"
|
|
18
|
+
}
|
|
19
|
+
export declare enum ConditionOutputMode {
|
|
20
|
+
Branch = "branch",
|
|
21
|
+
Match = "match"
|
|
22
|
+
}
|
|
23
|
+
export interface ConditionElseIfBranch {
|
|
24
|
+
expression?: string | null;
|
|
25
|
+
source?: ValueSource | null;
|
|
26
|
+
value?: string | null;
|
|
27
|
+
}
|
|
28
|
+
export interface ValueSource {
|
|
29
|
+
type: string;
|
|
30
|
+
path?: string | null;
|
|
31
|
+
paths?: string[] | null;
|
|
32
|
+
value?: string | null;
|
|
33
|
+
transform?: TransformType | null;
|
|
34
|
+
expression?: string | null;
|
|
35
|
+
trueValue?: string | null;
|
|
36
|
+
falseValue?: string | null;
|
|
37
|
+
trueSource?: ValueSource | null;
|
|
38
|
+
falseSource?: ValueSource | null;
|
|
39
|
+
elseIf?: ConditionElseIfBranch[] | null;
|
|
40
|
+
conditionOutput?: ConditionOutputMode | null;
|
|
41
|
+
mergeMode?: MergeMode | null;
|
|
42
|
+
separator?: string | null;
|
|
43
|
+
tokenIndex?: number | null;
|
|
44
|
+
trimAfterSplit?: boolean | null;
|
|
45
|
+
}
|
|
46
|
+
export interface FieldRule {
|
|
47
|
+
kind: "field";
|
|
48
|
+
outputPaths?: string[] | null;
|
|
49
|
+
source: ValueSource;
|
|
50
|
+
defaultValue?: string | null;
|
|
51
|
+
}
|
|
52
|
+
export interface ArrayRule {
|
|
53
|
+
kind: "array";
|
|
54
|
+
inputPath: string;
|
|
55
|
+
outputPaths?: string[] | null;
|
|
56
|
+
itemRules?: RuleNode[] | null;
|
|
57
|
+
coerceSingle?: boolean;
|
|
58
|
+
}
|
|
59
|
+
export interface BranchElseIfRule {
|
|
60
|
+
expression?: string | null;
|
|
61
|
+
then?: RuleNode[] | null;
|
|
62
|
+
}
|
|
63
|
+
export interface BranchRule {
|
|
64
|
+
kind: "branch";
|
|
65
|
+
expression?: string | null;
|
|
66
|
+
then?: RuleNode[] | null;
|
|
67
|
+
elseIf?: BranchElseIfRule[] | null;
|
|
68
|
+
else?: RuleNode[] | null;
|
|
69
|
+
}
|
|
70
|
+
export type RuleNode = FieldRule | ArrayRule | BranchRule;
|
|
71
|
+
export interface ConversionRules {
|
|
72
|
+
inputFormat?: DataFormat;
|
|
73
|
+
outputFormat?: DataFormat;
|
|
74
|
+
rules?: RuleNode[] | null;
|
|
75
|
+
validationErrors?: string[];
|
|
76
|
+
}
|
|
77
|
+
export interface ConversionResult {
|
|
78
|
+
output?: unknown;
|
|
79
|
+
errors: string[];
|
|
80
|
+
warnings: string[];
|
|
81
|
+
}
|
|
82
|
+
export interface ConversionRulesGenerationRequest {
|
|
83
|
+
inputFormat: DataFormat;
|
|
84
|
+
outputFormat: DataFormat;
|
|
85
|
+
inputSample: string;
|
|
86
|
+
outputSample: string;
|
|
87
|
+
model?: string | null;
|
|
88
|
+
}
|
|
89
|
+
export interface ConversionRulesGenerator {
|
|
90
|
+
generate(request: ConversionRulesGenerationRequest, options?: {
|
|
91
|
+
signal?: AbortSignal;
|
|
92
|
+
}): Promise<ConversionRules>;
|
|
93
|
+
}
|
|
94
|
+
export declare const rulesSchemaPath = "/schemas/rules/rules.schema.json";
|
|
95
|
+
export declare const rulesSchemaVersion = "1.0.0";
|
|
96
|
+
export declare const rulesSchemaVersionedPath = "/schemas/rules/v1.0.0/schema.json";
|
|
97
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rulesSchemaVersionedPath = exports.rulesSchemaVersion = exports.rulesSchemaPath = exports.ConditionOutputMode = exports.MergeMode = exports.TransformType = exports.DataFormat = void 0;
|
|
4
|
+
var DataFormat;
|
|
5
|
+
(function (DataFormat) {
|
|
6
|
+
DataFormat["Json"] = "json";
|
|
7
|
+
DataFormat["Xml"] = "xml";
|
|
8
|
+
DataFormat["Query"] = "query";
|
|
9
|
+
})(DataFormat || (exports.DataFormat = DataFormat = {}));
|
|
10
|
+
var TransformType;
|
|
11
|
+
(function (TransformType) {
|
|
12
|
+
TransformType["ToLowerCase"] = "toLowerCase";
|
|
13
|
+
TransformType["ToUpperCase"] = "toUpperCase";
|
|
14
|
+
TransformType["Number"] = "number";
|
|
15
|
+
TransformType["Boolean"] = "boolean";
|
|
16
|
+
TransformType["Concat"] = "concat";
|
|
17
|
+
TransformType["Split"] = "split";
|
|
18
|
+
})(TransformType || (exports.TransformType = TransformType = {}));
|
|
19
|
+
var MergeMode;
|
|
20
|
+
(function (MergeMode) {
|
|
21
|
+
MergeMode["Concat"] = "concat";
|
|
22
|
+
MergeMode["FirstNonEmpty"] = "firstNonEmpty";
|
|
23
|
+
MergeMode["Array"] = "array";
|
|
24
|
+
})(MergeMode || (exports.MergeMode = MergeMode = {}));
|
|
25
|
+
var ConditionOutputMode;
|
|
26
|
+
(function (ConditionOutputMode) {
|
|
27
|
+
ConditionOutputMode["Branch"] = "branch";
|
|
28
|
+
ConditionOutputMode["Match"] = "match";
|
|
29
|
+
})(ConditionOutputMode || (exports.ConditionOutputMode = ConditionOutputMode = {}));
|
|
30
|
+
exports.rulesSchemaPath = "/schemas/rules/rules.schema.json";
|
|
31
|
+
exports.rulesSchemaVersion = "1.0.0";
|
|
32
|
+
exports.rulesSchemaVersionedPath = `/schemas/rules/v${exports.rulesSchemaVersion}/schema.json`;
|
|
33
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,6BAAe,CAAA;AACjB,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAED,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,4CAA2B,CAAA;IAC3B,4CAA2B,CAAA;IAC3B,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;AACjB,CAAC,EAPW,aAAa,6BAAb,aAAa,QAOxB;AAED,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,4CAA+B,CAAA;IAC/B,4BAAe,CAAA;AACjB,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAED,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,sCAAe,CAAA;AACjB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B;AAqFY,QAAA,eAAe,GAAG,kCAAkC,CAAC;AACrD,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAC7B,QAAA,wBAAwB,GAAG,mBAAmB,0BAAkB,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml-payload.d.ts","sourceRoot":"","sources":["../src/xml-payload.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY9D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAoBjE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseXml = parseXml;
|
|
4
|
+
exports.formatXml = formatXml;
|
|
5
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
6
|
+
const core_utils_1 = require("./core-utils");
|
|
7
|
+
function parseXml(text) {
|
|
8
|
+
const parser = new fast_xml_parser_1.XMLParser({
|
|
9
|
+
ignoreAttributes: false,
|
|
10
|
+
attributeNamePrefix: "@_",
|
|
11
|
+
textNodeName: "#text",
|
|
12
|
+
trimValues: false,
|
|
13
|
+
parseTagValue: false,
|
|
14
|
+
parseAttributeValue: false
|
|
15
|
+
});
|
|
16
|
+
const parsed = parser.parse(text);
|
|
17
|
+
return normalizeXmlValue(parsed);
|
|
18
|
+
}
|
|
19
|
+
function formatXml(value, pretty) {
|
|
20
|
+
const builder = new fast_xml_parser_1.XMLBuilder({
|
|
21
|
+
ignoreAttributes: false,
|
|
22
|
+
attributeNamePrefix: "@_",
|
|
23
|
+
textNodeName: "#text",
|
|
24
|
+
format: pretty,
|
|
25
|
+
indentBy: " "
|
|
26
|
+
});
|
|
27
|
+
if (!(0, core_utils_1.isRecord)(value) || Object.keys(value).length === 0) {
|
|
28
|
+
return builder.build({ root: null });
|
|
29
|
+
}
|
|
30
|
+
const keys = Object.keys(value);
|
|
31
|
+
if (keys.length === 1) {
|
|
32
|
+
const rootKey = keys[0];
|
|
33
|
+
return builder.build({ [rootKey]: value[rootKey] });
|
|
34
|
+
}
|
|
35
|
+
return builder.build({ root: value });
|
|
36
|
+
}
|
|
37
|
+
function normalizeXmlValue(value) {
|
|
38
|
+
if (Array.isArray(value)) {
|
|
39
|
+
return value.map((item) => normalizeXmlValue(item));
|
|
40
|
+
}
|
|
41
|
+
if ((0, core_utils_1.isRecord)(value)) {
|
|
42
|
+
const normalized = {};
|
|
43
|
+
for (const [key, child] of Object.entries(value)) {
|
|
44
|
+
if (key === "#text" && typeof child === "string") {
|
|
45
|
+
normalized[key] = (0, core_utils_1.parsePrimitive)(child.trim());
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (typeof child === "string") {
|
|
49
|
+
normalized[key] = (0, core_utils_1.parsePrimitive)(child.trim());
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
normalized[key] = normalizeXmlValue(child);
|
|
53
|
+
}
|
|
54
|
+
return normalized;
|
|
55
|
+
}
|
|
56
|
+
if (typeof value === "string") {
|
|
57
|
+
return (0, core_utils_1.parsePrimitive)(value.trim());
|
|
58
|
+
}
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=xml-payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml-payload.js","sourceRoot":"","sources":["../src/xml-payload.ts"],"names":[],"mappings":";;AAIA,4BAYC;AAED,8BAoBC;AAtCD,qDAAwD;AAExD,6CAAwD;AAExD,SAAgB,QAAQ,CAAC,IAAY;IACnC,MAAM,MAAM,GAAG,IAAI,2BAAS,CAAC;QAC3B,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,IAAI;QACzB,YAAY,EAAE,OAAO;QACrB,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,KAAK;QACpB,mBAAmB,EAAE,KAAK;KAC3B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IAC7D,OAAO,iBAAiB,CAAC,MAAM,CAA4B,CAAC;AAC9D,CAAC;AAED,SAAgB,SAAS,CAAC,KAAc,EAAE,MAAe;IACvD,MAAM,OAAO,GAAG,IAAI,4BAAU,CAAC;QAC7B,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,IAAI;QACzB,YAAY,EAAE,OAAO;QACrB,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,IAAI,CAAC,IAAA,qBAAQ,EAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,IAAA,qBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACjD,UAAU,CAAC,GAAG,CAAC,GAAG,IAAA,2BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/C,SAAS;YACX,CAAC;YACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,UAAU,CAAC,GAAG,CAAC,GAAG,IAAA,2BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/C,SAAS;YACX,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAA,2BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|