@qwickapps/server 1.3.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/README.md +157 -0
  2. package/dist/core/control-panel.d.ts.map +1 -1
  3. package/dist/core/control-panel.js +114 -0
  4. package/dist/core/control-panel.js.map +1 -1
  5. package/dist/core/types.d.ts +19 -0
  6. package/dist/core/types.d.ts.map +1 -1
  7. package/dist/index.d.ts +2 -2
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +15 -3
  10. package/dist/index.js.map +1 -1
  11. package/dist/plugins/auth/adapter-wrapper.d.ts +47 -0
  12. package/dist/plugins/auth/adapter-wrapper.d.ts.map +1 -0
  13. package/dist/plugins/auth/adapter-wrapper.js +166 -0
  14. package/dist/plugins/auth/adapter-wrapper.js.map +1 -0
  15. package/dist/plugins/auth/adapter-wrapper.test.d.ts +7 -0
  16. package/dist/plugins/auth/adapter-wrapper.test.d.ts.map +1 -0
  17. package/dist/plugins/auth/adapter-wrapper.test.js +303 -0
  18. package/dist/plugins/auth/adapter-wrapper.test.js.map +1 -0
  19. package/dist/plugins/auth/config-store.d.ts +11 -0
  20. package/dist/plugins/auth/config-store.d.ts.map +1 -0
  21. package/dist/plugins/auth/config-store.js +232 -0
  22. package/dist/plugins/auth/config-store.js.map +1 -0
  23. package/dist/plugins/auth/config-store.test.d.ts +7 -0
  24. package/dist/plugins/auth/config-store.test.d.ts.map +1 -0
  25. package/dist/plugins/auth/config-store.test.js +299 -0
  26. package/dist/plugins/auth/config-store.test.js.map +1 -0
  27. package/dist/plugins/auth/env-config.d.ts +51 -1
  28. package/dist/plugins/auth/env-config.d.ts.map +1 -1
  29. package/dist/plugins/auth/env-config.js +640 -7
  30. package/dist/plugins/auth/env-config.js.map +1 -1
  31. package/dist/plugins/auth/index.d.ts +6 -2
  32. package/dist/plugins/auth/index.d.ts.map +1 -1
  33. package/dist/plugins/auth/index.js +5 -1
  34. package/dist/plugins/auth/index.js.map +1 -1
  35. package/dist/plugins/auth/types.d.ts +106 -0
  36. package/dist/plugins/auth/types.d.ts.map +1 -1
  37. package/dist/plugins/bans/bans-plugin.d.ts.map +1 -1
  38. package/dist/plugins/bans/bans-plugin.js +12 -3
  39. package/dist/plugins/bans/bans-plugin.js.map +1 -1
  40. package/dist/plugins/devices/__tests__/devices-plugin.test.d.ts +11 -0
  41. package/dist/plugins/devices/__tests__/devices-plugin.test.d.ts.map +1 -0
  42. package/dist/plugins/devices/__tests__/devices-plugin.test.js +410 -0
  43. package/dist/plugins/devices/__tests__/devices-plugin.test.js.map +1 -0
  44. package/dist/plugins/devices/__tests__/token-utils.test.d.ts +7 -0
  45. package/dist/plugins/devices/__tests__/token-utils.test.d.ts.map +1 -0
  46. package/dist/plugins/devices/__tests__/token-utils.test.js +197 -0
  47. package/dist/plugins/devices/__tests__/token-utils.test.js.map +1 -0
  48. package/dist/plugins/devices/adapters/compute-adapter.d.ts +36 -0
  49. package/dist/plugins/devices/adapters/compute-adapter.d.ts.map +1 -0
  50. package/dist/plugins/devices/adapters/compute-adapter.js +100 -0
  51. package/dist/plugins/devices/adapters/compute-adapter.js.map +1 -0
  52. package/dist/plugins/devices/adapters/index.d.ts +12 -0
  53. package/dist/plugins/devices/adapters/index.d.ts.map +1 -0
  54. package/dist/plugins/devices/adapters/index.js +10 -0
  55. package/dist/plugins/devices/adapters/index.js.map +1 -0
  56. package/dist/plugins/devices/adapters/mobile-adapter.d.ts +41 -0
  57. package/dist/plugins/devices/adapters/mobile-adapter.d.ts.map +1 -0
  58. package/dist/plugins/devices/adapters/mobile-adapter.js +131 -0
  59. package/dist/plugins/devices/adapters/mobile-adapter.js.map +1 -0
  60. package/dist/plugins/devices/devices-plugin.d.ts +70 -0
  61. package/dist/plugins/devices/devices-plugin.d.ts.map +1 -0
  62. package/dist/plugins/devices/devices-plugin.js +453 -0
  63. package/dist/plugins/devices/devices-plugin.js.map +1 -0
  64. package/dist/plugins/devices/index.d.ts +18 -0
  65. package/dist/plugins/devices/index.d.ts.map +1 -0
  66. package/dist/plugins/devices/index.js +18 -0
  67. package/dist/plugins/devices/index.js.map +1 -0
  68. package/dist/plugins/devices/stores/index.d.ts +9 -0
  69. package/dist/plugins/devices/stores/index.d.ts.map +1 -0
  70. package/dist/plugins/devices/stores/index.js +9 -0
  71. package/dist/plugins/devices/stores/index.js.map +1 -0
  72. package/dist/plugins/devices/stores/postgres-store.d.ts +26 -0
  73. package/dist/plugins/devices/stores/postgres-store.d.ts.map +1 -0
  74. package/dist/plugins/devices/stores/postgres-store.js +199 -0
  75. package/dist/plugins/devices/stores/postgres-store.js.map +1 -0
  76. package/dist/plugins/devices/token-utils.d.ts +100 -0
  77. package/dist/plugins/devices/token-utils.d.ts.map +1 -0
  78. package/dist/plugins/devices/token-utils.js +162 -0
  79. package/dist/plugins/devices/token-utils.js.map +1 -0
  80. package/dist/plugins/devices/types.d.ts +307 -0
  81. package/dist/plugins/devices/types.d.ts.map +1 -0
  82. package/dist/plugins/devices/types.js +10 -0
  83. package/dist/plugins/devices/types.js.map +1 -0
  84. package/dist/plugins/index.d.ts +18 -4
  85. package/dist/plugins/index.d.ts.map +1 -1
  86. package/dist/plugins/index.js +16 -2
  87. package/dist/plugins/index.js.map +1 -1
  88. package/dist/plugins/notifications/__tests__/notifications-manager.test.d.ts +5 -0
  89. package/dist/plugins/notifications/__tests__/notifications-manager.test.d.ts.map +1 -0
  90. package/dist/plugins/notifications/__tests__/notifications-manager.test.js +470 -0
  91. package/dist/plugins/notifications/__tests__/notifications-manager.test.js.map +1 -0
  92. package/dist/plugins/notifications/index.d.ts +71 -0
  93. package/dist/plugins/notifications/index.d.ts.map +1 -0
  94. package/dist/plugins/notifications/index.js +72 -0
  95. package/dist/plugins/notifications/index.js.map +1 -0
  96. package/dist/plugins/notifications/notifications-manager.d.ts +182 -0
  97. package/dist/plugins/notifications/notifications-manager.d.ts.map +1 -0
  98. package/dist/plugins/notifications/notifications-manager.js +610 -0
  99. package/dist/plugins/notifications/notifications-manager.js.map +1 -0
  100. package/dist/plugins/notifications/notifications-plugin.d.ts +83 -0
  101. package/dist/plugins/notifications/notifications-plugin.d.ts.map +1 -0
  102. package/dist/plugins/notifications/notifications-plugin.js +337 -0
  103. package/dist/plugins/notifications/notifications-plugin.js.map +1 -0
  104. package/dist/plugins/notifications/types.d.ts +164 -0
  105. package/dist/plugins/notifications/types.d.ts.map +1 -0
  106. package/dist/plugins/notifications/types.js +9 -0
  107. package/dist/plugins/notifications/types.js.map +1 -0
  108. package/dist/plugins/parental/__tests__/parental-plugin.test.d.ts +12 -0
  109. package/dist/plugins/parental/__tests__/parental-plugin.test.d.ts.map +1 -0
  110. package/dist/plugins/parental/__tests__/parental-plugin.test.js +349 -0
  111. package/dist/plugins/parental/__tests__/parental-plugin.test.js.map +1 -0
  112. package/dist/plugins/parental/adapters/index.d.ts +8 -0
  113. package/dist/plugins/parental/adapters/index.d.ts.map +1 -0
  114. package/dist/plugins/parental/adapters/index.js +7 -0
  115. package/dist/plugins/parental/adapters/index.js.map +1 -0
  116. package/dist/plugins/parental/adapters/kids-adapter.d.ts +24 -0
  117. package/dist/plugins/parental/adapters/kids-adapter.d.ts.map +1 -0
  118. package/dist/plugins/parental/adapters/kids-adapter.js +174 -0
  119. package/dist/plugins/parental/adapters/kids-adapter.js.map +1 -0
  120. package/dist/plugins/parental/index.d.ts +14 -0
  121. package/dist/plugins/parental/index.d.ts.map +1 -0
  122. package/dist/plugins/parental/index.js +15 -0
  123. package/dist/plugins/parental/index.js.map +1 -0
  124. package/dist/plugins/parental/parental-plugin.d.ts +88 -0
  125. package/dist/plugins/parental/parental-plugin.d.ts.map +1 -0
  126. package/dist/plugins/parental/parental-plugin.js +666 -0
  127. package/dist/plugins/parental/parental-plugin.js.map +1 -0
  128. package/dist/plugins/parental/stores/index.d.ts +7 -0
  129. package/dist/plugins/parental/stores/index.d.ts.map +1 -0
  130. package/dist/plugins/parental/stores/index.js +7 -0
  131. package/dist/plugins/parental/stores/index.js.map +1 -0
  132. package/dist/plugins/parental/stores/postgres-store.d.ts +10 -0
  133. package/dist/plugins/parental/stores/postgres-store.d.ts.map +1 -0
  134. package/dist/plugins/parental/stores/postgres-store.js +209 -0
  135. package/dist/plugins/parental/stores/postgres-store.js.map +1 -0
  136. package/dist/plugins/parental/types.d.ts +154 -0
  137. package/dist/plugins/parental/types.d.ts.map +1 -0
  138. package/dist/plugins/parental/types.js +10 -0
  139. package/dist/plugins/parental/types.js.map +1 -0
  140. package/dist/plugins/profiles/__tests__/profiles-plugin.test.d.ts +11 -0
  141. package/dist/plugins/profiles/__tests__/profiles-plugin.test.d.ts.map +1 -0
  142. package/dist/plugins/profiles/__tests__/profiles-plugin.test.js +243 -0
  143. package/dist/plugins/profiles/__tests__/profiles-plugin.test.js.map +1 -0
  144. package/dist/plugins/profiles/index.d.ts +12 -0
  145. package/dist/plugins/profiles/index.d.ts.map +1 -0
  146. package/dist/plugins/profiles/index.js +13 -0
  147. package/dist/plugins/profiles/index.js.map +1 -0
  148. package/dist/plugins/profiles/profiles-plugin.d.ts +71 -0
  149. package/dist/plugins/profiles/profiles-plugin.d.ts.map +1 -0
  150. package/dist/plugins/profiles/profiles-plugin.js +481 -0
  151. package/dist/plugins/profiles/profiles-plugin.js.map +1 -0
  152. package/dist/plugins/profiles/stores/index.d.ts +9 -0
  153. package/dist/plugins/profiles/stores/index.d.ts.map +1 -0
  154. package/dist/plugins/profiles/stores/index.js +9 -0
  155. package/dist/plugins/profiles/stores/index.js.map +1 -0
  156. package/dist/plugins/profiles/stores/postgres-store.d.ts +18 -0
  157. package/dist/plugins/profiles/stores/postgres-store.d.ts.map +1 -0
  158. package/dist/plugins/profiles/stores/postgres-store.js +310 -0
  159. package/dist/plugins/profiles/stores/postgres-store.js.map +1 -0
  160. package/dist/plugins/profiles/types.d.ts +289 -0
  161. package/dist/plugins/profiles/types.d.ts.map +1 -0
  162. package/dist/plugins/profiles/types.js +10 -0
  163. package/dist/plugins/profiles/types.js.map +1 -0
  164. package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.d.ts +7 -0
  165. package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.d.ts.map +1 -0
  166. package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.js +220 -0
  167. package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.js.map +1 -0
  168. package/dist/plugins/rate-limit/cleanup.d.ts +40 -0
  169. package/dist/plugins/rate-limit/cleanup.d.ts.map +1 -0
  170. package/dist/plugins/rate-limit/cleanup.js +72 -0
  171. package/dist/plugins/rate-limit/cleanup.js.map +1 -0
  172. package/dist/plugins/rate-limit/env-config.d.ts +91 -0
  173. package/dist/plugins/rate-limit/env-config.d.ts.map +1 -0
  174. package/dist/plugins/rate-limit/env-config.js +318 -0
  175. package/dist/plugins/rate-limit/env-config.js.map +1 -0
  176. package/dist/plugins/rate-limit/index.d.ts +76 -0
  177. package/dist/plugins/rate-limit/index.d.ts.map +1 -0
  178. package/dist/plugins/rate-limit/index.js +79 -0
  179. package/dist/plugins/rate-limit/index.js.map +1 -0
  180. package/dist/plugins/rate-limit/middleware.d.ts +40 -0
  181. package/dist/plugins/rate-limit/middleware.d.ts.map +1 -0
  182. package/dist/plugins/rate-limit/middleware.js +169 -0
  183. package/dist/plugins/rate-limit/middleware.js.map +1 -0
  184. package/dist/plugins/rate-limit/rate-limit-plugin.d.ts +44 -0
  185. package/dist/plugins/rate-limit/rate-limit-plugin.d.ts.map +1 -0
  186. package/dist/plugins/rate-limit/rate-limit-plugin.js +354 -0
  187. package/dist/plugins/rate-limit/rate-limit-plugin.js.map +1 -0
  188. package/dist/plugins/rate-limit/rate-limit-service.d.ts +110 -0
  189. package/dist/plugins/rate-limit/rate-limit-service.d.ts.map +1 -0
  190. package/dist/plugins/rate-limit/rate-limit-service.js +172 -0
  191. package/dist/plugins/rate-limit/rate-limit-service.js.map +1 -0
  192. package/dist/plugins/rate-limit/stores/cache-store.d.ts +33 -0
  193. package/dist/plugins/rate-limit/stores/cache-store.d.ts.map +1 -0
  194. package/dist/plugins/rate-limit/stores/cache-store.js +225 -0
  195. package/dist/plugins/rate-limit/stores/cache-store.js.map +1 -0
  196. package/dist/plugins/rate-limit/stores/index.d.ts +8 -0
  197. package/dist/plugins/rate-limit/stores/index.d.ts.map +1 -0
  198. package/dist/plugins/rate-limit/stores/index.js +8 -0
  199. package/dist/plugins/rate-limit/stores/index.js.map +1 -0
  200. package/dist/plugins/rate-limit/stores/postgres-store.d.ts +34 -0
  201. package/dist/plugins/rate-limit/stores/postgres-store.d.ts.map +1 -0
  202. package/dist/plugins/rate-limit/stores/postgres-store.js +320 -0
  203. package/dist/plugins/rate-limit/stores/postgres-store.js.map +1 -0
  204. package/dist/plugins/rate-limit/strategies/fixed-window.d.ts +21 -0
  205. package/dist/plugins/rate-limit/strategies/fixed-window.d.ts.map +1 -0
  206. package/dist/plugins/rate-limit/strategies/fixed-window.js +97 -0
  207. package/dist/plugins/rate-limit/strategies/fixed-window.js.map +1 -0
  208. package/dist/plugins/rate-limit/strategies/index.d.ts +14 -0
  209. package/dist/plugins/rate-limit/strategies/index.d.ts.map +1 -0
  210. package/dist/plugins/rate-limit/strategies/index.js +27 -0
  211. package/dist/plugins/rate-limit/strategies/index.js.map +1 -0
  212. package/dist/plugins/rate-limit/strategies/sliding-window.d.ts +22 -0
  213. package/dist/plugins/rate-limit/strategies/sliding-window.d.ts.map +1 -0
  214. package/dist/plugins/rate-limit/strategies/sliding-window.js +122 -0
  215. package/dist/plugins/rate-limit/strategies/sliding-window.js.map +1 -0
  216. package/dist/plugins/rate-limit/strategies/token-bucket.d.ts +28 -0
  217. package/dist/plugins/rate-limit/strategies/token-bucket.d.ts.map +1 -0
  218. package/dist/plugins/rate-limit/strategies/token-bucket.js +121 -0
  219. package/dist/plugins/rate-limit/strategies/token-bucket.js.map +1 -0
  220. package/dist/plugins/rate-limit/types.d.ts +265 -0
  221. package/dist/plugins/rate-limit/types.d.ts.map +1 -0
  222. package/dist/plugins/rate-limit/types.js +9 -0
  223. package/dist/plugins/rate-limit/types.js.map +1 -0
  224. package/dist/plugins/subscriptions/__tests__/subscriptions-plugin.test.d.ts +11 -0
  225. package/dist/plugins/subscriptions/__tests__/subscriptions-plugin.test.d.ts.map +1 -0
  226. package/dist/plugins/subscriptions/__tests__/subscriptions-plugin.test.js +305 -0
  227. package/dist/plugins/subscriptions/__tests__/subscriptions-plugin.test.js.map +1 -0
  228. package/dist/plugins/subscriptions/index.d.ts +12 -0
  229. package/dist/plugins/subscriptions/index.d.ts.map +1 -0
  230. package/dist/plugins/subscriptions/index.js +13 -0
  231. package/dist/plugins/subscriptions/index.js.map +1 -0
  232. package/dist/plugins/subscriptions/stores/index.d.ts +9 -0
  233. package/dist/plugins/subscriptions/stores/index.d.ts.map +1 -0
  234. package/dist/plugins/subscriptions/stores/index.js +9 -0
  235. package/dist/plugins/subscriptions/stores/index.js.map +1 -0
  236. package/dist/plugins/subscriptions/stores/postgres-store.d.ts +14 -0
  237. package/dist/plugins/subscriptions/stores/postgres-store.d.ts.map +1 -0
  238. package/dist/plugins/subscriptions/stores/postgres-store.js +359 -0
  239. package/dist/plugins/subscriptions/stores/postgres-store.js.map +1 -0
  240. package/dist/plugins/subscriptions/subscriptions-plugin.d.ts +82 -0
  241. package/dist/plugins/subscriptions/subscriptions-plugin.d.ts.map +1 -0
  242. package/dist/plugins/subscriptions/subscriptions-plugin.js +449 -0
  243. package/dist/plugins/subscriptions/subscriptions-plugin.js.map +1 -0
  244. package/dist/plugins/subscriptions/types.d.ts +308 -0
  245. package/dist/plugins/subscriptions/types.d.ts.map +1 -0
  246. package/dist/plugins/subscriptions/types.js +10 -0
  247. package/dist/plugins/subscriptions/types.js.map +1 -0
  248. package/dist/plugins/usage/__tests__/usage-plugin.test.d.ts +11 -0
  249. package/dist/plugins/usage/__tests__/usage-plugin.test.d.ts.map +1 -0
  250. package/dist/plugins/usage/__tests__/usage-plugin.test.js +218 -0
  251. package/dist/plugins/usage/__tests__/usage-plugin.test.js.map +1 -0
  252. package/dist/plugins/usage/index.d.ts +12 -0
  253. package/dist/plugins/usage/index.d.ts.map +1 -0
  254. package/dist/plugins/usage/index.js +13 -0
  255. package/dist/plugins/usage/index.js.map +1 -0
  256. package/dist/plugins/usage/stores/index.d.ts +9 -0
  257. package/dist/plugins/usage/stores/index.d.ts.map +1 -0
  258. package/dist/plugins/usage/stores/index.js +9 -0
  259. package/dist/plugins/usage/stores/index.js.map +1 -0
  260. package/dist/plugins/usage/stores/postgres-store.d.ts +14 -0
  261. package/dist/plugins/usage/stores/postgres-store.d.ts.map +1 -0
  262. package/dist/plugins/usage/stores/postgres-store.js +146 -0
  263. package/dist/plugins/usage/stores/postgres-store.js.map +1 -0
  264. package/dist/plugins/usage/types.d.ts +195 -0
  265. package/dist/plugins/usage/types.d.ts.map +1 -0
  266. package/dist/plugins/usage/types.js +10 -0
  267. package/dist/plugins/usage/types.js.map +1 -0
  268. package/dist/plugins/usage/usage-plugin.d.ts +51 -0
  269. package/dist/plugins/usage/usage-plugin.d.ts.map +1 -0
  270. package/dist/plugins/usage/usage-plugin.js +412 -0
  271. package/dist/plugins/usage/usage-plugin.js.map +1 -0
  272. package/dist/plugins/users/__tests__/postgres-store.test.d.ts +10 -0
  273. package/dist/plugins/users/__tests__/postgres-store.test.d.ts.map +1 -0
  274. package/dist/plugins/users/__tests__/postgres-store.test.js +229 -0
  275. package/dist/plugins/users/__tests__/postgres-store.test.js.map +1 -0
  276. package/dist/plugins/users/__tests__/users-plugin.test.js +3 -0
  277. package/dist/plugins/users/__tests__/users-plugin.test.js.map +1 -1
  278. package/dist/plugins/users/index.d.ts +2 -2
  279. package/dist/plugins/users/index.d.ts.map +1 -1
  280. package/dist/plugins/users/index.js +1 -1
  281. package/dist/plugins/users/index.js.map +1 -1
  282. package/dist/plugins/users/stores/postgres-store.d.ts.map +1 -1
  283. package/dist/plugins/users/stores/postgres-store.js +76 -0
  284. package/dist/plugins/users/stores/postgres-store.js.map +1 -1
  285. package/dist/plugins/users/types.d.ts +74 -6
  286. package/dist/plugins/users/types.d.ts.map +1 -1
  287. package/dist/plugins/users/users-plugin.d.ts +15 -1
  288. package/dist/plugins/users/users-plugin.d.ts.map +1 -1
  289. package/dist/plugins/users/users-plugin.js +29 -0
  290. package/dist/plugins/users/users-plugin.js.map +1 -1
  291. package/dist-ui/assets/index-CynOqPkb.js +469 -0
  292. package/dist-ui/assets/{index-BY8OxNgO.js.map → index-CynOqPkb.js.map} +1 -1
  293. package/dist-ui/index.html +1 -1
  294. package/dist-ui-lib/api/controlPanelApi.d.ts +187 -0
  295. package/dist-ui-lib/components/StatCard.d.ts +16 -0
  296. package/dist-ui-lib/dashboard/widgets/AuthStatusWidget.d.ts +9 -0
  297. package/dist-ui-lib/dashboard/widgets/IntegrationStatusWidget.d.ts +9 -0
  298. package/dist-ui-lib/dashboard/widgets/NotificationsStatsWidget.d.ts +12 -0
  299. package/dist-ui-lib/dashboard/widgets/index.d.ts +3 -0
  300. package/dist-ui-lib/index.js +3579 -2379
  301. package/dist-ui-lib/index.js.map +1 -1
  302. package/dist-ui-lib/pages/IntegrationsPage.d.ts +1 -0
  303. package/dist-ui-lib/pages/NotificationsPage.d.ts +9 -0
  304. package/dist-ui-lib/pages/RateLimitPage.d.ts +1 -0
  305. package/dist-ui-lib/utils/formatters.d.ts +19 -0
  306. package/package.json +1 -1
  307. package/src/core/control-panel.ts +128 -0
  308. package/src/core/types.ts +17 -0
  309. package/src/index.ts +216 -0
  310. package/src/plugins/auth/adapter-wrapper.test.ts +395 -0
  311. package/src/plugins/auth/adapter-wrapper.ts +205 -0
  312. package/src/plugins/auth/config-store.test.ts +417 -0
  313. package/src/plugins/auth/config-store.ts +305 -0
  314. package/src/plugins/auth/env-config.ts +714 -7
  315. package/src/plugins/auth/index.ts +22 -1
  316. package/src/plugins/auth/types.ts +138 -0
  317. package/src/plugins/bans/bans-plugin.ts +15 -3
  318. package/src/plugins/devices/__tests__/devices-plugin.test.ts +551 -0
  319. package/src/plugins/devices/__tests__/token-utils.test.ts +264 -0
  320. package/src/plugins/devices/adapters/compute-adapter.ts +139 -0
  321. package/src/plugins/devices/adapters/index.ts +13 -0
  322. package/src/plugins/devices/adapters/mobile-adapter.ts +179 -0
  323. package/src/plugins/devices/devices-plugin.ts +538 -0
  324. package/src/plugins/devices/index.ts +69 -0
  325. package/src/plugins/devices/stores/index.ts +9 -0
  326. package/src/plugins/devices/stores/postgres-store.ts +304 -0
  327. package/src/plugins/devices/token-utils.ts +213 -0
  328. package/src/plugins/devices/types.ts +351 -0
  329. package/src/plugins/index.ts +267 -0
  330. package/src/plugins/notifications/__tests__/notifications-manager.test.ts +637 -0
  331. package/src/plugins/notifications/index.ts +91 -0
  332. package/src/plugins/notifications/notifications-manager.ts +773 -0
  333. package/src/plugins/notifications/notifications-plugin.ts +398 -0
  334. package/src/plugins/notifications/types.ts +207 -0
  335. package/src/plugins/parental/__tests__/parental-plugin.test.ts +465 -0
  336. package/src/plugins/parental/adapters/index.ts +8 -0
  337. package/src/plugins/parental/adapters/kids-adapter.ts +206 -0
  338. package/src/plugins/parental/index.ts +55 -0
  339. package/src/plugins/parental/parental-plugin.ts +759 -0
  340. package/src/plugins/parental/stores/index.ts +7 -0
  341. package/src/plugins/parental/stores/postgres-store.ts +304 -0
  342. package/src/plugins/parental/types.ts +180 -0
  343. package/src/plugins/profiles/__tests__/profiles-plugin.test.ts +321 -0
  344. package/src/plugins/profiles/index.ts +49 -0
  345. package/src/plugins/profiles/profiles-plugin.ts +546 -0
  346. package/src/plugins/profiles/stores/index.ts +9 -0
  347. package/src/plugins/profiles/stores/postgres-store.ts +439 -0
  348. package/src/plugins/profiles/types.ts +338 -0
  349. package/src/plugins/rate-limit/__tests__/rate-limit-plugin.test.ts +259 -0
  350. package/src/plugins/rate-limit/cleanup.ts +117 -0
  351. package/src/plugins/rate-limit/env-config.ts +400 -0
  352. package/src/plugins/rate-limit/index.ts +128 -0
  353. package/src/plugins/rate-limit/middleware.ts +212 -0
  354. package/src/plugins/rate-limit/rate-limit-plugin.ts +400 -0
  355. package/src/plugins/rate-limit/rate-limit-service.ts +228 -0
  356. package/src/plugins/rate-limit/stores/cache-store.ts +261 -0
  357. package/src/plugins/rate-limit/stores/index.ts +8 -0
  358. package/src/plugins/rate-limit/stores/postgres-store.ts +402 -0
  359. package/src/plugins/rate-limit/strategies/fixed-window.ts +116 -0
  360. package/src/plugins/rate-limit/strategies/index.ts +30 -0
  361. package/src/plugins/rate-limit/strategies/sliding-window.ts +157 -0
  362. package/src/plugins/rate-limit/strategies/token-bucket.ts +154 -0
  363. package/src/plugins/rate-limit/types.ts +338 -0
  364. package/src/plugins/subscriptions/__tests__/subscriptions-plugin.test.ts +404 -0
  365. package/src/plugins/subscriptions/index.ts +51 -0
  366. package/src/plugins/subscriptions/stores/index.ts +9 -0
  367. package/src/plugins/subscriptions/stores/postgres-store.ts +482 -0
  368. package/src/plugins/subscriptions/subscriptions-plugin.ts +530 -0
  369. package/src/plugins/subscriptions/types.ts +355 -0
  370. package/src/plugins/usage/__tests__/usage-plugin.test.ts +288 -0
  371. package/src/plugins/usage/index.ts +39 -0
  372. package/src/plugins/usage/stores/index.ts +9 -0
  373. package/src/plugins/usage/stores/postgres-store.ts +213 -0
  374. package/src/plugins/usage/types.ts +222 -0
  375. package/src/plugins/usage/usage-plugin.ts +484 -0
  376. package/src/plugins/users/__tests__/postgres-store.test.ts +326 -0
  377. package/src/plugins/users/__tests__/users-plugin.test.ts +3 -0
  378. package/src/plugins/users/index.ts +6 -0
  379. package/src/plugins/users/stores/postgres-store.ts +104 -0
  380. package/src/plugins/users/types.ts +82 -6
  381. package/src/plugins/users/users-plugin.ts +37 -0
  382. package/ui/src/App.tsx +36 -14
  383. package/ui/src/api/controlPanelApi.ts +329 -6
  384. package/ui/src/components/StatCard.tsx +58 -0
  385. package/ui/src/dashboard/builtInWidgets.tsx +7 -1
  386. package/ui/src/dashboard/widgets/AuthStatusWidget.tsx +143 -0
  387. package/ui/src/dashboard/widgets/IntegrationStatusWidget.tsx +135 -0
  388. package/ui/src/dashboard/widgets/NotificationsStatsWidget.tsx +167 -0
  389. package/ui/src/dashboard/widgets/index.ts +3 -0
  390. package/ui/src/pages/AuthPage.tsx +986 -142
  391. package/ui/src/pages/IntegrationsPage.tsx +288 -0
  392. package/ui/src/pages/NotificationsPage.tsx +417 -0
  393. package/ui/src/pages/RateLimitPage.tsx +292 -0
  394. package/ui/src/utils/formatters.ts +33 -0
  395. package/dist-ui/assets/index-BY8OxNgO.js +0 -465
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Auth Adapter Wrapper
3
+ *
4
+ * Wraps an auth adapter to enable hot-reload without server restart.
5
+ * All method calls are delegated to the underlying adapter, which can
6
+ * be swapped at runtime via setAdapter().
7
+ *
8
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
+ */
10
+ /**
11
+ * Create a no-op adapter for when auth is disabled
12
+ */
13
+ function createNoopAdapter() {
14
+ return {
15
+ name: 'none',
16
+ initialize: () => ((_req, _res, next) => next()),
17
+ isAuthenticated: () => false,
18
+ getUser: () => null,
19
+ };
20
+ }
21
+ /**
22
+ * Create an adapter wrapper for hot-reload support
23
+ *
24
+ * @param initialAdapter Optional initial adapter (defaults to no-op)
25
+ * @returns AdapterWrapper that delegates to the underlying adapter
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const wrapper = createAdapterWrapper(supertokensAdapter(config));
30
+ *
31
+ * // Later, swap the adapter without restart:
32
+ * await wrapper.setAdapter(auth0Adapter(newConfig));
33
+ * ```
34
+ */
35
+ export function createAdapterWrapper(initialAdapter) {
36
+ let currentAdapter = initialAdapter || createNoopAdapter();
37
+ let isInitialized = false;
38
+ let isSwapping = false; // Prevent concurrent adapter swaps
39
+ return {
40
+ // Delegate name to current adapter
41
+ get name() {
42
+ return currentAdapter.name;
43
+ },
44
+ /**
45
+ * Initialize returns the middleware
46
+ * Note: This is called once at startup. The middleware itself
47
+ * will delegate to currentAdapter, which can be swapped.
48
+ */
49
+ initialize() {
50
+ isInitialized = true;
51
+ // Get the initial middleware
52
+ const initialMiddleware = currentAdapter.initialize();
53
+ // Return a wrapper middleware that delegates to current adapter's middleware
54
+ // This allows hot-reload to work - new adapter's middleware will be used
55
+ // Note: For simplicity, we return the initial middleware. Full hot-reload
56
+ // of middleware would require more complex Express route manipulation.
57
+ // The key hot-reload capability is in isAuthenticated/getUser which ARE
58
+ // delegated dynamically.
59
+ return initialMiddleware;
60
+ },
61
+ /**
62
+ * Delegate isAuthenticated to current adapter
63
+ */
64
+ isAuthenticated(req) {
65
+ return currentAdapter.isAuthenticated(req);
66
+ },
67
+ /**
68
+ * Delegate getUser to current adapter
69
+ */
70
+ getUser(req) {
71
+ return currentAdapter.getUser(req);
72
+ },
73
+ /**
74
+ * Delegate hasRoles to current adapter (if available)
75
+ */
76
+ hasRoles(req, roles) {
77
+ if (currentAdapter.hasRoles) {
78
+ return currentAdapter.hasRoles(req, roles);
79
+ }
80
+ return false;
81
+ },
82
+ /**
83
+ * Delegate getAccessToken to current adapter (if available)
84
+ */
85
+ getAccessToken(req) {
86
+ if (currentAdapter.getAccessToken) {
87
+ return currentAdapter.getAccessToken(req);
88
+ }
89
+ return null;
90
+ },
91
+ /**
92
+ * Delegate onUnauthorized to current adapter (if available)
93
+ */
94
+ onUnauthorized(req, res) {
95
+ if (currentAdapter.onUnauthorized) {
96
+ currentAdapter.onUnauthorized(req, res);
97
+ }
98
+ else {
99
+ res.status(401).json({
100
+ error: 'Unauthorized',
101
+ message: 'Authentication required',
102
+ });
103
+ }
104
+ },
105
+ /**
106
+ * Shutdown the current adapter
107
+ */
108
+ async shutdown() {
109
+ if (currentAdapter.shutdown) {
110
+ await currentAdapter.shutdown();
111
+ }
112
+ isInitialized = false;
113
+ },
114
+ /**
115
+ * Hot-reload: Replace the underlying adapter
116
+ * @throws Error if another adapter swap is already in progress
117
+ */
118
+ async setAdapter(adapter) {
119
+ // Prevent concurrent adapter swaps
120
+ if (isSwapping) {
121
+ throw new Error('Adapter swap already in progress');
122
+ }
123
+ isSwapping = true;
124
+ try {
125
+ const oldAdapter = currentAdapter;
126
+ // Shutdown old adapter
127
+ if (oldAdapter.shutdown) {
128
+ try {
129
+ await oldAdapter.shutdown();
130
+ }
131
+ catch (err) {
132
+ console.error('[AdapterWrapper] Error shutting down old adapter:', err);
133
+ }
134
+ }
135
+ // Set new adapter
136
+ currentAdapter = adapter;
137
+ // Initialize new adapter if we're already running
138
+ if (isInitialized) {
139
+ // Note: We initialize the new adapter but can't easily swap Express middleware
140
+ // The new adapter's isAuthenticated/getUser will be used immediately
141
+ // Full middleware hot-reload would require server restart
142
+ currentAdapter.initialize();
143
+ }
144
+ }
145
+ finally {
146
+ isSwapping = false;
147
+ }
148
+ },
149
+ /**
150
+ * Get info about the current adapter
151
+ */
152
+ getAdapterInfo() {
153
+ return {
154
+ name: currentAdapter.name,
155
+ initialized: isInitialized,
156
+ };
157
+ },
158
+ /**
159
+ * Check if a real adapter is set (not the no-op)
160
+ */
161
+ hasAdapter() {
162
+ return currentAdapter.name !== 'none';
163
+ },
164
+ };
165
+ }
166
+ //# sourceMappingURL=adapter-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-wrapper.js","sourceRoot":"","sources":["../../../src/plugins/auth/adapter-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Auth Adapter Wrapper Tests
3
+ *
4
+ * Unit tests for the hot-reload adapter wrapper.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=adapter-wrapper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-wrapper.test.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/adapter-wrapper.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,303 @@
1
+ /**
2
+ * Auth Adapter Wrapper Tests
3
+ *
4
+ * Unit tests for the hot-reload adapter wrapper.
5
+ */
6
+ import { describe, it, expect, vi } from 'vitest';
7
+ import { createAdapterWrapper } from './adapter-wrapper.js';
8
+ // Helper to create a mock adapter
9
+ function createMockAdapter(name, overrides = {}) {
10
+ return {
11
+ name,
12
+ initialize: vi.fn().mockReturnValue((_req, _res, next) => next()),
13
+ isAuthenticated: vi.fn().mockReturnValue(false),
14
+ getUser: vi.fn().mockReturnValue(null),
15
+ hasRoles: vi.fn().mockReturnValue(false),
16
+ getAccessToken: vi.fn().mockReturnValue(null),
17
+ onUnauthorized: vi.fn(),
18
+ shutdown: vi.fn().mockResolvedValue(undefined),
19
+ ...overrides,
20
+ };
21
+ }
22
+ // Helper to create mock request/response
23
+ function createMockReq() {
24
+ return {};
25
+ }
26
+ function createMockRes() {
27
+ return {
28
+ status: vi.fn().mockReturnThis(),
29
+ json: vi.fn().mockReturnThis(),
30
+ };
31
+ }
32
+ describe('createAdapterWrapper', () => {
33
+ describe('initialization', () => {
34
+ it('should create wrapper with no-op adapter by default', () => {
35
+ const wrapper = createAdapterWrapper();
36
+ expect(wrapper.name).toBe('none');
37
+ expect(wrapper.hasAdapter()).toBe(false);
38
+ });
39
+ it('should create wrapper with initial adapter', () => {
40
+ const mockAdapter = createMockAdapter('test');
41
+ const wrapper = createAdapterWrapper(mockAdapter);
42
+ expect(wrapper.name).toBe('test');
43
+ expect(wrapper.hasAdapter()).toBe(true);
44
+ });
45
+ it('should return adapter info', () => {
46
+ const mockAdapter = createMockAdapter('test');
47
+ const wrapper = createAdapterWrapper(mockAdapter);
48
+ const info = wrapper.getAdapterInfo();
49
+ expect(info.name).toBe('test');
50
+ expect(info.initialized).toBe(false);
51
+ });
52
+ });
53
+ describe('initialize', () => {
54
+ it('should call underlying adapter initialize', () => {
55
+ const mockAdapter = createMockAdapter('test');
56
+ const wrapper = createAdapterWrapper(mockAdapter);
57
+ wrapper.initialize();
58
+ expect(mockAdapter.initialize).toHaveBeenCalled();
59
+ });
60
+ it('should mark wrapper as initialized', () => {
61
+ const mockAdapter = createMockAdapter('test');
62
+ const wrapper = createAdapterWrapper(mockAdapter);
63
+ wrapper.initialize();
64
+ expect(wrapper.getAdapterInfo().initialized).toBe(true);
65
+ });
66
+ it('should return middleware from underlying adapter', () => {
67
+ const mockMiddleware = vi.fn();
68
+ const mockAdapter = createMockAdapter('test', {
69
+ initialize: vi.fn().mockReturnValue(mockMiddleware),
70
+ });
71
+ const wrapper = createAdapterWrapper(mockAdapter);
72
+ const result = wrapper.initialize();
73
+ expect(result).toBe(mockMiddleware);
74
+ });
75
+ });
76
+ describe('isAuthenticated', () => {
77
+ it('should delegate to current adapter', () => {
78
+ const mockAdapter = createMockAdapter('test', {
79
+ isAuthenticated: vi.fn().mockReturnValue(true),
80
+ });
81
+ const wrapper = createAdapterWrapper(mockAdapter);
82
+ const req = createMockReq();
83
+ const result = wrapper.isAuthenticated(req);
84
+ expect(mockAdapter.isAuthenticated).toHaveBeenCalledWith(req);
85
+ expect(result).toBe(true);
86
+ });
87
+ it('should use new adapter after swap', async () => {
88
+ const oldAdapter = createMockAdapter('old', {
89
+ isAuthenticated: vi.fn().mockReturnValue(false),
90
+ });
91
+ const newAdapter = createMockAdapter('new', {
92
+ isAuthenticated: vi.fn().mockReturnValue(true),
93
+ });
94
+ const wrapper = createAdapterWrapper(oldAdapter);
95
+ await wrapper.setAdapter(newAdapter);
96
+ const req = createMockReq();
97
+ const result = wrapper.isAuthenticated(req);
98
+ expect(result).toBe(true);
99
+ expect(newAdapter.isAuthenticated).toHaveBeenCalledWith(req);
100
+ });
101
+ });
102
+ describe('getUser', () => {
103
+ it('should delegate to current adapter', () => {
104
+ const mockUser = {
105
+ id: '123',
106
+ email: 'test@example.com',
107
+ name: 'Test User',
108
+ };
109
+ const mockAdapter = createMockAdapter('test', {
110
+ getUser: vi.fn().mockReturnValue(mockUser),
111
+ });
112
+ const wrapper = createAdapterWrapper(mockAdapter);
113
+ const req = createMockReq();
114
+ const result = wrapper.getUser(req);
115
+ expect(mockAdapter.getUser).toHaveBeenCalledWith(req);
116
+ expect(result).toEqual(mockUser);
117
+ });
118
+ it('should return null for no-op adapter', () => {
119
+ const wrapper = createAdapterWrapper();
120
+ const req = createMockReq();
121
+ const result = wrapper.getUser(req);
122
+ expect(result).toBeNull();
123
+ });
124
+ });
125
+ describe('hasRoles', () => {
126
+ it('should delegate to current adapter if method exists', () => {
127
+ const mockAdapter = createMockAdapter('test', {
128
+ hasRoles: vi.fn().mockReturnValue(true),
129
+ });
130
+ const wrapper = createAdapterWrapper(mockAdapter);
131
+ const req = createMockReq();
132
+ // Wrapper always implements hasRoles
133
+ const result = wrapper.hasRoles(req, ['admin']);
134
+ expect(mockAdapter.hasRoles).toHaveBeenCalledWith(req, ['admin']);
135
+ expect(result).toBe(true);
136
+ });
137
+ it('should return false if adapter has no hasRoles method', () => {
138
+ const mockAdapter = createMockAdapter('test');
139
+ delete mockAdapter.hasRoles;
140
+ const wrapper = createAdapterWrapper(mockAdapter);
141
+ const req = createMockReq();
142
+ // Wrapper always implements hasRoles, even if underlying adapter doesn't
143
+ const result = wrapper.hasRoles(req, ['admin']);
144
+ expect(result).toBe(false);
145
+ });
146
+ });
147
+ describe('getAccessToken', () => {
148
+ it('should delegate to current adapter if method exists', () => {
149
+ const mockAdapter = createMockAdapter('test', {
150
+ getAccessToken: vi.fn().mockReturnValue('token123'),
151
+ });
152
+ const wrapper = createAdapterWrapper(mockAdapter);
153
+ const req = createMockReq();
154
+ // Wrapper always implements getAccessToken
155
+ const result = wrapper.getAccessToken(req);
156
+ expect(mockAdapter.getAccessToken).toHaveBeenCalledWith(req);
157
+ expect(result).toBe('token123');
158
+ });
159
+ it('should return null if adapter has no getAccessToken method', () => {
160
+ const mockAdapter = createMockAdapter('test');
161
+ delete mockAdapter.getAccessToken;
162
+ const wrapper = createAdapterWrapper(mockAdapter);
163
+ const req = createMockReq();
164
+ // Wrapper always implements getAccessToken, returns null when adapter doesn't have it
165
+ const result = wrapper.getAccessToken(req);
166
+ expect(result).toBeNull();
167
+ });
168
+ });
169
+ describe('onUnauthorized', () => {
170
+ it('should delegate to current adapter if method exists', () => {
171
+ const mockAdapter = createMockAdapter('test');
172
+ const wrapper = createAdapterWrapper(mockAdapter);
173
+ const req = createMockReq();
174
+ const res = createMockRes();
175
+ // Wrapper always implements onUnauthorized
176
+ wrapper.onUnauthorized(req, res);
177
+ expect(mockAdapter.onUnauthorized).toHaveBeenCalledWith(req, res);
178
+ });
179
+ it('should return 401 JSON response if adapter has no onUnauthorized', () => {
180
+ const mockAdapter = createMockAdapter('test');
181
+ delete mockAdapter.onUnauthorized;
182
+ const wrapper = createAdapterWrapper(mockAdapter);
183
+ const req = createMockReq();
184
+ const res = createMockRes();
185
+ // Wrapper always implements onUnauthorized with default behavior
186
+ wrapper.onUnauthorized(req, res);
187
+ expect(res.status).toHaveBeenCalledWith(401);
188
+ expect(res.json).toHaveBeenCalledWith({
189
+ error: 'Unauthorized',
190
+ message: 'Authentication required',
191
+ });
192
+ });
193
+ });
194
+ describe('setAdapter (hot-reload)', () => {
195
+ it('should swap adapter successfully', async () => {
196
+ const oldAdapter = createMockAdapter('old');
197
+ const newAdapter = createMockAdapter('new');
198
+ const wrapper = createAdapterWrapper(oldAdapter);
199
+ await wrapper.setAdapter(newAdapter);
200
+ expect(wrapper.name).toBe('new');
201
+ });
202
+ it('should shutdown old adapter before swap', async () => {
203
+ const oldAdapter = createMockAdapter('old');
204
+ const newAdapter = createMockAdapter('new');
205
+ const wrapper = createAdapterWrapper(oldAdapter);
206
+ await wrapper.setAdapter(newAdapter);
207
+ expect(oldAdapter.shutdown).toHaveBeenCalled();
208
+ });
209
+ it('should initialize new adapter if wrapper was initialized', async () => {
210
+ const oldAdapter = createMockAdapter('old');
211
+ const newAdapter = createMockAdapter('new');
212
+ const wrapper = createAdapterWrapper(oldAdapter);
213
+ // Initialize wrapper
214
+ wrapper.initialize();
215
+ // Swap adapter
216
+ await wrapper.setAdapter(newAdapter);
217
+ expect(newAdapter.initialize).toHaveBeenCalled();
218
+ });
219
+ it('should not initialize new adapter if wrapper was not initialized', async () => {
220
+ const oldAdapter = createMockAdapter('old');
221
+ const newAdapter = createMockAdapter('new');
222
+ const wrapper = createAdapterWrapper(oldAdapter);
223
+ // Don't initialize wrapper
224
+ // Swap adapter
225
+ await wrapper.setAdapter(newAdapter);
226
+ expect(newAdapter.initialize).not.toHaveBeenCalled();
227
+ });
228
+ it('should prevent concurrent adapter swaps', async () => {
229
+ const oldAdapter = createMockAdapter('old', {
230
+ shutdown: vi.fn().mockImplementation(() => new Promise((resolve) => setTimeout(resolve, 100))),
231
+ });
232
+ const newAdapter1 = createMockAdapter('new1');
233
+ const newAdapter2 = createMockAdapter('new2');
234
+ const wrapper = createAdapterWrapper(oldAdapter);
235
+ // Start first swap
236
+ const swap1 = wrapper.setAdapter(newAdapter1);
237
+ // Try second swap immediately (should fail)
238
+ await expect(wrapper.setAdapter(newAdapter2)).rejects.toThrow('Adapter swap already in progress');
239
+ // Wait for first swap to complete
240
+ await swap1;
241
+ // Now second swap should work
242
+ await wrapper.setAdapter(newAdapter2);
243
+ expect(wrapper.name).toBe('new2');
244
+ });
245
+ it('should handle shutdown errors gracefully', async () => {
246
+ const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
247
+ const oldAdapter = createMockAdapter('old', {
248
+ shutdown: vi.fn().mockRejectedValue(new Error('Shutdown failed')),
249
+ });
250
+ const newAdapter = createMockAdapter('new');
251
+ const wrapper = createAdapterWrapper(oldAdapter);
252
+ // Should not throw
253
+ await wrapper.setAdapter(newAdapter);
254
+ expect(wrapper.name).toBe('new');
255
+ expect(consoleErrorSpy).toHaveBeenCalledWith('[AdapterWrapper] Error shutting down old adapter:', expect.any(Error));
256
+ consoleErrorSpy.mockRestore();
257
+ });
258
+ });
259
+ describe('shutdown', () => {
260
+ it('should shutdown current adapter', async () => {
261
+ const mockAdapter = createMockAdapter('test');
262
+ const wrapper = createAdapterWrapper(mockAdapter);
263
+ wrapper.initialize();
264
+ // Wrapper always implements shutdown
265
+ await wrapper.shutdown();
266
+ expect(mockAdapter.shutdown).toHaveBeenCalled();
267
+ expect(wrapper.getAdapterInfo().initialized).toBe(false);
268
+ });
269
+ it('should handle adapters without shutdown method', async () => {
270
+ const mockAdapter = createMockAdapter('test');
271
+ delete mockAdapter.shutdown;
272
+ const wrapper = createAdapterWrapper(mockAdapter);
273
+ wrapper.initialize();
274
+ // Should not throw - wrapper handles missing shutdown gracefully
275
+ await wrapper.shutdown();
276
+ expect(wrapper.getAdapterInfo().initialized).toBe(false);
277
+ });
278
+ });
279
+ describe('no-op adapter', () => {
280
+ it('should return false for isAuthenticated', () => {
281
+ const wrapper = createAdapterWrapper();
282
+ const req = createMockReq();
283
+ expect(wrapper.isAuthenticated(req)).toBe(false);
284
+ });
285
+ it('should return null for getUser', () => {
286
+ const wrapper = createAdapterWrapper();
287
+ const req = createMockReq();
288
+ expect(wrapper.getUser(req)).toBeNull();
289
+ });
290
+ it('should return middleware that calls next', () => {
291
+ const wrapper = createAdapterWrapper();
292
+ const middleware = wrapper.initialize();
293
+ const req = createMockReq();
294
+ const res = createMockRes();
295
+ const next = vi.fn();
296
+ if (typeof middleware === 'function') {
297
+ middleware(req, res, next);
298
+ expect(next).toHaveBeenCalled();
299
+ }
300
+ });
301
+ });
302
+ });
303
+ //# sourceMappingURL=adapter-wrapper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-wrapper.test.js","sourceRoot":"","sources":["../../../src/plugins/auth/adapter-wrapper.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Auth Configuration Store
3
+ *
4
+ * PostgreSQL-based storage for runtime auth configuration.
5
+ * Supports pg_notify for cross-instance hot-reload in scaled deployments.
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import type { AuthConfigStore, PostgresAuthConfigStoreConfig } from './types.js';
10
+ export declare function postgresAuthConfigStore(config: PostgresAuthConfigStoreConfig): AuthConfigStore;
11
+ //# sourceMappingURL=config-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/config-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AAgDpB,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,6BAA6B,GAAG,eAAe,CAmP9F"}