@levo-so/core 0.1.59 → 0.1.60
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/index.d.ts +1763 -8
- package/dist/index.js +435 -89
- package/package.json +12 -12
- package/dist/client.d.ts +0 -82
- package/dist/constants/collection/defaultByKind.d.ts +0 -3
- package/dist/constants/collection/fieldInterfaceFormat.d.ts +0 -3
- package/dist/constants/collection/fieldInterfaces.d.ts +0 -6
- package/dist/constants/collection/fieldKind.d.ts +0 -26
- package/dist/constants/index.d.ts +0 -8
- package/dist/constants/integration.d.ts +0 -23
- package/dist/constants/media.d.ts +0 -3
- package/dist/constants/oauthProvider.d.ts +0 -3
- package/dist/control/audience.d.ts +0 -22
- package/dist/control/index.d.ts +0 -23
- package/dist/httpClient.d.ts +0 -13
- package/dist/logger/batch.d.ts +0 -9
- package/dist/logger/index.d.ts +0 -22
- package/dist/modules/blog.d.ts +0 -10
- package/dist/modules/collection.d.ts +0 -26
- package/dist/modules/media.d.ts +0 -11
- package/dist/modules/membership.d.ts +0 -21
- package/dist/types/audience.d.ts +0 -100
- package/dist/types/blog/author.d.ts +0 -30
- package/dist/types/blog/blogClient.d.ts +0 -51
- package/dist/types/blog/category.d.ts +0 -20
- package/dist/types/blog/index.d.ts +0 -64
- package/dist/types/blog/post.d.ts +0 -63
- package/dist/types/blog/tag.d.ts +0 -19
- package/dist/types/collection/collectionView.d.ts +0 -36
- package/dist/types/collection/draft.d.ts +0 -9
- package/dist/types/collection/index.d.ts +0 -7
- package/dist/types/collection/lemaCollection.d.ts +0 -95
- package/dist/types/collection/lemaField.d.ts +0 -55
- package/dist/types/collection/lemaSection.d.ts +0 -10
- package/dist/types/collection/relation.d.ts +0 -11
- package/dist/types/emoji.d.ts +0 -22
- package/dist/types/event.d.ts +0 -225
- package/dist/types/index.d.ts +0 -14
- package/dist/types/levo-query.d.ts +0 -104
- package/dist/types/location.d.ts +0 -6
- package/dist/types/media.d.ts +0 -56
- package/dist/types/membership/index.d.ts +0 -182
- package/dist/types/query.d.ts +0 -46
- package/dist/types/schema/field.d.ts +0 -56
- package/dist/types/schema/index.d.ts +0 -3
- package/dist/types/schema/schema.d.ts +0 -58
- package/dist/types/utils.d.ts +0 -8
- package/dist/types/workspace.d.ts +0 -172
- package/dist/utils/LevoError.d.ts +0 -21
- package/dist/utils/formatImagePath.d.ts +0 -3
- package/dist/utils/getLevoError.d.ts +0 -3
- package/dist/utils/getUserProperties.d.ts +0 -8
- package/dist/utils/isIncognito.d.ts +0 -9
- package/dist/utils/listToX.d.ts +0 -3
- package/dist/utils/lock.d.ts +0 -21
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,1763 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import * as wretch_addons_queryString from 'wretch/addons/queryString';
|
|
2
|
+
import * as wretch from 'wretch';
|
|
3
|
+
import * as analytics from 'analytics';
|
|
4
|
+
|
|
5
|
+
declare const MediaKindList: readonly ["image", "video", "audio", "document"];
|
|
6
|
+
declare const MediaKind: Record<"audio" | "video" | "image" | "document", "audio" | "video" | "image" | "document">;
|
|
7
|
+
|
|
8
|
+
interface IFaviconSrcset {
|
|
9
|
+
"16": string;
|
|
10
|
+
"32": string;
|
|
11
|
+
"57": string;
|
|
12
|
+
"60": string;
|
|
13
|
+
"72": string;
|
|
14
|
+
"76": string;
|
|
15
|
+
"96": string;
|
|
16
|
+
"114": string;
|
|
17
|
+
"120": string;
|
|
18
|
+
"144": string;
|
|
19
|
+
"152": string;
|
|
20
|
+
"180": string;
|
|
21
|
+
"192": string;
|
|
22
|
+
}
|
|
23
|
+
interface IMedia {
|
|
24
|
+
id: string;
|
|
25
|
+
workspace_id: string;
|
|
26
|
+
filename: string;
|
|
27
|
+
kind: (typeof MediaKindList)[number];
|
|
28
|
+
location: string;
|
|
29
|
+
path: string;
|
|
30
|
+
srcset?: {
|
|
31
|
+
"320w": string;
|
|
32
|
+
"640w": string;
|
|
33
|
+
"750w": string;
|
|
34
|
+
"828w": string;
|
|
35
|
+
"1080w": string;
|
|
36
|
+
"1200w": string;
|
|
37
|
+
"1920w": string;
|
|
38
|
+
path: string;
|
|
39
|
+
};
|
|
40
|
+
description: string;
|
|
41
|
+
metadata: {
|
|
42
|
+
encoding?: string;
|
|
43
|
+
mimetype: string;
|
|
44
|
+
size: number;
|
|
45
|
+
etag?: string;
|
|
46
|
+
};
|
|
47
|
+
created_at?: Date;
|
|
48
|
+
created_by?: string;
|
|
49
|
+
updated_at?: Date;
|
|
50
|
+
updated_by?: string;
|
|
51
|
+
}
|
|
52
|
+
type IFaviconMedia = Omit<IMedia, "srcset"> & {
|
|
53
|
+
srcset: IFaviconSrcset;
|
|
54
|
+
};
|
|
55
|
+
type IMediaObject = Pick<IMedia, "id" | "location" | "srcset" | "kind"> & {
|
|
56
|
+
mimetype?: IMedia["metadata"]["mimetype"];
|
|
57
|
+
};
|
|
58
|
+
type IFaviconMediaObject = Omit<IMediaObject, "srcset"> & {
|
|
59
|
+
srcset: IFaviconSrcset;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
type JSONContent = {
|
|
63
|
+
type?: string;
|
|
64
|
+
attrs?: Record<string, any>;
|
|
65
|
+
content?: JSONContent[];
|
|
66
|
+
marks?: {
|
|
67
|
+
type: string;
|
|
68
|
+
attrs?: Record<string, any>;
|
|
69
|
+
[key: string]: any;
|
|
70
|
+
}[];
|
|
71
|
+
text?: string;
|
|
72
|
+
[key: string]: any;
|
|
73
|
+
};
|
|
74
|
+
interface IContent {
|
|
75
|
+
json: JSONContent;
|
|
76
|
+
html: string;
|
|
77
|
+
nodes?: any[];
|
|
78
|
+
}
|
|
79
|
+
interface IPost {
|
|
80
|
+
_id: string;
|
|
81
|
+
blog: string;
|
|
82
|
+
slug: string;
|
|
83
|
+
title: string;
|
|
84
|
+
summary: string;
|
|
85
|
+
content: IContent;
|
|
86
|
+
status: string;
|
|
87
|
+
cover_image?: IMediaObject;
|
|
88
|
+
reading_time: number;
|
|
89
|
+
canonical_url: string;
|
|
90
|
+
og_image?: IMediaObject | null;
|
|
91
|
+
og_title: string;
|
|
92
|
+
og_description: string;
|
|
93
|
+
meta_title: string;
|
|
94
|
+
meta_description: string;
|
|
95
|
+
authors?: {
|
|
96
|
+
first_name: string;
|
|
97
|
+
last_name: string;
|
|
98
|
+
slug: string;
|
|
99
|
+
bio: string;
|
|
100
|
+
profile_picture: {
|
|
101
|
+
location: string;
|
|
102
|
+
};
|
|
103
|
+
}[];
|
|
104
|
+
settings: Record<string, any>;
|
|
105
|
+
in_review_at?: Date;
|
|
106
|
+
approved_at?: Date;
|
|
107
|
+
published_at?: string | null;
|
|
108
|
+
created_at: string;
|
|
109
|
+
updated_at: Date;
|
|
110
|
+
deleted_at?: Date;
|
|
111
|
+
tags?: {
|
|
112
|
+
_id: string;
|
|
113
|
+
name: string;
|
|
114
|
+
slug: string;
|
|
115
|
+
}[];
|
|
116
|
+
categories?: {
|
|
117
|
+
_id: string;
|
|
118
|
+
name: string;
|
|
119
|
+
slug: string;
|
|
120
|
+
}[];
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
interface IAuthor {
|
|
124
|
+
_id: string;
|
|
125
|
+
public_id: string;
|
|
126
|
+
slug: string;
|
|
127
|
+
first_name: string;
|
|
128
|
+
last_name: string;
|
|
129
|
+
profile_picture: any;
|
|
130
|
+
active_at: Date;
|
|
131
|
+
}
|
|
132
|
+
interface IMe {
|
|
133
|
+
_id: string;
|
|
134
|
+
public_id: string;
|
|
135
|
+
slug: string;
|
|
136
|
+
first_name: string;
|
|
137
|
+
last_name: string;
|
|
138
|
+
email: string;
|
|
139
|
+
bio: string;
|
|
140
|
+
website: string;
|
|
141
|
+
profile_picture: any;
|
|
142
|
+
og_image: any;
|
|
143
|
+
og_title: string;
|
|
144
|
+
og_description: string;
|
|
145
|
+
meta_title: string;
|
|
146
|
+
meta_description: string;
|
|
147
|
+
last_access_at: Date;
|
|
148
|
+
active_at: Date;
|
|
149
|
+
created_at: Date;
|
|
150
|
+
updated_at: Date;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
interface IBlogCategory {
|
|
154
|
+
posts: IPost[];
|
|
155
|
+
_id: string;
|
|
156
|
+
blog: string;
|
|
157
|
+
slug: string;
|
|
158
|
+
name: string;
|
|
159
|
+
description: string;
|
|
160
|
+
og_image?: IMediaObject;
|
|
161
|
+
og_title: string;
|
|
162
|
+
og_description: string;
|
|
163
|
+
meta_title: string;
|
|
164
|
+
meta_description: string;
|
|
165
|
+
created_at: Date;
|
|
166
|
+
updated_at: Date;
|
|
167
|
+
created_by: Date;
|
|
168
|
+
updated_by: Date;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
interface IBlogTag {
|
|
172
|
+
posts: IPost[];
|
|
173
|
+
_id: string;
|
|
174
|
+
blog: string;
|
|
175
|
+
slug: string;
|
|
176
|
+
name: string;
|
|
177
|
+
description: string;
|
|
178
|
+
og_image?: any;
|
|
179
|
+
og_title: string;
|
|
180
|
+
og_description: string;
|
|
181
|
+
meta_title: string;
|
|
182
|
+
meta_description: string;
|
|
183
|
+
created_at: Date;
|
|
184
|
+
updated_at: Date;
|
|
185
|
+
created_by: Date;
|
|
186
|
+
updated_by: Date;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
interface IBlog {
|
|
190
|
+
_id: string;
|
|
191
|
+
slug: string;
|
|
192
|
+
name: string;
|
|
193
|
+
status: string;
|
|
194
|
+
description: string;
|
|
195
|
+
og_image?: string;
|
|
196
|
+
og_title?: string;
|
|
197
|
+
og_description?: string;
|
|
198
|
+
meta_title?: string;
|
|
199
|
+
meta_description?: string;
|
|
200
|
+
created_at: string;
|
|
201
|
+
updated_at: string;
|
|
202
|
+
created_by: string;
|
|
203
|
+
updated_by: string;
|
|
204
|
+
}
|
|
205
|
+
declare namespace BlogClient {
|
|
206
|
+
interface CoverImage {
|
|
207
|
+
_id: string;
|
|
208
|
+
location: string;
|
|
209
|
+
mimetype: string;
|
|
210
|
+
kind: string;
|
|
211
|
+
external: boolean;
|
|
212
|
+
}
|
|
213
|
+
interface CategoriesEntity {
|
|
214
|
+
_id: string;
|
|
215
|
+
slug: string;
|
|
216
|
+
name: string;
|
|
217
|
+
}
|
|
218
|
+
interface AuthorsEntity {
|
|
219
|
+
posts?: string[] | null;
|
|
220
|
+
_id: string;
|
|
221
|
+
public_id: string;
|
|
222
|
+
slug: string;
|
|
223
|
+
first_name: string;
|
|
224
|
+
last_name: string;
|
|
225
|
+
email: string;
|
|
226
|
+
bio: string;
|
|
227
|
+
website: string;
|
|
228
|
+
profile_picture?: null | {
|
|
229
|
+
location: string;
|
|
230
|
+
};
|
|
231
|
+
og_image: string;
|
|
232
|
+
og_title: string;
|
|
233
|
+
og_description: string;
|
|
234
|
+
meta_title: string;
|
|
235
|
+
meta_description: string;
|
|
236
|
+
last_access_at: string;
|
|
237
|
+
active_at: string;
|
|
238
|
+
created_at: string;
|
|
239
|
+
updated_at: string;
|
|
240
|
+
}
|
|
241
|
+
type BlogData = IPost;
|
|
242
|
+
interface OptionParams {
|
|
243
|
+
workspace_id: string;
|
|
244
|
+
params?: Record<string, string>;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
declare const CommonFieldInterfacesList: readonly ["TextWidget", "CurrencyWidget", "TextareaWidget", "GeocoderWidget", "MultiGeocoderWidget", "DropdownWidget", "ToggleCheckboxWidget", "RadioWidget", "NumberWidget", "EmailWidget", "PhoneWidget", "URLWidget", "DateWidget", "SwitchWidget", "RichTextWidget", "DateTimeWidget", "CheckboxWidget", "ImageUploadWidget", "MultiImageUploadWidget", "FileUploadWidget", "MultiFileUploadWidget", "MultiDropdownWidget", "MultiTextWidget"];
|
|
249
|
+
declare const ComplexFieldInterfacesList: readonly ["CollectionWidget", "ArrayWidget", "RecordWidget", "JSONWidget", "SlugWidget"];
|
|
250
|
+
declare const FieldInterfacesList: readonly ["TextWidget", "CurrencyWidget", "TextareaWidget", "GeocoderWidget", "MultiGeocoderWidget", "DropdownWidget", "ToggleCheckboxWidget", "RadioWidget", "NumberWidget", "EmailWidget", "PhoneWidget", "URLWidget", "DateWidget", "SwitchWidget", "RichTextWidget", "DateTimeWidget", "CheckboxWidget", "ImageUploadWidget", "MultiImageUploadWidget", "FileUploadWidget", "MultiFileUploadWidget", "MultiDropdownWidget", "MultiTextWidget", "CollectionWidget", "ArrayWidget", "RecordWidget", "JSONWidget", "SlugWidget"];
|
|
251
|
+
declare const CommonFieldIntefaces: Record<"TextWidget" | "CurrencyWidget" | "TextareaWidget" | "GeocoderWidget" | "MultiGeocoderWidget" | "DropdownWidget" | "ToggleCheckboxWidget" | "RadioWidget" | "NumberWidget" | "EmailWidget" | "PhoneWidget" | "URLWidget" | "DateWidget" | "SwitchWidget" | "RichTextWidget" | "DateTimeWidget" | "CheckboxWidget" | "ImageUploadWidget" | "MultiImageUploadWidget" | "FileUploadWidget" | "MultiFileUploadWidget" | "MultiDropdownWidget" | "MultiTextWidget", "TextWidget" | "CurrencyWidget" | "TextareaWidget" | "GeocoderWidget" | "MultiGeocoderWidget" | "DropdownWidget" | "ToggleCheckboxWidget" | "RadioWidget" | "NumberWidget" | "EmailWidget" | "PhoneWidget" | "URLWidget" | "DateWidget" | "SwitchWidget" | "RichTextWidget" | "DateTimeWidget" | "CheckboxWidget" | "ImageUploadWidget" | "MultiImageUploadWidget" | "FileUploadWidget" | "MultiFileUploadWidget" | "MultiDropdownWidget" | "MultiTextWidget">;
|
|
252
|
+
declare const FieldInterfaces: Record<"TextWidget" | "CurrencyWidget" | "TextareaWidget" | "GeocoderWidget" | "MultiGeocoderWidget" | "DropdownWidget" | "ToggleCheckboxWidget" | "RadioWidget" | "NumberWidget" | "EmailWidget" | "PhoneWidget" | "URLWidget" | "DateWidget" | "SwitchWidget" | "RichTextWidget" | "DateTimeWidget" | "CheckboxWidget" | "ImageUploadWidget" | "MultiImageUploadWidget" | "FileUploadWidget" | "MultiFileUploadWidget" | "MultiDropdownWidget" | "MultiTextWidget" | "CollectionWidget" | "ArrayWidget" | "RecordWidget" | "JSONWidget" | "SlugWidget", "TextWidget" | "CurrencyWidget" | "TextareaWidget" | "GeocoderWidget" | "MultiGeocoderWidget" | "DropdownWidget" | "ToggleCheckboxWidget" | "RadioWidget" | "NumberWidget" | "EmailWidget" | "PhoneWidget" | "URLWidget" | "DateWidget" | "SwitchWidget" | "RichTextWidget" | "DateTimeWidget" | "CheckboxWidget" | "ImageUploadWidget" | "MultiImageUploadWidget" | "FileUploadWidget" | "MultiFileUploadWidget" | "MultiDropdownWidget" | "MultiTextWidget" | "CollectionWidget" | "ArrayWidget" | "RecordWidget" | "JSONWidget" | "SlugWidget">;
|
|
253
|
+
|
|
254
|
+
declare const formatsByInterface: Record<(typeof FieldInterfacesList)[number], string[]>;
|
|
255
|
+
|
|
256
|
+
declare const FieldKindList: readonly ["collection", "record", "group", "public-id", "string", "array-string", "number", "array-number", "date", "array-date", "boolean", "array-boolean", "json", "array-json", "file", "array-file", "location", "array-location", "richtext", "identifier"];
|
|
257
|
+
declare const FieldKind: {
|
|
258
|
+
identifier: "identifier";
|
|
259
|
+
collection: "collection";
|
|
260
|
+
"public-id": "public-id";
|
|
261
|
+
string: "string";
|
|
262
|
+
number: "number";
|
|
263
|
+
boolean: "boolean";
|
|
264
|
+
date: "date";
|
|
265
|
+
json: "json";
|
|
266
|
+
"array-string": "array-string";
|
|
267
|
+
"array-number": "array-number";
|
|
268
|
+
"array-date": "array-date";
|
|
269
|
+
"array-boolean": "array-boolean";
|
|
270
|
+
file: "file";
|
|
271
|
+
"array-file": "array-file";
|
|
272
|
+
record: "record";
|
|
273
|
+
group: "group";
|
|
274
|
+
location: "location";
|
|
275
|
+
"array-location": "array-location";
|
|
276
|
+
richtext: "richtext";
|
|
277
|
+
"array-json": "array-json";
|
|
278
|
+
};
|
|
279
|
+
declare const interfaceKinds: Record<(typeof FieldInterfacesList)[number], (typeof FieldKindList)[number]>;
|
|
280
|
+
|
|
281
|
+
declare const defaultByKinds: Record<(typeof FieldKindList)[number], any>;
|
|
282
|
+
|
|
283
|
+
declare const LevoOAuthProviderList: readonly ["google", "linkedin", "microsoft"];
|
|
284
|
+
type ILevoOAuthProvider = (typeof LevoOAuthProviderList)[number];
|
|
285
|
+
|
|
286
|
+
declare const LEVO_INTEGRATIONS: {
|
|
287
|
+
readonly beacon: "so.levo.beacon";
|
|
288
|
+
readonly blog: "so.levo.blog";
|
|
289
|
+
readonly event: "so.levo.event";
|
|
290
|
+
readonly membership: "so.levo.membership";
|
|
291
|
+
readonly payment: "so.levo.payment";
|
|
292
|
+
readonly community: "so.levo.community";
|
|
293
|
+
readonly search_console: "com.google.search_console";
|
|
294
|
+
};
|
|
295
|
+
declare const LEVO_INTEGRATIONS_LIST: ("so.levo.beacon" | "so.levo.blog" | "so.levo.event" | "so.levo.membership" | "so.levo.payment" | "so.levo.community" | "com.google.search_console")[];
|
|
296
|
+
type ILevoIntegrationList = (typeof LEVO_INTEGRATIONS)[keyof typeof LEVO_INTEGRATIONS][];
|
|
297
|
+
type ILevoIntegrationInstance = {
|
|
298
|
+
id: string;
|
|
299
|
+
name: string;
|
|
300
|
+
publisher: string;
|
|
301
|
+
description: string;
|
|
302
|
+
url: string | null;
|
|
303
|
+
logo: string | null;
|
|
304
|
+
dashboard_url: string | null;
|
|
305
|
+
sidebar_icon: string | null;
|
|
306
|
+
show_on_sidebar: boolean;
|
|
307
|
+
key: string;
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Defines the structure for a field in a generic schema system. Levo Collection builds its own types on top of this, so this type is not used directly.
|
|
312
|
+
*/
|
|
313
|
+
interface IField {
|
|
314
|
+
/** Unique identifier for the field. */
|
|
315
|
+
id: string;
|
|
316
|
+
/** Unique key for the field, used for referencing. */
|
|
317
|
+
key: string;
|
|
318
|
+
/** The kind/type of the field (e.g., text, number, date). */
|
|
319
|
+
kind: (typeof FieldKindList)[number];
|
|
320
|
+
/** The widget/component type used to render this field. */
|
|
321
|
+
field_interface: (typeof FieldInterfacesList)[number] | "HeadingWidget" | "ButtonWidget" | "ImageWidget" | "MultiImageWidget" | "TypographyWidget" | "LayoutWidget" | "RepeatableWidget" | "TitleWidget" | "CardWidget" | "LinkWidget" | "IframeWidget";
|
|
322
|
+
/** Label for the field, displayed in the UI. */
|
|
323
|
+
label: string;
|
|
324
|
+
/** Helper text shown below the field. */
|
|
325
|
+
helper_text?: string;
|
|
326
|
+
/** Placeholder text for the field input. */
|
|
327
|
+
placeholder?: string;
|
|
328
|
+
/** Default value for the field. */
|
|
329
|
+
default_value?: any;
|
|
330
|
+
/** Whether the field is read-only. */
|
|
331
|
+
readonly?: boolean;
|
|
332
|
+
/** Nested fields, if this field is a group or composite. */
|
|
333
|
+
fields?: IField[];
|
|
334
|
+
/** Additional options for configuring the field. */
|
|
335
|
+
options?: Record<string, any>;
|
|
336
|
+
/** Whether the field is hidden from the UI. */
|
|
337
|
+
hidden?: boolean;
|
|
338
|
+
/** Whether the field is editable. */
|
|
339
|
+
editable?: boolean;
|
|
340
|
+
/** Whether the field is required. */
|
|
341
|
+
required?: boolean;
|
|
342
|
+
/** Whether the field value must be unique. */
|
|
343
|
+
unique?: boolean;
|
|
344
|
+
/** Minimum value or length for the field. */
|
|
345
|
+
min?: string | number | null;
|
|
346
|
+
/** Maximum value or length for the field. */
|
|
347
|
+
max?: string | number | null;
|
|
348
|
+
/** Allowed formats for the field value. */
|
|
349
|
+
formats?: string[];
|
|
350
|
+
/** Allowed values for the field (for select/dropdown fields). */
|
|
351
|
+
values?: any[];
|
|
352
|
+
/** */
|
|
353
|
+
created_at?: string;
|
|
354
|
+
/** */
|
|
355
|
+
updated_at?: string;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Used for making partial updates to fields, especially nested fields. This type is not used directly in most Levo Collection code, but Levo Collection types are based on it.
|
|
359
|
+
*/
|
|
360
|
+
interface IFieldUpdate extends Omit<IField, "fields"> {
|
|
361
|
+
/** Nested fields to update, provided as partials. */
|
|
362
|
+
fields: Partial<IField>[];
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
type Prettify<T> = {
|
|
366
|
+
[K in keyof T]: T[K];
|
|
367
|
+
};
|
|
368
|
+
type Mandatory<T, K extends keyof T> = Prettify<Pick<T, K> & Partial<Omit<T, K>>>;
|
|
369
|
+
type DeepPartial<T> = {
|
|
370
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
interface IEmojiData {
|
|
374
|
+
label: string;
|
|
375
|
+
tags?: string[];
|
|
376
|
+
unicode: string;
|
|
377
|
+
}
|
|
378
|
+
interface IIconData {
|
|
379
|
+
id: string;
|
|
380
|
+
label: string;
|
|
381
|
+
tags?: string[];
|
|
382
|
+
svgCode: string;
|
|
383
|
+
}
|
|
384
|
+
interface IIconCat {
|
|
385
|
+
name: string;
|
|
386
|
+
slug: string;
|
|
387
|
+
emojis: IEmojiData[] | IIconData[];
|
|
388
|
+
}
|
|
389
|
+
interface IIcon {
|
|
390
|
+
kind: "emoji" | "custom" | "icon";
|
|
391
|
+
data: IEmojiData | IMediaObject | IIconData;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
declare const LogicalOperators: {
|
|
395
|
+
AND: "AND";
|
|
396
|
+
OR: "OR";
|
|
397
|
+
};
|
|
398
|
+
type LogicalOperators = keyof typeof LogicalOperators;
|
|
399
|
+
type FieldType = string | number | Date | boolean | null;
|
|
400
|
+
type ComparableFieldType = number | Date;
|
|
401
|
+
declare const ComparableOperators: {
|
|
402
|
+
equals: "equals";
|
|
403
|
+
not: "not";
|
|
404
|
+
in: "in";
|
|
405
|
+
not_in: "not_in";
|
|
406
|
+
gt: "gt";
|
|
407
|
+
gte: "gte";
|
|
408
|
+
lt: "lt";
|
|
409
|
+
lte: "lte";
|
|
410
|
+
contains: "contains";
|
|
411
|
+
not_contains: "not_contains";
|
|
412
|
+
starts_with: "starts_with";
|
|
413
|
+
not_starts_with: "not_starts_with";
|
|
414
|
+
ends_with: "ends_with";
|
|
415
|
+
not_ends_with: "not_ends_with";
|
|
416
|
+
empty: "empty";
|
|
417
|
+
has: "has";
|
|
418
|
+
between: "between";
|
|
419
|
+
within: "within";
|
|
420
|
+
is_empty: "is_empty";
|
|
421
|
+
is_not_empty: "is_not_empty";
|
|
422
|
+
};
|
|
423
|
+
type WithinFilterType = {
|
|
424
|
+
latitude: number;
|
|
425
|
+
longitude: number;
|
|
426
|
+
distance: number;
|
|
427
|
+
unit?: "kilometers" | "miles" | "meters" | "feet";
|
|
428
|
+
};
|
|
429
|
+
type ComparableFilter<T extends string = string> = {
|
|
430
|
+
[ComparableOperators.equals]?: FieldType;
|
|
431
|
+
} | {
|
|
432
|
+
[ComparableOperators.not]?: FieldType;
|
|
433
|
+
} | {
|
|
434
|
+
[ComparableOperators.in]?: FieldType[];
|
|
435
|
+
} | {
|
|
436
|
+
[ComparableOperators.not_in]?: FieldType[];
|
|
437
|
+
} | {
|
|
438
|
+
[ComparableOperators.gt]?: ComparableFieldType;
|
|
439
|
+
} | {
|
|
440
|
+
[ComparableOperators.gte]?: ComparableFieldType;
|
|
441
|
+
} | {
|
|
442
|
+
[ComparableOperators.lt]?: ComparableFieldType;
|
|
443
|
+
} | {
|
|
444
|
+
[ComparableOperators.lte]?: ComparableFieldType;
|
|
445
|
+
} | {
|
|
446
|
+
[ComparableOperators.contains]?: string;
|
|
447
|
+
} | {
|
|
448
|
+
[ComparableOperators.not_contains]?: string;
|
|
449
|
+
} | {
|
|
450
|
+
[ComparableOperators.starts_with]?: string;
|
|
451
|
+
} | {
|
|
452
|
+
[ComparableOperators.not_starts_with]?: string;
|
|
453
|
+
} | {
|
|
454
|
+
[ComparableOperators.ends_with]?: string;
|
|
455
|
+
} | {
|
|
456
|
+
[ComparableOperators.not_ends_with]?: string;
|
|
457
|
+
} | {
|
|
458
|
+
[ComparableOperators.between]?: ComparableFieldType[];
|
|
459
|
+
} | {
|
|
460
|
+
[ComparableOperators.is_empty]?: boolean;
|
|
461
|
+
} | {
|
|
462
|
+
[ComparableOperators.is_not_empty]?: boolean;
|
|
463
|
+
} | {
|
|
464
|
+
[ComparableOperators.empty]?: boolean;
|
|
465
|
+
} | {
|
|
466
|
+
[ComparableOperators.has]?: Record<string, FieldType>;
|
|
467
|
+
} | {
|
|
468
|
+
[ComparableOperators.within]?: WithinFilterType;
|
|
469
|
+
};
|
|
470
|
+
type LogicalFilter<T extends string = string> = {
|
|
471
|
+
[LogicalOperators.AND]: Filter<T>[];
|
|
472
|
+
[LogicalOperators.OR]?: never;
|
|
473
|
+
} | {
|
|
474
|
+
[LogicalOperators.OR]: Filter<T>[];
|
|
475
|
+
[LogicalOperators.AND]?: never;
|
|
476
|
+
};
|
|
477
|
+
type FieldFilter<T extends string = string> = Partial<Record<T, ComparableFilter<T> | FieldType>>;
|
|
478
|
+
type Filter<T extends string = string> = LogicalFilter<T> | FieldFilter<T>;
|
|
479
|
+
declare namespace LevoQuery {
|
|
480
|
+
type Select<Fields extends string = string> = Partial<Record<Fields, boolean | {
|
|
481
|
+
select: Record<string, boolean>;
|
|
482
|
+
}>>;
|
|
483
|
+
type Sort<Fields extends string = string> = Partial<Record<Fields, "asc" | "desc">>;
|
|
484
|
+
type Include<Fields extends string = string> = Partial<Record<Fields, boolean | Pick<FindQuery<Fields>, "select" | "sort" | "include" | "limit">>>;
|
|
485
|
+
type Where<Fields extends string = string> = Filter<Fields>;
|
|
486
|
+
type FindQuery<Fields extends string = string> = Partial<{
|
|
487
|
+
page: number;
|
|
488
|
+
limit: number;
|
|
489
|
+
select: Select<Fields>;
|
|
490
|
+
where: Where<Fields>;
|
|
491
|
+
sort: Sort<Fields>;
|
|
492
|
+
include: Include<Fields>;
|
|
493
|
+
search: string;
|
|
494
|
+
}>;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* Defines the basic structure for a collection schema, including its sections, fields, and configuration. Levo Collection uses its own types built on top of this, so this type is not used directly.
|
|
499
|
+
*/
|
|
500
|
+
interface ISchema {
|
|
501
|
+
/** Unique identifier for the schema. */
|
|
502
|
+
id: string;
|
|
503
|
+
/** Name of the schema. */
|
|
504
|
+
name: string;
|
|
505
|
+
/** Description of the schema. */
|
|
506
|
+
description: string;
|
|
507
|
+
/** Unique key for referencing the schema. */
|
|
508
|
+
key: string;
|
|
509
|
+
/** Sections that make up the schema, each containing fields. */
|
|
510
|
+
sections: ISection[];
|
|
511
|
+
/** Field key used as the title for items in the schema. */
|
|
512
|
+
title_field: string;
|
|
513
|
+
/** */
|
|
514
|
+
cover_image_field?: string;
|
|
515
|
+
/** Icon representing the schema. */
|
|
516
|
+
icon: null | IIcon;
|
|
517
|
+
/** */
|
|
518
|
+
created_at?: string;
|
|
519
|
+
/** */
|
|
520
|
+
module_name?: string;
|
|
521
|
+
/** Views for customizing how the schema is presented. */
|
|
522
|
+
views?: ICollectionViews[];
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Defines the structure for a view configuration in a collection schema. Levo Collection uses its own types built on top of this, so this type is not used directly in most Levo Collection code.
|
|
526
|
+
*/
|
|
527
|
+
interface ICollectionViews {
|
|
528
|
+
/** Unique identifier for the view. */
|
|
529
|
+
id: string;
|
|
530
|
+
/** Slug for the view, used in URLs. */
|
|
531
|
+
slug: string;
|
|
532
|
+
/** Title of the view. */
|
|
533
|
+
title: string;
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Defines the structure for a section in a schema, grouping related fields together. Levo Collection uses its own types built on top of this, so this type is not used directly in most Levo Collection code.
|
|
537
|
+
*/
|
|
538
|
+
interface ISection {
|
|
539
|
+
/** Unique identifier for the section. */
|
|
540
|
+
id: string;
|
|
541
|
+
/** Label for the section, displayed in the UI. */
|
|
542
|
+
label: string;
|
|
543
|
+
/** Unique key for referencing the section. */
|
|
544
|
+
key: string;
|
|
545
|
+
/** Helper text for the section. */
|
|
546
|
+
helper_text: string;
|
|
547
|
+
/** Whether the section is hidden from the UI. */
|
|
548
|
+
hidden: boolean;
|
|
549
|
+
/** Fields contained within this section. */
|
|
550
|
+
fields: IField[];
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* Represents a section in a Levo Collection schema, grouping related fields together.
|
|
555
|
+
*/
|
|
556
|
+
interface ILemaSection extends Omit<ISection, "fields"> {
|
|
557
|
+
/** Fields contained within this section. */
|
|
558
|
+
fields: ILemaField[];
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* Represents an icon object used in collections.
|
|
563
|
+
* @see IIcon
|
|
564
|
+
*/
|
|
565
|
+
|
|
566
|
+
interface INotificationData {
|
|
567
|
+
id?: string;
|
|
568
|
+
kind: string;
|
|
569
|
+
subkind: string;
|
|
570
|
+
enabled?: boolean;
|
|
571
|
+
condition?: LevoQuery.Where;
|
|
572
|
+
options: {
|
|
573
|
+
to_email: string | string[];
|
|
574
|
+
subject?: string;
|
|
575
|
+
template_key: string;
|
|
576
|
+
from_name: string;
|
|
577
|
+
reply_to?: string;
|
|
578
|
+
cc_email?: string[];
|
|
579
|
+
bcc_email?: string[];
|
|
580
|
+
info: {
|
|
581
|
+
show_download_button?: boolean;
|
|
582
|
+
hide_fields?: string[];
|
|
583
|
+
body?: string;
|
|
584
|
+
subject?: string;
|
|
585
|
+
richtext?: string;
|
|
586
|
+
};
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
interface INotificationWithTrigger extends INotificationData {
|
|
590
|
+
trigger: "on_submit" | "on_update";
|
|
591
|
+
}
|
|
592
|
+
/**
|
|
593
|
+
* Defines the schema structure for a Levo Collection.
|
|
594
|
+
*
|
|
595
|
+
* A Levo Collection is a feature of the Levo platform that enables dynamic form rendering using the `@levo-so/react-collection` library.
|
|
596
|
+
* This interface describes the schema used to generate forms, including sections, fields, and configuration options.
|
|
597
|
+
* The schema is referenced anywhere a Levo Collection is required in the Levo ecosystem.
|
|
598
|
+
*
|
|
599
|
+
* For more details, see the documentation in external/react-collection/docs/readme.md.
|
|
600
|
+
*/
|
|
601
|
+
interface ILemaCollection {
|
|
602
|
+
/** Unique identifier for the collection schema. */
|
|
603
|
+
id: string;
|
|
604
|
+
/** Unique key used as URL slug and can be used to fetch the collection schema. */
|
|
605
|
+
key: string;
|
|
606
|
+
/** Array of sections that define the structure and fields of the form. */
|
|
607
|
+
sections: ILemaSection[];
|
|
608
|
+
/** Optional array of views for customizing how the collection is presented. */
|
|
609
|
+
views?: ICollectionViews[];
|
|
610
|
+
/** Optional workspace ID to which this collection belongs. */
|
|
611
|
+
workspace_id?: string;
|
|
612
|
+
/** Name of the collection schema. */
|
|
613
|
+
name: string;
|
|
614
|
+
/** Optional description of the collection schema. */
|
|
615
|
+
description?: string | null;
|
|
616
|
+
/** Optional icon representing the collection. */
|
|
617
|
+
icon?: IIcon | null;
|
|
618
|
+
/** Optional field name used as the title for items in the collection. */
|
|
619
|
+
title_field?: string | null;
|
|
620
|
+
/** Optional field name used for email in the collection. */
|
|
621
|
+
email_field?: string | null;
|
|
622
|
+
/** Optional field name used for mobile in the collection. */
|
|
623
|
+
mobile_field?: string | null;
|
|
624
|
+
/** Whether the collection is hidden from the UI. */
|
|
625
|
+
hidden?: boolean;
|
|
626
|
+
/** Whether the collection is read-only. */
|
|
627
|
+
readonly?: boolean;
|
|
628
|
+
/** Arbitrary settings for the collection schema. */
|
|
629
|
+
settings?: Record<string, any>;
|
|
630
|
+
/** Optional module name associated with the collection. */
|
|
631
|
+
module_name?: string | null;
|
|
632
|
+
/** Optional configuration for actions to perform on submit. */
|
|
633
|
+
on_submit?: INotificationData[];
|
|
634
|
+
/** Optional configuration for actions to perform on update. */
|
|
635
|
+
on_update?: INotificationData[];
|
|
636
|
+
/** Date or string representing when the collection was created. */
|
|
637
|
+
created_at?: Date | string;
|
|
638
|
+
/** Date or string representing when the collection was last updated. */
|
|
639
|
+
updated_at?: Date | string;
|
|
640
|
+
/** Whether the collection allows draft items. */
|
|
641
|
+
allow_draft?: boolean;
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* Represents a value within a collection, with a unique ID and arbitrary properties.
|
|
645
|
+
*/
|
|
646
|
+
interface ICollectionValue {
|
|
647
|
+
/** Unique identifier for the value. */
|
|
648
|
+
id: string;
|
|
649
|
+
/** Additional arbitrary properties for the value. */
|
|
650
|
+
[x: string]: unknown;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
type ILemaCollectionRelationship = "o2m" | "m2o" | "o2o" | "m2m";
|
|
654
|
+
type ILemaRelationOnDelete = "CASCADE" | "SET_NULL" | "RESTRICT";
|
|
655
|
+
type ILemaRelation = {
|
|
656
|
+
relationship: ILemaCollectionRelationship | string;
|
|
657
|
+
related_field: string;
|
|
658
|
+
related_collection_key: string;
|
|
659
|
+
field: string;
|
|
660
|
+
collection_key: string;
|
|
661
|
+
on_delete?: ILemaRelationOnDelete;
|
|
662
|
+
};
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* Options for configuring the behavior and appearance of a field in a Levo Collection schema.
|
|
666
|
+
*/
|
|
667
|
+
interface ILemaFieldOptions {
|
|
668
|
+
/** Whether to link the email field with a member profile. */
|
|
669
|
+
link_with_member_profile?: boolean;
|
|
670
|
+
/** Key of the referenced collection for collection widget. */
|
|
671
|
+
collection_key?: string;
|
|
672
|
+
/** ID of the referenced collection for collection widget. */
|
|
673
|
+
collection_id?: string;
|
|
674
|
+
/** Key of the reference field in the related collection. */
|
|
675
|
+
reference_field_key?: string;
|
|
676
|
+
/** Key of the label field in the related collection. */
|
|
677
|
+
label_field_key?: string | null;
|
|
678
|
+
/** Whether the current collection has many connected items. */
|
|
679
|
+
current_have_many_connected?: boolean;
|
|
680
|
+
/** Whether the connected collection has many current items. */
|
|
681
|
+
connected_have_many_current?: boolean;
|
|
682
|
+
/** Relationship type or object for the collection widget. */
|
|
683
|
+
relationship?: ILemaCollectionRelationship | string;
|
|
684
|
+
/** Action to take on delete for the relationship. */
|
|
685
|
+
on_delete?: ILemaRelationOnDelete;
|
|
686
|
+
/** Slug for the field, used in URLs or as a unique identifier. */
|
|
687
|
+
slug?: string;
|
|
688
|
+
/** Currency code for currency widget. */
|
|
689
|
+
currency_code?: string;
|
|
690
|
+
disableCountryGuess?: boolean;
|
|
691
|
+
/** Location type for location widget. */
|
|
692
|
+
location_type?: string;
|
|
693
|
+
/** Country for location widget. */
|
|
694
|
+
country?: string;
|
|
695
|
+
/** Whether to allow custom input in dropdown widget. */
|
|
696
|
+
custom_input?: boolean;
|
|
697
|
+
/** The referenced collection object for schema editor. */
|
|
698
|
+
collection?: ILemaCollection | null;
|
|
699
|
+
/** Whether to disable validation for this field. */
|
|
700
|
+
disableValidation?: boolean;
|
|
701
|
+
/** Validation presets for the field. */
|
|
702
|
+
validationsPresets?: string[];
|
|
703
|
+
}
|
|
704
|
+
/**
|
|
705
|
+
* Represents a field in a Levo Collection schema, including its configuration and options.
|
|
706
|
+
*/
|
|
707
|
+
type ILemaField = Mandatory<Omit<IField, "fields" | "options">, "key" | "kind" | "label" | "id"> & {
|
|
708
|
+
/** Field interface type, determines the widget/component to render. */
|
|
709
|
+
field_interface: (typeof FieldInterfacesList)[number];
|
|
710
|
+
/** Nested fields, if this field is a group or composite. */
|
|
711
|
+
fields?: ILemaField[];
|
|
712
|
+
/** Field options for configuring widget behavior. */
|
|
713
|
+
options: ILemaFieldOptions;
|
|
714
|
+
};
|
|
715
|
+
|
|
716
|
+
type ICollectionsView = "table" | "kanban" | "calendar";
|
|
717
|
+
interface IGroupBy {
|
|
718
|
+
label: string;
|
|
719
|
+
value: string;
|
|
720
|
+
field: ILemaField;
|
|
721
|
+
}
|
|
722
|
+
interface ICollectionLayoutOptions {
|
|
723
|
+
groupBy?: IGroupBy | null;
|
|
724
|
+
title?: string;
|
|
725
|
+
description?: string;
|
|
726
|
+
columnsOrder?: string[];
|
|
727
|
+
selectedColumns?: string[];
|
|
728
|
+
}
|
|
729
|
+
interface ICollectionLayout {
|
|
730
|
+
kind: ICollectionsView;
|
|
731
|
+
options: ICollectionLayoutOptions;
|
|
732
|
+
}
|
|
733
|
+
interface ICollectionQuery {
|
|
734
|
+
where: Record<string, any>;
|
|
735
|
+
sort?: Record<string, any>;
|
|
736
|
+
}
|
|
737
|
+
interface ICollectionView {
|
|
738
|
+
id: string;
|
|
739
|
+
workspace_id: string;
|
|
740
|
+
slug: string;
|
|
741
|
+
collection_id: string;
|
|
742
|
+
title: string;
|
|
743
|
+
description: string;
|
|
744
|
+
layout: ICollectionLayout;
|
|
745
|
+
query: ICollectionQuery;
|
|
746
|
+
options: Record<string, any>;
|
|
747
|
+
created_at: string;
|
|
748
|
+
updated_at: string;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
interface IDraftEntry {
|
|
752
|
+
_id: string;
|
|
753
|
+
_account: string;
|
|
754
|
+
_status: "draft" | "submitted";
|
|
755
|
+
[x: string]: any;
|
|
756
|
+
created_at: string;
|
|
757
|
+
updated_at: string;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
declare namespace ILevoMembership {
|
|
761
|
+
interface sub_account_oauth_credentials {
|
|
762
|
+
provider: string;
|
|
763
|
+
oauth_id: string;
|
|
764
|
+
}
|
|
765
|
+
/**
|
|
766
|
+
* The account object of the member
|
|
767
|
+
*/
|
|
768
|
+
export interface Account {
|
|
769
|
+
_id: string;
|
|
770
|
+
first_name: string | null;
|
|
771
|
+
last_name: string | null;
|
|
772
|
+
slug: string;
|
|
773
|
+
username: string;
|
|
774
|
+
email: string;
|
|
775
|
+
display_email: string;
|
|
776
|
+
reducted_email: string;
|
|
777
|
+
email_verified: boolean;
|
|
778
|
+
email_verified_at: string | null;
|
|
779
|
+
verified_at: string | null;
|
|
780
|
+
mobile: string | null;
|
|
781
|
+
reducted_mobile: string | null;
|
|
782
|
+
mobile_verified: boolean;
|
|
783
|
+
mobile_verified_at: string | null;
|
|
784
|
+
profile_picture: IMediaObject | null;
|
|
785
|
+
oauth_credentials: sub_account_oauth_credentials[];
|
|
786
|
+
account_locked_at: Date | string | null;
|
|
787
|
+
credentials_expired_at: Date | string | null;
|
|
788
|
+
deactivated_at: Date | string | null;
|
|
789
|
+
last_access_at: Date | string | null;
|
|
790
|
+
flagged_at: Date | string | null;
|
|
791
|
+
created_at: Date | string;
|
|
792
|
+
updated_at: Date | string;
|
|
793
|
+
deleted_at: Date | string | null;
|
|
794
|
+
}
|
|
795
|
+
/**
|
|
796
|
+
* the otp object with its code and content
|
|
797
|
+
*/
|
|
798
|
+
export interface Otp {
|
|
799
|
+
/**
|
|
800
|
+
* the ID of the Otp
|
|
801
|
+
*/
|
|
802
|
+
_id: string;
|
|
803
|
+
/**
|
|
804
|
+
* the email or mobile number to send the Otp to
|
|
805
|
+
*/
|
|
806
|
+
content: string;
|
|
807
|
+
/**
|
|
808
|
+
* the Otp code received in email or sms
|
|
809
|
+
*/
|
|
810
|
+
code: string;
|
|
811
|
+
}
|
|
812
|
+
export type OAuthURLProvider = (typeof LevoOAuthProviderList)[number];
|
|
813
|
+
/**
|
|
814
|
+
* The list of URLs for OAuth providers to redirect to
|
|
815
|
+
* This can be used in the OAuth Buttons like "Continue with Google" etc.
|
|
816
|
+
*
|
|
817
|
+
* @example
|
|
818
|
+
* ```javascript
|
|
819
|
+
* {
|
|
820
|
+
* "google": 'https://public-api.levo.so/v1/membership/auth/oauth/google?redirect_uri=https://example.com&workspace=my-workspace',
|
|
821
|
+
* "microsoft": 'https://public-api.levo.so/v1/membership/auth/oauth/microsoft?redirect_uri=https://example.com&workspace=my-workspace',
|
|
822
|
+
* "linkedin": 'https://public-api.levo.so/v1/membership/auth/oauth/linkedin?redirect_uri=https://example.com&workspace=my-workspace'
|
|
823
|
+
* }
|
|
824
|
+
* ```
|
|
825
|
+
*/
|
|
826
|
+
export type OAuthURLList = Record<OAuthURLProvider, string | null>;
|
|
827
|
+
export namespace Request {
|
|
828
|
+
/**
|
|
829
|
+
*
|
|
830
|
+
* `content` - the email or mobile number to send the Otp to
|
|
831
|
+
*
|
|
832
|
+
* @example
|
|
833
|
+
* ```json
|
|
834
|
+
* {
|
|
835
|
+
* "content": "example@mailinator.com",
|
|
836
|
+
* "redirect_uri": "https://example.com/protected-page"
|
|
837
|
+
* }
|
|
838
|
+
* ```
|
|
839
|
+
*/
|
|
840
|
+
type RequestMagicLink = Pick<Otp, "content"> & {
|
|
841
|
+
redirect_uri?: string;
|
|
842
|
+
};
|
|
843
|
+
/**
|
|
844
|
+
*
|
|
845
|
+
* `content` - the email or mobile number to send the Otp to
|
|
846
|
+
*
|
|
847
|
+
* @example
|
|
848
|
+
* ```json
|
|
849
|
+
* {
|
|
850
|
+
* "content": "example@mailinator.com"
|
|
851
|
+
* }
|
|
852
|
+
* ```
|
|
853
|
+
*/
|
|
854
|
+
type RequestOtp = Pick<Otp, "content"> & {
|
|
855
|
+
medium?: "email" | "whatsapp";
|
|
856
|
+
};
|
|
857
|
+
/**
|
|
858
|
+
* `content` - the email or mobile number to send the Otp to
|
|
859
|
+
*
|
|
860
|
+
* `code` - the Otp code received in email or sms
|
|
861
|
+
*
|
|
862
|
+
* @example
|
|
863
|
+
* ```json
|
|
864
|
+
* {
|
|
865
|
+
* "content": "example@mailinator.com",
|
|
866
|
+
* "code": "1234"
|
|
867
|
+
* }
|
|
868
|
+
* ```
|
|
869
|
+
*/
|
|
870
|
+
type SignInWithOtp = Pick<Otp, "content" | "code">;
|
|
871
|
+
/**
|
|
872
|
+
* `email` - the email of the account
|
|
873
|
+
*
|
|
874
|
+
* `password` - the password of the account
|
|
875
|
+
*
|
|
876
|
+
* @example
|
|
877
|
+
* ```json
|
|
878
|
+
* {
|
|
879
|
+
* "email": "example@mailinator.com",
|
|
880
|
+
* "password": "strongpasswordhere"
|
|
881
|
+
* }
|
|
882
|
+
* ```
|
|
883
|
+
*/
|
|
884
|
+
type SignInWithPassword = {
|
|
885
|
+
email: Account["email"];
|
|
886
|
+
password: string;
|
|
887
|
+
};
|
|
888
|
+
/**
|
|
889
|
+
* @property {string | null} [first_name] - the first name of the account
|
|
890
|
+
* @property {string | null} [last_name] - the last name of the account
|
|
891
|
+
* @property {string} email - the email of the account
|
|
892
|
+
* @property {string} password - the password of the account
|
|
893
|
+
*
|
|
894
|
+
* @example
|
|
895
|
+
* ```json
|
|
896
|
+
* {
|
|
897
|
+
* "email": "example@mailinator.com",
|
|
898
|
+
* "password": "strongpasswordhere"
|
|
899
|
+
* }
|
|
900
|
+
* ```
|
|
901
|
+
* @example
|
|
902
|
+
* ```json
|
|
903
|
+
* {
|
|
904
|
+
* "first_name": "John",
|
|
905
|
+
* "last_name": "Doe",
|
|
906
|
+
* "email": "example@mailinator.com",
|
|
907
|
+
* "password": "strongpasswordhere"
|
|
908
|
+
* }
|
|
909
|
+
* ```
|
|
910
|
+
* @example
|
|
911
|
+
* ```json
|
|
912
|
+
* {
|
|
913
|
+
* "first_name": null,
|
|
914
|
+
* "last_name": null,
|
|
915
|
+
* "email": "example@mailinator.com",
|
|
916
|
+
* "password": "strongpasswordhere"
|
|
917
|
+
* }
|
|
918
|
+
* ```
|
|
919
|
+
*/
|
|
920
|
+
type SignUpWithPassword = Partial<Pick<Account, "first_name" | "last_name">> & Pick<Account, "email"> & {
|
|
921
|
+
password: string;
|
|
922
|
+
};
|
|
923
|
+
/**
|
|
924
|
+
* @property {string | null} [first_name] - the first name of the account (optional)
|
|
925
|
+
* @property {string | null} [last_name] - the last name of the account (optional)
|
|
926
|
+
* @property {string} [username] - the username of the account (optional)
|
|
927
|
+
* @property {IMediaObject} [profile_picture] - the profile picture object for the account (optional)
|
|
928
|
+
*/
|
|
929
|
+
type UpdateMe = Partial<Pick<Account, "first_name" | "last_name" | "profile_picture" | "username">>;
|
|
930
|
+
/**
|
|
931
|
+
* @property {string} [password] - the first name of the account (optional)
|
|
932
|
+
*/
|
|
933
|
+
type CreatePassword = {
|
|
934
|
+
password: string;
|
|
935
|
+
};
|
|
936
|
+
}
|
|
937
|
+
export { };
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
declare const AnalyticsEventsList: readonly ["bevy.collection.filled", "bevy.collection.submitted", "bevy.collection.view", "block.view", "blog.post.view", "event.booking.confirmed", "event.booking.initiated", "event.booking.pending", "event.coupon.applied", "event.event.view", "form.change", "form.submit", "membership.account.signin", "membership.account.signout", "membership.account.signup", "button.click", "page.bounce", "page.click", "page.copy", "page.impression", "page.scroll", "page.view", "page.selection", "user.active", "user.idle"];
|
|
941
|
+
type AnalyticsEventType = (typeof AnalyticsEventsList)[number];
|
|
942
|
+
declare const AnalyticsEvents: {
|
|
943
|
+
"bevy.collection.filled": "bevy.collection.filled";
|
|
944
|
+
"bevy.collection.submitted": "bevy.collection.submitted";
|
|
945
|
+
"bevy.collection.view": "bevy.collection.view";
|
|
946
|
+
"block.view": "block.view";
|
|
947
|
+
"blog.post.view": "blog.post.view";
|
|
948
|
+
"event.booking.confirmed": "event.booking.confirmed";
|
|
949
|
+
"event.booking.initiated": "event.booking.initiated";
|
|
950
|
+
"event.booking.pending": "event.booking.pending";
|
|
951
|
+
"event.coupon.applied": "event.coupon.applied";
|
|
952
|
+
"event.event.view": "event.event.view";
|
|
953
|
+
"form.change": "form.change";
|
|
954
|
+
"form.submit": "form.submit";
|
|
955
|
+
"membership.account.signin": "membership.account.signin";
|
|
956
|
+
"membership.account.signout": "membership.account.signout";
|
|
957
|
+
"membership.account.signup": "membership.account.signup";
|
|
958
|
+
"button.click": "button.click";
|
|
959
|
+
"page.bounce": "page.bounce";
|
|
960
|
+
"page.click": "page.click";
|
|
961
|
+
"page.copy": "page.copy";
|
|
962
|
+
"page.impression": "page.impression";
|
|
963
|
+
"page.scroll": "page.scroll";
|
|
964
|
+
"page.view": "page.view";
|
|
965
|
+
"page.selection": "page.selection";
|
|
966
|
+
"user.active": "user.active";
|
|
967
|
+
"user.idle": "user.idle";
|
|
968
|
+
};
|
|
969
|
+
declare namespace ILevoAudience {
|
|
970
|
+
interface Traits {
|
|
971
|
+
private_mode: boolean;
|
|
972
|
+
dark_mode: boolean;
|
|
973
|
+
locale: string;
|
|
974
|
+
timezone: string;
|
|
975
|
+
referrer: {
|
|
976
|
+
type: string;
|
|
977
|
+
referrer: Record<string, string>;
|
|
978
|
+
data: Record<string, string>;
|
|
979
|
+
};
|
|
980
|
+
properties: Record<string, any>;
|
|
981
|
+
withLock?: boolean;
|
|
982
|
+
}
|
|
983
|
+
type BaseProperties = Traits & {
|
|
984
|
+
resource: string;
|
|
985
|
+
identifier: string;
|
|
986
|
+
};
|
|
987
|
+
interface BlockProperties {
|
|
988
|
+
id: string;
|
|
989
|
+
}
|
|
990
|
+
interface ActivityProperties {
|
|
991
|
+
seconds_idle?: number;
|
|
992
|
+
seconds_active?: number;
|
|
993
|
+
}
|
|
994
|
+
interface ScrollProperties {
|
|
995
|
+
percent: number;
|
|
996
|
+
}
|
|
997
|
+
type Properties = Partial<BaseProperties & BlockProperties & ActivityProperties & ScrollProperties> & Partial<Omit<BaseInput, "workspace_id" | "tab_count" | "tab_id">> & Record<string, any>;
|
|
998
|
+
type EventProperties = {
|
|
999
|
+
properties: Properties;
|
|
1000
|
+
traits: Traits;
|
|
1001
|
+
event: AnalyticsEventType;
|
|
1002
|
+
type: "track" | "page" | "identify";
|
|
1003
|
+
userId: string | null;
|
|
1004
|
+
};
|
|
1005
|
+
type BaseInput = {
|
|
1006
|
+
workspace_id: string;
|
|
1007
|
+
site_id?: string;
|
|
1008
|
+
hostname: string;
|
|
1009
|
+
pathname: string;
|
|
1010
|
+
page_title: string;
|
|
1011
|
+
url: string;
|
|
1012
|
+
created_at: string;
|
|
1013
|
+
tab_id: string;
|
|
1014
|
+
tab_count: number;
|
|
1015
|
+
};
|
|
1016
|
+
type WelcomeInput = Traits & BaseInput;
|
|
1017
|
+
type WelcomeResponse = {
|
|
1018
|
+
session: string;
|
|
1019
|
+
device: string;
|
|
1020
|
+
};
|
|
1021
|
+
type CollectInput = BaseInput & {
|
|
1022
|
+
session_id?: string;
|
|
1023
|
+
device_id?: string;
|
|
1024
|
+
event: AnalyticsEventType;
|
|
1025
|
+
version?: number;
|
|
1026
|
+
properties: Properties;
|
|
1027
|
+
resource: string;
|
|
1028
|
+
identifier: string | undefined;
|
|
1029
|
+
};
|
|
1030
|
+
type ActivityStatus = {
|
|
1031
|
+
isIdle: boolean;
|
|
1032
|
+
isDisabled: boolean;
|
|
1033
|
+
active: number;
|
|
1034
|
+
idle: number;
|
|
1035
|
+
};
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
interface IMeta {
|
|
1039
|
+
total: number;
|
|
1040
|
+
pages: number;
|
|
1041
|
+
}
|
|
1042
|
+
interface IResponseMultiple<T = Record<string, unknown>> {
|
|
1043
|
+
status: boolean;
|
|
1044
|
+
content: {
|
|
1045
|
+
meta: IMeta;
|
|
1046
|
+
data: T[];
|
|
1047
|
+
};
|
|
1048
|
+
}
|
|
1049
|
+
interface IResponseSingle<T = Record<string, unknown>, Meta = any> {
|
|
1050
|
+
status: boolean;
|
|
1051
|
+
content: {
|
|
1052
|
+
data: T;
|
|
1053
|
+
meta?: Meta;
|
|
1054
|
+
};
|
|
1055
|
+
}
|
|
1056
|
+
interface IResponseMyCategory<T = Record<string, unknown>> {
|
|
1057
|
+
status: boolean;
|
|
1058
|
+
content: {
|
|
1059
|
+
data: T[];
|
|
1060
|
+
};
|
|
1061
|
+
}
|
|
1062
|
+
interface IFieldError {
|
|
1063
|
+
param: string;
|
|
1064
|
+
message: string;
|
|
1065
|
+
}
|
|
1066
|
+
interface IErrorContent {
|
|
1067
|
+
status: number;
|
|
1068
|
+
code: string;
|
|
1069
|
+
title: string;
|
|
1070
|
+
description: string;
|
|
1071
|
+
type?: string;
|
|
1072
|
+
errors?: IFieldError[];
|
|
1073
|
+
}
|
|
1074
|
+
interface IResponseError {
|
|
1075
|
+
status: false;
|
|
1076
|
+
content: IErrorContent;
|
|
1077
|
+
}
|
|
1078
|
+
type IFilter = Record<string, unknown>;
|
|
1079
|
+
type IErrorParams = {
|
|
1080
|
+
message: string;
|
|
1081
|
+
param: string;
|
|
1082
|
+
};
|
|
1083
|
+
|
|
1084
|
+
interface IPlanPrice {
|
|
1085
|
+
id: string;
|
|
1086
|
+
plan_id: string;
|
|
1087
|
+
period: "month" | "year";
|
|
1088
|
+
unit_amount: number;
|
|
1089
|
+
currency: string;
|
|
1090
|
+
reference_id: string;
|
|
1091
|
+
provider: string;
|
|
1092
|
+
created_at: string;
|
|
1093
|
+
updated_at: string;
|
|
1094
|
+
}
|
|
1095
|
+
interface IPlanGroup {
|
|
1096
|
+
id: string;
|
|
1097
|
+
name: string;
|
|
1098
|
+
created_at: Date;
|
|
1099
|
+
updated_at: Date;
|
|
1100
|
+
}
|
|
1101
|
+
interface IPlanFeature {
|
|
1102
|
+
title: string;
|
|
1103
|
+
description: string | null;
|
|
1104
|
+
sort_order: number;
|
|
1105
|
+
is_active: boolean | null;
|
|
1106
|
+
}
|
|
1107
|
+
type PlanKind = "addon" | "base";
|
|
1108
|
+
interface IPlan {
|
|
1109
|
+
name: string;
|
|
1110
|
+
id: string;
|
|
1111
|
+
created_at: Date;
|
|
1112
|
+
updated_at: Date;
|
|
1113
|
+
plan_group_id: string;
|
|
1114
|
+
description: string;
|
|
1115
|
+
kind: PlanKind;
|
|
1116
|
+
is_trial: boolean;
|
|
1117
|
+
price: IPlanPrice[];
|
|
1118
|
+
features: IPlanFeature[];
|
|
1119
|
+
recommended: boolean;
|
|
1120
|
+
is_enterprise: boolean;
|
|
1121
|
+
plan_group: IPlanGroup;
|
|
1122
|
+
}
|
|
1123
|
+
interface ISubscription {
|
|
1124
|
+
object: string;
|
|
1125
|
+
id: string;
|
|
1126
|
+
customer_details: Record<string, unknown>;
|
|
1127
|
+
payment_details: Record<string, unknown>;
|
|
1128
|
+
start_date: string;
|
|
1129
|
+
end_date: string;
|
|
1130
|
+
plan: Partial<Pick<IPlan, "id" | "name" | "is_enterprise">>;
|
|
1131
|
+
price: Partial<IPlanPrice>;
|
|
1132
|
+
cancelled_at: string | null;
|
|
1133
|
+
cancel_at_next_billing_date: boolean;
|
|
1134
|
+
status: "active" | "cancelled" | "past_due" | "trialing" | "incomplete" | "trial_expired";
|
|
1135
|
+
plan_id?: string;
|
|
1136
|
+
price_id?: string;
|
|
1137
|
+
}
|
|
1138
|
+
interface IDefaultPermissionsObject {
|
|
1139
|
+
status?: "enabled" | "disabled" | "hidden";
|
|
1140
|
+
create?: boolean;
|
|
1141
|
+
modify?: boolean;
|
|
1142
|
+
delete?: boolean;
|
|
1143
|
+
archive?: boolean;
|
|
1144
|
+
duplicate?: boolean;
|
|
1145
|
+
export?: boolean;
|
|
1146
|
+
upload?: boolean;
|
|
1147
|
+
list_actions?: boolean;
|
|
1148
|
+
}
|
|
1149
|
+
type IModuleAccessControl = {
|
|
1150
|
+
dashboard_config: IDefaultPermissionsObject;
|
|
1151
|
+
studio_config: IDefaultPermissionsObject & {
|
|
1152
|
+
addBlocks: boolean;
|
|
1153
|
+
version: string;
|
|
1154
|
+
preview_url: string | null;
|
|
1155
|
+
modules: {
|
|
1156
|
+
my_blocks: IDefaultPermissionsObject;
|
|
1157
|
+
};
|
|
1158
|
+
};
|
|
1159
|
+
collections_config: IDefaultPermissionsObject & {
|
|
1160
|
+
modules: {
|
|
1161
|
+
records: IDefaultPermissionsObject;
|
|
1162
|
+
};
|
|
1163
|
+
};
|
|
1164
|
+
media_config: IDefaultPermissionsObject;
|
|
1165
|
+
events_config: IDefaultPermissionsObject;
|
|
1166
|
+
blogs_config: IDefaultPermissionsObject;
|
|
1167
|
+
memberships_config: IDefaultPermissionsObject;
|
|
1168
|
+
insights_config: IDefaultPermissionsObject;
|
|
1169
|
+
settings_config: IDefaultPermissionsObject;
|
|
1170
|
+
};
|
|
1171
|
+
interface IFeatureFlags extends Partial<IModuleAccessControl> {
|
|
1172
|
+
branding?: boolean;
|
|
1173
|
+
}
|
|
1174
|
+
interface IEmailAddress {
|
|
1175
|
+
id: string;
|
|
1176
|
+
email: string;
|
|
1177
|
+
is_primary: boolean;
|
|
1178
|
+
}
|
|
1179
|
+
interface IPhoneNumber {
|
|
1180
|
+
id: string;
|
|
1181
|
+
phone: string;
|
|
1182
|
+
is_primary: boolean;
|
|
1183
|
+
}
|
|
1184
|
+
interface IAddress {
|
|
1185
|
+
id: string;
|
|
1186
|
+
unit?: string;
|
|
1187
|
+
street: string;
|
|
1188
|
+
landmark?: string;
|
|
1189
|
+
city: string;
|
|
1190
|
+
state: string;
|
|
1191
|
+
zip: string;
|
|
1192
|
+
country: string;
|
|
1193
|
+
is_primary: boolean;
|
|
1194
|
+
}
|
|
1195
|
+
interface IContactInfo {
|
|
1196
|
+
emails?: IEmailAddress[];
|
|
1197
|
+
phones?: IPhoneNumber[];
|
|
1198
|
+
addresses?: IAddress[];
|
|
1199
|
+
}
|
|
1200
|
+
interface IWorkspace {
|
|
1201
|
+
id: string;
|
|
1202
|
+
public_id: string;
|
|
1203
|
+
name: string;
|
|
1204
|
+
slug: string;
|
|
1205
|
+
domain: string;
|
|
1206
|
+
status: string;
|
|
1207
|
+
logo?: IMediaObject | null;
|
|
1208
|
+
deployed_at?: null;
|
|
1209
|
+
created_at: string;
|
|
1210
|
+
updated_at: string;
|
|
1211
|
+
deleted_at?: null;
|
|
1212
|
+
integrations?: ILevoIntegrationList | ILevoIntegrationInstance[];
|
|
1213
|
+
description: any;
|
|
1214
|
+
icon: IMediaObject | null;
|
|
1215
|
+
workspace_id: string;
|
|
1216
|
+
industry: string;
|
|
1217
|
+
countries: string[];
|
|
1218
|
+
info: {
|
|
1219
|
+
locations?: {
|
|
1220
|
+
place_name: string;
|
|
1221
|
+
}[];
|
|
1222
|
+
ai_onboarding?: {
|
|
1223
|
+
business_profile: {
|
|
1224
|
+
name: string;
|
|
1225
|
+
location: string;
|
|
1226
|
+
description: string;
|
|
1227
|
+
category: string;
|
|
1228
|
+
subcategory: string;
|
|
1229
|
+
category_confidence: number;
|
|
1230
|
+
};
|
|
1231
|
+
};
|
|
1232
|
+
contact_info?: IContactInfo;
|
|
1233
|
+
social_media?: {
|
|
1234
|
+
facebook?: string;
|
|
1235
|
+
twitter?: string;
|
|
1236
|
+
linkedin?: string;
|
|
1237
|
+
instagram?: string;
|
|
1238
|
+
};
|
|
1239
|
+
};
|
|
1240
|
+
settings: {
|
|
1241
|
+
head_code?: string;
|
|
1242
|
+
[key: string]: any;
|
|
1243
|
+
};
|
|
1244
|
+
page_count: number;
|
|
1245
|
+
domain_count: number;
|
|
1246
|
+
feature_flag?: IFeatureFlags;
|
|
1247
|
+
onboarded_at?: string | null;
|
|
1248
|
+
theme?: any;
|
|
1249
|
+
host_domain: string | null;
|
|
1250
|
+
proxy_domain: string | null;
|
|
1251
|
+
subscription: ISubscription | null;
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
interface IGeocoderLocation extends Partial<google.maps.places.PlaceResult> {
|
|
1255
|
+
place_name: string;
|
|
1256
|
+
latitude?: number;
|
|
1257
|
+
longitude?: number;
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
declare namespace LevoEvent {
|
|
1261
|
+
interface Root {
|
|
1262
|
+
_id: string;
|
|
1263
|
+
cover_image: IMediaObject | null;
|
|
1264
|
+
contact_email?: string;
|
|
1265
|
+
title: string;
|
|
1266
|
+
kind: "virtual" | "in_person";
|
|
1267
|
+
timing: string;
|
|
1268
|
+
url: string | null;
|
|
1269
|
+
location: IGeocoderLocation | null;
|
|
1270
|
+
is_location_public?: boolean;
|
|
1271
|
+
is_url_public?: boolean;
|
|
1272
|
+
starts_at?: string | null;
|
|
1273
|
+
ends_at?: string | null;
|
|
1274
|
+
cadence: string;
|
|
1275
|
+
repeat_every: number;
|
|
1276
|
+
description: string;
|
|
1277
|
+
slug: string;
|
|
1278
|
+
status: "draft" | "canceled" | "published";
|
|
1279
|
+
accept_registration: boolean;
|
|
1280
|
+
max_capacity: number;
|
|
1281
|
+
banners: IMediaObject[];
|
|
1282
|
+
created_at: Date;
|
|
1283
|
+
created_by: string;
|
|
1284
|
+
updated_at: Date;
|
|
1285
|
+
updated_by: string;
|
|
1286
|
+
external_ticketing?: string;
|
|
1287
|
+
ticket_order?: "alphabetical-asc" | "alphabetical-desc" | "price-asc" | "price-desc" | "custom";
|
|
1288
|
+
series?: {
|
|
1289
|
+
_id: string;
|
|
1290
|
+
slug: string;
|
|
1291
|
+
name: string;
|
|
1292
|
+
description?: string;
|
|
1293
|
+
cover_image?: IMediaObject | null;
|
|
1294
|
+
status?: string;
|
|
1295
|
+
created_at?: string;
|
|
1296
|
+
updated_at?: string;
|
|
1297
|
+
};
|
|
1298
|
+
}
|
|
1299
|
+
namespace Ticket {
|
|
1300
|
+
interface Root {
|
|
1301
|
+
_id: string;
|
|
1302
|
+
event: string;
|
|
1303
|
+
icon: IMediaObject | null;
|
|
1304
|
+
title: string;
|
|
1305
|
+
description: string;
|
|
1306
|
+
quantity: number | null;
|
|
1307
|
+
starts_at: Date | null;
|
|
1308
|
+
ends_at: Date | null;
|
|
1309
|
+
waitlist_enabled: boolean;
|
|
1310
|
+
requires_approval: boolean;
|
|
1311
|
+
hidden: boolean;
|
|
1312
|
+
allow_to_upgrade: boolean;
|
|
1313
|
+
include_in_upgrade: boolean;
|
|
1314
|
+
enforce_max_quantity: boolean;
|
|
1315
|
+
status: string;
|
|
1316
|
+
offerings: string[];
|
|
1317
|
+
coupons: string[];
|
|
1318
|
+
sale_count: number;
|
|
1319
|
+
currency: string;
|
|
1320
|
+
unit_amount: number;
|
|
1321
|
+
base_price: number;
|
|
1322
|
+
created_at: Date | string;
|
|
1323
|
+
created_by: string;
|
|
1324
|
+
updated_at: Date | string;
|
|
1325
|
+
updated_by: string;
|
|
1326
|
+
}
|
|
1327
|
+
type Create = Pick<Root, "title" | "description" | "quantity" | "starts_at" | "ends_at" | "waitlist_enabled" | "hidden" | "enforce_max_quantity" | "offerings" | "coupons">;
|
|
1328
|
+
}
|
|
1329
|
+
namespace Coupon {
|
|
1330
|
+
interface Root {
|
|
1331
|
+
_id: string;
|
|
1332
|
+
event: string;
|
|
1333
|
+
code: string;
|
|
1334
|
+
kind: string;
|
|
1335
|
+
percent_off: number | null;
|
|
1336
|
+
amount_off: number | null;
|
|
1337
|
+
currency: string;
|
|
1338
|
+
starts_at: Date | null;
|
|
1339
|
+
expires_at: Date | null;
|
|
1340
|
+
max_redemptions: number | null;
|
|
1341
|
+
minimum_amount: number | null;
|
|
1342
|
+
is_public: boolean;
|
|
1343
|
+
created_at: Date;
|
|
1344
|
+
created_by: string;
|
|
1345
|
+
updated_at: Date;
|
|
1346
|
+
updated_by: string;
|
|
1347
|
+
status: string;
|
|
1348
|
+
tickets: string[];
|
|
1349
|
+
}
|
|
1350
|
+
type Create = Pick<Root, "code" | "kind" | "percent_off" | "amount_off" | "currency" | "starts_at" | "expires_at" | "max_redemptions" | "minimum_amount" | "is_public" | "tickets">;
|
|
1351
|
+
type CreateBulk = Pick<Root, "kind" | "percent_off" | "amount_off" | "currency" | "starts_at" | "expires_at" | "max_redemptions" | "minimum_amount" | "is_public" | "tickets"> & {
|
|
1352
|
+
coupon_count: number;
|
|
1353
|
+
code_length: number;
|
|
1354
|
+
};
|
|
1355
|
+
type Update = Partial<Pick<Root, "code" | "kind" | "percent_off" | "amount_off" | "currency" | "starts_at" | "expires_at" | "max_redemptions" | "minimum_amount" | "is_public" | "tickets">>;
|
|
1356
|
+
type Validate = {
|
|
1357
|
+
base_amount: number;
|
|
1358
|
+
sale_amount: number;
|
|
1359
|
+
discountable_amount: number;
|
|
1360
|
+
discount: number;
|
|
1361
|
+
};
|
|
1362
|
+
}
|
|
1363
|
+
namespace Offering {
|
|
1364
|
+
interface Root {
|
|
1365
|
+
_id: string;
|
|
1366
|
+
event: string;
|
|
1367
|
+
title: string;
|
|
1368
|
+
description: string;
|
|
1369
|
+
enabled: boolean;
|
|
1370
|
+
checkin_count: number;
|
|
1371
|
+
tickets: string[];
|
|
1372
|
+
attendees: string[];
|
|
1373
|
+
created_at: Date;
|
|
1374
|
+
created_by: string;
|
|
1375
|
+
updated_at: Date;
|
|
1376
|
+
updated_by: string;
|
|
1377
|
+
}
|
|
1378
|
+
type Create = Pick<Root, "title" | "description" | "enabled" | "tickets">;
|
|
1379
|
+
type Update = Partial<Pick<Root, "title" | "description" | "enabled" | "tickets">>;
|
|
1380
|
+
}
|
|
1381
|
+
namespace Attendee {
|
|
1382
|
+
interface Root {
|
|
1383
|
+
_id: string;
|
|
1384
|
+
public_id: string;
|
|
1385
|
+
name: string;
|
|
1386
|
+
email: string;
|
|
1387
|
+
mobile: string | null;
|
|
1388
|
+
event: string;
|
|
1389
|
+
booking: Booking.Root;
|
|
1390
|
+
ticket: Pick<LevoEvent.Ticket.Root, "_id" | "title" | "currency" | "quantity" | "status" | "unit_amount">;
|
|
1391
|
+
price: string;
|
|
1392
|
+
account: string | null;
|
|
1393
|
+
status: string;
|
|
1394
|
+
created_at: Date;
|
|
1395
|
+
updated_at: Date;
|
|
1396
|
+
}
|
|
1397
|
+
}
|
|
1398
|
+
namespace Booking {
|
|
1399
|
+
interface Root {
|
|
1400
|
+
_id: string;
|
|
1401
|
+
slug: string;
|
|
1402
|
+
public_id: string;
|
|
1403
|
+
quantity: number;
|
|
1404
|
+
unit_amount: number;
|
|
1405
|
+
discount: number;
|
|
1406
|
+
currency: string;
|
|
1407
|
+
payment_link: string | null;
|
|
1408
|
+
account: string | null;
|
|
1409
|
+
event: string;
|
|
1410
|
+
coupon: string | null;
|
|
1411
|
+
code: string | null;
|
|
1412
|
+
status: string;
|
|
1413
|
+
paid: boolean;
|
|
1414
|
+
info: Record<string, any>;
|
|
1415
|
+
qr_image: IMediaObject & {
|
|
1416
|
+
width: number;
|
|
1417
|
+
height: number;
|
|
1418
|
+
};
|
|
1419
|
+
created_at: Date;
|
|
1420
|
+
updated_at: Date;
|
|
1421
|
+
attendees: LevoEvent.Attendee.Root[];
|
|
1422
|
+
}
|
|
1423
|
+
type Create = Omit<Pick<Root, "event" | "coupon">, "attendees"> & {
|
|
1424
|
+
attendees: Mandatory<LevoEvent.Attendee.Root, "name" | "ticket" | "email">;
|
|
1425
|
+
};
|
|
1426
|
+
}
|
|
1427
|
+
namespace Series {
|
|
1428
|
+
interface Root {
|
|
1429
|
+
_id: string;
|
|
1430
|
+
slug: string;
|
|
1431
|
+
name: string;
|
|
1432
|
+
description: string;
|
|
1433
|
+
cover_image: string | null;
|
|
1434
|
+
status: "published" | string;
|
|
1435
|
+
created_at: string;
|
|
1436
|
+
updated_at: string;
|
|
1437
|
+
events: any[];
|
|
1438
|
+
}
|
|
1439
|
+
interface Create {
|
|
1440
|
+
name: string;
|
|
1441
|
+
}
|
|
1442
|
+
interface Update {
|
|
1443
|
+
name: string;
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
}
|
|
1447
|
+
/**
|
|
1448
|
+
* Main Object
|
|
1449
|
+
*/
|
|
1450
|
+
interface IAttendee {
|
|
1451
|
+
checkin_at?: Date | null;
|
|
1452
|
+
_id: string;
|
|
1453
|
+
public_id: string;
|
|
1454
|
+
name: string;
|
|
1455
|
+
email: string;
|
|
1456
|
+
mobile: string | null;
|
|
1457
|
+
event: string;
|
|
1458
|
+
booking: string;
|
|
1459
|
+
ticket: Record<string, string>;
|
|
1460
|
+
price: string;
|
|
1461
|
+
account?: any;
|
|
1462
|
+
status: string;
|
|
1463
|
+
created_at: string;
|
|
1464
|
+
updated_at: string;
|
|
1465
|
+
}
|
|
1466
|
+
interface IBooking {
|
|
1467
|
+
_id: string;
|
|
1468
|
+
public_id: string;
|
|
1469
|
+
quantity: number;
|
|
1470
|
+
unit_amount: number;
|
|
1471
|
+
event: string;
|
|
1472
|
+
currency: string;
|
|
1473
|
+
account: string;
|
|
1474
|
+
coupon?: null;
|
|
1475
|
+
status: string;
|
|
1476
|
+
paid: boolean;
|
|
1477
|
+
discount: number;
|
|
1478
|
+
created_at: string;
|
|
1479
|
+
updated_at: string;
|
|
1480
|
+
attendees?: IAttendee[];
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
declare const FORUM_POST_KIND: {
|
|
1484
|
+
readonly post: "post";
|
|
1485
|
+
readonly poll: "poll";
|
|
1486
|
+
readonly gallery: "gallery";
|
|
1487
|
+
readonly link: "link";
|
|
1488
|
+
};
|
|
1489
|
+
declare const ForumPostKindExpandedList: Array<keyof typeof FORUM_POST_KIND>;
|
|
1490
|
+
type ForumPostKind = (typeof ForumPostKindExpandedList)[number];
|
|
1491
|
+
interface IForumPostOption {
|
|
1492
|
+
_id: string;
|
|
1493
|
+
count: number;
|
|
1494
|
+
label: string;
|
|
1495
|
+
}
|
|
1496
|
+
interface IForumPostLinkMetaData {
|
|
1497
|
+
meta_title: string;
|
|
1498
|
+
meta_description: string;
|
|
1499
|
+
og_image: IMediaObject | null;
|
|
1500
|
+
}
|
|
1501
|
+
interface IForumPost {
|
|
1502
|
+
_id: string;
|
|
1503
|
+
comments_count: number;
|
|
1504
|
+
created_at: string;
|
|
1505
|
+
created_by?: ILevoMembership.Account | null;
|
|
1506
|
+
expires_at?: string | null;
|
|
1507
|
+
kind: ForumPostKind;
|
|
1508
|
+
upvote_count: number;
|
|
1509
|
+
upvoted_at: string | null;
|
|
1510
|
+
downvote_count: number;
|
|
1511
|
+
downvoted_at: string | null;
|
|
1512
|
+
media: IMediaObject[];
|
|
1513
|
+
metadata: Partial<IForumPostLinkMetaData> | null;
|
|
1514
|
+
published_at: string | null;
|
|
1515
|
+
show_participant_list: boolean;
|
|
1516
|
+
show_participant_vote: boolean;
|
|
1517
|
+
slug: string;
|
|
1518
|
+
url: string;
|
|
1519
|
+
title: string;
|
|
1520
|
+
content?: string;
|
|
1521
|
+
updated_at: string;
|
|
1522
|
+
deleted_at: string | null;
|
|
1523
|
+
deleted_by: string | null;
|
|
1524
|
+
vote_count?: number | null;
|
|
1525
|
+
total_votes?: number | null;
|
|
1526
|
+
user_voted_option?: string | null;
|
|
1527
|
+
options: IForumPostOption[];
|
|
1528
|
+
thread: string | null;
|
|
1529
|
+
resource_type: string;
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
declare const COMMENT_STATUS: {
|
|
1533
|
+
readonly active: "active";
|
|
1534
|
+
readonly edited: "edited";
|
|
1535
|
+
readonly deleted: "deleted";
|
|
1536
|
+
readonly pending_moderation: "pending_moderation";
|
|
1537
|
+
};
|
|
1538
|
+
type CommentStatus = (typeof COMMENT_STATUS)[keyof typeof COMMENT_STATUS];
|
|
1539
|
+
/**
|
|
1540
|
+
* Comment thread settings
|
|
1541
|
+
*/
|
|
1542
|
+
interface ICommentThreadSettings {
|
|
1543
|
+
auto_approve: boolean;
|
|
1544
|
+
max_depth: number;
|
|
1545
|
+
moderation_enabled: boolean;
|
|
1546
|
+
}
|
|
1547
|
+
/**
|
|
1548
|
+
* Comment thread metadata
|
|
1549
|
+
*/
|
|
1550
|
+
interface IThread {
|
|
1551
|
+
_id: string;
|
|
1552
|
+
comment_count: number;
|
|
1553
|
+
created_at: string;
|
|
1554
|
+
last_comment_at: string;
|
|
1555
|
+
resource_id: string;
|
|
1556
|
+
resource_type: string;
|
|
1557
|
+
settings: ICommentThreadSettings;
|
|
1558
|
+
status: string;
|
|
1559
|
+
updated_at: string;
|
|
1560
|
+
}
|
|
1561
|
+
interface IComment {
|
|
1562
|
+
_id: string;
|
|
1563
|
+
author: ILevoMembership.Account | null;
|
|
1564
|
+
content: string;
|
|
1565
|
+
created_at: string;
|
|
1566
|
+
edited_at: string | null;
|
|
1567
|
+
flag_count: number;
|
|
1568
|
+
parent: IComment | null;
|
|
1569
|
+
status: string;
|
|
1570
|
+
thread: IThread;
|
|
1571
|
+
updated_at: string;
|
|
1572
|
+
moderation_reason: string;
|
|
1573
|
+
reply_count: number;
|
|
1574
|
+
replies: IComment[];
|
|
1575
|
+
user_flagged: boolean;
|
|
1576
|
+
user_liked: boolean;
|
|
1577
|
+
}
|
|
1578
|
+
interface ThreadId {
|
|
1579
|
+
_id: string;
|
|
1580
|
+
comment_count: number;
|
|
1581
|
+
created_at: string;
|
|
1582
|
+
last_comment_at: any;
|
|
1583
|
+
resource_id: string;
|
|
1584
|
+
resource_type: string;
|
|
1585
|
+
settings: Settings;
|
|
1586
|
+
status: string;
|
|
1587
|
+
updated_at: string;
|
|
1588
|
+
}
|
|
1589
|
+
interface Settings {
|
|
1590
|
+
auto_approve: boolean;
|
|
1591
|
+
ai_moderation: boolean;
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1594
|
+
interface ICoreOptions {
|
|
1595
|
+
appName?: string;
|
|
1596
|
+
workspace: WorkspaceID | null;
|
|
1597
|
+
/** Site ID for analytics tracking */
|
|
1598
|
+
site?: string | null;
|
|
1599
|
+
apiUrl: string;
|
|
1600
|
+
insightsUrl?: string;
|
|
1601
|
+
/** Direct insights API URL for third-party mode (when reverse proxy unavailable) */
|
|
1602
|
+
directInsightsUrl?: string;
|
|
1603
|
+
/** Insights mode: 'auto' (default) detects via ping, 'proxy' forces reverse proxy, 'direct' forces direct API */
|
|
1604
|
+
insightsMode?: "auto" | "proxy" | "direct";
|
|
1605
|
+
/** Timeout for proxy ping detection in ms (default: 3000) */
|
|
1606
|
+
pingTimeout?: number;
|
|
1607
|
+
NODE_ENV: string;
|
|
1608
|
+
APP_MODE: string;
|
|
1609
|
+
}
|
|
1610
|
+
type WorkspaceID = `W${string}`;
|
|
1611
|
+
|
|
1612
|
+
interface IPageContext {
|
|
1613
|
+
url: string;
|
|
1614
|
+
id?: string;
|
|
1615
|
+
referrer?: string;
|
|
1616
|
+
title?: string;
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1619
|
+
interface IBatchOptions {
|
|
1620
|
+
logApiUrl?: string;
|
|
1621
|
+
}
|
|
1622
|
+
|
|
1623
|
+
declare enum LogLevel {
|
|
1624
|
+
debug = 0,
|
|
1625
|
+
info = 1,
|
|
1626
|
+
warn = 2,
|
|
1627
|
+
error = 3,
|
|
1628
|
+
off = 100
|
|
1629
|
+
}
|
|
1630
|
+
interface ILoggerOptions extends IBatchOptions {
|
|
1631
|
+
level?: LogLevel;
|
|
1632
|
+
enableRemote?: boolean;
|
|
1633
|
+
context?: Record<string, any>;
|
|
1634
|
+
}
|
|
1635
|
+
|
|
1636
|
+
interface ILevoClientOptions extends ICoreOptions {
|
|
1637
|
+
pageContext?: IPageContext | null;
|
|
1638
|
+
loggerOptions?: ILoggerOptions;
|
|
1639
|
+
}
|
|
1640
|
+
declare const createLevoClient: (options: ILevoClientOptions) => {
|
|
1641
|
+
readonly apiUrl: string;
|
|
1642
|
+
readonly insightsUrl: string;
|
|
1643
|
+
readonly workspace: `W${string}` | null;
|
|
1644
|
+
readonly audience: {
|
|
1645
|
+
readonly instance: analytics.AnalyticsInstance | null;
|
|
1646
|
+
readonly is_identified: boolean;
|
|
1647
|
+
storage_keys: {
|
|
1648
|
+
identify: string;
|
|
1649
|
+
open_tabs: string;
|
|
1650
|
+
current_tab: string;
|
|
1651
|
+
all_tabs: string;
|
|
1652
|
+
device_token: string;
|
|
1653
|
+
session_token: string;
|
|
1654
|
+
mode: string;
|
|
1655
|
+
};
|
|
1656
|
+
initiate: (properties: ILevoAudience.Properties) => Promise<any>;
|
|
1657
|
+
identify: (options?: {
|
|
1658
|
+
withLock?: boolean;
|
|
1659
|
+
}) => Promise<void>;
|
|
1660
|
+
track: <T extends ILevoAudience.Properties>(event: AnalyticsEventType, properties: T & ILevoAudience.Properties) => Promise<any>;
|
|
1661
|
+
bounce: (properties: ILevoAudience.Properties) => Promise<void>;
|
|
1662
|
+
destroy: () => void;
|
|
1663
|
+
};
|
|
1664
|
+
readonly blog: {
|
|
1665
|
+
getAllBlogs: (blog_key: string, data?: LevoQuery.FindQuery, options?: BlogClient.OptionParams) => Promise<IResponseMultiple<BlogClient.BlogData>>;
|
|
1666
|
+
getSingleBlog: (blog_key: string, slug: string, options?: BlogClient.OptionParams) => Promise<IResponseSingle<BlogClient.BlogData>>;
|
|
1667
|
+
};
|
|
1668
|
+
readonly membership: {
|
|
1669
|
+
getOAuthURL: (options?: wretch.WretchOptions) => Promise<ILevoMembership.OAuthURLList>;
|
|
1670
|
+
signOut: <T = {
|
|
1671
|
+
status: boolean;
|
|
1672
|
+
}>(options?: wretch.WretchOptions) => Promise<T>;
|
|
1673
|
+
getMe: <T = ILevoMembership.Account>(options?: wretch.WretchOptions) => Promise<T>;
|
|
1674
|
+
updateMe: <T = ILevoMembership.Account>(data: ILevoMembership.Request.UpdateMe, options?: wretch.WretchOptions) => Promise<T>;
|
|
1675
|
+
createPassword: <T = ILevoMembership.Account>(data: ILevoMembership.Request.CreatePassword, options?: wretch.WretchOptions) => Promise<T>;
|
|
1676
|
+
isLoggedIn: <T = ILevoMembership.Account>(options?: wretch.WretchOptions) => Promise<T | null>;
|
|
1677
|
+
requestMagicLink: (data: ILevoMembership.Request.RequestMagicLink, options?: wretch.WretchOptions) => Promise<Pick<ILevoMembership.Otp, "_id" | "content">>;
|
|
1678
|
+
requestOtp: (data: ILevoMembership.Request.RequestOtp, options?: wretch.WretchOptions) => Promise<Pick<ILevoMembership.Otp, "_id" | "content">>;
|
|
1679
|
+
signInWithOtp: <T = ILevoMembership.Account>(data: ILevoMembership.Request.SignInWithOtp, options?: wretch.WretchOptions) => Promise<T>;
|
|
1680
|
+
signInWithPassword: <T = ILevoMembership.Account>(data: ILevoMembership.Request.SignInWithPassword, options?: wretch.WretchOptions) => Promise<T>;
|
|
1681
|
+
signUpWithPassword: <T = ILevoMembership.Account>(data: ILevoMembership.Request.SignUpWithPassword, options?: wretch.WretchOptions) => Promise<T>;
|
|
1682
|
+
};
|
|
1683
|
+
readonly collection: {
|
|
1684
|
+
getAllCollections: (data?: LevoQuery.FindQuery<"id" | "workspace_id" | "description" | "created_at" | "updated_at" | "key" | "readonly" | "hidden" | "icon" | "on_submit" | "on_update" | "name" | "sections" | "views" | "title_field" | "email_field" | "mobile_field" | "settings" | "module_name" | "allow_draft">, options?: wretch.WretchOptions) => Promise<IResponseMultiple<ILemaCollection>>;
|
|
1685
|
+
getCollectionByIDExpanded: <T = ILemaCollection>(id: string, options?: wretch.WretchOptions) => Promise<IResponseSingle<T>>;
|
|
1686
|
+
createCollection: (data: ILemaCollection) => Promise<IResponseSingle<ILemaCollection>>;
|
|
1687
|
+
saveCollectionData: ({ collection_id, data, options, }: {
|
|
1688
|
+
collection_id: string;
|
|
1689
|
+
data: any;
|
|
1690
|
+
options?: wretch.WretchOptions;
|
|
1691
|
+
}) => Promise<IResponseSingle<any>>;
|
|
1692
|
+
getCollectionContentList: ({ collection_key, page, search, limit, where, }: {
|
|
1693
|
+
collection_key: string;
|
|
1694
|
+
} & LevoQuery.FindQuery) => Promise<IResponseMultiple<Record<string, unknown>>>;
|
|
1695
|
+
saveDraftEntry: (collection_key: string, data: any) => Promise<IResponseSingle<IDraftEntry>>;
|
|
1696
|
+
editDraftEntry: (collection_key: string, id: string, data: any) => Promise<IResponseSingle<IDraftEntry>>;
|
|
1697
|
+
getDraftEntry: (collection_key: string) => Promise<IResponseMultiple<IDraftEntry>>;
|
|
1698
|
+
submitDraftEntry: (collection_key: string, data: any) => Promise<IResponseSingle<IDraftEntry>>;
|
|
1699
|
+
};
|
|
1700
|
+
readonly media: {
|
|
1701
|
+
mediaBulkUpload: (formData: FormData, options?: wretch.WretchOptions) => Promise<IResponseMultiple<IMedia>>;
|
|
1702
|
+
getAllMedia: (data?: LevoQuery.FindQuery) => Promise<IResponseMultiple<IMedia>>;
|
|
1703
|
+
};
|
|
1704
|
+
readonly logger: {
|
|
1705
|
+
debug: (...args: any[]) => void;
|
|
1706
|
+
info: (...args: any[]) => void;
|
|
1707
|
+
warn: (...args: any[]) => void;
|
|
1708
|
+
error: (...args: any[]) => void;
|
|
1709
|
+
};
|
|
1710
|
+
readonly fetch: wretch_addons_queryString.QueryStringAddon & wretch.Wretch<wretch_addons_queryString.QueryStringAddon, unknown, undefined>;
|
|
1711
|
+
readonly APP_MODE: string;
|
|
1712
|
+
readonly pageContext: IPageContext | null;
|
|
1713
|
+
updatePageContext: (newContext: IPageContext | null) => void;
|
|
1714
|
+
updateWorkspace: (workspace: string | null) => void;
|
|
1715
|
+
};
|
|
1716
|
+
type ILevoClient = ReturnType<typeof createLevoClient>;
|
|
1717
|
+
|
|
1718
|
+
declare const formatImagePath: (string: string) => string;
|
|
1719
|
+
|
|
1720
|
+
/**
|
|
1721
|
+
* Enhanced error class that matches backend response structure
|
|
1722
|
+
*/
|
|
1723
|
+
declare class LevoError extends Error {
|
|
1724
|
+
code: string;
|
|
1725
|
+
title: string;
|
|
1726
|
+
status: number;
|
|
1727
|
+
type?: string;
|
|
1728
|
+
errors?: IFieldError[];
|
|
1729
|
+
constructor(data: IErrorContent);
|
|
1730
|
+
/**
|
|
1731
|
+
* Get validation errors for form fields
|
|
1732
|
+
*/
|
|
1733
|
+
get fieldErrors(): IFieldError[];
|
|
1734
|
+
/**
|
|
1735
|
+
* Check if this is a validation error with field-specific errors
|
|
1736
|
+
*/
|
|
1737
|
+
get hasFieldErrors(): boolean;
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
declare const getLevoError: (error: any) => LevoError;
|
|
1741
|
+
|
|
1742
|
+
/**
|
|
1743
|
+
* @example
|
|
1744
|
+
*
|
|
1745
|
+
* const lock = new LocalStorageLock("myResource");
|
|
1746
|
+
* if (lock.acquireLock()) {
|
|
1747
|
+
* console.log("Lock acquired");
|
|
1748
|
+
* // Do some work...
|
|
1749
|
+
* lock.releaseLock();
|
|
1750
|
+
* } else {
|
|
1751
|
+
* console.log("Lock is already held by another instance");
|
|
1752
|
+
* }
|
|
1753
|
+
*
|
|
1754
|
+
*/
|
|
1755
|
+
declare class LocalStorageLock {
|
|
1756
|
+
private key;
|
|
1757
|
+
constructor(lockKey: string);
|
|
1758
|
+
acquireLock(expiryMs?: number): boolean;
|
|
1759
|
+
releaseLock(): void;
|
|
1760
|
+
isLocked(expiryMs?: number): boolean;
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1763
|
+
export { type AnalyticsEventType, AnalyticsEvents, AnalyticsEventsList, BlogClient, COMMENT_STATUS, type CommentStatus, CommonFieldIntefaces, CommonFieldInterfacesList, type ComparableFilter, ComparableOperators, ComplexFieldInterfacesList, type DeepPartial, FORUM_POST_KIND, type FieldFilter, FieldInterfaces, FieldInterfacesList, FieldKind, FieldKindList, type FieldType, type Filter, type ForumPostKind, ForumPostKindExpandedList, type IAddress, type IAttendee, type IAuthor, type IBlog, type IBlogCategory, type IBlogTag, type IBooking, type ICollectionLayout, type ICollectionLayoutOptions, type ICollectionQuery, type ICollectionValue, type ICollectionView, type ICollectionViews, type ICollectionsView, type IComment, type ICommentThreadSettings, type IContactInfo, type IContent, type IDefaultPermissionsObject, type IDraftEntry, type IEmailAddress, type IEmojiData, type IErrorContent, type IErrorParams, type IFaviconMedia, type IFaviconMediaObject, type IFeatureFlags, type IField, type IFieldError, type IFieldUpdate, type IFilter, type IForumPost, type IForumPostOption, type IGeocoderLocation, type IGroupBy, type IIcon, type IIconCat, type IIconData, type ILemaCollection, type ILemaCollectionRelationship, type ILemaField, type ILemaFieldOptions, type ILemaRelation, type ILemaRelationOnDelete, type ILemaSection, ILevoAudience, type ILevoClient, type ILevoClientOptions, type ILevoIntegrationInstance, type ILevoIntegrationList, ILevoMembership, type ILevoOAuthProvider, type IMe, type IMedia, type IMediaObject, type IMeta, type IModuleAccessControl, type INotificationData, type INotificationWithTrigger, type IPhoneNumber, type IPlan, type IPlanFeature, type IPlanGroup, type IPlanPrice, type IPost, type IResponseError, type IResponseMultiple, type IResponseMyCategory, type IResponseSingle, type ISchema, type ISection, type ISubscription, type IThread, type IWorkspace, LEVO_INTEGRATIONS, LEVO_INTEGRATIONS_LIST, LevoError, LevoEvent, LevoOAuthProviderList, LevoQuery, LocalStorageLock, type LogicalFilter, LogicalOperators, type Mandatory, MediaKind, MediaKindList, type PlanKind, type Prettify, type Settings, type ThreadId, type WithinFilterType, type WorkspaceID, createLevoClient, defaultByKinds, formatImagePath, formatsByInterface, getLevoError, interfaceKinds };
|