@pdtf/schemas 3.6.0-dev.3 → 3.6.0-dev.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.
Files changed (263) hide show
  1. package/charming-napier-57a77c/LICENSE +21 -0
  2. package/charming-napier-57a77c/README.md +430 -0
  3. package/charming-napier-57a77c/docs/sef25-extensions-ui-spec.md +355 -0
  4. package/charming-napier-57a77c/index.js +654 -0
  5. package/charming-napier-57a77c/package-lock.json +7297 -0
  6. package/charming-napier-57a77c/package.json +41 -0
  7. package/charming-napier-57a77c/src/examples/v1/exampleAddParticipantVouch.json +32 -0
  8. package/charming-napier-57a77c/src/examples/v1/exampleDocumentedVouch.json +40 -0
  9. package/charming-napier-57a77c/src/examples/v1/exampleElectronicRecord.json +30 -0
  10. package/charming-napier-57a77c/src/examples/v1/exampleTransaction.json +878 -0
  11. package/charming-napier-57a77c/src/examples/v1/exampleVouch.json +25 -0
  12. package/charming-napier-57a77c/src/examples/v2/exampleTransaction.json +901 -0
  13. package/charming-napier-57a77c/src/examples/v3/exampleAddParticipantVouch.json +38 -0
  14. package/charming-napier-57a77c/src/examples/v3/exampleCustomOverlay.json +55 -0
  15. package/charming-napier-57a77c/src/examples/v3/exampleCustomOverlay2.json +93 -0
  16. package/charming-napier-57a77c/src/examples/v3/exampleDocumentedVouch.json +47 -0
  17. package/charming-napier-57a77c/src/examples/v3/exampleElectronicRecord.json +36 -0
  18. package/charming-napier-57a77c/src/examples/v3/exampleTransaction.json +1038 -0
  19. package/charming-napier-57a77c/src/examples/v3/exampleVouch.json +32 -0
  20. package/charming-napier-57a77c/src/mappings/SendPropertyDetailsRequestSchema.json +1588 -0
  21. package/charming-napier-57a77c/src/mappings/adf.js +198 -0
  22. package/charming-napier-57a77c/src/schemas/v1/GeoJSON.json +1279 -0
  23. package/charming-napier-57a77c/src/schemas/v1/baspiNotes.html +102 -0
  24. package/charming-napier-57a77c/src/schemas/v1/energy-performance-certificate.json +124 -0
  25. package/charming-napier-57a77c/src/schemas/v1/freehold-information.json +2051 -0
  26. package/charming-napier-57a77c/src/schemas/v1/leasehold-information.json +2064 -0
  27. package/charming-napier-57a77c/src/schemas/v1/legal-information.json +1045 -0
  28. package/charming-napier-57a77c/src/schemas/v1/material-facts.json +2109 -0
  29. package/charming-napier-57a77c/src/schemas/v1/pdtf-transaction-search-results.json +40 -0
  30. package/charming-napier-57a77c/src/schemas/v1/pdtf-transaction.json +191 -0
  31. package/charming-napier-57a77c/src/schemas/v1/searches/drainage-and-water.json +261 -0
  32. package/charming-napier-57a77c/src/schemas/v1/searches/local-land-charges.json +69 -0
  33. package/charming-napier-57a77c/src/schemas/v1/searches/local-searches-required.json +857 -0
  34. package/charming-napier-57a77c/src/schemas/v1/searches.json +237 -0
  35. package/charming-napier-57a77c/src/schemas/v1/title-deed.json +841 -0
  36. package/charming-napier-57a77c/src/schemas/v2/baspiNotes.html +102 -0
  37. package/charming-napier-57a77c/src/schemas/v2/combined.json +37731 -0
  38. package/charming-napier-57a77c/src/schemas/v2/overlays/baspi.json +8132 -0
  39. package/charming-napier-57a77c/src/schemas/v2/overlays/con29DW.json +705 -0
  40. package/charming-napier-57a77c/src/schemas/v2/overlays/con29R.json +2956 -0
  41. package/charming-napier-57a77c/src/schemas/v2/overlays/fme1.json +1259 -0
  42. package/charming-napier-57a77c/src/schemas/v2/overlays/llc1.json +25 -0
  43. package/charming-napier-57a77c/src/schemas/v2/overlays/lpe1.json +2171 -0
  44. package/charming-napier-57a77c/src/schemas/v2/overlays/nts.json +326 -0
  45. package/charming-napier-57a77c/src/schemas/v2/overlays/oc1.json +2799 -0
  46. package/charming-napier-57a77c/src/schemas/v2/overlays/piq.json +3419 -0
  47. package/charming-napier-57a77c/src/schemas/v2/overlays/rds.json +3736 -0
  48. package/charming-napier-57a77c/src/schemas/v2/overlays/ta10.json +5306 -0
  49. package/charming-napier-57a77c/src/schemas/v2/overlays/ta6.json +4533 -0
  50. package/charming-napier-57a77c/src/schemas/v2/overlays/ta7.json +1045 -0
  51. package/charming-napier-57a77c/src/schemas/v2/pdtf-transaction.json +34351 -0
  52. package/charming-napier-57a77c/src/schemas/v2/skeleton.json +3973 -0
  53. package/charming-napier-57a77c/src/schemas/v3/combined.json +48153 -0
  54. package/charming-napier-57a77c/src/schemas/v3/compactSkeleton.txt +4457 -0
  55. package/charming-napier-57a77c/src/schemas/v3/overlays/README.md +299 -0
  56. package/charming-napier-57a77c/src/schemas/v3/overlays/baspi4.json +8027 -0
  57. package/charming-napier-57a77c/src/schemas/v3/overlays/baspi5.json +8177 -0
  58. package/charming-napier-57a77c/src/schemas/v3/overlays/con29DW.json +716 -0
  59. package/charming-napier-57a77c/src/schemas/v3/overlays/con29R.json +2981 -0
  60. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ac.json +333 -0
  61. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/as.json +74 -0
  62. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/dk.json +32 -0
  63. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/dr.json +73 -0
  64. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/er.json +85 -0
  65. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/fd.json +75 -0
  66. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/hi.json +51 -0
  67. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/hs.json +73 -0
  68. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ic.json +59 -0
  69. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/jk.json +96 -0
  70. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/la.json +85 -0
  71. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/lc.json +75 -0
  72. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ma.json +90 -0
  73. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/mc.json +38 -0
  74. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/mi.json +69 -0
  75. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/nd.json +43 -0
  76. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/oa.json +24 -0
  77. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/oc.json +57 -0
  78. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/pc.json +37 -0
  79. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ph.json +194 -0
  80. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/rw.json +68 -0
  81. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sb.json +73 -0
  82. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sc.json +129 -0
  83. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sd.json +63 -0
  84. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sf.json +74 -0
  85. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sl.json +68 -0
  86. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ta.json +240 -0
  87. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/tf.json +103 -0
  88. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/tr.json +73 -0
  89. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/wg.json +350 -0
  90. package/charming-napier-57a77c/src/schemas/v3/overlays/fme1.json +1266 -0
  91. package/charming-napier-57a77c/src/schemas/v3/overlays/llc1.json +25 -0
  92. package/charming-napier-57a77c/src/schemas/v3/overlays/lpe1.json +2199 -0
  93. package/charming-napier-57a77c/src/schemas/v3/overlays/nts.json +2157 -0
  94. package/charming-napier-57a77c/src/schemas/v3/overlays/nts2.json +2742 -0
  95. package/charming-napier-57a77c/src/schemas/v3/overlays/ntsl.json +1813 -0
  96. package/charming-napier-57a77c/src/schemas/v3/overlays/ntsl2.json +2217 -0
  97. package/charming-napier-57a77c/src/schemas/v3/overlays/oc1.json +2817 -0
  98. package/charming-napier-57a77c/src/schemas/v3/overlays/piq.json +3321 -0
  99. package/charming-napier-57a77c/src/schemas/v3/overlays/rds.json +3665 -0
  100. package/charming-napier-57a77c/src/schemas/v3/overlays/sef25.json +1639 -0
  101. package/charming-napier-57a77c/src/schemas/v3/overlays/sr24.json +38 -0
  102. package/charming-napier-57a77c/src/schemas/v3/overlays/ta10.json +4654 -0
  103. package/charming-napier-57a77c/src/schemas/v3/overlays/ta6.json +4568 -0
  104. package/charming-napier-57a77c/src/schemas/v3/overlays/ta6ed6.json +6537 -0
  105. package/charming-napier-57a77c/src/schemas/v3/overlays/ta7.json +1537 -0
  106. package/charming-napier-57a77c/src/schemas/v3/overlays/ta7ed5.json +1551 -0
  107. package/charming-napier-57a77c/src/schemas/v3/pdtf-transaction.json +41229 -0
  108. package/charming-napier-57a77c/src/schemas/v3/skeleton.json +5703 -0
  109. package/charming-napier-57a77c/src/schemas/verifiedClaims/README.md +21 -0
  110. package/charming-napier-57a77c/src/schemas/verifiedClaims/pdtf-verified-claims.json +447 -0
  111. package/charming-napier-57a77c/src/tests/v3/buyerCircumstances.test.js +543 -0
  112. package/charming-napier-57a77c/src/tests/v3/caching.test.js +591 -0
  113. package/charming-napier-57a77c/src/tests/v3/enquiries.test.js +1096 -0
  114. package/charming-napier-57a77c/src/tests/v3/extensionOverlays.test.js +1599 -0
  115. package/charming-napier-57a77c/src/tests/v3/offers.test.js +823 -0
  116. package/charming-napier-57a77c/src/tests/v3/patternProperties.test.js +688 -0
  117. package/charming-napier-57a77c/src/tests/v3/ta6ed6.test.js +2374 -0
  118. package/charming-napier-57a77c/src/tests/v3/ta7ed5.test.js +600 -0
  119. package/charming-napier-57a77c/src/tests/v3/transactionSchema.test.js +646 -0
  120. package/charming-napier-57a77c/src/tests/v3/verifiedClaimsValidator.test.js +195 -0
  121. package/charming-napier-57a77c/src/utils/compactSkeleton.js +84 -0
  122. package/charming-napier-57a77c/src/utils/countTokens.js +67 -0
  123. package/charming-napier-57a77c/src/utils/extractExtensionOverlays.js +624 -0
  124. package/charming-napier-57a77c/src/utils/extractOverlay.js +381 -0
  125. package/charming-napier-57a77c/src/utils/extractProperties.js +44 -0
  126. package/charming-napier-57a77c/src/utils/listPathTitles.js +36 -0
  127. package/charming-napier-57a77c/src/utils/minimalSkeleton.js +85 -0
  128. package/charming-napier-57a77c/src/utils/pathList.csv +903 -0
  129. package/charming-napier-57a77c/src/utils/pathSkeleton.js +181 -0
  130. package/keen-dewdney-6ae15b/LICENSE +21 -0
  131. package/keen-dewdney-6ae15b/README.md +334 -0
  132. package/keen-dewdney-6ae15b/index.js +557 -0
  133. package/keen-dewdney-6ae15b/package-lock.json +7296 -0
  134. package/keen-dewdney-6ae15b/package.json +39 -0
  135. package/keen-dewdney-6ae15b/src/examples/v1/exampleAddParticipantVouch.json +32 -0
  136. package/keen-dewdney-6ae15b/src/examples/v1/exampleDocumentedVouch.json +40 -0
  137. package/keen-dewdney-6ae15b/src/examples/v1/exampleElectronicRecord.json +30 -0
  138. package/keen-dewdney-6ae15b/src/examples/v1/exampleTransaction.json +878 -0
  139. package/keen-dewdney-6ae15b/src/examples/v1/exampleVouch.json +25 -0
  140. package/keen-dewdney-6ae15b/src/examples/v2/exampleTransaction.json +901 -0
  141. package/keen-dewdney-6ae15b/src/examples/v3/exampleAddParticipantVouch.json +35 -0
  142. package/keen-dewdney-6ae15b/src/examples/v3/exampleCustomOverlay.json +55 -0
  143. package/keen-dewdney-6ae15b/src/examples/v3/exampleCustomOverlay2.json +93 -0
  144. package/keen-dewdney-6ae15b/src/examples/v3/exampleDocumentedVouch.json +44 -0
  145. package/keen-dewdney-6ae15b/src/examples/v3/exampleElectronicRecord.json +33 -0
  146. package/keen-dewdney-6ae15b/src/examples/v3/exampleTransaction.json +1034 -0
  147. package/keen-dewdney-6ae15b/src/examples/v3/exampleVouch.json +29 -0
  148. package/keen-dewdney-6ae15b/src/mappings/SendPropertyDetailsRequestSchema.json +1588 -0
  149. package/keen-dewdney-6ae15b/src/mappings/adf.js +198 -0
  150. package/keen-dewdney-6ae15b/src/schemas/v1/GeoJSON.json +1279 -0
  151. package/keen-dewdney-6ae15b/src/schemas/v1/baspiNotes.html +102 -0
  152. package/keen-dewdney-6ae15b/src/schemas/v1/energy-performance-certificate.json +124 -0
  153. package/keen-dewdney-6ae15b/src/schemas/v1/freehold-information.json +2051 -0
  154. package/keen-dewdney-6ae15b/src/schemas/v1/leasehold-information.json +2064 -0
  155. package/keen-dewdney-6ae15b/src/schemas/v1/legal-information.json +1045 -0
  156. package/keen-dewdney-6ae15b/src/schemas/v1/material-facts.json +2109 -0
  157. package/keen-dewdney-6ae15b/src/schemas/v1/pdtf-transaction-search-results.json +40 -0
  158. package/keen-dewdney-6ae15b/src/schemas/v1/pdtf-transaction.json +191 -0
  159. package/keen-dewdney-6ae15b/src/schemas/v1/searches/drainage-and-water.json +261 -0
  160. package/keen-dewdney-6ae15b/src/schemas/v1/searches/local-land-charges.json +69 -0
  161. package/keen-dewdney-6ae15b/src/schemas/v1/searches/local-searches-required.json +857 -0
  162. package/keen-dewdney-6ae15b/src/schemas/v1/searches.json +237 -0
  163. package/keen-dewdney-6ae15b/src/schemas/v1/title-deed.json +841 -0
  164. package/keen-dewdney-6ae15b/src/schemas/v2/baspiNotes.html +102 -0
  165. package/keen-dewdney-6ae15b/src/schemas/v2/combined.json +37731 -0
  166. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/baspi.json +8132 -0
  167. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/con29DW.json +705 -0
  168. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/con29R.json +2956 -0
  169. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/fme1.json +1259 -0
  170. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/llc1.json +25 -0
  171. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/lpe1.json +2171 -0
  172. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/nts.json +326 -0
  173. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/oc1.json +2799 -0
  174. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/piq.json +3419 -0
  175. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/rds.json +3736 -0
  176. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/ta10.json +5306 -0
  177. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/ta6.json +4533 -0
  178. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/ta7.json +1045 -0
  179. package/keen-dewdney-6ae15b/src/schemas/v2/pdtf-transaction.json +34351 -0
  180. package/keen-dewdney-6ae15b/src/schemas/v2/skeleton.json +3973 -0
  181. package/keen-dewdney-6ae15b/src/schemas/v3/combined.json +41720 -0
  182. package/keen-dewdney-6ae15b/src/schemas/v3/compactSkeleton.txt +3325 -0
  183. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/README.md +299 -0
  184. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/baspi4.json +7872 -0
  185. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/baspi5.json +8019 -0
  186. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/con29DW.json +716 -0
  187. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/con29R.json +2981 -0
  188. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/as.json +72 -0
  189. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/dr.json +73 -0
  190. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/er.json +83 -0
  191. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/fd.json +72 -0
  192. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/hi.json +48 -0
  193. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/hs.json +71 -0
  194. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/jk.json +76 -0
  195. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/la.json +83 -0
  196. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/ma.json +87 -0
  197. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/mc.json +36 -0
  198. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/oa.json +22 -0
  199. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/oc.json +55 -0
  200. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/sb.json +71 -0
  201. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/sf.json +72 -0
  202. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/sl.json +66 -0
  203. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/tf.json +100 -0
  204. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/fme1.json +1264 -0
  205. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/llc1.json +25 -0
  206. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/lpe1.json +2226 -0
  207. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/nts.json +2090 -0
  208. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/nts2.json +2678 -0
  209. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ntsl.json +1746 -0
  210. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ntsl2.json +2153 -0
  211. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/oc1.json +2817 -0
  212. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/piq.json +3276 -0
  213. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/rds.json +3552 -0
  214. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/sr24.json +38 -0
  215. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ta10.json +4642 -0
  216. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ta6.json +4501 -0
  217. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ta7.json +1435 -0
  218. package/keen-dewdney-6ae15b/src/schemas/v3/pdtf-transaction.json +37225 -0
  219. package/keen-dewdney-6ae15b/src/schemas/v3/skeleton.json +4323 -0
  220. package/keen-dewdney-6ae15b/src/schemas/verifiedClaims/README.md +12 -0
  221. package/keen-dewdney-6ae15b/src/schemas/verifiedClaims/pdtf-verified-claims.json +431 -0
  222. package/keen-dewdney-6ae15b/src/tests/v3/caching.test.js +591 -0
  223. package/keen-dewdney-6ae15b/src/tests/v3/extensionOverlays.test.js +525 -0
  224. package/keen-dewdney-6ae15b/src/tests/v3/transactionSchema.test.js +574 -0
  225. package/keen-dewdney-6ae15b/src/tests/v3/verifiedClaimsValidator.test.js +128 -0
  226. package/keen-dewdney-6ae15b/src/utils/compactSkeleton.js +84 -0
  227. package/keen-dewdney-6ae15b/src/utils/countTokens.js +67 -0
  228. package/keen-dewdney-6ae15b/src/utils/extractExtensionOverlays.js +362 -0
  229. package/keen-dewdney-6ae15b/src/utils/extractOverlay.js +290 -0
  230. package/keen-dewdney-6ae15b/src/utils/extractProperties.js +44 -0
  231. package/keen-dewdney-6ae15b/src/utils/listPathTitles.js +36 -0
  232. package/keen-dewdney-6ae15b/src/utils/minimalSkeleton.js +85 -0
  233. package/keen-dewdney-6ae15b/src/utils/pathList.csv +903 -0
  234. package/keen-dewdney-6ae15b/src/utils/pathSkeleton.js +181 -0
  235. package/package.json +1 -1
  236. package/src/schemas/v3/combined.json +8 -15
  237. package/src/schemas/v3/overlays/baspi4.json +12 -7
  238. package/src/schemas/v3/overlays/baspi5.json +12 -7
  239. package/src/schemas/v3/overlays/extensions/ac.json +2 -1
  240. package/src/schemas/v3/overlays/extensions/dk.json +3 -2
  241. package/src/schemas/v3/overlays/extensions/ic.json +2 -1
  242. package/src/schemas/v3/overlays/extensions/lc.json +3 -2
  243. package/src/schemas/v3/overlays/extensions/mi.json +2 -1
  244. package/src/schemas/v3/overlays/extensions/nd.json +3 -2
  245. package/src/schemas/v3/overlays/extensions/pc.json +3 -2
  246. package/src/schemas/v3/overlays/extensions/ph.json +2 -1
  247. package/src/schemas/v3/overlays/extensions/rw.json +4 -3
  248. package/src/schemas/v3/overlays/extensions/sc.json +8 -4
  249. package/src/schemas/v3/overlays/extensions/sd.json +3 -2
  250. package/src/schemas/v3/overlays/extensions/tr.json +3 -2
  251. package/src/schemas/v3/overlays/extensions/wg.json +2 -1
  252. package/src/schemas/v3/overlays/lpe1.json +1 -1
  253. package/src/schemas/v3/overlays/nts.json +3 -1
  254. package/src/schemas/v3/overlays/nts2.json +3 -1
  255. package/src/schemas/v3/overlays/ntsl.json +3 -1
  256. package/src/schemas/v3/overlays/ntsl2.json +3 -1
  257. package/src/schemas/v3/overlays/piq.json +7 -5
  258. package/src/schemas/v3/overlays/rds.json +9 -6
  259. package/src/schemas/v3/overlays/ta10.json +0 -9
  260. package/src/schemas/v3/overlays/ta6.json +8 -4
  261. package/src/schemas/v3/overlays/ta6ed6.json +4 -2
  262. package/src/schemas/v3/pdtf-transaction.json +15 -18
  263. package/src/utils/extractExtensionOverlays.js +10 -1
@@ -0,0 +1,84 @@
1
+ const fs = require("fs");
2
+
3
+ // Read the current skeleton
4
+ const skeleton = require("../schemas/v3/skeleton.json");
5
+
6
+ // Convert to ultra-compact format
7
+ const toCompact = (obj, indent = "") => {
8
+ if (typeof obj === "string") {
9
+ // Type indicators
10
+ if (["string", "number", "integer", "boolean", "variant"].includes(obj)) {
11
+ return obj[0]; // Just first letter: s, n, i, b, v
12
+ }
13
+ return obj;
14
+ }
15
+
16
+ if (Array.isArray(obj)) {
17
+ if (obj.length === 0) return "[]";
18
+ // Array with content
19
+ const inner = toCompact(obj[0], indent + " ");
20
+ if (typeof inner === "string" && inner.length === 1) {
21
+ return `[${inner}]`; // Simple array like [s]
22
+ }
23
+ return `[\n${indent} ${inner}\n${indent}]`;
24
+ }
25
+
26
+ if (obj && typeof obj === "object") {
27
+ const keys = Object.keys(obj);
28
+ if (keys.length === 0) return "{}";
29
+
30
+ // Check if it's a simple object with only type indicators
31
+ const allSimple = keys.every(k =>
32
+ typeof obj[k] === "string" &&
33
+ ["s", "n", "i", "b", "v"].includes(toCompact(obj[k]))
34
+ );
35
+
36
+ if (allSimple && keys.length < 5) {
37
+ // Inline format: {a:s b:n c:s}
38
+ return `{${keys.map(k => `${k}:${toCompact(obj[k])}`).join(" ")}}`;
39
+ }
40
+
41
+ // Multi-line format
42
+ const lines = keys.map(k => {
43
+ const val = toCompact(obj[k], indent + " ");
44
+ if (typeof val === "string" && val.length === 1) {
45
+ return `${indent} ${k}:${val}`;
46
+ } else if (typeof val === "string" && (val === "{}" || val === "[]")) {
47
+ return `${indent} ${k}${val}`;
48
+ } else if (typeof val === "string" && val.startsWith("{") && val.endsWith("}")) {
49
+ return `${indent} ${k}${val}`;
50
+ } else if (typeof val === "string" && val.startsWith("[") && !val.includes("\n")) {
51
+ return `${indent} ${k}${val}`;
52
+ } else {
53
+ return `${indent} ${k}:\n${indent} ${val}`;
54
+ }
55
+ });
56
+
57
+ return `{\n${lines.join("\n")}\n${indent}}`;
58
+ }
59
+
60
+ return String(obj);
61
+ };
62
+
63
+ // Generate ultra-compact version
64
+ const compact = toCompact(skeleton);
65
+
66
+ // Write compact version
67
+ fs.writeFileSync("../schemas/v3/compactSkeleton.txt", compact);
68
+
69
+ console.log("Compact skeleton written to ../schemas/v3/compactSkeleton.txt");
70
+ console.log(`Size: ${compact.length} bytes`);
71
+
72
+ // Count tokens
73
+ try {
74
+ const GPT3Encoder = require('gpt-3-encoder');
75
+ const encoded = GPT3Encoder.encode(compact);
76
+ console.log(`Tokens (GPT-3): ${encoded.length}`);
77
+ console.log(`Reduction: ${((1 - encoded.length / 78734) * 100).toFixed(1)}% fewer tokens than JSON skeleton`);
78
+
79
+ // Show sample
80
+ console.log("\nFirst 500 chars:");
81
+ console.log(compact.substring(0, 500));
82
+ } catch (e) {
83
+ console.log(`Estimated tokens: ~${Math.ceil(compact.length / 4)}`);
84
+ }
@@ -0,0 +1,67 @@
1
+ const fs = require('fs');
2
+
3
+ // Try to use tiktoken or a similar library
4
+ // For Claude/Anthropic models, we can estimate using the cl100k_base encoding
5
+ // which is similar to what Claude uses
6
+
7
+ // First, let's check what's available
8
+ try {
9
+ // Option 1: Use gpt-tokenizer (common npm package)
10
+ const { encode } = require('gpt-tokenizer');
11
+
12
+ const content = fs.readFileSync('../schemas/v3/skeleton.json', 'utf8');
13
+ const tokens = encode(content);
14
+
15
+ console.log(`Using gpt-tokenizer:`);
16
+ console.log(`Total tokens: ${tokens.length}`);
17
+ console.log(`File size: ${content.length} characters`);
18
+ console.log(`Ratio: ${(content.length / tokens.length).toFixed(2)} characters per token`);
19
+
20
+ } catch (e1) {
21
+ console.log("gpt-tokenizer not found, trying gpt-3-encoder...");
22
+
23
+ try {
24
+ // Option 2: Use gpt-3-encoder
25
+ const GPT3Encoder = require('gpt-3-encoder');
26
+
27
+ const content = fs.readFileSync('../schemas/v3/skeleton.json', 'utf8');
28
+ const encoded = GPT3Encoder.encode(content);
29
+
30
+ console.log(`Using gpt-3-encoder:`);
31
+ console.log(`Total tokens: ${encoded.length}`);
32
+ console.log(`File size: ${content.length} characters`);
33
+ console.log(`Ratio: ${(content.length / encoded.length).toFixed(2)} characters per token`);
34
+
35
+ } catch (e2) {
36
+ console.log("No tokenizer library found. Falling back to estimation...");
37
+
38
+ // Option 3: Manual estimation
39
+ const content = fs.readFileSync('../schemas/v3/skeleton.json', 'utf8');
40
+
41
+ // Count different types of content for better estimation
42
+ const lines = content.split('\n');
43
+ const words = content.split(/\s+/);
44
+ const punctuation = content.match(/[{}:,\[\]"]/g) || [];
45
+
46
+ // Rough estimation:
47
+ // - JSON structure tokens (brackets, colons, quotes): ~1 token each
48
+ // - Words: ~1 token each
49
+ // - Whitespace: usually absorbed into adjacent tokens
50
+
51
+ const structureTokens = punctuation.length;
52
+ const wordTokens = words.length;
53
+ const estimatedTokens = Math.ceil((structureTokens + wordTokens) * 0.75); // 0.75 factor for overlap
54
+
55
+ console.log("Manual estimation:");
56
+ console.log(`File size: ${content.length} characters`);
57
+ console.log(`Lines: ${lines.length}`);
58
+ console.log(`Words: ${words.length}`);
59
+ console.log(`JSON punctuation: ${punctuation.length}`);
60
+ console.log(`Estimated tokens: ~${estimatedTokens}`);
61
+ console.log(`Ratio: ${(content.length / estimatedTokens).toFixed(2)} characters per token`);
62
+
63
+ // Also do a simple character-based estimation
64
+ const simpleEstimate = Math.ceil(content.length / 4);
65
+ console.log(`\nSimple estimation (chars/4): ~${simpleEstimate} tokens`);
66
+ }
67
+ }
@@ -0,0 +1,362 @@
1
+ const traverse = require("traverse");
2
+ const jp = require("jsonpointer");
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+
6
+ const combinedSchema = require("../schemas/v3/combined.json");
7
+
8
+ // Define the extension overlay mappings
9
+ const extensionMappings = {
10
+ // Outside areas
11
+ oa: {
12
+ name: "outsideAreas",
13
+ description: "Outside areas extension for NTS",
14
+ paths: [
15
+ "/properties/propertyPack/properties/residentialPropertyFeatures/properties/outsideAreas",
16
+ ],
17
+ },
18
+
19
+ // Estate rentcharges for freehold
20
+ er: {
21
+ name: "estateRentcharges",
22
+ description: "Estate rentcharges for freehold properties",
23
+ paths: [
24
+ "/properties/propertyPack/properties/ownership/properties/ownershipsToBeTransferred/items/oneOf/0/properties/estateRentcharges",
25
+ ],
26
+ },
27
+
28
+ // Managing agent contact details for leasehold
29
+ ma: {
30
+ name: "managingAgent",
31
+ description: "Managing agent contact details for leasehold",
32
+ paths: [
33
+ "/properties/propertyPack/properties/ownership/properties/ownershipsToBeTransferred/items/oneOf/2/properties/leaseholdInformation/properties/contactDetails",
34
+ ],
35
+ },
36
+
37
+ // Transfer fees for leasehold
38
+ tf: {
39
+ name: "transferFees",
40
+ description: "Transfer fees for leasehold",
41
+ paths: [
42
+ "/properties/propertyPack/properties/ownership/properties/ownershipsToBeTransferred/items/oneOf/2/properties/leaseholdInformation/properties/serviceCharge/oneOf/1/properties/transferFees",
43
+ ],
44
+ },
45
+
46
+ // Main construction type if standard
47
+ mc: {
48
+ name: "mainConstruction",
49
+ description: "Main construction type if standard form",
50
+ paths: [
51
+ "/properties/propertyPack/properties/typeOfConstruction/properties/isStandardForm/oneOf/0/properties/constructionType",
52
+ ],
53
+ },
54
+
55
+ // Loft access and details
56
+ la: {
57
+ name: "loftAccess",
58
+ description: "Loft access and details",
59
+ paths: [
60
+ "/properties/propertyPack/properties/typeOfConstruction/properties/loft",
61
+ ],
62
+ },
63
+
64
+ // Spray foam insulation
65
+ sf: {
66
+ name: "sprayFoam",
67
+ description: "Spray foam insulation",
68
+ paths: [
69
+ "/properties/propertyPack/properties/typeOfConstruction/properties/sprayFoamInsulation",
70
+ ],
71
+ },
72
+
73
+ // Specialist issues - dry rot
74
+ dr: {
75
+ name: "dryRot",
76
+ description: "Dry rot treatment specialist issue",
77
+ paths: [
78
+ "/properties/propertyPack/properties/specialistIssues/properties/dryRotEtcTreatment",
79
+ ],
80
+ },
81
+
82
+ // Specialist issues - asbestos
83
+ as: {
84
+ name: "asbestos",
85
+ description: "Asbestos specialist issue",
86
+ paths: [
87
+ "/properties/propertyPack/properties/specialistIssues/properties/containsAsbestos",
88
+ ],
89
+ },
90
+
91
+ // Specialist issues - Japanese knotweed
92
+ jk: {
93
+ name: "japaneseKnotweed",
94
+ description: "Japanese knotweed specialist issue",
95
+ paths: [
96
+ "/properties/propertyPack/properties/specialistIssues/properties/japaneseKnotweed",
97
+ ],
98
+ },
99
+
100
+ // Specialist issues - subsidence
101
+ sb: {
102
+ name: "subsidence",
103
+ description: "Subsidence or structural fault specialist issue",
104
+ paths: [
105
+ "/properties/propertyPack/properties/specialistIssues/properties/subsidenceOrStructuralFault",
106
+ ],
107
+ },
108
+
109
+ // Specialist issues - health and safety
110
+ hs: {
111
+ name: "healthSafety",
112
+ description: "Health and safety specialist issue",
113
+ paths: [
114
+ "/properties/propertyPack/properties/specialistIssues/properties/ongoingHealthOrSafetyIssue",
115
+ ],
116
+ },
117
+
118
+ // Solar panels leased
119
+ sl: {
120
+ name: "solarPanelsLeased",
121
+ description: "Solar panels ownership details",
122
+ paths: [
123
+ "/properties/propertyPack/properties/electricity/properties/solarPanels/oneOf/1/properties/panelsOwnedOutright",
124
+ ],
125
+ },
126
+
127
+ // Heating installation date
128
+ hi: {
129
+ name: "heatingInstalled",
130
+ description: "Central heating installation date",
131
+ paths: [
132
+ "/properties/propertyPack/properties/heating/properties/heatingSystem/oneOf/1/properties/centralHeatingDetails/properties/centralHeatingInstalled",
133
+ ],
134
+ },
135
+
136
+ // Flood defences
137
+ fd: {
138
+ name: "floodDefences",
139
+ description: "Flood defence information",
140
+ paths: [
141
+ "/properties/propertyPack/properties/environmentalIssues/properties/flooding/properties/floodDefences",
142
+ ],
143
+ },
144
+
145
+ // Other property in chain
146
+ oc: {
147
+ name: "otherPropertyChain",
148
+ description: "Other property in chain dependency",
149
+ paths: [
150
+ "/properties/propertyPack/properties/completionAndMoving/properties/otherPropertyInChain",
151
+ ],
152
+ },
153
+ };
154
+
155
+ // Function to extract properties at specific paths with nts2Ref
156
+ function extractPathsWithNts2Ref(schema, paths) {
157
+ const result = {};
158
+
159
+ paths.forEach((path) => {
160
+ try {
161
+ const value = jp.get(schema, path);
162
+ if (value && hasNts2Ref(value)) {
163
+ // Set the value at the same path in result
164
+ jp.set(result, path, extractNts2Properties(value));
165
+ }
166
+ } catch (err) {
167
+ console.warn(`Path not found: ${path}`);
168
+ }
169
+ });
170
+
171
+ return result;
172
+ }
173
+
174
+ // Check if an object or its descendants have nts2Ref
175
+ function hasNts2Ref(obj) {
176
+ let found = false;
177
+ traverse(obj).forEach(function (element) {
178
+ if (element && element.nts2Ref) {
179
+ found = true;
180
+ this.stop();
181
+ }
182
+ });
183
+ return found;
184
+ }
185
+
186
+ // Extract only NTS2-specific properties (with nts2Ref)
187
+ function extractNts2Properties(obj, parentKey) {
188
+ const result = {};
189
+
190
+ // Copy nts2-specific metadata at current level
191
+ if (obj.nts2Ref) result.ntsRef = obj.nts2Ref;
192
+ if (obj.nts2Required) result.required = obj.nts2Required;
193
+ if (obj.nts2Title) result.title = obj.nts2Title;
194
+ if (obj.nts2Description) result.description = obj.nts2Description;
195
+ if (obj.nts2Enum) result.enum = obj.nts2Enum;
196
+
197
+ // Handle discriminator
198
+ if (obj.discriminator) {
199
+ result.discriminator = obj.discriminator;
200
+ }
201
+
202
+ // Recursively process properties
203
+ if (obj.properties) {
204
+ result.properties = {};
205
+ Object.keys(obj.properties).forEach((key) => {
206
+ const prop = obj.properties[key];
207
+ if (hasNts2Ref(prop)) {
208
+ result.properties[key] = extractNts2Properties(prop, key);
209
+ }
210
+ });
211
+ // Only keep properties if we found some with nts2Ref
212
+ if (Object.keys(result.properties).length === 0) {
213
+ delete result.properties;
214
+ }
215
+ }
216
+
217
+ // Handle arrays
218
+ if (obj.items) {
219
+ if (hasNts2Ref(obj.items)) {
220
+ result.items = extractNts2Properties(obj.items);
221
+ }
222
+ }
223
+
224
+ // Handle oneOf
225
+ if (obj.oneOf) {
226
+ // Always preserve the full array structure and order
227
+ const processedOneOf = obj.oneOf.map((schema, index) => {
228
+ if (hasNts2Ref(schema)) {
229
+ const extracted = extractNts2Properties(schema);
230
+ // For oneOf schemas, we need to preserve discriminator enum values
231
+ if (obj.discriminator && schema.properties) {
232
+ const propName = obj.discriminator.propertyName;
233
+ if (schema.properties[propName]) {
234
+ if (!extracted.properties) extracted.properties = {};
235
+ extracted.properties[propName] = {
236
+ enum:
237
+ schema.properties[propName].nts2Enum ||
238
+ schema.properties[propName].enum,
239
+ };
240
+ }
241
+ }
242
+ // Also preserve base enum values for all other properties in the extension
243
+ if (schema.properties) {
244
+ if (!extracted.properties) extracted.properties = {};
245
+ Object.keys(schema.properties).forEach((propName) => {
246
+ const prop = schema.properties[propName];
247
+ if (prop.enum) {
248
+ if (!extracted.properties[propName]) {
249
+ extracted.properties[propName] = {
250
+ enum: prop.enum,
251
+ };
252
+ } else if (!extracted.properties[propName].enum) {
253
+ // If the property exists but doesn't have enum, add it
254
+ extracted.properties[propName].enum = prop.enum;
255
+ }
256
+ }
257
+ });
258
+ }
259
+ return extracted;
260
+ } else {
261
+ // If this branch doesn't have nts2Ref, preserve the base discriminator enum
262
+ if (obj.discriminator && schema.properties) {
263
+ const propName = obj.discriminator.propertyName;
264
+ if (schema.properties[propName]) {
265
+ return {
266
+ properties: {
267
+ [propName]: {
268
+ enum: schema.properties[propName].enum,
269
+ },
270
+ },
271
+ };
272
+ }
273
+ }
274
+ // If no discriminator, return empty object to preserve structure
275
+ return {};
276
+ }
277
+ });
278
+ result.oneOf = processedOneOf;
279
+
280
+ // --- NEW: If this is an extension property inside a oneOf, promote it to the parent overlay ---
281
+ // If parentKey is set, and this object has extension metadata, return a stub for the parent
282
+ if (
283
+ parentKey &&
284
+ (result.ntsRef || result.required || result.discriminator)
285
+ ) {
286
+ // This is an extension property inside a oneOf branch
287
+ // Return a stub for the parent property with metadata and oneOf structure
288
+ const parentStub = {};
289
+ Object.assign(parentStub, result);
290
+ return parentStub;
291
+ }
292
+ }
293
+
294
+ // Copy other JSON Schema keywords that might be present
295
+ [
296
+ "type",
297
+ "format",
298
+ "minimum",
299
+ "maximum",
300
+ "minLength",
301
+ "maxLength",
302
+ "minItems",
303
+ "maxItems",
304
+ ].forEach((keyword) => {
305
+ if (obj[keyword] !== undefined) {
306
+ result[keyword] = obj[keyword];
307
+ }
308
+ });
309
+
310
+ return result;
311
+ }
312
+
313
+ // Add required array at parent levels if needed
314
+ function addRequiredArrays(overlay, schema) {
315
+ traverse(overlay).forEach(function (node) {
316
+ if (node && node.properties) {
317
+ const schemaPath = "/" + this.path.join("/");
318
+ try {
319
+ const schemaNode = jp.get(schema, schemaPath);
320
+ if (schemaNode && schemaNode.nts2Required) {
321
+ // Filter to only include properties that exist in this overlay
322
+ const overlayProps = Object.keys(node.properties);
323
+ const requiredProps = schemaNode.nts2Required.filter((prop) =>
324
+ overlayProps.includes(prop)
325
+ );
326
+ if (requiredProps.length > 0) {
327
+ node.required = requiredProps;
328
+ }
329
+ }
330
+ } catch (err) {
331
+ // Path doesn't exist in schema, skip
332
+ }
333
+ }
334
+ });
335
+ return overlay;
336
+ }
337
+
338
+ // Generate extension overlays
339
+ Object.entries(extensionMappings).forEach(([code, config]) => {
340
+ console.log(`\nGenerating extension overlay: ${code} (${config.name})`);
341
+
342
+ // Extract the specific paths
343
+ let overlay = extractPathsWithNts2Ref(combinedSchema, config.paths);
344
+
345
+ // Add required arrays where needed
346
+ overlay = addRequiredArrays(overlay, combinedSchema);
347
+
348
+ // Add schema metadata
349
+ overlay.$schema = "http://json-schema.org/draft-07/schema#";
350
+ overlay.$id = `https://trust.propdata.org.uk/schemas/v3/overlays/extensions/${code}.json`;
351
+ overlay.$comment = config.description;
352
+
353
+ // Write the overlay file
354
+ const fileName = path.join(
355
+ __dirname,
356
+ `../schemas/v3/overlays/extensions/${code}.json`
357
+ );
358
+ fs.writeFileSync(fileName, JSON.stringify(overlay, null, 2));
359
+ console.log(`Extension overlay ${code} written to ${fileName}`);
360
+ });
361
+
362
+ console.log("\nExtension overlay extraction complete!");