data-restructor 3.4.5 → 3.4.6

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 (41) hide show
  1. package/.github/workflows/codeql-analysis.yml +1 -1
  2. package/.github/workflows/continuous-integration.yaml +6 -6
  3. package/.nvmrc +1 -1
  4. package/CHANGELOG.md +150 -1
  5. package/coverage/coverage-summary.json +4 -4
  6. package/coverage/datarestructor.js.html +1 -1
  7. package/coverage/describedfield.js.html +1 -1
  8. package/coverage/index.html +6 -6
  9. package/coverage/templateResolver.js.html +7 -16
  10. package/devdist/datarestructor-global-all.js +3 -6
  11. package/devdist/datarestructor-ie-global-all.js +3 -6
  12. package/devdist/datarestructor-ie.js +3 -6
  13. package/devdist/datarestructor.js +3 -6
  14. package/devdist/templateResolver-ie.js +3 -6
  15. package/devdist/templateResolver.js +3 -6
  16. package/dist/datarestructor-global-all-min.js +1 -1
  17. package/dist/datarestructor-ie-global-all-min.js +1 -1
  18. package/dist/datarestructor-ie.js +1 -1
  19. package/dist/datarestructor-ie.js.map +1 -1
  20. package/dist/datarestructor.js +1 -1
  21. package/dist/datarestructor.js.map +1 -1
  22. package/dist/templateResolver-ie.js +1 -1
  23. package/dist/templateResolver-ie.js.map +1 -1
  24. package/dist/templateResolver.js +1 -1
  25. package/dist/templateResolver.js.map +1 -1
  26. package/docs/datarestructor.js.html +1 -1
  27. package/docs/describedfield.js.html +1 -1
  28. package/docs/index.html +1 -1
  29. package/docs/module-datarestructor.DescribedEntryCreator.html +1 -1
  30. package/docs/module-datarestructor.PropertyStructureDescriptionBuilder.html +1 -1
  31. package/docs/module-datarestructor.Restructor.html +1 -1
  32. package/docs/module-datarestructor.Transform.html +1 -1
  33. package/docs/module-datarestructor.html +1 -1
  34. package/docs/module-described_field.DescribedDataFieldBuilder.html +1 -1
  35. package/docs/module-described_field.DescribedDataFieldGroup.html +1 -1
  36. package/docs/module-described_field.html +1 -1
  37. package/docs/module-template_resolver.Resolver.html +4 -4
  38. package/docs/module-template_resolver.html +1 -1
  39. package/docs/templateResolver.js.html +4 -7
  40. package/package.json +8 -8
  41. package/src/js/templateResolver.js +3 -6
@@ -39,7 +39,7 @@ jobs:
39
39
 
40
40
  steps:
41
41
  - name: Checkout repository
42
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
42
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
43
43
 
44
44
  # Initializes the CodeQL tools for scanning.
45
45
  - name: Initialize CodeQL
@@ -23,7 +23,7 @@ jobs:
23
23
  CI_COMMIT_MESSAGE: Continuous Integration Build Artifacts
24
24
  CI_COMMIT_AUTHOR: ${{ github.event.repository.name }} Continuous Integration
25
25
  steps:
26
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
26
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
27
27
  with:
28
28
  token: ${{ secrets.WORKFLOW_GIT_ACCESS_TOKEN }}
29
29
  - name: Get GIT tags for auto-changelog generation (startingVersion config option)
@@ -40,35 +40,35 @@ jobs:
40
40
 
41
41
  # Archive generated or updated files
42
42
  - name: Archive code coverage results
43
- uses: actions/upload-artifact@v6
43
+ uses: actions/upload-artifact@v7
44
44
  with:
45
45
  name: test-code-coverage-report
46
46
  path: coverage
47
47
  retention-days: 14
48
48
  if-no-files-found: error
49
49
  - name: Archive documentation
50
- uses: actions/upload-artifact@v6
50
+ uses: actions/upload-artifact@v7
51
51
  with:
52
52
  name: documentation
53
53
  path: docs
54
54
  retention-days: 14
55
55
  if-no-files-found: error
56
56
  - name: Archive CHANGELOG.md
57
- uses: actions/upload-artifact@v6
57
+ uses: actions/upload-artifact@v7
58
58
  with:
59
59
  name: changelog
60
60
  path: CHANGELOG.md
61
61
  retention-days: 14
62
62
  if-no-files-found: error
63
63
  - name: Archive build artifacts
64
- uses: actions/upload-artifact@v6
64
+ uses: actions/upload-artifact@v7
65
65
  with:
66
66
  name: distribution-production
67
67
  path: dist
68
68
  retention-days: 14
69
69
  if-no-files-found: error
70
70
  - name: Archive build artifacts
71
- uses: actions/upload-artifact@v6
71
+ uses: actions/upload-artifact@v7
72
72
  with:
73
73
  name: distribution-development
74
74
  path: devdist
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- v24.13.0
1
+ 24.14.1
package/CHANGELOG.md CHANGED
@@ -8,7 +8,156 @@ All notable changes to this project will be documented in this file.
8
8
  - [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
9
9
  - [`auto-changelog`](https://github.com/CookPete/auto-changelog)
10
10
 
11
- ## [v3.4.5](https://github.com/JohT/data-restructor-js/compare/v3.4.4...main) (upcoming)
11
+ ## [v3.4.6](https://github.com/JohT/data-restructor-js/compare/v3.4.5...main) (upcoming)
12
+
13
+ ### Dependency Updates
14
+
15
+ - Update dependency lmdb to v3.5.3 [`#450`](https://github.com/JohT/data-restructor-js/pull/450)
16
+ - Update Node.js to v24.14.1 [`#449`](https://github.com/JohT/data-restructor-js/pull/449)
17
+ - Update dependency eslint to v10.1.0 [`#448`](https://github.com/JohT/data-restructor-js/pull/448)
18
+ - Update dependency lmdb to v3.5.2 [`#447`](https://github.com/JohT/data-restructor-js/pull/447)
19
+ - Update dependency inquirer to v13.3.2 [`#446`](https://github.com/JohT/data-restructor-js/pull/446)
20
+ - Update dependency eslint to v10.0.3 [`#445`](https://github.com/JohT/data-restructor-js/pull/445)
21
+ - Update actions/upload-artifact action to v7 [`#444`](https://github.com/JohT/data-restructor-js/pull/444)
22
+ - Update dependency nyc to v18 [`#443`](https://github.com/JohT/data-restructor-js/pull/443)
23
+ - Update Node.js to v24.14.0 [`#442`](https://github.com/JohT/data-restructor-js/pull/442)
24
+ - Update eslint monorepo to v10 (major) [`#435`](https://github.com/JohT/data-restructor-js/pull/435)
25
+ - Update dependency inquirer to v13.3.0 [`#441`](https://github.com/JohT/data-restructor-js/pull/441)
26
+ - Update dependency jasmine to v6.1.0 [`#440`](https://github.com/JohT/data-restructor-js/pull/440)
27
+ - Update eslint monorepo to v9.39.3 [`#439`](https://github.com/JohT/data-restructor-js/pull/439)
28
+ - Update dependency inquirer to v13.2.5 [`#438`](https://github.com/JohT/data-restructor-js/pull/438)
29
+ - Update dependency inquirer to v13.2.4 [`#437`](https://github.com/JohT/data-restructor-js/pull/437)
30
+ - Update Node.js to v24.13.1 [`#436`](https://github.com/JohT/data-restructor-js/pull/436)
31
+ - Update actions/checkout digest to de0fac2 [`#434`](https://github.com/JohT/data-restructor-js/pull/434)
32
+ - Update dependency parcel to v2.16.4 [`#433`](https://github.com/JohT/data-restructor-js/pull/433)
33
+
34
+ ## [v3.4.5](https://github.com/JohT/data-restructor-js/compare/v3.4.4...v3.4.5) (1 February 2026)
35
+
36
+ ### Changes
37
+
38
+ - Migrate master to main branch [`#432`](https://github.com/JohT/data-restructor-js/pull/432)
39
+ - Pin dependency node to 20.18.3 [`#333`](https://github.com/JohT/data-restructor-js/pull/333)
40
+
41
+ ### Dependency Updates
42
+
43
+ - Update Node.js to v24 [`#407`](https://github.com/JohT/data-restructor-js/pull/407)
44
+ - Update dependency inquirer to v13.2.2 [`#431`](https://github.com/JohT/data-restructor-js/pull/431)
45
+ - Update dependency lmdb to v3.5.1 [`#430`](https://github.com/JohT/data-restructor-js/pull/430)
46
+ - Update dependency lmdb to v3.5.0 [`#429`](https://github.com/JohT/data-restructor-js/pull/429)
47
+ - Update dependency inquirer to v13.2.1 [`#428`](https://github.com/JohT/data-restructor-js/pull/428)
48
+ - Update dependency jasmine to v6 [`#427`](https://github.com/JohT/data-restructor-js/pull/427)
49
+ - Update dependency node to v22.22.0 [`#426`](https://github.com/JohT/data-restructor-js/pull/426)
50
+ - Update dependency inquirer to v13.2.0 [`#425`](https://github.com/JohT/data-restructor-js/pull/425)
51
+ - Update dependency inquirer to v13.1.0 [`#424`](https://github.com/JohT/data-restructor-js/pull/424)
52
+ - Update actions/upload-artifact action to v6 [`#423`](https://github.com/JohT/data-restructor-js/pull/423)
53
+ - Update eslint monorepo to v9.39.2 [`#422`](https://github.com/JohT/data-restructor-js/pull/422)
54
+ - Update dependency parcel to v2.16.3 [`#421`](https://github.com/JohT/data-restructor-js/pull/421)
55
+ - Update dependency inquirer to v13.0.2 [`#420`](https://github.com/JohT/data-restructor-js/pull/420)
56
+ - Update actions/checkout digest to 8e8c483 [`#419`](https://github.com/JohT/data-restructor-js/pull/419)
57
+ - Update dependency jasmine to v5.13.0 [`#418`](https://github.com/JohT/data-restructor-js/pull/418)
58
+ - Update actions/checkout action to v6 [`#417`](https://github.com/JohT/data-restructor-js/pull/417)
59
+ - Update actions/checkout digest to 93cb6ef [`#416`](https://github.com/JohT/data-restructor-js/pull/416)
60
+ - Update dependency inquirer to v13 [`#415`](https://github.com/JohT/data-restructor-js/pull/415)
61
+ - Update dependency inquirer to v12.11.1 [`#414`](https://github.com/JohT/data-restructor-js/pull/414)
62
+ - Update dependency lmdb to v3.4.4 [`#413`](https://github.com/JohT/data-restructor-js/pull/413)
63
+ - Update dependency inquirer to v12.11.0 [`#412`](https://github.com/JohT/data-restructor-js/pull/412)
64
+ - Update dependency parcel to v2.16.1 [`#411`](https://github.com/JohT/data-restructor-js/pull/411)
65
+ - Update eslint monorepo to v9.39.1 [`#410`](https://github.com/JohT/data-restructor-js/pull/410)
66
+ - Update eslint monorepo to v9.39.0 [`#409`](https://github.com/JohT/data-restructor-js/pull/409)
67
+ - Update dependency node to v22.21.1 [`#408`](https://github.com/JohT/data-restructor-js/pull/408)
68
+ - Update actions/upload-artifact action to v5 [`#406`](https://github.com/JohT/data-restructor-js/pull/406)
69
+ - Update dependency node to v22.21.0 [`#405`](https://github.com/JohT/data-restructor-js/pull/405)
70
+ - Update actions/setup-node action to v6 [`#403`](https://github.com/JohT/data-restructor-js/pull/403)
71
+ - Update eslint monorepo to v9.38.0 [`#404`](https://github.com/JohT/data-restructor-js/pull/404)
72
+ - Update dependency inquirer to v12.10.0 [`#402`](https://github.com/JohT/data-restructor-js/pull/402)
73
+ - Update dependency jsdoc to v4.0.5 [`#401`](https://github.com/JohT/data-restructor-js/pull/401)
74
+ - Update github/codeql-action action to v4 [`#400`](https://github.com/JohT/data-restructor-js/pull/400)
75
+ - Update dependency lmdb to v3.4.3 [`#399`](https://github.com/JohT/data-restructor-js/pull/399)
76
+ - Update dependency jasmine to v5.12.0 [`#398`](https://github.com/JohT/data-restructor-js/pull/398)
77
+ - Update eslint monorepo to v9.37.0 [`#397`](https://github.com/JohT/data-restructor-js/pull/397)
78
+ - Update dependency jasmine to v5.11.0 [`#396`](https://github.com/JohT/data-restructor-js/pull/396)
79
+ - Update dependency node to v22.20.0 [`#395`](https://github.com/JohT/data-restructor-js/pull/395)
80
+ - Update eslint monorepo to v9.36.0 [`#394`](https://github.com/JohT/data-restructor-js/pull/394)
81
+ - Update dependency parcel to v2.16.0 [`#393`](https://github.com/JohT/data-restructor-js/pull/393)
82
+ - Update dependency inquirer to v12.9.6 [`#392`](https://github.com/JohT/data-restructor-js/pull/392)
83
+ - Update eslint monorepo to v9.35.0 [`#391`](https://github.com/JohT/data-restructor-js/pull/391)
84
+ - Update actions/setup-node action to v5 [`#390`](https://github.com/JohT/data-restructor-js/pull/390)
85
+ - Update dependency jasmine to v5.10.0 [`#388`](https://github.com/JohT/data-restructor-js/pull/388)
86
+ - Update dependency node to v22.19.0 [`#389`](https://github.com/JohT/data-restructor-js/pull/389)
87
+ - Update dependency inquirer to v12.9.4 [`#387`](https://github.com/JohT/data-restructor-js/pull/387)
88
+ - Update eslint monorepo to v9.34.0 [`#386`](https://github.com/JohT/data-restructor-js/pull/386)
89
+ - Update dependency inquirer to v12.9.3 [`#385`](https://github.com/JohT/data-restructor-js/pull/385)
90
+ - Update dependency inquirer to v12.9.2 [`#384`](https://github.com/JohT/data-restructor-js/pull/384)
91
+ - Update actions/checkout action to v5 [`#383`](https://github.com/JohT/data-restructor-js/pull/383)
92
+ - Update actions/checkout digest to 08eba0b [`#382`](https://github.com/JohT/data-restructor-js/pull/382)
93
+ - Update dependency inquirer to v12.9.1 [`#381`](https://github.com/JohT/data-restructor-js/pull/381)
94
+ - Update eslint monorepo to v9.33.0 (minor) [`#380`](https://github.com/JohT/data-restructor-js/pull/380)
95
+ - Update dependency node to v22.18.0 [`#379`](https://github.com/JohT/data-restructor-js/pull/379)
96
+ - Update dependency lmdb to v3.4.2 [`#378`](https://github.com/JohT/data-restructor-js/pull/378)
97
+ - Update dependency inquirer to v12.9.0 [`#377`](https://github.com/JohT/data-restructor-js/pull/377)
98
+ - Update eslint monorepo to v9.32.0 [`#376`](https://github.com/JohT/data-restructor-js/pull/376)
99
+ - Update dependency inquirer to v12.8.2 [`#375`](https://github.com/JohT/data-restructor-js/pull/375)
100
+ - Update dependency inquirer to v12.8.0 [`#374`](https://github.com/JohT/data-restructor-js/pull/374)
101
+ - Update dependency jasmine to v5.9.0 [`#373`](https://github.com/JohT/data-restructor-js/pull/373)
102
+ - Update dependency node to v22.17.1 [`#372`](https://github.com/JohT/data-restructor-js/pull/372)
103
+ - Update eslint monorepo to v9.31.0 [`#371`](https://github.com/JohT/data-restructor-js/pull/371)
104
+ - Update dependency inquirer to v12.7.0 [`#370`](https://github.com/JohT/data-restructor-js/pull/370)
105
+ - Update eslint monorepo to v9.30.1 [`#369`](https://github.com/JohT/data-restructor-js/pull/369)
106
+ - Update dependency lmdb to v3.4.1 [`#368`](https://github.com/JohT/data-restructor-js/pull/368)
107
+ - Update eslint monorepo to v9.30.0 [`#367`](https://github.com/JohT/data-restructor-js/pull/367)
108
+ - Update dependency node to v22.17.0 [`#366`](https://github.com/JohT/data-restructor-js/pull/366)
109
+ - Update dependency parcel to v2.15.4 [`#365`](https://github.com/JohT/data-restructor-js/pull/365)
110
+ - Update eslint monorepo to v9.29.0 [`#364`](https://github.com/JohT/data-restructor-js/pull/364)
111
+ - Update dependency jasmine to v5.8.0 [`#363`](https://github.com/JohT/data-restructor-js/pull/363)
112
+ - Update eslint monorepo to v9.28.0 [`#362`](https://github.com/JohT/data-restructor-js/pull/362)
113
+ - Update dependency lmdb to v3.4.0 [`#361`](https://github.com/JohT/data-restructor-js/pull/361)
114
+ - Update dependency inquirer to v12.6.3 [`#360`](https://github.com/JohT/data-restructor-js/pull/360)
115
+ - Update dependency parcel to v2.15.2 [`#359`](https://github.com/JohT/data-restructor-js/pull/359)
116
+ - Update dependency inquirer to v12.6.2 [`#358`](https://github.com/JohT/data-restructor-js/pull/358)
117
+ - Update dependency node to v22.16.0 [`#357`](https://github.com/JohT/data-restructor-js/pull/357)
118
+ - Update eslint monorepo to v9.27.0 [`#356`](https://github.com/JohT/data-restructor-js/pull/356)
119
+ - Update dependency parcel to v2.15.1 [`#355`](https://github.com/JohT/data-restructor-js/pull/355)
120
+ - Update dependency node to v22.15.1 [`#354`](https://github.com/JohT/data-restructor-js/pull/354)
121
+ - Update dependency parcel to v2.15.0 [`#353`](https://github.com/JohT/data-restructor-js/pull/353)
122
+ - Update dependency inquirer to v12.6.1 [`#352`](https://github.com/JohT/data-restructor-js/pull/352)
123
+ - Update dependency lmdb to v3.3.0 [`#351`](https://github.com/JohT/data-restructor-js/pull/351)
124
+ - Update eslint monorepo to v9.26.0 [`#350`](https://github.com/JohT/data-restructor-js/pull/350)
125
+ - Update dependency jasmine to v5.7.1 [`#349`](https://github.com/JohT/data-restructor-js/pull/349)
126
+ - Update dependency jasmine to v5.7.0 [`#348`](https://github.com/JohT/data-restructor-js/pull/348)
127
+ - Update dependency inquirer to v12.6.0 [`#347`](https://github.com/JohT/data-restructor-js/pull/347)
128
+ - Update dependency node to v22.15.0 [`#346`](https://github.com/JohT/data-restructor-js/pull/346)
129
+ - Update eslint monorepo to v9.25.1 [`#345`](https://github.com/JohT/data-restructor-js/pull/345)
130
+ - Update eslint monorepo to v9.25.0 [`#344`](https://github.com/JohT/data-restructor-js/pull/344)
131
+ - Update eslint monorepo to v9.24.0 [`#343`](https://github.com/JohT/data-restructor-js/pull/343)
132
+ - Update dependency inquirer to v12.5.2 [`#342`](https://github.com/JohT/data-restructor-js/pull/342)
133
+ - Update dependency parcel to v2.14.4 [`#341`](https://github.com/JohT/data-restructor-js/pull/341)
134
+ - Update dependency parcel to v2.14.3 [`#340`](https://github.com/JohT/data-restructor-js/pull/340)
135
+ - Update dependency parcel to v2.14.2 [`#339`](https://github.com/JohT/data-restructor-js/pull/339)
136
+ - Update eslint monorepo to v9.23.0 [`#338`](https://github.com/JohT/data-restructor-js/pull/338)
137
+ - Update dependency parcel to v2.14.1 [`#337`](https://github.com/JohT/data-restructor-js/pull/337)
138
+ - Update dependency parcel to v2.14.0 [`#336`](https://github.com/JohT/data-restructor-js/pull/336)
139
+ - Update dependency inquirer to v12.5.0 [`#335`](https://github.com/JohT/data-restructor-js/pull/335)
140
+ - Update dependency node to v22 [`#334`](https://github.com/JohT/data-restructor-js/pull/334)
141
+ - Update dependency inquirer to v12.4.3 [`#332`](https://github.com/JohT/data-restructor-js/pull/332)
142
+ - Update eslint monorepo to v9.22.0 [`#331`](https://github.com/JohT/data-restructor-js/pull/331)
143
+ - Update eslint monorepo to v9.21.0 [`#330`](https://github.com/JohT/data-restructor-js/pull/330)
144
+ - Update dependency inquirer to v12.4.2 [`#329`](https://github.com/JohT/data-restructor-js/pull/329)
145
+ - Update dependency eslint to v9.20.1 [`#328`](https://github.com/JohT/data-restructor-js/pull/328)
146
+ - Update dependency lmdb to v3.2.6 [`#327`](https://github.com/JohT/data-restructor-js/pull/327)
147
+ - Update dependency jasmine to v5.6.0 [`#326`](https://github.com/JohT/data-restructor-js/pull/326)
148
+ - Update eslint monorepo to v9.20.0 [`#325`](https://github.com/JohT/data-restructor-js/pull/325)
149
+ - Update dependency lmdb to v3.2.5 [`#324`](https://github.com/JohT/data-restructor-js/pull/324)
150
+ - Update dependency lmdb to v3.2.4 [`#323`](https://github.com/JohT/data-restructor-js/pull/323)
151
+ - Update dependency lmdb to v3.2.3 [`#322`](https://github.com/JohT/data-restructor-js/pull/322)
152
+ - Update dependency inquirer to v12.4.1 [`#321`](https://github.com/JohT/data-restructor-js/pull/321)
153
+ - Update dependency inquirer to v12.3.3 [`#320`](https://github.com/JohT/data-restructor-js/pull/320)
154
+ - Update eslint monorepo to v9.19.0 [`#319`](https://github.com/JohT/data-restructor-js/pull/319)
155
+ - Update dependency inquirer to v12.3.2 [`#318`](https://github.com/JohT/data-restructor-js/pull/318)
156
+ - Update dependency inquirer to v12.3.1 [`#317`](https://github.com/JohT/data-restructor-js/pull/317)
157
+ - Update eslint monorepo to v9.18.0 [`#316`](https://github.com/JohT/data-restructor-js/pull/316)
158
+ - Update dependency lmdb to v3.2.2 [`#315`](https://github.com/JohT/data-restructor-js/pull/315)
159
+ - Update dependency lmdb to v3.2.1 [`#314`](https://github.com/JohT/data-restructor-js/pull/314)
160
+ - Update dependency inquirer to v12.3.0 [`#313`](https://github.com/JohT/data-restructor-js/pull/313)
12
161
 
13
162
  ## [v3.4.4](https://github.com/JohT/data-restructor-js/compare/v3.4.3...v3.4.4) (19 December 2024)
14
163
 
@@ -1,5 +1,5 @@
1
- {"total": {"lines":{"total":461,"covered":455,"skipped":0,"pct":98.69},"statements":{"total":470,"covered":462,"skipped":0,"pct":98.29},"functions":{"total":108,"covered":106,"skipped":0,"pct":98.14},"branches":{"total":167,"covered":158,"skipped":0,"pct":94.61},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":"Unknown"}}
2
- ,"/home/runner/work/data-restructor-js/data-restructor-js/src/js/datarestructor.js": {"lines":{"total":340,"covered":335,"skipped":0,"pct":98.52},"functions":{"total":76,"covered":75,"skipped":0,"pct":98.68},"statements":{"total":349,"covered":342,"skipped":0,"pct":97.99},"branches":{"total":128,"covered":119,"skipped":0,"pct":92.96}}
3
- ,"/home/runner/work/data-restructor-js/data-restructor-js/src/js/describedfield.js": {"lines":{"total":70,"covered":69,"skipped":0,"pct":98.57},"functions":{"total":22,"covered":21,"skipped":0,"pct":95.45},"statements":{"total":70,"covered":69,"skipped":0,"pct":98.57},"branches":{"total":21,"covered":21,"skipped":0,"pct":100}}
4
- ,"/home/runner/work/data-restructor-js/data-restructor-js/src/js/templateResolver.js": {"lines":{"total":51,"covered":51,"skipped":0,"pct":100},"functions":{"total":10,"covered":10,"skipped":0,"pct":100},"statements":{"total":51,"covered":51,"skipped":0,"pct":100},"branches":{"total":18,"covered":18,"skipped":0,"pct":100}}
1
+ {"total": {"lines":{"total":458,"covered":452,"skipped":0,"pct":98.68},"statements":{"total":468,"covered":460,"skipped":0,"pct":98.29},"functions":{"total":108,"covered":106,"skipped":0,"pct":98.14},"branches":{"total":167,"covered":158,"skipped":0,"pct":94.61},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":"Unknown"}}
2
+ ,"/Users/johnny/Repositories/git/data-restructor-js/src/js/datarestructor.js": {"lines":{"total":340,"covered":335,"skipped":0,"pct":98.52},"functions":{"total":76,"covered":75,"skipped":0,"pct":98.68},"statements":{"total":349,"covered":342,"skipped":0,"pct":97.99},"branches":{"total":128,"covered":119,"skipped":0,"pct":92.96}}
3
+ ,"/Users/johnny/Repositories/git/data-restructor-js/src/js/describedfield.js": {"lines":{"total":70,"covered":69,"skipped":0,"pct":98.57},"functions":{"total":22,"covered":21,"skipped":0,"pct":95.45},"statements":{"total":70,"covered":69,"skipped":0,"pct":98.57},"branches":{"total":21,"covered":21,"skipped":0,"pct":100}}
4
+ ,"/Users/johnny/Repositories/git/data-restructor-js/src/js/templateResolver.js": {"lines":{"total":48,"covered":48,"skipped":0,"pct":100},"functions":{"total":10,"covered":10,"skipped":0,"pct":100},"statements":{"total":49,"covered":49,"skipped":0,"pct":100},"branches":{"total":18,"covered":18,"skipped":0,"pct":100}}
5
5
  }
@@ -3778,7 +3778,7 @@ datarestructor.Restructor.processJsonUsingDescriptions = function(jsonData, desc
3778
3778
  <div class='footer quiet pad2 space-top1 center small'>
3779
3779
  Code coverage generated by
3780
3780
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
3781
- at Sun Feb 01 2026 09:22:06 GMT+0000 (Coordinated Universal Time)
3781
+ at Thu Apr 02 2026 07:58:01 GMT+0200 (Central European Summer Time)
3782
3782
  </div>
3783
3783
  </div>
3784
3784
  <script src="prettify.js"></script>
@@ -940,7 +940,7 @@ described_field.DescribedDataFieldGroup = (function () {
940
940
  <div class='footer quiet pad2 space-top1 center small'>
941
941
  Code coverage generated by
942
942
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
943
- at Sun Feb 01 2026 09:22:06 GMT+0000 (Coordinated Universal Time)
943
+ at Thu Apr 02 2026 07:58:01 GMT+0200 (Central European Summer Time)
944
944
  </div>
945
945
  </div>
946
946
  <script src="prettify.js"></script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">98.29% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>462/470</span>
28
+ <span class='fraction'>460/468</span>
29
29
  </div>
30
30
 
31
31
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">98.69% </span>
47
+ <span class="strong">98.68% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>455/461</span>
49
+ <span class='fraction'>452/458</span>
50
50
  </div>
51
51
 
52
52
 
@@ -108,13 +108,13 @@
108
108
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
109
109
  </td>
110
110
  <td data-value="100" class="pct high">100%</td>
111
- <td data-value="51" class="abs high">51/51</td>
111
+ <td data-value="49" class="abs high">49/49</td>
112
112
  <td data-value="100" class="pct high">100%</td>
113
113
  <td data-value="18" class="abs high">18/18</td>
114
114
  <td data-value="100" class="pct high">100%</td>
115
115
  <td data-value="10" class="abs high">10/10</td>
116
116
  <td data-value="100" class="pct high">100%</td>
117
- <td data-value="51" class="abs high">51/51</td>
117
+ <td data-value="48" class="abs high">48/48</td>
118
118
  </tr>
119
119
 
120
120
  </tbody>
@@ -125,7 +125,7 @@
125
125
  <div class='footer quiet pad2 space-top1 center small'>
126
126
  Code coverage generated by
127
127
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
128
- at Sun Feb 01 2026 09:22:06 GMT+0000 (Coordinated Universal Time)
128
+ at Thu Apr 02 2026 07:58:01 GMT+0200 (Central European Summer Time)
129
129
  </div>
130
130
  </div>
131
131
  <script src="prettify.js"></script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>51/51</span>
28
+ <span class='fraction'>49/49</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>51/51</span>
49
+ <span class='fraction'>48/48</span>
50
50
  </div>
51
51
 
52
52
 
@@ -222,10 +222,7 @@
222
222
  <a name='L163'></a><a href='#L163'>163</a>
223
223
  <a name='L164'></a><a href='#L164'>164</a>
224
224
  <a name='L165'></a><a href='#L165'>165</a>
225
- <a name='L166'></a><a href='#L166'>166</a>
226
- <a name='L167'></a><a href='#L167'>167</a>
227
- <a name='L168'></a><a href='#L168'>168</a>
228
- <a name='L169'></a><a href='#L169'>169</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
225
+ <a name='L166'></a><a href='#L166'>166</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
229
226
  <span class="cline-any cline-neutral">&nbsp;</span>
230
227
  <span class="cline-any cline-neutral">&nbsp;</span>
231
228
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -312,9 +309,6 @@
312
309
  <span class="cline-any cline-yes">71858x</span>
313
310
  <span class="cline-any cline-yes">71858x</span>
314
311
  <span class="cline-any cline-yes">71858x</span>
315
- <span class="cline-any cline-yes">71858x</span>
316
- <span class="cline-any cline-yes">71858x</span>
317
- <span class="cline-any cline-yes">71858x</span>
318
312
  <span class="cline-any cline-yes">1730706x</span>
319
313
  <span class="cline-any cline-yes">1730706x</span>
320
314
  <span class="cline-any cline-yes">1730706x</span>
@@ -479,12 +473,9 @@ template_resolver.Resolver = (function () {
479
473
  this.replaceResolvableFields = function (stringContainingVariables, resolvableFields) {
480
474
  var replaced = stringContainingVariables;
481
475
  var propertyNames = Object.keys(resolvableFields);
482
- var propertyIndex = 0;
483
- var propertyName = "";
484
- var propertyValue = "";
485
- for (propertyIndex = 0; propertyIndex &lt; propertyNames.length; propertyIndex += 1) {
486
- propertyName = propertyNames[propertyIndex];
487
- propertyValue = resolvableFields[propertyName];
476
+ for (var propertyIndex = 0; propertyIndex &lt; propertyNames.length; propertyIndex += 1) {
477
+ var propertyName = propertyNames[propertyIndex];
478
+ var propertyValue = resolvableFields[propertyName];
488
479
  replaced = replaced.replace("{{" + propertyName + "}}", propertyValue);
489
480
  }
490
481
  return replaced;
@@ -568,7 +559,7 @@ template_resolver.Resolver = (function () {
568
559
  <div class='footer quiet pad2 space-top1 center small'>
569
560
  Code coverage generated by
570
561
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
571
- at Sun Feb 01 2026 09:22:06 GMT+0000 (Coordinated Universal Time)
562
+ at Thu Apr 02 2026 07:58:01 GMT+0200 (Central European Summer Time)
572
563
  </div>
573
564
  </div>
574
565
  <script src="prettify.js"></script>
@@ -157,12 +157,9 @@ template_resolver.Resolver = (function () {
157
157
  this.replaceResolvableFields = function (stringContainingVariables, resolvableFields) {
158
158
  var replaced = stringContainingVariables;
159
159
  var propertyNames = Object.keys(resolvableFields);
160
- var propertyIndex = 0;
161
- var propertyName = "";
162
- var propertyValue = "";
163
- for (propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1) {
164
- propertyName = propertyNames[propertyIndex];
165
- propertyValue = resolvableFields[propertyName];
160
+ for (var propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1) {
161
+ var propertyName = propertyNames[propertyIndex];
162
+ var propertyValue = resolvableFields[propertyName];
166
163
  replaced = replaced.replace("{{" + propertyName + "}}", propertyValue);
167
164
  }
168
165
  return replaced;
@@ -228,12 +228,9 @@ template_resolver.Resolver = (function () {
228
228
  this.replaceResolvableFields = function (stringContainingVariables, resolvableFields) {
229
229
  var replaced = stringContainingVariables;
230
230
  var propertyNames = Object.keys(resolvableFields);
231
- var propertyIndex = 0;
232
- var propertyName = "";
233
- var propertyValue = "";
234
- for (propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1) {
235
- propertyName = propertyNames[propertyIndex];
236
- propertyValue = resolvableFields[propertyName];
231
+ for (var propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1) {
232
+ var propertyName = propertyNames[propertyIndex];
233
+ var propertyValue = resolvableFields[propertyName];
237
234
  replaced = replaced.replace("{{" + propertyName + "}}", propertyValue);
238
235
  }
239
236
  return replaced;
@@ -1449,12 +1449,9 @@ template_resolver.Resolver = function() {
1449
1449
  */ this.replaceResolvableFields = function(stringContainingVariables, resolvableFields) {
1450
1450
  var replaced = stringContainingVariables;
1451
1451
  var propertyNames = Object.keys(resolvableFields);
1452
- var propertyIndex = 0;
1453
- var propertyName = "";
1454
- var propertyValue = "";
1455
- for(propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1){
1456
- propertyName = propertyNames[propertyIndex];
1457
- propertyValue = resolvableFields[propertyName];
1452
+ for(var propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1){
1453
+ var propertyName = propertyNames[propertyIndex];
1454
+ var propertyValue = resolvableFields[propertyName];
1458
1455
  replaced = replaced.replace("{{" + propertyName + "}}", propertyValue);
1459
1456
  }
1460
1457
  return replaced;
@@ -1380,12 +1380,9 @@ template_resolver.Resolver = function() {
1380
1380
  */ this.replaceResolvableFields = function(stringContainingVariables, resolvableFields) {
1381
1381
  var replaced = stringContainingVariables;
1382
1382
  var propertyNames = Object.keys(resolvableFields);
1383
- var propertyIndex = 0;
1384
- var propertyName = "";
1385
- var propertyValue = "";
1386
- for(propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1){
1387
- propertyName = propertyNames[propertyIndex];
1388
- propertyValue = resolvableFields[propertyName];
1383
+ for(var propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1){
1384
+ var propertyName = propertyNames[propertyIndex];
1385
+ var propertyValue = resolvableFields[propertyName];
1389
1386
  replaced = replaced.replace("{{" + propertyName + "}}", propertyValue);
1390
1387
  }
1391
1388
  return replaced;
@@ -316,12 +316,9 @@ template_resolver.Resolver = function() {
316
316
  */ this.replaceResolvableFields = function(stringContainingVariables, resolvableFields) {
317
317
  var replaced = stringContainingVariables;
318
318
  var propertyNames = Object.keys(resolvableFields);
319
- var propertyIndex = 0;
320
- var propertyName = "";
321
- var propertyValue = "";
322
- for(propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1){
323
- propertyName = propertyNames[propertyIndex];
324
- propertyValue = resolvableFields[propertyName];
319
+ for(var propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1){
320
+ var propertyName = propertyNames[propertyIndex];
321
+ var propertyValue = resolvableFields[propertyName];
325
322
  replaced = replaced.replace("{{" + propertyName + "}}", propertyValue);
326
323
  }
327
324
  return replaced;
@@ -280,12 +280,9 @@ template_resolver.Resolver = function() {
280
280
  */ this.replaceResolvableFields = function(stringContainingVariables, resolvableFields) {
281
281
  var replaced = stringContainingVariables;
282
282
  var propertyNames = Object.keys(resolvableFields);
283
- var propertyIndex = 0;
284
- var propertyName = "";
285
- var propertyValue = "";
286
- for(propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1){
287
- propertyName = propertyNames[propertyIndex];
288
- propertyValue = resolvableFields[propertyName];
283
+ for(var propertyIndex = 0; propertyIndex < propertyNames.length; propertyIndex += 1){
284
+ var propertyName = propertyNames[propertyIndex];
285
+ var propertyValue = resolvableFields[propertyName];
289
286
  replaced = replaced.replace("{{" + propertyName + "}}", propertyValue);
290
287
  }
291
288
  return replaced;
@@ -1 +1 @@
1
- var require=require||function(){};"use strict";(internal_object_tools=(module=(module=module||{})||{}).exports={}).flattenToArray=function(e,t){var r=[];return("number"!=typeof t||t<1)&&(t=20),function e(i,n,o){if(!(o>t||"function"==typeof i))if(Object(i)!==i)r.push({name:n,value:i});else if(Array.isArray(i)){var a,s=i.length;for(a=0;a<s;a+=1)e(i[a],n+"["+a+"]",o+1);0===s&&(r[n]=[],r.push({name:n,value:""}))}else{var u,l=!0;for(u in i)l=!1,e(i[u],n?n+"."+u:u,o+1);l&&n&&r.push({name:n,value:""})}}(e,"",0),r};var module=templateResolverInternalCreateIfNotExists(module);function templateResolverInternalCreateIfNotExists(e){return e||{}}(template_resolver=module.exports={}).internalCreateIfNotExists=templateResolverInternalCreateIfNotExists;var internal_object_tools=internal_object_tools||require("../../lib/js/flattenToArray");template_resolver.Resolver=function(){var e=new RegExp("\\[\\d+\\]","gi");function t(t){var r=t.lastIndexOf("."),i=t;r>0&&(i=t.substr(r+1));var n="";return r>0&&(n=t.substr(0,r+1)),{group:n,groupWithoutArrayIndices:n.replace(e,""),name:i}}function r(e,t,r){var i,n;for(i=0;i<e.length;i+=1)n=e[i],"function"==typeof r&&r(n.name)&&(t[n.name]=n.value);return t}return function(e){this.sourceDataObject=e,this.resolveTemplate=function(e){return this.replaceResolvableFields(e,function(e){var r,i,n,o,a=Object.keys(e);for(r=0;r<a.length;r+=1)i=a[r],o=e[i],"fieldName"===(n=t(i)).name&&"fieldName"!==o&&(e[n.groupWithoutArrayIndices+o]=e[n.group+"value"]);return e}(this.resolvableFieldsOfAll(this.sourceDataObject)))},this.resolvableFieldsOfAll=function(){var e,t={},i=function(e){return 0!==e.indexOf("_")&&e.indexOf("._")<0};for(e=0;e<arguments.length;e+=1)r(internal_object_tools.flattenToArray(arguments[e],3),t,i);return t},this.replaceResolvableFields=function(e,t){var r=e,i=Object.keys(t),n=0,o="",a="";for(n=0;n<i.length;n+=1)a=t[o=i[n]],r=r.replace("{{"+o+"}}",a);return r}}}();module=describedFieldInternalCreateIfNotExists(module);function describedFieldInternalCreateIfNotExists(e){return e||{}}function datarestructorInternalCreateIfNotExists(e){return e||{}}(described_field=module.exports={}).internalCreateIfNotExists=describedFieldInternalCreateIfNotExists,described_field.DescribedDataFieldBuilder=function(){function e(e,t){return function(e){return"string"==typeof e&&null!==e&&""!==e}(e)?e:t}function t(e,t){return null==e?t:e}return function(){this.describedField={category:"",type:"",abbreviation:"",image:"",index:[],groupNames:[],displayName:"",fieldName:"",value:""},this.fromDescribedDataField=function(e){return this.category(e.category),this.type(e.type),this.abbreviation(e.abbreviation),this.image(e.image),this.index(e.index),this.groupNames(e.groupNames),this.displayName(e.displayName),this.fieldName(e.fieldName),this.value(e.value),this},this.category=function(t){return this.describedField.category=e(t,""),this},this.type=function(t){return this.describedField.type=e(t,""),this},this.abbreviation=function(t){return this.describedField.abbreviation=e(t,""),this},this.image=function(t){return this.describedField.image=e(t,""),this},this.index=function(e){return this.describedField.index=t(e,[]),this},this.groupNames=function(e){return this.describedField.groupNames=t(e,[]),this},this.displayName=function(t){return this.describedField.displayName=e(t,""),this},this.fieldName=function(t){return this.describedField.fieldName=e(t,""),this},this.value=function(e){return this.describedField.value=e,this},this.build=function(){return this.describedField}}}(),described_field.copyWithoutGroups=function(e){return(new described_field.DescribedDataFieldBuilder).fromDescribedDataField(e).groupNames([]).build()},described_field.DescribedDataFieldGroup=function(){return function(e){this.dataField=e,this.addGroupEntry=function(e,t){return this.addGroupEntries(e,[t]),this},this.addGroupEntries=function(e,t){if(!e||0===e.length)return this;if(!t||0===t.length)return this;var r,i;for(void 0===this.dataField[e]&&(this.dataField.groupNames.push(e),this.dataField[e]=[]),r=0;r<t.length;r+=1)i=t[r],this.dataField[e].push(i);return this}}}();var datarestructor=(module=datarestructorInternalCreateIfNotExists(module)).exports={};datarestructor.internalCreateIfNotExists=datarestructorInternalCreateIfNotExists;internal_object_tools=internal_object_tools||require("../../lib/js/flattenToArray");var template_resolver=template_resolver||require("../../src/js/templateResolver"),described_field=described_field||require("../../src/js/describedfield");datarestructor.PropertyStructureDescriptionBuilder=function(){function e(e,i){if(o(e))return function(){return e};if(i.propertyPatternTemplateMode){var n=i.propertyPattern;return a=n,function(e){var i=r(a,"{{fieldName}}"),n=i.exec(e);return n&&""!=n[1]?n[1]:t(e)}}var a;return function(e){return t(e)}}function t(e){var t=new RegExp("(\\w+)$","gi"),r=e.match(t);return null!=r?r[0]:e}function r(e,t){var r=i(e);return"string"==typeof t&&(t=i(t)),r="^"+(r=r.replace(t,"([-\\w]+)")),new RegExp(r,"i")}function i(e){var t=new RegExp("([^-\\w])","gi");return e.replace(t,"\\$1")}function n(e,t){return o(e)?e:t}function o(e){return"string"==typeof e&&null!=e&&""!=e}return function(){this.description={type:"",category:"",abbreviation:"",image:"",propertyPatternTemplateMode:!1,propertyPattern:"",indexStartsWith:"",groupName:"group",groupPattern:"",groupDestinationPattern:"",groupDestinationName:null,deduplicationPattern:"",getDisplayNameForPropertyName:null,getFieldNameForPropertyName:null,matchesPropertyName:null},this.type=function(e){return this.description.type=n(e,""),this},this.category=function(e){return this.description.category=n(e,""),this},this.abbreviation=function(e){return this.description.abbreviation=n(e,""),this},this.image=function(e){return this.description.image=n(e,""),this},this.propertyPatternEqualMode=function(){return this.description.propertyPatternTemplateMode=!1,this},this.propertyPatternTemplateMode=function(){return this.description.propertyPatternTemplateMode=!0,this},this.propertyPattern=function(e){return this.description.propertyPattern=n(e,""),this},this.indexStartsWith=function(e){return this.description.indexStartsWith=n(e,""),this},this.displayPropertyName=function(t){return this.description.getDisplayNameForPropertyName=e(t,this.description),o(t)?this:(this.description.getDisplayNameForPropertyName=(r=this.description.getDisplayNameForPropertyName,function(e){var t=r(e);return(t=null!=t?t:"").replace("_comma_separated_values","")}),this.description.getDisplayNameForPropertyName=function(e){return function(t){return(r=e(t)).length>1?r.charAt(0).toUpperCase()+r.slice(1):r;var r}}(this.description.getDisplayNameForPropertyName),this);var r},this.fieldName=function(t){return this.description.getFieldNameForPropertyName=e(t,this.description),this},this.groupName=function(e){return this.description.groupName=n(e,""),this},this.groupPattern=function(e){return this.description.groupPattern=n(e,""),this},this.groupDestinationPattern=function(e){return this.description.groupDestinationPattern=n(e,""),this},this.groupDestinationName=function(e){return this.description.groupDestinationName=n(e,this.description.groupName),this},this.deduplicationPattern=function(e){return this.description.deduplicationPattern=n(e,""),this},this.build=function(){return this.description.matchesPropertyName=(e=this.description,o(t=e.propertyPattern)?e.propertyPatternTemplateMode?function(e){return null!=(i=t,n=new RegExp("\\\\\\{\\\\\\{[-\\w]+\\\\\\}\\\\\\}","gi"),r(i,n)).exec(e);var i,n}:function(e){return e===t}:function(){return!1}),null==this.description.getDisplayNameForPropertyName&&this.displayPropertyName(""),null==this.description.getFieldNameForPropertyName&&this.fieldName(""),null==this.description.groupDestinationName&&this.groupDestinationName(""),this.description;var e,t}}}(),datarestructor.DescribedEntryCreator=function(){var e=new RegExp("\\[\\d+\\]","gi");return function(t,r){var i,n,o=(i=t.name,n=new RegExp("\\[(\\d+)\\]","gi"),function(e,t){var r,i="",n=[];do{(r=t.exec(e))&&(i.length>0&&(i+="."),i+=r[1],n.push(parseInt(r[1])))}while(r);return{pointDelimited:i,numberArray:n}}(i,n)),a=t.name.replace(e,""),s=new template_resolver.Resolver(this);this.category=r.category,this.type=r.type,this.abbreviation=r.abbreviation,this.image=r.image,this.index=o.numberArray,this.displayName=r.getDisplayNameForPropertyName(a),this.fieldName=r.getFieldNameForPropertyName(a),this.value=t.value,this.groupNames=[],this._isMatchingIndex=0==o.pointDelimited.indexOf(r.indexStartsWith),this._description=r,this._identifier={index:o.pointDelimited,propertyNameWithArrayIndices:t.name,propertyNameWithoutArrayIndices:a,groupId:"",groupDestinationId:"",deduplicationId:""},this._identifier.groupId=s.replaceResolvableFields(r.groupPattern,s.resolvableFieldsOfAll(this,this._description,this._identifier)),this._identifier.groupDestinationId=s.replaceResolvableFields(r.groupDestinationPattern,s.resolvableFieldsOfAll(this,this._description,this._identifier)),this._identifier.deduplicationId=s.replaceResolvableFields(r.deduplicationPattern,s.resolvableFieldsOfAll(this,this._description,this._identifier)),this.addGroupEntry=function(e,t){this.addGroupEntries(e,[t])},this.addGroupEntries=function(e,t){var r,i;for(this[e]||(this.groupNames.push(e),this[e]=[]),r=0;r<t.length;r+=1)i=t[r],this[e].push(i)}}}(),datarestructor.Transform=function(){function e(e,t,r){var i,n,o,a=function(e,t){for(var r=new Object,i=0;i<e.length;i++){var n=e[i];r[t(n)]=n}return r}(t,r),s=[];for(i=0;i<e.length;i+=1)null!=(o=r(n=e[i]))&&""!==o&&null!=a[o]||s.push(n);for(i=0;i<t.length;i+=1)n=t[i],s.push(n);return s}function t(t,r){if(null==t||0==t.length)return r;return e(t,r,function(e){return e._identifier.deduplicationId})}function r(e,t){var r=new RegExp("\\[\\d+\\]","gi"),i=[];return e.filter(function(e){var n=e.name.replace(r,"");if(t.matchesPropertyName(n)){var o=new datarestructor.DescribedEntryCreator(e,t);o._isMatchingIndex&&i.push(o)}}),i}function i(e,t){var r=(new described_field.DescribedDataFieldBuilder).category(e.category).type(e.type).abbreviation(e.abbreviation).image(e.image).index(e.index).displayName(e.displayName).fieldName(e.fieldName).value(e.value).build();if(t.recursionDepth>t.config.maxRecursionDepth)return r;var o=null,a="",s=new described_field.DescribedDataFieldGroup(r);return function(e,t){var r,i,n,o;for(r=0;r<e.groupNames.length;r+=1)for(n=e.groupNames[r],i=0;i<e[n].length;i+=1)o=e[n][i],t(n,o,e[n])}(e,function(e,r,u){t.groupToSkip!==e?(a="",t.recursionDepth>=t.config.removeDuplicationAboveRecursionDepth&&(a=function(e,t,r){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(var i=0;i<e.length;++i)if(!r(e[i],t[i]))return!1;return!0}(r[e],u,n)?e:""),o={recursionDepth:t.recursionDepth+1,config:t.config,groupToSkip:a},s.addGroupEntry(e,i(r,o))):t.config.debugMode&&console.log("Removed duplicate group "+e+" at recursion depth "+t.recursionDepth)}),r}function n(e,t){return o(e.category)===o(t.category)&&o(e.type)===o(t.type)&&e.fieldName===t.fieldName&&e.value===t.value}function o(e){return function(e,t){if(void 0===e||!e)return t;return e}(e,"")}return function(e){this.descriptions=e,this.config={debugMode:!1,maxRecursionDepth:8,removeDuplicationAboveRecursionDepth:1},this.enableDebugMode=function(){return this.config.debugMode=!0,this},this.setMaxRecursionDepth=function(e){if("number"!=typeof e||e<0)throw"Invalid max recursion depth value: "+e;return this.config.maxRecursionDepth=e,this},this.setRemoveDuplicationAboveRecursionDepth=function(e){if("number"!=typeof e||e<0)throw"Invalid remove duplications above recursion depth value: "+e;return this.config.removeDuplicationAboveRecursionDepth=e,this},this.processJson=function(e){return function(e,n,o){var a,s,u,l,d,c=internal_object_tools.flattenToArray(e);a=c,s=new RegExp("\\[\\d+\\]$","gi"),u=[],l="",d="",a.filter(function(e){if(!e.name.match(s))return""!==l&&(u.push({name:l+"_comma_separated_values",value:d}),l=""),void u.push(e);var t=e.name.replace(s,"");l===t?d+=", "+e.value:(""!==l&&(u.push({name:l+"_comma_separated_values",value:d}),l=""),l=t,d=e.value),u.push(e)}),c=u,o.debugMode&&(console.log("flattened data with array values:"),console.log(c));var p,h,f,g=[];for(p=0;p<n.length;p+=1)h=n[p],f=r(c,h),g=t(g,f);return c=g,o.debugMode&&(console.log("describedData data:"),console.log(c)),c=function(e){return function(e,t,r){for(var i=new Object,n=0;n<e.length;n++){var o=e[n],a=t(o);if(""!==a){var s=r(o);null!=s&&""!==s&&(i[a]||(i[a]=o),i[a].addGroupEntry(s,o))}}return i}(e,function(e){return e._identifier.groupId},function(e){return e._description.groupName})}(c),o.debugMode&&(console.log("grouped describedData data:"),console.log(c)),c=function(e){for(var t=Object.keys(e),r=[],i=0;i<t.length;i++){var n=t[i],o=e[n];if(""!=o._description.groupDestinationPattern){var a=o._identifier.groupDestinationId;if(null!=e[a]){var s=o[o._description.groupName];e[a].addGroupEntries(o._description.groupDestinationName,s),r.push(n)}}}for(i=0;i<r.length;i+=1){var u=r[i];delete e[u]}return e}(c),o.debugMode&&(console.log("moved grouped describedData data:"),console.log(c)),c=function(e,t){var r,n,o=[];for(r=0;r<e.length;r+=1)n=e[r],o.push(i(n,{recursionDepth:0,config:t,groupToSkip:""}));return o}(c=function(e){for(var t=[],r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],o=e[n];t.push(o)}return t}(c),o),o.debugMode&&(console.log("transformed result:"),console.log(c)),c}(e,this.descriptions,this.config)}}}(),datarestructor.Restructor={},datarestructor.Restructor.processJsonUsingDescriptions=function(e,t,r){var i=new datarestructor.Transform(t);return r&&i.enableDebugMode(),i.processJson(e)};
1
+ var require=require||function(){};"use strict";(internal_object_tools=(module=(module=module||{})||{}).exports={}).flattenToArray=function(e,t){var r=[];return("number"!=typeof t||t<1)&&(t=20),function e(i,n,o){if(!(o>t||"function"==typeof i))if(Object(i)!==i)r.push({name:n,value:i});else if(Array.isArray(i)){var a,s=i.length;for(a=0;a<s;a+=1)e(i[a],n+"["+a+"]",o+1);0===s&&(r[n]=[],r.push({name:n,value:""}))}else{var u,l=!0;for(u in i)l=!1,e(i[u],n?n+"."+u:u,o+1);l&&n&&r.push({name:n,value:""})}}(e,"",0),r};var module=templateResolverInternalCreateIfNotExists(module);function templateResolverInternalCreateIfNotExists(e){return e||{}}(template_resolver=module.exports={}).internalCreateIfNotExists=templateResolverInternalCreateIfNotExists;var internal_object_tools=internal_object_tools||require("../../lib/js/flattenToArray");template_resolver.Resolver=function(){var e=new RegExp("\\[\\d+\\]","gi");function t(t){var r=t.lastIndexOf("."),i=t;r>0&&(i=t.substr(r+1));var n="";return r>0&&(n=t.substr(0,r+1)),{group:n,groupWithoutArrayIndices:n.replace(e,""),name:i}}function r(e,t,r){var i,n;for(i=0;i<e.length;i+=1)n=e[i],"function"==typeof r&&r(n.name)&&(t[n.name]=n.value);return t}return function(e){this.sourceDataObject=e,this.resolveTemplate=function(e){return this.replaceResolvableFields(e,function(e){var r,i,n,o,a=Object.keys(e);for(r=0;r<a.length;r+=1)i=a[r],o=e[i],"fieldName"===(n=t(i)).name&&"fieldName"!==o&&(e[n.groupWithoutArrayIndices+o]=e[n.group+"value"]);return e}(this.resolvableFieldsOfAll(this.sourceDataObject)))},this.resolvableFieldsOfAll=function(){var e,t={},i=function(e){return 0!==e.indexOf("_")&&e.indexOf("._")<0};for(e=0;e<arguments.length;e+=1)r(internal_object_tools.flattenToArray(arguments[e],3),t,i);return t},this.replaceResolvableFields=function(e,t){for(var r=e,i=Object.keys(t),n=0;n<i.length;n+=1){var o=i[n],a=t[o];r=r.replace("{{"+o+"}}",a)}return r}}}();module=describedFieldInternalCreateIfNotExists(module);function describedFieldInternalCreateIfNotExists(e){return e||{}}function datarestructorInternalCreateIfNotExists(e){return e||{}}(described_field=module.exports={}).internalCreateIfNotExists=describedFieldInternalCreateIfNotExists,described_field.DescribedDataFieldBuilder=function(){function e(e,t){return function(e){return"string"==typeof e&&null!==e&&""!==e}(e)?e:t}function t(e,t){return null==e?t:e}return function(){this.describedField={category:"",type:"",abbreviation:"",image:"",index:[],groupNames:[],displayName:"",fieldName:"",value:""},this.fromDescribedDataField=function(e){return this.category(e.category),this.type(e.type),this.abbreviation(e.abbreviation),this.image(e.image),this.index(e.index),this.groupNames(e.groupNames),this.displayName(e.displayName),this.fieldName(e.fieldName),this.value(e.value),this},this.category=function(t){return this.describedField.category=e(t,""),this},this.type=function(t){return this.describedField.type=e(t,""),this},this.abbreviation=function(t){return this.describedField.abbreviation=e(t,""),this},this.image=function(t){return this.describedField.image=e(t,""),this},this.index=function(e){return this.describedField.index=t(e,[]),this},this.groupNames=function(e){return this.describedField.groupNames=t(e,[]),this},this.displayName=function(t){return this.describedField.displayName=e(t,""),this},this.fieldName=function(t){return this.describedField.fieldName=e(t,""),this},this.value=function(e){return this.describedField.value=e,this},this.build=function(){return this.describedField}}}(),described_field.copyWithoutGroups=function(e){return(new described_field.DescribedDataFieldBuilder).fromDescribedDataField(e).groupNames([]).build()},described_field.DescribedDataFieldGroup=function(){return function(e){this.dataField=e,this.addGroupEntry=function(e,t){return this.addGroupEntries(e,[t]),this},this.addGroupEntries=function(e,t){if(!e||0===e.length)return this;if(!t||0===t.length)return this;var r,i;for(void 0===this.dataField[e]&&(this.dataField.groupNames.push(e),this.dataField[e]=[]),r=0;r<t.length;r+=1)i=t[r],this.dataField[e].push(i);return this}}}();var datarestructor=(module=datarestructorInternalCreateIfNotExists(module)).exports={};datarestructor.internalCreateIfNotExists=datarestructorInternalCreateIfNotExists;internal_object_tools=internal_object_tools||require("../../lib/js/flattenToArray");var template_resolver=template_resolver||require("../../src/js/templateResolver"),described_field=described_field||require("../../src/js/describedfield");datarestructor.PropertyStructureDescriptionBuilder=function(){function e(e,i){if(o(e))return function(){return e};if(i.propertyPatternTemplateMode){var n=i.propertyPattern;return a=n,function(e){var i=r(a,"{{fieldName}}"),n=i.exec(e);return n&&""!=n[1]?n[1]:t(e)}}var a;return function(e){return t(e)}}function t(e){var t=new RegExp("(\\w+)$","gi"),r=e.match(t);return null!=r?r[0]:e}function r(e,t){var r=i(e);return"string"==typeof t&&(t=i(t)),r="^"+(r=r.replace(t,"([-\\w]+)")),new RegExp(r,"i")}function i(e){var t=new RegExp("([^-\\w])","gi");return e.replace(t,"\\$1")}function n(e,t){return o(e)?e:t}function o(e){return"string"==typeof e&&null!=e&&""!=e}return function(){this.description={type:"",category:"",abbreviation:"",image:"",propertyPatternTemplateMode:!1,propertyPattern:"",indexStartsWith:"",groupName:"group",groupPattern:"",groupDestinationPattern:"",groupDestinationName:null,deduplicationPattern:"",getDisplayNameForPropertyName:null,getFieldNameForPropertyName:null,matchesPropertyName:null},this.type=function(e){return this.description.type=n(e,""),this},this.category=function(e){return this.description.category=n(e,""),this},this.abbreviation=function(e){return this.description.abbreviation=n(e,""),this},this.image=function(e){return this.description.image=n(e,""),this},this.propertyPatternEqualMode=function(){return this.description.propertyPatternTemplateMode=!1,this},this.propertyPatternTemplateMode=function(){return this.description.propertyPatternTemplateMode=!0,this},this.propertyPattern=function(e){return this.description.propertyPattern=n(e,""),this},this.indexStartsWith=function(e){return this.description.indexStartsWith=n(e,""),this},this.displayPropertyName=function(t){return this.description.getDisplayNameForPropertyName=e(t,this.description),o(t)?this:(this.description.getDisplayNameForPropertyName=(r=this.description.getDisplayNameForPropertyName,function(e){var t=r(e);return(t=null!=t?t:"").replace("_comma_separated_values","")}),this.description.getDisplayNameForPropertyName=function(e){return function(t){return(r=e(t)).length>1?r.charAt(0).toUpperCase()+r.slice(1):r;var r}}(this.description.getDisplayNameForPropertyName),this);var r},this.fieldName=function(t){return this.description.getFieldNameForPropertyName=e(t,this.description),this},this.groupName=function(e){return this.description.groupName=n(e,""),this},this.groupPattern=function(e){return this.description.groupPattern=n(e,""),this},this.groupDestinationPattern=function(e){return this.description.groupDestinationPattern=n(e,""),this},this.groupDestinationName=function(e){return this.description.groupDestinationName=n(e,this.description.groupName),this},this.deduplicationPattern=function(e){return this.description.deduplicationPattern=n(e,""),this},this.build=function(){return this.description.matchesPropertyName=(e=this.description,o(t=e.propertyPattern)?e.propertyPatternTemplateMode?function(e){return null!=(i=t,n=new RegExp("\\\\\\{\\\\\\{[-\\w]+\\\\\\}\\\\\\}","gi"),r(i,n)).exec(e);var i,n}:function(e){return e===t}:function(){return!1}),null==this.description.getDisplayNameForPropertyName&&this.displayPropertyName(""),null==this.description.getFieldNameForPropertyName&&this.fieldName(""),null==this.description.groupDestinationName&&this.groupDestinationName(""),this.description;var e,t}}}(),datarestructor.DescribedEntryCreator=function(){var e=new RegExp("\\[\\d+\\]","gi");return function(t,r){var i,n,o=(i=t.name,n=new RegExp("\\[(\\d+)\\]","gi"),function(e,t){var r,i="",n=[];do{(r=t.exec(e))&&(i.length>0&&(i+="."),i+=r[1],n.push(parseInt(r[1])))}while(r);return{pointDelimited:i,numberArray:n}}(i,n)),a=t.name.replace(e,""),s=new template_resolver.Resolver(this);this.category=r.category,this.type=r.type,this.abbreviation=r.abbreviation,this.image=r.image,this.index=o.numberArray,this.displayName=r.getDisplayNameForPropertyName(a),this.fieldName=r.getFieldNameForPropertyName(a),this.value=t.value,this.groupNames=[],this._isMatchingIndex=0==o.pointDelimited.indexOf(r.indexStartsWith),this._description=r,this._identifier={index:o.pointDelimited,propertyNameWithArrayIndices:t.name,propertyNameWithoutArrayIndices:a,groupId:"",groupDestinationId:"",deduplicationId:""},this._identifier.groupId=s.replaceResolvableFields(r.groupPattern,s.resolvableFieldsOfAll(this,this._description,this._identifier)),this._identifier.groupDestinationId=s.replaceResolvableFields(r.groupDestinationPattern,s.resolvableFieldsOfAll(this,this._description,this._identifier)),this._identifier.deduplicationId=s.replaceResolvableFields(r.deduplicationPattern,s.resolvableFieldsOfAll(this,this._description,this._identifier)),this.addGroupEntry=function(e,t){this.addGroupEntries(e,[t])},this.addGroupEntries=function(e,t){var r,i;for(this[e]||(this.groupNames.push(e),this[e]=[]),r=0;r<t.length;r+=1)i=t[r],this[e].push(i)}}}(),datarestructor.Transform=function(){function e(e,t,r){var i,n,o,a=function(e,t){for(var r=new Object,i=0;i<e.length;i++){var n=e[i];r[t(n)]=n}return r}(t,r),s=[];for(i=0;i<e.length;i+=1)null!=(o=r(n=e[i]))&&""!==o&&null!=a[o]||s.push(n);for(i=0;i<t.length;i+=1)n=t[i],s.push(n);return s}function t(t,r){if(null==t||0==t.length)return r;return e(t,r,function(e){return e._identifier.deduplicationId})}function r(e,t){var r=new RegExp("\\[\\d+\\]","gi"),i=[];return e.filter(function(e){var n=e.name.replace(r,"");if(t.matchesPropertyName(n)){var o=new datarestructor.DescribedEntryCreator(e,t);o._isMatchingIndex&&i.push(o)}}),i}function i(e,t){var r=(new described_field.DescribedDataFieldBuilder).category(e.category).type(e.type).abbreviation(e.abbreviation).image(e.image).index(e.index).displayName(e.displayName).fieldName(e.fieldName).value(e.value).build();if(t.recursionDepth>t.config.maxRecursionDepth)return r;var o=null,a="",s=new described_field.DescribedDataFieldGroup(r);return function(e,t){var r,i,n,o;for(r=0;r<e.groupNames.length;r+=1)for(n=e.groupNames[r],i=0;i<e[n].length;i+=1)o=e[n][i],t(n,o,e[n])}(e,function(e,r,u){t.groupToSkip!==e?(a="",t.recursionDepth>=t.config.removeDuplicationAboveRecursionDepth&&(a=function(e,t,r){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(var i=0;i<e.length;++i)if(!r(e[i],t[i]))return!1;return!0}(r[e],u,n)?e:""),o={recursionDepth:t.recursionDepth+1,config:t.config,groupToSkip:a},s.addGroupEntry(e,i(r,o))):t.config.debugMode&&console.log("Removed duplicate group "+e+" at recursion depth "+t.recursionDepth)}),r}function n(e,t){return o(e.category)===o(t.category)&&o(e.type)===o(t.type)&&e.fieldName===t.fieldName&&e.value===t.value}function o(e){return function(e,t){if(void 0===e||!e)return t;return e}(e,"")}return function(e){this.descriptions=e,this.config={debugMode:!1,maxRecursionDepth:8,removeDuplicationAboveRecursionDepth:1},this.enableDebugMode=function(){return this.config.debugMode=!0,this},this.setMaxRecursionDepth=function(e){if("number"!=typeof e||e<0)throw"Invalid max recursion depth value: "+e;return this.config.maxRecursionDepth=e,this},this.setRemoveDuplicationAboveRecursionDepth=function(e){if("number"!=typeof e||e<0)throw"Invalid remove duplications above recursion depth value: "+e;return this.config.removeDuplicationAboveRecursionDepth=e,this},this.processJson=function(e){return function(e,n,o){var a,s,u,l,d,c=internal_object_tools.flattenToArray(e);a=c,s=new RegExp("\\[\\d+\\]$","gi"),u=[],l="",d="",a.filter(function(e){if(!e.name.match(s))return""!==l&&(u.push({name:l+"_comma_separated_values",value:d}),l=""),void u.push(e);var t=e.name.replace(s,"");l===t?d+=", "+e.value:(""!==l&&(u.push({name:l+"_comma_separated_values",value:d}),l=""),l=t,d=e.value),u.push(e)}),c=u,o.debugMode&&(console.log("flattened data with array values:"),console.log(c));var p,h,f,g=[];for(p=0;p<n.length;p+=1)h=n[p],f=r(c,h),g=t(g,f);return c=g,o.debugMode&&(console.log("describedData data:"),console.log(c)),c=function(e){return function(e,t,r){for(var i=new Object,n=0;n<e.length;n++){var o=e[n],a=t(o);if(""!==a){var s=r(o);null!=s&&""!==s&&(i[a]||(i[a]=o),i[a].addGroupEntry(s,o))}}return i}(e,function(e){return e._identifier.groupId},function(e){return e._description.groupName})}(c),o.debugMode&&(console.log("grouped describedData data:"),console.log(c)),c=function(e){for(var t=Object.keys(e),r=[],i=0;i<t.length;i++){var n=t[i],o=e[n];if(""!=o._description.groupDestinationPattern){var a=o._identifier.groupDestinationId;if(null!=e[a]){var s=o[o._description.groupName];e[a].addGroupEntries(o._description.groupDestinationName,s),r.push(n)}}}for(i=0;i<r.length;i+=1){var u=r[i];delete e[u]}return e}(c),o.debugMode&&(console.log("moved grouped describedData data:"),console.log(c)),c=function(e,t){var r,n,o=[];for(r=0;r<e.length;r+=1)n=e[r],o.push(i(n,{recursionDepth:0,config:t,groupToSkip:""}));return o}(c=function(e){for(var t=[],r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],o=e[n];t.push(o)}return t}(c),o),o.debugMode&&(console.log("transformed result:"),console.log(c)),c}(e,this.descriptions,this.config)}}}(),datarestructor.Restructor={},datarestructor.Restructor.processJsonUsingDescriptions=function(e,t,r){var i=new datarestructor.Transform(t);return r&&i.enableDebugMode(),i.processJson(e)};