@karibulab/wsdl2tsx 0.17.2 → 0.20.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/dist/cli.js +399 -229
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -23589,13 +23589,34 @@ Schema [${i}] (targetNamespace: ${schemaNode.targetNamespace || "no definido"}):
|
|
|
23589
23589
|
// src/generator/soap-namespace.ts
|
|
23590
23590
|
var SOAP12_ENVELOPE_URI = "http://www.w3.org/2003/05/soap-envelope";
|
|
23591
23591
|
var SOAP11_ENVELOPE_URI = "http://schemas.xmlsoap.org/soap/envelope/";
|
|
23592
|
+
var SOAP12_BINDING_URI = "http://schemas.xmlsoap.org/wsdl/soap12/";
|
|
23593
|
+
var SOAP11_BINDING_URI = "http://schemas.xmlsoap.org/wsdl/soap/";
|
|
23592
23594
|
function getSoapNamespaceURI(definitionsNamespaces) {
|
|
23595
|
+
for (const uri2 of definitionsNamespaces.values()) {
|
|
23596
|
+
if (uri2 === SOAP12_ENVELOPE_URI) {
|
|
23597
|
+
return SOAP12_ENVELOPE_URI;
|
|
23598
|
+
}
|
|
23599
|
+
if (uri2 === SOAP11_ENVELOPE_URI) {
|
|
23600
|
+
return SOAP11_ENVELOPE_URI;
|
|
23601
|
+
}
|
|
23602
|
+
}
|
|
23603
|
+
for (const uri2 of definitionsNamespaces.values()) {
|
|
23604
|
+
if (uri2 === SOAP12_BINDING_URI || uri2.includes("wsdl/soap12") || uri2.endsWith("soap12/")) {
|
|
23605
|
+
return SOAP12_ENVELOPE_URI;
|
|
23606
|
+
}
|
|
23607
|
+
if (uri2 === SOAP11_BINDING_URI || uri2.includes("wsdl/soap") && !uri2.includes("soap12")) {
|
|
23608
|
+
return SOAP11_ENVELOPE_URI;
|
|
23609
|
+
}
|
|
23610
|
+
}
|
|
23593
23611
|
const soapEntry = Array.from(definitionsNamespaces.entries()).find((entry) => entry[1].includes("soap"));
|
|
23594
23612
|
if (!soapEntry) {
|
|
23595
23613
|
return SOAP11_ENVELOPE_URI;
|
|
23596
23614
|
}
|
|
23597
|
-
const
|
|
23598
|
-
|
|
23615
|
+
const uri = soapEntry[1];
|
|
23616
|
+
if (uri.includes("soap12") || uri.includes("2003/05/soap-envelope")) {
|
|
23617
|
+
return SOAP12_ENVELOPE_URI;
|
|
23618
|
+
}
|
|
23619
|
+
return SOAP11_ENVELOPE_URI;
|
|
23599
23620
|
}
|
|
23600
23621
|
|
|
23601
23622
|
// src/codegen/constants.ts
|
|
@@ -23775,18 +23796,22 @@ function extractAllTagsForXmlBody(typeObject, namespacesTypeMapping, baseNamespa
|
|
|
23775
23796
|
const referencedType = element.type;
|
|
23776
23797
|
debugContext("extractAllTagsForXmlBody", `Resolviendo tipo referenciado: "${referencedType}" para tag "${tagLocalName}"`);
|
|
23777
23798
|
let referencedTypeObject = schemaObject?.[referencedType] || allComplexTypes?.[referencedType];
|
|
23778
|
-
|
|
23799
|
+
let foundKey;
|
|
23800
|
+
if (referencedTypeObject) {
|
|
23801
|
+
foundKey = referencedType;
|
|
23802
|
+
} else {
|
|
23779
23803
|
const referencedLocalName = referencedType.split(":").pop() || referencedType;
|
|
23780
|
-
|
|
23804
|
+
foundKey = Object.keys(schemaObject || {}).find((k) => {
|
|
23805
|
+
if (k === "$namespace" || k === "$qualified") return false;
|
|
23781
23806
|
const kLocalName = k.split(":").pop();
|
|
23782
23807
|
return kLocalName === referencedLocalName;
|
|
23783
23808
|
}) || Object.keys(allComplexTypes || {}).find((k) => {
|
|
23784
23809
|
const kLocalName = k.split(":").pop();
|
|
23785
23810
|
return kLocalName === referencedLocalName;
|
|
23786
23811
|
});
|
|
23787
|
-
if (
|
|
23788
|
-
referencedTypeObject = schemaObject?.[
|
|
23789
|
-
debugContext("extractAllTagsForXmlBody", `Tipo referenciado encontrado por nombre local: "${
|
|
23812
|
+
if (foundKey) {
|
|
23813
|
+
referencedTypeObject = schemaObject?.[foundKey] || allComplexTypes?.[foundKey];
|
|
23814
|
+
debugContext("extractAllTagsForXmlBody", `Tipo referenciado encontrado por nombre local: "${foundKey}"`);
|
|
23790
23815
|
}
|
|
23791
23816
|
}
|
|
23792
23817
|
if (referencedTypeObject) {
|
|
@@ -23800,10 +23825,32 @@ function extractAllTagsForXmlBody(typeObject, namespacesTypeMapping, baseNamespa
|
|
|
23800
23825
|
debugContext("extractAllTagsForXmlBody", `Registrando namespace del tipo referenciado: "${refNamespacePrefix}" -> "${refNamespace}"`);
|
|
23801
23826
|
}
|
|
23802
23827
|
}
|
|
23803
|
-
|
|
23804
|
-
|
|
23828
|
+
}
|
|
23829
|
+
let referencedElementNamespace;
|
|
23830
|
+
if (foundKey && foundKey.includes(":")) {
|
|
23831
|
+
const [nsPart] = foundKey.split(":");
|
|
23832
|
+
if (nsPart.startsWith("http://") || nsPart.startsWith("https://")) {
|
|
23833
|
+
referencedElementNamespace = nsPart;
|
|
23834
|
+
debugContext("extractAllTagsForXmlBody", `Namespace del elemento referenciado obtenido de la clave "${foundKey}": "${referencedElementNamespace}"`);
|
|
23835
|
+
}
|
|
23836
|
+
}
|
|
23837
|
+
if (!referencedElementNamespace && referencedTypeObject && typeof referencedTypeObject === "object") {
|
|
23838
|
+
const refNamespace = referencedTypeObject[NAMESPACE_KEY];
|
|
23839
|
+
if (refNamespace && typeof refNamespace === "string") {
|
|
23840
|
+
referencedElementNamespace = refNamespace;
|
|
23841
|
+
debugContext("extractAllTagsForXmlBody", `Namespace del elemento referenciado obtenido del $namespace del objeto: "${referencedElementNamespace}"`);
|
|
23805
23842
|
}
|
|
23806
23843
|
}
|
|
23844
|
+
if (referencedTypeObject && typeof referencedTypeObject === "object" && "type" in referencedTypeObject && typeof referencedTypeObject.type === "object") {
|
|
23845
|
+
elementTypeValue = referencedTypeObject.type;
|
|
23846
|
+
if (referencedElementNamespace) {
|
|
23847
|
+
elementTypeValue._referencedElementNamespace = referencedElementNamespace;
|
|
23848
|
+
}
|
|
23849
|
+
}
|
|
23850
|
+
if (referencedElementNamespace) {
|
|
23851
|
+
referencedTypeObject._referencedElementNamespace = referencedElementNamespace;
|
|
23852
|
+
debugContext("extractAllTagsForXmlBody", `Namespace del elemento referenciado "${tagLocalName}" guardado: "${referencedElementNamespace}"`);
|
|
23853
|
+
}
|
|
23807
23854
|
debugContext("extractAllTagsForXmlBody", `\u2713 Tipo referenciado resuelto para "${tagLocalName}" (elemento en namespace: "${elementNamespace || currentNamespace}", tipo en namespace: "${referencedTypeObject[NAMESPACE_KEY] || "N/A"}")`);
|
|
23808
23855
|
} else {
|
|
23809
23856
|
debugContext("extractAllTagsForXmlBody", `\u2717 Tipo referenciado no encontrado: "${referencedType}"`);
|
|
@@ -23812,13 +23859,27 @@ function extractAllTagsForXmlBody(typeObject, namespacesTypeMapping, baseNamespa
|
|
|
23812
23859
|
elementTypeValue = element.type;
|
|
23813
23860
|
}
|
|
23814
23861
|
}
|
|
23815
|
-
|
|
23862
|
+
let tagNamespace = elementNamespace || currentNamespace;
|
|
23863
|
+
if (elementTypeValue && typeof elementTypeValue === "object" && elementTypeValue !== null) {
|
|
23864
|
+
const referencedElementNamespace = elementTypeValue._referencedElementNamespace;
|
|
23865
|
+
if (referencedElementNamespace && typeof referencedElementNamespace === "string") {
|
|
23866
|
+
tagNamespace = referencedElementNamespace;
|
|
23867
|
+
debugContext("extractAllTagsForXmlBody", `Tag "${tagLocalName}" pertenece al namespace del elemento referenciado: "${tagNamespace}"`);
|
|
23868
|
+
} else {
|
|
23869
|
+
const referencedTypeNamespace = elementTypeValue[NAMESPACE_KEY];
|
|
23870
|
+
if (referencedTypeNamespace && typeof referencedTypeNamespace === "string") {
|
|
23871
|
+
tagNamespace = referencedTypeNamespace;
|
|
23872
|
+
debugContext("extractAllTagsForXmlBody", `Tag "${tagLocalName}" pertenece al namespace del tipo referenciado: "${tagNamespace}"`);
|
|
23873
|
+
}
|
|
23874
|
+
}
|
|
23875
|
+
}
|
|
23876
|
+
const namespace = tagNamespace;
|
|
23816
23877
|
const namespacePrefix = extractNamespacePrefix(namespace);
|
|
23817
23878
|
if (namespace !== currentNamespace && !foundNamespaces.has(namespacePrefix)) {
|
|
23818
23879
|
foundNamespaces.set(namespacePrefix, namespace);
|
|
23819
23880
|
debugContext("extractAllTagsForXmlBody", `Registrando namespace del elemento: "${namespacePrefix}" -> "${namespace}"`);
|
|
23820
23881
|
}
|
|
23821
|
-
debugContext("extractAllTagsForXmlBody", `Agregando tag "${tagLocalName}" al namespace "${namespacePrefix}" (namespace
|
|
23882
|
+
debugContext("extractAllTagsForXmlBody", `Agregando tag "${tagLocalName}" al namespace "${namespacePrefix}" (namespace: "${namespace}")`);
|
|
23822
23883
|
result.push(tagLocalName);
|
|
23823
23884
|
if (!tagsByNamespace.has(namespace)) {
|
|
23824
23885
|
tagsByNamespace.set(namespace, []);
|
|
@@ -23899,208 +23960,6 @@ function flattenKeysWithNamespace(typeObject, currentNamespace, currentNamespace
|
|
|
23899
23960
|
return result;
|
|
23900
23961
|
}
|
|
23901
23962
|
|
|
23902
|
-
// src/codegen/namespaces.ts
|
|
23903
|
-
function extractAllNamespaceMappings(baseTypeName, baseTypeObject, schemaObject, allComplexTypes) {
|
|
23904
|
-
const tagsMapping = {};
|
|
23905
|
-
const prefixesMapping = {};
|
|
23906
|
-
const typesMapping = {};
|
|
23907
|
-
if (!baseTypeObject || typeof baseTypeObject !== "object") {
|
|
23908
|
-
throw new Error(`El objeto de tipo ${baseTypeName} es inv\xE1lido o est\xE1 vac\xEDo`);
|
|
23909
|
-
}
|
|
23910
|
-
const baseNamespace = baseTypeObject[NAMESPACE_KEY];
|
|
23911
|
-
if (!baseNamespace) {
|
|
23912
|
-
throw new Error(`El tipo ${baseTypeName} no tiene la propiedad $namespace definida`);
|
|
23913
|
-
}
|
|
23914
|
-
const baseIsQualified = baseTypeObject.$qualified === true;
|
|
23915
|
-
const existingPrefixesSet = /* @__PURE__ */ new Set();
|
|
23916
|
-
const baseNamespacePrefix = extractNamespacePrefix(baseNamespace, existingPrefixesSet);
|
|
23917
|
-
existingPrefixesSet.add(baseNamespacePrefix);
|
|
23918
|
-
const baseTypeLocalName = extractLocalName(baseTypeName);
|
|
23919
|
-
if (baseIsQualified) {
|
|
23920
|
-
tagsMapping[baseNamespacePrefix] = [baseTypeLocalName];
|
|
23921
|
-
prefixesMapping[baseNamespacePrefix] = baseNamespace;
|
|
23922
|
-
}
|
|
23923
|
-
typesMapping[baseTypeName] = {
|
|
23924
|
-
uri: baseNamespace,
|
|
23925
|
-
prefix: baseNamespacePrefix
|
|
23926
|
-
};
|
|
23927
|
-
const keys = getFilteredKeys(baseTypeObject);
|
|
23928
|
-
for (const key of keys) {
|
|
23929
|
-
const element = baseTypeObject[key];
|
|
23930
|
-
const tagLocalName = extractLocalName(key);
|
|
23931
|
-
let elementIsQualified = false;
|
|
23932
|
-
let elementNamespace;
|
|
23933
|
-
if (typeof element === "object" && element !== null) {
|
|
23934
|
-
elementIsQualified = element.$qualified === true;
|
|
23935
|
-
elementNamespace = element.$namespace;
|
|
23936
|
-
}
|
|
23937
|
-
const namespace = elementNamespace || baseNamespace;
|
|
23938
|
-
const tagNames = elementIsQualified ? [tagLocalName] : [];
|
|
23939
|
-
if (typeof element === "object" && element !== null && typeof element.type === "object") {
|
|
23940
|
-
const nestedTags = extractNestedTags(element.type);
|
|
23941
|
-
tagNames.push(...nestedTags);
|
|
23942
|
-
}
|
|
23943
|
-
let namespacePrefix = extractNamespacePrefix(namespace, existingPrefixesSet);
|
|
23944
|
-
if (prefixesMapping[namespacePrefix] && prefixesMapping[namespacePrefix] !== namespace) {
|
|
23945
|
-
namespacePrefix = extractNamespacePrefix(namespace, existingPrefixesSet);
|
|
23946
|
-
}
|
|
23947
|
-
existingPrefixesSet.add(namespacePrefix);
|
|
23948
|
-
if (tagNames.length > 0) {
|
|
23949
|
-
if (tagsMapping[namespacePrefix] === void 0) {
|
|
23950
|
-
tagsMapping[namespacePrefix] = tagNames;
|
|
23951
|
-
} else {
|
|
23952
|
-
tagsMapping[namespacePrefix].push(...tagNames);
|
|
23953
|
-
}
|
|
23954
|
-
if (prefixesMapping[namespacePrefix] === void 0) {
|
|
23955
|
-
prefixesMapping[namespacePrefix] = namespace;
|
|
23956
|
-
}
|
|
23957
|
-
}
|
|
23958
|
-
}
|
|
23959
|
-
const flatKeys = flattenKeysWithNamespace(baseTypeObject, baseNamespace, baseNamespacePrefix);
|
|
23960
|
-
for (const item of flatKeys) {
|
|
23961
|
-
typesMapping[item.name] = {
|
|
23962
|
-
uri: item.uri,
|
|
23963
|
-
prefix: item.prefix
|
|
23964
|
-
};
|
|
23965
|
-
}
|
|
23966
|
-
const xmlBodyResult = extractAllTagsForXmlBody(
|
|
23967
|
-
baseTypeObject,
|
|
23968
|
-
typesMapping,
|
|
23969
|
-
baseNamespacePrefix,
|
|
23970
|
-
baseNamespace,
|
|
23971
|
-
/* @__PURE__ */ new Set(),
|
|
23972
|
-
schemaObject,
|
|
23973
|
-
allComplexTypes
|
|
23974
|
-
);
|
|
23975
|
-
for (const [prefix, uri] of xmlBodyResult.namespaces) {
|
|
23976
|
-
let finalPrefix;
|
|
23977
|
-
for (const [p, u] of Object.entries(prefixesMapping)) {
|
|
23978
|
-
if (u === uri) {
|
|
23979
|
-
finalPrefix = p;
|
|
23980
|
-
break;
|
|
23981
|
-
}
|
|
23982
|
-
}
|
|
23983
|
-
if (!finalPrefix || prefixesMapping[prefix] && prefixesMapping[prefix] !== uri) {
|
|
23984
|
-
finalPrefix = extractNamespacePrefix(uri, existingPrefixesSet);
|
|
23985
|
-
existingPrefixesSet.add(finalPrefix);
|
|
23986
|
-
if (prefixesMapping[prefix] && prefixesMapping[prefix] !== uri) {
|
|
23987
|
-
debugContext("extractAllNamespaceMappings", `Colisi\xF3n de prefijo detectada para "${prefix}", usando prefijo \xFAnico: "${finalPrefix}"`);
|
|
23988
|
-
}
|
|
23989
|
-
}
|
|
23990
|
-
if (!prefixesMapping[finalPrefix]) {
|
|
23991
|
-
prefixesMapping[finalPrefix] = uri;
|
|
23992
|
-
debugContext("extractAllNamespaceMappings", `Agregando namespace adicional al prefixesMapping: "${finalPrefix}" -> "${uri}"`);
|
|
23993
|
-
}
|
|
23994
|
-
if (!tagsMapping[finalPrefix]) {
|
|
23995
|
-
tagsMapping[finalPrefix] = [];
|
|
23996
|
-
}
|
|
23997
|
-
}
|
|
23998
|
-
const allTagsAdded = /* @__PURE__ */ new Set();
|
|
23999
|
-
for (const [nsUri, tags] of xmlBodyResult.tagsByNamespace) {
|
|
24000
|
-
let finalPrefix;
|
|
24001
|
-
for (const [p, u] of Object.entries(prefixesMapping)) {
|
|
24002
|
-
if (u === nsUri) {
|
|
24003
|
-
finalPrefix = p;
|
|
24004
|
-
break;
|
|
24005
|
-
}
|
|
24006
|
-
}
|
|
24007
|
-
if (!finalPrefix) {
|
|
24008
|
-
finalPrefix = extractNamespacePrefix(nsUri, existingPrefixesSet);
|
|
24009
|
-
existingPrefixesSet.add(finalPrefix);
|
|
24010
|
-
}
|
|
24011
|
-
if (!tagsMapping[finalPrefix]) {
|
|
24012
|
-
tagsMapping[finalPrefix] = [];
|
|
24013
|
-
}
|
|
24014
|
-
const existingTags = new Set(tagsMapping[finalPrefix] || []);
|
|
24015
|
-
const tagsToAdd = [];
|
|
24016
|
-
for (const tag of tags) {
|
|
24017
|
-
if (!existingTags.has(tag) && !allTagsAdded.has(tag)) {
|
|
24018
|
-
tagsToAdd.push(tag);
|
|
24019
|
-
allTagsAdded.add(tag);
|
|
24020
|
-
}
|
|
24021
|
-
}
|
|
24022
|
-
if (tagsToAdd.length > 0) {
|
|
24023
|
-
tagsMapping[finalPrefix].push(...tagsToAdd);
|
|
24024
|
-
debugContext("extractAllNamespaceMappings", `Agregando ${tagsToAdd.length} tag(s) al namespace "${finalPrefix}" (${nsUri}): ${tagsToAdd.join(", ")}`);
|
|
24025
|
-
}
|
|
24026
|
-
}
|
|
24027
|
-
const baseNamespaceTags = xmlBodyResult.tagsByNamespace.get(baseNamespace);
|
|
24028
|
-
if (baseNamespaceTags && baseNamespaceTags.length > 0) {
|
|
24029
|
-
if (tagsMapping[baseNamespacePrefix] === void 0) {
|
|
24030
|
-
tagsMapping[baseNamespacePrefix] = [];
|
|
24031
|
-
prefixesMapping[baseNamespacePrefix] = baseNamespace;
|
|
24032
|
-
}
|
|
24033
|
-
const existingTags = new Set(tagsMapping[baseNamespacePrefix] || []);
|
|
24034
|
-
for (const tag of baseNamespaceTags) {
|
|
24035
|
-
if (!existingTags.has(tag)) {
|
|
24036
|
-
tagsMapping[baseNamespacePrefix].push(tag);
|
|
24037
|
-
existingTags.add(tag);
|
|
24038
|
-
}
|
|
24039
|
-
}
|
|
24040
|
-
debugContext("extractAllNamespaceMappings", `Agregando ${baseNamespaceTags.length} tag(s) al namespace base "${baseNamespacePrefix}"`);
|
|
24041
|
-
}
|
|
24042
|
-
return {
|
|
24043
|
-
tagsMapping,
|
|
24044
|
-
prefixesMapping,
|
|
24045
|
-
typesMapping
|
|
24046
|
-
};
|
|
24047
|
-
}
|
|
24048
|
-
function getNamespacePrefix(namespacesTypeMapping, baseNamespacePrefix, key, parentKey, elementObject, prefixesMapping) {
|
|
24049
|
-
if (elementObject && typeof elementObject === "object") {
|
|
24050
|
-
const elemNs = elementObject.$namespace;
|
|
24051
|
-
if (typeof elemNs === "string") {
|
|
24052
|
-
debugContext("getNamespacePrefix", `Elemento "${key}" tiene namespace: "${elemNs}"`);
|
|
24053
|
-
if (prefixesMapping) {
|
|
24054
|
-
for (const [prefix, uri] of Object.entries(prefixesMapping)) {
|
|
24055
|
-
if (uri === elemNs) {
|
|
24056
|
-
debugContext("getNamespacePrefix", `Encontrado prefijo "${prefix}" para namespace "${elemNs}"`);
|
|
24057
|
-
return prefix;
|
|
24058
|
-
}
|
|
24059
|
-
}
|
|
24060
|
-
debugContext("getNamespacePrefix", `No se encontr\xF3 prefijo en prefixesMapping para "${elemNs}", usando extractNamespacePrefix`);
|
|
24061
|
-
}
|
|
24062
|
-
const extractedPrefix = extractNamespacePrefix(elemNs);
|
|
24063
|
-
debugContext("getNamespacePrefix", `Usando prefijo extra\xEDdo: "${extractedPrefix}" para namespace "${elemNs}"`);
|
|
24064
|
-
return extractedPrefix;
|
|
24065
|
-
} else {
|
|
24066
|
-
if ("type" in elementObject && typeof elementObject.type === "object" && elementObject.type !== null) {
|
|
24067
|
-
const typeNs = elementObject.type.$namespace;
|
|
24068
|
-
if (typeof typeNs === "string") {
|
|
24069
|
-
debugContext("getNamespacePrefix", `Elemento "${key}" no tiene $namespace, pero su tipo tiene: "${typeNs}"`);
|
|
24070
|
-
if (prefixesMapping) {
|
|
24071
|
-
for (const [prefix, uri] of Object.entries(prefixesMapping)) {
|
|
24072
|
-
if (uri === typeNs) {
|
|
24073
|
-
debugContext("getNamespacePrefix", `Encontrado prefijo "${prefix}" para namespace del tipo "${typeNs}"`);
|
|
24074
|
-
return prefix;
|
|
24075
|
-
}
|
|
24076
|
-
}
|
|
24077
|
-
}
|
|
24078
|
-
const extractedPrefix = extractNamespacePrefix(typeNs);
|
|
24079
|
-
debugContext("getNamespacePrefix", `Usando prefijo extra\xEDdo del tipo: "${extractedPrefix}" para namespace "${typeNs}"`);
|
|
24080
|
-
return extractedPrefix;
|
|
24081
|
-
}
|
|
24082
|
-
}
|
|
24083
|
-
}
|
|
24084
|
-
}
|
|
24085
|
-
if (parentKey !== null) {
|
|
24086
|
-
return namespacesTypeMapping[parentKey]?.prefix ?? baseNamespacePrefix;
|
|
24087
|
-
}
|
|
24088
|
-
return namespacesTypeMapping[key]?.prefix ?? baseNamespacePrefix;
|
|
24089
|
-
}
|
|
24090
|
-
function shouldHavePrefix(elementObject) {
|
|
24091
|
-
if (!elementObject || typeof elementObject !== "object") return false;
|
|
24092
|
-
if ("$qualified" in elementObject && typeof elementObject.$qualified === "boolean") {
|
|
24093
|
-
return elementObject.$qualified;
|
|
24094
|
-
}
|
|
24095
|
-
if ("type" in elementObject && typeof elementObject.type === "object" && elementObject.type !== null) {
|
|
24096
|
-
const typeObj = elementObject.type;
|
|
24097
|
-
if ("$qualified" in typeObj && typeof typeObj.$qualified === "boolean") {
|
|
24098
|
-
return typeObj.$qualified;
|
|
24099
|
-
}
|
|
24100
|
-
}
|
|
24101
|
-
return false;
|
|
24102
|
-
}
|
|
24103
|
-
|
|
24104
23963
|
// src/codegen/xml-generator/type-resolution.ts
|
|
24105
23964
|
function resolveReferencedType(typeValue, schemaObject, allComplexTypes) {
|
|
24106
23965
|
let referencedElement = schemaObject?.[typeValue];
|
|
@@ -24161,7 +24020,7 @@ function resolveNestedType(nestedTypeValue, schemaObject, allComplexTypes) {
|
|
|
24161
24020
|
}
|
|
24162
24021
|
|
|
24163
24022
|
// src/codegen/xml-generator/xml-property.ts
|
|
24164
|
-
function generateXmlPropertyCode(namespacesTypeMapping, baseNamespacePrefix, key, elementObject, parentKey = null, propertyPath = "", parentIsQualified = true, prefixesMapping, schemaObject, allComplexTypes) {
|
|
24023
|
+
function generateXmlPropertyCode(namespacesTypeMapping, baseNamespacePrefix, key, elementObject, parentKey = null, propertyPath = "", parentIsQualified = true, prefixesMapping, schemaObject, allComplexTypes, tagUsageCollector) {
|
|
24165
24024
|
const namespacePrefix = getNamespacePrefix(
|
|
24166
24025
|
namespacesTypeMapping,
|
|
24167
24026
|
baseNamespacePrefix,
|
|
@@ -24175,12 +24034,73 @@ function generateXmlPropertyCode(namespacesTypeMapping, baseNamespacePrefix, key
|
|
|
24175
24034
|
const isQualified = shouldHavePrefix(elementObject);
|
|
24176
24035
|
const openTag = isQualified ? `<${namespacePrefix}.${tagLocalName}>` : `<${tagLocalName}>`;
|
|
24177
24036
|
const closeTag = isQualified ? `</${namespacePrefix}.${tagLocalName}>` : `</${tagLocalName}>`;
|
|
24037
|
+
if (tagUsageCollector && isQualified) {
|
|
24038
|
+
tagUsageCollector.tagToPrefix.set(tagLocalName, namespacePrefix);
|
|
24039
|
+
if (prefixesMapping && prefixesMapping[namespacePrefix]) {
|
|
24040
|
+
tagUsageCollector.prefixToNamespace.set(namespacePrefix, prefixesMapping[namespacePrefix]);
|
|
24041
|
+
}
|
|
24042
|
+
}
|
|
24178
24043
|
const isArray2 = typeof elementObject === "object" && elementObject !== null && "maxOccurs" in elementObject && elementObject.maxOccurs !== void 0 && elementObject.maxOccurs !== "1" && elementObject.maxOccurs !== DEFAULT_OCCURS;
|
|
24179
24044
|
const currentPropertyPath = propertyPath ? propertyPath.endsWith(`.${tagCamelCase}`) || propertyPath === tagCamelCase ? propertyPath : `${propertyPath}.${tagCamelCase}` : tagCamelCase;
|
|
24180
24045
|
if (typeof elementObject === "object" && elementObject !== null && typeof elementObject.type === "string" && (schemaObject || allComplexTypes)) {
|
|
24181
24046
|
const referencedType = elementObject.type;
|
|
24182
24047
|
const referencedElement = resolveReferencedType(referencedType, schemaObject, allComplexTypes);
|
|
24183
24048
|
if (referencedElement && typeof referencedElement === "object") {
|
|
24049
|
+
let referencedElementNamespace = referencedElement.$namespace;
|
|
24050
|
+
if (typeof referencedElementNamespace !== "string") {
|
|
24051
|
+
const typeLocalName = referencedType.split(":").pop() || referencedType;
|
|
24052
|
+
let foundKey;
|
|
24053
|
+
if (schemaObject) {
|
|
24054
|
+
foundKey = Object.keys(schemaObject).find((k) => {
|
|
24055
|
+
if (k === "$namespace" || k === "$qualified") return false;
|
|
24056
|
+
const kLocalName = k.split(":").pop() || k;
|
|
24057
|
+
return kLocalName === typeLocalName;
|
|
24058
|
+
});
|
|
24059
|
+
if (foundKey && foundKey.includes(":")) {
|
|
24060
|
+
const [nsUri] = foundKey.split(":");
|
|
24061
|
+
referencedElementNamespace = nsUri;
|
|
24062
|
+
}
|
|
24063
|
+
}
|
|
24064
|
+
if (!foundKey && allComplexTypes) {
|
|
24065
|
+
foundKey = Object.keys(allComplexTypes).find((k) => {
|
|
24066
|
+
const kLocalName = k.split(":").pop() || k;
|
|
24067
|
+
return kLocalName === typeLocalName;
|
|
24068
|
+
});
|
|
24069
|
+
if (foundKey && foundKey.includes(":")) {
|
|
24070
|
+
const [nsUri] = foundKey.split(":");
|
|
24071
|
+
referencedElementNamespace = nsUri;
|
|
24072
|
+
}
|
|
24073
|
+
}
|
|
24074
|
+
}
|
|
24075
|
+
let wrapperNamespacePrefix = namespacePrefix;
|
|
24076
|
+
if (typeof referencedElementNamespace === "string") {
|
|
24077
|
+
if (prefixesMapping) {
|
|
24078
|
+
for (const [prefix, uri] of Object.entries(prefixesMapping)) {
|
|
24079
|
+
if (uri === referencedElementNamespace) {
|
|
24080
|
+
wrapperNamespacePrefix = prefix;
|
|
24081
|
+
break;
|
|
24082
|
+
}
|
|
24083
|
+
}
|
|
24084
|
+
} else {
|
|
24085
|
+
wrapperNamespacePrefix = getNamespacePrefix(
|
|
24086
|
+
namespacesTypeMapping,
|
|
24087
|
+
baseNamespacePrefix,
|
|
24088
|
+
key,
|
|
24089
|
+
parentKey,
|
|
24090
|
+
{ $namespace: referencedElementNamespace },
|
|
24091
|
+
prefixesMapping
|
|
24092
|
+
);
|
|
24093
|
+
}
|
|
24094
|
+
}
|
|
24095
|
+
const wrapperIsQualified = referencedElement.$qualified !== false;
|
|
24096
|
+
const wrapperOpenTag = wrapperIsQualified ? `<${wrapperNamespacePrefix}.${tagLocalName}>` : `<${tagLocalName}>`;
|
|
24097
|
+
const wrapperCloseTag = wrapperIsQualified ? `</${wrapperNamespacePrefix}.${tagLocalName}>` : `</${tagLocalName}>`;
|
|
24098
|
+
if (tagUsageCollector && wrapperIsQualified) {
|
|
24099
|
+
tagUsageCollector.tagToPrefix.set(tagLocalName, wrapperNamespacePrefix);
|
|
24100
|
+
if (prefixesMapping && prefixesMapping[wrapperNamespacePrefix]) {
|
|
24101
|
+
tagUsageCollector.prefixToNamespace.set(wrapperNamespacePrefix, prefixesMapping[wrapperNamespacePrefix]);
|
|
24102
|
+
}
|
|
24103
|
+
}
|
|
24184
24104
|
let finalReferencedElement = referencedElement;
|
|
24185
24105
|
if ("type" in referencedElement && typeof referencedElement.type === "string") {
|
|
24186
24106
|
const nestedReferencedElement = resolveNestedType(referencedElement.type, schemaObject, allComplexTypes);
|
|
@@ -24215,14 +24135,15 @@ function generateXmlPropertyCode(namespacesTypeMapping, baseNamespacePrefix, key
|
|
|
24215
24135
|
isQualified,
|
|
24216
24136
|
prefixesMapping,
|
|
24217
24137
|
schemaObject,
|
|
24218
|
-
allComplexTypes
|
|
24138
|
+
allComplexTypes,
|
|
24139
|
+
tagUsageCollector
|
|
24219
24140
|
);
|
|
24220
24141
|
}
|
|
24221
24142
|
return "";
|
|
24222
24143
|
}).filter(Boolean).join("\n");
|
|
24223
|
-
return `${
|
|
24144
|
+
return `${wrapperOpenTag}
|
|
24224
24145
|
${nestedProperties}
|
|
24225
|
-
${
|
|
24146
|
+
${wrapperCloseTag}`;
|
|
24226
24147
|
}
|
|
24227
24148
|
}
|
|
24228
24149
|
const referencedKeys = getFilteredKeys(finalReferencedElement);
|
|
@@ -24251,14 +24172,15 @@ function generateXmlPropertyCode(namespacesTypeMapping, baseNamespacePrefix, key
|
|
|
24251
24172
|
isQualified,
|
|
24252
24173
|
prefixesMapping,
|
|
24253
24174
|
schemaObject,
|
|
24254
|
-
allComplexTypes
|
|
24175
|
+
allComplexTypes,
|
|
24176
|
+
tagUsageCollector
|
|
24255
24177
|
);
|
|
24256
24178
|
}
|
|
24257
24179
|
return "";
|
|
24258
24180
|
}).filter(Boolean).join("\n");
|
|
24259
|
-
return `${
|
|
24181
|
+
return `${wrapperOpenTag}
|
|
24260
24182
|
${nestedProperties}
|
|
24261
|
-
${
|
|
24183
|
+
${wrapperCloseTag}`;
|
|
24262
24184
|
}
|
|
24263
24185
|
}
|
|
24264
24186
|
}
|
|
@@ -24325,7 +24247,8 @@ function generateXmlPropertyCode(namespacesTypeMapping, baseNamespacePrefix, key
|
|
|
24325
24247
|
isQualified,
|
|
24326
24248
|
prefixesMapping,
|
|
24327
24249
|
schemaObject,
|
|
24328
|
-
allComplexTypes
|
|
24250
|
+
allComplexTypes,
|
|
24251
|
+
tagUsageCollector
|
|
24329
24252
|
);
|
|
24330
24253
|
}
|
|
24331
24254
|
return "";
|
|
@@ -24339,7 +24262,7 @@ function generateXmlPropertyCode(namespacesTypeMapping, baseNamespacePrefix, key
|
|
|
24339
24262
|
}
|
|
24340
24263
|
|
|
24341
24264
|
// src/codegen/xml-generator/xml-body.ts
|
|
24342
|
-
function generateXmlBodyCode(baseNamespacePrefix, namespacesTypeMapping, baseTypeName, baseTypeObject, propsInterfaceName, schemaObject, allComplexTypes, prefixesMapping) {
|
|
24265
|
+
function generateXmlBodyCode(baseNamespacePrefix, namespacesTypeMapping, baseTypeName, baseTypeObject, propsInterfaceName, schemaObject, allComplexTypes, prefixesMapping, tagUsageCollector) {
|
|
24343
24266
|
const keys = getFilteredKeys(baseTypeObject);
|
|
24344
24267
|
const baseTypeLocalName = extractLocalName(baseTypeName);
|
|
24345
24268
|
if (keys.length === 1) {
|
|
@@ -24350,7 +24273,7 @@ function generateXmlBodyCode(baseNamespacePrefix, namespacesTypeMapping, baseTyp
|
|
|
24350
24273
|
if (typeof typeValue === "object" && typeValue !== null) {
|
|
24351
24274
|
const typeKeys = getFilteredKeys(typeValue);
|
|
24352
24275
|
if (typeKeys.length > 0) {
|
|
24353
|
-
return generateXmlBodyCode(baseNamespacePrefix, namespacesTypeMapping, baseTypeName, typeValue, propsInterfaceName, schemaObject, allComplexTypes, prefixesMapping);
|
|
24276
|
+
return generateXmlBodyCode(baseNamespacePrefix, namespacesTypeMapping, baseTypeName, typeValue, propsInterfaceName, schemaObject, allComplexTypes, prefixesMapping, tagUsageCollector);
|
|
24354
24277
|
}
|
|
24355
24278
|
}
|
|
24356
24279
|
}
|
|
@@ -24372,16 +24295,242 @@ function generateXmlBodyCode(baseNamespacePrefix, namespacesTypeMapping, baseTyp
|
|
|
24372
24295
|
// El padre (root element) siempre es qualified
|
|
24373
24296
|
prefixesMapping,
|
|
24374
24297
|
schemaObject,
|
|
24375
|
-
allComplexTypes
|
|
24298
|
+
allComplexTypes,
|
|
24299
|
+
tagUsageCollector
|
|
24376
24300
|
);
|
|
24377
24301
|
}
|
|
24378
24302
|
return "";
|
|
24379
24303
|
}).filter(Boolean).join("\n");
|
|
24304
|
+
if (tagUsageCollector) {
|
|
24305
|
+
tagUsageCollector.tagToPrefix.set(baseTypeLocalName, baseNamespacePrefix);
|
|
24306
|
+
if (prefixesMapping && prefixesMapping[baseNamespacePrefix]) {
|
|
24307
|
+
tagUsageCollector.prefixToNamespace.set(baseNamespacePrefix, prefixesMapping[baseNamespacePrefix]);
|
|
24308
|
+
}
|
|
24309
|
+
}
|
|
24380
24310
|
return `<${baseNamespacePrefix}.${baseTypeLocalName}>
|
|
24381
24311
|
${properties}
|
|
24382
24312
|
</${baseNamespacePrefix}.${baseTypeLocalName}>`;
|
|
24383
24313
|
}
|
|
24384
24314
|
|
|
24315
|
+
// src/codegen/namespaces.ts
|
|
24316
|
+
function extractAllNamespaceMappings(baseTypeName, baseTypeObject, schemaObject, allComplexTypes) {
|
|
24317
|
+
const tagsMapping = {};
|
|
24318
|
+
const prefixesMapping = {};
|
|
24319
|
+
const typesMapping = {};
|
|
24320
|
+
if (!baseTypeObject || typeof baseTypeObject !== "object") {
|
|
24321
|
+
throw new Error(`El objeto de tipo ${baseTypeName} es inv\xE1lido o est\xE1 vac\xEDo`);
|
|
24322
|
+
}
|
|
24323
|
+
const baseNamespace = baseTypeObject[NAMESPACE_KEY];
|
|
24324
|
+
if (!baseNamespace) {
|
|
24325
|
+
throw new Error(`El tipo ${baseTypeName} no tiene la propiedad $namespace definida`);
|
|
24326
|
+
}
|
|
24327
|
+
const baseIsQualified = baseTypeObject.$qualified === true;
|
|
24328
|
+
const existingPrefixesSet = /* @__PURE__ */ new Set();
|
|
24329
|
+
const baseNamespacePrefix = extractNamespacePrefix(baseNamespace, existingPrefixesSet);
|
|
24330
|
+
existingPrefixesSet.add(baseNamespacePrefix);
|
|
24331
|
+
const baseTypeLocalName = extractLocalName(baseTypeName);
|
|
24332
|
+
if (baseIsQualified) {
|
|
24333
|
+
tagsMapping[baseNamespacePrefix] = [baseTypeLocalName];
|
|
24334
|
+
prefixesMapping[baseNamespacePrefix] = baseNamespace;
|
|
24335
|
+
}
|
|
24336
|
+
typesMapping[baseTypeName] = {
|
|
24337
|
+
uri: baseNamespace,
|
|
24338
|
+
prefix: baseNamespacePrefix
|
|
24339
|
+
};
|
|
24340
|
+
const keys = getFilteredKeys(baseTypeObject);
|
|
24341
|
+
for (const key of keys) {
|
|
24342
|
+
const element = baseTypeObject[key];
|
|
24343
|
+
const tagLocalName = extractLocalName(key);
|
|
24344
|
+
let elementIsQualified = false;
|
|
24345
|
+
let elementNamespace;
|
|
24346
|
+
if (typeof element === "object" && element !== null) {
|
|
24347
|
+
elementIsQualified = element.$qualified === true;
|
|
24348
|
+
elementNamespace = element.$namespace;
|
|
24349
|
+
}
|
|
24350
|
+
const namespace = elementNamespace || baseNamespace;
|
|
24351
|
+
const tagNames = elementIsQualified ? [tagLocalName] : [];
|
|
24352
|
+
if (typeof element === "object" && element !== null && typeof element.type === "object") {
|
|
24353
|
+
const nestedTags = extractNestedTags(element.type);
|
|
24354
|
+
tagNames.push(...nestedTags);
|
|
24355
|
+
}
|
|
24356
|
+
let namespacePrefix = extractNamespacePrefix(namespace, existingPrefixesSet);
|
|
24357
|
+
if (prefixesMapping[namespacePrefix] && prefixesMapping[namespacePrefix] !== namespace) {
|
|
24358
|
+
namespacePrefix = extractNamespacePrefix(namespace, existingPrefixesSet);
|
|
24359
|
+
}
|
|
24360
|
+
existingPrefixesSet.add(namespacePrefix);
|
|
24361
|
+
if (tagNames.length > 0) {
|
|
24362
|
+
if (tagsMapping[namespacePrefix] === void 0) {
|
|
24363
|
+
tagsMapping[namespacePrefix] = tagNames;
|
|
24364
|
+
} else {
|
|
24365
|
+
tagsMapping[namespacePrefix].push(...tagNames);
|
|
24366
|
+
}
|
|
24367
|
+
if (prefixesMapping[namespacePrefix] === void 0) {
|
|
24368
|
+
prefixesMapping[namespacePrefix] = namespace;
|
|
24369
|
+
}
|
|
24370
|
+
}
|
|
24371
|
+
}
|
|
24372
|
+
const flatKeys = flattenKeysWithNamespace(baseTypeObject, baseNamespace, baseNamespacePrefix);
|
|
24373
|
+
for (const item of flatKeys) {
|
|
24374
|
+
typesMapping[item.name] = {
|
|
24375
|
+
uri: item.uri,
|
|
24376
|
+
prefix: item.prefix
|
|
24377
|
+
};
|
|
24378
|
+
}
|
|
24379
|
+
const xmlBodyResult = extractAllTagsForXmlBody(
|
|
24380
|
+
baseTypeObject,
|
|
24381
|
+
typesMapping,
|
|
24382
|
+
baseNamespacePrefix,
|
|
24383
|
+
baseNamespace,
|
|
24384
|
+
/* @__PURE__ */ new Set(),
|
|
24385
|
+
schemaObject,
|
|
24386
|
+
allComplexTypes
|
|
24387
|
+
);
|
|
24388
|
+
for (const [prefix, uri] of xmlBodyResult.namespaces) {
|
|
24389
|
+
let finalPrefix;
|
|
24390
|
+
for (const [p, u] of Object.entries(prefixesMapping)) {
|
|
24391
|
+
if (u === uri) {
|
|
24392
|
+
finalPrefix = p;
|
|
24393
|
+
break;
|
|
24394
|
+
}
|
|
24395
|
+
}
|
|
24396
|
+
if (!finalPrefix || prefixesMapping[prefix] && prefixesMapping[prefix] !== uri) {
|
|
24397
|
+
finalPrefix = extractNamespacePrefix(uri, existingPrefixesSet);
|
|
24398
|
+
existingPrefixesSet.add(finalPrefix);
|
|
24399
|
+
if (prefixesMapping[prefix] && prefixesMapping[prefix] !== uri) {
|
|
24400
|
+
debugContext("extractAllNamespaceMappings", `Colisi\xF3n de prefijo detectada para "${prefix}", usando prefijo \xFAnico: "${finalPrefix}"`);
|
|
24401
|
+
}
|
|
24402
|
+
}
|
|
24403
|
+
if (!prefixesMapping[finalPrefix]) {
|
|
24404
|
+
prefixesMapping[finalPrefix] = uri;
|
|
24405
|
+
debugContext("extractAllNamespaceMappings", `Agregando namespace adicional al prefixesMapping: "${finalPrefix}" -> "${uri}"`);
|
|
24406
|
+
}
|
|
24407
|
+
if (!tagsMapping[finalPrefix]) {
|
|
24408
|
+
tagsMapping[finalPrefix] = [];
|
|
24409
|
+
}
|
|
24410
|
+
}
|
|
24411
|
+
const tagUsageCollector = {
|
|
24412
|
+
tagToPrefix: /* @__PURE__ */ new Map(),
|
|
24413
|
+
prefixToNamespace: /* @__PURE__ */ new Map()
|
|
24414
|
+
};
|
|
24415
|
+
generateXmlBodyCode(
|
|
24416
|
+
baseNamespacePrefix,
|
|
24417
|
+
typesMapping,
|
|
24418
|
+
baseTypeName,
|
|
24419
|
+
baseTypeObject,
|
|
24420
|
+
void 0,
|
|
24421
|
+
// propsInterfaceName
|
|
24422
|
+
schemaObject,
|
|
24423
|
+
allComplexTypes,
|
|
24424
|
+
prefixesMapping,
|
|
24425
|
+
tagUsageCollector
|
|
24426
|
+
);
|
|
24427
|
+
const newTagsMapping = {};
|
|
24428
|
+
const prefixToTags = /* @__PURE__ */ new Map();
|
|
24429
|
+
const tagToPrefixMap = /* @__PURE__ */ new Map();
|
|
24430
|
+
for (const [tag, prefix] of tagUsageCollector.tagToPrefix) {
|
|
24431
|
+
if (tag.startsWith("_")) {
|
|
24432
|
+
continue;
|
|
24433
|
+
}
|
|
24434
|
+
if (tagToPrefixMap.has(tag)) {
|
|
24435
|
+
const existingPrefix = tagToPrefixMap.get(tag);
|
|
24436
|
+
if (existingPrefix !== prefix) {
|
|
24437
|
+
debugContext("extractAllNamespaceMappings", `Tag "${tag}" encontrado en m\xFAltiples prefijos: "${existingPrefix}" y "${prefix}", usando "${prefix}"`);
|
|
24438
|
+
}
|
|
24439
|
+
}
|
|
24440
|
+
tagToPrefixMap.set(tag, prefix);
|
|
24441
|
+
if (!prefixToTags.has(prefix)) {
|
|
24442
|
+
prefixToTags.set(prefix, /* @__PURE__ */ new Set());
|
|
24443
|
+
}
|
|
24444
|
+
prefixToTags.get(prefix).add(tag);
|
|
24445
|
+
}
|
|
24446
|
+
const allTagsAdded = /* @__PURE__ */ new Set();
|
|
24447
|
+
for (const [prefix, tagsSet] of prefixToTags) {
|
|
24448
|
+
const tagsArray = Array.from(tagsSet).filter((tag) => {
|
|
24449
|
+
if (allTagsAdded.has(tag)) {
|
|
24450
|
+
return false;
|
|
24451
|
+
}
|
|
24452
|
+
allTagsAdded.add(tag);
|
|
24453
|
+
return true;
|
|
24454
|
+
});
|
|
24455
|
+
if (tagsArray.length > 0) {
|
|
24456
|
+
newTagsMapping[prefix] = tagsArray;
|
|
24457
|
+
debugContext("extractAllNamespaceMappings", `Agregando ${tagsArray.length} tag(s) al namespace "${prefix}" basado en uso real en XML: ${tagsArray.join(", ")}`);
|
|
24458
|
+
}
|
|
24459
|
+
}
|
|
24460
|
+
for (const [prefix, namespaceUri] of tagUsageCollector.prefixToNamespace) {
|
|
24461
|
+
if (!prefixesMapping[prefix]) {
|
|
24462
|
+
prefixesMapping[prefix] = namespaceUri;
|
|
24463
|
+
debugContext("extractAllNamespaceMappings", `Registrando namespace para prefijo "${prefix}": "${namespaceUri}"`);
|
|
24464
|
+
}
|
|
24465
|
+
}
|
|
24466
|
+
for (const prefix of Object.keys(prefixesMapping)) {
|
|
24467
|
+
if (!newTagsMapping[prefix]) {
|
|
24468
|
+
newTagsMapping[prefix] = [];
|
|
24469
|
+
}
|
|
24470
|
+
}
|
|
24471
|
+
Object.assign(tagsMapping, newTagsMapping);
|
|
24472
|
+
return {
|
|
24473
|
+
tagsMapping,
|
|
24474
|
+
prefixesMapping,
|
|
24475
|
+
typesMapping
|
|
24476
|
+
};
|
|
24477
|
+
}
|
|
24478
|
+
function getNamespacePrefix(namespacesTypeMapping, baseNamespacePrefix, key, parentKey, elementObject, prefixesMapping) {
|
|
24479
|
+
if (elementObject && typeof elementObject === "object") {
|
|
24480
|
+
const elemNs = elementObject.$namespace;
|
|
24481
|
+
if (typeof elemNs === "string") {
|
|
24482
|
+
debugContext("getNamespacePrefix", `Elemento "${key}" tiene namespace: "${elemNs}"`);
|
|
24483
|
+
if (prefixesMapping) {
|
|
24484
|
+
for (const [prefix, uri] of Object.entries(prefixesMapping)) {
|
|
24485
|
+
if (uri === elemNs) {
|
|
24486
|
+
debugContext("getNamespacePrefix", `Encontrado prefijo "${prefix}" para namespace "${elemNs}"`);
|
|
24487
|
+
return prefix;
|
|
24488
|
+
}
|
|
24489
|
+
}
|
|
24490
|
+
debugContext("getNamespacePrefix", `No se encontr\xF3 prefijo en prefixesMapping para "${elemNs}", usando extractNamespacePrefix`);
|
|
24491
|
+
}
|
|
24492
|
+
const extractedPrefix = extractNamespacePrefix(elemNs);
|
|
24493
|
+
debugContext("getNamespacePrefix", `Usando prefijo extra\xEDdo: "${extractedPrefix}" para namespace "${elemNs}"`);
|
|
24494
|
+
return extractedPrefix;
|
|
24495
|
+
} else {
|
|
24496
|
+
if ("type" in elementObject && typeof elementObject.type === "object" && elementObject.type !== null) {
|
|
24497
|
+
const typeNs = elementObject.type.$namespace;
|
|
24498
|
+
if (typeof typeNs === "string") {
|
|
24499
|
+
debugContext("getNamespacePrefix", `Elemento "${key}" no tiene $namespace, pero su tipo tiene: "${typeNs}"`);
|
|
24500
|
+
if (prefixesMapping) {
|
|
24501
|
+
for (const [prefix, uri] of Object.entries(prefixesMapping)) {
|
|
24502
|
+
if (uri === typeNs) {
|
|
24503
|
+
debugContext("getNamespacePrefix", `Encontrado prefijo "${prefix}" para namespace del tipo "${typeNs}"`);
|
|
24504
|
+
return prefix;
|
|
24505
|
+
}
|
|
24506
|
+
}
|
|
24507
|
+
}
|
|
24508
|
+
const extractedPrefix = extractNamespacePrefix(typeNs);
|
|
24509
|
+
debugContext("getNamespacePrefix", `Usando prefijo extra\xEDdo del tipo: "${extractedPrefix}" para namespace "${typeNs}"`);
|
|
24510
|
+
return extractedPrefix;
|
|
24511
|
+
}
|
|
24512
|
+
}
|
|
24513
|
+
}
|
|
24514
|
+
}
|
|
24515
|
+
if (parentKey !== null) {
|
|
24516
|
+
return namespacesTypeMapping[parentKey]?.prefix ?? baseNamespacePrefix;
|
|
24517
|
+
}
|
|
24518
|
+
return namespacesTypeMapping[key]?.prefix ?? baseNamespacePrefix;
|
|
24519
|
+
}
|
|
24520
|
+
function shouldHavePrefix(elementObject) {
|
|
24521
|
+
if (!elementObject || typeof elementObject !== "object") return false;
|
|
24522
|
+
if ("$qualified" in elementObject && typeof elementObject.$qualified === "boolean") {
|
|
24523
|
+
return elementObject.$qualified;
|
|
24524
|
+
}
|
|
24525
|
+
if ("type" in elementObject && typeof elementObject.type === "object" && elementObject.type !== null) {
|
|
24526
|
+
const typeObj = elementObject.type;
|
|
24527
|
+
if ("$qualified" in typeObj && typeof typeObj.$qualified === "boolean") {
|
|
24528
|
+
return typeObj.$qualified;
|
|
24529
|
+
}
|
|
24530
|
+
}
|
|
24531
|
+
return false;
|
|
24532
|
+
}
|
|
24533
|
+
|
|
24385
24534
|
// src/codegen/data-preparer/simple-types.ts
|
|
24386
24535
|
function prepareSimpleTypesData(typeObject, xmlSchemaUri) {
|
|
24387
24536
|
return Object.keys(typeObject).filter((key) => {
|
|
@@ -24647,21 +24796,42 @@ function preparePropsInterfaceData(typeName, typeObject, allTypesForInterfaces,
|
|
|
24647
24796
|
}
|
|
24648
24797
|
if (nestedReferencedElement && typeof nestedReferencedElement === "object") {
|
|
24649
24798
|
debugContext("preparePropsInterfaceData", `Expandiendo contenido del tipo anidado`);
|
|
24650
|
-
|
|
24799
|
+
const cleanedNestedElement = { ...nestedReferencedElement };
|
|
24800
|
+
Object.keys(cleanedNestedElement).forEach((key) => {
|
|
24801
|
+
if (key.startsWith("_")) {
|
|
24802
|
+
delete cleanedNestedElement[key];
|
|
24803
|
+
}
|
|
24804
|
+
});
|
|
24805
|
+
return preparePropsInterfaceData(typeName, cleanedNestedElement, allTypesForInterfaces, schemaObject, allComplexTypes);
|
|
24651
24806
|
}
|
|
24652
24807
|
}
|
|
24653
|
-
|
|
24808
|
+
const cleanedReferencedElement = { ...referencedElement };
|
|
24809
|
+
Object.keys(cleanedReferencedElement).forEach((key) => {
|
|
24810
|
+
if (key.startsWith("_")) {
|
|
24811
|
+
delete cleanedReferencedElement[key];
|
|
24812
|
+
}
|
|
24813
|
+
});
|
|
24814
|
+
return preparePropsInterfaceData(typeName, cleanedReferencedElement, allTypesForInterfaces, schemaObject, allComplexTypes);
|
|
24654
24815
|
}
|
|
24655
24816
|
}
|
|
24656
24817
|
if (typeof typeValue === "object" && typeValue !== null) {
|
|
24657
|
-
const
|
|
24818
|
+
const cleanedTypeValue = { ...typeValue };
|
|
24819
|
+
Object.keys(cleanedTypeValue).forEach((key) => {
|
|
24820
|
+
if (key.startsWith("_")) {
|
|
24821
|
+
delete cleanedTypeValue[key];
|
|
24822
|
+
}
|
|
24823
|
+
});
|
|
24824
|
+
const typeKeys = getFilteredKeys(cleanedTypeValue);
|
|
24658
24825
|
if (typeKeys.length > 0) {
|
|
24659
|
-
return preparePropsInterfaceData(typeName,
|
|
24826
|
+
return preparePropsInterfaceData(typeName, cleanedTypeValue, allTypesForInterfaces, schemaObject, allComplexTypes);
|
|
24660
24827
|
}
|
|
24661
24828
|
}
|
|
24662
24829
|
}
|
|
24663
24830
|
}
|
|
24664
|
-
const properties = keys.
|
|
24831
|
+
const properties = keys.filter((key) => {
|
|
24832
|
+
const localName = extractLocalName(key);
|
|
24833
|
+
return !localName.startsWith("_");
|
|
24834
|
+
}).map((key) => {
|
|
24665
24835
|
const localName = extractLocalName(key);
|
|
24666
24836
|
const element = typeObject[key];
|
|
24667
24837
|
let propertyType;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@karibulab/wsdl2tsx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Generador de código TSX desde archivos WSDL",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": "./dist/cli.js",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"start": "node dist/cli.js"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@karibulab/wsdl2tsx-runtime": "0.
|
|
16
|
+
"@karibulab/wsdl2tsx-runtime": "0.20.0",
|
|
17
17
|
"axios": "^1.7.9",
|
|
18
18
|
"fast-xml-parser": "5.3.3",
|
|
19
19
|
"handlebars": "4.7.8"
|