xml-disassembler 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [1.2.4](https://github.com/mcarvin8/xml-disassembler/compare/v1.2.3...v1.2.4) (2024-04-01)
2
+
3
+ ### Bug Fixes
4
+
5
+ - findUniqueIdElement should always return a string ([e20584e](https://github.com/mcarvin8/xml-disassembler/commit/e20584ed2ca71eaa7146d23da1b7f8460ae3d6a7))
6
+ - switch disassembled files to async ([e4c5cbc](https://github.com/mcarvin8/xml-disassembler/commit/e4c5cbcfde49e551a2e2d6933c1d1d3420bf4dc1))
7
+
1
8
  ## [1.2.3](https://github.com/mcarvin8/xml-disassembler/compare/v1.2.2...v1.2.3) (2024-03-31)
2
9
 
3
10
  ### Bug Fixes
package/disassemble.log CHANGED
@@ -1,93 +1,93 @@
1
- [2024-03-31T04:16:32.568] [DEBUG] default - Parsing file to disassemble: mock/general/HR_Admin.permissionset-meta.xml
2
- [2024-03-31T04:16:32.574] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/applicationVisibilities/JobApps__Recruiting.applicationVisibilities-meta.xml
3
- [2024-03-31T04:16:32.574] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/classAccesses/Send_Email_Confirmation.classAccesses-meta.xml
4
- [2024-03-31T04:16:32.575] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/fieldPermissions/Job_Request__c.Salary__c.fieldPermissions-meta.xml
5
- [2024-03-31T04:16:32.575] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/objectPermissions/Job_Request__c.objectPermissions-meta.xml
6
- [2024-03-31T04:16:32.575] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/pageAccesses/Job_Request_Web_Form.pageAccesses-meta.xml
7
- [2024-03-31T04:16:32.575] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/recordTypeVisibilities/Recruiting.DevManager.recordTypeVisibilities-meta.xml
8
- [2024-03-31T04:16:32.576] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/tabSettings/Job_Request__c.tabSettings-meta.xml
9
- [2024-03-31T04:16:32.576] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/userPermissions/APIEnabled.userPermissions-meta.xml
10
- [2024-03-31T04:16:32.583] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/HR_Admin.permissionset-meta.xml
11
- [2024-03-31T04:16:32.586] [DEBUG] default - Parsing directory to reassemble: mock/general/HR_Admin
12
- [2024-03-31T04:16:32.594] [DEBUG] default - Created reassembled file: mock/general/HR_Admin.permissionset-meta.xml
13
- [2024-03-31T04:16:32.595] [DEBUG] default - Parsing file to disassemble: mock/attributes/notes.xml
14
- [2024-03-31T04:16:32.596] [DEBUG] default - Created disassembled file: mock/attributes/notes/nest/941cb84b.nest-meta.xml
15
- [2024-03-31T04:16:32.596] [DEBUG] default - Created disassembled file: mock/attributes/notes/nest/c7c296d8.nest-meta.xml
16
- [2024-03-31T04:16:32.597] [DEBUG] default - Parsing directory to reassemble: mock/attributes/notes
17
- [2024-03-31T04:16:32.598] [DEBUG] default - Created reassembled file: mock/attributes/notes.xml
18
- [2024-03-31T04:16:32.599] [DEBUG] default - Parsing file to disassemble: mock/cdata/VidLand_US.marketingappextension-meta.xml
19
- [2024-03-31T04:16:32.600] [DEBUG] default - Created disassembled file: mock/cdata/VidLand_US/marketingAppExtActions/register_user.marketingAppExtActions-meta.xml
20
- [2024-03-31T04:16:32.600] [DEBUG] default - Created disassembled file: mock/cdata/VidLand_US/VidLand_US.marketingappextension-meta.xml
21
- [2024-03-31T04:16:32.601] [DEBUG] default - Parsing directory to reassemble: mock/cdata/VidLand_US
22
- [2024-03-31T04:16:32.603] [DEBUG] default - Created reassembled file: mock/cdata/VidLand_US.xml
23
- [2024-03-31T04:16:32.604] [DEBUG] default - Parsing file to disassemble: mock/comments/Numbers-fr.globalValueSetTranslation-meta.xml
24
- [2024-03-31T04:16:32.605] [DEBUG] default - Created disassembled file: mock/comments/Numbers-fr/valueTranslation/30e8b6d2.valueTranslation-meta.xml
25
- [2024-03-31T04:16:32.605] [DEBUG] default - Created disassembled file: mock/comments/Numbers-fr/valueTranslation/d7dd1420.valueTranslation-meta.xml
26
- [2024-03-31T04:16:32.605] [DEBUG] default - Created disassembled file: mock/comments/Numbers-fr/valueTranslation/d8852ede.valueTranslation-meta.xml
27
- [2024-03-31T04:16:32.606] [DEBUG] default - Parsing directory to reassemble: mock/comments/Numbers-fr
28
- [2024-03-31T04:16:32.608] [DEBUG] default - Created reassembled file: mock/comments/Numbers-fr.globalValueSetTranslation-meta.xml
29
- [2024-03-31T04:16:32.609] [DEBUG] default - Parsing file to disassemble: mock/deeply-nested-unique-id-element/Get_Info.flow-meta.xml
30
- [2024-03-31T04:16:32.613] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/actionCalls/Get_Info.actionCalls-meta.xml
31
- [2024-03-31T04:16:32.613] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/actionCalls/Post_to_Contact_s_Feed.actionCalls-meta.xml
32
- [2024-03-31T04:16:32.614] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/assignments/Set_Contact_ID.assignments-meta.xml
33
- [2024-03-31T04:16:32.614] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/decisions/Update_If_Existing.decisions-meta.xml
34
- [2024-03-31T04:16:32.614] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/decisions/Update_or_Create.decisions-meta.xml
35
- [2024-03-31T04:16:32.614] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/dynamicChoiceSets/accounts.dynamicChoiceSets-meta.xml
36
- [2024-03-31T04:16:32.614] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/formulas/created_or_updated.formulas-meta.xml
37
- [2024-03-31T04:16:32.615] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/processMetadataValues/BuilderType.processMetadataValues-meta.xml
38
- [2024-03-31T04:16:32.615] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/processMetadataValues/CanvasMode.processMetadataValues-meta.xml
39
- [2024-03-31T04:16:32.615] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/processMetadataValues/OriginBuilderType.processMetadataValues-meta.xml
40
- [2024-03-31T04:16:32.615] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/recordCreates/Create_Contact.recordCreates-meta.xml
41
- [2024-03-31T04:16:32.615] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/recordLookups/Find_a_Match.recordLookups-meta.xml
42
- [2024-03-31T04:16:32.615] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/recordUpdates/Update_Contact.recordUpdates-meta.xml
43
- [2024-03-31T04:16:32.615] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/screens/Confirm.screens-meta.xml
44
- [2024-03-31T04:16:32.616] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/screens/Contact_Info.screens-meta.xml
45
- [2024-03-31T04:16:32.616] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/start/Contact_Info.start-meta.xml
46
- [2024-03-31T04:16:32.616] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/textTemplates/chatterMessage.textTemplates-meta.xml
47
- [2024-03-31T04:16:32.616] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/variables/ComplexObjectExample.variables-meta.xml
48
- [2024-03-31T04:16:32.616] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/variables/contact.variables-meta.xml
49
- [2024-03-31T04:16:32.616] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/variables/existingId.variables-meta.xml
50
- [2024-03-31T04:16:32.616] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/variables/updateExisting.variables-meta.xml
51
- [2024-03-31T04:16:32.616] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/Get_Info.flow-meta.xml
52
- [2024-03-31T04:16:32.621] [DEBUG] default - Parsing directory to reassemble: mock/deeply-nested-unique-id-element/Get_Info
53
- [2024-03-31T04:16:32.640] [DEBUG] default - Created reassembled file: mock/deeply-nested-unique-id-element/Get_Info.flow-meta.xml
54
- [2024-03-31T04:16:32.641] [DEBUG] default - Parsing file to disassemble: mock/array-of-leafs/Dreamhouse.app-meta.xml
55
- [2024-03-31T04:16:32.643] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/39049d21.actionOverrides-meta.xml
56
- [2024-03-31T04:16:32.643] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/735c1659.actionOverrides-meta.xml
57
- [2024-03-31T04:16:32.643] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/b04e9f9b.actionOverrides-meta.xml
58
- [2024-03-31T04:16:32.643] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/c8cc7a99.actionOverrides-meta.xml
59
- [2024-03-31T04:16:32.644] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/brand/c9db422b.brand-meta.xml
60
- [2024-03-31T04:16:32.644] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/Dreamhouse.app-meta.xml
61
- [2024-03-31T04:16:32.645] [DEBUG] default - Parsing directory to reassemble: mock/array-of-leafs/Dreamhouse
62
- [2024-03-31T04:16:32.649] [DEBUG] default - Created reassembled file: mock/array-of-leafs/Dreamhouse.app-meta.xml
63
- [2024-03-31T04:16:32.650] [DEBUG] default - Parsing file to disassemble: mock/array-of-leafs/Dreamhouse.app-meta.xml
64
- [2024-03-31T04:16:32.652] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/39049d21.actionOverrides-meta.xml
65
- [2024-03-31T04:16:32.653] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/735c1659.actionOverrides-meta.xml
66
- [2024-03-31T04:16:32.653] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/b04e9f9b.actionOverrides-meta.xml
67
- [2024-03-31T04:16:32.653] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/c8cc7a99.actionOverrides-meta.xml
68
- [2024-03-31T04:16:32.653] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/brand/c9db422b.brand-meta.xml
69
- [2024-03-31T04:16:32.653] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/Dreamhouse.app-meta.xml
70
- [2024-03-31T04:16:32.654] [DEBUG] default - Parsing directory to reassemble: mock/array-of-leafs/Dreamhouse
71
- [2024-03-31T04:16:32.656] [DEBUG] default - Created reassembled file: mock/array-of-leafs/Dreamhouse.app-meta.xml
72
- [2024-03-31T04:16:32.658] [DEBUG] default - Parsing file to disassemble: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin.permissionset-meta.xml
73
- [2024-03-31T04:16:32.659] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/applicationVisibilities/JobApps__Recruiting.applicationVisibilities-meta.xml
74
- [2024-03-31T04:16:32.659] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/classAccesses/Send_Email_Confirmation.classAccesses-meta.xml
75
- [2024-03-31T04:16:32.659] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/fieldPermissions/Job_Request__c.Salary__c.fieldPermissions-meta.xml
76
- [2024-03-31T04:16:32.659] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/objectPermissions/Job_Request__c.objectPermissions-meta.xml
77
- [2024-03-31T04:16:32.659] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/pageAccesses/Job_Request_Web_Form.pageAccesses-meta.xml
78
- [2024-03-31T04:16:32.659] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/recordTypeVisibilities/Recruiting.DevManager.recordTypeVisibilities-meta.xml
79
- [2024-03-31T04:16:32.659] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/tabSettings/Job_Request__c.tabSettings-meta.xml
80
- [2024-03-31T04:16:32.660] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/userPermissions/APIEnabled.userPermissions-meta.xml
81
- [2024-03-31T04:16:32.660] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/HR_Admin.permissionset-meta.xml
82
- [2024-03-31T04:16:32.660] [DEBUG] default - Parsing directory to reassemble: mock/no-namespace/HR_Admin
83
- [2024-03-31T04:16:32.664] [DEBUG] default - Created reassembled file: mock/no-namespace/HR_Admin.permissionset-meta.xml
84
- [2024-03-31T04:16:32.665] [ERROR] default - The file path /home/runner/work/xml-disassembler/xml-disassembler/mock/not-an-xml.txt is not an XML file.
85
- [2024-03-31T04:16:32.665] [ERROR] default - The provided xmlPath mock/no-namespace/HR_Admin/HR_Admin.permissionset-meta.xml to reassemble is not a directory.
86
- [2024-03-31T04:16:32.666] [DEBUG] default - Parsing file to disassemble: mock/no-root-element/Assessment_Bot.bot-meta.xml
87
- [2024-03-31T04:16:32.666] [ERROR] default - Assessment_Bot.bot-meta.xml was unable to be parsed. Confirm formatting and try again.
88
- [2024-03-31T04:16:32.667] [DEBUG] default - Parsing directory to reassemble: mock/no-root-element/Assessment_Bot
89
- [2024-03-31T04:16:32.667] [ERROR] default - mock/no-root-element/Assessment_Bot/Assessment_Bot.bot-meta.xml was unable to be parsed and was not added to the reassembled file. Confirm formatting and try again.
90
- [2024-03-31T04:16:32.668] [ERROR] default - mock/no-root-element/Assessment_Bot/botMlDomain/419e0199.botMlDomain-meta.xml was unable to be parsed and was not added to the reassembled file. Confirm formatting and try again.
91
- [2024-03-31T04:16:32.668] [ERROR] default - No files under mock/no-root-element/Assessment_Bot were parsed successfully. A reassembled XML file was not created.
92
- [2024-03-31T04:16:32.668] [DEBUG] default - Parsing file to disassemble: mock/no-nested-elements/HR_Admin.xml
93
- [2024-03-31T04:16:32.669] [ERROR] default - The XML file HR_Admin.xml only has leaf elements. This file will not be disassembled.
1
+ [2024-04-01T16:14:58.941] [DEBUG] default - Parsing file to disassemble: mock/general/HR_Admin.permissionset-meta.xml
2
+ [2024-04-01T16:14:58.949] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/applicationVisibilities/JobApps__Recruiting.applicationVisibilities-meta.xml
3
+ [2024-04-01T16:14:58.949] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/classAccesses/Send_Email_Confirmation.classAccesses-meta.xml
4
+ [2024-04-01T16:14:58.950] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/fieldPermissions/Job_Request__c.Salary__c.fieldPermissions-meta.xml
5
+ [2024-04-01T16:14:58.950] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/objectPermissions/Job_Request__c.objectPermissions-meta.xml
6
+ [2024-04-01T16:14:58.951] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/pageAccesses/Job_Request_Web_Form.pageAccesses-meta.xml
7
+ [2024-04-01T16:14:58.951] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/recordTypeVisibilities/Recruiting.DevManager.recordTypeVisibilities-meta.xml
8
+ [2024-04-01T16:14:58.952] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/tabSettings/Job_Request__c.tabSettings-meta.xml
9
+ [2024-04-01T16:14:58.952] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/userPermissions/APIEnabled.userPermissions-meta.xml
10
+ [2024-04-01T16:14:58.959] [DEBUG] default - Created disassembled file: mock/general/HR_Admin/HR_Admin.permissionset-meta.xml
11
+ [2024-04-01T16:14:58.962] [DEBUG] default - Parsing directory to reassemble: mock/general/HR_Admin
12
+ [2024-04-01T16:14:58.969] [DEBUG] default - Created reassembled file: mock/general/HR_Admin.permissionset-meta.xml
13
+ [2024-04-01T16:14:58.970] [DEBUG] default - Parsing file to disassemble: mock/attributes/notes.xml
14
+ [2024-04-01T16:14:58.971] [DEBUG] default - Created disassembled file: mock/attributes/notes/nest/941cb84b.nest-meta.xml
15
+ [2024-04-01T16:14:58.972] [DEBUG] default - Created disassembled file: mock/attributes/notes/nest/c7c296d8.nest-meta.xml
16
+ [2024-04-01T16:14:58.973] [DEBUG] default - Parsing directory to reassemble: mock/attributes/notes
17
+ [2024-04-01T16:14:58.974] [DEBUG] default - Created reassembled file: mock/attributes/notes.xml
18
+ [2024-04-01T16:14:58.979] [DEBUG] default - Parsing file to disassemble: mock/cdata/VidLand_US.marketingappextension-meta.xml
19
+ [2024-04-01T16:14:58.980] [DEBUG] default - Created disassembled file: mock/cdata/VidLand_US/marketingAppExtActions/register_user.marketingAppExtActions-meta.xml
20
+ [2024-04-01T16:14:58.981] [DEBUG] default - Created disassembled file: mock/cdata/VidLand_US/VidLand_US.marketingappextension-meta.xml
21
+ [2024-04-01T16:14:58.981] [DEBUG] default - Parsing directory to reassemble: mock/cdata/VidLand_US
22
+ [2024-04-01T16:14:58.983] [DEBUG] default - Created reassembled file: mock/cdata/VidLand_US.xml
23
+ [2024-04-01T16:14:58.984] [DEBUG] default - Parsing file to disassemble: mock/comments/Numbers-fr.globalValueSetTranslation-meta.xml
24
+ [2024-04-01T16:14:58.985] [DEBUG] default - Created disassembled file: mock/comments/Numbers-fr/valueTranslation/30e8b6d2.valueTranslation-meta.xml
25
+ [2024-04-01T16:14:58.985] [DEBUG] default - Created disassembled file: mock/comments/Numbers-fr/valueTranslation/d7dd1420.valueTranslation-meta.xml
26
+ [2024-04-01T16:14:58.986] [DEBUG] default - Created disassembled file: mock/comments/Numbers-fr/valueTranslation/d8852ede.valueTranslation-meta.xml
27
+ [2024-04-01T16:14:58.987] [DEBUG] default - Parsing directory to reassemble: mock/comments/Numbers-fr
28
+ [2024-04-01T16:14:58.988] [DEBUG] default - Created reassembled file: mock/comments/Numbers-fr.globalValueSetTranslation-meta.xml
29
+ [2024-04-01T16:14:58.989] [DEBUG] default - Parsing file to disassemble: mock/deeply-nested-unique-id-element/Get_Info.flow-meta.xml
30
+ [2024-04-01T16:14:58.995] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/actionCalls/Get_Info.actionCalls-meta.xml
31
+ [2024-04-01T16:14:58.995] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/actionCalls/Post_to_Contact_s_Feed.actionCalls-meta.xml
32
+ [2024-04-01T16:14:58.996] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/assignments/Set_Contact_ID.assignments-meta.xml
33
+ [2024-04-01T16:14:58.996] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/decisions/Update_If_Existing.decisions-meta.xml
34
+ [2024-04-01T16:14:58.997] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/decisions/Update_or_Create.decisions-meta.xml
35
+ [2024-04-01T16:14:58.997] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/dynamicChoiceSets/accounts.dynamicChoiceSets-meta.xml
36
+ [2024-04-01T16:14:58.997] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/formulas/created_or_updated.formulas-meta.xml
37
+ [2024-04-01T16:14:58.998] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/processMetadataValues/BuilderType.processMetadataValues-meta.xml
38
+ [2024-04-01T16:14:58.998] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/processMetadataValues/CanvasMode.processMetadataValues-meta.xml
39
+ [2024-04-01T16:14:58.998] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/processMetadataValues/OriginBuilderType.processMetadataValues-meta.xml
40
+ [2024-04-01T16:14:58.999] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/recordCreates/Create_Contact.recordCreates-meta.xml
41
+ [2024-04-01T16:14:58.999] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/recordLookups/Find_a_Match.recordLookups-meta.xml
42
+ [2024-04-01T16:14:59.000] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/recordUpdates/Update_Contact.recordUpdates-meta.xml
43
+ [2024-04-01T16:14:59.000] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/screens/Confirm.screens-meta.xml
44
+ [2024-04-01T16:14:59.000] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/screens/Contact_Info.screens-meta.xml
45
+ [2024-04-01T16:14:59.001] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/start/Contact_Info.start-meta.xml
46
+ [2024-04-01T16:14:59.001] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/textTemplates/chatterMessage.textTemplates-meta.xml
47
+ [2024-04-01T16:14:59.001] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/variables/ComplexObjectExample.variables-meta.xml
48
+ [2024-04-01T16:14:59.002] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/variables/contact.variables-meta.xml
49
+ [2024-04-01T16:14:59.002] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/variables/existingId.variables-meta.xml
50
+ [2024-04-01T16:14:59.002] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/variables/updateExisting.variables-meta.xml
51
+ [2024-04-01T16:14:59.003] [DEBUG] default - Created disassembled file: mock/deeply-nested-unique-id-element/Get_Info/Get_Info.flow-meta.xml
52
+ [2024-04-01T16:14:59.003] [DEBUG] default - Parsing directory to reassemble: mock/deeply-nested-unique-id-element/Get_Info
53
+ [2024-04-01T16:14:59.017] [DEBUG] default - Created reassembled file: mock/deeply-nested-unique-id-element/Get_Info.flow-meta.xml
54
+ [2024-04-01T16:14:59.018] [DEBUG] default - Parsing file to disassemble: mock/array-of-leafs/Dreamhouse.app-meta.xml
55
+ [2024-04-01T16:14:59.020] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/39049d21.actionOverrides-meta.xml
56
+ [2024-04-01T16:14:59.020] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/735c1659.actionOverrides-meta.xml
57
+ [2024-04-01T16:14:59.021] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/b04e9f9b.actionOverrides-meta.xml
58
+ [2024-04-01T16:14:59.021] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/c8cc7a99.actionOverrides-meta.xml
59
+ [2024-04-01T16:14:59.021] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/brand/c9db422b.brand-meta.xml
60
+ [2024-04-01T16:14:59.022] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/Dreamhouse.app-meta.xml
61
+ [2024-04-01T16:14:59.023] [DEBUG] default - Parsing directory to reassemble: mock/array-of-leafs/Dreamhouse
62
+ [2024-04-01T16:14:59.026] [DEBUG] default - Created reassembled file: mock/array-of-leafs/Dreamhouse.app-meta.xml
63
+ [2024-04-01T16:14:59.027] [DEBUG] default - Parsing file to disassemble: mock/array-of-leafs/Dreamhouse.app-meta.xml
64
+ [2024-04-01T16:14:59.030] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/39049d21.actionOverrides-meta.xml
65
+ [2024-04-01T16:14:59.031] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/735c1659.actionOverrides-meta.xml
66
+ [2024-04-01T16:14:59.031] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/b04e9f9b.actionOverrides-meta.xml
67
+ [2024-04-01T16:14:59.031] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/actionOverrides/c8cc7a99.actionOverrides-meta.xml
68
+ [2024-04-01T16:14:59.032] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/brand/c9db422b.brand-meta.xml
69
+ [2024-04-01T16:14:59.032] [DEBUG] default - Created disassembled file: mock/array-of-leafs/Dreamhouse/Dreamhouse.app-meta.xml
70
+ [2024-04-01T16:14:59.033] [DEBUG] default - Parsing directory to reassemble: mock/array-of-leafs/Dreamhouse
71
+ [2024-04-01T16:14:59.036] [DEBUG] default - Created reassembled file: mock/array-of-leafs/Dreamhouse.app-meta.xml
72
+ [2024-04-01T16:14:59.037] [DEBUG] default - Parsing file to disassemble: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin.permissionset-meta.xml
73
+ [2024-04-01T16:14:59.038] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/applicationVisibilities/JobApps__Recruiting.applicationVisibilities-meta.xml
74
+ [2024-04-01T16:14:59.039] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/classAccesses/Send_Email_Confirmation.classAccesses-meta.xml
75
+ [2024-04-01T16:14:59.039] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/fieldPermissions/Job_Request__c.Salary__c.fieldPermissions-meta.xml
76
+ [2024-04-01T16:14:59.039] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/objectPermissions/Job_Request__c.objectPermissions-meta.xml
77
+ [2024-04-01T16:14:59.040] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/pageAccesses/Job_Request_Web_Form.pageAccesses-meta.xml
78
+ [2024-04-01T16:14:59.040] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/recordTypeVisibilities/Recruiting.DevManager.recordTypeVisibilities-meta.xml
79
+ [2024-04-01T16:14:59.040] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/tabSettings/Job_Request__c.tabSettings-meta.xml
80
+ [2024-04-01T16:14:59.041] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/userPermissions/APIEnabled.userPermissions-meta.xml
81
+ [2024-04-01T16:14:59.041] [DEBUG] default - Created disassembled file: /home/runner/work/xml-disassembler/xml-disassembler/mock/no-namespace/HR_Admin/HR_Admin.permissionset-meta.xml
82
+ [2024-04-01T16:14:59.041] [DEBUG] default - Parsing directory to reassemble: mock/no-namespace/HR_Admin
83
+ [2024-04-01T16:14:59.045] [DEBUG] default - Created reassembled file: mock/no-namespace/HR_Admin.permissionset-meta.xml
84
+ [2024-04-01T16:14:59.046] [ERROR] default - The file path /home/runner/work/xml-disassembler/xml-disassembler/mock/not-an-xml.txt is not an XML file.
85
+ [2024-04-01T16:14:59.047] [ERROR] default - The provided xmlPath mock/no-namespace/HR_Admin/HR_Admin.permissionset-meta.xml to reassemble is not a directory.
86
+ [2024-04-01T16:14:59.047] [DEBUG] default - Parsing file to disassemble: mock/no-root-element/Assessment_Bot.bot-meta.xml
87
+ [2024-04-01T16:14:59.048] [ERROR] default - Assessment_Bot.bot-meta.xml was unable to be parsed. Confirm formatting and try again.
88
+ [2024-04-01T16:14:59.049] [DEBUG] default - Parsing directory to reassemble: mock/no-root-element/Assessment_Bot
89
+ [2024-04-01T16:14:59.049] [ERROR] default - mock/no-root-element/Assessment_Bot/Assessment_Bot.bot-meta.xml was unable to be parsed and was not added to the reassembled file. Confirm formatting and try again.
90
+ [2024-04-01T16:14:59.049] [ERROR] default - mock/no-root-element/Assessment_Bot/botMlDomain/419e0199.botMlDomain-meta.xml was unable to be parsed and was not added to the reassembled file. Confirm formatting and try again.
91
+ [2024-04-01T16:14:59.049] [ERROR] default - No files under mock/no-root-element/Assessment_Bot were parsed successfully. A reassembled XML file was not created.
92
+ [2024-04-01T16:14:59.050] [DEBUG] default - Parsing file to disassemble: mock/no-nested-elements/HR_Admin.xml
93
+ [2024-04-01T16:14:59.050] [ERROR] default - The XML file HR_Admin.xml only has leaf elements. This file will not be disassembled.
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var log4js = require('log4js');
4
- var fs = require('node:fs/promises');
4
+ var promises = require('node:fs/promises');
5
5
  var path = require('node:path');
6
6
  var fastXmlParser = require('fast-xml-parser');
7
- var fs$1 = require('node:fs');
7
+ var fs = require('node:fs');
8
8
  var node_crypto = require('node:crypto');
9
9
 
10
10
  function _interopNamespaceDefault(e) {
@@ -25,9 +25,9 @@ function _interopNamespaceDefault(e) {
25
25
  }
26
26
 
27
27
  var log4js__namespace = /*#__PURE__*/_interopNamespaceDefault(log4js);
28
- var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
28
+ var promises__namespace = /*#__PURE__*/_interopNamespaceDefault(promises);
29
29
  var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
30
- var fs__namespace$1 = /*#__PURE__*/_interopNamespaceDefault(fs$1);
30
+ var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
31
31
 
32
32
  /******************************************************************************
33
33
  Copyright (c) Microsoft Corporation.
@@ -93,11 +93,23 @@ function buildReassembledFile(combinedXmlContents, filePath, xmlElement, xmlRoot
93
93
  });
94
94
  finalXmlContent = finalXmlContent.replace(/(\n\s*){2,}/g, `\n${INDENT}`);
95
95
  const closeTag = `</${xmlElement}>`;
96
- yield fs__namespace.writeFile(filePath, `${XML_HEADER}\n${xmlRootElementHeader}${finalXmlContent}${closeTag}`);
96
+ yield promises__namespace.writeFile(filePath, `${XML_HEADER}\n${xmlRootElementHeader}${finalXmlContent}${closeTag}`);
97
97
  logger.debug(`Created reassembled file: ${filePath}`);
98
98
  });
99
99
  }
100
100
 
101
+ function buildRootElementHeader(rootElement, rootElementName) {
102
+ let rootElementHeader = `<${rootElementName}`;
103
+ for (const [attrKey, attrValue] of Object.entries(rootElement)) {
104
+ if (attrKey.startsWith("@")) {
105
+ const cleanAttrKey = attrKey.slice(2);
106
+ rootElementHeader += ` ${cleanAttrKey}="${String(attrValue)}"`;
107
+ }
108
+ }
109
+ rootElementHeader += ">";
110
+ return rootElementHeader;
111
+ }
112
+
101
113
  function buildXMLString(element, indentLevel = 0) {
102
114
  const xmlBuilder = new fastXmlParser.XMLBuilder(JSON_PARSER_OPTION);
103
115
  const xmlString = xmlBuilder.build(element);
@@ -115,7 +127,7 @@ class ReassembleXMLFileHandler {
115
127
  return __awaiter(this, void 0, void 0, function* () {
116
128
  const combinedXmlContents = [];
117
129
  let rootResult = undefined;
118
- const files = yield fs__namespace.readdir(dirPath);
130
+ const files = yield promises__namespace.readdir(dirPath);
119
131
  files.sort((fileA, fileB) => {
120
132
  const fullNameA = fileA.split(".")[0].toLowerCase();
121
133
  const fullNameB = fileB.split(".")[0].toLowerCase();
@@ -123,9 +135,9 @@ class ReassembleXMLFileHandler {
123
135
  });
124
136
  for (const file of files) {
125
137
  const filePath = path__namespace.join(dirPath, file);
126
- const fileStat = yield fs__namespace.stat(filePath);
138
+ const fileStat = yield promises__namespace.stat(filePath);
127
139
  if (fileStat.isFile() && filePath.endsWith(".xml")) {
128
- const xmlContent = yield fs__namespace.readFile(filePath, "utf-8");
140
+ const xmlContent = yield promises__namespace.readFile(filePath, "utf-8");
129
141
  let xmlParsed;
130
142
  try {
131
143
  xmlParsed = xmlParser.parse(xmlContent, true);
@@ -141,6 +153,13 @@ class ReassembleXMLFileHandler {
141
153
  const combinedXmlString = buildXMLString(xmlParsed);
142
154
  combinedXmlContents.push(combinedXmlString);
143
155
  }
156
+ else if (fileStat.isDirectory()) {
157
+ const [subCombinedXmlContents, subRootResult] = yield this.processFilesInDirectory(filePath);
158
+ combinedXmlContents.push(...subCombinedXmlContents);
159
+ if (subRootResult && !rootResult) {
160
+ rootResult = subRootResult;
161
+ }
162
+ }
144
163
  }
145
164
  return [combinedXmlContents, rootResult];
146
165
  });
@@ -149,59 +168,22 @@ class ReassembleXMLFileHandler {
149
168
  return __awaiter(this, void 0, void 0, function* () {
150
169
  const rootElementName = Object.keys(xmlParsed)[1];
151
170
  const rootElement = xmlParsed[rootElementName];
152
- let rootElementHeader = `<${rootElementName}`;
153
- for (const [attrKey, attrValue] of Object.entries(rootElement)) {
154
- if (attrKey.startsWith("@")) {
155
- const cleanAttrKey = attrKey.slice(2);
156
- rootElementHeader += ` ${cleanAttrKey}="${String(attrValue)}"`;
157
- }
158
- }
159
- rootElementHeader += ">";
171
+ const rootElementHeader = buildRootElementHeader(rootElement, rootElementName);
160
172
  return [rootElementName, rootElementHeader];
161
173
  });
162
174
  }
163
175
  reassemble(xmlAttributes) {
164
176
  return __awaiter(this, void 0, void 0, function* () {
165
177
  const { xmlPath, fileExtension, postPurge = false } = xmlAttributes;
166
- const combinedXmlContents = [];
167
- const fileStat = yield fs__namespace.stat(xmlPath);
178
+ let combinedXmlContents = [];
179
+ const fileStat = yield promises__namespace.stat(xmlPath);
168
180
  if (!fileStat.isDirectory()) {
169
181
  logger.error(`The provided xmlPath ${xmlPath} to reassemble is not a directory.`);
170
182
  return;
171
183
  }
172
184
  logger.debug(`Parsing directory to reassemble: ${xmlPath}`);
173
- const filesInxmlPath = yield fs__namespace.readdir(xmlPath);
174
- filesInxmlPath.sort((fileA, fileB) => {
175
- const fullNameA = fileA.split(".")[0].toLowerCase();
176
- const fullNameB = fileB.split(".")[0].toLowerCase();
177
- return fullNameA.localeCompare(fullNameB);
178
- });
179
- let rootResult = undefined;
180
- for (const file of filesInxmlPath) {
181
- const filePath = path__namespace.join(xmlPath, file);
182
- const fileStat = yield fs__namespace.stat(filePath);
183
- if (fileStat.isFile() && filePath.endsWith(".xml")) {
184
- const xmlContent = yield fs__namespace.readFile(filePath, "utf-8");
185
- let xmlParsed;
186
- try {
187
- xmlParsed = xmlParser.parse(xmlContent, true);
188
- }
189
- catch (err) {
190
- logger.error(`${filePath} was unable to be parsed and was not added to the reassembled file. Confirm formatting and try again.`);
191
- continue;
192
- }
193
- rootResult = yield this.processFilesForRootElement(xmlParsed);
194
- const combinedXmlString = buildXMLString(xmlParsed);
195
- combinedXmlContents.push(combinedXmlString);
196
- }
197
- else if (fileStat.isDirectory()) {
198
- const [subdirectoryContents, subdirectoryRootResult] = yield this.processFilesInDirectory(filePath);
199
- combinedXmlContents.push(...subdirectoryContents);
200
- if (subdirectoryRootResult && !rootResult) {
201
- rootResult = subdirectoryRootResult;
202
- }
203
- }
204
- }
185
+ const [subCombinedXmlContents, rootResult] = yield this.processFilesInDirectory(xmlPath);
186
+ combinedXmlContents = subCombinedXmlContents;
205
187
  const parentDirectory = path__namespace.dirname(xmlPath);
206
188
  const subdirectoryBasename = path__namespace.basename(xmlPath);
207
189
  const fileName = fileExtension
@@ -212,7 +194,7 @@ class ReassembleXMLFileHandler {
212
194
  const [rootElementName, rootElementHeader] = rootResult;
213
195
  yield buildReassembledFile(combinedXmlContents, filePath, rootElementName, rootElementHeader);
214
196
  if (postPurge)
215
- yield fs__namespace.rm(xmlPath, { recursive: true });
197
+ yield promises__namespace.rm(xmlPath, { recursive: true });
216
198
  }
217
199
  else {
218
200
  logger.error(`No files under ${xmlPath} were parsed successfully. A reassembled XML file was not created.`);
@@ -251,105 +233,102 @@ function getShortHash(element) {
251
233
  }
252
234
 
253
235
  function buildNestedFile(element, metadataPath, uniqueIdElements, rootElementName, rootElementHeader, parentKey, indent) {
254
- let elementContent = "";
255
- const fieldName = findUniqueIdElement(element, uniqueIdElements);
256
- const outputDirectory = path__namespace.join(metadataPath, parentKey);
257
- const outputFileName = `${fieldName}.${parentKey}-meta.xml`;
258
- const outputPath = path__namespace.join(outputDirectory, outputFileName);
259
- fs__namespace$1.mkdirSync(outputDirectory, { recursive: true });
260
- elementContent = buildXMLString(element, 2);
261
- let decomposeFileContents = `${XML_HEADER}\n`;
262
- decomposeFileContents += `${rootElementHeader}\n`;
263
- decomposeFileContents += `${indent}<${parentKey}>\n`;
264
- decomposeFileContents += `${elementContent}\n`;
265
- decomposeFileContents += `${indent}</${parentKey}>\n`;
266
- decomposeFileContents += `</${rootElementName}>`;
267
- fs__namespace$1.writeFileSync(outputPath, decomposeFileContents);
268
- logger.debug(`Created disassembled file: ${outputPath}`);
236
+ return __awaiter(this, void 0, void 0, function* () {
237
+ let elementContent = "";
238
+ const fieldName = findUniqueIdElement(element, uniqueIdElements);
239
+ const outputDirectory = path__namespace.join(metadataPath, parentKey);
240
+ const outputFileName = `${fieldName}.${parentKey}-meta.xml`;
241
+ const outputPath = path__namespace.join(outputDirectory, outputFileName);
242
+ yield promises__namespace.mkdir(outputDirectory, { recursive: true });
243
+ elementContent = buildXMLString(element, 2);
244
+ let decomposeFileContents = `${XML_HEADER}\n`;
245
+ decomposeFileContents += `${rootElementHeader}\n`;
246
+ decomposeFileContents += `${indent}<${parentKey}>\n`;
247
+ decomposeFileContents += `${elementContent}\n`;
248
+ decomposeFileContents += `${indent}</${parentKey}>\n`;
249
+ decomposeFileContents += `</${rootElementName}>`;
250
+ yield promises__namespace.writeFile(outputPath, decomposeFileContents);
251
+ logger.debug(`Created disassembled file: ${outputPath}`);
252
+ });
269
253
  }
270
254
 
271
255
  function buildLeafFile(leafContent, metadataPath, baseName, rootElementName, rootElementHeader) {
272
- let leafFile = `${XML_HEADER}\n`;
273
- leafFile += rootElementHeader;
274
- const sortedLeafContent = leafContent
275
- .split("\n")
276
- .filter((line) => line.trim() !== "")
277
- .sort((a, b) => a.localeCompare(b))
278
- .join("\n");
279
- leafFile += sortedLeafContent;
280
- leafFile += `\n</${rootElementName}>`;
281
- const leafOutputPath = path__namespace.join(metadataPath, `${baseName}.xml`);
282
- fs__namespace$1.writeFileSync(leafOutputPath, leafFile);
283
- logger.debug(`Created disassembled file: ${leafOutputPath}`);
256
+ return __awaiter(this, void 0, void 0, function* () {
257
+ let leafFile = `${XML_HEADER}\n`;
258
+ leafFile += rootElementHeader;
259
+ const sortedLeafContent = leafContent
260
+ .split("\n")
261
+ .filter((line) => line.trim() !== "")
262
+ .sort((a, b) => a.localeCompare(b))
263
+ .join("\n");
264
+ leafFile += sortedLeafContent;
265
+ leafFile += `\n</${rootElementName}>`;
266
+ const leafOutputPath = path__namespace.join(metadataPath, `${baseName}.xml`);
267
+ yield promises__namespace.writeFile(leafOutputPath, leafFile);
268
+ logger.debug(`Created disassembled file: ${leafOutputPath}`);
269
+ });
284
270
  }
285
271
 
286
272
  function buildDisassembledFiles(xmlString, metadataPath, uniqueIdElements, baseName, indent, postPurge, parentPath) {
287
- const xmlParser = new fastXmlParser.XMLParser(XML_PARSER_OPTION);
288
- let result;
289
- try {
290
- result = xmlParser.parse(xmlString, true);
291
- }
292
- catch (err) {
293
- logger.error(`${baseName}.xml was unable to be parsed. Confirm formatting and try again.`);
294
- return;
295
- }
296
- const rootElementName = Object.keys(result)[1];
297
- const rootElement = result[rootElementName];
298
- let rootElementHeader = `<${rootElementName}`;
299
- for (const [attrKey, attrValue] of Object.entries(rootElement)) {
300
- if (attrKey.startsWith("@")) {
301
- const cleanAttrKey = attrKey.slice(2);
302
- rootElementHeader += ` ${cleanAttrKey}="${String(attrValue)}"`;
273
+ return __awaiter(this, void 0, void 0, function* () {
274
+ const xmlParser = new fastXmlParser.XMLParser(XML_PARSER_OPTION);
275
+ let result;
276
+ try {
277
+ result = xmlParser.parse(xmlString, true);
303
278
  }
304
- }
305
- rootElementHeader += ">";
306
- let leafContent = "";
307
- let leafCount = 0;
308
- let hasNestedElements = false;
309
- Object.keys(rootElement)
310
- .filter((key) => !key.startsWith("@"))
311
- .forEach((key) => {
312
- if (Array.isArray(rootElement[key])) {
313
- for (const element of rootElement[key]) {
314
- if (typeof element === "object") {
315
- buildNestedFile(element, metadataPath, uniqueIdElements, rootElementName, rootElementHeader, key, indent);
316
- hasNestedElements = true;
317
- }
318
- else {
319
- const fieldValue = element;
320
- leafContent += `${indent}<${key}>${String(fieldValue)}</${key}>\n`;
321
- leafCount++;
279
+ catch (err) {
280
+ logger.error(`${baseName}.xml was unable to be parsed. Confirm formatting and try again.`);
281
+ return;
282
+ }
283
+ const rootElementName = Object.keys(result)[1];
284
+ const rootElement = result[rootElementName];
285
+ const rootElementHeader = buildRootElementHeader(rootElement, rootElementName);
286
+ let leafContent = "";
287
+ let leafCount = 0;
288
+ let hasNestedElements = false;
289
+ for (const key of Object.keys(rootElement).filter((key) => !key.startsWith("@"))) {
290
+ if (Array.isArray(rootElement[key])) {
291
+ for (const element of rootElement[key]) {
292
+ if (typeof element === "object") {
293
+ yield buildNestedFile(element, metadataPath, uniqueIdElements, rootElementName, rootElementHeader, key, indent);
294
+ hasNestedElements = true;
295
+ }
296
+ else {
297
+ const fieldValue = element;
298
+ leafContent += `${indent}<${key}>${String(fieldValue)}</${key}>\n`;
299
+ leafCount++;
300
+ }
322
301
  }
323
302
  }
303
+ else if (typeof rootElement[key] === "object") {
304
+ yield buildNestedFile(rootElement[key], metadataPath, uniqueIdElements, rootElementName, rootElementHeader, key, indent);
305
+ hasNestedElements = true;
306
+ }
307
+ else {
308
+ const fieldValue = rootElement[key];
309
+ leafContent += `${indent}<${key}>${String(fieldValue)}</${key}>\n`;
310
+ leafCount++;
311
+ }
324
312
  }
325
- else if (typeof rootElement[key] === "object") {
326
- buildNestedFile(rootElement[key], metadataPath, uniqueIdElements, rootElementName, rootElementHeader, key, indent);
327
- hasNestedElements = true;
313
+ if (!hasNestedElements) {
314
+ logger.error(`The XML file ${baseName}.xml only has leaf elements. This file will not be disassembled.`);
315
+ return;
328
316
  }
329
- else {
330
- const fieldValue = rootElement[key];
331
- leafContent += `${indent}<${key}>${String(fieldValue)}</${key}>\n`;
332
- leafCount++;
317
+ if (leafCount > 0) {
318
+ yield buildLeafFile(leafContent, metadataPath, baseName, rootElementName, rootElementHeader);
319
+ }
320
+ if (postPurge) {
321
+ const originalFilePath = path__namespace.resolve(`${parentPath}/${baseName}.xml`);
322
+ promises__namespace.unlink(originalFilePath);
333
323
  }
334
324
  });
335
- if (!hasNestedElements) {
336
- logger.error(`The XML file ${baseName}.xml only has leaf elements. This file will not be disassembled.`);
337
- return;
338
- }
339
- if (leafCount > 0) {
340
- buildLeafFile(leafContent, metadataPath, baseName, rootElementName, rootElementHeader);
341
- }
342
- if (postPurge) {
343
- const originalFilePath = path__namespace.resolve(`${parentPath}/${baseName}.xml`);
344
- fs__namespace.unlink(originalFilePath);
345
- }
346
325
  }
347
326
 
348
327
  class DisassembleXMLFileHandler {
349
328
  disassemble(xmlAttributes) {
350
329
  return __awaiter(this, void 0, void 0, function* () {
351
330
  const { xmlPath, uniqueIdElements, prePurge = false, postPurge = false, } = xmlAttributes;
352
- const fileStat = yield fs__namespace.stat(xmlPath);
331
+ const fileStat = yield promises__namespace.stat(xmlPath);
353
332
  if (fileStat.isFile()) {
354
333
  const filePath = path__namespace.resolve(xmlPath);
355
334
  if (!filePath.endsWith(".xml")) {
@@ -366,7 +345,7 @@ class DisassembleXMLFileHandler {
366
345
  });
367
346
  }
368
347
  else if (fileStat.isDirectory()) {
369
- const files = yield fs__namespace.readdir(xmlPath);
348
+ const files = yield promises__namespace.readdir(xmlPath);
370
349
  for (const file of files) {
371
350
  const filePath = path__namespace.join(xmlPath, file);
372
351
  if (filePath.endsWith(".xml")) {
@@ -386,17 +365,17 @@ class DisassembleXMLFileHandler {
386
365
  return __awaiter(this, void 0, void 0, function* () {
387
366
  const { xmlPath, filePath, uniqueIdElements, prePurge, postPurge } = xmlAttributes;
388
367
  logger.debug(`Parsing file to disassemble: ${filePath}`);
389
- const xmlContent = yield fs__namespace.readFile(filePath, "utf-8");
368
+ const xmlContent = yield promises__namespace.readFile(filePath, "utf-8");
390
369
  const fullName = path__namespace.basename(filePath, path__namespace.extname(filePath));
391
370
  const baseName = fullName.split(".")[0];
392
371
  let outputPath;
393
372
  outputPath = path__namespace.join(xmlPath, baseName);
394
373
  if (prePurge) {
395
- if (fs__namespace$1.existsSync(outputPath)) {
396
- yield fs__namespace.rm(outputPath, { recursive: true });
374
+ if (fs__namespace.existsSync(outputPath)) {
375
+ yield promises__namespace.rm(outputPath, { recursive: true });
397
376
  }
398
377
  }
399
- buildDisassembledFiles(xmlContent, outputPath, uniqueIdElements, fullName, INDENT, postPurge, xmlPath);
378
+ yield buildDisassembledFiles(xmlContent, outputPath, uniqueIdElements, fullName, INDENT, postPurge, xmlPath);
400
379
  });
401
380
  }
402
381
  }