@mavogel/awscdk-rootmail 0.0.330 → 0.0.331

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 (171) hide show
  1. package/.jsii +3 -3
  2. package/lib/rootmail.js +1 -1
  3. package/lib/ses-receive.js +1 -1
  4. package/node_modules/@aws-sdk/client-cloudwatch-logs/package.json +16 -16
  5. package/node_modules/@aws-sdk/client-route-53/package.json +16 -16
  6. package/node_modules/@aws-sdk/client-s3/package.json +21 -21
  7. package/node_modules/@aws-sdk/client-ses/package.json +15 -15
  8. package/node_modules/@aws-sdk/client-ssm/package.json +15 -15
  9. package/node_modules/@aws-sdk/core/dist-cjs/index.js +54 -21
  10. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +54 -21
  11. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js +24 -6
  12. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js +6 -5
  13. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js +2 -1
  14. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js +2 -1
  15. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js +6 -4
  16. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js +6 -4
  17. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js +4 -2
  18. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js +9 -3
  19. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ProtocolLib.d.ts +13 -0
  20. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts +3 -1
  21. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts +3 -1
  22. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts +3 -1
  23. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +3 -1
  24. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts +3 -1
  25. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts +3 -0
  26. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts +3 -0
  27. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts +2 -0
  28. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts +6 -0
  29. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts +3 -0
  30. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts +3 -0
  31. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts +3 -0
  32. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +3 -0
  33. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts +8 -1
  34. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts +3 -0
  35. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts +3 -0
  36. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts +6 -1
  37. package/node_modules/@aws-sdk/core/package.json +4 -4
  38. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  39. package/node_modules/@aws-sdk/credential-provider-http/package.json +5 -5
  40. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  41. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  42. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  43. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  44. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  45. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  46. package/node_modules/@aws-sdk/middleware-flexible-checksums/package.json +4 -4
  47. package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +5 -5
  48. package/node_modules/@aws-sdk/middleware-user-agent/package.json +3 -3
  49. package/node_modules/@aws-sdk/nested-clients/package.json +14 -14
  50. package/node_modules/@aws-sdk/region-config-resolver/package.json +2 -2
  51. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +2 -2
  52. package/node_modules/@aws-sdk/token-providers/package.json +3 -3
  53. package/node_modules/@aws-sdk/util-user-agent-node/package.json +2 -2
  54. package/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js +21 -11
  55. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +5 -1
  56. package/node_modules/@aws-sdk/xml-builder/dist-es/escape-attribute.js +8 -1
  57. package/node_modules/@aws-sdk/xml-builder/dist-es/escape-element.js +13 -10
  58. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +5 -1
  59. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/CHANGELOG.md +40 -4
  60. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/README.md +8 -7
  61. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js +1 -1
  62. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +1 -1
  63. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.cjs +1 -1
  64. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.d.cts +82 -20
  65. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js +1 -1
  66. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -1
  67. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js +1 -1
  68. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -1
  69. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js.map +1 -1
  70. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/pem.d.cts +148 -0
  71. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/package.json +4 -3
  72. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.d.ts +75 -19
  73. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/pem.d.ts +135 -0
  74. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/util.js +18 -0
  75. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +37 -18
  76. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +76 -5
  77. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +298 -116
  78. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +2 -2
  79. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/node2json.js +65 -15
  80. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  81. package/node_modules/@smithy/config-resolver/dist-cjs/index.js +12 -0
  82. package/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js +5 -0
  83. package/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js +5 -0
  84. package/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts +6 -0
  85. package/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts +6 -0
  86. package/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts +6 -0
  87. package/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts +6 -0
  88. package/node_modules/@smithy/config-resolver/package.json +1 -1
  89. package/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts +2 -2
  90. package/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts +2 -2
  91. package/node_modules/@smithy/middleware-endpoint/package.json +1 -1
  92. package/node_modules/@smithy/middleware-retry/package.json +2 -2
  93. package/node_modules/@smithy/smithy-client/package.json +2 -2
  94. package/node_modules/@smithy/util-defaults-mode-browser/package.json +2 -2
  95. package/node_modules/@smithy/util-defaults-mode-node/package.json +3 -3
  96. package/node_modules/fast-xml-builder/CHANGELOG.md +16 -0
  97. package/node_modules/fast-xml-builder/README.md +1 -1
  98. package/node_modules/fast-xml-builder/lib/fxb.cjs +1 -0
  99. package/node_modules/fast-xml-builder/lib/fxb.d.cts +22 -9
  100. package/node_modules/fast-xml-builder/lib/fxb.min.js +2 -0
  101. package/node_modules/fast-xml-builder/lib/fxb.min.js.map +1 -0
  102. package/node_modules/fast-xml-builder/package.json +7 -5
  103. package/node_modules/fast-xml-builder/src/fxb.d.ts +27 -3
  104. package/node_modules/fast-xml-builder/src/fxb.js +265 -21
  105. package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +165 -18
  106. package/node_modules/mailparser/.release-please-manifest.json +1 -1
  107. package/node_modules/mailparser/CHANGELOG.md +7 -0
  108. package/node_modules/mailparser/package.json +3 -3
  109. package/node_modules/nodemailer/CHANGELOG.md +10 -0
  110. package/node_modules/nodemailer/lib/addressparser/index.js +68 -83
  111. package/node_modules/nodemailer/lib/base64/index.js +6 -5
  112. package/node_modules/nodemailer/lib/dkim/index.js +8 -16
  113. package/node_modules/nodemailer/lib/dkim/message-parser.js +12 -13
  114. package/node_modules/nodemailer/lib/dkim/relaxed-body.js +2 -2
  115. package/node_modules/nodemailer/lib/dkim/sign.js +13 -14
  116. package/node_modules/nodemailer/lib/errors.js +4 -7
  117. package/node_modules/nodemailer/lib/fetch/cookies.js +13 -18
  118. package/node_modules/nodemailer/lib/fetch/index.js +12 -15
  119. package/node_modules/nodemailer/lib/json-transport/index.js +4 -4
  120. package/node_modules/nodemailer/lib/mail-composer/index.js +86 -116
  121. package/node_modules/nodemailer/lib/mailer/index.js +26 -26
  122. package/node_modules/nodemailer/lib/mailer/mail-message.js +17 -21
  123. package/node_modules/nodemailer/lib/mime-funcs/index.js +25 -40
  124. package/node_modules/nodemailer/lib/mime-funcs/mime-types.js +7 -11
  125. package/node_modules/nodemailer/lib/mime-node/index.js +81 -72
  126. package/node_modules/nodemailer/lib/mime-node/last-newline.js +1 -1
  127. package/node_modules/nodemailer/lib/mime-node/le-unix.js +4 -7
  128. package/node_modules/nodemailer/lib/mime-node/le-windows.js +1 -4
  129. package/node_modules/nodemailer/lib/nodemailer.js +11 -18
  130. package/node_modules/nodemailer/lib/qp/index.js +24 -21
  131. package/node_modules/nodemailer/lib/sendmail-transport/index.js +30 -41
  132. package/node_modules/nodemailer/lib/ses-transport/index.js +23 -34
  133. package/node_modules/nodemailer/lib/shared/index.js +94 -140
  134. package/node_modules/nodemailer/lib/smtp-connection/data-stream.js +3 -6
  135. package/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +11 -13
  136. package/node_modules/nodemailer/lib/smtp-connection/index.js +114 -181
  137. package/node_modules/nodemailer/lib/smtp-pool/index.js +20 -32
  138. package/node_modules/nodemailer/lib/smtp-pool/pool-resource.js +8 -12
  139. package/node_modules/nodemailer/lib/smtp-transport/index.js +22 -42
  140. package/node_modules/nodemailer/lib/stream-transport/index.js +7 -7
  141. package/node_modules/nodemailer/lib/well-known/index.js +7 -7
  142. package/node_modules/nodemailer/lib/xoauth2/index.js +22 -28
  143. package/node_modules/nodemailer/package.json +4 -3
  144. package/node_modules/path-expression-matcher/LICENSE +21 -0
  145. package/node_modules/path-expression-matcher/README.md +720 -0
  146. package/node_modules/path-expression-matcher/lib/pem.cjs +1 -0
  147. package/node_modules/path-expression-matcher/lib/pem.d.cts +523 -0
  148. package/node_modules/path-expression-matcher/lib/pem.min.js +2 -0
  149. package/node_modules/path-expression-matcher/lib/pem.min.js.map +1 -0
  150. package/node_modules/path-expression-matcher/package.json +78 -0
  151. package/node_modules/path-expression-matcher/src/Expression.js +232 -0
  152. package/node_modules/path-expression-matcher/src/Matcher.js +498 -0
  153. package/node_modules/path-expression-matcher/src/index.d.ts +518 -0
  154. package/node_modules/path-expression-matcher/src/index.js +28 -0
  155. package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/CHANGELOG.md +9 -2
  156. package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/README.md +1 -0
  157. package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/package.json +3 -3
  158. package/node_modules/strnum/strnum.js +161 -0
  159. package/node_modules/strnum/tests/infinity_test.js +18 -0
  160. package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum/strnum.test.js → strnum/tests/strnum_test.js} +70 -68
  161. package/node_modules/strnum/tests/temp.js +8 -0
  162. package/package.json +1 -1
  163. package/node_modules/@aws-sdk/xml-builder/node_modules/strnum/strnum.js +0 -129
  164. package/node_modules/@aws-sdk/xml-builder/node_modules/strnum/test.js +0 -9
  165. package/node_modules/fast-xml-builder/lib/builder.cjs +0 -1
  166. package/node_modules/fast-xml-builder/lib/builder.min.js +0 -2
  167. package/node_modules/fast-xml-builder/lib/builder.min.js.map +0 -1
  168. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/.github/SECURITY.md +0 -0
  169. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/.vscode/launch.json +0 -0
  170. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/LICENSE +0 -0
  171. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/algo.stflow +0 -0
@@ -35,7 +35,7 @@ export default class XMLParser {
35
35
  orderedObjParser.addExternalEntities(this.externalEntities);
36
36
  const orderedResult = orderedObjParser.parseXml(xmlData);
37
37
  if (this.options.preserveOrder || orderedResult === undefined) return orderedResult;
38
- else return prettify(orderedResult, this.options);
38
+ else return prettify(orderedResult, this.options, orderedObjParser.matcher, orderedObjParser.readonlyMatcher);
39
39
  }
40
40
 
41
41
  /**
@@ -68,4 +68,4 @@ export default class XMLParser {
68
68
  static getMetaDataSymbol() {
69
69
  return XmlNode.getMetaDataSymbol();
70
70
  }
71
- }
71
+ }
@@ -1,35 +1,65 @@
1
1
  'use strict';
2
2
 
3
3
  import XmlNode from './xmlNode.js';
4
+ import { Matcher } from 'path-expression-matcher';
4
5
 
5
6
  const METADATA_SYMBOL = XmlNode.getMetaDataSymbol();
6
7
 
8
+ /**
9
+ * Helper function to strip attribute prefix from attribute map
10
+ * @param {object} attrs - Attributes with prefix (e.g., {"@_class": "code"})
11
+ * @param {string} prefix - Attribute prefix to remove (e.g., "@_")
12
+ * @returns {object} Attributes without prefix (e.g., {"class": "code"})
13
+ */
14
+ function stripAttributePrefix(attrs, prefix) {
15
+ if (!attrs || typeof attrs !== 'object') return {};
16
+ if (!prefix) return attrs;
17
+
18
+ const rawAttrs = {};
19
+ for (const key in attrs) {
20
+ if (key.startsWith(prefix)) {
21
+ const rawName = key.substring(prefix.length);
22
+ rawAttrs[rawName] = attrs[key];
23
+ } else {
24
+ // Attribute without prefix (shouldn't normally happen, but be safe)
25
+ rawAttrs[key] = attrs[key];
26
+ }
27
+ }
28
+ return rawAttrs;
29
+ }
30
+
7
31
  /**
8
32
  *
9
33
  * @param {array} node
10
34
  * @param {any} options
35
+ * @param {Matcher} matcher - Path matcher instance
11
36
  * @returns
12
37
  */
13
- export default function prettify(node, options) {
14
- return compress(node, options);
38
+ export default function prettify(node, options, matcher, readonlyMatcher) {
39
+ return compress(node, options, matcher, readonlyMatcher);
15
40
  }
16
41
 
17
42
  /**
18
- *
19
43
  * @param {array} arr
20
44
  * @param {object} options
21
- * @param {string} jPath
45
+ * @param {Matcher} matcher - Path matcher instance
22
46
  * @returns object
23
47
  */
24
- function compress(arr, options, jPath) {
48
+ function compress(arr, options, matcher, readonlyMatcher) {
25
49
  let text;
26
50
  const compressedObj = {}; //This is intended to be a plain object
27
51
  for (let i = 0; i < arr.length; i++) {
28
52
  const tagObj = arr[i];
29
53
  const property = propName(tagObj);
30
- let newJpath = "";
31
- if (jPath === undefined) newJpath = property;
32
- else newJpath = jPath + "." + property;
54
+
55
+ // Push current property to matcher WITH RAW ATTRIBUTES (no prefix)
56
+ if (property !== undefined && property !== options.textNodeName) {
57
+ const rawAttrs = stripAttributePrefix(
58
+ tagObj[":@"] || {},
59
+ options.attributeNamePrefix
60
+ );
61
+ matcher.push(property, rawAttrs);
62
+ }
33
63
 
34
64
  if (property === options.textNodeName) {
35
65
  if (text === undefined) text = tagObj[property];
@@ -38,11 +68,11 @@ function compress(arr, options, jPath) {
38
68
  continue;
39
69
  } else if (tagObj[property]) {
40
70
 
41
- let val = compress(tagObj[property], options, newJpath);
71
+ let val = compress(tagObj[property], options, matcher, readonlyMatcher);
42
72
  const isLeaf = isLeafTag(val, options);
43
73
 
44
74
  if (tagObj[":@"]) {
45
- assignAttributes(val, tagObj[":@"], newJpath, options);
75
+ assignAttributes(val, tagObj[":@"], readonlyMatcher, options);
46
76
  } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {
47
77
  val = val[options.textNodeName];
48
78
  } else if (Object.keys(val).length === 0) {
@@ -63,12 +93,20 @@ function compress(arr, options, jPath) {
63
93
  } else {
64
94
  //TODO: if a node is not an array, then check if it should be an array
65
95
  //also determine if it is a leaf node
66
- if (options.isArray(property, newJpath, isLeaf)) {
96
+
97
+ // Pass jPath string or readonlyMatcher based on options.jPath setting
98
+ const jPathOrMatcher = options.jPath ? readonlyMatcher.toString() : readonlyMatcher;
99
+ if (options.isArray(property, jPathOrMatcher, isLeaf)) {
67
100
  compressedObj[property] = [val];
68
101
  } else {
69
102
  compressedObj[property] = val;
70
103
  }
71
104
  }
105
+
106
+ // Pop property from matcher after processing
107
+ if (property !== undefined && property !== options.textNodeName) {
108
+ matcher.pop();
109
+ }
72
110
  }
73
111
 
74
112
  }
@@ -89,13 +127,25 @@ function propName(obj) {
89
127
  }
90
128
  }
91
129
 
92
- function assignAttributes(obj, attrMap, jpath, options) {
130
+ function assignAttributes(obj, attrMap, readonlyMatcher, options) {
93
131
  if (attrMap) {
94
132
  const keys = Object.keys(attrMap);
95
133
  const len = keys.length; //don't make it inline
96
134
  for (let i = 0; i < len; i++) {
97
- const atrrName = keys[i];
98
- if (options.isArray(atrrName, jpath + "." + atrrName, true, true)) {
135
+ const atrrName = keys[i]; // This is the PREFIXED name (e.g., "@_class")
136
+
137
+ // Strip prefix for matcher path (for isArray callback)
138
+ const rawAttrName = atrrName.startsWith(options.attributeNamePrefix)
139
+ ? atrrName.substring(options.attributeNamePrefix.length)
140
+ : atrrName;
141
+
142
+ // For attributes, we need to create a temporary path
143
+ // Pass jPath string or matcher based on options.jPath setting
144
+ const jPathOrMatcher = options.jPath
145
+ ? readonlyMatcher.toString() + "." + rawAttrName
146
+ : readonlyMatcher;
147
+
148
+ if (options.isArray(atrrName, jPathOrMatcher, true, true)) {
99
149
  obj[atrrName] = [attrMap[atrrName]];
100
150
  } else {
101
151
  obj[atrrName] = attrMap[atrrName];
@@ -120,4 +170,4 @@ function isLeafTag(obj, options) {
120
170
  }
121
171
 
122
172
  return false;
123
- }
173
+ }
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@aws-sdk/xml-builder",
3
- "version": "3.972.11",
3
+ "version": "3.972.15",
4
4
  "description": "XML utilities for the AWS SDK",
5
5
  "dependencies": {
6
6
  "@smithy/types": "^4.13.1",
7
- "fast-xml-parser": "5.4.1",
7
+ "fast-xml-parser": "5.5.8",
8
8
  "tslib": "^2.6.2"
9
9
  },
10
10
  "scripts": {
@@ -12,6 +12,11 @@ const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {
12
12
  configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, utilConfigProvider.SelectorType.CONFIG),
13
13
  default: false,
14
14
  };
15
+ const nodeDualstackConfigSelectors = {
16
+ environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, utilConfigProvider.SelectorType.ENV),
17
+ configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, utilConfigProvider.SelectorType.CONFIG),
18
+ default: undefined,
19
+ };
15
20
 
16
21
  const ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT";
17
22
  const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint";
@@ -21,6 +26,11 @@ const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {
21
26
  configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, utilConfigProvider.SelectorType.CONFIG),
22
27
  default: false,
23
28
  };
29
+ const nodeFipsConfigSelectors = {
30
+ environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, ENV_USE_FIPS_ENDPOINT, utilConfigProvider.SelectorType.ENV),
31
+ configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, utilConfigProvider.SelectorType.CONFIG),
32
+ default: undefined,
33
+ };
24
34
 
25
35
  const resolveCustomEndpointsConfig = (input) => {
26
36
  const { tls, endpoint, urlParser, useDualstackEndpoint } = input;
@@ -181,6 +191,8 @@ exports.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = NODE_USE_FIPS_ENDPOINT_CONFIG_OP
181
191
  exports.REGION_ENV_NAME = REGION_ENV_NAME;
182
192
  exports.REGION_INI_NAME = REGION_INI_NAME;
183
193
  exports.getRegionInfo = getRegionInfo;
194
+ exports.nodeDualstackConfigSelectors = nodeDualstackConfigSelectors;
195
+ exports.nodeFipsConfigSelectors = nodeFipsConfigSelectors;
184
196
  exports.resolveCustomEndpointsConfig = resolveCustomEndpointsConfig;
185
197
  exports.resolveEndpointsConfig = resolveEndpointsConfig;
186
198
  exports.resolveRegionConfig = resolveRegionConfig;
@@ -7,3 +7,8 @@ export const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {
7
7
  configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG),
8
8
  default: false,
9
9
  };
10
+ export const nodeDualstackConfigSelectors = {
11
+ environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV),
12
+ configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG),
13
+ default: undefined,
14
+ };
@@ -7,3 +7,8 @@ export const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {
7
7
  configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG),
8
8
  default: false,
9
9
  };
10
+ export const nodeFipsConfigSelectors = {
11
+ environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV),
12
+ configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG),
13
+ default: undefined,
14
+ };
@@ -12,6 +12,12 @@ export declare const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint";
12
12
  */
13
13
  export declare const DEFAULT_USE_DUALSTACK_ENDPOINT = false;
14
14
  /**
15
+ * Don't delete this, used by older clients.
16
+ * @deprecated replaced by nodeDualstackConfigSelectors in newer clients.
15
17
  * @internal
16
18
  */
17
19
  export declare const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors<boolean>;
20
+ /**
21
+ * @internal
22
+ */
23
+ export declare const nodeDualstackConfigSelectors: LoadedConfigSelectors<boolean | undefined>;
@@ -12,6 +12,12 @@ export declare const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint";
12
12
  */
13
13
  export declare const DEFAULT_USE_FIPS_ENDPOINT = false;
14
14
  /**
15
+ * Don't delete this, used by older clients.
16
+ * @deprecated replaced by nodeFipsConfigSelectors in newer clients.
15
17
  * @internal
16
18
  */
17
19
  export declare const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors<boolean>;
20
+ /**
21
+ * @internal
22
+ */
23
+ export declare const nodeFipsConfigSelectors: LoadedConfigSelectors<boolean | undefined>;
@@ -12,6 +12,12 @@ export declare const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint";
12
12
  */
13
13
  export declare const DEFAULT_USE_DUALSTACK_ENDPOINT = false;
14
14
  /**
15
+ * Don't delete this, used by older clients.
16
+ * @deprecated replaced by nodeDualstackConfigSelectors in newer clients.
15
17
  * @internal
16
18
  */
17
19
  export declare const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors<boolean>;
20
+ /**
21
+ * @internal
22
+ */
23
+ export declare const nodeDualstackConfigSelectors: LoadedConfigSelectors<boolean | undefined>;
@@ -12,6 +12,12 @@ export declare const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint";
12
12
  */
13
13
  export declare const DEFAULT_USE_FIPS_ENDPOINT = false;
14
14
  /**
15
+ * Don't delete this, used by older clients.
16
+ * @deprecated replaced by nodeFipsConfigSelectors in newer clients.
15
17
  * @internal
16
18
  */
17
19
  export declare const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors<boolean>;
20
+ /**
21
+ * @internal
22
+ */
23
+ export declare const nodeFipsConfigSelectors: LoadedConfigSelectors<boolean | undefined>;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/config-resolver",
3
- "version": "4.4.11",
3
+ "version": "4.4.13",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline config-resolver",
@@ -31,11 +31,11 @@ export interface EndpointInputConfig<T extends EndpointParameters = EndpointPara
31
31
  /**
32
32
  * Enables IPv6/IPv4 dualstack endpoint.
33
33
  */
34
- useDualstackEndpoint?: boolean | Provider<boolean>;
34
+ useDualstackEndpoint?: boolean | Provider<boolean | undefined>;
35
35
  /**
36
36
  * Enables FIPS compatible endpoints.
37
37
  */
38
- useFipsEndpoint?: boolean | Provider<boolean>;
38
+ useFipsEndpoint?: boolean | Provider<boolean | undefined>;
39
39
  /**
40
40
  * @internal
41
41
  * This field is used internally so you should not fill any value to this field.
@@ -31,11 +31,11 @@ export interface EndpointInputConfig<T extends EndpointParameters = EndpointPara
31
31
  /**
32
32
  * Enables IPv6/IPv4 dualstack endpoint.
33
33
  */
34
- useDualstackEndpoint?: boolean | Provider<boolean>;
34
+ useDualstackEndpoint?: boolean | Provider<boolean | undefined>;
35
35
  /**
36
36
  * Enables FIPS compatible endpoints.
37
37
  */
38
- useFipsEndpoint?: boolean | Provider<boolean>;
38
+ useFipsEndpoint?: boolean | Provider<boolean | undefined>;
39
39
  /**
40
40
  * @internal
41
41
  * This field is used internally so you should not fill any value to this field.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/middleware-endpoint",
3
- "version": "4.4.26",
3
+ "version": "4.4.27",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline middleware-endpoint",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/middleware-retry",
3
- "version": "4.4.43",
3
+ "version": "4.4.44",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline middleware-retry",
@@ -37,7 +37,7 @@
37
37
  "@smithy/node-config-provider": "^4.3.12",
38
38
  "@smithy/protocol-http": "^5.3.12",
39
39
  "@smithy/service-error-classification": "^4.2.12",
40
- "@smithy/smithy-client": "^4.12.6",
40
+ "@smithy/smithy-client": "^4.12.7",
41
41
  "@smithy/types": "^4.13.1",
42
42
  "@smithy/util-middleware": "^4.2.12",
43
43
  "@smithy/util-retry": "^4.2.12",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/smithy-client",
3
- "version": "4.12.6",
3
+ "version": "4.12.7",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline smithy-client",
@@ -28,7 +28,7 @@
28
28
  "sideEffects": false,
29
29
  "dependencies": {
30
30
  "@smithy/core": "^3.23.12",
31
- "@smithy/middleware-endpoint": "^4.4.26",
31
+ "@smithy/middleware-endpoint": "^4.4.27",
32
32
  "@smithy/middleware-stack": "^4.2.12",
33
33
  "@smithy/protocol-http": "^5.3.12",
34
34
  "@smithy/types": "^4.13.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-defaults-mode-browser",
3
- "version": "4.3.42",
3
+ "version": "4.3.43",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline util-defaults-mode-browser",
@@ -25,7 +25,7 @@
25
25
  "sideEffects": false,
26
26
  "dependencies": {
27
27
  "@smithy/property-provider": "^4.2.12",
28
- "@smithy/smithy-client": "^4.12.6",
28
+ "@smithy/smithy-client": "^4.12.7",
29
29
  "@smithy/types": "^4.13.1",
30
30
  "tslib": "^2.6.2"
31
31
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smithy/util-defaults-mode-node",
3
- "version": "4.2.45",
3
+ "version": "4.2.47",
4
4
  "scripts": {
5
5
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'",
6
6
  "build:cjs": "node ../../scripts/inline util-defaults-mode-node",
@@ -24,11 +24,11 @@
24
24
  "license": "Apache-2.0",
25
25
  "sideEffects": false,
26
26
  "dependencies": {
27
- "@smithy/config-resolver": "^4.4.11",
27
+ "@smithy/config-resolver": "^4.4.13",
28
28
  "@smithy/credential-provider-imds": "^4.2.12",
29
29
  "@smithy/node-config-provider": "^4.3.12",
30
30
  "@smithy/property-provider": "^4.2.12",
31
- "@smithy/smithy-client": "^4.12.6",
31
+ "@smithy/smithy-client": "^4.12.7",
32
32
  "@smithy/types": "^4.13.1",
33
33
  "tslib": "^2.6.2"
34
34
  },
@@ -0,0 +1,16 @@
1
+ **1.1.4** (2026-03-16)
2
+ - support maxNestedTags option
3
+
4
+ **1.1.3** (2026-03-13)
5
+ - declare Matcher & Expression as unknown so user is not forced to install path-expression-matcher
6
+
7
+ **1.1.2** (2026-03-11)
8
+ - fix typings
9
+
10
+ **1.1.1** (2026-03-11)
11
+ - upgrade path-expression-matcher to 1.1.3
12
+
13
+ **1.1.0** (2026-03-10)
14
+
15
+ - Integrate [path-expression-matcher](https://github.com/NaturalIntelligence/path-expression-matcher)
16
+
@@ -13,7 +13,7 @@ npm install fast-xml-builder
13
13
  ## Usage
14
14
 
15
15
  ```javascript
16
- import { XMLBuilder } from 'fast-xml-builder';
16
+ import XMLBuilder from 'fast-xml-builder';
17
17
 
18
18
  const builder = new XMLBuilder();
19
19
  const xml = builder.build({ name: 'value' });
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>f});class i{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,s="";for(;i<t.length;)t[i]===this.separator?i+1<t.length&&t[i+1]===this.separator?(s.trim()&&(e.push(this._parseSegment(s.trim())),s=""),e.push({type:"deep-wildcard"}),i+=2):(s.trim()&&e.push(this._parseSegment(s.trim())),s="",i++):(s+=t[i],i++);return s.trim()&&e.push(this._parseSegment(s.trim())),e}_parseSegment(t){const e={type:"tag"};let i=null,s=t;const n=t.match(/^([^\[]+)(\[[^\]]*\])(.*)$/);if(n&&(s=n[1]+n[3],n[2])){const t=n[2].slice(1,-1);t&&(i=t)}let o,r,a=s;if(s.includes("::")){const e=s.indexOf("::");if(o=s.substring(0,e).trim(),a=s.substring(e+2).trim(),!o)throw new Error(`Invalid namespace in pattern: ${t}`)}let h=null;if(a.includes(":")){const t=a.lastIndexOf(":"),e=a.substring(0,t).trim(),i=a.substring(t+1).trim();["first","last","odd","even"].includes(i)||/^nth\(\d+\)$/.test(i)?(r=e,h=i):r=a}else r=a;if(!r)throw new Error(`Invalid segment pattern: ${t}`);if(e.tag=r,o&&(e.namespace=o),i)if(i.includes("=")){const t=i.indexOf("=");e.attrName=i.substring(0,t).trim(),e.attrValue=i.substring(t+1).trim()}else e.attrName=i.trim();if(h){const t=h.match(/^nth\((\d+)\)$/);t?(e.position="nth",e.positionValue=parseInt(t[1],10)):e.position=h}return e}get length(){return this.segments.length}hasDeepWildcard(){return this._hasDeepWildcard}hasAttributeCondition(){return this._hasAttributeCondition}hasPositionSelector(){return this._hasPositionSelector}toString(){return this.pattern}}class s{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[]}push(t,e=null,i=null){this.path.length>0&&(this.path[this.path.length-1].values=void 0);const s=this.path.length;this.siblingStacks[s]||(this.siblingStacks[s]=new Map);const n=this.siblingStacks[s],o=i?`${i}:${t}`:t,r=n.get(o)||0;let a=0;for(const t of n.values())a+=t;n.set(o,r+1);const h={tag:t,position:a,counter:r};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e<t.length;e++){const i=t[e],s=this.path[e],n=e===this.path.length-1;if(!this._matchSegment(i,s,n))return!1}return!0}_matchWithDeepWildcard(t){let e=this.path.length-1,i=t.length-1;for(;i>=0&&e>=0;){const s=t[i];if("deep-wildcard"===s.type){if(i--,i<0)return!0;const s=t[i];let n=!1;for(let t=e;t>=0;t--){const o=t===this.path.length-1;if(this._matchSegment(s,this.path[t],o)){e=t-1,i--,n=!0;break}}if(!n)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(s,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const s=e.counter??0;if("first"===t.position&&0!==s)return!1;if("odd"===t.position&&s%2!=1)return!1;if("even"===t.position&&s%2!=0)return!1;if("nth"===t.position&&s!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}function n(t,e){let n="";e.format&&e.indentBy.length>0&&(n="\n");const r=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;t<e.stopNodes.length;t++){const s=e.stopNodes[t];"string"==typeof s?r.push(new i(s)):s instanceof i&&r.push(s)}return o(t,e,n,new s,r)}function o(t,e,i,s,n){let h="",d=!1;if(e.maxNestedTags&&s.getDepth()>e.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let i=t.toString();return i=c(i,e),i}return""}for(let f=0;f<t.length;f++){const g=t[f],m=p(g);if(void 0===m)continue;const b=r(g[":@"],e);s.push(m,b);const N=l(s,n);if(m===e.textNodeName){let t=g[m];N||(t=e.tagValueProcessor(m,t),t=c(t,e)),d&&(h+=i),h+=t,d=!1,s.pop();continue}if(m===e.cdataPropName){d&&(h+=i),h+=`<![CDATA[${g[m][0][e.textNodeName]}]]>`,d=!1,s.pop();continue}if(m===e.commentPropName){h+=i+`\x3c!--${g[m][0][e.textNodeName]}--\x3e`,d=!0,s.pop();continue}if("?"===m[0]){const t=u(g[":@"],e,N),n="?xml"===m?"":i;let o=g[m][0][e.textNodeName];o=0!==o.length?" "+o:"",h+=n+`<${m}${o}${t}?>`,d=!0,s.pop();continue}let y=i;""!==y&&(y+=e.indentBy);const x=i+`<${m}${u(g[":@"],e,N)}`;let P;P=N?a(g[m],e):o(g[m],e,y,s,n),-1!==e.unpairedTags.indexOf(m)?e.suppressUnpairedNode?h+=x+">":h+=x+"/>":P&&0!==P.length||!e.suppressEmptyNode?P&&P.endsWith(">")?h+=x+`>${P}${i}</${m}>`:(h+=x+">",P&&""!==i&&(P.includes("/>")||P.includes("</"))?h+=i+e.indentBy+P+i:h+=P,h+=`</${m}>`):h+=x+"/>",d=!0,s.pop()}return h}function r(t,e){if(!t||e.ignoreAttributes)return null;const i={};let s=!1;for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[n.startsWith(e.attributeNamePrefix)?n.substr(e.attributeNamePrefix.length):n]=t[n],s=!0);return s?i:null}function a(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let i="";for(let s=0;s<t.length;s++){const n=t[s],o=p(n);if(o===e.textNodeName)i+=n[o];else if(o===e.cdataPropName)i+=n[o][0][e.textNodeName];else if(o===e.commentPropName)i+=n[o][0][e.textNodeName];else{if(o&&"?"===o[0])continue;if(o){const t=h(n[":@"],e),s=a(n[o],e);s&&0!==s.length?i+=`<${o}${t}>${s}</${o}>`:i+=`<${o}${t}/>`}}}return i}function h(t,e){let i="";if(t&&!e.ignoreAttributes)for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;let n=t[s];!0===n&&e.suppressBooleanAttributes?i+=` ${s.substr(e.attributeNamePrefix.length)}`:i+=` ${s.substr(e.attributeNamePrefix.length)}="${n}"`}return i}function p(t){const e=Object.keys(t);for(let i=0;i<e.length;i++){const s=e[i];if(Object.prototype.hasOwnProperty.call(t,s)&&":@"!==s)return s}}function u(t,e,i){let s="";if(t&&!e.ignoreAttributes)for(let n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;let o;i?o=t[n]:(o=e.attributeValueProcessor(n,t[n]),o=c(o,e)),!0===o&&e.suppressBooleanAttributes?s+=` ${n.substr(e.attributeNamePrefix.length)}`:s+=` ${n.substr(e.attributeNamePrefix.length)}="${o}"`}return s}function l(t,e){if(!e||0===e.length)return!1;for(let i=0;i<e.length;i++)if(t.matches(e[i]))return!0;return!1}function c(t,e){if(t&&t.length>0&&e.processEntities)for(let i=0;i<e.entities.length;i++){const s=e.entities[i];t=t.replace(s.regex,s.val)}return t}const d={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function f(t){if(this.options=Object.assign({},d,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t<this.options.stopNodes.length;t++){const e=this.options.stopNodes[t];"string"==typeof e?this.stopNodeExpressions.push(new i(e)):e instanceof i&&this.stopNodeExpressions.push(e)}var e;!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=b),this.processTextOrObjNode=g,this.options.format?(this.indentate=m,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function g(t,e,i,s){const n=this.extractAttributes(t);if(s.push(e,n),this.checkStopNode(s)){const n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);return s.pop(),this.buildObjectNode(n,e,o,i)}const o=this.j2x(t,i+1,s);return s.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,i,s):this.buildObjectNode(o.val,e,o.attrStr,i)}function m(t){return this.options.indentBy.repeat(t)}function b(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}f.prototype.build=function(t){if(this.options.preserveOrder)return n(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new s;return this.j2x(t,0,e).val}},f.prototype.j2x=function(t,e,i){let s="",n="";if(this.options.maxNestedTags&&i.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const o=this.options.jPath?i.toString():i,r=this.checkStopNode(i);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(n+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?n+="":"?"===a[0]?n+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)n+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){const h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,o))s+=this.buildAttrPairStr(h,""+t[a],r);else if(!h)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);n+=this.replaceEntitiesValue(e)}else{i.push(a);const s=this.checkStopNode(i);if(i.pop(),s){const i=""+t[a];n+=""===i?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+i+"</"+a+this.tagEndChar}else n+=this.buildTextValNode(t[a],a,"",e,i)}}else if(Array.isArray(t[a])){const s=t[a].length;let o="",r="";for(let h=0;h<s;h++){const s=t[a][h];if(void 0===s);else if(null===s)"?"===a[0]?n+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if("object"==typeof s)if(this.options.oneListGroup){i.push(a);const t=this.j2x(s,e+1,i);i.pop(),o+=t.val,this.options.attributesGroupName&&s.hasOwnProperty(this.options.attributesGroupName)&&(r+=t.attrStr)}else o+=this.processTextOrObjNode(s,a,e,i);else if(this.options.oneListGroup){let t=this.options.tagValueProcessor(a,s);t=this.replaceEntitiesValue(t),o+=t}else{i.push(a);const t=this.checkStopNode(i);if(i.pop(),t){const t=""+s;o+=""===t?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+t+"</"+a+this.tagEndChar}else o+=this.buildTextValNode(s,a,"",e,i)}}this.options.oneListGroup&&(o=this.buildObjectNode(o,a,r,e)),n+=o}else if(this.options.attributesGroupName&&a===this.options.attributesGroupName){const e=Object.keys(t[a]),i=e.length;for(let n=0;n<i;n++)s+=this.buildAttrPairStr(e[n],""+t[a][e[n]],r)}else n+=this.processTextOrObjNode(t[a],a,e,i);return{attrStr:s,val:n}},f.prototype.buildAttrPairStr=function(t,e,i){return i||(e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e)),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},f.prototype.extractAttributes=function(t){if(!t||"object"!=typeof t)return null;const e={};let i=!1;if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const s=t[this.options.attributesGroupName];for(let t in s)Object.prototype.hasOwnProperty.call(s,t)&&(e[t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t]=s[t],i=!0)}else for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;const n=this.isAttribute(s);n&&(e[n]=t[s],i=!0)}return i?e:null},f.prototype.buildRawContent=function(t){if("string"==typeof t)return t;if("object"!=typeof t||null===t)return String(t);if(void 0!==t[this.options.textNodeName])return t[this.options.textNodeName];let e="";for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;if(this.isAttribute(i))continue;if(this.options.attributesGroupName&&i===this.options.attributesGroupName)continue;const s=t[i];if(i===this.options.textNodeName)e+=s;else if(Array.isArray(s)){for(let t of s)if("string"==typeof t||"number"==typeof t)e+=`<${i}>${t}</${i}>`;else if("object"==typeof t&&null!==t){const s=this.buildRawContent(t),n=this.buildAttributesForStopNode(t);e+=""===s?`<${i}${n}/>`:`<${i}${n}>${s}</${i}>`}}else if("object"==typeof s&&null!==s){const t=this.buildRawContent(s),n=this.buildAttributesForStopNode(s);e+=""===t?`<${i}${n}/>`:`<${i}${n}>${t}</${i}>`}else e+=`<${i}>${s}</${i}>`}return e},f.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const i=t[this.options.attributesGroupName];for(let t in i){if(!Object.prototype.hasOwnProperty.call(i,t))continue;const s=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,n=i[t];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}else for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const s=this.isAttribute(i);if(s){const n=t[i];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}return e},f.prototype.buildObjectNode=function(t,e,i,s){if(""===t)return"?"===e[0]?this.indentate(s)+"<"+e+i+"?"+this.tagEndChar:this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar;{let n="</"+e+this.tagEndChar,o="";return"?"===e[0]&&(o="?",n=""),!i&&""!==i||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===o.length?this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(s)+"<"+e+i+o+this.tagEndChar+t+this.indentate(s)+n:this.indentate(s)+"<"+e+i+o+">"+t+n}},f.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},f.prototype.checkStopNode=function(t){if(!this.stopNodeExpressions||0===this.stopNodeExpressions.length)return!1;for(let e=0;e<this.stopNodeExpressions.length;e++)if(t.matches(this.stopNodeExpressions[e]))return!0;return!1},f.prototype.buildTextValNode=function(t,e,i,s,n){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(s)+`<![CDATA[${t}]]>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(s)+"<"+e+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+i+">"+n+"</"+e+this.tagEndChar}},f.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const i=this.options.entities[e];t=t.replace(i.regex,i.val)}return t},module.exports=e})();
@@ -1,4 +1,7 @@
1
+ // const { Expression } = require('path-expression-matcher');
1
2
 
3
+ type Matcher = unknown;
4
+ type Expression = unknown;
2
5
 
3
6
  type XmlBuilderOptions = {
4
7
  /**
@@ -111,9 +114,13 @@ type XmlBuilderOptions = {
111
114
  /**
112
115
  * Nodes to stop parsing at
113
116
  *
117
+ * Accepts string patterns or Expression objects from path-expression-matcher
118
+ *
119
+ * String patterns starting with "*." are automatically converted to ".." for backward compatibility
120
+ *
114
121
  * Defaults to `[]`
115
122
  */
116
- stopNodes?: string[];
123
+ stopNodes?: (string | Expression)[];
117
124
 
118
125
  /**
119
126
  * Control how tag value should be parsed. Called only if tag value is not empty
@@ -150,18 +157,24 @@ type XmlBuilderOptions = {
150
157
 
151
158
 
152
159
  oneListGroup?: boolean;
160
+
161
+ /**
162
+ * Maximum number of nested tags
163
+ *
164
+ * Defaults to `100`
165
+ */
166
+ maxNestedTags?: number;
153
167
  };
154
168
 
155
- declare class XMLBuilder {
156
- constructor(options?: XmlBuilderOptions);
169
+ interface XMLBuilder {
157
170
  build(jObj: any): string;
158
171
  }
159
172
 
160
- declare namespace fxpBuilder {
161
- export {
162
- XMLBuilder,
163
- XmlBuilderOptions,
164
- }
173
+ interface XMLBuilderConstructor {
174
+ new(options?: XmlBuilderOptions): XMLBuilder;
175
+ (options?: XmlBuilderOptions): XMLBuilder;
165
176
  }
166
177
 
167
- export = fxpBuilder;
178
+ declare const Builder: XMLBuilderConstructor;
179
+
180
+ export = Builder;
@@ -0,0 +1,2 @@
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fxb=e():t.fxb=e()}(this,()=>(()=>{"use strict";var t={d:(e,i)=>{for(var r in i)t.o(i,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:i[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>b});class i{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,r="";for(;i<t.length;)t[i]===this.separator?i+1<t.length&&t[i+1]===this.separator?(r.trim()&&(e.push(this._parseSegment(r.trim())),r=""),e.push({type:"deep-wildcard"}),i+=2):(r.trim()&&e.push(this._parseSegment(r.trim())),r="",i++):(r+=t[i],i++);return r.trim()&&e.push(this._parseSegment(r.trim())),e}_parseSegment(t){const e={type:"tag"};let i=null,r=t;const s=t.match(/^([^\[]+)(\[[^\]]*\])(.*)$/);if(s&&(r=s[1]+s[3],s[2])){const t=s[2].slice(1,-1);t&&(i=t)}let n,o,a=r;if(r.includes("::")){const e=r.indexOf("::");if(n=r.substring(0,e).trim(),a=r.substring(e+2).trim(),!n)throw new Error(`Invalid namespace in pattern: ${t}`)}let h=null;if(a.includes(":")){const t=a.lastIndexOf(":"),e=a.substring(0,t).trim(),i=a.substring(t+1).trim();["first","last","odd","even"].includes(i)||/^nth\(\d+\)$/.test(i)?(o=e,h=i):o=a}else o=a;if(!o)throw new Error(`Invalid segment pattern: ${t}`);if(e.tag=o,n&&(e.namespace=n),i)if(i.includes("=")){const t=i.indexOf("=");e.attrName=i.substring(0,t).trim(),e.attrValue=i.substring(t+1).trim()}else e.attrName=i.trim();if(h){const t=h.match(/^nth\((\d+)\)$/);t?(e.position="nth",e.positionValue=parseInt(t[1],10)):e.position=h}return e}get length(){return this.segments.length}hasDeepWildcard(){return this._hasDeepWildcard}hasAttributeCondition(){return this._hasAttributeCondition}hasPositionSelector(){return this._hasPositionSelector}toString(){return this.pattern}}class r{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[]}push(t,e=null,i=null){this.path.length>0&&(this.path[this.path.length-1].values=void 0);const r=this.path.length;this.siblingStacks[r]||(this.siblingStacks[r]=new Map);const s=this.siblingStacks[r],n=i?`${i}:${t}`:t,o=s.get(n)||0;let a=0;for(const t of s.values())a+=t;s.set(n,o+1);const h={tag:t,position:a,counter:o};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e<t.length;e++){const i=t[e],r=this.path[e],s=e===this.path.length-1;if(!this._matchSegment(i,r,s))return!1}return!0}_matchWithDeepWildcard(t){let e=this.path.length-1,i=t.length-1;for(;i>=0&&e>=0;){const r=t[i];if("deep-wildcard"===r.type){if(i--,i<0)return!0;const r=t[i];let s=!1;for(let t=e;t>=0;t--){const n=t===this.path.length-1;if(this._matchSegment(r,this.path[t],n)){e=t-1,i--,s=!0;break}}if(!s)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(r,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const r=e.counter??0;if("first"===t.position&&0!==r)return!1;if("odd"===t.position&&r%2!=1)return!1;if("even"===t.position&&r%2!=0)return!1;if("nth"===t.position&&r!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}function s(t,e){var s="";e.format&&e.indentBy.length>0&&(s="\n");var o=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(var a=0;a<e.stopNodes.length;a++){var h=e.stopNodes[a];"string"==typeof h?o.push(new i(h)):h instanceof i&&o.push(h)}return n(t,e,s,new r,o)}function n(t,e,i,r,s){var h="",c=!1;if(e.maxNestedTags&&r.getDepth()>e.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){var f=t.toString();return d(f,e)}return""}for(var g=0;g<t.length;g++){var m=t[g],b=p(m);if(void 0!==b){var v=o(m[":@"],e);r.push(b,v);var N=l(r,s);if(b!==e.textNodeName)if(b!==e.cdataPropName)if(b!==e.commentPropName)if("?"!==b[0]){var y=i;""!==y&&(y+=e.indentBy);var x=i+"<"+b+u(m[":@"],e,N),A=void 0;A=N?a(m[b],e):n(m[b],e,y,r,s),-1!==e.unpairedTags.indexOf(b)?e.suppressUnpairedNode?h+=x+">":h+=x+"/>":A&&0!==A.length||!e.suppressEmptyNode?A&&A.endsWith(">")?h+=x+">"+A+i+"</"+b+">":(h+=x+">",A&&""!==i&&(A.includes("/>")||A.includes("</"))?h+=i+e.indentBy+A+i:h+=A,h+="</"+b+">"):h+=x+"/>",c=!0,r.pop()}else{var S=u(m[":@"],e,N),P="?xml"===b?"":i,O=m[b][0][e.textNodeName];h+=P+"<"+b+(O=0!==O.length?" "+O:"")+S+"?>",c=!0,r.pop()}else h+=i+"\x3c!--"+m[b][0][e.textNodeName]+"--\x3e",c=!0,r.pop();else c&&(h+=i),h+="<![CDATA["+m[b][0][e.textNodeName]+"]]>",c=!1,r.pop();else{var w=m[b];N||(w=d(w=e.tagValueProcessor(b,w),e)),c&&(h+=i),h+=w,c=!1,r.pop()}}}return h}function o(t,e){if(!t||e.ignoreAttributes)return null;var i={},r=!1;for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(i[s.startsWith(e.attributeNamePrefix)?s.substr(e.attributeNamePrefix.length):s]=t[s],r=!0);return r?i:null}function a(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";for(var i="",r=0;r<t.length;r++){var s=t[r],n=p(s);if(n===e.textNodeName)i+=s[n];else if(n===e.cdataPropName)i+=s[n][0][e.textNodeName];else if(n===e.commentPropName)i+=s[n][0][e.textNodeName];else{if(n&&"?"===n[0])continue;if(n){var o=h(s[":@"],e),u=a(s[n],e);u&&0!==u.length?i+="<"+n+o+">"+u+"</"+n+">":i+="<"+n+o+"/>"}}}return i}function h(t,e){var i="";if(t&&!e.ignoreAttributes)for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var s=t[r];!0===s&&e.suppressBooleanAttributes?i+=" "+r.substr(e.attributeNamePrefix.length):i+=" "+r.substr(e.attributeNamePrefix.length)+'="'+s+'"'}return i}function p(t){for(var e=Object.keys(t),i=0;i<e.length;i++){var r=e[i];if(Object.prototype.hasOwnProperty.call(t,r)&&":@"!==r)return r}}function u(t,e,i){var r="";if(t&&!e.ignoreAttributes)for(var s in t)if(Object.prototype.hasOwnProperty.call(t,s)){var n=void 0;!0===(n=i?t[s]:d(n=e.attributeValueProcessor(s,t[s]),e))&&e.suppressBooleanAttributes?r+=" "+s.substr(e.attributeNamePrefix.length):r+=" "+s.substr(e.attributeNamePrefix.length)+'="'+n+'"'}return r}function l(t,e){if(!e||0===e.length)return!1;for(var i=0;i<e.length;i++)if(t.matches(e[i]))return!0;return!1}function d(t,e){if(t&&t.length>0&&e.processEntities)for(var i=0;i<e.entities.length;i++){var r=e.entities[i];t=t.replace(r.regex,r.val)}return t}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=Array(e);i<e;i++)r[i]=t[i];return r}function f(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(i)return(i=i.call(t)).next.bind(i);if(Array.isArray(t)||(i=function(t,e){if(t){if("string"==typeof t)return g(t,e);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?g(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=Array(e);i<e;i++)r[i]=t[i];return r}var m={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function b(t){if(this.options=Object.assign({},m,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(function(t){return"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t})),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(var e=0;e<this.options.stopNodes.length;e++){var r=this.options.stopNodes[e];"string"==typeof r?this.stopNodeExpressions.push(new i(r)):r instanceof i&&this.stopNodeExpressions.push(r)}var s;!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn="function"==typeof(s=this.options.ignoreAttributes)?s:Array.isArray(s)?function(t){for(var e,i=function(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(i)return(i=i.call(t)).next.bind(i);if(Array.isArray(t)||(i=function(t,e){if(t){if("string"==typeof t)return c(t,e);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?c(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(s);!(e=i()).done;){var r=e.value;if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:function(){return!1},this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=y),this.processTextOrObjNode=v,this.options.format?(this.indentate=N,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function v(t,e,i,r){var s=this.extractAttributes(t);if(r.push(e,s),this.checkStopNode(r)){var n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);return r.pop(),this.buildObjectNode(n,e,o,i)}var a=this.j2x(t,i+1,r);return r.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,a.attrStr,i,r):this.buildObjectNode(a.val,e,a.attrStr,i)}function N(t){return this.options.indentBy.repeat(t)}function y(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}return b.prototype.build=function(t){if(this.options.preserveOrder)return s(t,this.options);var e;Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&((e={})[this.options.arrayNodeName]=t,t=e);var i=new r;return this.j2x(t,0,i).val},b.prototype.j2x=function(t,e,i){var r="",s="";if(this.options.maxNestedTags&&i.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");var n=this.options.jPath?i.toString():i,o=this.checkStopNode(i);for(var a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(s+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?s+="":"?"===a[0]?s+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:s+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)s+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){var h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,n))r+=this.buildAttrPairStr(h,""+t[a],o);else if(!h)if(a===this.options.textNodeName){var p=this.options.tagValueProcessor(a,""+t[a]);s+=this.replaceEntitiesValue(p)}else{i.push(a);var u=this.checkStopNode(i);if(i.pop(),u){var l=""+t[a];s+=""===l?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+l+"</"+a+this.tagEndChar}else s+=this.buildTextValNode(t[a],a,"",e,i)}}else if(Array.isArray(t[a])){for(var d=t[a].length,c="",f="",g=0;g<d;g++){var m=t[a][g];if(void 0===m);else if(null===m)"?"===a[0]?s+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:s+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if("object"==typeof m)if(this.options.oneListGroup){i.push(a);var b=this.j2x(m,e+1,i);i.pop(),c+=b.val,this.options.attributesGroupName&&m.hasOwnProperty(this.options.attributesGroupName)&&(f+=b.attrStr)}else c+=this.processTextOrObjNode(m,a,e,i);else if(this.options.oneListGroup){var v=this.options.tagValueProcessor(a,m);c+=v=this.replaceEntitiesValue(v)}else{i.push(a);var N=this.checkStopNode(i);if(i.pop(),N){var y=""+m;c+=""===y?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+y+"</"+a+this.tagEndChar}else c+=this.buildTextValNode(m,a,"",e,i)}}this.options.oneListGroup&&(c=this.buildObjectNode(c,a,f,e)),s+=c}else if(this.options.attributesGroupName&&a===this.options.attributesGroupName)for(var x=Object.keys(t[a]),A=x.length,S=0;S<A;S++)r+=this.buildAttrPairStr(x[S],""+t[a][x[S]],o);else s+=this.processTextOrObjNode(t[a],a,e,i);return{attrStr:r,val:s}},b.prototype.buildAttrPairStr=function(t,e,i){return i||(e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e)),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},b.prototype.extractAttributes=function(t){if(!t||"object"!=typeof t)return null;var e={},i=!1;if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){var r=t[this.options.attributesGroupName];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s.startsWith(this.options.attributeNamePrefix)?s.substring(this.options.attributeNamePrefix.length):s]=r[s],i=!0)}else for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var o=this.isAttribute(n);o&&(e[o]=t[n],i=!0)}return i?e:null},b.prototype.buildRawContent=function(t){if("string"==typeof t)return t;if("object"!=typeof t||null===t)return String(t);if(void 0!==t[this.options.textNodeName])return t[this.options.textNodeName];var e="";for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)&&!(this.isAttribute(i)||this.options.attributesGroupName&&i===this.options.attributesGroupName)){var r=t[i];if(i===this.options.textNodeName)e+=r;else if(Array.isArray(r))for(var s,n=f(r);!(s=n()).done;){var o=s.value;if("string"==typeof o||"number"==typeof o)e+="<"+i+">"+o+"</"+i+">";else if("object"==typeof o&&null!==o){var a=this.buildRawContent(o),h=this.buildAttributesForStopNode(o);e+=""===a?"<"+i+h+"/>":"<"+i+h+">"+a+"</"+i+">"}}else if("object"==typeof r&&null!==r){var p=this.buildRawContent(r),u=this.buildAttributesForStopNode(r);e+=""===p?"<"+i+u+"/>":"<"+i+u+">"+p+"</"+i+">"}else e+="<"+i+">"+r+"</"+i+">"}return e},b.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";var e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){var i=t[this.options.attributesGroupName];for(var r in i)if(Object.prototype.hasOwnProperty.call(i,r)){var s=r.startsWith(this.options.attributeNamePrefix)?r.substring(this.options.attributeNamePrefix.length):r,n=i[r];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}else for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var a=this.isAttribute(o);if(a){var h=t[o];!0===h&&this.options.suppressBooleanAttributes?e+=" "+a:e+=" "+a+'="'+h+'"'}}return e},b.prototype.buildObjectNode=function(t,e,i,r){if(""===t)return"?"===e[0]?this.indentate(r)+"<"+e+i+"?"+this.tagEndChar:this.indentate(r)+"<"+e+i+this.closeTag(e)+this.tagEndChar;var s="</"+e+this.tagEndChar,n="";return"?"===e[0]&&(n="?",s=""),!i&&""!==i||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===n.length?this.indentate(r)+"\x3c!--"+t+"--\x3e"+this.newLine:this.indentate(r)+"<"+e+i+n+this.tagEndChar+t+this.indentate(r)+s:this.indentate(r)+"<"+e+i+n+">"+t+s},b.prototype.closeTag=function(t){var e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":"></"+t,e},b.prototype.checkStopNode=function(t){if(!this.stopNodeExpressions||0===this.stopNodeExpressions.length)return!1;for(var e=0;e<this.stopNodeExpressions.length;e++)if(t.matches(this.stopNodeExpressions[e]))return!0;return!1},b.prototype.buildTextValNode=function(t,e,i,r,s){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(r)+"<![CDATA["+t+"]]>"+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+"\x3c!--"+t+"--\x3e"+this.newLine;if("?"===e[0])return this.indentate(r)+"<"+e+i+"?"+this.tagEndChar;var n=this.options.tagValueProcessor(e,t);return""===(n=this.replaceEntitiesValue(n))?this.indentate(r)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(r)+"<"+e+i+">"+n+"</"+e+this.tagEndChar},b.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(var e=0;e<this.options.entities.length;e++){var i=this.options.entities[e];t=t.replace(i.regex,i.val)}return t},e})());
2
+ //# sourceMappingURL=fxb.min.js.map