@qwickapps/server 1.1.9 → 1.3.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 (240) hide show
  1. package/README.md +318 -0
  2. package/dist/core/control-panel.d.ts +7 -2
  3. package/dist/core/control-panel.d.ts.map +1 -1
  4. package/dist/core/control-panel.js +99 -60
  5. package/dist/core/control-panel.js.map +1 -1
  6. package/dist/core/gateway.d.ts +159 -79
  7. package/dist/core/gateway.d.ts.map +1 -1
  8. package/dist/core/gateway.js +683 -315
  9. package/dist/core/gateway.js.map +1 -1
  10. package/dist/core/index.d.ts +3 -1
  11. package/dist/core/index.d.ts.map +1 -1
  12. package/dist/core/index.js +2 -0
  13. package/dist/core/index.js.map +1 -1
  14. package/dist/core/plugin-registry.d.ts +271 -0
  15. package/dist/core/plugin-registry.d.ts.map +1 -0
  16. package/dist/core/plugin-registry.js +326 -0
  17. package/dist/core/plugin-registry.js.map +1 -0
  18. package/dist/core/types.d.ts +16 -33
  19. package/dist/core/types.d.ts.map +1 -1
  20. package/dist/index.d.ts +8 -5
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +15 -7
  23. package/dist/index.js.map +1 -1
  24. package/dist/plugins/auth/adapters/auth0-adapter.d.ts +14 -0
  25. package/dist/plugins/auth/adapters/auth0-adapter.d.ts.map +1 -0
  26. package/dist/plugins/auth/adapters/auth0-adapter.js +179 -0
  27. package/dist/plugins/auth/adapters/auth0-adapter.js.map +1 -0
  28. package/dist/plugins/auth/adapters/basic-adapter.d.ts +13 -0
  29. package/dist/plugins/auth/adapters/basic-adapter.d.ts.map +1 -0
  30. package/dist/plugins/auth/adapters/basic-adapter.js +51 -0
  31. package/dist/plugins/auth/adapters/basic-adapter.js.map +1 -0
  32. package/dist/plugins/auth/adapters/index.d.ts +9 -0
  33. package/dist/plugins/auth/adapters/index.d.ts.map +1 -0
  34. package/dist/plugins/auth/adapters/index.js +9 -0
  35. package/dist/plugins/auth/adapters/index.js.map +1 -0
  36. package/dist/plugins/auth/adapters/supabase-adapter.d.ts +13 -0
  37. package/dist/plugins/auth/adapters/supabase-adapter.d.ts.map +1 -0
  38. package/dist/plugins/auth/adapters/supabase-adapter.js +109 -0
  39. package/dist/plugins/auth/adapters/supabase-adapter.js.map +1 -0
  40. package/dist/plugins/auth/auth-plugin.d.ts +40 -0
  41. package/dist/plugins/auth/auth-plugin.d.ts.map +1 -0
  42. package/dist/plugins/auth/auth-plugin.js +255 -0
  43. package/dist/plugins/auth/auth-plugin.js.map +1 -0
  44. package/dist/plugins/auth/auth-plugin.test.d.ts +9 -0
  45. package/dist/plugins/auth/auth-plugin.test.d.ts.map +1 -0
  46. package/dist/plugins/auth/auth-plugin.test.js +147 -0
  47. package/dist/plugins/auth/auth-plugin.test.js.map +1 -0
  48. package/dist/plugins/auth/index.d.ts +12 -0
  49. package/dist/plugins/auth/index.d.ts.map +1 -0
  50. package/dist/plugins/auth/index.js +13 -0
  51. package/dist/plugins/auth/index.js.map +1 -0
  52. package/dist/plugins/auth/types.d.ts +148 -0
  53. package/dist/plugins/auth/types.d.ts.map +1 -0
  54. package/dist/plugins/auth/types.js +14 -0
  55. package/dist/plugins/auth/types.js.map +1 -0
  56. package/dist/plugins/bans/bans-plugin.d.ts +59 -0
  57. package/dist/plugins/bans/bans-plugin.d.ts.map +1 -0
  58. package/dist/plugins/bans/bans-plugin.js +428 -0
  59. package/dist/plugins/bans/bans-plugin.js.map +1 -0
  60. package/dist/plugins/bans/index.d.ts +9 -0
  61. package/dist/plugins/bans/index.d.ts.map +1 -0
  62. package/dist/plugins/bans/index.js +10 -0
  63. package/dist/plugins/bans/index.js.map +1 -0
  64. package/dist/plugins/bans/stores/index.d.ts +7 -0
  65. package/dist/plugins/bans/stores/index.d.ts.map +1 -0
  66. package/dist/plugins/bans/stores/index.js +7 -0
  67. package/dist/plugins/bans/stores/index.js.map +1 -0
  68. package/dist/plugins/bans/stores/postgres-store.d.ts +29 -0
  69. package/dist/plugins/bans/stores/postgres-store.d.ts.map +1 -0
  70. package/dist/plugins/bans/stores/postgres-store.js +132 -0
  71. package/dist/plugins/bans/stores/postgres-store.js.map +1 -0
  72. package/dist/plugins/bans/types.d.ts +128 -0
  73. package/dist/plugins/bans/types.d.ts.map +1 -0
  74. package/dist/plugins/bans/types.js +11 -0
  75. package/dist/plugins/bans/types.js.map +1 -0
  76. package/dist/plugins/cache-plugin.d.ts +14 -3
  77. package/dist/plugins/cache-plugin.d.ts.map +1 -1
  78. package/dist/plugins/cache-plugin.js +27 -7
  79. package/dist/plugins/cache-plugin.js.map +1 -1
  80. package/dist/plugins/cache-plugin.test.js +96 -32
  81. package/dist/plugins/cache-plugin.test.js.map +1 -1
  82. package/dist/plugins/config-plugin.d.ts +3 -2
  83. package/dist/plugins/config-plugin.d.ts.map +1 -1
  84. package/dist/plugins/config-plugin.js +17 -10
  85. package/dist/plugins/config-plugin.js.map +1 -1
  86. package/dist/plugins/diagnostics-plugin.d.ts +2 -2
  87. package/dist/plugins/diagnostics-plugin.d.ts.map +1 -1
  88. package/dist/plugins/diagnostics-plugin.js +17 -10
  89. package/dist/plugins/diagnostics-plugin.js.map +1 -1
  90. package/dist/plugins/entitlements/entitlements-plugin.d.ts +95 -0
  91. package/dist/plugins/entitlements/entitlements-plugin.d.ts.map +1 -0
  92. package/dist/plugins/entitlements/entitlements-plugin.js +707 -0
  93. package/dist/plugins/entitlements/entitlements-plugin.js.map +1 -0
  94. package/dist/plugins/entitlements/index.d.ts +12 -0
  95. package/dist/plugins/entitlements/index.d.ts.map +1 -0
  96. package/dist/plugins/entitlements/index.js +16 -0
  97. package/dist/plugins/entitlements/index.js.map +1 -0
  98. package/dist/plugins/entitlements/sources/index.d.ts +9 -0
  99. package/dist/plugins/entitlements/sources/index.d.ts.map +1 -0
  100. package/dist/plugins/entitlements/sources/index.js +9 -0
  101. package/dist/plugins/entitlements/sources/index.js.map +1 -0
  102. package/dist/plugins/entitlements/sources/postgres-source.d.ts +29 -0
  103. package/dist/plugins/entitlements/sources/postgres-source.d.ts.map +1 -0
  104. package/dist/plugins/entitlements/sources/postgres-source.js +169 -0
  105. package/dist/plugins/entitlements/sources/postgres-source.js.map +1 -0
  106. package/dist/plugins/entitlements/types.d.ts +232 -0
  107. package/dist/plugins/entitlements/types.d.ts.map +1 -0
  108. package/dist/plugins/entitlements/types.js +11 -0
  109. package/dist/plugins/entitlements/types.js.map +1 -0
  110. package/dist/plugins/frontend-app-plugin.d.ts +9 -3
  111. package/dist/plugins/frontend-app-plugin.d.ts.map +1 -1
  112. package/dist/plugins/frontend-app-plugin.js +14 -9
  113. package/dist/plugins/frontend-app-plugin.js.map +1 -1
  114. package/dist/plugins/health-plugin.d.ts +5 -2
  115. package/dist/plugins/health-plugin.d.ts.map +1 -1
  116. package/dist/plugins/health-plugin.js +20 -5
  117. package/dist/plugins/health-plugin.js.map +1 -1
  118. package/dist/plugins/index.d.ts +8 -2
  119. package/dist/plugins/index.d.ts.map +1 -1
  120. package/dist/plugins/index.js +8 -2
  121. package/dist/plugins/index.js.map +1 -1
  122. package/dist/plugins/logs-plugin.d.ts +3 -2
  123. package/dist/plugins/logs-plugin.d.ts.map +1 -1
  124. package/dist/plugins/logs-plugin.js +21 -12
  125. package/dist/plugins/logs-plugin.js.map +1 -1
  126. package/dist/plugins/postgres-plugin.d.ts +3 -3
  127. package/dist/plugins/postgres-plugin.d.ts.map +1 -1
  128. package/dist/plugins/postgres-plugin.js +9 -7
  129. package/dist/plugins/postgres-plugin.js.map +1 -1
  130. package/dist/plugins/postgres-plugin.test.js +47 -29
  131. package/dist/plugins/postgres-plugin.test.js.map +1 -1
  132. package/dist/plugins/users/index.d.ts +12 -0
  133. package/dist/plugins/users/index.d.ts.map +1 -0
  134. package/dist/plugins/users/index.js +13 -0
  135. package/dist/plugins/users/index.js.map +1 -0
  136. package/dist/plugins/users/stores/index.d.ts +7 -0
  137. package/dist/plugins/users/stores/index.d.ts.map +1 -0
  138. package/dist/plugins/users/stores/index.js +7 -0
  139. package/dist/plugins/users/stores/index.js.map +1 -0
  140. package/dist/plugins/users/stores/postgres-store.d.ts +28 -0
  141. package/dist/plugins/users/stores/postgres-store.d.ts.map +1 -0
  142. package/dist/plugins/users/stores/postgres-store.js +157 -0
  143. package/dist/plugins/users/stores/postgres-store.js.map +1 -0
  144. package/dist/plugins/users/types.d.ts +189 -0
  145. package/dist/plugins/users/types.d.ts.map +1 -0
  146. package/dist/plugins/users/types.js +12 -0
  147. package/dist/plugins/users/types.js.map +1 -0
  148. package/dist/plugins/users/users-plugin.d.ts +39 -0
  149. package/dist/plugins/users/users-plugin.d.ts.map +1 -0
  150. package/dist/plugins/users/users-plugin.js +242 -0
  151. package/dist/plugins/users/users-plugin.js.map +1 -0
  152. package/dist-ui/assets/index-Bsp2ntcw.js +465 -0
  153. package/dist-ui/assets/index-Bsp2ntcw.js.map +1 -0
  154. package/dist-ui/index.html +1 -1
  155. package/dist-ui-lib/api/controlPanelApi.d.ts +232 -0
  156. package/dist-ui-lib/components/ControlPanelApp.d.ts +61 -0
  157. package/dist-ui-lib/components/index.d.ts +18 -0
  158. package/dist-ui-lib/config/AppConfig.d.ts +7 -0
  159. package/dist-ui-lib/dashboard/DashboardWidgetRegistry.d.ts +62 -0
  160. package/dist-ui-lib/dashboard/DashboardWidgetRenderer.d.ts +8 -0
  161. package/dist-ui-lib/dashboard/PluginWidgetRenderer.d.ts +19 -0
  162. package/dist-ui-lib/dashboard/WidgetComponentRegistry.d.ts +44 -0
  163. package/dist-ui-lib/dashboard/builtInWidgets.d.ts +19 -0
  164. package/dist-ui-lib/dashboard/index.d.ts +13 -0
  165. package/dist-ui-lib/dashboard/widgets/ServiceHealthWidget.d.ts +12 -0
  166. package/dist-ui-lib/dashboard/widgets/index.d.ts +6 -0
  167. package/dist-ui-lib/index.js +6441 -0
  168. package/dist-ui-lib/index.js.map +1 -0
  169. package/dist-ui-lib/pages/ConfigPage.d.ts +1 -0
  170. package/dist-ui-lib/pages/DashboardPage.d.ts +1 -0
  171. package/dist-ui-lib/pages/DiagnosticsPage.d.ts +1 -0
  172. package/dist-ui-lib/pages/EntitlementsPage.d.ts +17 -0
  173. package/dist-ui-lib/pages/LogsPage.d.ts +1 -0
  174. package/dist-ui-lib/pages/NotFoundPage.d.ts +1 -0
  175. package/dist-ui-lib/pages/PluginPage.d.ts +15 -0
  176. package/dist-ui-lib/pages/SystemPage.d.ts +1 -0
  177. package/dist-ui-lib/pages/UsersPage.d.ts +22 -0
  178. package/package.json +18 -6
  179. package/src/core/control-panel.ts +122 -68
  180. package/src/core/gateway.ts +870 -399
  181. package/src/core/index.ts +21 -2
  182. package/src/core/plugin-registry.ts +653 -0
  183. package/src/core/types.ts +31 -37
  184. package/src/index.ts +118 -19
  185. package/src/plugins/auth/adapters/auth0-adapter.ts +214 -0
  186. package/src/plugins/auth/adapters/basic-adapter.ts +61 -0
  187. package/src/plugins/auth/adapters/index.ts +9 -0
  188. package/src/plugins/auth/adapters/supabase-adapter.ts +141 -0
  189. package/src/plugins/auth/auth-plugin.test.ts +176 -0
  190. package/src/plugins/auth/auth-plugin.ts +303 -0
  191. package/src/plugins/auth/index.ts +33 -0
  192. package/src/plugins/auth/types.ts +165 -0
  193. package/src/plugins/bans/bans-plugin.ts +485 -0
  194. package/src/plugins/bans/index.ts +31 -0
  195. package/src/plugins/bans/stores/index.ts +7 -0
  196. package/src/plugins/bans/stores/postgres-store.ts +195 -0
  197. package/src/plugins/bans/types.ts +141 -0
  198. package/src/plugins/cache-plugin.test.ts +105 -32
  199. package/src/plugins/cache-plugin.ts +40 -9
  200. package/src/plugins/config-plugin.ts +23 -12
  201. package/src/plugins/diagnostics-plugin.ts +22 -12
  202. package/src/plugins/entitlements/entitlements-plugin.ts +820 -0
  203. package/src/plugins/entitlements/index.ts +51 -0
  204. package/src/plugins/entitlements/sources/index.ts +9 -0
  205. package/src/plugins/entitlements/sources/postgres-source.ts +253 -0
  206. package/src/plugins/entitlements/types.ts +256 -0
  207. package/src/plugins/frontend-app-plugin.ts +24 -12
  208. package/src/plugins/health-plugin.ts +27 -7
  209. package/src/plugins/index.ts +106 -4
  210. package/src/plugins/logs-plugin.ts +28 -14
  211. package/src/plugins/postgres-plugin.test.ts +49 -29
  212. package/src/plugins/postgres-plugin.ts +11 -9
  213. package/src/plugins/users/index.ts +35 -0
  214. package/src/plugins/users/stores/index.ts +7 -0
  215. package/src/plugins/users/stores/postgres-store.ts +225 -0
  216. package/src/plugins/users/types.ts +209 -0
  217. package/src/plugins/users/users-plugin.ts +281 -0
  218. package/ui/src/App.tsx +185 -31
  219. package/ui/src/api/controlPanelApi.ts +354 -1
  220. package/ui/src/components/ControlPanelApp.tsx +209 -0
  221. package/ui/src/components/index.ts +62 -0
  222. package/ui/src/dashboard/DashboardWidgetRegistry.tsx +129 -0
  223. package/ui/src/dashboard/DashboardWidgetRenderer.tsx +34 -0
  224. package/ui/src/dashboard/PluginWidgetRenderer.tsx +115 -0
  225. package/ui/src/dashboard/WidgetComponentRegistry.tsx +116 -0
  226. package/ui/src/dashboard/builtInWidgets.tsx +29 -0
  227. package/ui/src/dashboard/index.ts +35 -0
  228. package/ui/src/dashboard/widgets/ServiceHealthWidget.tsx +140 -0
  229. package/ui/src/dashboard/widgets/index.ts +7 -0
  230. package/ui/src/pages/DashboardPage.tsx +28 -149
  231. package/ui/src/pages/EntitlementsPage.tsx +557 -0
  232. package/ui/src/pages/LogsPage.tsx +174 -8
  233. package/ui/src/pages/PluginPage.tsx +148 -0
  234. package/ui/src/pages/SystemPage.tsx +445 -0
  235. package/ui/src/pages/UsersPage.tsx +837 -0
  236. package/ui/tsconfig.lib.json +11 -0
  237. package/ui/vite.lib.config.ts +51 -0
  238. package/dist-ui/assets/index-CW1BviRn.js +0 -465
  239. package/dist-ui/assets/index-CW1BviRn.js.map +0 -1
  240. package/ui/src/pages/HealthPage.tsx +0 -204
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements-plugin.js","sourceRoot":"","sources":["../../../src/plugins/entitlements/entitlements-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Entitlements Plugin
3
+ *
4
+ * User entitlement management for @qwickapps/server.
5
+ *
6
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
7
+ */
8
+ export { createEntitlementsPlugin } from './entitlements-plugin.js';
9
+ export { getEntitlementSource, isSourceReadonly, getEntitlements, refreshEntitlements, hasEntitlement, hasAnyEntitlement, hasAllEntitlements, grantEntitlement, revokeEntitlement, setEntitlements, getAvailableEntitlements, getEntitlementStats, invalidateEntitlementCache, storeExternalIdMapping, invalidateByExternalId, requireEntitlement, requireAnyEntitlement, requireAllEntitlements, } from './entitlements-plugin.js';
10
+ export { postgresEntitlementSource } from './sources/index.js';
11
+ export type { EntitlementSource, EntitlementResult, EntitlementDefinition, EntitlementsPluginConfig, EntitlementCallbacks, EntitlementsCacheConfig, EntitlementsApiConfig, PostgresEntitlementSourceConfig, UserEntitlement, CachedEntitlements, EntitlementStats, } from './types.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/entitlements/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EAEtB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,EAC/B,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Entitlements Plugin
3
+ *
4
+ * User entitlement management for @qwickapps/server.
5
+ *
6
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
7
+ */
8
+ // Main plugin
9
+ export { createEntitlementsPlugin } from './entitlements-plugin.js';
10
+ // Helper functions
11
+ export { getEntitlementSource, isSourceReadonly, getEntitlements, refreshEntitlements, hasEntitlement, hasAnyEntitlement, hasAllEntitlements, grantEntitlement, revokeEntitlement, setEntitlements, getAvailableEntitlements, getEntitlementStats, invalidateEntitlementCache, storeExternalIdMapping, invalidateByExternalId,
12
+ // Middleware
13
+ requireEntitlement, requireAnyEntitlement, requireAllEntitlements, } from './entitlements-plugin.js';
14
+ // Sources
15
+ export { postgresEntitlementSource } from './sources/index.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/entitlements/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc;AACd,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,mBAAmB;AACnB,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB;AACtB,aAAa;AACb,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAElC,UAAU;AACV,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Entitlement Sources
3
+ *
4
+ * Export all available entitlement source implementations.
5
+ *
6
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
7
+ */
8
+ export { postgresEntitlementSource } from './postgres-source.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/entitlements/sources/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Entitlement Sources
3
+ *
4
+ * Export all available entitlement source implementations.
5
+ *
6
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
7
+ */
8
+ export { postgresEntitlementSource } from './postgres-source.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/entitlements/sources/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * PostgreSQL Entitlement Source
3
+ *
4
+ * Entitlement storage implementation using PostgreSQL.
5
+ * Stores user entitlements and entitlement definitions.
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import type { EntitlementSource, PostgresEntitlementSourceConfig } from '../types.js';
10
+ /**
11
+ * Create a PostgreSQL entitlement source
12
+ *
13
+ * @param config Configuration including a pg Pool instance or a function that returns one
14
+ * @returns EntitlementSource implementation
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { Pool } from 'pg';
19
+ * import { postgresEntitlementSource } from '@qwickapps/server';
20
+ *
21
+ * const pool = new Pool({ connectionString: process.env.DATABASE_URL });
22
+ * const source = postgresEntitlementSource({ pool });
23
+ *
24
+ * // Or with lazy initialization:
25
+ * const source = postgresEntitlementSource({ pool: () => getPostgres().getPool() });
26
+ * ```
27
+ */
28
+ export declare function postgresEntitlementSource(config: PostgresEntitlementSourceConfig): EntitlementSource;
29
+ //# sourceMappingURL=postgres-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-source.d.ts","sourceRoot":"","sources":["../../../../src/plugins/entitlements/sources/postgres-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAGjB,+BAA+B,EAChC,MAAM,aAAa,CAAC;AAOrB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,+BAA+B,GAAG,iBAAiB,CAqNpG"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * PostgreSQL Entitlement Source
3
+ *
4
+ * Entitlement storage implementation using PostgreSQL.
5
+ * Stores user entitlements and entitlement definitions.
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ /**
10
+ * Create a PostgreSQL entitlement source
11
+ *
12
+ * @param config Configuration including a pg Pool instance or a function that returns one
13
+ * @returns EntitlementSource implementation
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { Pool } from 'pg';
18
+ * import { postgresEntitlementSource } from '@qwickapps/server';
19
+ *
20
+ * const pool = new Pool({ connectionString: process.env.DATABASE_URL });
21
+ * const source = postgresEntitlementSource({ pool });
22
+ *
23
+ * // Or with lazy initialization:
24
+ * const source = postgresEntitlementSource({ pool: () => getPostgres().getPool() });
25
+ * ```
26
+ */
27
+ export function postgresEntitlementSource(config) {
28
+ const { pool: poolOrFn, tableName = 'user_entitlements', definitionsTable = 'entitlement_definitions', schema = 'public', autoCreateTables = true, } = config;
29
+ // Helper to get pool (supports lazy initialization via function)
30
+ const getPool = () => {
31
+ const pool = typeof poolOrFn === 'function' ? poolOrFn() : poolOrFn;
32
+ return pool;
33
+ };
34
+ const entitlementsTable = `"${schema}"."${tableName}"`;
35
+ const defsTable = `"${schema}"."${definitionsTable}"`;
36
+ return {
37
+ name: 'postgres',
38
+ description: 'PostgreSQL local entitlements',
39
+ readonly: false,
40
+ async initialize() {
41
+ if (!autoCreateTables)
42
+ return;
43
+ // Create entitlement definitions table (catalog of available entitlements)
44
+ await getPool().query(`
45
+ CREATE TABLE IF NOT EXISTS ${defsTable} (
46
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
47
+ name VARCHAR(255) NOT NULL UNIQUE,
48
+ category VARCHAR(100),
49
+ description TEXT,
50
+ created_at TIMESTAMPTZ DEFAULT NOW()
51
+ );
52
+ `);
53
+ // Create user entitlements table (many-to-many style)
54
+ await getPool().query(`
55
+ CREATE TABLE IF NOT EXISTS ${entitlementsTable} (
56
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
57
+ user_id UUID,
58
+ email VARCHAR(255) NOT NULL,
59
+ entitlement VARCHAR(255) NOT NULL,
60
+ granted_at TIMESTAMPTZ DEFAULT NOW(),
61
+ granted_by VARCHAR(255),
62
+ expires_at TIMESTAMPTZ,
63
+ metadata JSONB DEFAULT '{}',
64
+ UNIQUE(email, entitlement)
65
+ );
66
+
67
+ CREATE INDEX IF NOT EXISTS idx_${tableName}_email ON ${entitlementsTable}(LOWER(email));
68
+ CREATE INDEX IF NOT EXISTS idx_${tableName}_user_id ON ${entitlementsTable}(user_id) WHERE user_id IS NOT NULL;
69
+ CREATE INDEX IF NOT EXISTS idx_${tableName}_entitlement ON ${entitlementsTable}(entitlement);
70
+ CREATE INDEX IF NOT EXISTS idx_${tableName}_expires_at ON ${entitlementsTable}(expires_at) WHERE expires_at IS NOT NULL;
71
+ `);
72
+ },
73
+ async getEntitlements(identifier) {
74
+ const email = identifier.toLowerCase();
75
+ const result = await getPool().query(`SELECT entitlement FROM ${entitlementsTable}
76
+ WHERE LOWER(email) = $1
77
+ AND (expires_at IS NULL OR expires_at > NOW())
78
+ ORDER BY entitlement`, [email]);
79
+ return result.rows.map((row) => row.entitlement);
80
+ },
81
+ async getAllAvailable() {
82
+ const result = await getPool().query(`SELECT id, name, category, description FROM ${defsTable}
83
+ ORDER BY category NULLS LAST, name`);
84
+ return result.rows;
85
+ },
86
+ async getUsersWithEntitlement(entitlement, options = {}) {
87
+ const { limit = 50, offset = 0 } = options;
88
+ // Get total count
89
+ const countResult = await getPool().query(`SELECT COUNT(DISTINCT email) FROM ${entitlementsTable}
90
+ WHERE entitlement = $1
91
+ AND (expires_at IS NULL OR expires_at > NOW())`, [entitlement]);
92
+ const total = parseInt(countResult.rows[0].count, 10);
93
+ // Get emails
94
+ const result = await getPool().query(`SELECT DISTINCT email FROM ${entitlementsTable}
95
+ WHERE entitlement = $1
96
+ AND (expires_at IS NULL OR expires_at > NOW())
97
+ ORDER BY email
98
+ LIMIT $2 OFFSET $3`, [entitlement, limit, offset]);
99
+ return {
100
+ emails: result.rows.map((row) => row.email),
101
+ total,
102
+ };
103
+ },
104
+ async addEntitlement(identifier, entitlement, grantedBy) {
105
+ const email = identifier.toLowerCase();
106
+ // Use ON CONFLICT to handle duplicates (update granted_at if re-granting)
107
+ await getPool().query(`INSERT INTO ${entitlementsTable} (email, entitlement, granted_by)
108
+ VALUES ($1, $2, $3)
109
+ ON CONFLICT (email, entitlement) DO UPDATE SET
110
+ granted_at = NOW(),
111
+ granted_by = EXCLUDED.granted_by,
112
+ expires_at = NULL`, [email, entitlement, grantedBy || 'system']);
113
+ // Auto-create definition if it doesn't exist
114
+ await getPool().query(`INSERT INTO ${defsTable} (name)
115
+ VALUES ($1)
116
+ ON CONFLICT (name) DO NOTHING`, [entitlement]);
117
+ },
118
+ async removeEntitlement(identifier, entitlement) {
119
+ const email = identifier.toLowerCase();
120
+ await getPool().query(`DELETE FROM ${entitlementsTable}
121
+ WHERE LOWER(email) = $1 AND entitlement = $2`, [email, entitlement]);
122
+ },
123
+ async setEntitlements(identifier, entitlements) {
124
+ const email = identifier.toLowerCase();
125
+ const pool = getPool();
126
+ // Start a transaction
127
+ await pool.query('BEGIN');
128
+ try {
129
+ // Remove all existing entitlements for this email
130
+ await pool.query(`DELETE FROM ${entitlementsTable} WHERE LOWER(email) = $1`, [email]);
131
+ // Insert new entitlements
132
+ if (entitlements.length > 0) {
133
+ const values = entitlements
134
+ .map((_, i) => `($1, $${i + 2}, 'system')`)
135
+ .join(', ');
136
+ await pool.query(`INSERT INTO ${entitlementsTable} (email, entitlement, granted_by)
137
+ VALUES ${values}`, [email, ...entitlements]);
138
+ // Auto-create definitions for any new entitlements
139
+ for (const ent of entitlements) {
140
+ await pool.query(`INSERT INTO ${defsTable} (name)
141
+ VALUES ($1)
142
+ ON CONFLICT (name) DO NOTHING`, [ent]);
143
+ }
144
+ }
145
+ await pool.query('COMMIT');
146
+ }
147
+ catch (error) {
148
+ await pool.query('ROLLBACK');
149
+ throw error;
150
+ }
151
+ },
152
+ async getStats() {
153
+ const result = await getPool().query(`SELECT
154
+ COUNT(DISTINCT email) as users_with_entitlements,
155
+ COUNT(DISTINCT entitlement) as total_entitlements
156
+ FROM ${entitlementsTable}
157
+ WHERE expires_at IS NULL OR expires_at > NOW()`);
158
+ const row = result.rows[0];
159
+ return {
160
+ usersWithEntitlements: parseInt(row.users_with_entitlements, 10) || 0,
161
+ totalEntitlements: parseInt(row.total_entitlements, 10) || 0,
162
+ };
163
+ },
164
+ async shutdown() {
165
+ // Pool is managed externally, nothing to do here
166
+ },
167
+ };
168
+ }
169
+ //# sourceMappingURL=postgres-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-source.js","sourceRoot":"","sources":["../../../../src/plugins/entitlements/sources/postgres-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Entitlements Plugin Types
3
+ *
4
+ * Type definitions for entitlement management.
5
+ * Entitlements are string-based tags (e.g., 'pro', 'enterprise', 'feature:analytics').
6
+ * Sources can be local (PostgreSQL) or remote (Keap, Stripe, etc.).
7
+ *
8
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
+ */
10
+ /**
11
+ * Entitlement definition - describes an available entitlement
12
+ */
13
+ export interface EntitlementDefinition {
14
+ /** Unique ID (UUID for Postgres, tag ID for external sources) */
15
+ id: string;
16
+ /** Display name */
17
+ name: string;
18
+ /** Category for grouping (optional) */
19
+ category?: string;
20
+ /** Description (optional) */
21
+ description?: string;
22
+ }
23
+ /**
24
+ * Result from entitlement lookup
25
+ */
26
+ export interface EntitlementResult {
27
+ /** Identifier used for lookup (email) */
28
+ identifier: string;
29
+ /** Array of entitlement strings (tag names) */
30
+ entitlements: string[];
31
+ /** Source that provided the entitlements */
32
+ source: 'cache' | string;
33
+ /** When the data was cached (ISO string) */
34
+ cachedAt?: string;
35
+ /** When the cache expires (ISO string) */
36
+ expiresAt?: string;
37
+ /** Per-source breakdown (when multiple sources) */
38
+ bySource?: Record<string, string[]>;
39
+ /** Additional metadata from source */
40
+ metadata?: Record<string, unknown>;
41
+ }
42
+ /**
43
+ * User entitlement record (for writable sources)
44
+ */
45
+ export interface UserEntitlement {
46
+ /** Record ID */
47
+ id: string;
48
+ /** User ID (optional, for linking to users table) */
49
+ user_id?: string;
50
+ /** User email (always present) */
51
+ email: string;
52
+ /** Entitlement name/tag */
53
+ entitlement: string;
54
+ /** When granted */
55
+ granted_at: Date;
56
+ /** Who granted it */
57
+ granted_by?: string;
58
+ /** When it expires (null = permanent) */
59
+ expires_at?: Date;
60
+ /** Additional metadata */
61
+ metadata?: Record<string, unknown>;
62
+ }
63
+ /**
64
+ * EntitlementSource interface - adapter pattern for pluggable sources
65
+ *
66
+ * Identifier is typically email, but sources may support other identifiers
67
+ * (e.g., Keap contact ID). The plugin normalizes to email for caching.
68
+ */
69
+ export interface EntitlementSource {
70
+ /** Unique source name (e.g., 'postgres', 'keap') */
71
+ name: string;
72
+ /** Human-readable description */
73
+ description?: string;
74
+ /** Whether this source is read-only (no add/remove operations) */
75
+ readonly?: boolean;
76
+ /**
77
+ * Initialize the source (create tables, establish connections, etc.)
78
+ */
79
+ initialize(): Promise<void>;
80
+ /**
81
+ * Get entitlements for an identifier
82
+ * @param identifier Email or other identifier
83
+ * @returns Array of entitlement strings (tag names)
84
+ */
85
+ getEntitlements(identifier: string): Promise<string[]>;
86
+ /**
87
+ * Get all available entitlements that can be assigned
88
+ * Optional - returns empty array if not implemented
89
+ */
90
+ getAllAvailable?(): Promise<EntitlementDefinition[]>;
91
+ /**
92
+ * Search for users with a specific entitlement
93
+ * Optional - for sources that support reverse lookup
94
+ */
95
+ getUsersWithEntitlement?(entitlement: string, options?: {
96
+ limit?: number;
97
+ offset?: number;
98
+ }): Promise<{
99
+ emails: string[];
100
+ total: number;
101
+ }>;
102
+ /**
103
+ * Add an entitlement to a user
104
+ * @throws Error if source is read-only
105
+ */
106
+ addEntitlement?(identifier: string, entitlement: string, grantedBy?: string): Promise<void>;
107
+ /**
108
+ * Remove an entitlement from a user
109
+ * @throws Error if source is read-only
110
+ */
111
+ removeEntitlement?(identifier: string, entitlement: string): Promise<void>;
112
+ /**
113
+ * Bulk set entitlements for a user (replaces all existing)
114
+ * Optional - for sources that support batch operations
115
+ */
116
+ setEntitlements?(identifier: string, entitlements: string[]): Promise<void>;
117
+ /**
118
+ * Shutdown the source (close connections, cleanup)
119
+ */
120
+ shutdown(): Promise<void>;
121
+ /**
122
+ * Check if the source is healthy (optional)
123
+ * Used for health checks without making expensive API calls.
124
+ * If not implemented, health check will assume healthy if initialized.
125
+ */
126
+ isHealthy?(): Promise<boolean>;
127
+ /**
128
+ * Get statistics about entitlements (optional)
129
+ * Used for dashboard widgets showing user counts with entitlements.
130
+ */
131
+ getStats?(): Promise<EntitlementStats>;
132
+ }
133
+ /**
134
+ * Statistics about entitlements from a source
135
+ */
136
+ export interface EntitlementStats {
137
+ /** Total users with at least one entitlement */
138
+ usersWithEntitlements: number;
139
+ /** Total number of unique entitlements/tags */
140
+ totalEntitlements?: number;
141
+ /** Additional source-specific stats */
142
+ [key: string]: unknown;
143
+ }
144
+ /**
145
+ * Entitlement callbacks
146
+ */
147
+ export interface EntitlementCallbacks {
148
+ /** Called when entitlements are fetched */
149
+ onFetch?: (identifier: string, entitlements: string[], source: string) => Promise<void>;
150
+ /** Called when entitlements change */
151
+ onChange?: (identifier: string, added: string[], removed: string[]) => Promise<void>;
152
+ /** Called when an entitlement is granted */
153
+ onGrant?: (identifier: string, entitlement: string, grantedBy?: string) => Promise<void>;
154
+ /** Called when an entitlement is revoked */
155
+ onRevoke?: (identifier: string, entitlement: string) => Promise<void>;
156
+ }
157
+ /**
158
+ * Cache configuration for entitlements
159
+ */
160
+ export interface EntitlementsCacheConfig {
161
+ /** Enable caching (default: true) */
162
+ enabled?: boolean;
163
+ /** Cache instance name from cache plugin (default: 'default') */
164
+ instanceName?: string;
165
+ /** Cache key prefix (default: 'entitlements:') */
166
+ keyPrefix?: string;
167
+ /** TTL in seconds for cached entitlements (default: 300) */
168
+ ttl?: number;
169
+ /** TTL for identifier mappings, e.g., contactId -> email (default: ttl * 2) */
170
+ mappingTtl?: number;
171
+ }
172
+ /**
173
+ * API configuration for entitlements
174
+ */
175
+ export interface EntitlementsApiConfig {
176
+ /** API route prefix (default: '/entitlements'). Note: routes are mounted under /api by control panel */
177
+ prefix?: string;
178
+ /** Enable API endpoints (default: true) */
179
+ enabled?: boolean;
180
+ /** Enable write endpoints (grant/revoke) - only works with writable source */
181
+ enableWrite?: boolean;
182
+ }
183
+ /**
184
+ * Entitlements plugin configuration
185
+ */
186
+ export interface EntitlementsPluginConfig {
187
+ /** Primary entitlement source */
188
+ source: EntitlementSource;
189
+ /** Additional sources to query (results are merged) */
190
+ additionalSources?: EntitlementSource[];
191
+ /** Cache configuration */
192
+ cache?: EntitlementsCacheConfig;
193
+ /** Callbacks for entitlement events */
194
+ callbacks?: EntitlementCallbacks;
195
+ /** API configuration */
196
+ api?: EntitlementsApiConfig;
197
+ /** Enable debug logging */
198
+ debug?: boolean;
199
+ }
200
+ /**
201
+ * PostgreSQL entitlement source configuration
202
+ */
203
+ export interface PostgresEntitlementSourceConfig {
204
+ /** PostgreSQL pool instance or a function that returns one (for lazy initialization) */
205
+ pool: unknown | (() => unknown);
206
+ /** User entitlements table name (default: 'user_entitlements') */
207
+ tableName?: string;
208
+ /** Entitlement definitions table (default: 'entitlement_definitions') */
209
+ definitionsTable?: string;
210
+ /** Schema name (default: 'public') */
211
+ schema?: string;
212
+ /** Auto-create tables on init (default: true) */
213
+ autoCreateTables?: boolean;
214
+ }
215
+ /**
216
+ * Cached entitlements structure (stored in Redis)
217
+ */
218
+ export interface CachedEntitlements {
219
+ /** Email (normalized lowercase) */
220
+ email: string;
221
+ /** Combined entitlements from all sources */
222
+ entitlements: string[];
223
+ /** Per-source breakdown */
224
+ bySource: Record<string, string[]>;
225
+ /** When cached (ISO string) */
226
+ cachedAt: string;
227
+ /** When expires (ISO string) */
228
+ expiresAt: string;
229
+ /** Cache version for invalidation */
230
+ version: number;
231
+ }
232
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/entitlements/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Entitlements Plugin Types
3
+ *
4
+ * Type definitions for entitlement management.
5
+ * Entitlements are string-based tags (e.g., 'pro', 'enterprise', 'feature:analytics').
6
+ * Sources can be local (PostgreSQL) or remote (Keap, Stripe, etc.).
7
+ *
8
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/entitlements/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -9,7 +9,8 @@
9
9
  *
10
10
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
11
  */
12
- import type { ControlPanelPlugin, FrontendAppConfig } from '../core/types.js';
12
+ import type { Plugin } from '../core/plugin-registry.js';
13
+ import type { FrontendAppConfig } from '../core/types.js';
13
14
  export interface FrontendAppPluginConfig {
14
15
  /** Redirect to another URL */
15
16
  redirectUrl?: string;
@@ -24,16 +25,21 @@ export interface FrontendAppPluginConfig {
24
25
  label: string;
25
26
  url: string;
26
27
  }>;
28
+ /** URL path to the logo icon (SVG, PNG, etc.) */
29
+ logoIconUrl?: string;
27
30
  branding?: {
28
- logo?: string;
29
31
  primaryColor?: string;
30
32
  };
31
33
  };
32
34
  /** Route guard configuration */
33
35
  guard?: FrontendAppConfig['mount']['guard'];
36
+ /** Product name for default landing page */
37
+ productName?: string;
38
+ /** Mount path for control panel link */
39
+ mountPath?: string;
34
40
  }
35
41
  /**
36
42
  * Create a frontend app plugin that handles the root path
37
43
  */
38
- export declare function createFrontendAppPlugin(config: FrontendAppPluginConfig): ControlPanelPlugin;
44
+ export declare function createFrontendAppPlugin(config: FrontendAppPluginConfig): Plugin;
39
45
  //# sourceMappingURL=frontend-app-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frontend-app-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/frontend-app-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG9E,MAAM,WAAW,uBAAuB;IACtC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9C,QAAQ,CAAC,EAAE;YACT,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACH,CAAC;IACF,gCAAgC;IAChC,KAAK,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,kBAAkB,CAmE3F"}
1
+ {"version":3,"file":"frontend-app-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/frontend-app-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,MAAM,WAAW,uBAAuB;IACtC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9C,iDAAiD;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE;YACT,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACH,CAAC;IACF,gCAAgC;IAChC,KAAK,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5C,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAyE/E"}