@spinajs/rbac 2.0.85 → 2.0.87
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.
- package/lib/{auth.d.ts → cjs/auth.d.ts} +0 -0
- package/lib/cjs/auth.d.ts.map +1 -0
- package/lib/cjs/auth.js +104 -0
- package/lib/cjs/auth.js.map +1 -0
- package/lib/{cli → cjs/cli}/ActivateUser.d.ts +0 -0
- package/lib/cjs/cli/ActivateUser.d.ts.map +1 -0
- package/lib/cjs/cli/ActivateUser.js +48 -0
- package/lib/cjs/cli/ActivateUser.js.map +1 -0
- package/lib/{cli → cjs/cli}/BanUser.d.ts +0 -0
- package/lib/cjs/cli/BanUser.d.ts.map +1 -0
- package/lib/cjs/cli/BanUser.js +64 -0
- package/lib/cjs/cli/BanUser.js.map +1 -0
- package/lib/{cli → cjs/cli}/ChangeUserPassword.d.ts +0 -0
- package/lib/cjs/cli/ChangeUserPassword.d.ts.map +1 -0
- package/lib/cjs/cli/ChangeUserPassword.js +59 -0
- package/lib/cjs/cli/ChangeUserPassword.js.map +1 -0
- package/lib/{cli → cjs/cli}/ClearUserTimelineSchedule.d.ts +0 -0
- package/lib/cjs/cli/ClearUserTimelineSchedule.d.ts.map +1 -0
- package/lib/cjs/cli/ClearUserTimelineSchedule.js +55 -0
- package/lib/cjs/cli/ClearUserTimelineSchedule.js.map +1 -0
- package/lib/{cli → cjs/cli}/CreateUser.d.ts +0 -0
- package/lib/cjs/cli/CreateUser.d.ts.map +1 -0
- package/lib/cjs/cli/CreateUser.js +72 -0
- package/lib/cjs/cli/CreateUser.js.map +1 -0
- package/lib/{cli → cjs/cli}/DeleteUser.d.ts +0 -0
- package/lib/cjs/cli/DeleteUser.d.ts.map +1 -0
- package/lib/cjs/cli/DeleteUser.js +41 -0
- package/lib/cjs/cli/DeleteUser.js.map +1 -0
- package/lib/{cli → cjs/cli}/FindUser.d.ts +0 -0
- package/lib/cjs/cli/FindUser.d.ts.map +1 -0
- package/lib/cjs/cli/FindUser.js +45 -0
- package/lib/cjs/cli/FindUser.js.map +1 -0
- package/lib/{cli → cjs/cli}/GrantUserRole.d.ts +0 -0
- package/lib/cjs/cli/GrantUserRole.d.ts.map +1 -0
- package/lib/cjs/cli/GrantUserRole.js +48 -0
- package/lib/cjs/cli/GrantUserRole.js.map +1 -0
- package/lib/{cli → cjs/cli}/LatestUserEvents.d.ts +0 -0
- package/lib/cjs/cli/LatestUserEvents.d.ts.map +1 -0
- package/lib/cjs/cli/LatestUserEvents.js +38 -0
- package/lib/cjs/cli/LatestUserEvents.js.map +1 -0
- package/lib/{cli → cjs/cli}/RevokeUserRole.d.ts +0 -0
- package/lib/cjs/cli/RevokeUserRole.d.ts.map +1 -0
- package/lib/cjs/cli/RevokeUserRole.js +47 -0
- package/lib/cjs/cli/RevokeUserRole.js.map +1 -0
- package/lib/{cli → cjs/cli}/UnbanUserSchedule.d.ts +0 -0
- package/lib/cjs/cli/UnbanUserSchedule.d.ts.map +1 -0
- package/lib/cjs/cli/UnbanUserSchedule.js +55 -0
- package/lib/cjs/cli/UnbanUserSchedule.js.map +1 -0
- package/lib/{config → cjs/config}/rbac.d.ts +0 -0
- package/lib/cjs/config/rbac.d.ts.map +1 -0
- package/lib/cjs/config/rbac.js +118 -0
- package/lib/cjs/config/rbac.js.map +1 -0
- package/lib/{events → cjs/events}/NewUser.d.ts +0 -0
- package/lib/cjs/events/NewUser.d.ts.map +1 -0
- package/lib/cjs/events/NewUser.js +17 -0
- package/lib/cjs/events/NewUser.js.map +1 -0
- package/lib/{events → cjs/events}/UserActivated.d.ts +0 -0
- package/lib/cjs/events/UserActivated.d.ts.map +1 -0
- package/lib/cjs/events/UserActivated.js +25 -0
- package/lib/cjs/events/UserActivated.js.map +1 -0
- package/lib/{events → cjs/events}/UserBanned.d.ts +0 -0
- package/lib/cjs/events/UserBanned.d.ts.map +1 -0
- package/lib/cjs/events/UserBanned.js +26 -0
- package/lib/cjs/events/UserBanned.js.map +1 -0
- package/lib/{events → cjs/events}/UserDeactivated.d.ts +0 -0
- package/lib/cjs/events/UserDeactivated.d.ts.map +1 -0
- package/lib/cjs/events/UserDeactivated.js +25 -0
- package/lib/cjs/events/UserDeactivated.js.map +1 -0
- package/lib/{events → cjs/events}/UserDeleted.d.ts +0 -0
- package/lib/cjs/events/UserDeleted.d.ts.map +1 -0
- package/lib/cjs/events/UserDeleted.js +25 -0
- package/lib/cjs/events/UserDeleted.js.map +1 -0
- package/lib/{events → cjs/events}/UserMetadataAdded.d.ts +0 -0
- package/lib/cjs/events/UserMetadataAdded.d.ts.map +1 -0
- package/lib/cjs/events/UserMetadataAdded.js +25 -0
- package/lib/cjs/events/UserMetadataAdded.js.map +1 -0
- package/lib/{events → cjs/events}/UserMetadataChanged.d.ts +0 -0
- package/lib/cjs/events/UserMetadataChanged.d.ts.map +1 -0
- package/lib/cjs/events/UserMetadataChanged.js +25 -0
- package/lib/cjs/events/UserMetadataChanged.js.map +1 -0
- package/lib/{events → cjs/events}/UserMetadataDeleted.d.ts +0 -0
- package/lib/cjs/events/UserMetadataDeleted.d.ts.map +1 -0
- package/lib/cjs/events/UserMetadataDeleted.js +25 -0
- package/lib/cjs/events/UserMetadataDeleted.js.map +1 -0
- package/lib/{events → cjs/events}/UserPasswordChanged.d.ts +0 -0
- package/lib/cjs/events/UserPasswordChanged.d.ts.map +1 -0
- package/lib/cjs/events/UserPasswordChanged.js +25 -0
- package/lib/cjs/events/UserPasswordChanged.js.map +1 -0
- package/lib/{events → cjs/events}/UserPropertyChanged.d.ts +0 -0
- package/lib/cjs/events/UserPropertyChanged.d.ts.map +1 -0
- package/lib/cjs/events/UserPropertyChanged.js +17 -0
- package/lib/cjs/events/UserPropertyChanged.js.map +1 -0
- package/lib/{events → cjs/events}/UserRoleGranted.d.ts +0 -0
- package/lib/cjs/events/UserRoleGranted.d.ts.map +1 -0
- package/lib/cjs/events/UserRoleGranted.js +26 -0
- package/lib/cjs/events/UserRoleGranted.js.map +1 -0
- package/lib/{events → cjs/events}/UserRoleRevoked.d.ts +0 -0
- package/lib/cjs/events/UserRoleRevoked.d.ts.map +1 -0
- package/lib/cjs/events/UserRoleRevoked.js +26 -0
- package/lib/cjs/events/UserRoleRevoked.js.map +1 -0
- package/lib/{events → cjs/events}/UserUnbanned.d.ts +0 -0
- package/lib/cjs/events/UserUnbanned.d.ts.map +1 -0
- package/lib/cjs/events/UserUnbanned.js +25 -0
- package/lib/cjs/events/UserUnbanned.js.map +1 -0
- package/lib/{events → cjs/events}/index.d.ts +0 -0
- package/lib/cjs/events/index.d.ts.map +1 -0
- package/lib/cjs/events/index.js +30 -0
- package/lib/cjs/events/index.js.map +1 -0
- package/lib/{index.d.ts → cjs/index.d.ts} +0 -0
- package/lib/cjs/index.d.ts.map +1 -0
- package/lib/cjs/index.js +57 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/{interfaces.d.ts → cjs/interfaces.d.ts} +0 -0
- package/lib/cjs/interfaces.d.ts.map +1 -0
- package/lib/cjs/interfaces.js +46 -0
- package/lib/cjs/interfaces.js.map +1 -0
- package/lib/{jobs → cjs/jobs}/UnbanUser.d.ts +0 -0
- package/lib/cjs/jobs/UnbanUser.d.ts.map +1 -0
- package/lib/cjs/jobs/UnbanUser.js +44 -0
- package/lib/cjs/jobs/UnbanUser.js.map +1 -0
- package/lib/{middleware.d.ts → cjs/middleware.d.ts} +0 -0
- package/lib/cjs/middleware.d.ts.map +1 -0
- package/lib/cjs/middleware.js +23 -0
- package/lib/cjs/middleware.js.map +1 -0
- package/lib/{migrations → cjs/migrations}/RBACInitial_2022_06_28_01_13_00.d.ts +0 -0
- package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts.map +1 -0
- package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js +57 -0
- package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -0
- package/lib/{models → cjs/models}/User.d.ts +0 -0
- package/lib/cjs/models/User.d.ts.map +1 -0
- package/lib/cjs/models/User.js +188 -0
- package/lib/cjs/models/User.js.map +1 -0
- package/lib/{models → cjs/models}/UserMetadata.d.ts +0 -0
- package/lib/cjs/models/UserMetadata.d.ts.map +1 -0
- package/lib/cjs/models/UserMetadata.js +33 -0
- package/lib/cjs/models/UserMetadata.js.map +1 -0
- package/lib/{models → cjs/models}/UserTimeline.d.ts +0 -0
- package/lib/cjs/models/UserTimeline.d.ts.map +1 -0
- package/lib/cjs/models/UserTimeline.js +47 -0
- package/lib/cjs/models/UserTimeline.js.map +1 -0
- package/lib/{password.d.ts → cjs/password.d.ts} +0 -0
- package/lib/cjs/password.d.ts.map +1 -0
- package/lib/cjs/password.js +92 -0
- package/lib/cjs/password.js.map +1 -0
- package/lib/{session.d.ts → cjs/session.d.ts} +0 -0
- package/lib/cjs/session.d.ts.map +1 -0
- package/lib/cjs/session.js +101 -0
- package/lib/cjs/session.js.map +1 -0
- package/lib/mjs/auth.d.ts +16 -0
- package/lib/mjs/auth.d.ts.map +1 -0
- package/lib/{auth.js → mjs/auth.js} +0 -0
- package/lib/mjs/auth.js.map +1 -0
- package/lib/mjs/cli/ActivateUser.d.ts +9 -0
- package/lib/mjs/cli/ActivateUser.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/ActivateUser.js +0 -0
- package/lib/mjs/cli/ActivateUser.js.map +1 -0
- package/lib/mjs/cli/BanUser.d.ts +9 -0
- package/lib/mjs/cli/BanUser.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/BanUser.js +0 -0
- package/lib/mjs/cli/BanUser.js.map +1 -0
- package/lib/mjs/cli/ChangeUserPassword.d.ts +12 -0
- package/lib/mjs/cli/ChangeUserPassword.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/ChangeUserPassword.js +0 -0
- package/lib/mjs/cli/ChangeUserPassword.js.map +1 -0
- package/lib/mjs/cli/ClearUserTimelineSchedule.d.ts +9 -0
- package/lib/mjs/cli/ClearUserTimelineSchedule.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/ClearUserTimelineSchedule.js +0 -0
- package/lib/mjs/cli/ClearUserTimelineSchedule.js.map +1 -0
- package/lib/mjs/cli/CreateUser.d.ts +18 -0
- package/lib/mjs/cli/CreateUser.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/CreateUser.js +0 -0
- package/lib/mjs/cli/CreateUser.js.map +1 -0
- package/lib/mjs/cli/DeleteUser.d.ts +9 -0
- package/lib/mjs/cli/DeleteUser.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/DeleteUser.js +0 -0
- package/lib/mjs/cli/DeleteUser.js.map +1 -0
- package/lib/mjs/cli/FindUser.d.ts +13 -0
- package/lib/mjs/cli/FindUser.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/FindUser.js +0 -0
- package/lib/mjs/cli/FindUser.js.map +1 -0
- package/lib/mjs/cli/GrantUserRole.d.ts +9 -0
- package/lib/mjs/cli/GrantUserRole.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/GrantUserRole.js +0 -0
- package/lib/mjs/cli/GrantUserRole.js.map +1 -0
- package/lib/mjs/cli/LatestUserEvents.d.ts +7 -0
- package/lib/mjs/cli/LatestUserEvents.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/LatestUserEvents.js +0 -0
- package/lib/mjs/cli/LatestUserEvents.js.map +1 -0
- package/lib/mjs/cli/RevokeUserRole.d.ts +9 -0
- package/lib/mjs/cli/RevokeUserRole.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/RevokeUserRole.js +0 -0
- package/lib/mjs/cli/RevokeUserRole.js.map +1 -0
- package/lib/mjs/cli/UnbanUserSchedule.d.ts +9 -0
- package/lib/mjs/cli/UnbanUserSchedule.d.ts.map +1 -0
- package/lib/{cli → mjs/cli}/UnbanUserSchedule.js +0 -0
- package/lib/mjs/cli/UnbanUserSchedule.js.map +1 -0
- package/lib/mjs/config/rbac.d.ts +115 -0
- package/lib/mjs/config/rbac.d.ts.map +1 -0
- package/lib/{config → mjs/config}/rbac.js +0 -0
- package/lib/mjs/config/rbac.js.map +1 -0
- package/lib/mjs/events/NewUser.d.ts +13 -0
- package/lib/mjs/events/NewUser.d.ts.map +1 -0
- package/lib/{events → mjs/events}/NewUser.js +0 -0
- package/lib/mjs/events/NewUser.js.map +1 -0
- package/lib/mjs/events/UserActivated.d.ts +6 -0
- package/lib/mjs/events/UserActivated.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserActivated.js +0 -0
- package/lib/mjs/events/UserActivated.js.map +1 -0
- package/lib/mjs/events/UserBanned.d.ts +7 -0
- package/lib/mjs/events/UserBanned.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserBanned.js +0 -0
- package/lib/mjs/events/UserBanned.js.map +1 -0
- package/lib/mjs/events/UserDeactivated.d.ts +6 -0
- package/lib/mjs/events/UserDeactivated.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserDeactivated.js +0 -0
- package/lib/mjs/events/UserDeactivated.js.map +1 -0
- package/lib/mjs/events/UserDeleted.d.ts +6 -0
- package/lib/mjs/events/UserDeleted.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserDeleted.js +0 -0
- package/lib/mjs/events/UserDeleted.js.map +1 -0
- package/lib/mjs/events/UserMetadataAdded.d.ts +6 -0
- package/lib/mjs/events/UserMetadataAdded.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserMetadataAdded.js +0 -0
- package/lib/mjs/events/UserMetadataAdded.js.map +1 -0
- package/lib/mjs/events/UserMetadataChanged.d.ts +6 -0
- package/lib/mjs/events/UserMetadataChanged.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserMetadataChanged.js +0 -0
- package/lib/mjs/events/UserMetadataChanged.js.map +1 -0
- package/lib/mjs/events/UserMetadataDeleted.d.ts +6 -0
- package/lib/mjs/events/UserMetadataDeleted.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserMetadataDeleted.js +0 -0
- package/lib/mjs/events/UserMetadataDeleted.js.map +1 -0
- package/lib/mjs/events/UserPasswordChanged.d.ts +6 -0
- package/lib/mjs/events/UserPasswordChanged.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserPasswordChanged.js +0 -0
- package/lib/mjs/events/UserPasswordChanged.js.map +1 -0
- package/lib/mjs/events/UserPropertyChanged.d.ts +8 -0
- package/lib/mjs/events/UserPropertyChanged.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserPropertyChanged.js +0 -0
- package/lib/mjs/events/UserPropertyChanged.js.map +1 -0
- package/lib/mjs/events/UserRoleGranted.d.ts +7 -0
- package/lib/mjs/events/UserRoleGranted.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserRoleGranted.js +0 -0
- package/lib/mjs/events/UserRoleGranted.js.map +1 -0
- package/lib/mjs/events/UserRoleRevoked.d.ts +7 -0
- package/lib/mjs/events/UserRoleRevoked.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserRoleRevoked.js +0 -0
- package/lib/mjs/events/UserRoleRevoked.js.map +1 -0
- package/lib/mjs/events/UserUnbanned.d.ts +6 -0
- package/lib/mjs/events/UserUnbanned.d.ts.map +1 -0
- package/lib/{events → mjs/events}/UserUnbanned.js +0 -0
- package/lib/mjs/events/UserUnbanned.js.map +1 -0
- package/lib/mjs/events/index.d.ts +14 -0
- package/lib/mjs/events/index.d.ts.map +1 -0
- package/lib/{events → mjs/events}/index.js +0 -0
- package/lib/mjs/events/index.js.map +1 -0
- package/lib/mjs/index.d.ts +18 -0
- package/lib/mjs/index.d.ts.map +1 -0
- package/lib/{index.js → mjs/index.js} +0 -0
- package/lib/mjs/index.js.map +1 -0
- package/lib/mjs/interfaces.d.ts +225 -0
- package/lib/mjs/interfaces.d.ts.map +1 -0
- package/lib/{interfaces.js → mjs/interfaces.js} +1 -1
- package/lib/mjs/interfaces.js.map +1 -0
- package/lib/mjs/jobs/UnbanUser.d.ts +10 -0
- package/lib/mjs/jobs/UnbanUser.d.ts.map +1 -0
- package/lib/{jobs → mjs/jobs}/UnbanUser.js +0 -0
- package/lib/mjs/jobs/UnbanUser.js.map +1 -0
- package/lib/mjs/middleware.d.ts +5 -0
- package/lib/mjs/middleware.d.ts.map +1 -0
- package/lib/{middleware.js → mjs/middleware.js} +0 -0
- package/lib/mjs/middleware.js.map +1 -0
- package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts +6 -0
- package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts.map +1 -0
- package/lib/{migrations → mjs/migrations}/RBACInitial_2022_06_28_01_13_00.js +0 -0
- package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -0
- package/lib/mjs/models/User.d.ts +80 -0
- package/lib/mjs/models/User.d.ts.map +1 -0
- package/lib/{models → mjs/models}/User.js +1 -1
- package/lib/mjs/models/User.js.map +1 -0
- package/lib/mjs/models/UserMetadata.d.ts +10 -0
- package/lib/mjs/models/UserMetadata.d.ts.map +1 -0
- package/lib/{models → mjs/models}/UserMetadata.js +0 -0
- package/lib/mjs/models/UserMetadata.js.map +1 -0
- package/lib/mjs/models/UserTimeline.d.ts +29 -0
- package/lib/mjs/models/UserTimeline.d.ts.map +1 -0
- package/lib/{models → mjs/models}/UserTimeline.js +0 -0
- package/lib/mjs/models/UserTimeline.js.map +1 -0
- package/lib/mjs/password.d.ts +26 -0
- package/lib/mjs/password.d.ts.map +1 -0
- package/lib/{password.js → mjs/password.js} +0 -0
- package/lib/mjs/password.js.map +1 -0
- package/lib/mjs/session.d.ts +34 -0
- package/lib/mjs/session.d.ts.map +1 -0
- package/lib/{session.js → mjs/session.js} +0 -0
- package/lib/mjs/session.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +20 -10
- package/lib/auth.d.ts.map +0 -1
- package/lib/auth.js.map +0 -1
- package/lib/cli/ActivateUser.d.ts.map +0 -1
- package/lib/cli/ActivateUser.js.map +0 -1
- package/lib/cli/BanUser.d.ts.map +0 -1
- package/lib/cli/BanUser.js.map +0 -1
- package/lib/cli/ChangeUserPassword.d.ts.map +0 -1
- package/lib/cli/ChangeUserPassword.js.map +0 -1
- package/lib/cli/ClearUserTimelineSchedule.d.ts.map +0 -1
- package/lib/cli/ClearUserTimelineSchedule.js.map +0 -1
- package/lib/cli/CreateUser.d.ts.map +0 -1
- package/lib/cli/CreateUser.js.map +0 -1
- package/lib/cli/DeleteUser.d.ts.map +0 -1
- package/lib/cli/DeleteUser.js.map +0 -1
- package/lib/cli/FindUser.d.ts.map +0 -1
- package/lib/cli/FindUser.js.map +0 -1
- package/lib/cli/GrantUserRole.d.ts.map +0 -1
- package/lib/cli/GrantUserRole.js.map +0 -1
- package/lib/cli/LatestUserEvents.d.ts.map +0 -1
- package/lib/cli/LatestUserEvents.js.map +0 -1
- package/lib/cli/RevokeUserRole.d.ts.map +0 -1
- package/lib/cli/RevokeUserRole.js.map +0 -1
- package/lib/cli/UnbanUserSchedule.d.ts.map +0 -1
- package/lib/cli/UnbanUserSchedule.js.map +0 -1
- package/lib/config/rbac.d.ts.map +0 -1
- package/lib/config/rbac.js.map +0 -1
- package/lib/events/NewUser.d.ts.map +0 -1
- package/lib/events/NewUser.js.map +0 -1
- package/lib/events/UserActivated.d.ts.map +0 -1
- package/lib/events/UserActivated.js.map +0 -1
- package/lib/events/UserBanned.d.ts.map +0 -1
- package/lib/events/UserBanned.js.map +0 -1
- package/lib/events/UserDeactivated.d.ts.map +0 -1
- package/lib/events/UserDeactivated.js.map +0 -1
- package/lib/events/UserDeleted.d.ts.map +0 -1
- package/lib/events/UserDeleted.js.map +0 -1
- package/lib/events/UserMetadataAdded.d.ts.map +0 -1
- package/lib/events/UserMetadataAdded.js.map +0 -1
- package/lib/events/UserMetadataChanged.d.ts.map +0 -1
- package/lib/events/UserMetadataChanged.js.map +0 -1
- package/lib/events/UserMetadataDeleted.d.ts.map +0 -1
- package/lib/events/UserMetadataDeleted.js.map +0 -1
- package/lib/events/UserPasswordChanged.d.ts.map +0 -1
- package/lib/events/UserPasswordChanged.js.map +0 -1
- package/lib/events/UserPropertyChanged.d.ts.map +0 -1
- package/lib/events/UserPropertyChanged.js.map +0 -1
- package/lib/events/UserRoleGranted.d.ts.map +0 -1
- package/lib/events/UserRoleGranted.js.map +0 -1
- package/lib/events/UserRoleRevoked.d.ts.map +0 -1
- package/lib/events/UserRoleRevoked.js.map +0 -1
- package/lib/events/UserUnbanned.d.ts.map +0 -1
- package/lib/events/UserUnbanned.js.map +0 -1
- package/lib/events/index.d.ts.map +0 -1
- package/lib/events/index.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/interfaces.d.ts.map +0 -1
- package/lib/interfaces.js.map +0 -1
- package/lib/jobs/UnbanUser.d.ts.map +0 -1
- package/lib/jobs/UnbanUser.js.map +0 -1
- package/lib/middleware.d.ts.map +0 -1
- package/lib/middleware.js.map +0 -1
- package/lib/migrations/RBACInitial_2022_06_28_01_13_00.d.ts.map +0 -1
- package/lib/migrations/RBACInitial_2022_06_28_01_13_00.js.map +0 -1
- package/lib/models/User.d.ts.map +0 -1
- package/lib/models/User.js.map +0 -1
- package/lib/models/UserMetadata.d.ts.map +0 -1
- package/lib/models/UserMetadata.js.map +0 -1
- package/lib/models/UserTimeline.d.ts.map +0 -1
- package/lib/models/UserTimeline.js.map +0 -1
- package/lib/password.d.ts.map +0 -1
- package/lib/password.js.map +0 -1
- package/lib/session.d.ts.map +0 -1
- package/lib/session.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Bootstrapper } from '@spinajs/di';
|
|
2
|
+
import './auth.js';
|
|
3
|
+
import './password.js';
|
|
4
|
+
import './session.js';
|
|
5
|
+
export * from './interfaces.js';
|
|
6
|
+
export * from './auth.js';
|
|
7
|
+
export * from './password.js';
|
|
8
|
+
export * from './session.js';
|
|
9
|
+
export * from './models/User.js';
|
|
10
|
+
export * from './models/UserMetadata.js';
|
|
11
|
+
export * from './models/UserTimeline.js';
|
|
12
|
+
export * from './migrations/RBACInitial_2022_06_28_01_13_00.js';
|
|
13
|
+
export * from './events/index.js';
|
|
14
|
+
export { AccessControl } from 'accesscontrol';
|
|
15
|
+
export declare class RbacBootstrapper extends Bootstrapper {
|
|
16
|
+
bootstrap(): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AACvE,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AAItB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAChE,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,qBACa,gBAAiB,SAAQ,YAAY;IACzC,SAAS,IAAI,IAAI;CAWzB"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAc,MAAM,aAAa,CAAC;AACvE,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAChE,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGvC,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,YAAY;IACzC,SAAS;QACd,MAAM,EAAE,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/B,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACzC,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,SAAqB,EAAE,aAA4B,EAAE,EAAE;YAC3F,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAgB,eAAe,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,MAAM,EAAE;gBACV,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAZY,gBAAgB;IAD5B,UAAU,CAAC,YAAY,CAAC;GACZ,gBAAgB,CAY5B;SAZY,gBAAgB"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { User } from './models/User.js';
|
|
2
|
+
import { AsyncService } from '@spinajs/di';
|
|
3
|
+
import { DateTime } from 'luxon';
|
|
4
|
+
export interface ISession {
|
|
5
|
+
/**
|
|
6
|
+
* Session identifier
|
|
7
|
+
*/
|
|
8
|
+
SessionId: string;
|
|
9
|
+
/**
|
|
10
|
+
* Expiration date. After that date session is invalid
|
|
11
|
+
*/
|
|
12
|
+
Expiration?: DateTime;
|
|
13
|
+
/**
|
|
14
|
+
* Session creation date. After that date session is invalid
|
|
15
|
+
*/
|
|
16
|
+
Creation: DateTime;
|
|
17
|
+
/**
|
|
18
|
+
* Data holds by session
|
|
19
|
+
*/
|
|
20
|
+
Data: Map<string, unknown>;
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
* Extends session lifetime
|
|
24
|
+
*
|
|
25
|
+
* @param seconds - how mutch to extend, if value not provided, default value from config is used
|
|
26
|
+
*/
|
|
27
|
+
extend(seconds?: number): void;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Service used for generating random password & for hash raw string
|
|
31
|
+
*/
|
|
32
|
+
export declare abstract class PasswordProvider {
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* Checks if hash is valid for given password
|
|
36
|
+
*
|
|
37
|
+
* @param hash - hasth to validate
|
|
38
|
+
* @param password - password to validate
|
|
39
|
+
*/
|
|
40
|
+
abstract verify(hash: string, password: string): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
* Generate hashed string from user password
|
|
44
|
+
*
|
|
45
|
+
* @param input - string to hash
|
|
46
|
+
*/
|
|
47
|
+
abstract hash(input: string): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Generates random user password
|
|
50
|
+
*/
|
|
51
|
+
abstract generate(): string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Provides standard authentication based on login & password
|
|
55
|
+
*
|
|
56
|
+
* Unlike federated auth providers, it check local db for user,
|
|
57
|
+
* or some kind of other source
|
|
58
|
+
*/
|
|
59
|
+
export declare abstract class AuthProvider<U = User> {
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
* Checks if user is already exists with given email
|
|
63
|
+
*
|
|
64
|
+
* @param emailOrUser - email or user object
|
|
65
|
+
*/
|
|
66
|
+
abstract exists(emailOrUser: U | string): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
*
|
|
69
|
+
* Authenticate user with login and pass, if succeded auth result contains user object
|
|
70
|
+
*
|
|
71
|
+
* @param login - user login
|
|
72
|
+
* @param password - user password
|
|
73
|
+
*/
|
|
74
|
+
abstract authenticate(login: string, password: string): Promise<IAuthenticationResult<U>>;
|
|
75
|
+
/**
|
|
76
|
+
*
|
|
77
|
+
* Checks if user is banned
|
|
78
|
+
*
|
|
79
|
+
* @param login - user login
|
|
80
|
+
*/
|
|
81
|
+
abstract isBanned(login: string): Promise<boolean>;
|
|
82
|
+
/**
|
|
83
|
+
* Checks if user is active
|
|
84
|
+
*
|
|
85
|
+
* @param login - user login
|
|
86
|
+
*/
|
|
87
|
+
abstract isActive(login: string): Promise<boolean>;
|
|
88
|
+
/**
|
|
89
|
+
*
|
|
90
|
+
* Cheks if user is deleted
|
|
91
|
+
*
|
|
92
|
+
* @param login - user login
|
|
93
|
+
*/
|
|
94
|
+
abstract isDeleted(login: string): Promise<boolean>;
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
* Gets user from auth store
|
|
98
|
+
*
|
|
99
|
+
* @param login - user login
|
|
100
|
+
*/
|
|
101
|
+
abstract getByLogin(login: string): Promise<U>;
|
|
102
|
+
/**
|
|
103
|
+
*
|
|
104
|
+
* Gets user from auth store
|
|
105
|
+
*
|
|
106
|
+
* @param email - user email
|
|
107
|
+
*/
|
|
108
|
+
abstract getByEmail(email: string): Promise<U>;
|
|
109
|
+
/**
|
|
110
|
+
*
|
|
111
|
+
* Gets user from auth store
|
|
112
|
+
*
|
|
113
|
+
* @param uuid - user uuid
|
|
114
|
+
*/
|
|
115
|
+
abstract getByUUID(uuid: string): Promise<U>;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Used for implementign authentication with external services
|
|
119
|
+
* eg. slack or facebook that uses openid or similar auth
|
|
120
|
+
*
|
|
121
|
+
* NOTE: it should only authorize user, it should not register new one if
|
|
122
|
+
* not exists in use DB.
|
|
123
|
+
*/
|
|
124
|
+
export declare abstract class FederatedAuthProvider<C, U = User> {
|
|
125
|
+
/**
|
|
126
|
+
* Name of strategy
|
|
127
|
+
*/
|
|
128
|
+
abstract get Name(): string;
|
|
129
|
+
/**
|
|
130
|
+
*
|
|
131
|
+
* login service provides Host header for check
|
|
132
|
+
* whitch service is trying to authenticate
|
|
133
|
+
*
|
|
134
|
+
* Base on host adress we choose auth provider
|
|
135
|
+
*
|
|
136
|
+
* @param caller - caller url
|
|
137
|
+
*/
|
|
138
|
+
abstract callerCheck(caller: string): boolean;
|
|
139
|
+
/**
|
|
140
|
+
*
|
|
141
|
+
* Authenticates user based on response from external auth service
|
|
142
|
+
*
|
|
143
|
+
* @param credentials - provided credentials eg. data with token
|
|
144
|
+
*/
|
|
145
|
+
abstract authenticate(credentials: C): Promise<IAuthenticationResult<U>>;
|
|
146
|
+
}
|
|
147
|
+
export declare abstract class SessionProvider<T = ISession> extends AsyncService {
|
|
148
|
+
/**
|
|
149
|
+
*
|
|
150
|
+
* Load session from store. If not exists or expired returns null
|
|
151
|
+
*
|
|
152
|
+
* @param sessionId - session identifier
|
|
153
|
+
*/
|
|
154
|
+
abstract restore(sessionId: string): Promise<T>;
|
|
155
|
+
/**
|
|
156
|
+
*
|
|
157
|
+
* Deletes session from store
|
|
158
|
+
*
|
|
159
|
+
* @param sessionId - session to delete
|
|
160
|
+
*/
|
|
161
|
+
abstract delete(sessionId: string): Promise<void>;
|
|
162
|
+
/**
|
|
163
|
+
*
|
|
164
|
+
* Adds or updates session in store
|
|
165
|
+
*
|
|
166
|
+
* @param session - session to update / insert
|
|
167
|
+
*/
|
|
168
|
+
abstract save(session: ISession): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
*
|
|
171
|
+
* Updates session data for given id
|
|
172
|
+
*
|
|
173
|
+
* @param id - session id
|
|
174
|
+
* @param data - key - value pair of data
|
|
175
|
+
*/
|
|
176
|
+
abstract save(id: string, data: object): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
*
|
|
179
|
+
* Updates only EXPIRATION TIME of session, not changing other data
|
|
180
|
+
*
|
|
181
|
+
* @param session - session to update
|
|
182
|
+
*/
|
|
183
|
+
abstract touch(session: ISession): Promise<void>;
|
|
184
|
+
/**
|
|
185
|
+
*
|
|
186
|
+
* Deletes all session table data
|
|
187
|
+
*
|
|
188
|
+
*/
|
|
189
|
+
abstract truncate(): Promise<void>;
|
|
190
|
+
}
|
|
191
|
+
export declare enum AthenticationErrorCodes {
|
|
192
|
+
E_USER_BANNED = "E_USER_BANNED",
|
|
193
|
+
E_USER_NOT_ACTIVE = "E_USER_NOT_ACTIVE",
|
|
194
|
+
E_INVALID_CREDENTIALS = "E_INVALID_CREDENTIALS",
|
|
195
|
+
E_LOGIN_ATTEMPTS_EXCEEDED = "E_LOGIN_ATTEMPTS_EXCEEDED"
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Authentication result
|
|
199
|
+
*/
|
|
200
|
+
export interface IAuthenticationResult<U = User> {
|
|
201
|
+
/**
|
|
202
|
+
* If auth is succeded, user field is not null
|
|
203
|
+
*/
|
|
204
|
+
User?: U;
|
|
205
|
+
/**
|
|
206
|
+
* If result failed, Error field is not null
|
|
207
|
+
*/
|
|
208
|
+
Error?: {
|
|
209
|
+
/**
|
|
210
|
+
* Error code eg E_IS_BANNED
|
|
211
|
+
*/
|
|
212
|
+
Code: string | AthenticationErrorCodes;
|
|
213
|
+
/**
|
|
214
|
+
* Optional message
|
|
215
|
+
*/
|
|
216
|
+
Message?: string;
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Interface to provide implementation of password rule validation
|
|
221
|
+
*/
|
|
222
|
+
export declare abstract class PasswordValidationProvider {
|
|
223
|
+
abstract check(password: string): boolean;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ export var AthenticationErrorCodes;
|
|
|
29
29
|
AthenticationErrorCodes["E_USER_NOT_ACTIVE"] = "E_USER_NOT_ACTIVE";
|
|
30
30
|
AthenticationErrorCodes["E_INVALID_CREDENTIALS"] = "E_INVALID_CREDENTIALS";
|
|
31
31
|
AthenticationErrorCodes["E_LOGIN_ATTEMPTS_EXCEEDED"] = "E_LOGIN_ATTEMPTS_EXCEEDED";
|
|
32
|
-
})(AthenticationErrorCodes || (AthenticationErrorCodes = {}));
|
|
32
|
+
})(AthenticationErrorCodes = AthenticationErrorCodes || (AthenticationErrorCodes = {}));
|
|
33
33
|
/**
|
|
34
34
|
* Interface to provide implementation of password rule validation
|
|
35
35
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiC3C;;GAEG;AACH,MAAM,OAAgB,gBAAgB;CAsBrC;AAED;;;;;GAKG;AACH,MAAM,OAAgB,YAAY;CAgEjC;AAED;;;;;;GAMG;AACH,MAAM,OAAgB,qBAAqB;CAwB1C;AAED,MAAM,OAAgB,eAA8B,SAAQ,YAAY;CAgDvE;AAED,MAAM,CAAN,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,0DAA+B,CAAA;IAC/B,kEAAuC,CAAA;IACvC,0EAA+C,CAAA;IAC/C,kFAAuD,CAAA;AACzD,CAAC,EALW,uBAAuB,GAAvB,uBAAuB,KAAvB,uBAAuB,QAKlC;AA2BD;;GAEG;AACH,MAAM,OAAgB,0BAA0B;CAE/C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Log } from '@spinajs/log';
|
|
2
|
+
import { QueueClient, QueueJob } from '@spinajs/queue';
|
|
3
|
+
export declare class UnbanUser extends QueueJob {
|
|
4
|
+
UserUUID: string;
|
|
5
|
+
protected Log: Log;
|
|
6
|
+
protected Queue: QueueClient;
|
|
7
|
+
constructor(UserUUID: string);
|
|
8
|
+
execute(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=UnbanUser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnbanUser.d.ts","sourceRoot":"","sources":["../../../src/jobs/UnbanUser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAO,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI5D,qBACa,SAAU,SAAQ,QAAQ;IAOlB,QAAQ,EAAE,MAAM;IALnC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;gBAEV,QAAQ,EAAE,MAAM;IAItB,OAAO;CAQrB"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnbanUser.js","sourceRoot":"","sources":["../../../src/jobs/UnbanUser.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGlC,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,QAAQ;IAOrC,YAAmB,QAAgB;QACjC,KAAK,EAAE,CAAC;QADS,aAAQ,GAAR,QAAQ,CAAQ;IAEnC,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5H,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,CAAC;CACF,CAAA;AAlBC;IAAC,MAAM,CAAC,MAAM,CAAC;8BACA,GAAG;sCAAC;AAEnB;IAAC,UAAU,CAAC,WAAW,CAAC;8BACP,WAAW;wCAAC;AALlB,SAAS;IADrB,GAAG,EAAE;;GACO,SAAS,CAmBrB;SAnBY,SAAS"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAsB,MAAM,cAAc,CAAC;AAEjF,qBACa,6BAA8B,SAAQ,eAAe;IAChE,kBAAkB,CAAC,OAAO,EAAE,YAAY;CAKzC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAgB,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG1E,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,eAAe;IAChE,kBAAkB,CAAC,OAAqB;QACtC,IAAI,OAAO,YAAY,kBAAkB,EAAE;YACzC,gBAAgB;SACjB;IACH,CAAC;CACF,CAAA;AANY,6BAA6B;IADzC,UAAU,CAAC,eAAe,CAAC;GACf,6BAA6B,CAMzC;SANY,6BAA6B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OrmMigration, OrmDriver } from '@spinajs/orm';
|
|
2
|
+
export declare class RBACInitial_2022_06_28_01_13_00 extends OrmMigration {
|
|
3
|
+
up(connection: OrmDriver): Promise<void>;
|
|
4
|
+
down(_connection: OrmDriver): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=RBACInitial_2022_06_28_01_13_00.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RBACInitial_2022_06_28_01_13_00.d.ts","sourceRoot":"","sources":["../../../src/migrations/RBACInitial_2022_06_28_01_13_00.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AAGlE,qBACa,+BAAgC,SAAQ,YAAY;IAClD,EAAE,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CxC,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CACzD"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RBACInitial_2022_06_28_01_13_00.js","sourceRoot":"","sources":["../../../src/migrations/RBACInitial_2022_06_28_01_13_00.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
import { ModelBase, Relation, OneToManyRelationList, QueryScope, ISelectQueryBuilder } from '@spinajs/orm';
|
|
3
|
+
import { UserMetadata } from './UserMetadata.js';
|
|
4
|
+
import { UserAction } from './UserTimeline.js';
|
|
5
|
+
declare class UserMetadataRelation extends OneToManyRelationList<UserMetadata, User> {
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* Checks if metadata exists, its DB first, it will only check DB for existence
|
|
9
|
+
*
|
|
10
|
+
* @param key - key to find
|
|
11
|
+
* @returns {true|false}
|
|
12
|
+
*/
|
|
13
|
+
exists(key: string | RegExp): Promise<boolean>;
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* Deletes meta from DB
|
|
17
|
+
*
|
|
18
|
+
* @param key - meta key do delete or regexp
|
|
19
|
+
*/
|
|
20
|
+
delete(key: string | RegExp): Promise<void>;
|
|
21
|
+
[index: string]: any;
|
|
22
|
+
}
|
|
23
|
+
export declare class UserQueryScopes implements QueryScope {
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* Fetch users that are not banned, are active & email confirmed, not deleted
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
isActiveUser(this: ISelectQueryBuilder<User>): ISelectQueryBuilder<User>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Base model for users used by auth and ACL system
|
|
33
|
+
*
|
|
34
|
+
* To add / extend fields simply extend this model and register as default user model in ACL service
|
|
35
|
+
*/
|
|
36
|
+
export declare class User extends ModelBase {
|
|
37
|
+
protected _hidden: string[];
|
|
38
|
+
static readonly _queryScopes: UserQueryScopes;
|
|
39
|
+
Id: number;
|
|
40
|
+
Uuid: string;
|
|
41
|
+
Email: string;
|
|
42
|
+
/**
|
|
43
|
+
* Hashed password for user
|
|
44
|
+
*/
|
|
45
|
+
Password: string;
|
|
46
|
+
/**
|
|
47
|
+
* Displayed name ( for others to see )
|
|
48
|
+
*/
|
|
49
|
+
Login: string;
|
|
50
|
+
/**
|
|
51
|
+
* User role
|
|
52
|
+
*/
|
|
53
|
+
Role: string[];
|
|
54
|
+
/**
|
|
55
|
+
* User creation date
|
|
56
|
+
*/
|
|
57
|
+
CreatedAt: DateTime;
|
|
58
|
+
/**
|
|
59
|
+
* Registration date. User is registered when clicked confirmation link sended to provided email.
|
|
60
|
+
*/
|
|
61
|
+
RegisteredAt: DateTime;
|
|
62
|
+
/**
|
|
63
|
+
* User deletion date
|
|
64
|
+
*/
|
|
65
|
+
DeletedAt: DateTime;
|
|
66
|
+
LastLoginAt: DateTime;
|
|
67
|
+
IsBanned: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Account is fully active (eg. passed registration)
|
|
70
|
+
*/
|
|
71
|
+
IsActive: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* User additional information. Can be anything
|
|
74
|
+
*/
|
|
75
|
+
Metadata: UserMetadataRelation;
|
|
76
|
+
Actions: Relation<UserAction, User>;
|
|
77
|
+
can(resource: string, permission: string): any;
|
|
78
|
+
}
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=User.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"User.d.ts","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,SAAS,EAA8D,QAAQ,EAAwB,qBAAqB,EAAuB,UAAU,EAAmB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnO,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,cAAM,oBAAqB,SAAQ,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC;IAC1E;;;;;;OAMG;IACU,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAexC;;;;;OAKG;IACU,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAkBxC,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AA6DD,qBAAa,eAAgB,YAAW,UAAU;IAChD;;;;OAIG;IACI,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC;CAOpD;AAED;;;;GAIG;AACH,qBAEa,IAAK,SAAQ,SAAS;IACjC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAsB;IAEjD,gBAAuB,YAAY,EAAE,eAAe,CAAyB;IAGtE,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,MAAM,CAAC;IAErB;;OAEG;IACI,QAAQ,EAAE,MAAM,CAAC;IAExB;;OAEG;IACI,KAAK,EAAE,MAAM,CAAC;IAErB;;OAEG;IACI,IAAI,EAAE,MAAM,EAAE,CAAC;IAEtB;;OAEG;IAEI,SAAS,EAAE,QAAQ,CAAC;IAE3B;;OAEG;IAEI,YAAY,EAAE,QAAQ,CAAC;IAE9B;;OAEG;IAEI,SAAS,EAAE,QAAQ,CAAC;IAGpB,WAAW,EAAE,QAAQ,CAAC;IAEtB,QAAQ,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACI,QAAQ,EAAE,OAAO,CAAC;IAEzB;;OAEG;IAII,QAAQ,EAAE,oBAAoB,CAAC;IAG/B,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEpC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAIhD"}
|
|
@@ -136,12 +136,12 @@ let User = class User extends ModelBase {
|
|
|
136
136
|
super(...arguments);
|
|
137
137
|
this._hidden = ['Password', 'Id'];
|
|
138
138
|
}
|
|
139
|
-
static { this._queryScopes = new UserQueryScopes(); }
|
|
140
139
|
can(resource, permission) {
|
|
141
140
|
const ac = DI.get('AccessControl');
|
|
142
141
|
return ac.can(this.Role)[permission](resource);
|
|
143
142
|
}
|
|
144
143
|
};
|
|
144
|
+
User._queryScopes = new UserQueryScopes();
|
|
145
145
|
__decorate([
|
|
146
146
|
Primary(),
|
|
147
147
|
__metadata("design:type", Number)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ModelBase, SingleRelation } from '@spinajs/orm';
|
|
2
|
+
import type { User } from './User.js';
|
|
3
|
+
export declare class UserMetadata extends ModelBase<UserMetadata> {
|
|
4
|
+
Id: number;
|
|
5
|
+
Key: string;
|
|
6
|
+
Type: 'number' | 'float' | 'string' | 'json' | 'boolean' | 'datetime';
|
|
7
|
+
Value: any;
|
|
8
|
+
User: SingleRelation<User>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=UserMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserMetadata.d.ts","sourceRoot":"","sources":["../../../src/models/UserMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,SAAS,EAAW,cAAc,EAAsB,MAAM,cAAc,CAAC;AAEpH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,qBAEa,YAAa,SAAQ,SAAS,CAAC,YAAY,CAAC;IAEhD,EAAE,EAAE,MAAM,CAAC;IAEX,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAGtE,KAAK,EAAE,GAAG,CAAC;IAGX,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;CACnC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserMetadata.js","sourceRoot":"","sources":["../../../src/models/UserMetadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAM7G,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,SAAuB;CAaxD,CAAA;AAZC;IAAC,OAAO,EAAE;;wCACQ;AAMlB;IAAC,kBAAkB,CAAC,MAAM,CAAC;;2CACT;AAElB;IAAC,SAAS,CAAC,MAAM,CAAC;8BACL,cAAc;0CAAO;AAZvB,YAAY;IAFxB,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,gBAAgB,CAAC;GACX,YAAY,CAaxB;SAbY,YAAY"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ModelBase, SingleRelation } from '@spinajs/orm';
|
|
2
|
+
import { DateTime } from 'luxon';
|
|
3
|
+
import type { User } from './User.js';
|
|
4
|
+
/**
|
|
5
|
+
* Timeline table for storing user actions / interactions
|
|
6
|
+
* eg. login attempts, failed logins, resource deletions, alterations etc.
|
|
7
|
+
*/
|
|
8
|
+
export declare class UserAction extends ModelBase<UserAction> {
|
|
9
|
+
Id: number;
|
|
10
|
+
User: SingleRelation<User>;
|
|
11
|
+
Action: string;
|
|
12
|
+
Data: string;
|
|
13
|
+
/**
|
|
14
|
+
* True if this timeline event is persistent
|
|
15
|
+
* eg. we clear out login attempts older than 5 days
|
|
16
|
+
* but we want to save for eg. events related to payments
|
|
17
|
+
*/
|
|
18
|
+
Persistent: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* If action is performed on some kind of resource
|
|
21
|
+
* Here is stored this resource identifier or primary key in db
|
|
22
|
+
*/
|
|
23
|
+
ResourceId: number;
|
|
24
|
+
asNumber(): number;
|
|
25
|
+
asFloat(): number;
|
|
26
|
+
asJsonObject<T = {}>(): T;
|
|
27
|
+
CreatedAt: DateTime;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=UserTimeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserTimeline.d.ts","sourceRoot":"","sources":["../../../src/models/UserTimeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,SAAS,EAAW,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3G,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC;;;GAGG;AACH,qBAEa,UAAW,SAAQ,SAAS,CAAC,UAAU,CAAC;IAE5C,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAE3B,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACI,UAAU,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACI,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ;IAIR,OAAO;IAIP,YAAY,CAAC,CAAC,GAAG,EAAE;IAKnB,SAAS,EAAE,QAAQ,CAAC;CAC5B"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserTimeline.js","sourceRoot":"","sources":["../../../src/models/UserTimeline.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3G,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC;;;GAGG;AAGI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,SAAqB;IAwB5C,QAAQ;QACb,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,OAAO;QACZ,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAM,CAAC;IACpC,CAAC;CAIF,CAAA;AArCC;IAAC,OAAO,EAAE;;sCACQ;AAElB;IAAC,SAAS,CAAC,MAAM,CAAC;8BACL,cAAc;wCAAO;AA+BlC;IAAC,SAAS,EAAE;8BACM,QAAQ;6CAAC;AArChB,UAAU;IAFtB,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,cAAc,CAAC;GACT,UAAU,CAsCtB;SAtCY,UAAU"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { PasswordProvider, PasswordValidationProvider } from './interfaces.js';
|
|
2
|
+
import { DataValidator } from '@spinajs/validation';
|
|
3
|
+
/**
|
|
4
|
+
* Simple password service that use argon2 hash alghoritm and entropy-string to generate password
|
|
5
|
+
*/
|
|
6
|
+
export declare class BasicPasswordProvider implements PasswordProvider {
|
|
7
|
+
hash(input: string): Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* Checks if hash is valid for given password
|
|
11
|
+
*
|
|
12
|
+
* @param hash - hash to validate
|
|
13
|
+
* @param password - password to validate
|
|
14
|
+
*/
|
|
15
|
+
verify(hash: string, password: string): Promise<boolean>;
|
|
16
|
+
generate(): string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Simple password validation service based on JSON schema validation
|
|
20
|
+
*/
|
|
21
|
+
export declare class BasicPasswordValidationProvider extends PasswordValidationProvider {
|
|
22
|
+
protected ValidationSchema: object;
|
|
23
|
+
protected Validator: DataValidator;
|
|
24
|
+
check(password: string): boolean;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=password.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/password.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAI/E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;GAEG;AACH,qBACa,qBAAsB,YAAW,gBAAgB;IAC/C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjD;;;;;;OAMG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,QAAQ,IAAI,MAAM;CAK1B;AAED;;GAEG;AACH,qBACa,+BAAgC,SAAQ,0BAA0B;IAE7E,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAGnC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC;IAE5B,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAIxC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/password.ts"],"names":[],"mappings":"AAAA,4CAA4C;;;;;;;;;;AAE5C,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACzB,KAAK,CAAC,IAAI,CAAC,KAAa;QAC7B,gDAAgD;QAChD,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,QAAgB;QAChD,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEM,QAAQ;QACb,0EAA0E;QAC1E,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;CACF,CAAA;AAtBY,qBAAqB;IADjC,UAAU,CAAC,gBAAgB,CAAC;GAChB,qBAAqB,CAsBjC;SAtBY,qBAAqB;AAwBlC;;GAEG;AAEI,IAAM,+BAA+B,GAArC,MAAM,+BAAgC,SAAQ,0BAA0B;IAOtE,KAAK,CAAC,QAAgB;QAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAe,CAAC,CAAC;QACpF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AAVC;IAAC,MAAM,CAAC,+BAA+B,CAAC;;yEACL;AAEnC;IAAC,UAAU,EAAE;8BACQ,aAAa;kEAAC;AALxB,+BAA+B;IAD3C,UAAU,CAAC,0BAA0B,CAAC;GAC1B,+BAA+B,CAW3C;SAXY,+BAA+B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
import { SessionProvider, ISession } from './interfaces.js';
|
|
3
|
+
/**
|
|
4
|
+
* Session base class
|
|
5
|
+
*/
|
|
6
|
+
export declare class Session implements ISession {
|
|
7
|
+
protected SessionExpirationTime: number;
|
|
8
|
+
SessionId: string;
|
|
9
|
+
/**
|
|
10
|
+
* Expiration time for session, if null it does not expire
|
|
11
|
+
*/
|
|
12
|
+
Expiration: DateTime;
|
|
13
|
+
Data: Map<string, unknown>;
|
|
14
|
+
Creation: DateTime;
|
|
15
|
+
constructor(session?: Partial<ISession>);
|
|
16
|
+
/**
|
|
17
|
+
* Extends lifetime of session
|
|
18
|
+
*
|
|
19
|
+
* @param seconds - hom mutch to extend
|
|
20
|
+
*/
|
|
21
|
+
extend(seconds?: number): void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Simple session storage in memory, for testing or rapid prototyping
|
|
25
|
+
*/
|
|
26
|
+
export declare class MemorySessionStore extends SessionProvider<ISession> {
|
|
27
|
+
protected Sessions: Map<string, ISession>;
|
|
28
|
+
truncate(): Promise<void>;
|
|
29
|
+
touch(session: ISession): Promise<void>;
|
|
30
|
+
restore(sessionId: string): Promise<ISession | null>;
|
|
31
|
+
delete(sessionId: string): Promise<void>;
|
|
32
|
+
save(idOrSession: ISession | string, data?: object): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAM5D;;GAEG;AACH,qBACa,OAAQ,YAAW,QAAQ;IAEtC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEjC,SAAS,EAAE,MAAM,CAAY;IAEpC;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAQ;IAE5B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAEvC,QAAQ,EAAE,QAAQ,CAAkB;gBAE/B,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IAMvC;;;;OAIG;IACI,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED;;GAEG;AACH,qBACa,kBAAmB,SAAQ,eAAe,CAAC,QAAQ,CAAC;IAC/D,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAA+B;IAE3D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,KAAK,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAYpD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAWhF"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
|