@apiconvert/core 0.2.0 → 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.
Files changed (62) hide show
  1. package/README.md +60 -268
  2. package/dist/condition-expression-evaluator.d.ts +4 -0
  3. package/dist/condition-expression-evaluator.d.ts.map +1 -0
  4. package/dist/condition-expression-evaluator.js +63 -0
  5. package/dist/condition-expression-evaluator.js.map +1 -0
  6. package/dist/condition-expression-parser.d.ts +26 -0
  7. package/dist/condition-expression-parser.d.ts.map +1 -0
  8. package/dist/condition-expression-parser.js +191 -0
  9. package/dist/condition-expression-parser.js.map +1 -0
  10. package/dist/condition-expression-tokenizer.d.ts +3 -0
  11. package/dist/condition-expression-tokenizer.d.ts.map +1 -0
  12. package/dist/condition-expression-tokenizer.js +103 -0
  13. package/dist/condition-expression-tokenizer.js.map +1 -0
  14. package/dist/condition-expression-types.d.ts +29 -0
  15. package/dist/condition-expression-types.d.ts.map +1 -0
  16. package/dist/condition-expression-types.js +3 -0
  17. package/dist/condition-expression-types.js.map +1 -0
  18. package/dist/condition-expression.d.ts +9 -0
  19. package/dist/condition-expression.d.ts.map +1 -0
  20. package/dist/condition-expression.js +16 -0
  21. package/dist/condition-expression.js.map +1 -0
  22. package/dist/core-utils.d.ts +11 -0
  23. package/dist/core-utils.d.ts.map +1 -0
  24. package/dist/core-utils.js +126 -0
  25. package/dist/core-utils.js.map +1 -0
  26. package/dist/index.d.ts +5 -99
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +31 -729
  29. package/dist/index.js.map +1 -1
  30. package/dist/mapping-engine.d.ts +3 -0
  31. package/dist/mapping-engine.d.ts.map +1 -0
  32. package/dist/mapping-engine.js +18 -0
  33. package/dist/mapping-engine.js.map +1 -0
  34. package/dist/payload-converter.d.ts +7 -0
  35. package/dist/payload-converter.d.ts.map +1 -0
  36. package/dist/payload-converter.js +37 -0
  37. package/dist/payload-converter.js.map +1 -0
  38. package/dist/query-payload.d.ts +3 -0
  39. package/dist/query-payload.d.ts.map +1 -0
  40. package/dist/query-payload.js +183 -0
  41. package/dist/query-payload.js.map +1 -0
  42. package/dist/rule-executor.d.ts +3 -0
  43. package/dist/rule-executor.d.ts.map +1 -0
  44. package/dist/rule-executor.js +108 -0
  45. package/dist/rule-executor.js.map +1 -0
  46. package/dist/rules-normalizer.d.ts +3 -0
  47. package/dist/rules-normalizer.d.ts.map +1 -0
  48. package/dist/rules-normalizer.js +158 -0
  49. package/dist/rules-normalizer.js.map +1 -0
  50. package/dist/source-resolver.d.ts +4 -0
  51. package/dist/source-resolver.d.ts.map +1 -0
  52. package/dist/source-resolver.js +155 -0
  53. package/dist/source-resolver.js.map +1 -0
  54. package/dist/types.d.ts +97 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +33 -0
  57. package/dist/types.js.map +1 -0
  58. package/dist/xml-payload.d.ts +3 -0
  59. package/dist/xml-payload.d.ts.map +1 -0
  60. package/dist/xml-payload.js +61 -0
  61. package/dist/xml-payload.js.map +1 -0
  62. 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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"}
@@ -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,3 @@
1
+ export declare function parseXml(text: string): Record<string, unknown>;
2
+ export declare function formatXml(value: unknown, pretty: boolean): string;
3
+ //# sourceMappingURL=xml-payload.d.ts.map
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apiconvert/core",
3
- "version": "0.2.0",
3
+ "version": "1.0.0",
4
4
  "description": "Apiconvert core contracts and schemas for conversion rules.",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "repository": {