@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,351 @@
1
+ /**
2
+ * Devices Plugin Types
3
+ *
4
+ * Type definitions for device management with adapter support.
5
+ * Supports different device types through adapters (compute, mobile, IoT).
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+
10
+ /**
11
+ * Core device record in the database
12
+ */
13
+ export interface Device {
14
+ /** Primary key - UUID */
15
+ id: string;
16
+ /** Organization ID for multi-tenant isolation */
17
+ org_id?: string;
18
+ /** Owner user ID */
19
+ user_id?: string;
20
+ /** Adapter type that created this device */
21
+ adapter_type: string;
22
+ /** Device name */
23
+ name: string;
24
+ /** First 8 characters of token for identification */
25
+ token_prefix?: string;
26
+ /** Token expiration time */
27
+ token_expires_at: Date;
28
+ /** Last time device was seen */
29
+ last_seen_at?: Date;
30
+ /** Last known IP address */
31
+ last_ip?: string;
32
+ /** Whether device is active */
33
+ is_active: boolean;
34
+ /** Adapter-specific metadata */
35
+ metadata: Record<string, unknown>;
36
+ /** When the device was created */
37
+ created_at: Date;
38
+ /** When the device was last updated */
39
+ updated_at: Date;
40
+ /** Soft delete timestamp */
41
+ deleted_at?: Date;
42
+ }
43
+
44
+ /**
45
+ * Device with token (returned only on create)
46
+ */
47
+ export interface DeviceWithToken extends Device {
48
+ /** Raw token (only returned on create, never stored) */
49
+ token: string;
50
+ }
51
+
52
+ /**
53
+ * Device creation payload (adapter-agnostic)
54
+ */
55
+ export interface CreateDeviceInput {
56
+ /** Organization ID */
57
+ org_id?: string;
58
+ /** Owner user ID */
59
+ user_id?: string;
60
+ /** Device name */
61
+ name: string;
62
+ /** Token validity in days (default: 90) */
63
+ token_validity_days?: number;
64
+ /** Adapter-specific fields */
65
+ metadata?: Record<string, unknown>;
66
+ }
67
+
68
+ /**
69
+ * Device update payload
70
+ */
71
+ export interface UpdateDeviceInput {
72
+ /** Device name */
73
+ name?: string;
74
+ /** Whether device is active */
75
+ is_active?: boolean;
76
+ /** Adapter-specific metadata */
77
+ metadata?: Record<string, unknown>;
78
+ }
79
+
80
+ /**
81
+ * Device search parameters
82
+ */
83
+ export interface DeviceSearchParams {
84
+ /** Organization ID filter */
85
+ org_id?: string;
86
+ /** User ID filter */
87
+ user_id?: string;
88
+ /** Adapter type filter */
89
+ adapter_type?: string;
90
+ /** Active status filter */
91
+ is_active?: boolean;
92
+ /** Search query (searches name) */
93
+ query?: string;
94
+ /** Page number (1-indexed) */
95
+ page?: number;
96
+ /** Items per page */
97
+ limit?: number;
98
+ /** Sort field */
99
+ sortBy?: 'name' | 'created_at' | 'last_seen_at';
100
+ /** Sort direction */
101
+ sortOrder?: 'asc' | 'desc';
102
+ }
103
+
104
+ /**
105
+ * Paginated device list response
106
+ */
107
+ export interface DeviceListResponse {
108
+ devices: Device[];
109
+ total: number;
110
+ page: number;
111
+ limit: number;
112
+ totalPages: number;
113
+ }
114
+
115
+ /**
116
+ * Token verification result
117
+ */
118
+ export interface TokenVerificationResult {
119
+ /** Whether the token is valid */
120
+ valid: boolean;
121
+ /** The device if valid */
122
+ device?: Device;
123
+ /** Error message if invalid */
124
+ error?: string;
125
+ }
126
+
127
+ // ═══════════════════════════════════════════════════════════════════════════
128
+ // Adapter Interface
129
+ // ═══════════════════════════════════════════════════════════════════════════
130
+
131
+ /**
132
+ * Validation result from adapter
133
+ */
134
+ export interface ValidationResult {
135
+ /** Whether validation passed */
136
+ valid: boolean;
137
+ /** Error messages if invalid */
138
+ errors?: string[];
139
+ }
140
+
141
+ /**
142
+ * Device adapter interface - all adapters must implement this
143
+ */
144
+ export interface DeviceAdapter {
145
+ /** Adapter name (e.g., 'compute', 'mobile', 'iot') */
146
+ name: string;
147
+
148
+ /** Token prefix for this adapter (e.g., 'qwf_dev', 'qwb_mob') */
149
+ tokenPrefix: string;
150
+
151
+ /**
152
+ * Validate device input before creation
153
+ */
154
+ validateDeviceInput(input: CreateDeviceInput): ValidationResult;
155
+
156
+ /**
157
+ * Transform input for storage (add adapter-specific defaults)
158
+ */
159
+ transformForStorage(input: CreateDeviceInput): Record<string, unknown>;
160
+
161
+ /**
162
+ * Transform row from storage to typed device
163
+ */
164
+ transformFromStorage(row: Record<string, unknown>): Record<string, unknown>;
165
+
166
+ /**
167
+ * Hook called after device is created (optional)
168
+ */
169
+ onDeviceCreated?(device: Device): Promise<void>;
170
+
171
+ /**
172
+ * Hook called after device is deleted (optional)
173
+ */
174
+ onDeviceDeleted?(device: Device): Promise<void>;
175
+
176
+ /**
177
+ * Hook called when device token is verified (optional)
178
+ */
179
+ onDeviceVerified?(device: Device, ip?: string): Promise<void>;
180
+ }
181
+
182
+ // ═══════════════════════════════════════════════════════════════════════════
183
+ // Store Interface
184
+ // ═══════════════════════════════════════════════════════════════════════════
185
+
186
+ /**
187
+ * Device store interface - all storage backends must implement this
188
+ */
189
+ export interface DeviceStore {
190
+ /** Store name (e.g., 'postgres', 'memory') */
191
+ name: string;
192
+
193
+ /**
194
+ * Initialize the store (create tables, etc.)
195
+ */
196
+ initialize(): Promise<void>;
197
+
198
+ /**
199
+ * Get a device by ID
200
+ */
201
+ getById(id: string): Promise<Device | null>;
202
+
203
+ /**
204
+ * Get a device by token hash
205
+ */
206
+ getByTokenHash(tokenHash: string): Promise<Device | null>;
207
+
208
+ /**
209
+ * Create a new device (stores token hash, not raw token)
210
+ */
211
+ create(input: CreateDeviceInput & { tokenHash: string; tokenPrefix: string; tokenExpiresAt: Date; adapterType: string }): Promise<Device>;
212
+
213
+ /**
214
+ * Update an existing device
215
+ */
216
+ update(id: string, input: UpdateDeviceInput): Promise<Device | null>;
217
+
218
+ /**
219
+ * Soft delete a device
220
+ */
221
+ delete(id: string): Promise<boolean>;
222
+
223
+ /**
224
+ * Search/list devices
225
+ */
226
+ search(params: DeviceSearchParams): Promise<DeviceListResponse>;
227
+
228
+ /**
229
+ * Update last seen timestamp
230
+ */
231
+ updateLastSeen(id: string, ip?: string): Promise<void>;
232
+
233
+ /**
234
+ * Regenerate token for a device (returns new token hash and prefix)
235
+ */
236
+ updateToken(id: string, tokenHash: string, tokenPrefix: string, expiresAt: Date): Promise<boolean>;
237
+
238
+ /**
239
+ * Cleanup expired tokens
240
+ */
241
+ cleanupExpired(): Promise<number>;
242
+
243
+ /**
244
+ * Shutdown the store
245
+ */
246
+ shutdown(): Promise<void>;
247
+ }
248
+
249
+ // ═══════════════════════════════════════════════════════════════════════════
250
+ // Configuration Types
251
+ // ═══════════════════════════════════════════════════════════════════════════
252
+
253
+ /**
254
+ * PostgreSQL device store configuration
255
+ */
256
+ export interface PostgresDeviceStoreConfig {
257
+ /** PostgreSQL pool instance or a function that returns one (for lazy initialization) */
258
+ pool: unknown | (() => unknown);
259
+ /** Devices table name (default: 'devices') */
260
+ tableName?: string;
261
+ /** Schema name (default: 'public') */
262
+ schema?: string;
263
+ /** Auto-create tables on init (default: true) */
264
+ autoCreateTables?: boolean;
265
+ }
266
+
267
+ /**
268
+ * API configuration
269
+ */
270
+ export interface DevicesApiConfig {
271
+ /** API route prefix (default: '/devices') */
272
+ prefix?: string;
273
+ /** Enable CRUD endpoints */
274
+ crud?: boolean;
275
+ /** Enable token verification endpoint */
276
+ verify?: boolean;
277
+ }
278
+
279
+ /**
280
+ * Devices plugin configuration
281
+ */
282
+ export interface DevicesPluginConfig {
283
+ /** Device storage backend */
284
+ store: DeviceStore;
285
+ /** Device adapter (defines device type) */
286
+ adapter: DeviceAdapter;
287
+ /** Default token validity in days (default: 90) */
288
+ defaultTokenValidityDays?: number;
289
+ /** API configuration */
290
+ api?: DevicesApiConfig;
291
+ /** Enable debug logging */
292
+ debug?: boolean;
293
+ }
294
+
295
+ // ═══════════════════════════════════════════════════════════════════════════
296
+ // Adapter-specific Metadata Types
297
+ // ═══════════════════════════════════════════════════════════════════════════
298
+
299
+ /**
300
+ * Compute device metadata (QwickForge - laptops, containers)
301
+ */
302
+ export interface ComputeDeviceMetadata {
303
+ /** Hostname of the device */
304
+ hostname?: string;
305
+ /** Operating system (darwin, linux, win32) */
306
+ os?: string;
307
+ /** OS version */
308
+ os_version?: string;
309
+ /** CPU architecture (x64, arm64) */
310
+ arch?: string;
311
+ /** CLI capabilities */
312
+ cli_capabilities?: string[];
313
+ /** Container ID if running in container */
314
+ container_id?: string;
315
+ /** Node.js version */
316
+ node_version?: string;
317
+ }
318
+
319
+ /**
320
+ * Mobile device metadata (QwickBot - phones, tablets)
321
+ */
322
+ export interface MobileDeviceMetadata {
323
+ /** Device model (iPhone 15 Pro, Pixel 8) */
324
+ device_model?: string;
325
+ /** OS name (iOS, Android) */
326
+ os_name?: string;
327
+ /** OS version */
328
+ os_version?: string;
329
+ /** App version */
330
+ app_version?: string;
331
+ /** Push notification token (FCM/APNs) */
332
+ push_token?: string;
333
+ /** Screen width */
334
+ screen_width?: number;
335
+ /** Screen height */
336
+ screen_height?: number;
337
+ }
338
+
339
+ /**
340
+ * IoT device metadata (future - robots, sensors)
341
+ */
342
+ export interface IoTDeviceMetadata {
343
+ /** Firmware version */
344
+ firmware_version?: string;
345
+ /** Available sensors */
346
+ sensors?: string[];
347
+ /** Device capabilities */
348
+ capabilities?: string[];
349
+ /** MAC address */
350
+ mac_address?: string;
351
+ }
@@ -30,6 +30,8 @@ export {
30
30
  createAuthPlugin,
31
31
  createAuthPluginFromEnv,
32
32
  getAuthStatus,
33
+ setAuthConfigStore,
34
+ postgresAuthConfigStore,
33
35
  isAuthenticated,
34
36
  getAuthenticatedUser,
35
37
  getAccessToken,
@@ -54,6 +56,8 @@ export type {
54
56
  AuthPluginState,
55
57
  AuthEnvPluginOptions,
56
58
  AuthConfigStatus,
59
+ AuthConfigStore,
60
+ PostgresAuthConfigStoreConfig,
57
61
  } from './auth/index.js';
58
62
 
59
63
  // Users plugin
@@ -62,6 +66,8 @@ export {
62
66
  getUserStore,
63
67
  getUserById,
64
68
  getUserByEmail,
69
+ getUserByIdentifier,
70
+ linkUserIdentifiers,
65
71
  findOrCreateUser,
66
72
  postgresUserStore,
67
73
  } from './users/index.js';
@@ -77,6 +83,8 @@ export type {
77
83
  UserSyncConfig,
78
84
  UsersApiConfig,
79
85
  UsersUiConfig,
86
+ UserIdentifiers,
87
+ StoredIdentifiers,
80
88
  } from './users/index.js';
81
89
 
82
90
  // Bans plugin (separate from Users, depends on Users)
@@ -156,3 +164,262 @@ export type {
156
164
  PostgresPreferencesStoreConfig,
157
165
  PreferencesApiConfig,
158
166
  } from './preferences/index.js';
167
+
168
+ // Rate Limit plugin
169
+ export {
170
+ createRateLimitPlugin,
171
+ createRateLimitPluginFromEnv,
172
+ getRateLimitConfigStatus,
173
+ postgresRateLimitStore,
174
+ createRateLimitCache,
175
+ createNoOpCache,
176
+ createSlidingWindowStrategy,
177
+ createFixedWindowStrategy,
178
+ createTokenBucketStrategy,
179
+ getStrategy,
180
+ rateLimitMiddleware,
181
+ rateLimitStatusMiddleware,
182
+ RateLimitService,
183
+ getRateLimitService,
184
+ isLimited,
185
+ checkLimit,
186
+ incrementLimit,
187
+ getRemainingRequests,
188
+ getLimitStatus,
189
+ clearLimit,
190
+ createCleanupJob,
191
+ } from './rate-limit/index.js';
192
+ export type {
193
+ RateLimitPluginConfig,
194
+ RateLimitEnvPluginOptions,
195
+ RateLimitStrategy,
196
+ LimitStatus,
197
+ Strategy,
198
+ StrategyOptions,
199
+ StrategyContext,
200
+ StoredLimit,
201
+ IncrementOptions,
202
+ RateLimitStore,
203
+ PostgresRateLimitStoreConfig,
204
+ CachedLimit,
205
+ RateLimitCache,
206
+ RateLimitCacheConfig,
207
+ RateLimitMiddlewareOptions,
208
+ CheckLimitOptions,
209
+ CleanupJob,
210
+ CleanupJobConfig,
211
+ } from './rate-limit/index.js';
212
+
213
+ // Devices plugin
214
+ export {
215
+ createDevicesPlugin,
216
+ getDeviceStore,
217
+ getDeviceAdapter,
218
+ registerDevice,
219
+ verifyDeviceToken,
220
+ getDeviceById,
221
+ updateDevice,
222
+ deleteDevice,
223
+ regenerateToken,
224
+ listUserDevices,
225
+ listOrgDevices,
226
+ deactivateDevice,
227
+ activateDevice,
228
+ cleanupExpiredTokens,
229
+ postgresDeviceStore,
230
+ computeDeviceAdapter,
231
+ mobileDeviceAdapter,
232
+ generateDeviceToken,
233
+ generatePairingCode,
234
+ hashToken,
235
+ verifyToken,
236
+ isValidTokenFormat,
237
+ isTokenExpired,
238
+ getTokenExpiration,
239
+ DeviceTokens,
240
+ } from './devices/index.js';
241
+ export type {
242
+ Device,
243
+ DeviceWithToken,
244
+ CreateDeviceInput,
245
+ UpdateDeviceInput,
246
+ DeviceSearchParams,
247
+ DeviceListResponse,
248
+ TokenVerificationResult,
249
+ DeviceAdapter,
250
+ ValidationResult as DeviceValidationResult,
251
+ DeviceStore,
252
+ DevicesPluginConfig,
253
+ DevicesApiConfig,
254
+ PostgresDeviceStoreConfig,
255
+ ComputeDeviceMetadata,
256
+ MobileDeviceMetadata,
257
+ IoTDeviceMetadata,
258
+ ComputeAdapterConfig,
259
+ MobileAdapterConfig,
260
+ DeviceTokenPair,
261
+ } from './devices/index.js';
262
+
263
+ // Profiles plugin
264
+ export {
265
+ createProfilesPlugin,
266
+ getProfileStore,
267
+ createProfile,
268
+ getProfileById,
269
+ updateProfile,
270
+ deleteProfile,
271
+ listUserProfiles,
272
+ getDefaultProfile,
273
+ setDefaultProfile,
274
+ getProfilesByAgeGroup,
275
+ getChildProfiles,
276
+ getProfileAge,
277
+ checkTimeRestrictions,
278
+ getContentFilterLevel,
279
+ canAccessContent,
280
+ postgresProfileStore,
281
+ } from './profiles/index.js';
282
+ export type {
283
+ Profile,
284
+ CreateProfileInput,
285
+ UpdateProfileInput,
286
+ ProfileSearchParams,
287
+ ProfileListResponse,
288
+ TimeRestrictionResult,
289
+ ContentFilterLevel,
290
+ AgeGroup,
291
+ ProfileStore,
292
+ ProfilesPluginConfig,
293
+ ProfilesApiConfig,
294
+ PostgresProfileStoreConfig,
295
+ AgeThresholds,
296
+ QwickBotProfileMetadata,
297
+ GamingProfileMetadata,
298
+ } from './profiles/index.js';
299
+
300
+ // Subscriptions plugin
301
+ export {
302
+ createSubscriptionsPlugin,
303
+ getSubscriptionsStore,
304
+ createTier,
305
+ getTierBySlug,
306
+ getTierById,
307
+ listTiers,
308
+ getTierEntitlements,
309
+ setTierEntitlements,
310
+ getUserSubscription,
311
+ createUserSubscription,
312
+ updateUserSubscription,
313
+ cancelSubscription,
314
+ getUserTierSlug,
315
+ getFeatureLimit,
316
+ hasFeature,
317
+ checkFeatureLimit,
318
+ ensureUserSubscription,
319
+ postgresSubscriptionsStore,
320
+ } from './subscriptions/index.js';
321
+ export type {
322
+ SubscriptionTier,
323
+ SubscriptionEntitlement,
324
+ UserSubscription,
325
+ UserSubscriptionWithTier,
326
+ SubscriptionStatus,
327
+ FeatureLimitResult,
328
+ CreateTierInput,
329
+ UpdateTierInput,
330
+ CreateEntitlementInput,
331
+ CreateUserSubscriptionInput,
332
+ UpdateUserSubscriptionInput,
333
+ SubscriptionsStore,
334
+ SubscriptionsPluginConfig,
335
+ SubscriptionsApiConfig,
336
+ PostgresSubscriptionsStoreConfig,
337
+ } from './subscriptions/index.js';
338
+
339
+ // Usage plugin
340
+ export {
341
+ createUsagePlugin,
342
+ getUsageStore,
343
+ getDailyUsage,
344
+ incrementUsage,
345
+ checkUsageLimit,
346
+ getFeatureUsageStatus,
347
+ getDailyUsageSummary,
348
+ resetUsage,
349
+ getRemainingQuota,
350
+ canUseFeature,
351
+ postgresUsageStore,
352
+ } from './usage/index.js';
353
+ export type {
354
+ DailyUsage,
355
+ MonthlyUsage,
356
+ UsageIncrementResult,
357
+ UsageStatus,
358
+ UsageSummary,
359
+ UsageStore,
360
+ UsagePluginConfig,
361
+ UsageApiConfig,
362
+ UsageCleanupConfig,
363
+ PostgresUsageStoreConfig,
364
+ } from './usage/index.js';
365
+
366
+ // Parental plugin
367
+ export {
368
+ createParentalPlugin,
369
+ getParentalStore,
370
+ getParentalAdapter,
371
+ getGuardianSettings,
372
+ createGuardianSettings,
373
+ updateGuardianSettings,
374
+ setPin,
375
+ verifyPin,
376
+ incrementFailedPinAttempts,
377
+ resetFailedPinAttempts,
378
+ getRestrictions,
379
+ createRestriction,
380
+ updateRestriction,
381
+ deleteRestriction,
382
+ pauseProfile,
383
+ resumeProfile,
384
+ checkProfileAccess,
385
+ logActivity,
386
+ getActivityLog,
387
+ postgresParentalStore,
388
+ kidsAdapter,
389
+ } from './parental/index.js';
390
+ export type {
391
+ GuardianSettings,
392
+ ProfileRestriction,
393
+ ActivityLog,
394
+ AccessCheckResult,
395
+ CreateGuardianSettingsInput,
396
+ UpdateGuardianSettingsInput,
397
+ CreateRestrictionInput,
398
+ LogActivityInput,
399
+ ParentalAdapter,
400
+ ParentalStore,
401
+ ParentalPluginConfig,
402
+ ParentalApiConfig,
403
+ PostgresParentalStoreConfig,
404
+ KidsAdapterConfig,
405
+ } from './parental/index.js';
406
+
407
+ // Notifications plugin
408
+ export {
409
+ createNotificationsPlugin,
410
+ NotificationsManager,
411
+ getNotificationsManager,
412
+ hasNotificationsManager,
413
+ broadcastToDevice,
414
+ broadcastToUser,
415
+ broadcastToAll,
416
+ } from './notifications/index.js';
417
+ export type {
418
+ NotificationsPluginConfig,
419
+ SSEClient,
420
+ NotifyPayload,
421
+ SSEEvent,
422
+ NotificationsStats,
423
+ ConnectionHealth,
424
+ NotificationsManagerInterface,
425
+ } from './notifications/index.js';