@brightchain/brightchain-lib 0.18.0 → 0.20.0

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 (372) hide show
  1. package/package.json +2 -2
  2. package/src/lib/db/aggregation.d.ts +20 -0
  3. package/src/lib/db/aggregation.d.ts.map +1 -0
  4. package/src/lib/db/aggregation.js +407 -0
  5. package/src/lib/db/aggregation.js.map +1 -0
  6. package/src/lib/db/collection.d.ts +315 -0
  7. package/src/lib/db/collection.d.ts.map +1 -0
  8. package/src/lib/db/collection.js +1054 -0
  9. package/src/lib/db/collection.js.map +1 -0
  10. package/src/lib/db/cursor.d.ts +51 -0
  11. package/src/lib/db/cursor.d.ts.map +1 -0
  12. package/src/lib/db/cursor.js +100 -0
  13. package/src/lib/db/cursor.js.map +1 -0
  14. package/src/lib/db/errors.d.ts +83 -0
  15. package/src/lib/db/errors.d.ts.map +1 -0
  16. package/src/lib/db/errors.js +103 -0
  17. package/src/lib/db/errors.js.map +1 -0
  18. package/src/lib/db/inMemoryDatabase.d.ts +135 -0
  19. package/src/lib/db/inMemoryDatabase.d.ts.map +1 -0
  20. package/src/lib/db/inMemoryDatabase.js +258 -0
  21. package/src/lib/db/inMemoryDatabase.js.map +1 -0
  22. package/src/lib/db/inMemoryHeadRegistry.d.ts +33 -0
  23. package/src/lib/db/inMemoryHeadRegistry.d.ts.map +1 -0
  24. package/src/lib/db/inMemoryHeadRegistry.js +83 -0
  25. package/src/lib/db/inMemoryHeadRegistry.js.map +1 -0
  26. package/src/lib/db/index.d.ts +14 -0
  27. package/src/lib/db/index.d.ts.map +1 -0
  28. package/src/lib/db/index.js +18 -0
  29. package/src/lib/db/index.js.map +1 -0
  30. package/src/lib/db/indexing.d.ts +133 -0
  31. package/src/lib/db/indexing.d.ts.map +1 -0
  32. package/src/lib/db/indexing.js +287 -0
  33. package/src/lib/db/indexing.js.map +1 -0
  34. package/src/lib/db/queryEngine.d.ts +50 -0
  35. package/src/lib/db/queryEngine.d.ts.map +1 -0
  36. package/src/lib/db/queryEngine.js +461 -0
  37. package/src/lib/db/queryEngine.js.map +1 -0
  38. package/src/lib/db/schemaValidation.d.ts +41 -0
  39. package/src/lib/db/schemaValidation.d.ts.map +1 -0
  40. package/src/lib/db/schemaValidation.js +322 -0
  41. package/src/lib/db/schemaValidation.js.map +1 -0
  42. package/src/lib/db/transaction.d.ts +88 -0
  43. package/src/lib/db/transaction.d.ts.map +1 -0
  44. package/src/lib/db/transaction.js +112 -0
  45. package/src/lib/db/transaction.js.map +1 -0
  46. package/src/lib/db/types.d.ts +11 -0
  47. package/src/lib/db/types.d.ts.map +1 -0
  48. package/src/lib/db/types.js +11 -0
  49. package/src/lib/db/types.js.map +1 -0
  50. package/src/lib/db/updateEngine.d.ts +20 -0
  51. package/src/lib/db/updateEngine.d.ts.map +1 -0
  52. package/src/lib/db/updateEngine.js +193 -0
  53. package/src/lib/db/updateEngine.js.map +1 -0
  54. package/src/lib/db/uuidGenerator.d.ts +13 -0
  55. package/src/lib/db/uuidGenerator.d.ts.map +1 -0
  56. package/src/lib/db/uuidGenerator.js +34 -0
  57. package/src/lib/db/uuidGenerator.js.map +1 -0
  58. package/src/lib/documents/member/memberProfileHydration.d.ts.map +1 -1
  59. package/src/lib/documents/member/memberProfileHydration.js +6 -0
  60. package/src/lib/documents/member/memberProfileHydration.js.map +1 -1
  61. package/src/lib/enumerations/brightChainStrings.d.ts +39 -0
  62. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  63. package/src/lib/enumerations/brightChainStrings.js +47 -0
  64. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  65. package/src/lib/enumerations/identityValidationErrorType.d.ts +11 -0
  66. package/src/lib/enumerations/identityValidationErrorType.d.ts.map +1 -0
  67. package/src/lib/enumerations/identityValidationErrorType.js +15 -0
  68. package/src/lib/enumerations/identityValidationErrorType.js.map +1 -0
  69. package/src/lib/enumerations/index.d.ts +4 -0
  70. package/src/lib/enumerations/index.d.ts.map +1 -1
  71. package/src/lib/enumerations/index.js +5 -0
  72. package/src/lib/enumerations/index.js.map +1 -1
  73. package/src/lib/enumerations/memberStatusType.d.ts +2 -1
  74. package/src/lib/enumerations/memberStatusType.d.ts.map +1 -1
  75. package/src/lib/enumerations/memberStatusType.js +1 -0
  76. package/src/lib/enumerations/memberStatusType.js.map +1 -1
  77. package/src/lib/enumerations/proposalActionType.d.ts +22 -0
  78. package/src/lib/enumerations/proposalActionType.d.ts.map +1 -0
  79. package/src/lib/enumerations/proposalActionType.js +26 -0
  80. package/src/lib/enumerations/proposalActionType.js.map +1 -0
  81. package/src/lib/enumerations/proposalStatus.d.ts +14 -0
  82. package/src/lib/enumerations/proposalStatus.d.ts.map +1 -0
  83. package/src/lib/enumerations/proposalStatus.js +18 -0
  84. package/src/lib/enumerations/proposalStatus.js.map +1 -0
  85. package/src/lib/enumerations/quorumErrorType.d.ts +30 -1
  86. package/src/lib/enumerations/quorumErrorType.d.ts.map +1 -1
  87. package/src/lib/enumerations/quorumErrorType.js +37 -0
  88. package/src/lib/enumerations/quorumErrorType.js.map +1 -1
  89. package/src/lib/enumerations/quorumOperationalMode.d.ts +16 -0
  90. package/src/lib/enumerations/quorumOperationalMode.d.ts.map +1 -0
  91. package/src/lib/enumerations/quorumOperationalMode.js +20 -0
  92. package/src/lib/enumerations/quorumOperationalMode.js.map +1 -0
  93. package/src/lib/enumerations/sealingErrorType.d.ts +3 -1
  94. package/src/lib/enumerations/sealingErrorType.d.ts.map +1 -1
  95. package/src/lib/enumerations/sealingErrorType.js +2 -0
  96. package/src/lib/enumerations/sealingErrorType.js.map +1 -1
  97. package/src/lib/errors/identityValidationError.d.ts +8 -0
  98. package/src/lib/errors/identityValidationError.d.ts.map +1 -0
  99. package/src/lib/errors/identityValidationError.js +26 -0
  100. package/src/lib/errors/identityValidationError.js.map +1 -0
  101. package/src/lib/errors/index.d.ts +4 -0
  102. package/src/lib/errors/index.d.ts.map +1 -1
  103. package/src/lib/errors/index.js +7 -0
  104. package/src/lib/errors/index.js.map +1 -1
  105. package/src/lib/errors/memberIndexSchemaValidationError.d.ts +6 -0
  106. package/src/lib/errors/memberIndexSchemaValidationError.d.ts.map +1 -0
  107. package/src/lib/errors/memberIndexSchemaValidationError.js +15 -0
  108. package/src/lib/errors/memberIndexSchemaValidationError.js.map +1 -0
  109. package/src/lib/errors/quorumError.d.ts.map +1 -1
  110. package/src/lib/errors/quorumError.js +37 -0
  111. package/src/lib/errors/quorumError.js.map +1 -1
  112. package/src/lib/errors/sealingError.d.ts.map +1 -1
  113. package/src/lib/errors/sealingError.js +2 -0
  114. package/src/lib/errors/sealingError.js.map +1 -1
  115. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  116. package/src/lib/i18n/strings/englishUs.js +45 -0
  117. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  118. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  119. package/src/lib/i18n/strings/french.js +37 -0
  120. package/src/lib/i18n/strings/french.js.map +1 -1
  121. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  122. package/src/lib/i18n/strings/german.js +37 -0
  123. package/src/lib/i18n/strings/german.js.map +1 -1
  124. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  125. package/src/lib/i18n/strings/japanese.js +37 -0
  126. package/src/lib/i18n/strings/japanese.js.map +1 -1
  127. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  128. package/src/lib/i18n/strings/mandarin.js +37 -0
  129. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  130. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  131. package/src/lib/i18n/strings/spanish.js +37 -0
  132. package/src/lib/i18n/strings/spanish.js.map +1 -1
  133. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  134. package/src/lib/i18n/strings/ukrainian.js +37 -0
  135. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  136. package/src/lib/index.d.ts +12 -0
  137. package/src/lib/index.d.ts.map +1 -1
  138. package/src/lib/index.js +55 -1
  139. package/src/lib/index.js.map +1 -1
  140. package/src/lib/interfaces/aliasRecord.d.ts +34 -0
  141. package/src/lib/interfaces/aliasRecord.d.ts.map +1 -0
  142. package/src/lib/interfaces/aliasRecord.js +11 -0
  143. package/src/lib/interfaces/aliasRecord.js.map +1 -0
  144. package/src/lib/interfaces/api/index.d.ts +2 -0
  145. package/src/lib/interfaces/api/index.d.ts.map +1 -0
  146. package/src/lib/interfaces/api/index.js +5 -0
  147. package/src/lib/interfaces/api/index.js.map +1 -0
  148. package/src/lib/interfaces/api/quorumApi.d.ts +97 -0
  149. package/src/lib/interfaces/api/quorumApi.d.ts.map +1 -0
  150. package/src/lib/interfaces/api/quorumApi.js +12 -0
  151. package/src/lib/interfaces/api/quorumApi.js.map +1 -0
  152. package/src/lib/interfaces/auditLogEntry.d.ts +34 -0
  153. package/src/lib/interfaces/auditLogEntry.d.ts.map +1 -0
  154. package/src/lib/interfaces/auditLogEntry.js +10 -0
  155. package/src/lib/interfaces/auditLogEntry.js.map +1 -0
  156. package/src/lib/interfaces/availability/gossipService.d.ts +116 -2
  157. package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
  158. package/src/lib/interfaces/availability/gossipService.js +62 -0
  159. package/src/lib/interfaces/availability/gossipService.js.map +1 -1
  160. package/src/lib/interfaces/chainedAuditLogEntry.d.ts +27 -0
  161. package/src/lib/interfaces/chainedAuditLogEntry.d.ts.map +1 -0
  162. package/src/lib/interfaces/chainedAuditLogEntry.js +12 -0
  163. package/src/lib/interfaces/chainedAuditLogEntry.js.map +1 -0
  164. package/src/lib/interfaces/contentWithIdentity.d.ts +39 -0
  165. package/src/lib/interfaces/contentWithIdentity.d.ts.map +1 -0
  166. package/src/lib/interfaces/contentWithIdentity.js +24 -0
  167. package/src/lib/interfaces/contentWithIdentity.js.map +1 -0
  168. package/src/lib/interfaces/energyAccount.d.ts +3 -1
  169. package/src/lib/interfaces/energyAccount.d.ts.map +1 -1
  170. package/src/lib/interfaces/identityRecoveryRecord.d.ts +41 -0
  171. package/src/lib/interfaces/identityRecoveryRecord.d.ts.map +1 -0
  172. package/src/lib/interfaces/identityRecoveryRecord.js +11 -0
  173. package/src/lib/interfaces/identityRecoveryRecord.js.map +1 -0
  174. package/src/lib/interfaces/index.d.ts +17 -0
  175. package/src/lib/interfaces/index.d.ts.map +1 -1
  176. package/src/lib/interfaces/index.js +4 -0
  177. package/src/lib/interfaces/index.js.map +1 -1
  178. package/src/lib/interfaces/initResult.d.ts +6 -6
  179. package/src/lib/interfaces/initResult.d.ts.map +1 -1
  180. package/src/lib/interfaces/member/brightChainBaseInitResult.d.ts +4 -1
  181. package/src/lib/interfaces/member/brightChainBaseInitResult.d.ts.map +1 -1
  182. package/src/lib/interfaces/member/brightChainInitResult.d.ts +1 -1
  183. package/src/lib/interfaces/member/brightChainInitResult.d.ts.map +1 -1
  184. package/src/lib/interfaces/member/memberData.d.ts +3 -0
  185. package/src/lib/interfaces/member/memberData.d.ts.map +1 -1
  186. package/src/lib/interfaces/member/profileStorage.d.ts +5 -0
  187. package/src/lib/interfaces/member/profileStorage.d.ts.map +1 -1
  188. package/src/lib/interfaces/member-init-config.d.ts +20 -0
  189. package/src/lib/interfaces/member-init-config.d.ts.map +1 -0
  190. package/src/lib/interfaces/member-init-config.js +3 -0
  191. package/src/lib/interfaces/member-init-config.js.map +1 -0
  192. package/src/lib/interfaces/operationalState.d.ts +20 -0
  193. package/src/lib/interfaces/operationalState.d.ts.map +1 -0
  194. package/src/lib/interfaces/operationalState.js +10 -0
  195. package/src/lib/interfaces/operationalState.js.map +1 -0
  196. package/src/lib/interfaces/proposal.d.ts +59 -0
  197. package/src/lib/interfaces/proposal.d.ts.map +1 -0
  198. package/src/lib/interfaces/proposal.js +10 -0
  199. package/src/lib/interfaces/proposal.js.map +1 -0
  200. package/src/lib/interfaces/quorumDocumentMetadata.d.ts +20 -0
  201. package/src/lib/interfaces/quorumDocumentMetadata.d.ts.map +1 -0
  202. package/src/lib/interfaces/quorumDocumentMetadata.js +10 -0
  203. package/src/lib/interfaces/quorumDocumentMetadata.js.map +1 -0
  204. package/src/lib/interfaces/quorumEpoch.d.ts +33 -0
  205. package/src/lib/interfaces/quorumEpoch.d.ts.map +1 -0
  206. package/src/lib/interfaces/quorumEpoch.js +11 -0
  207. package/src/lib/interfaces/quorumEpoch.js.map +1 -0
  208. package/src/lib/interfaces/quorumMetrics.d.ts +49 -0
  209. package/src/lib/interfaces/quorumMetrics.d.ts.map +1 -0
  210. package/src/lib/interfaces/quorumMetrics.js +10 -0
  211. package/src/lib/interfaces/quorumMetrics.js.map +1 -0
  212. package/src/lib/interfaces/redistributionJournalEntry.d.ts +25 -0
  213. package/src/lib/interfaces/redistributionJournalEntry.d.ts.map +1 -0
  214. package/src/lib/interfaces/redistributionJournalEntry.js +11 -0
  215. package/src/lib/interfaces/redistributionJournalEntry.js.map +1 -0
  216. package/src/lib/interfaces/responses/backupCodesResponseData.d.ts +3 -5
  217. package/src/lib/interfaces/responses/backupCodesResponseData.d.ts.map +1 -1
  218. package/src/lib/interfaces/responses/challengeResponseData.d.ts +5 -0
  219. package/src/lib/interfaces/responses/challengeResponseData.d.ts.map +1 -1
  220. package/src/lib/interfaces/responses/codeCountResponseData.d.ts +3 -5
  221. package/src/lib/interfaces/responses/codeCountResponseData.d.ts.map +1 -1
  222. package/src/lib/interfaces/responses/index.d.ts +4 -2
  223. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  224. package/src/lib/interfaces/responses/passwordChangeResponse.d.ts +2 -0
  225. package/src/lib/interfaces/responses/passwordChangeResponse.d.ts.map +1 -0
  226. package/src/lib/interfaces/responses/passwordChangeResponse.js +3 -0
  227. package/src/lib/interfaces/responses/passwordChangeResponse.js.map +1 -0
  228. package/src/lib/interfaces/responses/recoveryResponse.d.ts +2 -0
  229. package/src/lib/interfaces/responses/recoveryResponse.d.ts.map +1 -0
  230. package/src/lib/interfaces/responses/recoveryResponse.js +3 -0
  231. package/src/lib/interfaces/responses/recoveryResponse.js.map +1 -0
  232. package/src/lib/interfaces/responses/registrationResponseData.d.ts +2 -2
  233. package/src/lib/interfaces/responses/registrationResponseData.d.ts.map +1 -1
  234. package/src/lib/interfaces/services/contentIngestion.d.ts +61 -0
  235. package/src/lib/interfaces/services/contentIngestion.d.ts.map +1 -0
  236. package/src/lib/interfaces/services/contentIngestion.js +12 -0
  237. package/src/lib/interfaces/services/contentIngestion.js.map +1 -0
  238. package/src/lib/interfaces/services/expirationScheduler.d.ts +55 -0
  239. package/src/lib/interfaces/services/expirationScheduler.d.ts.map +1 -0
  240. package/src/lib/interfaces/services/expirationScheduler.js +11 -0
  241. package/src/lib/interfaces/services/expirationScheduler.js.map +1 -0
  242. package/src/lib/interfaces/services/identitySealingPipeline.d.ts +56 -0
  243. package/src/lib/interfaces/services/identitySealingPipeline.d.ts.map +1 -0
  244. package/src/lib/interfaces/services/identitySealingPipeline.js +12 -0
  245. package/src/lib/interfaces/services/identitySealingPipeline.js.map +1 -0
  246. package/src/lib/interfaces/services/identityValidator.d.ts +44 -0
  247. package/src/lib/interfaces/services/identityValidator.d.ts.map +1 -0
  248. package/src/lib/interfaces/services/identityValidator.js +11 -0
  249. package/src/lib/interfaces/services/identityValidator.js.map +1 -0
  250. package/src/lib/interfaces/services/index.d.ts +9 -0
  251. package/src/lib/interfaces/services/index.d.ts.map +1 -1
  252. package/src/lib/interfaces/services/membershipProof.d.ts +40 -0
  253. package/src/lib/interfaces/services/membershipProof.d.ts.map +1 -0
  254. package/src/lib/interfaces/services/membershipProof.js +11 -0
  255. package/src/lib/interfaces/services/membershipProof.js.map +1 -0
  256. package/src/lib/interfaces/services/operatorPrompt.d.ts +68 -0
  257. package/src/lib/interfaces/services/operatorPrompt.d.ts.map +1 -0
  258. package/src/lib/interfaces/services/operatorPrompt.js +11 -0
  259. package/src/lib/interfaces/services/operatorPrompt.js.map +1 -0
  260. package/src/lib/interfaces/services/quorumDatabase.d.ts +207 -0
  261. package/src/lib/interfaces/services/quorumDatabase.d.ts.map +1 -0
  262. package/src/lib/interfaces/services/quorumDatabase.js +13 -0
  263. package/src/lib/interfaces/services/quorumDatabase.js.map +1 -0
  264. package/src/lib/interfaces/services/quorumService.d.ts +3 -0
  265. package/src/lib/interfaces/services/quorumService.d.ts.map +1 -1
  266. package/src/lib/interfaces/services/quorumStateMachine.d.ts +128 -0
  267. package/src/lib/interfaces/services/quorumStateMachine.d.ts.map +1 -0
  268. package/src/lib/interfaces/services/quorumStateMachine.js +12 -0
  269. package/src/lib/interfaces/services/quorumStateMachine.js.map +1 -0
  270. package/src/lib/interfaces/services/redistributionConfig.d.ts +20 -0
  271. package/src/lib/interfaces/services/redistributionConfig.d.ts.map +1 -0
  272. package/src/lib/interfaces/services/redistributionConfig.js +10 -0
  273. package/src/lib/interfaces/services/redistributionConfig.js.map +1 -0
  274. package/src/lib/interfaces/statuteConfig.d.ts +22 -0
  275. package/src/lib/interfaces/statuteConfig.d.ts.map +1 -0
  276. package/src/lib/interfaces/statuteConfig.js +18 -0
  277. package/src/lib/interfaces/statuteConfig.js.map +1 -0
  278. package/src/lib/interfaces/storage/documentStore.d.ts +46 -24
  279. package/src/lib/interfaces/storage/documentStore.d.ts.map +1 -1
  280. package/src/lib/interfaces/storage/documentStore.js +6 -2
  281. package/src/lib/interfaces/storage/documentStore.js.map +1 -1
  282. package/src/lib/interfaces/storage/index.d.ts +5 -0
  283. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  284. package/src/lib/interfaces/storage/index.js.map +1 -1
  285. package/src/lib/interfaces/storage/memberIndexSchema.d.ts +11 -0
  286. package/src/lib/interfaces/storage/memberIndexSchema.d.ts.map +1 -0
  287. package/src/lib/interfaces/storage/memberIndexSchema.js +26 -0
  288. package/src/lib/interfaces/storage/memberIndexSchema.js.map +1 -0
  289. package/src/lib/interfaces/storage/mnemonicSchema.d.ts +10 -0
  290. package/src/lib/interfaces/storage/mnemonicSchema.d.ts.map +1 -0
  291. package/src/lib/interfaces/storage/mnemonicSchema.js +22 -0
  292. package/src/lib/interfaces/storage/mnemonicSchema.js.map +1 -0
  293. package/src/lib/interfaces/storage/roleSchema.d.ts +10 -0
  294. package/src/lib/interfaces/storage/roleSchema.d.ts.map +1 -0
  295. package/src/lib/interfaces/storage/roleSchema.js +45 -0
  296. package/src/lib/interfaces/storage/roleSchema.js.map +1 -0
  297. package/src/lib/interfaces/storage/userRoleSchema.d.ts +10 -0
  298. package/src/lib/interfaces/storage/userRoleSchema.d.ts.map +1 -0
  299. package/src/lib/interfaces/storage/userRoleSchema.js +35 -0
  300. package/src/lib/interfaces/storage/userRoleSchema.js.map +1 -0
  301. package/src/lib/interfaces/storage/userSchema.d.ts +12 -0
  302. package/src/lib/interfaces/storage/userSchema.d.ts.map +1 -0
  303. package/src/lib/interfaces/storage/userSchema.js +62 -0
  304. package/src/lib/interfaces/storage/userSchema.js.map +1 -0
  305. package/src/lib/interfaces/userManagement.d.ts +49 -0
  306. package/src/lib/interfaces/userManagement.d.ts.map +1 -0
  307. package/src/lib/interfaces/userManagement.js +9 -0
  308. package/src/lib/interfaces/userManagement.js.map +1 -0
  309. package/src/lib/interfaces/vote.d.ts +45 -0
  310. package/src/lib/interfaces/vote.d.ts.map +1 -0
  311. package/src/lib/interfaces/vote.js +10 -0
  312. package/src/lib/interfaces/vote.js.map +1 -0
  313. package/src/lib/quorumDataRecord.d.ts +7 -1
  314. package/src/lib/quorumDataRecord.d.ts.map +1 -1
  315. package/src/lib/quorumDataRecord.js +12 -4
  316. package/src/lib/quorumDataRecord.js.map +1 -1
  317. package/src/lib/quorumDataRecordDto.d.ts +6 -0
  318. package/src/lib/quorumDataRecordDto.d.ts.map +1 -1
  319. package/src/lib/services/aliasRegistry.d.ts +77 -0
  320. package/src/lib/services/aliasRegistry.d.ts.map +1 -0
  321. package/src/lib/services/aliasRegistry.js +138 -0
  322. package/src/lib/services/aliasRegistry.js.map +1 -0
  323. package/src/lib/services/auditLogService.d.ts +100 -0
  324. package/src/lib/services/auditLogService.d.ts.map +1 -0
  325. package/src/lib/services/auditLogService.js +223 -0
  326. package/src/lib/services/auditLogService.js.map +1 -0
  327. package/src/lib/services/blockService.d.ts +2 -1
  328. package/src/lib/services/blockService.d.ts.map +1 -1
  329. package/src/lib/services/blockService.js +7 -2
  330. package/src/lib/services/blockService.js.map +1 -1
  331. package/src/lib/services/identitySealingPipeline.d.ts +120 -0
  332. package/src/lib/services/identitySealingPipeline.d.ts.map +1 -0
  333. package/src/lib/services/identitySealingPipeline.js +288 -0
  334. package/src/lib/services/identitySealingPipeline.js.map +1 -0
  335. package/src/lib/services/identityValidator.d.ts +75 -0
  336. package/src/lib/services/identityValidator.d.ts.map +1 -0
  337. package/src/lib/services/identityValidator.js +202 -0
  338. package/src/lib/services/identityValidator.js.map +1 -0
  339. package/src/lib/services/index.d.ts +6 -0
  340. package/src/lib/services/index.d.ts.map +1 -1
  341. package/src/lib/services/index.js +6 -0
  342. package/src/lib/services/index.js.map +1 -1
  343. package/src/lib/services/member/memberCblService.d.ts.map +1 -1
  344. package/src/lib/services/member/memberCblService.js +12 -1
  345. package/src/lib/services/member/memberCblService.js.map +1 -1
  346. package/src/lib/services/memberStore.d.ts.map +1 -1
  347. package/src/lib/services/memberStore.js +2 -0
  348. package/src/lib/services/memberStore.js.map +1 -1
  349. package/src/lib/services/membershipProofService.d.ts +90 -0
  350. package/src/lib/services/membershipProofService.d.ts.map +1 -0
  351. package/src/lib/services/membershipProofService.js +361 -0
  352. package/src/lib/services/membershipProofService.js.map +1 -0
  353. package/src/lib/services/quorumStateMachine.d.ts +336 -0
  354. package/src/lib/services/quorumStateMachine.d.ts.map +1 -0
  355. package/src/lib/services/quorumStateMachine.js +1396 -0
  356. package/src/lib/services/quorumStateMachine.js.map +1 -0
  357. package/src/lib/services/sealing.service.d.ts +80 -0
  358. package/src/lib/services/sealing.service.d.ts.map +1 -1
  359. package/src/lib/services/sealing.service.js +192 -0
  360. package/src/lib/services/sealing.service.js.map +1 -1
  361. package/src/lib/stores/energyAccountStore.d.ts +13 -11
  362. package/src/lib/stores/energyAccountStore.d.ts.map +1 -1
  363. package/src/lib/stores/energyAccountStore.js +18 -20
  364. package/src/lib/stores/energyAccountStore.js.map +1 -1
  365. /package/{BLOCK_COVERAGE_AUDIT.md → brightchain-lib/BLOCK_COVERAGE_AUDIT.md} +0 -0
  366. /package/{BROWSER_COMPAT.md → brightchain-lib/BROWSER_COMPAT.md} +0 -0
  367. /package/{DEPRECATIONS.md → brightchain-lib/DEPRECATIONS.md} +0 -0
  368. /package/{DEPRECATIONS_REMOVED.md → brightchain-lib/DEPRECATIONS_REMOVED.md} +0 -0
  369. /package/{MIGRATION.md → brightchain-lib/MIGRATION.md} +0 -0
  370. /package/{NAMING_AUDIT.md → brightchain-lib/NAMING_AUDIT.md} +0 -0
  371. /package/{NAMING_CONVENTIONS.md → brightchain-lib/NAMING_CONVENTIONS.md} +0 -0
  372. /package/{README.md → brightchain-lib/README.md} +0 -0
@@ -0,0 +1,461 @@
1
+ "use strict";
2
+ /**
3
+ * Query engine – evaluates MongoDB-style filter queries against documents.
4
+ *
5
+ * Supports:
6
+ * - Comparison: $eq, $ne, $gt, $gte, $lt, $lte
7
+ * - Set membership: $in, $nin
8
+ * - Pattern: $regex
9
+ * - Existence: $exists
10
+ * - Array: $elemMatch, $size, $all
11
+ * - Logical: $and, $or, $nor, $not
12
+ * - Type: $type
13
+ * - Text: $text / $search (full-text search across indexed fields)
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.setTextSearchFields = setTextSearchFields;
17
+ exports.getTextSearchFields = getTextSearchFields;
18
+ exports.compareValues = compareValues;
19
+ exports.deepEquals = deepEquals;
20
+ exports.matchesFilter = matchesFilter;
21
+ exports.applyProjection = applyProjection;
22
+ exports.sortDocuments = sortDocuments;
23
+ exports.tokenize = tokenize;
24
+ /** Reserved operator keys */
25
+ const LOGICAL_OPS = new Set(['$and', '$or', '$nor', '$not']);
26
+ /** Fields to search for $text queries – set by the collection before querying */
27
+ let textSearchFields = [];
28
+ /**
29
+ * Configure which fields are included in $text search.
30
+ * Call this before running a filter that contains $text.
31
+ */
32
+ function setTextSearchFields(fields) {
33
+ textSearchFields = fields;
34
+ }
35
+ /**
36
+ * Get the currently configured text search fields.
37
+ */
38
+ function getTextSearchFields() {
39
+ return textSearchFields;
40
+ }
41
+ /**
42
+ * Resolve a potentially nested field path like "address.city" on a document.
43
+ */
44
+ function getNestedValue(doc, path) {
45
+ const parts = path.split('.');
46
+ let current = doc;
47
+ for (const part of parts) {
48
+ if (current === null || current === undefined)
49
+ return undefined;
50
+ if (Array.isArray(current)) {
51
+ const idx = Number(part);
52
+ if (!Number.isNaN(idx)) {
53
+ current = current[idx];
54
+ }
55
+ else {
56
+ // Array implicit iteration – match any element
57
+ const results = current
58
+ .map((item) => typeof item === 'object' && item !== null
59
+ ? item[part]
60
+ : undefined)
61
+ .filter((v) => v !== undefined);
62
+ return results.length === 1
63
+ ? results[0]
64
+ : results.length > 0
65
+ ? results
66
+ : undefined;
67
+ }
68
+ }
69
+ else if (typeof current === 'object') {
70
+ current = current[part];
71
+ }
72
+ else {
73
+ return undefined;
74
+ }
75
+ }
76
+ return current;
77
+ }
78
+ /**
79
+ * Compare two values for ordering (like MongoDB's BSON comparison).
80
+ * Returns negative if a < b, 0 if equal, positive if a > b.
81
+ */
82
+ function compareValues(a, b) {
83
+ if (a === b)
84
+ return 0;
85
+ if (a === null || a === undefined)
86
+ return -1;
87
+ if (b === null || b === undefined)
88
+ return 1;
89
+ if (typeof a === 'number' && typeof b === 'number')
90
+ return a - b;
91
+ if (typeof a === 'string' && typeof b === 'string')
92
+ return a.localeCompare(b);
93
+ if (typeof a === 'boolean' && typeof b === 'boolean')
94
+ return a === b ? 0 : a ? 1 : -1;
95
+ if (a instanceof Date && b instanceof Date)
96
+ return a.getTime() - b.getTime();
97
+ // Fallback: stringify comparison
98
+ return String(a).localeCompare(String(b));
99
+ }
100
+ /**
101
+ * Check if a value matches a filter operator object.
102
+ */
103
+ function matchOperator(value, op) {
104
+ for (const [key, operand] of Object.entries(op)) {
105
+ switch (key) {
106
+ case '$eq':
107
+ if (!deepEquals(value, operand))
108
+ return false;
109
+ break;
110
+ case '$ne':
111
+ if (deepEquals(value, operand))
112
+ return false;
113
+ break;
114
+ case '$gt':
115
+ if (compareValues(value, operand) <= 0)
116
+ return false;
117
+ break;
118
+ case '$gte':
119
+ if (compareValues(value, operand) < 0)
120
+ return false;
121
+ break;
122
+ case '$lt':
123
+ if (compareValues(value, operand) >= 0)
124
+ return false;
125
+ break;
126
+ case '$lte':
127
+ if (compareValues(value, operand) > 0)
128
+ return false;
129
+ break;
130
+ case '$in': {
131
+ const arr = operand;
132
+ if (!arr.some((item) => deepEquals(value, item)))
133
+ return false;
134
+ break;
135
+ }
136
+ case '$nin': {
137
+ const arr = operand;
138
+ if (arr.some((item) => deepEquals(value, item)))
139
+ return false;
140
+ break;
141
+ }
142
+ case '$regex': {
143
+ if (typeof value !== 'string')
144
+ return false;
145
+ const re = operand instanceof RegExp ? operand : new RegExp(operand);
146
+ if (!re.test(value))
147
+ return false;
148
+ break;
149
+ }
150
+ case '$exists':
151
+ if (operand && value === undefined)
152
+ return false;
153
+ if (!operand && value !== undefined)
154
+ return false;
155
+ break;
156
+ case '$not':
157
+ if (matchOperator(value, operand))
158
+ return false;
159
+ break;
160
+ case '$elemMatch': {
161
+ if (!Array.isArray(value))
162
+ return false;
163
+ const subFilter = operand;
164
+ if (!value.some((elem) => matchesFilter(elem, subFilter))) {
165
+ return false;
166
+ }
167
+ break;
168
+ }
169
+ case '$size':
170
+ if (!Array.isArray(value) || value.length !== operand)
171
+ return false;
172
+ break;
173
+ case '$all': {
174
+ if (!Array.isArray(value))
175
+ return false;
176
+ const allItems = operand;
177
+ if (!allItems.every((item) => value.some((v) => deepEquals(v, item))))
178
+ return false;
179
+ break;
180
+ }
181
+ case '$type': {
182
+ const expectedType = operand;
183
+ if (!matchesType(value, expectedType))
184
+ return false;
185
+ break;
186
+ }
187
+ default:
188
+ // Unknown operator – ignore
189
+ break;
190
+ }
191
+ }
192
+ return true;
193
+ }
194
+ function matchesType(value, expectedType) {
195
+ switch (expectedType) {
196
+ case 'string':
197
+ return typeof value === 'string';
198
+ case 'number':
199
+ case 'int':
200
+ case 'long':
201
+ case 'double':
202
+ case 'decimal':
203
+ return typeof value === 'number';
204
+ case 'bool':
205
+ return typeof value === 'boolean';
206
+ case 'object':
207
+ return (typeof value === 'object' && value !== null && !Array.isArray(value));
208
+ case 'array':
209
+ return Array.isArray(value);
210
+ case 'null':
211
+ return value === null;
212
+ case 'date':
213
+ return value instanceof Date;
214
+ case 'undefined':
215
+ return value === undefined;
216
+ default:
217
+ return typeof value === expectedType;
218
+ }
219
+ }
220
+ /**
221
+ * Deep equality check (handles primitives, arrays, plain objects, Dates).
222
+ */
223
+ function deepEquals(a, b) {
224
+ if (a === b)
225
+ return true;
226
+ if (a === null || b === null || a === undefined || b === undefined)
227
+ return a === b;
228
+ if (typeof a !== typeof b)
229
+ return false;
230
+ if (a instanceof Date && b instanceof Date)
231
+ return a.getTime() === b.getTime();
232
+ if (Array.isArray(a) && Array.isArray(b)) {
233
+ if (a.length !== b.length)
234
+ return false;
235
+ return a.every((item, i) => deepEquals(item, b[i]));
236
+ }
237
+ if (typeof a === 'object' && typeof b === 'object') {
238
+ const keysA = Object.keys(a);
239
+ const keysB = Object.keys(b);
240
+ if (keysA.length !== keysB.length)
241
+ return false;
242
+ return keysA.every((k) => deepEquals(a[k], b[k]));
243
+ }
244
+ return false;
245
+ }
246
+ /**
247
+ * Check if a document matches a filter query.
248
+ */
249
+ function matchesFilter(doc, filter) {
250
+ for (const [key, condition] of Object.entries(filter)) {
251
+ // Handle logical operators at the top level
252
+ if (key === '$and') {
253
+ const clauses = condition;
254
+ if (!clauses.every((clause) => matchesFilter(doc, clause)))
255
+ return false;
256
+ continue;
257
+ }
258
+ if (key === '$or') {
259
+ const clauses = condition;
260
+ if (!clauses.some((clause) => matchesFilter(doc, clause)))
261
+ return false;
262
+ continue;
263
+ }
264
+ if (key === '$nor') {
265
+ const clauses = condition;
266
+ if (clauses.some((clause) => matchesFilter(doc, clause)))
267
+ return false;
268
+ continue;
269
+ }
270
+ if (key === '$not') {
271
+ if (matchesFilter(doc, condition))
272
+ return false;
273
+ continue;
274
+ }
275
+ if (key === '$text') {
276
+ const textSpec = condition;
277
+ const searchStr = textSpec['$search'] ?? '';
278
+ if (!matchesTextSearch(doc, searchStr))
279
+ return false;
280
+ continue;
281
+ }
282
+ if (LOGICAL_OPS.has(key))
283
+ continue;
284
+ const value = getNestedValue(doc, key);
285
+ if (condition !== null &&
286
+ typeof condition === 'object' &&
287
+ !Array.isArray(condition) &&
288
+ !(condition instanceof RegExp) &&
289
+ !(condition instanceof Date)) {
290
+ // Check if any keys look like operators
291
+ const condObj = condition;
292
+ const hasOps = Object.keys(condObj).some((k) => k.startsWith('$'));
293
+ if (hasOps) {
294
+ if (!matchOperator(value, condObj))
295
+ return false;
296
+ continue;
297
+ }
298
+ }
299
+ // Exact match – if the value is in an array, match against array elements (MongoDB behavior)
300
+ if (Array.isArray(value)) {
301
+ if (!value.some((v) => deepEquals(v, condition)) &&
302
+ !deepEquals(value, condition)) {
303
+ return false;
304
+ }
305
+ }
306
+ else {
307
+ if (!deepEquals(value, condition))
308
+ return false;
309
+ }
310
+ }
311
+ return true;
312
+ }
313
+ /**
314
+ * Apply projection to a document.
315
+ */
316
+ function applyProjection(doc, projection) {
317
+ const keys = Object.keys(projection);
318
+ if (keys.length === 0)
319
+ return { ...doc };
320
+ const isInclusion = Object.values(projection).some((v) => v === 1);
321
+ const result = {};
322
+ if (isInclusion) {
323
+ // Always include _id unless explicitly excluded
324
+ if (projection['_id'] !== 0) {
325
+ result['_id'] = doc._id;
326
+ }
327
+ for (const key of keys) {
328
+ if (key === '_id')
329
+ continue;
330
+ if (projection[key] === 1) {
331
+ result[key] = getNestedValue(doc, key);
332
+ }
333
+ }
334
+ }
335
+ else {
336
+ // Exclusion mode – include everything except excluded fields
337
+ for (const [k, v] of Object.entries(doc)) {
338
+ if (projection[k] === 0)
339
+ continue;
340
+ result[k] = v;
341
+ }
342
+ }
343
+ return result;
344
+ }
345
+ /**
346
+ * Sort an array of documents by a sort specification.
347
+ */
348
+ function sortDocuments(docs, sort) {
349
+ const sortEntries = Object.entries(sort);
350
+ if (sortEntries.length === 0)
351
+ return docs;
352
+ return [...docs].sort((a, b) => {
353
+ for (const [field, direction] of sortEntries) {
354
+ const va = getNestedValue(a, field);
355
+ const vb = getNestedValue(b, field);
356
+ const cmp = compareValues(va, vb);
357
+ if (cmp !== 0)
358
+ return cmp * direction;
359
+ }
360
+ return 0;
361
+ });
362
+ }
363
+ // ── Text search ──
364
+ /**
365
+ * Tokenize a string into lowercase words (basic whitespace + punctuation split).
366
+ */
367
+ function tokenize(text) {
368
+ return text
369
+ .toLowerCase()
370
+ .replace(/[^\w\s]/g, ' ')
371
+ .split(/\s+/)
372
+ .filter(Boolean);
373
+ }
374
+ /**
375
+ * Check whether a document matches a `$text: { $search: ... }` query.
376
+ *
377
+ * When `textSearchFields` is configured, only those fields are searched.
378
+ * Otherwise falls back to searching all string fields in the document.
379
+ *
380
+ * Supports:
381
+ * - Multiple search terms (OR semantics – any token match)
382
+ * - Quoted phrases for exact substring matching: `"hello world"`
383
+ * - Negation with minus prefix: `-unwanted`
384
+ */
385
+ function matchesTextSearch(doc, search) {
386
+ if (!search)
387
+ return true;
388
+ // Collect text from document
389
+ const fieldsToSearch = textSearchFields.length > 0 ? textSearchFields : null;
390
+ const docText = extractText(doc, fieldsToSearch).toLowerCase();
391
+ // Parse search string: quoted phrases, negated terms, and regular terms
392
+ const phrases = [];
393
+ const negated = [];
394
+ const tokens = [];
395
+ // Extract quoted phrases
396
+ const quoteRegex = /"([^"]+)"/g;
397
+ let cleaned = search;
398
+ let match;
399
+ while ((match = quoteRegex.exec(search)) !== null) {
400
+ phrases.push(match[1].toLowerCase());
401
+ }
402
+ cleaned = cleaned.replace(quoteRegex, '').trim();
403
+ // Split remaining into tokens
404
+ for (const word of cleaned.split(/\s+/).filter(Boolean)) {
405
+ if (word.startsWith('-') && word.length > 1) {
406
+ negated.push(word.slice(1).toLowerCase());
407
+ }
408
+ else {
409
+ tokens.push(word.toLowerCase());
410
+ }
411
+ }
412
+ // Check negated terms (must NOT appear)
413
+ for (const neg of negated) {
414
+ if (docText.includes(neg))
415
+ return false;
416
+ }
417
+ // Check quoted phrases (must appear as substring)
418
+ for (const phrase of phrases) {
419
+ if (!docText.includes(phrase))
420
+ return false;
421
+ }
422
+ // Check tokens (at least one must match, or if no tokens – phrases already matched)
423
+ if (tokens.length > 0) {
424
+ const docTokens = new Set(tokenize(docText));
425
+ if (!tokens.some((t) => docTokens.has(t)))
426
+ return false;
427
+ }
428
+ return true;
429
+ }
430
+ /**
431
+ * Extract all text content from a document for full-text search.
432
+ */
433
+ function extractText(obj, fields, prefix = '') {
434
+ const parts = [];
435
+ for (const [key, value] of Object.entries(obj)) {
436
+ const path = prefix ? `${prefix}.${key}` : key;
437
+ if (fields &&
438
+ !fields.some((f) => path.startsWith(f) || f.startsWith(path))) {
439
+ continue;
440
+ }
441
+ if (typeof value === 'string') {
442
+ parts.push(value);
443
+ }
444
+ else if (Array.isArray(value)) {
445
+ for (const item of value) {
446
+ if (typeof item === 'string')
447
+ parts.push(item);
448
+ else if (typeof item === 'object' && item !== null) {
449
+ parts.push(extractText(item, fields, path));
450
+ }
451
+ }
452
+ }
453
+ else if (typeof value === 'object' &&
454
+ value !== null &&
455
+ !(value instanceof Date)) {
456
+ parts.push(extractText(value, fields, path));
457
+ }
458
+ }
459
+ return parts.join(' ');
460
+ }
461
+ //# sourceMappingURL=queryEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryEngine.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/queryEngine.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAkBH,kDAEC;AAKD,kDAEC;AA0CD,sCAWC;AA0HD,gCAuBC;AAKD,sCAkEC;AAKD,0CA6BC;AAKD,sCAgBC;AAOD,4BAMC;AApWD,6BAA6B;AAC7B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7D,iFAAiF;AACjF,IAAI,gBAAgB,GAAa,EAAE,CAAC;AAEpC;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,MAAgB;IAClD,gBAAgB,GAAG,MAAM,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAA4B,EAAE,IAAY;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAChE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,+CAA+C;gBAC/C,MAAM,OAAO,GAAG,OAAO;qBACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;oBACvC,CAAC,CAAE,IAAgC,CAAC,IAAI,CAAC;oBACzC,CAAC,CAAC,SAAS,CACd;qBACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;gBAClC,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;oBACzB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;wBAClB,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,SAAS,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,CAAU,EAAE,CAAU;IAClD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,SAAS;QAClD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI;QAAE,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7E,iCAAiC;IACjC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,KAAc,EAAE,EAA2B;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAChD,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,KAAK;gBACR,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC9C,MAAM;YACR,KAAK,KAAK;gBACR,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC7C,MAAM;YACR,KAAK,KAAK;gBACR,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACrD,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACpD,MAAM;YACR,KAAK,KAAK;gBACR,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACrD,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACpD,MAAM;YACR,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,GAAG,GAAG,OAAoB,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC/D,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,GAAG,GAAG,OAAoB,CAAC;gBACjC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC9D,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAC5C,MAAM,EAAE,GACN,OAAO,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAiB,CAAC,CAAC;gBACtE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAClC,MAAM;YACR,CAAC;YACD,KAAK,SAAS;gBACZ,IAAI,OAAO,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;gBACjD,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;gBAClD,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,aAAa,CAAC,KAAK,EAAE,OAAkC,CAAC;oBAC1D,OAAO,KAAK,CAAC;gBACf,MAAM;YACR,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACxC,MAAM,SAAS,GAAG,OAAkC,CAAC;gBACrD,IACE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACnB,aAAa,CACX,IAAoB,EACpB,SAAsC,CACvC,CACF,EACD,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,OAAO;gBACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAM,OAAkB;oBAC/D,OAAO,KAAK,CAAC;gBACf,MAAM;YACR,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACxC,MAAM,QAAQ,GAAG,OAAoB,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;oBACnE,OAAO,KAAK,CAAC;gBACf,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,YAAY,GAAG,OAAiB,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACpD,MAAM;YACR,CAAC;YACD;gBACE,4BAA4B;gBAC5B,MAAM;QACV,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,YAAoB;IACvD,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;QACnC,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;QACnC,KAAK,MAAM;YACT,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CACrE,CAAC;QACJ,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,MAAM;YACT,OAAO,KAAK,KAAK,IAAI,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,KAAK,YAAY,IAAI,CAAC;QAC/B,KAAK,WAAW;YACd,OAAO,KAAK,KAAK,SAAS,CAAC;QAC7B;YACE,OAAO,OAAO,KAAK,KAAK,YAAY,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,CAAU,EAAE,CAAU;IAC/C,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAChE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI;QACxC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACxC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAA4B,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAA4B,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CACvB,UAAU,CACP,CAA6B,CAAC,CAAC,CAAC,EAChC,CAA6B,CAAC,CAAC,CAAC,CAClC,CACF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,GAAM,EACN,MAAsB;IAEtB,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,4CAA4C;QAC5C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,SAA6B,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YACzE,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,SAA6B,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxE,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,SAA6B,CAAC;YAC9C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YACvE,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,IAAI,aAAa,CAAC,GAAG,EAAE,SAA2B,CAAC;gBAAE,OAAO,KAAK,CAAC;YAClE,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,SAAoC,CAAC;YACtD,MAAM,SAAS,GAAI,QAAQ,CAAC,SAAS,CAAY,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC;YACrD,SAAS;QACX,CAAC;QAED,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAEnC,MAAM,KAAK,GAAG,cAAc,CAAC,GAA8B,EAAE,GAAG,CAAC,CAAC;QAElE,IACE,SAAS,KAAK,IAAI;YAClB,OAAO,SAAS,KAAK,QAAQ;YAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACzB,CAAC,CAAC,SAAS,YAAY,MAAM,CAAC;YAC9B,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,EAC5B,CAAC;YACD,wCAAwC;YACxC,MAAM,OAAO,GAAG,SAAoC,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAkC,CAAC;oBAC3D,OAAO,KAAK,CAAC;gBACf,SAAS;YACX,CAAC;QACH,CAAC;QAED,6FAA6F;QAC7F,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IACE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC5C,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,EAC7B,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,GAAM,EACN,UAAiC;IAEjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;IAEzC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,IAAI,WAAW,EAAE,CAAC;QAChB,gDAAgD;QAChD,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;QAC1B,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,KAAK,KAAK;gBAAE,SAAS;YAC5B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAA8B,EAAE,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,6DAA6D;QAC7D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,SAAS;YAClC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,MAAoB,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,IAAS,EACT,IAA4B;IAE5B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7B,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC;YAC7C,MAAM,EAAE,GAAG,cAAc,CAAC,CAA4B,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,EAAE,GAAG,cAAc,CAAC,CAA4B,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAClC,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,GAAG,GAAG,SAAS,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oBAAoB;AAEpB;;GAEG;AACH,SAAgB,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CAAC,GAAiB,EAAE,MAAc;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,6BAA6B;IAC7B,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,OAAO,GAAG,WAAW,CACzB,GAA8B,EAC9B,cAAc,CACf,CAAC,WAAW,EAAE,CAAC;IAEhB,wEAAwE;IACxE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,yBAAyB;IACzB,MAAM,UAAU,GAAG,YAAY,CAAC;IAChC,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjD,8BAA8B;IAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1C,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;IAC9C,CAAC;IAED,oFAAoF;IACpF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAClB,GAA4B,EAC5B,MAAuB,EACvB,MAAM,GAAG,EAAE;IAEX,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAE/C,IACE,MAAM;YACN,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAC7D,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBACnD,KAAK,CAAC,IAAI,CACR,WAAW,CAAC,IAA+B,EAAE,MAAM,EAAE,IAAI,CAAC,CAC3D,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IACL,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EACxB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAgC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Schema validation for brightchain-db collections.
3
+ *
4
+ * Provides a lightweight JSON-Schema-like validator that can enforce
5
+ * document structure on insert and update operations.
6
+ *
7
+ * Supported types: 'string', 'number', 'boolean', 'object', 'array', 'null', 'date', 'any',
8
+ * 'branded-primitive', 'branded-interface'
9
+ * Supported constraints:
10
+ * - required: array of required field names
11
+ * - properties: per-field type + constraints
12
+ * - minLength / maxLength: for strings and arrays
13
+ * - minimum / maximum: for numbers
14
+ * - pattern: regex pattern for strings
15
+ * - enum: allowed values
16
+ * - items: schema for array elements
17
+ * - additionalProperties: whether extra fields are allowed (default: true)
18
+ */
19
+ import type { CollectionSchema, CollectionSchemaFieldType } from '@digitaldefiance/suite-core-lib';
20
+ import type { BsonDocument, FieldSchema, ValidationFieldError } from '../interfaces/storage/documentTypes';
21
+ export type { CollectionSchema, FieldSchema };
22
+ /**
23
+ * Local alias for backward compatibility.
24
+ * The canonical type is `CollectionSchemaFieldType` in brightchain-lib.
25
+ */
26
+ export type SchemaType = CollectionSchemaFieldType;
27
+ /**
28
+ * Validate a document against a collection schema.
29
+ *
30
+ * @param doc - The document to validate
31
+ * @param schema - The collection schema
32
+ * @param collectionName - Collection name for error messages
33
+ * @throws ValidationError if validationAction is 'error'
34
+ * @returns Array of validation field errors (empty if valid)
35
+ */
36
+ export declare function validateDocument(doc: BsonDocument, schema: CollectionSchema, collectionName: string): ValidationFieldError[];
37
+ /**
38
+ * Apply default values from schema to a document (mutates a copy).
39
+ */
40
+ export declare function applyDefaults(doc: BsonDocument, schema: CollectionSchema): BsonDocument;
41
+ //# sourceMappingURL=schemaValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaValidation.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/schemaValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACrB,MAAM,qCAAqC,CAAC;AAI7C,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,yBAAyB,CAAC;AAInD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,gBAAgB,EACxB,cAAc,EAAE,MAAM,GACrB,oBAAoB,EAAE,CAkDxB;AAkOD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,gBAAgB,GACvB,YAAY,CAed"}