@btst/stack 2.4.0 → 2.5.1

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 (225) hide show
  1. package/dist/node_modules/.pnpm/{@tiptap_core@3.15.3_@tiptap_pm@3.15.3 → @tiptap_core@3.20.0_@tiptap_pm@3.15.3}/node_modules/@tiptap/core/dist/index.cjs +68 -8
  2. package/dist/node_modules/.pnpm/{@tiptap_core@3.15.3_@tiptap_pm@3.15.3 → @tiptap_core@3.20.0_@tiptap_pm@3.15.3}/node_modules/@tiptap/core/dist/index.mjs +68 -8
  3. package/dist/node_modules/.pnpm/{@tiptap_extension-blockquote@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-blockquote@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-blockquote/dist/index.cjs +2 -2
  4. package/dist/node_modules/.pnpm/{@tiptap_extension-blockquote@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-blockquote@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-blockquote/dist/index.mjs +2 -2
  5. package/dist/node_modules/.pnpm/{@tiptap_extension-bold@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-bold@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-bold/dist/index.cjs +2 -2
  6. package/dist/node_modules/.pnpm/{@tiptap_extension-bold@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-bold@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-bold/dist/index.mjs +2 -2
  7. package/dist/node_modules/.pnpm/{@tiptap_extension-bubble-menu@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-bubble-menu@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-bubble-menu/dist/index.cjs +1 -1
  8. package/dist/node_modules/.pnpm/{@tiptap_extension-bubble-menu@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-bubble-menu@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-bubble-menu/dist/index.mjs +1 -1
  9. package/dist/node_modules/.pnpm/{@tiptap_extension-code-block-lowlight@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@ti_2245ac34d84b5693aa60775b0f7781e3 → @tiptap_extension-code-block-lowlight@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@ti_360e739196c451ebf408f4af5a9f3f24}/node_modules/@tiptap/extension-code-block-lowlight/dist/index.cjs +2 -2
  10. package/dist/node_modules/.pnpm/{@tiptap_extension-code-block-lowlight@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@ti_2245ac34d84b5693aa60775b0f7781e3 → @tiptap_extension-code-block-lowlight@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@ti_360e739196c451ebf408f4af5a9f3f24}/node_modules/@tiptap/extension-code-block-lowlight/dist/index.mjs +2 -2
  11. package/dist/node_modules/.pnpm/@tiptap_extension-code-block@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3/node_modules/@tiptap/extension-code-block/dist/index.cjs +319 -0
  12. package/dist/node_modules/.pnpm/@tiptap_extension-code-block@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3/node_modules/@tiptap/extension-code-block/dist/index.mjs +315 -0
  13. package/dist/node_modules/.pnpm/{@tiptap_extension-code-block@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-code-block@3.20.0_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-code-block/dist/index.cjs +1 -1
  14. package/dist/node_modules/.pnpm/{@tiptap_extension-code-block@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-code-block@3.20.0_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-code-block/dist/index.mjs +1 -1
  15. package/dist/node_modules/.pnpm/{@tiptap_extension-code@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-code@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-code/dist/index.cjs +1 -1
  16. package/dist/node_modules/.pnpm/{@tiptap_extension-code@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-code@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-code/dist/index.mjs +1 -1
  17. package/dist/node_modules/.pnpm/{@tiptap_extension-document@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-document@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-document/dist/index.cjs +1 -1
  18. package/dist/node_modules/.pnpm/{@tiptap_extension-document@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-document@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-document/dist/index.mjs +1 -1
  19. package/dist/node_modules/.pnpm/{@tiptap_extension-floating-menu@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-floating-menu@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-floating-menu/dist/index.cjs +1 -1
  20. package/dist/node_modules/.pnpm/{@tiptap_extension-floating-menu@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-floating-menu@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-floating-menu/dist/index.mjs +1 -1
  21. package/dist/node_modules/.pnpm/{@tiptap_extension-hard-break@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-hard-break@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-hard-break/dist/index.cjs +1 -1
  22. package/dist/node_modules/.pnpm/{@tiptap_extension-hard-break@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-hard-break@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-hard-break/dist/index.mjs +1 -1
  23. package/dist/node_modules/.pnpm/{@tiptap_extension-heading@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-heading@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-heading/dist/index.cjs +1 -1
  24. package/dist/node_modules/.pnpm/{@tiptap_extension-heading@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-heading@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-heading/dist/index.mjs +1 -1
  25. package/dist/node_modules/.pnpm/{@tiptap_extension-horizontal-rule@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-horizontal-rule@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-horizontal-rule/dist/index.cjs +1 -1
  26. package/dist/node_modules/.pnpm/{@tiptap_extension-horizontal-rule@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-horizontal-rule@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-horizontal-rule/dist/index.mjs +1 -1
  27. package/dist/node_modules/.pnpm/{@tiptap_extension-image@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-image@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-image/dist/index.cjs +1 -1
  28. package/dist/node_modules/.pnpm/{@tiptap_extension-image@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-image@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-image/dist/index.mjs +1 -1
  29. package/dist/node_modules/.pnpm/{@tiptap_extension-italic@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-italic@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-italic/dist/index.cjs +1 -1
  30. package/dist/node_modules/.pnpm/{@tiptap_extension-italic@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-italic@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-italic/dist/index.mjs +1 -1
  31. package/dist/node_modules/.pnpm/{@tiptap_extension-link@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-link@3.20.0_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-link/dist/index.cjs +28 -22
  32. package/dist/node_modules/.pnpm/{@tiptap_extension-link@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-link@3.20.0_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-link/dist/index.mjs +28 -22
  33. package/dist/node_modules/.pnpm/{@tiptap_extension-list@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-list@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-list/dist/index.cjs +1 -1
  34. package/dist/node_modules/.pnpm/{@tiptap_extension-list@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-list@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-list/dist/index.mjs +1 -1
  35. package/dist/node_modules/.pnpm/{@tiptap_extension-paragraph@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-paragraph@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-paragraph/dist/index.cjs +1 -1
  36. package/dist/node_modules/.pnpm/{@tiptap_extension-paragraph@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-paragraph@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-paragraph/dist/index.mjs +1 -1
  37. package/dist/node_modules/.pnpm/{@tiptap_extension-strike@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-strike@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-strike/dist/index.cjs +1 -1
  38. package/dist/node_modules/.pnpm/{@tiptap_extension-strike@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-strike@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-strike/dist/index.mjs +1 -1
  39. package/dist/node_modules/.pnpm/{@tiptap_extension-table@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-table@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-table/dist/index.cjs +1 -1
  40. package/dist/node_modules/.pnpm/{@tiptap_extension-table@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extension-table@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extension-table/dist/index.mjs +1 -1
  41. package/dist/node_modules/.pnpm/{@tiptap_extension-text-style@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-text-style@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-text-style/dist/index.cjs +1 -1
  42. package/dist/node_modules/.pnpm/{@tiptap_extension-text-style@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-text-style@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-text-style/dist/index.mjs +1 -1
  43. package/dist/node_modules/.pnpm/{@tiptap_extension-text@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-text@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-text/dist/index.cjs +1 -1
  44. package/dist/node_modules/.pnpm/{@tiptap_extension-text@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-text@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-text/dist/index.mjs +1 -1
  45. package/dist/node_modules/.pnpm/{@tiptap_extension-typography@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-typography@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-typography/dist/index.cjs +1 -1
  46. package/dist/node_modules/.pnpm/{@tiptap_extension-typography@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-typography@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-typography/dist/index.mjs +1 -1
  47. package/dist/node_modules/.pnpm/{@tiptap_extension-underline@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-underline@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-underline/dist/index.cjs +1 -1
  48. package/dist/node_modules/.pnpm/{@tiptap_extension-underline@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3_ → @tiptap_extension-underline@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3_}/node_modules/@tiptap/extension-underline/dist/index.mjs +1 -1
  49. package/dist/node_modules/.pnpm/{@tiptap_extensions@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extensions@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extensions/dist/index.cjs +1 -1
  50. package/dist/node_modules/.pnpm/{@tiptap_extensions@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_extensions@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/extensions/dist/index.mjs +1 -1
  51. package/dist/node_modules/.pnpm/{@tiptap_markdown@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_markdown@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/markdown/dist/index.cjs +1 -1
  52. package/dist/node_modules/.pnpm/{@tiptap_markdown@3.15.3_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3 → @tiptap_markdown@3.15.3_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tiptap_pm@3.15.3}/node_modules/@tiptap/markdown/dist/index.mjs +1 -1
  53. package/dist/node_modules/.pnpm/{@tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tip_d7a2a9a319317617a8908309649a6dda → @tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tip_b42b5b2d59902d8a01cd4cc3e2d5dc64}/node_modules/@tiptap/react/dist/index.cjs +1 -1
  54. package/dist/node_modules/.pnpm/{@tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tip_d7a2a9a319317617a8908309649a6dda → @tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tip_b42b5b2d59902d8a01cd4cc3e2d5dc64}/node_modules/@tiptap/react/dist/index.mjs +2 -2
  55. package/dist/node_modules/.pnpm/{@tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tip_d7a2a9a319317617a8908309649a6dda → @tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tip_b42b5b2d59902d8a01cd4cc3e2d5dc64}/node_modules/@tiptap/react/dist/menus/index.cjs +2 -2
  56. package/dist/node_modules/.pnpm/{@tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.15.3_@tiptap_pm@3.15.3__@tip_d7a2a9a319317617a8908309649a6dda → @tiptap_react@3.15.3_@floating-ui_dom@1.7.4_@tiptap_core@3.20.0_@tiptap_pm@3.15.3__@tip_b42b5b2d59902d8a01cd4cc3e2d5dc64}/node_modules/@tiptap/react/dist/menus/index.mjs +2 -2
  57. package/dist/node_modules/.pnpm/@tiptap_starter-kit@3.15.3/node_modules/@tiptap/starter-kit/dist/index.cjs +17 -17
  58. package/dist/node_modules/.pnpm/@tiptap_starter-kit@3.15.3/node_modules/@tiptap/starter-kit/dist/index.mjs +17 -17
  59. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.cjs +33 -47
  60. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.mjs +33 -47
  61. package/dist/packages/stack/src/plugins/ai-chat/client/plugin.cjs +14 -21
  62. package/dist/packages/stack/src/plugins/ai-chat/client/plugin.mjs +15 -22
  63. package/dist/packages/stack/src/plugins/blog/api/plugin.cjs +28 -45
  64. package/dist/packages/stack/src/plugins/blog/api/plugin.mjs +22 -39
  65. package/dist/packages/stack/src/plugins/blog/client/plugin.cjs +23 -27
  66. package/dist/packages/stack/src/plugins/blog/client/plugin.mjs +24 -28
  67. package/dist/packages/stack/src/plugins/cms/api/plugin.cjs +14 -17
  68. package/dist/packages/stack/src/plugins/cms/api/plugin.mjs +14 -17
  69. package/dist/packages/stack/src/plugins/cms/client/plugin.cjs +11 -15
  70. package/dist/packages/stack/src/plugins/cms/client/plugin.mjs +12 -16
  71. package/dist/packages/stack/src/plugins/form-builder/api/plugin.cjs +58 -62
  72. package/dist/packages/stack/src/plugins/form-builder/api/plugin.mjs +58 -62
  73. package/dist/packages/stack/src/plugins/form-builder/client/plugin.cjs +12 -12
  74. package/dist/packages/stack/src/plugins/form-builder/client/plugin.mjs +13 -13
  75. package/dist/packages/stack/src/plugins/kanban/api/plugin.cjs +86 -117
  76. package/dist/packages/stack/src/plugins/kanban/api/plugin.mjs +83 -114
  77. package/dist/packages/stack/src/plugins/kanban/client/plugin.cjs +22 -29
  78. package/dist/packages/stack/src/plugins/kanban/client/plugin.mjs +23 -30
  79. package/dist/packages/stack/src/plugins/open-api/api/generator.cjs +2 -1
  80. package/dist/packages/stack/src/plugins/open-api/api/generator.mjs +2 -1
  81. package/dist/packages/stack/src/plugins/ui-builder/client/plugin.cjs +8 -8
  82. package/dist/packages/stack/src/plugins/ui-builder/client/plugin.mjs +9 -9
  83. package/dist/packages/stack/src/plugins/utils.cjs +42 -0
  84. package/dist/packages/stack/src/plugins/utils.mjs +41 -1
  85. package/dist/packages/ui/src/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.cjs +1 -1
  86. package/dist/packages/ui/src/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.mjs +1 -1
  87. package/dist/packages/ui/src/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.cjs +1 -1
  88. package/dist/packages/ui/src/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.mjs +1 -1
  89. package/dist/packages/ui/src/components/minimal-tiptap/extensions/color/color.cjs +1 -1
  90. package/dist/packages/ui/src/components/minimal-tiptap/extensions/color/color.mjs +1 -1
  91. package/dist/packages/ui/src/components/minimal-tiptap/extensions/file-handler/index.cjs +1 -1
  92. package/dist/packages/ui/src/components/minimal-tiptap/extensions/file-handler/index.mjs +1 -1
  93. package/dist/packages/ui/src/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.cjs +1 -1
  94. package/dist/packages/ui/src/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.mjs +1 -1
  95. package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/components/image-view-block.cjs +1 -1
  96. package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/components/image-view-block.mjs +1 -1
  97. package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/image.cjs +2 -2
  98. package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/image.mjs +2 -2
  99. package/dist/packages/ui/src/components/minimal-tiptap/extensions/markdown-paste/markdown-paste.cjs +1 -1
  100. package/dist/packages/ui/src/components/minimal-tiptap/extensions/markdown-paste/markdown-paste.mjs +1 -1
  101. package/dist/packages/ui/src/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.cjs +1 -1
  102. package/dist/packages/ui/src/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.mjs +1 -1
  103. package/dist/packages/ui/src/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.cjs +1 -1
  104. package/dist/packages/ui/src/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.mjs +1 -1
  105. package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-minimal-tiptap.cjs +7 -7
  106. package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-minimal-tiptap.mjs +7 -7
  107. package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-tiptap-editor.cjs +1 -1
  108. package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-tiptap-editor.mjs +1 -1
  109. package/dist/packages/ui/src/components/minimal-tiptap/minimal-tiptap.cjs +1 -1
  110. package/dist/packages/ui/src/components/minimal-tiptap/minimal-tiptap.mjs +1 -1
  111. package/dist/plugins/ai-chat/api/index.d.cts +1 -1
  112. package/dist/plugins/ai-chat/api/index.d.mts +1 -1
  113. package/dist/plugins/ai-chat/api/index.d.ts +1 -1
  114. package/dist/plugins/ai-chat/client/hooks/index.d.cts +1 -1
  115. package/dist/plugins/ai-chat/client/hooks/index.d.mts +1 -1
  116. package/dist/plugins/ai-chat/client/hooks/index.d.ts +1 -1
  117. package/dist/plugins/ai-chat/client/index.d.cts +8 -8
  118. package/dist/plugins/ai-chat/client/index.d.mts +8 -8
  119. package/dist/plugins/ai-chat/client/index.d.ts +8 -8
  120. package/dist/plugins/ai-chat/query-keys.d.cts +1 -1
  121. package/dist/plugins/ai-chat/query-keys.d.mts +1 -1
  122. package/dist/plugins/ai-chat/query-keys.d.ts +1 -1
  123. package/dist/plugins/blog/api/index.d.cts +1 -1
  124. package/dist/plugins/blog/api/index.d.mts +1 -1
  125. package/dist/plugins/blog/api/index.d.ts +1 -1
  126. package/dist/plugins/blog/client/index.d.cts +12 -12
  127. package/dist/plugins/blog/client/index.d.mts +12 -12
  128. package/dist/plugins/blog/client/index.d.ts +12 -12
  129. package/dist/plugins/blog/query-keys.d.cts +1 -1
  130. package/dist/plugins/blog/query-keys.d.mts +1 -1
  131. package/dist/plugins/blog/query-keys.d.ts +1 -1
  132. package/dist/plugins/client/index.cjs +1 -0
  133. package/dist/plugins/client/index.d.cts +8 -1
  134. package/dist/plugins/client/index.d.mts +8 -1
  135. package/dist/plugins/client/index.d.ts +8 -1
  136. package/dist/plugins/client/index.mjs +1 -1
  137. package/dist/plugins/cms/api/index.d.cts +2 -2
  138. package/dist/plugins/cms/api/index.d.mts +2 -2
  139. package/dist/plugins/cms/api/index.d.ts +2 -2
  140. package/dist/plugins/cms/client/hooks/index.d.cts +1 -1
  141. package/dist/plugins/cms/client/hooks/index.d.mts +1 -1
  142. package/dist/plugins/cms/client/hooks/index.d.ts +1 -1
  143. package/dist/plugins/cms/client/index.d.cts +6 -6
  144. package/dist/plugins/cms/client/index.d.mts +6 -6
  145. package/dist/plugins/cms/client/index.d.ts +6 -6
  146. package/dist/plugins/cms/query-keys.d.cts +2 -2
  147. package/dist/plugins/cms/query-keys.d.mts +2 -2
  148. package/dist/plugins/cms/query-keys.d.ts +2 -2
  149. package/dist/plugins/form-builder/api/index.d.cts +2 -2
  150. package/dist/plugins/form-builder/api/index.d.mts +2 -2
  151. package/dist/plugins/form-builder/api/index.d.ts +2 -2
  152. package/dist/plugins/form-builder/client/components/index.d.cts +1 -1
  153. package/dist/plugins/form-builder/client/components/index.d.mts +1 -1
  154. package/dist/plugins/form-builder/client/components/index.d.ts +1 -1
  155. package/dist/plugins/form-builder/client/hooks/index.d.cts +1 -1
  156. package/dist/plugins/form-builder/client/hooks/index.d.mts +1 -1
  157. package/dist/plugins/form-builder/client/hooks/index.d.ts +1 -1
  158. package/dist/plugins/form-builder/client/index.d.cts +6 -6
  159. package/dist/plugins/form-builder/client/index.d.mts +6 -6
  160. package/dist/plugins/form-builder/client/index.d.ts +6 -6
  161. package/dist/plugins/form-builder/query-keys.d.cts +2 -2
  162. package/dist/plugins/form-builder/query-keys.d.mts +2 -2
  163. package/dist/plugins/form-builder/query-keys.d.ts +2 -2
  164. package/dist/plugins/kanban/api/index.d.cts +1 -1
  165. package/dist/plugins/kanban/api/index.d.mts +1 -1
  166. package/dist/plugins/kanban/api/index.d.ts +1 -1
  167. package/dist/plugins/kanban/client/index.d.cts +12 -12
  168. package/dist/plugins/kanban/client/index.d.mts +12 -12
  169. package/dist/plugins/kanban/client/index.d.ts +12 -12
  170. package/dist/plugins/kanban/query-keys.d.cts +1 -1
  171. package/dist/plugins/kanban/query-keys.d.mts +1 -1
  172. package/dist/plugins/kanban/query-keys.d.ts +1 -1
  173. package/dist/plugins/ui-builder/client/hooks/index.d.cts +1 -1
  174. package/dist/plugins/ui-builder/client/hooks/index.d.mts +1 -1
  175. package/dist/plugins/ui-builder/client/hooks/index.d.ts +1 -1
  176. package/dist/plugins/ui-builder/client/index.d.cts +3 -3
  177. package/dist/plugins/ui-builder/client/index.d.mts +3 -3
  178. package/dist/plugins/ui-builder/client/index.d.ts +3 -3
  179. package/dist/plugins/ui-builder/index.d.cts +2 -2
  180. package/dist/plugins/ui-builder/index.d.mts +2 -2
  181. package/dist/plugins/ui-builder/index.d.ts +2 -2
  182. package/dist/shared/{stack.C-WUPMT6.d.cts → stack.B2xZTSiO.d.cts} +4 -4
  183. package/dist/shared/{stack.CczspVn2.d.mts → stack.B58oHdqm.d.mts} +1 -1
  184. package/dist/shared/{stack.BepFXT3w.d.mts → stack.B8D4r97Z.d.mts} +22 -22
  185. package/dist/shared/{stack.CVDTkMoO.d.mts → stack.B8QD11QU.d.cts} +7 -7
  186. package/dist/shared/{stack.CVDTkMoO.d.cts → stack.B8QD11QU.d.mts} +7 -7
  187. package/dist/shared/{stack.CVDTkMoO.d.ts → stack.B8QD11QU.d.ts} +7 -7
  188. package/dist/shared/{stack.kcdnD4gA.d.cts → stack.BgTmujxW.d.mts} +1 -1
  189. package/dist/shared/{stack.DdI5W6MB.d.mts → stack.BozPgbrZ.d.cts} +19 -19
  190. package/dist/shared/{stack.DdI5W6MB.d.ts → stack.BozPgbrZ.d.mts} +19 -19
  191. package/dist/shared/{stack.DdI5W6MB.d.cts → stack.BozPgbrZ.d.ts} +19 -19
  192. package/dist/shared/{stack.BUkC2EsZ.d.cts → stack.C9Mg2Q46.d.cts} +1 -1
  193. package/dist/shared/{stack.Kq2-QzOC.d.ts → stack.CLQuVdwK.d.ts} +1 -1
  194. package/dist/shared/{stack.B7ONvlD_.d.mts → stack.CSx98K5H.d.cts} +1 -1
  195. package/dist/shared/{stack.BEn34wW6.d.ts → stack.CTDVxbrA.d.ts} +12 -12
  196. package/dist/shared/{stack.C-Ptrz8s.d.ts → stack.Cj_zKww4.d.ts} +4 -4
  197. package/dist/shared/{stack.DWoCZff7.d.cts → stack.D-b5zbPm.d.cts} +12 -12
  198. package/dist/shared/{stack.CL8ts1Mu.d.ts → stack.DXnclTG7.d.ts} +8 -8
  199. package/dist/shared/{stack.heOA9gzA.d.cts → stack.DaZM10cp.d.cts} +8 -8
  200. package/dist/shared/{stack.CgWzG5jH.d.ts → stack.DgKOwl20.d.ts} +22 -22
  201. package/dist/shared/{stack.DTDxgFj8.d.mts → stack.FVWf2JhZ.d.mts} +12 -12
  202. package/dist/shared/{stack.Dk5r4W1F.d.mts → stack.cfCkioTe.d.mts} +8 -8
  203. package/dist/shared/{stack.6fUOjLs9.d.mts → stack.dH7u-TJH.d.mts} +4 -4
  204. package/dist/shared/{stack.DASmUVjX.d.ts → stack.sO33ZDhK.d.ts} +1 -1
  205. package/dist/shared/{stack.D3GB6wKv.d.cts → stack.uWSqCWAb.d.cts} +22 -22
  206. package/package.json +1 -1
  207. package/src/plugins/ai-chat/api/plugin.ts +48 -63
  208. package/src/plugins/ai-chat/client/plugin.tsx +23 -31
  209. package/src/plugins/blog/api/plugin.ts +31 -47
  210. package/src/plugins/blog/client/plugin.tsx +36 -39
  211. package/src/plugins/client/index.ts +5 -1
  212. package/src/plugins/cms/api/plugin.ts +14 -17
  213. package/src/plugins/cms/client/plugin.tsx +18 -21
  214. package/src/plugins/cms/types.ts +7 -7
  215. package/src/plugins/form-builder/api/plugin.ts +64 -64
  216. package/src/plugins/form-builder/client/plugin.tsx +19 -18
  217. package/src/plugins/form-builder/types.ts +19 -24
  218. package/src/plugins/kanban/api/plugin.ts +111 -136
  219. package/src/plugins/kanban/client/plugin.tsx +35 -41
  220. package/src/plugins/open-api/api/generator.ts +3 -1
  221. package/src/plugins/ui-builder/client/plugin.tsx +11 -10
  222. package/src/plugins/ui-builder/types.ts +4 -4
  223. package/src/plugins/utils.ts +92 -1
  224. /package/dist/node_modules/.pnpm/{@tiptap_core@3.15.3_@tiptap_pm@3.15.3 → @tiptap_core@3.20.0_@tiptap_pm@3.15.3}/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.cjs +0 -0
  225. /package/dist/node_modules/.pnpm/{@tiptap_core@3.15.3_@tiptap_pm@3.15.3 → @tiptap_core@3.20.0_@tiptap_pm@3.15.3}/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.mjs +0 -0
@@ -6,6 +6,7 @@ import { createPostSchema, updatePostSchema } from '../schemas.mjs';
6
6
  import { getAllTags, getPostBySlug, getAllPosts } from './getters.mjs';
7
7
  import { BLOG_QUERY_KEYS } from './query-key-defs.mjs';
8
8
  import { serializePost, serializeTag } from './serializers.mjs';
9
+ import { runHookWithShim } from '../../utils.mjs';
9
10
 
10
11
  function createBlogPrefetchForRoute(adapter) {
11
12
  return async function prefetchForRoute(key, qc, params) {
@@ -153,12 +154,11 @@ const blogBackendPlugin = (hooks) => defineBackendPlugin({
153
154
  const context = { query, headers };
154
155
  try {
155
156
  if (hooks?.onBeforeListPosts) {
156
- const canList = await hooks.onBeforeListPosts(query, context);
157
- if (!canList) {
158
- throw ctx.error(403, {
159
- message: "Unauthorized: Cannot list posts"
160
- });
161
- }
157
+ await runHookWithShim(
158
+ () => hooks.onBeforeListPosts(query, context),
159
+ ctx.error,
160
+ "Unauthorized: Cannot list posts"
161
+ );
162
162
  }
163
163
  const result = await getAllPosts(adapter, query);
164
164
  if (hooks?.onPostsRead) {
@@ -186,15 +186,11 @@ const blogBackendPlugin = (hooks) => defineBackendPlugin({
186
186
  };
187
187
  try {
188
188
  if (hooks?.onBeforeCreatePost) {
189
- const canCreate = await hooks.onBeforeCreatePost(
190
- ctx.body,
191
- context
189
+ await runHookWithShim(
190
+ () => hooks.onBeforeCreatePost(ctx.body, context),
191
+ ctx.error,
192
+ "Unauthorized: Cannot create post"
192
193
  );
193
- if (!canCreate) {
194
- throw ctx.error(403, {
195
- message: "Unauthorized: Cannot create post"
196
- });
197
- }
198
194
  }
199
195
  const { tags, ...postData } = ctx.body;
200
196
  const tagNames = tags || [];
@@ -257,16 +253,11 @@ const blogBackendPlugin = (hooks) => defineBackendPlugin({
257
253
  };
258
254
  try {
259
255
  if (hooks?.onBeforeUpdatePost) {
260
- const canUpdate = await hooks.onBeforeUpdatePost(
261
- ctx.params.id,
262
- ctx.body,
263
- context
256
+ await runHookWithShim(
257
+ () => hooks.onBeforeUpdatePost(ctx.params.id, ctx.body, context),
258
+ ctx.error,
259
+ "Unauthorized: Cannot update post"
264
260
  );
265
- if (!canUpdate) {
266
- throw ctx.error(403, {
267
- message: "Unauthorized: Cannot update post"
268
- });
269
- }
270
261
  }
271
262
  const { tags, slug: rawSlug, ...restPostData } = ctx.body;
272
263
  const tagNames = tags || [];
@@ -362,15 +353,11 @@ const blogBackendPlugin = (hooks) => defineBackendPlugin({
362
353
  };
363
354
  try {
364
355
  if (hooks?.onBeforeDeletePost) {
365
- const canDelete = await hooks.onBeforeDeletePost(
366
- ctx.params.id,
367
- context
356
+ await runHookWithShim(
357
+ () => hooks.onBeforeDeletePost(ctx.params.id, context),
358
+ ctx.error,
359
+ "Unauthorized: Cannot delete post"
368
360
  );
369
- if (!canDelete) {
370
- throw ctx.error(403, {
371
- message: "Unauthorized: Cannot delete post"
372
- });
373
- }
374
361
  }
375
362
  await adapter.delete({
376
363
  model: "post",
@@ -399,15 +386,11 @@ const blogBackendPlugin = (hooks) => defineBackendPlugin({
399
386
  const context = { query, headers };
400
387
  try {
401
388
  if (hooks?.onBeforeListPosts) {
402
- const canList = await hooks.onBeforeListPosts(
403
- { published: true },
404
- context
389
+ await runHookWithShim(
390
+ () => hooks.onBeforeListPosts({ published: true }, context),
391
+ ctx.error,
392
+ "Unauthorized: Cannot list posts"
405
393
  );
406
- if (!canList) {
407
- throw ctx.error(403, {
408
- message: "Unauthorized: Cannot list posts"
409
- });
410
- }
411
394
  }
412
395
  const date = query.date;
413
396
  const previousPosts = await adapter.findMany({
@@ -23,10 +23,10 @@ function createPostsLoader(published, config) {
23
23
  };
24
24
  try {
25
25
  if (hooks?.beforeLoadPosts) {
26
- const canLoad = await hooks.beforeLoadPosts({ published }, context);
27
- if (!canLoad) {
28
- throw new Error("Load prevented by beforeLoadPosts hook");
29
- }
26
+ await client.runClientHookWithShim(
27
+ () => hooks.beforeLoadPosts({ published }, context),
28
+ "Load prevented by beforeLoadPosts hook"
29
+ );
30
30
  }
31
31
  const limit = 10;
32
32
  const client$1 = client.createApiClient({
@@ -47,14 +47,10 @@ function createPostsLoader(published, config) {
47
47
  await queryClient.prefetchQuery(tagsQuery);
48
48
  if (hooks?.afterLoadPosts) {
49
49
  const posts = queryClient.getQueryData(listQuery.queryKey) || null;
50
- const canContinue = await hooks.afterLoadPosts(
51
- posts,
52
- { published },
53
- context
50
+ await client.runClientHookWithShim(
51
+ () => hooks.afterLoadPosts(posts, { published }, context),
52
+ "Load prevented by afterLoadPosts hook"
54
53
  );
55
- if (canContinue === false) {
56
- throw new Error("Load prevented by afterLoadPosts hook");
57
- }
58
54
  }
59
55
  const queryState = queryClient.getQueryState(listQuery.queryKey);
60
56
  if (queryState?.error) {
@@ -90,10 +86,10 @@ function createPostLoader(slug, config, path) {
90
86
  };
91
87
  try {
92
88
  if (hooks?.beforeLoadPost) {
93
- const canLoad = await hooks.beforeLoadPost(slug, context);
94
- if (!canLoad) {
95
- throw new Error("Load prevented by beforeLoadPost hook");
96
- }
89
+ await client.runClientHookWithShim(
90
+ () => hooks.beforeLoadPost(slug, context),
91
+ "Load prevented by beforeLoadPost hook"
92
+ );
97
93
  }
98
94
  const client$1 = client.createApiClient({
99
95
  baseURL: apiBaseURL,
@@ -104,10 +100,10 @@ function createPostLoader(slug, config, path) {
104
100
  await queryClient.prefetchQuery(postQuery);
105
101
  if (hooks?.afterLoadPost) {
106
102
  const post = queryClient.getQueryData(postQuery.queryKey) || null;
107
- const canContinue = await hooks.afterLoadPost(post, slug, context);
108
- if (canContinue === false) {
109
- throw new Error("Load prevented by afterLoadPost hook");
110
- }
103
+ await client.runClientHookWithShim(
104
+ () => hooks.afterLoadPost(post, slug, context),
105
+ "Load prevented by afterLoadPost hook"
106
+ );
111
107
  }
112
108
  const queryState = queryClient.getQueryState(postQuery.queryKey);
113
109
  if (queryState?.error) {
@@ -142,16 +138,16 @@ function createNewPostLoader(config) {
142
138
  };
143
139
  try {
144
140
  if (hooks?.beforeLoadNewPost) {
145
- const canLoad = await hooks.beforeLoadNewPost(context);
146
- if (!canLoad) {
147
- throw new Error("Load prevented by beforeLoadNewPost hook");
148
- }
141
+ await client.runClientHookWithShim(
142
+ () => hooks.beforeLoadNewPost(context),
143
+ "Load prevented by beforeLoadNewPost hook"
144
+ );
149
145
  }
150
146
  if (hooks?.afterLoadNewPost) {
151
- const canContinue = await hooks.afterLoadNewPost(context);
152
- if (canContinue === false) {
153
- throw new Error("Load prevented by afterLoadNewPost hook");
154
- }
147
+ await client.runClientHookWithShim(
148
+ () => hooks.afterLoadNewPost(context),
149
+ "Load prevented by afterLoadNewPost hook"
150
+ );
155
151
  }
156
152
  } catch (error) {
157
153
  if (hooks?.onLoadError) {
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { defineClientPlugin, createApiClient, isConnectionError } from '@btst/stack/plugins/client';
2
+ import { defineClientPlugin, createApiClient, runClientHookWithShim, isConnectionError } from '@btst/stack/plugins/client';
3
3
  import { createRoute } from '@btst/yar';
4
4
  import { createBlogQueryKeys } from '../../../../../../plugins/blog/query-keys.mjs';
5
5
  import { HomePageComponent } from './components/pages/home-page.mjs';
@@ -21,10 +21,10 @@ function createPostsLoader(published, config) {
21
21
  };
22
22
  try {
23
23
  if (hooks?.beforeLoadPosts) {
24
- const canLoad = await hooks.beforeLoadPosts({ published }, context);
25
- if (!canLoad) {
26
- throw new Error("Load prevented by beforeLoadPosts hook");
27
- }
24
+ await runClientHookWithShim(
25
+ () => hooks.beforeLoadPosts({ published }, context),
26
+ "Load prevented by beforeLoadPosts hook"
27
+ );
28
28
  }
29
29
  const limit = 10;
30
30
  const client = createApiClient({
@@ -45,14 +45,10 @@ function createPostsLoader(published, config) {
45
45
  await queryClient.prefetchQuery(tagsQuery);
46
46
  if (hooks?.afterLoadPosts) {
47
47
  const posts = queryClient.getQueryData(listQuery.queryKey) || null;
48
- const canContinue = await hooks.afterLoadPosts(
49
- posts,
50
- { published },
51
- context
48
+ await runClientHookWithShim(
49
+ () => hooks.afterLoadPosts(posts, { published }, context),
50
+ "Load prevented by afterLoadPosts hook"
52
51
  );
53
- if (canContinue === false) {
54
- throw new Error("Load prevented by afterLoadPosts hook");
55
- }
56
52
  }
57
53
  const queryState = queryClient.getQueryState(listQuery.queryKey);
58
54
  if (queryState?.error) {
@@ -88,10 +84,10 @@ function createPostLoader(slug, config, path) {
88
84
  };
89
85
  try {
90
86
  if (hooks?.beforeLoadPost) {
91
- const canLoad = await hooks.beforeLoadPost(slug, context);
92
- if (!canLoad) {
93
- throw new Error("Load prevented by beforeLoadPost hook");
94
- }
87
+ await runClientHookWithShim(
88
+ () => hooks.beforeLoadPost(slug, context),
89
+ "Load prevented by beforeLoadPost hook"
90
+ );
95
91
  }
96
92
  const client = createApiClient({
97
93
  baseURL: apiBaseURL,
@@ -102,10 +98,10 @@ function createPostLoader(slug, config, path) {
102
98
  await queryClient.prefetchQuery(postQuery);
103
99
  if (hooks?.afterLoadPost) {
104
100
  const post = queryClient.getQueryData(postQuery.queryKey) || null;
105
- const canContinue = await hooks.afterLoadPost(post, slug, context);
106
- if (canContinue === false) {
107
- throw new Error("Load prevented by afterLoadPost hook");
108
- }
101
+ await runClientHookWithShim(
102
+ () => hooks.afterLoadPost(post, slug, context),
103
+ "Load prevented by afterLoadPost hook"
104
+ );
109
105
  }
110
106
  const queryState = queryClient.getQueryState(postQuery.queryKey);
111
107
  if (queryState?.error) {
@@ -140,16 +136,16 @@ function createNewPostLoader(config) {
140
136
  };
141
137
  try {
142
138
  if (hooks?.beforeLoadNewPost) {
143
- const canLoad = await hooks.beforeLoadNewPost(context);
144
- if (!canLoad) {
145
- throw new Error("Load prevented by beforeLoadNewPost hook");
146
- }
139
+ await runClientHookWithShim(
140
+ () => hooks.beforeLoadNewPost(context),
141
+ "Load prevented by beforeLoadNewPost hook"
142
+ );
147
143
  }
148
144
  if (hooks?.afterLoadNewPost) {
149
- const canContinue = await hooks.afterLoadNewPost(context);
150
- if (canContinue === false) {
151
- throw new Error("Load prevented by afterLoadNewPost hook");
152
- }
145
+ await runClientHookWithShim(
146
+ () => hooks.afterLoadNewPost(context),
147
+ "Load prevented by afterLoadNewPost hook"
148
+ );
153
149
  }
154
150
  } catch (error) {
155
151
  if (hooks?.onLoadError) {
@@ -9,6 +9,7 @@ const utils = require('../utils.cjs');
9
9
  const getters = require('./getters.cjs');
10
10
  const mutations = require('./mutations.cjs');
11
11
  const queryKeyDefs = require('./query-key-defs.cjs');
12
+ const utils$1 = require('../../utils.cjs');
12
13
 
13
14
  async function syncContentTypes(adapter, config) {
14
15
  for (const ct of config.contentTypes) {
@@ -489,13 +490,11 @@ const cmsBackendPlugin = (config) => {
489
490
  }
490
491
  const processedData = validation.data;
491
492
  if (config.hooks?.onBeforeCreate) {
492
- const result = await config.hooks.onBeforeCreate(
493
- processedData,
494
- context
493
+ await utils$1.runHookWithShim(
494
+ () => config.hooks.onBeforeCreate(processedData, context),
495
+ ctx.error,
496
+ "Create operation denied"
495
497
  );
496
- if (result === false) {
497
- throw ctx.error(403, { message: "Create operation denied" });
498
- }
499
498
  }
500
499
  const item = await adapter.create({
501
500
  model: "contentItem",
@@ -599,14 +598,11 @@ const cmsBackendPlugin = (config) => {
599
598
  }
600
599
  const processedData = validatedData;
601
600
  if (config.hooks?.onBeforeUpdate && validatedData) {
602
- const result = await config.hooks.onBeforeUpdate(
603
- id,
604
- validatedData,
605
- context
601
+ await utils$1.runHookWithShim(
602
+ () => config.hooks.onBeforeUpdate(id, validatedData, context),
603
+ ctx.error,
604
+ "Update operation denied"
606
605
  );
607
- if (result === false) {
608
- throw ctx.error(403, { message: "Update operation denied" });
609
- }
610
606
  }
611
607
  if (relationIds) {
612
608
  await syncRelations(adapter, id, relationIds);
@@ -657,10 +653,11 @@ const cmsBackendPlugin = (config) => {
657
653
  throw ctx.error(404, { message: "Content item not found" });
658
654
  }
659
655
  if (config.hooks?.onBeforeDelete) {
660
- const canDelete = await config.hooks.onBeforeDelete(id, context);
661
- if (!canDelete) {
662
- throw ctx.error(403, { message: "Delete operation denied" });
663
- }
656
+ await utils$1.runHookWithShim(
657
+ () => config.hooks.onBeforeDelete(id, context),
658
+ ctx.error,
659
+ "Delete operation denied"
660
+ );
664
661
  }
665
662
  await adapter.delete({
666
663
  model: "contentItem",
@@ -7,6 +7,7 @@ import { slugify } from '../utils.mjs';
7
7
  import { serializeContentType, getAllContentItems, serializeContentItemWithType, serializeContentItem, getContentItemById, getContentItemBySlug, getAllContentTypes } from './getters.mjs';
8
8
  import { createCMSContentItem } from './mutations.mjs';
9
9
  import { CMS_QUERY_KEYS } from './query-key-defs.mjs';
10
+ import { runHookWithShim } from '../../utils.mjs';
10
11
 
11
12
  async function syncContentTypes(adapter, config) {
12
13
  for (const ct of config.contentTypes) {
@@ -487,13 +488,11 @@ const cmsBackendPlugin = (config) => {
487
488
  }
488
489
  const processedData = validation.data;
489
490
  if (config.hooks?.onBeforeCreate) {
490
- const result = await config.hooks.onBeforeCreate(
491
- processedData,
492
- context
491
+ await runHookWithShim(
492
+ () => config.hooks.onBeforeCreate(processedData, context),
493
+ ctx.error,
494
+ "Create operation denied"
493
495
  );
494
- if (result === false) {
495
- throw ctx.error(403, { message: "Create operation denied" });
496
- }
497
496
  }
498
497
  const item = await adapter.create({
499
498
  model: "contentItem",
@@ -597,14 +596,11 @@ const cmsBackendPlugin = (config) => {
597
596
  }
598
597
  const processedData = validatedData;
599
598
  if (config.hooks?.onBeforeUpdate && validatedData) {
600
- const result = await config.hooks.onBeforeUpdate(
601
- id,
602
- validatedData,
603
- context
599
+ await runHookWithShim(
600
+ () => config.hooks.onBeforeUpdate(id, validatedData, context),
601
+ ctx.error,
602
+ "Update operation denied"
604
603
  );
605
- if (result === false) {
606
- throw ctx.error(403, { message: "Update operation denied" });
607
- }
608
604
  }
609
605
  if (relationIds) {
610
606
  await syncRelations(adapter, id, relationIds);
@@ -655,10 +651,11 @@ const cmsBackendPlugin = (config) => {
655
651
  throw ctx.error(404, { message: "Content item not found" });
656
652
  }
657
653
  if (config.hooks?.onBeforeDelete) {
658
- const canDelete = await config.hooks.onBeforeDelete(id, context);
659
- if (!canDelete) {
660
- throw ctx.error(403, { message: "Delete operation denied" });
661
- }
654
+ await runHookWithShim(
655
+ () => config.hooks.onBeforeDelete(id, context),
656
+ ctx.error,
657
+ "Delete operation denied"
658
+ );
662
659
  }
663
660
  await adapter.delete({
664
661
  model: "contentItem",
@@ -34,10 +34,10 @@ function createDashboardLoader(config) {
34
34
  };
35
35
  try {
36
36
  if (hooks?.beforeLoadDashboard) {
37
- const canLoad = await hooks.beforeLoadDashboard(context);
38
- if (!canLoad) {
39
- throw new Error("Load prevented by beforeLoadDashboard hook");
40
- }
37
+ await client.runClientHookWithShim(
38
+ () => hooks.beforeLoadDashboard(context),
39
+ "Load prevented by beforeLoadDashboard hook"
40
+ );
41
41
  }
42
42
  const client$1 = client.createApiClient({
43
43
  baseURL: apiBaseURL,
@@ -82,10 +82,10 @@ function createContentListLoader(typeSlug, config) {
82
82
  };
83
83
  try {
84
84
  if (hooks?.beforeLoadContentList) {
85
- const canLoad = await hooks.beforeLoadContentList(typeSlug, context);
86
- if (!canLoad) {
87
- throw new Error("Load prevented by beforeLoadContentList hook");
88
- }
85
+ await client.runClientHookWithShim(
86
+ () => hooks.beforeLoadContentList(typeSlug, context),
87
+ "Load prevented by beforeLoadContentList hook"
88
+ );
89
89
  }
90
90
  const client$1 = client.createApiClient({
91
91
  baseURL: apiBaseURL,
@@ -154,14 +154,10 @@ function createContentEditorLoader(typeSlug, id, config) {
154
154
  };
155
155
  try {
156
156
  if (hooks?.beforeLoadContentEditor) {
157
- const canLoad = await hooks.beforeLoadContentEditor(
158
- typeSlug,
159
- id,
160
- context
157
+ await client.runClientHookWithShim(
158
+ () => hooks.beforeLoadContentEditor(typeSlug, id, context),
159
+ "Load prevented by beforeLoadContentEditor hook"
161
160
  );
162
- if (!canLoad) {
163
- throw new Error("Load prevented by beforeLoadContentEditor hook");
164
- }
165
161
  }
166
162
  const client$1 = client.createApiClient({
167
163
  baseURL: apiBaseURL,
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { lazy } from 'react';
3
- import { defineClientPlugin, createApiClient, isConnectionError } from '@btst/stack/plugins/client';
3
+ import { defineClientPlugin, createApiClient, runClientHookWithShim, isConnectionError } from '@btst/stack/plugins/client';
4
4
  import { createRoute } from '@btst/yar';
5
5
  import { createCMSQueryKeys } from '../../../../../../plugins/cms/query-keys.mjs';
6
6
 
@@ -32,10 +32,10 @@ function createDashboardLoader(config) {
32
32
  };
33
33
  try {
34
34
  if (hooks?.beforeLoadDashboard) {
35
- const canLoad = await hooks.beforeLoadDashboard(context);
36
- if (!canLoad) {
37
- throw new Error("Load prevented by beforeLoadDashboard hook");
38
- }
35
+ await runClientHookWithShim(
36
+ () => hooks.beforeLoadDashboard(context),
37
+ "Load prevented by beforeLoadDashboard hook"
38
+ );
39
39
  }
40
40
  const client = createApiClient({
41
41
  baseURL: apiBaseURL,
@@ -80,10 +80,10 @@ function createContentListLoader(typeSlug, config) {
80
80
  };
81
81
  try {
82
82
  if (hooks?.beforeLoadContentList) {
83
- const canLoad = await hooks.beforeLoadContentList(typeSlug, context);
84
- if (!canLoad) {
85
- throw new Error("Load prevented by beforeLoadContentList hook");
86
- }
83
+ await runClientHookWithShim(
84
+ () => hooks.beforeLoadContentList(typeSlug, context),
85
+ "Load prevented by beforeLoadContentList hook"
86
+ );
87
87
  }
88
88
  const client = createApiClient({
89
89
  baseURL: apiBaseURL,
@@ -152,14 +152,10 @@ function createContentEditorLoader(typeSlug, id, config) {
152
152
  };
153
153
  try {
154
154
  if (hooks?.beforeLoadContentEditor) {
155
- const canLoad = await hooks.beforeLoadContentEditor(
156
- typeSlug,
157
- id,
158
- context
155
+ await runClientHookWithShim(
156
+ () => hooks.beforeLoadContentEditor(typeSlug, id, context),
157
+ "Load prevented by beforeLoadContentEditor hook"
159
158
  );
160
- if (!canLoad) {
161
- throw new Error("Load prevented by beforeLoadContentEditor hook");
162
- }
163
159
  }
164
160
  const client = createApiClient({
165
161
  baseURL: apiBaseURL,