@questpie/admin 3.0.2 → 3.0.4
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/README.md +34 -5
- package/dist/client/blocks/block-renderer.d.mts +2 -2
- package/dist/client/blocks/block-renderer.mjs +4 -1
- package/dist/client/builder/types/action-types.d.mts +31 -3
- package/dist/client/builder/types/collection-types.d.mts +140 -0
- package/dist/client/builder/types/ui-config.d.mts +16 -2
- package/dist/client/builder/types/views.d.mts +57 -0
- package/dist/client/builder/types/widget-types.d.mts +5 -0
- package/dist/client/components/actions/action-button.mjs +137 -199
- package/dist/client/components/actions/action-dialog.mjs +198 -156
- package/dist/client/components/actions/confirmation-dialog.mjs +2 -2
- package/dist/client/components/actions/header-actions.mjs +52 -53
- package/dist/client/components/admin-link.d.mts +2 -2
- package/dist/client/components/auth/auth-loading.mjs +41 -18
- package/dist/client/components/blocks/block-fields-renderer.mjs +64 -28
- package/dist/client/components/blocks/block-insert-button.mjs +4 -4
- package/dist/client/components/blocks/block-item.mjs +2 -2
- package/dist/client/components/blocks/block-library-sidebar.mjs +2 -2
- package/dist/client/components/component-renderer.mjs +1 -1
- package/dist/client/components/fields/array-field.mjs +14 -14
- package/dist/client/components/fields/asset-preview-field.mjs +1 -1
- package/dist/client/components/fields/blocks-field/blocks-field.mjs +84 -104
- package/dist/client/components/fields/json-field.mjs +2 -2
- package/dist/client/components/fields/object-array-field.mjs +22 -22
- package/dist/client/components/fields/object-field.mjs +5 -5
- package/dist/client/components/fields/relation/displays/cards-display.mjs +16 -9
- package/dist/client/components/fields/relation/displays/chips-display.mjs +15 -12
- package/dist/client/components/fields/relation/displays/grid-display.mjs +15 -11
- package/dist/client/components/fields/relation/displays/list-display.mjs +33 -20
- package/dist/client/components/fields/relation/displays/table-display.mjs +62 -93
- package/dist/client/components/fields/relation/relation-items-display.mjs +1 -1
- package/dist/client/components/fields/relation-picker.mjs +7 -6
- package/dist/client/components/fields/relation-select.mjs +71 -47
- package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +392 -82
- package/dist/client/components/fields/rich-text-editor/extensions.mjs +54 -23
- package/dist/client/components/fields/rich-text-editor/image-popover.mjs +24 -50
- package/dist/client/components/fields/rich-text-editor/image-upload.mjs +66 -0
- package/dist/client/components/fields/rich-text-editor/index.d.mts +38 -0
- package/dist/client/components/fields/rich-text-editor/index.mjs +637 -376
- package/dist/client/components/fields/rich-text-editor/link-utils.mjs +26 -0
- package/dist/client/components/fields/rich-text-editor/presets.d.mts +10 -0
- package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +27 -6
- package/dist/client/components/fields/rich-text-editor/toolbar.mjs +464 -346
- package/dist/client/components/fields/rich-text-editor/types.d.mts +77 -0
- package/dist/client/components/fields/upload-field.mjs +45 -49
- package/dist/client/components/filter-builder/columns-tab.mjs +69 -62
- package/dist/client/components/filter-builder/filter-builder-sheet.mjs +473 -308
- package/dist/client/components/filter-builder/filters-tab.mjs +109 -82
- package/dist/client/components/filter-builder/saved-views-tab.mjs +300 -198
- package/dist/client/components/history-sidebar.mjs +850 -340
- package/dist/client/components/layout/field-layout-renderer.mjs +6 -5
- package/dist/client/components/locale-switcher.mjs +8 -8
- package/dist/client/components/media/media-grid.mjs +12 -9
- package/dist/client/components/media/media-picker-dialog.mjs +242 -230
- package/dist/client/components/preview/live-preview-mode.mjs +1 -1
- package/dist/client/components/primitives/asset-preview.mjs +37 -22
- package/dist/client/components/primitives/date-input.mjs +212 -249
- package/dist/client/components/primitives/dropzone.mjs +192 -159
- package/dist/client/components/primitives/field-select-control.mjs +93 -0
- package/dist/client/components/primitives/select-multi.mjs +251 -230
- package/dist/client/components/primitives/select-single.mjs +345 -290
- package/dist/client/components/primitives/time-input.mjs +2 -2
- package/dist/client/components/sheets/resource-sheet.mjs +2 -0
- package/dist/client/components/ui/accordion.mjs +4 -4
- package/dist/client/components/ui/alert.mjs +3 -3
- package/dist/client/components/ui/badge.mjs +4 -4
- package/dist/client/components/ui/button.mjs +47 -37
- package/dist/client/components/ui/card.mjs +2 -2
- package/dist/client/components/ui/checkbox.mjs +1 -1
- package/dist/client/components/ui/command.mjs +5 -5
- package/dist/client/components/ui/dialog.mjs +3 -3
- package/dist/client/components/ui/drawer.mjs +1 -1
- package/dist/client/components/ui/dropdown-menu.mjs +157 -15
- package/dist/client/components/ui/empty-state.mjs +88 -59
- package/dist/client/components/ui/field.mjs +2 -2
- package/dist/client/components/ui/input-group.mjs +3 -3
- package/dist/client/components/ui/input.mjs +1 -1
- package/dist/client/components/ui/kbd.mjs +1 -1
- package/dist/client/components/ui/label.mjs +1 -1
- package/dist/client/components/ui/popover.mjs +19 -11
- package/dist/client/components/ui/scroll-fade.mjs +170 -0
- package/dist/client/components/ui/search-input.mjs +1 -1
- package/dist/client/components/ui/select.mjs +129 -27
- package/dist/client/components/ui/sheet.mjs +54 -34
- package/dist/client/components/ui/sidebar.mjs +15 -14
- package/dist/client/components/ui/skeleton.mjs +28 -12
- package/dist/client/components/ui/switch.mjs +2 -2
- package/dist/client/components/ui/table.mjs +82 -74
- package/dist/client/components/ui/tabs.mjs +26 -31
- package/dist/client/components/ui/textarea.mjs +1 -1
- package/dist/client/components/ui/tooltip.mjs +1 -1
- package/dist/client/components/widgets/chart-widget.mjs +134 -96
- package/dist/client/components/widgets/progress-widget.mjs +59 -34
- package/dist/client/components/widgets/quick-actions-widget.mjs +184 -113
- package/dist/client/components/widgets/recent-items-widget.mjs +144 -102
- package/dist/client/components/widgets/stats-widget.mjs +91 -72
- package/dist/client/components/widgets/table-widget.mjs +159 -246
- package/dist/client/components/widgets/timeline-widget.mjs +66 -43
- package/dist/client/components/widgets/value-widget.mjs +261 -152
- package/dist/client/components/widgets/widget-empty-state.mjs +88 -0
- package/dist/client/components/widgets/widget-skeletons.mjs +53 -20
- package/dist/client/contexts/focus-context.d.mts +2 -2
- package/dist/client/hooks/use-action.mjs +63 -55
- package/dist/client/hooks/use-audit-history.mjs +1 -65
- package/dist/client/hooks/use-collection-validation.mjs +36 -23
- package/dist/client/hooks/use-collection.mjs +96 -1
- package/dist/client/hooks/use-saved-views.mjs +70 -49
- package/dist/client/hooks/use-server-actions.mjs +59 -40
- package/dist/client/hooks/use-server-validation.mjs +156 -41
- package/dist/client/hooks/use-server-widget-data.mjs +1 -1
- package/dist/client/hooks/use-setup-status.d.mts +3 -3
- package/dist/client/hooks/use-setup-status.mjs +2 -2
- package/dist/client/hooks/use-transition-stage.mjs +2 -10
- package/dist/client/hooks/use-validation-error-map.mjs +31 -13
- package/dist/client/hooks/use-view-state.mjs +238 -174
- package/dist/client/i18n/date-locale.mjs +33 -0
- package/dist/client/i18n/hooks.mjs +17 -1
- package/dist/client/lib/utils.mjs +3 -2
- package/dist/client/preview/block-scope-context.d.mts +2 -2
- package/dist/client/preview/preview-banner.d.mts +2 -2
- package/dist/client/preview/preview-field.d.mts +4 -4
- package/dist/client/preview/preview-field.mjs +2 -2
- package/dist/client/runtime/provider.mjs +8 -1
- package/dist/client/runtime/translations-provider.mjs +1 -1
- package/dist/client/scope/picker.d.mts +2 -2
- package/dist/client/scope/provider.d.mts +2 -2
- package/dist/client/styles/base.css +1022 -0
- package/dist/client/styles/index.css +3 -589
- package/dist/client/utils/auto-expand-fields.mjs +4 -2
- package/dist/client/utils/keyboard-shortcuts.mjs +26 -0
- package/dist/client/utils/use-lazy-component.mjs +80 -0
- package/dist/client/views/auth/auth-layout.d.mts +18 -11
- package/dist/client/views/auth/auth-layout.mjs +291 -80
- package/dist/client/views/auth/forgot-password-form.d.mts +2 -2
- package/dist/client/views/auth/forgot-password-form.mjs +2 -2
- package/dist/client/views/auth/login-form.d.mts +2 -2
- package/dist/client/views/auth/login-form.mjs +1 -1
- package/dist/client/views/auth/reset-password-form.d.mts +2 -2
- package/dist/client/views/auth/reset-password-form.mjs +2 -2
- package/dist/client/views/auth/setup-form.d.mts +2 -2
- package/dist/client/views/collection/auto-form-fields.mjs +11 -9
- package/dist/client/views/collection/bulk-action-toolbar.mjs +173 -138
- package/dist/client/views/collection/cells/complex-cells.mjs +22 -22
- package/dist/client/views/collection/cells/primitive-cells.mjs +1 -1
- package/dist/client/views/collection/cells/relation-cells.mjs +147 -129
- package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +224 -278
- package/dist/client/views/collection/cells/shared/relation-chip.mjs +64 -36
- package/dist/client/views/collection/cells/upload-cells.mjs +199 -9
- package/dist/client/views/collection/columns/build-columns.mjs +29 -9
- package/dist/client/views/collection/columns/column-defaults.mjs +2 -2
- package/dist/client/views/collection/field-renderer.mjs +50 -89
- package/dist/client/views/collection/form-view.mjs +237 -227
- package/dist/client/views/collection/table-view.mjs +1162 -229
- package/dist/client/views/collection/view-skeletons.mjs +222 -79
- package/dist/client/views/common/global-search.mjs +29 -18
- package/dist/client/views/dashboard/dashboard-grid.mjs +678 -501
- package/dist/client/views/dashboard/dashboard-widget.mjs +6 -3
- package/dist/client/views/dashboard/widget-card.mjs +23 -14
- package/dist/client/views/globals/global-form-view.mjs +634 -589
- package/dist/client/views/layout/admin-layout-provider.mjs +67 -70
- package/dist/client/views/layout/admin-layout.d.mts +3 -6
- package/dist/client/views/layout/admin-layout.mjs +149 -172
- package/dist/client/views/layout/admin-router.mjs +747 -544
- package/dist/client/views/layout/admin-sidebar.d.mts +38 -1
- package/dist/client/views/layout/admin-sidebar.mjs +751 -591
- package/dist/client/views/layout/admin-theme.d.mts +10 -0
- package/dist/client/views/layout/admin-theme.mjs +84 -0
- package/dist/client/views/layout/admin-view-layout.mjs +161 -0
- package/dist/client/views/pages/accept-invite-page.d.mts +2 -2
- package/dist/client/views/pages/accept-invite-page.mjs +49 -26
- package/dist/client/views/pages/dashboard-page.d.mts +2 -2
- package/dist/client/views/pages/forgot-password-page.d.mts +2 -2
- package/dist/client/views/pages/forgot-password-page.mjs +2 -19
- package/dist/client/views/pages/invite-page.d.mts +2 -2
- package/dist/client/views/pages/invite-page.mjs +2 -19
- package/dist/client/views/pages/login-page.d.mts +3 -3
- package/dist/client/views/pages/login-page.mjs +4 -21
- package/dist/client/views/pages/reset-password-page.d.mts +2 -2
- package/dist/client/views/pages/reset-password-page.mjs +3 -20
- package/dist/client/views/pages/setup-page.d.mts +2 -2
- package/dist/client/views/pages/setup-page.mjs +3 -20
- package/dist/client.d.mts +6 -2
- package/dist/client.mjs +2 -1
- package/dist/components/rich-text/rich-text-renderer.d.mts +2 -2
- package/dist/index.d.mts +6 -2
- package/dist/index.mjs +2 -1
- package/dist/server/augmentation/dashboard.d.mts +67 -3
- package/dist/server/augmentation/form-layout.d.mts +21 -0
- package/dist/server/augmentation/index.d.mts +1 -1
- package/dist/server/codegen/admin-client-template.mjs +4 -0
- package/dist/server/fields/blocks.d.mts +1 -1
- package/dist/server/fields/blocks.mjs +12 -0
- package/dist/server/fields/rich-text.d.mts +1 -1
- package/dist/server/fields/rich-text.mjs +8 -0
- package/dist/server/i18n/index.mjs +17 -1
- package/dist/server/i18n/messages/cs.mjs +23 -0
- package/dist/server/i18n/messages/de.mjs +23 -0
- package/dist/server/i18n/messages/en.mjs +64 -1
- package/dist/server/i18n/messages/es.mjs +23 -0
- package/dist/server/i18n/messages/fr.mjs +23 -0
- package/dist/server/i18n/messages/pl.mjs +23 -0
- package/dist/server/i18n/messages/pt.mjs +23 -0
- package/dist/server/i18n/messages/sk.mjs +83 -1
- package/dist/server/modules/admin/block/introspection.mjs +4 -1
- package/dist/server/modules/admin/block/prefetch.mjs +12 -2
- package/dist/server/modules/admin/collections/account.d.mts +50 -50
- package/dist/server/modules/admin/collections/admin-locks.d.mts +54 -54
- package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
- package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
- package/dist/server/modules/admin/collections/apikey.d.mts +64 -64
- package/dist/server/modules/admin/collections/assets.d.mts +20 -20
- package/dist/server/modules/admin/collections/assets.mjs +0 -1
- package/dist/server/modules/admin/collections/session.d.mts +42 -42
- package/dist/server/modules/admin/collections/user.d.mts +40 -28
- package/dist/server/modules/admin/collections/user.mjs +40 -9
- package/dist/server/modules/admin/collections/verification.d.mts +36 -36
- package/dist/server/modules/admin/dto/admin-config.dto.mjs +2 -0
- package/dist/server/modules/admin/factories.mjs +7 -18
- package/dist/server/modules/admin/index.d.mts +1 -1
- package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
- package/dist/server/modules/admin/routes/admin-config.mjs +34 -16
- package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
- package/dist/server/modules/admin/routes/execute-action.mjs +33 -0
- package/dist/server/modules/admin/routes/locales.d.mts +2 -2
- package/dist/server/modules/admin/routes/preview.d.mts +11 -11
- package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
- package/dist/server/modules/admin/routes/setup.d.mts +10 -10
- package/dist/server/modules/admin/routes/setup.mjs +7 -7
- package/dist/server/modules/admin/routes/translations.d.mts +4 -4
- package/dist/server/modules/admin/routes/translations.mjs +5 -1
- package/dist/server/modules/admin/routes/widget-data.d.mts +5 -5
- package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +1 -1
- package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +25 -25
- package/dist/server/modules/audit/.generated/module.d.mts +7 -7
- package/dist/server/modules/audit/.generated/module.mjs +1 -1
- package/dist/server/modules/audit/collections/audit-log.d.mts +39 -39
- package/dist/server/modules/audit/collections/audit-log.mjs +1 -1
- package/dist/server/modules/audit/config/app.mjs +99 -42
- package/dist/server/modules/audit/jobs/audit-cleanup.mjs +1 -1
- package/dist/server/plugin.mjs +4 -2
- package/dist/server/proxy-factories.d.mts +4 -3
- package/dist/server/proxy-factories.mjs +34 -8
- package/dist/shared/types/saved-views.types.d.mts +2 -0
- package/package.json +6 -4
- package/dist/client/components/fields/rich-text-editor/link-popover.mjs +0 -85
- package/dist/client/components/ui/spinner.mjs +0 -52
- package/dist/client/components/ui/toolbar.mjs +0 -136
- package/dist/client/contexts/breadcrumb-context.mjs +0 -60
- package/dist/client/views/layout/admin-topbar.mjs +0 -236
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ServerActionDefinition, ServerActionResult } from "../../../augmentation/actions.mjs";
|
|
2
2
|
import "../../../augmentation.mjs";
|
|
3
3
|
import { App } from "./route-helpers.mjs";
|
|
4
|
-
import * as
|
|
4
|
+
import * as questpie69 from "questpie";
|
|
5
5
|
|
|
6
6
|
//#region src/server/modules/admin/routes/execute-action.d.ts
|
|
7
7
|
|
|
@@ -56,37 +56,37 @@ declare function executeAction(app: App, request: ExecuteActionRequest, session?
|
|
|
56
56
|
* });
|
|
57
57
|
* ```
|
|
58
58
|
*/
|
|
59
|
-
declare const executeActionFn:
|
|
59
|
+
declare const executeActionFn: questpie69.JsonRouteDefinition<{
|
|
60
60
|
collection: string;
|
|
61
61
|
actionId: string;
|
|
62
62
|
itemId?: string | undefined;
|
|
63
63
|
itemIds?: string[] | undefined;
|
|
64
64
|
data?: Record<string, unknown> | undefined;
|
|
65
65
|
locale?: string | undefined;
|
|
66
|
-
}, any,
|
|
66
|
+
}, any, questpie69.JsonRouteParams>;
|
|
67
67
|
/**
|
|
68
68
|
* Get actions configuration for a collection.
|
|
69
69
|
* Returns action definitions without handlers for client rendering.
|
|
70
70
|
*/
|
|
71
|
-
declare const getActionsConfigFn:
|
|
71
|
+
declare const getActionsConfigFn: questpie69.JsonRouteDefinition<{
|
|
72
72
|
collection: string;
|
|
73
|
-
}, any,
|
|
73
|
+
}, any, questpie69.JsonRouteParams>;
|
|
74
74
|
/**
|
|
75
75
|
* QUESTPIE functions for action execution.
|
|
76
76
|
* These are registered on the `adminModule`.
|
|
77
77
|
*/
|
|
78
78
|
declare const actionFunctions: {
|
|
79
|
-
executeAction:
|
|
79
|
+
executeAction: questpie69.JsonRouteDefinition<{
|
|
80
80
|
collection: string;
|
|
81
81
|
actionId: string;
|
|
82
82
|
itemId?: string | undefined;
|
|
83
83
|
itemIds?: string[] | undefined;
|
|
84
84
|
data?: Record<string, unknown> | undefined;
|
|
85
85
|
locale?: string | undefined;
|
|
86
|
-
}, any,
|
|
87
|
-
getActionsConfig:
|
|
86
|
+
}, any, questpie69.JsonRouteParams>;
|
|
87
|
+
getActionsConfig: questpie69.JsonRouteDefinition<{
|
|
88
88
|
collection: string;
|
|
89
|
-
}, any,
|
|
89
|
+
}, any, questpie69.JsonRouteParams>;
|
|
90
90
|
};
|
|
91
91
|
//#endregion
|
|
92
92
|
export { ExecuteActionRequest, ExecuteActionResponse, actionFunctions, executeAction, executeActionFn, getActionsConfig, getActionsConfigFn };
|
|
@@ -43,6 +43,10 @@ function getActionsConfig(app, collectionSlug) {
|
|
|
43
43
|
};
|
|
44
44
|
const customWithoutHandlers = (actionsConfig.custom || []).map((action) => {
|
|
45
45
|
const { handler, ...rest } = action;
|
|
46
|
+
if (rest.form?.fields) rest.form = {
|
|
47
|
+
...rest.form,
|
|
48
|
+
fields: serializeActionFormFields(rest.form.fields)
|
|
49
|
+
};
|
|
46
50
|
return rest;
|
|
47
51
|
});
|
|
48
52
|
return {
|
|
@@ -58,6 +62,35 @@ function getActionsConfig(app, collectionSlug) {
|
|
|
58
62
|
custom: customWithoutHandlers
|
|
59
63
|
};
|
|
60
64
|
}
|
|
65
|
+
function serializeActionFormFields(fields) {
|
|
66
|
+
const result = {};
|
|
67
|
+
for (const [fieldName, field$1] of Object.entries(fields)) {
|
|
68
|
+
if (!field$1 || typeof field$1 !== "object") {
|
|
69
|
+
result[fieldName] = field$1;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (typeof field$1.getMetadata === "function") {
|
|
73
|
+
const metadata = field$1.getMetadata();
|
|
74
|
+
const state = field$1._state ?? {};
|
|
75
|
+
const adminMeta = (metadata.meta && typeof metadata.meta === "object" ? metadata.meta : void 0) ?? (state.admin && typeof state.admin === "object" ? state.admin : void 0) ?? (state.extensions?.admin && typeof state.extensions.admin === "object" ? state.extensions.admin : void 0);
|
|
76
|
+
const options = {};
|
|
77
|
+
if (metadata.options) options.options = metadata.options;
|
|
78
|
+
if (metadata.multiple !== void 0) options.multiple = metadata.multiple;
|
|
79
|
+
if (adminMeta) Object.assign(options, adminMeta);
|
|
80
|
+
result[fieldName] = {
|
|
81
|
+
type: metadata.type ?? field$1.getType?.() ?? "text",
|
|
82
|
+
label: metadata.label,
|
|
83
|
+
description: metadata.description,
|
|
84
|
+
required: metadata.required ?? false,
|
|
85
|
+
default: state.defaultValue,
|
|
86
|
+
options
|
|
87
|
+
};
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
result[fieldName] = field$1;
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
61
94
|
/**
|
|
62
95
|
* Execute a collection action.
|
|
63
96
|
* Handles both built-in actions and custom actions.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as questpie462 from "questpie";
|
|
2
2
|
|
|
3
3
|
//#region src/server/modules/admin/routes/locales.d.ts
|
|
4
4
|
|
|
@@ -12,7 +12,7 @@ import * as questpie402 from "questpie";
|
|
|
12
12
|
* Bundle of locale-related functions.
|
|
13
13
|
*/
|
|
14
14
|
declare const localeFunctions: {
|
|
15
|
-
readonly getContentLocales:
|
|
15
|
+
readonly getContentLocales: questpie462.JsonRouteDefinition<Record<string, never> | undefined, any, questpie462.JsonRouteParams>;
|
|
16
16
|
};
|
|
17
17
|
//#endregion
|
|
18
18
|
export { localeFunctions };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as questpie97 from "questpie";
|
|
2
2
|
|
|
3
3
|
//#region src/server/modules/admin/routes/preview.d.ts
|
|
4
4
|
|
|
@@ -21,13 +21,13 @@ interface PreviewTokenPayload {
|
|
|
21
21
|
* @returns Object with preview functions
|
|
22
22
|
*/
|
|
23
23
|
declare function createPreviewFunctions(secret: string): {
|
|
24
|
-
mintPreviewToken:
|
|
24
|
+
mintPreviewToken: questpie97.JsonRouteDefinition<{
|
|
25
25
|
path: string;
|
|
26
26
|
ttlMs?: number | undefined;
|
|
27
|
-
}, any,
|
|
28
|
-
verifyPreviewToken:
|
|
27
|
+
}, any, questpie97.JsonRouteParams>;
|
|
28
|
+
verifyPreviewToken: questpie97.JsonRouteDefinition<{
|
|
29
29
|
token: string;
|
|
30
|
-
}, any,
|
|
30
|
+
}, any, questpie97.JsonRouteParams>;
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
33
|
* Verify a preview token without RPC.
|
|
@@ -63,18 +63,18 @@ declare function createPreviewTokenVerifier(secret?: string): (token: string) =>
|
|
|
63
63
|
* Used by the `adminModule` to register preview RPC functions.
|
|
64
64
|
*/
|
|
65
65
|
declare const previewFunctions: {
|
|
66
|
-
getPreviewUrl:
|
|
66
|
+
getPreviewUrl: questpie97.JsonRouteDefinition<{
|
|
67
67
|
collection: string;
|
|
68
68
|
record: Record<string, unknown>;
|
|
69
69
|
locale?: string | undefined;
|
|
70
|
-
}, any,
|
|
71
|
-
mintPreviewToken:
|
|
70
|
+
}, any, questpie97.JsonRouteParams>;
|
|
71
|
+
mintPreviewToken: questpie97.JsonRouteDefinition<{
|
|
72
72
|
path: string;
|
|
73
73
|
ttlMs?: number | undefined;
|
|
74
|
-
}, any,
|
|
75
|
-
verifyPreviewToken:
|
|
74
|
+
}, any, questpie97.JsonRouteParams>;
|
|
75
|
+
verifyPreviewToken: questpie97.JsonRouteDefinition<{
|
|
76
76
|
token: string;
|
|
77
|
-
}, any,
|
|
77
|
+
}, any, questpie97.JsonRouteParams>;
|
|
78
78
|
};
|
|
79
79
|
//#endregion
|
|
80
80
|
export { PreviewTokenPayload, createPreviewFunctions, createPreviewTokenVerifier, previewFunctions, verifyPreviewTokenDirect };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as questpie135 from "questpie";
|
|
2
2
|
|
|
3
3
|
//#region src/server/modules/admin/routes/reactive.d.ts
|
|
4
4
|
|
|
@@ -13,7 +13,7 @@ import * as questpie143 from "questpie";
|
|
|
13
13
|
* Batch reactive endpoint.
|
|
14
14
|
* Executes multiple reactive handlers in a single request.
|
|
15
15
|
*/
|
|
16
|
-
declare const batchReactive:
|
|
16
|
+
declare const batchReactive: questpie135.JsonRouteDefinition<{
|
|
17
17
|
collection: string;
|
|
18
18
|
type: "collection" | "global";
|
|
19
19
|
requests: {
|
|
@@ -26,12 +26,12 @@ declare const batchReactive: questpie143.JsonRouteDefinition<{
|
|
|
26
26
|
}[];
|
|
27
27
|
formData?: Record<string, unknown> | undefined;
|
|
28
28
|
prevData?: Record<string, unknown> | null | undefined;
|
|
29
|
-
}, any,
|
|
29
|
+
}, any, questpie135.JsonRouteParams>;
|
|
30
30
|
/**
|
|
31
31
|
* Dynamic options endpoint.
|
|
32
32
|
* Fetches options for select/relation fields with search and pagination.
|
|
33
33
|
*/
|
|
34
|
-
declare const fieldOptions:
|
|
34
|
+
declare const fieldOptions: questpie135.JsonRouteDefinition<{
|
|
35
35
|
collection: string;
|
|
36
36
|
type: "collection" | "global";
|
|
37
37
|
field: string;
|
|
@@ -40,12 +40,12 @@ declare const fieldOptions: questpie143.JsonRouteDefinition<{
|
|
|
40
40
|
page: number;
|
|
41
41
|
limit: number;
|
|
42
42
|
siblingData?: Record<string, unknown> | null | undefined;
|
|
43
|
-
}, any,
|
|
43
|
+
}, any, questpie135.JsonRouteParams>;
|
|
44
44
|
/**
|
|
45
45
|
* Reactive functions bundle.
|
|
46
46
|
*/
|
|
47
47
|
declare const reactiveFunctions: {
|
|
48
|
-
readonly batchReactive:
|
|
48
|
+
readonly batchReactive: questpie135.JsonRouteDefinition<{
|
|
49
49
|
collection: string;
|
|
50
50
|
type: "collection" | "global";
|
|
51
51
|
requests: {
|
|
@@ -58,8 +58,8 @@ declare const reactiveFunctions: {
|
|
|
58
58
|
}[];
|
|
59
59
|
formData?: Record<string, unknown> | undefined;
|
|
60
60
|
prevData?: Record<string, unknown> | null | undefined;
|
|
61
|
-
}, any,
|
|
62
|
-
readonly fieldOptions:
|
|
61
|
+
}, any, questpie135.JsonRouteParams>;
|
|
62
|
+
readonly fieldOptions: questpie135.JsonRouteDefinition<{
|
|
63
63
|
collection: string;
|
|
64
64
|
type: "collection" | "global";
|
|
65
65
|
field: string;
|
|
@@ -68,7 +68,7 @@ declare const reactiveFunctions: {
|
|
|
68
68
|
page: number;
|
|
69
69
|
limit: number;
|
|
70
70
|
siblingData?: Record<string, unknown> | null | undefined;
|
|
71
|
-
}, any,
|
|
71
|
+
}, any, questpie135.JsonRouteParams>;
|
|
72
72
|
};
|
|
73
73
|
//#endregion
|
|
74
74
|
export { batchReactive, fieldOptions, reactiveFunctions };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as questpie143 from "questpie";
|
|
2
2
|
|
|
3
3
|
//#region src/server/modules/admin/routes/setup.d.ts
|
|
4
4
|
|
|
@@ -10,7 +10,7 @@ import * as questpie125 from "questpie";
|
|
|
10
10
|
* need an existing admin to create the first invitation.
|
|
11
11
|
*/
|
|
12
12
|
/**
|
|
13
|
-
* Check if setup is required (no users exist in the system).
|
|
13
|
+
* Check if setup is required (no admin users exist in the system).
|
|
14
14
|
*
|
|
15
15
|
* @example
|
|
16
16
|
* ```ts
|
|
@@ -20,12 +20,12 @@ import * as questpie125 from "questpie";
|
|
|
20
20
|
* }
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
declare const isSetupRequired:
|
|
23
|
+
declare const isSetupRequired: questpie143.JsonRouteDefinition<Record<string, never>, any, questpie143.JsonRouteParams>;
|
|
24
24
|
/**
|
|
25
25
|
* Create the first admin user in the system.
|
|
26
|
-
* This function only works when no users exist (setup mode).
|
|
26
|
+
* This function only works when no admin users exist (setup mode).
|
|
27
27
|
*
|
|
28
|
-
* Security: Once any user exists, this function will refuse to create more users.
|
|
28
|
+
* Security: Once any admin user exists, this function will refuse to create more users.
|
|
29
29
|
* This prevents unauthorized admin creation after initial setup.
|
|
30
30
|
*
|
|
31
31
|
* @example
|
|
@@ -43,21 +43,21 @@ declare const isSetupRequired: questpie125.JsonRouteDefinition<Record<string, ne
|
|
|
43
43
|
* }
|
|
44
44
|
* ```
|
|
45
45
|
*/
|
|
46
|
-
declare const createFirstAdmin:
|
|
46
|
+
declare const createFirstAdmin: questpie143.JsonRouteDefinition<{
|
|
47
47
|
email: string;
|
|
48
48
|
password: string;
|
|
49
49
|
name: string;
|
|
50
|
-
}, any,
|
|
50
|
+
}, any, questpie143.JsonRouteParams>;
|
|
51
51
|
/**
|
|
52
52
|
* Bundle of setup-related functions.
|
|
53
53
|
*/
|
|
54
54
|
declare const setupFunctions: {
|
|
55
|
-
readonly isSetupRequired:
|
|
56
|
-
readonly createFirstAdmin:
|
|
55
|
+
readonly isSetupRequired: questpie143.JsonRouteDefinition<Record<string, never>, any, questpie143.JsonRouteParams>;
|
|
56
|
+
readonly createFirstAdmin: questpie143.JsonRouteDefinition<{
|
|
57
57
|
email: string;
|
|
58
58
|
password: string;
|
|
59
59
|
name: string;
|
|
60
|
-
}, any,
|
|
60
|
+
}, any, questpie143.JsonRouteParams>;
|
|
61
61
|
};
|
|
62
62
|
//#endregion
|
|
63
63
|
export { createFirstAdmin, isSetupRequired, setupFunctions };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getApp } from "./route-helpers.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { route } from "questpie";
|
|
4
|
-
import { eq, sql as sql$1 } from "drizzle
|
|
4
|
+
import { eq, sql as sql$1 } from "questpie/drizzle";
|
|
5
5
|
|
|
6
6
|
//#region src/server/modules/admin/routes/setup.ts
|
|
7
7
|
/**
|
|
@@ -28,7 +28,7 @@ const createFirstAdminOutputSchema = z.object({
|
|
|
28
28
|
error: z.string().optional()
|
|
29
29
|
});
|
|
30
30
|
/**
|
|
31
|
-
* Check if setup is required (no users exist in the system).
|
|
31
|
+
* Check if setup is required (no admin users exist in the system).
|
|
32
32
|
*
|
|
33
33
|
* @example
|
|
34
34
|
* ```ts
|
|
@@ -41,13 +41,13 @@ const createFirstAdminOutputSchema = z.object({
|
|
|
41
41
|
const isSetupRequired = route().post().schema(isSetupRequiredSchema).outputSchema(isSetupRequiredOutputSchema).handler(async (ctx) => {
|
|
42
42
|
const app = getApp(ctx);
|
|
43
43
|
const userCollection = app.getCollectionConfig("user");
|
|
44
|
-
return { required: (await app.db.select({ count: sql$1`count(*)::int` }).from(userCollection.table))[0].count === 0 };
|
|
44
|
+
return { required: (await app.db.select({ count: sql$1`count(*)::int` }).from(userCollection.table).where(eq(userCollection.table.role, "admin")))[0].count === 0 };
|
|
45
45
|
});
|
|
46
46
|
/**
|
|
47
47
|
* Create the first admin user in the system.
|
|
48
|
-
* This function only works when no users exist (setup mode).
|
|
48
|
+
* This function only works when no admin users exist (setup mode).
|
|
49
49
|
*
|
|
50
|
-
* Security: Once any user exists, this function will refuse to create more users.
|
|
50
|
+
* Security: Once any admin user exists, this function will refuse to create more users.
|
|
51
51
|
* This prevents unauthorized admin creation after initial setup.
|
|
52
52
|
*
|
|
53
53
|
* @example
|
|
@@ -69,9 +69,9 @@ const createFirstAdmin = route().post().schema(createFirstAdminSchema).outputSch
|
|
|
69
69
|
const app = getApp(ctx);
|
|
70
70
|
const input = ctx.input;
|
|
71
71
|
const userCollection = app.getCollectionConfig("user");
|
|
72
|
-
if ((await app.db.select({ count: sql$1`count(*)::int` }).from(userCollection.table))[0].count > 0) return {
|
|
72
|
+
if ((await app.db.select({ count: sql$1`count(*)::int` }).from(userCollection.table).where(eq(userCollection.table.role, "admin")))[0].count > 0) return {
|
|
73
73
|
success: false,
|
|
74
|
-
error: "Setup already completed - users exist in the system"
|
|
74
|
+
error: "Setup already completed - admin users exist in the system"
|
|
75
75
|
};
|
|
76
76
|
try {
|
|
77
77
|
const signUpResult = await app.auth.api.signUpEmail({ body: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as questpie464 from "questpie";
|
|
2
2
|
|
|
3
3
|
//#region src/server/modules/admin/routes/translations.d.ts
|
|
4
4
|
|
|
@@ -17,10 +17,10 @@ import * as questpie430 from "questpie";
|
|
|
17
17
|
* Bundle of translation-related functions.
|
|
18
18
|
*/
|
|
19
19
|
declare const translationFunctions: {
|
|
20
|
-
readonly getAdminTranslations:
|
|
20
|
+
readonly getAdminTranslations: questpie464.JsonRouteDefinition<{
|
|
21
21
|
locale: string;
|
|
22
|
-
}, any,
|
|
23
|
-
readonly getAdminLocales:
|
|
22
|
+
}, any, questpie464.JsonRouteParams>;
|
|
23
|
+
readonly getAdminLocales: questpie464.JsonRouteDefinition<Record<string, never> | undefined, any, questpie464.JsonRouteParams>;
|
|
24
24
|
};
|
|
25
25
|
//#endregion
|
|
26
26
|
export { translationFunctions };
|
|
@@ -29,7 +29,11 @@ function getAdminLocaleConfig(app) {
|
|
|
29
29
|
const getAdminTranslationsSchema = z.object({ locale: z.string() });
|
|
30
30
|
const messageValueSchema = z.union([z.string(), z.object({
|
|
31
31
|
one: z.string(),
|
|
32
|
-
other: z.string()
|
|
32
|
+
other: z.string(),
|
|
33
|
+
zero: z.string().optional(),
|
|
34
|
+
two: z.string().optional(),
|
|
35
|
+
few: z.string().optional(),
|
|
36
|
+
many: z.string().optional()
|
|
33
37
|
})]);
|
|
34
38
|
const getAdminTranslationsOutputSchema = z.object({
|
|
35
39
|
locale: z.string(),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as questpie93 from "questpie";
|
|
2
2
|
|
|
3
3
|
//#region src/server/modules/admin/routes/widget-data.d.ts
|
|
4
4
|
|
|
@@ -20,13 +20,13 @@ import * as questpie69 from "questpie";
|
|
|
20
20
|
* const data = await client.routes.fetchWidgetData({ widgetId: "my-widget" });
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
declare const fetchWidgetData:
|
|
23
|
+
declare const fetchWidgetData: questpie93.JsonRouteDefinition<{
|
|
24
24
|
widgetId: string;
|
|
25
|
-
}, any,
|
|
25
|
+
}, any, questpie93.JsonRouteParams>;
|
|
26
26
|
declare const widgetDataFunctions: {
|
|
27
|
-
readonly fetchWidgetData:
|
|
27
|
+
readonly fetchWidgetData: questpie93.JsonRouteDefinition<{
|
|
28
28
|
widgetId: string;
|
|
29
|
-
}, any,
|
|
29
|
+
}, any, questpie93.JsonRouteParams>;
|
|
30
30
|
};
|
|
31
31
|
//#endregion
|
|
32
32
|
export { fetchWidgetData, widgetDataFunctions };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { FilterOperator, FilterRule, SortConfig, ViewConfiguration } from "../../../../shared/types/saved-views.types.mjs";
|
|
2
2
|
import * as questpie_shared15 from "questpie/shared";
|
|
3
|
-
import * as
|
|
4
|
-
import * as drizzle_orm_pg_core22 from "drizzle-orm/pg-core";
|
|
5
|
-
import * as drizzle_orm5 from "drizzle-orm";
|
|
3
|
+
import * as questpie107 from "questpie";
|
|
6
4
|
import * as questpie_src_server_modules_core_fields_email_js2 from "questpie/src/server/modules/core/fields/email.js";
|
|
7
5
|
import * as questpie_src_server_modules_core_fields_json_js2 from "questpie/src/server/modules/core/fields/json.js";
|
|
6
|
+
import * as drizzle_orm_pg_core22 from "drizzle-orm/pg-core";
|
|
7
|
+
import * as drizzle_orm5 from "drizzle-orm";
|
|
8
8
|
|
|
9
9
|
//#region src/server/modules/admin-preferences/collections/saved-views.d.ts
|
|
10
10
|
|
|
@@ -33,22 +33,22 @@ import * as questpie_src_server_modules_core_fields_json_js2 from "questpie/src/
|
|
|
33
33
|
* });
|
|
34
34
|
* ```
|
|
35
35
|
*/
|
|
36
|
-
declare const savedViewsCollection:
|
|
37
|
-
readonly text: typeof
|
|
38
|
-
readonly textarea: typeof
|
|
36
|
+
declare const savedViewsCollection: questpie107.CollectionBuilder<questpie_shared15.Override<questpie_shared15.Override<questpie107.EmptyCollectionState<"admin_saved_views", undefined, {
|
|
37
|
+
readonly text: typeof questpie107.text;
|
|
38
|
+
readonly textarea: typeof questpie107.textarea;
|
|
39
39
|
readonly email: typeof questpie_src_server_modules_core_fields_email_js2.email;
|
|
40
|
-
readonly url: typeof
|
|
41
|
-
readonly number: typeof
|
|
42
|
-
readonly boolean: typeof
|
|
43
|
-
readonly date: typeof
|
|
44
|
-
readonly datetime: typeof
|
|
45
|
-
readonly time: typeof
|
|
46
|
-
readonly select: typeof
|
|
47
|
-
readonly upload: typeof
|
|
48
|
-
readonly relation: typeof
|
|
49
|
-
readonly object: typeof
|
|
40
|
+
readonly url: typeof questpie107.url;
|
|
41
|
+
readonly number: typeof questpie107.number;
|
|
42
|
+
readonly boolean: typeof questpie107.boolean;
|
|
43
|
+
readonly date: typeof questpie107.date;
|
|
44
|
+
readonly datetime: typeof questpie107.datetime;
|
|
45
|
+
readonly time: typeof questpie107.time;
|
|
46
|
+
readonly select: typeof questpie107.select;
|
|
47
|
+
readonly upload: typeof questpie107.upload;
|
|
48
|
+
readonly relation: typeof questpie107.relation;
|
|
49
|
+
readonly object: typeof questpie107.object;
|
|
50
50
|
readonly json: typeof questpie_src_server_modules_core_fields_json_js2.json;
|
|
51
|
-
readonly from: typeof
|
|
51
|
+
readonly from: typeof questpie107.from;
|
|
52
52
|
}>, {
|
|
53
53
|
fields: {
|
|
54
54
|
readonly userId: drizzle_orm5.NotNull<drizzle_orm_pg_core22.PgVarcharBuilder<[string, ...string[]]>>;
|
|
@@ -59,31 +59,31 @@ declare const savedViewsCollection: questpie89.CollectionBuilder<questpie_shared
|
|
|
59
59
|
};
|
|
60
60
|
localized: readonly string[];
|
|
61
61
|
fieldDefinitions: {
|
|
62
|
-
readonly userId:
|
|
62
|
+
readonly userId: questpie107.FieldWithMethods<Omit<questpie107.TextFieldState, "notNull" | "column"> & {
|
|
63
63
|
notNull: true;
|
|
64
64
|
column: drizzle_orm5.NotNull<drizzle_orm_pg_core22.PgVarcharBuilder<[string, ...string[]]>>;
|
|
65
65
|
} & {
|
|
66
66
|
label: questpie_shared15.I18nText;
|
|
67
|
-
},
|
|
68
|
-
readonly collectionName:
|
|
67
|
+
}, questpie107.TextFieldMethods>;
|
|
68
|
+
readonly collectionName: questpie107.FieldWithMethods<Omit<questpie107.TextFieldState, "notNull" | "column"> & {
|
|
69
69
|
notNull: true;
|
|
70
70
|
column: drizzle_orm5.NotNull<drizzle_orm_pg_core22.PgVarcharBuilder<[string, ...string[]]>>;
|
|
71
71
|
} & {
|
|
72
72
|
label: questpie_shared15.I18nText;
|
|
73
|
-
},
|
|
74
|
-
readonly name:
|
|
73
|
+
}, questpie107.TextFieldMethods>;
|
|
74
|
+
readonly name: questpie107.FieldWithMethods<Omit<questpie107.TextFieldState, "notNull" | "column"> & {
|
|
75
75
|
notNull: true;
|
|
76
76
|
column: drizzle_orm5.NotNull<drizzle_orm_pg_core22.PgVarcharBuilder<[string, ...string[]]>>;
|
|
77
77
|
} & {
|
|
78
78
|
label: questpie_shared15.I18nText;
|
|
79
|
-
},
|
|
80
|
-
readonly configuration:
|
|
79
|
+
}, questpie107.TextFieldMethods>;
|
|
80
|
+
readonly configuration: questpie107.Field<Omit<questpie107.JsonFieldState, "notNull" | "column"> & {
|
|
81
81
|
notNull: true;
|
|
82
82
|
column: drizzle_orm5.NotNull<drizzle_orm_pg_core22.PgJsonbBuilder>;
|
|
83
83
|
} & {
|
|
84
84
|
label: questpie_shared15.I18nText;
|
|
85
85
|
}>;
|
|
86
|
-
readonly isDefault:
|
|
86
|
+
readonly isDefault: questpie107.Field<Omit<questpie107.BooleanFieldState, "column" | "hasDefault"> & {
|
|
87
87
|
hasDefault: true;
|
|
88
88
|
column: drizzle_orm5.HasDefault<drizzle_orm_pg_core22.PgBooleanBuilder>;
|
|
89
89
|
} & {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { auditLogCollection } from "../collections/audit-log.mjs";
|
|
2
2
|
import { auditCleanupJob } from "../jobs/audit-cleanup.mjs";
|
|
3
|
-
import * as
|
|
3
|
+
import * as questpie64 from "questpie";
|
|
4
4
|
|
|
5
5
|
//#region src/server/modules/audit/.generated/module.d.ts
|
|
6
6
|
interface AuditCollections {
|
|
7
|
-
|
|
7
|
+
admin_audit_log: typeof auditLogCollection;
|
|
8
8
|
}
|
|
9
9
|
interface AuditJobs {
|
|
10
10
|
auditCleanup: typeof auditCleanupJob;
|
|
@@ -43,13 +43,13 @@ declare const _module: {
|
|
|
43
43
|
app: {
|
|
44
44
|
hooks: {
|
|
45
45
|
collections: {
|
|
46
|
-
afterChange: (ctx:
|
|
47
|
-
afterDelete: (ctx:
|
|
48
|
-
afterTransition: (ctx:
|
|
46
|
+
afterChange: (ctx: questpie64.GlobalCollectionHookContext) => Promise<void>;
|
|
47
|
+
afterDelete: (ctx: questpie64.GlobalCollectionHookContext) => Promise<void>;
|
|
48
|
+
afterTransition: (ctx: questpie64.GlobalCollectionTransitionHookContext) => Promise<void>;
|
|
49
49
|
};
|
|
50
50
|
globals: {
|
|
51
|
-
afterChange: (ctx:
|
|
52
|
-
afterTransition: (ctx:
|
|
51
|
+
afterChange: (ctx: questpie64.GlobalGlobalHookContext) => Promise<void>;
|
|
52
|
+
afterTransition: (ctx: questpie64.GlobalGlobalTransitionHookContext) => Promise<void>;
|
|
53
53
|
};
|
|
54
54
|
};
|
|
55
55
|
};
|
|
@@ -6,7 +6,7 @@ import app_default from "../config/app.mjs";
|
|
|
6
6
|
//#region src/server/modules/audit/.generated/module.ts
|
|
7
7
|
const _module = {
|
|
8
8
|
name: "questpie-audit",
|
|
9
|
-
collections: { auditLogCollection },
|
|
9
|
+
collections: { admin_audit_log: auditLogCollection },
|
|
10
10
|
jobs: { auditCleanup: auditCleanupJob },
|
|
11
11
|
globals: {},
|
|
12
12
|
routes: {},
|