@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,823 @@
1
+ const { getValidator } = require("../../../index.js");
2
+
3
+ const schemaId =
4
+ "https://trust.propdata.org.uk/schemas/v3/pdtf-transaction.json";
5
+
6
+ describe("Offers object validation", () => {
7
+ describe("Valid offer keys", () => {
8
+ test("accepts valid UUID as offer key", () => {
9
+ const validator = getValidator(schemaId);
10
+ const transaction = {
11
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
12
+ status: "active",
13
+ participants: [
14
+ {
15
+ role: "Buyer",
16
+ participantStatus: "Active",
17
+ },
18
+ ],
19
+ offers: {
20
+ "550e8400-e29b-41d4-a716-446655440000": {
21
+ amount: 250000,
22
+ currency: "GBP",
23
+ status: "Pending",
24
+ },
25
+ },
26
+ };
27
+
28
+ const isValid = validator(transaction);
29
+ expect(isValid).toBe(true);
30
+ });
31
+
32
+ test("accepts valid DID as offer key", () => {
33
+ const validator = getValidator(schemaId);
34
+ const transaction = {
35
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
36
+ status: "active",
37
+ participants: [
38
+ {
39
+ role: "Buyer",
40
+ participantStatus: "Active",
41
+ },
42
+ ],
43
+ offers: {
44
+ "did:example:123456789abcdefghi": {
45
+ amount: 300000,
46
+ currency: "GBP",
47
+ status: "Accepted",
48
+ },
49
+ },
50
+ };
51
+
52
+ const isValid = validator(transaction);
53
+ expect(isValid).toBe(true);
54
+ });
55
+
56
+ test("accepts DID with various allowed characters", () => {
57
+ const validator = getValidator(schemaId);
58
+ const transaction = {
59
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
60
+ status: "active",
61
+ participants: [
62
+ {
63
+ role: "Buyer",
64
+ participantStatus: "Active",
65
+ },
66
+ ],
67
+ offers: {
68
+ "did:web:example.com:users:alice": {
69
+ amount: 275000,
70
+ currency: "GBP",
71
+ status: "Pending",
72
+ },
73
+ },
74
+ };
75
+
76
+ const isValid = validator(transaction);
77
+ expect(isValid).toBe(true);
78
+ });
79
+
80
+ test("accepts multiple offers with different key types", () => {
81
+ const validator = getValidator(schemaId);
82
+ const transaction = {
83
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
84
+ status: "active",
85
+ participants: [
86
+ {
87
+ role: "Buyer",
88
+ participantStatus: "Active",
89
+ },
90
+ ],
91
+ offers: {
92
+ "550e8400-e29b-41d4-a716-446655440000": {
93
+ amount: 250000,
94
+ currency: "GBP",
95
+ status: "Pending",
96
+ },
97
+ "did:example:buyer123": {
98
+ amount: 260000,
99
+ currency: "GBP",
100
+ status: "Accepted",
101
+ },
102
+ "offer-abc123": {
103
+ amount: 240000,
104
+ currency: "GBP",
105
+ status: "Rejected",
106
+ },
107
+ },
108
+ };
109
+
110
+ const isValid = validator(transaction);
111
+ expect(isValid).toBe(true);
112
+ });
113
+ });
114
+
115
+ describe("Invalid offer keys", () => {
116
+ test("rejects offer key starting with invalid character", () => {
117
+ const validator = getValidator(schemaId);
118
+ const transaction = {
119
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
120
+ status: "active",
121
+ participants: [
122
+ {
123
+ role: "Buyer",
124
+ participantStatus: "Active",
125
+ },
126
+ ],
127
+ offers: {
128
+ "-invalid-key": {
129
+ amount: 250000,
130
+ currency: "GBP",
131
+ status: "Pending",
132
+ },
133
+ },
134
+ };
135
+
136
+ const isValid = validator(transaction);
137
+ expect(isValid).toBe(false);
138
+ expect(validator.errors.length).toBeGreaterThan(0);
139
+ });
140
+
141
+ test("rejects offer key with spaces", () => {
142
+ const validator = getValidator(schemaId);
143
+ const transaction = {
144
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
145
+ status: "active",
146
+ participants: [
147
+ {
148
+ role: "Buyer",
149
+ participantStatus: "Active",
150
+ },
151
+ ],
152
+ offers: {
153
+ "invalid key with spaces": {
154
+ amount: 250000,
155
+ currency: "GBP",
156
+ status: "Pending",
157
+ },
158
+ },
159
+ };
160
+
161
+ const isValid = validator(transaction);
162
+ expect(isValid).toBe(false);
163
+ });
164
+
165
+ test("rejects offer key with special characters", () => {
166
+ const validator = getValidator(schemaId);
167
+ const transaction = {
168
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
169
+ status: "active",
170
+ participants: [
171
+ {
172
+ role: "Buyer",
173
+ participantStatus: "Active",
174
+ },
175
+ ],
176
+ offers: {
177
+ "invalid@key#here": {
178
+ amount: 250000,
179
+ currency: "GBP",
180
+ status: "Pending",
181
+ },
182
+ },
183
+ };
184
+
185
+ const isValid = validator(transaction);
186
+ expect(isValid).toBe(false);
187
+ });
188
+ });
189
+
190
+ describe("Valid offer contents", () => {
191
+ test("accepts offer with all required fields", () => {
192
+ const validator = getValidator(schemaId);
193
+ const transaction = {
194
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
195
+ status: "active",
196
+ participants: [
197
+ {
198
+ role: "Buyer",
199
+ participantStatus: "Active",
200
+ },
201
+ ],
202
+ offers: {
203
+ "offer-1": {
204
+ amount: 250000,
205
+ currency: "GBP",
206
+ status: "Pending",
207
+ },
208
+ },
209
+ };
210
+
211
+ const isValid = validator(transaction);
212
+ expect(isValid).toBe(true);
213
+ });
214
+
215
+ test("accepts offer with all fields including optional ones", () => {
216
+ const validator = getValidator(schemaId);
217
+ const transaction = {
218
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
219
+ status: "active",
220
+ participants: [
221
+ {
222
+ role: "Buyer",
223
+ participantStatus: "Active",
224
+ },
225
+ ],
226
+ offers: {
227
+ "offer-1": {
228
+ amount: 250000,
229
+ currency: "GBP",
230
+ status: "Accepted",
231
+ inclusions: ["curtains", "carpets", "light fixtures"],
232
+ exclusions: ["garden furniture", "shed"],
233
+ conditions: [
234
+ "Subject to survey",
235
+ "Subject to mortgage approval",
236
+ ],
237
+ },
238
+ },
239
+ };
240
+
241
+ const isValid = validator(transaction);
242
+ expect(isValid).toBe(true);
243
+ });
244
+
245
+ test("accepts all valid status values", () => {
246
+ const validator = getValidator(schemaId);
247
+ const validStatuses = [
248
+ "Pending",
249
+ "Withdrawn",
250
+ "Rejected",
251
+ "Accepted",
252
+ "Note of Interest",
253
+ ];
254
+
255
+ validStatuses.forEach((status) => {
256
+ const transaction = {
257
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
258
+ status: "active",
259
+ participants: [
260
+ {
261
+ role: "Buyer",
262
+ participantStatus: "Active",
263
+ },
264
+ ],
265
+ offers: {
266
+ "offer-1": {
267
+ amount: 250000,
268
+ currency: "GBP",
269
+ status: status,
270
+ },
271
+ },
272
+ };
273
+
274
+ const isValid = validator(transaction);
275
+ expect(isValid).toBe(true);
276
+ });
277
+ });
278
+
279
+ test("accepts valid currency codes", () => {
280
+ const validator = getValidator(schemaId);
281
+ const validCurrencies = ["GBP", "USD", "EUR"];
282
+
283
+ validCurrencies.forEach((currency) => {
284
+ const transaction = {
285
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
286
+ status: "active",
287
+ participants: [
288
+ {
289
+ role: "Buyer",
290
+ participantStatus: "Active",
291
+ },
292
+ ],
293
+ offers: {
294
+ "offer-1": {
295
+ amount: 250000,
296
+ currency: currency,
297
+ status: "Pending",
298
+ },
299
+ },
300
+ };
301
+
302
+ const isValid = validator(transaction);
303
+ expect(isValid).toBe(true);
304
+ });
305
+ });
306
+
307
+ test("accepts zero amount", () => {
308
+ const validator = getValidator(schemaId);
309
+ const transaction = {
310
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
311
+ status: "active",
312
+ participants: [
313
+ {
314
+ role: "Buyer",
315
+ participantStatus: "Active",
316
+ },
317
+ ],
318
+ offers: {
319
+ "offer-1": {
320
+ amount: 0,
321
+ currency: "GBP",
322
+ status: "Note of Interest",
323
+ },
324
+ },
325
+ };
326
+
327
+ const isValid = validator(transaction);
328
+ expect(isValid).toBe(true);
329
+ });
330
+ });
331
+
332
+ describe("Invalid offer contents", () => {
333
+ test("accepts offer without amount field (no required fields in schema)", () => {
334
+ const validator = getValidator(schemaId);
335
+ const transaction = {
336
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
337
+ status: "active",
338
+ participants: [
339
+ {
340
+ role: "Buyer",
341
+ participantStatus: "Active",
342
+ },
343
+ ],
344
+ offers: {
345
+ "offer-1": {
346
+ currency: "GBP",
347
+ status: "Pending",
348
+ },
349
+ },
350
+ };
351
+
352
+ const isValid = validator(transaction);
353
+ expect(isValid).toBe(true);
354
+ });
355
+
356
+ test("accepts offer without currency field (no required fields in schema)", () => {
357
+ const validator = getValidator(schemaId);
358
+ const transaction = {
359
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
360
+ status: "active",
361
+ participants: [
362
+ {
363
+ role: "Buyer",
364
+ participantStatus: "Active",
365
+ },
366
+ ],
367
+ offers: {
368
+ "offer-1": {
369
+ amount: 250000,
370
+ status: "Pending",
371
+ },
372
+ },
373
+ };
374
+
375
+ const isValid = validator(transaction);
376
+ expect(isValid).toBe(true);
377
+ });
378
+
379
+ test("accepts offer without status field (no required fields in schema)", () => {
380
+ const validator = getValidator(schemaId);
381
+ const transaction = {
382
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
383
+ status: "active",
384
+ participants: [
385
+ {
386
+ role: "Buyer",
387
+ participantStatus: "Active",
388
+ },
389
+ ],
390
+ offers: {
391
+ "offer-1": {
392
+ amount: 250000,
393
+ currency: "GBP",
394
+ },
395
+ },
396
+ };
397
+
398
+ const isValid = validator(transaction);
399
+ expect(isValid).toBe(true);
400
+ });
401
+
402
+ test("rejects offer with invalid status value", () => {
403
+ const validator = getValidator(schemaId);
404
+ const transaction = {
405
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
406
+ status: "active",
407
+ participants: [
408
+ {
409
+ role: "Buyer",
410
+ participantStatus: "Active",
411
+ },
412
+ ],
413
+ offers: {
414
+ "offer-1": {
415
+ amount: 250000,
416
+ currency: "GBP",
417
+ status: "invalid-status",
418
+ },
419
+ },
420
+ };
421
+
422
+ const isValid = validator(transaction);
423
+ expect(isValid).toBe(false);
424
+ });
425
+
426
+ test("rejects offer with negative amount", () => {
427
+ const validator = getValidator(schemaId);
428
+ const transaction = {
429
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
430
+ status: "active",
431
+ participants: [
432
+ {
433
+ role: "Buyer",
434
+ participantStatus: "Active",
435
+ },
436
+ ],
437
+ offers: {
438
+ "offer-1": {
439
+ amount: -100000,
440
+ currency: "GBP",
441
+ status: "Pending",
442
+ },
443
+ },
444
+ };
445
+
446
+ const isValid = validator(transaction);
447
+ expect(isValid).toBe(false);
448
+ });
449
+
450
+ test("rejects offer with invalid currency code format", () => {
451
+ const validator = getValidator(schemaId);
452
+ const transaction = {
453
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
454
+ status: "active",
455
+ participants: [
456
+ {
457
+ role: "Buyer",
458
+ participantStatus: "Active",
459
+ },
460
+ ],
461
+ offers: {
462
+ "offer-1": {
463
+ amount: 250000,
464
+ currency: "gb",
465
+ status: "Pending",
466
+ },
467
+ },
468
+ };
469
+
470
+ const isValid = validator(transaction);
471
+ expect(isValid).toBe(false);
472
+ });
473
+
474
+ test("rejects offer with lowercase currency code", () => {
475
+ const validator = getValidator(schemaId);
476
+ const transaction = {
477
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
478
+ status: "active",
479
+ participants: [
480
+ {
481
+ role: "Buyer",
482
+ participantStatus: "Active",
483
+ },
484
+ ],
485
+ offers: {
486
+ "offer-1": {
487
+ amount: 250000,
488
+ currency: "gbp",
489
+ status: "Pending",
490
+ },
491
+ },
492
+ };
493
+
494
+ const isValid = validator(transaction);
495
+ expect(isValid).toBe(false);
496
+ });
497
+
498
+ test("rejects offer with non-array inclusions", () => {
499
+ const validator = getValidator(schemaId);
500
+ const transaction = {
501
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
502
+ status: "active",
503
+ participants: [
504
+ {
505
+ role: "Buyer",
506
+ participantStatus: "Active",
507
+ },
508
+ ],
509
+ offers: {
510
+ "offer-1": {
511
+ amount: 250000,
512
+ currency: "GBP",
513
+ status: "Pending",
514
+ inclusions: "curtains",
515
+ },
516
+ },
517
+ };
518
+
519
+ const isValid = validator(transaction);
520
+ expect(isValid).toBe(false);
521
+ });
522
+
523
+ test("rejects offer with non-string items in inclusions array", () => {
524
+ const validator = getValidator(schemaId);
525
+ const transaction = {
526
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
527
+ status: "active",
528
+ participants: [
529
+ {
530
+ role: "Buyer",
531
+ participantStatus: "Active",
532
+ },
533
+ ],
534
+ offers: {
535
+ "offer-1": {
536
+ amount: 250000,
537
+ currency: "GBP",
538
+ status: "Pending",
539
+ inclusions: ["curtains", 123, "carpets"],
540
+ },
541
+ },
542
+ };
543
+
544
+ const isValid = validator(transaction);
545
+ expect(isValid).toBe(false);
546
+ });
547
+
548
+ test("rejects offer with non-array exclusions", () => {
549
+ const validator = getValidator(schemaId);
550
+ const transaction = {
551
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
552
+ status: "active",
553
+ participants: [
554
+ {
555
+ role: "Buyer",
556
+ participantStatus: "Active",
557
+ },
558
+ ],
559
+ offers: {
560
+ "offer-1": {
561
+ amount: 250000,
562
+ currency: "GBP",
563
+ status: "Pending",
564
+ exclusions: { item: "garden furniture" },
565
+ },
566
+ },
567
+ };
568
+
569
+ const isValid = validator(transaction);
570
+ expect(isValid).toBe(false);
571
+ });
572
+
573
+ test("rejects offer with non-array conditions", () => {
574
+ const validator = getValidator(schemaId);
575
+ const transaction = {
576
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
577
+ status: "active",
578
+ participants: [
579
+ {
580
+ role: "Buyer",
581
+ participantStatus: "Active",
582
+ },
583
+ ],
584
+ offers: {
585
+ "offer-1": {
586
+ amount: 250000,
587
+ currency: "GBP",
588
+ status: "Pending",
589
+ conditions: "Subject to survey",
590
+ },
591
+ },
592
+ };
593
+
594
+ const isValid = validator(transaction);
595
+ expect(isValid).toBe(false);
596
+ });
597
+ });
598
+
599
+ describe("Empty offers object", () => {
600
+ test("accepts empty offers object", () => {
601
+ const validator = getValidator(schemaId);
602
+ const transaction = {
603
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
604
+ status: "active",
605
+ participants: [
606
+ {
607
+ role: "Buyer",
608
+ participantStatus: "Active",
609
+ },
610
+ ],
611
+ offers: {},
612
+ };
613
+
614
+ const isValid = validator(transaction);
615
+ expect(isValid).toBe(true);
616
+ });
617
+
618
+ test("accepts transaction without offers property", () => {
619
+ const validator = getValidator(schemaId);
620
+ const transaction = {
621
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
622
+ status: "active",
623
+ participants: [
624
+ {
625
+ role: "Buyer",
626
+ participantStatus: "Active",
627
+ },
628
+ ],
629
+ };
630
+
631
+ const isValid = validator(transaction);
632
+ expect(isValid).toBe(true);
633
+ });
634
+ });
635
+
636
+ describe("Buyer participant with offerId", () => {
637
+ test("accepts Buyer with valid offerId", () => {
638
+ const validator = getValidator(schemaId);
639
+ const transaction = {
640
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
641
+ status: "active",
642
+ participants: [
643
+ {
644
+ role: "Buyer",
645
+ participantStatus: "Active",
646
+ offerId: "550e8400-e29b-41d4-a716-446655440000",
647
+ },
648
+ ],
649
+ offers: {
650
+ "550e8400-e29b-41d4-a716-446655440000": {
651
+ amount: 250000,
652
+ currency: "GBP",
653
+ status: "Accepted",
654
+ },
655
+ },
656
+ };
657
+
658
+ const isValid = validator(transaction);
659
+ expect(isValid).toBe(true);
660
+ });
661
+
662
+ test("accepts Buyer with offerId as DID", () => {
663
+ const validator = getValidator(schemaId);
664
+ const transaction = {
665
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
666
+ status: "active",
667
+ participants: [
668
+ {
669
+ role: "Buyer",
670
+ participantStatus: "Active",
671
+ offerId: "did:example:buyer123",
672
+ },
673
+ ],
674
+ offers: {
675
+ "did:example:buyer123": {
676
+ amount: 260000,
677
+ currency: "GBP",
678
+ status: "Accepted",
679
+ },
680
+ },
681
+ };
682
+
683
+ const isValid = validator(transaction);
684
+ expect(isValid).toBe(true);
685
+ });
686
+
687
+ test("accepts Buyer without offerId", () => {
688
+ const validator = getValidator(schemaId);
689
+ const transaction = {
690
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
691
+ status: "active",
692
+ participants: [
693
+ {
694
+ role: "Buyer",
695
+ participantStatus: "Active",
696
+ },
697
+ ],
698
+ };
699
+
700
+ const isValid = validator(transaction);
701
+ expect(isValid).toBe(true);
702
+ });
703
+
704
+ test("rejects Buyer with invalid offerId format starting with dash", () => {
705
+ const validator = getValidator(schemaId);
706
+ const transaction = {
707
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
708
+ status: "active",
709
+ participants: [
710
+ {
711
+ role: "Buyer",
712
+ participantStatus: "Active",
713
+ offerId: "-invalid-offer-id",
714
+ },
715
+ ],
716
+ };
717
+
718
+ const isValid = validator(transaction);
719
+ expect(isValid).toBe(false);
720
+ // Should fail because offerId pattern requires starting with alphanumeric
721
+ const offerIdError = validator.errors.find(
722
+ (e) => e.instancePath.includes("offerId")
723
+ );
724
+ expect(offerIdError).toBeDefined();
725
+ });
726
+
727
+ test("rejects Buyer with offerId containing spaces", () => {
728
+ const validator = getValidator(schemaId);
729
+ const transaction = {
730
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
731
+ status: "active",
732
+ participants: [
733
+ {
734
+ role: "Buyer",
735
+ participantStatus: "Active",
736
+ offerId: "invalid offer id",
737
+ },
738
+ ],
739
+ };
740
+
741
+ const isValid = validator(transaction);
742
+ expect(isValid).toBe(false);
743
+ });
744
+
745
+ test("accepts multiple Buyers with different offerIds", () => {
746
+ const validator = getValidator(schemaId);
747
+ const transaction = {
748
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
749
+ status: "active",
750
+ participants: [
751
+ {
752
+ role: "Buyer",
753
+ participantStatus: "Active",
754
+ offerId: "offer-1",
755
+ },
756
+ {
757
+ role: "Buyer",
758
+ participantStatus: "Active",
759
+ offerId: "offer-2",
760
+ },
761
+ ],
762
+ offers: {
763
+ "offer-1": {
764
+ amount: 250000,
765
+ currency: "GBP",
766
+ status: "Pending",
767
+ },
768
+ "offer-2": {
769
+ amount: 260000,
770
+ currency: "GBP",
771
+ status: "Accepted",
772
+ },
773
+ },
774
+ };
775
+
776
+ const isValid = validator(transaction);
777
+ expect(isValid).toBe(true);
778
+ });
779
+
780
+ test("accepts Buyer with offerId referencing non-existent offer (schema allows this)", () => {
781
+ // Note: The schema doesn't enforce referential integrity between offerId and offers keys
782
+ // This would need to be enforced at the application level
783
+ const validator = getValidator(schemaId);
784
+ const transaction = {
785
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
786
+ status: "active",
787
+ participants: [
788
+ {
789
+ role: "Buyer",
790
+ participantStatus: "Active",
791
+ offerId: "non-existent-offer",
792
+ },
793
+ ],
794
+ offers: {},
795
+ };
796
+
797
+ const isValid = validator(transaction);
798
+ expect(isValid).toBe(true);
799
+ });
800
+
801
+ test("allows offerId on non-Buyer participants (schema doesn't restrict additionalProperties)", () => {
802
+ // Note: The schema uses oneOf with discriminator on role, but doesn't use
803
+ // additionalProperties: false, so extra properties are allowed on all participants
804
+ // This is intentional to maintain flexibility
805
+ const validator = getValidator(schemaId);
806
+ const transaction = {
807
+ transactionId: "123e4567-e89b-12d3-a456-426614174000",
808
+ status: "active",
809
+ participants: [
810
+ {
811
+ role: "Seller",
812
+ participantStatus: "Active",
813
+ offerId: "offer-1",
814
+ },
815
+ ],
816
+ };
817
+
818
+ const isValid = validator(transaction);
819
+ // This will actually pass because additionalProperties is not restricted
820
+ expect(isValid).toBe(true);
821
+ });
822
+ });
823
+ });