@learncard/network-brain-service 3.19.0 → 3.19.1

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 (301) hide show
  1. package/.env.example +34 -2
  2. package/CHANGELOG.md +38 -0
  3. package/README.md +42 -0
  4. package/dist/accesslayer/consentflowcontract/relationships/create.d.ts.map +1 -1
  5. package/dist/accesslayer/consentflowcontract/relationships/update.d.ts.map +1 -1
  6. package/dist/accesslayer/presentation/read.d.ts.map +1 -1
  7. package/dist/accesslayer/presentation/relationships/create.d.ts +2 -2
  8. package/dist/accesslayer/presentation/relationships/create.d.ts.map +1 -1
  9. package/dist/accesslayer/presentation/relationships/read.d.ts.map +1 -1
  10. package/dist/accesslayer/share-link/abandon.d.ts +3 -0
  11. package/dist/accesslayer/share-link/abandon.d.ts.map +1 -0
  12. package/dist/accesslayer/share-link/cleanup.d.ts +6 -0
  13. package/dist/accesslayer/share-link/cleanup.d.ts.map +1 -0
  14. package/dist/accesslayer/share-link/errors.d.ts +8 -0
  15. package/dist/accesslayer/share-link/errors.d.ts.map +1 -0
  16. package/dist/accesslayer/share-link/finalize.d.ts +3 -0
  17. package/dist/accesslayer/share-link/finalize.d.ts.map +1 -0
  18. package/dist/accesslayer/share-link/helpers.d.ts +56 -0
  19. package/dist/accesslayer/share-link/helpers.d.ts.map +1 -0
  20. package/dist/accesslayer/share-link/index.d.ts +12 -0
  21. package/dist/accesslayer/share-link/index.d.ts.map +1 -0
  22. package/dist/accesslayer/share-link/list.d.ts +5 -0
  23. package/dist/accesslayer/share-link/list.d.ts.map +1 -0
  24. package/dist/accesslayer/share-link/read.d.ts +5 -0
  25. package/dist/accesslayer/share-link/read.d.ts.map +1 -0
  26. package/dist/accesslayer/share-link/receipt.d.ts +11 -0
  27. package/dist/accesslayer/share-link/receipt.d.ts.map +1 -0
  28. package/dist/accesslayer/share-link/recovery.d.ts +6 -0
  29. package/dist/accesslayer/share-link/recovery.d.ts.map +1 -0
  30. package/dist/accesslayer/share-link/reserve.d.ts +4 -0
  31. package/dist/accesslayer/share-link/reserve.d.ts.map +1 -0
  32. package/dist/accesslayer/share-link/revoke.d.ts +3 -0
  33. package/dist/accesslayer/share-link/revoke.d.ts.map +1 -0
  34. package/dist/accesslayer/share-link/transaction-execution.d.ts +18 -0
  35. package/dist/accesslayer/share-link/transaction-execution.d.ts.map +1 -0
  36. package/dist/accesslayer/share-link/transaction.d.ts +15 -0
  37. package/dist/accesslayer/share-link/transaction.d.ts.map +1 -0
  38. package/dist/accesslayer/share-link/types.d.ts +370 -0
  39. package/dist/accesslayer/share-link/types.d.ts.map +1 -0
  40. package/dist/app.d.ts +4 -0
  41. package/dist/app.d.ts.map +1 -1
  42. package/dist/config/environment.d.ts +9 -0
  43. package/dist/config/environment.d.ts.map +1 -1
  44. package/dist/constants/auth-grant.d.ts +2 -0
  45. package/dist/constants/auth-grant.d.ts.map +1 -1
  46. package/dist/helpers/boost.helpers.d.ts.map +1 -1
  47. package/dist/helpers/credentialSubject.helpers.d.ts +3 -0
  48. package/dist/helpers/credentialSubject.helpers.d.ts.map +1 -0
  49. package/dist/helpers/credentialSubject.helpers.test.d.ts +2 -0
  50. package/dist/helpers/credentialSubject.helpers.test.d.ts.map +1 -0
  51. package/dist/helpers/inbox.helpers.d.ts.map +1 -1
  52. package/dist/helpers/notificationMessages.d.ts +1 -1
  53. package/dist/helpers/notificationMessages.d.ts.map +1 -1
  54. package/dist/helpers/presentation-metadata.d.ts +4 -0
  55. package/dist/helpers/presentation-metadata.d.ts.map +1 -0
  56. package/dist/helpers/presentation.helpers.d.ts +1 -1
  57. package/dist/helpers/presentation.helpers.d.ts.map +1 -1
  58. package/dist/helpers/profile.helpers.d.ts +1 -0
  59. package/dist/helpers/profile.helpers.d.ts.map +1 -1
  60. package/dist/helpers/share-content-client/adapters.d.ts +10 -0
  61. package/dist/helpers/share-content-client/adapters.d.ts.map +1 -0
  62. package/dist/helpers/share-content-client/canonical.d.ts +7 -0
  63. package/dist/helpers/share-content-client/canonical.d.ts.map +1 -0
  64. package/dist/helpers/share-content-client/client.d.ts +5 -0
  65. package/dist/helpers/share-content-client/client.d.ts.map +1 -0
  66. package/dist/helpers/share-content-client/config.d.ts +11 -0
  67. package/dist/helpers/share-content-client/config.d.ts.map +1 -0
  68. package/dist/helpers/share-content-client/index.d.ts +6 -0
  69. package/dist/helpers/share-content-client/index.d.ts.map +1 -0
  70. package/dist/helpers/share-content-client/responses.d.ts +16 -0
  71. package/dist/helpers/share-content-client/responses.d.ts.map +1 -0
  72. package/dist/helpers/share-content-client/types.d.ts +145 -0
  73. package/dist/helpers/share-content-client/types.d.ts.map +1 -0
  74. package/dist/helpers/share-link-coordinator/budget-helpers.d.ts +5 -0
  75. package/dist/helpers/share-link-coordinator/budget-helpers.d.ts.map +1 -0
  76. package/dist/helpers/share-link-coordinator/cleanup-runner.d.ts +3 -0
  77. package/dist/helpers/share-link-coordinator/cleanup-runner.d.ts.map +1 -0
  78. package/dist/helpers/share-link-coordinator/coordinator.d.ts +4 -0
  79. package/dist/helpers/share-link-coordinator/coordinator.d.ts.map +1 -0
  80. package/dist/helpers/share-link-coordinator/index.d.ts +5 -0
  81. package/dist/helpers/share-link-coordinator/index.d.ts.map +1 -0
  82. package/dist/helpers/share-link-coordinator/recovery-runner.d.ts +9 -0
  83. package/dist/helpers/share-link-coordinator/recovery-runner.d.ts.map +1 -0
  84. package/dist/helpers/share-link-coordinator/runtime.d.ts +11 -0
  85. package/dist/helpers/share-link-coordinator/runtime.d.ts.map +1 -0
  86. package/dist/helpers/share-link-coordinator/stat.d.ts +4 -0
  87. package/dist/helpers/share-link-coordinator/stat.d.ts.map +1 -0
  88. package/dist/helpers/share-link-coordinator/types.d.ts +160 -0
  89. package/dist/helpers/share-link-coordinator/types.d.ts.map +1 -0
  90. package/dist/helpers/share-link-lifecycle/index.d.ts +5 -0
  91. package/dist/helpers/share-link-lifecycle/index.d.ts.map +1 -0
  92. package/dist/helpers/share-link-lifecycle/lease.helpers.d.ts +4 -0
  93. package/dist/helpers/share-link-lifecycle/lease.helpers.d.ts.map +1 -0
  94. package/dist/helpers/share-link-lifecycle/recovery.helpers.d.ts +21 -0
  95. package/dist/helpers/share-link-lifecycle/recovery.helpers.d.ts.map +1 -0
  96. package/dist/helpers/share-link-lifecycle/request-hash.helpers.d.ts +9 -0
  97. package/dist/helpers/share-link-lifecycle/request-hash.helpers.d.ts.map +1 -0
  98. package/dist/helpers/share-link-lifecycle/types.d.ts +14 -0
  99. package/dist/helpers/share-link-lifecycle/types.d.ts.map +1 -0
  100. package/dist/helpers/share-link-maintenance/budget.d.ts +12 -0
  101. package/dist/helpers/share-link-maintenance/budget.d.ts.map +1 -0
  102. package/dist/helpers/share-link-maintenance/config.d.ts +48 -0
  103. package/dist/helpers/share-link-maintenance/config.d.ts.map +1 -0
  104. package/dist/helpers/share-link-maintenance/index.d.ts +8 -0
  105. package/dist/helpers/share-link-maintenance/index.d.ts.map +1 -0
  106. package/dist/helpers/share-link-maintenance/runner.d.ts +19 -0
  107. package/dist/helpers/share-link-maintenance/runner.d.ts.map +1 -0
  108. package/dist/helpers/share-link-maintenance/runtime.d.ts +36 -0
  109. package/dist/helpers/share-link-maintenance/runtime.d.ts.map +1 -0
  110. package/dist/helpers/share-link-maintenance/scheduler.d.ts +18 -0
  111. package/dist/helpers/share-link-maintenance/scheduler.d.ts.map +1 -0
  112. package/dist/helpers/share-link-maintenance/telemetry.d.ts +5 -0
  113. package/dist/helpers/share-link-maintenance/telemetry.d.ts.map +1 -0
  114. package/dist/helpers/share-link-maintenance/types.d.ts +53 -0
  115. package/dist/helpers/share-link-maintenance/types.d.ts.map +1 -0
  116. package/dist/helpers/share-link-owner/config.d.ts +16 -0
  117. package/dist/helpers/share-link-owner/config.d.ts.map +1 -0
  118. package/dist/helpers/share-link-owner/diagnostics.d.ts +26 -0
  119. package/dist/helpers/share-link-owner/diagnostics.d.ts.map +1 -0
  120. package/dist/helpers/share-link-owner/lazy-initializer.d.ts +2 -0
  121. package/dist/helpers/share-link-owner/lazy-initializer.d.ts.map +1 -0
  122. package/dist/helpers/share-link-owner-projection.d.ts +4 -0
  123. package/dist/helpers/share-link-owner-projection.d.ts.map +1 -0
  124. package/dist/helpers/share-link-passcode-abuse.d.ts +2 -0
  125. package/dist/helpers/share-link-passcode-abuse.d.ts.map +1 -0
  126. package/dist/helpers/share-link-passcode.d.ts +6 -0
  127. package/dist/helpers/share-link-passcode.d.ts.map +1 -0
  128. package/dist/helpers/share-link-policy/index.d.ts +4 -0
  129. package/dist/helpers/share-link-policy/index.d.ts.map +1 -0
  130. package/dist/helpers/share-link-policy/production.d.ts +13 -0
  131. package/dist/helpers/share-link-policy/production.d.ts.map +1 -0
  132. package/dist/helpers/share-link-policy/resolver.d.ts +6 -0
  133. package/dist/helpers/share-link-policy/resolver.d.ts.map +1 -0
  134. package/dist/helpers/share-link-policy/types.d.ts +16 -0
  135. package/dist/helpers/share-link-policy/types.d.ts.map +1 -0
  136. package/dist/helpers/share-link-public/config.d.ts +13 -0
  137. package/dist/helpers/share-link-public/config.d.ts.map +1 -0
  138. package/dist/helpers/share-link-view-notification.d.ts +2 -0
  139. package/dist/helpers/share-link-view-notification.d.ts.map +1 -0
  140. package/dist/index.js +2 -2
  141. package/dist/models/Presentation.d.ts +2 -0
  142. package/dist/models/Presentation.d.ts.map +1 -1
  143. package/dist/models/Profile.d.ts +2 -0
  144. package/dist/models/Profile.d.ts.map +1 -1
  145. package/dist/models/ShareLink.d.ts +44 -0
  146. package/dist/models/ShareLink.d.ts.map +1 -0
  147. package/dist/models/ShareViewReceipt.d.ts +22 -0
  148. package/dist/models/ShareViewReceipt.d.ts.map +1 -0
  149. package/dist/models/index.d.ts +1 -0
  150. package/dist/models/index.d.ts.map +1 -1
  151. package/dist/models/share-link-constraints.d.ts +3 -0
  152. package/dist/models/share-link-constraints.d.ts.map +1 -0
  153. package/dist/public-share-link-http.d.ts +4 -0
  154. package/dist/public-share-link-http.d.ts.map +1 -0
  155. package/dist/routes/app-store.d.ts.map +1 -1
  156. package/dist/routes/boosts.d.ts.map +1 -1
  157. package/dist/routes/contracts.d.ts +2 -2
  158. package/dist/routes/contracts.d.ts.map +1 -1
  159. package/dist/routes/credentials.d.ts +1 -1
  160. package/dist/routes/index.d.ts +153 -0
  161. package/dist/routes/index.d.ts.map +1 -1
  162. package/dist/routes/presentations.d.ts +1 -0
  163. package/dist/routes/presentations.d.ts.map +1 -1
  164. package/dist/routes/profile-manager.d.ts.map +1 -1
  165. package/dist/routes/profiles.d.ts.map +1 -1
  166. package/dist/routes/public-share-links.d.ts +230 -0
  167. package/dist/routes/public-share-links.d.ts.map +1 -0
  168. package/dist/routes/share-links.d.ts +844 -0
  169. package/dist/routes/share-links.d.ts.map +1 -0
  170. package/dist/services/delivery/adapters/postmark.adapter.d.ts.map +1 -1
  171. package/dist/types/consentflowcontract.d.ts +1 -1
  172. package/lambda.ts +4 -1
  173. package/package.json +22 -16
  174. package/scripts/seed-demo-persona.ts +425 -0
  175. package/serverless.yml +36 -0
  176. package/shareLinkMaintenanceLambda.ts +49 -0
  177. package/src/accesslayer/consentflowcontract/relationships/create.ts +9 -16
  178. package/src/accesslayer/consentflowcontract/relationships/update.ts +15 -28
  179. package/src/accesslayer/presentation/read.ts +57 -25
  180. package/src/accesslayer/presentation/relationships/create.ts +54 -11
  181. package/src/accesslayer/presentation/relationships/read.ts +21 -6
  182. package/src/accesslayer/share-link/abandon.ts +100 -0
  183. package/src/accesslayer/share-link/cleanup.ts +271 -0
  184. package/src/accesslayer/share-link/errors.ts +32 -0
  185. package/src/accesslayer/share-link/finalize.ts +265 -0
  186. package/src/accesslayer/share-link/helpers.ts +419 -0
  187. package/src/accesslayer/share-link/index.ts +11 -0
  188. package/src/accesslayer/share-link/list.ts +162 -0
  189. package/src/accesslayer/share-link/read.ts +107 -0
  190. package/src/accesslayer/share-link/receipt.ts +548 -0
  191. package/src/accesslayer/share-link/recovery.ts +545 -0
  192. package/src/accesslayer/share-link/reserve.ts +684 -0
  193. package/src/accesslayer/share-link/revoke.ts +197 -0
  194. package/src/accesslayer/share-link/transaction-execution.ts +72 -0
  195. package/src/accesslayer/share-link/transaction.ts +126 -0
  196. package/src/accesslayer/share-link/types.ts +601 -0
  197. package/src/app.ts +6 -0
  198. package/src/config/environment.ts +14 -0
  199. package/src/constants/auth-grant.ts +5 -0
  200. package/src/docker-entry.ts +57 -0
  201. package/src/helpers/boost.helpers.ts +4 -31
  202. package/src/helpers/credentialSubject.helpers.test.ts +114 -0
  203. package/src/helpers/credentialSubject.helpers.ts +40 -0
  204. package/src/helpers/inbox.helpers.ts +7 -4
  205. package/src/helpers/notificationMessages.ts +18 -1
  206. package/src/helpers/presentation-metadata.ts +41 -0
  207. package/src/helpers/presentation.helpers.ts +27 -20
  208. package/src/helpers/profile.helpers.ts +7 -0
  209. package/src/helpers/share-content-client/adapters.ts +55 -0
  210. package/src/helpers/share-content-client/canonical.ts +25 -0
  211. package/src/helpers/share-content-client/client.ts +440 -0
  212. package/src/helpers/share-content-client/config.ts +189 -0
  213. package/src/helpers/share-content-client/index.ts +27 -0
  214. package/src/helpers/share-content-client/responses.ts +273 -0
  215. package/src/helpers/share-content-client/types.ts +253 -0
  216. package/src/helpers/share-link-coordinator/budget-helpers.ts +53 -0
  217. package/src/helpers/share-link-coordinator/cleanup-runner.ts +286 -0
  218. package/src/helpers/share-link-coordinator/coordinator.ts +714 -0
  219. package/src/helpers/share-link-coordinator/index.ts +8 -0
  220. package/src/helpers/share-link-coordinator/recovery-runner.ts +428 -0
  221. package/src/helpers/share-link-coordinator/runtime.ts +88 -0
  222. package/src/helpers/share-link-coordinator/stat.ts +30 -0
  223. package/src/helpers/share-link-coordinator/types.ts +353 -0
  224. package/src/helpers/share-link-lifecycle/index.ts +4 -0
  225. package/src/helpers/share-link-lifecycle/lease.helpers.ts +35 -0
  226. package/src/helpers/share-link-lifecycle/recovery.helpers.ts +173 -0
  227. package/src/helpers/share-link-lifecycle/request-hash.helpers.ts +130 -0
  228. package/src/helpers/share-link-lifecycle/types.ts +58 -0
  229. package/src/helpers/share-link-maintenance/budget.ts +63 -0
  230. package/src/helpers/share-link-maintenance/config.ts +312 -0
  231. package/src/helpers/share-link-maintenance/index.ts +24 -0
  232. package/src/helpers/share-link-maintenance/runner.ts +223 -0
  233. package/src/helpers/share-link-maintenance/runtime.ts +334 -0
  234. package/src/helpers/share-link-maintenance/scheduler.ts +126 -0
  235. package/src/helpers/share-link-maintenance/telemetry.ts +70 -0
  236. package/src/helpers/share-link-maintenance/types.ts +89 -0
  237. package/src/helpers/share-link-owner/config.ts +48 -0
  238. package/src/helpers/share-link-owner/diagnostics.ts +89 -0
  239. package/src/helpers/share-link-owner/lazy-initializer.ts +29 -0
  240. package/src/helpers/share-link-owner-projection.ts +52 -0
  241. package/src/helpers/share-link-passcode-abuse.ts +36 -0
  242. package/src/helpers/share-link-passcode.ts +47 -0
  243. package/src/helpers/share-link-policy/index.ts +7 -0
  244. package/src/helpers/share-link-policy/production.ts +88 -0
  245. package/src/helpers/share-link-policy/resolver.ts +108 -0
  246. package/src/helpers/share-link-policy/types.ts +48 -0
  247. package/src/helpers/share-link-public/config.ts +41 -0
  248. package/src/helpers/share-link-view-notification.ts +18 -0
  249. package/src/models/Presentation.ts +2 -2
  250. package/src/models/Profile.ts +3 -2
  251. package/src/models/ShareLink.ts +130 -0
  252. package/src/models/ShareViewReceipt.ts +69 -0
  253. package/src/models/index.ts +2 -0
  254. package/src/models/share-link-constraints.ts +93 -0
  255. package/src/public-share-link-http.ts +49 -0
  256. package/src/routes/app-store.ts +2 -11
  257. package/src/routes/boosts.ts +2 -11
  258. package/src/routes/contracts.ts +2 -11
  259. package/src/routes/index.ts +139 -44
  260. package/src/routes/presentations.ts +19 -3
  261. package/src/routes/profile-manager.ts +10 -2
  262. package/src/routes/profiles.ts +17 -6
  263. package/src/routes/public-share-links.ts +814 -0
  264. package/src/routes/share-links.ts +640 -0
  265. package/src/services/delivery/adapters/postmark.adapter.ts +4 -1
  266. package/test/dids.spec.ts +10 -1
  267. package/test/guardian-gated-routes.spec.ts +13 -0
  268. package/test/helpers/share-link-fixtures.ts +94 -0
  269. package/test/managed-recipient-inbox.spec.ts +130 -0
  270. package/test/notificationMessages.spec.ts +13 -0
  271. package/test/openapi.spec.ts +20 -0
  272. package/test/presentations.spec.ts +54 -6
  273. package/test/profiles.spec.ts +67 -1
  274. package/test/share-content-client.contract.spec.ts +365 -0
  275. package/test/share-content-client.unit.spec.ts +462 -0
  276. package/test/share-link-abuse.unit.spec.ts +65 -0
  277. package/test/share-link-coordinator.neo4j.spec.ts +684 -0
  278. package/test/share-link-coordinator.unit.spec.ts +990 -0
  279. package/test/share-link-dependency-diagnostics.unit.spec.ts +127 -0
  280. package/test/share-link-lifecycle.neo4j.spec.ts +1268 -0
  281. package/test/share-link-lifecycle.unit.spec.ts +205 -0
  282. package/test/share-link-list-cursor.unit.spec.ts +86 -0
  283. package/test/share-link-list.neo4j.spec.ts +324 -0
  284. package/test/share-link-maintenance.neo4j.spec.ts +355 -0
  285. package/test/share-link-maintenance.unit.spec.ts +1113 -0
  286. package/test/share-link-owner-policy.unit.spec.ts +210 -0
  287. package/test/share-link-owner-route.unit.spec.ts +752 -0
  288. package/test/share-link-owner-runtime.unit.spec.ts +102 -0
  289. package/test/share-link-passcode.unit.spec.ts +29 -0
  290. package/test/share-link-policy.unit.spec.ts +135 -0
  291. package/test/share-link-presentation-metadata.unit.spec.ts +49 -0
  292. package/test/share-link-production-policy.unit.spec.ts +77 -0
  293. package/test/share-link-public-config.unit.spec.ts +64 -0
  294. package/test/share-link-public-http-adapter.unit.spec.ts +315 -0
  295. package/test/share-link-public-route.unit.spec.ts +800 -0
  296. package/test/share-link-receipt.neo4j.spec.ts +943 -0
  297. package/test/share-link-recovery.neo4j.spec.ts +935 -0
  298. package/test/share-link-recovery.unit.spec.ts +726 -0
  299. package/vitest.config.ts +1 -0
  300. package/vitest.share-links-neo4j.config.ts +19 -0
  301. package/vitest.share-links-unit.config.ts +28 -0
package/.env.example CHANGED
@@ -6,8 +6,13 @@ PORT=3000
6
6
  SEED=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7
7
  NEO4J_URI=bolt://localhost:7687
8
8
  NEO4J_USERNAME=neo4j
9
- NEO4J_PASSWORD=password
10
- DOMAIN_NAME=
9
+ NEO4J_PASSWORD=this-is-the-password
10
+ DOMAIN_NAME=localhost%3A4000
11
+ MONGO_URI=mongodb://localhost:27017/?replicaSet=rs0
12
+ MONGO_DB_NAME=lca-api
13
+ # Required by the sample-persona seeder. Use a disposable seed only for local development.
14
+ DEMO_PERSONA_SIGNING_AUTHORITY_ENDPOINT=http://localhost:5100/api
15
+ DEMO_PERSONA_SA_SEED=
11
16
  CLIENT_APP_DOMAIN_NAME=
12
17
  CLIENT_APP_PORT=3000
13
18
  LOGIN_PROVIDER_DID=
@@ -92,3 +97,30 @@ CREDENTIAL_REFRESH_ENABLED=false
92
97
  CREDENTIAL_REFRESH_DIGEST_SECRET=
93
98
  # Hours during which repeat refresh notifications collapse into one unread record.
94
99
  CREDENTIAL_REFRESH_NOTIFICATION_WINDOW_HOURS=24
100
+
101
+ # LC-2187 service wiring and automatic recovery/cleanup maintenance.
102
+ # Supply an explicit namespace, trusted LearnCloud origin and audience;
103
+ # malformed values fail closed without graph/remote/signing work.
104
+ SHARE_LINK_MAINTENANCE_NAMESPACE=
105
+ SHARE_LINK_MAINTENANCE_ORIGIN=
106
+ SHARE_LINK_MAINTENANCE_AUDIENCE=
107
+ SHARE_LINK_MAINTENANCE_ALLOW_INSECURE_LOOPBACK=false
108
+ SHARE_LINK_MAINTENANCE_CLAIMANT=brain-share-link-maintenance
109
+ SHARE_LINK_MAINTENANCE_RECOVERY_LIMIT=25
110
+ SHARE_LINK_MAINTENANCE_CLEANUP_LIMIT=25
111
+ SHARE_LINK_MAINTENANCE_LEASE_MS=120000
112
+ SHARE_LINK_MAINTENANCE_CLAIM_MS=300000
113
+ SHARE_LINK_MAINTENANCE_BUDGET_MS=60000
114
+ SHARE_LINK_MAINTENANCE_INTERVAL_MS=300000
115
+ SHARE_LINK_MAINTENANCE_REQUEST_TIMEOUT_MS=10000
116
+ SHARE_LINK_MAINTENANCE_FINALIZE_RESERVE_MS=5000
117
+ SHARE_LINK_MAINTENANCE_GRAPH_TIMEOUT_MS=15000
118
+
119
+ # Owner/public APIs and maintenance are available once the service wiring above
120
+ # is valid. UI rollout is controlled only by LaunchDarkly share-links-enabled.
121
+ # Optional owner namespace override must match SHARE_LINK_MAINTENANCE_NAMESPACE.
122
+ SHARE_LINK_OWNER_API_NAMESPACE=
123
+ # Independent 32+ byte secret, identical on all Brain instances and stable across
124
+ # deployments. Required when the owner API is enabled; test runs use a test-only key.
125
+ SHARE_LINK_REQUEST_HASH_SECRET=
126
+ # Production unknown-age policy defaults to 30 days and does not count views.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # @learncard/network-brain-service
2
2
 
3
+ ## 3.19.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1607](https://github.com/learningeconomy/LearnCard/pull/1607) [`b184f5552abf37a11468d435e5cea07fc35e1993`](https://github.com/learningeconomy/LearnCard/commit/b184f5552abf37a11468d435e5cea07fc35e1993) Thanks [@goblincore](https://github.com/goblincore)! - Make `acceptPresentation` idempotent so retries of a saved collection do not create duplicate relationships. New or replacement share-link passcodes require at least eight characters; existing shorter passcodes remain valid for recipients. Public share resolution can now return `try_later` when passcode verification is unavailable or throttled.
8
+
9
+ - [#1624](https://github.com/learningeconomy/LearnCard/pull/1624) [`7e5c2b9ce9fabbd5635cf17a2c6eea5c3ce692fa`](https://github.com/learningeconomy/LearnCard/commit/7e5c2b9ce9fabbd5635cf17a2c6eea5c3ce692fa) Thanks [@Custard7](https://github.com/Custard7)! - fix: Stop treating service profiles as child accounts and fix managed-child claim email template
10
+
11
+ - [#1529](https://github.com/learningeconomy/LearnCard/pull/1529) [`0e262737aafb8248e88e05039c83a3f30be6750f`](https://github.com/learningeconomy/LearnCard/commit/0e262737aafb8248e88e05039c83a3f30be6750f) Thanks [@Custard7](https://github.com/Custard7)! - SSS prod hardening: confirmed recovery enrollment, lost-login identity rebind, and an isolated email relay.
12
+
13
+ - Recovery methods now carry `confirmedAt` and must be proven before they count (email confirmation code, phrase challenge words, backup re-decrypt, passkey round trip). New SSS accounts are `active` immediately; web3auth migrations stay `provisional` until a method is confirmed.
14
+ - New recovery-session flow lets a user whose sign-in identity is gone recover via a verified personal email and bind a new sign-in.
15
+ - Email recovery shares are encrypted on the client to an isolated relay's public key; `lca-api` never sees plaintext. Provider tokens move from query strings to the `X-Auth-Token` header.
16
+ - Sensitive key routes require a single-use DID challenge; key records are keyed by immutable provider ID.
17
+ - `recovery-key` email template now requires `confirmationCode`.
18
+ - Auth-share initialization requires the provider uniqueness index before inserting, preventing competing first writes from creating duplicate accounts. Existing records with missing or BSON-null auth material retain atomic update protection.
19
+ - Automatic stale-key cleanup preserves unresolved pending shares for delayed commits; explicit device forgetting still removes them. Custom SSS storage adapters now implement `deleteDeviceShare(id?)` to remove only the selected share and its version.
20
+
21
+ - [#1614](https://github.com/learningeconomy/LearnCard/pull/1614) [`ae10525fbd0ef284aabe1b03d12db147a1922f2c`](https://github.com/learningeconomy/LearnCard/commit/ae10525fbd0ef284aabe1b03d12db147a1922f2c) Thanks [@smurflo2](https://github.com/smurflo2)! - feat: [LC-2191] Replace Demo School with standards-pure sample personas, including plain OBv3 ConsentFlow issuance without proprietary `boostId` fields.
22
+
23
+ - Updated dependencies [[`4b83aa9ee802f0d7a54adc5f053a7376fa103cdd`](https://github.com/learningeconomy/LearnCard/commit/4b83aa9ee802f0d7a54adc5f053a7376fa103cdd), [`2ebda517e9468476f22d3ae3b4ebddf67e8aca78`](https://github.com/learningeconomy/LearnCard/commit/2ebda517e9468476f22d3ae3b4ebddf67e8aca78), [`0e9dd47f4451d776ad1787d0a35dbd54141b9fe3`](https://github.com/learningeconomy/LearnCard/commit/0e9dd47f4451d776ad1787d0a35dbd54141b9fe3), [`b184f5552abf37a11468d435e5cea07fc35e1993`](https://github.com/learningeconomy/LearnCard/commit/b184f5552abf37a11468d435e5cea07fc35e1993), [`0e262737aafb8248e88e05039c83a3f30be6750f`](https://github.com/learningeconomy/LearnCard/commit/0e262737aafb8248e88e05039c83a3f30be6750f), [`ae10525fbd0ef284aabe1b03d12db147a1922f2c`](https://github.com/learningeconomy/LearnCard/commit/ae10525fbd0ef284aabe1b03d12db147a1922f2c), [`d436c39e00994e6d8c77e7b94985a51fe1f42adb`](https://github.com/learningeconomy/LearnCard/commit/d436c39e00994e6d8c77e7b94985a51fe1f42adb)]:
24
+ - @learncard/types@5.22.0
25
+ - @learncard/credential-library@2.0.5
26
+ - @learncard/email-templates@1.2.0
27
+ - @learncard/helpers@1.6.1
28
+ - @learncard/core@9.4.37
29
+ - @learncard/did-web-plugin@1.1.37
30
+ - @learncard/didkey-plugin@1.1.37
31
+ - @learncard/didkit-plugin@1.10.2
32
+ - @learncard/didkit-plugin-node@0.3.2
33
+ - @learncard/encryption-plugin@1.1.37
34
+ - @learncard/learn-card-plugin@1.2.37
35
+ - @learncard/vc-plugin@1.6.3
36
+ - @learncard/vc-templates-plugin@1.1.37
37
+ - @learncard/crypto-plugin@1.1.37
38
+ - @learncard/dynamic-loader-plugin@1.1.37
39
+ - @learncard/expiration-plugin@1.2.37
40
+
3
41
  ## 3.19.0
4
42
 
5
43
  ### Minor Changes
package/README.md CHANGED
@@ -29,6 +29,48 @@ Deploy this producer before an AI Passport consumer that requires the new guardi
29
29
  - **Default environment**: if you omit the stage, the command defaults to `local` and prints a note.
30
30
  - **Production safety**: the manual seed command still refuses to run in production unless `--force` is provided.
31
31
 
32
+ ## Sample persona seeding
33
+
34
+ Sample personas are ordered credential-library bundles published as idempotent
35
+ consent-flow contracts. The seeder uses every target value from
36
+ `services/learn-card-network/brain-service/.env`; verify them before running it.
37
+ Do not overwrite an existing `.env` or assume it points to local services.
38
+
39
+ For the local LearnCard App Compose stack, use explicit host-side values:
40
+
41
+ ```dotenv
42
+ NEO4J_URI=bolt://localhost:7687
43
+ NEO4J_USERNAME=neo4j
44
+ NEO4J_PASSWORD=this-is-the-password
45
+ MONGO_URI=mongodb://localhost:27017/?replicaSet=rs0
46
+ MONGO_DB_NAME=lca-api
47
+ REDIS_HOST=localhost
48
+ REDIS_PORT=6379
49
+ DOMAIN_NAME=localhost%3A4000
50
+ DEMO_PERSONA_SIGNING_AUTHORITY_ENDPOINT=http://localhost:5100/api
51
+ # Disposable local-only seed. Never reuse this value in a shared environment.
52
+ DEMO_PERSONA_SA_SEED=dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
53
+ ```
54
+
55
+ Start the stack, then publish the bundle from `apps/learn-card-app`:
56
+
57
+ ```bash
58
+ bun run seed:demo-persona student
59
+ ```
60
+
61
+ Staging and production require their own secret 64-character hexadecimal
62
+ `DEMO_PERSONA_SA_SEED`, the matching LCA API endpoint, and explicit Neo4j, MongoDB,
63
+ Redis, and domain settings. Deploy the brain service first, run the seeder against
64
+ the intended environment, verify the printed contract URI, and only then deploy app
65
+ configuration that references it.
66
+
67
+ The root seed deterministically derives a distinct signing identity for every
68
+ configured sample issuer. The command updates issuer profiles, unsigned credential
69
+ templates, and auto-boost relationships in place, then prints the stable contract URI
70
+ to record in that tenant's `features.samplePersonas`. Running it again publishes
71
+ credential-library content changes without duplicating profiles, Boosts, signing
72
+ authorities, or contracts.
73
+
32
74
  ## Notes
33
75
 
34
76
  - The default fixture is idempotent by framework and skill ID, so running the seed command multiple times does not duplicate data.
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/consentflowcontract/relationships/create.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,IAAI,oBAAoB,EAExC,2BAA2B,EAE3B,UAAU,EAGb,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,cAAc,EAAmB,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAiBxC,eAAO,MAAM,qBAAqB,GAAU,UAAU,cAAc,EAAE,SAAS,UAAU,oBAQxF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAChC,UAAU,cAAc,EACxB,OAAO,SAAS,EAChB,kBAAkB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACpD,SAAS,MAAM,oBAWlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACnC,UAAU,cAAc,EACxB,OAAO,SAAS,KACjB,OAAO,CAAC,IAAI,CAKd,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC1B,WAAW,UAAU,EACrB,6BAA6B;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,UAAU,CAAA;CAAE,EACpF,0DAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,qBAgRjB,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/consentflowcontract/relationships/create.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,IAAI,oBAAoB,EAExC,2BAA2B,EAE3B,UAAU,EAGb,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,cAAc,EAAmB,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAiBxC,eAAO,MAAM,qBAAqB,GAAU,UAAU,cAAc,EAAE,SAAS,UAAU,oBAQxF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAChC,UAAU,cAAc,EACxB,OAAO,SAAS,EAChB,kBAAkB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACpD,SAAS,MAAM,oBAWlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACnC,UAAU,cAAc,EACxB,OAAO,SAAS,KACjB,OAAO,CAAC,IAAI,CAKd,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC1B,WAAW,UAAU,EACrB,6BAA6B;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,UAAU,CAAA;CAAE,EACpF,0DAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,qBAyQjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/consentflowcontract/relationships/update.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,IAAI,oBAAoB,EAExC,2BAA2B,EAE3B,UAAU,EAGb,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AASxE,eAAO,MAAM,cAAc,GACvB,cAAc;IACV,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,EACD,kDAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,KACf,OAAO,CAAC,OAAO,CA8MjB,CAAC;AAEF,eAAO,MAAM,WAAW,GACpB,cAAc;IACV,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,EACD,kDAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,KACf,OAAO,CAAC,OAAO,CAiNjB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,cAAc;IAC9C,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,KAAG,OAAO,CAAC,OAAO,CAqDlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAClC,cAAc;IACV,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,EACD,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KACrC,OAAO,CAAC,OAAO,CAoHjB,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,OAAO,WAAW,EAClB,aAAa,MAAM,EAAE,KACtB,OAAO,CAAC,MAAM,CAkEhB,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,IAAI,MAAM,EACV,WAAW,MAAM,EACjB,QAAQ,SAAS,GAAG,UAAU,GAAG,QAAQ,KAC1C,OAAO,CAAC,IAAI,CAOd,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACvC,IAAI,MAAM,EACV,WAAW,MAAM,EACjB,SAAS,SAAS,GAAG,UAAU,GAAG,QAAQ,EAC1C,aAAa,MAAM,GAAG,QAAQ,GAAG,IAAI,kBAgBxC,CAAC"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/consentflowcontract/relationships/update.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,IAAI,oBAAoB,EAExC,2BAA2B,EAE3B,UAAU,EAGb,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAUxE,eAAO,MAAM,cAAc,GACvB,cAAc;IACV,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,EACD,kDAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,KACf,OAAO,CAAC,OAAO,CAuMjB,CAAC;AAEF,eAAO,MAAM,WAAW,GACpB,cAAc;IACV,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,EACD,kDAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,KACf,OAAO,CAAC,OAAO,CA0MjB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,cAAc;IAC9C,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,KAAG,OAAO,CAAC,OAAO,CAqDlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAClC,cAAc;IACV,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,EACD,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KACrC,OAAO,CAAC,OAAO,CAoHjB,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,OAAO,WAAW,EAClB,aAAa,MAAM,EAAE,KACtB,OAAO,CAAC,MAAM,CAkEhB,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,IAAI,MAAM,EACV,WAAW,MAAM,EACjB,QAAQ,SAAS,GAAG,UAAU,GAAG,QAAQ,KAC1C,OAAO,CAAC,IAAI,CAOd,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACvC,IAAI,MAAM,EACV,WAAW,MAAM,EACjB,SAAS,SAAS,GAAG,UAAU,GAAG,QAAQ,EAC1C,aAAa,MAAM,GAAG,QAAQ,GAAG,IAAI,kBAgBxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/presentation/read.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,oBAAoB,EAIvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,eAAO,MAAM,mBAAmB,GAAU,IAAI,MAAM,KAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAEzF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAI3F,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC3C,QAAQ,MAAM,EACd,SAAS,WAAW,EACpB,kBAGG;IACC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,KACF,OAAO,CAAC,kBAAkB,EAAE,CAsC9B,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACvC,QAAQ,MAAM,EACd,SAAS,WAAW,EACpB,gBAGG;IACC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,KACF,OAAO,CAAC,kBAAkB,EAAE,CA8C9B,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC3C,QAAQ,MAAM,EACd,SAAS,WAAW,EACpB,kBAGG;IACC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,KACF,OAAO,CAAC,kBAAkB,EAAE,CAuC9B,CAAC"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/presentation/read.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,oBAAoB,EAIvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,eAAO,MAAM,mBAAmB,GAAU,IAAI,MAAM,KAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAEzF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAI3F,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC3C,QAAQ,MAAM,EACd,SAAS,WAAW,EACpB,kBAGG;IACC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,KACF,OAAO,CAAC,kBAAkB,EAAE,CA+C9B,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACvC,QAAQ,MAAM,EACd,SAAS,WAAW,EACpB,gBAGG;IACC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,KACF,OAAO,CAAC,kBAAkB,EAAE,CAuD9B,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC3C,QAAQ,MAAM,EACd,SAAS,WAAW,EACpB,kBAGG;IACC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,KACF,OAAO,CAAC,kBAAkB,EAAE,CA+C9B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { PresentationInstance } from '../../.././models/index';
2
2
  import { ProfileType } from '../../../types/profile';
3
- export declare const createSentPresentationRelationship: (from: ProfileType, to: ProfileType, presentation: PresentationInstance) => Promise<void>;
4
- export declare const createReceivedPresentationRelationship: (to: ProfileType, from: ProfileType, presentation: PresentationInstance) => Promise<void>;
3
+ export declare const createSentPresentationRelationship: (from: ProfileType, to: ProfileType, presentation: PresentationInstance, metadata?: Record<string, unknown>) => Promise<void>;
4
+ export declare const createReceivedPresentationRelationship: (to: ProfileType, from: ProfileType, presentation: PresentationInstance, metadata?: Record<string, unknown>) => Promise<void>;
5
5
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/presentation/relationships/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAW,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,kCAAkC,GAC3C,MAAM,WAAW,EACjB,IAAI,WAAW,EACf,cAAc,oBAAoB,KACnC,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,eAAO,MAAM,sCAAsC,GAC/C,IAAI,WAAW,EACf,MAAM,WAAW,EACjB,cAAc,oBAAoB,KACnC,OAAO,CAAC,IAAI,CAMd,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/presentation/relationships/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,oBAAoB,EAAW,MAAM,SAAS,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,kCAAkC,GAC3C,MAAM,WAAW,EACjB,IAAI,WAAW,EACf,cAAc,oBAAoB,EAClC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,IAAI,CAyBd,CAAC;AAEF,eAAO,MAAM,sCAAsC,GAC/C,IAAI,WAAW,EACf,MAAM,WAAW,EACjB,cAAc,oBAAoB,EAClC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,IAAI,CAyBd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/presentation/relationships/read.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,oBAAoB,EAAW,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,4BAA4B,GACrC,IAAI,MAAM,EACV,IAAI,WAAW,KAChB,OAAO,CACJ;IACE,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACjF,MAAM,EAAE,oBAAoB,CAAC;CAChC,GACC,SAAS,CAYd,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC7B,cAAc,oBAAoB,KACnC,OAAO,CAAC,WAAW,GAAG,SAAS,CAajC,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,gBAAgB,MAAM,EACtB,SAAS,WAAW,KACrB,OAAO,CAAC,OAAO,CAUjB,CAAC"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/presentation/relationships/read.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,oBAAoB,EAAW,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAa5C,eAAO,MAAM,4BAA4B,GACrC,IAAI,MAAM,EACV,IAAI,WAAW,KAChB,OAAO,CACJ;IACI,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACjF,MAAM,EAAE,oBAAoB,CAAC;CAChC,GACD,SAAS,CAgBd,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC7B,cAAc,oBAAoB,KACnC,OAAO,CAAC,WAAW,GAAG,SAAS,CAajC,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,gBAAgB,MAAM,EACtB,SAAS,WAAW,KACrB,OAAO,CAAC,OAAO,CAUjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AbandonReservationInput, AbandonReservationResult } from './types';
2
+ export declare const abandonReservation: (input: AbandonReservationInput) => Promise<AbandonReservationResult>;
3
+ //# sourceMappingURL=abandon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abandon.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/abandon.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAcjF,eAAO,MAAM,kBAAkB,GAC3B,OAAO,uBAAuB,KAC/B,OAAO,CAAC,wBAAwB,CAuElC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ClaimCleanupJobsInput, ClaimCleanupJobsResult, CompleteCleanupJobInput, CompleteCleanupJobResult, ShareContentCleanupJobRecord } from './types';
2
+ export declare const claimCleanupJobs: (input: ClaimCleanupJobsInput) => Promise<ClaimCleanupJobsResult>;
3
+ export declare const completeCleanupJob: (input: CompleteCleanupJobInput) => Promise<CompleteCleanupJobResult>;
4
+ export declare const getCleanupJob: (objectRef: string) => Promise<ShareContentCleanupJobRecord | null>;
5
+ export declare const listCleanupJobsForShare: (shareId: string) => Promise<ShareContentCleanupJobRecord[]>;
6
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/cleanup.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACR,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC/B,MAAM,SAAS,CAAC;AA2DjB,eAAO,MAAM,gBAAgB,GACzB,OAAO,qBAAqB,KAC7B,OAAO,CAAC,sBAAsB,CAkEhC,CAAC;AAOF,eAAO,MAAM,kBAAkB,GAC3B,OAAO,uBAAuB,KAC/B,OAAO,CAAC,wBAAwB,CAgFlC,CAAC;AAGF,eAAO,MAAM,aAAa,GACtB,WAAW,MAAM,KAClB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAQ7C,CAAC;AAGF,eAAO,MAAM,uBAAuB,GAChC,SAAS,MAAM,KAChB,OAAO,CAAC,4BAA4B,EAAE,CAaxC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type ShareLinkRepositoryErrorCode = 'NOT_FOUND' | 'CONFLICT' | 'OPERATION_IN_FLIGHT' | 'LEASE_EXPIRED' | 'STALE_GENERATION' | 'PRECONDITION_FAILED' | 'INVALID_INPUT';
2
+ export declare class ShareLinkRepositoryError extends Error {
3
+ readonly code: ShareLinkRepositoryErrorCode;
4
+ constructor(code: ShareLinkRepositoryErrorCode, message: string);
5
+ }
6
+ export declare const isShareLinkRepositoryError: (error: unknown) => error is ShareLinkRepositoryError;
7
+ export declare function failShareLink(code: ShareLinkRepositoryErrorCode, message: string): never;
8
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/errors.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,4BAA4B,GAClC,WAAW,GACX,UAAU,GACV,qBAAqB,GACrB,eAAe,GACf,kBAAkB,GAClB,qBAAqB,GACrB,eAAe,CAAC;AAEtB,qBAAa,wBAAyB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;gBAEhC,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM;CAKlE;AAED,eAAO,MAAM,0BAA0B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,wBACxB,CAAC;AAE9C,wBAAgB,aAAa,CAAC,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAExF"}
@@ -0,0 +1,3 @@
1
+ import type { FinalizeReservationInput, FinalizeReservationResult } from './types';
2
+ export declare const finalizeReservation: (input: FinalizeReservationInput) => Promise<FinalizeReservationResult>;
3
+ //# sourceMappingURL=finalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/finalize.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAqBnF,eAAO,MAAM,mBAAmB,GAC5B,OAAO,wBAAwB,KAChC,OAAO,CAAC,yBAAyB,CA6NnC,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { ShareLinkOperationKind } from '../../helpers/share-link-lifecycle';
2
+ import type { ShareLinkRecord } from '../../models/ShareLink';
3
+ import type { Neo4jQueryResult, ShareLinkTransaction } from './transaction';
4
+ import type { ShareContentCleanupJobRecord, ShareLinkOperationRecord, ShareLinkReservationRecord } from './types';
5
+ export declare const normalizeNeo4jValue: (value: unknown) => unknown;
6
+ export declare const normalizeProperties: (props: Record<string, unknown>) => Record<string, unknown>;
7
+ export declare const readNodeProperties: (result: Neo4jQueryResult, key: string, rowIndex?: number) => Record<string, unknown> | null;
8
+ export declare const toShareLinkRecord: (props: Record<string, unknown>) => ShareLinkRecord;
9
+ export declare const toShareLinkReservationRecord: (props: Record<string, unknown>) => ShareLinkReservationRecord;
10
+ export declare const toShareLinkOperationRecord: (props: Record<string, unknown>) => ShareLinkOperationRecord;
11
+ export declare const toShareContentCleanupJobRecord: (props: Record<string, unknown>) => ShareContentCleanupJobRecord;
12
+ export declare const generateObjectRef: () => string;
13
+ export declare const generateOperationId: () => string;
14
+ export declare const generateClaimToken: () => string;
15
+ export type ShareLinkOperationKey = {
16
+ namespace: string;
17
+ ownerProfileId: string;
18
+ opKind: ShareLinkOperationKind;
19
+ clientRequestId: string;
20
+ };
21
+ export declare const lockShare: (tx: ShareLinkTransaction, shareId: string) => Promise<Record<string, unknown> | null>;
22
+ export declare const readShareById: (tx: ShareLinkTransaction, shareId: string) => Promise<Record<string, unknown> | null>;
23
+ export declare const readReservation: (tx: ShareLinkTransaction, shareId: string) => Promise<Record<string, unknown> | null>;
24
+ export declare const readOperation: (tx: ShareLinkTransaction, key: ShareLinkOperationKey) => Promise<Record<string, unknown> | null>;
25
+ export declare const readOperationByOperationId: (tx: ShareLinkTransaction, operationId: string) => Promise<Record<string, unknown> | null>;
26
+ export type WriteOperationInput = ShareLinkOperationKey & {
27
+ operationId: string;
28
+ shareId: string;
29
+ requestHash: string;
30
+ now: string;
31
+ pruneAfter: string;
32
+ };
33
+ export declare const writeOperationInProgress: (tx: ShareLinkTransaction, input: WriteOperationInput) => Promise<void>;
34
+ export declare const markOperationCommitted: (tx: ShareLinkTransaction, input: ShareLinkOperationKey & {
35
+ operationId: string;
36
+ resultJson: string;
37
+ resultVersion: number;
38
+ now: string;
39
+ pruneAfter: string;
40
+ }) => Promise<void>;
41
+ export declare const markOperationAbandoned: (tx: ShareLinkTransaction, key: ShareLinkOperationKey & {
42
+ now: string;
43
+ }) => Promise<void>;
44
+ export declare const deleteReservation: (tx: ShareLinkTransaction, shareId: string) => Promise<void>;
45
+ export type EnqueueCleanupJobInput = {
46
+ objectRef: string;
47
+ operationId: string;
48
+ namespace: string;
49
+ ownerProfileId: string;
50
+ shareId: string;
51
+ contentVersion: number;
52
+ reason: 'superseded' | 'abandoned' | 'stopped';
53
+ now: string;
54
+ };
55
+ export declare const enqueueCleanupJob: (tx: ShareLinkTransaction, input: EnqueueCleanupJobInput) => Promise<void>;
56
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,KAAK,EAAqB,eAAe,EAAmB,MAAM,wBAAwB,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EACR,4BAA4B,EAC5B,wBAAwB,EAExB,0BAA0B,EAC7B,MAAM,SAAS,CAAC;AAOjB,eAAO,MAAM,mBAAmB,GAAI,OAAO,OAAO,KAAG,OAcpD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAGtF,CAAC;AAGN,eAAO,MAAM,kBAAkB,GAC3B,QAAQ,gBAAgB,EACxB,KAAK,MAAM,EACX,iBAAY,KACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAQ5B,CAAC;AAsCF,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,eAiCjE,CAAC;AAEH,eAAO,MAAM,4BAA4B,GACrC,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,0BAiCD,CAAC;AAEH,eAAO,MAAM,0BAA0B,GACnC,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,wBAcD,CAAC;AAEH,eAAO,MAAM,8BAA8B,GACvC,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,4BAkBD,CAAC;AAGH,eAAO,MAAM,iBAAiB,QAAO,MAA+C,CAAC;AAGrF,eAAO,MAAM,mBAAmB,QAAO,MAAsB,CAAC;AAG9D,eAAO,MAAM,kBAAkB,QAAO,MAAsB,CAAC;AAE7D,MAAM,MAAM,qBAAqB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;CAC3B,CAAC;AASF,eAAO,MAAM,SAAS,GAClB,IAAI,oBAAoB,EACxB,SAAS,MAAM,KAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASxC,CAAC;AAEF,eAAO,MAAM,aAAa,GACtB,IAAI,oBAAoB,EACxB,SAAS,MAAM,KAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAMxC,CAAC;AAEF,eAAO,MAAM,eAAe,GACxB,IAAI,oBAAoB,EACxB,SAAS,MAAM,KAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAOxC,CAAC;AAEF,eAAO,MAAM,aAAa,GACtB,IAAI,oBAAoB,EACxB,KAAK,qBAAqB,KAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAaxC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACnC,IAAI,oBAAoB,EACxB,aAAa,MAAM,KACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAOxC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAQF,eAAO,MAAM,wBAAwB,GACjC,IAAI,oBAAoB,EACxB,OAAO,mBAAmB,KAC3B,OAAO,CAAC,IAAI,CAkBd,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAC/B,IAAI,oBAAoB,EACxB,OAAO,qBAAqB,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB,KACF,OAAO,CAAC,IAAI,CAgBd,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAC/B,IAAI,oBAAoB,EACxB,KAAK,qBAAqB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,KAC7C,OAAO,CAAC,IAAI,CAWd,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC1B,IAAI,oBAAoB,EACxB,SAAS,MAAM,KAChB,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;IAC/C,GAAG,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAC1B,IAAI,oBAAoB,EACxB,OAAO,sBAAsB,KAC9B,OAAO,CAAC,IAAI,CAqBd,CAAC"}
@@ -0,0 +1,12 @@
1
+ export * from './types';
2
+ export * from './errors';
3
+ export * from './reserve';
4
+ export * from './finalize';
5
+ export * from './abandon';
6
+ export * from './revoke';
7
+ export * from './read';
8
+ export * from './list';
9
+ export * from './cleanup';
10
+ export * from './recovery';
11
+ export * from './receipt';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ListShareLinksInput, ListShareLinksResult, ShareLinkListCursor } from './types';
2
+ export declare const encodeShareLinkListCursor: (cursor: ShareLinkListCursor) => string;
3
+ export declare const decodeShareLinkListCursor: (raw: unknown) => ShareLinkListCursor | null;
4
+ export declare const listShareLinks: (input: ListShareLinksInput) => Promise<ListShareLinksResult>;
5
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/list.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAuD9F,eAAO,MAAM,yBAAyB,GAAI,QAAQ,mBAAmB,KAAG,MAGjE,CAAC;AAOR,eAAO,MAAM,yBAAyB,GAAI,KAAK,OAAO,KAAG,mBAAmB,GAAG,IAqC9E,CAAC;AAaF,eAAO,MAAM,cAAc,GAAU,OAAO,mBAAmB,KAAG,OAAO,CAAC,oBAAoB,CAyC7F,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { CurrentShareContentResult, GetCurrentShareContentInput, GetShareLinkInput } from './types';
2
+ import type { ShareLinkRecord } from '../../models/ShareLink';
3
+ export declare const getShareLink: (input: GetShareLinkInput) => Promise<ShareLinkRecord | null>;
4
+ export declare const getCurrentShareContent: (input: GetCurrentShareContentInput) => Promise<CurrentShareContentResult>;
5
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/read.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACpB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAO9D,eAAO,MAAM,YAAY,GAAU,OAAO,iBAAiB,KAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAgB3F,CAAC;AAWF,eAAO,MAAM,sBAAsB,GAC/B,OAAO,2BAA2B,KACnC,OAAO,CAAC,yBAAyB,CA8DnC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ConsumeShareViewReceiptInput, ConsumeShareViewReceiptOutcome, PersistShareViewReceiptInput, PruneShareViewReceiptsInput } from './types';
2
+ export declare const hashShareViewReceipt: (receipt: string) => string;
3
+ export declare const persistShareViewReceipt: (input: PersistShareViewReceiptInput) => Promise<boolean>;
4
+ export declare const readShareViewReceiptContext: (receipt: string, namespace: string) => Promise<{
5
+ ownerProfileId: string;
6
+ shareId: string;
7
+ } | null>;
8
+ export declare const readShareViewReceiptOwner: (receipt: string, namespace: string) => Promise<string | null>;
9
+ export declare const consumeShareViewReceipt: (input: ConsumeShareViewReceiptInput) => Promise<ConsumeShareViewReceiptOutcome>;
10
+ export declare const pruneShareViewReceipts: (input: PruneShareViewReceiptsInput) => Promise<number>;
11
+ //# sourceMappingURL=receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/receipt.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,4BAA4B,EAC5B,8BAA8B,EAC9B,4BAA4B,EAC5B,2BAA2B,EAC9B,MAAM,SAAS,CAAC;AAmEjB,eAAO,MAAM,oBAAoB,GAAI,SAAS,MAAM,KAAG,MACO,CAAC;AA6C/D,eAAO,MAAM,uBAAuB,GAChC,OAAO,4BAA4B,KACpC,OAAO,CAAC,OAAO,CA4JjB,CAAC;AAQF,eAAO,MAAM,2BAA2B,GACpC,SAAS,MAAM,EACf,WAAW,MAAM,KAClB,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqB5D,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAClC,SAAS,MAAM,EACf,WAAW,MAAM,KAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAC2D,CAAC;AAepF,eAAO,MAAM,uBAAuB,GAChC,OAAO,4BAA4B,KACpC,OAAO,CAAC,8BAA8B,CAiKxC,CAAC;AAWF,eAAO,MAAM,sBAAsB,GAC/B,OAAO,2BAA2B,KACnC,OAAO,CAAC,MAAM,CAmChB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { AbandonRecoveredReservationInput, AbandonRecoveredReservationResult, ClaimRecoverableReservationInput, ClaimRecoverableReservationResult, DiscoverRecoverableReservationsInput, DiscoverRecoverableReservationsResult, ShareLinkRecoveryKey, ShareLinkRecoveryTarget } from './types';
2
+ export declare const readShareLinkRecoveryTarget: (input: ShareLinkRecoveryKey) => Promise<ShareLinkRecoveryTarget>;
3
+ export declare const discoverRecoverableReservations: (input: DiscoverRecoverableReservationsInput) => Promise<DiscoverRecoverableReservationsResult>;
4
+ export declare const claimRecoverableReservation: (input: ClaimRecoverableReservationInput) => Promise<ClaimRecoverableReservationResult>;
5
+ export declare const abandonRecoveredReservation: (input: AbandonRecoveredReservationInput) => Promise<AbandonRecoveredReservationResult>;
6
+ //# sourceMappingURL=recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/recovery.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EACR,gCAAgC,EAChC,iCAAiC,EACjC,gCAAgC,EAChC,iCAAiC,EACjC,oCAAoC,EACpC,qCAAqC,EACrC,oBAAoB,EACpB,uBAAuB,EAC1B,MAAM,SAAS,CAAC;AAqFjB,eAAO,MAAM,2BAA2B,GACpC,OAAO,oBAAoB,KAC5B,OAAO,CAAC,uBAAuB,CAoCjC,CAAC;AAQF,eAAO,MAAM,+BAA+B,GACxC,OAAO,oCAAoC,KAC5C,OAAO,CAAC,qCAAqC,CA0D/C,CAAC;AAaF,eAAO,MAAM,2BAA2B,GACpC,OAAO,gCAAgC,KACxC,OAAO,CAAC,iCAAiC,CA2I3C,CAAC;AAYF,eAAO,MAAM,2BAA2B,GACpC,OAAO,gCAAgC,KACxC,OAAO,CAAC,iCAAiC,CAsJ3C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ReserveCreateInput, ReserveReplacementInput, ReserveShareLinkResult } from './types';
2
+ export declare const reserveCreate: (input: ReserveCreateInput) => Promise<ReserveShareLinkResult>;
3
+ export declare const reserveReplacement: (input: ReserveReplacementInput) => Promise<ReserveShareLinkResult>;
4
+ //# sourceMappingURL=reserve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reserve.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/reserve.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACR,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EAEzB,MAAM,SAAS,CAAC;AA4HjB,eAAO,MAAM,aAAa,GAAU,OAAO,kBAAkB,KAAG,OAAO,CAAC,sBAAsB,CAoO7F,CAAC;AAmGF,eAAO,MAAM,kBAAkB,GAC3B,OAAO,uBAAuB,KAC/B,OAAO,CAAC,sBAAsB,CAkIhC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { RevokeShareLinkInput, RevokeShareLinkResult } from './types';
2
+ export declare const revokeShareLink: (input: RevokeShareLinkInput) => Promise<RevokeShareLinkResult>;
3
+ //# sourceMappingURL=revoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/revoke.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAe3E,eAAO,MAAM,eAAe,GACxB,OAAO,oBAAoB,KAC5B,OAAO,CAAC,qBAAqB,CA8J/B,CAAC"}
@@ -0,0 +1,18 @@
1
+ export type ExecutableTransaction = {
2
+ run: (query: string, params?: Record<string, unknown>) => Promise<unknown>;
3
+ };
4
+ export type ExplicitTransaction = ExecutableTransaction & {
5
+ commit: () => Promise<void>;
6
+ rollback: () => Promise<void>;
7
+ };
8
+ export type TransactionSession = {
9
+ beginTransaction: (config?: {
10
+ timeout?: number;
11
+ }) => ExplicitTransaction;
12
+ };
13
+ export type TransactionTimeoutConfig = {
14
+ timeout: number;
15
+ } | undefined;
16
+ export declare const resolveTransactionConfig: (timeoutMs: number | undefined) => TransactionTimeoutConfig;
17
+ export declare const executeExplicitTransaction: <T>(session: TransactionSession, work: (tx: ExecutableTransaction) => Promise<T>, timeoutMs?: number) => Promise<T>;
18
+ //# sourceMappingURL=transaction-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-execution.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/transaction-execution.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,qBAAqB,GAAG;IAChC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IACtD,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;AAGF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,gBAAgB,EAAE,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,mBAAmB,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC;AAEvE,eAAO,MAAM,wBAAwB,GACjC,WAAW,MAAM,GAAG,SAAS,KAC9B,wBAGgB,CAAC;AAUpB,eAAO,MAAM,0BAA0B,GAAU,CAAC,EAC9C,SAAS,kBAAkB,EAC3B,MAAM,CAAC,EAAE,EAAE,qBAAqB,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/C,YAAY,MAAM,KACnB,OAAO,CAAC,CAAC,CAqBX,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type Neo4jQueryResult = {
2
+ records: Array<{
3
+ get: (key: string) => unknown;
4
+ }>;
5
+ };
6
+ export interface ShareLinkTransaction {
7
+ run: (query: string, params?: Record<string, unknown>) => Promise<Neo4jQueryResult>;
8
+ }
9
+ export type ShareLinkTransactionOptions = {
10
+ timeoutMs?: number;
11
+ noInlineRetry?: boolean;
12
+ };
13
+ export declare const withShareLinkRead: <T>(work: (runner: ShareLinkTransaction) => Promise<T>, options?: ShareLinkTransactionOptions) => Promise<T>;
14
+ export declare const withShareLinkTransaction: <T>(work: (tx: ShareLinkTransaction) => Promise<T>, options?: ShareLinkTransactionOptions) => Promise<T>;
15
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/transaction.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,gBAAgB,GAAG;IAC3B,OAAO,EAAE,KAAK,CAAC;QACX,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;KACjC,CAAC,CAAC;CACN,CAAC;AAGF,MAAM,WAAW,oBAAoB;IACjC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACvF;AAUD,MAAM,MAAM,2BAA2B,GAAG;IAEtC,SAAS,CAAC,EAAE,MAAM,CAAC;IAOnB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAQF,eAAO,MAAM,iBAAiB,GAAU,CAAC,EACrC,MAAM,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,CAAC,CAAC,EAClD,UAAU,2BAA2B,KACtC,OAAO,CAAC,CAAC,CAgBX,CAAC;AAcF,eAAO,MAAM,wBAAwB,GAAU,CAAC,EAC5C,MAAM,CAAC,EAAE,EAAE,oBAAoB,KAAK,OAAO,CAAC,CAAC,CAAC,EAC9C,UAAU,2BAA2B,KACtC,OAAO,CAAC,CAAC,CAgCX,CAAC"}