@jjrawlins/cdk-diff-pr-github-action 1.9.1 → 1.9.3

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 (136) hide show
  1. package/.jsii +4 -4
  2. package/cdkdiffprgithubaction/go.mod +1 -1
  3. package/cdkdiffprgithubaction/jsii/jsii.go +2 -2
  4. package/cdkdiffprgithubaction/version +1 -1
  5. package/lib/CdkDiffIamTemplate.js +2 -2
  6. package/lib/CdkDiffIamTemplateStackSet.js +2 -2
  7. package/lib/CdkDiffStackWorkflow.js +1 -1
  8. package/lib/CdkDriftDetectionWorkflow.js +1 -1
  9. package/lib/CdkDriftIamTemplate.js +2 -2
  10. package/node_modules/@aws-sdk/client-cloudformation/package.json +13 -13
  11. package/node_modules/@aws-sdk/core/dist-cjs/index.js +7 -15
  12. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +7 -15
  13. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js +2 -8
  14. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js +5 -7
  15. package/node_modules/@aws-sdk/core/package.json +4 -4
  16. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  17. package/node_modules/@aws-sdk/credential-provider-http/package.json +6 -6
  18. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  19. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  20. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  21. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  22. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  23. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  24. package/node_modules/@aws-sdk/middleware-user-agent/package.json +3 -3
  25. package/node_modules/@aws-sdk/nested-clients/package.json +12 -12
  26. package/node_modules/@aws-sdk/token-providers/package.json +3 -3
  27. package/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js +36 -19
  28. package/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedTypeScriptVersion.js +9 -0
  29. package/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptPackageJsonPaths.js +17 -0
  30. package/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js +17 -12
  31. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedTypeScriptVersion.d.ts +8 -0
  32. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/getTypeScriptPackageJsonPaths.d.ts +10 -0
  33. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedTypeScriptVersion.d.ts +3 -0
  34. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getTypeScriptPackageJsonPaths.d.ts +3 -0
  35. package/node_modules/@aws-sdk/util-user-agent-node/package.json +2 -2
  36. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +1 -0
  37. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +1 -0
  38. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/CHANGELOG.md +23 -0
  39. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js +1 -1
  40. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +1 -1
  41. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.cjs +1 -1
  42. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.d.cts +15 -1
  43. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js +1 -1
  44. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -1
  45. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js +1 -1
  46. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -1
  47. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js +1 -1
  48. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js.map +1 -1
  49. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/package.json +3 -2
  50. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.d.ts +16 -0
  51. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.js +1 -1
  52. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/util.js +1 -26
  53. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/EntitiesParser.js +87 -87
  54. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js +10 -10
  55. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js +23 -23
  56. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js +29 -29
  57. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js +39 -39
  58. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js +17 -17
  59. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XMLParser.js +22 -22
  60. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js +85 -85
  61. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/validator.js +34 -34
  62. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js +5 -284
  63. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +1 -1
  64. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +2 -0
  65. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +27 -5
  66. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +21 -21
  67. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/node2json.js +38 -34
  68. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +10 -10
  69. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  70. package/node_modules/@smithy/abort-controller/package.json +2 -2
  71. package/node_modules/@smithy/config-resolver/package.json +6 -6
  72. package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +2 -8
  73. package/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js +2 -8
  74. package/node_modules/@smithy/core/package.json +11 -11
  75. package/node_modules/@smithy/credential-provider-imds/package.json +5 -5
  76. package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +18 -4
  77. package/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js +18 -4
  78. package/node_modules/@smithy/fetch-http-handler/package.json +6 -6
  79. package/node_modules/@smithy/hash-node/package.json +4 -4
  80. package/node_modules/@smithy/invalid-dependency/package.json +2 -2
  81. package/node_modules/@smithy/is-array-buffer/package.json +2 -2
  82. package/node_modules/@smithy/middleware-content-length/package.json +3 -3
  83. package/node_modules/@smithy/middleware-endpoint/package.json +8 -8
  84. package/node_modules/@smithy/middleware-retry/package.json +9 -9
  85. package/node_modules/@smithy/middleware-serde/package.json +3 -3
  86. package/node_modules/@smithy/middleware-stack/package.json +2 -2
  87. package/node_modules/@smithy/node-config-provider/package.json +4 -4
  88. package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +21 -8
  89. package/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js +16 -0
  90. package/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +3 -4
  91. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +3 -4
  92. package/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts +9 -0
  93. package/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts +9 -0
  94. package/node_modules/@smithy/node-http-handler/package.json +5 -5
  95. package/node_modules/@smithy/property-provider/package.json +2 -2
  96. package/node_modules/@smithy/protocol-http/package.json +2 -2
  97. package/node_modules/@smithy/querystring-builder/package.json +3 -3
  98. package/node_modules/@smithy/querystring-parser/package.json +2 -2
  99. package/node_modules/@smithy/service-error-classification/package.json +2 -2
  100. package/node_modules/@smithy/shared-ini-file-loader/package.json +2 -2
  101. package/node_modules/@smithy/signature-v4/package.json +8 -8
  102. package/node_modules/@smithy/smithy-client/package.json +7 -7
  103. package/node_modules/@smithy/url-parser/package.json +3 -3
  104. package/node_modules/@smithy/util-base64/package.json +4 -4
  105. package/node_modules/@smithy/util-body-length-browser/package.json +2 -2
  106. package/node_modules/@smithy/util-body-length-node/package.json +2 -2
  107. package/node_modules/@smithy/util-buffer-from/package.json +3 -3
  108. package/node_modules/@smithy/util-config-provider/package.json +2 -2
  109. package/node_modules/@smithy/util-defaults-mode-browser/package.json +4 -4
  110. package/node_modules/@smithy/util-defaults-mode-node/package.json +7 -7
  111. package/node_modules/@smithy/util-endpoints/package.json +3 -3
  112. package/node_modules/@smithy/util-hex-encoding/package.json +2 -2
  113. package/node_modules/@smithy/util-middleware/package.json +2 -2
  114. package/node_modules/@smithy/util-retry/package.json +3 -3
  115. package/node_modules/@smithy/util-stream/package.json +8 -8
  116. package/node_modules/@smithy/util-uri-escape/package.json +2 -2
  117. package/node_modules/@smithy/util-utf8/package.json +3 -3
  118. package/node_modules/@smithy/util-waiter/package.json +3 -3
  119. package/node_modules/@smithy/uuid/package.json +2 -2
  120. package/node_modules/fast-xml-builder/LICENSE +21 -0
  121. package/node_modules/fast-xml-builder/README.md +23 -0
  122. package/node_modules/fast-xml-builder/lib/builder.cjs +1 -0
  123. package/node_modules/fast-xml-builder/lib/builder.min.js +2 -0
  124. package/node_modules/fast-xml-builder/lib/builder.min.js.map +1 -0
  125. package/node_modules/fast-xml-builder/lib/fxb.d.cts +167 -0
  126. package/node_modules/fast-xml-builder/package.json +78 -0
  127. package/node_modules/fast-xml-builder/src/fxb.d.ts +156 -0
  128. package/node_modules/fast-xml-builder/src/fxb.js +285 -0
  129. package/node_modules/fast-xml-builder/src/ignoreAttributes.js +18 -0
  130. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlbuilder → fast-xml-builder/src}/orderedJs2Xml.js +14 -3
  131. package/node_modules/fast-xml-builder/src/prettifyJs2Xml.js +0 -0
  132. package/package.json +2 -2
  133. package/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptPackageJsonPath.js +0 -14
  134. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/getTypeScriptPackageJsonPath.d.ts +0 -9
  135. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getTypeScriptPackageJsonPath.d.ts +0 -1
  136. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlbuilder/prettifyJs2Xml.js → fast-xml-builder/CHANGELOG.md} +0 -0
@@ -0,0 +1,156 @@
1
+ export type XmlBuilderOptions = {
2
+ /**
3
+ * Give a prefix to the attribute name in the resulting JS object
4
+ *
5
+ * Defaults to '@_'
6
+ */
7
+ attributeNamePrefix?: string;
8
+
9
+ /**
10
+ * A name to group all attributes of a tag under, or `false` to disable
11
+ *
12
+ * Defaults to `false`
13
+ */
14
+ attributesGroupName?: false | string;
15
+
16
+ /**
17
+ * The name of the next node in the resulting JS
18
+ *
19
+ * Defaults to `#text`
20
+ */
21
+ textNodeName?: string;
22
+
23
+ /**
24
+ * Whether to ignore attributes when building
25
+ *
26
+ * When `true` - ignores all the attributes
27
+ *
28
+ * When `false` - builds all the attributes
29
+ *
30
+ * When `Array<string | RegExp>` - filters out attributes that match provided patterns
31
+ *
32
+ * When `Function` - calls the function for each attribute and filters out those for which the function returned `true`
33
+ *
34
+ * Defaults to `true`
35
+ */
36
+ ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean);
37
+
38
+ /**
39
+ * Give a property name to set CDATA values to instead of merging to tag's text value
40
+ *
41
+ * Defaults to `false`
42
+ */
43
+ cdataPropName?: false | string;
44
+
45
+ /**
46
+ * If set, parse comments and set as this property
47
+ *
48
+ * Defaults to `false`
49
+ */
50
+ commentPropName?: false | string;
51
+
52
+ /**
53
+ * Whether to make output pretty instead of single line
54
+ *
55
+ * Defaults to `false`
56
+ */
57
+ format?: boolean;
58
+
59
+
60
+ /**
61
+ * If `format` is set to `true`, sets the indent string
62
+ *
63
+ * Defaults to ` `
64
+ */
65
+ indentBy?: string;
66
+
67
+ /**
68
+ * Give a name to a top-level array
69
+ *
70
+ * Defaults to `undefined`
71
+ */
72
+ arrayNodeName?: string;
73
+
74
+ /**
75
+ * Create empty tags for tags with no text value
76
+ *
77
+ * Defaults to `false`
78
+ */
79
+ suppressEmptyNode?: boolean;
80
+
81
+ /**
82
+ * Suppress an unpaired tag
83
+ *
84
+ * Defaults to `true`
85
+ */
86
+ suppressUnpairedNode?: boolean;
87
+
88
+ /**
89
+ * Don't put a value for boolean attributes
90
+ *
91
+ * Defaults to `true`
92
+ */
93
+ suppressBooleanAttributes?: boolean;
94
+
95
+ /**
96
+ * Preserve the order of tags in resulting JS object
97
+ *
98
+ * Defaults to `false`
99
+ */
100
+ preserveOrder?: boolean;
101
+
102
+ /**
103
+ * List of tags without closing tags
104
+ *
105
+ * Defaults to `[]`
106
+ */
107
+ unpairedTags?: string[];
108
+
109
+ /**
110
+ * Nodes to stop parsing at
111
+ *
112
+ * Defaults to `[]`
113
+ */
114
+ stopNodes?: string[];
115
+
116
+ /**
117
+ * Control how tag value should be parsed. Called only if tag value is not empty
118
+ *
119
+ * @returns {undefined|null} `undefined` or `null` to set original value.
120
+ * @returns {unknown}
121
+ *
122
+ * 1. Different value or value with different data type to set new value.
123
+ * 2. Same value to set parsed value if `parseTagValue: true`.
124
+ *
125
+ * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val`
126
+ */
127
+ tagValueProcessor?: (name: string, value: unknown) => unknown;
128
+
129
+ /**
130
+ * Control how attribute value should be parsed
131
+ *
132
+ * @param attrName
133
+ * @param attrValue
134
+ * @param jPath
135
+ * @returns {undefined|null} `undefined` or `null` to set original value
136
+ * @returns {unknown}
137
+ *
138
+ * Defaults to `(attrName, val, jPath) => val`
139
+ */
140
+ attributeValueProcessor?: (name: string, value: unknown) => unknown;
141
+
142
+ /**
143
+ * Whether to process default and DOCTYPE entities
144
+ *
145
+ * Defaults to `true`
146
+ */
147
+ processEntities?: boolean;
148
+
149
+
150
+ oneListGroup?: boolean;
151
+ };
152
+
153
+ export class XMLBuilder {
154
+ constructor(options?: XmlBuilderOptions);
155
+ build(jObj: any): string;
156
+ }
@@ -0,0 +1,285 @@
1
+ 'use strict';
2
+ //parse Empty Node as self closing node
3
+ import buildFromOrderedJs from './orderedJs2Xml.js';
4
+ import getIgnoreAttributesFn from "./ignoreAttributes.js";
5
+
6
+ const defaultOptions = {
7
+ attributeNamePrefix: '@_',
8
+ attributesGroupName: false,
9
+ textNodeName: '#text',
10
+ ignoreAttributes: true,
11
+ cdataPropName: false,
12
+ format: false,
13
+ indentBy: ' ',
14
+ suppressEmptyNode: false,
15
+ suppressUnpairedNode: true,
16
+ suppressBooleanAttributes: true,
17
+ tagValueProcessor: function (key, a) {
18
+ return a;
19
+ },
20
+ attributeValueProcessor: function (attrName, a) {
21
+ return a;
22
+ },
23
+ preserveOrder: false,
24
+ commentPropName: false,
25
+ unpairedTags: [],
26
+ entities: [
27
+ { regex: new RegExp("&", "g"), val: "&amp;" },//it must be on top
28
+ { regex: new RegExp(">", "g"), val: "&gt;" },
29
+ { regex: new RegExp("<", "g"), val: "&lt;" },
30
+ { regex: new RegExp("\'", "g"), val: "&apos;" },
31
+ { regex: new RegExp("\"", "g"), val: "&quot;" }
32
+ ],
33
+ processEntities: true,
34
+ stopNodes: [],
35
+ // transformTagName: false,
36
+ // transformAttributeName: false,
37
+ oneListGroup: false
38
+ };
39
+
40
+ export default function Builder(options) {
41
+ this.options = Object.assign({}, defaultOptions, options);
42
+ if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {
43
+ this.isAttribute = function (/*a*/) {
44
+ return false;
45
+ };
46
+ } else {
47
+ this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)
48
+ this.attrPrefixLen = this.options.attributeNamePrefix.length;
49
+ this.isAttribute = isAttribute;
50
+ }
51
+
52
+ this.processTextOrObjNode = processTextOrObjNode
53
+
54
+ if (this.options.format) {
55
+ this.indentate = indentate;
56
+ this.tagEndChar = '>\n';
57
+ this.newLine = '\n';
58
+ } else {
59
+ this.indentate = function () {
60
+ return '';
61
+ };
62
+ this.tagEndChar = '>';
63
+ this.newLine = '';
64
+ }
65
+ }
66
+
67
+ Builder.prototype.build = function (jObj) {
68
+ if (this.options.preserveOrder) {
69
+ return buildFromOrderedJs(jObj, this.options);
70
+ } else {
71
+ if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {
72
+ jObj = {
73
+ [this.options.arrayNodeName]: jObj
74
+ }
75
+ }
76
+ return this.j2x(jObj, 0, []).val;
77
+ }
78
+ };
79
+
80
+ Builder.prototype.j2x = function (jObj, level, ajPath) {
81
+ let attrStr = '';
82
+ let val = '';
83
+ const jPath = ajPath.join('.')
84
+ for (let key in jObj) {
85
+ if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;
86
+ if (typeof jObj[key] === 'undefined') {
87
+ // supress undefined node only if it is not an attribute
88
+ if (this.isAttribute(key)) {
89
+ val += '';
90
+ }
91
+ } else if (jObj[key] === null) {
92
+ // null attribute should be ignored by the attribute list, but should not cause the tag closing
93
+ if (this.isAttribute(key)) {
94
+ val += '';
95
+ } else if (key === this.options.cdataPropName) {
96
+ val += '';
97
+ } else if (key[0] === '?') {
98
+ val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;
99
+ } else {
100
+ val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
101
+ }
102
+ // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
103
+ } else if (jObj[key] instanceof Date) {
104
+ val += this.buildTextValNode(jObj[key], key, '', level);
105
+ } else if (typeof jObj[key] !== 'object') {
106
+ //premitive type
107
+ const attr = this.isAttribute(key);
108
+ if (attr && !this.ignoreAttributesFn(attr, jPath)) {
109
+ attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);
110
+ } else if (!attr) {
111
+ //tag value
112
+ if (key === this.options.textNodeName) {
113
+ let newval = this.options.tagValueProcessor(key, '' + jObj[key]);
114
+ val += this.replaceEntitiesValue(newval);
115
+ } else {
116
+ val += this.buildTextValNode(jObj[key], key, '', level);
117
+ }
118
+ }
119
+ } else if (Array.isArray(jObj[key])) {
120
+ //repeated nodes
121
+ const arrLen = jObj[key].length;
122
+ let listTagVal = "";
123
+ let listTagAttr = "";
124
+ for (let j = 0; j < arrLen; j++) {
125
+ const item = jObj[key][j];
126
+ if (typeof item === 'undefined') {
127
+ // supress undefined node
128
+ } else if (item === null) {
129
+ if (key[0] === "?") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;
130
+ else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
131
+ // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;
132
+ } else if (typeof item === 'object') {
133
+ if (this.options.oneListGroup) {
134
+ const result = this.j2x(item, level + 1, ajPath.concat(key));
135
+ listTagVal += result.val;
136
+ if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {
137
+ listTagAttr += result.attrStr
138
+ }
139
+ } else {
140
+ listTagVal += this.processTextOrObjNode(item, key, level, ajPath)
141
+ }
142
+ } else {
143
+ if (this.options.oneListGroup) {
144
+ let textValue = this.options.tagValueProcessor(key, item);
145
+ textValue = this.replaceEntitiesValue(textValue);
146
+ listTagVal += textValue;
147
+ } else {
148
+ listTagVal += this.buildTextValNode(item, key, '', level);
149
+ }
150
+ }
151
+ }
152
+ if (this.options.oneListGroup) {
153
+ listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);
154
+ }
155
+ val += listTagVal;
156
+ } else {
157
+ //nested node
158
+ if (this.options.attributesGroupName && key === this.options.attributesGroupName) {
159
+ const Ks = Object.keys(jObj[key]);
160
+ const L = Ks.length;
161
+ for (let j = 0; j < L; j++) {
162
+ attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);
163
+ }
164
+ } else {
165
+ val += this.processTextOrObjNode(jObj[key], key, level, ajPath)
166
+ }
167
+ }
168
+ }
169
+ return { attrStr: attrStr, val: val };
170
+ };
171
+
172
+ Builder.prototype.buildAttrPairStr = function (attrName, val) {
173
+ val = this.options.attributeValueProcessor(attrName, '' + val);
174
+ val = this.replaceEntitiesValue(val);
175
+ if (this.options.suppressBooleanAttributes && val === "true") {
176
+ return ' ' + attrName;
177
+ } else return ' ' + attrName + '="' + val + '"';
178
+ }
179
+
180
+ function processTextOrObjNode(object, key, level, ajPath) {
181
+ const result = this.j2x(object, level + 1, ajPath.concat(key));
182
+ if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {
183
+ return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);
184
+ } else {
185
+ return this.buildObjectNode(result.val, key, result.attrStr, level);
186
+ }
187
+ }
188
+
189
+ Builder.prototype.buildObjectNode = function (val, key, attrStr, level) {
190
+ if (val === "") {
191
+ if (key[0] === "?") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;
192
+ else {
193
+ return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;
194
+ }
195
+ } else {
196
+
197
+ let tagEndExp = '</' + key + this.tagEndChar;
198
+ let piClosingChar = "";
199
+
200
+ if (key[0] === "?") {
201
+ piClosingChar = "?";
202
+ tagEndExp = "";
203
+ }
204
+
205
+ // attrStr is an empty string in case the attribute came as undefined or null
206
+ if ((attrStr || attrStr === '') && val.indexOf('<') === -1) {
207
+ return (this.indentate(level) + '<' + key + attrStr + piClosingChar + '>' + val + tagEndExp);
208
+ } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {
209
+ return this.indentate(level) + `<!--${val}-->` + this.newLine;
210
+ } else {
211
+ return (
212
+ this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +
213
+ val +
214
+ this.indentate(level) + tagEndExp);
215
+ }
216
+ }
217
+ }
218
+
219
+ Builder.prototype.closeTag = function (key) {
220
+ let closeTag = "";
221
+ if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired
222
+ if (!this.options.suppressUnpairedNode) closeTag = "/"
223
+ } else if (this.options.suppressEmptyNode) { //empty
224
+ closeTag = "/";
225
+ } else {
226
+ closeTag = `></${key}`
227
+ }
228
+ return closeTag;
229
+ }
230
+
231
+ function buildEmptyObjNode(val, key, attrStr, level) {
232
+ if (val !== '') {
233
+ return this.buildObjectNode(val, key, attrStr, level);
234
+ } else {
235
+ if (key[0] === "?") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;
236
+ else {
237
+ return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;
238
+ // return this.buildTagStr(level,key, attrStr);
239
+ }
240
+ }
241
+ }
242
+
243
+ Builder.prototype.buildTextValNode = function (val, key, attrStr, level) {
244
+ if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {
245
+ return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;
246
+ } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {
247
+ return this.indentate(level) + `<!--${val}-->` + this.newLine;
248
+ } else if (key[0] === "?") {//PI tag
249
+ return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;
250
+ } else {
251
+ let textValue = this.options.tagValueProcessor(key, val);
252
+ textValue = this.replaceEntitiesValue(textValue);
253
+
254
+ if (textValue === '') {
255
+ return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;
256
+ } else {
257
+ return this.indentate(level) + '<' + key + attrStr + '>' +
258
+ textValue +
259
+ '</' + key + this.tagEndChar;
260
+ }
261
+ }
262
+ }
263
+
264
+ Builder.prototype.replaceEntitiesValue = function (textValue) {
265
+ if (textValue && textValue.length > 0 && this.options.processEntities) {
266
+ for (let i = 0; i < this.options.entities.length; i++) {
267
+ const entity = this.options.entities[i];
268
+ textValue = textValue.replace(entity.regex, entity.val);
269
+ }
270
+ }
271
+ return textValue;
272
+ }
273
+
274
+ function indentate(level) {
275
+ return this.options.indentBy.repeat(level);
276
+ }
277
+
278
+ function isAttribute(name /*, options*/) {
279
+ if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {
280
+ return name.substr(this.attrPrefixLen);
281
+ } else {
282
+ return false;
283
+ }
284
+ }
285
+
@@ -0,0 +1,18 @@
1
+ export default function getIgnoreAttributesFn(ignoreAttributes) {
2
+ if (typeof ignoreAttributes === 'function') {
3
+ return ignoreAttributes
4
+ }
5
+ if (Array.isArray(ignoreAttributes)) {
6
+ return (attrName) => {
7
+ for (const pattern of ignoreAttributes) {
8
+ if (typeof pattern === 'string' && attrName === pattern) {
9
+ return true
10
+ }
11
+ if (pattern instanceof RegExp && pattern.test(attrName)) {
12
+ return true
13
+ }
14
+ }
15
+ }
16
+ }
17
+ return () => false
18
+ }
@@ -18,10 +18,21 @@ function arrToStr(arr, options, jPath, indentation) {
18
18
  let xmlStr = "";
19
19
  let isPreviousElementTag = false;
20
20
 
21
+
22
+ if (!Array.isArray(arr)) {
23
+ // Non-array values (e.g. string tag values) should be treated as text content
24
+ if (arr !== undefined && arr !== null) {
25
+ let text = arr.toString();
26
+ text = replaceEntitiesValue(text, options);
27
+ return text;
28
+ }
29
+ return "";
30
+ }
31
+
21
32
  for (let i = 0; i < arr.length; i++) {
22
33
  const tagObj = arr[i];
23
34
  const tagName = propName(tagObj);
24
- if(tagName === undefined) continue;
35
+ if (tagName === undefined) continue;
25
36
 
26
37
  let newJPath = "";
27
38
  if (jPath.length === 0) newJPath = tagName
@@ -92,7 +103,7 @@ function propName(obj) {
92
103
  const keys = Object.keys(obj);
93
104
  for (let i = 0; i < keys.length; i++) {
94
105
  const key = keys[i];
95
- if(!obj.hasOwnProperty(key)) continue;
106
+ if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;
96
107
  if (key !== ":@") return key;
97
108
  }
98
109
  }
@@ -101,7 +112,7 @@ function attr_to_str(attrMap, options) {
101
112
  let attrStr = "";
102
113
  if (attrMap && !options.ignoreAttributes) {
103
114
  for (let attr in attrMap) {
104
- if(!attrMap.hasOwnProperty(attr)) continue;
115
+ if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;
105
116
  let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);
106
117
  attrVal = replaceEntitiesValue(attrVal, options);
107
118
  if (attrVal === true && options.suppressBooleanAttributes) {
package/package.json CHANGED
@@ -69,7 +69,7 @@
69
69
  "constructs": ">=10.0.5 <11.0.0"
70
70
  },
71
71
  "dependencies": {
72
- "@aws-sdk/client-cloudformation": "^3.1000.0",
72
+ "@aws-sdk/client-cloudformation": "^3.1002.0",
73
73
  "@types/crypto-js": "^4.2.2",
74
74
  "@types/js-yaml": "^4.0.9",
75
75
  "crypto-js": "^4.2.0",
@@ -110,7 +110,7 @@
110
110
  "publishConfig": {
111
111
  "access": "public"
112
112
  },
113
- "version": "1.9.1",
113
+ "version": "1.9.3",
114
114
  "jest": {
115
115
  "coverageProvider": "v8",
116
116
  "testMatch": [
@@ -1,14 +0,0 @@
1
- import { join, normalize, sep } from "node:path";
2
- export const getTypeScriptPackageJsonPath = (dirname = "") => {
3
- let nodeModulesPath;
4
- const normalizedPath = normalize(dirname);
5
- const parts = normalizedPath.split(sep);
6
- const nodeModulesIndex = parts.indexOf("node_modules");
7
- if (nodeModulesIndex !== -1) {
8
- nodeModulesPath = parts.slice(0, nodeModulesIndex).join(sep);
9
- }
10
- else {
11
- nodeModulesPath = dirname;
12
- }
13
- return join(nodeModulesPath, "node_modules", "typescript", "package.json");
14
- };
@@ -1,9 +0,0 @@
1
- /**
2
- * Returns the path to the TypeScript package.json file relative to the given directory.
3
- *
4
- * @param dirname - The directory path to resolve from.
5
- * @returns The path to the TypeScript package.json file.
6
- *
7
- * @internal
8
- */
9
- export declare const getTypeScriptPackageJsonPath: (dirname?: string) => string;
@@ -1 +0,0 @@
1
- export declare const getTypeScriptPackageJsonPath: (dirname?: string) => string;