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 +7 -0
- package/disassemble.log +93 -93
- package/dist/index.cjs +115 -136
- package/dist/index.cjs.map +1 -1
- package/dist/index.min.cjs +1 -1
- package/dist/index.min.cjs.map +1 -1
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.min.umd.js +1 -1
- package/dist/index.min.umd.js.map +1 -1
- package/dist/index.mjs +113 -134
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +115 -136
- package/dist/index.umd.js.map +1 -1
- package/dist/typings/service/buildDisassembledFiles.d.ts +1 -1
- package/dist/typings/service/buildLeafFile.d.ts +1 -1
- package/dist/typings/service/buildNestedFiles.d.ts +1 -1
- package/dist/typings/service/buildRootElementHeader.d.ts +2 -0
- package/dist/typings/service/findUniqueIdElement.d.ts +1 -1
- package/package.json +1 -1
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-
|
|
2
|
-
[2024-
|
|
3
|
-
[2024-
|
|
4
|
-
[2024-
|
|
5
|
-
[2024-
|
|
6
|
-
[2024-
|
|
7
|
-
[2024-
|
|
8
|
-
[2024-
|
|
9
|
-
[2024-
|
|
10
|
-
[2024-
|
|
11
|
-
[2024-
|
|
12
|
-
[2024-
|
|
13
|
-
[2024-
|
|
14
|
-
[2024-
|
|
15
|
-
[2024-
|
|
16
|
-
[2024-
|
|
17
|
-
[2024-
|
|
18
|
-
[2024-
|
|
19
|
-
[2024-
|
|
20
|
-
[2024-
|
|
21
|
-
[2024-
|
|
22
|
-
[2024-
|
|
23
|
-
[2024-
|
|
24
|
-
[2024-
|
|
25
|
-
[2024-
|
|
26
|
-
[2024-
|
|
27
|
-
[2024-
|
|
28
|
-
[2024-
|
|
29
|
-
[2024-
|
|
30
|
-
[2024-
|
|
31
|
-
[2024-
|
|
32
|
-
[2024-
|
|
33
|
-
[2024-
|
|
34
|
-
[2024-
|
|
35
|
-
[2024-
|
|
36
|
-
[2024-
|
|
37
|
-
[2024-
|
|
38
|
-
[2024-
|
|
39
|
-
[2024-
|
|
40
|
-
[2024-
|
|
41
|
-
[2024-
|
|
42
|
-
[2024-
|
|
43
|
-
[2024-
|
|
44
|
-
[2024-
|
|
45
|
-
[2024-
|
|
46
|
-
[2024-
|
|
47
|
-
[2024-
|
|
48
|
-
[2024-
|
|
49
|
-
[2024-
|
|
50
|
-
[2024-
|
|
51
|
-
[2024-
|
|
52
|
-
[2024-
|
|
53
|
-
[2024-
|
|
54
|
-
[2024-
|
|
55
|
-
[2024-
|
|
56
|
-
[2024-
|
|
57
|
-
[2024-
|
|
58
|
-
[2024-
|
|
59
|
-
[2024-
|
|
60
|
-
[2024-
|
|
61
|
-
[2024-
|
|
62
|
-
[2024-
|
|
63
|
-
[2024-
|
|
64
|
-
[2024-
|
|
65
|
-
[2024-
|
|
66
|
-
[2024-
|
|
67
|
-
[2024-
|
|
68
|
-
[2024-
|
|
69
|
-
[2024-
|
|
70
|
-
[2024-
|
|
71
|
-
[2024-
|
|
72
|
-
[2024-
|
|
73
|
-
[2024-
|
|
74
|
-
[2024-
|
|
75
|
-
[2024-
|
|
76
|
-
[2024-
|
|
77
|
-
[2024-
|
|
78
|
-
[2024-
|
|
79
|
-
[2024-
|
|
80
|
-
[2024-
|
|
81
|
-
[2024-
|
|
82
|
-
[2024-
|
|
83
|
-
[2024-
|
|
84
|
-
[2024-
|
|
85
|
-
[2024-
|
|
86
|
-
[2024-
|
|
87
|
-
[2024-
|
|
88
|
-
[2024-
|
|
89
|
-
[2024-
|
|
90
|
-
[2024-
|
|
91
|
-
[2024-
|
|
92
|
-
[2024-
|
|
93
|
-
[2024-
|
|
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
|
|
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
|
|
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
|
|
28
|
+
var promises__namespace = /*#__PURE__*/_interopNamespaceDefault(promises);
|
|
29
29
|
var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
30
|
-
var fs__namespace
|
|
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
|
|
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
|
|
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
|
|
138
|
+
const fileStat = yield promises__namespace.stat(filePath);
|
|
127
139
|
if (fileStat.isFile() && filePath.endsWith(".xml")) {
|
|
128
|
-
const xmlContent = yield
|
|
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
|
-
|
|
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
|
-
|
|
167
|
-
const fileStat = yield
|
|
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
|
|
174
|
-
|
|
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
|
|
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
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
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
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
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
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
396
|
-
yield
|
|
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
|
}
|