@anzusystems/common-admin 1.47.0-beta.dev-1788935859 → 1.47.0-beta.dev-1789894877
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/{AFormRemoteAutocomplete-CAnBocBD.mjs → AFormRemoteAutocomplete-DtEeZY57.mjs} +4615 -4498
- package/dist/AFormRemoteAutocomplete-DtEeZY57.mjs.map +1 -0
- package/dist/common-admin.css +1 -1
- package/dist/common-admin.d.ts +561 -485
- package/dist/common-admin.js +9880 -7816
- package/dist/common-admin.js.map +1 -1
- package/dist/{esm-5MBsZiLM.mjs → esm-DmynC16A.mjs} +2 -2
- package/dist/{esm-5MBsZiLM.mjs.map → esm-DmynC16A.mjs.map} +1 -1
- package/dist/labs.d.ts +672 -55
- package/dist/labs.js +1728 -1277
- package/dist/labs.js.map +1 -1
- package/dist/playground/cropper-landscape.png +0 -0
- package/dist/playground/cropper-portrait.png +0 -0
- package/dist/playground/cropper-small.png +0 -0
- package/dist/playground/cropper-wide.png +0 -0
- package/dist/{webfontloader-DwTbqvVe.mjs → webfontloader-DKErl27O.mjs} +2 -2
- package/dist/{webfontloader-DwTbqvVe.mjs.map → webfontloader-DKErl27O.mjs.map} +1 -1
- package/package.json +10 -7
- package/src/eslint/plugin.d.mts +20 -0
- package/src/eslint/plugin.mjs +160 -10
- package/dist/AFormRemoteAutocomplete-CAnBocBD.mjs.map +0 -1
package/dist/labs.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { MaybeRefOrGetter } from 'vue';
|
|
|
10
10
|
import { Method } from 'axios';
|
|
11
11
|
import { PublicProps } from 'vue';
|
|
12
12
|
import { Ref } from 'vue';
|
|
13
|
+
import { RouteLocationRaw } from 'vue-router';
|
|
13
14
|
import { ShallowRef } from 'vue';
|
|
14
15
|
import { ShallowUnwrapRef } from 'vue';
|
|
15
16
|
import { UseDebounceFnReturn } from '@vueuse/shared';
|
|
@@ -36,8 +37,8 @@ declare const __VLS_base: DefineComponent<__VLS_PublicProps, {
|
|
|
36
37
|
client: () => AxiosInstance;
|
|
37
38
|
enableTop: boolean;
|
|
38
39
|
hideButtons: boolean;
|
|
39
|
-
formName: string;
|
|
40
40
|
store: FilterStoreIdentifier | boolean;
|
|
41
|
+
formName: string;
|
|
41
42
|
alwaysVisible: boolean;
|
|
42
43
|
hideMore: boolean;
|
|
43
44
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
@@ -70,9 +71,9 @@ declare const __VLS_base_3: DefineComponent<__VLS_PublicProps_2, {
|
|
|
70
71
|
userId: IntegerIdNullable;
|
|
71
72
|
client: () => AxiosInstance;
|
|
72
73
|
hideButtons: boolean;
|
|
74
|
+
store: FilterStoreIdentifier | boolean;
|
|
73
75
|
formName: string;
|
|
74
76
|
disableFilterUrlSync: boolean;
|
|
75
|
-
store: FilterStoreIdentifier | boolean;
|
|
76
77
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
77
78
|
|
|
78
79
|
declare const __VLS_base_4: DefineComponent<__VLS_Props_9, {
|
|
@@ -453,6 +454,10 @@ declare const __VLS_export_21: DefineComponent<__VLS_PublicProps_5, {}, {}, {},
|
|
|
453
454
|
dirtyLabels: string[];
|
|
454
455
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
455
456
|
|
|
457
|
+
declare const __VLS_export_22: DefineComponent<__VLS_Props_15, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_15> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
458
|
+
|
|
459
|
+
declare const __VLS_export_23: DefineComponent<__VLS_Props_16, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_16> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
460
|
+
|
|
456
461
|
declare const __VLS_export_3: __VLS_WithSlots_3<typeof __VLS_base_3, __VLS_Slots_3>;
|
|
457
462
|
|
|
458
463
|
declare const __VLS_export_4: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
@@ -634,6 +639,34 @@ declare type __VLS_Props_13 = {
|
|
|
634
639
|
|
|
635
640
|
declare type __VLS_Props_14 = Props_4;
|
|
636
641
|
|
|
642
|
+
declare type __VLS_Props_15 = {
|
|
643
|
+
/** Which backend to ask. */
|
|
644
|
+
client: AxiosClientFn;
|
|
645
|
+
/** Identity used for api naming and error reporting -- `coreDam`, not `dam`, where they differ. */
|
|
646
|
+
system: string;
|
|
647
|
+
/** From the route, never component state: it picks the endpoint and has to survive a filter reset. */
|
|
648
|
+
type: LogTypeType;
|
|
649
|
+
/** Whole paths per type. Comes from the route-side descriptor, which the guard reads too. */
|
|
650
|
+
logPaths: LogPaths;
|
|
651
|
+
/** Where a row goes. The library cannot know an app's typed route names, so the app maps it. */
|
|
652
|
+
detailRoute: (log: Log) => RouteLocationRaw;
|
|
653
|
+
/** Where the app/audit dropdown goes. Same reason. */
|
|
654
|
+
typeRoute: (type: LogTypeType) => RouteLocationRaw;
|
|
655
|
+
/** Mandatory time bound, as admin-dam has today. Omitted means no bound at all. */
|
|
656
|
+
defaultTimeWindow?: LogTimeWindow | undefined;
|
|
657
|
+
/** `allowed` for the interval filter. Omitted means the library's full preset list. */
|
|
658
|
+
allowedTimeIntervals?: TimeIntervalToolsValue[] | undefined;
|
|
659
|
+
};
|
|
660
|
+
|
|
661
|
+
declare type __VLS_Props_16 = {
|
|
662
|
+
client: AxiosClientFn;
|
|
663
|
+
system: string;
|
|
664
|
+
/** From the route. A log id means nothing without the store it came from. */
|
|
665
|
+
type: LogTypeType;
|
|
666
|
+
id: string;
|
|
667
|
+
logPaths: LogPaths;
|
|
668
|
+
};
|
|
669
|
+
|
|
637
670
|
declare type __VLS_Props_2 = {
|
|
638
671
|
formName?: string;
|
|
639
672
|
};
|
|
@@ -836,6 +869,10 @@ export declare const AListEditor: typeof __VLS_export_18;
|
|
|
836
869
|
|
|
837
870
|
declare type AllowedFilterValues = number | number[] | string | string[] | null | undefined | boolean;
|
|
838
871
|
|
|
872
|
+
export declare const ALogDetailView: typeof __VLS_export_23;
|
|
873
|
+
|
|
874
|
+
export declare const ALogListView: typeof __VLS_export_22;
|
|
875
|
+
|
|
839
876
|
export declare const ANestedSortableListEditor: typeof __VLS_export_20;
|
|
840
877
|
|
|
841
878
|
declare interface AnzuUserAndTimeTrackingAware extends CreatedByAware {
|
|
@@ -848,6 +885,42 @@ declare interface AnzuUserMinimal extends BaseUser {
|
|
|
848
885
|
id: IntegerId;
|
|
849
886
|
}
|
|
850
887
|
|
|
888
|
+
export declare type ApiErrorContext = {
|
|
889
|
+
system: string;
|
|
890
|
+
entity: string;
|
|
891
|
+
/** The url actually requested, parameters substituted and query included -- not the template. */
|
|
892
|
+
url?: string;
|
|
893
|
+
/**
|
|
894
|
+
* The status the backend answered with, when it answered at all. Absent for a transport failure,
|
|
895
|
+
* where there is no response.
|
|
896
|
+
*
|
|
897
|
+
* It is here so an application can decide what is worth writing down without the call sites having
|
|
898
|
+
* to: a 404 that a caller probes for, for instance. Those used to be silenced per call, which made
|
|
899
|
+
* whether a failure was recorded depend on which call made it. The switch is the application's now,
|
|
900
|
+
* and this is what it needs to use it.
|
|
901
|
+
*
|
|
902
|
+
* Two statuses are not the application's to decide, and the library keeps them: 401 and 403. They
|
|
903
|
+
* are not an endpoint failing its contract, they are the session -- nobody is logged in, or this
|
|
904
|
+
* user may not -- and every admin in the fleet already branches on them and acts. Everything else
|
|
905
|
+
* reaches the logger and is filtered here, on this field.
|
|
906
|
+
*/
|
|
907
|
+
status?: number;
|
|
908
|
+
};
|
|
909
|
+
|
|
910
|
+
export declare type ApiErrorLogger = (error: Error, context: ApiErrorContext) => void;
|
|
911
|
+
|
|
912
|
+
/**
|
|
913
|
+
* Called on every mount, not only when the type changes. The registry hands back the same
|
|
914
|
+
* `filterConfig` the previous visit left behind, so these flags still describe whichever type was
|
|
915
|
+
* open last. Landing straight on an `app` url after an audit visit -- a link, a bookmark, F5 --
|
|
916
|
+
* would otherwise send that visit's `resourceName` to the app endpoint.
|
|
917
|
+
*
|
|
918
|
+
* Three flags, not two -- `FiltersSelected` hides a chip on `render.selected`, so without the
|
|
919
|
+
* third one the bar would advertise a filter that is not being applied, and its close button
|
|
920
|
+
* would destroy the very value this approach exists to keep.
|
|
921
|
+
*/
|
|
922
|
+
export declare const applyLogTypeVisibility: (filter: LogFilter, type: LogTypeType) => void;
|
|
923
|
+
|
|
851
924
|
export declare const ASortableListEditor: typeof __VLS_export_19;
|
|
852
925
|
|
|
853
926
|
export declare const ASubjectSelect: typeof __VLS_export_17;
|
|
@@ -1005,6 +1078,11 @@ declare interface DecoratedViewItem_2<T> extends ListViewItem<T> {
|
|
|
1005
1078
|
canMoveDown: boolean;
|
|
1006
1079
|
}
|
|
1007
1080
|
|
|
1081
|
+
export declare const DEFAULT_LOG_PATHS: LogPaths;
|
|
1082
|
+
|
|
1083
|
+
/** What reporting does until an application says otherwise; exported so a test can put it back. */
|
|
1084
|
+
export declare const defaultApiErrorLogger: ApiErrorLogger;
|
|
1085
|
+
|
|
1008
1086
|
/**
|
|
1009
1087
|
* UUID v4 as string.
|
|
1010
1088
|
*/
|
|
@@ -1034,10 +1112,12 @@ declare interface EmptySlotProps_3 {
|
|
|
1034
1112
|
};
|
|
1035
1113
|
}
|
|
1036
1114
|
|
|
1037
|
-
declare type ExecuteRequestParams<
|
|
1115
|
+
export declare type ExecuteRequestParams<B> = {
|
|
1038
1116
|
urlTemplate?: string;
|
|
1039
1117
|
urlParams?: UrlParams;
|
|
1040
|
-
|
|
1118
|
+
body?: B;
|
|
1119
|
+
/** Stops this one call, leaving the instance's other calls alone. */
|
|
1120
|
+
signal?: AbortSignal;
|
|
1041
1121
|
};
|
|
1042
1122
|
|
|
1043
1123
|
/**
|
|
@@ -1063,9 +1143,11 @@ export declare type ExposedNestedListEditorHandle<TItem extends Record<string, a
|
|
|
1063
1143
|
hasUnsavedChanges: boolean;
|
|
1064
1144
|
};
|
|
1065
1145
|
|
|
1066
|
-
declare type FetchByIdsParams = {
|
|
1146
|
+
export declare type FetchByIdsParams = {
|
|
1067
1147
|
urlTemplate?: string;
|
|
1068
1148
|
urlParams?: UrlParams;
|
|
1149
|
+
/** Stops this one call, leaving the instance's other calls alone. */
|
|
1150
|
+
signal?: AbortSignal;
|
|
1069
1151
|
};
|
|
1070
1152
|
|
|
1071
1153
|
declare type FetchItemsMinimalByIdsType = ((ids: IntegerId[]) => Promise<any[]>) | ((ids: DocId[]) => Promise<any[]>);
|
|
@@ -1074,7 +1156,16 @@ declare type FetchItemsMinimalType = (pagination: Ref<Pagination>, filterData: F
|
|
|
1074
1156
|
|
|
1075
1157
|
declare type FetchItemsMinimalType_2 = (pagination: Ref<Pagination>, filterData: FilterData, filterConfig: FilterConfig) => Promise<any[]>;
|
|
1076
1158
|
|
|
1077
|
-
declare type
|
|
1159
|
+
export declare type FetchItemsParams = {
|
|
1160
|
+
urlTemplate?: string;
|
|
1161
|
+
urlParams?: UrlParams;
|
|
1162
|
+
/** Stops this one call, leaving the instance's other calls alone. */
|
|
1163
|
+
signal?: AbortSignal;
|
|
1164
|
+
};
|
|
1165
|
+
|
|
1166
|
+
export declare type FetchListBatchParams = {
|
|
1167
|
+
/** Stops this one call, leaving the instance's other calls alone. */
|
|
1168
|
+
signal?: AbortSignal;
|
|
1078
1169
|
urlTemplate?: string;
|
|
1079
1170
|
urlParams?: UrlParams;
|
|
1080
1171
|
sortBy?: string;
|
|
@@ -1083,10 +1174,12 @@ declare type FetchListBatchParams = {
|
|
|
1083
1174
|
forceElastic?: boolean;
|
|
1084
1175
|
};
|
|
1085
1176
|
|
|
1086
|
-
declare type FetchListParams = {
|
|
1177
|
+
export declare type FetchListParams = {
|
|
1087
1178
|
urlTemplate?: string;
|
|
1088
1179
|
urlParams?: UrlParams;
|
|
1089
1180
|
forceElastic?: boolean;
|
|
1181
|
+
/** Stops this one call, leaving the instance's other calls alone. */
|
|
1182
|
+
signal?: AbortSignal;
|
|
1090
1183
|
};
|
|
1091
1184
|
|
|
1092
1185
|
declare interface FilerRenderOptions {
|
|
@@ -1159,6 +1252,12 @@ declare type FilterVariant = 'search' | 'lt' | 'in' | 'notIn' | 'endsWith' | 'st
|
|
|
1159
1252
|
|
|
1160
1253
|
declare type FilterVariant_2 = 'search' | 'lt' | 'in' | 'notIn' | 'endsWith' | 'startsWith' | 'memberOf' | 'contains' | 'neq' | 'gte' | 'gt' | 'eq' | 'lte' | 'custom';
|
|
1161
1254
|
|
|
1255
|
+
/**
|
|
1256
|
+
* Pretty-prints a JSON string, and hands back whatever it was given when that is not what it is.
|
|
1257
|
+
* Log context carries request and response bodies that are usually but not always JSON.
|
|
1258
|
+
*/
|
|
1259
|
+
export declare const formatJson: (data: string) => string;
|
|
1260
|
+
|
|
1162
1261
|
declare interface GeneralFilterOptions {
|
|
1163
1262
|
system?: string;
|
|
1164
1263
|
subject?: string;
|
|
@@ -1192,6 +1291,8 @@ declare type IntegerId = number;
|
|
|
1192
1291
|
*/
|
|
1193
1292
|
declare type IntegerIdNullable = number | null;
|
|
1194
1293
|
|
|
1294
|
+
export declare const isLogType: (value: unknown) => value is LogTypeType;
|
|
1295
|
+
|
|
1195
1296
|
/** Whether `router.push({ hash })` would leave the hash intact — see `buildFilterHash`. */
|
|
1196
1297
|
export declare const isRouterSafeHash: (hash: string) => boolean;
|
|
1197
1298
|
|
|
@@ -1361,6 +1462,215 @@ export declare interface ListViewItem<TItem> {
|
|
|
1361
1462
|
validationState?: ListEditorValidationState;
|
|
1362
1463
|
}
|
|
1363
1464
|
|
|
1465
|
+
declare interface Log {
|
|
1466
|
+
id: string;
|
|
1467
|
+
message: string;
|
|
1468
|
+
datetime: DatetimeUTC;
|
|
1469
|
+
levelName: LogLevelType;
|
|
1470
|
+
context: {
|
|
1471
|
+
appVersion: string;
|
|
1472
|
+
appSystem: string;
|
|
1473
|
+
requestOriginAppVersion: string;
|
|
1474
|
+
path: string;
|
|
1475
|
+
method: string;
|
|
1476
|
+
contextId: string;
|
|
1477
|
+
userId: IntegerIdNullable;
|
|
1478
|
+
resourceName: string;
|
|
1479
|
+
resourceIds: string[];
|
|
1480
|
+
ip: string;
|
|
1481
|
+
response: string;
|
|
1482
|
+
content?: string;
|
|
1483
|
+
params: string;
|
|
1484
|
+
httpStatus: number;
|
|
1485
|
+
};
|
|
1486
|
+
_resourceName: string;
|
|
1487
|
+
_system: string;
|
|
1488
|
+
_type: string;
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
export declare const LOG_ENTITY = "log";
|
|
1492
|
+
|
|
1493
|
+
declare interface LogActionsParams {
|
|
1494
|
+
client: AxiosClientFn;
|
|
1495
|
+
system: string;
|
|
1496
|
+
logPaths: LogPaths;
|
|
1497
|
+
type: LogTypeType;
|
|
1498
|
+
/**
|
|
1499
|
+
* Lets an ancestor own the flag, the way `usePagination` takes an external pagination ref --
|
|
1500
|
+
* the card that shows the spinner sits above the table that does the fetching.
|
|
1501
|
+
*/
|
|
1502
|
+
loading?: Ref<boolean>;
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
declare interface LogApiParams {
|
|
1506
|
+
client: AxiosClientFn;
|
|
1507
|
+
system: string;
|
|
1508
|
+
logPaths: LogPaths;
|
|
1509
|
+
type: LogTypeType;
|
|
1510
|
+
}
|
|
1511
|
+
|
|
1512
|
+
export declare interface LogFilter {
|
|
1513
|
+
filterConfig: FilterConfig<LogFilterFields>;
|
|
1514
|
+
filterData: FilterData<LogFilterFields>;
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1517
|
+
declare type LogFilterFields = ReturnType<typeof logFilterFields>;
|
|
1518
|
+
|
|
1519
|
+
/**
|
|
1520
|
+
* A factory rather than a constant, because `defaultTimeWindow` cannot be expressed as a seeded
|
|
1521
|
+
* value: what makes the window always reach the query is `mandatory` plus `default` on the two
|
|
1522
|
+
* interval fields, and both are read out of this array when `createFilter` runs.
|
|
1523
|
+
*/
|
|
1524
|
+
declare const logFilterFields: (window: LogTimeWindow | undefined) => ({
|
|
1525
|
+
name: "levelName";
|
|
1526
|
+
variant: "in";
|
|
1527
|
+
default: never[];
|
|
1528
|
+
type?: undefined;
|
|
1529
|
+
apiName?: undefined;
|
|
1530
|
+
render?: undefined;
|
|
1531
|
+
related?: undefined;
|
|
1532
|
+
mandatory?: undefined;
|
|
1533
|
+
exclude?: undefined;
|
|
1534
|
+
} | {
|
|
1535
|
+
name: "id";
|
|
1536
|
+
default: null;
|
|
1537
|
+
type: "string";
|
|
1538
|
+
variant?: undefined;
|
|
1539
|
+
apiName?: undefined;
|
|
1540
|
+
render?: undefined;
|
|
1541
|
+
related?: undefined;
|
|
1542
|
+
mandatory?: undefined;
|
|
1543
|
+
exclude?: undefined;
|
|
1544
|
+
} | {
|
|
1545
|
+
name: "contextId";
|
|
1546
|
+
apiName: string;
|
|
1547
|
+
default: null;
|
|
1548
|
+
type: "string";
|
|
1549
|
+
render: {
|
|
1550
|
+
skip: true;
|
|
1551
|
+
};
|
|
1552
|
+
variant?: undefined;
|
|
1553
|
+
related?: undefined;
|
|
1554
|
+
mandatory?: undefined;
|
|
1555
|
+
exclude?: undefined;
|
|
1556
|
+
} | {
|
|
1557
|
+
name: "message";
|
|
1558
|
+
variant: "startsWith";
|
|
1559
|
+
default: null;
|
|
1560
|
+
type: "string";
|
|
1561
|
+
render: {
|
|
1562
|
+
skip: true;
|
|
1563
|
+
};
|
|
1564
|
+
apiName?: undefined;
|
|
1565
|
+
related?: undefined;
|
|
1566
|
+
mandatory?: undefined;
|
|
1567
|
+
exclude?: undefined;
|
|
1568
|
+
} | {
|
|
1569
|
+
name: "appVersion";
|
|
1570
|
+
variant: "startsWith";
|
|
1571
|
+
apiName: string;
|
|
1572
|
+
default: null;
|
|
1573
|
+
type: "string";
|
|
1574
|
+
render?: undefined;
|
|
1575
|
+
related?: undefined;
|
|
1576
|
+
mandatory?: undefined;
|
|
1577
|
+
exclude?: undefined;
|
|
1578
|
+
} | {
|
|
1579
|
+
name: "userId";
|
|
1580
|
+
apiName: string;
|
|
1581
|
+
default: null;
|
|
1582
|
+
type: "integer";
|
|
1583
|
+
variant?: undefined;
|
|
1584
|
+
render?: undefined;
|
|
1585
|
+
related?: undefined;
|
|
1586
|
+
mandatory?: undefined;
|
|
1587
|
+
exclude?: undefined;
|
|
1588
|
+
} | {
|
|
1589
|
+
name: "resourceName";
|
|
1590
|
+
apiName: string;
|
|
1591
|
+
default: null;
|
|
1592
|
+
type: "string";
|
|
1593
|
+
variant?: undefined;
|
|
1594
|
+
render?: undefined;
|
|
1595
|
+
related?: undefined;
|
|
1596
|
+
mandatory?: undefined;
|
|
1597
|
+
exclude?: undefined;
|
|
1598
|
+
} | {
|
|
1599
|
+
name: "resourceIds";
|
|
1600
|
+
apiName: string;
|
|
1601
|
+
variant: "in";
|
|
1602
|
+
default: never[];
|
|
1603
|
+
type: "string";
|
|
1604
|
+
render?: undefined;
|
|
1605
|
+
related?: undefined;
|
|
1606
|
+
mandatory?: undefined;
|
|
1607
|
+
exclude?: undefined;
|
|
1608
|
+
} | {
|
|
1609
|
+
name: "datetimeFrom";
|
|
1610
|
+
apiName: string;
|
|
1611
|
+
type: "timeInterval";
|
|
1612
|
+
related: string;
|
|
1613
|
+
default: string | null;
|
|
1614
|
+
mandatory: boolean;
|
|
1615
|
+
render: {
|
|
1616
|
+
skip: true;
|
|
1617
|
+
};
|
|
1618
|
+
variant?: undefined;
|
|
1619
|
+
exclude?: undefined;
|
|
1620
|
+
} | {
|
|
1621
|
+
name: "datetimeTo";
|
|
1622
|
+
apiName: string;
|
|
1623
|
+
type: "timeInterval";
|
|
1624
|
+
exclude: true;
|
|
1625
|
+
default: string | null;
|
|
1626
|
+
mandatory: boolean;
|
|
1627
|
+
render: {
|
|
1628
|
+
skip: true;
|
|
1629
|
+
};
|
|
1630
|
+
variant?: undefined;
|
|
1631
|
+
related?: undefined;
|
|
1632
|
+
})[];
|
|
1633
|
+
|
|
1634
|
+
declare const LogLevel: {
|
|
1635
|
+
readonly Debug: "DEBUG";
|
|
1636
|
+
readonly Info: "INFO";
|
|
1637
|
+
readonly Notice: "NOTICE";
|
|
1638
|
+
readonly Warning: "WARNING";
|
|
1639
|
+
readonly Error: "ERROR";
|
|
1640
|
+
readonly Critical: "CRITICAL";
|
|
1641
|
+
readonly Alert: "ALERT";
|
|
1642
|
+
readonly Emergency: "EMERGENCY";
|
|
1643
|
+
};
|
|
1644
|
+
|
|
1645
|
+
declare type LogLevelType = (typeof LogLevel)[keyof typeof LogLevel];
|
|
1646
|
+
|
|
1647
|
+
/**
|
|
1648
|
+
* Full paths per type, not a segment appended to a shared prefix: brick exposes its app log at
|
|
1649
|
+
* `/adm/v1/log/journal` rather than `/adm/v1/log/app`, and nothing says the next backend will
|
|
1650
|
+
* differ in the same place.
|
|
1651
|
+
*/
|
|
1652
|
+
export declare type LogPaths = Record<LogTypeType, string>;
|
|
1653
|
+
|
|
1654
|
+
export declare interface LogTimeWindow {
|
|
1655
|
+
from: DatetimeUTC;
|
|
1656
|
+
to: DatetimeUTC;
|
|
1657
|
+
}
|
|
1658
|
+
|
|
1659
|
+
/**
|
|
1660
|
+
* The two log stores every anzu backend exposes. This is a runtime value on purpose: the router
|
|
1661
|
+
* guard validates the `:type` path segment before any component mounts, and a bare TypeScript
|
|
1662
|
+
* type is erased by then. It is the single source of the valid set -- the dropdown iterates the
|
|
1663
|
+
* same object the guard checks against, so the two cannot drift apart.
|
|
1664
|
+
*/
|
|
1665
|
+
export declare const LogType: {
|
|
1666
|
+
readonly App: "app";
|
|
1667
|
+
readonly Audit: "audit";
|
|
1668
|
+
};
|
|
1669
|
+
|
|
1670
|
+
export declare const LogTypeDefault: "app";
|
|
1671
|
+
|
|
1672
|
+
export declare type LogTypeType = (typeof LogType)[keyof typeof LogType];
|
|
1673
|
+
|
|
1364
1674
|
export declare interface MakeFilterOption<TName extends string = string> {
|
|
1365
1675
|
name: TName;
|
|
1366
1676
|
default: AllowedFilterValues;
|
|
@@ -1642,7 +1952,12 @@ declare interface Props<TItem extends Record<string, any>> {
|
|
|
1642
1952
|
disabled?: boolean;
|
|
1643
1953
|
loading?: boolean;
|
|
1644
1954
|
error?: string | null;
|
|
1955
|
+
/** Heading above the list. A ready translated string, like every text prop here. */
|
|
1645
1956
|
title?: string | null;
|
|
1957
|
+
/**
|
|
1958
|
+
* Field shown in a collapsed row when no `#item-compact` slot is given. A dotted path reads
|
|
1959
|
+
* through nested objects (`texts.title`); a path that runs into nothing renders empty.
|
|
1960
|
+
*/
|
|
1646
1961
|
compactField?: string | null;
|
|
1647
1962
|
statusField?: string | null;
|
|
1648
1963
|
twoRows?: 'never' | 'mobile' | 'always';
|
|
@@ -1651,7 +1966,9 @@ declare interface Props<TItem extends Record<string, any>> {
|
|
|
1651
1966
|
showDeleteButton?: boolean;
|
|
1652
1967
|
showEditButton?: boolean;
|
|
1653
1968
|
showAddAfterAction?: boolean;
|
|
1969
|
+
/** Label of the add button. A ready translated string; omit it for the library's own wording. */
|
|
1654
1970
|
addLabel?: string | null;
|
|
1971
|
+
/** Heading of the empty state. A ready translated string. */
|
|
1655
1972
|
emptyTitle?: string | null;
|
|
1656
1973
|
disableRowClick?: boolean;
|
|
1657
1974
|
disableDeleteConfirm?: boolean;
|
|
@@ -1745,7 +2062,12 @@ declare interface Props_2<TItem extends Record<string, any>> {
|
|
|
1745
2062
|
disabled?: boolean;
|
|
1746
2063
|
loading?: boolean;
|
|
1747
2064
|
error?: string | null;
|
|
2065
|
+
/** Heading above the list. A ready translated string, like every text prop here. */
|
|
1748
2066
|
title?: string | null;
|
|
2067
|
+
/**
|
|
2068
|
+
* Field shown in a collapsed row when no `#item-compact` slot is given. A dotted path reads
|
|
2069
|
+
* through nested objects (`texts.title`); a path that runs into nothing renders empty.
|
|
2070
|
+
*/
|
|
1749
2071
|
compactField?: string | null;
|
|
1750
2072
|
statusField?: string | null;
|
|
1751
2073
|
twoRows?: 'never' | 'mobile' | 'always';
|
|
@@ -1754,10 +2076,18 @@ declare interface Props_2<TItem extends Record<string, any>> {
|
|
|
1754
2076
|
showDeleteButton?: boolean;
|
|
1755
2077
|
showEditButton?: boolean;
|
|
1756
2078
|
showAddAfterAction?: boolean;
|
|
2079
|
+
/** Label of the add button. A ready translated string; omit it for the library's own wording. */
|
|
1757
2080
|
addLabel?: string | null;
|
|
2081
|
+
/** Heading of the empty state. A ready translated string. */
|
|
1758
2082
|
emptyTitle?: string | null;
|
|
1759
2083
|
disableRowClick?: boolean;
|
|
1760
2084
|
disableDeleteConfirm?: boolean;
|
|
2085
|
+
/**
|
|
2086
|
+
* Disable unsaved-state tracking — no dirty markers, never reads as unsaved. For a list that is a
|
|
2087
|
+
* VIEW of data owned elsewhere (a display cache rebuilt from a parent's field, say): nothing in
|
|
2088
|
+
* such a component can ever clear an amber row, so it must not raise one. Mirrors `AListEditor`.
|
|
2089
|
+
*/
|
|
2090
|
+
disableUnsaved?: boolean;
|
|
1761
2091
|
deleteConfirmTitle?: string | null;
|
|
1762
2092
|
deleteConfirmText?: string | null;
|
|
1763
2093
|
/**
|
|
@@ -1853,7 +2183,12 @@ declare interface Props_3<TItem extends Record<string, any>> {
|
|
|
1853
2183
|
disabled?: boolean;
|
|
1854
2184
|
loading?: boolean;
|
|
1855
2185
|
error?: string | null;
|
|
2186
|
+
/** Heading above the list. A ready translated string, like every text prop here. */
|
|
1856
2187
|
title?: string | null;
|
|
2188
|
+
/**
|
|
2189
|
+
* Field shown in a collapsed row when no `#item-compact` slot is given. A dotted path reads
|
|
2190
|
+
* through nested objects (`texts.title`); a path that runs into nothing renders empty.
|
|
2191
|
+
*/
|
|
1857
2192
|
compactField?: string | null;
|
|
1858
2193
|
statusField?: string | null;
|
|
1859
2194
|
showAddButton?: boolean;
|
|
@@ -1864,10 +2199,18 @@ declare interface Props_3<TItem extends Record<string, any>> {
|
|
|
1864
2199
|
showMoveToPosition?: boolean;
|
|
1865
2200
|
showChangeParent?: boolean;
|
|
1866
2201
|
showExpandToggle?: boolean;
|
|
2202
|
+
/** Label of the add button. A ready translated string; omit it for the library's own wording. */
|
|
1867
2203
|
addLabel?: string | null;
|
|
2204
|
+
/** Heading of the empty state. A ready translated string. */
|
|
1868
2205
|
emptyTitle?: string | null;
|
|
1869
2206
|
disableRowClick?: boolean;
|
|
1870
2207
|
disableDeleteConfirm?: boolean;
|
|
2208
|
+
/**
|
|
2209
|
+
* Disable unsaved-state tracking — no dirty markers, never reads as unsaved. For a list that is a
|
|
2210
|
+
* VIEW of data owned elsewhere (a display cache rebuilt from a parent's field, say): nothing in
|
|
2211
|
+
* such a component can ever clear an amber row, so it must not raise one. Mirrors `AListEditor`.
|
|
2212
|
+
*/
|
|
2213
|
+
disableUnsaved?: boolean;
|
|
1871
2214
|
deleteConfirmTitle?: string | null;
|
|
1872
2215
|
deleteConfirmText?: string | null;
|
|
1873
2216
|
/**
|
|
@@ -2081,6 +2424,19 @@ declare interface RowSlotProps_3<TItem extends Record<string, any>> {
|
|
|
2081
2424
|
actions: RowActions_3<TItem>;
|
|
2082
2425
|
}
|
|
2083
2426
|
|
|
2427
|
+
/**
|
|
2428
|
+
* Replaces the logger the api helpers report unexpected failures through, or turns reporting off
|
|
2429
|
+
* with `null`.
|
|
2430
|
+
*
|
|
2431
|
+
* It is one switch for the whole family rather than a flag on each instance, which is what it
|
|
2432
|
+
* replaces: whether a failure was written down used to depend on which helper made the call and how
|
|
2433
|
+
* that instance happened to be constructed.
|
|
2434
|
+
*
|
|
2435
|
+
* An application that wants these where it can see them passes its own:
|
|
2436
|
+
* `setApiErrorLogger((e, ctx) => Sentry.captureException(e, { extra: ctx }))`.
|
|
2437
|
+
*/
|
|
2438
|
+
export declare const setApiErrorLogger: (fn: ApiErrorLogger | null) => void;
|
|
2439
|
+
|
|
2084
2440
|
export declare interface SharedReorderRegistry {
|
|
2085
2441
|
register: (id: symbol, movedCount: ComputedRef<number>, hasPendingChanges: ComputedRef<boolean>, validateAll: () => boolean) => void;
|
|
2086
2442
|
unregister: (id: symbol) => void;
|
|
@@ -2197,62 +2553,146 @@ declare type UrlParams = {
|
|
|
2197
2553
|
[key: string]: number | string;
|
|
2198
2554
|
};
|
|
2199
2555
|
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2556
|
+
/**
|
|
2557
|
+
* A request that asks the backend to do something and reads nothing back -- a delete, or a call that
|
|
2558
|
+
* only starts work and answers 202. Any successful status resolves; a body, if one arrives, is
|
|
2559
|
+
* ignored rather than typed.
|
|
2560
|
+
*/
|
|
2561
|
+
export declare const useApiCommand: <B = never>(params: UseApiRequestParams) => UseApiRequestReturnType<void, B>;
|
|
2204
2562
|
|
|
2205
|
-
export declare const useApiFetchByIds: <
|
|
2563
|
+
export declare const useApiFetchByIds: <T>(params: UseApiFetchByIdsParams) => UseApiFetchByIdsReturnType<T>;
|
|
2206
2564
|
|
|
2207
|
-
declare type UseApiFetchByIdsParams = {
|
|
2565
|
+
export declare type UseApiFetchByIdsParams = {
|
|
2208
2566
|
client: AxiosClientFn;
|
|
2209
2567
|
system: string;
|
|
2210
2568
|
entity: string;
|
|
2211
2569
|
urlTemplate?: string;
|
|
2212
2570
|
urlParams?: UrlParams;
|
|
2213
|
-
|
|
2571
|
+
/** Anything axios takes except what this helper decides: the method, the url, the body and the signal. */
|
|
2572
|
+
options?: Omit<AxiosRequestConfig, 'method' | 'url' | 'data' | 'signal'>;
|
|
2214
2573
|
isSearchApi?: boolean;
|
|
2215
2574
|
field?: string;
|
|
2216
|
-
|
|
2575
|
+
cancelPrevious?: boolean;
|
|
2576
|
+
};
|
|
2577
|
+
|
|
2578
|
+
export declare type UseApiFetchByIdsReturnType<T> = {
|
|
2579
|
+
execute: (ids: DocId[] | IntegerId[], params?: FetchByIdsParams) => Promise<T[]>;
|
|
2580
|
+
abort: () => void;
|
|
2581
|
+
/**
|
|
2582
|
+
* True while this instance has a request in flight, false once the last one settles.
|
|
2583
|
+
*
|
|
2584
|
+
* It is here so a caller does not have to keep its own: the hand-rolled version is a ref cleared
|
|
2585
|
+
* in a `finally`, and that `finally` belongs to whichever call ended -- including one that
|
|
2586
|
+
* `cancelPrevious` just superseded, which turns the spinner off while the call the user is waiting
|
|
2587
|
+
* for is still running. This one never dips between a superseded call and the one that replaced it.
|
|
2588
|
+
*/
|
|
2589
|
+
loading: Ref<boolean>;
|
|
2590
|
+
};
|
|
2591
|
+
|
|
2592
|
+
/**
|
|
2593
|
+
* A list read from an endpoint the caller has already written the query for, with no pagination.
|
|
2594
|
+
*
|
|
2595
|
+
* It exists because the fleet kept doing this through `useApiRequest<ApiResponseList<T[]>>`: build a
|
|
2596
|
+
* query by hand -- an order, a limit, a fixed filter -- bake it into the url, and read `.data` off
|
|
2597
|
+
* the envelope that comes back. That is a list fetch with the list part missing: nothing checks that
|
|
2598
|
+
* `data` is an array, so a malformed answer still hands back `undefined` typed as `T[]`, which is
|
|
2599
|
+
* the bug this whole family was built to end.
|
|
2600
|
+
*
|
|
2601
|
+
* `useApiFetchList` cannot serve them: it asks for a pagination ref, a `filterData` and a
|
|
2602
|
+
* `filterConfig`, and these calls have none -- their filters are decided at the call site and are
|
|
2603
|
+
* not the user's to change. So this is that helper with the pagination taken out: same core, same
|
|
2604
|
+
* error mapping, same list-body check, and it answers with the items rather than the envelope.
|
|
2605
|
+
*
|
|
2606
|
+
* It writes no metadata. An endpoint whose paging the user drives is `useApiFetchList`; a list read
|
|
2607
|
+
* page by page to the end is `useApiFetchListBatch`.
|
|
2608
|
+
*/
|
|
2609
|
+
export declare const useApiFetchItems: <T>(params: UseApiFetchItemsParams) => UseApiFetchItemsReturnType<T>;
|
|
2610
|
+
|
|
2611
|
+
export declare type UseApiFetchItemsParams = {
|
|
2612
|
+
client: AxiosClientFn;
|
|
2613
|
+
system: string;
|
|
2614
|
+
entity: string;
|
|
2615
|
+
/**
|
|
2616
|
+
* The url, query and all: whatever built the query has already run by the time it gets here.
|
|
2617
|
+
*
|
|
2618
|
+
* `urlParams` are substituted into the PATH only -- `/article/:id/routes?locale=:locale` fills in
|
|
2619
|
+
* `:id` and sends `:locale` as it stands. This is the helper written for hand-made queries, so it
|
|
2620
|
+
* is the one place someone would reach for a placeholder in the query; put the value in the query
|
|
2621
|
+
* when building it, or pass it through `options.params` and let axios serialise it.
|
|
2622
|
+
*/
|
|
2623
|
+
urlTemplate?: string;
|
|
2624
|
+
urlParams?: UrlParams;
|
|
2625
|
+
/** Anything axios takes except what this helper decides: the method, the url, the body and the signal. */
|
|
2626
|
+
options?: Omit<AxiosRequestConfig, 'method' | 'url' | 'data' | 'signal'>;
|
|
2627
|
+
cancelPrevious?: boolean;
|
|
2217
2628
|
};
|
|
2218
2629
|
|
|
2219
|
-
declare type
|
|
2220
|
-
|
|
2221
|
-
|
|
2630
|
+
export declare type UseApiFetchItemsReturnType<T> = {
|
|
2631
|
+
execute: (params?: FetchItemsParams) => Promise<T[]>;
|
|
2632
|
+
abort: () => void;
|
|
2633
|
+
/**
|
|
2634
|
+
* True while this instance has a request in flight, false once the last one settles.
|
|
2635
|
+
*
|
|
2636
|
+
* It is here so a caller does not have to keep its own: the hand-rolled version is a ref cleared
|
|
2637
|
+
* in a `finally`, and that `finally` belongs to whichever call ended -- including one that
|
|
2638
|
+
* `cancelPrevious` just superseded, which turns the spinner off while the call the user is waiting
|
|
2639
|
+
* for is still running. This one never dips between a superseded call and the one that replaced it.
|
|
2640
|
+
*/
|
|
2641
|
+
loading: Ref<boolean>;
|
|
2222
2642
|
};
|
|
2223
2643
|
|
|
2224
|
-
export declare const useApiFetchList: <
|
|
2644
|
+
export declare const useApiFetchList: <T>(params: UseApiFetchListParams) => UseApiFetchListReturnType<T>;
|
|
2225
2645
|
|
|
2226
|
-
export declare const useApiFetchListBatch: <
|
|
2646
|
+
export declare const useApiFetchListBatch: <T>(params: UseApiFetchListBatchParams) => UseApiFetchListBatchReturnType<T>;
|
|
2227
2647
|
|
|
2228
|
-
declare type UseApiFetchListBatchParams = {
|
|
2648
|
+
export declare type UseApiFetchListBatchParams = {
|
|
2229
2649
|
client: AxiosClientFn;
|
|
2230
2650
|
system: string;
|
|
2231
2651
|
entity: string;
|
|
2232
2652
|
urlTemplate?: string;
|
|
2233
2653
|
urlParams?: UrlParams;
|
|
2234
|
-
|
|
2235
|
-
|
|
2654
|
+
/** Anything axios takes except what this helper decides: the method, the url, the body and the signal. */
|
|
2655
|
+
options?: Omit<AxiosRequestConfig, 'method' | 'url' | 'data' | 'signal'>;
|
|
2656
|
+
cancelPrevious?: boolean;
|
|
2236
2657
|
};
|
|
2237
2658
|
|
|
2238
|
-
declare type UseApiFetchListBatchReturnType<
|
|
2239
|
-
|
|
2240
|
-
|
|
2659
|
+
export declare type UseApiFetchListBatchReturnType<T> = {
|
|
2660
|
+
execute: (filterData: FilterData<any>, filterConfig: FilterConfig<any>, params?: FetchListBatchParams) => Promise<T[]>;
|
|
2661
|
+
abort: () => void;
|
|
2662
|
+
/**
|
|
2663
|
+
* True while this instance has a request in flight, false once the last one settles.
|
|
2664
|
+
*
|
|
2665
|
+
* It is here so a caller does not have to keep its own: the hand-rolled version is a ref cleared
|
|
2666
|
+
* in a `finally`, and that `finally` belongs to whichever call ended -- including one that
|
|
2667
|
+
* `cancelPrevious` just superseded, which turns the spinner off while the call the user is waiting
|
|
2668
|
+
* for is still running. This one never dips between a superseded call and the one that replaced it.
|
|
2669
|
+
*/
|
|
2670
|
+
loading: Ref<boolean>;
|
|
2241
2671
|
};
|
|
2242
2672
|
|
|
2243
|
-
declare type UseApiFetchListParams = {
|
|
2673
|
+
export declare type UseApiFetchListParams = {
|
|
2244
2674
|
client: AxiosClientFn;
|
|
2245
2675
|
system: string;
|
|
2246
2676
|
entity: string;
|
|
2247
2677
|
urlTemplate?: string;
|
|
2248
2678
|
urlParams?: UrlParams;
|
|
2249
|
-
|
|
2250
|
-
|
|
2679
|
+
/** Anything axios takes except what this helper decides: the method, the url, the body and the signal. */
|
|
2680
|
+
options?: Omit<AxiosRequestConfig, 'method' | 'url' | 'data' | 'signal'>;
|
|
2681
|
+
cancelPrevious?: boolean;
|
|
2251
2682
|
};
|
|
2252
2683
|
|
|
2253
|
-
declare type UseApiFetchListReturnType<
|
|
2254
|
-
|
|
2255
|
-
|
|
2684
|
+
export declare type UseApiFetchListReturnType<T> = {
|
|
2685
|
+
execute: (pagination: Ref<Pagination>, filterData: FilterData<any>, filterConfig: FilterConfig<any>, params?: FetchListParams) => Promise<T[]>;
|
|
2686
|
+
abort: () => void;
|
|
2687
|
+
/**
|
|
2688
|
+
* True while this instance has a request in flight, false once the last one settles.
|
|
2689
|
+
*
|
|
2690
|
+
* It is here so a caller does not have to keep its own: the hand-rolled version is a ref cleared
|
|
2691
|
+
* in a `finally`, and that `finally` belongs to whichever call ended -- including one that
|
|
2692
|
+
* `cancelPrevious` just superseded, which turns the spinner off while the call the user is waiting
|
|
2693
|
+
* for is still running. This one never dips between a superseded call and the one that replaced it.
|
|
2694
|
+
*/
|
|
2695
|
+
loading: Ref<boolean>;
|
|
2256
2696
|
};
|
|
2257
2697
|
|
|
2258
2698
|
/**
|
|
@@ -2273,17 +2713,54 @@ export declare function useApiQueryBuilder(): {
|
|
|
2273
2713
|
q: Ref<string[], string[]>;
|
|
2274
2714
|
};
|
|
2275
2715
|
|
|
2276
|
-
|
|
2716
|
+
/**
|
|
2717
|
+
* A request to an endpoint that always answers with a body.
|
|
2718
|
+
*
|
|
2719
|
+
* A response without one is the endpoint breaking its own contract, not an empty answer, so it fails
|
|
2720
|
+
* like any other error rather than handing back a value the declared type does not admit. An
|
|
2721
|
+
* endpoint that answers nothing is `useApiCommand`; one that may answer either is `optionalBody`.
|
|
2722
|
+
*
|
|
2723
|
+
* `R` excludes `null`, `undefined` and `void` on purpose: those are ways of saying "no body", and a
|
|
2724
|
+
* caller saying that has chosen the wrong helper. It is also what makes the migration visible --
|
|
2725
|
+
* every `useApiRequest<void, …>` in the fleet stops compiling and names itself.
|
|
2726
|
+
*/
|
|
2727
|
+
export declare function useApiRequest<R extends NonNullable<unknown>, B = never>(params: UseApiRequestParams & {
|
|
2728
|
+
optionalBody?: false;
|
|
2729
|
+
}): UseApiRequestReturnType<R, B>;
|
|
2730
|
+
|
|
2731
|
+
/**
|
|
2732
|
+
* The same, for an endpoint where a body is optional and its absence is a legitimate answer. The
|
|
2733
|
+
* caller narrows, which is the point -- use it only where the endpoint really is documented that way.
|
|
2734
|
+
*/
|
|
2735
|
+
export declare function useApiRequest<R extends NonNullable<unknown>, B = never>(params: UseApiRequestParams & {
|
|
2736
|
+
optionalBody: true;
|
|
2737
|
+
}): UseApiRequestReturnType<R | undefined, B>;
|
|
2277
2738
|
|
|
2278
|
-
declare type UseApiRequestParams = {
|
|
2739
|
+
export declare type UseApiRequestParams = {
|
|
2279
2740
|
client: AxiosClientFn;
|
|
2280
2741
|
method: Method;
|
|
2281
2742
|
system: string;
|
|
2282
2743
|
entity: string;
|
|
2283
2744
|
urlTemplate?: string;
|
|
2284
2745
|
urlParams?: UrlParams;
|
|
2285
|
-
|
|
2286
|
-
|
|
2746
|
+
/** Anything axios takes except what this helper decides: the method, the url, the body and the signal. */
|
|
2747
|
+
options?: Omit<AxiosRequestConfig, 'method' | 'url' | 'data' | 'signal'>;
|
|
2748
|
+
/** Each call supersedes the one before it -- the autocomplete shape. */
|
|
2749
|
+
cancelPrevious?: boolean;
|
|
2750
|
+
};
|
|
2751
|
+
|
|
2752
|
+
export declare type UseApiRequestReturnType<R, B> = {
|
|
2753
|
+
execute: (params?: ExecuteRequestParams<B>) => Promise<R>;
|
|
2754
|
+
abort: () => void;
|
|
2755
|
+
/**
|
|
2756
|
+
* True while this instance has a request in flight, false once the last one settles.
|
|
2757
|
+
*
|
|
2758
|
+
* It is here so a caller does not have to keep its own: the hand-rolled version is a ref cleared
|
|
2759
|
+
* in a `finally`, and that `finally` belongs to whichever call ended -- including one that
|
|
2760
|
+
* `cancelPrevious` just superseded, which turns the spinner off while the call the user is waiting
|
|
2761
|
+
* for is still running. This one never dips between a superseded call and the one that replaced it.
|
|
2762
|
+
*/
|
|
2763
|
+
loading: Ref<boolean>;
|
|
2287
2764
|
};
|
|
2288
2765
|
|
|
2289
2766
|
declare type UseCachedType = () => {
|
|
@@ -2292,6 +2769,15 @@ declare type UseCachedType = () => {
|
|
|
2292
2769
|
addManualMinimal: any;
|
|
2293
2770
|
};
|
|
2294
2771
|
|
|
2772
|
+
export declare const useFetchLog: ({ client, system, logPaths, type }: LogApiParams) => UseApiRequestReturnType<Log, null>;
|
|
2773
|
+
|
|
2774
|
+
/**
|
|
2775
|
+
* The backend and the endpoint both come from the caller, so these cannot be hoisted the way an
|
|
2776
|
+
* entity fetcher is -- every mount builds its own, which is also what gives each one its own
|
|
2777
|
+
* abort controller set.
|
|
2778
|
+
*/
|
|
2779
|
+
export declare const useFetchLogList: ({ client, system, logPaths, type }: LogApiParams) => UseApiFetchListReturnType<Log>;
|
|
2780
|
+
|
|
2295
2781
|
export declare function useFilterHelpers<F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[]>(filterData: FilterData<F>, filterConfig: FilterConfig<F>, moreOptions?: Partial<FilterHelpersMoreOptions>): {
|
|
2296
2782
|
loadStoredFilters: (pagination: Ref<Pagination>, callback?: AnyFn) => boolean;
|
|
2297
2783
|
resetFilter: (pagination: Ref<Pagination>, callback?: AnyFn) => void;
|
|
@@ -2323,10 +2809,10 @@ export declare function useFilterHelpers<F extends readonly MakeFilterOption<str
|
|
|
2323
2809
|
export declare function useGuardedDelete<A extends unknown[], R>(guard: Pick<UseUnsavedChangesGuardApi, 'acknowledge' | 'unacknowledge'>, onDelete: (...args: A) => R): (...args: A) => R | Promise<Awaited<R>>;
|
|
2324
2810
|
|
|
2325
2811
|
export declare function useJobApi<JobType extends JobBase = JobBase>(client: () => AxiosInstance, system: string): {
|
|
2326
|
-
useFetchJobList: () => UseApiFetchListReturnType<JobType
|
|
2812
|
+
useFetchJobList: () => UseApiFetchListReturnType<JobType>;
|
|
2327
2813
|
fetchJob: (id: number) => Promise<JobType>;
|
|
2328
2814
|
createJob: (data: JobType) => Promise<JobType>;
|
|
2329
|
-
deleteJob: (id: number) => Promise<
|
|
2815
|
+
deleteJob: (id: number) => Promise<void>;
|
|
2330
2816
|
};
|
|
2331
2817
|
|
|
2332
2818
|
/**
|
|
@@ -2398,6 +2884,147 @@ export declare interface UseListEditorOptions {
|
|
|
2398
2884
|
*/
|
|
2399
2885
|
export declare function useListEditorStateEntry<TItem extends Record<string, any>>(stateKey: string | undefined, bindings: ListEditorStateBindings<TItem>): ListEditorStateEntry<ListEditorHandle<TItem>> | null;
|
|
2400
2886
|
|
|
2887
|
+
export declare function useLogDetailActions(params: LogActionsParams): {
|
|
2888
|
+
log: Ref<{
|
|
2889
|
+
id: string;
|
|
2890
|
+
message: string;
|
|
2891
|
+
datetime: DatetimeUTC;
|
|
2892
|
+
levelName: LogLevelType;
|
|
2893
|
+
context: {
|
|
2894
|
+
appVersion: string;
|
|
2895
|
+
appSystem: string;
|
|
2896
|
+
requestOriginAppVersion: string;
|
|
2897
|
+
path: string;
|
|
2898
|
+
method: string;
|
|
2899
|
+
contextId: string;
|
|
2900
|
+
userId: IntegerIdNullable;
|
|
2901
|
+
resourceName: string;
|
|
2902
|
+
resourceIds: string[];
|
|
2903
|
+
ip: string;
|
|
2904
|
+
response: string;
|
|
2905
|
+
content?: string | undefined;
|
|
2906
|
+
params: string;
|
|
2907
|
+
httpStatus: number;
|
|
2908
|
+
};
|
|
2909
|
+
_resourceName: string;
|
|
2910
|
+
_system: string;
|
|
2911
|
+
_type: string;
|
|
2912
|
+
} | null, Log | {
|
|
2913
|
+
id: string;
|
|
2914
|
+
message: string;
|
|
2915
|
+
datetime: DatetimeUTC;
|
|
2916
|
+
levelName: LogLevelType;
|
|
2917
|
+
context: {
|
|
2918
|
+
appVersion: string;
|
|
2919
|
+
appSystem: string;
|
|
2920
|
+
requestOriginAppVersion: string;
|
|
2921
|
+
path: string;
|
|
2922
|
+
method: string;
|
|
2923
|
+
contextId: string;
|
|
2924
|
+
userId: IntegerIdNullable;
|
|
2925
|
+
resourceName: string;
|
|
2926
|
+
resourceIds: string[];
|
|
2927
|
+
ip: string;
|
|
2928
|
+
response: string;
|
|
2929
|
+
content?: string | undefined;
|
|
2930
|
+
params: string;
|
|
2931
|
+
httpStatus: number;
|
|
2932
|
+
};
|
|
2933
|
+
_resourceName: string;
|
|
2934
|
+
_system: string;
|
|
2935
|
+
_type: string;
|
|
2936
|
+
} | null>;
|
|
2937
|
+
detailLoading: Ref<boolean, boolean>;
|
|
2938
|
+
fetchData: (id: string) => Promise<void>;
|
|
2939
|
+
cancel: () => void;
|
|
2940
|
+
};
|
|
2941
|
+
|
|
2942
|
+
export declare function useLogFilter(system: string, window: LogTimeWindow | undefined): LogFilter;
|
|
2943
|
+
|
|
2944
|
+
/**
|
|
2945
|
+
* Everything here is per instance, unlike the module-level refs the admins used to keep: the
|
|
2946
|
+
* views are remounted on every system/type change, and a `finally` belonging to the instance
|
|
2947
|
+
* that just went away would otherwise clear the new one's loading flag.
|
|
2948
|
+
*/
|
|
2949
|
+
export declare function useLogListActions(params: LogActionsParams): {
|
|
2950
|
+
listItems: Ref<{
|
|
2951
|
+
id: string;
|
|
2952
|
+
message: string;
|
|
2953
|
+
datetime: DatetimeUTC;
|
|
2954
|
+
levelName: LogLevelType;
|
|
2955
|
+
context: {
|
|
2956
|
+
appVersion: string;
|
|
2957
|
+
appSystem: string;
|
|
2958
|
+
requestOriginAppVersion: string;
|
|
2959
|
+
path: string;
|
|
2960
|
+
method: string;
|
|
2961
|
+
contextId: string;
|
|
2962
|
+
userId: IntegerIdNullable;
|
|
2963
|
+
resourceName: string;
|
|
2964
|
+
resourceIds: string[];
|
|
2965
|
+
ip: string;
|
|
2966
|
+
response: string;
|
|
2967
|
+
content?: string | undefined;
|
|
2968
|
+
params: string;
|
|
2969
|
+
httpStatus: number;
|
|
2970
|
+
};
|
|
2971
|
+
_resourceName: string;
|
|
2972
|
+
_system: string;
|
|
2973
|
+
_type: string;
|
|
2974
|
+
}[], Log[] | {
|
|
2975
|
+
id: string;
|
|
2976
|
+
message: string;
|
|
2977
|
+
datetime: DatetimeUTC;
|
|
2978
|
+
levelName: LogLevelType;
|
|
2979
|
+
context: {
|
|
2980
|
+
appVersion: string;
|
|
2981
|
+
appSystem: string;
|
|
2982
|
+
requestOriginAppVersion: string;
|
|
2983
|
+
path: string;
|
|
2984
|
+
method: string;
|
|
2985
|
+
contextId: string;
|
|
2986
|
+
userId: IntegerIdNullable;
|
|
2987
|
+
resourceName: string;
|
|
2988
|
+
resourceIds: string[];
|
|
2989
|
+
ip: string;
|
|
2990
|
+
response: string;
|
|
2991
|
+
content?: string | undefined;
|
|
2992
|
+
params: string;
|
|
2993
|
+
httpStatus: number;
|
|
2994
|
+
};
|
|
2995
|
+
_resourceName: string;
|
|
2996
|
+
_system: string;
|
|
2997
|
+
_type: string;
|
|
2998
|
+
}[]>;
|
|
2999
|
+
listLoading: Ref<boolean, boolean>;
|
|
3000
|
+
datatableHiddenColumns: Ref<string[], string[]>;
|
|
3001
|
+
fetchList: (pagination: Ref<Pagination>, filterData: FilterData<any>, filterConfig: FilterConfig<any>) => Promise<void>;
|
|
3002
|
+
cancel: () => void;
|
|
3003
|
+
};
|
|
3004
|
+
|
|
3005
|
+
export declare function useLogType(): {
|
|
3006
|
+
logTypeOptions: Ref<{
|
|
3007
|
+
value: LogTypeType;
|
|
3008
|
+
title: string;
|
|
3009
|
+
color?: string | undefined;
|
|
3010
|
+
active?: false | undefined;
|
|
3011
|
+
subtitle?: string | undefined;
|
|
3012
|
+
}[], ValueObjectOption<LogTypeType>[] | {
|
|
3013
|
+
value: LogTypeType;
|
|
3014
|
+
title: string;
|
|
3015
|
+
color?: string | undefined;
|
|
3016
|
+
active?: false | undefined;
|
|
3017
|
+
subtitle?: string | undefined;
|
|
3018
|
+
}[]>;
|
|
3019
|
+
getLogTypeOption: (value: LogTypeType) => {
|
|
3020
|
+
value: LogTypeType;
|
|
3021
|
+
title: string;
|
|
3022
|
+
color?: string | undefined;
|
|
3023
|
+
active?: false | undefined;
|
|
3024
|
+
subtitle?: string | undefined;
|
|
3025
|
+
} | undefined;
|
|
3026
|
+
};
|
|
3027
|
+
|
|
2401
3028
|
/**
|
|
2402
3029
|
* Nested list editor core. Pure data behavior shared by ANestedSortableListEditor.
|
|
2403
3030
|
* Works on a tree of `{ data, children, meta }` nodes — shape-compatible with the
|
|
@@ -2553,7 +3180,7 @@ export declare const UserAdminConfigTypeDefault: "pinnedWidgets";
|
|
|
2553
3180
|
|
|
2554
3181
|
export declare type UserAdminConfigTypeType = (typeof UserAdminConfigType)[keyof typeof UserAdminConfigType];
|
|
2555
3182
|
|
|
2556
|
-
export declare function useSubjectSelect<TItem>(datatableConfig: any, datatableHiddenColumns: any, system: string, subject: string,
|
|
3183
|
+
export declare function useSubjectSelect<TItem>(datatableConfig: any, datatableHiddenColumns: any, system: string, subject: string, execute: (pagination: Ref<Pagination>, filterData: FilterData<any>, filterConfig: FilterConfig<any>, params?: FetchListParams) => Promise<TItem[]>, filterData: FilterData<any>, filterConfig: FilterConfig<any>, filterSortBy?: DatatableSortBy | null, fetchParams?: FetchListParams | undefined, enableActions?: boolean): {
|
|
2557
3184
|
items: Ref<TItem[], TItem[]>;
|
|
2558
3185
|
selected: Ref<TItem[], TItem[]>;
|
|
2559
3186
|
pagination: Ref<Pagination, Pagination>;
|
|
@@ -2667,11 +3294,11 @@ declare interface UseUnsavedChangesGuardOptions {
|
|
|
2667
3294
|
export declare function useUnsavedSection(source: UnsavedSectionSource): void;
|
|
2668
3295
|
|
|
2669
3296
|
export declare function useUserAdminConfigApi(client: () => AxiosInstance, system: string, entity?: string, endPoint?: string): {
|
|
2670
|
-
useFetchUserAdminConfigList: () => UseApiFetchListReturnType<UserAdminConfig< UserAdminConfigDataFilterBookmark | UserAdminConfigDataPinnedWidgets<string
|
|
3297
|
+
useFetchUserAdminConfigList: () => UseApiFetchListReturnType<UserAdminConfig< UserAdminConfigDataFilterBookmark | UserAdminConfigDataPinnedWidgets<string>>>;
|
|
2671
3298
|
fetchUserAdminConfig: (id: IntegerId) => Promise<UserAdminConfig< UserAdminConfigDataFilterBookmark | UserAdminConfigDataPinnedWidgets<string>>>;
|
|
2672
3299
|
createUserAdminConfig: (data: UserAdminConfig) => Promise<UserAdminConfig< UserAdminConfigDataFilterBookmark | UserAdminConfigDataPinnedWidgets<string>>>;
|
|
2673
3300
|
updateUserAdminConfig: (id: IntegerId, data: UserAdminConfig) => Promise<UserAdminConfig< UserAdminConfigDataFilterBookmark | UserAdminConfigDataPinnedWidgets<string>>>;
|
|
2674
|
-
deleteUserAdminConfig: (id: IntegerId) => Promise<
|
|
3301
|
+
deleteUserAdminConfig: (id: IntegerId) => Promise<void>;
|
|
2675
3302
|
updateUserAdminConfigPositions: (ids: IntegerId[]) => Promise<{
|
|
2676
3303
|
userAdminConfigs: IntegerId[];
|
|
2677
3304
|
}>;
|
|
@@ -2699,20 +3326,10 @@ declare interface ViewBodySlotProps<TItem extends Record<string, any>> {
|
|
|
2699
3326
|
|
|
2700
3327
|
export { }
|
|
2701
3328
|
|
|
2702
|
-
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
|
|
2706
|
-
captureMessage(message: string, context?: Record<string, any>): void;
|
|
2707
|
-
setTag(key: string, value: string): void;
|
|
2708
|
-
setUser(user: {
|
|
2709
|
-
id: string;
|
|
2710
|
-
email?: string;
|
|
2711
|
-
username?: string;
|
|
2712
|
-
}): void;
|
|
2713
|
-
[key: string]: any;
|
|
2714
|
-
};
|
|
2715
|
-
}
|
|
3329
|
+
|
|
3330
|
+
|
|
3331
|
+
declare module 'vue-i18n' {
|
|
3332
|
+
export interface DefineLocaleMessage extends MessageSchema {}
|
|
2716
3333
|
}
|
|
2717
3334
|
|
|
2718
3335
|
|