@modern-admin/react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action-guard.d.ts +13 -0
- package/dist/action-guard.d.ts.map +1 -0
- package/dist/action-guard.js +15 -0
- package/dist/action-guard.js.map +1 -0
- package/dist/action-menu.d.ts +17 -0
- package/dist/action-menu.d.ts.map +1 -0
- package/dist/action-menu.jsx +80 -0
- package/dist/action-menu.jsx.map +1 -0
- package/dist/admin-app.d.ts +23 -0
- package/dist/admin-app.d.ts.map +1 -0
- package/dist/admin-app.jsx +407 -0
- package/dist/admin-app.jsx.map +1 -0
- package/dist/admin-router.d.ts +29 -0
- package/dist/admin-router.d.ts.map +1 -0
- package/dist/admin-router.jsx +215 -0
- package/dist/admin-router.jsx.map +1 -0
- package/dist/breadcrumbs.d.ts +17 -0
- package/dist/breadcrumbs.d.ts.map +1 -0
- package/dist/breadcrumbs.jsx +40 -0
- package/dist/breadcrumbs.jsx.map +1 -0
- package/dist/client.d.ts +526 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +582 -0
- package/dist/client.js.map +1 -0
- package/dist/component-loader.d.ts +10 -0
- package/dist/component-loader.d.ts.map +1 -0
- package/dist/component-loader.js +23 -0
- package/dist/component-loader.js.map +1 -0
- package/dist/components/ai-assistant-widget.d.ts +3 -0
- package/dist/components/ai-assistant-widget.d.ts.map +1 -0
- package/dist/components/ai-assistant-widget.jsx +390 -0
- package/dist/components/ai-assistant-widget.jsx.map +1 -0
- package/dist/components/ai-fill-dialog.d.ts +9 -0
- package/dist/components/ai-fill-dialog.d.ts.map +1 -0
- package/dist/components/ai-fill-dialog.jsx +105 -0
- package/dist/components/ai-fill-dialog.jsx.map +1 -0
- package/dist/components/chart-builder-dialog.d.ts +10 -0
- package/dist/components/chart-builder-dialog.d.ts.map +1 -0
- package/dist/components/chart-builder-dialog.jsx +433 -0
- package/dist/components/chart-builder-dialog.jsx.map +1 -0
- package/dist/components/chart-widget.d.ts +12 -0
- package/dist/components/chart-widget.d.ts.map +1 -0
- package/dist/components/chart-widget.jsx +365 -0
- package/dist/components/chart-widget.jsx.map +1 -0
- package/dist/components/global-search-dialog.d.ts +7 -0
- package/dist/components/global-search-dialog.d.ts.map +1 -0
- package/dist/components/global-search-dialog.jsx +187 -0
- package/dist/components/global-search-dialog.jsx.map +1 -0
- package/dist/components/group-settings-dialog.d.ts +13 -0
- package/dist/components/group-settings-dialog.d.ts.map +1 -0
- package/dist/components/group-settings-dialog.jsx +53 -0
- package/dist/components/group-settings-dialog.jsx.map +1 -0
- package/dist/components/move-chart-dialog.d.ts +18 -0
- package/dist/components/move-chart-dialog.d.ts.map +1 -0
- package/dist/components/move-chart-dialog.jsx +68 -0
- package/dist/components/move-chart-dialog.jsx.map +1 -0
- package/dist/components/reference-multi-table-dialog.d.ts +12 -0
- package/dist/components/reference-multi-table-dialog.d.ts.map +1 -0
- package/dist/components/reference-multi-table-dialog.jsx +126 -0
- package/dist/components/reference-multi-table-dialog.jsx.map +1 -0
- package/dist/components/related-records-tabs.d.ts +8 -0
- package/dist/components/related-records-tabs.d.ts.map +1 -0
- package/dist/components/related-records-tabs.jsx +75 -0
- package/dist/components/related-records-tabs.jsx.map +1 -0
- package/dist/components/revisions-button.d.ts +7 -0
- package/dist/components/revisions-button.d.ts.map +1 -0
- package/dist/components/revisions-button.jsx +152 -0
- package/dist/components/revisions-button.jsx.map +1 -0
- package/dist/components/wizard-form.d.ts +43 -0
- package/dist/components/wizard-form.d.ts.map +1 -0
- package/dist/components/wizard-form.jsx +136 -0
- package/dist/components/wizard-form.jsx.map +1 -0
- package/dist/dashboard/time-series.d.ts +20 -0
- package/dist/dashboard/time-series.d.ts.map +1 -0
- package/dist/dashboard/time-series.js +108 -0
- package/dist/dashboard/time-series.js.map +1 -0
- package/dist/dialogs.d.ts +35 -0
- package/dist/dialogs.d.ts.map +1 -0
- package/dist/dialogs.jsx +152 -0
- package/dist/dialogs.jsx.map +1 -0
- package/dist/export.d.ts +39 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +114 -0
- package/dist/export.js.map +1 -0
- package/dist/extension-registry.d.ts +122 -0
- package/dist/extension-registry.d.ts.map +1 -0
- package/dist/extension-registry.js +93 -0
- package/dist/extension-registry.js.map +1 -0
- package/dist/header-controls.d.ts +4 -0
- package/dist/header-controls.d.ts.map +1 -0
- package/dist/header-controls.jsx +70 -0
- package/dist/header-controls.jsx.map +1 -0
- package/dist/hooks.d.ts +104 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +374 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hotkey-help.d.ts +3 -0
- package/dist/hotkey-help.d.ts.map +1 -0
- package/dist/hotkey-help.jsx +32 -0
- package/dist/hotkey-help.jsx.map +1 -0
- package/dist/hotkey-registry.d.ts +18 -0
- package/dist/hotkey-registry.d.ts.map +1 -0
- package/dist/hotkey-registry.jsx +34 -0
- package/dist/hotkey-registry.jsx.map +1 -0
- package/dist/i18n.d.ts +74 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.jsx +127 -0
- package/dist/i18n.jsx.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/notify.d.ts +41 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.jsx +58 -0
- package/dist/notify.jsx.map +1 -0
- package/dist/pages/ai-assistant-settings-section.d.ts +3 -0
- package/dist/pages/ai-assistant-settings-section.d.ts.map +1 -0
- package/dist/pages/ai-assistant-settings-section.jsx +126 -0
- package/dist/pages/ai-assistant-settings-section.jsx.map +1 -0
- package/dist/pages/audit-log-page.d.ts +3 -0
- package/dist/pages/audit-log-page.d.ts.map +1 -0
- package/dist/pages/audit-log-page.jsx +354 -0
- package/dist/pages/audit-log-page.jsx.map +1 -0
- package/dist/pages/edit-page.d.ts +7 -0
- package/dist/pages/edit-page.d.ts.map +1 -0
- package/dist/pages/edit-page.jsx +614 -0
- package/dist/pages/edit-page.jsx.map +1 -0
- package/dist/pages/export-dialog.d.ts +11 -0
- package/dist/pages/export-dialog.d.ts.map +1 -0
- package/dist/pages/export-dialog.jsx +102 -0
- package/dist/pages/export-dialog.jsx.map +1 -0
- package/dist/pages/home-page.d.ts +3 -0
- package/dist/pages/home-page.d.ts.map +1 -0
- package/dist/pages/home-page.jsx +211 -0
- package/dist/pages/home-page.jsx.map +1 -0
- package/dist/pages/list-page.d.ts +42 -0
- package/dist/pages/list-page.d.ts.map +1 -0
- package/dist/pages/list-page.jsx +1596 -0
- package/dist/pages/list-page.jsx.map +1 -0
- package/dist/pages/login-page.d.ts +11 -0
- package/dist/pages/login-page.d.ts.map +1 -0
- package/dist/pages/login-page.jsx +157 -0
- package/dist/pages/login-page.jsx.map +1 -0
- package/dist/pages/settings-page.d.ts +5 -0
- package/dist/pages/settings-page.d.ts.map +1 -0
- package/dist/pages/settings-page.jsx +787 -0
- package/dist/pages/settings-page.jsx.map +1 -0
- package/dist/pages/settings-shared.d.ts +51 -0
- package/dist/pages/settings-shared.d.ts.map +1 -0
- package/dist/pages/settings-shared.jsx +66 -0
- package/dist/pages/settings-shared.jsx.map +1 -0
- package/dist/pages/show-page.d.ts +7 -0
- package/dist/pages/show-page.d.ts.map +1 -0
- package/dist/pages/show-page.jsx +147 -0
- package/dist/pages/show-page.jsx.map +1 -0
- package/dist/pages/wizard-create-page.d.ts +14 -0
- package/dist/pages/wizard-create-page.d.ts.map +1 -0
- package/dist/pages/wizard-create-page.jsx +106 -0
- package/dist/pages/wizard-create-page.jsx.map +1 -0
- package/dist/property-renderer.d.ts +8 -0
- package/dist/property-renderer.d.ts.map +1 -0
- package/dist/property-renderer.jsx +690 -0
- package/dist/property-renderer.jsx.map +1 -0
- package/dist/provider.d.ts +20 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.jsx +32 -0
- package/dist/provider.jsx.map +1 -0
- package/dist/realtime.d.ts +22 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +38 -0
- package/dist/realtime.js.map +1 -0
- package/dist/reference.d.ts +52 -0
- package/dist/reference.d.ts.map +1 -0
- package/dist/reference.jsx +224 -0
- package/dist/reference.jsx.map +1 -0
- package/dist/relations.d.ts +11 -0
- package/dist/relations.d.ts.map +1 -0
- package/dist/relations.js +36 -0
- package/dist/relations.js.map +1 -0
- package/dist/router.d.ts +82 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.jsx +187 -0
- package/dist/router.jsx.map +1 -0
- package/dist/show-when.d.ts +7 -0
- package/dist/show-when.d.ts.map +1 -0
- package/dist/show-when.js +77 -0
- package/dist/show-when.js.map +1 -0
- package/dist/types.d.ts +194 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -0
- package/dist/use-dashboard-charts.d.ts +93 -0
- package/dist/use-dashboard-charts.d.ts.map +1 -0
- package/dist/use-dashboard-charts.js +263 -0
- package/dist/use-dashboard-charts.js.map +1 -0
- package/dist/use-hotkey.d.ts +17 -0
- package/dist/use-hotkey.d.ts.map +1 -0
- package/dist/use-hotkey.js +103 -0
- package/dist/use-hotkey.js.map +1 -0
- package/dist/user-directory.d.ts +18 -0
- package/dist/user-directory.d.ts.map +1 -0
- package/dist/user-directory.js +51 -0
- package/dist/user-directory.js.map +1 -0
- package/dist/validation.d.ts +22 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +338 -0
- package/dist/validation.js.map +1 -0
- package/package.json +59 -0
- package/src/action-guard.ts +20 -0
- package/src/action-menu.tsx +161 -0
- package/src/admin-app.tsx +630 -0
- package/src/admin-router.tsx +273 -0
- package/src/breadcrumbs.tsx +75 -0
- package/src/client.ts +1093 -0
- package/src/component-loader.ts +33 -0
- package/src/components/ai-assistant-widget.tsx +565 -0
- package/src/components/ai-fill-dialog.tsx +143 -0
- package/src/components/chart-builder-dialog.tsx +618 -0
- package/src/components/chart-widget.tsx +654 -0
- package/src/components/global-search-dialog.tsx +272 -0
- package/src/components/group-settings-dialog.tsx +93 -0
- package/src/components/move-chart-dialog.tsx +130 -0
- package/src/components/reference-multi-table-dialog.tsx +196 -0
- package/src/components/related-records-tabs.tsx +130 -0
- package/src/components/revisions-button.tsx +237 -0
- package/src/components/wizard-form.tsx +302 -0
- package/src/dashboard/time-series.ts +125 -0
- package/src/dialogs.tsx +265 -0
- package/src/export.ts +140 -0
- package/src/extension-registry.ts +195 -0
- package/src/header-controls.tsx +125 -0
- package/src/hooks.ts +509 -0
- package/src/hotkey-help.tsx +56 -0
- package/src/hotkey-registry.tsx +60 -0
- package/src/i18n.tsx +267 -0
- package/src/index.ts +192 -0
- package/src/notify.tsx +94 -0
- package/src/pages/ai-assistant-settings-section.tsx +167 -0
- package/src/pages/audit-log-page.tsx +580 -0
- package/src/pages/edit-page.tsx +743 -0
- package/src/pages/export-dialog.tsx +154 -0
- package/src/pages/home-page.tsx +318 -0
- package/src/pages/list-page.tsx +2645 -0
- package/src/pages/login-page.tsx +242 -0
- package/src/pages/settings-page.tsx +1143 -0
- package/src/pages/settings-shared.tsx +134 -0
- package/src/pages/show-page.tsx +223 -0
- package/src/pages/wizard-create-page.tsx +164 -0
- package/src/property-renderer.tsx +1143 -0
- package/src/provider.tsx +70 -0
- package/src/realtime.ts +55 -0
- package/src/reference.tsx +386 -0
- package/src/relations.ts +55 -0
- package/src/router.tsx +211 -0
- package/src/show-when.ts +76 -0
- package/src/types.ts +198 -0
- package/src/use-dashboard-charts.ts +362 -0
- package/src/use-hotkey.ts +128 -0
- package/src/user-directory.ts +56 -0
- package/src/validation.ts +361 -0
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
import type { DashboardBlob } from '@modern-admin/core';
|
|
2
|
+
import type { AdminConfig, CustomActionResponse, CurrentUser, ListQuery, ListResponse, RecordResponse } from './types.js';
|
|
3
|
+
export interface AuthUiProps {
|
|
4
|
+
/** Enabled OAuth provider ids, e.g. ['google', 'github']. */
|
|
5
|
+
providers: string[];
|
|
6
|
+
emailAndPassword: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface AdminClientOptions {
|
|
9
|
+
/** Absolute base URL of the API, e.g. http://localhost:3001 — defaults to same-origin. */
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
/** Send credentials with every request (cookies for Better Auth sessions). */
|
|
12
|
+
credentials?: RequestCredentials;
|
|
13
|
+
/** Optional global headers (auth tokens, CSRF). */
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
persistDemoSession?: boolean;
|
|
16
|
+
demoSessionStorageKey?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Path under which the host mounts Better Auth's Node handler
|
|
19
|
+
* (`toNodeHandler(auth)`) AND configures `betterAuth({ basePath })`.
|
|
20
|
+
* Drives the sign-in / sign-out endpoints — defaults to
|
|
21
|
+
* `/admin/api/auth`, matching the canonical CLI scaffold. Override only
|
|
22
|
+
* if the host mounts Better Auth elsewhere; pass *without* a trailing
|
|
23
|
+
* slash, e.g. `'/api/auth'` (Better Auth's own default).
|
|
24
|
+
*/
|
|
25
|
+
authBasePath?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare class AdminClient {
|
|
28
|
+
private readonly baseUrl;
|
|
29
|
+
private readonly credentials;
|
|
30
|
+
private readonly headers;
|
|
31
|
+
private readonly demoSessionStorageKey;
|
|
32
|
+
private readonly authBasePath;
|
|
33
|
+
private readonly signInPath;
|
|
34
|
+
private readonly signOutPath;
|
|
35
|
+
constructor(opts?: AdminClientOptions);
|
|
36
|
+
private requestOnce;
|
|
37
|
+
private request;
|
|
38
|
+
private readDemoSession;
|
|
39
|
+
private writeDemoSession;
|
|
40
|
+
private clearDemoSession;
|
|
41
|
+
private restoreDemoSession;
|
|
42
|
+
config(): Promise<AdminConfig>;
|
|
43
|
+
/** Resolve the current authenticated admin. Throws AdminApiError(401) when
|
|
44
|
+
* unauthenticated — callers should branch on that to render login. */
|
|
45
|
+
me(): Promise<{
|
|
46
|
+
user: CurrentUser;
|
|
47
|
+
}>;
|
|
48
|
+
/** Email/password login via the host-mounted Better Auth handler. The
|
|
49
|
+
* endpoint sets an http-only session cookie that subsequent requests
|
|
50
|
+
* rely on (`credentials: 'include'`). The audit-log entry is written
|
|
51
|
+
* server-side by Better Auth's `session.create.after` hook, which
|
|
52
|
+
* covers email/password, OAuth, passkey and api-key flows uniformly. */
|
|
53
|
+
login(email: string, password: string): Promise<void>;
|
|
54
|
+
/** Fetch public auth UI metadata: which social providers are enabled,
|
|
55
|
+
* whether email/password login is active. The endpoint is unauthenticated. */
|
|
56
|
+
getAuthUiProps(): Promise<AuthUiProps>;
|
|
57
|
+
/** Initiate an OAuth social-login flow. Calls Better Auth's sign-in/social
|
|
58
|
+
* endpoint which returns a redirect URL, then navigates the browser there.
|
|
59
|
+
* `callbackUrl` defaults to the current page so the app re-checks auth
|
|
60
|
+
* after the provider redirects back. */
|
|
61
|
+
loginSocial(provider: string, callbackUrl?: string): Promise<void>;
|
|
62
|
+
/** Sign the current session out. Better Auth's sign-out endpoint requires
|
|
63
|
+
* an explicit JSON body (even if empty) when Content-Type is JSON. */
|
|
64
|
+
logout(): Promise<void>;
|
|
65
|
+
list(resourceId: string, query?: ListQuery): Promise<ListResponse>;
|
|
66
|
+
show(resourceId: string, recordId: string): Promise<RecordResponse>;
|
|
67
|
+
create(resourceId: string, payload: Record<string, unknown>): Promise<RecordResponse>;
|
|
68
|
+
update(resourceId: string, recordId: string, payload: Record<string, unknown>): Promise<RecordResponse>;
|
|
69
|
+
delete(resourceId: string, recordId: string): Promise<void>;
|
|
70
|
+
/** Bulk-delete a set of records via the resource's `bulkDelete` action. */
|
|
71
|
+
bulkDelete(resourceId: string, recordIds: ReadonlyArray<string>): Promise<unknown>;
|
|
72
|
+
/** Fetch distinct values for a field — used by the filter value picker.
|
|
73
|
+
* Returns `{ values, hasMore }`. */
|
|
74
|
+
distinctValues(resourceId: string, field: string, options?: {
|
|
75
|
+
search?: string;
|
|
76
|
+
limit?: number;
|
|
77
|
+
}): Promise<{
|
|
78
|
+
values: string[];
|
|
79
|
+
hasMore: boolean;
|
|
80
|
+
}>;
|
|
81
|
+
search(resourceId: string, query: string): Promise<ListResponse>;
|
|
82
|
+
/** Cross-resource search. Fans `query` out to every registered resource's
|
|
83
|
+
* `search` action; resources the principal cannot access are omitted.
|
|
84
|
+
*
|
|
85
|
+
* Accepts an optional `AbortSignal` so the command-palette dialog can
|
|
86
|
+
* cancel an in-flight request when the user keeps typing — without this
|
|
87
|
+
* the server is hit once per keystroke and stale responses race with
|
|
88
|
+
* newer ones. */
|
|
89
|
+
globalSearch(query: string, perResourceLimit?: number, options?: {
|
|
90
|
+
signal?: AbortSignal;
|
|
91
|
+
}): Promise<GlobalSearchResponse>;
|
|
92
|
+
/** Invoke a custom record-scoped action (actionType: 'record'). */
|
|
93
|
+
invokeRecordAction(resourceId: string, recordId: string, actionName: string, payload?: Record<string, unknown>): Promise<CustomActionResponse>;
|
|
94
|
+
/** Invoke a custom bulk-scoped action (actionType: 'bulk'). */
|
|
95
|
+
invokeBulkAction(resourceId: string, actionName: string, recordIds: ReadonlyArray<string>): Promise<CustomActionResponse>;
|
|
96
|
+
/** Invoke a custom resource-scoped action (actionType: 'resource'). */
|
|
97
|
+
invokeResourceAction(resourceId: string, actionName: string, payload?: Record<string, unknown>): Promise<CustomActionResponse>;
|
|
98
|
+
/**
|
|
99
|
+
* Run a time-series aggregation. KPI mode = `step: 'all'`. Multi-series
|
|
100
|
+
* via secondary `groupBy` (top-N truncation server-side).
|
|
101
|
+
*/
|
|
102
|
+
timeseries(query: TimeSeriesQuery): Promise<TimeSeriesResponse>;
|
|
103
|
+
listHistory(resourceId: string, recordId: string, query?: {
|
|
104
|
+
limit?: number;
|
|
105
|
+
offset?: number;
|
|
106
|
+
}): Promise<HistoryListResponse>;
|
|
107
|
+
getHistoryRevision(resourceId: string, recordId: string, revisionId: string): Promise<HistoryRevisionResponse>;
|
|
108
|
+
revertHistoryRevision(resourceId: string, recordId: string, revisionId: string, body?: {
|
|
109
|
+
reason?: string;
|
|
110
|
+
}): Promise<RecordResponse>;
|
|
111
|
+
listAuditLog(query?: AuditLogQuery): Promise<AuditLogResponse>;
|
|
112
|
+
/**
|
|
113
|
+
* Upload a single file for a `type: 'file'` property, reporting progress
|
|
114
|
+
* via `options.onProgress`. Uses `XMLHttpRequest` because the fetch API
|
|
115
|
+
* does not expose upload-side progress events.
|
|
116
|
+
*
|
|
117
|
+
* Returns the metadata record for the uploaded file. The server endpoint
|
|
118
|
+
* (`POST /admin/api/resources/:id/actions/upload`) accepts batch uploads
|
|
119
|
+
* and replies with an array; we send one file per request and unwrap the
|
|
120
|
+
* single result so the caller gets per-file progress and per-file errors.
|
|
121
|
+
*/
|
|
122
|
+
uploadFile(resourceId: string, field: string, file: File, options?: UploadFileOptions): Promise<UploadedFileInfo>;
|
|
123
|
+
/**
|
|
124
|
+
* Upload many files with bounded concurrency, reporting per-file progress
|
|
125
|
+
* via `options.onItem*` callbacks. Each file is sent in its own request,
|
|
126
|
+
* so partial failures do not affect already-completed uploads.
|
|
127
|
+
*
|
|
128
|
+
* Returns the array of successful results in the order files were passed.
|
|
129
|
+
* Failed entries are omitted from the returned array; consumers wanting
|
|
130
|
+
* to react to failures should observe `onItemError`.
|
|
131
|
+
*/
|
|
132
|
+
uploadFiles(resourceId: string, field: string, files: ReadonlyArray<File>, options?: UploadFilesOptions): Promise<UploadedFileInfo[]>;
|
|
133
|
+
/** Load the current user's dashboard layout from the server config store. */
|
|
134
|
+
loadDashboard(): Promise<{
|
|
135
|
+
dashboard: DashboardBlob;
|
|
136
|
+
}>;
|
|
137
|
+
/** Persist the current user's dashboard layout to the server config store. */
|
|
138
|
+
saveDashboard(dashboard: DashboardBlob): Promise<{
|
|
139
|
+
ok: boolean;
|
|
140
|
+
}>;
|
|
141
|
+
/** List API keys belonging to the current admin. */
|
|
142
|
+
listApiKeys(): Promise<{
|
|
143
|
+
keys: ApiKeyRecord[];
|
|
144
|
+
}>;
|
|
145
|
+
/** Create a new API key. The plaintext secret is returned exactly once. */
|
|
146
|
+
createApiKey(payload: {
|
|
147
|
+
name: string;
|
|
148
|
+
permissions: Record<string, string[]>;
|
|
149
|
+
expiresInDays?: number | null;
|
|
150
|
+
}): Promise<{
|
|
151
|
+
key: string;
|
|
152
|
+
record: ApiKeyRecord;
|
|
153
|
+
}>;
|
|
154
|
+
/** Patch a key — name/enabled/permissions/expiry. */
|
|
155
|
+
updateApiKey(id: string, payload: {
|
|
156
|
+
name?: string;
|
|
157
|
+
enabled?: boolean;
|
|
158
|
+
permissions?: Record<string, string[]>;
|
|
159
|
+
expiresInDays?: number | null;
|
|
160
|
+
}): Promise<{
|
|
161
|
+
record: ApiKeyRecord;
|
|
162
|
+
}>;
|
|
163
|
+
/** Permanently revoke (delete) an API key. */
|
|
164
|
+
deleteApiKey(id: string): Promise<{
|
|
165
|
+
success: true;
|
|
166
|
+
}>;
|
|
167
|
+
listWebhooks(): Promise<{
|
|
168
|
+
webhooks: WebhookRecord[];
|
|
169
|
+
}>;
|
|
170
|
+
createWebhook(payload: WebhookInput): Promise<{
|
|
171
|
+
webhook: WebhookRecord;
|
|
172
|
+
}>;
|
|
173
|
+
updateWebhook(id: string, payload: Partial<WebhookInput>): Promise<{
|
|
174
|
+
webhook: WebhookRecord;
|
|
175
|
+
}>;
|
|
176
|
+
deleteWebhook(id: string): Promise<{
|
|
177
|
+
success: true;
|
|
178
|
+
}>;
|
|
179
|
+
listWebhookDeliveries(id: string, limit?: number): Promise<{
|
|
180
|
+
deliveries: WebhookDeliveryRecord[];
|
|
181
|
+
}>;
|
|
182
|
+
testWebhook(id: string): Promise<{
|
|
183
|
+
success: true;
|
|
184
|
+
}>;
|
|
185
|
+
/**
|
|
186
|
+
* Cancel a still-pending upload — deletes the file from storage immediately.
|
|
187
|
+
* Use when the user removes a freshly uploaded file *before* saving the
|
|
188
|
+
* form. Files that have already been confirmed (record saved) cannot be
|
|
189
|
+
* cancelled via this endpoint and the call will reject with 404.
|
|
190
|
+
*/
|
|
191
|
+
cancelUpload(resourceId: string, field: string, key: string): Promise<void>;
|
|
192
|
+
/**
|
|
193
|
+
* Send a single image to the resource's `aiFill` action and receive a
|
|
194
|
+
* `values` map the edit form can hydrate from. Uses multipart/form-data
|
|
195
|
+
* because vision models expect raw bytes, not base64-stringified payloads.
|
|
196
|
+
*
|
|
197
|
+
* Supports an optional `signal` for cancellation and the demo-session 401
|
|
198
|
+
* auto-restore logic (matching the behaviour of `request()`). Cannot use
|
|
199
|
+
* `requestOnce` directly because that always sets `Content-Type: application/json`,
|
|
200
|
+
* which would override the browser-generated multipart boundary.
|
|
201
|
+
*/
|
|
202
|
+
aiFillFromImage(resourceId: string, file: File, options?: {
|
|
203
|
+
signal?: AbortSignal;
|
|
204
|
+
}): Promise<AiFillResponse>;
|
|
205
|
+
getAiAssistantSettings(): Promise<AiAssistantSettings>;
|
|
206
|
+
updateAiAssistantSettings(payload: {
|
|
207
|
+
enabled: boolean;
|
|
208
|
+
model: string;
|
|
209
|
+
apiKey?: string;
|
|
210
|
+
systemPrompt?: string;
|
|
211
|
+
}): Promise<AiAssistantSettings>;
|
|
212
|
+
sendAiAssistantChat(messages: AiAssistantChatMessage[], requestId?: string, locale?: string, conversationId?: string, clientContext?: AiClientContext): Promise<AiAssistantChatEnqueueResponse>;
|
|
213
|
+
listAiAssistantChats(): Promise<AiAssistantChatHistoryItem[]>;
|
|
214
|
+
getAiAssistantTask(taskId: string): Promise<AiAssistantTask>;
|
|
215
|
+
}
|
|
216
|
+
export type TimeSeriesMetric = 'count' | 'sum' | 'avg' | 'min' | 'max';
|
|
217
|
+
export type TimeSeriesStep = 'day' | 'week' | 'month' | 'year' | 'all';
|
|
218
|
+
export interface TimeSeriesQuery {
|
|
219
|
+
resource: string;
|
|
220
|
+
/** Property path of the date/datetime column used for X-axis bucketing. */
|
|
221
|
+
dateField: string;
|
|
222
|
+
step: TimeSeriesStep;
|
|
223
|
+
metric: TimeSeriesMetric;
|
|
224
|
+
/** Required for non-count metrics. */
|
|
225
|
+
field?: string;
|
|
226
|
+
/** Optional secondary breakdown — produces one series per distinct value. */
|
|
227
|
+
groupBy?: string;
|
|
228
|
+
/** Maximum series count for grouped charts. Default 10. */
|
|
229
|
+
topN?: number;
|
|
230
|
+
/**
|
|
231
|
+
* When set, the server resolves each non-special series key (FK id) to a
|
|
232
|
+
* human-readable title via `findMany` on this resource.
|
|
233
|
+
*/
|
|
234
|
+
groupByLabelResource?: string;
|
|
235
|
+
/** ISO datetime, inclusive start. */
|
|
236
|
+
from: string;
|
|
237
|
+
/** ISO datetime, inclusive end. */
|
|
238
|
+
to: string;
|
|
239
|
+
/** List-page-style filters narrowing the dataset. */
|
|
240
|
+
filters?: Record<string, string>;
|
|
241
|
+
/** When true, response includes the equal-length previous window (KPI delta). */
|
|
242
|
+
comparePrevious?: boolean;
|
|
243
|
+
}
|
|
244
|
+
export interface TimeSeriesPoint {
|
|
245
|
+
/** ISO date `YYYY-MM-DD`. */
|
|
246
|
+
date: string;
|
|
247
|
+
value: number;
|
|
248
|
+
}
|
|
249
|
+
export interface TimeSeriesSeries {
|
|
250
|
+
/** Series identifier. `'__total__'` when no `groupBy` is set, `'__other__'` for the topN remainder. */
|
|
251
|
+
key: string;
|
|
252
|
+
points: TimeSeriesPoint[];
|
|
253
|
+
}
|
|
254
|
+
export interface TimeSeriesResponse {
|
|
255
|
+
series: TimeSeriesSeries[];
|
|
256
|
+
/** Populated when the request used `comparePrevious: true`. */
|
|
257
|
+
previous?: TimeSeriesSeries[];
|
|
258
|
+
/** Captured raw SQL — only present for callers whose role is allowed. */
|
|
259
|
+
sql?: string;
|
|
260
|
+
/** `false` when the resource's adapter does not implement aggregateTimeSeries. */
|
|
261
|
+
supported: boolean;
|
|
262
|
+
/** Populated when `groupByLabelResource` was set — maps series key → title. */
|
|
263
|
+
resolvedLabels?: Record<string, string>;
|
|
264
|
+
}
|
|
265
|
+
export type HistoryOp = 'create' | 'update' | 'delete';
|
|
266
|
+
export interface HistoryDiffEntry {
|
|
267
|
+
path: string;
|
|
268
|
+
before?: unknown;
|
|
269
|
+
after?: unknown;
|
|
270
|
+
kind: 'added' | 'changed' | 'removed';
|
|
271
|
+
}
|
|
272
|
+
export interface HistoryRevision {
|
|
273
|
+
id: string;
|
|
274
|
+
resourceId: string;
|
|
275
|
+
recordId: string;
|
|
276
|
+
op: HistoryOp;
|
|
277
|
+
userId?: string;
|
|
278
|
+
snapshot: Record<string, unknown>;
|
|
279
|
+
snapshotBefore?: Record<string, unknown>;
|
|
280
|
+
createdAt: string;
|
|
281
|
+
}
|
|
282
|
+
export interface HistoryListResponse {
|
|
283
|
+
revisions: HistoryRevision[];
|
|
284
|
+
}
|
|
285
|
+
export interface HistoryRevisionResponse {
|
|
286
|
+
revision: HistoryRevision;
|
|
287
|
+
}
|
|
288
|
+
export interface AuditLogEntry {
|
|
289
|
+
/** UUID v7 assigned by the writer; optional for legacy in-memory rows. */
|
|
290
|
+
id?: string;
|
|
291
|
+
resourceId: string;
|
|
292
|
+
action: string;
|
|
293
|
+
recordId?: string;
|
|
294
|
+
recordIds?: string[];
|
|
295
|
+
/** Human-readable title of the affected record, stored at write time. */
|
|
296
|
+
recordTitle?: string;
|
|
297
|
+
userId?: string;
|
|
298
|
+
payload?: Record<string, unknown>;
|
|
299
|
+
result?: Record<string, unknown>;
|
|
300
|
+
at: number;
|
|
301
|
+
}
|
|
302
|
+
export interface AuditLogQuery {
|
|
303
|
+
resourceId?: string;
|
|
304
|
+
recordId?: string;
|
|
305
|
+
userId?: string;
|
|
306
|
+
actions?: string[];
|
|
307
|
+
from?: string;
|
|
308
|
+
to?: string;
|
|
309
|
+
limit?: number;
|
|
310
|
+
offset?: number;
|
|
311
|
+
/** Cursor: fetch only entries with `at` strictly before this unix-ms value. */
|
|
312
|
+
before?: number;
|
|
313
|
+
}
|
|
314
|
+
export interface AuditLogResponse {
|
|
315
|
+
events: AuditLogEntry[];
|
|
316
|
+
}
|
|
317
|
+
/** Wire shape of an API key record exposed by `/admin/api/api-keys/*`. */
|
|
318
|
+
export interface ApiKeyRecord {
|
|
319
|
+
id: string;
|
|
320
|
+
name: string | null;
|
|
321
|
+
start: string | null;
|
|
322
|
+
prefix: string | null;
|
|
323
|
+
enabled: boolean;
|
|
324
|
+
permissions: Record<string, string[]>;
|
|
325
|
+
expiresAt: string | null;
|
|
326
|
+
lastRequest: string | null;
|
|
327
|
+
createdAt: string;
|
|
328
|
+
updatedAt: string;
|
|
329
|
+
}
|
|
330
|
+
export interface WebhookInput {
|
|
331
|
+
name: string;
|
|
332
|
+
url: string;
|
|
333
|
+
events: string[];
|
|
334
|
+
resourceId?: string | null;
|
|
335
|
+
enabled?: boolean;
|
|
336
|
+
secret?: string;
|
|
337
|
+
headers?: Record<string, string>;
|
|
338
|
+
filters?: Record<string, string>;
|
|
339
|
+
payloadFields?: string[];
|
|
340
|
+
}
|
|
341
|
+
export interface WebhookRecord extends Required<Omit<WebhookInput, 'secret'>> {
|
|
342
|
+
id: string;
|
|
343
|
+
secret?: string;
|
|
344
|
+
createdAt: string;
|
|
345
|
+
updatedAt: string;
|
|
346
|
+
}
|
|
347
|
+
export interface WebhookDeliveryRecord {
|
|
348
|
+
id: string;
|
|
349
|
+
webhookId: string;
|
|
350
|
+
event: string;
|
|
351
|
+
payload: Record<string, unknown>;
|
|
352
|
+
status: 'pending' | 'success' | 'failed';
|
|
353
|
+
responseStatus?: number;
|
|
354
|
+
responseBody?: string;
|
|
355
|
+
error?: string;
|
|
356
|
+
attempt: number;
|
|
357
|
+
createdAt: string;
|
|
358
|
+
deliveredAt?: string;
|
|
359
|
+
}
|
|
360
|
+
export interface AiAssistantSettings {
|
|
361
|
+
enabled: boolean;
|
|
362
|
+
configured: boolean;
|
|
363
|
+
provider: 'openrouter';
|
|
364
|
+
model: string;
|
|
365
|
+
maskedApiKey: string | null;
|
|
366
|
+
systemPrompt: string;
|
|
367
|
+
canManage: boolean;
|
|
368
|
+
canChat: boolean;
|
|
369
|
+
readOnly: boolean;
|
|
370
|
+
}
|
|
371
|
+
export interface AiAssistantChatMessage {
|
|
372
|
+
role: 'user' | 'assistant';
|
|
373
|
+
content: string;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Snapshot of the admin frontend at the moment the user sent the message,
|
|
377
|
+
* passed alongside the chat payload so the assistant can ground itself.
|
|
378
|
+
*/
|
|
379
|
+
export interface AiClientContext {
|
|
380
|
+
/** Current window pathname, e.g. "/" or "/resources/posts/abc". */
|
|
381
|
+
pathname?: string;
|
|
382
|
+
}
|
|
383
|
+
/** Allowed navigation targets — mirrors the safe subset of `Route`. */
|
|
384
|
+
export type AiNavigateRoute = {
|
|
385
|
+
name: 'home';
|
|
386
|
+
} | {
|
|
387
|
+
name: 'audit-log';
|
|
388
|
+
} | {
|
|
389
|
+
name: 'list';
|
|
390
|
+
resourceId: string;
|
|
391
|
+
} | {
|
|
392
|
+
name: 'show';
|
|
393
|
+
resourceId: string;
|
|
394
|
+
recordId: string;
|
|
395
|
+
} | {
|
|
396
|
+
name: 'settings';
|
|
397
|
+
section?: string;
|
|
398
|
+
};
|
|
399
|
+
/** Side-effect emitted by the assistant for the frontend to execute. */
|
|
400
|
+
export type AiUiAction = {
|
|
401
|
+
kind: 'navigate';
|
|
402
|
+
route: AiNavigateRoute;
|
|
403
|
+
} | {
|
|
404
|
+
kind: 'refresh';
|
|
405
|
+
target: 'dashboard';
|
|
406
|
+
};
|
|
407
|
+
export interface AiAssistantCitation {
|
|
408
|
+
resourceId: string;
|
|
409
|
+
recordId?: string;
|
|
410
|
+
label: string;
|
|
411
|
+
}
|
|
412
|
+
export interface AiAssistantChatResponse {
|
|
413
|
+
message: {
|
|
414
|
+
role: 'assistant';
|
|
415
|
+
content: string;
|
|
416
|
+
};
|
|
417
|
+
citations: AiAssistantCitation[];
|
|
418
|
+
toolCalls: Array<{
|
|
419
|
+
toolName: string;
|
|
420
|
+
state: string;
|
|
421
|
+
}>;
|
|
422
|
+
taskId?: string;
|
|
423
|
+
}
|
|
424
|
+
export interface AiAssistantChatEnqueueResponse {
|
|
425
|
+
taskId: string;
|
|
426
|
+
status: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled';
|
|
427
|
+
}
|
|
428
|
+
export interface AiAssistantChatHistoryItem {
|
|
429
|
+
conversationId: string;
|
|
430
|
+
taskId: string;
|
|
431
|
+
title: string;
|
|
432
|
+
status: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled';
|
|
433
|
+
updatedAt: string;
|
|
434
|
+
}
|
|
435
|
+
export interface AiAssistantTask {
|
|
436
|
+
id: string;
|
|
437
|
+
kind: string;
|
|
438
|
+
resourceId?: string;
|
|
439
|
+
recordId?: string;
|
|
440
|
+
userId?: string;
|
|
441
|
+
status: 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled';
|
|
442
|
+
input: Record<string, unknown>;
|
|
443
|
+
output?: {
|
|
444
|
+
text?: string;
|
|
445
|
+
citations?: AiAssistantCitation[];
|
|
446
|
+
toolCalls?: Array<{
|
|
447
|
+
toolName: string;
|
|
448
|
+
}>;
|
|
449
|
+
uiActions?: AiUiAction[];
|
|
450
|
+
[key: string]: unknown;
|
|
451
|
+
};
|
|
452
|
+
error?: string;
|
|
453
|
+
progress: number | null;
|
|
454
|
+
createdAt: string;
|
|
455
|
+
updatedAt: string;
|
|
456
|
+
startedAt?: string;
|
|
457
|
+
finishedAt?: string;
|
|
458
|
+
}
|
|
459
|
+
export interface AiFillResponse {
|
|
460
|
+
/** Map of property path → extracted value. Only fields the model could
|
|
461
|
+
* confidently extract are present; the form merges them into existing
|
|
462
|
+
* values without clobbering unrelated columns. */
|
|
463
|
+
values: Record<string, unknown>;
|
|
464
|
+
}
|
|
465
|
+
/** Metadata returned by `POST /upload` for one file. */
|
|
466
|
+
export interface UploadedFileInfo {
|
|
467
|
+
key: string;
|
|
468
|
+
url: string;
|
|
469
|
+
name: string;
|
|
470
|
+
size: number;
|
|
471
|
+
mimeType: string;
|
|
472
|
+
}
|
|
473
|
+
/** Bytes-loaded snapshot emitted by `XMLHttpRequest.upload.onprogress`. */
|
|
474
|
+
export interface UploadProgress {
|
|
475
|
+
loaded: number;
|
|
476
|
+
total: number;
|
|
477
|
+
/** 0–100, rounded. */
|
|
478
|
+
percent: number;
|
|
479
|
+
}
|
|
480
|
+
export interface UploadFileOptions {
|
|
481
|
+
onProgress?: (p: UploadProgress) => void;
|
|
482
|
+
signal?: AbortSignal;
|
|
483
|
+
}
|
|
484
|
+
export interface UploadFilesOptions {
|
|
485
|
+
/** Maximum concurrent in-flight requests. Default 3. */
|
|
486
|
+
concurrency?: number;
|
|
487
|
+
signal?: AbortSignal;
|
|
488
|
+
onItemStart?: (index: number, file: File) => void;
|
|
489
|
+
onItemProgress?: (index: number, file: File, p: UploadProgress) => void;
|
|
490
|
+
onItemComplete?: (index: number, file: File, info: UploadedFileInfo) => void;
|
|
491
|
+
onItemError?: (index: number, file: File, error: Error) => void;
|
|
492
|
+
}
|
|
493
|
+
export interface GlobalSearchHit {
|
|
494
|
+
resourceId: string;
|
|
495
|
+
resourceName: string;
|
|
496
|
+
recordId: string;
|
|
497
|
+
title: string;
|
|
498
|
+
/** Property path whose value matched the query (omitted when matched on title or id). */
|
|
499
|
+
matchedField?: string;
|
|
500
|
+
/** ~80-char excerpt with the matched substring near its center. */
|
|
501
|
+
snippet?: string;
|
|
502
|
+
/** Relevance ranking — higher is better. Mirrors the server-side rubric. */
|
|
503
|
+
score?: number;
|
|
504
|
+
}
|
|
505
|
+
export interface GlobalSearchGroup {
|
|
506
|
+
resourceId: string;
|
|
507
|
+
resourceName: string;
|
|
508
|
+
records: GlobalSearchHit[];
|
|
509
|
+
}
|
|
510
|
+
export interface GlobalSearchResponse {
|
|
511
|
+
query: string;
|
|
512
|
+
groups: GlobalSearchGroup[];
|
|
513
|
+
total: number;
|
|
514
|
+
}
|
|
515
|
+
export declare class AdminApiError extends Error {
|
|
516
|
+
readonly status: number;
|
|
517
|
+
constructor(status: number, message: string);
|
|
518
|
+
}
|
|
519
|
+
/** Extract a human-readable message from any error thrown by AdminClient.
|
|
520
|
+
* The raw message is the HTTP response body text (often JSON). We try to
|
|
521
|
+
* parse the `.message` field from the JSON payload before falling back. */
|
|
522
|
+
export declare function parseApiError(err: unknown): {
|
|
523
|
+
status?: number;
|
|
524
|
+
message: string;
|
|
525
|
+
};
|
|
526
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|