@blue-repository/types 0.9.0 → 0.11.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 (219) hide show
  1. package/README.md +1 -1
  2. package/dist/meta.d.ts +2 -2
  3. package/dist/meta.d.ts.map +1 -1
  4. package/dist/meta.js +1 -2
  5. package/dist/meta.js.map +1 -1
  6. package/dist/packages/common/blue-ids.d.ts +1 -0
  7. package/dist/packages/common/blue-ids.d.ts.map +1 -1
  8. package/dist/packages/common/blue-ids.js +1 -0
  9. package/dist/packages/common/blue-ids.js.map +1 -1
  10. package/dist/packages/common/contents/Currency.d.ts +8 -0
  11. package/dist/packages/common/contents/Currency.d.ts.map +1 -0
  12. package/dist/packages/common/contents/Currency.js +8 -0
  13. package/dist/packages/common/contents/Currency.js.map +1 -0
  14. package/dist/packages/common/contents/index.d.ts +8 -0
  15. package/dist/packages/common/contents/index.d.ts.map +1 -1
  16. package/dist/packages/common/contents/index.js +3 -0
  17. package/dist/packages/common/contents/index.js.map +1 -1
  18. package/dist/packages/common/index.d.ts +22 -0
  19. package/dist/packages/common/index.d.ts.map +1 -1
  20. package/dist/packages/common/meta.d.ts +10 -0
  21. package/dist/packages/common/meta.d.ts.map +1 -1
  22. package/dist/packages/common/meta.js +11 -0
  23. package/dist/packages/common/meta.js.map +1 -1
  24. package/dist/packages/common/schemas/Currency.d.ts +8 -0
  25. package/dist/packages/common/schemas/Currency.d.ts.map +1 -0
  26. package/dist/packages/common/schemas/Currency.js +5 -0
  27. package/dist/packages/common/schemas/Currency.js.map +1 -0
  28. package/dist/packages/common/schemas/index.d.ts +6 -0
  29. package/dist/packages/common/schemas/index.d.ts.map +1 -1
  30. package/dist/packages/common/schemas/index.js +3 -0
  31. package/dist/packages/common/schemas/index.js.map +1 -1
  32. package/dist/packages/conversation/blue-ids.d.ts +5 -2
  33. package/dist/packages/conversation/blue-ids.d.ts.map +1 -1
  34. package/dist/packages/conversation/blue-ids.js +5 -2
  35. package/dist/packages/conversation/blue-ids.js.map +1 -1
  36. package/dist/packages/conversation/contents/ChangeWorkflow.d.ts +1 -1
  37. package/dist/packages/conversation/contents/ChangeWorkflow.js +1 -1
  38. package/dist/packages/conversation/contents/ChangeWorkflow.js.map +1 -1
  39. package/dist/packages/conversation/contents/CustomerActionRequested.d.ts +44 -0
  40. package/dist/packages/conversation/contents/CustomerActionRequested.d.ts.map +1 -0
  41. package/dist/packages/conversation/contents/CustomerActionRequested.js +44 -0
  42. package/dist/packages/conversation/contents/CustomerActionRequested.js.map +1 -0
  43. package/dist/packages/conversation/contents/CustomerConsent.d.ts +233 -0
  44. package/dist/packages/conversation/contents/CustomerConsent.d.ts.map +1 -0
  45. package/dist/packages/conversation/contents/CustomerConsent.js +244 -0
  46. package/dist/packages/conversation/contents/CustomerConsent.js.map +1 -0
  47. package/dist/packages/conversation/contents/CustomerConsentRevoked.d.ts +17 -0
  48. package/dist/packages/conversation/contents/CustomerConsentRevoked.d.ts.map +1 -0
  49. package/dist/packages/conversation/contents/CustomerConsentRevoked.js +17 -0
  50. package/dist/packages/conversation/contents/CustomerConsentRevoked.js.map +1 -0
  51. package/dist/packages/conversation/contents/ProposeChangeWorkflow.d.ts +1 -1
  52. package/dist/packages/conversation/contents/ProposeChangeWorkflow.js +1 -1
  53. package/dist/packages/conversation/contents/ProposeChangeWorkflow.js.map +1 -1
  54. package/dist/packages/conversation/contents/index.d.ts +353 -59
  55. package/dist/packages/conversation/contents/index.d.ts.map +1 -1
  56. package/dist/packages/conversation/contents/index.js +15 -6
  57. package/dist/packages/conversation/contents/index.js.map +1 -1
  58. package/dist/packages/conversation/index.d.ts +1160 -231
  59. package/dist/packages/conversation/index.d.ts.map +1 -1
  60. package/dist/packages/conversation/meta.d.ts +47 -17
  61. package/dist/packages/conversation/meta.d.ts.map +1 -1
  62. package/dist/packages/conversation/meta.js +48 -15
  63. package/dist/packages/conversation/meta.js.map +1 -1
  64. package/dist/packages/conversation/schemas/CustomerActionRequested.d.ts +40 -0
  65. package/dist/packages/conversation/schemas/CustomerActionRequested.d.ts.map +1 -0
  66. package/dist/packages/conversation/schemas/CustomerActionRequested.js +15 -0
  67. package/dist/packages/conversation/schemas/CustomerActionRequested.js.map +1 -0
  68. package/dist/packages/conversation/schemas/CustomerConsent.d.ts +548 -0
  69. package/dist/packages/conversation/schemas/CustomerConsent.d.ts.map +1 -0
  70. package/dist/packages/conversation/schemas/CustomerConsent.js +31 -0
  71. package/dist/packages/conversation/schemas/CustomerConsent.js.map +1 -0
  72. package/dist/packages/conversation/schemas/CustomerConsentRevoked.d.ts +29 -0
  73. package/dist/packages/conversation/schemas/CustomerConsentRevoked.d.ts.map +1 -0
  74. package/dist/packages/conversation/schemas/CustomerConsentRevoked.js +11 -0
  75. package/dist/packages/conversation/schemas/CustomerConsentRevoked.js.map +1 -0
  76. package/dist/packages/conversation/schemas/DocumentBootstrapFailed.d.ts +2 -2
  77. package/dist/packages/conversation/schemas/DocumentBootstrapResponded.d.ts +2 -2
  78. package/dist/packages/conversation/schemas/index.d.ts +617 -6
  79. package/dist/packages/conversation/schemas/index.d.ts.map +1 -1
  80. package/dist/packages/conversation/schemas/index.js +11 -2
  81. package/dist/packages/conversation/schemas/index.js.map +1 -1
  82. package/dist/packages/myos/index.d.ts +284 -284
  83. package/dist/packages/myos/schemas/AddingParticipantRequested.d.ts +4 -4
  84. package/dist/packages/myos/schemas/AddingParticipantResponded.d.ts +6 -6
  85. package/dist/packages/myos/schemas/CallOperationFailed.d.ts +2 -2
  86. package/dist/packages/myos/schemas/ChatGPTConnectorAgent.d.ts +6 -6
  87. package/dist/packages/myos/schemas/DocumentSessionBootstrap.d.ts +4 -4
  88. package/dist/packages/myos/schemas/LinkedDocumentsPermissionGrantToAccount.d.ts +60 -60
  89. package/dist/packages/myos/schemas/LinkedDocumentsPermissionGrantToDocument.d.ts +34 -34
  90. package/dist/packages/myos/schemas/LinkedDocumentsPermissionRejected.d.ts +2 -2
  91. package/dist/packages/myos/schemas/LinkedDocumentsPermissionRevokeRequested.d.ts +2 -2
  92. package/dist/packages/myos/schemas/LinkedDocumentsPermissionRevoked.d.ts +2 -2
  93. package/dist/packages/myos/schemas/LinkedDocumentsPermissionRevokingInProgress.d.ts +2 -2
  94. package/dist/packages/myos/schemas/MyOSAdminBase.d.ts +6 -6
  95. package/dist/packages/myos/schemas/MyOSTimelineChannel.d.ts +2 -2
  96. package/dist/packages/myos/schemas/Participant.d.ts +2 -2
  97. package/dist/packages/myos/schemas/ParticipantActivated.d.ts +4 -4
  98. package/dist/packages/myos/schemas/ParticipantResolved.d.ts +4 -4
  99. package/dist/packages/myos/schemas/SingleDocumentPermissionGrantResponded.d.ts +2 -2
  100. package/dist/packages/myos/schemas/SingleDocumentPermissionGrantToAccount.d.ts +60 -60
  101. package/dist/packages/myos/schemas/SingleDocumentPermissionGrantToDocument.d.ts +34 -34
  102. package/dist/packages/myos/schemas/SingleDocumentPermissionRejected.d.ts +2 -2
  103. package/dist/packages/myos/schemas/SingleDocumentPermissionRevokeRequested.d.ts +2 -2
  104. package/dist/packages/myos/schemas/SubscriptionToSessionFailed.d.ts +2 -2
  105. package/dist/packages/myos/schemas/SubscriptionToSessionRevoked.d.ts +2 -2
  106. package/dist/packages/myos/schemas/WorkerAgencyPermissionGrant.d.ts +34 -34
  107. package/dist/packages/myos/schemas/WorkerAgencyPermissionRejected.d.ts +2 -2
  108. package/dist/packages/myos/schemas/WorkerAgencyPermissionRevokeRequested.d.ts +2 -2
  109. package/dist/packages/myos/schemas/index.d.ts +284 -284
  110. package/dist/packages/paynote/blue-ids.d.ts +10 -2
  111. package/dist/packages/paynote/blue-ids.d.ts.map +1 -1
  112. package/dist/packages/paynote/blue-ids.js +10 -2
  113. package/dist/packages/paynote/blue-ids.js.map +1 -1
  114. package/dist/packages/paynote/contents/CardTransactionMonitoringRequestRejected.d.ts +34 -0
  115. package/dist/packages/paynote/contents/CardTransactionMonitoringRequestRejected.d.ts.map +1 -0
  116. package/dist/packages/paynote/contents/CardTransactionMonitoringRequestRejected.js +34 -0
  117. package/dist/packages/paynote/contents/CardTransactionMonitoringRequestRejected.js.map +1 -0
  118. package/dist/packages/paynote/contents/CardTransactionMonitoringStarted.d.ts +38 -0
  119. package/dist/packages/paynote/contents/CardTransactionMonitoringStarted.d.ts.map +1 -0
  120. package/dist/packages/paynote/contents/CardTransactionMonitoringStarted.js +38 -0
  121. package/dist/packages/paynote/contents/CardTransactionMonitoringStarted.js.map +1 -0
  122. package/dist/packages/paynote/contents/CardTransactionMonitoringStopped.d.ts +30 -0
  123. package/dist/packages/paynote/contents/CardTransactionMonitoringStopped.d.ts.map +1 -0
  124. package/dist/packages/paynote/contents/CardTransactionMonitoringStopped.js +30 -0
  125. package/dist/packages/paynote/contents/CardTransactionMonitoringStopped.js.map +1 -0
  126. package/dist/packages/paynote/contents/CardTransactionPayNote.d.ts +13 -0
  127. package/dist/packages/paynote/contents/CardTransactionPayNote.d.ts.map +1 -0
  128. package/dist/packages/paynote/contents/CardTransactionPayNote.js +13 -0
  129. package/dist/packages/paynote/contents/CardTransactionPayNote.js.map +1 -0
  130. package/dist/packages/paynote/contents/CardTransactionReport.d.ts +43 -0
  131. package/dist/packages/paynote/contents/CardTransactionReport.d.ts.map +1 -0
  132. package/dist/packages/paynote/contents/CardTransactionReport.js +43 -0
  133. package/dist/packages/paynote/contents/CardTransactionReport.js.map +1 -0
  134. package/dist/packages/paynote/contents/MerchantToCustomerPayNote.d.ts +8 -0
  135. package/dist/packages/paynote/contents/MerchantToCustomerPayNote.d.ts.map +1 -0
  136. package/dist/packages/paynote/contents/MerchantToCustomerPayNote.js +8 -0
  137. package/dist/packages/paynote/contents/MerchantToCustomerPayNote.js.map +1 -0
  138. package/dist/packages/paynote/contents/PayNote.d.ts +44 -0
  139. package/dist/packages/paynote/contents/PayNote.d.ts.map +1 -1
  140. package/dist/packages/paynote/contents/PayNote.js +46 -0
  141. package/dist/packages/paynote/contents/PayNote.js.map +1 -1
  142. package/dist/packages/paynote/contents/PayNoteDelivery.d.ts +4 -10
  143. package/dist/packages/paynote/contents/PayNoteDelivery.d.ts.map +1 -1
  144. package/dist/packages/paynote/contents/PayNoteDelivery.js +4 -10
  145. package/dist/packages/paynote/contents/PayNoteDelivery.js.map +1 -1
  146. package/dist/packages/paynote/contents/StartCardTransactionMonitoringRequested.d.ts +28 -0
  147. package/dist/packages/paynote/contents/StartCardTransactionMonitoringRequested.d.ts.map +1 -0
  148. package/dist/packages/paynote/contents/StartCardTransactionMonitoringRequested.js +28 -0
  149. package/dist/packages/paynote/contents/StartCardTransactionMonitoringRequested.js.map +1 -0
  150. package/dist/packages/paynote/contents/TransactionStatus.d.ts +26 -0
  151. package/dist/packages/paynote/contents/TransactionStatus.d.ts.map +1 -0
  152. package/dist/packages/paynote/contents/TransactionStatus.js +26 -0
  153. package/dist/packages/paynote/contents/TransactionStatus.js.map +1 -0
  154. package/dist/packages/paynote/contents/index.d.ts +590 -332
  155. package/dist/packages/paynote/contents/index.d.ts.map +1 -1
  156. package/dist/packages/paynote/contents/index.js +30 -6
  157. package/dist/packages/paynote/contents/index.js.map +1 -1
  158. package/dist/packages/paynote/index.d.ts +2383 -792
  159. package/dist/packages/paynote/index.d.ts.map +1 -1
  160. package/dist/packages/paynote/meta.d.ts +87 -7
  161. package/dist/packages/paynote/meta.d.ts.map +1 -1
  162. package/dist/packages/paynote/meta.js +93 -5
  163. package/dist/packages/paynote/meta.js.map +1 -1
  164. package/dist/packages/paynote/schemas/CaptureDeclined.d.ts +2 -2
  165. package/dist/packages/paynote/schemas/CaptureFailed.d.ts +2 -2
  166. package/dist/packages/paynote/schemas/CardTransactionCaptureLockChangeFailed.d.ts +2 -2
  167. package/dist/packages/paynote/schemas/CardTransactionMonitoringRequestRejected.d.ts +34 -0
  168. package/dist/packages/paynote/schemas/CardTransactionMonitoringRequestRejected.d.ts.map +1 -0
  169. package/dist/packages/paynote/schemas/CardTransactionMonitoringRequestRejected.js +13 -0
  170. package/dist/packages/paynote/schemas/CardTransactionMonitoringRequestRejected.js.map +1 -0
  171. package/dist/packages/paynote/schemas/CardTransactionMonitoringStarted.d.ts +37 -0
  172. package/dist/packages/paynote/schemas/CardTransactionMonitoringStarted.d.ts.map +1 -0
  173. package/dist/packages/paynote/schemas/CardTransactionMonitoringStarted.js +14 -0
  174. package/dist/packages/paynote/schemas/CardTransactionMonitoringStarted.js.map +1 -0
  175. package/dist/packages/paynote/schemas/CardTransactionMonitoringStopped.d.ts +27 -0
  176. package/dist/packages/paynote/schemas/CardTransactionMonitoringStopped.d.ts.map +1 -0
  177. package/dist/packages/paynote/schemas/CardTransactionMonitoringStopped.js +12 -0
  178. package/dist/packages/paynote/schemas/CardTransactionMonitoringStopped.js.map +1 -0
  179. package/dist/packages/paynote/schemas/CardTransactionPayNote.d.ts +473 -0
  180. package/dist/packages/paynote/schemas/CardTransactionPayNote.d.ts.map +1 -0
  181. package/dist/packages/paynote/schemas/CardTransactionPayNote.js +11 -0
  182. package/dist/packages/paynote/schemas/CardTransactionPayNote.js.map +1 -0
  183. package/dist/packages/paynote/schemas/CardTransactionReport.d.ts +85 -0
  184. package/dist/packages/paynote/schemas/CardTransactionReport.d.ts.map +1 -0
  185. package/dist/packages/paynote/schemas/CardTransactionReport.js +18 -0
  186. package/dist/packages/paynote/schemas/CardTransactionReport.js.map +1 -0
  187. package/dist/packages/paynote/schemas/ChildPayNoteIssuanceDeclined.d.ts +2 -2
  188. package/dist/packages/paynote/schemas/MerchantToCustomerPayNote.d.ts +435 -0
  189. package/dist/packages/paynote/schemas/MerchantToCustomerPayNote.d.ts.map +1 -0
  190. package/dist/packages/paynote/schemas/MerchantToCustomerPayNote.js +9 -0
  191. package/dist/packages/paynote/schemas/MerchantToCustomerPayNote.js.map +1 -0
  192. package/dist/packages/paynote/schemas/PayNote.d.ts +200 -0
  193. package/dist/packages/paynote/schemas/PayNote.d.ts.map +1 -1
  194. package/dist/packages/paynote/schemas/PayNote.js +6 -0
  195. package/dist/packages/paynote/schemas/PayNote.js.map +1 -1
  196. package/dist/packages/paynote/schemas/PayNoteCancellationRejected.d.ts +2 -2
  197. package/dist/packages/paynote/schemas/PayNoteDelivery.d.ts +58 -128
  198. package/dist/packages/paynote/schemas/PayNoteDelivery.d.ts.map +1 -1
  199. package/dist/packages/paynote/schemas/PayNoteDelivery.js +0 -1
  200. package/dist/packages/paynote/schemas/PayNoteDelivery.js.map +1 -1
  201. package/dist/packages/paynote/schemas/PayNoteRejected.d.ts +2 -2
  202. package/dist/packages/paynote/schemas/ReservationDeclined.d.ts +2 -2
  203. package/dist/packages/paynote/schemas/ReservationReleaseDeclined.d.ts +2 -2
  204. package/dist/packages/paynote/schemas/SettlementAmountRejected.d.ts +2 -2
  205. package/dist/packages/paynote/schemas/StartCardTransactionMonitoringRequested.d.ts +31 -0
  206. package/dist/packages/paynote/schemas/StartCardTransactionMonitoringRequested.d.ts.map +1 -0
  207. package/dist/packages/paynote/schemas/StartCardTransactionMonitoringRequested.js +12 -0
  208. package/dist/packages/paynote/schemas/StartCardTransactionMonitoringRequested.js.map +1 -0
  209. package/dist/packages/paynote/schemas/TransactionStatus.d.ts +33 -0
  210. package/dist/packages/paynote/schemas/TransactionStatus.d.ts.map +1 -0
  211. package/dist/packages/paynote/schemas/TransactionStatus.js +13 -0
  212. package/dist/packages/paynote/schemas/TransactionStatus.js.map +1 -0
  213. package/dist/packages/paynote/schemas/index.d.ts +1508 -239
  214. package/dist/packages/paynote/schemas/index.d.ts.map +1 -1
  215. package/dist/packages/paynote/schemas/index.js +26 -2
  216. package/dist/packages/paynote/schemas/index.js.map +1 -1
  217. package/dist/repository.d.ts +5247 -2705
  218. package/dist/repository.d.ts.map +1 -1
  219. package/package.json +2 -2
@@ -20,7 +20,7 @@ export const ProposeChangeWorkflow = {
20
20
  type: {
21
21
  blueId: 'DLRQwz7MQeCrzjy9bohPNwtCxKEBbKaMK65KBrwjfG6K',
22
22
  },
23
- value: "const issues = [];\n\nconst request = event.message.request || {};\n\nconst changeDescription = request.changeDescription;\nconst rawChangeset = request.changeset;\nconst rawSectionChanges = request.sectionChanges;\nconst requestSectionChanges = rawSectionChanges || {};\n\nconst toText = (value) => {\n const raw = value && value.value ? value.value : value;\n return raw && raw.trim ? raw.trim() : '';\n};\nconst asList = (value) => Array.isArray(value) ? value : [];\nconst hasType = (value) => value && value.type;\nconst escapePointer = (value) => {\n const text = toText(value);\n return text.split('~').join('~0').split('/').join('~1');\n};\nconst requestChangeset = asList(rawChangeset);\n\nconst uniqueKeys = (values, label) => {\n const seen = new Set();\n const output = [];\n for (const value of values) {\n const key = toText(value);\n if (!key) {\n issues.push(label + ' contains invalid key');\n continue;\n }\n if (seen.has(key)) {\n issues.push(label + ' contains duplicate key: ' + key);\n continue;\n }\n seen.add(key);\n output.push(key);\n }\n return output;\n};\n\nconst sameStringSet = (left, right) => {\n if (left.length !== right.length) return false;\n const set = new Set(left);\n if (set.size !== right.length) return false;\n for (const value of right) {\n if (!set.has(value)) return false;\n }\n return true;\n};\n\nconst contracts = Object(document('/contracts') || {});\n\nconst isDocumentSection = (contract) =>\n !!contract && Array.isArray(contract.relatedContracts);\n\nconst isContractsChangePolicy = (contract) => {\n if (!contract) return false;\n return 'requireSectionChanges' in contract;\n};\n\nconst findPolicy = () => {\n for (const key of Object.keys(contracts)) {\n const contract = contracts[key];\n if (isContractsChangePolicy(contract)) {\n return contract;\n }\n }\n return null;\n};\n\nconst policy = findPolicy();\nconst policyEnabled = !!policy && policy.requireSectionChanges !== false;\n\nif (!toText(changeDescription)) {\n issues.push('changeDescription is missing');\n}\n\nconst hasChangeset = !!rawChangeset;\nconst hasSectionChanges = !!rawSectionChanges;\n\nif (!hasChangeset && !hasSectionChanges) {\n issues.push('changeset or sectionChanges is required');\n}\n\nconst isContractsPath = (path) => {\n const value = toText(path);\n return value === '/contracts' || value.startsWith('/contracts/');\n};\nif (policyEnabled && hasChangeset) {\n for (const entry of requestChangeset) {\n if (entry && isContractsPath(entry.path)) {\n issues.push('changeset cannot modify /contracts when Contracts Change Policy is enabled');\n break;\n }\n }\n}\nconst isProposedChangePath = (path) =>\n toText(path).startsWith('/proposedChange');\nif (hasChangeset) {\n for (const entry of requestChangeset) {\n if (entry && isProposedChangePath(entry.path)) {\n issues.push('changeset cannot modify /proposedChange');\n break;\n }\n }\n}\n\nconst existingSections = {};\nfor (const key of Object.keys(contracts)) {\n const contract = contracts[key];\n if (isDocumentSection(contract)) {\n existingSections[key] = contract;\n }\n}\n\nconst contractIndex = {};\nfor (const sectionKey of Object.keys(existingSections)) {\n const section = existingSections[sectionKey];\n const related = asList(section.relatedContracts);\n for (const relatedKey of related) {\n const contractKey = toText(relatedKey);\n if (!contractKey) continue;\n if (contractIndex[contractKey] && contractIndex[contractKey] !== sectionKey) {\n contractIndex[contractKey] = null;\n } else if (!contractIndex[contractKey]) {\n contractIndex[contractKey] = sectionKey;\n }\n }\n}\n\nconst normalizeSectionDefinition = (sectionDef, label) => {\n if (!sectionDef) {\n issues.push(label + ' entry must be an object');\n return null;\n }\n const sectionKey = toText(sectionDef.sectionKey);\n if (!sectionKey) {\n issues.push(label + ' sectionKey is missing');\n return null;\n }\n const section = sectionDef.section;\n if (!section) {\n issues.push(label + ' section is missing');\n return null;\n }\n\n const contractsMap = sectionDef.contracts || {};\n const contractDefs = [];\n const contractKeys = [];\n for (const [rawKey, contract] of Object.entries(contractsMap)) {\n const key = toText(rawKey);\n if (!key) {\n issues.push(label + ' contract key is missing');\n continue;\n }\n if (!contract) {\n issues.push(label + ' contract ' + key + ' is missing or invalid');\n continue;\n }\n if (!hasType(contract)) {\n issues.push(label + ' contract ' + key + ' is missing type');\n }\n contractDefs.push({ key, contract });\n contractKeys.push(key);\n }\n\n if (!hasType(section)) {\n issues.push(label + ' section ' + sectionKey + ' is missing type');\n }\n\n const related = section.relatedContracts\n ? uniqueKeys(asList(section.relatedContracts), label + ' section ' + sectionKey + ' relatedContracts')\n : null;\n if (related && !sameStringSet(related, contractKeys)) {\n issues.push(label + ' section ' + sectionKey + ' relatedContracts must match contracts');\n }\n\n const normalizedRelated = related || contractKeys;\n const normalizedSection = Object.assign({}, section, {\n type: 'Conversation/Document Section',\n relatedContracts: normalizedRelated\n });\n\n return {\n sectionKey,\n section: normalizedSection,\n contractDefs,\n contractKeys\n };\n};\n\nconst sectionChangeset = [];\nconst seenSectionKeys = new Set();\nconst seenContractKeys = new Set();\n\nconst addList = asList(requestSectionChanges.add);\nconst modifyList = asList(requestSectionChanges.modify);\nconst removeList = asList(requestSectionChanges.remove);\n\nfor (const entry of addList) {\n const normalized = normalizeSectionDefinition(entry, 'sectionChanges.add');\n if (!normalized) continue;\n const sectionKey = normalized.sectionKey;\n if (seenSectionKeys.has(sectionKey)) {\n issues.push('section key duplicated in sectionChanges: ' + sectionKey);\n continue;\n }\n seenSectionKeys.add(sectionKey);\n\n if (contracts[sectionKey]) {\n issues.push('section key already exists at /contracts/' + sectionKey);\n }\n\n for (const contractKey of normalized.contractKeys) {\n if (seenContractKeys.has(contractKey)) {\n issues.push('contract key used by multiple sections in request: ' + contractKey);\n continue;\n }\n seenContractKeys.add(contractKey);\n if (contracts[contractKey]) {\n issues.push('contract key already exists at /contracts/' + contractKey);\n }\n }\n\n for (const contractDef of normalized.contractDefs) {\n sectionChangeset.push({\n op: 'add',\n path: '/contracts/' + escapePointer(contractDef.key),\n val: contractDef.contract\n });\n }\n sectionChangeset.push({\n op: 'add',\n path: '/contracts/' + escapePointer(sectionKey),\n val: normalized.section\n });\n}\n\nfor (const entry of modifyList) {\n const normalized = normalizeSectionDefinition(entry, 'sectionChanges.modify');\n if (!normalized) continue;\n const sectionKey = normalized.sectionKey;\n if (seenSectionKeys.has(sectionKey)) {\n issues.push('section key duplicated in sectionChanges: ' + sectionKey);\n continue;\n }\n seenSectionKeys.add(sectionKey);\n\n const existingSection = contracts[sectionKey];\n if (!existingSection) {\n issues.push('section key does not exist at /contracts/' + sectionKey);\n } else if (!isDocumentSection(existingSection)) {\n issues.push('existing section at /contracts/' + sectionKey + ' is not a Document Section');\n }\n\n const existingRelated =\n existingSection && existingSection.relatedContracts\n ? asList(existingSection.relatedContracts)\n : [];\n if (existingSection && !existingSection.relatedContracts) {\n issues.push('existing section ' + sectionKey + ' is missing relatedContracts');\n }\n\n for (const contractKey of normalized.contractKeys) {\n if (seenContractKeys.has(contractKey)) {\n issues.push('contract key used by multiple sections in request: ' + contractKey);\n continue;\n }\n seenContractKeys.add(contractKey);\n if (contractIndex[contractKey] && contractIndex[contractKey] !== sectionKey) {\n issues.push('contract key ' + contractKey + ' is linked to another section');\n }\n }\n\n for (const contractDef of normalized.contractDefs) {\n const op = contracts[contractDef.key] ? 'replace' : 'add';\n sectionChangeset.push({\n op,\n path: '/contracts/' + escapePointer(contractDef.key),\n val: contractDef.contract\n });\n }\n\n const toRemove = uniqueKeys(existingRelated, 'sectionChanges.modify remove list').filter(\n (key) => !normalized.contractKeys.includes(key)\n );\n for (const contractKey of toRemove) {\n if (contractIndex[contractKey] && contractIndex[contractKey] !== sectionKey) {\n issues.push('contract key ' + contractKey + ' is linked to another section');\n continue;\n }\n sectionChangeset.push({\n op: 'remove',\n path: '/contracts/' + escapePointer(contractKey)\n });\n }\n\n sectionChangeset.push({\n op: 'replace',\n path: '/contracts/' + escapePointer(sectionKey),\n val: normalized.section\n });\n}\n\nconst removeKeys = uniqueKeys(removeList, 'sectionChanges.remove');\nfor (const sectionKey of removeKeys) {\n if (seenSectionKeys.has(sectionKey)) {\n issues.push('section key duplicated in sectionChanges: ' + sectionKey);\n continue;\n }\n seenSectionKeys.add(sectionKey);\n\n const existingSection = contracts[sectionKey];\n if (!existingSection) {\n issues.push('section key does not exist at /contracts/' + sectionKey);\n continue;\n }\n if (!isDocumentSection(existingSection)) {\n issues.push('existing section at /contracts/' + sectionKey + ' is not a Document Section');\n continue;\n }\n\n const related = existingSection.relatedContracts\n ? uniqueKeys(asList(existingSection.relatedContracts), 'sectionChanges.remove relatedContracts')\n : [];\n if (!existingSection.relatedContracts) {\n issues.push('existing section ' + sectionKey + ' is missing relatedContracts');\n }\n\n for (const contractKey of related) {\n if (contractIndex[contractKey] && contractIndex[contractKey] !== sectionKey) {\n issues.push('contract key ' + contractKey + ' is linked to another section');\n continue;\n }\n sectionChangeset.push({\n op: 'remove',\n path: '/contracts/' + escapePointer(contractKey)\n });\n }\n sectionChangeset.push({\n op: 'remove',\n path: '/contracts/' + escapePointer(sectionKey)\n });\n}\nconst combinedChangeset = sectionChangeset.concat(hasChangeset ? requestChangeset : []);\n\nif (combinedChangeset.length === 0) {\n issues.push('no changes provided');\n}\n\nif (issues.length > 0) {\n return {\n changeset: [],\n events: [\n {\n type: \"Conversation/Proposed Change Invalid\",\n reason: issues.join('; ')\n }\n ]\n }\n}\n\nconst postfixValue = currentContract.postfix || '';\nconst path = '/proposedChange' + postfixValue;\n\nif (document(path)) {\n return {\n changeset: [],\n events: [\n {\n type: \"Conversation/Proposed Change Invalid\",\n reason: \"Can not propose change when it already exists at \" + path\n }\n ]\n }\n}\n\nconst proposedPayload = {\n changeDescription\n};\n\nproposedPayload.preparedChangeset = combinedChangeset;\n\nif (hasChangeset) {\n proposedPayload.changeset = requestChangeset;\n}\n\nconst hasSectionChangesData = addList.length || modifyList.length || removeList.length;\nif (hasSectionChangesData) {\n proposedPayload.sectionChanges = rawSectionChanges;\n}\n\nreturn {\n changeset: [{\n op: 'add',\n path,\n val: proposedPayload\n }]\n};\n",
23
+ value: "const issues = [];\n\nconst request = event.message.request || {};\n\nconst changeDescription = request.changeDescription;\nconst rawChangeset = request.changeset;\nconst rawSectionChanges = request.sectionChanges;\nconst requestSectionChanges = rawSectionChanges || {};\n\nconst toText = (value) => {\n const raw = value && value.value ? value.value : value;\n return raw && raw.trim ? raw.trim() : '';\n};\nconst asList = (value) => Array.isArray(value) ? value : [];\nconst hasType = (value) => value && value.type;\nconst escapePointer = (value) => {\n const text = toText(value);\n return text.split('~').join('~0').split('/').join('~1');\n};\nconst requestChangeset = asList(rawChangeset);\n\nconst uniqueKeys = (values, label) => {\n const seen = new Set();\n const output = [];\n for (const value of values) {\n const key = toText(value);\n if (!key) {\n issues.push(label + ' contains invalid key');\n continue;\n }\n if (seen.has(key)) {\n issues.push(label + ' contains duplicate key: ' + key);\n continue;\n }\n seen.add(key);\n output.push(key);\n }\n return output;\n};\n\nconst sameStringSet = (left, right) => {\n if (left.length !== right.length) return false;\n const set = new Set(left);\n if (set.size !== right.length) return false;\n for (const value of right) {\n if (!set.has(value)) return false;\n }\n return true;\n};\n\nconst contracts = Object(document('/contracts') || {});\n\nconst isDocumentSection = (contract) =>\n !!contract && Array.isArray(contract.relatedContracts);\n\nconst isContractsChangePolicy = (contract) => {\n if (!contract) return false;\n return 'requireSectionChanges' in contract;\n};\n\nconst findPolicy = () => {\n for (const key of Object.keys(contracts)) {\n const contract = contracts[key];\n if (isContractsChangePolicy(contract)) {\n return contract;\n }\n }\n return null;\n};\n\nconst policy = findPolicy();\nconst policyEnabled = !!policy && policy.requireSectionChanges !== false;\n\nif (!toText(changeDescription)) {\n issues.push('changeDescription is missing');\n}\n\nconst hasChangeset = !!rawChangeset;\nconst hasSectionChanges = !!rawSectionChanges;\n\nif (!hasChangeset && !hasSectionChanges) {\n issues.push('changeset or sectionChanges is required');\n}\n\nconst isContractsPath = (path) => {\n const value = toText(path);\n return value === '/contracts' || value.startsWith('/contracts/');\n};\nif (policyEnabled && hasChangeset) {\n for (const entry of requestChangeset) {\n if (entry && isContractsPath(entry.path)) {\n issues.push('changeset cannot modify /contracts when Contracts Change Policy is enabled');\n break;\n }\n }\n}\nconst isProposedChangePath = (path) =>\n toText(path).startsWith('/proposedChange');\nif (hasChangeset) {\n for (const entry of requestChangeset) {\n if (entry && isProposedChangePath(entry.path)) {\n issues.push('changeset cannot modify /proposedChange');\n break;\n }\n }\n}\n\nconst existingSections = {};\nfor (const key of Object.keys(contracts)) {\n const contract = contracts[key];\n if (isDocumentSection(contract)) {\n existingSections[key] = contract;\n }\n}\n\nconst contractIndex = {};\nfor (const sectionKey of Object.keys(existingSections)) {\n const section = existingSections[sectionKey];\n const related = asList(section.relatedContracts);\n for (const relatedKey of related) {\n const contractKey = toText(relatedKey);\n if (!contractKey) continue;\n if (contractIndex[contractKey] && contractIndex[contractKey] !== sectionKey) {\n contractIndex[contractKey] = null;\n } else if (!contractIndex[contractKey]) {\n contractIndex[contractKey] = sectionKey;\n }\n }\n}\n\nconst normalizeSectionDefinition = (sectionDef, label) => {\n if (!sectionDef) {\n issues.push(label + ' entry must be an object');\n return null;\n }\n const sectionKey = toText(sectionDef.sectionKey);\n if (!sectionKey) {\n issues.push(label + ' sectionKey is missing');\n return null;\n }\n const section = sectionDef.section;\n if (!section) {\n issues.push(label + ' section is missing');\n return null;\n }\n\n const rawContractsMap = sectionDef.contracts && sectionDef.contracts.value\n ? sectionDef.contracts.value\n : sectionDef.contracts || {};\n const contractDefs = [];\n const contractKeys = [];\n for (const [rawKey, contract] of Object.entries(rawContractsMap)) {\n if (\n rawKey === 'type' ||\n rawKey === 'keyType' ||\n rawKey === 'valueType' ||\n rawKey === 'description'\n ) {\n continue;\n }\n const key = toText(rawKey);\n if (!key) {\n issues.push(label + ' contract key is missing');\n continue;\n }\n if (!contract) {\n issues.push(label + ' contract ' + key + ' is missing or invalid');\n continue;\n }\n if (!hasType(contract)) {\n issues.push(label + ' contract ' + key + ' is missing type');\n }\n contractDefs.push({ key, contract });\n contractKeys.push(key);\n }\n\n if (!hasType(section)) {\n issues.push(label + ' section ' + sectionKey + ' is missing type');\n }\n\n const related = section.relatedContracts\n ? uniqueKeys(asList(section.relatedContracts), label + ' section ' + sectionKey + ' relatedContracts')\n : null;\n if (related && !sameStringSet(related, contractKeys)) {\n issues.push(label + ' section ' + sectionKey + ' relatedContracts must match contracts');\n }\n\n const normalizedRelated = related || contractKeys;\n const normalizedSection = Object.assign({}, section, {\n type: 'Conversation/Document Section',\n relatedContracts: normalizedRelated\n });\n\n return {\n sectionKey,\n section: normalizedSection,\n contractDefs,\n contractKeys\n };\n};\n\nconst sectionChangeset = [];\nconst seenSectionKeys = new Set();\nconst seenContractKeys = new Set();\n\nconst addList = asList(requestSectionChanges.add);\nconst modifyList = asList(requestSectionChanges.modify);\nconst removeList = asList(requestSectionChanges.remove);\n\nfor (const entry of addList) {\n const normalized = normalizeSectionDefinition(entry, 'sectionChanges.add');\n if (!normalized) continue;\n const sectionKey = normalized.sectionKey;\n if (seenSectionKeys.has(sectionKey)) {\n issues.push('section key duplicated in sectionChanges: ' + sectionKey);\n continue;\n }\n seenSectionKeys.add(sectionKey);\n\n if (contracts[sectionKey]) {\n issues.push('section key already exists at /contracts/' + sectionKey);\n }\n\n for (const contractKey of normalized.contractKeys) {\n if (seenContractKeys.has(contractKey)) {\n issues.push('contract key used by multiple sections in request: ' + contractKey);\n continue;\n }\n seenContractKeys.add(contractKey);\n if (contracts[contractKey]) {\n issues.push('contract key already exists at /contracts/' + contractKey);\n }\n }\n\n for (const contractDef of normalized.contractDefs) {\n sectionChangeset.push({\n op: 'add',\n path: '/contracts/' + escapePointer(contractDef.key),\n val: contractDef.contract\n });\n }\n sectionChangeset.push({\n op: 'add',\n path: '/contracts/' + escapePointer(sectionKey),\n val: normalized.section\n });\n}\n\nfor (const entry of modifyList) {\n const normalized = normalizeSectionDefinition(entry, 'sectionChanges.modify');\n if (!normalized) continue;\n const sectionKey = normalized.sectionKey;\n if (seenSectionKeys.has(sectionKey)) {\n issues.push('section key duplicated in sectionChanges: ' + sectionKey);\n continue;\n }\n seenSectionKeys.add(sectionKey);\n\n const existingSection = contracts[sectionKey];\n if (!existingSection) {\n issues.push('section key does not exist at /contracts/' + sectionKey);\n } else if (!isDocumentSection(existingSection)) {\n issues.push('existing section at /contracts/' + sectionKey + ' is not a Document Section');\n }\n\n const existingRelated =\n existingSection && existingSection.relatedContracts\n ? asList(existingSection.relatedContracts)\n : [];\n if (existingSection && !existingSection.relatedContracts) {\n issues.push('existing section ' + sectionKey + ' is missing relatedContracts');\n }\n\n for (const contractKey of normalized.contractKeys) {\n if (seenContractKeys.has(contractKey)) {\n issues.push('contract key used by multiple sections in request: ' + contractKey);\n continue;\n }\n seenContractKeys.add(contractKey);\n if (contractIndex[contractKey] && contractIndex[contractKey] !== sectionKey) {\n issues.push('contract key ' + contractKey + ' is linked to another section');\n }\n }\n\n for (const contractDef of normalized.contractDefs) {\n const op = contracts[contractDef.key] ? 'replace' : 'add';\n sectionChangeset.push({\n op,\n path: '/contracts/' + escapePointer(contractDef.key),\n val: contractDef.contract\n });\n }\n\n const toRemove = uniqueKeys(existingRelated, 'sectionChanges.modify remove list').filter(\n (key) => !normalized.contractKeys.includes(key)\n );\n for (const contractKey of toRemove) {\n if (contractIndex[contractKey] && contractIndex[contractKey] !== sectionKey) {\n issues.push('contract key ' + contractKey + ' is linked to another section');\n continue;\n }\n sectionChangeset.push({\n op: 'remove',\n path: '/contracts/' + escapePointer(contractKey)\n });\n }\n\n sectionChangeset.push({\n op: 'replace',\n path: '/contracts/' + escapePointer(sectionKey),\n val: normalized.section\n });\n}\n\nconst removeKeys = uniqueKeys(removeList, 'sectionChanges.remove');\nfor (const sectionKey of removeKeys) {\n if (seenSectionKeys.has(sectionKey)) {\n issues.push('section key duplicated in sectionChanges: ' + sectionKey);\n continue;\n }\n seenSectionKeys.add(sectionKey);\n\n const existingSection = contracts[sectionKey];\n if (!existingSection) {\n issues.push('section key does not exist at /contracts/' + sectionKey);\n continue;\n }\n if (!isDocumentSection(existingSection)) {\n issues.push('existing section at /contracts/' + sectionKey + ' is not a Document Section');\n continue;\n }\n\n const related = existingSection.relatedContracts\n ? uniqueKeys(asList(existingSection.relatedContracts), 'sectionChanges.remove relatedContracts')\n : [];\n if (!existingSection.relatedContracts) {\n issues.push('existing section ' + sectionKey + ' is missing relatedContracts');\n }\n\n for (const contractKey of related) {\n if (contractIndex[contractKey] && contractIndex[contractKey] !== sectionKey) {\n issues.push('contract key ' + contractKey + ' is linked to another section');\n continue;\n }\n sectionChangeset.push({\n op: 'remove',\n path: '/contracts/' + escapePointer(contractKey)\n });\n }\n sectionChangeset.push({\n op: 'remove',\n path: '/contracts/' + escapePointer(sectionKey)\n });\n}\nconst combinedChangeset = sectionChangeset.concat(hasChangeset ? requestChangeset : []);\n\nif (combinedChangeset.length === 0) {\n issues.push('no changes provided');\n}\n\nif (issues.length > 0) {\n return {\n changeset: [],\n events: [\n {\n type: \"Conversation/Proposed Change Invalid\",\n reason: issues.join('; ')\n }\n ]\n }\n}\n\nconst postfixValue = currentContract.postfix || '';\nconst path = '/proposedChange' + postfixValue;\n\nif (document(path)) {\n return {\n changeset: [],\n events: [\n {\n type: \"Conversation/Proposed Change Invalid\",\n reason: \"Can not propose change when it already exists at \" + path\n }\n ]\n }\n}\n\nconst proposedPayload = {\n changeDescription\n};\n\nproposedPayload.preparedChangeset = combinedChangeset;\n\nif (hasChangeset) {\n proposedPayload.changeset = requestChangeset;\n}\n\nconst hasSectionChangesData = addList.length || modifyList.length || removeList.length;\nif (hasSectionChangesData) {\n proposedPayload.sectionChanges = rawSectionChanges;\n}\n\nreturn {\n changeset: [{\n op: 'add',\n path,\n val: proposedPayload\n }]\n};\n",
24
24
  },
25
25
  name: 'Prepare',
26
26
  type: {
@@ -1 +1 @@
1
- {"version":3,"file":"ProposeChangeWorkflow.js","sourceRoot":"","sources":["../../../../src/packages/conversation/contents/ProposeChangeWorkflow.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW,EAAE,0DAA0D;IACvE,IAAI,EAAE,yBAAyB;IAC/B,OAAO,EAAE;QACP,WAAW,EACT,iEAAiE;QACnE,IAAI,EAAE;YACJ,MAAM,EAAE,8CAA8C;SACvD;KACF;IACD,OAAO,EAAE;QACP,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE;YACJ,MAAM,EAAE,8CAA8C;SACvD;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE;YACL;gBACE,IAAI,EAAE;oBACJ,IAAI,EAAE;wBACJ,MAAM,EAAE,8CAA8C;qBACvD;oBACD,KAAK,EACH,sqXAAsqX;iBACzqX;gBACD,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE;oBACJ,MAAM,EAAE,8CAA8C;iBACvD;aACF;YACD;gBACE,SAAS,EAAE;oBACT,IAAI,EAAE;wBACJ,MAAM,EAAE,8CAA8C;qBACvD;oBACD,KAAK,EAAE,4BAA4B;iBACpC;gBACD,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE;oBACJ,MAAM,EAAE,8CAA8C;iBACvD;aACF;SACF;KACF;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,8CAA8C;KACvD;CACO,CAAC"}
1
+ {"version":3,"file":"ProposeChangeWorkflow.js","sourceRoot":"","sources":["../../../../src/packages/conversation/contents/ProposeChangeWorkflow.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW,EAAE,0DAA0D;IACvE,IAAI,EAAE,yBAAyB;IAC/B,OAAO,EAAE;QACP,WAAW,EACT,iEAAiE;QACnE,IAAI,EAAE;YACJ,MAAM,EAAE,8CAA8C;SACvD;KACF;IACD,OAAO,EAAE;QACP,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE;YACJ,MAAM,EAAE,8CAA8C;SACvD;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE;YACL;gBACE,IAAI,EAAE;oBACJ,IAAI,EAAE;wBACJ,MAAM,EAAE,8CAA8C;qBACvD;oBACD,KAAK,EACH,+6XAA+6X;iBACl7X;gBACD,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE;oBACJ,MAAM,EAAE,8CAA8C;iBACvD;aACF;YACD;gBACE,SAAS,EAAE;oBACT,IAAI,EAAE;wBACJ,MAAM,EAAE,8CAA8C;qBACvD;oBACD,KAAK,EAAE,4BAA4B;iBACpC;gBACD,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE;oBACJ,MAAM,EAAE,8CAA8C;iBACvD;aACF;SACF;KACF;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,8CAA8C;KACvD;CACO,CAAC"}