@enonic-types/core 7.14.4 → 7.15.0-A2
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/index.d.ts +475 -6
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -5,9 +5,11 @@ export interface NestedRecord {
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
declare global {
|
|
8
|
+
interface XpBeans {}
|
|
8
9
|
interface XpLayoutMap {
|
|
9
10
|
[layoutDescriptor: ComponentDescriptor]: NestedRecord;
|
|
10
11
|
}
|
|
12
|
+
interface XpLibraries {}
|
|
11
13
|
interface XpPageMap {
|
|
12
14
|
[pageDescriptor: ComponentDescriptor]: NestedRecord;
|
|
13
15
|
}
|
|
@@ -19,6 +21,462 @@ declare global {
|
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
|
|
24
|
+
export interface App {
|
|
25
|
+
/**
|
|
26
|
+
* The name of the application.
|
|
27
|
+
*
|
|
28
|
+
* @type string
|
|
29
|
+
*/
|
|
30
|
+
name: string;
|
|
31
|
+
/**
|
|
32
|
+
* Version of the application.
|
|
33
|
+
*
|
|
34
|
+
* @type string
|
|
35
|
+
*/
|
|
36
|
+
version: string;
|
|
37
|
+
/**
|
|
38
|
+
* Values from the application’s configuration file.
|
|
39
|
+
* This can be set using $XP_HOME/config/<app.name>.cfg.
|
|
40
|
+
* Every time the configuration is changed the app is restarted.
|
|
41
|
+
*
|
|
42
|
+
* @type Object
|
|
43
|
+
*/
|
|
44
|
+
config: Record<string, string | undefined>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface DoubleUnderscore {
|
|
48
|
+
/**
|
|
49
|
+
* Creates a new JavaScript bean that wraps the given Java class and makes its methods available to be called from JavaScript.
|
|
50
|
+
*/
|
|
51
|
+
newBean: NewBean;
|
|
52
|
+
/**
|
|
53
|
+
* Converts arrays or complex Java objects to JSON.
|
|
54
|
+
* @param value Value to convert
|
|
55
|
+
*/
|
|
56
|
+
toNativeObject: <T = unknown>(value: T) => T;
|
|
57
|
+
/**
|
|
58
|
+
* Converts JSON to a Java Map structure that can be used as parameters to a Java method on a bean created with newBean.
|
|
59
|
+
* @param value Value to convert
|
|
60
|
+
*/
|
|
61
|
+
toScriptValue: <T = object>(value: T) => ScriptValue;
|
|
62
|
+
/**
|
|
63
|
+
* Add a disposer that is called when the app is stopped.
|
|
64
|
+
* @param callback Function to call
|
|
65
|
+
*/
|
|
66
|
+
disposer: (callback: (...args: unknown[]) => unknown) => void;
|
|
67
|
+
/**
|
|
68
|
+
* Converts a JavaScript variable that is undefined to a Java <code>null</code> object.
|
|
69
|
+
* If the JavaScript variable is defined, it is returned as is.
|
|
70
|
+
* @param value Value to convert
|
|
71
|
+
*/
|
|
72
|
+
nullOrValue: <T = object>(value: T) => T | null | undefined;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Doc registerMock.
|
|
76
|
+
*
|
|
77
|
+
* @param name Name of mock.
|
|
78
|
+
* @param value Value to register.
|
|
79
|
+
*/
|
|
80
|
+
registerMock: (name: string, value: object) => void
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface Log {
|
|
84
|
+
/**
|
|
85
|
+
* Log debug message.
|
|
86
|
+
*
|
|
87
|
+
* @param {Array} args... logging arguments.
|
|
88
|
+
*/
|
|
89
|
+
debug: (...args: unknown[]) => void;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Log info message.
|
|
93
|
+
*
|
|
94
|
+
* @param {Array} args... logging arguments.
|
|
95
|
+
*/
|
|
96
|
+
info: (...args: unknown[]) => void;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Log warning message.
|
|
100
|
+
*
|
|
101
|
+
* @param {Array} args... logging arguments.
|
|
102
|
+
*/
|
|
103
|
+
warning: (...args: unknown[]) => void;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Log error message.
|
|
107
|
+
*
|
|
108
|
+
* @param {Array} args... logging arguments.
|
|
109
|
+
*/
|
|
110
|
+
error: (...args: unknown[]) => void;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export type NewBean = <T = unknown, Bean extends keyof XpBeans | string = string>(bean: Bean) =>
|
|
114
|
+
Bean extends keyof XpBeans ? XpBeans[Bean] : T;
|
|
115
|
+
|
|
116
|
+
export type Resolve = (path: string) => ResourceKey;
|
|
117
|
+
|
|
118
|
+
export interface ScriptValue {
|
|
119
|
+
isArray(): boolean;
|
|
120
|
+
|
|
121
|
+
isObject(): boolean;
|
|
122
|
+
|
|
123
|
+
isValue(): boolean;
|
|
124
|
+
|
|
125
|
+
isFunction(): boolean;
|
|
126
|
+
|
|
127
|
+
getValue(): unknown;
|
|
128
|
+
|
|
129
|
+
getKeys(): string[];
|
|
130
|
+
|
|
131
|
+
hasMember(key: string): boolean;
|
|
132
|
+
|
|
133
|
+
getMember(key: string): ScriptValue;
|
|
134
|
+
|
|
135
|
+
getArray(): ScriptValue[];
|
|
136
|
+
|
|
137
|
+
getMap(): Record<string, unknown>;
|
|
138
|
+
|
|
139
|
+
getList(): object[];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export type XpRequire = <Key extends keyof XpLibraries | string = string>(path: Key) =>
|
|
143
|
+
Key extends keyof XpLibraries ? XpLibraries[Key] : unknown;
|
|
144
|
+
|
|
145
|
+
export type LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);
|
|
146
|
+
|
|
147
|
+
export type Merge<
|
|
148
|
+
A,
|
|
149
|
+
B = Record<string, never>
|
|
150
|
+
> = B extends Record<string, never>
|
|
151
|
+
? A
|
|
152
|
+
: Pick<A, Exclude<keyof A, keyof B>> & B;
|
|
153
|
+
|
|
154
|
+
export interface ComplexCookie {
|
|
155
|
+
/**
|
|
156
|
+
* The value of the cookie (optional).
|
|
157
|
+
*
|
|
158
|
+
* @type string
|
|
159
|
+
*/
|
|
160
|
+
value: string;
|
|
161
|
+
/**
|
|
162
|
+
* A comment (rfc2109) to document the cookie (optional).
|
|
163
|
+
*
|
|
164
|
+
* @type string
|
|
165
|
+
*/
|
|
166
|
+
comment?: string;
|
|
167
|
+
/**
|
|
168
|
+
* The expiration date and time for the cookie (optional).
|
|
169
|
+
*
|
|
170
|
+
* @type string
|
|
171
|
+
*/
|
|
172
|
+
expires?: Date;
|
|
173
|
+
/**
|
|
174
|
+
* The domain name for which the cookie is set.
|
|
175
|
+
*
|
|
176
|
+
* @type string
|
|
177
|
+
*/
|
|
178
|
+
domain?: string;
|
|
179
|
+
/**
|
|
180
|
+
* Indicates whether the cookie should not be accessible via JavaScript (optional).
|
|
181
|
+
*
|
|
182
|
+
* @type string
|
|
183
|
+
*/
|
|
184
|
+
httpOnly?: boolean;
|
|
185
|
+
/**
|
|
186
|
+
* The maximum age of the cookie in seconds (optional).
|
|
187
|
+
*
|
|
188
|
+
* @type string
|
|
189
|
+
*/
|
|
190
|
+
maxAge?: number;
|
|
191
|
+
/**
|
|
192
|
+
* The path on the server where the cookie should be available.
|
|
193
|
+
*
|
|
194
|
+
* @type string
|
|
195
|
+
*/
|
|
196
|
+
path?: string;
|
|
197
|
+
/**
|
|
198
|
+
* Specifies the SameSite attribute (draft RFC) for the cookie (optional).
|
|
199
|
+
*
|
|
200
|
+
* @type string
|
|
201
|
+
*/
|
|
202
|
+
sameSite?: LiteralUnion<'lax' | 'strict' | 'none'>;
|
|
203
|
+
/**
|
|
204
|
+
* Indicates whether the cookie should only be sent over HTTPS (optional).
|
|
205
|
+
*
|
|
206
|
+
* @type string
|
|
207
|
+
*/
|
|
208
|
+
secure?: boolean;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export type RequestBranch = 'draft' | 'master';
|
|
212
|
+
export type RequestGetHeaderFunction = (headerName: string) => string | null;
|
|
213
|
+
export type RequestMethod = 'GET' | 'POST' | ' HEAD' | 'OPTIONS' | ' PUT' | 'DELETE' | 'PATCH' | 'TRACE' | 'CONNECT';
|
|
214
|
+
export type RequestMode = 'edit' | 'inline' | 'live' | 'preview' | 'admin';
|
|
215
|
+
export type RequestParams = Record<string, string | string[]>;
|
|
216
|
+
export type RequestScheme = 'http' | 'https';
|
|
217
|
+
|
|
218
|
+
export type RequestCookies = Record<string, string | undefined>;
|
|
219
|
+
export type ResponseCookies = Record<string, string | ComplexCookie | undefined>;
|
|
220
|
+
|
|
221
|
+
export type RequestHeaders = Record<string, string | undefined>;
|
|
222
|
+
export type ResponseHeaders = Record<string, string | number | (string | number)[] | undefined>;
|
|
223
|
+
|
|
224
|
+
export interface DefaultRequestCookies extends RequestCookies {
|
|
225
|
+
JSESSIONID?: string;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export type SecFetchDest = 'audio' | 'audioworklet' | 'document' | 'embed' | 'empty' | 'fencedframe' | 'font' | 'frame' | 'iframe' | 'image' | 'manifest' | 'object' | 'paintworklet' | 'report' | 'script' | 'serviceworker' | 'sharedworker' | 'style' | 'track' | 'video' | 'webidentity' | 'worker' | 'xslt';
|
|
229
|
+
export type SecFetchMode = 'cors'| 'navigate' | 'no-cors' | 'same-origin' | 'websocket';
|
|
230
|
+
export type SecFetchSite = 'cross-site' | 'same-origin' | 'same-site' | 'none';
|
|
231
|
+
|
|
232
|
+
export interface DefaultRequestHeaders extends RequestHeaders {
|
|
233
|
+
Accept?: string;
|
|
234
|
+
'Accept-Charset'?: string;
|
|
235
|
+
'Accept-Encoding'?: string;
|
|
236
|
+
'Accept-Language'?: string;
|
|
237
|
+
Authorization?: string;
|
|
238
|
+
'Cache-Control'?: string;
|
|
239
|
+
Connection?: string;
|
|
240
|
+
'Content-Length'?: string;
|
|
241
|
+
'Content-Type'?: string;
|
|
242
|
+
Cookie?: string;
|
|
243
|
+
Host?: string;
|
|
244
|
+
'If-None-Match'?: string;
|
|
245
|
+
Priority?: string;
|
|
246
|
+
Referer?: string;
|
|
247
|
+
'Sec-Fetch-Dest'?: LiteralUnion<SecFetchDest>;
|
|
248
|
+
'Sec-Fetch-Mode'?: LiteralUnion<SecFetchMode>;
|
|
249
|
+
'Sec-Fetch-Site'?: LiteralUnion<SecFetchSite>
|
|
250
|
+
'Sec-Fetch-User'?: '?1';
|
|
251
|
+
'Upgrade-Insecure-Requests'?: '1';
|
|
252
|
+
'User-Agent'?: string;
|
|
253
|
+
'X-Forwarded-For'?: string;
|
|
254
|
+
'X-Forwarded-Host'?: string;
|
|
255
|
+
'X-Forwarded-Proto'?: LiteralUnion<RequestScheme>;
|
|
256
|
+
'X-Forwarded-Server'?: string;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export interface RequestConstructorParams {
|
|
260
|
+
body?: string;
|
|
261
|
+
branch?: LiteralUnion<RequestBranch>;
|
|
262
|
+
contentType?: string;
|
|
263
|
+
contextPath?: string;
|
|
264
|
+
cookies: RequestCookies;
|
|
265
|
+
headers: RequestHeaders;
|
|
266
|
+
host: string;
|
|
267
|
+
method: LiteralUnion<RequestMethod>;
|
|
268
|
+
mode: LiteralUnion<RequestMode>;
|
|
269
|
+
params: RequestParams;
|
|
270
|
+
path: string;
|
|
271
|
+
port: number;
|
|
272
|
+
rawPath: string;
|
|
273
|
+
remoteAddress: string;
|
|
274
|
+
repositoryId?: string;
|
|
275
|
+
scheme: LiteralUnion<RequestScheme>;
|
|
276
|
+
url: string;
|
|
277
|
+
validTicket?: boolean;
|
|
278
|
+
webSocket: boolean;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export interface RequestInterface extends RequestConstructorParams {
|
|
282
|
+
getHeader: RequestGetHeaderFunction;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export interface DefaultRequest extends RequestInterface {
|
|
286
|
+
cookies: DefaultRequestCookies;
|
|
287
|
+
headers: DefaultRequestHeaders;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export type Request<
|
|
291
|
+
T extends Partial<RequestInterface> = Record<string, never>
|
|
292
|
+
> = Merge<DefaultRequest, T>;
|
|
293
|
+
|
|
294
|
+
export type SerializableRequest<T extends RequestInterface = DefaultRequest> = Omit<
|
|
295
|
+
Partial<T>,
|
|
296
|
+
'body' | 'contextPath' | 'rawPath' | 'repositoryId' | 'webSocket'
|
|
297
|
+
> & {
|
|
298
|
+
body?: unknown[] | Record<string, unknown> | boolean | number | string | null;
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
export interface DefaultResponseHeaders extends ResponseHeaders {
|
|
302
|
+
'Cache-Control'?: string;
|
|
303
|
+
'Content-Encoding'?: string;
|
|
304
|
+
'Content-Type'?: string;
|
|
305
|
+
'Content-Security-Policy'?: string;
|
|
306
|
+
'Date'?: string;
|
|
307
|
+
Etag?: string | number;
|
|
308
|
+
Location?: string;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// NOTE Even though PortalResponseSerializer allows non-array values,
|
|
312
|
+
// when it comes back from Java the PortalResponseMapper will always return an array.
|
|
313
|
+
// So perhaps it's better to enforce that, so it's consistent both ways.
|
|
314
|
+
// It also causes problems in ResponseProcessors, since they work with both from and to Java.
|
|
315
|
+
export interface PageContributions {
|
|
316
|
+
headBegin?: string[];
|
|
317
|
+
headEnd?: string[];
|
|
318
|
+
bodyBegin?: string[];
|
|
319
|
+
bodyEnd?: string[];
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export type ResponseBody = unknown[] | Record<string, unknown> | boolean | number | string | null | ByteSource;
|
|
323
|
+
|
|
324
|
+
export interface MappedResponse {
|
|
325
|
+
applyFilters: boolean;
|
|
326
|
+
body?: ResponseBody;
|
|
327
|
+
contentType: string;
|
|
328
|
+
cookies: ResponseCookies;
|
|
329
|
+
headers: ResponseHeaders;
|
|
330
|
+
pageContributions: PageContributions;
|
|
331
|
+
postProcess: boolean;
|
|
332
|
+
status: number;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
export interface ResponseInterface extends Partial<MappedResponse> {
|
|
336
|
+
redirect?: string;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
export interface DefaultResponse extends ResponseInterface {
|
|
340
|
+
contentType?: LiteralUnion<'text/html' | 'application/json'>;
|
|
341
|
+
headers?: DefaultResponseHeaders;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
export type Response<
|
|
345
|
+
T extends Partial<ResponseInterface> = Record<string, never>
|
|
346
|
+
> = Merge<DefaultResponse, T>;
|
|
347
|
+
|
|
348
|
+
export type RequestHandler<
|
|
349
|
+
RequestFromJava extends RequestInterface = DefaultRequest,
|
|
350
|
+
ResponseToJava extends ResponseInterface = DefaultResponse
|
|
351
|
+
> = (request: RequestFromJava) => ResponseToJava;
|
|
352
|
+
|
|
353
|
+
export type HttpFilterNext<
|
|
354
|
+
RequestToJava extends SerializableRequest = SerializableRequest<DefaultRequest>,
|
|
355
|
+
ResponseToJava extends ResponseInterface = DefaultResponse
|
|
356
|
+
> = (request: RequestToJava) => ResponseToJava;
|
|
357
|
+
|
|
358
|
+
export interface WebSocketSession {
|
|
359
|
+
id: string;
|
|
360
|
+
params: Record<string, string | string[]>;
|
|
361
|
+
path: string;
|
|
362
|
+
user: Omit<User,'type'>;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export type WebSocketEventType = 'open' | 'message' | 'error' | 'close';
|
|
366
|
+
|
|
367
|
+
export interface WebSocketEvent<T> {
|
|
368
|
+
data: T;
|
|
369
|
+
closeReason?: number;
|
|
370
|
+
error?: string;
|
|
371
|
+
message?: string;
|
|
372
|
+
session: WebSocketSession;
|
|
373
|
+
type: WebSocketEventType;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
type WebSocketEventHandler<T = Record<string, unknown>> = (event: WebSocketEvent<T>) => void;
|
|
377
|
+
|
|
378
|
+
export interface Controller<
|
|
379
|
+
Request extends RequestInterface = DefaultRequest,
|
|
380
|
+
Response extends ResponseInterface = DefaultResponse,
|
|
381
|
+
> {
|
|
382
|
+
all?: RequestHandler<Request, Response>;
|
|
383
|
+
connect?: RequestHandler<Request, Response>;
|
|
384
|
+
delete?: RequestHandler<Request, Response>;
|
|
385
|
+
get?: RequestHandler<Request, Response>;
|
|
386
|
+
head?: RequestHandler<Request, Response>;
|
|
387
|
+
options?: RequestHandler<Request, Response>;
|
|
388
|
+
patch?: RequestHandler<Request, Response>;
|
|
389
|
+
post?: RequestHandler<Request, Response>;
|
|
390
|
+
put?: RequestHandler<Request, Response>;
|
|
391
|
+
trace?: RequestHandler<Request, Response>;
|
|
392
|
+
webSocketEvent?: WebSocketEventHandler;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
export interface ErrorRequest<T extends RequestInterface = DefaultRequest> {
|
|
396
|
+
exception?: unknown;
|
|
397
|
+
message: string;
|
|
398
|
+
request: T;
|
|
399
|
+
status: number;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
export type ErrorRequestHandler<
|
|
403
|
+
Err extends ErrorRequest = ErrorRequest,
|
|
404
|
+
ResponseToJava extends ResponseInterface = DefaultResponse
|
|
405
|
+
> = (err: Err) => ResponseToJava;
|
|
406
|
+
|
|
407
|
+
export interface ErrorController {
|
|
408
|
+
handle400?: ErrorRequestHandler;
|
|
409
|
+
handle401?: ErrorRequestHandler;
|
|
410
|
+
handle402?: ErrorRequestHandler;
|
|
411
|
+
handle403?: ErrorRequestHandler;
|
|
412
|
+
handle404?: ErrorRequestHandler;
|
|
413
|
+
handle405?: ErrorRequestHandler;
|
|
414
|
+
handle406?: ErrorRequestHandler;
|
|
415
|
+
handle407?: ErrorRequestHandler;
|
|
416
|
+
handle408?: ErrorRequestHandler;
|
|
417
|
+
handle409?: ErrorRequestHandler;
|
|
418
|
+
handle410?: ErrorRequestHandler;
|
|
419
|
+
handle411?: ErrorRequestHandler;
|
|
420
|
+
handle412?: ErrorRequestHandler;
|
|
421
|
+
handle413?: ErrorRequestHandler;
|
|
422
|
+
handle414?: ErrorRequestHandler;
|
|
423
|
+
handle415?: ErrorRequestHandler;
|
|
424
|
+
handle416?: ErrorRequestHandler;
|
|
425
|
+
handle417?: ErrorRequestHandler;
|
|
426
|
+
handle418?: ErrorRequestHandler;
|
|
427
|
+
handle421?: ErrorRequestHandler;
|
|
428
|
+
handle422?: ErrorRequestHandler;
|
|
429
|
+
handle423?: ErrorRequestHandler;
|
|
430
|
+
handle424?: ErrorRequestHandler;
|
|
431
|
+
handle425?: ErrorRequestHandler;
|
|
432
|
+
handle426?: ErrorRequestHandler;
|
|
433
|
+
handle428?: ErrorRequestHandler;
|
|
434
|
+
handle429?: ErrorRequestHandler;
|
|
435
|
+
handle431?: ErrorRequestHandler;
|
|
436
|
+
handle451?: ErrorRequestHandler;
|
|
437
|
+
handle500?: ErrorRequestHandler;
|
|
438
|
+
handle501?: ErrorRequestHandler;
|
|
439
|
+
handle502?: ErrorRequestHandler;
|
|
440
|
+
handle503?: ErrorRequestHandler;
|
|
441
|
+
handle504?: ErrorRequestHandler;
|
|
442
|
+
handle505?: ErrorRequestHandler;
|
|
443
|
+
handle506?: ErrorRequestHandler;
|
|
444
|
+
handle507?: ErrorRequestHandler;
|
|
445
|
+
handle508?: ErrorRequestHandler;
|
|
446
|
+
handle510?: ErrorRequestHandler;
|
|
447
|
+
handle511?: ErrorRequestHandler;
|
|
448
|
+
handleError?: ErrorRequestHandler;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
export interface IdProviderController extends Controller {
|
|
452
|
+
autoLogin?: RequestHandler;
|
|
453
|
+
handle401?: RequestHandler;
|
|
454
|
+
login?: RequestHandler;
|
|
455
|
+
logout?: RequestHandler;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
export interface HttpFilterController<
|
|
459
|
+
RequestFromJava extends RequestInterface = DefaultRequest,
|
|
460
|
+
ResponseFromNext extends ResponseInterface = Response,
|
|
461
|
+
ResponseToJava extends ResponseInterface = ResponseFromNext
|
|
462
|
+
> {
|
|
463
|
+
filter: (
|
|
464
|
+
request: RequestFromJava,
|
|
465
|
+
next: HttpFilterNext<
|
|
466
|
+
SerializableRequest<RequestFromJava>,
|
|
467
|
+
ResponseFromNext
|
|
468
|
+
>
|
|
469
|
+
) => ResponseToJava;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
export interface ResponseProcessorController<
|
|
473
|
+
RequestFromJava extends RequestInterface = DefaultRequest,
|
|
474
|
+
ResponseFromJava extends MappedResponse = MappedResponse,
|
|
475
|
+
ResponseToJava extends ResponseInterface = Partial<ResponseFromJava>
|
|
476
|
+
> {
|
|
477
|
+
responseProcessor: (request: RequestFromJava, response: ResponseFromJava) => ResponseToJava;
|
|
478
|
+
}
|
|
479
|
+
|
|
22
480
|
export type UserKey = `user:${string}:${string}`;
|
|
23
481
|
export type GroupKey = `group:${string}:${string}`;
|
|
24
482
|
export type RoleKey = `role:${string}`;
|
|
@@ -110,6 +568,8 @@ type Part = PartDescriptor extends any // this lets us iterate over every member
|
|
|
110
568
|
? PartComponent<PartDescriptor, XpPartMap[PartDescriptor]>
|
|
111
569
|
: never;
|
|
112
570
|
|
|
571
|
+
// NOTE: This reflect lib-portal.getContent where page templates are resolved.
|
|
572
|
+
// WARNING: This does NOT reflect lib-content.getContent where page templates are NOT resolved!
|
|
113
573
|
export interface PageComponent<
|
|
114
574
|
Descriptor extends ComponentDescriptor = ComponentDescriptor,
|
|
115
575
|
Config extends NestedRecord =
|
|
@@ -120,12 +580,14 @@ export interface PageComponent<
|
|
|
120
580
|
Record<string, Region<(FragmentComponent | LayoutComponent | PartComponent | TextComponent)[]>> =
|
|
121
581
|
Record<string, Region<(FragmentComponent | Layout | Part | TextComponent)[]>>
|
|
122
582
|
> {
|
|
123
|
-
type: 'page'
|
|
124
|
-
descriptor: Descriptor
|
|
125
583
|
config: Config
|
|
584
|
+
descriptor: Descriptor
|
|
126
585
|
path: '/'
|
|
127
586
|
regions: Regions;
|
|
587
|
+
template?: string;
|
|
588
|
+
type: 'page'
|
|
128
589
|
}
|
|
590
|
+
|
|
129
591
|
type PageDescriptor = keyof XpPageMap;
|
|
130
592
|
type Page = PageDescriptor extends any // this lets us iterate over every member of the union
|
|
131
593
|
? PageComponent<PageDescriptor, XpPageMap[PageDescriptor]>
|
|
@@ -140,7 +602,13 @@ export interface TextComponent {
|
|
|
140
602
|
export type Component<
|
|
141
603
|
Descriptor extends ComponentDescriptor = LayoutDescriptor | PageDescriptor | PartDescriptor,
|
|
142
604
|
Config extends NestedRecord = NestedRecord,
|
|
143
|
-
Regions extends
|
|
605
|
+
Regions extends (
|
|
606
|
+
Descriptor extends LayoutDescriptor
|
|
607
|
+
? Record<string, Region<(FragmentComponent | PartComponent | TextComponent)[]>>
|
|
608
|
+
: Record<string, Region>
|
|
609
|
+
) = Descriptor extends LayoutDescriptor
|
|
610
|
+
? Record<string, Region<(FragmentComponent | PartComponent | TextComponent)[]>>
|
|
611
|
+
: Record<string, Region>,
|
|
144
612
|
> =
|
|
145
613
|
| FragmentComponent
|
|
146
614
|
| LayoutComponent<Descriptor, Config, Regions>
|
|
@@ -170,6 +638,7 @@ export type Region<
|
|
|
170
638
|
Components extends
|
|
171
639
|
(FragmentComponent | LayoutComponent | PartComponent | TextComponent)[] =
|
|
172
640
|
(FragmentComponent | Layout | Part | TextComponent)[]
|
|
641
|
+
// @ts-expect-error TODO LayoutRegion can't eat LayoutComponent nor Layout!!!
|
|
173
642
|
> = PageRegion<Components> | LayoutRegion<Components>;
|
|
174
643
|
|
|
175
644
|
export interface Content<
|
|
@@ -178,7 +647,7 @@ export interface Content<
|
|
|
178
647
|
_Component extends (
|
|
179
648
|
Type extends 'portal:fragment'
|
|
180
649
|
? LayoutComponent | PartComponent
|
|
181
|
-
: PageComponent
|
|
650
|
+
: PageComponent
|
|
182
651
|
) = (
|
|
183
652
|
Type extends 'portal:fragment'
|
|
184
653
|
? Layout | Part
|
|
@@ -356,9 +825,9 @@ export type QueryDsl = {
|
|
|
356
825
|
exists: ExistsDslExpression;
|
|
357
826
|
};
|
|
358
827
|
|
|
359
|
-
type SortDirection = 'ASC' | 'DESC';
|
|
828
|
+
export type SortDirection = 'ASC' | 'DESC';
|
|
360
829
|
|
|
361
|
-
type DistanceUnit =
|
|
830
|
+
export type DistanceUnit =
|
|
362
831
|
| 'm'
|
|
363
832
|
| 'meters'
|
|
364
833
|
| 'in'
|