@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.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/node_modules/.pnpm/@tiptap_starter-kit@3.15.3/node_modules/@tiptap/starter-kit/dist/index.cjs +17 -17
- package/dist/node_modules/.pnpm/@tiptap_starter-kit@3.15.3/node_modules/@tiptap/starter-kit/dist/index.mjs +17 -17
- package/dist/packages/stack/src/plugins/ai-chat/api/plugin.cjs +33 -47
- package/dist/packages/stack/src/plugins/ai-chat/api/plugin.mjs +33 -47
- package/dist/packages/stack/src/plugins/ai-chat/client/plugin.cjs +14 -21
- package/dist/packages/stack/src/plugins/ai-chat/client/plugin.mjs +15 -22
- package/dist/packages/stack/src/plugins/blog/api/plugin.cjs +28 -45
- package/dist/packages/stack/src/plugins/blog/api/plugin.mjs +22 -39
- package/dist/packages/stack/src/plugins/blog/client/plugin.cjs +23 -27
- package/dist/packages/stack/src/plugins/blog/client/plugin.mjs +24 -28
- package/dist/packages/stack/src/plugins/cms/api/plugin.cjs +14 -17
- package/dist/packages/stack/src/plugins/cms/api/plugin.mjs +14 -17
- package/dist/packages/stack/src/plugins/cms/client/plugin.cjs +11 -15
- package/dist/packages/stack/src/plugins/cms/client/plugin.mjs +12 -16
- package/dist/packages/stack/src/plugins/form-builder/api/plugin.cjs +58 -62
- package/dist/packages/stack/src/plugins/form-builder/api/plugin.mjs +58 -62
- package/dist/packages/stack/src/plugins/form-builder/client/plugin.cjs +12 -12
- package/dist/packages/stack/src/plugins/form-builder/client/plugin.mjs +13 -13
- package/dist/packages/stack/src/plugins/kanban/api/plugin.cjs +86 -117
- package/dist/packages/stack/src/plugins/kanban/api/plugin.mjs +83 -114
- package/dist/packages/stack/src/plugins/kanban/client/plugin.cjs +22 -29
- package/dist/packages/stack/src/plugins/kanban/client/plugin.mjs +23 -30
- package/dist/packages/stack/src/plugins/open-api/api/generator.cjs +2 -1
- package/dist/packages/stack/src/plugins/open-api/api/generator.mjs +2 -1
- package/dist/packages/stack/src/plugins/ui-builder/client/plugin.cjs +8 -8
- package/dist/packages/stack/src/plugins/ui-builder/client/plugin.mjs +9 -9
- package/dist/packages/stack/src/plugins/utils.cjs +42 -0
- package/dist/packages/stack/src/plugins/utils.mjs +41 -1
- package/dist/packages/ui/src/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/color/color.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/color/color.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/file-handler/index.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/file-handler/index.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/components/image-view-block.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/components/image-view-block.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/image.cjs +2 -2
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/image/image.mjs +2 -2
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/markdown-paste/markdown-paste.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/markdown-paste/markdown-paste.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-minimal-tiptap.cjs +7 -7
- package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-minimal-tiptap.mjs +7 -7
- package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-tiptap-editor.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/hooks/use-tiptap-editor.mjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/minimal-tiptap.cjs +1 -1
- package/dist/packages/ui/src/components/minimal-tiptap/minimal-tiptap.mjs +1 -1
- package/dist/plugins/ai-chat/api/index.d.cts +1 -1
- package/dist/plugins/ai-chat/api/index.d.mts +1 -1
- package/dist/plugins/ai-chat/api/index.d.ts +1 -1
- package/dist/plugins/ai-chat/client/hooks/index.d.cts +1 -1
- package/dist/plugins/ai-chat/client/hooks/index.d.mts +1 -1
- package/dist/plugins/ai-chat/client/hooks/index.d.ts +1 -1
- package/dist/plugins/ai-chat/client/index.d.cts +8 -8
- package/dist/plugins/ai-chat/client/index.d.mts +8 -8
- package/dist/plugins/ai-chat/client/index.d.ts +8 -8
- package/dist/plugins/ai-chat/query-keys.d.cts +1 -1
- package/dist/plugins/ai-chat/query-keys.d.mts +1 -1
- package/dist/plugins/ai-chat/query-keys.d.ts +1 -1
- package/dist/plugins/blog/api/index.d.cts +1 -1
- package/dist/plugins/blog/api/index.d.mts +1 -1
- package/dist/plugins/blog/api/index.d.ts +1 -1
- package/dist/plugins/blog/client/index.d.cts +12 -12
- package/dist/plugins/blog/client/index.d.mts +12 -12
- package/dist/plugins/blog/client/index.d.ts +12 -12
- package/dist/plugins/blog/query-keys.d.cts +1 -1
- package/dist/plugins/blog/query-keys.d.mts +1 -1
- package/dist/plugins/blog/query-keys.d.ts +1 -1
- package/dist/plugins/client/index.cjs +1 -0
- package/dist/plugins/client/index.d.cts +8 -1
- package/dist/plugins/client/index.d.mts +8 -1
- package/dist/plugins/client/index.d.ts +8 -1
- package/dist/plugins/client/index.mjs +1 -1
- package/dist/plugins/cms/api/index.d.cts +2 -2
- package/dist/plugins/cms/api/index.d.mts +2 -2
- package/dist/plugins/cms/api/index.d.ts +2 -2
- package/dist/plugins/cms/client/hooks/index.d.cts +1 -1
- package/dist/plugins/cms/client/hooks/index.d.mts +1 -1
- package/dist/plugins/cms/client/hooks/index.d.ts +1 -1
- package/dist/plugins/cms/client/index.d.cts +6 -6
- package/dist/plugins/cms/client/index.d.mts +6 -6
- package/dist/plugins/cms/client/index.d.ts +6 -6
- package/dist/plugins/cms/query-keys.d.cts +2 -2
- package/dist/plugins/cms/query-keys.d.mts +2 -2
- package/dist/plugins/cms/query-keys.d.ts +2 -2
- package/dist/plugins/form-builder/api/index.d.cts +2 -2
- package/dist/plugins/form-builder/api/index.d.mts +2 -2
- package/dist/plugins/form-builder/api/index.d.ts +2 -2
- package/dist/plugins/form-builder/client/components/index.d.cts +1 -1
- package/dist/plugins/form-builder/client/components/index.d.mts +1 -1
- package/dist/plugins/form-builder/client/components/index.d.ts +1 -1
- package/dist/plugins/form-builder/client/hooks/index.d.cts +1 -1
- package/dist/plugins/form-builder/client/hooks/index.d.mts +1 -1
- package/dist/plugins/form-builder/client/hooks/index.d.ts +1 -1
- package/dist/plugins/form-builder/client/index.d.cts +6 -6
- package/dist/plugins/form-builder/client/index.d.mts +6 -6
- package/dist/plugins/form-builder/client/index.d.ts +6 -6
- package/dist/plugins/form-builder/query-keys.d.cts +2 -2
- package/dist/plugins/form-builder/query-keys.d.mts +2 -2
- package/dist/plugins/form-builder/query-keys.d.ts +2 -2
- package/dist/plugins/kanban/api/index.d.cts +1 -1
- package/dist/plugins/kanban/api/index.d.mts +1 -1
- package/dist/plugins/kanban/api/index.d.ts +1 -1
- package/dist/plugins/kanban/client/index.d.cts +12 -12
- package/dist/plugins/kanban/client/index.d.mts +12 -12
- package/dist/plugins/kanban/client/index.d.ts +12 -12
- package/dist/plugins/kanban/query-keys.d.cts +1 -1
- package/dist/plugins/kanban/query-keys.d.mts +1 -1
- package/dist/plugins/kanban/query-keys.d.ts +1 -1
- package/dist/plugins/ui-builder/client/hooks/index.d.cts +1 -1
- package/dist/plugins/ui-builder/client/hooks/index.d.mts +1 -1
- package/dist/plugins/ui-builder/client/hooks/index.d.ts +1 -1
- package/dist/plugins/ui-builder/client/index.d.cts +3 -3
- package/dist/plugins/ui-builder/client/index.d.mts +3 -3
- package/dist/plugins/ui-builder/client/index.d.ts +3 -3
- package/dist/plugins/ui-builder/index.d.cts +2 -2
- package/dist/plugins/ui-builder/index.d.mts +2 -2
- package/dist/plugins/ui-builder/index.d.ts +2 -2
- package/dist/shared/{stack.C-WUPMT6.d.cts → stack.B2xZTSiO.d.cts} +4 -4
- package/dist/shared/{stack.CczspVn2.d.mts → stack.B58oHdqm.d.mts} +1 -1
- package/dist/shared/{stack.BepFXT3w.d.mts → stack.B8D4r97Z.d.mts} +22 -22
- package/dist/shared/{stack.CVDTkMoO.d.mts → stack.B8QD11QU.d.cts} +7 -7
- package/dist/shared/{stack.CVDTkMoO.d.cts → stack.B8QD11QU.d.mts} +7 -7
- package/dist/shared/{stack.CVDTkMoO.d.ts → stack.B8QD11QU.d.ts} +7 -7
- package/dist/shared/{stack.kcdnD4gA.d.cts → stack.BgTmujxW.d.mts} +1 -1
- package/dist/shared/{stack.DdI5W6MB.d.mts → stack.BozPgbrZ.d.cts} +19 -19
- package/dist/shared/{stack.DdI5W6MB.d.ts → stack.BozPgbrZ.d.mts} +19 -19
- package/dist/shared/{stack.DdI5W6MB.d.cts → stack.BozPgbrZ.d.ts} +19 -19
- package/dist/shared/{stack.BUkC2EsZ.d.cts → stack.C9Mg2Q46.d.cts} +1 -1
- package/dist/shared/{stack.Kq2-QzOC.d.ts → stack.CLQuVdwK.d.ts} +1 -1
- package/dist/shared/{stack.B7ONvlD_.d.mts → stack.CSx98K5H.d.cts} +1 -1
- package/dist/shared/{stack.BEn34wW6.d.ts → stack.CTDVxbrA.d.ts} +12 -12
- package/dist/shared/{stack.C-Ptrz8s.d.ts → stack.Cj_zKww4.d.ts} +4 -4
- package/dist/shared/{stack.DWoCZff7.d.cts → stack.D-b5zbPm.d.cts} +12 -12
- package/dist/shared/{stack.CL8ts1Mu.d.ts → stack.DXnclTG7.d.ts} +8 -8
- package/dist/shared/{stack.heOA9gzA.d.cts → stack.DaZM10cp.d.cts} +8 -8
- package/dist/shared/{stack.CgWzG5jH.d.ts → stack.DgKOwl20.d.ts} +22 -22
- package/dist/shared/{stack.DTDxgFj8.d.mts → stack.FVWf2JhZ.d.mts} +12 -12
- package/dist/shared/{stack.Dk5r4W1F.d.mts → stack.cfCkioTe.d.mts} +8 -8
- package/dist/shared/{stack.6fUOjLs9.d.mts → stack.dH7u-TJH.d.mts} +4 -4
- package/dist/shared/{stack.DASmUVjX.d.ts → stack.sO33ZDhK.d.ts} +1 -1
- package/dist/shared/{stack.D3GB6wKv.d.cts → stack.uWSqCWAb.d.cts} +22 -22
- package/package.json +1 -1
- package/src/plugins/ai-chat/api/plugin.ts +48 -63
- package/src/plugins/ai-chat/client/plugin.tsx +23 -31
- package/src/plugins/blog/api/plugin.ts +31 -47
- package/src/plugins/blog/client/plugin.tsx +36 -39
- package/src/plugins/client/index.ts +5 -1
- package/src/plugins/cms/api/plugin.ts +14 -17
- package/src/plugins/cms/client/plugin.tsx +18 -21
- package/src/plugins/cms/types.ts +7 -7
- package/src/plugins/form-builder/api/plugin.ts +64 -64
- package/src/plugins/form-builder/client/plugin.tsx +19 -18
- package/src/plugins/form-builder/types.ts +19 -24
- package/src/plugins/kanban/api/plugin.ts +111 -136
- package/src/plugins/kanban/client/plugin.tsx +35 -41
- package/src/plugins/open-api/api/generator.ts +3 -1
- package/src/plugins/ui-builder/client/plugin.tsx +11 -10
- package/src/plugins/ui-builder/types.ts +4 -4
- package/src/plugins/utils.ts +92 -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/jsx-runtime/jsx-runtime.cjs +0 -0
- /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
|
@@ -24,49 +24,49 @@ interface ChatApiContext<TBody = any, TParams = any, TQuery = any> {
|
|
|
24
24
|
*/
|
|
25
25
|
interface AiChatBackendHooks {
|
|
26
26
|
/**
|
|
27
|
-
* Called before processing a chat message.
|
|
27
|
+
* Called before processing a chat message. Throw an error to deny access.
|
|
28
28
|
* @param messages - Array of messages being sent
|
|
29
29
|
* @param context - Request context with headers, etc.
|
|
30
30
|
*/
|
|
31
31
|
onBeforeChat?: (messages: Array<{
|
|
32
32
|
role: string;
|
|
33
33
|
content: string;
|
|
34
|
-
}>, context: ChatApiContext) => Promise<
|
|
34
|
+
}>, context: ChatApiContext) => Promise<void> | void;
|
|
35
35
|
/**
|
|
36
|
-
* Called before listing conversations.
|
|
36
|
+
* Called before listing conversations. Throw an error to deny access.
|
|
37
37
|
* @param context - Request context with headers, etc.
|
|
38
38
|
*/
|
|
39
|
-
onBeforeListConversations?: (context: ChatApiContext) => Promise<
|
|
39
|
+
onBeforeListConversations?: (context: ChatApiContext) => Promise<void> | void;
|
|
40
40
|
/**
|
|
41
|
-
* Called before getting a single conversation.
|
|
41
|
+
* Called before getting a single conversation. Throw an error to deny access.
|
|
42
42
|
* @param conversationId - ID of the conversation being accessed
|
|
43
43
|
* @param context - Request context with headers, etc.
|
|
44
44
|
*/
|
|
45
|
-
onBeforeGetConversation?: (conversationId: string, context: ChatApiContext) => Promise<
|
|
45
|
+
onBeforeGetConversation?: (conversationId: string, context: ChatApiContext) => Promise<void> | void;
|
|
46
46
|
/**
|
|
47
|
-
* Called before creating a conversation.
|
|
47
|
+
* Called before creating a conversation. Throw an error to deny access.
|
|
48
48
|
* @param data - Conversation data being created
|
|
49
49
|
* @param context - Request context with headers, etc.
|
|
50
50
|
*/
|
|
51
51
|
onBeforeCreateConversation?: (data: {
|
|
52
52
|
id?: string;
|
|
53
53
|
title?: string;
|
|
54
|
-
}, context: ChatApiContext) => Promise<
|
|
54
|
+
}, context: ChatApiContext) => Promise<void> | void;
|
|
55
55
|
/**
|
|
56
|
-
* Called before updating a conversation.
|
|
56
|
+
* Called before updating a conversation. Throw an error to deny access.
|
|
57
57
|
* @param conversationId - ID of the conversation being updated
|
|
58
58
|
* @param data - Updated conversation data
|
|
59
59
|
* @param context - Request context with headers, etc.
|
|
60
60
|
*/
|
|
61
61
|
onBeforeUpdateConversation?: (conversationId: string, data: {
|
|
62
62
|
title?: string;
|
|
63
|
-
}, context: ChatApiContext) => Promise<
|
|
63
|
+
}, context: ChatApiContext) => Promise<void> | void;
|
|
64
64
|
/**
|
|
65
|
-
* Called before deleting a conversation.
|
|
65
|
+
* Called before deleting a conversation. Throw an error to deny access.
|
|
66
66
|
* @param conversationId - ID of the conversation being deleted
|
|
67
67
|
* @param context - Request context with headers, etc.
|
|
68
68
|
*/
|
|
69
|
-
onBeforeDeleteConversation?: (conversationId: string, context: ChatApiContext) => Promise<
|
|
69
|
+
onBeforeDeleteConversation?: (conversationId: string, context: ChatApiContext) => Promise<void> | void;
|
|
70
70
|
/**
|
|
71
71
|
* Called after the structural routeName/allowlist validation, with the list
|
|
72
72
|
* of tool names that passed. Return a filtered subset to further restrict
|
|
@@ -83,21 +83,21 @@ interface LoaderContext {
|
|
|
83
83
|
*/
|
|
84
84
|
interface UIBuilderClientHooks {
|
|
85
85
|
/**
|
|
86
|
-
* Called before loading the page list.
|
|
86
|
+
* Called before loading the page list. Throw an error to cancel loading.
|
|
87
87
|
* @param context - Loader context with path, params, etc.
|
|
88
88
|
*/
|
|
89
|
-
beforeLoadPageList?: (context: LoaderContext) => Promise<
|
|
89
|
+
beforeLoadPageList?: (context: LoaderContext) => Promise<void> | void;
|
|
90
90
|
/**
|
|
91
91
|
* Called after the page list is loaded.
|
|
92
92
|
* @param context - Loader context
|
|
93
93
|
*/
|
|
94
94
|
afterLoadPageList?: (context: LoaderContext) => Promise<void> | void;
|
|
95
95
|
/**
|
|
96
|
-
* Called before loading the page builder.
|
|
96
|
+
* Called before loading the page builder. Throw an error to cancel loading.
|
|
97
97
|
* @param pageId - The page ID (undefined for new pages)
|
|
98
98
|
* @param context - Loader context
|
|
99
99
|
*/
|
|
100
|
-
beforeLoadPageBuilder?: (pageId: string | undefined, context: LoaderContext) => Promise<
|
|
100
|
+
beforeLoadPageBuilder?: (pageId: string | undefined, context: LoaderContext) => Promise<void> | void;
|
|
101
101
|
/**
|
|
102
102
|
* Called after the page builder is loaded.
|
|
103
103
|
* @param pageId - The page ID (undefined for new pages)
|
|
@@ -24,49 +24,49 @@ interface ChatApiContext<TBody = any, TParams = any, TQuery = any> {
|
|
|
24
24
|
*/
|
|
25
25
|
interface AiChatBackendHooks {
|
|
26
26
|
/**
|
|
27
|
-
* Called before processing a chat message.
|
|
27
|
+
* Called before processing a chat message. Throw an error to deny access.
|
|
28
28
|
* @param messages - Array of messages being sent
|
|
29
29
|
* @param context - Request context with headers, etc.
|
|
30
30
|
*/
|
|
31
31
|
onBeforeChat?: (messages: Array<{
|
|
32
32
|
role: string;
|
|
33
33
|
content: string;
|
|
34
|
-
}>, context: ChatApiContext) => Promise<
|
|
34
|
+
}>, context: ChatApiContext) => Promise<void> | void;
|
|
35
35
|
/**
|
|
36
|
-
* Called before listing conversations.
|
|
36
|
+
* Called before listing conversations. Throw an error to deny access.
|
|
37
37
|
* @param context - Request context with headers, etc.
|
|
38
38
|
*/
|
|
39
|
-
onBeforeListConversations?: (context: ChatApiContext) => Promise<
|
|
39
|
+
onBeforeListConversations?: (context: ChatApiContext) => Promise<void> | void;
|
|
40
40
|
/**
|
|
41
|
-
* Called before getting a single conversation.
|
|
41
|
+
* Called before getting a single conversation. Throw an error to deny access.
|
|
42
42
|
* @param conversationId - ID of the conversation being accessed
|
|
43
43
|
* @param context - Request context with headers, etc.
|
|
44
44
|
*/
|
|
45
|
-
onBeforeGetConversation?: (conversationId: string, context: ChatApiContext) => Promise<
|
|
45
|
+
onBeforeGetConversation?: (conversationId: string, context: ChatApiContext) => Promise<void> | void;
|
|
46
46
|
/**
|
|
47
|
-
* Called before creating a conversation.
|
|
47
|
+
* Called before creating a conversation. Throw an error to deny access.
|
|
48
48
|
* @param data - Conversation data being created
|
|
49
49
|
* @param context - Request context with headers, etc.
|
|
50
50
|
*/
|
|
51
51
|
onBeforeCreateConversation?: (data: {
|
|
52
52
|
id?: string;
|
|
53
53
|
title?: string;
|
|
54
|
-
}, context: ChatApiContext) => Promise<
|
|
54
|
+
}, context: ChatApiContext) => Promise<void> | void;
|
|
55
55
|
/**
|
|
56
|
-
* Called before updating a conversation.
|
|
56
|
+
* Called before updating a conversation. Throw an error to deny access.
|
|
57
57
|
* @param conversationId - ID of the conversation being updated
|
|
58
58
|
* @param data - Updated conversation data
|
|
59
59
|
* @param context - Request context with headers, etc.
|
|
60
60
|
*/
|
|
61
61
|
onBeforeUpdateConversation?: (conversationId: string, data: {
|
|
62
62
|
title?: string;
|
|
63
|
-
}, context: ChatApiContext) => Promise<
|
|
63
|
+
}, context: ChatApiContext) => Promise<void> | void;
|
|
64
64
|
/**
|
|
65
|
-
* Called before deleting a conversation.
|
|
65
|
+
* Called before deleting a conversation. Throw an error to deny access.
|
|
66
66
|
* @param conversationId - ID of the conversation being deleted
|
|
67
67
|
* @param context - Request context with headers, etc.
|
|
68
68
|
*/
|
|
69
|
-
onBeforeDeleteConversation?: (conversationId: string, context: ChatApiContext) => Promise<
|
|
69
|
+
onBeforeDeleteConversation?: (conversationId: string, context: ChatApiContext) => Promise<void> | void;
|
|
70
70
|
/**
|
|
71
71
|
* Called after the structural routeName/allowlist validation, with the list
|
|
72
72
|
* of tool names that passed. Return a filtered subset to further restrict
|
|
@@ -113,30 +113,30 @@ interface BlogApiContext<TBody = any, TParams = any, TQuery = any> {
|
|
|
113
113
|
*/
|
|
114
114
|
interface BlogBackendHooks {
|
|
115
115
|
/**
|
|
116
|
-
* Called before listing posts.
|
|
116
|
+
* Called before listing posts. Throw an error to deny access.
|
|
117
117
|
* @param filter - Query parameters for filtering posts
|
|
118
118
|
* @param context - Request context with headers, etc.
|
|
119
119
|
*/
|
|
120
|
-
onBeforeListPosts?: (filter: z.infer<typeof PostListQuerySchema>, context: BlogApiContext) => Promise<
|
|
120
|
+
onBeforeListPosts?: (filter: z.infer<typeof PostListQuerySchema>, context: BlogApiContext) => Promise<void> | void;
|
|
121
121
|
/**
|
|
122
|
-
* Called before creating a post.
|
|
122
|
+
* Called before creating a post. Throw an error to deny access.
|
|
123
123
|
* @param data - Post data being created
|
|
124
124
|
* @param context - Request context with headers, etc.
|
|
125
125
|
*/
|
|
126
|
-
onBeforeCreatePost?: (data: z.infer<typeof createPostSchema>, context: BlogApiContext) => Promise<
|
|
126
|
+
onBeforeCreatePost?: (data: z.infer<typeof createPostSchema>, context: BlogApiContext) => Promise<void> | void;
|
|
127
127
|
/**
|
|
128
|
-
* Called before updating a post.
|
|
128
|
+
* Called before updating a post. Throw an error to deny access.
|
|
129
129
|
* @param postId - ID of the post being updated
|
|
130
130
|
* @param data - Updated post data
|
|
131
131
|
* @param context - Request context with headers, etc.
|
|
132
132
|
*/
|
|
133
|
-
onBeforeUpdatePost?: (postId: string, data: z.infer<typeof updatePostSchema>, context: BlogApiContext) => Promise<
|
|
133
|
+
onBeforeUpdatePost?: (postId: string, data: z.infer<typeof updatePostSchema>, context: BlogApiContext) => Promise<void> | void;
|
|
134
134
|
/**
|
|
135
|
-
* Called before deleting a post.
|
|
135
|
+
* Called before deleting a post. Throw an error to deny access.
|
|
136
136
|
* @param postId - ID of the post being deleted
|
|
137
137
|
* @param context - Request context with headers, etc.
|
|
138
138
|
*/
|
|
139
|
-
onBeforeDeletePost?: (postId: string, context: BlogApiContext) => Promise<
|
|
139
|
+
onBeforeDeletePost?: (postId: string, context: BlogApiContext) => Promise<void> | void;
|
|
140
140
|
/**
|
|
141
141
|
* Called after posts are read successfully
|
|
142
142
|
* @param posts - The list of posts returned by the query
|
|
@@ -113,30 +113,30 @@ interface BlogApiContext<TBody = any, TParams = any, TQuery = any> {
|
|
|
113
113
|
*/
|
|
114
114
|
interface BlogBackendHooks {
|
|
115
115
|
/**
|
|
116
|
-
* Called before listing posts.
|
|
116
|
+
* Called before listing posts. Throw an error to deny access.
|
|
117
117
|
* @param filter - Query parameters for filtering posts
|
|
118
118
|
* @param context - Request context with headers, etc.
|
|
119
119
|
*/
|
|
120
|
-
onBeforeListPosts?: (filter: z.infer<typeof PostListQuerySchema>, context: BlogApiContext) => Promise<
|
|
120
|
+
onBeforeListPosts?: (filter: z.infer<typeof PostListQuerySchema>, context: BlogApiContext) => Promise<void> | void;
|
|
121
121
|
/**
|
|
122
|
-
* Called before creating a post.
|
|
122
|
+
* Called before creating a post. Throw an error to deny access.
|
|
123
123
|
* @param data - Post data being created
|
|
124
124
|
* @param context - Request context with headers, etc.
|
|
125
125
|
*/
|
|
126
|
-
onBeforeCreatePost?: (data: z.infer<typeof createPostSchema>, context: BlogApiContext) => Promise<
|
|
126
|
+
onBeforeCreatePost?: (data: z.infer<typeof createPostSchema>, context: BlogApiContext) => Promise<void> | void;
|
|
127
127
|
/**
|
|
128
|
-
* Called before updating a post.
|
|
128
|
+
* Called before updating a post. Throw an error to deny access.
|
|
129
129
|
* @param postId - ID of the post being updated
|
|
130
130
|
* @param data - Updated post data
|
|
131
131
|
* @param context - Request context with headers, etc.
|
|
132
132
|
*/
|
|
133
|
-
onBeforeUpdatePost?: (postId: string, data: z.infer<typeof updatePostSchema>, context: BlogApiContext) => Promise<
|
|
133
|
+
onBeforeUpdatePost?: (postId: string, data: z.infer<typeof updatePostSchema>, context: BlogApiContext) => Promise<void> | void;
|
|
134
134
|
/**
|
|
135
|
-
* Called before deleting a post.
|
|
135
|
+
* Called before deleting a post. Throw an error to deny access.
|
|
136
136
|
* @param postId - ID of the post being deleted
|
|
137
137
|
* @param context - Request context with headers, etc.
|
|
138
138
|
*/
|
|
139
|
-
onBeforeDeletePost?: (postId: string, context: BlogApiContext) => Promise<
|
|
139
|
+
onBeforeDeletePost?: (postId: string, context: BlogApiContext) => Promise<void> | void;
|
|
140
140
|
/**
|
|
141
141
|
* Called after posts are read successfully
|
|
142
142
|
* @param posts - The list of posts returned by the query
|
|
@@ -189,25 +189,25 @@ interface KanbanApiContext<TBody = unknown, TParams = unknown, TQuery = unknown>
|
|
|
189
189
|
*/
|
|
190
190
|
interface KanbanBackendHooks {
|
|
191
191
|
/**
|
|
192
|
-
* Called before listing boards.
|
|
192
|
+
* Called before listing boards. Throw an error to deny access.
|
|
193
193
|
*/
|
|
194
|
-
onBeforeListBoards?: (filter: z.infer<typeof BoardListQuerySchema>, context: KanbanApiContext) => Promise<
|
|
194
|
+
onBeforeListBoards?: (filter: z.infer<typeof BoardListQuerySchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
195
195
|
/**
|
|
196
|
-
* Called before creating a board.
|
|
196
|
+
* Called before creating a board. Throw an error to deny access.
|
|
197
197
|
*/
|
|
198
|
-
onBeforeCreateBoard?: (data: z.infer<typeof createBoardSchema>, context: KanbanApiContext) => Promise<
|
|
198
|
+
onBeforeCreateBoard?: (data: z.infer<typeof createBoardSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
199
199
|
/**
|
|
200
|
-
* Called before reading a single board.
|
|
200
|
+
* Called before reading a single board. Throw an error to deny access.
|
|
201
201
|
*/
|
|
202
|
-
onBeforeReadBoard?: (boardId: string, context: KanbanApiContext) => Promise<
|
|
202
|
+
onBeforeReadBoard?: (boardId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
203
203
|
/**
|
|
204
|
-
* Called before updating a board.
|
|
204
|
+
* Called before updating a board. Throw an error to deny access.
|
|
205
205
|
*/
|
|
206
|
-
onBeforeUpdateBoard?: (boardId: string, data: z.infer<typeof updateBoardSchema>, context: KanbanApiContext) => Promise<
|
|
206
|
+
onBeforeUpdateBoard?: (boardId: string, data: z.infer<typeof updateBoardSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
207
207
|
/**
|
|
208
|
-
* Called before deleting a board.
|
|
208
|
+
* Called before deleting a board. Throw an error to deny access.
|
|
209
209
|
*/
|
|
210
|
-
onBeforeDeleteBoard?: (boardId: string, context: KanbanApiContext) => Promise<
|
|
210
|
+
onBeforeDeleteBoard?: (boardId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
211
211
|
/**
|
|
212
212
|
* Called after boards are listed successfully.
|
|
213
213
|
* Receives the items array (same shape as `board[]`) for consistency
|
|
@@ -251,17 +251,17 @@ interface KanbanBackendHooks {
|
|
|
251
251
|
*/
|
|
252
252
|
onDeleteBoardError?: (error: Error, context: KanbanApiContext) => Promise<void> | void;
|
|
253
253
|
/**
|
|
254
|
-
* Called before creating a column.
|
|
254
|
+
* Called before creating a column. Throw an error to deny access.
|
|
255
255
|
*/
|
|
256
|
-
onBeforeCreateColumn?: (data: z.infer<typeof createColumnSchema>, context: KanbanApiContext) => Promise<
|
|
256
|
+
onBeforeCreateColumn?: (data: z.infer<typeof createColumnSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
257
257
|
/**
|
|
258
|
-
* Called before updating a column.
|
|
258
|
+
* Called before updating a column. Throw an error to deny access.
|
|
259
259
|
*/
|
|
260
|
-
onBeforeUpdateColumn?: (columnId: string, data: z.infer<typeof updateColumnSchema>, context: KanbanApiContext) => Promise<
|
|
260
|
+
onBeforeUpdateColumn?: (columnId: string, data: z.infer<typeof updateColumnSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
261
261
|
/**
|
|
262
|
-
* Called before deleting a column.
|
|
262
|
+
* Called before deleting a column. Throw an error to deny access.
|
|
263
263
|
*/
|
|
264
|
-
onBeforeDeleteColumn?: (columnId: string, context: KanbanApiContext) => Promise<
|
|
264
|
+
onBeforeDeleteColumn?: (columnId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
265
265
|
/**
|
|
266
266
|
* Called after a column is created successfully
|
|
267
267
|
*/
|
|
@@ -275,17 +275,17 @@ interface KanbanBackendHooks {
|
|
|
275
275
|
*/
|
|
276
276
|
onColumnDeleted?: (columnId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
277
277
|
/**
|
|
278
|
-
* Called before creating a task.
|
|
278
|
+
* Called before creating a task. Throw an error to deny access.
|
|
279
279
|
*/
|
|
280
|
-
onBeforeCreateTask?: (data: z.infer<typeof createTaskSchema>, context: KanbanApiContext) => Promise<
|
|
280
|
+
onBeforeCreateTask?: (data: z.infer<typeof createTaskSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
281
281
|
/**
|
|
282
|
-
* Called before updating a task.
|
|
282
|
+
* Called before updating a task. Throw an error to deny access.
|
|
283
283
|
*/
|
|
284
|
-
onBeforeUpdateTask?: (taskId: string, data: z.infer<typeof updateTaskSchema>, context: KanbanApiContext) => Promise<
|
|
284
|
+
onBeforeUpdateTask?: (taskId: string, data: z.infer<typeof updateTaskSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
285
285
|
/**
|
|
286
|
-
* Called before deleting a task.
|
|
286
|
+
* Called before deleting a task. Throw an error to deny access.
|
|
287
287
|
*/
|
|
288
|
-
onBeforeDeleteTask?: (taskId: string, context: KanbanApiContext) => Promise<
|
|
288
|
+
onBeforeDeleteTask?: (taskId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
289
289
|
/**
|
|
290
290
|
* Called after a task is created successfully
|
|
291
291
|
*/
|
|
@@ -24,49 +24,49 @@ interface ChatApiContext<TBody = any, TParams = any, TQuery = any> {
|
|
|
24
24
|
*/
|
|
25
25
|
interface AiChatBackendHooks {
|
|
26
26
|
/**
|
|
27
|
-
* Called before processing a chat message.
|
|
27
|
+
* Called before processing a chat message. Throw an error to deny access.
|
|
28
28
|
* @param messages - Array of messages being sent
|
|
29
29
|
* @param context - Request context with headers, etc.
|
|
30
30
|
*/
|
|
31
31
|
onBeforeChat?: (messages: Array<{
|
|
32
32
|
role: string;
|
|
33
33
|
content: string;
|
|
34
|
-
}>, context: ChatApiContext) => Promise<
|
|
34
|
+
}>, context: ChatApiContext) => Promise<void> | void;
|
|
35
35
|
/**
|
|
36
|
-
* Called before listing conversations.
|
|
36
|
+
* Called before listing conversations. Throw an error to deny access.
|
|
37
37
|
* @param context - Request context with headers, etc.
|
|
38
38
|
*/
|
|
39
|
-
onBeforeListConversations?: (context: ChatApiContext) => Promise<
|
|
39
|
+
onBeforeListConversations?: (context: ChatApiContext) => Promise<void> | void;
|
|
40
40
|
/**
|
|
41
|
-
* Called before getting a single conversation.
|
|
41
|
+
* Called before getting a single conversation. Throw an error to deny access.
|
|
42
42
|
* @param conversationId - ID of the conversation being accessed
|
|
43
43
|
* @param context - Request context with headers, etc.
|
|
44
44
|
*/
|
|
45
|
-
onBeforeGetConversation?: (conversationId: string, context: ChatApiContext) => Promise<
|
|
45
|
+
onBeforeGetConversation?: (conversationId: string, context: ChatApiContext) => Promise<void> | void;
|
|
46
46
|
/**
|
|
47
|
-
* Called before creating a conversation.
|
|
47
|
+
* Called before creating a conversation. Throw an error to deny access.
|
|
48
48
|
* @param data - Conversation data being created
|
|
49
49
|
* @param context - Request context with headers, etc.
|
|
50
50
|
*/
|
|
51
51
|
onBeforeCreateConversation?: (data: {
|
|
52
52
|
id?: string;
|
|
53
53
|
title?: string;
|
|
54
|
-
}, context: ChatApiContext) => Promise<
|
|
54
|
+
}, context: ChatApiContext) => Promise<void> | void;
|
|
55
55
|
/**
|
|
56
|
-
* Called before updating a conversation.
|
|
56
|
+
* Called before updating a conversation. Throw an error to deny access.
|
|
57
57
|
* @param conversationId - ID of the conversation being updated
|
|
58
58
|
* @param data - Updated conversation data
|
|
59
59
|
* @param context - Request context with headers, etc.
|
|
60
60
|
*/
|
|
61
61
|
onBeforeUpdateConversation?: (conversationId: string, data: {
|
|
62
62
|
title?: string;
|
|
63
|
-
}, context: ChatApiContext) => Promise<
|
|
63
|
+
}, context: ChatApiContext) => Promise<void> | void;
|
|
64
64
|
/**
|
|
65
|
-
* Called before deleting a conversation.
|
|
65
|
+
* Called before deleting a conversation. Throw an error to deny access.
|
|
66
66
|
* @param conversationId - ID of the conversation being deleted
|
|
67
67
|
* @param context - Request context with headers, etc.
|
|
68
68
|
*/
|
|
69
|
-
onBeforeDeleteConversation?: (conversationId: string, context: ChatApiContext) => Promise<
|
|
69
|
+
onBeforeDeleteConversation?: (conversationId: string, context: ChatApiContext) => Promise<void> | void;
|
|
70
70
|
/**
|
|
71
71
|
* Called after the structural routeName/allowlist validation, with the list
|
|
72
72
|
* of tool names that passed. Return a filtered subset to further restrict
|
|
@@ -113,30 +113,30 @@ interface BlogApiContext<TBody = any, TParams = any, TQuery = any> {
|
|
|
113
113
|
*/
|
|
114
114
|
interface BlogBackendHooks {
|
|
115
115
|
/**
|
|
116
|
-
* Called before listing posts.
|
|
116
|
+
* Called before listing posts. Throw an error to deny access.
|
|
117
117
|
* @param filter - Query parameters for filtering posts
|
|
118
118
|
* @param context - Request context with headers, etc.
|
|
119
119
|
*/
|
|
120
|
-
onBeforeListPosts?: (filter: z.infer<typeof PostListQuerySchema>, context: BlogApiContext) => Promise<
|
|
120
|
+
onBeforeListPosts?: (filter: z.infer<typeof PostListQuerySchema>, context: BlogApiContext) => Promise<void> | void;
|
|
121
121
|
/**
|
|
122
|
-
* Called before creating a post.
|
|
122
|
+
* Called before creating a post. Throw an error to deny access.
|
|
123
123
|
* @param data - Post data being created
|
|
124
124
|
* @param context - Request context with headers, etc.
|
|
125
125
|
*/
|
|
126
|
-
onBeforeCreatePost?: (data: z.infer<typeof createPostSchema>, context: BlogApiContext) => Promise<
|
|
126
|
+
onBeforeCreatePost?: (data: z.infer<typeof createPostSchema>, context: BlogApiContext) => Promise<void> | void;
|
|
127
127
|
/**
|
|
128
|
-
* Called before updating a post.
|
|
128
|
+
* Called before updating a post. Throw an error to deny access.
|
|
129
129
|
* @param postId - ID of the post being updated
|
|
130
130
|
* @param data - Updated post data
|
|
131
131
|
* @param context - Request context with headers, etc.
|
|
132
132
|
*/
|
|
133
|
-
onBeforeUpdatePost?: (postId: string, data: z.infer<typeof updatePostSchema>, context: BlogApiContext) => Promise<
|
|
133
|
+
onBeforeUpdatePost?: (postId: string, data: z.infer<typeof updatePostSchema>, context: BlogApiContext) => Promise<void> | void;
|
|
134
134
|
/**
|
|
135
|
-
* Called before deleting a post.
|
|
135
|
+
* Called before deleting a post. Throw an error to deny access.
|
|
136
136
|
* @param postId - ID of the post being deleted
|
|
137
137
|
* @param context - Request context with headers, etc.
|
|
138
138
|
*/
|
|
139
|
-
onBeforeDeletePost?: (postId: string, context: BlogApiContext) => Promise<
|
|
139
|
+
onBeforeDeletePost?: (postId: string, context: BlogApiContext) => Promise<void> | void;
|
|
140
140
|
/**
|
|
141
141
|
* Called after posts are read successfully
|
|
142
142
|
* @param posts - The list of posts returned by the query
|
|
@@ -83,21 +83,21 @@ interface LoaderContext {
|
|
|
83
83
|
*/
|
|
84
84
|
interface UIBuilderClientHooks {
|
|
85
85
|
/**
|
|
86
|
-
* Called before loading the page list.
|
|
86
|
+
* Called before loading the page list. Throw an error to cancel loading.
|
|
87
87
|
* @param context - Loader context with path, params, etc.
|
|
88
88
|
*/
|
|
89
|
-
beforeLoadPageList?: (context: LoaderContext) => Promise<
|
|
89
|
+
beforeLoadPageList?: (context: LoaderContext) => Promise<void> | void;
|
|
90
90
|
/**
|
|
91
91
|
* Called after the page list is loaded.
|
|
92
92
|
* @param context - Loader context
|
|
93
93
|
*/
|
|
94
94
|
afterLoadPageList?: (context: LoaderContext) => Promise<void> | void;
|
|
95
95
|
/**
|
|
96
|
-
* Called before loading the page builder.
|
|
96
|
+
* Called before loading the page builder. Throw an error to cancel loading.
|
|
97
97
|
* @param pageId - The page ID (undefined for new pages)
|
|
98
98
|
* @param context - Loader context
|
|
99
99
|
*/
|
|
100
|
-
beforeLoadPageBuilder?: (pageId: string | undefined, context: LoaderContext) => Promise<
|
|
100
|
+
beforeLoadPageBuilder?: (pageId: string | undefined, context: LoaderContext) => Promise<void> | void;
|
|
101
101
|
/**
|
|
102
102
|
* Called after the page builder is loaded.
|
|
103
103
|
* @param pageId - The page ID (undefined for new pages)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
|
|
2
|
-
import { a as SerializedContentItemWithType, S as SerializedContentType, b as ContentType, c as ContentItem, d as SerializedContentItem, e as ContentItemWithType, f as CMSBackendConfig, I as InverseRelation } from './stack.
|
|
2
|
+
import { a as SerializedContentItemWithType, S as SerializedContentType, b as ContentType, c as ContentItem, d as SerializedContentItem, e as ContentItemWithType, f as CMSBackendConfig, I as InverseRelation } from './stack.B8QD11QU.js';
|
|
3
3
|
import * as better_call from 'better-call';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { Adapter } from '@btst/db';
|
|
@@ -189,25 +189,25 @@ interface KanbanApiContext<TBody = unknown, TParams = unknown, TQuery = unknown>
|
|
|
189
189
|
*/
|
|
190
190
|
interface KanbanBackendHooks {
|
|
191
191
|
/**
|
|
192
|
-
* Called before listing boards.
|
|
192
|
+
* Called before listing boards. Throw an error to deny access.
|
|
193
193
|
*/
|
|
194
|
-
onBeforeListBoards?: (filter: z.infer<typeof BoardListQuerySchema>, context: KanbanApiContext) => Promise<
|
|
194
|
+
onBeforeListBoards?: (filter: z.infer<typeof BoardListQuerySchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
195
195
|
/**
|
|
196
|
-
* Called before creating a board.
|
|
196
|
+
* Called before creating a board. Throw an error to deny access.
|
|
197
197
|
*/
|
|
198
|
-
onBeforeCreateBoard?: (data: z.infer<typeof createBoardSchema>, context: KanbanApiContext) => Promise<
|
|
198
|
+
onBeforeCreateBoard?: (data: z.infer<typeof createBoardSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
199
199
|
/**
|
|
200
|
-
* Called before reading a single board.
|
|
200
|
+
* Called before reading a single board. Throw an error to deny access.
|
|
201
201
|
*/
|
|
202
|
-
onBeforeReadBoard?: (boardId: string, context: KanbanApiContext) => Promise<
|
|
202
|
+
onBeforeReadBoard?: (boardId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
203
203
|
/**
|
|
204
|
-
* Called before updating a board.
|
|
204
|
+
* Called before updating a board. Throw an error to deny access.
|
|
205
205
|
*/
|
|
206
|
-
onBeforeUpdateBoard?: (boardId: string, data: z.infer<typeof updateBoardSchema>, context: KanbanApiContext) => Promise<
|
|
206
|
+
onBeforeUpdateBoard?: (boardId: string, data: z.infer<typeof updateBoardSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
207
207
|
/**
|
|
208
|
-
* Called before deleting a board.
|
|
208
|
+
* Called before deleting a board. Throw an error to deny access.
|
|
209
209
|
*/
|
|
210
|
-
onBeforeDeleteBoard?: (boardId: string, context: KanbanApiContext) => Promise<
|
|
210
|
+
onBeforeDeleteBoard?: (boardId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
211
211
|
/**
|
|
212
212
|
* Called after boards are listed successfully.
|
|
213
213
|
* Receives the items array (same shape as `board[]`) for consistency
|
|
@@ -251,17 +251,17 @@ interface KanbanBackendHooks {
|
|
|
251
251
|
*/
|
|
252
252
|
onDeleteBoardError?: (error: Error, context: KanbanApiContext) => Promise<void> | void;
|
|
253
253
|
/**
|
|
254
|
-
* Called before creating a column.
|
|
254
|
+
* Called before creating a column. Throw an error to deny access.
|
|
255
255
|
*/
|
|
256
|
-
onBeforeCreateColumn?: (data: z.infer<typeof createColumnSchema>, context: KanbanApiContext) => Promise<
|
|
256
|
+
onBeforeCreateColumn?: (data: z.infer<typeof createColumnSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
257
257
|
/**
|
|
258
|
-
* Called before updating a column.
|
|
258
|
+
* Called before updating a column. Throw an error to deny access.
|
|
259
259
|
*/
|
|
260
|
-
onBeforeUpdateColumn?: (columnId: string, data: z.infer<typeof updateColumnSchema>, context: KanbanApiContext) => Promise<
|
|
260
|
+
onBeforeUpdateColumn?: (columnId: string, data: z.infer<typeof updateColumnSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
261
261
|
/**
|
|
262
|
-
* Called before deleting a column.
|
|
262
|
+
* Called before deleting a column. Throw an error to deny access.
|
|
263
263
|
*/
|
|
264
|
-
onBeforeDeleteColumn?: (columnId: string, context: KanbanApiContext) => Promise<
|
|
264
|
+
onBeforeDeleteColumn?: (columnId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
265
265
|
/**
|
|
266
266
|
* Called after a column is created successfully
|
|
267
267
|
*/
|
|
@@ -275,17 +275,17 @@ interface KanbanBackendHooks {
|
|
|
275
275
|
*/
|
|
276
276
|
onColumnDeleted?: (columnId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
277
277
|
/**
|
|
278
|
-
* Called before creating a task.
|
|
278
|
+
* Called before creating a task. Throw an error to deny access.
|
|
279
279
|
*/
|
|
280
|
-
onBeforeCreateTask?: (data: z.infer<typeof createTaskSchema>, context: KanbanApiContext) => Promise<
|
|
280
|
+
onBeforeCreateTask?: (data: z.infer<typeof createTaskSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
281
281
|
/**
|
|
282
|
-
* Called before updating a task.
|
|
282
|
+
* Called before updating a task. Throw an error to deny access.
|
|
283
283
|
*/
|
|
284
|
-
onBeforeUpdateTask?: (taskId: string, data: z.infer<typeof updateTaskSchema>, context: KanbanApiContext) => Promise<
|
|
284
|
+
onBeforeUpdateTask?: (taskId: string, data: z.infer<typeof updateTaskSchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
285
285
|
/**
|
|
286
|
-
* Called before deleting a task.
|
|
286
|
+
* Called before deleting a task. Throw an error to deny access.
|
|
287
287
|
*/
|
|
288
|
-
onBeforeDeleteTask?: (taskId: string, context: KanbanApiContext) => Promise<
|
|
288
|
+
onBeforeDeleteTask?: (taskId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
289
289
|
/**
|
|
290
290
|
* Called after a task is created successfully
|
|
291
291
|
*/
|