@revealui/core 0.2.1 → 0.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/dist/api/compression.d.ts.map +1 -1
  2. package/dist/api/payload-optimization.d.ts.map +1 -1
  3. package/dist/api/rate-limit.d.ts +29 -28
  4. package/dist/api/rate-limit.d.ts.map +1 -1
  5. package/dist/api/rate-limit.js +63 -3
  6. package/dist/api/response-cache.d.ts.map +1 -1
  7. package/dist/api/response-cache.js +1 -1
  8. package/dist/api/rest.d.ts.map +1 -1
  9. package/dist/api/rest.js +3 -2
  10. package/dist/auth/access.d.ts.map +1 -1
  11. package/dist/auth/index.d.ts.map +1 -1
  12. package/dist/cache/query-cache.d.ts +12 -10
  13. package/dist/cache/query-cache.d.ts.map +1 -1
  14. package/dist/cache/query-cache.js +38 -42
  15. package/dist/caching/index.d.ts +6 -0
  16. package/dist/caching/index.d.ts.map +1 -0
  17. package/dist/caching/index.js +5 -0
  18. package/dist/client/admin/RichText.d.ts +1 -1
  19. package/dist/client/admin/RichText.d.ts.map +1 -1
  20. package/dist/client/admin/components/AdminDashboard.d.ts.map +1 -1
  21. package/dist/client/admin/components/AdminDashboard.js +195 -205
  22. package/dist/client/admin/components/CollectionList.d.ts.map +1 -1
  23. package/dist/client/admin/components/DocumentForm.d.ts.map +1 -1
  24. package/dist/client/admin/components/DocumentForm.js +130 -6
  25. package/dist/client/admin/components/GlobalForm.d.ts.map +1 -1
  26. package/dist/client/admin/context/ServerFunctionContext.d.ts +8 -0
  27. package/dist/client/admin/context/ServerFunctionContext.d.ts.map +1 -0
  28. package/dist/client/admin/context/ServerFunctionContext.js +15 -0
  29. package/dist/client/admin/i18n/en.d.ts.map +1 -1
  30. package/dist/client/admin/index.d.ts +1 -0
  31. package/dist/client/admin/index.d.ts.map +1 -1
  32. package/dist/client/admin/index.js +1 -0
  33. package/dist/client/admin/layout.d.ts +1 -1
  34. package/dist/client/admin/layout.d.ts.map +1 -1
  35. package/dist/client/admin/layout.js +3 -2
  36. package/dist/client/admin/page.d.ts.map +1 -1
  37. package/dist/client/admin/utils/apiClient.d.ts.map +1 -1
  38. package/dist/client/admin/utils/apiClient.js +0 -4
  39. package/dist/client/admin/utils/index.d.ts +0 -1
  40. package/dist/client/admin/utils/index.d.ts.map +1 -1
  41. package/dist/client/admin/utils/index.js +0 -1
  42. package/dist/client/admin/utils/serializeConfig.d.ts.map +1 -1
  43. package/dist/client/hooks.d.ts.map +1 -1
  44. package/dist/client/index.d.ts.map +1 -1
  45. package/dist/client/richtext/RichTextEditor.d.ts.map +1 -1
  46. package/dist/client/richtext/components/ImageNodeComponent.d.ts.map +1 -1
  47. package/dist/client/richtext/components/ImageNodeComponent.js +0 -1
  48. package/dist/client/richtext/components/ImageUploadButton.d.ts +2 -0
  49. package/dist/client/richtext/components/ImageUploadButton.d.ts.map +1 -1
  50. package/dist/client/richtext/components/ImageUploadButton.js +30 -15
  51. package/dist/client/richtext/index.d.ts.map +1 -1
  52. package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts.map +1 -1
  53. package/dist/client/richtext/nodes/ImageNode.d.ts.map +1 -1
  54. package/dist/client/richtext/plugins/CollaborationPlugin.d.ts.map +1 -1
  55. package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts.map +1 -1
  56. package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts.map +1 -1
  57. package/dist/client/richtext/plugins/FloatingToolbarPlugin.js +1 -3
  58. package/dist/client/richtext/plugins/ImagePlugin.d.ts.map +1 -1
  59. package/dist/client/richtext/plugins/ToolbarPlugin.d.ts.map +1 -1
  60. package/dist/client/ui/index.d.ts.map +1 -1
  61. package/dist/client/ui/index.js +1 -1
  62. package/dist/collections/CollectionOperations.d.ts +7 -7
  63. package/dist/collections/CollectionOperations.d.ts.map +1 -1
  64. package/dist/collections/CollectionOperations.js +15 -1
  65. package/dist/collections/hooks.d.ts.map +1 -1
  66. package/dist/collections/index.d.ts.map +1 -1
  67. package/dist/collections/operations/create.d.ts +4 -5
  68. package/dist/collections/operations/create.d.ts.map +1 -1
  69. package/dist/collections/operations/create.js +35 -6
  70. package/dist/collections/operations/createMany.d.ts +12 -0
  71. package/dist/collections/operations/createMany.d.ts.map +1 -0
  72. package/dist/collections/operations/createMany.js +43 -0
  73. package/dist/collections/operations/delete.d.ts +1 -1
  74. package/dist/collections/operations/delete.d.ts.map +1 -1
  75. package/dist/collections/operations/delete.js +31 -2
  76. package/dist/collections/operations/deleteMany.d.ts +11 -0
  77. package/dist/collections/operations/deleteMany.d.ts.map +1 -0
  78. package/dist/collections/operations/deleteMany.js +50 -0
  79. package/dist/collections/operations/fieldHooks.d.ts +2 -2
  80. package/dist/collections/operations/fieldHooks.d.ts.map +1 -1
  81. package/dist/collections/operations/fieldHooks.js +4 -4
  82. package/dist/collections/operations/find.d.ts +2 -4
  83. package/dist/collections/operations/find.d.ts.map +1 -1
  84. package/dist/collections/operations/find.js +115 -8
  85. package/dist/collections/operations/findById.d.ts +3 -4
  86. package/dist/collections/operations/findById.d.ts.map +1 -1
  87. package/dist/collections/operations/findById.js +53 -1
  88. package/dist/collections/operations/sqlAdapter.d.ts +23 -0
  89. package/dist/collections/operations/sqlAdapter.d.ts.map +1 -0
  90. package/dist/collections/operations/sqlAdapter.js +76 -0
  91. package/dist/collections/operations/update.d.ts +3 -5
  92. package/dist/collections/operations/update.d.ts.map +1 -1
  93. package/dist/collections/operations/update.js +103 -11
  94. package/dist/collections/operations/updateMany.d.ts +11 -0
  95. package/dist/collections/operations/updateMany.d.ts.map +1 -0
  96. package/dist/collections/operations/updateMany.js +52 -0
  97. package/dist/collections/registry.d.ts +12 -0
  98. package/dist/collections/registry.d.ts.map +1 -0
  99. package/dist/collections/registry.js +38 -0
  100. package/dist/config/index.d.ts.map +1 -1
  101. package/dist/config/runtime.d.ts.map +1 -1
  102. package/dist/config/utils.d.ts +0 -10
  103. package/dist/config/utils.d.ts.map +1 -1
  104. package/dist/config/utils.js +0 -13
  105. package/dist/database/index.d.ts +3 -0
  106. package/dist/database/index.d.ts.map +1 -1
  107. package/dist/database/index.js +1 -5
  108. package/dist/database/safe-parse.d.ts.map +1 -1
  109. package/dist/database/ssl-config.d.ts.map +1 -1
  110. package/dist/database/type-adapter.d.ts.map +1 -1
  111. package/dist/database/universal-postgres.d.ts.map +1 -1
  112. package/dist/database/universal-postgres.js +6 -1
  113. package/dist/dataloader.d.ts.map +1 -1
  114. package/dist/error-handling/error-boundary.d.ts.map +1 -1
  115. package/dist/error-handling/error-reporter.d.ts +1 -1
  116. package/dist/error-handling/error-reporter.d.ts.map +1 -1
  117. package/dist/error-handling/error-reporter.js +19 -5
  118. package/dist/error-handling/fallback-components.d.ts.map +1 -1
  119. package/dist/error-handling/fallback-components.js +1 -1
  120. package/dist/error-handling/index.d.ts +2 -4
  121. package/dist/error-handling/index.d.ts.map +1 -1
  122. package/dist/error-handling/index.js +1 -4
  123. package/dist/factories/builders.d.ts.map +1 -1
  124. package/dist/factories/index.d.ts.map +1 -1
  125. package/dist/features.d.ts +7 -7
  126. package/dist/features.d.ts.map +1 -1
  127. package/dist/features.js +2 -2
  128. package/dist/fieldTraversal.d.ts.map +1 -1
  129. package/dist/fields/config/types.d.ts.map +1 -1
  130. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  131. package/dist/fields/getFieldPaths.d.ts.map +1 -1
  132. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  133. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  134. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  135. package/dist/generated/types/cms.d.ts.map +1 -1
  136. package/dist/generated/types/cms.js +0 -1
  137. package/dist/generated/types/neon.d.ts.map +1 -1
  138. package/dist/generated/types/neon.js +4 -2
  139. package/dist/globals/GlobalOperations.d.ts.map +1 -1
  140. package/dist/globals/GlobalOperations.js +16 -4
  141. package/dist/globals/index.d.ts.map +1 -1
  142. package/dist/index.d.ts +15 -4
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +15 -5
  145. package/dist/instance/RevealUIInstance.d.ts.map +1 -1
  146. package/dist/instance/RevealUIInstance.js +6 -19
  147. package/dist/instance/index.d.ts.map +1 -1
  148. package/dist/instance/logger.d.ts.map +1 -1
  149. package/dist/instance/methods/create.d.ts.map +1 -1
  150. package/dist/instance/methods/create.js +0 -3
  151. package/dist/instance/methods/delete.d.ts.map +1 -1
  152. package/dist/instance/methods/delete.js +1 -4
  153. package/dist/instance/methods/find.d.ts.map +1 -1
  154. package/dist/instance/methods/find.js +0 -3
  155. package/dist/instance/methods/findById.d.ts.map +1 -1
  156. package/dist/instance/methods/findById.js +0 -3
  157. package/dist/instance/methods/hooks.d.ts.map +1 -1
  158. package/dist/instance/methods/update.d.ts.map +1 -1
  159. package/dist/instance/methods/update.js +0 -3
  160. package/dist/jobs/index.d.ts +16 -0
  161. package/dist/jobs/index.d.ts.map +1 -0
  162. package/dist/jobs/index.js +14 -0
  163. package/dist/jobs/queue.d.ts +57 -0
  164. package/dist/jobs/queue.d.ts.map +1 -0
  165. package/dist/jobs/queue.js +134 -0
  166. package/dist/license-encryption.d.ts +21 -0
  167. package/dist/license-encryption.d.ts.map +1 -0
  168. package/dist/license-encryption.js +74 -0
  169. package/dist/license.d.ts +26 -3
  170. package/dist/license.d.ts.map +1 -1
  171. package/dist/license.js +87 -7
  172. package/dist/monitoring/alerts.d.ts +4 -4
  173. package/dist/monitoring/alerts.d.ts.map +1 -1
  174. package/dist/monitoring/cleanup-manager.d.ts.map +1 -1
  175. package/dist/monitoring/health-monitor.d.ts.map +1 -1
  176. package/dist/monitoring/index.d.ts.map +1 -1
  177. package/dist/monitoring/process-registry.d.ts.map +1 -1
  178. package/dist/monitoring/query-monitor.d.ts.map +1 -1
  179. package/dist/monitoring/types.d.ts.map +1 -1
  180. package/dist/monitoring/zombie-detector.d.ts.map +1 -1
  181. package/dist/monitoring/zombie-detector.js +5 -0
  182. package/dist/nextjs/index.d.ts.map +1 -1
  183. package/dist/nextjs/utilities.d.ts.map +1 -1
  184. package/dist/nextjs/withRevealUI.d.ts.map +1 -1
  185. package/dist/observability/alerts.d.ts.map +1 -1
  186. package/dist/observability/alerts.js +1 -2
  187. package/dist/observability/health-check.d.ts +0 -4
  188. package/dist/observability/health-check.d.ts.map +1 -1
  189. package/dist/observability/health-check.js +0 -36
  190. package/dist/observability/index.d.ts.map +1 -1
  191. package/dist/observability/logger.d.ts.map +1 -1
  192. package/dist/observability/logger.js +1 -1
  193. package/dist/observability/metrics.d.ts.map +1 -1
  194. package/dist/observability/tracing.d.ts.map +1 -1
  195. package/dist/observability/tracing.js +0 -1
  196. package/dist/plugins/form-builder.d.ts.map +1 -1
  197. package/dist/plugins/index.d.ts.map +1 -1
  198. package/dist/plugins/nested-docs.d.ts +4 -0
  199. package/dist/plugins/nested-docs.d.ts.map +1 -1
  200. package/dist/plugins/nested-docs.js +50 -6
  201. package/dist/plugins/redirects.d.ts.map +1 -1
  202. package/dist/queries/index.d.ts.map +1 -1
  203. package/dist/queries/queryBuilder.d.ts.map +1 -1
  204. package/dist/queries/queryBuilder.js +13 -5
  205. package/dist/relationships/analyzer.d.ts.map +1 -1
  206. package/dist/relationships/analyzer.js +8 -0
  207. package/dist/relationships/index.d.ts.map +1 -1
  208. package/dist/relationships/populate-core.d.ts +57 -0
  209. package/dist/relationships/populate-core.d.ts.map +1 -0
  210. package/dist/relationships/populate-core.js +116 -0
  211. package/dist/relationships/populate-helpers.d.ts +5 -51
  212. package/dist/relationships/populate-helpers.d.ts.map +1 -1
  213. package/dist/relationships/populate-helpers.js +4 -109
  214. package/dist/relationships/population.d.ts +1 -9
  215. package/dist/relationships/population.d.ts.map +1 -1
  216. package/dist/relationships/population.js +8 -3
  217. package/dist/revealui.d.ts.map +1 -1
  218. package/dist/richtext/exports/client/rcc.d.ts.map +1 -1
  219. package/dist/richtext/exports/client/rcc.js +1 -1
  220. package/dist/richtext/exports/server/rsc.d.ts +17 -0
  221. package/dist/richtext/exports/server/rsc.d.ts.map +1 -1
  222. package/dist/richtext/exports/server/rsc.js +61 -5
  223. package/dist/richtext/index.d.ts.map +1 -1
  224. package/dist/richtext/lexical.d.ts.map +1 -1
  225. package/dist/security/index.d.ts +3 -16
  226. package/dist/security/index.d.ts.map +1 -1
  227. package/dist/security/index.js +3 -16
  228. package/dist/server/index.d.ts.map +1 -1
  229. package/dist/server/renderPage.d.ts.map +1 -1
  230. package/dist/storage/index.d.ts +1 -0
  231. package/dist/storage/index.d.ts.map +1 -1
  232. package/dist/storage/index.js +2 -4
  233. package/dist/storage/vercel-blob.d.ts.map +1 -1
  234. package/dist/storage/vercel-blob.js +3 -0
  235. package/dist/translations/index.d.ts.map +1 -1
  236. package/dist/types/access.d.ts.map +1 -1
  237. package/dist/types/api.d.ts.map +1 -1
  238. package/dist/types/cms.d.ts.map +1 -1
  239. package/dist/types/config.d.ts.map +1 -1
  240. package/dist/types/core.d.ts +1 -1
  241. package/dist/types/core.d.ts.map +1 -1
  242. package/dist/types/extensions.d.ts.map +1 -1
  243. package/dist/types/frontend.d.ts.map +1 -1
  244. package/dist/types/generated.d.ts.map +1 -1
  245. package/dist/types/hooks.d.ts.map +1 -1
  246. package/dist/types/index.d.ts +1 -1
  247. package/dist/types/index.d.ts.map +1 -1
  248. package/dist/types/interfaces/app.d.ts.map +1 -1
  249. package/dist/types/jobs.d.ts.map +1 -1
  250. package/dist/types/legacy.d.ts.map +1 -1
  251. package/dist/types/plugins.d.ts.map +1 -1
  252. package/dist/types/query.d.ts.map +1 -1
  253. package/dist/types/request.d.ts.map +1 -1
  254. package/dist/types/richtext.d.ts.map +1 -1
  255. package/dist/types/runtime.d.ts +60 -1
  256. package/dist/types/runtime.d.ts.map +1 -1
  257. package/dist/types/schema.d.ts.map +1 -1
  258. package/dist/types/user.d.ts.map +1 -1
  259. package/dist/utils/access-conversion.d.ts.map +1 -1
  260. package/dist/utils/api-wrapper.d.ts.map +1 -1
  261. package/dist/utils/api-wrapper.js +1 -1
  262. package/dist/utils/block-conversion.d.ts.map +1 -1
  263. package/dist/utils/cache.d.ts.map +1 -1
  264. package/dist/utils/deep-clone.js +0 -1
  265. package/dist/utils/error-responses.d.ts.map +1 -1
  266. package/dist/utils/error-responses.js +2 -3
  267. package/dist/utils/errors.d.ts +36 -0
  268. package/dist/utils/errors.d.ts.map +1 -1
  269. package/dist/utils/errors.js +103 -0
  270. package/dist/utils/field-conversion.d.ts +1 -1
  271. package/dist/utils/field-conversion.d.ts.map +1 -1
  272. package/dist/utils/flattenResult.d.ts.map +1 -1
  273. package/dist/utils/flattenResult.js +0 -1
  274. package/dist/utils/getBlockSelect.d.ts.map +1 -1
  275. package/dist/utils/getSelectMode.d.ts.map +1 -1
  276. package/dist/utils/isValidID.d.ts.map +1 -1
  277. package/dist/utils/json-parsing.d.ts.map +1 -1
  278. package/dist/utils/logger-client.d.ts.map +1 -1
  279. package/dist/utils/logger-server.d.ts.map +1 -1
  280. package/dist/utils/logger.d.ts.map +1 -1
  281. package/dist/utils/request-context.d.ts.map +1 -1
  282. package/dist/utils/stripUnselectedFields.d.ts.map +1 -1
  283. package/dist/utils/type-guards.d.ts.map +1 -1
  284. package/package.json +58 -26
  285. package/dist/caching/app-cache.d.ts +0 -237
  286. package/dist/caching/app-cache.d.ts.map +0 -1
  287. package/dist/caching/app-cache.js +0 -430
  288. package/dist/caching/cdn-config.d.ts +0 -155
  289. package/dist/caching/cdn-config.d.ts.map +0 -1
  290. package/dist/caching/cdn-config.js +0 -411
  291. package/dist/caching/edge-cache.d.ts +0 -177
  292. package/dist/caching/edge-cache.d.ts.map +0 -1
  293. package/dist/caching/edge-cache.js +0 -385
  294. package/dist/caching/service-worker.d.ts +0 -154
  295. package/dist/caching/service-worker.d.ts.map +0 -1
  296. package/dist/caching/service-worker.js +0 -437
  297. package/dist/client/admin/utils/auth.d.ts +0 -23
  298. package/dist/client/admin/utils/auth.d.ts.map +0 -1
  299. package/dist/client/admin/utils/auth.js +0 -52
  300. package/dist/client/http/client.d.ts +0 -15
  301. package/dist/client/http/client.d.ts.map +0 -1
  302. package/dist/client/http/client.js +0 -49
  303. package/dist/client/http/fetchBanner.d.ts +0 -18
  304. package/dist/client/http/fetchBanner.d.ts.map +0 -1
  305. package/dist/client/http/fetchBanner.js +0 -44
  306. package/dist/client/http/fetchCard.d.ts +0 -18
  307. package/dist/client/http/fetchCard.d.ts.map +0 -1
  308. package/dist/client/http/fetchCard.js +0 -46
  309. package/dist/client/http/fetchEvents.d.ts +0 -18
  310. package/dist/client/http/fetchEvents.d.ts.map +0 -1
  311. package/dist/client/http/fetchEvents.js +0 -44
  312. package/dist/client/http/fetchHero.d.ts +0 -17
  313. package/dist/client/http/fetchHero.d.ts.map +0 -1
  314. package/dist/client/http/fetchHero.js +0 -55
  315. package/dist/client/http/fetchMainInfos.d.ts +0 -17
  316. package/dist/client/http/fetchMainInfos.d.ts.map +0 -1
  317. package/dist/client/http/fetchMainInfos.js +0 -44
  318. package/dist/client/http/fetchVideos.d.ts +0 -13
  319. package/dist/client/http/fetchVideos.d.ts.map +0 -1
  320. package/dist/client/http/fetchVideos.js +0 -36
  321. package/dist/client/http/index.d.ts +0 -19
  322. package/dist/client/http/index.d.ts.map +0 -1
  323. package/dist/client/http/index.js +0 -11
  324. package/dist/error-handling/circuit-breaker.d.ts +0 -262
  325. package/dist/error-handling/circuit-breaker.d.ts.map +0 -1
  326. package/dist/error-handling/circuit-breaker.js +0 -542
  327. package/dist/error-handling/retry.d.ts +0 -194
  328. package/dist/error-handling/retry.d.ts.map +0 -1
  329. package/dist/error-handling/retry.js +0 -450
  330. package/dist/errors/index.d.ts +0 -23
  331. package/dist/errors/index.d.ts.map +0 -1
  332. package/dist/errors/index.js +0 -40
  333. package/dist/generated/agents/index.d.ts +0 -8
  334. package/dist/generated/agents/index.d.ts.map +0 -1
  335. package/dist/generated/agents/index.js +0 -7
  336. package/dist/generated/components/index.d.ts +0 -8
  337. package/dist/generated/components/index.d.ts.map +0 -1
  338. package/dist/generated/components/index.js +0 -7
  339. package/dist/generated/functions/index.d.ts +0 -8
  340. package/dist/generated/functions/index.d.ts.map +0 -1
  341. package/dist/generated/functions/index.js +0 -7
  342. package/dist/generated/hooks/index.d.ts +0 -8
  343. package/dist/generated/hooks/index.d.ts.map +0 -1
  344. package/dist/generated/hooks/index.js +0 -7
  345. package/dist/generated/plans/index.d.ts +0 -8
  346. package/dist/generated/plans/index.d.ts.map +0 -1
  347. package/dist/generated/plans/index.js +0 -7
  348. package/dist/generated/prompts/index.d.ts +0 -8
  349. package/dist/generated/prompts/index.d.ts.map +0 -1
  350. package/dist/generated/prompts/index.js +0 -7
  351. package/dist/generated/tools/index.d.ts +0 -8
  352. package/dist/generated/tools/index.d.ts.map +0 -1
  353. package/dist/generated/tools/index.js +0 -7
  354. package/dist/generated/types/supabase.d.ts +0 -193
  355. package/dist/generated/types/supabase.d.ts.map +0 -1
  356. package/dist/generated/types/supabase.js +0 -5
  357. package/dist/optimization/asset-optimizer.d.ts +0 -202
  358. package/dist/optimization/asset-optimizer.d.ts.map +0 -1
  359. package/dist/optimization/asset-optimizer.js +0 -312
  360. package/dist/optimization/build-optimizer.d.ts +0 -202
  361. package/dist/optimization/build-optimizer.d.ts.map +0 -1
  362. package/dist/optimization/build-optimizer.js +0 -271
  363. package/dist/optimization/bundle-analyzer.d.ts +0 -98
  364. package/dist/optimization/bundle-analyzer.d.ts.map +0 -1
  365. package/dist/optimization/bundle-analyzer.js +0 -322
  366. package/dist/optimization/code-splitting.d.ts +0 -131
  367. package/dist/optimization/code-splitting.d.ts.map +0 -1
  368. package/dist/optimization/code-splitting.js +0 -277
  369. package/dist/plugin/index.d.ts +0 -12
  370. package/dist/plugin/index.d.ts.map +0 -1
  371. package/dist/plugin/index.js +0 -4
  372. package/dist/security/audit.d.ts +0 -188
  373. package/dist/security/audit.d.ts.map +0 -1
  374. package/dist/security/audit.js +0 -431
  375. package/dist/security/auth.d.ts +0 -241
  376. package/dist/security/auth.d.ts.map +0 -1
  377. package/dist/security/auth.js +0 -476
  378. package/dist/security/authorization.d.ts +0 -235
  379. package/dist/security/authorization.d.ts.map +0 -1
  380. package/dist/security/authorization.js +0 -434
  381. package/dist/security/encryption.d.ts +0 -214
  382. package/dist/security/encryption.d.ts.map +0 -1
  383. package/dist/security/encryption.js +0 -517
  384. package/dist/security/gdpr.d.ts +0 -300
  385. package/dist/security/gdpr.d.ts.map +0 -1
  386. package/dist/security/gdpr.js +0 -465
  387. package/dist/security/headers.d.ts +0 -182
  388. package/dist/security/headers.d.ts.map +0 -1
  389. package/dist/security/headers.js +0 -402
  390. package/dist/utils/jwt-validation.d.ts +0 -14
  391. package/dist/utils/jwt-validation.d.ts.map +0 -1
  392. package/dist/utils/jwt-validation.js +0 -36
  393. package/dist/utils/request-headers.d.ts +0 -15
  394. package/dist/utils/request-headers.d.ts.map +0 -1
  395. package/dist/utils/request-headers.js +0 -31
@@ -1,237 +0,0 @@
1
- /**
2
- * Application-Level Caching
3
- *
4
- * Utilities for React Query, SWR, and application-level cache management
5
- */
6
- /**
7
- * React Query Configuration
8
- */
9
- export interface ReactQueryConfig {
10
- defaultOptions?: {
11
- queries?: {
12
- staleTime?: number;
13
- cacheTime?: number;
14
- refetchOnWindowFocus?: boolean;
15
- refetchOnReconnect?: boolean;
16
- refetchOnMount?: boolean;
17
- retry?: number | boolean;
18
- retryDelay?: number | ((attemptIndex: number) => number);
19
- };
20
- mutations?: {
21
- retry?: number | boolean;
22
- retryDelay?: number | ((attemptIndex: number) => number);
23
- };
24
- };
25
- }
26
- export declare const DEFAULT_REACT_QUERY_CONFIG: ReactQueryConfig;
27
- /**
28
- * SWR Configuration
29
- */
30
- export interface SWRConfig {
31
- revalidateOnFocus?: boolean;
32
- revalidateOnReconnect?: boolean;
33
- refreshInterval?: number;
34
- dedupingInterval?: number;
35
- loadingTimeout?: number;
36
- errorRetryInterval?: number;
37
- errorRetryCount?: number;
38
- focusThrottleInterval?: number;
39
- shouldRetryOnError?: boolean;
40
- keepPreviousData?: boolean;
41
- }
42
- export declare const DEFAULT_SWR_CONFIG: SWRConfig;
43
- /**
44
- * Cache Key Generator
45
- */
46
- export declare class CacheKeyGenerator {
47
- private prefix;
48
- constructor(prefix?: string);
49
- /**
50
- * Generate key for list queries
51
- */
52
- list(resource: string, filters?: Record<string, unknown>): string[];
53
- /**
54
- * Generate key for detail queries
55
- */
56
- detail(resource: string, id: string | number): string[];
57
- /**
58
- * Generate key for custom queries
59
- */
60
- custom(...parts: (string | number | Record<string, unknown>)[]): string[];
61
- /**
62
- * Generate key for infinite queries
63
- */
64
- infinite(resource: string, filters?: Record<string, unknown>): string[];
65
- }
66
- /**
67
- * Cache Invalidation Strategies
68
- */
69
- export declare class CacheInvalidator {
70
- /**
71
- * Invalidate by resource
72
- */
73
- static byResource(resource: string): string[];
74
- /**
75
- * Invalidate by ID
76
- */
77
- static byId(resource: string, id: string | number): string[];
78
- /**
79
- * Invalidate lists
80
- */
81
- static lists(resource: string): string[];
82
- /**
83
- * Invalidate infinite queries
84
- */
85
- static infinite(resource: string): string[];
86
- /**
87
- * Invalidate all
88
- */
89
- static all(): string[];
90
- }
91
- /**
92
- * Optimistic Update Helper
93
- */
94
- export declare class OptimisticUpdater<_T> {
95
- /**
96
- * Update list (add item)
97
- */
98
- static addToList<T>(oldData: T[] | undefined, newItem: T): T[];
99
- /**
100
- * Update list (remove item)
101
- */
102
- static removeFromList<T extends {
103
- id: string | number;
104
- }>(oldData: T[] | undefined, id: string | number): T[];
105
- /**
106
- * Update list (update item)
107
- */
108
- static updateInList<T extends {
109
- id: string | number;
110
- }>(oldData: T[] | undefined, id: string | number, updates: Partial<T>): T[];
111
- /**
112
- * Update detail
113
- */
114
- static updateDetail<T>(oldData: T | undefined, updates: Partial<T>): T | undefined;
115
- /**
116
- * Update paginated list
117
- */
118
- static updatePaginatedList<T extends {
119
- id: string | number;
120
- }>(oldData: {
121
- pages: Array<{
122
- data: T[];
123
- }>;
124
- pageParams: unknown[];
125
- } | undefined, id: string | number, updates: Partial<T>): {
126
- pages: {
127
- data: T[];
128
- }[];
129
- pageParams: unknown[];
130
- } | undefined;
131
- }
132
- /**
133
- * Cache Prefetch Helper
134
- */
135
- export interface PrefetchConfig {
136
- staleTime?: number;
137
- cacheTime?: number;
138
- }
139
- export declare class CachePrefetcher {
140
- /**
141
- * Prefetch on hover
142
- */
143
- static onHover(prefetchFn: () => Promise<unknown>, delay?: number): {
144
- onMouseEnter: () => void;
145
- onMouseLeave: () => void;
146
- };
147
- /**
148
- * Prefetch on visibility
149
- */
150
- static onVisible(element: HTMLElement | null, prefetchFn: () => Promise<unknown>, options?: IntersectionObserverInit): () => void;
151
- /**
152
- * Prefetch on idle
153
- */
154
- static onIdle(prefetchFn: () => Promise<unknown>): void;
155
- }
156
- /**
157
- * Cache Persistence
158
- */
159
- export interface CachePersistenceConfig {
160
- key: string;
161
- storage?: 'localStorage' | 'sessionStorage' | 'indexedDB';
162
- version?: number;
163
- maxAge?: number;
164
- }
165
- export declare class CachePersistence {
166
- private config;
167
- constructor(config: CachePersistenceConfig);
168
- /**
169
- * Save to storage
170
- */
171
- save(data: unknown): Promise<void>;
172
- /**
173
- * Load from storage
174
- */
175
- load(): Promise<unknown | null>;
176
- /**
177
- * Remove from storage
178
- */
179
- remove(): Promise<void>;
180
- /**
181
- * Save to IndexedDB
182
- */
183
- private saveToIndexedDB;
184
- /**
185
- * Load from IndexedDB
186
- */
187
- private loadFromIndexedDB;
188
- /**
189
- * Remove from IndexedDB
190
- */
191
- private removeFromIndexedDB;
192
- }
193
- /**
194
- * Cache Statistics
195
- */
196
- export interface CacheStats {
197
- hits: number;
198
- misses: number;
199
- hitRate: number;
200
- totalQueries: number;
201
- cacheSize: number;
202
- }
203
- export declare class CacheStatsTracker {
204
- private hits;
205
- private misses;
206
- /**
207
- * Record cache hit
208
- */
209
- recordHit(): void;
210
- /**
211
- * Record cache miss
212
- */
213
- recordMiss(): void;
214
- /**
215
- * Get statistics
216
- */
217
- getStats(): CacheStats;
218
- /**
219
- * Reset statistics
220
- */
221
- reset(): void;
222
- }
223
- /**
224
- * Query dedupe helper
225
- */
226
- export declare class QueryDeduplicator {
227
- private pending;
228
- /**
229
- * Deduplicate query
230
- */
231
- dedupe<T>(key: string, queryFn: () => Promise<T>): Promise<T>;
232
- /**
233
- * Clear pending queries
234
- */
235
- clear(): void;
236
- }
237
- //# sourceMappingURL=app-cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-cache.d.ts","sourceRoot":"","sources":["../../src/caching/app-cache.ts"],"names":[],"mappings":"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"}
@@ -1,430 +0,0 @@
1
- /**
2
- * Application-Level Caching
3
- *
4
- * Utilities for React Query, SWR, and application-level cache management
5
- */
6
- import { logger } from '../observability/logger.js';
7
- export const DEFAULT_REACT_QUERY_CONFIG = {
8
- defaultOptions: {
9
- queries: {
10
- staleTime: 1000 * 60 * 5, // 5 minutes
11
- cacheTime: 1000 * 60 * 30, // 30 minutes
12
- refetchOnWindowFocus: true,
13
- refetchOnReconnect: true,
14
- refetchOnMount: true,
15
- retry: 3,
16
- retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000),
17
- },
18
- mutations: {
19
- retry: 3,
20
- retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000),
21
- },
22
- },
23
- };
24
- export const DEFAULT_SWR_CONFIG = {
25
- revalidateOnFocus: true,
26
- revalidateOnReconnect: true,
27
- refreshInterval: 0,
28
- dedupingInterval: 2000,
29
- loadingTimeout: 3000,
30
- errorRetryInterval: 5000,
31
- errorRetryCount: 3,
32
- focusThrottleInterval: 5000,
33
- shouldRetryOnError: true,
34
- keepPreviousData: false,
35
- };
36
- /**
37
- * Cache Key Generator
38
- */
39
- export class CacheKeyGenerator {
40
- prefix;
41
- constructor(prefix = 'app') {
42
- this.prefix = prefix;
43
- }
44
- /**
45
- * Generate key for list queries
46
- */
47
- list(resource, filters) {
48
- const key = [this.prefix, resource, 'list'];
49
- if (filters && Object.keys(filters).length > 0) {
50
- key.push(JSON.stringify(filters));
51
- }
52
- return key;
53
- }
54
- /**
55
- * Generate key for detail queries
56
- */
57
- detail(resource, id) {
58
- return [this.prefix, resource, 'detail', String(id)];
59
- }
60
- /**
61
- * Generate key for custom queries
62
- */
63
- custom(...parts) {
64
- return [
65
- this.prefix,
66
- ...parts.map((part) => (typeof part === 'object' ? JSON.stringify(part) : String(part))),
67
- ];
68
- }
69
- /**
70
- * Generate key for infinite queries
71
- */
72
- infinite(resource, filters) {
73
- const key = [this.prefix, resource, 'infinite'];
74
- if (filters && Object.keys(filters).length > 0) {
75
- key.push(JSON.stringify(filters));
76
- }
77
- return key;
78
- }
79
- }
80
- /**
81
- * Cache Invalidation Strategies
82
- */
83
- export class CacheInvalidator {
84
- /**
85
- * Invalidate by resource
86
- */
87
- static byResource(resource) {
88
- return ['app', resource];
89
- }
90
- /**
91
- * Invalidate by ID
92
- */
93
- static byId(resource, id) {
94
- return ['app', resource, 'detail', String(id)];
95
- }
96
- /**
97
- * Invalidate lists
98
- */
99
- static lists(resource) {
100
- return ['app', resource, 'list'];
101
- }
102
- /**
103
- * Invalidate infinite queries
104
- */
105
- static infinite(resource) {
106
- return ['app', resource, 'infinite'];
107
- }
108
- /**
109
- * Invalidate all
110
- */
111
- static all() {
112
- return ['app'];
113
- }
114
- }
115
- /**
116
- * Optimistic Update Helper
117
- */
118
- export class OptimisticUpdater {
119
- /**
120
- * Update list (add item)
121
- */
122
- static addToList(oldData, newItem) {
123
- if (!oldData)
124
- return [newItem];
125
- return [...oldData, newItem];
126
- }
127
- /**
128
- * Update list (remove item)
129
- */
130
- static removeFromList(oldData, id) {
131
- if (!oldData)
132
- return [];
133
- return oldData.filter((item) => item.id !== id);
134
- }
135
- /**
136
- * Update list (update item)
137
- */
138
- static updateInList(oldData, id, updates) {
139
- if (!oldData)
140
- return [];
141
- return oldData.map((item) => (item.id === id ? { ...item, ...updates } : item));
142
- }
143
- /**
144
- * Update detail
145
- */
146
- static updateDetail(oldData, updates) {
147
- if (!oldData)
148
- return undefined;
149
- return { ...oldData, ...updates };
150
- }
151
- /**
152
- * Update paginated list
153
- */
154
- static updatePaginatedList(oldData, id, updates) {
155
- if (!oldData)
156
- return undefined;
157
- return {
158
- ...oldData,
159
- pages: oldData.pages.map((page) => ({
160
- ...page,
161
- data: page.data.map((item) => (item.id === id ? { ...item, ...updates } : item)),
162
- })),
163
- };
164
- }
165
- }
166
- export class CachePrefetcher {
167
- /**
168
- * Prefetch on hover
169
- */
170
- static onHover(prefetchFn, delay = 300) {
171
- let timeout = null;
172
- return {
173
- onMouseEnter: () => {
174
- timeout = setTimeout(() => {
175
- prefetchFn();
176
- }, delay);
177
- },
178
- onMouseLeave: () => {
179
- if (timeout) {
180
- clearTimeout(timeout);
181
- timeout = null;
182
- }
183
- },
184
- };
185
- }
186
- /**
187
- * Prefetch on visibility
188
- */
189
- static onVisible(element, prefetchFn, options) {
190
- if (!element || typeof IntersectionObserver === 'undefined') {
191
- return () => { };
192
- }
193
- const observer = new IntersectionObserver((entries) => {
194
- for (const entry of entries) {
195
- if (entry.isIntersecting) {
196
- prefetchFn();
197
- observer.disconnect();
198
- }
199
- }
200
- }, options);
201
- observer.observe(element);
202
- return () => observer.disconnect();
203
- }
204
- /**
205
- * Prefetch on idle
206
- */
207
- static onIdle(prefetchFn) {
208
- if ('requestIdleCallback' in window) {
209
- window.requestIdleCallback(() => prefetchFn());
210
- }
211
- else {
212
- setTimeout(() => prefetchFn(), 1);
213
- }
214
- }
215
- }
216
- export class CachePersistence {
217
- config;
218
- constructor(config) {
219
- this.config = {
220
- storage: 'localStorage',
221
- version: 1,
222
- maxAge: 1000 * 60 * 60 * 24, // 1 day
223
- ...config,
224
- };
225
- }
226
- /**
227
- * Save to storage
228
- */
229
- async save(data) {
230
- const entry = {
231
- data,
232
- version: this.config.version,
233
- timestamp: Date.now(),
234
- };
235
- try {
236
- if (this.config.storage === 'indexedDB') {
237
- await this.saveToIndexedDB(entry);
238
- }
239
- else {
240
- const storage = this.config.storage === 'localStorage' ? localStorage : sessionStorage;
241
- storage.setItem(this.config.key, JSON.stringify(entry));
242
- }
243
- }
244
- catch (error) {
245
- logger.error('Cache persistence save failed', error instanceof Error ? error : new Error(String(error)));
246
- }
247
- }
248
- /**
249
- * Load from storage
250
- */
251
- async load() {
252
- try {
253
- let entry;
254
- if (this.config.storage === 'indexedDB') {
255
- entry = await this.loadFromIndexedDB();
256
- }
257
- else {
258
- const storage = this.config.storage === 'localStorage' ? localStorage : sessionStorage;
259
- const stored = storage.getItem(this.config.key);
260
- if (!stored)
261
- return null;
262
- entry = JSON.parse(stored);
263
- }
264
- if (!entry)
265
- return null;
266
- // Check version
267
- if (entry.version !== this.config.version) {
268
- await this.remove();
269
- return null;
270
- }
271
- // Check age
272
- const age = Date.now() - entry.timestamp;
273
- if (age > this.config.maxAge) {
274
- await this.remove();
275
- return null;
276
- }
277
- return entry.data;
278
- }
279
- catch (error) {
280
- logger.error('Cache persistence load failed', error instanceof Error ? error : new Error(String(error)));
281
- return null;
282
- }
283
- }
284
- /**
285
- * Remove from storage
286
- */
287
- async remove() {
288
- try {
289
- if (this.config.storage === 'indexedDB') {
290
- await this.removeFromIndexedDB();
291
- }
292
- else {
293
- const storage = this.config.storage === 'localStorage' ? localStorage : sessionStorage;
294
- storage.removeItem(this.config.key);
295
- }
296
- }
297
- catch (error) {
298
- logger.error('Cache persistence remove failed', error instanceof Error ? error : new Error(String(error)));
299
- }
300
- }
301
- /**
302
- * Save to IndexedDB
303
- */
304
- async saveToIndexedDB(entry) {
305
- return new Promise((resolve, reject) => {
306
- const request = indexedDB.open('app-cache', 1);
307
- request.onerror = () => reject(request.error);
308
- request.onsuccess = () => {
309
- const db = request.result;
310
- const transaction = db.transaction(['cache'], 'readwrite');
311
- const store = transaction.objectStore('cache');
312
- const putRequest = store.put(entry, this.config.key);
313
- putRequest.onerror = () => reject(putRequest.error);
314
- putRequest.onsuccess = () => resolve();
315
- };
316
- request.onupgradeneeded = (event) => {
317
- const db = event.target.result;
318
- if (!db.objectStoreNames.contains('cache')) {
319
- db.createObjectStore('cache');
320
- }
321
- };
322
- });
323
- }
324
- /**
325
- * Load from IndexedDB
326
- */
327
- async loadFromIndexedDB() {
328
- return new Promise((resolve, reject) => {
329
- const request = indexedDB.open('app-cache', 1);
330
- request.onerror = () => reject(request.error);
331
- request.onsuccess = () => {
332
- const db = request.result;
333
- const transaction = db.transaction(['cache'], 'readonly');
334
- const store = transaction.objectStore('cache');
335
- const getRequest = store.get(this.config.key);
336
- getRequest.onerror = () => reject(getRequest.error);
337
- getRequest.onsuccess = () => resolve(getRequest.result || null);
338
- };
339
- request.onupgradeneeded = (event) => {
340
- const db = event.target.result;
341
- if (!db.objectStoreNames.contains('cache')) {
342
- db.createObjectStore('cache');
343
- }
344
- };
345
- });
346
- }
347
- /**
348
- * Remove from IndexedDB
349
- */
350
- async removeFromIndexedDB() {
351
- return new Promise((resolve, reject) => {
352
- const request = indexedDB.open('app-cache', 1);
353
- request.onerror = () => reject(request.error);
354
- request.onsuccess = () => {
355
- const db = request.result;
356
- const transaction = db.transaction(['cache'], 'readwrite');
357
- const store = transaction.objectStore('cache');
358
- const deleteRequest = store.delete(this.config.key);
359
- deleteRequest.onerror = () => reject(deleteRequest.error);
360
- deleteRequest.onsuccess = () => resolve();
361
- };
362
- });
363
- }
364
- }
365
- export class CacheStatsTracker {
366
- hits = 0;
367
- misses = 0;
368
- /**
369
- * Record cache hit
370
- */
371
- recordHit() {
372
- this.hits++;
373
- }
374
- /**
375
- * Record cache miss
376
- */
377
- recordMiss() {
378
- this.misses++;
379
- }
380
- /**
381
- * Get statistics
382
- */
383
- getStats() {
384
- const totalQueries = this.hits + this.misses;
385
- const hitRate = totalQueries > 0 ? (this.hits / totalQueries) * 100 : 0;
386
- return {
387
- hits: this.hits,
388
- misses: this.misses,
389
- hitRate,
390
- totalQueries,
391
- cacheSize: 0, // Would need cache implementation
392
- };
393
- }
394
- /**
395
- * Reset statistics
396
- */
397
- reset() {
398
- this.hits = 0;
399
- this.misses = 0;
400
- }
401
- }
402
- /**
403
- * Query dedupe helper
404
- */
405
- export class QueryDeduplicator {
406
- pending = new Map();
407
- /**
408
- * Deduplicate query
409
- */
410
- async dedupe(key, queryFn) {
411
- // Check if query is already pending
412
- const existing = this.pending.get(key);
413
- if (existing) {
414
- return existing;
415
- }
416
- // Execute query
417
- const promise = queryFn();
418
- // Store pending query
419
- this.pending.set(key, promise);
420
- // Remove from pending when done
421
- promise.then(() => this.pending.delete(key)).catch(() => this.pending.delete(key));
422
- return promise;
423
- }
424
- /**
425
- * Clear pending queries
426
- */
427
- clear() {
428
- this.pending.clear();
429
- }
430
- }