@proteinjs/user-server 1.22.1 → 1.22.3

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 (152) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/generated/index.js +1 -1
  3. package/dist/generated/index.js.map +1 -1
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +9 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/authentication/PasswordHasher.d.ts +9 -0
  9. package/dist/src/authentication/PasswordHasher.d.ts.map +1 -1
  10. package/dist/src/authentication/PasswordHasher.js +25 -0
  11. package/dist/src/authentication/PasswordHasher.js.map +1 -1
  12. package/dist/src/authentication/SocketIOSessionWatcher.d.ts +5 -0
  13. package/dist/src/authentication/SocketIOSessionWatcher.d.ts.map +1 -1
  14. package/dist/src/authentication/SocketIOSessionWatcher.js +13 -2
  15. package/dist/src/authentication/SocketIOSessionWatcher.js.map +1 -1
  16. package/dist/src/authentication/UserStatusTableWatcher.d.ts.map +1 -1
  17. package/dist/src/authentication/UserStatusTableWatcher.js +2 -1
  18. package/dist/src/authentication/UserStatusTableWatcher.js.map +1 -1
  19. package/dist/src/authentication/authenticate.d.ts +15 -0
  20. package/dist/src/authentication/authenticate.d.ts.map +1 -1
  21. package/dist/src/authentication/authenticate.js +55 -20
  22. package/dist/src/authentication/authenticate.js.map +1 -1
  23. package/dist/src/authorization/userCache.d.ts.map +1 -1
  24. package/dist/src/authorization/userCache.js +3 -2
  25. package/dist/src/authorization/userCache.js.map +1 -1
  26. package/dist/src/routes/devLogin.d.ts.map +1 -1
  27. package/dist/src/routes/devLogin.js +29 -14
  28. package/dist/src/routes/devLogin.js.map +1 -1
  29. package/dist/src/routes/executePasswordReset.d.ts +4 -0
  30. package/dist/src/routes/executePasswordReset.d.ts.map +1 -1
  31. package/dist/src/routes/executePasswordReset.js +12 -4
  32. package/dist/src/routes/executePasswordReset.js.map +1 -1
  33. package/dist/src/routes/initiatePasswordReset.d.ts +7 -0
  34. package/dist/src/routes/initiatePasswordReset.d.ts.map +1 -1
  35. package/dist/src/routes/initiatePasswordReset.js +28 -10
  36. package/dist/src/routes/initiatePasswordReset.js.map +1 -1
  37. package/dist/src/routes/login.d.ts +8 -0
  38. package/dist/src/routes/login.d.ts.map +1 -1
  39. package/dist/src/routes/login.js +63 -22
  40. package/dist/src/routes/login.js.map +1 -1
  41. package/dist/src/routes/signup.d.ts.map +1 -1
  42. package/dist/src/routes/signup.js +5 -2
  43. package/dist/src/routes/signup.js.map +1 -1
  44. package/dist/src/routes/validateResetPasswordToken.d.ts.map +1 -1
  45. package/dist/src/routes/validateResetPasswordToken.js +5 -1
  46. package/dist/src/routes/validateResetPasswordToken.js.map +1 -1
  47. package/dist/src/services/MachineCredentials.d.ts +10 -1
  48. package/dist/src/services/MachineCredentials.d.ts.map +1 -1
  49. package/dist/src/services/MachineCredentials.js +46 -15
  50. package/dist/src/services/MachineCredentials.js.map +1 -1
  51. package/dist/src/services/Roles.d.ts.map +1 -1
  52. package/dist/src/services/Roles.js +6 -2
  53. package/dist/src/services/Roles.js.map +1 -1
  54. package/dist/src/services/Signup.d.ts +5 -0
  55. package/dist/src/services/Signup.d.ts.map +1 -1
  56. package/dist/src/services/Signup.js +28 -6
  57. package/dist/src/services/Signup.js.map +1 -1
  58. package/dist/src/throttle/ClientAddress.d.ts +35 -0
  59. package/dist/src/throttle/ClientAddress.d.ts.map +1 -0
  60. package/dist/src/throttle/ClientAddress.js +48 -0
  61. package/dist/src/throttle/ClientAddress.js.map +1 -0
  62. package/dist/src/throttle/PasswordResetThrottle.d.ts +39 -0
  63. package/dist/src/throttle/PasswordResetThrottle.d.ts.map +1 -0
  64. package/dist/src/throttle/PasswordResetThrottle.js +59 -0
  65. package/dist/src/throttle/PasswordResetThrottle.js.map +1 -0
  66. package/dist/src/throttle/RequestDigests.d.ts +42 -0
  67. package/dist/src/throttle/RequestDigests.d.ts.map +1 -0
  68. package/dist/src/throttle/RequestDigests.js +96 -0
  69. package/dist/src/throttle/RequestDigests.js.map +1 -0
  70. package/dist/src/throttle/SignInThrottle.d.ts +67 -0
  71. package/dist/src/throttle/SignInThrottle.d.ts.map +1 -0
  72. package/dist/src/throttle/SignInThrottle.js +91 -0
  73. package/dist/src/throttle/SignInThrottle.js.map +1 -0
  74. package/dist/src/throttle/SlidingWindow.d.ts +51 -0
  75. package/dist/src/throttle/SlidingWindow.d.ts.map +1 -0
  76. package/dist/src/throttle/SlidingWindow.js +85 -0
  77. package/dist/src/throttle/SlidingWindow.js.map +1 -0
  78. package/dist/test/ClientAddress.test.d.ts +2 -0
  79. package/dist/test/ClientAddress.test.d.ts.map +1 -0
  80. package/dist/test/ClientAddress.test.js +51 -0
  81. package/dist/test/ClientAddress.test.js.map +1 -0
  82. package/dist/test/DevLogin.test.js +68 -0
  83. package/dist/test/DevLogin.test.js.map +1 -1
  84. package/dist/test/InitiatePasswordReset.test.js +373 -5
  85. package/dist/test/InitiatePasswordReset.test.js.map +1 -1
  86. package/dist/test/LogCapture.d.ts +10 -0
  87. package/dist/test/LogCapture.d.ts.map +1 -1
  88. package/dist/test/LogCapture.js +19 -0
  89. package/dist/test/LogCapture.js.map +1 -1
  90. package/dist/test/LogCapture.test.d.ts +2 -0
  91. package/dist/test/LogCapture.test.d.ts.map +1 -0
  92. package/dist/test/LogCapture.test.js +86 -0
  93. package/dist/test/LogCapture.test.js.map +1 -0
  94. package/dist/test/LoginThrottle.integration.test.d.ts +2 -0
  95. package/dist/test/LoginThrottle.integration.test.d.ts.map +1 -0
  96. package/dist/test/LoginThrottle.integration.test.js +616 -0
  97. package/dist/test/LoginThrottle.integration.test.js.map +1 -0
  98. package/dist/test/MachineAccounts.integration.test.js +156 -28
  99. package/dist/test/MachineAccounts.integration.test.js.map +1 -1
  100. package/dist/test/NoAddressesInLogs.integration.test.d.ts +2 -0
  101. package/dist/test/NoAddressesInLogs.integration.test.d.ts.map +1 -0
  102. package/dist/test/NoAddressesInLogs.integration.test.js +717 -0
  103. package/dist/test/NoAddressesInLogs.integration.test.js.map +1 -0
  104. package/dist/test/RequestDigests.test.d.ts +2 -0
  105. package/dist/test/RequestDigests.test.d.ts.map +1 -0
  106. package/dist/test/RequestDigests.test.js +73 -0
  107. package/dist/test/RequestDigests.test.js.map +1 -0
  108. package/dist/test/SignupRoute.test.js +80 -1
  109. package/dist/test/SignupRoute.test.js.map +1 -1
  110. package/dist/test/SlidingWindow.test.d.ts +2 -0
  111. package/dist/test/SlidingWindow.test.d.ts.map +1 -0
  112. package/dist/test/SlidingWindow.test.js +72 -0
  113. package/dist/test/SlidingWindow.test.js.map +1 -0
  114. package/dist/test/SocketIOSessionWatcher.test.d.ts +2 -0
  115. package/dist/test/SocketIOSessionWatcher.test.d.ts.map +1 -0
  116. package/dist/test/SocketIOSessionWatcher.test.js +144 -0
  117. package/dist/test/SocketIOSessionWatcher.test.js.map +1 -0
  118. package/generated/index.ts +1 -1
  119. package/index.ts +5 -0
  120. package/package.json +6 -5
  121. package/src/authentication/PasswordHasher.ts +18 -1
  122. package/src/authentication/SocketIOSessionWatcher.ts +13 -1
  123. package/src/authentication/UserStatusTableWatcher.ts +2 -1
  124. package/src/authentication/authenticate.ts +36 -9
  125. package/src/authorization/userCache.ts +3 -2
  126. package/src/routes/devLogin.ts +22 -10
  127. package/src/routes/executePasswordReset.ts +11 -3
  128. package/src/routes/initiatePasswordReset.ts +29 -11
  129. package/src/routes/login.ts +39 -8
  130. package/src/routes/signup.ts +5 -2
  131. package/src/routes/validateResetPasswordToken.ts +5 -1
  132. package/src/services/MachineCredentials.ts +44 -9
  133. package/src/services/Roles.ts +6 -2
  134. package/src/services/Signup.ts +30 -4
  135. package/src/throttle/ClientAddress.ts +47 -0
  136. package/src/throttle/PasswordResetThrottle.ts +62 -0
  137. package/src/throttle/RequestDigests.ts +97 -0
  138. package/src/throttle/SignInThrottle.ts +98 -0
  139. package/src/throttle/SlidingWindow.ts +90 -0
  140. package/test/ClientAddress.test.ts +54 -0
  141. package/test/DevLogin.test.ts +35 -1
  142. package/test/InitiatePasswordReset.test.ts +212 -6
  143. package/test/LogCapture.test.ts +29 -0
  144. package/test/LogCapture.ts +16 -0
  145. package/test/LoginThrottle.integration.test.ts +339 -0
  146. package/test/MachineAccounts.integration.test.ts +97 -22
  147. package/test/NoAddressesInLogs.integration.test.ts +409 -0
  148. package/test/RequestDigests.test.ts +81 -0
  149. package/test/SignupRoute.test.ts +54 -1
  150. package/test/SlidingWindow.test.ts +85 -0
  151. package/test/SocketIOSessionWatcher.test.ts +86 -0
  152. package/test/setup.js +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoAddressesInLogs.integration.test.js","sourceRoot":"","sources":["../../test/NoAddressesInLogs.integration.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA4B;AAC5B,4DAAsC;AACtC,oCAAsE;AACtE,wDAAgE;AAChE,oDAAyD;AACzD,wCAAqF;AACrF,kDAAsD;AACtD,mEAAkE;AAClE,uEAAsE;AACtE,+EAA8E;AAC9E,uFAAsF;AACtF,4DAA2D;AAC3D,2EAA0E;AAC1E,6EAA4E;AAC5E,uFAAsF;AACtF,+CAA8C;AAC9C,yEAAwE;AACxE,iDAAgD;AAChD,qDAAmD;AACnD,mEAAiE;AACjE,2CAA0C;AAC1C,yEAAwE;AAExE,IAAM,OAAO,GAAG,IAAI,qDAAyB,EAAE,CAAC;AA0BhD,IAAM,MAAM,GAAG,UACb,KAAwE,EACxE,OAAgC;;;;;gBAE1B,OAAO,GAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;gBACxC,QAAQ,GAAG;oBACf,MAAM,YAAC,IAAY;wBACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;wBACtB,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,IAAI,YAAC,IAAc;wBACjB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;oBACtB,CAAC;iBACF,CAAC;gBACF,qBAAM,KAAK,CAAC,SAAS,CAAC,OAAgB,EAAE,QAAiB,CAAC,EAAA;;gBAA1D,SAA0D,CAAC;gBAC3D,sBAAO,OAAO,EAAC;;;KAChB,CAAC;AAOF,IAAM,WAAW,GAAG,cAAM,OAAC,6BAAgB,CAAC,GAAG,EAA2C,CAAC,WAAW,EAA5E,CAA4E,CAAC;AACvG,IAAM,gBAAgB,GAAG,cAAM,OAAC,6BAAgB,CAAC,GAAG,EAA2C,CAAC,gBAAgB,EAAjF,CAAiF,CAAC;AAEjH,iHAAiH;AACjH,IAAM,oBAAoB,GAAG;IAC3B,IAAM,MAAM,GAAI,IAAA,kBAAa,GAAgD,CAAC,kBAAkB,CAAC;IAChG,MAAM,CAAC,WAA6C,CAAC,eAAe,GAAG,SAAS,CAAC;AACpF,CAAC,CAAC;AAEF;IAAA;QACE,SAAI,GAAG,KAAK,CAAC;QACb,gBAAW,GAAG,uBAAuB,CAAC;IACxC,CAAC;IAAD,cAAC;AAAD,CAAC,AAHD,IAGC;AAED;IAAiC,sCAAc;IAA/C;QAAA,qEAMC;QALC,QAAE,GAAG,kBAAkB,CAAC;QACxB,WAAK,GAAG,yBAAyB,CAAC;QAClC,iBAAW,GAAG,kBAAkB,CAAC;QACjC,WAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,gBAAU,GAAG,iBAAiB,CAAC;;IACjC,CAAC;IAAD,yBAAC;AAAD,CAAC,AAND,CAAiC,qBAAc,GAM9C;AAED,IAAM,OAAO,GAAG,CAAC,aAAa,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,qBAAqB,CAAU,CAAC;AAErH,QAAQ,CAAC,0CAA0C,EAAE;IACnD,IAAM,OAAO,GAAG,IAAI,0BAAc,EAAE,CAAC;IACrC,IAAM,WAAW,GAAuC,EAAE,CAAC;IAE3D,SAAS,CAAC;;;;wBACR,qBAAM,OAAO,CAAC,SAAS,EAAE,EAAA;;oBAAzB,SAAyB,CAAC;oBAC1B,WAAiD,EAA/B,oBAAC,iBAAiB,GAAK,OAAO,OAAC,EAA/B,cAA+B,EAA/B,IAA+B,EAAE;wBAAxC,GAAG;wBACZ,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBACrC;oBACD,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;oBAC/B,KAAK,GAAG,WAAW,EAAE,CAAC;oBAC5B,KAAK,CAAC,mDAAmD,CAAC,GAAG;wBAC3D;4BACE,cAAc,EAAE,cAAM,OAAA,CAAC;gCACrB,IAAI,EAAE,iBAAiB;gCACvB,IAAI,EAAE,GAAG;gCACT,MAAM,EAAE,IAAI;gCACZ,IAAI,EAAE,4BAA4B;6BACnC,CAAC,EALoB,CAKpB;yBACH;qBACF,CAAC;oBACF,KAAK,CAAC,gEAAgE,CAAC,GAAG;wBACxE,EAAE,SAAS,EAAE,cAAM,OAAA,CAAC,EAAE,eAAe,EAAE,UAAC,IAAY,IAAK,OAAA,CAAC,EAAE,IAAI,EAAE,wCAAiC,IAAI,CAAE,EAAE,CAAC,EAAnD,CAAmD,EAAE,CAAC,EAA5F,CAA4F,EAAE;qBAClH,CAAC;oBACF,KAAK,CAAC,yDAAyD,CAAC,GAAG;wBACjE;4BACE,SAAS,EAAE,cAAM,OAAA,CAAC;gCAChB,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;gCACnC,eAAe,EAAE,UAAC,IAAY,IAAK,OAAA,CAAC,EAAE,IAAI,EAAE,mBAAY,IAAI,CAAE,EAAE,IAAI,EAAE,qBAAa,IAAI,kBAAc,EAAE,CAAC,EAArE,CAAqE;6BACzG,CAAC,EAHe,CAGf;yBACH;qBACF,CAAC;oBACF,KAAK,CAAC,qEAAqE,CAAC,GAAG;wBAC7E,EAAE,SAAS,EAAE,cAAM,OAAA,CAAC,EAAE,sBAAsB,EAAE,cAAM,OAAA,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAA7C,CAA6C,EAAE,CAAC,EAAjF,CAAiF,EAAE;qBACvG,CAAC;oBACF,gGAAgG;oBAChG,KAAK,CAAC,mDAAmD,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,cAAM,OAAA,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAzB,CAAyB,EAAE,CAAC,CAAC;oBAC9G,KAAK,CAAC,4CAA4C,CAAC,GAAG,CAAC,IAAI,eAAQ,EAAE,CAAC,CAAC;oBACvE,KAAK,CAAC,kCAAkC,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;oBAC5D,KAAK,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,+CAAsB,EAAE,CAAC,CAAC;oBACrE,oBAAoB,EAAE,CAAC;;;;SACxB,EAAE,MAAM,CAAC,CAAC;IAEX,QAAQ,CAAC;;;;;oBACD,KAAK,GAAG,WAAW,EAAE,CAAC;oBAC5B,WAUC,EAViB;wBAChB,mDAAmD;wBACnD,gEAAgE;wBAChE,yDAAyD;wBACzD,qEAAqE;wBACrE,mDAAmD;wBACnD,4CAA4C;wBAC5C,kCAAkC;wBAClC,4BAA4B;wBAC5B,kCAAkC;qBACnC,EAViB,cAUjB,EAViB,IAUjB,EAAE;wBAVQ,GAAG;wBAWZ,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;qBACnB;oBACD,OAAO,gBAAgB,EAAE,CAAC,kCAAkC,CAAC,CAAC;oBAC9D,oBAAoB,EAAE,CAAC;oBACvB,WAAsD,EAA3B,KAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAA3B,cAA2B,EAA3B,IAA2B,EAAE;wBAA7C,WAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;wBACpB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;yBACzB;6BAAM;4BACL,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;yBAC1B;qBACF;oBACD,qBAAM,OAAO,CAAC,QAAQ,EAAE,EAAA;;oBAAxB,SAAwB,CAAC;;;;SAC1B,CAAC,CAAC;IAEH,UAAU,CAAC;QACT,uBAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gGAAgG,EAAE;;;;wBACnG,qBAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,EAAA;;oBAApF,SAAoF,CAAC;oBACrF,qBAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,EAAA;;oBAAlF,SAAkF,CAAC;oBAEvE,qBAAM,uBAAU,CAAC,MAAM,CAAC;;;;4CAClC,qBAAM,MAAM,CAAC,6CAAqB,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,CAAC,EAAA;;wCAAnF,SAAmF,CAAC;wCACpF,qBAAM,MAAM,CAAC,6CAAqB,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,CAAC,EAAA;;wCAAnF,SAAmF,CAAC;wCACpF,qBAAM,MAAM,CAAC,6CAAqB,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,CAAC,EAAA;;wCAAnF,SAAmF,CAAC;wCAC9E,OAAO,GAAG,IAAI;6CACjB,KAAK,CAAC,0BAAW,CAAC,SAAS,EAAE,WAAW,CAAC;6CACzC,qBAAqB,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;;;;wCAE1D,qBAAM,MAAM,CAAC,6CAAqB,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,CAAC,EAAA;;wCAAlF,SAAkF,CAAC;;;wCAEnF,OAAO,CAAC,WAAW,EAAE,CAAC;;;;;6BAEzB,CAAC,EAAA;;oBAZI,GAAG,GAAG,SAYV;oBAEF,MAAM,CAAC,uBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC9C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAClC,WAAsG,EAAhF,MAAC,yBAAyB,EAAE,yBAAyB,EAAE,wBAAwB,CAAC,EAAhF,cAAgF,EAAhF,IAAgF,EAAE;wBAA7F,OAAO;wBAChB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;qBACtD;;;;SACF,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE;;;;wBACrE,qBAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,EAAA;;oBAAjG,QAAQ,GAAG,SAAsF;oBACzF,qBAAM,IAAI,uCAAkB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAA;;oBAArD,KAAK,GAAG,SAA6C;oBAC5C,qBAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,EAAA;;oBAA7F,MAAM,GAAG,SAAoF;oBAC/E,qBAAM,IAAI,uCAAkB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAA;;oBAAzD,WAAW,GAAG,SAA2C;oBAC/D,qBAAM,IAAA,kBAAa,GAAE,CAAC,MAAM,CAAC,aAAM,CAAC,IAAI,EAAE;4BACxC,EAAE,EAAE,MAAM,CAAC,EAAE;4BACb,4BAA4B,EAAE,IAAA,gBAAM,GAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;yBAC3D,CAAC,EAAA;;oBAHF,SAGE,CAAC;oBAES,qBAAM,uBAAU,CAAC,MAAM,CAAC;;;;;wCAClC,KAAA,MAAM,CAAA;wCAAE,qBAAM,MAAM,CAAC,2CAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,OAAA,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAA;;wCAA9F,kBAAO,CAAC,SAAsF,CAAC,CAAC,MAAM,EAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wCAClH,KAAA,MAAM,CAAA;wCAAE,qBAAM,MAAM,CAAC,2CAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,OAAA,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAA;;wCAA9F,kBAAO,CAAC,SAAsF,CAAC,CAAC,MAAM,EAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wCAClH,KAAA,MAAM,CAAA;wCACH,qBAAM,MAAM,CAAC,2CAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,CAAC,EAAA;;wCADrG,kBACE,CAAC,SAAkG,CAAC,CAAC,MAAM,EAC5G,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wCACZ,KAAA,MAAM,CAAA;wCAAE,qBAAM,MAAM,CAAC,uDAA0B,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,EAAA;;wCAAnF,kBAAO,CAAC,SAA2E,CAAC,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;;6BAChH,CAAC,EAAA;;oBAPI,GAAG,GAAG,SAOV;oBAEF,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;oBACvE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;;;;SACxE,CAAC,CAAC;IAEH,EAAE,CAAC,uGAAuG,EAAE;;;;wBAC1F,qBAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAA;;oBAA3G,OAAO,GAAG,SAAiG;oBACjH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAEX,qBAAM,uBAAU,CAAC,MAAM,CAAC;;;;;wCAClC,KAAA,MAAM,CAAA;wCAAC,qBAAM,IAAI,eAAM,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAA;;wCAA/D,kBAAO,SAAwD,EAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wCACzF,KAAA,MAAM,CAAA;wCAAC,qBAAM,IAAI,eAAM,EAAE,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAA;;wCAAjE,kBAAO,SAA0D,EAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wCACrF,OAAO,GAAG,IAAI;6CACjB,KAAK,CAAC,0BAAW,CAAC,SAAS,EAAE,WAAW,CAAC;6CACzC,iBAAiB,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;;;;wCAEtD,KAAA,MAAM,CAAA;wCAAE,qBAAM,IAAI,eAAM,EAAE,CAAC,UAAU,CAAC,+BAA+B,CAAC,EAAA;;wCAAtE,kBAAO,CAAC,SAA8D,CAAC,CAAC,IAAI,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wCAC1F,KAAA,MAAM,CAAA;wCAAE,qBAAM,IAAI,eAAM,EAAE,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAA;;wCAAlE,kBAAO,CAAC,SAA0D,CAAC,CAAC,IAAI,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;wCAEtF,OAAO,CAAC,WAAW,EAAE,CAAC;;;;;6BAEzB,CAAC,EAAA;;oBAZI,GAAG,GAAG,SAYV;oBAEF,MAAM,CAAC,uBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC9C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,CAAC;oBAC7E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;;;;SACxE,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE;;;;wBAChD,qBAAM,uBAAU,CAAC,MAAM,CAAC;;;;;oCAC5B,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;oCACzF,KAAA,MAAM,CAAA;oCAAE,qBAAM,IAAI,eAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAA;;oCAA3C,kBAAO,CAAC,SAAmC,CAAC,CAAC,OAAO,EAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oCACtE,KAAA,MAAM,CAAA;oCAAE,qBAAM,IAAI,eAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAA;;oCAA3C,kBAAO,CAAC,SAAmC,CAAC,CAAC,OAAO,EAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;;;yBACtE,CAAC,EAAA;;oBAJI,GAAG,GAAG,SAIV;oBAEF,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;;;;SACvE,CAAC,CAAC;IAEH,EAAE,CAAC,sGAAsG,EAAE;;;;;oBAInG,IAAI,GAAG,+BAAc,CAAC,SAAS,CAAC,IAAI,CAAC;oBACvC,OAAO,GAAG,CAAC,CAAC;oBAEV,IAAI,GAAG,IAAI,OAAO,CAAO,UAAC,OAAO,IAAK,OAAA,CAAC,WAAW,GAAG,OAAO,CAAC,EAAvB,CAAuB,CAAC,CAAC;oBAC/D,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,+BAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,UAE3E,QAAgB;;;;;4CAED,qBAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAA;;wCAAxC,MAAM,GAAG,SAA+B;wCAC9C,IAAI,EAAE,OAAO,KAAK,CAAC,EAAE;4CACnB,WAAW,EAAE,CAAC;yCACf;wCACD,qBAAM,IAAI,EAAA;;wCAAV,SAAU,CAAC;wCACX,sBAAO,MAAM,EAAC;;;;qBACf,CAAC,CAAC;oBACG,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;oBAElF,QAAQ,GAA+C,EAAE,CAAC;oBAClD,qBAAM,uBAAU,CAAC,MAAM,CAAC;;;;;wCAErB,qBAAM,OAAO,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;;;;;gEACW,qBAAM,IAAA,8CAAqB,EAAC,EAAE,IAAI,MAAA,EAAE,CAAC,EAAA;;4DAAjD,OAAO,GAAK,CAAA,SAAqC,CAAA,QAA1C;4DACC,qBAAM,MAAM,CAAC,eAAM,EAAE,OAAO,CAAC,EAAA;;4DAAvC,OAAO,GAAG,SAA6B;4DAC7C,4CAAY,OAAO,KAAE,UAAU,EAAE,MAAA,OAAO,CAAC,OAAO,CAAC,QAAQ,0CAAE,IAAI,KAAG;;;iDACnE,CAAC,CACH,EAAA;;wCAND,QAAQ,GAAG,SAMV,CAAC;;;wCAEF,IAAI,CAAC,WAAW,EAAE,CAAC;;;;;6BAEtB,CAAC,EAAA;;oBAZI,GAAG,GAAG,SAYV;oBAEF,2FAA2F;oBAC3F,+EAA+E;oBAC/E,KAAA,MAAM,CAAA;oBAAE,qBAAM,IAAA,kBAAa,GAAE,CAAC,KAAK,CAAC,aAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,EAAA;;oBAFnF,2FAA2F;oBAC3F,+EAA+E;oBAC/E,kBAAO,CAAC,SAA2E,CAAC,CAAC,MAAM,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAC,OAAO,IAAK,OAAA,OAAO,CAAC,UAAU,KAAK,sBAAsB,EAA7C,CAA6C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC9F,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;oBACrD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;oBACpD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBACxE,0FAA0F;oBAC1F,mGAAmG;oBACnG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;;;SAC/D,CAAC,CAAC;IAEH,EAAE,CAAC,6GAA6G,EAAE;;;;wBAChG,qBAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAA;;oBAA7G,OAAO,GAAG,SAAmG;oBACnH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACvB,qBAAM,IAAI,eAAM,EAAE,CAAC,UAAU,CAAC,kCAAkC,CAAC,EAAA;;oBAAjE,SAAiE,CAAC;oBAE5D,MAAM,GAAG,UAAC,OAAe;wBAC7B,OAAA,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iCAA0B,OAAO,qCAAkC,CAAC,EAAE;4BAC5F,IAAI,EAAE,CAAC;4BACP,OAAO,EAAE,eAAQ,OAAO,qCAAkC;yBAC3D,CAAC;oBAHF,CAGE,CAAC;oBAEO,qBAAM,uBAAU,CAAC,MAAM,CAAC;;;;;wCAC5B,OAAO,GAAG,IAAI;6CACjB,KAAK,CAAC,0BAAW,CAAC,SAAS,EAAE,WAAW,CAAC;6CACzC,kBAAkB,CAAC,UAAO,OAAO;4CAAK,sBAAA,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;iDAAA,CAAC,CAAC;;;;wCAEnF,KAAA,MAAM,CAAA;wCAAE,qBAAM,IAAI,eAAM,EAAE,CAAC,UAAU,CAAC,+BAA+B,CAAC,EAAA;;wCAAtE,kBAAO,CAAC,SAA8D,CAAC,CAAC,IAAI,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wCAC1F,KAAA,MAAM,CAAA;wCAAE,qBAAM,IAAI,eAAM,EAAE,CAAC,YAAY,CAAC,kCAAkC,CAAC,EAAA;;wCAA3E,kBAAO,CAAC,SAAmE,CAAC,CAAC,IAAI,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;wCAE/F,OAAO,CAAC,WAAW,EAAE,CAAC;;;;;6BAEzB,CAAC,EAAA;;oBAVI,GAAG,GAAG,SAUV;oBAEF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;oBACnD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;oBACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;oBAC7D,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,CAAC;oBAC7E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,CAAC;;;;SACjF,CAAC,CAAC;IAEH,EAAE,CAAC,yHAAyH,EAAE;;;;wBAC5H,qBAAM,IAAA,kBAAa,GAAE,CAAC,MAAM,CAAC,aAAM,CAAC,IAAI,EAAE;wBACxC,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,6BAA6B;wBACpC,QAAQ,EAAE,IAAA,gBAAM,EAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;wBAC/C,aAAa,EAAE,IAAI;wBACnB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,aAAa;qBACtB,CAAC,EAAA;;oBAPF,SAOE,CAAC;oBAES,qBAAM,uBAAU,CAAC,MAAM,CAAC;;;;;wCAClC,KAAA,MAAM,CAAA;wCAAC,qBAAM,IAAA,2BAAY,EAAC,6BAA6B,EAAE,kBAAkB,CAAC,EAAA;;wCAA5E,kBAAO,SAAqE,EAAC,CAAC,IAAI,CAChF,mCAAmC,CACpC,CAAC;wCACF,KAAA,MAAM,CAAA;wCAAE,qBAAM,qBAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,EAAA;;wCAA/E,kBAAO,CAAC,SAAuE,CAAC,CAAC,EAAE,EAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wCACnG,KAAA,MAAM,CAAA;wCAAE,qBAAM,qBAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,EAAA;;wCAA3E,kBAAO,CAAC,SAAmE,CAAC,CAAC,EAAE,EAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;;6BAChG,CAAC,EAAA;;oBANI,GAAG,GAAG,SAMV;oBAEF,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC;oBAC3E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;;;;SACxE,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE;;;;wBACzD,qBAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,EAAA;;oBAA7F,KAAK,GAAG,SAAqF;oBAC7F,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;oBACtD,qBAAM,IAAA,kBAAa,GAAE,CAAC,MAAM,CAAC,aAAM,CAAC,OAAO,EAAE;4BAC3C,SAAS,EAAE,WAAW;4BACtB,OAAO,EAAE,IAAI;4BACb,OAAO,SAAA;4BACP,SAAS,EAAE,KAAK,CAAC,KAAK;yBACvB,CAAC,EAAA;;oBALF,SAKE,CAAC;oBACG,YAAY,GAAG,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;oBAChD,WAAW,EAAE,CAAC,kCAAkC,CAAC,GAAG,YAAY,CAAC;oBACjE,gBAAgB,EAAE,CAAC,kCAAkC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,CAAC;wBACrF,aAAa,EAAE,gDAAgD;wBAC/D,WAAW,EAAE,wBAAwB;wBACrC,MAAM,QAAA;qBACP,CAAC,EAJoF,CAIpF,CAAC,CAAC;oBACJ,qBAAM,IAAI,2BAAsB,EAAE,CAAC,IAAI,EAAE,EAAA;;oBAAzC,SAAyC,CAAC;oBAE9B,qBAAM,uBAAU,CAAC,MAAM,CAAC;;;;4CAClC,qBAAM,IAAA,kBAAa,GAAE,CAAC,MAAM,CAAC,aAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAA;;wCAAlF,SAAkF,CAAC;wCACnF,KAAA,MAAM,CAAA;wCAAE,qBAAM,IAAI,uCAAkB,EAAE,CAAC,cAAc,CAAC,yBAAyB,CAAC,EAAA;;wCAAhF,kBAAO,CAAC,SAAwE,CAAC,CAAC,UAAU,EAAC,CAAC,IAAI,CAChG,iBAAiB,CAClB,CAAC;;;;6BACH,CAAC,EAAA;;oBALI,GAAG,GAAG,SAKV;oBAEF,KAAA,MAAM,CAAA;oBAAC,qBAAM,IAAA,kBAAa,GAAE,CAAC,KAAK,CAAC,aAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAA;;oBAA9E,kBAAO,SAAuE,EAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC5F,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBACpE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;;;;SACxE,CAAC,CAAC;IAEH,EAAE,CAAC,6FAA6F,EAAE;;;;;oBAChG,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,qBAAqB,CAAC;oBACzD,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,qBAAqB,CAAC;oBAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;oBAExB,qBAAM,IAAA,kBAAa,GAAE,CAAC,KAAK,CAAC,aAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAA;;oBAArD,MAAM,GAAG,SAA4C;0BACsB,EAA7D,KAAA,MAAM,CAAC,MAAM,CAAC,UAAC,IAAI,YAAK,OAAA,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA,EAAA,CAAC;;;yBAA7D,CAAA,cAA6D,CAAA;oBAAtE,KAAK;oBACd,qBAAM,IAAA,kBAAa,GAAE,CAAC,MAAM,CAAC,aAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAA;;oBAAtE,SAAsE,CAAC;;;oBADrD,IAA6D,CAAA;;wBAIrE,qBAAM,uBAAU,CAAC,MAAM,CAAC;;;;;oCAClC,KAAA,MAAM,CAAA;oCAAE,qBAAM,IAAA,gCAAc,GAAE,EAAA;;oCAA9B,kBAAO,CAAC,SAAsB,CAAC,CAAC,UAAU,EAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;;;;yBACzE,CAAC,EAAA;;oBAFI,GAAG,GAAG,SAEV;oBAEF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;oBAChE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;;;;SACpE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RequestDigests.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestDigests.test.d.ts","sourceRoot":"","sources":["../../test/RequestDigests.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var crypto_1 = require("crypto");
4
+ var RequestDigests_1 = require("../src/throttle/RequestDigests");
5
+ /**
6
+ * The two keyed digests the throttled doors key their windows on and write on their log lines:
7
+ * the account digest (a keyed hash of the lowercased address) and the coarse IP hash. Both are
8
+ * stable for one key (so an operator can say "one account, one device" across lines, pods and
9
+ * restarts) and useless without it (never the address, never a plain hash a list of addresses
10
+ * could reverse).
11
+ */
12
+ describe('RequestDigests', function () {
13
+ var digests = new RequestDigests_1.RequestDigests({ secret: 'test-session-secret' });
14
+ it('the account digest is stable for one address whatever its case or surrounding spaces', function () {
15
+ var digest = digests.account('Ada.Lovelace@Example.com');
16
+ expect(digest).toMatch(/^[0-9a-f]{16}$/);
17
+ expect(digests.account('ada.lovelace@example.com')).toBe(digest);
18
+ expect(digests.account(' ADA.LOVELACE@EXAMPLE.COM ')).toBe(digest);
19
+ expect(digests.account('ada.lovelace@example.org')).not.toBe(digest);
20
+ });
21
+ it('the account digest is keyed: another key gives another digest, and it is no plain hash of the address', function () {
22
+ var address = 'ada.lovelace@example.com';
23
+ var digest = digests.account(address);
24
+ expect(new RequestDigests_1.RequestDigests({ secret: 'another-secret' }).account(address)).not.toBe(digest);
25
+ expect((0, crypto_1.createHash)('sha256').update(address).digest('hex')).not.toContain(digest);
26
+ expect(digest).not.toContain('ada');
27
+ });
28
+ it('the account digest and the coarse IP hash are separate: one value never reads as the other', function () {
29
+ expect(digests.account('203.0.113.7')).not.toBe(digests.coarseIp('203.0.113.7'));
30
+ });
31
+ it('the coarse IP hash is stable for one IPv4 address and differs for the next', function () {
32
+ var hash = digests.coarseIp('203.0.113.7');
33
+ expect(hash).toMatch(/^[0-9a-f]{16}$/);
34
+ expect(digests.coarseIp('203.0.113.7')).toBe(hash);
35
+ expect(digests.coarseIp('::ffff:203.0.113.7')).toBe(hash);
36
+ expect(digests.coarseIp('203.0.113.8')).not.toBe(hash);
37
+ });
38
+ it('IPv6 is coarsened to its /64 — one device rotates freely inside its own /64', function () {
39
+ var hash = digests.coarseIp('2001:db8:1:2:aaaa:bbbb:cccc:dddd');
40
+ expect(digests.coarseIp('2001:db8:1:2::1')).toBe(hash);
41
+ expect(digests.coarseIp('2001:0db8:0001:0002:ffff:0:0:1')).toBe(hash);
42
+ expect(digests.coarseIp('2001:db8:1:3::1')).not.toBe(hash);
43
+ });
44
+ it('with no key configured the digests refuse to run — never a plain hash, never a key of their own', function () {
45
+ var original = process.env.SESSION_SECRET;
46
+ delete process.env.SESSION_SECRET;
47
+ try {
48
+ expect(function () { return new RequestDigests_1.RequestDigests().account('ada.lovelace@example.com'); }).toThrow(/SESSION_SECRET/);
49
+ expect(function () { return new RequestDigests_1.RequestDigests({ secret: '' }).coarseIp('203.0.113.7'); }).toThrow(/SESSION_SECRET/);
50
+ }
51
+ finally {
52
+ if (original !== undefined) {
53
+ process.env.SESSION_SECRET = original;
54
+ }
55
+ }
56
+ });
57
+ it('reads the key the deployment configures (SESSION_SECRET) when none is passed', function () {
58
+ var original = process.env.SESSION_SECRET;
59
+ process.env.SESSION_SECRET = 'test-session-secret';
60
+ try {
61
+ expect(new RequestDigests_1.RequestDigests().account('ada.lovelace@example.com')).toBe(digests.account('ada.lovelace@example.com'));
62
+ }
63
+ finally {
64
+ if (original === undefined) {
65
+ delete process.env.SESSION_SECRET;
66
+ }
67
+ else {
68
+ process.env.SESSION_SECRET = original;
69
+ }
70
+ }
71
+ });
72
+ });
73
+ //# sourceMappingURL=RequestDigests.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestDigests.test.js","sourceRoot":"","sources":["../../test/RequestDigests.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,19 @@
1
1
  "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
2
17
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
18
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
19
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -78,6 +93,29 @@ var passportSessionHarness_1 = require("./passportSessionHarness");
78
93
  var UserServerTestEnvironment_1 = require("./UserServerTestEnvironment");
79
94
  var testEnv = new UserServerTestEnvironment_1.UserServerTestEnvironment();
80
95
  var INVITE_CONFIG_KEY = '@proteinjs/user-server/DefaultInviteConfigFactory';
96
+ /** A code-declared machine account owning an address (the declaration only — never booted here). */
97
+ var DeclaredMachineAccount = /** @class */ (function (_super) {
98
+ __extends(DeclaredMachineAccount, _super);
99
+ function DeclaredMachineAccount() {
100
+ var _this = _super !== null && _super.apply(this, arguments) || this;
101
+ _this.id = 'declared-machine';
102
+ _this.email = 'declared.machine@test.local';
103
+ _this.accountName = 'Declared machine';
104
+ _this.roles = [];
105
+ _this.secretName = 'declared-machine-secret';
106
+ return _this;
107
+ }
108
+ return DeclaredMachineAccount;
109
+ }(user_1.MachineAccount));
110
+ var LOADER_KEY = '@proteinjs/db/SourceRecordLoader';
111
+ /** Seed the build's source-record declarations (the machine-account read resolves them by name). */
112
+ var setDeclarations = function (declarations) {
113
+ reflection_1.SourceRepository.get().namedObjectCache[LOADER_KEY] = declarations.map(function (object, i) { return ({
114
+ qualifiedName: "@proteinjs/user-server-test/Declared".concat(i),
115
+ packageName: '@test/declarer',
116
+ object: object,
117
+ }); });
118
+ };
81
119
  /** Seed the invite-config lookup (tests don't load the generated source graph). */
82
120
  var setInviteConfig = function (factories) {
83
121
  reflection_1.SourceRepository.get().objectCache[INVITE_CONFIG_KEY] = factories;
@@ -136,7 +174,9 @@ describe('signup route — auto-login after signup', function () {
136
174
  afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
137
175
  return __generator(this, function (_a) {
138
176
  switch (_a.label) {
139
- case 0: return [4 /*yield*/, testEnv.afterAll()];
177
+ case 0:
178
+ delete reflection_1.SourceRepository.get().namedObjectCache[LOADER_KEY];
179
+ return [4 /*yield*/, testEnv.afterAll()];
140
180
  case 1:
141
181
  _a.sent();
142
182
  return [2 /*return*/];
@@ -150,6 +190,7 @@ describe('signup route — auto-login after signup', function () {
150
190
  case 0:
151
191
  jest.clearAllMocks();
152
192
  setInviteConfig([]);
193
+ setDeclarations([]);
153
194
  db = (0, db_1.getDbAsSystem)();
154
195
  return [4 /*yield*/, db.delete(user_1.tables.Invite, {})];
155
196
  case 1:
@@ -267,6 +308,44 @@ describe('signup route — auto-login after signup', function () {
267
308
  }
268
309
  });
269
310
  }); });
311
+ it("an address a machine-account declaration owns can't be registered \u2014 by signup or by invite: plain words, no account, no session", function () { return __awaiter(void 0, void 0, void 0, function () {
312
+ var direct, invited, _a;
313
+ return __generator(this, function (_b) {
314
+ switch (_b.label) {
315
+ case 0:
316
+ setDeclarations([new DeclaredMachineAccount()]);
317
+ return [4 /*yield*/, invokeSignup({
318
+ name: 'Squatter',
319
+ email: 'Declared.Machine@test.local',
320
+ password: 'pw-squat-1',
321
+ })];
322
+ case 1:
323
+ direct = _b.sent();
324
+ expect(direct.body).toEqual({ error: "This address can't be registered." });
325
+ expect(direct.loggedInAs).toBeUndefined();
326
+ expect(direct.sessionEvents).toEqual([]);
327
+ return [4 /*yield*/, (0, db_1.getDbAsSystem)().insert(user_1.tables.Invite, {
328
+ email: 'declared.machine@test.local',
329
+ token: 'invite-token-declared',
330
+ tokenExpiresAt: (0, moment_1.default)().add(1, 'day'),
331
+ invitedBy: new db_1.Reference(user_1.tables.User.name, 'inviter-1'),
332
+ })];
333
+ case 2:
334
+ _b.sent();
335
+ return [4 /*yield*/, invokeSignup({ name: 'Squatter', password: 'pw-squat-2', token: 'invite-token-declared' })];
336
+ case 3:
337
+ invited = _b.sent();
338
+ expect(invited.body).toEqual({ error: "This address can't be registered." });
339
+ expect(invited.loggedInAs).toBeUndefined();
340
+ _a = expect;
341
+ return [4 /*yield*/, getUserRow('declared.machine@test.local')];
342
+ case 4:
343
+ _a.apply(void 0, [_b.sent()]).toBeUndefined();
344
+ expect(sendEmail).not.toHaveBeenCalled();
345
+ return [2 /*return*/];
346
+ }
347
+ });
348
+ }); });
270
349
  it('an unknown invite token gets the honest error — no session, no account', function () { return __awaiter(void 0, void 0, void 0, function () {
271
350
  var outcome, _a;
272
351
  var _b;
@@ -1 +1 @@
1
- {"version":3,"file":"SignupRoute.test.js","sourceRoot":"","sources":["../../test/SignupRoute.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SignupRoute.test.js","sourceRoot":"","sources":["../../test/SignupRoute.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SlidingWindow.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlidingWindow.test.d.ts","sourceRoot":"","sources":["../../test/SlidingWindow.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var SlidingWindow_1 = require("../src/throttle/SlidingWindow");
4
+ /**
5
+ * The per-key sliding window every throttled door shares (the sign-in and reset doors here, the
6
+ * invite-request door in the consuming app): `hit` records and answers whether the key is over,
7
+ * `isOver` only reads, `record` only counts, `clear` forgets. Attempts refused as over the window
8
+ * are not counted, so a key drains exactly one window after its last counted attempt.
9
+ */
10
+ describe('SlidingWindow', function () {
11
+ var MINUTE = 60 * 1000;
12
+ var now = 1700000000000;
13
+ var clock = function () { return now; };
14
+ it('admits up to the limit inside the window and refuses the next', function () {
15
+ var window = new SlidingWindow_1.SlidingWindow({ windowMs: 10 * MINUTE, limit: 3, now: clock });
16
+ expect([window.hit('a'), window.hit('a'), window.hit('a')]).toEqual([false, false, false]);
17
+ expect(window.hit('a')).toBe(true);
18
+ expect(window.isOver('a')).toBe(true);
19
+ });
20
+ it('keeps each key in its own window', function () {
21
+ var window = new SlidingWindow_1.SlidingWindow({ windowMs: 10 * MINUTE, limit: 2, now: clock });
22
+ window.hit('a');
23
+ window.hit('a');
24
+ expect(window.hit('a')).toBe(true);
25
+ expect(window.hit('b')).toBe(false);
26
+ });
27
+ it('drains: an attempt older than the window no longer counts, and refused attempts never counted', function () {
28
+ var window = new SlidingWindow_1.SlidingWindow({ windowMs: 10 * MINUTE, limit: 2, now: clock });
29
+ window.hit('a');
30
+ now += 4 * MINUTE;
31
+ window.hit('a');
32
+ now += 5 * MINUTE;
33
+ expect(window.hit('a')).toBe(true); // both counted attempts are still inside the window
34
+ now += 1 * MINUTE + 1; // the first counted attempt left the window; the refused one never counted
35
+ expect(window.hit('a')).toBe(false);
36
+ expect(window.hit('a')).toBe(true);
37
+ });
38
+ it('isOver reads without counting; record counts without answering; clear forgets the key', function () {
39
+ var window = new SlidingWindow_1.SlidingWindow({ windowMs: 10 * MINUTE, limit: 2, now: clock });
40
+ expect(window.isOver('a')).toBe(false);
41
+ expect(window.isOver('a')).toBe(false);
42
+ window.record('a');
43
+ expect(window.isOver('a')).toBe(false);
44
+ window.record('a');
45
+ expect(window.isOver('a')).toBe(true);
46
+ window.clear('a');
47
+ expect(window.isOver('a')).toBe(false);
48
+ });
49
+ it('forgive uncounts the latest attempt only', function () {
50
+ var window = new SlidingWindow_1.SlidingWindow({ windowMs: 10 * MINUTE, limit: 2, now: clock });
51
+ window.hit('a');
52
+ window.hit('a');
53
+ expect(window.isOver('a')).toBe(true);
54
+ window.forgive('a');
55
+ expect(window.isOver('a')).toBe(false);
56
+ expect(window.hit('a')).toBe(false);
57
+ expect(window.hit('a')).toBe(true);
58
+ window.forgive('b'); // a key never seen: nothing to uncount, nothing thrown
59
+ expect(window.isOver('b')).toBe(false);
60
+ });
61
+ it('bounds the keys it tracks: at the bound the oldest-touched key is forgotten first', function () {
62
+ var window = new SlidingWindow_1.SlidingWindow({ windowMs: 10 * MINUTE, limit: 1, maxKeys: 2, now: clock });
63
+ window.hit('a');
64
+ window.hit('b');
65
+ window.hit('a'); // refused, but 'a' is now the most recently touched
66
+ window.hit('c'); // at the bound: 'b' (oldest-touched) is forgotten
67
+ expect(window.isOver('a')).toBe(true);
68
+ expect(window.isOver('b')).toBe(false);
69
+ expect(window.isOver('c')).toBe(true);
70
+ });
71
+ });
72
+ //# sourceMappingURL=SlidingWindow.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlidingWindow.test.js","sourceRoot":"","sources":["../../test/SlidingWindow.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SocketIOSessionWatcher.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketIOSessionWatcher.test.d.ts","sourceRoot":"","sources":["../../test/SocketIOSessionWatcher.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var http_1 = require("http");
40
+ var db_1 = require("@proteinjs/db");
41
+ var reflection_1 = require("@proteinjs/reflection");
42
+ var server_1 = require("@proteinjs/server");
43
+ var SocketIOSessionWatcher_1 = require("../src/authentication/SocketIOSessionWatcher");
44
+ /**
45
+ * The socket server this file installs through the repo's own factory seam — a stand-in that
46
+ * records every `in(rooms).disconnectSockets(close)` it receives (no socket.io client is part of
47
+ * this package, so no real socket can connect to observe).
48
+ */
49
+ var RecordingSocketIOServer = /** @class */ (function () {
50
+ function RecordingSocketIOServer() {
51
+ this.calls = [];
52
+ }
53
+ RecordingSocketIOServer.prototype.in = function (rooms) {
54
+ var _this = this;
55
+ return {
56
+ disconnectSockets: function (close) {
57
+ _this.calls.push({ rooms: [].concat(rooms), close: close });
58
+ },
59
+ };
60
+ };
61
+ return RecordingSocketIOServer;
62
+ }());
63
+ var session = function (sessionId) {
64
+ return ({ id: "row-".concat(sessionId), sessionId: sessionId, session: '{}', userEmail: 'someone@test.local' });
65
+ };
66
+ var deleteSessions = function (sessions) { return __awaiter(void 0, void 0, void 0, function () {
67
+ return __generator(this, function (_a) {
68
+ switch (_a.label) {
69
+ case 0: return [4 /*yield*/, new SocketIOSessionWatcher_1.SocketIOSessionWatcher().afterDelete(sessions.length, sessions, new db_1.QueryBuilder('session'), new db_1.QueryBuilder('session'))];
70
+ case 1: return [2 /*return*/, _a.sent()];
71
+ }
72
+ });
73
+ }); };
74
+ /**
75
+ * Deleting session rows closes their sockets — and a deletion is not always made by a running
76
+ * server: a boot's source-record sync (and a migration Job, which never starts one) deactivates a
77
+ * withdrawn machine account and deletes its sessions before any socket server exists.
78
+ */
79
+ describe('SocketIOSessionWatcher', function () {
80
+ it('a deletion before the socket server exists resolves — no socket can be open yet', function () { return __awaiter(void 0, void 0, void 0, function () {
81
+ return __generator(this, function (_a) {
82
+ switch (_a.label) {
83
+ case 0:
84
+ expect(server_1.SocketIOServerRepo.getSocketIOServerIfExists()).toBeUndefined();
85
+ return [4 /*yield*/, expect(deleteSessions([session('before-boot')])).resolves.toBeUndefined()];
86
+ case 1:
87
+ _a.sent();
88
+ return [2 /*return*/];
89
+ }
90
+ });
91
+ }); });
92
+ describe('with the socket server up', function () {
93
+ var server = new RecordingSocketIOServer();
94
+ beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
95
+ return __generator(this, function (_a) {
96
+ switch (_a.label) {
97
+ case 0:
98
+ reflection_1.SourceRepository.get().objectCache['@proteinjs/event/DefaultSocketIOServerFactory'] =
99
+ [{ createSocketIOServer: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
100
+ return [2 /*return*/, server];
101
+ }); }); } }];
102
+ return [4 /*yield*/, server_1.SocketIOServerRepo.createSocketIOServer((0, http_1.createServer)())];
103
+ case 1:
104
+ _a.sent();
105
+ return [2 /*return*/];
106
+ }
107
+ });
108
+ }); });
109
+ afterAll(function () {
110
+ delete reflection_1.SourceRepository.get().objectCache['@proteinjs/event/DefaultSocketIOServerFactory'];
111
+ });
112
+ beforeEach(function () {
113
+ server.calls.length = 0;
114
+ });
115
+ it("closes exactly the deleted sessions' sockets", function () { return __awaiter(void 0, void 0, void 0, function () {
116
+ return __generator(this, function (_a) {
117
+ switch (_a.label) {
118
+ case 0: return [4 /*yield*/, deleteSessions([session('s-1'), session('s-2')])];
119
+ case 1:
120
+ _a.sent();
121
+ expect(server.calls).toEqual([{ rooms: ['s-1', 's-2'], close: true }]);
122
+ return [2 /*return*/];
123
+ }
124
+ });
125
+ }); });
126
+ it('a deletion with no session ids closes nothing — an empty room list would address every socket', function () { return __awaiter(void 0, void 0, void 0, function () {
127
+ return __generator(this, function (_a) {
128
+ switch (_a.label) {
129
+ case 0:
130
+ // socket.io's in-memory adapter applies an operation with NO rooms to every socket on the
131
+ // namespace (`apply`: `if (rooms.size) … else for every sid`), so `in([])` must never be sent.
132
+ return [4 /*yield*/, deleteSessions([])];
133
+ case 1:
134
+ // socket.io's in-memory adapter applies an operation with NO rooms to every socket on the
135
+ // namespace (`apply`: `if (rooms.size) … else for every sid`), so `in([])` must never be sent.
136
+ _a.sent();
137
+ expect(server.calls).toEqual([]);
138
+ return [2 /*return*/];
139
+ }
140
+ });
141
+ }); });
142
+ });
143
+ });
144
+ //# sourceMappingURL=SocketIOSessionWatcher.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketIOSessionWatcher.test.js","sourceRoot":"","sources":["../../test/SocketIOSessionWatcher.test.ts"],"names":[],"mappings":"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"}