@verii/server-credentialagent 1.0.0-pre.1752076816

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 (395) hide show
  1. package/.localdev.e2e.env +40 -0
  2. package/.localdev.env +41 -0
  3. package/.standalone.env +5 -0
  4. package/LICENSE +202 -0
  5. package/NOTICE +1 -0
  6. package/README.md +19 -0
  7. package/docker/compose.yml +33 -0
  8. package/e2e/README.md +12 -0
  9. package/e2e/org-registration-and-issuing.e2e.test.js +624 -0
  10. package/jest.config.js +20 -0
  11. package/migrate-mongo.config.js +36 -0
  12. package/migrations/20210317133137-add-index-to-offers-repo.js +57 -0
  13. package/migrations/20210416145639-add-index-to-revocation-list.js +27 -0
  14. package/migrations/20210719120225-add_unique_did_index_to_tenant.js +45 -0
  15. package/migrations/20230524053029-add-vendorUserIdMappings-index.js +32 -0
  16. package/migrations/20230616111907-add-configuration-type-index.js +32 -0
  17. package/package.json +108 -0
  18. package/src/assets/public/favicon.ico +0 -0
  19. package/src/assets/public/logo192.png +0 -0
  20. package/src/assets/public/logo512.png +0 -0
  21. package/src/assets/public/manifest.json +28 -0
  22. package/src/assets/templates/app-redirect.hbs +16 -0
  23. package/src/config/config.js +44 -0
  24. package/src/config/core-config.js +143 -0
  25. package/src/config/holder-config.js +104 -0
  26. package/src/config/index.js +22 -0
  27. package/src/config/operator-config.js +64 -0
  28. package/src/controllers/autoload-holder-api-controllers.js +30 -0
  29. package/src/controllers/autoload-operator-api-controllers.js +31 -0
  30. package/src/controllers/autoload-root-api-controller.js +30 -0
  31. package/src/controllers/autoload-saasoperator-api-controllers.js +31 -0
  32. package/src/controllers/holder/autohooks.js +55 -0
  33. package/src/controllers/holder/get-exchange-progress/autohooks.js +27 -0
  34. package/src/controllers/holder/get-exchange-progress/controller.js +50 -0
  35. package/src/controllers/holder/inspect/autohooks.js +35 -0
  36. package/src/controllers/holder/inspect/get-presentation-request/controller.js +100 -0
  37. package/src/controllers/holder/inspect/schemas/holder-disclosure.schema.json +73 -0
  38. package/src/controllers/holder/inspect/schemas/index.js +33 -0
  39. package/src/controllers/holder/inspect/schemas/presentation-definition.v1.schema.json +461 -0
  40. package/src/controllers/holder/inspect/schemas/presentation-request.schema.json +279 -0
  41. package/src/controllers/holder/inspect/schemas/presentation-submission.schema.json +41 -0
  42. package/src/controllers/holder/inspect/schemas/siop-presentation-submission.schema.json +74 -0
  43. package/src/controllers/holder/inspect/schemas/velocity-presentation-submission.response.200.schema.json +36 -0
  44. package/src/controllers/holder/inspect/schemas/velocity-presentation-submission.schema.json +34 -0
  45. package/src/controllers/holder/inspect/submit-presentation/controller.js +89 -0
  46. package/src/controllers/holder/issue/autohooks.js +23 -0
  47. package/src/controllers/holder/issue/get-credential-manifest/controller.js +193 -0
  48. package/src/controllers/holder/issue/offers/autohooks.js +35 -0
  49. package/src/controllers/holder/issue/offers/controller.js +164 -0
  50. package/src/controllers/holder/issue/offers/credential-offers/controller.js +460 -0
  51. package/src/controllers/holder/issue/submit-identification/autohooks.js +37 -0
  52. package/src/controllers/holder/issue/submit-identification/controller.js +63 -0
  53. package/src/controllers/holder/oauth/autohooks.js +19 -0
  54. package/src/controllers/holder/oauth/controller.js +140 -0
  55. package/src/controllers/index.js +22 -0
  56. package/src/controllers/operator/tenants/_tenantId/autohooks.js +40 -0
  57. package/src/controllers/operator/tenants/_tenantId/check-credentials/autohooks.js +24 -0
  58. package/src/controllers/operator/tenants/_tenantId/check-credentials/controller-v0.8.js +200 -0
  59. package/src/controllers/operator/tenants/_tenantId/check-credentials/schemas/index.js +19 -0
  60. package/src/controllers/operator/tenants/_tenantId/check-credentials/schemas/vendor-credential.schema.json +244 -0
  61. package/src/controllers/operator/tenants/_tenantId/controller-v0.8.js +221 -0
  62. package/src/controllers/operator/tenants/_tenantId/disclosures/_id/autohooks.js +30 -0
  63. package/src/controllers/operator/tenants/_tenantId/disclosures/_id/controller-v0.8.js +271 -0
  64. package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/autohooks.js +45 -0
  65. package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/controller-v0.8.js +199 -0
  66. package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/add-feed.schema.js +14 -0
  67. package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/feed.schema.json +27 -0
  68. package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/index.js +25 -0
  69. package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/modify-feed-update-body.schema.js +18 -0
  70. package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/modify-feed.schema.json +19 -0
  71. package/src/controllers/operator/tenants/_tenantId/disclosures/autohooks.js +34 -0
  72. package/src/controllers/operator/tenants/_tenantId/disclosures/controller-v0.8.js +100 -0
  73. package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/agent-disclosure-presentation-definition.schema.json +404 -0
  74. package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/agent-disclosure.schema.js +24 -0
  75. package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/index.js +29 -0
  76. package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/new-agent-disclosure.schema.json +166 -0
  77. package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/update-agent-disclosure.schema.js +20 -0
  78. package/src/controllers/operator/tenants/_tenantId/exchanges/_exchangeId/autohooks.js +30 -0
  79. package/src/controllers/operator/tenants/_tenantId/exchanges/_exchangeId/controller-v0.8.js +73 -0
  80. package/src/controllers/operator/tenants/_tenantId/exchanges/autohooks.js +19 -0
  81. package/src/controllers/operator/tenants/_tenantId/exchanges/controller-v0.8.js +150 -0
  82. package/src/controllers/operator/tenants/_tenantId/exchanges/schemas/get-exchange.response.body.json +147 -0
  83. package/src/controllers/operator/tenants/_tenantId/exchanges/schemas/index.js +21 -0
  84. package/src/controllers/operator/tenants/_tenantId/issued-credentials/autohooks.js +27 -0
  85. package/src/controllers/operator/tenants/_tenantId/issued-credentials/controller-v0.8.js +303 -0
  86. package/src/controllers/operator/tenants/_tenantId/issued-credentials/schemas/index.js +23 -0
  87. package/src/controllers/operator/tenants/_tenantId/issued-credentials/schemas/issued-credential.schema.json +115 -0
  88. package/src/controllers/operator/tenants/_tenantId/issued-credentials/schemas/revoke-credentials.schema.json +18 -0
  89. package/src/controllers/operator/tenants/_tenantId/keys/controller-v0.8.js +168 -0
  90. package/src/controllers/operator/tenants/_tenantId/offer-data/controller-v0.8.js +78 -0
  91. package/src/controllers/operator/tenants/_tenantId/offers/autohooks.js +34 -0
  92. package/src/controllers/operator/tenants/_tenantId/offers/controller-v0.8.js +253 -0
  93. package/src/controllers/operator/tenants/_tenantId/offers/schemas/index.js +23 -0
  94. package/src/controllers/operator/tenants/_tenantId/offers/schemas/new-vendor-offer.schema.js +47 -0
  95. package/src/controllers/operator/tenants/_tenantId/offers/schemas/vendor-offer.schema.json +56 -0
  96. package/src/controllers/operator/tenants/_tenantId/users/autohooks.js +24 -0
  97. package/src/controllers/operator/tenants/_tenantId/users/controller-v0.8.js +92 -0
  98. package/src/controllers/operator/tenants/_tenantId/users/schemas/index.js +23 -0
  99. package/src/controllers/operator/tenants/_tenantId/users/schemas/new-user.schema.json +13 -0
  100. package/src/controllers/operator/tenants/_tenantId/users/schemas/user.schema.json +16 -0
  101. package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/autohooks.js +34 -0
  102. package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/controller-v0.8.js +110 -0
  103. package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/Credential.schema.js +18 -0
  104. package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/IssueCredentialOptions.schema.json +42 -0
  105. package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/IssueCredentialRequest.schema.json +13 -0
  106. package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/IssueCredentialResponse.schema.json +19 -0
  107. package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/LinkedDataProof.schema.json +43 -0
  108. package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/VerifiableCredential.schema.js +16 -0
  109. package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/index.js +31 -0
  110. package/src/controllers/operator/tenants/autohooks.js +65 -0
  111. package/src/controllers/operator/tenants/controller-v0.8.js +167 -0
  112. package/src/controllers/operator/tenants/schemas/index.js +41 -0
  113. package/src/controllers/operator/tenants/schemas/modify-secret.schema.json +11 -0
  114. package/src/controllers/operator/tenants/schemas/modify-tenant-v0.8.schema.json +44 -0
  115. package/src/controllers/operator/tenants/schemas/new-tenant-v0.8.schema.json +19 -0
  116. package/src/controllers/operator/tenants/schemas/new-tenant.response.200.schema.json +7 -0
  117. package/src/controllers/operator/tenants/schemas/secret-key-metadata.schema.json +31 -0
  118. package/src/controllers/operator/tenants/schemas/secret-key.schema.json +29 -0
  119. package/src/controllers/operator/tenants/schemas/secret-kid.schema.json +13 -0
  120. package/src/controllers/operator/tenants/schemas/secret-new-tenant-v0.8.schema.json +28 -0
  121. package/src/controllers/operator/tenants/schemas/secret-tenant-key-v0.8.schema.json +13 -0
  122. package/src/controllers/operator/tenants/schemas/tenant-key-v0.8.schema.json +14 -0
  123. package/src/controllers/operator/tenants/schemas/tenant-v0.8.schema.json +62 -0
  124. package/src/controllers/root/autohooks.js +23 -0
  125. package/src/controllers/root/controller.js +173 -0
  126. package/src/controllers/saasoperator/groups/_id/autohooks.js +9 -0
  127. package/src/controllers/saasoperator/groups/_id/controller.js +121 -0
  128. package/src/controllers/saasoperator/groups/autohooks.js +19 -0
  129. package/src/controllers/saasoperator/groups/controller.js +65 -0
  130. package/src/controllers/saasoperator/groups/schemas/group.schema.js +17 -0
  131. package/src/controllers/saasoperator/groups/schemas/index.js +4 -0
  132. package/src/controllers/saasoperator/groups/schemas/new-group.schema.js +13 -0
  133. package/src/entities/common/domains/get-json-at-path.js +28 -0
  134. package/src/entities/common/domains/index.js +17 -0
  135. package/src/entities/common/index.js +17 -0
  136. package/src/entities/credentials/domains/credential-format.js +22 -0
  137. package/src/entities/credentials/domains/index.js +19 -0
  138. package/src/entities/credentials/index.js +17 -0
  139. package/src/entities/deep-links/domains/extract-did.js +11 -0
  140. package/src/entities/deep-links/domains/index.js +20 -0
  141. package/src/entities/deep-links/domains/velocity-protocol-uri-to-http-uri.js +32 -0
  142. package/src/entities/deep-links/index.js +19 -0
  143. package/src/entities/disclosures/domains/assert-disclosure-active.js +21 -0
  144. package/src/entities/disclosures/domains/compute-disclosure-configuration-type.js +29 -0
  145. package/src/entities/disclosures/domains/constants.js +61 -0
  146. package/src/entities/disclosures/domains/errors.js +34 -0
  147. package/src/entities/disclosures/domains/get-disclosure-configuration-type.js +60 -0
  148. package/src/entities/disclosures/domains/index.js +32 -0
  149. package/src/entities/disclosures/domains/is-issuing-disclosure.js +23 -0
  150. package/src/entities/disclosures/domains/parse-body-to-disclosure.js +17 -0
  151. package/src/entities/disclosures/domains/validate-by-identification-method.js +69 -0
  152. package/src/entities/disclosures/domains/validate-commercial-entity.js +26 -0
  153. package/src/entities/disclosures/domains/validate-disclosure-by-configuration-type.js +47 -0
  154. package/src/entities/disclosures/domains/validate-disclosure-default-issuing.js +77 -0
  155. package/src/entities/disclosures/domains/validate-disclosure.js +37 -0
  156. package/src/entities/disclosures/domains/validate-feed.js +16 -0
  157. package/src/entities/disclosures/domains/validate-presentation-definition.js +54 -0
  158. package/src/entities/disclosures/domains/validate-vendor-endpoint.js +22 -0
  159. package/src/entities/disclosures/domains/validate-vendor-webhook.js +18 -0
  160. package/src/entities/disclosures/factories/disclosure-factory.js +94 -0
  161. package/src/entities/disclosures/factories/index.js +19 -0
  162. package/src/entities/disclosures/index.js +22 -0
  163. package/src/entities/disclosures/orchestrators/get-disclosure.js +18 -0
  164. package/src/entities/disclosures/orchestrators/index.js +20 -0
  165. package/src/entities/disclosures/orchestrators/update-disclosure-configuration-type.js +32 -0
  166. package/src/entities/disclosures/repos/index.js +20 -0
  167. package/src/entities/disclosures/repos/repo.js +118 -0
  168. package/src/entities/disclosures/repos/set-configuration-type.js +33 -0
  169. package/src/entities/exchanges/adapters/index.js +17 -0
  170. package/src/entities/exchanges/adapters/sign-exchange-response.js +45 -0
  171. package/src/entities/exchanges/domains/build-exchange-progress.js +56 -0
  172. package/src/entities/exchanges/domains/constants.js +24 -0
  173. package/src/entities/exchanges/domains/ensure-exchange-state-valid.js +35 -0
  174. package/src/entities/exchanges/domains/errors.js +33 -0
  175. package/src/entities/exchanges/domains/index.js +25 -0
  176. package/src/entities/exchanges/domains/states.js +43 -0
  177. package/src/entities/exchanges/domains/types.js +31 -0
  178. package/src/entities/exchanges/factories/disclosure-exchange-factory.js +46 -0
  179. package/src/entities/exchanges/factories/index.js +20 -0
  180. package/src/entities/exchanges/factories/offer-exchange-factory.js +48 -0
  181. package/src/entities/exchanges/index.js +23 -0
  182. package/src/entities/exchanges/orchestrators/build-exchange-request-deep-link.js +50 -0
  183. package/src/entities/exchanges/orchestrators/index.js +19 -0
  184. package/src/entities/exchanges/repos/exchange-repo-projections.js +45 -0
  185. package/src/entities/exchanges/repos/exchange-state-repo-extension.js +76 -0
  186. package/src/entities/exchanges/repos/index.js +20 -0
  187. package/src/entities/exchanges/repos/repo.js +44 -0
  188. package/src/entities/feeds/factories/feed-factory.js +47 -0
  189. package/src/entities/feeds/factories/index.js +19 -0
  190. package/src/entities/feeds/index.js +20 -0
  191. package/src/entities/feeds/repos/index.js +19 -0
  192. package/src/entities/feeds/repos/repo.js +95 -0
  193. package/src/entities/groups/domains/format-group.js +11 -0
  194. package/src/entities/groups/domains/index.js +3 -0
  195. package/src/entities/groups/factories/group-factory.js +40 -0
  196. package/src/entities/groups/factories/index.js +19 -0
  197. package/src/entities/groups/index.js +22 -0
  198. package/src/entities/groups/orchestrators/find-group-or-error.js +16 -0
  199. package/src/entities/groups/orchestrators/index.js +6 -0
  200. package/src/entities/groups/orchestrators/validate-did.js +24 -0
  201. package/src/entities/groups/orchestrators/validate-group-by-user.js +16 -0
  202. package/src/entities/groups/orchestrators/validate-group.js +39 -0
  203. package/src/entities/groups/repos/delete-tenant-extension.js +13 -0
  204. package/src/entities/groups/repos/index.js +19 -0
  205. package/src/entities/groups/repos/repo.js +38 -0
  206. package/src/entities/groups/repos/update-or-error-extension.js +46 -0
  207. package/src/entities/index.js +37 -0
  208. package/src/entities/keys/domains/constants.js +37 -0
  209. package/src/entities/keys/domains/index.js +21 -0
  210. package/src/entities/keys/domains/is-matching-private-key-kid.js +41 -0
  211. package/src/entities/keys/domains/validate-key.js +62 -0
  212. package/src/entities/keys/factories/index.js +19 -0
  213. package/src/entities/keys/factories/key-factory.js +56 -0
  214. package/src/entities/keys/index.js +22 -0
  215. package/src/entities/keys/orchestrators/index.js +3 -0
  216. package/src/entities/keys/orchestrators/validate-did-doc-keys.js +69 -0
  217. package/src/entities/metadata-list-allocations/index.js +19 -0
  218. package/src/entities/metadata-list-allocations/repos/index.js +19 -0
  219. package/src/entities/metadata-list-allocations/repos/repo.js +40 -0
  220. package/src/entities/notifications/domains/index.js +19 -0
  221. package/src/entities/notifications/domains/notification-types.js +25 -0
  222. package/src/entities/notifications/index.js +19 -0
  223. package/src/entities/offers/domains/build-clean-pii-filter.js +35 -0
  224. package/src/entities/offers/domains/build-deeplink-url.js +120 -0
  225. package/src/entities/offers/domains/build-offer.js +88 -0
  226. package/src/entities/offers/domains/build-qr-code-url.js +37 -0
  227. package/src/entities/offers/domains/constants.js +32 -0
  228. package/src/entities/offers/domains/filter-object-ids.js +34 -0
  229. package/src/entities/offers/domains/generate-issuing-challenge.js +26 -0
  230. package/src/entities/offers/domains/generate-link-code.js +35 -0
  231. package/src/entities/offers/domains/index.js +31 -0
  232. package/src/entities/offers/domains/post-validation-offers-handler.js +31 -0
  233. package/src/entities/offers/domains/prepare-linked-credentials-for-holder.js +36 -0
  234. package/src/entities/offers/domains/resolve-subject.js +142 -0
  235. package/src/entities/offers/domains/validate-offer-commercial-entity.js +24 -0
  236. package/src/entities/offers/domains/validate-offer.js +90 -0
  237. package/src/entities/offers/factories/index.js +19 -0
  238. package/src/entities/offers/factories/offer-factory.js +119 -0
  239. package/src/entities/offers/index.js +22 -0
  240. package/src/entities/offers/orchestrators/create-verifiable-credentials.js +131 -0
  241. package/src/entities/offers/orchestrators/finalize-exchange.js +44 -0
  242. package/src/entities/offers/orchestrators/index.js +23 -0
  243. package/src/entities/offers/orchestrators/load-credential-refs.js +57 -0
  244. package/src/entities/offers/orchestrators/load-credential-types-map.js +44 -0
  245. package/src/entities/offers/orchestrators/prepare-offers.js +35 -0
  246. package/src/entities/offers/orchestrators/trigger-issued-credentials-webhook.js +63 -0
  247. package/src/entities/offers/repos/clean-pii-extension.js +85 -0
  248. package/src/entities/offers/repos/index.js +20 -0
  249. package/src/entities/offers/repos/issued-credential-projection.js +44 -0
  250. package/src/entities/offers/repos/repo.js +177 -0
  251. package/src/entities/presentations/domains/build-identity-doc.js +120 -0
  252. package/src/entities/presentations/domains/build-request-response-schema.js +46 -0
  253. package/src/entities/presentations/domains/build-vendor-data.js +31 -0
  254. package/src/entities/presentations/domains/check-payment-requirement.js +30 -0
  255. package/src/entities/presentations/domains/errors.js +28 -0
  256. package/src/entities/presentations/domains/extract-fields-from-id-credential.js +35 -0
  257. package/src/entities/presentations/domains/index.js +26 -0
  258. package/src/entities/presentations/domains/merge-credential-check-results.js +24 -0
  259. package/src/entities/presentations/domains/validate-presentation.js +128 -0
  260. package/src/entities/presentations/index.js +20 -0
  261. package/src/entities/presentations/orchestrators/create-presentation-request.js +148 -0
  262. package/src/entities/presentations/orchestrators/deduplicate-disclosure-exchange.js +52 -0
  263. package/src/entities/presentations/orchestrators/handle-presentation-submission.js +47 -0
  264. package/src/entities/presentations/orchestrators/index.js +20 -0
  265. package/src/entities/presentations/orchestrators/match-identity-on-exchange.js +114 -0
  266. package/src/entities/presentations/orchestrators/share-identification-credentials.js +110 -0
  267. package/src/entities/presentations/orchestrators/share-presentation.js +234 -0
  268. package/src/entities/push-delegate/get-push-delegate.js +37 -0
  269. package/src/entities/push-delegate/index.js +17 -0
  270. package/src/entities/redirect/index.js +3 -0
  271. package/src/entities/redirect/orchestrators/index.js +3 -0
  272. package/src/entities/redirect/orchestrators/load-org-info.js +40 -0
  273. package/src/entities/revocation-list-allocations/index.js +19 -0
  274. package/src/entities/revocation-list-allocations/repos/index.js +19 -0
  275. package/src/entities/revocation-list-allocations/repos/repo.js +40 -0
  276. package/src/entities/schemas/index.js +19 -0
  277. package/src/entities/schemas/orchestrators/index.js +19 -0
  278. package/src/entities/schemas/orchestrators/load-schema-validation.js +73 -0
  279. package/src/entities/tenants/domains/build-service-ids.js +27 -0
  280. package/src/entities/tenants/domains/extract-service.js +27 -0
  281. package/src/entities/tenants/domains/index.js +21 -0
  282. package/src/entities/tenants/domains/validate-service-ids.js +35 -0
  283. package/src/entities/tenants/factories/index.js +19 -0
  284. package/src/entities/tenants/factories/tenant-factory.js +37 -0
  285. package/src/entities/tenants/index.js +22 -0
  286. package/src/entities/tenants/orchestrators/add-primary-address-to-tenant.js +47 -0
  287. package/src/entities/tenants/orchestrators/create-tenant.js +91 -0
  288. package/src/entities/tenants/orchestrators/index.js +22 -0
  289. package/src/entities/tenants/orchestrators/refresh-tenant-dids.js +146 -0
  290. package/src/entities/tenants/orchestrators/set-tenant-default-issuing-disclosure.js +31 -0
  291. package/src/entities/tenants/repos/index.js +20 -0
  292. package/src/entities/tenants/repos/insert-tenant-extension.js +33 -0
  293. package/src/entities/tenants/repos/repo.js +52 -0
  294. package/src/entities/tenants/repos/tenant-default-projection.js +33 -0
  295. package/src/entities/tokens/adapters/access-token.js +49 -0
  296. package/src/entities/tokens/adapters/index.js +19 -0
  297. package/src/entities/tokens/index.js +19 -0
  298. package/src/entities/users/factories/index.js +19 -0
  299. package/src/entities/users/factories/user-factory.js +36 -0
  300. package/src/entities/users/index.js +20 -0
  301. package/src/entities/users/repos/add-anonymous-user-repo-extension.js +23 -0
  302. package/src/entities/users/repos/find-or-insert-vendor-user-repo-extension.js +30 -0
  303. package/src/entities/users/repos/index.js +19 -0
  304. package/src/entities/users/repos/repo.js +50 -0
  305. package/src/fetchers/index.js +20 -0
  306. package/src/fetchers/operator/identify-fetcher.js +36 -0
  307. package/src/fetchers/operator/index.js +21 -0
  308. package/src/fetchers/operator/inspection-fetcher.js +35 -0
  309. package/src/fetchers/operator/issuing-fetcher.js +50 -0
  310. package/src/fetchers/operator/webhook-auth-header.js +45 -0
  311. package/src/fetchers/push-gateway/generate-push-gateway-token.js +40 -0
  312. package/src/fetchers/push-gateway/index.js +19 -0
  313. package/src/fetchers/push-gateway/push-fetcher.js +39 -0
  314. package/src/index.js +19 -0
  315. package/src/init-holder-server.js +108 -0
  316. package/src/init-operator-server.js +101 -0
  317. package/src/init-server.js +120 -0
  318. package/src/main-holder.js +18 -0
  319. package/src/main-operator.js +19 -0
  320. package/src/main.js +18 -0
  321. package/src/plugins/autoload-repos.js +28 -0
  322. package/src/plugins/disclosure-loader-plugin.js +56 -0
  323. package/src/plugins/ensure-disclosure-active-plugin.js +30 -0
  324. package/src/plugins/ensure-disclosure-configuration-type-plugin.js +29 -0
  325. package/src/plugins/ensure-tenant-default-issuing-disclosure-id-plugin.js +60 -0
  326. package/src/plugins/ensure-tenant-primary-address-plugin.js +44 -0
  327. package/src/plugins/exchange-error-handler-plugin.js +51 -0
  328. package/src/plugins/exchange-loader-plugin.js +50 -0
  329. package/src/plugins/group-loader-plugin.js +51 -0
  330. package/src/plugins/index.js +32 -0
  331. package/src/plugins/kms-plugin.js +57 -0
  332. package/src/plugins/tenant-loader-plugin.js +91 -0
  333. package/src/plugins/validate-cao-plugin.js +81 -0
  334. package/src/plugins/vendor-routes-auth-plugin.js +24 -0
  335. package/src/plugins/verify-access-token-plugin.js +88 -0
  336. package/src/standalone.js +24 -0
  337. package/src/start-app-server.js +38 -0
  338. package/test/combined/app-redirect.test.js +199 -0
  339. package/test/combined/helpers/credentialagent-build-fastify.js +29 -0
  340. package/test/combined/helpers/index.js +22 -0
  341. package/test/combined/helpers/nock-registrar-app-schema-name.js +50 -0
  342. package/test/combined/helpers/nock-registrar-get-organization-diddoc.js +26 -0
  343. package/test/combined/helpers/nock-registrar-get-organization-verified-profile.js +33 -0
  344. package/test/combined/manifest.json.test.js +55 -0
  345. package/test/combined/root-controller.test.js +42 -0
  346. package/test/combined/schemas/education-degree.schema.json +166 -0
  347. package/test/combined/schemas/employment-current-v1.1.schema.json +253 -0
  348. package/test/combined/schemas/open-badge-credential.schema.json +1285 -0
  349. package/test/combined/schemas/past-employment-position-with-uri-id.schema.js +22 -0
  350. package/test/combined/schemas/past-employment-position.schema.json +148 -0
  351. package/test/combined/schemas/will-always-validate.json +10 -0
  352. package/test/combined/validate-cao-plugin.test.js +155 -0
  353. package/test/get-push-delegate.test.js +54 -0
  354. package/test/helpers/jwt-vc-expectation.js +109 -0
  355. package/test/holder/build-request-response-schema.test.js +55 -0
  356. package/test/holder/credential-manifest-controller.test.js +3192 -0
  357. package/test/holder/e2e-issuing-controller.test.js +425 -0
  358. package/test/holder/get-exchange-progress-controller.test.js +521 -0
  359. package/test/holder/get-presentation-request.test.js +906 -0
  360. package/test/holder/helpers/credential-type-metadata.js +98 -0
  361. package/test/holder/helpers/credentialagent-holder-build-fastify.js +32 -0
  362. package/test/holder/helpers/generate-presentation.js +441 -0
  363. package/test/holder/helpers/generate-test-access-token.js +54 -0
  364. package/test/holder/helpers/jwt-access-token-expectation.js +32 -0
  365. package/test/holder/helpers/jwt-vc-expectation.js +115 -0
  366. package/test/holder/issuing-controller.test.js +7076 -0
  367. package/test/holder/oauth-token-controller.test.js +412 -0
  368. package/test/holder/presentation-submission.test.js +2365 -0
  369. package/test/holder/submit-identification.test.js +4815 -0
  370. package/test/operator/check-credentials-controller-v0.8.test.js +832 -0
  371. package/test/operator/credentials-revoke.test.js +536 -0
  372. package/test/operator/disclosures-controller-v0.8.test.js +4157 -0
  373. package/test/operator/exchanges-controller-v0.8.test.js +414 -0
  374. package/test/operator/exchanges-id-controller-v0.8.test.js +162 -0
  375. package/test/operator/feeds-controller-v0.8.test.js +659 -0
  376. package/test/operator/generate-push-gateway-token.test.js +116 -0
  377. package/test/operator/groups-controller.test.js +145 -0
  378. package/test/operator/groups-id-controller.test.js +287 -0
  379. package/test/operator/helpers/create-test-org-doc.js +60 -0
  380. package/test/operator/helpers/credentialagent-operator-build-fastify.js +32 -0
  381. package/test/operator/helpers/find-kms-key.js +31 -0
  382. package/test/operator/helpers/generate-primary-and-add-operator-to-primary.js +63 -0
  383. package/test/operator/helpers/init-agent-kms.js +22 -0
  384. package/test/operator/issued-credentials-controller-v0.8.test.js +398 -0
  385. package/test/operator/keys-controller-v0.8.test.js +1130 -0
  386. package/test/operator/offer-data-controller-v0.8.test.js +253 -0
  387. package/test/operator/offers-controller-v0.8.test.js +3026 -0
  388. package/test/operator/set-configuration-type-modifier.test.js +75 -0
  389. package/test/operator/swagger.test.js +37 -0
  390. package/test/operator/tenant-controller-v0.8.test.js +730 -0
  391. package/test/operator/tenant-loader-plugin.test.js +96 -0
  392. package/test/operator/tenants-controller-v0.8.test.js +2093 -0
  393. package/test/operator/users-controller-v0.8.test.js +137 -0
  394. package/test/operator/vc-api-credentials.test.js +963 -0
  395. package/verification.env +28 -0
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Copyright 2023 Velocity Team
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ module.exports = {
18
+ up: async (db) => {
19
+ await db.collection('offers').createIndexes(
20
+ [
21
+ {
22
+ key: { exchangeId: 1 },
23
+ name: 'exchangeIdIndex',
24
+ },
25
+ {
26
+ key: { did: 1 },
27
+ name: 'didIndex',
28
+ },
29
+ {
30
+ key: { 'issuer.id': 1 },
31
+ name: 'issuerIndex',
32
+ },
33
+ {
34
+ key: { 'credentialSubject.vendorUserId': 1 },
35
+ name: 'credentialSubjectIndex',
36
+ },
37
+ {
38
+ key: { offerId: 1 },
39
+ name: 'offerIdIndex',
40
+ },
41
+ ],
42
+ {
43
+ sparse: true,
44
+ }
45
+ );
46
+ },
47
+
48
+ down: async (db) => {
49
+ db.collection('offers').dropIndexes({
50
+ exchangeIdIndex: 1,
51
+ issuerIndex: 1,
52
+ offerIdIndex: 1,
53
+ didIndex: 1,
54
+ credentialSubjectIndex: 1,
55
+ });
56
+ },
57
+ };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright 2023 Velocity Team
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ module.exports = {
18
+ up: async (db) => {
19
+ await db.collection('revocationLists').createIndex({ tenantId: 1 });
20
+ },
21
+
22
+ down: async (db) => {
23
+ db.collection('revocationLists').dropIndex({
24
+ tenantId: 1,
25
+ });
26
+ },
27
+ };
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Copyright 2023 Velocity Team
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ const { each } = require('lodash/fp');
18
+
19
+ module.exports = {
20
+ up: async (db) => {
21
+ const tenantCollection = await db.collection('tenants');
22
+ const results = await tenantCollection.aggregate([
23
+ { $group: { _id: '$did', count: { $sum: 1 } } },
24
+ { $match: { _id: { $ne: null }, count: { $gt: 1 } } },
25
+ { $project: { did: '$_id', _id: 0 } },
26
+ ]);
27
+ const resultsArray = await results.toArray();
28
+ if (resultsArray.length > 0) {
29
+ // eslint-disable-next-line no-console
30
+ console.log(`${resultsArray.length} duplicates found.`);
31
+ // eslint-disable-next-line no-console
32
+ console.log(
33
+ 'Please remove the following duplicate tenants before re-running the migration'
34
+ );
35
+ each((result) => {
36
+ // eslint-disable-next-line no-console
37
+ console.log(result);
38
+ }, resultsArray);
39
+ throw new Error('Found duplicate tenants');
40
+ }
41
+
42
+ await tenantCollection.createIndex({ did: 1 }, { unique: true });
43
+ },
44
+ down: async () => {},
45
+ };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright 2023 Velocity Team
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ module.exports = {
18
+ up: async (db) => {
19
+ await db.collection('vendorUserIdMappings').createIndexes([
20
+ {
21
+ key: { tenantId: 1, vendorUserId: 1 },
22
+ name: 'vendorUserIdIndex',
23
+ },
24
+ ]);
25
+ },
26
+
27
+ down: async (db) => {
28
+ db.collection('vendorUserIdMappings').dropIndexes({
29
+ vendorUserIdIndex: 1,
30
+ });
31
+ },
32
+ };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright 2023 Velocity Team
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ module.exports = {
18
+ up: async (db) => {
19
+ await db.collection('disclosures').createIndexes([
20
+ {
21
+ key: { configurationType: 1 },
22
+ name: 'disclosureConfigurationTypeIndex',
23
+ },
24
+ ]);
25
+ },
26
+
27
+ down: async (db) => {
28
+ db.collection('disclosures').dropIndexes({
29
+ disclosureConfigurationTypeIndex: 1,
30
+ });
31
+ },
32
+ };
package/package.json ADDED
@@ -0,0 +1,108 @@
1
+ {
2
+ "name": "@verii/server-credentialagent",
3
+ "version": "1.0.0-pre.1752076816",
4
+ "description": "Credential Agent application",
5
+ "main": "src/index.js",
6
+ "repository": "https://github.com/LFDT-Verii/core",
7
+ "engines": {
8
+ "node": ">=22.11.0"
9
+ },
10
+ "scripts": {
11
+ "test": "jest ./test --config ./jest.config.js --runInBand --coverage",
12
+ "test:e2e": "jest ./e2e/org-registration-and-issuing.e2e.test.js --config ./jest.config.js --runInBand",
13
+ "start": "node src/main.js",
14
+ "start:dev": "node --throw-deprecation src/standalone.js",
15
+ "start-operator": "node src/main-operator.js",
16
+ "start-holder": "node src/main-holder.js",
17
+ "lint": "eslint . --format json >> eslint.json",
18
+ "lint:fix": "eslint --fix --ext .js .",
19
+ "migrate:status": "./node_modules/.bin/migrate-mongo status --file migrate-mongo.config.js",
20
+ "migrate:create": "./node_modules/.bin/migrate-mongo create --file migrate-mongo.config.js",
21
+ "migrate:up": "./node_modules/.bin/migrate-mongo up --file migrate-mongo.config.js",
22
+ "migrate:down": "./node_modules/.bin/migrate-mongo down --file migrate-mongo.config.js"
23
+ },
24
+ "author": "Yauheni Pozdnyakov",
25
+ "license": "Apache-2.0",
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "dependencies": {
30
+ "@fastify/autoload": "^6.0.0",
31
+ "@fastify/helmet": "^13.0.0",
32
+ "@fastify/routes": "^6.0.0",
33
+ "@fastify/sensible": "^6.0.0",
34
+ "@fastify/static": "^8.0.0",
35
+ "@fastify/swagger": "^9.0.0",
36
+ "@fastify/swagger-ui": "^5.0.0",
37
+ "@fastify/view": "^11.0.0",
38
+ "@spencejs/spence-factories": "^0.10.2",
39
+ "@spencejs/spence-mongo-repos": "^0.10.2",
40
+ "@verii/auth": "1.0.0-pre.1752076816",
41
+ "@verii/base-contract-io": "1.0.0-pre.1752076816",
42
+ "@verii/blockchain-functions": "1.0.0-pre.1752076816",
43
+ "@verii/common-fetchers": "1.0.0-pre.1752076816",
44
+ "@verii/common-functions": "1.0.0-pre.1752076816",
45
+ "@verii/common-schemas": "1.0.0-pre.1752076816",
46
+ "@verii/config": "1.0.0-pre.1752076816",
47
+ "@verii/contract-permissions": "1.0.0-pre.1752076816",
48
+ "@verii/crypto": "1.0.0-pre.1752076816",
49
+ "@verii/csv-parser": "1.0.0-pre.1752076816",
50
+ "@verii/db-kms": "1.0.0-pre.1752076816",
51
+ "@verii/did-doc": "1.0.0-pre.1752076816",
52
+ "@verii/fastify-plugins": "1.0.0-pre.1752076816",
53
+ "@verii/jwt": "1.0.0-pre.1752076816",
54
+ "@verii/metadata-registration": "1.0.0-pre.1752076816",
55
+ "@verii/organizations-registry": "1.0.0-pre.1752076816",
56
+ "@verii/request": "1.0.0-pre.1752076816",
57
+ "@verii/rest-queries": "1.0.0-pre.1752076816",
58
+ "@verii/server-provider": "1.0.0-pre.1752076816",
59
+ "@verii/spencer-mongo-extensions": "1.0.0-pre.1752076816",
60
+ "@verii/test-regexes": "1.0.0-pre.1752076816",
61
+ "@verii/validation": "1.0.0-pre.1752076816",
62
+ "@verii/vc-checks": "1.0.0-pre.1752076816",
63
+ "@verii/velocity-issuing": "1.0.0-pre.1752076816",
64
+ "@verii/verifiable-credentials": "1.0.0-pre.1752076816",
65
+ "ajv": "8.17.1",
66
+ "canonicalize": "^2.0.0",
67
+ "date-fns": "~3.6.0",
68
+ "env-var": "~7.5.0",
69
+ "eth-url-parser": "~1.0.3",
70
+ "fastify": "^5.0.0",
71
+ "fastify-plugin": "^5.0.0",
72
+ "handlebars": "^4.7.7",
73
+ "http-errors": "~2.0.0",
74
+ "jsonpath-plus": "^10.3.0",
75
+ "lodash": "^4.17.21",
76
+ "mongodb": "~6.16.0",
77
+ "nanoid": "~3.3.1",
78
+ "nock": "14.0.5",
79
+ "qr-image": "~3.2.0"
80
+ },
81
+ "devDependencies": {
82
+ "@spencejs/spence-config": "0.10.2",
83
+ "@verii/endpoints-organizations-registrar": "1.0.0-pre.1752076816",
84
+ "@verii/sample-data": "1.0.0-pre.1752076816",
85
+ "@verii/test-regexes": "0.5.0-build",
86
+ "@verii/tests-helpers": "1.0.0-pre.1752076816",
87
+ "cheerio": "1.1.0",
88
+ "dotenv": "16.5.0",
89
+ "eslint": "8.57.1",
90
+ "eslint-config-airbnb-base": "14.2.1",
91
+ "eslint-config-prettier": "8.10.0",
92
+ "eslint-plugin-autofix": "1.1.0",
93
+ "eslint-plugin-better-mutation": "1.7.0",
94
+ "eslint-plugin-import": "2.32.0",
95
+ "eslint-plugin-prefer-arrow-functions": "3.6.2",
96
+ "eslint-plugin-prettier": "4.2.1",
97
+ "eslint-watch": "7.0.0",
98
+ "jest": "29.7.0",
99
+ "jest-json-schema": "6.1.0",
100
+ "jose": "5.10.0",
101
+ "migrate-mongo": "12.1.3",
102
+ "nanoid-dictionary": "5.0.0",
103
+ "nodemon": "3.1.10",
104
+ "prettier": "2.8.8",
105
+ "qs": "6.14.0"
106
+ },
107
+ "gitHead": "5885ce94149cc0102b2bc9cde18834293174bfaf"
108
+ }
Binary file
Binary file
Binary file
@@ -0,0 +1,28 @@
1
+ {
2
+ "short_name": "Credential Agent",
3
+ "name": "Velocity Network Credential Agent",
4
+ "icons": [
5
+ {
6
+ "src": "public/favicon.ico",
7
+ "sizes": "64x64 32x32 24x24 16x16",
8
+ "type": "image/x-icon"
9
+ },
10
+ {
11
+ "src": "public/logo192.png",
12
+ "type": "image/png",
13
+ "sizes": "192x192"
14
+ },
15
+ {
16
+ "src": "public/logo512.png",
17
+ "type": "image/png",
18
+ "sizes": "512x512"
19
+ }
20
+ ],
21
+ "prefer_related_applications": true,
22
+ "related_applications": [
23
+ {
24
+ "platform": "play",
25
+ "id": "io.velocitycareerlabs.holderapp"
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>App Redirect</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <meta name="robots" content="noindex">
8
+ <link rel="stylesheet" type="text/css" href="{{styleSheetUrl}}" crossorigin="anonymous" nonce="{{scriptNonce}}" />
9
+ </head>
10
+
11
+ <body>
12
+ <div id="vnf-wallet-selection" data-deeplink="{{deeplink}}" data-automode></div>
13
+ <script src="{{scriptUrl}}" nonce="{{scriptNonce}}"></script>
14
+ </body>
15
+
16
+ </html>
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright 2023 Velocity Team
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ const { mergeAll } = require('lodash/fp');
18
+ const { holderConfig } = require('./holder-config');
19
+ const { operatorConfig } = require('./operator-config');
20
+
21
+ const swaggerConfig = {
22
+ swaggerInfo: mergeAll([
23
+ holderConfig.swaggerInfo,
24
+ operatorConfig.swaggerInfo,
25
+ {
26
+ info: {
27
+ title: 'Credential Agent Combined Openapi',
28
+ description: 'Combined set of APIs for holders and operators',
29
+ },
30
+ tags: [
31
+ ...holderConfig.swaggerInfo.tags,
32
+ ...operatorConfig.swaggerInfo.tags,
33
+ ],
34
+ },
35
+ ]),
36
+ };
37
+
38
+ const config = {
39
+ ...operatorConfig,
40
+ ...holderConfig,
41
+ ...swaggerConfig,
42
+ };
43
+
44
+ module.exports = { config };
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Copyright 2023 Velocity Team
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ const env = require('env-var');
18
+ const { genericConfig, abi } = require('@verii/config');
19
+ const packageJson = require('../../package.json');
20
+
21
+ const { isTest } = genericConfig;
22
+
23
+ const swaggerConfig = {
24
+ swaggerInfo: {
25
+ info: {
26
+ version: '0.8.9',
27
+ },
28
+ components: {
29
+ securitySchemes: {
30
+ bearerAuth: {
31
+ type: 'http',
32
+ scheme: 'bearer',
33
+ bearerFormat: 'JWT',
34
+ },
35
+ },
36
+ },
37
+ },
38
+ };
39
+ const coreConfig = {
40
+ ...genericConfig,
41
+ ...swaggerConfig,
42
+ customFastifyOptions: {
43
+ bodyLimit: 8388608,
44
+ },
45
+ contractAbi: abi,
46
+ enableHttp2: env.get('ENABLE_HTTP2').default('false').asBoolStrict(),
47
+ mongoSecret: env.get('MONGO_SECRET').required(!isTest).asString(),
48
+ oracleUrl: env.get('REGISTRAR_URL').required(!isTest).asString(),
49
+ libUrl: env.get('LIB_URL').required(!isTest).asString(),
50
+ metadataRegistryContractAddress: env
51
+ .get('METADATA_REGISTRY_CONTRACT_ADDRESS')
52
+ .required(!isTest)
53
+ .asString(),
54
+ permissionsContractAddress: env
55
+ .get('PERMISSIONS_CONTRACT_ADDRESS')
56
+ .required()
57
+ .asString(),
58
+ couponContractAddress: env
59
+ .get('COUPON_CONTRACT_ADDRESS')
60
+ .required(!isTest)
61
+ .asString(),
62
+ revocationContractAddress: env
63
+ .get('REVOCATION_CONTRACT_ADDRESS')
64
+ .required(!isTest)
65
+ .default('0xf755E1Ca66bE12F177178E7Ea696969E0A55Bb64')
66
+ .asString(),
67
+ rpcUrl: env
68
+ .get('RPC_NODE_URL')
69
+ .required()
70
+ .default('http://34.244.131.79:8547')
71
+ .asString(),
72
+ chainId: env.get('CHAIN_ID').default(2020).asInt(),
73
+ secret: env.get('SECRET').required(!isTest).asString(),
74
+ vnfClientId: env.get('VNF_OAUTH_CLIENT_ID').required(!isTest).asString(),
75
+ vnfClientSecret: env
76
+ .get('VNF_OAUTH_CLIENT_SECRET')
77
+ .required(!isTest)
78
+ .asString(),
79
+ vnfOAuthTokensEndpoint: env
80
+ .get('VNF_OAUTH_TOKENS_ENDPOINT')
81
+ .required(!isTest)
82
+ .asString(),
83
+ universalResolverUrl: env
84
+ .get('UNIVERSAL_RESOLVER_URL')
85
+ .default('https://dev.uniresolver.io/')
86
+ .asString(),
87
+ version: packageJson.version,
88
+ caoDid: env.get('CAO_DID').required(!isTest).asString(),
89
+ validateCaoDid: env.get('VALIDATE_CAO_DID').default('true').asBool(),
90
+ sentryDsn: env.get('SENTRY_DSN').default('').asString(),
91
+ enableProfiling: env.get('ENABLE_PROFILING').default('false').asBool(),
92
+ enableSentryDebug: env.get('ENABLE_SENTRY_DEBUG').default('false').asBool(),
93
+ deepLinkProtocol: env.get('DEEP_LINK_PROTOCOL').required().asString(),
94
+ oidcTokensExpireIn: env.get('OIDC_TOKENS_EXPIRE_IN').asInt(),
95
+ enableOfferValidation: env
96
+ .get('ENABLE_OFFER_VALIDATION')
97
+ .default('true')
98
+ .asBool(),
99
+ storeIssuerAsString: env
100
+ .get('STORE_ISSUER_AS_STRING')
101
+ .default('false')
102
+ .asBool(),
103
+ credentialExtensionsContextUrl: env
104
+ .get('CREDENTIAL_EXTENSIONS_CONTEXT_URL')
105
+ .required(!isTest)
106
+ .asString(),
107
+ presentationContextValue: env
108
+ .get('PRESENTATION_CONTEXT_VALUE')
109
+ .default('https://www.w3.org/2018/credentials/v1')
110
+ .asString(),
111
+ enablePresentationContextValidation: env
112
+ .get('ENABLE_PRESENTATION_CONTEXT_VALIDATION')
113
+ .default('false')
114
+ .asBool(),
115
+ trustedIssuerCheckMinDate: env
116
+ .get('TRUSTED_ISSUER_CHECK_MIN_DATE')
117
+ .default('2024-02-28T00:00:00Z')
118
+ .asString(),
119
+ enableDeactivatedDisclosure: env
120
+ .get('ENABLE_DEACTIVATED_DISCLOSURE')
121
+ .default('true')
122
+ .asBool(),
123
+ vnfDid: env.get('VNF_DID').required().asString(),
124
+ defaultWalletMobile: env
125
+ .get('DEFAULT_WALLET_MOBILE')
126
+ .required(!isTest)
127
+ .asString(),
128
+ defaultWalletDesktop: env
129
+ .get('DEFAULT_WALLET_DESKTOP')
130
+ .required(!isTest)
131
+ .asString(),
132
+ defaultCaWalletConfig: env
133
+ .get('DEFAULT_CA_WALLET_CONFIG')
134
+ .required(!isTest)
135
+ .asJsonObject(),
136
+ disclosureCredentialTypeRequired: env
137
+ .get('DISCLOSURE_CREDENTIAL_TYPE_REQUIRED')
138
+ .default('true')
139
+ .asBool(),
140
+ vendorUrl: env.get('VENDOR_URL').asString(),
141
+ };
142
+
143
+ module.exports = { coreConfig };
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Copyright 2023 Velocity Team
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ const env = require('env-var');
18
+ const fs = require('fs');
19
+ const { isEmpty, merge, values } = require('lodash/fp');
20
+ const { OfferType } = require('../entities');
21
+ const { coreConfig } = require('./core-config');
22
+
23
+ const caCertificateFile = env.get('CA_CERTIFICATE_FILE').asString();
24
+ const clientCertificateFile = env.get('CLIENT_CERTIFICATE_FILE').asString();
25
+
26
+ const holderSwaggerConfig = {
27
+ swaggerInfo: merge(coreConfig.swaggerInfo, {
28
+ info: {
29
+ title: 'Credential Agent Holder APIs Openapi',
30
+ description: 'Set of APIs for holders to retrieve and share creds',
31
+ },
32
+ tags: [
33
+ { name: 'issuing', description: 'Holder credential issuing' },
34
+ {
35
+ name: 'presentations',
36
+ description: 'Holder presentation sharing',
37
+ },
38
+ {
39
+ name: 'common',
40
+ description: 'Holder common endpoints for issuing and presentations',
41
+ },
42
+ {
43
+ name: 'utilities',
44
+ description: 'Healthcheck and testing utilities',
45
+ },
46
+ ],
47
+ }),
48
+ };
49
+
50
+ const holderConfig = {
51
+ ...coreConfig,
52
+ ...holderSwaggerConfig,
53
+ identifyWebhookVersion: env
54
+ .get('IDENTIFY_WEBHOOK_VERSION')
55
+ .default(2)
56
+ .asIntPositive(),
57
+ vendorVersion: env.get('VENDOR_VERSION').default(0.6).asFloat(),
58
+ autocleanFinalizedOfferPii: env
59
+ .get('AUTOCLEAN_FINALIZED_OFFER_PII')
60
+ .default('false')
61
+ .asBool(),
62
+ triggerOffersAcceptedWebhook: env
63
+ .get('TRIGGER_OFFERS_ACCEPTED_WEBHOOK')
64
+ .default('false')
65
+ .asBool(),
66
+ appRedirectLogoFallbackUrl: env
67
+ .get('APP_REDIRECT_LOGO_FALLBACK_URL')
68
+ .default('https://docs.velocitycareerlabs.io/Logos/velocity-white.png')
69
+ .asString(),
70
+ credentialSubjectContext: env
71
+ .get('CREDENTIAL_SUBJECT_CONTEXT')
72
+ .default('false')
73
+ .asBool(),
74
+
75
+ // vendor webhooks bearer (api) token auth
76
+ bearerToken: env.get('BEARER_TOKEN').asString(),
77
+
78
+ // vendor webhooks client certificate auth
79
+ caCertificate: isEmpty(caCertificateFile)
80
+ ? env.get('CA_CERTIFICATE').asString()
81
+ : fs.readFileSync(caCertificateFile),
82
+ clientCertificate: isEmpty(clientCertificateFile)
83
+ ? undefined
84
+ : fs.readFileSync(clientCertificateFile),
85
+ clientCertificatePassword: env.get('CLIENT_CERTIFICATE_PASS').asString(),
86
+
87
+ // vendor webhooks oauth
88
+ clientId: env.get('OAUTH_CLIENT_ID').default('').asString(),
89
+ clientSecret: env.get('OAUTH_CLIENT_SECRET').default('').asString(),
90
+ tokensEndpoint: env.get('OAUTH_TOKENS_ENDPOINT').default('').asString(),
91
+ scopes: env.get('OAUTH_SCOPES').default('').asString(),
92
+ offerType: env.get('OFFER_TYPE').default('LEGACY').asEnum(values(OfferType)),
93
+ autoIdentityCheck: env.get('AUTO_IDENTITY_CHECK').default('true').asBool(),
94
+ errorOnInvalidWebhookOffers: env
95
+ .get('ERROR_ON_INVALID_WEBHOOK_OFFERS')
96
+ .default('false')
97
+ .asBool(),
98
+ defaultOAuthTokenExpiration: env
99
+ .get('DEFAULT_OAUTH_TOKEN_EXPIRATION')
100
+ .default('10080m')
101
+ .asString(),
102
+ };
103
+
104
+ module.exports = { holderConfig };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Copyright 2023 Velocity Team
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ module.exports = {
18
+ ...require('./config'),
19
+ ...require('./core-config'),
20
+ ...require('./holder-config'),
21
+ ...require('./operator-config'),
22
+ };