@arcblock/did-connect-service 4.1.21 → 4.1.23

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 (173) hide show
  1. package/dist/_generated/asset-bytes.js +1 -1
  2. package/dist/_generated/asset-manifest.js +3 -3
  3. package/dist/assets/admin-core.1fc3260c.js +1623 -0
  4. package/dist/assets/admin-core.5a2d69b0.js +2067 -0
  5. package/dist/assets/admin-core.9fff6042.js +2083 -0
  6. package/dist/assets/admin-core.a13c2729.js +1461 -0
  7. package/dist/assets/{admin-core.40671087.js → admin-core.a63bbc69.js} +2 -12
  8. package/dist/assets/admin-core.c0b5af61.js +1393 -0
  9. package/dist/assets/admin-core.cbbdbe6d.js +1465 -0
  10. package/dist/assets/admin-core.e83fd379.js +1397 -0
  11. package/dist/assets/admin-extra.143b5774.js +2543 -0
  12. package/dist/assets/admin-extra.35b91f98.js +2543 -0
  13. package/dist/assets/admin-extra.531b187f.js +2552 -0
  14. package/dist/assets/admin-extra.7ca9c16b.js +2529 -0
  15. package/dist/assets/admin-extra.841b2bbe.js +2530 -0
  16. package/dist/assets/admin-extra.afcb3651.js +2528 -0
  17. package/dist/assets/admin.7c5d5f04.css +2312 -0
  18. package/dist/assets/admin.c26bb17a.css +2219 -0
  19. package/dist/assets/login.4404e695.js +720 -0
  20. package/dist/assets/login.bb9f8b03.js +720 -0
  21. package/dist/assets/login.d3f05790.js +720 -0
  22. package/dist/assets/login.fa25f37a.js +720 -0
  23. package/dist/blocklet-service-rpc.d.ts.map +1 -1
  24. package/dist/blocklet-service-rpc.js +11 -8
  25. package/dist/blocklet-service-rpc.js.map +1 -1
  26. package/dist/blocklet-service.d.ts +11 -8
  27. package/dist/blocklet-service.d.ts.map +1 -1
  28. package/dist/blocklet-service.js +32 -38
  29. package/dist/blocklet-service.js.map +1 -1
  30. package/dist/embedded.d.ts +6 -0
  31. package/dist/embedded.d.ts.map +1 -1
  32. package/dist/embedded.js +1 -0
  33. package/dist/embedded.js.map +1 -1
  34. package/dist/handlers/account-merge-handler.d.ts +63 -0
  35. package/dist/handlers/account-merge-handler.d.ts.map +1 -0
  36. package/dist/handlers/account-merge-handler.js +263 -0
  37. package/dist/handlers/account-merge-handler.js.map +1 -0
  38. package/dist/handlers/auth-handler.d.ts +9 -5
  39. package/dist/handlers/auth-handler.d.ts.map +1 -1
  40. package/dist/handlers/auth-handler.js +28 -7
  41. package/dist/handlers/auth-handler.js.map +1 -1
  42. package/dist/handlers/blocklet-js-handler.d.ts +3 -2
  43. package/dist/handlers/blocklet-js-handler.d.ts.map +1 -1
  44. package/dist/handlers/blocklet-js-handler.js +4 -2
  45. package/dist/handlers/blocklet-js-handler.js.map +1 -1
  46. package/dist/handlers/branding-handler.d.ts +4 -0
  47. package/dist/handlers/branding-handler.d.ts.map +1 -1
  48. package/dist/handlers/branding-handler.js +12 -6
  49. package/dist/handlers/branding-handler.js.map +1 -1
  50. package/dist/handlers/cimd.d.ts +6 -1
  51. package/dist/handlers/cimd.d.ts.map +1 -1
  52. package/dist/handlers/cimd.js +12 -2
  53. package/dist/handlers/cimd.js.map +1 -1
  54. package/dist/handlers/did-connect-handler.d.ts +22 -0
  55. package/dist/handlers/did-connect-handler.d.ts.map +1 -1
  56. package/dist/handlers/did-connect-handler.js +191 -17
  57. package/dist/handlers/did-connect-handler.js.map +1 -1
  58. package/dist/handlers/email-login-handler.d.ts +2 -0
  59. package/dist/handlers/email-login-handler.d.ts.map +1 -1
  60. package/dist/handlers/email-login-handler.js +30 -14
  61. package/dist/handlers/email-login-handler.js.map +1 -1
  62. package/dist/handlers/oauth-handler.d.ts +15 -0
  63. package/dist/handlers/oauth-handler.d.ts.map +1 -1
  64. package/dist/handlers/oauth-handler.js +107 -43
  65. package/dist/handlers/oauth-handler.js.map +1 -1
  66. package/dist/handlers/passkey-handler.d.ts.map +1 -1
  67. package/dist/handlers/passkey-handler.js +40 -8
  68. package/dist/handlers/passkey-handler.js.map +1 -1
  69. package/dist/handlers/team-handler.d.ts +1 -1
  70. package/dist/handlers/team-handler.d.ts.map +1 -1
  71. package/dist/handlers/team-handler.js +43 -3
  72. package/dist/handlers/team-handler.js.map +1 -1
  73. package/dist/handlers/ticket-handler.d.ts.map +1 -1
  74. package/dist/handlers/ticket-handler.js +4 -2
  75. package/dist/handlers/ticket-handler.js.map +1 -1
  76. package/dist/handlers/unbind-account.d.ts +22 -0
  77. package/dist/handlers/unbind-account.d.ts.map +1 -0
  78. package/dist/handlers/unbind-account.js +20 -0
  79. package/dist/handlers/unbind-account.js.map +1 -0
  80. package/dist/http/security-headers.d.ts +38 -0
  81. package/dist/http/security-headers.d.ts.map +1 -0
  82. package/dist/http/security-headers.js +67 -0
  83. package/dist/http/security-headers.js.map +1 -0
  84. package/dist/identity/account-state.d.ts +37 -0
  85. package/dist/identity/account-state.d.ts.map +1 -0
  86. package/dist/identity/account-state.js +97 -0
  87. package/dist/identity/account-state.js.map +1 -0
  88. package/dist/identity/json-content-type.d.ts +14 -0
  89. package/dist/identity/json-content-type.d.ts.map +1 -0
  90. package/dist/identity/json-content-type.js +26 -0
  91. package/dist/identity/json-content-type.js.map +1 -0
  92. package/dist/index.d.ts +3 -1
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +2 -2
  95. package/dist/index.js.map +1 -1
  96. package/dist/oauth-adapters/apple.d.ts +1 -1
  97. package/dist/oauth-adapters/apple.d.ts.map +1 -1
  98. package/dist/oauth-adapters/apple.js +2 -0
  99. package/dist/oauth-adapters/apple.js.map +1 -1
  100. package/dist/oauth-adapters/auth0-legacy.d.ts +1 -1
  101. package/dist/oauth-adapters/auth0-legacy.d.ts.map +1 -1
  102. package/dist/oauth-adapters/auth0-legacy.js +2 -0
  103. package/dist/oauth-adapters/auth0-legacy.js.map +1 -1
  104. package/dist/oauth-adapters/auth0.d.ts +1 -1
  105. package/dist/oauth-adapters/auth0.d.ts.map +1 -1
  106. package/dist/oauth-adapters/auth0.js +2 -0
  107. package/dist/oauth-adapters/auth0.js.map +1 -1
  108. package/dist/oauth-adapters/github.d.ts.map +1 -1
  109. package/dist/oauth-adapters/github.js +19 -12
  110. package/dist/oauth-adapters/github.js.map +1 -1
  111. package/dist/oauth-adapters/google.d.ts +1 -1
  112. package/dist/oauth-adapters/google.d.ts.map +1 -1
  113. package/dist/oauth-adapters/google.js +2 -0
  114. package/dist/oauth-adapters/google.js.map +1 -1
  115. package/dist/oauth-adapters/types.d.ts +7 -0
  116. package/dist/oauth-adapters/types.d.ts.map +1 -1
  117. package/dist/oauth-adapters/types.js +4 -1
  118. package/dist/oauth-adapters/types.js.map +1 -1
  119. package/dist/package-branding.d.ts +18 -0
  120. package/dist/package-branding.d.ts.map +1 -0
  121. package/dist/package-branding.js +103 -0
  122. package/dist/package-branding.js.map +1 -0
  123. package/dist/pages/admin/i18n.d.ts.map +1 -1
  124. package/dist/pages/admin/i18n.js +86 -0
  125. package/dist/pages/admin/i18n.js.map +1 -1
  126. package/dist/pages/admin/index.d.ts +4 -0
  127. package/dist/pages/admin/index.d.ts.map +1 -1
  128. package/dist/pages/admin/index.js +10 -2
  129. package/dist/pages/admin/index.js.map +1 -1
  130. package/dist/pages/admin/merge-confirm-view.d.ts +48 -0
  131. package/dist/pages/admin/merge-confirm-view.d.ts.map +1 -0
  132. package/dist/pages/admin/merge-confirm-view.js +85 -0
  133. package/dist/pages/admin/merge-confirm-view.js.map +1 -0
  134. package/dist/pages/admin/merge-method-picker.d.ts +12 -0
  135. package/dist/pages/admin/merge-method-picker.d.ts.map +1 -0
  136. package/dist/pages/admin/merge-method-picker.js +34 -0
  137. package/dist/pages/admin/merge-method-picker.js.map +1 -0
  138. package/dist/pages/admin/oauth-popup-close.d.ts +13 -0
  139. package/dist/pages/admin/oauth-popup-close.d.ts.map +1 -0
  140. package/dist/pages/admin/oauth-popup-close.js +15 -0
  141. package/dist/pages/admin/oauth-popup-close.js.map +1 -0
  142. package/dist/pages/admin/styles.d.ts +1 -1
  143. package/dist/pages/admin/styles.d.ts.map +1 -1
  144. package/dist/pages/admin/styles.js +83 -0
  145. package/dist/pages/admin/styles.js.map +1 -1
  146. package/dist/pages/admin/tab-audit.d.ts +1 -1
  147. package/dist/pages/admin/tab-audit.d.ts.map +1 -1
  148. package/dist/pages/admin/tab-audit.js +12 -0
  149. package/dist/pages/admin/tab-audit.js.map +1 -1
  150. package/dist/pages/admin/tab-profile-accounts.d.ts.map +1 -1
  151. package/dist/pages/admin/tab-profile-accounts.js +509 -3
  152. package/dist/pages/admin/tab-profile-accounts.js.map +1 -1
  153. package/dist/pages/invite-page.d.ts +1 -0
  154. package/dist/pages/invite-page.d.ts.map +1 -1
  155. package/dist/pages/invite-page.js +13 -3
  156. package/dist/pages/invite-page.js.map +1 -1
  157. package/dist/store/account-merge.d.ts +167 -0
  158. package/dist/store/account-merge.d.ts.map +1 -0
  159. package/dist/store/account-merge.js +313 -0
  160. package/dist/store/account-merge.js.map +1 -0
  161. package/dist/store/d1-store.d.ts +97 -7
  162. package/dist/store/d1-store.d.ts.map +1 -1
  163. package/dist/store/d1-store.js +421 -23
  164. package/dist/store/d1-store.js.map +1 -1
  165. package/dist/types.d.ts +8 -0
  166. package/dist/types.d.ts.map +1 -1
  167. package/migrations/0015_connected_accounts_id_index.sql +6 -0
  168. package/migrations/0016_did_aliases.sql +11 -0
  169. package/migrations/0017_unbind_revoke_and_cascade.sql +49 -0
  170. package/migrations/0018_primary_credential_did.sql +54 -0
  171. package/migrations/0019_account_merge.sql +16 -0
  172. package/migrations/0020_dedupe_connected_accounts.sql +24 -0
  173. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"d1-store.d.ts","sourceRoot":"","sources":["../../src/store/d1-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"d1-store.d.ts","sourceRoot":"","sources":["../../src/store/d1-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,eAAe,EAEf,sBAAsB,EACtB,gBAAgB,EAEhB,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAaL,KAAK,cAAc,EACnB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AA4L5B,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,uCAAwC,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhE,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wCAAwC,oaAW7C,CAAC;AAET,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,sEACiC,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,6lBAqBA,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,scAiBtC,CAAC;AAmCL,mGAAmG;AACnG,eAAO,MAAM,yBAAyB,QAAoB,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAmBD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,KAAK,GAAG,gBAAgB,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AA4CD,KAAK,eAAe,GAAG,KAAK,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAsDH,kEAAkE;AAClE,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,OAAO;IAmBN,OAAO,CAAC,EAAE;IAlBtB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEzC;;;;;;;;;;;;;;;OAeG;gBACiB,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAOjG;qFACiF;IAC3E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4P9B,0DAA0D;IACpD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlF,YAAY,CAChB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IASrE,sFAAsF;IAChF,mBAAmB,CACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAQ3E,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvC,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B1D,UAAU,CAAC,MAAM,EAAE;QACvB,GAAG,EAAE,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCX,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKrD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAK/D;;;;OAIG;IACG,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBjE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ/B,QAAQ,CAAC,IAAI,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1D,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAgE7C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAetD,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhF,iBAAiB,CACrB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EACtF,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAoCV,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnF;;;OAGG;IACG,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7F,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiD9F,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAQ3D,cAAc,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,cAAc,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAoC7D;;OAEG;IACG,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYzD,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhF,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYxC,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzD,YAAY,CAAC,IAAI,EAAE,iBAAiB,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC9E,IAAI,EAAE,YAAY,EAAE,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAgBI,uBAAuB,CAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC;QAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAInD,kHAAkH;YACpG,gBAAgB;IAsDxB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAgB9E,sBAAsB,CAAC,MAAM,EAAE;QACnC,GAAG,EAAE,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BX,sBAAsB,CAAC,OAAO,EAAE;QACpC,GAAG,EAAE,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCjB;;;;;;;;;;;OAWG;IACG,+BAA+B,CACnC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EACvD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAiChB;;;;;;OAMG;IACG,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3F,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAS7F,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAQ7E,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IASjF,oCAAoC,CACxC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAQnC,qCAAqC,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAS9B,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAY7E;;;;OAIG;IACG,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDzD,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzF;;;OAGG;IACG,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3G,mFAAmF;YACrE,6BAA6B;IAc3C;;;OAGG;YACW,yBAAyB;IAiBjC,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlD,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAuCtE,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAepE,aAAa,CAAC,IAAI,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAmD/C,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA6B1B,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnD,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CtC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAclC,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAiDpE,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA4B7D,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgC5F,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwCxG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUrD,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAmCnE,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA2B7D,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4B5F,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2CxG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAYV,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;IAeT,sEAAsE;IAChE,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAQ3D,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CACjD,KAAK,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CACH;IAeK,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAC7D,KAAK,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC,CACH;IAiCK,8BAA8B,IAAI,OAAO,CAC7C,KAAK,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CACH;IAuBK,2BAA2B,IAAI,OAAO,CAC1C,KAAK,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC,CACH;IAgCK,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrE,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASpE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBzF,YAAY,CAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAStE,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,iEAAiE;IAC3D,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxF,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAS5E,mGAAmG;IAC7F,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAWlG;2EACuE;IACvE,OAAO,CAAC,aAAa;IAarB,yFAAyF;IACnF,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAarE;;0EAEsE;IAChE,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAsBjG,oCAAoC;IAC9B,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,6DAA6D;IACvD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ/D,+EAA+E;IACzE,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYvF;;;;;;;;;;OAUG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAwB7F,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAanD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IASxC,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,SAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAWV,cAAc,CAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAW1E,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzC,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzD,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DxD,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyB9E;;;OAGG;IACG,0BAA0B,IAAI,OAAO,CAAC,eAAe,CAAC;IAqBtD,sBAAsB,CAAC,MAAM,EAAE;QACnC,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYX,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7C,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;IAoBH,sBAAsB,CAC1B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,wBAAwB,EAAE,MAAM,CAAC;KAClC,GACA,OAAO,CAAC,IAAI,CAAC;IAUV,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9C,iBAAiB,CAAC,MAAM,EAAE;QAC9B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,uBAAuB,EAAE,MAAM,CAAC;QAChC,MAAM,EAAE,KAAK,GAAG,gBAAgB,CAAC;QACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjB;;;;;OAKG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAYzE,8EAA8E;IACxE,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAcpE,2FAA2F;IACrF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAcnD,mFAAmF;IAC7E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7E,6BAA6B;IACvB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,oCAAoC;IAC9B,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxC,oEAAoE;IAC9D,uBAAuB,IAAI,OAAO,CACtC,KAAK,CAAC;QACJ,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC,CACH;IAyBD;;;OAGG;IACG,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAc5D,yDAAyD;IACnD,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvE,0DAA0D;IACpD,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxE;;;;OAIG;IACG,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAkC,EAC9C,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GACrC,OAAO,CAAC,kBAAkB,CAAC;IAkB9B;;;;;;OAMG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoD3E;;;;;;;;;OASG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmCnG,mEAAmE;IAC7D,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D;;;;OAIG;IACG,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACnD,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;IAmBT;;;;;OAKG;IACG,sBAAsB,CAAC,KAAK,EAAE;QAClC,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,oBAAoB,CAAC;QAC7B,UAAU,EAAE;YACV,SAAS,EAAE,MAAM,CAAC;YAClB,OAAO,EAAE,MAAM,CAAC;YAChB,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CX,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAUpF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAcrE,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAWlG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAIjE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1E,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,aAAa,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CA6BjG"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { dbToAccessType, invalidateRegexCache } from "../access/access-policy.js";
8
8
  import { deriveRotatedTokenId, generateRefreshTokenId, hashRefreshToken } from "../identity/refresh-tokens.js";
9
+ import { buildMergeSnapshot, commitMergeBatch, consumeMergeIntent, countMergeStatements, createMergeIntentToken, createMergeStartChallenge, getMergeIntentByHash, hashMergeToken, insertMergeIntent, MERGE_BATCH_MAX_STATEMENTS, MERGE_START_TTL_SECONDS, MERGE_TOO_LARGE_ERROR, mergeStartCacheKey, } from "./account-merge.js";
9
10
  const SCHEMA_SQL = `
10
11
  CREATE TABLE IF NOT EXISTS cs_users (
11
12
  did TEXT PRIMARY KEY,
@@ -38,13 +39,17 @@ CREATE TABLE IF NOT EXISTS cs_users (
38
39
  name TEXT,
39
40
  createdByAppPid TEXT,
40
41
  createdBy TEXT,
41
- updatedBy TEXT
42
+ updatedBy TEXT,
43
+ primaryCredentialDid TEXT REFERENCES cs_connected_accounts(did) ON DELETE SET NULL,
44
+ mergedInto TEXT,
45
+ mergedAt TEXT,
46
+ mergeSnapshot TEXT
42
47
  );
43
48
 
44
49
  CREATE TABLE IF NOT EXISTS cs_connected_accounts (
45
50
  did TEXT PRIMARY KEY,
46
51
  pk TEXT,
47
- userDid TEXT REFERENCES cs_users(did),
52
+ userDid TEXT REFERENCES cs_users(did) ON DELETE CASCADE,
48
53
  provider TEXT NOT NULL,
49
54
  id TEXT,
50
55
  firstLoginAt TEXT,
@@ -59,6 +64,22 @@ CREATE TABLE IF NOT EXISTS cs_connected_accounts (
59
64
  updatedBy TEXT
60
65
  );
61
66
 
67
+ CREATE TABLE IF NOT EXISTS cs_did_aliases (
68
+ did TEXT PRIMARY KEY,
69
+ canonicalDid TEXT NOT NULL REFERENCES cs_users(did),
70
+ reason TEXT NOT NULL,
71
+ evidence TEXT,
72
+ createdAt TEXT
73
+ );
74
+
75
+ CREATE TABLE IF NOT EXISTS cs_merge_intents (
76
+ tokenHash TEXT PRIMARY KEY,
77
+ fromDid TEXT NOT NULL,
78
+ intoDid TEXT NOT NULL,
79
+ expiresAt TEXT NOT NULL,
80
+ usedAt TEXT
81
+ );
82
+
62
83
  CREATE TABLE IF NOT EXISTS cs_challenges (
63
84
  id TEXT PRIMARY KEY,
64
85
  challenge TEXT NOT NULL,
@@ -97,6 +118,13 @@ CREATE INDEX IF NOT EXISTS idx_users_pk ON cs_users(pk);
97
118
  CREATE INDEX IF NOT EXISTS idx_users_createdAt ON cs_users(createdAt);
98
119
  CREATE INDEX IF NOT EXISTS idx_connected_accounts_userDid ON cs_connected_accounts(userDid);
99
120
  CREATE INDEX IF NOT EXISTS idx_connected_accounts_pk ON cs_connected_accounts(pk);
121
+ CREATE INDEX IF NOT EXISTS idx_connected_accounts_id ON cs_connected_accounts(id);
122
+ -- UNIQUE(provider, id) is applied in migrate() AFTER DEDUPE_CONNECTED_ACCOUNTS_SQL
123
+ -- so a legacy duplicate pair cannot roll back the entire SCHEMA_SQL batch (#168).
124
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_connected_accounts_provider_id ON cs_connected_accounts(provider, id);
125
+ CREATE INDEX IF NOT EXISTS idx_did_aliases_canonical ON cs_did_aliases(canonicalDid);
126
+ CREATE INDEX IF NOT EXISTS idx_merge_intents_intoDid ON cs_merge_intents(intoDid);
127
+ CREATE INDEX IF NOT EXISTS idx_merge_intents_fromDid ON cs_merge_intents(fromDid);
100
128
  CREATE INDEX IF NOT EXISTS idx_invitations_status ON cs_invitations(status);
101
129
  CREATE INDEX IF NOT EXISTS idx_invitations_expireAt ON cs_invitations(expireAt);
102
130
  CREATE INDEX IF NOT EXISTS idx_audit_logs_action ON cs_audit_logs(action);
@@ -164,6 +192,88 @@ CREATE TABLE IF NOT EXISTS cs_kv_cache (
164
192
  expires_at INTEGER NOT NULL
165
193
  );
166
194
  `;
195
+ /** Allowed `cs_did_aliases.reason` values. Unknown reasons are rejected on write. */
196
+ export const DID_ALIAS_REASONS = ["merged", "chain-migrated"];
197
+ const DID_ALIAS_REASON_SET = new Set(DID_ALIAS_REASONS);
198
+ /**
199
+ * Identity lookup: user DID → connected-account DID → alias source.
200
+ *
201
+ * The user arm excludes alias sources so a retained merged `cs_users(A)`
202
+ * row cannot hide alias `A→B` (#149 / SD-147). The connected-account arm
203
+ * excludes alias-source `ca.did` so a leftover wallet row on a
204
+ * chain-migrated OLD DID cannot hide `OLD→NEW` (#169). Skipped merge
205
+ * credentials are not alias sources; `getUserByDidOrConnectedAccount`
206
+ * follows `mergedInto` so those rows resolve to the surviving account
207
+ * (#176). Do not reorder the arms.
208
+ */
209
+ export const GET_USER_BY_DID_OR_CONNECTED_ACCOUNT_SQL = `SELECT u.* FROM cs_users u
210
+ WHERE u.did = ?
211
+ AND NOT EXISTS (SELECT 1 FROM cs_did_aliases a WHERE a.did = u.did)
212
+ UNION ALL
213
+ SELECT u.* FROM cs_connected_accounts ca
214
+ JOIN cs_users u ON ca.userDid = u.did
215
+ WHERE ca.did = ?
216
+ AND NOT EXISTS (SELECT 1 FROM cs_did_aliases a WHERE a.did = ca.did)
217
+ UNION ALL
218
+ SELECT u.* FROM cs_did_aliases a
219
+ JOIN cs_users u ON a.canonicalDid = u.did WHERE a.did = ?
220
+ LIMIT 1`;
221
+ /** Flatten ancestors when a canonical DID itself becomes an alias (one hop). */
222
+ export const FLATTEN_DID_ALIASES_SQL = "UPDATE cs_did_aliases SET canonicalDid = ? WHERE canonicalDid = ?";
223
+ /**
224
+ * Backfill `cs_users.primaryCredentialDid` from `sourceProvider`.
225
+ * Among matching connected-account rows, prefer `account.did === user.did`,
226
+ * else oldest `createdAt` (then `did` for a stable tie-break). Leave NULL
227
+ * when no row matches. Idempotent: already-set values are left alone.
228
+ */
229
+ export const BACKFILL_PRIMARY_CREDENTIAL_SQL = `UPDATE cs_users
230
+ SET primaryCredentialDid = picked.credDid
231
+ FROM (
232
+ SELECT ownerDid, credDid FROM (
233
+ SELECT
234
+ u.did AS ownerDid,
235
+ ca.did AS credDid,
236
+ ROW_NUMBER() OVER (
237
+ PARTITION BY u.did
238
+ ORDER BY
239
+ CASE WHEN ca.did = u.did THEN 0 ELSE 1 END,
240
+ ca.createdAt ASC,
241
+ ca.did ASC
242
+ ) AS rn
243
+ FROM cs_users u
244
+ JOIN cs_connected_accounts ca
245
+ ON ca.userDid = u.did AND ca.provider = u.sourceProvider
246
+ ) ranked
247
+ WHERE rn = 1
248
+ ) picked
249
+ WHERE cs_users.did = picked.ownerDid
250
+ AND cs_users.primaryCredentialDid IS NULL`;
251
+ /**
252
+ * Drop extra `(provider, id)` rows so UNIQUE(provider, id) can be created
253
+ * on a legacy database. Keep `did = userDid`, else the oldest `createdAt`
254
+ * (then `did`). `id IS NULL` rows are left alone — SQLite UNIQUE treats
255
+ * NULL as distinct.
256
+ */
257
+ export const DEDUPE_CONNECTED_ACCOUNTS_SQL = `DELETE FROM cs_connected_accounts
258
+ WHERE id IS NOT NULL
259
+ AND rowid IN (
260
+ SELECT rowid FROM (
261
+ SELECT
262
+ rowid,
263
+ ROW_NUMBER() OVER (
264
+ PARTITION BY provider, id
265
+ ORDER BY
266
+ CASE WHEN did = userDid THEN 0 ELSE 1 END,
267
+ COALESCE(createdAt, '') ASC,
268
+ did ASC
269
+ ) AS rn
270
+ FROM cs_connected_accounts
271
+ WHERE id IS NOT NULL
272
+ ) ranked
273
+ WHERE rn > 1
274
+ )`;
275
+ const SCHEMA_SETTINGS_INSTANCE = "_schema_";
276
+ const PRIMARY_CREDENTIAL_BACKFILL_KEY = "primary_credential_backfill_v1";
167
277
  // Upgrade map (cs_ table prefix): pre-cs_ unprefixed name → cs_ name.
168
278
  // Consumed by the runtime rename guard in migrate() (the non-assumeMigrated
169
279
  // path), mirroring migrations/0010_rename_tables.sql for deploy-time DBs.
@@ -300,7 +410,7 @@ export class D1Store {
300
410
  this.assumeMigrated = options?.assumeMigrated ?? false;
301
411
  }
302
412
  /** Run schema migration. Idempotent — only executes once per isolate.
303
- * Optimized: merges CREATE TABLE/INDEX into batches, ALTER TABLE in parallel. */
413
+ * Optimized: CREATE TABLE in a batch, ALTER TABLE in parallel, then indexes. */
304
414
  async migrate() {
305
415
  if (schemaMigrated)
306
416
  return;
@@ -327,11 +437,19 @@ export class D1Store {
327
437
  throw err;
328
438
  }
329
439
  }
330
- // Batch 1: core tables + indexes from SCHEMA_SQL
440
+ // Batch 1: CREATE TABLE only. Indexes are not in this transaction —
441
+ // a renamed pre-cs_ table is missing columns that SCHEMA_SQL indexes
442
+ // (pk, createdAt, …), and an atomic batch would roll back the CREATEs.
443
+ // run() still swallows "no such column" as {success:false}.
444
+ // UNIQUE(provider, id) is excluded here and applied after ALTER + DEDUPE
445
+ // so a legacy duplicate pair cannot fail the post-ALTER index pass (#168).
331
446
  const statements = SCHEMA_SQL.split(";")
332
447
  .map((s) => s.trim())
333
- .filter((s) => s.length > 0);
334
- await this.db.batch(statements.map((sql) => this.db.prepare(sql)));
448
+ .filter((s) => s.length > 0 && !s.includes("idx_connected_accounts_provider_id"));
449
+ const isIndexSql = (sql) => /^\s*CREATE\s+(UNIQUE\s+)?INDEX\b/i.test(sql);
450
+ const tableStatements = statements.filter((sql) => !isIndexSql(sql));
451
+ const indexStatements = statements.filter((sql) => isIndexSql(sql));
452
+ await this.db.batch(tableStatements.map((sql) => this.db.prepare(sql)));
335
453
  // ALTER TABLE — run in parallel (each is independent; failure = column already exists)
336
454
  await Promise.allSettled([
337
455
  this.db.prepare("ALTER TABLE cs_challenges ADD COLUMN invitationId TEXT").run(),
@@ -354,6 +472,12 @@ export class D1Store {
354
472
  // Phase 3: createdBy/updatedBy audit columns
355
473
  this.db.prepare("ALTER TABLE cs_users ADD COLUMN createdBy TEXT").run(),
356
474
  this.db.prepare("ALTER TABLE cs_users ADD COLUMN updatedBy TEXT").run(),
475
+ this.db
476
+ .prepare("ALTER TABLE cs_users ADD COLUMN primaryCredentialDid TEXT REFERENCES cs_connected_accounts(did) ON DELETE SET NULL")
477
+ .run(),
478
+ this.db.prepare("ALTER TABLE cs_users ADD COLUMN mergedInto TEXT").run(),
479
+ this.db.prepare("ALTER TABLE cs_users ADD COLUMN mergedAt TEXT").run(),
480
+ this.db.prepare("ALTER TABLE cs_users ADD COLUMN mergeSnapshot TEXT").run(),
357
481
  this.db.prepare("ALTER TABLE cs_connected_accounts ADD COLUMN createdBy TEXT").run(),
358
482
  this.db.prepare("ALTER TABLE cs_connected_accounts ADD COLUMN updatedBy TEXT").run(),
359
483
  this.db.prepare("ALTER TABLE cs_invitations ADD COLUMN createdBy TEXT").run(),
@@ -371,6 +495,14 @@ export class D1Store {
371
495
  this.db.prepare("ALTER TABLE cs_instance_hosts ADD COLUMN created_by TEXT").run(),
372
496
  this.db.prepare("ALTER TABLE cs_instance_hosts ADD COLUMN updated_by TEXT").run(),
373
497
  ]);
498
+ // After CREATE + ALTER so fresh DBs have the columns. Missing-column
499
+ // (legacy upgrade) is a 0-row swallow from run(), not a batch rollback.
500
+ await Promise.all(indexStatements.map((sql) => this.db.prepare(sql).run()));
501
+ // Dedupe leftover (provider, id) pairs, then apply UNIQUE (#168).
502
+ await this.db.prepare(DEDUPE_CONNECTED_ACCOUNTS_SQL).run();
503
+ await this.db
504
+ .prepare("CREATE UNIQUE INDEX IF NOT EXISTS idx_connected_accounts_provider_id ON cs_connected_accounts(provider, id)")
505
+ .run();
374
506
  // Batch 2: additional tables + indexes (all CREATE IF NOT EXISTS, safe in one batch)
375
507
  await this.db.batch([
376
508
  this.db.prepare(`
@@ -478,6 +610,13 @@ export class D1Store {
478
610
  // Seed built-in access policies + default rule (idempotent via INSERT OR IGNORE)
479
611
  await this.ensureBuiltinPolicies();
480
612
  await this.ensureDefaultRule();
613
+ // Existing DBs get the column via ALTER above; fresh SCHEMA_SQL already
614
+ // has it. Sentinel skips the full-table scan on later cold starts (#174).
615
+ const backfillDone = await this.getSetting(SCHEMA_SETTINGS_INSTANCE, PRIMARY_CREDENTIAL_BACKFILL_KEY);
616
+ if (!backfillDone) {
617
+ await this.db.prepare(BACKFILL_PRIMARY_CREDENTIAL_SQL).run();
618
+ await this.setSetting(SCHEMA_SETTINGS_INSTANCE, PRIMARY_CREDENTIAL_BACKFILL_KEY, "1", "system");
619
+ }
481
620
  schemaMigrated = true;
482
621
  }
483
622
  /** @internal Backwards-compatible alias for migrate(). */
@@ -552,6 +691,33 @@ export class D1Store {
552
691
  async getUserByEmail(email) {
553
692
  return this.db.prepare("SELECT * FROM cs_users WHERE email = ? LIMIT 1").bind(email).first();
554
693
  }
694
+ /**
695
+ * True iff another unmerged user shares `selfDid`'s verified email.
696
+ * Uses `lower(trim(email))` — do not call `getUserByEmail` (exact match,
697
+ * may return self). Users are global; no instanceDid filter. `SELECT 1 LIMIT 1`.
698
+ */
699
+ async hasVerifiedEmailMergeCandidate(selfDid) {
700
+ if (!selfDid)
701
+ return false;
702
+ const row = await this.db
703
+ .prepare(`SELECT 1 AS ok FROM cs_users
704
+ WHERE emailVerified = 1
705
+ AND mergedInto IS NULL
706
+ AND did <> ?
707
+ AND email IS NOT NULL
708
+ AND trim(email) <> ''
709
+ AND lower(trim(email)) = (
710
+ SELECT lower(trim(email)) FROM cs_users
711
+ WHERE did = ?
712
+ AND emailVerified = 1
713
+ AND email IS NOT NULL
714
+ AND trim(email) <> ''
715
+ )
716
+ LIMIT 1`)
717
+ .bind(selfDid, selfDid)
718
+ .first();
719
+ return Boolean(row);
720
+ }
555
721
  async updateLastLogin(did, ip, domain) {
556
722
  const now = new Date().toISOString();
557
723
  await this.db
@@ -681,9 +847,23 @@ export class D1Store {
681
847
  .run();
682
848
  }
683
849
  async removeUser(did) {
684
- // Delete connected accounts first, then user
850
+ // Revoke first so a crash mid-delete cannot leave a live refresh family
851
+ // pointing at a deleted user. Audit logs are intentionally kept.
852
+ // Then connected accounts + aliases (aliases.canonicalDid FK → cs_users).
853
+ await this.revokeRefreshTokensForUser(did);
854
+ for (const key of [..._membershipCache.keys()]) {
855
+ if (key.startsWith(`${did}\0`))
856
+ _membershipCache.delete(key);
857
+ }
685
858
  await this.db.batch([
859
+ this.db.prepare("UPDATE cs_users SET primaryCredentialDid = NULL WHERE did = ?").bind(did),
860
+ this.db.prepare("DELETE FROM cs_memberships WHERE user_did = ?").bind(did),
861
+ this.db.prepare("DELETE FROM cs_refresh_tokens WHERE userDid = ?").bind(did),
862
+ this.db.prepare("DELETE FROM cs_access_keys WHERE createdBy = ?").bind(did),
686
863
  this.db.prepare("DELETE FROM cs_connected_accounts WHERE userDid = ?").bind(did),
864
+ this.db
865
+ .prepare("DELETE FROM cs_did_aliases WHERE did = ? OR canonicalDid = ?")
866
+ .bind(did, did),
687
867
  this.db.prepare("DELETE FROM cs_users WHERE did = ?").bind(did),
688
868
  ]);
689
869
  }
@@ -888,6 +1068,7 @@ export class D1Store {
888
1068
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
889
1069
  .bind(params.did, params.pk, params.userDid, params.provider, params.id, params.extra, params.userInfo, now, now, params.ip ?? null, now, now, actor, actor)
890
1070
  .run();
1071
+ await this.maybeFillPrimaryCredentialDid(params.userDid, params.did);
891
1072
  }
892
1073
  async upsertConnectedAccount(account) {
893
1074
  // Self-serve account link: default actor = the user's own DID (plan §二).
@@ -904,6 +1085,7 @@ export class D1Store {
904
1085
  userInfo = COALESCE(excluded.userInfo, cs_connected_accounts.userInfo)`)
905
1086
  .bind(account.did, account.pk, account.userDid, account.provider, account.id, account.userInfo || null, now, now, now, now, actor, actor)
906
1087
  .run();
1088
+ await this.maybeFillPrimaryCredentialDid(account.userDid, account.did);
907
1089
  }
908
1090
  /**
909
1091
  * Relabel an existing connected account to a different provider.
@@ -946,12 +1128,11 @@ export class D1Store {
946
1128
  .run();
947
1129
  }
948
1130
  /**
949
- * Update a user's `sourceProvider` (the provider they registered with).
1131
+ * Update a user's `sourceProvider` (display-only registration label).
950
1132
  *
951
- * Must stay in step with `relabelConnectedAccountProvider`: `handleUnbind`
952
- * reads `sourceProvider` to refuse removing the registration account, so a
953
- * relabel that left this field pointing at a provider the user no longer has
954
- * a row for would silently disarm that guard.
1133
+ * Security guards read `primaryCredentialDid`, not this field. Relabel is
1134
+ * kept so profile `isMain` / audit display stay in step with the bound
1135
+ * provider; it must not arm or disarm unbind / last-passkey checks.
955
1136
  */
956
1137
  async updateUserSourceProvider(did, sourceProvider, actor) {
957
1138
  const now = new Date().toISOString();
@@ -960,10 +1141,12 @@ export class D1Store {
960
1141
  .bind(sourceProvider, now, actor, did)
961
1142
  .run();
962
1143
  }
963
- async getConnectedAccountById(credentialId) {
1144
+ async getConnectedAccountById(id, provider) {
1145
+ if (!id || !provider)
1146
+ return null;
964
1147
  return this.db
965
- .prepare("SELECT * FROM cs_connected_accounts WHERE id = ?")
966
- .bind(credentialId)
1148
+ .prepare("SELECT * FROM cs_connected_accounts WHERE id = ? AND provider = ?")
1149
+ .bind(id, provider)
967
1150
  .first();
968
1151
  }
969
1152
  async getConnectedAccountByDid(did) {
@@ -1000,15 +1183,84 @@ export class D1Store {
1000
1183
  return rows.results ?? [];
1001
1184
  }
1002
1185
  async getUserByDidOrConnectedAccount(did) {
1003
- // Single query: direct DID match OR indirect via connected_accounts.
1004
- // UNION ALL + LIMIT 1 ensures direct match is preferred.
1005
- return this.db
1006
- .prepare(`SELECT u.* FROM cs_users u WHERE u.did = ?
1007
- UNION ALL
1008
- SELECT u.* FROM cs_connected_accounts ca JOIN cs_users u ON ca.userDid = u.did WHERE ca.did = ?
1009
- LIMIT 1`)
1010
- .bind(did, did)
1186
+ const user = await this.db
1187
+ .prepare(GET_USER_BY_DID_OR_CONNECTED_ACCOUNT_SQL)
1188
+ .bind(did, did, did)
1189
+ .first();
1190
+ if (user?.mergedInto) {
1191
+ const canonical = await this.getUserByDid(user.mergedInto);
1192
+ if (canonical)
1193
+ return canonical;
1194
+ }
1195
+ return user;
1196
+ }
1197
+ /**
1198
+ * Insert or update a one-hop DID alias. When `canonicalDid` is itself an
1199
+ * alias, the write lands on that row's canonical. When `did` becomes an
1200
+ * alias, every row pointing at it is rewritten in the same `db.batch`.
1201
+ */
1202
+ async upsertDidAlias(input) {
1203
+ const source = typeof input.did === "string" ? input.did.trim() : "";
1204
+ const target = typeof input.canonicalDid === "string" ? input.canonicalDid.trim() : "";
1205
+ if (!source || !target) {
1206
+ throw new Error("DID alias requires non-empty did and canonicalDid");
1207
+ }
1208
+ if (!DID_ALIAS_REASON_SET.has(input.reason)) {
1209
+ throw new Error(`Invalid DID alias reason: ${String(input.reason)}`);
1210
+ }
1211
+ if (source === target) {
1212
+ throw new Error("Cannot alias a DID to itself");
1213
+ }
1214
+ const targetUser = await this.getUserByDid(target);
1215
+ if (!targetUser) {
1216
+ throw new Error("Cannot alias to a non-existent user");
1217
+ }
1218
+ const targetAlias = await this.db
1219
+ .prepare("SELECT canonicalDid FROM cs_did_aliases WHERE did = ?")
1220
+ .bind(target)
1011
1221
  .first();
1222
+ const finalCanonical = targetAlias?.canonicalDid ?? target;
1223
+ if (source === finalCanonical) {
1224
+ throw new Error("Cannot alias a DID to itself");
1225
+ }
1226
+ if (finalCanonical !== target) {
1227
+ const finalUser = await this.getUserByDid(finalCanonical);
1228
+ if (!finalUser) {
1229
+ throw new Error("Cannot alias to a non-existent user");
1230
+ }
1231
+ }
1232
+ const now = new Date().toISOString();
1233
+ const evidence = input.evidence ?? null;
1234
+ await this.db.batch([
1235
+ this.db
1236
+ .prepare(`INSERT INTO cs_did_aliases (did, canonicalDid, reason, evidence, createdAt)
1237
+ VALUES (?, ?, ?, ?, ?)
1238
+ ON CONFLICT(did) DO UPDATE SET
1239
+ canonicalDid = excluded.canonicalDid,
1240
+ reason = excluded.reason,
1241
+ evidence = excluded.evidence`)
1242
+ .bind(source, finalCanonical, input.reason, evidence, now),
1243
+ this.db.prepare(FLATTEN_DID_ALIASES_SQL).bind(finalCanonical, source),
1244
+ ]);
1245
+ }
1246
+ async upsertDidAliases(inputs) {
1247
+ if (inputs.length === 0)
1248
+ return;
1249
+ const seen = new Set();
1250
+ for (const input of inputs) {
1251
+ const source = typeof input.did === "string" ? input.did.trim() : "";
1252
+ if (!source || seen.has(source))
1253
+ continue;
1254
+ seen.add(source);
1255
+ const existing = await this.db
1256
+ .prepare("SELECT canonicalDid FROM cs_did_aliases WHERE did = ?")
1257
+ .bind(source)
1258
+ .first();
1259
+ const target = typeof input.canonicalDid === "string" ? input.canonicalDid.trim() : "";
1260
+ if (existing?.canonicalDid === target)
1261
+ continue;
1262
+ await this.upsertDidAlias(input);
1263
+ }
1012
1264
  }
1013
1265
  async decrementPasskeyCount(did) {
1014
1266
  await this.db
@@ -1022,7 +1274,70 @@ export class D1Store {
1022
1274
  .bind(JSON.stringify({ name }), new Date().toISOString(), actor, did)
1023
1275
  .run();
1024
1276
  }
1277
+ /**
1278
+ * Point `primaryCredentialDid` at a credential the user owns, or NULL.
1279
+ * Rejects a pointer at another user's row so writers cannot cross tenants.
1280
+ */
1281
+ async setPrimaryCredentialDid(userDid, credentialDid, actor) {
1282
+ if (credentialDid) {
1283
+ const account = await this.getConnectedAccountByDid(credentialDid);
1284
+ if (!account || account.userDid !== userDid) {
1285
+ throw new Error("primaryCredentialDid must reference the same user's connected account");
1286
+ }
1287
+ }
1288
+ const now = new Date().toISOString();
1289
+ await this.db
1290
+ .prepare("UPDATE cs_users SET primaryCredentialDid = ?, updatedAt = ?, updatedBy = ? WHERE did = ?")
1291
+ .bind(credentialDid, now, actor ?? userDid, userDid)
1292
+ .run();
1293
+ }
1294
+ /** Fill primary only when it is still NULL. Used after first credential insert. */
1295
+ async maybeFillPrimaryCredentialDid(userDid, credentialDid) {
1296
+ await this.db
1297
+ .prepare(`UPDATE cs_users SET primaryCredentialDid = ?, updatedAt = ?
1298
+ WHERE did = ? AND primaryCredentialDid IS NULL
1299
+ AND EXISTS (
1300
+ SELECT 1 FROM cs_connected_accounts
1301
+ WHERE did = ? AND userDid = cs_users.did
1302
+ )`)
1303
+ .bind(credentialDid, new Date().toISOString(), userDid, credentialDid)
1304
+ .run();
1305
+ }
1306
+ /**
1307
+ * Next primary among remaining credentials of the same user.
1308
+ * Prefer `account.did === user.did`, else oldest `createdAt` (then `did`).
1309
+ */
1310
+ async pickReplacementPrimaryDid(userDid, excludeDid) {
1311
+ const rows = await this.db
1312
+ .prepare("SELECT did, createdAt FROM cs_connected_accounts WHERE userDid = ?")
1313
+ .bind(userDid)
1314
+ .all();
1315
+ const remaining = (rows.results ?? []).filter((row) => row.did !== excludeDid);
1316
+ if (remaining.length === 0)
1317
+ return null;
1318
+ const matchUserDid = remaining.find((row) => row.did === userDid);
1319
+ if (matchUserDid)
1320
+ return matchUserDid.did;
1321
+ remaining.sort((a, b) => {
1322
+ const createdAtCmp = (a.createdAt ?? "").localeCompare(b.createdAt ?? "");
1323
+ if (createdAtCmp !== 0)
1324
+ return createdAtCmp;
1325
+ return a.did.localeCompare(b.did);
1326
+ });
1327
+ return remaining[0].did;
1328
+ }
1025
1329
  async deleteConnectedAccount(did) {
1330
+ const account = await this.getConnectedAccountByDid(did);
1331
+ if (account) {
1332
+ const user = await this.getUserByDid(account.userDid);
1333
+ if (user?.primaryCredentialDid === did) {
1334
+ const nextDid = await this.pickReplacementPrimaryDid(account.userDid, did);
1335
+ await this.db
1336
+ .prepare("UPDATE cs_users SET primaryCredentialDid = ?, updatedAt = ? WHERE did = ?")
1337
+ .bind(nextDid, new Date().toISOString(), account.userDid)
1338
+ .run();
1339
+ }
1340
+ }
1026
1341
  await this.db.prepare("DELETE FROM cs_connected_accounts WHERE did = ?").bind(did).run();
1027
1342
  }
1028
1343
  // ─── Access keys ────────────────────────────────────────────────────────
@@ -2129,6 +2444,17 @@ export class D1Store {
2129
2444
  .bind(familyId)
2130
2445
  .run();
2131
2446
  }
2447
+ /**
2448
+ * Revoke every refresh family for a user (unbind / delete stop-loss).
2449
+ * `cs_refresh_tokens` has no credential column — this is user-scoped, not
2450
+ * per-provider. Uses `idx_refresh_tokens_userDid`. Does not touch access JWTs.
2451
+ */
2452
+ async revokeRefreshTokensForUser(userDid) {
2453
+ await this.db
2454
+ .prepare("UPDATE cs_refresh_tokens SET revokedAt = datetime('now') WHERE userDid = ? AND revokedAt IS NULL")
2455
+ .bind(userDid)
2456
+ .run();
2457
+ }
2132
2458
  /**
2133
2459
  * Look up a refresh token by plaintext. Used by the OAuth refresh grant.
2134
2460
  * Session-JWT rows have accessKeyId = NULL — callers must reject those.
@@ -2165,5 +2491,77 @@ export class D1Store {
2165
2491
  .bind(input.oldRefreshHash),
2166
2492
  ]);
2167
2493
  }
2494
+ // ─── Account merge (#149) ──────────────────────────────────────────────
2495
+ async createMergeStart(intoDid) {
2496
+ const started = await createMergeStartChallenge();
2497
+ await this.cachePut(mergeStartCacheKey(started.tokenHash), JSON.stringify({ intoDid, expiresAt: started.expiresAt }), MERGE_START_TTL_SECONDS);
2498
+ return { challenge: started.challenge, expiresAt: started.expiresAt };
2499
+ }
2500
+ async getMergeStart(challenge) {
2501
+ if (!challenge)
2502
+ return null;
2503
+ const tokenHash = await hashMergeToken(challenge);
2504
+ const raw = await this.cacheGet(mergeStartCacheKey(tokenHash));
2505
+ if (!raw)
2506
+ return null;
2507
+ try {
2508
+ const parsed = JSON.parse(raw);
2509
+ if (typeof parsed.intoDid !== "string" || !parsed.intoDid)
2510
+ return null;
2511
+ return { intoDid: parsed.intoDid };
2512
+ }
2513
+ catch {
2514
+ return null;
2515
+ }
2516
+ }
2517
+ async deleteMergeStart(challenge) {
2518
+ if (!challenge)
2519
+ return;
2520
+ const tokenHash = await hashMergeToken(challenge);
2521
+ await this.cacheDelete(mergeStartCacheKey(tokenHash));
2522
+ }
2523
+ async createMergeIntent(fromDid, intoDid) {
2524
+ const issued = await createMergeIntentToken();
2525
+ await insertMergeIntent(this.db, {
2526
+ tokenHash: issued.tokenHash,
2527
+ fromDid,
2528
+ intoDid,
2529
+ expiresAt: issued.expiresAt,
2530
+ });
2531
+ return { token: issued.token, expiresAt: issued.expiresAt };
2532
+ }
2533
+ async getMergeIntent(tokenHash) {
2534
+ return getMergeIntentByHash(this.db, tokenHash);
2535
+ }
2536
+ async planAccountMerge(fromDid, intoDid) {
2537
+ return buildMergeSnapshot(this.db, fromDid, intoDid);
2538
+ }
2539
+ async commitAccountMerge(tokenHash, actorDid) {
2540
+ const intent = await getMergeIntentByHash(this.db, tokenHash);
2541
+ if (!intent)
2542
+ return { ok: false, error: "Invalid or expired merge intent", status: 400 };
2543
+ if (intent.intoDid !== actorDid) {
2544
+ return { ok: false, error: "Merge intent does not belong to this session", status: 403 };
2545
+ }
2546
+ const fromUser = await this.getUserByDid(intent.fromDid);
2547
+ const intoUser = await this.getUserByDid(intent.intoDid);
2548
+ if (!fromUser || !intoUser) {
2549
+ return { ok: false, error: "Account not found", status: 400 };
2550
+ }
2551
+ if (fromUser.mergedInto || intoUser.mergedInto) {
2552
+ return { ok: false, error: "Account has already been merged", status: 403 };
2553
+ }
2554
+ const snapshot = await buildMergeSnapshot(this.db, intent.fromDid, intent.intoDid);
2555
+ if (countMergeStatements(snapshot) > MERGE_BATCH_MAX_STATEMENTS) {
2556
+ return { ok: false, error: MERGE_TOO_LARGE_ERROR, status: 409 };
2557
+ }
2558
+ const now = new Date().toISOString();
2559
+ const consumed = await consumeMergeIntent(this.db, tokenHash, now);
2560
+ if (!consumed)
2561
+ return { ok: false, error: "Merge intent already used", status: 403 };
2562
+ await commitMergeBatch(this.db, snapshot, now);
2563
+ _membershipCache.clear();
2564
+ return { ok: true, snapshot };
2565
+ }
2168
2566
  }
2169
2567
  //# sourceMappingURL=d1-store.js.map