@wix/blog 1.0.289 → 1.0.290

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.
@@ -1,39 +1,127 @@
1
- type RESTFunctionDescriptor<T extends (...args: any[]) => any = (...args: any[]) => any> = (httpClient: HttpClient) => T;
2
- interface HttpClient {
3
- request<TResponse, TData = any>(req: RequestOptionsFactory<TResponse, TData>): Promise<HttpResponse<TResponse>>;
1
+ type HostModule$5<T, H extends Host$5> = {
2
+ __type: 'host';
3
+ create(host: H): T;
4
+ };
5
+ type HostModuleAPI$5<T extends HostModule$5<any, any>> = T extends HostModule$5<infer U, any> ? U : never;
6
+ type Host$5<Environment = unknown> = {
7
+ channel: {
8
+ observeState(callback: (props: unknown, environment: Environment) => unknown): {
9
+ disconnect: () => void;
10
+ } | Promise<{
11
+ disconnect: () => void;
12
+ }>;
13
+ };
14
+ environment?: Environment;
15
+ /**
16
+ * Optional bast url to use for API requests, for example `www.wixapis.com`
17
+ */
18
+ apiBaseUrl?: string;
19
+ /**
20
+ * Possible data to be provided by every host, for cross cutting concerns
21
+ * like internationalization, billing, etc.
22
+ */
23
+ essentials?: {
24
+ /**
25
+ * The language of the currently viewed session
26
+ */
27
+ language?: string;
28
+ /**
29
+ * The locale of the currently viewed session
30
+ */
31
+ locale?: string;
32
+ /**
33
+ * Any headers that should be passed through to the API requests
34
+ */
35
+ passThroughHeaders?: Record<string, string>;
36
+ };
37
+ };
38
+
39
+ type RESTFunctionDescriptor$5<T extends (...args: any[]) => any = (...args: any[]) => any> = (httpClient: HttpClient$5) => T;
40
+ interface HttpClient$5 {
41
+ request<TResponse, TData = any>(req: RequestOptionsFactory$5<TResponse, TData>): Promise<HttpResponse$5<TResponse>>;
4
42
  fetchWithAuth: typeof fetch;
5
43
  wixAPIFetch: (relativeUrl: string, options: RequestInit) => Promise<Response>;
44
+ getActiveToken?: () => string | undefined;
6
45
  }
7
- type RequestOptionsFactory<TResponse = any, TData = any> = (context: any) => RequestOptions<TResponse, TData>;
8
- type HttpResponse<T = any> = {
46
+ type RequestOptionsFactory$5<TResponse = any, TData = any> = (context: any) => RequestOptions$5<TResponse, TData>;
47
+ type HttpResponse$5<T = any> = {
9
48
  data: T;
10
49
  status: number;
11
50
  statusText: string;
12
51
  headers: any;
13
52
  request?: any;
14
53
  };
15
- type RequestOptions<_TResponse = any, Data = any> = {
54
+ type RequestOptions$5<_TResponse = any, Data = any> = {
16
55
  method: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
17
56
  url: string;
18
57
  data?: Data;
19
58
  params?: URLSearchParams;
20
- } & APIMetadata;
21
- type APIMetadata = {
59
+ } & APIMetadata$5;
60
+ type APIMetadata$5 = {
22
61
  methodFqn?: string;
23
62
  entityFqdn?: string;
24
63
  packageName?: string;
25
64
  };
26
- type BuildRESTFunction<T extends RESTFunctionDescriptor> = T extends RESTFunctionDescriptor<infer U> ? U : never;
27
- type EventDefinition<Payload = unknown, Type extends string = string> = {
65
+ type BuildRESTFunction$5<T extends RESTFunctionDescriptor$5> = T extends RESTFunctionDescriptor$5<infer U> ? U : never;
66
+ type EventDefinition$9<Payload = unknown, Type extends string = string> = {
28
67
  __type: 'event-definition';
29
68
  type: Type;
30
69
  isDomainEvent?: boolean;
31
70
  transformations?: (envelope: unknown) => Payload;
32
71
  __payload: Payload;
33
72
  };
34
- declare function EventDefinition<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition<Payload, Type>;
35
- type EventHandler<T extends EventDefinition> = (payload: T['__payload']) => void | Promise<void>;
36
- type BuildEventDefinition<T extends EventDefinition<any, string>> = (handler: EventHandler<T>) => void;
73
+ declare function EventDefinition$9<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition$9<Payload, Type>;
74
+ type EventHandler$9<T extends EventDefinition$9> = (payload: T['__payload']) => void | Promise<void>;
75
+ type BuildEventDefinition$9<T extends EventDefinition$9<any, string>> = (handler: EventHandler$9<T>) => void;
76
+
77
+ type ServicePluginMethodInput$5 = {
78
+ request: any;
79
+ metadata: any;
80
+ };
81
+ type ServicePluginContract$5 = Record<string, (payload: ServicePluginMethodInput$5) => unknown | Promise<unknown>>;
82
+ type ServicePluginMethodMetadata$5 = {
83
+ name: string;
84
+ primaryHttpMappingPath: string;
85
+ transformations: {
86
+ fromREST: (...args: unknown[]) => ServicePluginMethodInput$5;
87
+ toREST: (...args: unknown[]) => unknown;
88
+ };
89
+ };
90
+ type ServicePluginDefinition$5<Contract extends ServicePluginContract$5> = {
91
+ __type: 'service-plugin-definition';
92
+ componentType: string;
93
+ methods: ServicePluginMethodMetadata$5[];
94
+ __contract: Contract;
95
+ };
96
+ declare function ServicePluginDefinition$5<Contract extends ServicePluginContract$5>(componentType: string, methods: ServicePluginMethodMetadata$5[]): ServicePluginDefinition$5<Contract>;
97
+ type BuildServicePluginDefinition$5<T extends ServicePluginDefinition$5<any>> = (implementation: T['__contract']) => void;
98
+ declare const SERVICE_PLUGIN_ERROR_TYPE$5 = "wix_spi_error";
99
+
100
+ type RequestContext$5 = {
101
+ isSSR: boolean;
102
+ host: string;
103
+ protocol?: string;
104
+ };
105
+ type ResponseTransformer$5 = (data: any, headers?: any) => any;
106
+ /**
107
+ * Ambassador request options types are copied mostly from AxiosRequestConfig.
108
+ * They are copied and not imported to reduce the amount of dependencies (to reduce install time).
109
+ * https://github.com/axios/axios/blob/3f53eb6960f05a1f88409c4b731a40de595cb825/index.d.ts#L307-L315
110
+ */
111
+ type Method$5 = 'get' | 'GET' | 'delete' | 'DELETE' | 'head' | 'HEAD' | 'options' | 'OPTIONS' | 'post' | 'POST' | 'put' | 'PUT' | 'patch' | 'PATCH' | 'purge' | 'PURGE' | 'link' | 'LINK' | 'unlink' | 'UNLINK';
112
+ type AmbassadorRequestOptions$5<T = any> = {
113
+ _?: T;
114
+ url?: string;
115
+ method?: Method$5;
116
+ params?: any;
117
+ data?: any;
118
+ transformResponse?: ResponseTransformer$5 | ResponseTransformer$5[];
119
+ };
120
+ type AmbassadorFactory$5<Request, Response> = (payload: Request) => ((context: RequestContext$5) => AmbassadorRequestOptions$5<Response>) & {
121
+ __isAmbassador: boolean;
122
+ };
123
+ type AmbassadorFunctionDescriptor$5<Request = any, Response = any> = AmbassadorFactory$5<Request, Response>;
124
+ type BuildAmbassadorFunction$5<T extends AmbassadorFunctionDescriptor$5> = T extends AmbassadorFunctionDescriptor$5<infer Request, infer Response> ? (req: Request) => Promise<Response> : never;
37
125
 
38
126
  declare global {
39
127
  // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
@@ -42,6 +130,284 @@ declare global {
42
130
  }
43
131
  }
44
132
 
133
+ declare const emptyObjectSymbol$5: unique symbol;
134
+
135
+ /**
136
+ Represents a strictly empty plain object, the `{}` value.
137
+
138
+ When you annotate something as the type `{}`, it can be anything except `null` and `undefined`. This means that you cannot use `{}` to represent an empty plain object ([read more](https://stackoverflow.com/questions/47339869/typescript-empty-object-and-any-difference/52193484#52193484)).
139
+
140
+ @example
141
+ ```
142
+ import type {EmptyObject} from 'type-fest';
143
+
144
+ // The following illustrates the problem with `{}`.
145
+ const foo1: {} = {}; // Pass
146
+ const foo2: {} = []; // Pass
147
+ const foo3: {} = 42; // Pass
148
+ const foo4: {} = {a: 1}; // Pass
149
+
150
+ // With `EmptyObject` only the first case is valid.
151
+ const bar1: EmptyObject = {}; // Pass
152
+ const bar2: EmptyObject = 42; // Fail
153
+ const bar3: EmptyObject = []; // Fail
154
+ const bar4: EmptyObject = {a: 1}; // Fail
155
+ ```
156
+
157
+ Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<never, never>` do not work. See {@link https://github.com/sindresorhus/type-fest/issues/395 #395}.
158
+
159
+ @category Object
160
+ */
161
+ type EmptyObject$5 = {[emptyObjectSymbol$5]?: never};
162
+
163
+ /**
164
+ Returns a boolean for whether the two given types are equal.
165
+
166
+ @link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650
167
+ @link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796
168
+
169
+ Use-cases:
170
+ - If you want to make a conditional branch based on the result of a comparison of two types.
171
+
172
+ @example
173
+ ```
174
+ import type {IsEqual} from 'type-fest';
175
+
176
+ // This type returns a boolean for whether the given array includes the given item.
177
+ // `IsEqual` is used to compare the given array at position 0 and the given item and then return true if they are equal.
178
+ type Includes<Value extends readonly any[], Item> =
179
+ Value extends readonly [Value[0], ...infer rest]
180
+ ? IsEqual<Value[0], Item> extends true
181
+ ? true
182
+ : Includes<rest, Item>
183
+ : false;
184
+ ```
185
+
186
+ @category Type Guard
187
+ @category Utilities
188
+ */
189
+ type IsEqual$5<A, B> =
190
+ (<G>() => G extends A ? 1 : 2) extends
191
+ (<G>() => G extends B ? 1 : 2)
192
+ ? true
193
+ : false;
194
+
195
+ /**
196
+ Filter out keys from an object.
197
+
198
+ Returns `never` if `Exclude` is strictly equal to `Key`.
199
+ Returns `never` if `Key` extends `Exclude`.
200
+ Returns `Key` otherwise.
201
+
202
+ @example
203
+ ```
204
+ type Filtered = Filter<'foo', 'foo'>;
205
+ //=> never
206
+ ```
207
+
208
+ @example
209
+ ```
210
+ type Filtered = Filter<'bar', string>;
211
+ //=> never
212
+ ```
213
+
214
+ @example
215
+ ```
216
+ type Filtered = Filter<'bar', 'foo'>;
217
+ //=> 'bar'
218
+ ```
219
+
220
+ @see {Except}
221
+ */
222
+ type Filter$5<KeyType, ExcludeType> = IsEqual$5<KeyType, ExcludeType> extends true ? never : (KeyType extends ExcludeType ? never : KeyType);
223
+
224
+ type ExceptOptions$5 = {
225
+ /**
226
+ Disallow assigning non-specified properties.
227
+
228
+ Note that any omitted properties in the resulting type will be present in autocomplete as `undefined`.
229
+
230
+ @default false
231
+ */
232
+ requireExactProps?: boolean;
233
+ };
234
+
235
+ /**
236
+ Create a type from an object type without certain keys.
237
+
238
+ We recommend setting the `requireExactProps` option to `true`.
239
+
240
+ This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
241
+
242
+ This type was proposed to the TypeScript team, which declined it, saying they prefer that libraries implement stricter versions of the built-in types ([microsoft/TypeScript#30825](https://github.com/microsoft/TypeScript/issues/30825#issuecomment-523668235)).
243
+
244
+ @example
245
+ ```
246
+ import type {Except} from 'type-fest';
247
+
248
+ type Foo = {
249
+ a: number;
250
+ b: string;
251
+ };
252
+
253
+ type FooWithoutA = Except<Foo, 'a'>;
254
+ //=> {b: string}
255
+
256
+ const fooWithoutA: FooWithoutA = {a: 1, b: '2'};
257
+ //=> errors: 'a' does not exist in type '{ b: string; }'
258
+
259
+ type FooWithoutB = Except<Foo, 'b', {requireExactProps: true}>;
260
+ //=> {a: number} & Partial<Record<"b", never>>
261
+
262
+ const fooWithoutB: FooWithoutB = {a: 1, b: '2'};
263
+ //=> errors at 'b': Type 'string' is not assignable to type 'undefined'.
264
+ ```
265
+
266
+ @category Object
267
+ */
268
+ type Except$5<ObjectType, KeysType extends keyof ObjectType, Options extends ExceptOptions$5 = {requireExactProps: false}> = {
269
+ [KeyType in keyof ObjectType as Filter$5<KeyType, KeysType>]: ObjectType[KeyType];
270
+ } & (Options['requireExactProps'] extends true
271
+ ? Partial<Record<KeysType, never>>
272
+ : {});
273
+
274
+ /**
275
+ Extract the keys from a type where the value type of the key extends the given `Condition`.
276
+
277
+ Internally this is used for the `ConditionalPick` and `ConditionalExcept` types.
278
+
279
+ @example
280
+ ```
281
+ import type {ConditionalKeys} from 'type-fest';
282
+
283
+ interface Example {
284
+ a: string;
285
+ b: string | number;
286
+ c?: string;
287
+ d: {};
288
+ }
289
+
290
+ type StringKeysOnly = ConditionalKeys<Example, string>;
291
+ //=> 'a'
292
+ ```
293
+
294
+ To support partial types, make sure your `Condition` is a union of undefined (for example, `string | undefined`) as demonstrated below.
295
+
296
+ @example
297
+ ```
298
+ import type {ConditionalKeys} from 'type-fest';
299
+
300
+ type StringKeysAndUndefined = ConditionalKeys<Example, string | undefined>;
301
+ //=> 'a' | 'c'
302
+ ```
303
+
304
+ @category Object
305
+ */
306
+ type ConditionalKeys$5<Base, Condition> = NonNullable<
307
+ // Wrap in `NonNullable` to strip away the `undefined` type from the produced union.
308
+ {
309
+ // Map through all the keys of the given base type.
310
+ [Key in keyof Base]:
311
+ // Pick only keys with types extending the given `Condition` type.
312
+ Base[Key] extends Condition
313
+ // Retain this key since the condition passes.
314
+ ? Key
315
+ // Discard this key since the condition fails.
316
+ : never;
317
+
318
+ // Convert the produced object into a union type of the keys which passed the conditional test.
319
+ }[keyof Base]
320
+ >;
321
+
322
+ /**
323
+ Exclude keys from a shape that matches the given `Condition`.
324
+
325
+ This is useful when you want to create a new type with a specific set of keys from a shape. For example, you might want to exclude all the primitive properties from a class and form a new shape containing everything but the primitive properties.
326
+
327
+ @example
328
+ ```
329
+ import type {Primitive, ConditionalExcept} from 'type-fest';
330
+
331
+ class Awesome {
332
+ name: string;
333
+ successes: number;
334
+ failures: bigint;
335
+
336
+ run() {}
337
+ }
338
+
339
+ type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>;
340
+ //=> {run: () => void}
341
+ ```
342
+
343
+ @example
344
+ ```
345
+ import type {ConditionalExcept} from 'type-fest';
346
+
347
+ interface Example {
348
+ a: string;
349
+ b: string | number;
350
+ c: () => void;
351
+ d: {};
352
+ }
353
+
354
+ type NonStringKeysOnly = ConditionalExcept<Example, string>;
355
+ //=> {b: string | number; c: () => void; d: {}}
356
+ ```
357
+
358
+ @category Object
359
+ */
360
+ type ConditionalExcept$5<Base, Condition> = Except$5<
361
+ Base,
362
+ ConditionalKeys$5<Base, Condition>
363
+ >;
364
+
365
+ /**
366
+ * Descriptors are objects that describe the API of a module, and the module
367
+ * can either be a REST module or a host module.
368
+ * This type is recursive, so it can describe nested modules.
369
+ */
370
+ type Descriptors$5 = RESTFunctionDescriptor$5 | AmbassadorFunctionDescriptor$5 | HostModule$5<any, any> | EventDefinition$9<any> | ServicePluginDefinition$5<any> | {
371
+ [key: string]: Descriptors$5 | PublicMetadata$5 | any;
372
+ };
373
+ /**
374
+ * This type takes in a descriptors object of a certain Host (including an `unknown` host)
375
+ * and returns an object with the same structure, but with all descriptors replaced with their API.
376
+ * Any non-descriptor properties are removed from the returned object, including descriptors that
377
+ * do not match the given host (as they will not work with the given host).
378
+ */
379
+ type BuildDescriptors$5<T extends Descriptors$5, H extends Host$5<any> | undefined, Depth extends number = 5> = {
380
+ done: T;
381
+ recurse: T extends {
382
+ __type: typeof SERVICE_PLUGIN_ERROR_TYPE$5;
383
+ } ? never : T extends AmbassadorFunctionDescriptor$5 ? BuildAmbassadorFunction$5<T> : T extends RESTFunctionDescriptor$5 ? BuildRESTFunction$5<T> : T extends EventDefinition$9<any> ? BuildEventDefinition$9<T> : T extends ServicePluginDefinition$5<any> ? BuildServicePluginDefinition$5<T> : T extends HostModule$5<any, any> ? HostModuleAPI$5<T> : ConditionalExcept$5<{
384
+ [Key in keyof T]: T[Key] extends Descriptors$5 ? BuildDescriptors$5<T[Key], H, [
385
+ -1,
386
+ 0,
387
+ 1,
388
+ 2,
389
+ 3,
390
+ 4,
391
+ 5
392
+ ][Depth]> : never;
393
+ }, EmptyObject$5>;
394
+ }[Depth extends -1 ? 'done' : 'recurse'];
395
+ type PublicMetadata$5 = {
396
+ PACKAGE_NAME?: string;
397
+ };
398
+
399
+ declare global {
400
+ interface ContextualClient {
401
+ }
402
+ }
403
+ /**
404
+ * A type used to create concerete types from SDK descriptors in
405
+ * case a contextual client is available.
406
+ */
407
+ type MaybeContext$5<T extends Descriptors$5> = globalThis.ContextualClient extends {
408
+ host: Host$5;
409
+ } ? BuildDescriptors$5<T, globalThis.ContextualClient['host']> : T;
410
+
45
411
  /** BlogCache is the main entity of BlogCacheService */
46
412
  interface BlogCache {
47
413
  /**
@@ -748,7 +1114,7 @@ interface GetBlogCacheResponseNonNullableFields {
748
1114
  blogCache?: BlogCacheNonNullableFields;
749
1115
  }
750
1116
 
751
- declare function getBlogCache$1(httpClient: HttpClient): GetBlogCacheSignature;
1117
+ declare function getBlogCache$1(httpClient: HttpClient$5): GetBlogCacheSignature;
752
1118
  interface GetBlogCacheSignature {
753
1119
  /**
754
1120
  * Gets blog cache.
@@ -756,7 +1122,7 @@ interface GetBlogCacheSignature {
756
1122
  (): Promise<GetBlogCacheResponse & GetBlogCacheResponseNonNullableFields>;
757
1123
  }
758
1124
 
759
- declare const getBlogCache: BuildRESTFunction<typeof getBlogCache$1> & typeof getBlogCache$1;
1125
+ declare const getBlogCache: MaybeContext$5<BuildRESTFunction$5<typeof getBlogCache$1> & typeof getBlogCache$1>;
760
1126
 
761
1127
  type context$5_Address = Address;
762
1128
  type context$5_AddressHint = AddressHint;
@@ -803,6 +1169,416 @@ declare namespace context$5 {
803
1169
  export { type ActionEvent$4 as ActionEvent, type context$5_Address as Address, type context$5_AddressHint as AddressHint, type context$5_BlogCache as BlogCache, type context$5_BusinessSchedule as BusinessSchedule, type context$5_Categories as Categories, type context$5_ChangeContext as ChangeContext, type context$5_ChangeContextPayloadOneOf as ChangeContextPayloadOneOf, type context$5_ConsentPolicy as ConsentPolicy, context$5_DayOfWeek as DayOfWeek, type DomainEvent$4 as DomainEvent, type DomainEventBodyOneOf$4 as DomainEventBodyOneOf, type context$5_Empty as Empty, type EntityCreatedEvent$4 as EntityCreatedEvent, type EntityDeletedEvent$4 as EntityDeletedEvent, type EntityUpdatedEvent$4 as EntityUpdatedEvent, context$5_Flag as Flag, type context$5_GeoCoordinates as GeoCoordinates, type context$5_GetBlogCacheRequest as GetBlogCacheRequest, type context$5_GetBlogCacheResponse as GetBlogCacheResponse, type context$5_GetBlogCacheResponseNonNullableFields as GetBlogCacheResponseNonNullableFields, type context$5_Locale as Locale, context$5_LocaleStatus as LocaleStatus, type context$5_Multilingual as Multilingual, type context$5_PageInfo as PageInfo, type context$5_PagesData as PagesData, context$5_PlacementType as PlacementType, type context$5_Properties as Properties, type context$5_PropertiesChange as PropertiesChange, context$5_ResolutionMethod as ResolutionMethod, type RestoreInfo$4 as RestoreInfo, type context$5_SiteCloned as SiteCloned, type context$5_SiteCreated as SiteCreated, type context$5_SiteProperties as SiteProperties, type context$5_SitePropertiesEvent as SitePropertiesEvent, type context$5_SitePropertiesNotification as SitePropertiesNotification, type context$5_SiteSupportedLanguage as SiteSupportedLanguage, type context$5_SpecialHourPeriod as SpecialHourPeriod, type context$5_SupportedLanguage as SupportedLanguage, type context$5_TimePeriod as TimePeriod, type context$5_Translation as Translation, type context$5_UrlInvalidationNotification as UrlInvalidationNotification, context$5_getBlogCache as getBlogCache };
804
1170
  }
805
1171
 
1172
+ type HostModule$4<T, H extends Host$4> = {
1173
+ __type: 'host';
1174
+ create(host: H): T;
1175
+ };
1176
+ type HostModuleAPI$4<T extends HostModule$4<any, any>> = T extends HostModule$4<infer U, any> ? U : never;
1177
+ type Host$4<Environment = unknown> = {
1178
+ channel: {
1179
+ observeState(callback: (props: unknown, environment: Environment) => unknown): {
1180
+ disconnect: () => void;
1181
+ } | Promise<{
1182
+ disconnect: () => void;
1183
+ }>;
1184
+ };
1185
+ environment?: Environment;
1186
+ /**
1187
+ * Optional bast url to use for API requests, for example `www.wixapis.com`
1188
+ */
1189
+ apiBaseUrl?: string;
1190
+ /**
1191
+ * Possible data to be provided by every host, for cross cutting concerns
1192
+ * like internationalization, billing, etc.
1193
+ */
1194
+ essentials?: {
1195
+ /**
1196
+ * The language of the currently viewed session
1197
+ */
1198
+ language?: string;
1199
+ /**
1200
+ * The locale of the currently viewed session
1201
+ */
1202
+ locale?: string;
1203
+ /**
1204
+ * Any headers that should be passed through to the API requests
1205
+ */
1206
+ passThroughHeaders?: Record<string, string>;
1207
+ };
1208
+ };
1209
+
1210
+ type RESTFunctionDescriptor$4<T extends (...args: any[]) => any = (...args: any[]) => any> = (httpClient: HttpClient$4) => T;
1211
+ interface HttpClient$4 {
1212
+ request<TResponse, TData = any>(req: RequestOptionsFactory$4<TResponse, TData>): Promise<HttpResponse$4<TResponse>>;
1213
+ fetchWithAuth: typeof fetch;
1214
+ wixAPIFetch: (relativeUrl: string, options: RequestInit) => Promise<Response>;
1215
+ getActiveToken?: () => string | undefined;
1216
+ }
1217
+ type RequestOptionsFactory$4<TResponse = any, TData = any> = (context: any) => RequestOptions$4<TResponse, TData>;
1218
+ type HttpResponse$4<T = any> = {
1219
+ data: T;
1220
+ status: number;
1221
+ statusText: string;
1222
+ headers: any;
1223
+ request?: any;
1224
+ };
1225
+ type RequestOptions$4<_TResponse = any, Data = any> = {
1226
+ method: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
1227
+ url: string;
1228
+ data?: Data;
1229
+ params?: URLSearchParams;
1230
+ } & APIMetadata$4;
1231
+ type APIMetadata$4 = {
1232
+ methodFqn?: string;
1233
+ entityFqdn?: string;
1234
+ packageName?: string;
1235
+ };
1236
+ type BuildRESTFunction$4<T extends RESTFunctionDescriptor$4> = T extends RESTFunctionDescriptor$4<infer U> ? U : never;
1237
+ type EventDefinition$8<Payload = unknown, Type extends string = string> = {
1238
+ __type: 'event-definition';
1239
+ type: Type;
1240
+ isDomainEvent?: boolean;
1241
+ transformations?: (envelope: unknown) => Payload;
1242
+ __payload: Payload;
1243
+ };
1244
+ declare function EventDefinition$8<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition$8<Payload, Type>;
1245
+ type EventHandler$8<T extends EventDefinition$8> = (payload: T['__payload']) => void | Promise<void>;
1246
+ type BuildEventDefinition$8<T extends EventDefinition$8<any, string>> = (handler: EventHandler$8<T>) => void;
1247
+
1248
+ type ServicePluginMethodInput$4 = {
1249
+ request: any;
1250
+ metadata: any;
1251
+ };
1252
+ type ServicePluginContract$4 = Record<string, (payload: ServicePluginMethodInput$4) => unknown | Promise<unknown>>;
1253
+ type ServicePluginMethodMetadata$4 = {
1254
+ name: string;
1255
+ primaryHttpMappingPath: string;
1256
+ transformations: {
1257
+ fromREST: (...args: unknown[]) => ServicePluginMethodInput$4;
1258
+ toREST: (...args: unknown[]) => unknown;
1259
+ };
1260
+ };
1261
+ type ServicePluginDefinition$4<Contract extends ServicePluginContract$4> = {
1262
+ __type: 'service-plugin-definition';
1263
+ componentType: string;
1264
+ methods: ServicePluginMethodMetadata$4[];
1265
+ __contract: Contract;
1266
+ };
1267
+ declare function ServicePluginDefinition$4<Contract extends ServicePluginContract$4>(componentType: string, methods: ServicePluginMethodMetadata$4[]): ServicePluginDefinition$4<Contract>;
1268
+ type BuildServicePluginDefinition$4<T extends ServicePluginDefinition$4<any>> = (implementation: T['__contract']) => void;
1269
+ declare const SERVICE_PLUGIN_ERROR_TYPE$4 = "wix_spi_error";
1270
+
1271
+ type RequestContext$4 = {
1272
+ isSSR: boolean;
1273
+ host: string;
1274
+ protocol?: string;
1275
+ };
1276
+ type ResponseTransformer$4 = (data: any, headers?: any) => any;
1277
+ /**
1278
+ * Ambassador request options types are copied mostly from AxiosRequestConfig.
1279
+ * They are copied and not imported to reduce the amount of dependencies (to reduce install time).
1280
+ * https://github.com/axios/axios/blob/3f53eb6960f05a1f88409c4b731a40de595cb825/index.d.ts#L307-L315
1281
+ */
1282
+ type Method$4 = 'get' | 'GET' | 'delete' | 'DELETE' | 'head' | 'HEAD' | 'options' | 'OPTIONS' | 'post' | 'POST' | 'put' | 'PUT' | 'patch' | 'PATCH' | 'purge' | 'PURGE' | 'link' | 'LINK' | 'unlink' | 'UNLINK';
1283
+ type AmbassadorRequestOptions$4<T = any> = {
1284
+ _?: T;
1285
+ url?: string;
1286
+ method?: Method$4;
1287
+ params?: any;
1288
+ data?: any;
1289
+ transformResponse?: ResponseTransformer$4 | ResponseTransformer$4[];
1290
+ };
1291
+ type AmbassadorFactory$4<Request, Response> = (payload: Request) => ((context: RequestContext$4) => AmbassadorRequestOptions$4<Response>) & {
1292
+ __isAmbassador: boolean;
1293
+ };
1294
+ type AmbassadorFunctionDescriptor$4<Request = any, Response = any> = AmbassadorFactory$4<Request, Response>;
1295
+ type BuildAmbassadorFunction$4<T extends AmbassadorFunctionDescriptor$4> = T extends AmbassadorFunctionDescriptor$4<infer Request, infer Response> ? (req: Request) => Promise<Response> : never;
1296
+
1297
+ declare global {
1298
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
1299
+ interface SymbolConstructor {
1300
+ readonly observable: symbol;
1301
+ }
1302
+ }
1303
+
1304
+ declare const emptyObjectSymbol$4: unique symbol;
1305
+
1306
+ /**
1307
+ Represents a strictly empty plain object, the `{}` value.
1308
+
1309
+ When you annotate something as the type `{}`, it can be anything except `null` and `undefined`. This means that you cannot use `{}` to represent an empty plain object ([read more](https://stackoverflow.com/questions/47339869/typescript-empty-object-and-any-difference/52193484#52193484)).
1310
+
1311
+ @example
1312
+ ```
1313
+ import type {EmptyObject} from 'type-fest';
1314
+
1315
+ // The following illustrates the problem with `{}`.
1316
+ const foo1: {} = {}; // Pass
1317
+ const foo2: {} = []; // Pass
1318
+ const foo3: {} = 42; // Pass
1319
+ const foo4: {} = {a: 1}; // Pass
1320
+
1321
+ // With `EmptyObject` only the first case is valid.
1322
+ const bar1: EmptyObject = {}; // Pass
1323
+ const bar2: EmptyObject = 42; // Fail
1324
+ const bar3: EmptyObject = []; // Fail
1325
+ const bar4: EmptyObject = {a: 1}; // Fail
1326
+ ```
1327
+
1328
+ Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<never, never>` do not work. See {@link https://github.com/sindresorhus/type-fest/issues/395 #395}.
1329
+
1330
+ @category Object
1331
+ */
1332
+ type EmptyObject$4 = {[emptyObjectSymbol$4]?: never};
1333
+
1334
+ /**
1335
+ Returns a boolean for whether the two given types are equal.
1336
+
1337
+ @link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650
1338
+ @link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796
1339
+
1340
+ Use-cases:
1341
+ - If you want to make a conditional branch based on the result of a comparison of two types.
1342
+
1343
+ @example
1344
+ ```
1345
+ import type {IsEqual} from 'type-fest';
1346
+
1347
+ // This type returns a boolean for whether the given array includes the given item.
1348
+ // `IsEqual` is used to compare the given array at position 0 and the given item and then return true if they are equal.
1349
+ type Includes<Value extends readonly any[], Item> =
1350
+ Value extends readonly [Value[0], ...infer rest]
1351
+ ? IsEqual<Value[0], Item> extends true
1352
+ ? true
1353
+ : Includes<rest, Item>
1354
+ : false;
1355
+ ```
1356
+
1357
+ @category Type Guard
1358
+ @category Utilities
1359
+ */
1360
+ type IsEqual$4<A, B> =
1361
+ (<G>() => G extends A ? 1 : 2) extends
1362
+ (<G>() => G extends B ? 1 : 2)
1363
+ ? true
1364
+ : false;
1365
+
1366
+ /**
1367
+ Filter out keys from an object.
1368
+
1369
+ Returns `never` if `Exclude` is strictly equal to `Key`.
1370
+ Returns `never` if `Key` extends `Exclude`.
1371
+ Returns `Key` otherwise.
1372
+
1373
+ @example
1374
+ ```
1375
+ type Filtered = Filter<'foo', 'foo'>;
1376
+ //=> never
1377
+ ```
1378
+
1379
+ @example
1380
+ ```
1381
+ type Filtered = Filter<'bar', string>;
1382
+ //=> never
1383
+ ```
1384
+
1385
+ @example
1386
+ ```
1387
+ type Filtered = Filter<'bar', 'foo'>;
1388
+ //=> 'bar'
1389
+ ```
1390
+
1391
+ @see {Except}
1392
+ */
1393
+ type Filter$4<KeyType, ExcludeType> = IsEqual$4<KeyType, ExcludeType> extends true ? never : (KeyType extends ExcludeType ? never : KeyType);
1394
+
1395
+ type ExceptOptions$4 = {
1396
+ /**
1397
+ Disallow assigning non-specified properties.
1398
+
1399
+ Note that any omitted properties in the resulting type will be present in autocomplete as `undefined`.
1400
+
1401
+ @default false
1402
+ */
1403
+ requireExactProps?: boolean;
1404
+ };
1405
+
1406
+ /**
1407
+ Create a type from an object type without certain keys.
1408
+
1409
+ We recommend setting the `requireExactProps` option to `true`.
1410
+
1411
+ This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
1412
+
1413
+ This type was proposed to the TypeScript team, which declined it, saying they prefer that libraries implement stricter versions of the built-in types ([microsoft/TypeScript#30825](https://github.com/microsoft/TypeScript/issues/30825#issuecomment-523668235)).
1414
+
1415
+ @example
1416
+ ```
1417
+ import type {Except} from 'type-fest';
1418
+
1419
+ type Foo = {
1420
+ a: number;
1421
+ b: string;
1422
+ };
1423
+
1424
+ type FooWithoutA = Except<Foo, 'a'>;
1425
+ //=> {b: string}
1426
+
1427
+ const fooWithoutA: FooWithoutA = {a: 1, b: '2'};
1428
+ //=> errors: 'a' does not exist in type '{ b: string; }'
1429
+
1430
+ type FooWithoutB = Except<Foo, 'b', {requireExactProps: true}>;
1431
+ //=> {a: number} & Partial<Record<"b", never>>
1432
+
1433
+ const fooWithoutB: FooWithoutB = {a: 1, b: '2'};
1434
+ //=> errors at 'b': Type 'string' is not assignable to type 'undefined'.
1435
+ ```
1436
+
1437
+ @category Object
1438
+ */
1439
+ type Except$4<ObjectType, KeysType extends keyof ObjectType, Options extends ExceptOptions$4 = {requireExactProps: false}> = {
1440
+ [KeyType in keyof ObjectType as Filter$4<KeyType, KeysType>]: ObjectType[KeyType];
1441
+ } & (Options['requireExactProps'] extends true
1442
+ ? Partial<Record<KeysType, never>>
1443
+ : {});
1444
+
1445
+ /**
1446
+ Extract the keys from a type where the value type of the key extends the given `Condition`.
1447
+
1448
+ Internally this is used for the `ConditionalPick` and `ConditionalExcept` types.
1449
+
1450
+ @example
1451
+ ```
1452
+ import type {ConditionalKeys} from 'type-fest';
1453
+
1454
+ interface Example {
1455
+ a: string;
1456
+ b: string | number;
1457
+ c?: string;
1458
+ d: {};
1459
+ }
1460
+
1461
+ type StringKeysOnly = ConditionalKeys<Example, string>;
1462
+ //=> 'a'
1463
+ ```
1464
+
1465
+ To support partial types, make sure your `Condition` is a union of undefined (for example, `string | undefined`) as demonstrated below.
1466
+
1467
+ @example
1468
+ ```
1469
+ import type {ConditionalKeys} from 'type-fest';
1470
+
1471
+ type StringKeysAndUndefined = ConditionalKeys<Example, string | undefined>;
1472
+ //=> 'a' | 'c'
1473
+ ```
1474
+
1475
+ @category Object
1476
+ */
1477
+ type ConditionalKeys$4<Base, Condition> = NonNullable<
1478
+ // Wrap in `NonNullable` to strip away the `undefined` type from the produced union.
1479
+ {
1480
+ // Map through all the keys of the given base type.
1481
+ [Key in keyof Base]:
1482
+ // Pick only keys with types extending the given `Condition` type.
1483
+ Base[Key] extends Condition
1484
+ // Retain this key since the condition passes.
1485
+ ? Key
1486
+ // Discard this key since the condition fails.
1487
+ : never;
1488
+
1489
+ // Convert the produced object into a union type of the keys which passed the conditional test.
1490
+ }[keyof Base]
1491
+ >;
1492
+
1493
+ /**
1494
+ Exclude keys from a shape that matches the given `Condition`.
1495
+
1496
+ This is useful when you want to create a new type with a specific set of keys from a shape. For example, you might want to exclude all the primitive properties from a class and form a new shape containing everything but the primitive properties.
1497
+
1498
+ @example
1499
+ ```
1500
+ import type {Primitive, ConditionalExcept} from 'type-fest';
1501
+
1502
+ class Awesome {
1503
+ name: string;
1504
+ successes: number;
1505
+ failures: bigint;
1506
+
1507
+ run() {}
1508
+ }
1509
+
1510
+ type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>;
1511
+ //=> {run: () => void}
1512
+ ```
1513
+
1514
+ @example
1515
+ ```
1516
+ import type {ConditionalExcept} from 'type-fest';
1517
+
1518
+ interface Example {
1519
+ a: string;
1520
+ b: string | number;
1521
+ c: () => void;
1522
+ d: {};
1523
+ }
1524
+
1525
+ type NonStringKeysOnly = ConditionalExcept<Example, string>;
1526
+ //=> {b: string | number; c: () => void; d: {}}
1527
+ ```
1528
+
1529
+ @category Object
1530
+ */
1531
+ type ConditionalExcept$4<Base, Condition> = Except$4<
1532
+ Base,
1533
+ ConditionalKeys$4<Base, Condition>
1534
+ >;
1535
+
1536
+ /**
1537
+ * Descriptors are objects that describe the API of a module, and the module
1538
+ * can either be a REST module or a host module.
1539
+ * This type is recursive, so it can describe nested modules.
1540
+ */
1541
+ type Descriptors$4 = RESTFunctionDescriptor$4 | AmbassadorFunctionDescriptor$4 | HostModule$4<any, any> | EventDefinition$8<any> | ServicePluginDefinition$4<any> | {
1542
+ [key: string]: Descriptors$4 | PublicMetadata$4 | any;
1543
+ };
1544
+ /**
1545
+ * This type takes in a descriptors object of a certain Host (including an `unknown` host)
1546
+ * and returns an object with the same structure, but with all descriptors replaced with their API.
1547
+ * Any non-descriptor properties are removed from the returned object, including descriptors that
1548
+ * do not match the given host (as they will not work with the given host).
1549
+ */
1550
+ type BuildDescriptors$4<T extends Descriptors$4, H extends Host$4<any> | undefined, Depth extends number = 5> = {
1551
+ done: T;
1552
+ recurse: T extends {
1553
+ __type: typeof SERVICE_PLUGIN_ERROR_TYPE$4;
1554
+ } ? never : T extends AmbassadorFunctionDescriptor$4 ? BuildAmbassadorFunction$4<T> : T extends RESTFunctionDescriptor$4 ? BuildRESTFunction$4<T> : T extends EventDefinition$8<any> ? BuildEventDefinition$8<T> : T extends ServicePluginDefinition$4<any> ? BuildServicePluginDefinition$4<T> : T extends HostModule$4<any, any> ? HostModuleAPI$4<T> : ConditionalExcept$4<{
1555
+ [Key in keyof T]: T[Key] extends Descriptors$4 ? BuildDescriptors$4<T[Key], H, [
1556
+ -1,
1557
+ 0,
1558
+ 1,
1559
+ 2,
1560
+ 3,
1561
+ 4,
1562
+ 5
1563
+ ][Depth]> : never;
1564
+ }, EmptyObject$4>;
1565
+ }[Depth extends -1 ? 'done' : 'recurse'];
1566
+ type PublicMetadata$4 = {
1567
+ PACKAGE_NAME?: string;
1568
+ };
1569
+
1570
+ declare global {
1571
+ interface ContextualClient {
1572
+ }
1573
+ }
1574
+ /**
1575
+ * A type used to create concerete types from SDK descriptors in
1576
+ * case a contextual client is available.
1577
+ */
1578
+ type MaybeContext$4<T extends Descriptors$4> = globalThis.ContextualClient extends {
1579
+ host: Host$4;
1580
+ } ? BuildDescriptors$4<T, globalThis.ContextualClient['host']> : T;
1581
+
806
1582
  interface ImportStatus {
807
1583
  /** Import Id. */
808
1584
  _id?: string;
@@ -874,62 +1650,472 @@ interface GetNotImportedPostsResponseNonNullableFields {
874
1650
  notImportedPosts: PostNonNullableFields$1[];
875
1651
  }
876
1652
 
877
- declare function startImport$1(httpClient: HttpClient): StartImportSignature;
878
- interface StartImportSignature {
879
- /**
880
- * Starts wordpress import process.
881
- */
882
- (): Promise<void>;
883
- }
884
- declare function submitUrlForImport$1(httpClient: HttpClient): SubmitUrlForImportSignature;
885
- interface SubmitUrlForImportSignature {
886
- /**
887
- * Submits wordpress import process from URL.
888
- * It will prepare wordpress data for import from the given URL.
889
- * Use "GetImportStatus" to get the status of the import process.
890
- * Once the import status becomes READY_TO_IMPORT, the import process can be started by invoking "StartImport".
891
- * @param - Url to wordpress xml file.
892
- */
893
- (url: string): Promise<void>;
1653
+ declare function startImport$1(httpClient: HttpClient$4): StartImportSignature;
1654
+ interface StartImportSignature {
1655
+ /**
1656
+ * Starts wordpress import process.
1657
+ */
1658
+ (): Promise<void>;
1659
+ }
1660
+ declare function submitUrlForImport$1(httpClient: HttpClient$4): SubmitUrlForImportSignature;
1661
+ interface SubmitUrlForImportSignature {
1662
+ /**
1663
+ * Submits wordpress import process from URL.
1664
+ * It will prepare wordpress data for import from the given URL.
1665
+ * Use "GetImportStatus" to get the status of the import process.
1666
+ * Once the import status becomes READY_TO_IMPORT, the import process can be started by invoking "StartImport".
1667
+ * @param - Url to wordpress xml file.
1668
+ */
1669
+ (url: string): Promise<void>;
1670
+ }
1671
+ declare function getImportStatus$1(httpClient: HttpClient$4): GetImportStatusSignature;
1672
+ interface GetImportStatusSignature {
1673
+ /**
1674
+ * Gets the status of the import process.
1675
+ */
1676
+ (): Promise<GetImportStatusResponse & GetImportStatusResponseNonNullableFields>;
1677
+ }
1678
+ declare function getNotImportedPosts$1(httpClient: HttpClient$4): GetNotImportedPostsSignature;
1679
+ interface GetNotImportedPostsSignature {
1680
+ /**
1681
+ * Gets the posts that were not yet imported either because of an error or because import is still in progress.
1682
+ */
1683
+ (): Promise<GetNotImportedPostsResponse & GetNotImportedPostsResponseNonNullableFields>;
1684
+ }
1685
+
1686
+ declare const startImport: MaybeContext$4<BuildRESTFunction$4<typeof startImport$1> & typeof startImport$1>;
1687
+ declare const submitUrlForImport: MaybeContext$4<BuildRESTFunction$4<typeof submitUrlForImport$1> & typeof submitUrlForImport$1>;
1688
+ declare const getImportStatus: MaybeContext$4<BuildRESTFunction$4<typeof getImportStatus$1> & typeof getImportStatus$1>;
1689
+ declare const getNotImportedPosts: MaybeContext$4<BuildRESTFunction$4<typeof getNotImportedPosts$1> & typeof getNotImportedPosts$1>;
1690
+
1691
+ type context$4_GetImportStatusRequest = GetImportStatusRequest;
1692
+ type context$4_GetImportStatusResponse = GetImportStatusResponse;
1693
+ type context$4_GetImportStatusResponseNonNullableFields = GetImportStatusResponseNonNullableFields;
1694
+ type context$4_GetNotImportedPostsRequest = GetNotImportedPostsRequest;
1695
+ type context$4_GetNotImportedPostsResponse = GetNotImportedPostsResponse;
1696
+ type context$4_GetNotImportedPostsResponseNonNullableFields = GetNotImportedPostsResponseNonNullableFields;
1697
+ type context$4_ImportStatus = ImportStatus;
1698
+ type context$4_StartImportRequest = StartImportRequest;
1699
+ type context$4_StartImportResponse = StartImportResponse;
1700
+ type context$4_SubmitUrlForImportRequest = SubmitUrlForImportRequest;
1701
+ type context$4_SubmitUrlForImportResponse = SubmitUrlForImportResponse;
1702
+ declare const context$4_getImportStatus: typeof getImportStatus;
1703
+ declare const context$4_getNotImportedPosts: typeof getNotImportedPosts;
1704
+ declare const context$4_startImport: typeof startImport;
1705
+ declare const context$4_submitUrlForImport: typeof submitUrlForImport;
1706
+ declare namespace context$4 {
1707
+ export { type context$4_GetImportStatusRequest as GetImportStatusRequest, type context$4_GetImportStatusResponse as GetImportStatusResponse, type context$4_GetImportStatusResponseNonNullableFields as GetImportStatusResponseNonNullableFields, type context$4_GetNotImportedPostsRequest as GetNotImportedPostsRequest, type context$4_GetNotImportedPostsResponse as GetNotImportedPostsResponse, type context$4_GetNotImportedPostsResponseNonNullableFields as GetNotImportedPostsResponseNonNullableFields, type context$4_ImportStatus as ImportStatus, type Post$1 as Post, type context$4_StartImportRequest as StartImportRequest, type context$4_StartImportResponse as StartImportResponse, Status$2 as Status, type context$4_SubmitUrlForImportRequest as SubmitUrlForImportRequest, type context$4_SubmitUrlForImportResponse as SubmitUrlForImportResponse, context$4_getImportStatus as getImportStatus, context$4_getNotImportedPosts as getNotImportedPosts, context$4_startImport as startImport, context$4_submitUrlForImport as submitUrlForImport };
1708
+ }
1709
+
1710
+ type HostModule$3<T, H extends Host$3> = {
1711
+ __type: 'host';
1712
+ create(host: H): T;
1713
+ };
1714
+ type HostModuleAPI$3<T extends HostModule$3<any, any>> = T extends HostModule$3<infer U, any> ? U : never;
1715
+ type Host$3<Environment = unknown> = {
1716
+ channel: {
1717
+ observeState(callback: (props: unknown, environment: Environment) => unknown): {
1718
+ disconnect: () => void;
1719
+ } | Promise<{
1720
+ disconnect: () => void;
1721
+ }>;
1722
+ };
1723
+ environment?: Environment;
1724
+ /**
1725
+ * Optional bast url to use for API requests, for example `www.wixapis.com`
1726
+ */
1727
+ apiBaseUrl?: string;
1728
+ /**
1729
+ * Possible data to be provided by every host, for cross cutting concerns
1730
+ * like internationalization, billing, etc.
1731
+ */
1732
+ essentials?: {
1733
+ /**
1734
+ * The language of the currently viewed session
1735
+ */
1736
+ language?: string;
1737
+ /**
1738
+ * The locale of the currently viewed session
1739
+ */
1740
+ locale?: string;
1741
+ /**
1742
+ * Any headers that should be passed through to the API requests
1743
+ */
1744
+ passThroughHeaders?: Record<string, string>;
1745
+ };
1746
+ };
1747
+
1748
+ type RESTFunctionDescriptor$3<T extends (...args: any[]) => any = (...args: any[]) => any> = (httpClient: HttpClient$3) => T;
1749
+ interface HttpClient$3 {
1750
+ request<TResponse, TData = any>(req: RequestOptionsFactory$3<TResponse, TData>): Promise<HttpResponse$3<TResponse>>;
1751
+ fetchWithAuth: typeof fetch;
1752
+ wixAPIFetch: (relativeUrl: string, options: RequestInit) => Promise<Response>;
1753
+ getActiveToken?: () => string | undefined;
1754
+ }
1755
+ type RequestOptionsFactory$3<TResponse = any, TData = any> = (context: any) => RequestOptions$3<TResponse, TData>;
1756
+ type HttpResponse$3<T = any> = {
1757
+ data: T;
1758
+ status: number;
1759
+ statusText: string;
1760
+ headers: any;
1761
+ request?: any;
1762
+ };
1763
+ type RequestOptions$3<_TResponse = any, Data = any> = {
1764
+ method: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
1765
+ url: string;
1766
+ data?: Data;
1767
+ params?: URLSearchParams;
1768
+ } & APIMetadata$3;
1769
+ type APIMetadata$3 = {
1770
+ methodFqn?: string;
1771
+ entityFqdn?: string;
1772
+ packageName?: string;
1773
+ };
1774
+ type BuildRESTFunction$3<T extends RESTFunctionDescriptor$3> = T extends RESTFunctionDescriptor$3<infer U> ? U : never;
1775
+ type EventDefinition$7<Payload = unknown, Type extends string = string> = {
1776
+ __type: 'event-definition';
1777
+ type: Type;
1778
+ isDomainEvent?: boolean;
1779
+ transformations?: (envelope: unknown) => Payload;
1780
+ __payload: Payload;
1781
+ };
1782
+ declare function EventDefinition$7<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition$7<Payload, Type>;
1783
+ type EventHandler$7<T extends EventDefinition$7> = (payload: T['__payload']) => void | Promise<void>;
1784
+ type BuildEventDefinition$7<T extends EventDefinition$7<any, string>> = (handler: EventHandler$7<T>) => void;
1785
+
1786
+ type ServicePluginMethodInput$3 = {
1787
+ request: any;
1788
+ metadata: any;
1789
+ };
1790
+ type ServicePluginContract$3 = Record<string, (payload: ServicePluginMethodInput$3) => unknown | Promise<unknown>>;
1791
+ type ServicePluginMethodMetadata$3 = {
1792
+ name: string;
1793
+ primaryHttpMappingPath: string;
1794
+ transformations: {
1795
+ fromREST: (...args: unknown[]) => ServicePluginMethodInput$3;
1796
+ toREST: (...args: unknown[]) => unknown;
1797
+ };
1798
+ };
1799
+ type ServicePluginDefinition$3<Contract extends ServicePluginContract$3> = {
1800
+ __type: 'service-plugin-definition';
1801
+ componentType: string;
1802
+ methods: ServicePluginMethodMetadata$3[];
1803
+ __contract: Contract;
1804
+ };
1805
+ declare function ServicePluginDefinition$3<Contract extends ServicePluginContract$3>(componentType: string, methods: ServicePluginMethodMetadata$3[]): ServicePluginDefinition$3<Contract>;
1806
+ type BuildServicePluginDefinition$3<T extends ServicePluginDefinition$3<any>> = (implementation: T['__contract']) => void;
1807
+ declare const SERVICE_PLUGIN_ERROR_TYPE$3 = "wix_spi_error";
1808
+
1809
+ type RequestContext$3 = {
1810
+ isSSR: boolean;
1811
+ host: string;
1812
+ protocol?: string;
1813
+ };
1814
+ type ResponseTransformer$3 = (data: any, headers?: any) => any;
1815
+ /**
1816
+ * Ambassador request options types are copied mostly from AxiosRequestConfig.
1817
+ * They are copied and not imported to reduce the amount of dependencies (to reduce install time).
1818
+ * https://github.com/axios/axios/blob/3f53eb6960f05a1f88409c4b731a40de595cb825/index.d.ts#L307-L315
1819
+ */
1820
+ type Method$3 = 'get' | 'GET' | 'delete' | 'DELETE' | 'head' | 'HEAD' | 'options' | 'OPTIONS' | 'post' | 'POST' | 'put' | 'PUT' | 'patch' | 'PATCH' | 'purge' | 'PURGE' | 'link' | 'LINK' | 'unlink' | 'UNLINK';
1821
+ type AmbassadorRequestOptions$3<T = any> = {
1822
+ _?: T;
1823
+ url?: string;
1824
+ method?: Method$3;
1825
+ params?: any;
1826
+ data?: any;
1827
+ transformResponse?: ResponseTransformer$3 | ResponseTransformer$3[];
1828
+ };
1829
+ type AmbassadorFactory$3<Request, Response> = (payload: Request) => ((context: RequestContext$3) => AmbassadorRequestOptions$3<Response>) & {
1830
+ __isAmbassador: boolean;
1831
+ };
1832
+ type AmbassadorFunctionDescriptor$3<Request = any, Response = any> = AmbassadorFactory$3<Request, Response>;
1833
+ type BuildAmbassadorFunction$3<T extends AmbassadorFunctionDescriptor$3> = T extends AmbassadorFunctionDescriptor$3<infer Request, infer Response> ? (req: Request) => Promise<Response> : never;
1834
+
1835
+ declare global {
1836
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
1837
+ interface SymbolConstructor {
1838
+ readonly observable: symbol;
1839
+ }
1840
+ }
1841
+
1842
+ declare const emptyObjectSymbol$3: unique symbol;
1843
+
1844
+ /**
1845
+ Represents a strictly empty plain object, the `{}` value.
1846
+
1847
+ When you annotate something as the type `{}`, it can be anything except `null` and `undefined`. This means that you cannot use `{}` to represent an empty plain object ([read more](https://stackoverflow.com/questions/47339869/typescript-empty-object-and-any-difference/52193484#52193484)).
1848
+
1849
+ @example
1850
+ ```
1851
+ import type {EmptyObject} from 'type-fest';
1852
+
1853
+ // The following illustrates the problem with `{}`.
1854
+ const foo1: {} = {}; // Pass
1855
+ const foo2: {} = []; // Pass
1856
+ const foo3: {} = 42; // Pass
1857
+ const foo4: {} = {a: 1}; // Pass
1858
+
1859
+ // With `EmptyObject` only the first case is valid.
1860
+ const bar1: EmptyObject = {}; // Pass
1861
+ const bar2: EmptyObject = 42; // Fail
1862
+ const bar3: EmptyObject = []; // Fail
1863
+ const bar4: EmptyObject = {a: 1}; // Fail
1864
+ ```
1865
+
1866
+ Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<never, never>` do not work. See {@link https://github.com/sindresorhus/type-fest/issues/395 #395}.
1867
+
1868
+ @category Object
1869
+ */
1870
+ type EmptyObject$3 = {[emptyObjectSymbol$3]?: never};
1871
+
1872
+ /**
1873
+ Returns a boolean for whether the two given types are equal.
1874
+
1875
+ @link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650
1876
+ @link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796
1877
+
1878
+ Use-cases:
1879
+ - If you want to make a conditional branch based on the result of a comparison of two types.
1880
+
1881
+ @example
1882
+ ```
1883
+ import type {IsEqual} from 'type-fest';
1884
+
1885
+ // This type returns a boolean for whether the given array includes the given item.
1886
+ // `IsEqual` is used to compare the given array at position 0 and the given item and then return true if they are equal.
1887
+ type Includes<Value extends readonly any[], Item> =
1888
+ Value extends readonly [Value[0], ...infer rest]
1889
+ ? IsEqual<Value[0], Item> extends true
1890
+ ? true
1891
+ : Includes<rest, Item>
1892
+ : false;
1893
+ ```
1894
+
1895
+ @category Type Guard
1896
+ @category Utilities
1897
+ */
1898
+ type IsEqual$3<A, B> =
1899
+ (<G>() => G extends A ? 1 : 2) extends
1900
+ (<G>() => G extends B ? 1 : 2)
1901
+ ? true
1902
+ : false;
1903
+
1904
+ /**
1905
+ Filter out keys from an object.
1906
+
1907
+ Returns `never` if `Exclude` is strictly equal to `Key`.
1908
+ Returns `never` if `Key` extends `Exclude`.
1909
+ Returns `Key` otherwise.
1910
+
1911
+ @example
1912
+ ```
1913
+ type Filtered = Filter<'foo', 'foo'>;
1914
+ //=> never
1915
+ ```
1916
+
1917
+ @example
1918
+ ```
1919
+ type Filtered = Filter<'bar', string>;
1920
+ //=> never
1921
+ ```
1922
+
1923
+ @example
1924
+ ```
1925
+ type Filtered = Filter<'bar', 'foo'>;
1926
+ //=> 'bar'
1927
+ ```
1928
+
1929
+ @see {Except}
1930
+ */
1931
+ type Filter$3<KeyType, ExcludeType> = IsEqual$3<KeyType, ExcludeType> extends true ? never : (KeyType extends ExcludeType ? never : KeyType);
1932
+
1933
+ type ExceptOptions$3 = {
1934
+ /**
1935
+ Disallow assigning non-specified properties.
1936
+
1937
+ Note that any omitted properties in the resulting type will be present in autocomplete as `undefined`.
1938
+
1939
+ @default false
1940
+ */
1941
+ requireExactProps?: boolean;
1942
+ };
1943
+
1944
+ /**
1945
+ Create a type from an object type without certain keys.
1946
+
1947
+ We recommend setting the `requireExactProps` option to `true`.
1948
+
1949
+ This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
1950
+
1951
+ This type was proposed to the TypeScript team, which declined it, saying they prefer that libraries implement stricter versions of the built-in types ([microsoft/TypeScript#30825](https://github.com/microsoft/TypeScript/issues/30825#issuecomment-523668235)).
1952
+
1953
+ @example
1954
+ ```
1955
+ import type {Except} from 'type-fest';
1956
+
1957
+ type Foo = {
1958
+ a: number;
1959
+ b: string;
1960
+ };
1961
+
1962
+ type FooWithoutA = Except<Foo, 'a'>;
1963
+ //=> {b: string}
1964
+
1965
+ const fooWithoutA: FooWithoutA = {a: 1, b: '2'};
1966
+ //=> errors: 'a' does not exist in type '{ b: string; }'
1967
+
1968
+ type FooWithoutB = Except<Foo, 'b', {requireExactProps: true}>;
1969
+ //=> {a: number} & Partial<Record<"b", never>>
1970
+
1971
+ const fooWithoutB: FooWithoutB = {a: 1, b: '2'};
1972
+ //=> errors at 'b': Type 'string' is not assignable to type 'undefined'.
1973
+ ```
1974
+
1975
+ @category Object
1976
+ */
1977
+ type Except$3<ObjectType, KeysType extends keyof ObjectType, Options extends ExceptOptions$3 = {requireExactProps: false}> = {
1978
+ [KeyType in keyof ObjectType as Filter$3<KeyType, KeysType>]: ObjectType[KeyType];
1979
+ } & (Options['requireExactProps'] extends true
1980
+ ? Partial<Record<KeysType, never>>
1981
+ : {});
1982
+
1983
+ /**
1984
+ Extract the keys from a type where the value type of the key extends the given `Condition`.
1985
+
1986
+ Internally this is used for the `ConditionalPick` and `ConditionalExcept` types.
1987
+
1988
+ @example
1989
+ ```
1990
+ import type {ConditionalKeys} from 'type-fest';
1991
+
1992
+ interface Example {
1993
+ a: string;
1994
+ b: string | number;
1995
+ c?: string;
1996
+ d: {};
894
1997
  }
895
- declare function getImportStatus$1(httpClient: HttpClient): GetImportStatusSignature;
896
- interface GetImportStatusSignature {
897
- /**
898
- * Gets the status of the import process.
899
- */
900
- (): Promise<GetImportStatusResponse & GetImportStatusResponseNonNullableFields>;
1998
+
1999
+ type StringKeysOnly = ConditionalKeys<Example, string>;
2000
+ //=> 'a'
2001
+ ```
2002
+
2003
+ To support partial types, make sure your `Condition` is a union of undefined (for example, `string | undefined`) as demonstrated below.
2004
+
2005
+ @example
2006
+ ```
2007
+ import type {ConditionalKeys} from 'type-fest';
2008
+
2009
+ type StringKeysAndUndefined = ConditionalKeys<Example, string | undefined>;
2010
+ //=> 'a' | 'c'
2011
+ ```
2012
+
2013
+ @category Object
2014
+ */
2015
+ type ConditionalKeys$3<Base, Condition> = NonNullable<
2016
+ // Wrap in `NonNullable` to strip away the `undefined` type from the produced union.
2017
+ {
2018
+ // Map through all the keys of the given base type.
2019
+ [Key in keyof Base]:
2020
+ // Pick only keys with types extending the given `Condition` type.
2021
+ Base[Key] extends Condition
2022
+ // Retain this key since the condition passes.
2023
+ ? Key
2024
+ // Discard this key since the condition fails.
2025
+ : never;
2026
+
2027
+ // Convert the produced object into a union type of the keys which passed the conditional test.
2028
+ }[keyof Base]
2029
+ >;
2030
+
2031
+ /**
2032
+ Exclude keys from a shape that matches the given `Condition`.
2033
+
2034
+ This is useful when you want to create a new type with a specific set of keys from a shape. For example, you might want to exclude all the primitive properties from a class and form a new shape containing everything but the primitive properties.
2035
+
2036
+ @example
2037
+ ```
2038
+ import type {Primitive, ConditionalExcept} from 'type-fest';
2039
+
2040
+ class Awesome {
2041
+ name: string;
2042
+ successes: number;
2043
+ failures: bigint;
2044
+
2045
+ run() {}
901
2046
  }
902
- declare function getNotImportedPosts$1(httpClient: HttpClient): GetNotImportedPostsSignature;
903
- interface GetNotImportedPostsSignature {
904
- /**
905
- * Gets the posts that were not yet imported either because of an error or because import is still in progress.
906
- */
907
- (): Promise<GetNotImportedPostsResponse & GetNotImportedPostsResponseNonNullableFields>;
2047
+
2048
+ type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>;
2049
+ //=> {run: () => void}
2050
+ ```
2051
+
2052
+ @example
2053
+ ```
2054
+ import type {ConditionalExcept} from 'type-fest';
2055
+
2056
+ interface Example {
2057
+ a: string;
2058
+ b: string | number;
2059
+ c: () => void;
2060
+ d: {};
908
2061
  }
909
2062
 
910
- declare const startImport: BuildRESTFunction<typeof startImport$1> & typeof startImport$1;
911
- declare const submitUrlForImport: BuildRESTFunction<typeof submitUrlForImport$1> & typeof submitUrlForImport$1;
912
- declare const getImportStatus: BuildRESTFunction<typeof getImportStatus$1> & typeof getImportStatus$1;
913
- declare const getNotImportedPosts: BuildRESTFunction<typeof getNotImportedPosts$1> & typeof getNotImportedPosts$1;
2063
+ type NonStringKeysOnly = ConditionalExcept<Example, string>;
2064
+ //=> {b: string | number; c: () => void; d: {}}
2065
+ ```
914
2066
 
915
- type context$4_GetImportStatusRequest = GetImportStatusRequest;
916
- type context$4_GetImportStatusResponse = GetImportStatusResponse;
917
- type context$4_GetImportStatusResponseNonNullableFields = GetImportStatusResponseNonNullableFields;
918
- type context$4_GetNotImportedPostsRequest = GetNotImportedPostsRequest;
919
- type context$4_GetNotImportedPostsResponse = GetNotImportedPostsResponse;
920
- type context$4_GetNotImportedPostsResponseNonNullableFields = GetNotImportedPostsResponseNonNullableFields;
921
- type context$4_ImportStatus = ImportStatus;
922
- type context$4_StartImportRequest = StartImportRequest;
923
- type context$4_StartImportResponse = StartImportResponse;
924
- type context$4_SubmitUrlForImportRequest = SubmitUrlForImportRequest;
925
- type context$4_SubmitUrlForImportResponse = SubmitUrlForImportResponse;
926
- declare const context$4_getImportStatus: typeof getImportStatus;
927
- declare const context$4_getNotImportedPosts: typeof getNotImportedPosts;
928
- declare const context$4_startImport: typeof startImport;
929
- declare const context$4_submitUrlForImport: typeof submitUrlForImport;
930
- declare namespace context$4 {
931
- export { type context$4_GetImportStatusRequest as GetImportStatusRequest, type context$4_GetImportStatusResponse as GetImportStatusResponse, type context$4_GetImportStatusResponseNonNullableFields as GetImportStatusResponseNonNullableFields, type context$4_GetNotImportedPostsRequest as GetNotImportedPostsRequest, type context$4_GetNotImportedPostsResponse as GetNotImportedPostsResponse, type context$4_GetNotImportedPostsResponseNonNullableFields as GetNotImportedPostsResponseNonNullableFields, type context$4_ImportStatus as ImportStatus, type Post$1 as Post, type context$4_StartImportRequest as StartImportRequest, type context$4_StartImportResponse as StartImportResponse, Status$2 as Status, type context$4_SubmitUrlForImportRequest as SubmitUrlForImportRequest, type context$4_SubmitUrlForImportResponse as SubmitUrlForImportResponse, context$4_getImportStatus as getImportStatus, context$4_getNotImportedPosts as getNotImportedPosts, context$4_startImport as startImport, context$4_submitUrlForImport as submitUrlForImport };
2067
+ @category Object
2068
+ */
2069
+ type ConditionalExcept$3<Base, Condition> = Except$3<
2070
+ Base,
2071
+ ConditionalKeys$3<Base, Condition>
2072
+ >;
2073
+
2074
+ /**
2075
+ * Descriptors are objects that describe the API of a module, and the module
2076
+ * can either be a REST module or a host module.
2077
+ * This type is recursive, so it can describe nested modules.
2078
+ */
2079
+ type Descriptors$3 = RESTFunctionDescriptor$3 | AmbassadorFunctionDescriptor$3 | HostModule$3<any, any> | EventDefinition$7<any> | ServicePluginDefinition$3<any> | {
2080
+ [key: string]: Descriptors$3 | PublicMetadata$3 | any;
2081
+ };
2082
+ /**
2083
+ * This type takes in a descriptors object of a certain Host (including an `unknown` host)
2084
+ * and returns an object with the same structure, but with all descriptors replaced with their API.
2085
+ * Any non-descriptor properties are removed from the returned object, including descriptors that
2086
+ * do not match the given host (as they will not work with the given host).
2087
+ */
2088
+ type BuildDescriptors$3<T extends Descriptors$3, H extends Host$3<any> | undefined, Depth extends number = 5> = {
2089
+ done: T;
2090
+ recurse: T extends {
2091
+ __type: typeof SERVICE_PLUGIN_ERROR_TYPE$3;
2092
+ } ? never : T extends AmbassadorFunctionDescriptor$3 ? BuildAmbassadorFunction$3<T> : T extends RESTFunctionDescriptor$3 ? BuildRESTFunction$3<T> : T extends EventDefinition$7<any> ? BuildEventDefinition$7<T> : T extends ServicePluginDefinition$3<any> ? BuildServicePluginDefinition$3<T> : T extends HostModule$3<any, any> ? HostModuleAPI$3<T> : ConditionalExcept$3<{
2093
+ [Key in keyof T]: T[Key] extends Descriptors$3 ? BuildDescriptors$3<T[Key], H, [
2094
+ -1,
2095
+ 0,
2096
+ 1,
2097
+ 2,
2098
+ 3,
2099
+ 4,
2100
+ 5
2101
+ ][Depth]> : never;
2102
+ }, EmptyObject$3>;
2103
+ }[Depth extends -1 ? 'done' : 'recurse'];
2104
+ type PublicMetadata$3 = {
2105
+ PACKAGE_NAME?: string;
2106
+ };
2107
+
2108
+ declare global {
2109
+ interface ContextualClient {
2110
+ }
932
2111
  }
2112
+ /**
2113
+ * A type used to create concerete types from SDK descriptors in
2114
+ * case a contextual client is available.
2115
+ */
2116
+ type MaybeContext$3<T extends Descriptors$3> = globalThis.ContextualClient extends {
2117
+ host: Host$3;
2118
+ } ? BuildDescriptors$3<T, globalThis.ContextualClient['host']> : T;
933
2119
 
934
2120
  interface Category$2 {
935
2121
  /** Category ID. */
@@ -1637,27 +2823,27 @@ interface CategoriesQueryBuilder {
1637
2823
  /** @param propertyName - Property whose value is compared with `value`.
1638
2824
  * @param value - Value to compare against.
1639
2825
  */
1640
- eq: (propertyName: '_id' | 'label' | 'postCount' | 'title' | 'rank' | 'displayPosition' | 'translationId' | 'language', value: any) => CategoriesQueryBuilder;
2826
+ eq: (propertyName: '_id' | 'label' | 'postCount' | 'title' | 'displayPosition' | 'translationId' | 'language', value: any) => CategoriesQueryBuilder;
1641
2827
  /** @param propertyName - Property whose value is compared with `value`.
1642
2828
  * @param value - Value to compare against.
1643
2829
  */
1644
- ne: (propertyName: '_id' | 'label' | 'postCount' | 'title' | 'rank' | 'displayPosition' | 'translationId' | 'language', value: any) => CategoriesQueryBuilder;
2830
+ ne: (propertyName: '_id' | 'label' | 'postCount' | 'title' | 'displayPosition' | 'translationId' | 'language', value: any) => CategoriesQueryBuilder;
1645
2831
  /** @param propertyName - Property whose value is compared with `value`.
1646
2832
  * @param value - Value to compare against.
1647
2833
  */
1648
- ge: (propertyName: 'postCount' | 'rank' | 'displayPosition', value: any) => CategoriesQueryBuilder;
2834
+ ge: (propertyName: 'postCount' | 'displayPosition', value: any) => CategoriesQueryBuilder;
1649
2835
  /** @param propertyName - Property whose value is compared with `value`.
1650
2836
  * @param value - Value to compare against.
1651
2837
  */
1652
- gt: (propertyName: 'postCount' | 'rank' | 'displayPosition', value: any) => CategoriesQueryBuilder;
2838
+ gt: (propertyName: 'postCount' | 'displayPosition', value: any) => CategoriesQueryBuilder;
1653
2839
  /** @param propertyName - Property whose value is compared with `value`.
1654
2840
  * @param value - Value to compare against.
1655
2841
  */
1656
- le: (propertyName: 'postCount' | 'rank' | 'displayPosition', value: any) => CategoriesQueryBuilder;
2842
+ le: (propertyName: 'postCount' | 'displayPosition', value: any) => CategoriesQueryBuilder;
1657
2843
  /** @param propertyName - Property whose value is compared with `value`.
1658
2844
  * @param value - Value to compare against.
1659
2845
  */
1660
- lt: (propertyName: 'postCount' | 'rank' | 'displayPosition', value: any) => CategoriesQueryBuilder;
2846
+ lt: (propertyName: 'postCount' | 'displayPosition', value: any) => CategoriesQueryBuilder;
1661
2847
  /** @param propertyName - Property whose value is compared with `string`.
1662
2848
  * @param string - String to compare against. Case-insensitive.
1663
2849
  */
@@ -1666,12 +2852,12 @@ interface CategoriesQueryBuilder {
1666
2852
  * @param values - List of values to compare against.
1667
2853
  */
1668
2854
  hasSome: (propertyName: '_id' | 'label' | 'title' | 'slug', value: any[]) => CategoriesQueryBuilder;
1669
- in: (propertyName: 'label' | 'postCount' | 'title' | 'rank' | 'displayPosition' | 'translationId' | 'language', value: any) => CategoriesQueryBuilder;
2855
+ in: (propertyName: 'label' | 'postCount' | 'title' | 'displayPosition' | 'translationId' | 'language', value: any) => CategoriesQueryBuilder;
1670
2856
  exists: (propertyName: 'label' | 'title' | 'translationId' | 'language', value: boolean) => CategoriesQueryBuilder;
1671
2857
  /** @param propertyNames - Properties used in the sort. To sort by multiple properties, pass properties as additional arguments. */
1672
- ascending: (...propertyNames: Array<'label' | 'postCount' | 'title' | 'rank' | 'displayPosition' | 'language' | 'slug'>) => CategoriesQueryBuilder;
2858
+ ascending: (...propertyNames: Array<'label' | 'postCount' | 'title' | 'displayPosition' | 'language' | 'slug'>) => CategoriesQueryBuilder;
1673
2859
  /** @param propertyNames - Properties used in the sort. To sort by multiple properties, pass properties as additional arguments. */
1674
- descending: (...propertyNames: Array<'label' | 'postCount' | 'title' | 'rank' | 'displayPosition' | 'language' | 'slug'>) => CategoriesQueryBuilder;
2860
+ descending: (...propertyNames: Array<'label' | 'postCount' | 'title' | 'displayPosition' | 'language' | 'slug'>) => CategoriesQueryBuilder;
1675
2861
  /** @param limit - Number of items to return, which is also the `pageSize` of the results object. */
1676
2862
  limit: (limit: number) => CategoriesQueryBuilder;
1677
2863
  /** @param skip - Number of items to skip in the query results before returning the results. */
@@ -1679,7 +2865,7 @@ interface CategoriesQueryBuilder {
1679
2865
  find: () => Promise<CategoriesQueryResult>;
1680
2866
  }
1681
2867
 
1682
- declare function getCategory$1(httpClient: HttpClient): GetCategorySignature;
2868
+ declare function getCategory$1(httpClient: HttpClient$3): GetCategorySignature;
1683
2869
  interface GetCategorySignature {
1684
2870
  /**
1685
2871
  * Gets a category by the specified ID.
@@ -1692,7 +2878,7 @@ interface GetCategorySignature {
1692
2878
  */
1693
2879
  (categoryId: string, options?: GetCategoryOptions | undefined): Promise<GetCategoryResponse & GetCategoryResponseNonNullableFields>;
1694
2880
  }
1695
- declare function getCategoryBySlug$1(httpClient: HttpClient): GetCategoryBySlugSignature;
2881
+ declare function getCategoryBySlug$1(httpClient: HttpClient$3): GetCategoryBySlugSignature;
1696
2882
  interface GetCategoryBySlugSignature {
1697
2883
  /**
1698
2884
  * Gets a category by the specified slug.
@@ -1709,7 +2895,7 @@ interface GetCategoryBySlugSignature {
1709
2895
  */
1710
2896
  (slug: string, options?: GetCategoryBySlugOptions | undefined): Promise<GetCategoryBySlugResponse & GetCategoryBySlugResponseNonNullableFields>;
1711
2897
  }
1712
- declare function listCategories$1(httpClient: HttpClient): ListCategoriesSignature;
2898
+ declare function listCategories$1(httpClient: HttpClient$3): ListCategoriesSignature;
1713
2899
  interface ListCategoriesSignature {
1714
2900
  /**
1715
2901
  * Retrieves a list of categories.
@@ -1720,7 +2906,7 @@ interface ListCategoriesSignature {
1720
2906
  */
1721
2907
  (options?: ListCategoriesOptions | undefined): Promise<ListCategoriesResponse & ListCategoriesResponseNonNullableFields>;
1722
2908
  }
1723
- declare function queryCategories$1(httpClient: HttpClient): QueryCategoriesSignature;
2909
+ declare function queryCategories$1(httpClient: HttpClient$3): QueryCategoriesSignature;
1724
2910
  interface QueryCategoriesSignature {
1725
2911
  /**
1726
2912
  * Creates a query to retrieve a list of categories.
@@ -1741,16 +2927,34 @@ interface QueryCategoriesSignature {
1741
2927
  */
1742
2928
  (options?: QueryCategoriesOptions | undefined): CategoriesQueryBuilder;
1743
2929
  }
1744
- declare const onCategoryCreated$1: EventDefinition<CategoryCreatedEnvelope, "wix.blog.v3.category_created">;
1745
- declare const onCategoryUpdated$1: EventDefinition<CategoryUpdatedEnvelope, "wix.blog.v3.category_updated">;
1746
- declare const onCategoryDeleted$1: EventDefinition<CategoryDeletedEnvelope, "wix.blog.v3.category_deleted">;
2930
+ declare const onCategoryCreated$1: EventDefinition$7<CategoryCreatedEnvelope, "wix.blog.v3.category_created">;
2931
+ declare const onCategoryUpdated$1: EventDefinition$7<CategoryUpdatedEnvelope, "wix.blog.v3.category_updated">;
2932
+ declare const onCategoryDeleted$1: EventDefinition$7<CategoryDeletedEnvelope, "wix.blog.v3.category_deleted">;
2933
+
2934
+ type EventDefinition$6<Payload = unknown, Type extends string = string> = {
2935
+ __type: 'event-definition';
2936
+ type: Type;
2937
+ isDomainEvent?: boolean;
2938
+ transformations?: (envelope: unknown) => Payload;
2939
+ __payload: Payload;
2940
+ };
2941
+ declare function EventDefinition$6<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition$6<Payload, Type>;
2942
+ type EventHandler$6<T extends EventDefinition$6> = (payload: T['__payload']) => void | Promise<void>;
2943
+ type BuildEventDefinition$6<T extends EventDefinition$6<any, string>> = (handler: EventHandler$6<T>) => void;
2944
+
2945
+ declare global {
2946
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
2947
+ interface SymbolConstructor {
2948
+ readonly observable: symbol;
2949
+ }
2950
+ }
1747
2951
 
1748
- declare function createEventModule$3<T extends EventDefinition<any, string>>(eventDefinition: T): BuildEventDefinition<T> & T;
2952
+ declare function createEventModule$3<T extends EventDefinition$6<any, string>>(eventDefinition: T): BuildEventDefinition$6<T> & T;
1749
2953
 
1750
- declare const getCategory: BuildRESTFunction<typeof getCategory$1> & typeof getCategory$1;
1751
- declare const getCategoryBySlug: BuildRESTFunction<typeof getCategoryBySlug$1> & typeof getCategoryBySlug$1;
1752
- declare const listCategories: BuildRESTFunction<typeof listCategories$1> & typeof listCategories$1;
1753
- declare const queryCategories: BuildRESTFunction<typeof queryCategories$1> & typeof queryCategories$1;
2954
+ declare const getCategory: MaybeContext$3<BuildRESTFunction$3<typeof getCategory$1> & typeof getCategory$1>;
2955
+ declare const getCategoryBySlug: MaybeContext$3<BuildRESTFunction$3<typeof getCategoryBySlug$1> & typeof getCategoryBySlug$1>;
2956
+ declare const listCategories: MaybeContext$3<BuildRESTFunction$3<typeof listCategories$1> & typeof listCategories$1>;
2957
+ declare const queryCategories: MaybeContext$3<BuildRESTFunction$3<typeof queryCategories$1> & typeof queryCategories$1>;
1754
2958
 
1755
2959
  type _publicOnCategoryCreatedType = typeof onCategoryCreated$1;
1756
2960
  /**
@@ -1823,6 +3027,416 @@ declare namespace context$3 {
1823
3027
  export { type ActionEvent$3 as ActionEvent, type ApplicationError$2 as ApplicationError, type BaseEventMetadata$3 as BaseEventMetadata, type BlogPaging$2 as BlogPaging, type BulkActionMetadata$2 as BulkActionMetadata, type context$3_BulkCategoryResult as BulkCategoryResult, type context$3_BulkCreateCategoriesRequest as BulkCreateCategoriesRequest, type context$3_BulkCreateCategoriesResponse as BulkCreateCategoriesResponse, type context$3_BulkDeleteCategoryRequest as BulkDeleteCategoryRequest, type context$3_BulkDeleteCategoryResponse as BulkDeleteCategoryResponse, type context$3_BulkUpdateCategoriesRequest as BulkUpdateCategoriesRequest, type context$3_BulkUpdateCategoriesResponse as BulkUpdateCategoriesResponse, type context$3_CategoriesQueryBuilder as CategoriesQueryBuilder, type context$3_CategoriesQueryResult as CategoriesQueryResult, type Category$2 as Category, type context$3_CategoryCreatedEnvelope as CategoryCreatedEnvelope, type context$3_CategoryDeletedEnvelope as CategoryDeletedEnvelope, type context$3_CategoryLanguageCount as CategoryLanguageCount, type CategoryTranslation$2 as CategoryTranslation, type context$3_CategoryUpdatedEnvelope as CategoryUpdatedEnvelope, type context$3_CreateCategoryRequest as CreateCategoryRequest, type context$3_CreateCategoryResponse as CreateCategoryResponse, type CursorPaging$3 as CursorPaging, type Cursors$3 as Cursors, type context$3_DeleteCategoryRequest as DeleteCategoryRequest, type context$3_DeleteCategoryResponse as DeleteCategoryResponse, type DomainEvent$3 as DomainEvent, type DomainEventBodyOneOf$3 as DomainEventBodyOneOf, type EntityCreatedEvent$3 as EntityCreatedEvent, type EntityDeletedEvent$3 as EntityDeletedEvent, type EntityUpdatedEvent$3 as EntityUpdatedEvent, type EventMetadata$3 as EventMetadata, Field$3 as Field, type context$3_GetCategoriesCountByLanguageRequest as GetCategoriesCountByLanguageRequest, type context$3_GetCategoriesCountByLanguageResponse as GetCategoriesCountByLanguageResponse, type context$3_GetCategoryBySlugOptions as GetCategoryBySlugOptions, type context$3_GetCategoryBySlugRequest as GetCategoryBySlugRequest, type context$3_GetCategoryBySlugResponse as GetCategoryBySlugResponse, type context$3_GetCategoryBySlugResponseNonNullableFields as GetCategoryBySlugResponseNonNullableFields, type context$3_GetCategoryOptions as GetCategoryOptions, type context$3_GetCategoryRequest as GetCategoryRequest, type context$3_GetCategoryResponse as GetCategoryResponse, type context$3_GetCategoryResponseNonNullableFields as GetCategoryResponseNonNullableFields, type IdentificationData$3 as IdentificationData, type IdentificationDataIdOneOf$3 as IdentificationDataIdOneOf, type context$3_InitialCategoriesCopied as InitialCategoriesCopied, type ItemMetadata$2 as ItemMetadata, type Keyword$3 as Keyword, type context$3_ListCategoriesOptions as ListCategoriesOptions, type context$3_ListCategoriesRequest as ListCategoriesRequest, type context$3_ListCategoriesResponse as ListCategoriesResponse, type context$3_ListCategoriesResponseNonNullableFields as ListCategoriesResponseNonNullableFields, type context$3_MaskedCategory as MaskedCategory, type MessageEnvelope$3 as MessageEnvelope, type MetaData$3 as MetaData, type Paging$3 as Paging, type PagingMetadataV2$3 as PagingMetadataV2, type PlatformQuery$3 as PlatformQuery, type PlatformQueryPagingMethodOneOf$3 as PlatformQueryPagingMethodOneOf, type context$3_QueryCategoriesOptions as QueryCategoriesOptions, type context$3_QueryCategoriesRequest as QueryCategoriesRequest, type context$3_QueryCategoriesResponse as QueryCategoriesResponse, type context$3_QueryCategoriesResponseNonNullableFields as QueryCategoriesResponseNonNullableFields, type RestoreInfo$3 as RestoreInfo, type SeoSchema$3 as SeoSchema, type Settings$3 as Settings, SortOrder$3 as SortOrder, type Sorting$3 as Sorting, type Tag$3 as Tag, type context$3_UpdateCategoryRequest as UpdateCategoryRequest, type context$3_UpdateCategoryResponse as UpdateCategoryResponse, WebhookIdentityType$3 as WebhookIdentityType, type context$3__publicOnCategoryCreatedType as _publicOnCategoryCreatedType, type context$3__publicOnCategoryDeletedType as _publicOnCategoryDeletedType, type context$3__publicOnCategoryUpdatedType as _publicOnCategoryUpdatedType, context$3_getCategory as getCategory, context$3_getCategoryBySlug as getCategoryBySlug, context$3_listCategories as listCategories, context$3_onCategoryCreated as onCategoryCreated, context$3_onCategoryDeleted as onCategoryDeleted, context$3_onCategoryUpdated as onCategoryUpdated, onCategoryCreated$1 as publicOnCategoryCreated, onCategoryDeleted$1 as publicOnCategoryDeleted, onCategoryUpdated$1 as publicOnCategoryUpdated, context$3_queryCategories as queryCategories };
1824
3028
  }
1825
3029
 
3030
+ type HostModule$2<T, H extends Host$2> = {
3031
+ __type: 'host';
3032
+ create(host: H): T;
3033
+ };
3034
+ type HostModuleAPI$2<T extends HostModule$2<any, any>> = T extends HostModule$2<infer U, any> ? U : never;
3035
+ type Host$2<Environment = unknown> = {
3036
+ channel: {
3037
+ observeState(callback: (props: unknown, environment: Environment) => unknown): {
3038
+ disconnect: () => void;
3039
+ } | Promise<{
3040
+ disconnect: () => void;
3041
+ }>;
3042
+ };
3043
+ environment?: Environment;
3044
+ /**
3045
+ * Optional bast url to use for API requests, for example `www.wixapis.com`
3046
+ */
3047
+ apiBaseUrl?: string;
3048
+ /**
3049
+ * Possible data to be provided by every host, for cross cutting concerns
3050
+ * like internationalization, billing, etc.
3051
+ */
3052
+ essentials?: {
3053
+ /**
3054
+ * The language of the currently viewed session
3055
+ */
3056
+ language?: string;
3057
+ /**
3058
+ * The locale of the currently viewed session
3059
+ */
3060
+ locale?: string;
3061
+ /**
3062
+ * Any headers that should be passed through to the API requests
3063
+ */
3064
+ passThroughHeaders?: Record<string, string>;
3065
+ };
3066
+ };
3067
+
3068
+ type RESTFunctionDescriptor$2<T extends (...args: any[]) => any = (...args: any[]) => any> = (httpClient: HttpClient$2) => T;
3069
+ interface HttpClient$2 {
3070
+ request<TResponse, TData = any>(req: RequestOptionsFactory$2<TResponse, TData>): Promise<HttpResponse$2<TResponse>>;
3071
+ fetchWithAuth: typeof fetch;
3072
+ wixAPIFetch: (relativeUrl: string, options: RequestInit) => Promise<Response>;
3073
+ getActiveToken?: () => string | undefined;
3074
+ }
3075
+ type RequestOptionsFactory$2<TResponse = any, TData = any> = (context: any) => RequestOptions$2<TResponse, TData>;
3076
+ type HttpResponse$2<T = any> = {
3077
+ data: T;
3078
+ status: number;
3079
+ statusText: string;
3080
+ headers: any;
3081
+ request?: any;
3082
+ };
3083
+ type RequestOptions$2<_TResponse = any, Data = any> = {
3084
+ method: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
3085
+ url: string;
3086
+ data?: Data;
3087
+ params?: URLSearchParams;
3088
+ } & APIMetadata$2;
3089
+ type APIMetadata$2 = {
3090
+ methodFqn?: string;
3091
+ entityFqdn?: string;
3092
+ packageName?: string;
3093
+ };
3094
+ type BuildRESTFunction$2<T extends RESTFunctionDescriptor$2> = T extends RESTFunctionDescriptor$2<infer U> ? U : never;
3095
+ type EventDefinition$5<Payload = unknown, Type extends string = string> = {
3096
+ __type: 'event-definition';
3097
+ type: Type;
3098
+ isDomainEvent?: boolean;
3099
+ transformations?: (envelope: unknown) => Payload;
3100
+ __payload: Payload;
3101
+ };
3102
+ declare function EventDefinition$5<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition$5<Payload, Type>;
3103
+ type EventHandler$5<T extends EventDefinition$5> = (payload: T['__payload']) => void | Promise<void>;
3104
+ type BuildEventDefinition$5<T extends EventDefinition$5<any, string>> = (handler: EventHandler$5<T>) => void;
3105
+
3106
+ type ServicePluginMethodInput$2 = {
3107
+ request: any;
3108
+ metadata: any;
3109
+ };
3110
+ type ServicePluginContract$2 = Record<string, (payload: ServicePluginMethodInput$2) => unknown | Promise<unknown>>;
3111
+ type ServicePluginMethodMetadata$2 = {
3112
+ name: string;
3113
+ primaryHttpMappingPath: string;
3114
+ transformations: {
3115
+ fromREST: (...args: unknown[]) => ServicePluginMethodInput$2;
3116
+ toREST: (...args: unknown[]) => unknown;
3117
+ };
3118
+ };
3119
+ type ServicePluginDefinition$2<Contract extends ServicePluginContract$2> = {
3120
+ __type: 'service-plugin-definition';
3121
+ componentType: string;
3122
+ methods: ServicePluginMethodMetadata$2[];
3123
+ __contract: Contract;
3124
+ };
3125
+ declare function ServicePluginDefinition$2<Contract extends ServicePluginContract$2>(componentType: string, methods: ServicePluginMethodMetadata$2[]): ServicePluginDefinition$2<Contract>;
3126
+ type BuildServicePluginDefinition$2<T extends ServicePluginDefinition$2<any>> = (implementation: T['__contract']) => void;
3127
+ declare const SERVICE_PLUGIN_ERROR_TYPE$2 = "wix_spi_error";
3128
+
3129
+ type RequestContext$2 = {
3130
+ isSSR: boolean;
3131
+ host: string;
3132
+ protocol?: string;
3133
+ };
3134
+ type ResponseTransformer$2 = (data: any, headers?: any) => any;
3135
+ /**
3136
+ * Ambassador request options types are copied mostly from AxiosRequestConfig.
3137
+ * They are copied and not imported to reduce the amount of dependencies (to reduce install time).
3138
+ * https://github.com/axios/axios/blob/3f53eb6960f05a1f88409c4b731a40de595cb825/index.d.ts#L307-L315
3139
+ */
3140
+ type Method$2 = 'get' | 'GET' | 'delete' | 'DELETE' | 'head' | 'HEAD' | 'options' | 'OPTIONS' | 'post' | 'POST' | 'put' | 'PUT' | 'patch' | 'PATCH' | 'purge' | 'PURGE' | 'link' | 'LINK' | 'unlink' | 'UNLINK';
3141
+ type AmbassadorRequestOptions$2<T = any> = {
3142
+ _?: T;
3143
+ url?: string;
3144
+ method?: Method$2;
3145
+ params?: any;
3146
+ data?: any;
3147
+ transformResponse?: ResponseTransformer$2 | ResponseTransformer$2[];
3148
+ };
3149
+ type AmbassadorFactory$2<Request, Response> = (payload: Request) => ((context: RequestContext$2) => AmbassadorRequestOptions$2<Response>) & {
3150
+ __isAmbassador: boolean;
3151
+ };
3152
+ type AmbassadorFunctionDescriptor$2<Request = any, Response = any> = AmbassadorFactory$2<Request, Response>;
3153
+ type BuildAmbassadorFunction$2<T extends AmbassadorFunctionDescriptor$2> = T extends AmbassadorFunctionDescriptor$2<infer Request, infer Response> ? (req: Request) => Promise<Response> : never;
3154
+
3155
+ declare global {
3156
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
3157
+ interface SymbolConstructor {
3158
+ readonly observable: symbol;
3159
+ }
3160
+ }
3161
+
3162
+ declare const emptyObjectSymbol$2: unique symbol;
3163
+
3164
+ /**
3165
+ Represents a strictly empty plain object, the `{}` value.
3166
+
3167
+ When you annotate something as the type `{}`, it can be anything except `null` and `undefined`. This means that you cannot use `{}` to represent an empty plain object ([read more](https://stackoverflow.com/questions/47339869/typescript-empty-object-and-any-difference/52193484#52193484)).
3168
+
3169
+ @example
3170
+ ```
3171
+ import type {EmptyObject} from 'type-fest';
3172
+
3173
+ // The following illustrates the problem with `{}`.
3174
+ const foo1: {} = {}; // Pass
3175
+ const foo2: {} = []; // Pass
3176
+ const foo3: {} = 42; // Pass
3177
+ const foo4: {} = {a: 1}; // Pass
3178
+
3179
+ // With `EmptyObject` only the first case is valid.
3180
+ const bar1: EmptyObject = {}; // Pass
3181
+ const bar2: EmptyObject = 42; // Fail
3182
+ const bar3: EmptyObject = []; // Fail
3183
+ const bar4: EmptyObject = {a: 1}; // Fail
3184
+ ```
3185
+
3186
+ Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<never, never>` do not work. See {@link https://github.com/sindresorhus/type-fest/issues/395 #395}.
3187
+
3188
+ @category Object
3189
+ */
3190
+ type EmptyObject$2 = {[emptyObjectSymbol$2]?: never};
3191
+
3192
+ /**
3193
+ Returns a boolean for whether the two given types are equal.
3194
+
3195
+ @link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650
3196
+ @link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796
3197
+
3198
+ Use-cases:
3199
+ - If you want to make a conditional branch based on the result of a comparison of two types.
3200
+
3201
+ @example
3202
+ ```
3203
+ import type {IsEqual} from 'type-fest';
3204
+
3205
+ // This type returns a boolean for whether the given array includes the given item.
3206
+ // `IsEqual` is used to compare the given array at position 0 and the given item and then return true if they are equal.
3207
+ type Includes<Value extends readonly any[], Item> =
3208
+ Value extends readonly [Value[0], ...infer rest]
3209
+ ? IsEqual<Value[0], Item> extends true
3210
+ ? true
3211
+ : Includes<rest, Item>
3212
+ : false;
3213
+ ```
3214
+
3215
+ @category Type Guard
3216
+ @category Utilities
3217
+ */
3218
+ type IsEqual$2<A, B> =
3219
+ (<G>() => G extends A ? 1 : 2) extends
3220
+ (<G>() => G extends B ? 1 : 2)
3221
+ ? true
3222
+ : false;
3223
+
3224
+ /**
3225
+ Filter out keys from an object.
3226
+
3227
+ Returns `never` if `Exclude` is strictly equal to `Key`.
3228
+ Returns `never` if `Key` extends `Exclude`.
3229
+ Returns `Key` otherwise.
3230
+
3231
+ @example
3232
+ ```
3233
+ type Filtered = Filter<'foo', 'foo'>;
3234
+ //=> never
3235
+ ```
3236
+
3237
+ @example
3238
+ ```
3239
+ type Filtered = Filter<'bar', string>;
3240
+ //=> never
3241
+ ```
3242
+
3243
+ @example
3244
+ ```
3245
+ type Filtered = Filter<'bar', 'foo'>;
3246
+ //=> 'bar'
3247
+ ```
3248
+
3249
+ @see {Except}
3250
+ */
3251
+ type Filter$2<KeyType, ExcludeType> = IsEqual$2<KeyType, ExcludeType> extends true ? never : (KeyType extends ExcludeType ? never : KeyType);
3252
+
3253
+ type ExceptOptions$2 = {
3254
+ /**
3255
+ Disallow assigning non-specified properties.
3256
+
3257
+ Note that any omitted properties in the resulting type will be present in autocomplete as `undefined`.
3258
+
3259
+ @default false
3260
+ */
3261
+ requireExactProps?: boolean;
3262
+ };
3263
+
3264
+ /**
3265
+ Create a type from an object type without certain keys.
3266
+
3267
+ We recommend setting the `requireExactProps` option to `true`.
3268
+
3269
+ This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
3270
+
3271
+ This type was proposed to the TypeScript team, which declined it, saying they prefer that libraries implement stricter versions of the built-in types ([microsoft/TypeScript#30825](https://github.com/microsoft/TypeScript/issues/30825#issuecomment-523668235)).
3272
+
3273
+ @example
3274
+ ```
3275
+ import type {Except} from 'type-fest';
3276
+
3277
+ type Foo = {
3278
+ a: number;
3279
+ b: string;
3280
+ };
3281
+
3282
+ type FooWithoutA = Except<Foo, 'a'>;
3283
+ //=> {b: string}
3284
+
3285
+ const fooWithoutA: FooWithoutA = {a: 1, b: '2'};
3286
+ //=> errors: 'a' does not exist in type '{ b: string; }'
3287
+
3288
+ type FooWithoutB = Except<Foo, 'b', {requireExactProps: true}>;
3289
+ //=> {a: number} & Partial<Record<"b", never>>
3290
+
3291
+ const fooWithoutB: FooWithoutB = {a: 1, b: '2'};
3292
+ //=> errors at 'b': Type 'string' is not assignable to type 'undefined'.
3293
+ ```
3294
+
3295
+ @category Object
3296
+ */
3297
+ type Except$2<ObjectType, KeysType extends keyof ObjectType, Options extends ExceptOptions$2 = {requireExactProps: false}> = {
3298
+ [KeyType in keyof ObjectType as Filter$2<KeyType, KeysType>]: ObjectType[KeyType];
3299
+ } & (Options['requireExactProps'] extends true
3300
+ ? Partial<Record<KeysType, never>>
3301
+ : {});
3302
+
3303
+ /**
3304
+ Extract the keys from a type where the value type of the key extends the given `Condition`.
3305
+
3306
+ Internally this is used for the `ConditionalPick` and `ConditionalExcept` types.
3307
+
3308
+ @example
3309
+ ```
3310
+ import type {ConditionalKeys} from 'type-fest';
3311
+
3312
+ interface Example {
3313
+ a: string;
3314
+ b: string | number;
3315
+ c?: string;
3316
+ d: {};
3317
+ }
3318
+
3319
+ type StringKeysOnly = ConditionalKeys<Example, string>;
3320
+ //=> 'a'
3321
+ ```
3322
+
3323
+ To support partial types, make sure your `Condition` is a union of undefined (for example, `string | undefined`) as demonstrated below.
3324
+
3325
+ @example
3326
+ ```
3327
+ import type {ConditionalKeys} from 'type-fest';
3328
+
3329
+ type StringKeysAndUndefined = ConditionalKeys<Example, string | undefined>;
3330
+ //=> 'a' | 'c'
3331
+ ```
3332
+
3333
+ @category Object
3334
+ */
3335
+ type ConditionalKeys$2<Base, Condition> = NonNullable<
3336
+ // Wrap in `NonNullable` to strip away the `undefined` type from the produced union.
3337
+ {
3338
+ // Map through all the keys of the given base type.
3339
+ [Key in keyof Base]:
3340
+ // Pick only keys with types extending the given `Condition` type.
3341
+ Base[Key] extends Condition
3342
+ // Retain this key since the condition passes.
3343
+ ? Key
3344
+ // Discard this key since the condition fails.
3345
+ : never;
3346
+
3347
+ // Convert the produced object into a union type of the keys which passed the conditional test.
3348
+ }[keyof Base]
3349
+ >;
3350
+
3351
+ /**
3352
+ Exclude keys from a shape that matches the given `Condition`.
3353
+
3354
+ This is useful when you want to create a new type with a specific set of keys from a shape. For example, you might want to exclude all the primitive properties from a class and form a new shape containing everything but the primitive properties.
3355
+
3356
+ @example
3357
+ ```
3358
+ import type {Primitive, ConditionalExcept} from 'type-fest';
3359
+
3360
+ class Awesome {
3361
+ name: string;
3362
+ successes: number;
3363
+ failures: bigint;
3364
+
3365
+ run() {}
3366
+ }
3367
+
3368
+ type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>;
3369
+ //=> {run: () => void}
3370
+ ```
3371
+
3372
+ @example
3373
+ ```
3374
+ import type {ConditionalExcept} from 'type-fest';
3375
+
3376
+ interface Example {
3377
+ a: string;
3378
+ b: string | number;
3379
+ c: () => void;
3380
+ d: {};
3381
+ }
3382
+
3383
+ type NonStringKeysOnly = ConditionalExcept<Example, string>;
3384
+ //=> {b: string | number; c: () => void; d: {}}
3385
+ ```
3386
+
3387
+ @category Object
3388
+ */
3389
+ type ConditionalExcept$2<Base, Condition> = Except$2<
3390
+ Base,
3391
+ ConditionalKeys$2<Base, Condition>
3392
+ >;
3393
+
3394
+ /**
3395
+ * Descriptors are objects that describe the API of a module, and the module
3396
+ * can either be a REST module or a host module.
3397
+ * This type is recursive, so it can describe nested modules.
3398
+ */
3399
+ type Descriptors$2 = RESTFunctionDescriptor$2 | AmbassadorFunctionDescriptor$2 | HostModule$2<any, any> | EventDefinition$5<any> | ServicePluginDefinition$2<any> | {
3400
+ [key: string]: Descriptors$2 | PublicMetadata$2 | any;
3401
+ };
3402
+ /**
3403
+ * This type takes in a descriptors object of a certain Host (including an `unknown` host)
3404
+ * and returns an object with the same structure, but with all descriptors replaced with their API.
3405
+ * Any non-descriptor properties are removed from the returned object, including descriptors that
3406
+ * do not match the given host (as they will not work with the given host).
3407
+ */
3408
+ type BuildDescriptors$2<T extends Descriptors$2, H extends Host$2<any> | undefined, Depth extends number = 5> = {
3409
+ done: T;
3410
+ recurse: T extends {
3411
+ __type: typeof SERVICE_PLUGIN_ERROR_TYPE$2;
3412
+ } ? never : T extends AmbassadorFunctionDescriptor$2 ? BuildAmbassadorFunction$2<T> : T extends RESTFunctionDescriptor$2 ? BuildRESTFunction$2<T> : T extends EventDefinition$5<any> ? BuildEventDefinition$5<T> : T extends ServicePluginDefinition$2<any> ? BuildServicePluginDefinition$2<T> : T extends HostModule$2<any, any> ? HostModuleAPI$2<T> : ConditionalExcept$2<{
3413
+ [Key in keyof T]: T[Key] extends Descriptors$2 ? BuildDescriptors$2<T[Key], H, [
3414
+ -1,
3415
+ 0,
3416
+ 1,
3417
+ 2,
3418
+ 3,
3419
+ 4,
3420
+ 5
3421
+ ][Depth]> : never;
3422
+ }, EmptyObject$2>;
3423
+ }[Depth extends -1 ? 'done' : 'recurse'];
3424
+ type PublicMetadata$2 = {
3425
+ PACKAGE_NAME?: string;
3426
+ };
3427
+
3428
+ declare global {
3429
+ interface ContextualClient {
3430
+ }
3431
+ }
3432
+ /**
3433
+ * A type used to create concerete types from SDK descriptors in
3434
+ * case a contextual client is available.
3435
+ */
3436
+ type MaybeContext$2<T extends Descriptors$2> = globalThis.ContextualClient extends {
3437
+ host: Host$2;
3438
+ } ? BuildDescriptors$2<T, globalThis.ContextualClient['host']> : T;
3439
+
1826
3440
  interface DraftPost$1 {
1827
3441
  /**
1828
3442
  * Draft post ID.
@@ -5140,7 +6754,7 @@ interface DraftPostsQueryBuilder {
5140
6754
  find: () => Promise<DraftPostsQueryResult>;
5141
6755
  }
5142
6756
 
5143
- declare function createDraftPost$1(httpClient: HttpClient): CreateDraftPostSignature;
6757
+ declare function createDraftPost$1(httpClient: HttpClient$2): CreateDraftPostSignature;
5144
6758
  interface CreateDraftPostSignature {
5145
6759
  /**
5146
6760
  * Creates a draft post.
@@ -5151,7 +6765,7 @@ interface CreateDraftPostSignature {
5151
6765
  */
5152
6766
  (draftPost: DraftPost$1, options?: CreateDraftPostOptions | undefined): Promise<CreateDraftPostResponse & CreateDraftPostResponseNonNullableFields>;
5153
6767
  }
5154
- declare function bulkCreateDraftPosts$1(httpClient: HttpClient): BulkCreateDraftPostsSignature;
6768
+ declare function bulkCreateDraftPosts$1(httpClient: HttpClient$2): BulkCreateDraftPostsSignature;
5155
6769
  interface BulkCreateDraftPostsSignature {
5156
6770
  /**
5157
6771
  * Creates multiple draft posts.
@@ -5160,7 +6774,7 @@ interface BulkCreateDraftPostsSignature {
5160
6774
  */
5161
6775
  (draftPosts: DraftPost$1[], options?: BulkCreateDraftPostsOptions | undefined): Promise<BulkCreateDraftPostsResponse & BulkCreateDraftPostsResponseNonNullableFields>;
5162
6776
  }
5163
- declare function bulkUpdateDraftPosts$1(httpClient: HttpClient): BulkUpdateDraftPostsSignature;
6777
+ declare function bulkUpdateDraftPosts$1(httpClient: HttpClient$2): BulkUpdateDraftPostsSignature;
5164
6778
  interface BulkUpdateDraftPostsSignature {
5165
6779
  /**
5166
6780
  * Updates multiple draft posts.
@@ -5168,7 +6782,7 @@ interface BulkUpdateDraftPostsSignature {
5168
6782
  */
5169
6783
  (options?: BulkUpdateDraftPostsOptions | undefined): Promise<BulkUpdateDraftPostsResponse & BulkUpdateDraftPostsResponseNonNullableFields>;
5170
6784
  }
5171
- declare function listDeletedDraftPosts$1(httpClient: HttpClient): ListDeletedDraftPostsSignature;
6785
+ declare function listDeletedDraftPosts$1(httpClient: HttpClient$2): ListDeletedDraftPostsSignature;
5172
6786
  interface ListDeletedDraftPostsSignature {
5173
6787
  /**
5174
6788
  * Retrieves a list of up to 100 deleted draft posts.
@@ -5181,7 +6795,7 @@ interface ListDeletedDraftPostsSignature {
5181
6795
  */
5182
6796
  (options?: ListDeletedDraftPostsOptions | undefined): Promise<ListDeletedDraftPostsResponse & ListDeletedDraftPostsResponseNonNullableFields>;
5183
6797
  }
5184
- declare function getDraftPost$1(httpClient: HttpClient): GetDraftPostSignature;
6798
+ declare function getDraftPost$1(httpClient: HttpClient$2): GetDraftPostSignature;
5185
6799
  interface GetDraftPostSignature {
5186
6800
  /**
5187
6801
  * Gets a draft post by the provided ID.
@@ -5192,7 +6806,7 @@ interface GetDraftPostSignature {
5192
6806
  */
5193
6807
  (draftPostId: string, options?: GetDraftPostOptions | undefined): Promise<GetDraftPostResponse & GetDraftPostResponseNonNullableFields>;
5194
6808
  }
5195
- declare function updateDraftPost$1(httpClient: HttpClient): UpdateDraftPostSignature;
6809
+ declare function updateDraftPost$1(httpClient: HttpClient$2): UpdateDraftPostSignature;
5196
6810
  interface UpdateDraftPostSignature {
5197
6811
  /**
5198
6812
  * Updates a draft post.
@@ -5202,7 +6816,7 @@ interface UpdateDraftPostSignature {
5202
6816
  */
5203
6817
  (_id: string, draftPost: UpdateDraftPost, options?: UpdateDraftPostOptions | undefined): Promise<UpdateDraftPostResponse & UpdateDraftPostResponseNonNullableFields>;
5204
6818
  }
5205
- declare function deleteDraftPost$1(httpClient: HttpClient): DeleteDraftPostSignature;
6819
+ declare function deleteDraftPost$1(httpClient: HttpClient$2): DeleteDraftPostSignature;
5206
6820
  interface DeleteDraftPostSignature {
5207
6821
  /**
5208
6822
  * Moves a draft post with the provided ID to the trash bin.
@@ -5214,7 +6828,7 @@ interface DeleteDraftPostSignature {
5214
6828
  */
5215
6829
  (draftPostId: string, options?: DeleteDraftPostOptions | undefined): Promise<void>;
5216
6830
  }
5217
- declare function removeFromTrashBin$1(httpClient: HttpClient): RemoveFromTrashBinSignature;
6831
+ declare function removeFromTrashBin$1(httpClient: HttpClient$2): RemoveFromTrashBinSignature;
5218
6832
  interface RemoveFromTrashBinSignature {
5219
6833
  /**
5220
6834
  * Permanently deletes a draft post by the provided ID from the trash bin.
@@ -5224,7 +6838,7 @@ interface RemoveFromTrashBinSignature {
5224
6838
  */
5225
6839
  (draftPostId: string): Promise<void>;
5226
6840
  }
5227
- declare function bulkDeleteDraftPosts$1(httpClient: HttpClient): BulkDeleteDraftPostsSignature;
6841
+ declare function bulkDeleteDraftPosts$1(httpClient: HttpClient$2): BulkDeleteDraftPostsSignature;
5228
6842
  interface BulkDeleteDraftPostsSignature {
5229
6843
  /**
5230
6844
  * Deletes multiple draft posts.
@@ -5233,7 +6847,7 @@ interface BulkDeleteDraftPostsSignature {
5233
6847
  */
5234
6848
  (postIds: string[], options?: BulkDeleteDraftPostsOptions | undefined): Promise<BulkDeleteDraftPostsResponse & BulkDeleteDraftPostsResponseNonNullableFields>;
5235
6849
  }
5236
- declare function listDraftPosts$1(httpClient: HttpClient): ListDraftPostsSignature;
6850
+ declare function listDraftPosts$1(httpClient: HttpClient$2): ListDraftPostsSignature;
5237
6851
  interface ListDraftPostsSignature {
5238
6852
  /**
5239
6853
  * Retrieves a list of up to 100 draft posts per request.
@@ -5246,7 +6860,7 @@ interface ListDraftPostsSignature {
5246
6860
  */
5247
6861
  (options?: ListDraftPostsOptions | undefined): Promise<ListDraftPostsResponse & ListDraftPostsResponseNonNullableFields>;
5248
6862
  }
5249
- declare function getDeletedDraftPost$1(httpClient: HttpClient): GetDeletedDraftPostSignature;
6863
+ declare function getDeletedDraftPost$1(httpClient: HttpClient$2): GetDeletedDraftPostSignature;
5250
6864
  interface GetDeletedDraftPostSignature {
5251
6865
  /**
5252
6866
  * Gets a deleted draft post from the trash bin by the provided ID.
@@ -5256,7 +6870,7 @@ interface GetDeletedDraftPostSignature {
5256
6870
  */
5257
6871
  (draftPostId: string): Promise<GetDeletedDraftPostResponse & GetDeletedDraftPostResponseNonNullableFields>;
5258
6872
  }
5259
- declare function restoreFromTrashBin$1(httpClient: HttpClient): RestoreFromTrashBinSignature;
6873
+ declare function restoreFromTrashBin$1(httpClient: HttpClient$2): RestoreFromTrashBinSignature;
5260
6874
  interface RestoreFromTrashBinSignature {
5261
6875
  /**
5262
6876
  * Restores a deleted draft post from the trash bin by the provided ID.
@@ -5266,7 +6880,7 @@ interface RestoreFromTrashBinSignature {
5266
6880
  */
5267
6881
  (draftPostId: string): Promise<RestoreFromTrashBinResponse & RestoreFromTrashBinResponseNonNullableFields>;
5268
6882
  }
5269
- declare function queryDraftPosts$1(httpClient: HttpClient): QueryDraftPostsSignature;
6883
+ declare function queryDraftPosts$1(httpClient: HttpClient$2): QueryDraftPostsSignature;
5270
6884
  interface QueryDraftPostsSignature {
5271
6885
  /**
5272
6886
  * Retrieves a list of up to 100 draft posts, given the provided paging, filtering, and sorting.
@@ -5279,7 +6893,7 @@ interface QueryDraftPostsSignature {
5279
6893
  */
5280
6894
  (options?: QueryDraftPostsOptions | undefined): DraftPostsQueryBuilder;
5281
6895
  }
5282
- declare function publishDraftPost$1(httpClient: HttpClient): PublishDraftPostSignature;
6896
+ declare function publishDraftPost$1(httpClient: HttpClient$2): PublishDraftPostSignature;
5283
6897
  interface PublishDraftPostSignature {
5284
6898
  /**
5285
6899
  * Publishes a specified draft post by ID. This creates a new post entity with the data from the draft post.
@@ -5289,26 +6903,44 @@ interface PublishDraftPostSignature {
5289
6903
  */
5290
6904
  (draftPostId: string): Promise<PublishDraftPostResponse & PublishDraftPostResponseNonNullableFields>;
5291
6905
  }
5292
- declare const onDraftCreated$1: EventDefinition<DraftCreatedEnvelope, "wix.blog.v3.draft_created">;
5293
- declare const onDraftUpdated$1: EventDefinition<DraftUpdatedEnvelope, "wix.blog.v3.draft_updated">;
5294
- declare const onDraftDeleted$1: EventDefinition<DraftDeletedEnvelope, "wix.blog.v3.draft_deleted">;
5295
-
5296
- declare function createEventModule$2<T extends EventDefinition<any, string>>(eventDefinition: T): BuildEventDefinition<T> & T;
5297
-
5298
- declare const createDraftPost: BuildRESTFunction<typeof createDraftPost$1> & typeof createDraftPost$1;
5299
- declare const bulkCreateDraftPosts: BuildRESTFunction<typeof bulkCreateDraftPosts$1> & typeof bulkCreateDraftPosts$1;
5300
- declare const bulkUpdateDraftPosts: BuildRESTFunction<typeof bulkUpdateDraftPosts$1> & typeof bulkUpdateDraftPosts$1;
5301
- declare const listDeletedDraftPosts: BuildRESTFunction<typeof listDeletedDraftPosts$1> & typeof listDeletedDraftPosts$1;
5302
- declare const getDraftPost: BuildRESTFunction<typeof getDraftPost$1> & typeof getDraftPost$1;
5303
- declare const updateDraftPost: BuildRESTFunction<typeof updateDraftPost$1> & typeof updateDraftPost$1;
5304
- declare const deleteDraftPost: BuildRESTFunction<typeof deleteDraftPost$1> & typeof deleteDraftPost$1;
5305
- declare const removeFromTrashBin: BuildRESTFunction<typeof removeFromTrashBin$1> & typeof removeFromTrashBin$1;
5306
- declare const bulkDeleteDraftPosts: BuildRESTFunction<typeof bulkDeleteDraftPosts$1> & typeof bulkDeleteDraftPosts$1;
5307
- declare const listDraftPosts: BuildRESTFunction<typeof listDraftPosts$1> & typeof listDraftPosts$1;
5308
- declare const getDeletedDraftPost: BuildRESTFunction<typeof getDeletedDraftPost$1> & typeof getDeletedDraftPost$1;
5309
- declare const restoreFromTrashBin: BuildRESTFunction<typeof restoreFromTrashBin$1> & typeof restoreFromTrashBin$1;
5310
- declare const queryDraftPosts: BuildRESTFunction<typeof queryDraftPosts$1> & typeof queryDraftPosts$1;
5311
- declare const publishDraftPost: BuildRESTFunction<typeof publishDraftPost$1> & typeof publishDraftPost$1;
6906
+ declare const onDraftCreated$1: EventDefinition$5<DraftCreatedEnvelope, "wix.blog.v3.draft_created">;
6907
+ declare const onDraftUpdated$1: EventDefinition$5<DraftUpdatedEnvelope, "wix.blog.v3.draft_updated">;
6908
+ declare const onDraftDeleted$1: EventDefinition$5<DraftDeletedEnvelope, "wix.blog.v3.draft_deleted">;
6909
+
6910
+ type EventDefinition$4<Payload = unknown, Type extends string = string> = {
6911
+ __type: 'event-definition';
6912
+ type: Type;
6913
+ isDomainEvent?: boolean;
6914
+ transformations?: (envelope: unknown) => Payload;
6915
+ __payload: Payload;
6916
+ };
6917
+ declare function EventDefinition$4<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition$4<Payload, Type>;
6918
+ type EventHandler$4<T extends EventDefinition$4> = (payload: T['__payload']) => void | Promise<void>;
6919
+ type BuildEventDefinition$4<T extends EventDefinition$4<any, string>> = (handler: EventHandler$4<T>) => void;
6920
+
6921
+ declare global {
6922
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
6923
+ interface SymbolConstructor {
6924
+ readonly observable: symbol;
6925
+ }
6926
+ }
6927
+
6928
+ declare function createEventModule$2<T extends EventDefinition$4<any, string>>(eventDefinition: T): BuildEventDefinition$4<T> & T;
6929
+
6930
+ declare const createDraftPost: MaybeContext$2<BuildRESTFunction$2<typeof createDraftPost$1> & typeof createDraftPost$1>;
6931
+ declare const bulkCreateDraftPosts: MaybeContext$2<BuildRESTFunction$2<typeof bulkCreateDraftPosts$1> & typeof bulkCreateDraftPosts$1>;
6932
+ declare const bulkUpdateDraftPosts: MaybeContext$2<BuildRESTFunction$2<typeof bulkUpdateDraftPosts$1> & typeof bulkUpdateDraftPosts$1>;
6933
+ declare const listDeletedDraftPosts: MaybeContext$2<BuildRESTFunction$2<typeof listDeletedDraftPosts$1> & typeof listDeletedDraftPosts$1>;
6934
+ declare const getDraftPost: MaybeContext$2<BuildRESTFunction$2<typeof getDraftPost$1> & typeof getDraftPost$1>;
6935
+ declare const updateDraftPost: MaybeContext$2<BuildRESTFunction$2<typeof updateDraftPost$1> & typeof updateDraftPost$1>;
6936
+ declare const deleteDraftPost: MaybeContext$2<BuildRESTFunction$2<typeof deleteDraftPost$1> & typeof deleteDraftPost$1>;
6937
+ declare const removeFromTrashBin: MaybeContext$2<BuildRESTFunction$2<typeof removeFromTrashBin$1> & typeof removeFromTrashBin$1>;
6938
+ declare const bulkDeleteDraftPosts: MaybeContext$2<BuildRESTFunction$2<typeof bulkDeleteDraftPosts$1> & typeof bulkDeleteDraftPosts$1>;
6939
+ declare const listDraftPosts: MaybeContext$2<BuildRESTFunction$2<typeof listDraftPosts$1> & typeof listDraftPosts$1>;
6940
+ declare const getDeletedDraftPost: MaybeContext$2<BuildRESTFunction$2<typeof getDeletedDraftPost$1> & typeof getDeletedDraftPost$1>;
6941
+ declare const restoreFromTrashBin: MaybeContext$2<BuildRESTFunction$2<typeof restoreFromTrashBin$1> & typeof restoreFromTrashBin$1>;
6942
+ declare const queryDraftPosts: MaybeContext$2<BuildRESTFunction$2<typeof queryDraftPosts$1> & typeof queryDraftPosts$1>;
6943
+ declare const publishDraftPost: MaybeContext$2<BuildRESTFunction$2<typeof publishDraftPost$1> & typeof publishDraftPost$1>;
5312
6944
 
5313
6945
  type _publicOnDraftCreatedType = typeof onDraftCreated$1;
5314
6946
  /**
@@ -5453,6 +7085,416 @@ declare namespace context$2 {
5453
7085
  export { context$2_Action as Action, type ActionEvent$2 as ActionEvent, Alignment$1 as Alignment, type AnchorData$1 as AnchorData, type AppEmbedData$1 as AppEmbedData, type AppEmbedDataAppDataOneOf$1 as AppEmbedDataAppDataOneOf, AppType$1 as AppType, type ApplicationError$1 as ApplicationError, type context$2_ApproveDraftPostRequest as ApproveDraftPostRequest, type context$2_ApproveDraftPostResponse as ApproveDraftPostResponse, type AudioData$1 as AudioData, type Background$1 as Background, type BackgroundBackgroundOneOf$1 as BackgroundBackgroundOneOf, BackgroundType$1 as BackgroundType, type BaseEventMetadata$2 as BaseEventMetadata, type BlockquoteData$1 as BlockquoteData, type BlogPaging$1 as BlogPaging, type BookingData$1 as BookingData, type Border$1 as Border, type BorderColors$1 as BorderColors, type BulkActionMetadata$1 as BulkActionMetadata, type context$2_BulkCreateDraftPostsOptions as BulkCreateDraftPostsOptions, type context$2_BulkCreateDraftPostsRequest as BulkCreateDraftPostsRequest, type context$2_BulkCreateDraftPostsResponse as BulkCreateDraftPostsResponse, type context$2_BulkCreateDraftPostsResponseNonNullableFields as BulkCreateDraftPostsResponseNonNullableFields, type context$2_BulkDeleteDraftPostsOptions as BulkDeleteDraftPostsOptions, type context$2_BulkDeleteDraftPostsRequest as BulkDeleteDraftPostsRequest, type context$2_BulkDeleteDraftPostsResponse as BulkDeleteDraftPostsResponse, type context$2_BulkDeleteDraftPostsResponseNonNullableFields as BulkDeleteDraftPostsResponseNonNullableFields, type context$2_BulkDraftPostResult as BulkDraftPostResult, type context$2_BulkRejectDraftPostRequest as BulkRejectDraftPostRequest, type context$2_BulkRejectDraftPostResponse as BulkRejectDraftPostResponse, type context$2_BulkRevertToUnpublishedRequest as BulkRevertToUnpublishedRequest, type context$2_BulkRevertToUnpublishedResponse as BulkRevertToUnpublishedResponse, type context$2_BulkUpdateDraftPostLanguageRequest as BulkUpdateDraftPostLanguageRequest, type context$2_BulkUpdateDraftPostLanguageResponse as BulkUpdateDraftPostLanguageResponse, type context$2_BulkUpdateDraftPostsOptions as BulkUpdateDraftPostsOptions, type context$2_BulkUpdateDraftPostsRequest as BulkUpdateDraftPostsRequest, type context$2_BulkUpdateDraftPostsResponse as BulkUpdateDraftPostsResponse, type context$2_BulkUpdateDraftPostsResponseNonNullableFields as BulkUpdateDraftPostsResponseNonNullableFields, type BulletedListData$1 as BulletedListData, type ButtonData$1 as ButtonData, context$2_ButtonDataType as ButtonDataType, type Category$1 as Category, type CategoryTranslation$1 as CategoryTranslation, type CellStyle$1 as CellStyle, type CodeBlockData$1 as CodeBlockData, type CollapsibleListData$1 as CollapsibleListData, type ColorData$1 as ColorData, type Colors$1 as Colors, type CoverMedia$1 as CoverMedia, type CoverMediaMediaOneOf$1 as CoverMediaMediaOneOf, type context$2_CreateDraftPostOptions as CreateDraftPostOptions, type context$2_CreateDraftPostRequest as CreateDraftPostRequest, type context$2_CreateDraftPostResponse as CreateDraftPostResponse, type context$2_CreateDraftPostResponseNonNullableFields as CreateDraftPostResponseNonNullableFields, Crop$1 as Crop, type CursorPaging$2 as CursorPaging, type Cursors$2 as Cursors, type Decoration$1 as Decoration, type DecorationDataOneOf$1 as DecorationDataOneOf, DecorationType$1 as DecorationType, type context$2_DeleteDraftPostOptions as DeleteDraftPostOptions, type context$2_DeleteDraftPostRequest as DeleteDraftPostRequest, type context$2_DeleteDraftPostResponse as DeleteDraftPostResponse, type Design$1 as Design, type Dimensions$1 as Dimensions, Direction$1 as Direction, type DividerData$1 as DividerData, type DocumentStyle$1 as DocumentStyle, type DomainEvent$2 as DomainEvent, type DomainEventBodyOneOf$2 as DomainEventBodyOneOf, type context$2_DraftCreatedEnvelope as DraftCreatedEnvelope, type context$2_DraftDeletedEnvelope as DraftDeletedEnvelope, type DraftPost$1 as DraftPost, type context$2_DraftPostOwnerChanged as DraftPostOwnerChanged, type DraftPostTranslation$1 as DraftPostTranslation, type context$2_DraftPostsQueryBuilder as DraftPostsQueryBuilder, type context$2_DraftPostsQueryResult as DraftPostsQueryResult, type context$2_DraftUpdatedEnvelope as DraftUpdatedEnvelope, type EmbedData$1 as EmbedData, type EmbedMedia$1 as EmbedMedia, type EmbedThumbnail$1 as EmbedThumbnail, type EmbedVideo$1 as EmbedVideo, type EntityCreatedEvent$2 as EntityCreatedEvent, type EntityDeletedEvent$2 as EntityDeletedEvent, type EntityUpdatedEvent$2 as EntityUpdatedEvent, type EventData$1 as EventData, type EventMetadata$2 as EventMetadata, Field$2 as Field, type FileData$1 as FileData, type FileSource$1 as FileSource, type FileSourceDataOneOf$1 as FileSourceDataOneOf, type FontSizeData$1 as FontSizeData, FontType$1 as FontType, type GIF$1 as GIF, type GIFData$1 as GIFData, type GalleryData$1 as GalleryData, type GalleryOptions$1 as GalleryOptions, type context$2_GetDeletedDraftPostRequest as GetDeletedDraftPostRequest, type context$2_GetDeletedDraftPostResponse as GetDeletedDraftPostResponse, type context$2_GetDeletedDraftPostResponseNonNullableFields as GetDeletedDraftPostResponseNonNullableFields, type context$2_GetDraftPostOptions as GetDraftPostOptions, type context$2_GetDraftPostRequest as GetDraftPostRequest, type context$2_GetDraftPostResponse as GetDraftPostResponse, type context$2_GetDraftPostResponseNonNullableFields as GetDraftPostResponseNonNullableFields, type context$2_GetDraftPostTotalsRequest as GetDraftPostTotalsRequest, type context$2_GetDraftPostTotalsResponse as GetDraftPostTotalsResponse, context$2_GetDraftPostsSort as GetDraftPostsSort, type context$2_GetPostAmountsByLanguageRequest as GetPostAmountsByLanguageRequest, type context$2_GetPostAmountsByLanguageResponse as GetPostAmountsByLanguageResponse, type Gradient$1 as Gradient, type HTMLData$1 as HTMLData, type HTMLDataDataOneOf$1 as HTMLDataDataOneOf, type HeadingData$1 as HeadingData, type Height$1 as Height, type IdentificationData$2 as IdentificationData, type IdentificationDataIdOneOf$2 as IdentificationDataIdOneOf, type Image$1 as Image, type ImageData$1 as ImageData, type context$2_InitialDraftPostsCopied as InitialDraftPostsCopied, InitialExpandedItems$1 as InitialExpandedItems, type context$2_IsDraftPostAutoTranslatableRequest as IsDraftPostAutoTranslatableRequest, type context$2_IsDraftPostAutoTranslatableResponse as IsDraftPostAutoTranslatableResponse, type Item$1 as Item, type ItemDataOneOf$1 as ItemDataOneOf, type ItemMetadata$1 as ItemMetadata, type ItemStyle$1 as ItemStyle, type Keyword$2 as Keyword, type Layout$1 as Layout, LayoutType$1 as LayoutType, LineStyle$1 as LineStyle, type Link$1 as Link, type LinkData$1 as LinkData, type LinkDataOneOf$1 as LinkDataOneOf, type LinkPreviewData$1 as LinkPreviewData, type context$2_ListDeletedDraftPostsOptions as ListDeletedDraftPostsOptions, type context$2_ListDeletedDraftPostsRequest as ListDeletedDraftPostsRequest, type context$2_ListDeletedDraftPostsResponse as ListDeletedDraftPostsResponse, type context$2_ListDeletedDraftPostsResponseNonNullableFields as ListDeletedDraftPostsResponseNonNullableFields, type context$2_ListDraftPostsOptions as ListDraftPostsOptions, type context$2_ListDraftPostsRequest as ListDraftPostsRequest, type context$2_ListDraftPostsResponse as ListDraftPostsResponse, type context$2_ListDraftPostsResponseNonNullableFields as ListDraftPostsResponseNonNullableFields, type ListValue$1 as ListValue, type MapData$1 as MapData, type MapSettings$1 as MapSettings, MapType$1 as MapType, type context$2_MarkPostAsInModerationRequest as MarkPostAsInModerationRequest, type context$2_MarkPostAsInModerationResponse as MarkPostAsInModerationResponse, type context$2_MaskedDraftPosts as MaskedDraftPosts, type Media$1 as Media, type MediaMediaOneOf$1 as MediaMediaOneOf, type MentionData$1 as MentionData, type MessageEnvelope$2 as MessageEnvelope, type MetaData$2 as MetaData, type Metadata$1 as Metadata, type ModerationDetails$1 as ModerationDetails, ModerationStatusStatus$1 as ModerationStatusStatus, type Node$1 as Node, type NodeDataOneOf$1 as NodeDataOneOf, type NodeStyle$1 as NodeStyle, NodeType$1 as NodeType, NullValue$1 as NullValue, type Oembed$1 as Oembed, type Option$1 as Option, type OptionDesign$1 as OptionDesign, type OptionLayout$1 as OptionLayout, type OrderedListData$1 as OrderedListData, Orientation$1 as Orientation, Origin$1 as Origin, type PDFSettings$1 as PDFSettings, type Paging$2 as Paging, type PagingMetadataV2$2 as PagingMetadataV2, type ParagraphData$1 as ParagraphData, type Permissions$1 as Permissions, type PlatformQuery$2 as PlatformQuery, type PlatformQueryPagingMethodOneOf$2 as PlatformQueryPagingMethodOneOf, type PlaybackOptions$1 as PlaybackOptions, type PluginContainerData$1 as PluginContainerData, PluginContainerDataAlignment$1 as PluginContainerDataAlignment, type PluginContainerDataWidth$1 as PluginContainerDataWidth, type PluginContainerDataWidthDataOneOf$1 as PluginContainerDataWidthDataOneOf, type Poll$1 as Poll, type PollData$1 as PollData, type PollDataLayout$1 as PollDataLayout, type PollDesign$1 as PollDesign, type PollLayout$1 as PollLayout, PollLayoutDirection$1 as PollLayoutDirection, PollLayoutType$1 as PollLayoutType, type PollSettings$1 as PollSettings, type context$2_PostAmountByLanguage as PostAmountByLanguage, type context$2_PublishDraftPostRequest as PublishDraftPostRequest, type context$2_PublishDraftPostResponse as PublishDraftPostResponse, type context$2_PublishDraftPostResponseNonNullableFields as PublishDraftPostResponseNonNullableFields, type context$2_QueryDraftPostsOptions as QueryDraftPostsOptions, type context$2_QueryDraftPostsRequest as QueryDraftPostsRequest, type context$2_QueryDraftPostsResponse as QueryDraftPostsResponse, type context$2_QueryDraftPostsResponseNonNullableFields as QueryDraftPostsResponseNonNullableFields, type context$2_RejectDraftPostRequest as RejectDraftPostRequest, type context$2_RejectDraftPostResponse as RejectDraftPostResponse, type Rel$1 as Rel, type context$2_RemoveFromTrashBinRequest as RemoveFromTrashBinRequest, type context$2_RemoveFromTrashBinResponse as RemoveFromTrashBinResponse, type context$2_RestoreFromTrashBinRequest as RestoreFromTrashBinRequest, type context$2_RestoreFromTrashBinResponse as RestoreFromTrashBinResponse, type context$2_RestoreFromTrashBinResponseNonNullableFields as RestoreFromTrashBinResponseNonNullableFields, type RestoreInfo$2 as RestoreInfo, type context$2_RevertToUnpublishedRequest as RevertToUnpublishedRequest, type context$2_RevertToUnpublishedResponse as RevertToUnpublishedResponse, type RichContent$1 as RichContent, type SeoSchema$2 as SeoSchema, type Settings$2 as Settings, SortOrder$2 as SortOrder, type Sorting$2 as Sorting, Source$1 as Source, type Spoiler$1 as Spoiler, type SpoilerData$1 as SpoilerData, Status$1 as Status, type Styles$1 as Styles, type TableCellData$1 as TableCellData, type TableData$1 as TableData, type Tag$2 as Tag, Target$1 as Target, TextAlignment$1 as TextAlignment, type TextData$1 as TextData, type TextNodeStyle$1 as TextNodeStyle, type TextStyle$1 as TextStyle, type Thumbnails$1 as Thumbnails, ThumbnailsAlignment$1 as ThumbnailsAlignment, type context$2_TotalDraftPosts as TotalDraftPosts, context$2_TotalDraftPostsGroupingField as TotalDraftPostsGroupingField, type context$2_TranslateCategoryRequest as TranslateCategoryRequest, type context$2_TranslateCategoryResponse as TranslateCategoryResponse, type context$2_TranslateDraftRequest as TranslateDraftRequest, type context$2_TranslateDraftResponse as TranslateDraftResponse, Type$1 as Type, type context$2_UnpublishPostRequest as UnpublishPostRequest, type context$2_UnpublishPostResponse as UnpublishPostResponse, type context$2_UpdateDraftPost as UpdateDraftPost, type context$2_UpdateDraftPostContentRequest as UpdateDraftPostContentRequest, type context$2_UpdateDraftPostContentRequestDraftContentOneOf as UpdateDraftPostContentRequestDraftContentOneOf, type context$2_UpdateDraftPostContentResponse as UpdateDraftPostContentResponse, type context$2_UpdateDraftPostLanguageRequest as UpdateDraftPostLanguageRequest, type context$2_UpdateDraftPostLanguageResponse as UpdateDraftPostLanguageResponse, type context$2_UpdateDraftPostOptions as UpdateDraftPostOptions, type context$2_UpdateDraftPostRequest as UpdateDraftPostRequest, type context$2_UpdateDraftPostResponse as UpdateDraftPostResponse, type context$2_UpdateDraftPostResponseNonNullableFields as UpdateDraftPostResponseNonNullableFields, type V1Media$1 as V1Media, VerticalAlignment$1 as VerticalAlignment, type Video$1 as Video, type VideoData$1 as VideoData, type VideoResolution$1 as VideoResolution, ViewMode$1 as ViewMode, ViewRole$1 as ViewRole, VoteRole$1 as VoteRole, WebhookIdentityType$2 as WebhookIdentityType, Width$1 as Width, WidthType$1 as WidthType, type WixMedia$1 as WixMedia, type context$2__publicOnDraftCreatedType as _publicOnDraftCreatedType, type context$2__publicOnDraftDeletedType as _publicOnDraftDeletedType, type context$2__publicOnDraftUpdatedType as _publicOnDraftUpdatedType, context$2_bulkCreateDraftPosts as bulkCreateDraftPosts, context$2_bulkDeleteDraftPosts as bulkDeleteDraftPosts, context$2_bulkUpdateDraftPosts as bulkUpdateDraftPosts, context$2_createDraftPost as createDraftPost, context$2_deleteDraftPost as deleteDraftPost, context$2_getDeletedDraftPost as getDeletedDraftPost, context$2_getDraftPost as getDraftPost, context$2_listDeletedDraftPosts as listDeletedDraftPosts, context$2_listDraftPosts as listDraftPosts, context$2_onDraftCreated as onDraftCreated, context$2_onDraftDeleted as onDraftDeleted, context$2_onDraftUpdated as onDraftUpdated, onDraftCreated$1 as publicOnDraftCreated, onDraftDeleted$1 as publicOnDraftDeleted, onDraftUpdated$1 as publicOnDraftUpdated, context$2_publishDraftPost as publishDraftPost, context$2_queryDraftPosts as queryDraftPosts, context$2_removeFromTrashBin as removeFromTrashBin, context$2_restoreFromTrashBin as restoreFromTrashBin, context$2_updateDraftPost as updateDraftPost };
5454
7086
  }
5455
7087
 
7088
+ type HostModule$1<T, H extends Host$1> = {
7089
+ __type: 'host';
7090
+ create(host: H): T;
7091
+ };
7092
+ type HostModuleAPI$1<T extends HostModule$1<any, any>> = T extends HostModule$1<infer U, any> ? U : never;
7093
+ type Host$1<Environment = unknown> = {
7094
+ channel: {
7095
+ observeState(callback: (props: unknown, environment: Environment) => unknown): {
7096
+ disconnect: () => void;
7097
+ } | Promise<{
7098
+ disconnect: () => void;
7099
+ }>;
7100
+ };
7101
+ environment?: Environment;
7102
+ /**
7103
+ * Optional bast url to use for API requests, for example `www.wixapis.com`
7104
+ */
7105
+ apiBaseUrl?: string;
7106
+ /**
7107
+ * Possible data to be provided by every host, for cross cutting concerns
7108
+ * like internationalization, billing, etc.
7109
+ */
7110
+ essentials?: {
7111
+ /**
7112
+ * The language of the currently viewed session
7113
+ */
7114
+ language?: string;
7115
+ /**
7116
+ * The locale of the currently viewed session
7117
+ */
7118
+ locale?: string;
7119
+ /**
7120
+ * Any headers that should be passed through to the API requests
7121
+ */
7122
+ passThroughHeaders?: Record<string, string>;
7123
+ };
7124
+ };
7125
+
7126
+ type RESTFunctionDescriptor$1<T extends (...args: any[]) => any = (...args: any[]) => any> = (httpClient: HttpClient$1) => T;
7127
+ interface HttpClient$1 {
7128
+ request<TResponse, TData = any>(req: RequestOptionsFactory$1<TResponse, TData>): Promise<HttpResponse$1<TResponse>>;
7129
+ fetchWithAuth: typeof fetch;
7130
+ wixAPIFetch: (relativeUrl: string, options: RequestInit) => Promise<Response>;
7131
+ getActiveToken?: () => string | undefined;
7132
+ }
7133
+ type RequestOptionsFactory$1<TResponse = any, TData = any> = (context: any) => RequestOptions$1<TResponse, TData>;
7134
+ type HttpResponse$1<T = any> = {
7135
+ data: T;
7136
+ status: number;
7137
+ statusText: string;
7138
+ headers: any;
7139
+ request?: any;
7140
+ };
7141
+ type RequestOptions$1<_TResponse = any, Data = any> = {
7142
+ method: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
7143
+ url: string;
7144
+ data?: Data;
7145
+ params?: URLSearchParams;
7146
+ } & APIMetadata$1;
7147
+ type APIMetadata$1 = {
7148
+ methodFqn?: string;
7149
+ entityFqdn?: string;
7150
+ packageName?: string;
7151
+ };
7152
+ type BuildRESTFunction$1<T extends RESTFunctionDescriptor$1> = T extends RESTFunctionDescriptor$1<infer U> ? U : never;
7153
+ type EventDefinition$3<Payload = unknown, Type extends string = string> = {
7154
+ __type: 'event-definition';
7155
+ type: Type;
7156
+ isDomainEvent?: boolean;
7157
+ transformations?: (envelope: unknown) => Payload;
7158
+ __payload: Payload;
7159
+ };
7160
+ declare function EventDefinition$3<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition$3<Payload, Type>;
7161
+ type EventHandler$3<T extends EventDefinition$3> = (payload: T['__payload']) => void | Promise<void>;
7162
+ type BuildEventDefinition$3<T extends EventDefinition$3<any, string>> = (handler: EventHandler$3<T>) => void;
7163
+
7164
+ type ServicePluginMethodInput$1 = {
7165
+ request: any;
7166
+ metadata: any;
7167
+ };
7168
+ type ServicePluginContract$1 = Record<string, (payload: ServicePluginMethodInput$1) => unknown | Promise<unknown>>;
7169
+ type ServicePluginMethodMetadata$1 = {
7170
+ name: string;
7171
+ primaryHttpMappingPath: string;
7172
+ transformations: {
7173
+ fromREST: (...args: unknown[]) => ServicePluginMethodInput$1;
7174
+ toREST: (...args: unknown[]) => unknown;
7175
+ };
7176
+ };
7177
+ type ServicePluginDefinition$1<Contract extends ServicePluginContract$1> = {
7178
+ __type: 'service-plugin-definition';
7179
+ componentType: string;
7180
+ methods: ServicePluginMethodMetadata$1[];
7181
+ __contract: Contract;
7182
+ };
7183
+ declare function ServicePluginDefinition$1<Contract extends ServicePluginContract$1>(componentType: string, methods: ServicePluginMethodMetadata$1[]): ServicePluginDefinition$1<Contract>;
7184
+ type BuildServicePluginDefinition$1<T extends ServicePluginDefinition$1<any>> = (implementation: T['__contract']) => void;
7185
+ declare const SERVICE_PLUGIN_ERROR_TYPE$1 = "wix_spi_error";
7186
+
7187
+ type RequestContext$1 = {
7188
+ isSSR: boolean;
7189
+ host: string;
7190
+ protocol?: string;
7191
+ };
7192
+ type ResponseTransformer$1 = (data: any, headers?: any) => any;
7193
+ /**
7194
+ * Ambassador request options types are copied mostly from AxiosRequestConfig.
7195
+ * They are copied and not imported to reduce the amount of dependencies (to reduce install time).
7196
+ * https://github.com/axios/axios/blob/3f53eb6960f05a1f88409c4b731a40de595cb825/index.d.ts#L307-L315
7197
+ */
7198
+ type Method$1 = 'get' | 'GET' | 'delete' | 'DELETE' | 'head' | 'HEAD' | 'options' | 'OPTIONS' | 'post' | 'POST' | 'put' | 'PUT' | 'patch' | 'PATCH' | 'purge' | 'PURGE' | 'link' | 'LINK' | 'unlink' | 'UNLINK';
7199
+ type AmbassadorRequestOptions$1<T = any> = {
7200
+ _?: T;
7201
+ url?: string;
7202
+ method?: Method$1;
7203
+ params?: any;
7204
+ data?: any;
7205
+ transformResponse?: ResponseTransformer$1 | ResponseTransformer$1[];
7206
+ };
7207
+ type AmbassadorFactory$1<Request, Response> = (payload: Request) => ((context: RequestContext$1) => AmbassadorRequestOptions$1<Response>) & {
7208
+ __isAmbassador: boolean;
7209
+ };
7210
+ type AmbassadorFunctionDescriptor$1<Request = any, Response = any> = AmbassadorFactory$1<Request, Response>;
7211
+ type BuildAmbassadorFunction$1<T extends AmbassadorFunctionDescriptor$1> = T extends AmbassadorFunctionDescriptor$1<infer Request, infer Response> ? (req: Request) => Promise<Response> : never;
7212
+
7213
+ declare global {
7214
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
7215
+ interface SymbolConstructor {
7216
+ readonly observable: symbol;
7217
+ }
7218
+ }
7219
+
7220
+ declare const emptyObjectSymbol$1: unique symbol;
7221
+
7222
+ /**
7223
+ Represents a strictly empty plain object, the `{}` value.
7224
+
7225
+ When you annotate something as the type `{}`, it can be anything except `null` and `undefined`. This means that you cannot use `{}` to represent an empty plain object ([read more](https://stackoverflow.com/questions/47339869/typescript-empty-object-and-any-difference/52193484#52193484)).
7226
+
7227
+ @example
7228
+ ```
7229
+ import type {EmptyObject} from 'type-fest';
7230
+
7231
+ // The following illustrates the problem with `{}`.
7232
+ const foo1: {} = {}; // Pass
7233
+ const foo2: {} = []; // Pass
7234
+ const foo3: {} = 42; // Pass
7235
+ const foo4: {} = {a: 1}; // Pass
7236
+
7237
+ // With `EmptyObject` only the first case is valid.
7238
+ const bar1: EmptyObject = {}; // Pass
7239
+ const bar2: EmptyObject = 42; // Fail
7240
+ const bar3: EmptyObject = []; // Fail
7241
+ const bar4: EmptyObject = {a: 1}; // Fail
7242
+ ```
7243
+
7244
+ Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<never, never>` do not work. See {@link https://github.com/sindresorhus/type-fest/issues/395 #395}.
7245
+
7246
+ @category Object
7247
+ */
7248
+ type EmptyObject$1 = {[emptyObjectSymbol$1]?: never};
7249
+
7250
+ /**
7251
+ Returns a boolean for whether the two given types are equal.
7252
+
7253
+ @link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650
7254
+ @link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796
7255
+
7256
+ Use-cases:
7257
+ - If you want to make a conditional branch based on the result of a comparison of two types.
7258
+
7259
+ @example
7260
+ ```
7261
+ import type {IsEqual} from 'type-fest';
7262
+
7263
+ // This type returns a boolean for whether the given array includes the given item.
7264
+ // `IsEqual` is used to compare the given array at position 0 and the given item and then return true if they are equal.
7265
+ type Includes<Value extends readonly any[], Item> =
7266
+ Value extends readonly [Value[0], ...infer rest]
7267
+ ? IsEqual<Value[0], Item> extends true
7268
+ ? true
7269
+ : Includes<rest, Item>
7270
+ : false;
7271
+ ```
7272
+
7273
+ @category Type Guard
7274
+ @category Utilities
7275
+ */
7276
+ type IsEqual$1<A, B> =
7277
+ (<G>() => G extends A ? 1 : 2) extends
7278
+ (<G>() => G extends B ? 1 : 2)
7279
+ ? true
7280
+ : false;
7281
+
7282
+ /**
7283
+ Filter out keys from an object.
7284
+
7285
+ Returns `never` if `Exclude` is strictly equal to `Key`.
7286
+ Returns `never` if `Key` extends `Exclude`.
7287
+ Returns `Key` otherwise.
7288
+
7289
+ @example
7290
+ ```
7291
+ type Filtered = Filter<'foo', 'foo'>;
7292
+ //=> never
7293
+ ```
7294
+
7295
+ @example
7296
+ ```
7297
+ type Filtered = Filter<'bar', string>;
7298
+ //=> never
7299
+ ```
7300
+
7301
+ @example
7302
+ ```
7303
+ type Filtered = Filter<'bar', 'foo'>;
7304
+ //=> 'bar'
7305
+ ```
7306
+
7307
+ @see {Except}
7308
+ */
7309
+ type Filter$1<KeyType, ExcludeType> = IsEqual$1<KeyType, ExcludeType> extends true ? never : (KeyType extends ExcludeType ? never : KeyType);
7310
+
7311
+ type ExceptOptions$1 = {
7312
+ /**
7313
+ Disallow assigning non-specified properties.
7314
+
7315
+ Note that any omitted properties in the resulting type will be present in autocomplete as `undefined`.
7316
+
7317
+ @default false
7318
+ */
7319
+ requireExactProps?: boolean;
7320
+ };
7321
+
7322
+ /**
7323
+ Create a type from an object type without certain keys.
7324
+
7325
+ We recommend setting the `requireExactProps` option to `true`.
7326
+
7327
+ This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
7328
+
7329
+ This type was proposed to the TypeScript team, which declined it, saying they prefer that libraries implement stricter versions of the built-in types ([microsoft/TypeScript#30825](https://github.com/microsoft/TypeScript/issues/30825#issuecomment-523668235)).
7330
+
7331
+ @example
7332
+ ```
7333
+ import type {Except} from 'type-fest';
7334
+
7335
+ type Foo = {
7336
+ a: number;
7337
+ b: string;
7338
+ };
7339
+
7340
+ type FooWithoutA = Except<Foo, 'a'>;
7341
+ //=> {b: string}
7342
+
7343
+ const fooWithoutA: FooWithoutA = {a: 1, b: '2'};
7344
+ //=> errors: 'a' does not exist in type '{ b: string; }'
7345
+
7346
+ type FooWithoutB = Except<Foo, 'b', {requireExactProps: true}>;
7347
+ //=> {a: number} & Partial<Record<"b", never>>
7348
+
7349
+ const fooWithoutB: FooWithoutB = {a: 1, b: '2'};
7350
+ //=> errors at 'b': Type 'string' is not assignable to type 'undefined'.
7351
+ ```
7352
+
7353
+ @category Object
7354
+ */
7355
+ type Except$1<ObjectType, KeysType extends keyof ObjectType, Options extends ExceptOptions$1 = {requireExactProps: false}> = {
7356
+ [KeyType in keyof ObjectType as Filter$1<KeyType, KeysType>]: ObjectType[KeyType];
7357
+ } & (Options['requireExactProps'] extends true
7358
+ ? Partial<Record<KeysType, never>>
7359
+ : {});
7360
+
7361
+ /**
7362
+ Extract the keys from a type where the value type of the key extends the given `Condition`.
7363
+
7364
+ Internally this is used for the `ConditionalPick` and `ConditionalExcept` types.
7365
+
7366
+ @example
7367
+ ```
7368
+ import type {ConditionalKeys} from 'type-fest';
7369
+
7370
+ interface Example {
7371
+ a: string;
7372
+ b: string | number;
7373
+ c?: string;
7374
+ d: {};
7375
+ }
7376
+
7377
+ type StringKeysOnly = ConditionalKeys<Example, string>;
7378
+ //=> 'a'
7379
+ ```
7380
+
7381
+ To support partial types, make sure your `Condition` is a union of undefined (for example, `string | undefined`) as demonstrated below.
7382
+
7383
+ @example
7384
+ ```
7385
+ import type {ConditionalKeys} from 'type-fest';
7386
+
7387
+ type StringKeysAndUndefined = ConditionalKeys<Example, string | undefined>;
7388
+ //=> 'a' | 'c'
7389
+ ```
7390
+
7391
+ @category Object
7392
+ */
7393
+ type ConditionalKeys$1<Base, Condition> = NonNullable<
7394
+ // Wrap in `NonNullable` to strip away the `undefined` type from the produced union.
7395
+ {
7396
+ // Map through all the keys of the given base type.
7397
+ [Key in keyof Base]:
7398
+ // Pick only keys with types extending the given `Condition` type.
7399
+ Base[Key] extends Condition
7400
+ // Retain this key since the condition passes.
7401
+ ? Key
7402
+ // Discard this key since the condition fails.
7403
+ : never;
7404
+
7405
+ // Convert the produced object into a union type of the keys which passed the conditional test.
7406
+ }[keyof Base]
7407
+ >;
7408
+
7409
+ /**
7410
+ Exclude keys from a shape that matches the given `Condition`.
7411
+
7412
+ This is useful when you want to create a new type with a specific set of keys from a shape. For example, you might want to exclude all the primitive properties from a class and form a new shape containing everything but the primitive properties.
7413
+
7414
+ @example
7415
+ ```
7416
+ import type {Primitive, ConditionalExcept} from 'type-fest';
7417
+
7418
+ class Awesome {
7419
+ name: string;
7420
+ successes: number;
7421
+ failures: bigint;
7422
+
7423
+ run() {}
7424
+ }
7425
+
7426
+ type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>;
7427
+ //=> {run: () => void}
7428
+ ```
7429
+
7430
+ @example
7431
+ ```
7432
+ import type {ConditionalExcept} from 'type-fest';
7433
+
7434
+ interface Example {
7435
+ a: string;
7436
+ b: string | number;
7437
+ c: () => void;
7438
+ d: {};
7439
+ }
7440
+
7441
+ type NonStringKeysOnly = ConditionalExcept<Example, string>;
7442
+ //=> {b: string | number; c: () => void; d: {}}
7443
+ ```
7444
+
7445
+ @category Object
7446
+ */
7447
+ type ConditionalExcept$1<Base, Condition> = Except$1<
7448
+ Base,
7449
+ ConditionalKeys$1<Base, Condition>
7450
+ >;
7451
+
7452
+ /**
7453
+ * Descriptors are objects that describe the API of a module, and the module
7454
+ * can either be a REST module or a host module.
7455
+ * This type is recursive, so it can describe nested modules.
7456
+ */
7457
+ type Descriptors$1 = RESTFunctionDescriptor$1 | AmbassadorFunctionDescriptor$1 | HostModule$1<any, any> | EventDefinition$3<any> | ServicePluginDefinition$1<any> | {
7458
+ [key: string]: Descriptors$1 | PublicMetadata$1 | any;
7459
+ };
7460
+ /**
7461
+ * This type takes in a descriptors object of a certain Host (including an `unknown` host)
7462
+ * and returns an object with the same structure, but with all descriptors replaced with their API.
7463
+ * Any non-descriptor properties are removed from the returned object, including descriptors that
7464
+ * do not match the given host (as they will not work with the given host).
7465
+ */
7466
+ type BuildDescriptors$1<T extends Descriptors$1, H extends Host$1<any> | undefined, Depth extends number = 5> = {
7467
+ done: T;
7468
+ recurse: T extends {
7469
+ __type: typeof SERVICE_PLUGIN_ERROR_TYPE$1;
7470
+ } ? never : T extends AmbassadorFunctionDescriptor$1 ? BuildAmbassadorFunction$1<T> : T extends RESTFunctionDescriptor$1 ? BuildRESTFunction$1<T> : T extends EventDefinition$3<any> ? BuildEventDefinition$3<T> : T extends ServicePluginDefinition$1<any> ? BuildServicePluginDefinition$1<T> : T extends HostModule$1<any, any> ? HostModuleAPI$1<T> : ConditionalExcept$1<{
7471
+ [Key in keyof T]: T[Key] extends Descriptors$1 ? BuildDescriptors$1<T[Key], H, [
7472
+ -1,
7473
+ 0,
7474
+ 1,
7475
+ 2,
7476
+ 3,
7477
+ 4,
7478
+ 5
7479
+ ][Depth]> : never;
7480
+ }, EmptyObject$1>;
7481
+ }[Depth extends -1 ? 'done' : 'recurse'];
7482
+ type PublicMetadata$1 = {
7483
+ PACKAGE_NAME?: string;
7484
+ };
7485
+
7486
+ declare global {
7487
+ interface ContextualClient {
7488
+ }
7489
+ }
7490
+ /**
7491
+ * A type used to create concerete types from SDK descriptors in
7492
+ * case a contextual client is available.
7493
+ */
7494
+ type MaybeContext$1<T extends Descriptors$1> = globalThis.ContextualClient extends {
7495
+ host: Host$1;
7496
+ } ? BuildDescriptors$1<T, globalThis.ContextualClient['host']> : T;
7497
+
5456
7498
  interface Post {
5457
7499
  /**
5458
7500
  * Post ID.
@@ -8934,7 +10976,7 @@ interface GetTotalPostsOptions {
8934
10976
  language?: string | null;
8935
10977
  }
8936
10978
 
8937
- declare function getPost$1(httpClient: HttpClient): GetPostSignature;
10979
+ declare function getPost$1(httpClient: HttpClient$1): GetPostSignature;
8938
10980
  interface GetPostSignature {
8939
10981
  /**
8940
10982
  * Gets a post by the specified ID.
@@ -8948,7 +10990,7 @@ interface GetPostSignature {
8948
10990
  */
8949
10991
  (postId: string, options?: GetPostOptions | undefined): Promise<GetPostResponse & GetPostResponseNonNullableFields>;
8950
10992
  }
8951
- declare function getPostBySlug$1(httpClient: HttpClient): GetPostBySlugSignature;
10993
+ declare function getPostBySlug$1(httpClient: HttpClient$1): GetPostBySlugSignature;
8952
10994
  interface GetPostBySlugSignature {
8953
10995
  /**
8954
10996
  * Gets a post by the provided slug.
@@ -8965,7 +11007,7 @@ interface GetPostBySlugSignature {
8965
11007
  */
8966
11008
  (slug: string, options?: GetPostBySlugOptions | undefined): Promise<GetPostBySlugResponse & GetPostBySlugResponseNonNullableFields>;
8967
11009
  }
8968
- declare function listPosts$1(httpClient: HttpClient): ListPostsSignature;
11010
+ declare function listPosts$1(httpClient: HttpClient$1): ListPostsSignature;
8969
11011
  interface ListPostsSignature {
8970
11012
  /**
8971
11013
  * Retrieves a list of published posts.
@@ -8981,7 +11023,7 @@ interface ListPostsSignature {
8981
11023
  */
8982
11024
  (options?: ListPostsOptions | undefined): Promise<ListPostsResponse & ListPostsResponseNonNullableFields>;
8983
11025
  }
8984
- declare function queryPosts$1(httpClient: HttpClient): QueryPostsSignature;
11026
+ declare function queryPosts$1(httpClient: HttpClient$1): QueryPostsSignature;
8985
11027
  interface QueryPostsSignature {
8986
11028
  /**
8987
11029
  * Creates a query to retrieve a list of posts.
@@ -9006,7 +11048,7 @@ interface QueryPostsSignature {
9006
11048
  */
9007
11049
  (options?: QueryPostsOptions | undefined): PostsQueryBuilder;
9008
11050
  }
9009
- declare function getPostMetrics$1(httpClient: HttpClient): GetPostMetricsSignature;
11051
+ declare function getPostMetrics$1(httpClient: HttpClient$1): GetPostMetricsSignature;
9010
11052
  interface GetPostMetricsSignature {
9011
11053
  /**
9012
11054
  * Gets a specified post's metrics.
@@ -9020,7 +11062,7 @@ interface GetPostMetricsSignature {
9020
11062
  */
9021
11063
  (postId: string): Promise<GetPostMetricsResponse & GetPostMetricsResponseNonNullableFields>;
9022
11064
  }
9023
- declare function queryPostCountStats$1(httpClient: HttpClient): QueryPostCountStatsSignature;
11065
+ declare function queryPostCountStats$1(httpClient: HttpClient$1): QueryPostCountStatsSignature;
9024
11066
  interface QueryPostCountStatsSignature {
9025
11067
  /**
9026
11068
  * Retrieves the number of published posts per month within a specified time range.
@@ -9036,7 +11078,7 @@ interface QueryPostCountStatsSignature {
9036
11078
  */
9037
11079
  (options?: QueryPostCountStatsOptions | undefined): Promise<QueryPostCountStatsResponse & QueryPostCountStatsResponseNonNullableFields>;
9038
11080
  }
9039
- declare function getTotalPosts$1(httpClient: HttpClient): GetTotalPostsSignature;
11081
+ declare function getTotalPosts$1(httpClient: HttpClient$1): GetTotalPostsSignature;
9040
11082
  interface GetTotalPostsSignature {
9041
11083
  /**
9042
11084
  * Gets the total amount of published posts on the blog.
@@ -9051,21 +11093,39 @@ interface GetTotalPostsSignature {
9051
11093
  */
9052
11094
  (options?: GetTotalPostsOptions | undefined): Promise<GetTotalPostsResponse & GetTotalPostsResponseNonNullableFields>;
9053
11095
  }
9054
- declare const onPostCreated$1: EventDefinition<PostCreatedEnvelope, "wix.blog.v3.post_created">;
9055
- declare const onPostUpdated$1: EventDefinition<PostUpdatedEnvelope, "wix.blog.v3.post_updated">;
9056
- declare const onPostDeleted$1: EventDefinition<PostDeletedEnvelope, "wix.blog.v3.post_deleted">;
9057
- declare const onPostLiked$1: EventDefinition<PostLikedEnvelope, "wix.blog.v3.post_liked">;
9058
- declare const onPostUnliked$1: EventDefinition<PostUnlikedEnvelope, "wix.blog.v3.post_unliked">;
11096
+ declare const onPostCreated$1: EventDefinition$3<PostCreatedEnvelope, "wix.blog.v3.post_created">;
11097
+ declare const onPostUpdated$1: EventDefinition$3<PostUpdatedEnvelope, "wix.blog.v3.post_updated">;
11098
+ declare const onPostDeleted$1: EventDefinition$3<PostDeletedEnvelope, "wix.blog.v3.post_deleted">;
11099
+ declare const onPostLiked$1: EventDefinition$3<PostLikedEnvelope, "wix.blog.v3.post_liked">;
11100
+ declare const onPostUnliked$1: EventDefinition$3<PostUnlikedEnvelope, "wix.blog.v3.post_unliked">;
11101
+
11102
+ type EventDefinition$2<Payload = unknown, Type extends string = string> = {
11103
+ __type: 'event-definition';
11104
+ type: Type;
11105
+ isDomainEvent?: boolean;
11106
+ transformations?: (envelope: unknown) => Payload;
11107
+ __payload: Payload;
11108
+ };
11109
+ declare function EventDefinition$2<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition$2<Payload, Type>;
11110
+ type EventHandler$2<T extends EventDefinition$2> = (payload: T['__payload']) => void | Promise<void>;
11111
+ type BuildEventDefinition$2<T extends EventDefinition$2<any, string>> = (handler: EventHandler$2<T>) => void;
11112
+
11113
+ declare global {
11114
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
11115
+ interface SymbolConstructor {
11116
+ readonly observable: symbol;
11117
+ }
11118
+ }
9059
11119
 
9060
- declare function createEventModule$1<T extends EventDefinition<any, string>>(eventDefinition: T): BuildEventDefinition<T> & T;
11120
+ declare function createEventModule$1<T extends EventDefinition$2<any, string>>(eventDefinition: T): BuildEventDefinition$2<T> & T;
9061
11121
 
9062
- declare const getPost: BuildRESTFunction<typeof getPost$1> & typeof getPost$1;
9063
- declare const getPostBySlug: BuildRESTFunction<typeof getPostBySlug$1> & typeof getPostBySlug$1;
9064
- declare const listPosts: BuildRESTFunction<typeof listPosts$1> & typeof listPosts$1;
9065
- declare const queryPosts: BuildRESTFunction<typeof queryPosts$1> & typeof queryPosts$1;
9066
- declare const getPostMetrics: BuildRESTFunction<typeof getPostMetrics$1> & typeof getPostMetrics$1;
9067
- declare const queryPostCountStats: BuildRESTFunction<typeof queryPostCountStats$1> & typeof queryPostCountStats$1;
9068
- declare const getTotalPosts: BuildRESTFunction<typeof getTotalPosts$1> & typeof getTotalPosts$1;
11122
+ declare const getPost: MaybeContext$1<BuildRESTFunction$1<typeof getPost$1> & typeof getPost$1>;
11123
+ declare const getPostBySlug: MaybeContext$1<BuildRESTFunction$1<typeof getPostBySlug$1> & typeof getPostBySlug$1>;
11124
+ declare const listPosts: MaybeContext$1<BuildRESTFunction$1<typeof listPosts$1> & typeof listPosts$1>;
11125
+ declare const queryPosts: MaybeContext$1<BuildRESTFunction$1<typeof queryPosts$1> & typeof queryPosts$1>;
11126
+ declare const getPostMetrics: MaybeContext$1<BuildRESTFunction$1<typeof getPostMetrics$1> & typeof getPostMetrics$1>;
11127
+ declare const queryPostCountStats: MaybeContext$1<BuildRESTFunction$1<typeof queryPostCountStats$1> & typeof queryPostCountStats$1>;
11128
+ declare const getTotalPosts: MaybeContext$1<BuildRESTFunction$1<typeof getTotalPosts$1> & typeof getTotalPosts$1>;
9069
11129
 
9070
11130
  type _publicOnPostCreatedType = typeof onPostCreated$1;
9071
11131
  /**
@@ -9380,6 +11440,416 @@ declare namespace context$1 {
9380
11440
  export { type ActionEvent$1 as ActionEvent, context$1_Alignment as Alignment, type context$1_AnchorData as AnchorData, type context$1_AppEmbedData as AppEmbedData, type context$1_AppEmbedDataAppDataOneOf as AppEmbedDataAppDataOneOf, context$1_AppType as AppType, type context$1_AudioData as AudioData, type context$1_Background as Background, type context$1_BackgroundBackgroundOneOf as BackgroundBackgroundOneOf, context$1_BackgroundType as BackgroundType, type BaseEventMetadata$1 as BaseEventMetadata, type context$1_BlockquoteData as BlockquoteData, type context$1_BlogPaging as BlogPaging, type context$1_BookingData as BookingData, type context$1_Border as Border, type context$1_BorderColors as BorderColors, type context$1_BulkGetPostMetricsRequest as BulkGetPostMetricsRequest, type context$1_BulkGetPostMetricsResponse as BulkGetPostMetricsResponse, type context$1_BulkGetPostReactionsRequest as BulkGetPostReactionsRequest, type context$1_BulkGetPostReactionsResponse as BulkGetPostReactionsResponse, type context$1_BulletedListData as BulletedListData, type context$1_ButtonData as ButtonData, type context$1_Category as Category, type context$1_CategoryTranslation as CategoryTranslation, type context$1_CellStyle as CellStyle, type context$1_CodeBlockData as CodeBlockData, type context$1_CollapsibleListData as CollapsibleListData, type context$1_ColorData as ColorData, type context$1_Colors as Colors, type context$1_ConvertDraftJsToRichContentRequest as ConvertDraftJsToRichContentRequest, type context$1_ConvertDraftJsToRichContentResponse as ConvertDraftJsToRichContentResponse, type context$1_ConvertRichContentToDraftJsRequest as ConvertRichContentToDraftJsRequest, type context$1_ConvertRichContentToDraftJsResponse as ConvertRichContentToDraftJsResponse, type context$1_CoverMedia as CoverMedia, type context$1_CoverMediaMediaOneOf as CoverMediaMediaOneOf, type context$1_CreateDraftPostFromTemplateRequest as CreateDraftPostFromTemplateRequest, type context$1_CreateDraftPostFromTemplateResponse as CreateDraftPostFromTemplateResponse, context$1_Crop as Crop, type CursorPaging$1 as CursorPaging, type Cursors$1 as Cursors, type context$1_Decoration as Decoration, type context$1_DecorationDataOneOf as DecorationDataOneOf, context$1_DecorationType as DecorationType, type context$1_Design as Design, type context$1_Dimensions as Dimensions, context$1_Direction as Direction, type context$1_DividerData as DividerData, type context$1_DocumentStyle as DocumentStyle, type DomainEvent$1 as DomainEvent, type DomainEventBodyOneOf$1 as DomainEventBodyOneOf, type context$1_DraftPost as DraftPost, type context$1_DraftPostTranslation as DraftPostTranslation, type context$1_EmbedData as EmbedData, type context$1_EmbedMedia as EmbedMedia, type context$1_EmbedThumbnail as EmbedThumbnail, type context$1_EmbedVideo as EmbedVideo, type EntityCreatedEvent$1 as EntityCreatedEvent, type EntityDeletedEvent$1 as EntityDeletedEvent, type EntityUpdatedEvent$1 as EntityUpdatedEvent, type context$1_EventData as EventData, type EventMetadata$1 as EventMetadata, Field$1 as Field, type context$1_FileData as FileData, type context$1_FileSource as FileSource, type context$1_FileSourceDataOneOf as FileSourceDataOneOf, type context$1_FontSizeData as FontSizeData, context$1_FontType as FontType, type context$1_GIF as GIF, type context$1_GIFData as GIFData, type context$1_GalleryData as GalleryData, type context$1_GalleryOptions as GalleryOptions, type context$1_GetPostBySlugOptions as GetPostBySlugOptions, type context$1_GetPostBySlugRequest as GetPostBySlugRequest, type context$1_GetPostBySlugResponse as GetPostBySlugResponse, type context$1_GetPostBySlugResponseNonNullableFields as GetPostBySlugResponseNonNullableFields, type context$1_GetPostMetricsRequest as GetPostMetricsRequest, type context$1_GetPostMetricsResponse as GetPostMetricsResponse, type context$1_GetPostMetricsResponseNonNullableFields as GetPostMetricsResponseNonNullableFields, type context$1_GetPostOptions as GetPostOptions, type context$1_GetPostRequest as GetPostRequest, type context$1_GetPostResponse as GetPostResponse, type context$1_GetPostResponseNonNullableFields as GetPostResponseNonNullableFields, context$1_GetPostTemplatesSort as GetPostTemplatesSort, context$1_GetPostsSort as GetPostsSort, type context$1_GetTemplateRequest as GetTemplateRequest, type context$1_GetTemplateResponse as GetTemplateResponse, type context$1_GetTotalLikesPerMemberRequest as GetTotalLikesPerMemberRequest, type context$1_GetTotalLikesPerMemberResponse as GetTotalLikesPerMemberResponse, type context$1_GetTotalPostsOptions as GetTotalPostsOptions, type context$1_GetTotalPostsRequest as GetTotalPostsRequest, type context$1_GetTotalPostsResponse as GetTotalPostsResponse, type context$1_GetTotalPostsResponseNonNullableFields as GetTotalPostsResponseNonNullableFields, type context$1_GetTotalPublicationsRequest as GetTotalPublicationsRequest, type context$1_GetTotalPublicationsResponse as GetTotalPublicationsResponse, type context$1_Gradient as Gradient, type context$1_HTMLData as HTMLData, type context$1_HTMLDataDataOneOf as HTMLDataDataOneOf, type context$1_HeadingData as HeadingData, type context$1_Height as Height, type IdentificationData$1 as IdentificationData, type IdentificationDataIdOneOf$1 as IdentificationDataIdOneOf, type context$1_Image as Image, type context$1_ImageData as ImageData, context$1_InitialExpandedItems as InitialExpandedItems, type context$1_InitialPostsCopied as InitialPostsCopied, type context$1_Item as Item, type context$1_ItemDataOneOf as ItemDataOneOf, type context$1_ItemStyle as ItemStyle, type Keyword$1 as Keyword, type context$1_Layout as Layout, context$1_LayoutType as LayoutType, type context$1_LikePostRequest as LikePostRequest, type context$1_LikePostResponse as LikePostResponse, context$1_LineStyle as LineStyle, type context$1_Link as Link, type context$1_LinkData as LinkData, type context$1_LinkDataOneOf as LinkDataOneOf, type context$1_LinkPreviewData as LinkPreviewData, type context$1_ListDemoPostsRequest as ListDemoPostsRequest, type context$1_ListDemoPostsResponse as ListDemoPostsResponse, type context$1_ListPostsArchiveRequest as ListPostsArchiveRequest, type context$1_ListPostsArchiveResponse as ListPostsArchiveResponse, type context$1_ListPostsOptions as ListPostsOptions, type context$1_ListPostsRequest as ListPostsRequest, type context$1_ListPostsResponse as ListPostsResponse, type context$1_ListPostsResponseNonNullableFields as ListPostsResponseNonNullableFields, type context$1_ListTemplatesRequest as ListTemplatesRequest, type context$1_ListTemplatesResponse as ListTemplatesResponse, type context$1_ListValue as ListValue, type context$1_MapData as MapData, type context$1_MapSettings as MapSettings, context$1_MapType as MapType, type context$1_Media as Media, type context$1_MediaMediaOneOf as MediaMediaOneOf, type context$1_MentionData as MentionData, type MessageEnvelope$1 as MessageEnvelope, type MetaData$1 as MetaData, type context$1_Metadata as Metadata, type context$1_Metrics as Metrics, type context$1_ModerationDetails as ModerationDetails, context$1_ModerationStatusStatus as ModerationStatusStatus, type context$1_Node as Node, type context$1_NodeDataOneOf as NodeDataOneOf, type context$1_NodeStyle as NodeStyle, context$1_NodeType as NodeType, context$1_NullValue as NullValue, type context$1_Oembed as Oembed, type context$1_OldBlogMigratedEvent as OldBlogMigratedEvent, type context$1_Option as Option, type context$1_OptionDesign as OptionDesign, type context$1_OptionLayout as OptionLayout, context$1_Order as Order, type context$1_OrderedListData as OrderedListData, context$1_Orientation as Orientation, context$1_Origin as Origin, type context$1_PDFSettings as PDFSettings, type Paging$1 as Paging, type PagingMetadataV2$1 as PagingMetadataV2, type context$1_ParagraphData as ParagraphData, type context$1_PeriodPostCount as PeriodPostCount, type context$1_PeriodPublicationsCount as PeriodPublicationsCount, type context$1_Permissions as Permissions, type context$1_PinPostRequest as PinPostRequest, type context$1_PinPostResponse as PinPostResponse, type PlatformQuery$1 as PlatformQuery, type PlatformQueryPagingMethodOneOf$1 as PlatformQueryPagingMethodOneOf, type context$1_PlaybackOptions as PlaybackOptions, type context$1_PluginContainerData as PluginContainerData, context$1_PluginContainerDataAlignment as PluginContainerDataAlignment, type context$1_PluginContainerDataWidth as PluginContainerDataWidth, type context$1_PluginContainerDataWidthDataOneOf as PluginContainerDataWidthDataOneOf, type context$1_Poll as Poll, type context$1_PollData as PollData, type context$1_PollDataLayout as PollDataLayout, type context$1_PollDesign as PollDesign, type context$1_PollLayout as PollLayout, context$1_PollLayoutDirection as PollLayoutDirection, context$1_PollLayoutType as PollLayoutType, type context$1_PollSettings as PollSettings, type context$1_Post as Post, type context$1_PostCountInfo as PostCountInfo, type context$1_PostCountersUpdated as PostCountersUpdated, type context$1_PostCountersUpdatedInitiatorOneOf as PostCountersUpdatedInitiatorOneOf, type context$1_PostCreatedEnvelope as PostCreatedEnvelope, type context$1_PostDeletedEnvelope as PostDeletedEnvelope, context$1_PostFieldField as PostFieldField, type context$1_PostLiked as PostLiked, type context$1_PostLikedEnvelope as PostLikedEnvelope, type context$1_PostLikedInitiatorOneOf as PostLikedInitiatorOneOf, type context$1_PostOwnerChanged as PostOwnerChanged, type context$1_PostTranslation as PostTranslation, type context$1_PostUnliked as PostUnliked, type context$1_PostUnlikedEnvelope as PostUnlikedEnvelope, type context$1_PostUnlikedInitiatorOneOf as PostUnlikedInitiatorOneOf, type context$1_PostUpdatedEnvelope as PostUpdatedEnvelope, type context$1_PostsQueryBuilder as PostsQueryBuilder, type context$1_PostsQueryResult as PostsQueryResult, type context$1_QueryPostCountStatsOptions as QueryPostCountStatsOptions, type context$1_QueryPostCountStatsRequest as QueryPostCountStatsRequest, type context$1_QueryPostCountStatsResponse as QueryPostCountStatsResponse, type context$1_QueryPostCountStatsResponseNonNullableFields as QueryPostCountStatsResponseNonNullableFields, type context$1_QueryPostsOptions as QueryPostsOptions, type context$1_QueryPostsRequest as QueryPostsRequest, type context$1_QueryPostsResponse as QueryPostsResponse, type context$1_QueryPostsResponseNonNullableFields as QueryPostsResponseNonNullableFields, type context$1_QueryPublicationsCountStatsRequest as QueryPublicationsCountStatsRequest, context$1_QueryPublicationsCountStatsRequestOrder as QueryPublicationsCountStatsRequestOrder, type context$1_QueryPublicationsCountStatsResponse as QueryPublicationsCountStatsResponse, type context$1_Reactions as Reactions, type context$1_Rel as Rel, type RestoreInfo$1 as RestoreInfo, type context$1_RichContent as RichContent, type context$1_SendActionEventRequest as SendActionEventRequest, type context$1_SendActionEventRequestActionOneOf as SendActionEventRequestActionOneOf, type context$1_SendActionEventResponse as SendActionEventResponse, type SeoSchema$1 as SeoSchema, type Settings$1 as Settings, SortOrder$1 as SortOrder, type Sorting$1 as Sorting, context$1_Source as Source, type context$1_Spoiler as Spoiler, type context$1_SpoilerData as SpoilerData, context$1_Status as Status, type context$1_Styles as Styles, type context$1_TableCellData as TableCellData, type context$1_TableData as TableData, type Tag$1 as Tag, context$1_Target as Target, context$1_TextAlignment as TextAlignment, type context$1_TextData as TextData, type context$1_TextNodeStyle as TextNodeStyle, type context$1_TextStyle as TextStyle, type context$1_Thumbnails as Thumbnails, context$1_ThumbnailsAlignment as ThumbnailsAlignment, context$1_Type as Type, type context$1_UnlikePostRequest as UnlikePostRequest, type context$1_UnlikePostResponse as UnlikePostResponse, type context$1_UnpinPostRequest as UnpinPostRequest, type context$1_UnpinPostResponse as UnpinPostResponse, type context$1_V1Media as V1Media, context$1_VerticalAlignment as VerticalAlignment, type context$1_Video as Video, type context$1_VideoData as VideoData, type context$1_VideoResolution as VideoResolution, context$1_ViewMode as ViewMode, type context$1_ViewPostRequest as ViewPostRequest, type context$1_ViewPostResponse as ViewPostResponse, context$1_ViewRole as ViewRole, context$1_VoteRole as VoteRole, WebhookIdentityType$1 as WebhookIdentityType, context$1_Width as Width, context$1_WidthType as WidthType, type context$1_WixMedia as WixMedia, type context$1__publicOnPostCreatedType as _publicOnPostCreatedType, type context$1__publicOnPostDeletedType as _publicOnPostDeletedType, type context$1__publicOnPostLikedType as _publicOnPostLikedType, type context$1__publicOnPostUnlikedType as _publicOnPostUnlikedType, type context$1__publicOnPostUpdatedType as _publicOnPostUpdatedType, context$1_getPost as getPost, context$1_getPostBySlug as getPostBySlug, context$1_getPostMetrics as getPostMetrics, context$1_getTotalPosts as getTotalPosts, context$1_listPosts as listPosts, context$1_onPostCreated as onPostCreated, context$1_onPostDeleted as onPostDeleted, context$1_onPostLiked as onPostLiked, context$1_onPostUnliked as onPostUnliked, context$1_onPostUpdated as onPostUpdated, onPostCreated$1 as publicOnPostCreated, onPostDeleted$1 as publicOnPostDeleted, onPostLiked$1 as publicOnPostLiked, onPostUnliked$1 as publicOnPostUnliked, onPostUpdated$1 as publicOnPostUpdated, context$1_queryPostCountStats as queryPostCountStats, context$1_queryPosts as queryPosts };
9381
11441
  }
9382
11442
 
11443
+ type HostModule<T, H extends Host> = {
11444
+ __type: 'host';
11445
+ create(host: H): T;
11446
+ };
11447
+ type HostModuleAPI<T extends HostModule<any, any>> = T extends HostModule<infer U, any> ? U : never;
11448
+ type Host<Environment = unknown> = {
11449
+ channel: {
11450
+ observeState(callback: (props: unknown, environment: Environment) => unknown): {
11451
+ disconnect: () => void;
11452
+ } | Promise<{
11453
+ disconnect: () => void;
11454
+ }>;
11455
+ };
11456
+ environment?: Environment;
11457
+ /**
11458
+ * Optional bast url to use for API requests, for example `www.wixapis.com`
11459
+ */
11460
+ apiBaseUrl?: string;
11461
+ /**
11462
+ * Possible data to be provided by every host, for cross cutting concerns
11463
+ * like internationalization, billing, etc.
11464
+ */
11465
+ essentials?: {
11466
+ /**
11467
+ * The language of the currently viewed session
11468
+ */
11469
+ language?: string;
11470
+ /**
11471
+ * The locale of the currently viewed session
11472
+ */
11473
+ locale?: string;
11474
+ /**
11475
+ * Any headers that should be passed through to the API requests
11476
+ */
11477
+ passThroughHeaders?: Record<string, string>;
11478
+ };
11479
+ };
11480
+
11481
+ type RESTFunctionDescriptor<T extends (...args: any[]) => any = (...args: any[]) => any> = (httpClient: HttpClient) => T;
11482
+ interface HttpClient {
11483
+ request<TResponse, TData = any>(req: RequestOptionsFactory<TResponse, TData>): Promise<HttpResponse<TResponse>>;
11484
+ fetchWithAuth: typeof fetch;
11485
+ wixAPIFetch: (relativeUrl: string, options: RequestInit) => Promise<Response>;
11486
+ getActiveToken?: () => string | undefined;
11487
+ }
11488
+ type RequestOptionsFactory<TResponse = any, TData = any> = (context: any) => RequestOptions<TResponse, TData>;
11489
+ type HttpResponse<T = any> = {
11490
+ data: T;
11491
+ status: number;
11492
+ statusText: string;
11493
+ headers: any;
11494
+ request?: any;
11495
+ };
11496
+ type RequestOptions<_TResponse = any, Data = any> = {
11497
+ method: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
11498
+ url: string;
11499
+ data?: Data;
11500
+ params?: URLSearchParams;
11501
+ } & APIMetadata;
11502
+ type APIMetadata = {
11503
+ methodFqn?: string;
11504
+ entityFqdn?: string;
11505
+ packageName?: string;
11506
+ };
11507
+ type BuildRESTFunction<T extends RESTFunctionDescriptor> = T extends RESTFunctionDescriptor<infer U> ? U : never;
11508
+ type EventDefinition$1<Payload = unknown, Type extends string = string> = {
11509
+ __type: 'event-definition';
11510
+ type: Type;
11511
+ isDomainEvent?: boolean;
11512
+ transformations?: (envelope: unknown) => Payload;
11513
+ __payload: Payload;
11514
+ };
11515
+ declare function EventDefinition$1<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition$1<Payload, Type>;
11516
+ type EventHandler$1<T extends EventDefinition$1> = (payload: T['__payload']) => void | Promise<void>;
11517
+ type BuildEventDefinition$1<T extends EventDefinition$1<any, string>> = (handler: EventHandler$1<T>) => void;
11518
+
11519
+ type ServicePluginMethodInput = {
11520
+ request: any;
11521
+ metadata: any;
11522
+ };
11523
+ type ServicePluginContract = Record<string, (payload: ServicePluginMethodInput) => unknown | Promise<unknown>>;
11524
+ type ServicePluginMethodMetadata = {
11525
+ name: string;
11526
+ primaryHttpMappingPath: string;
11527
+ transformations: {
11528
+ fromREST: (...args: unknown[]) => ServicePluginMethodInput;
11529
+ toREST: (...args: unknown[]) => unknown;
11530
+ };
11531
+ };
11532
+ type ServicePluginDefinition<Contract extends ServicePluginContract> = {
11533
+ __type: 'service-plugin-definition';
11534
+ componentType: string;
11535
+ methods: ServicePluginMethodMetadata[];
11536
+ __contract: Contract;
11537
+ };
11538
+ declare function ServicePluginDefinition<Contract extends ServicePluginContract>(componentType: string, methods: ServicePluginMethodMetadata[]): ServicePluginDefinition<Contract>;
11539
+ type BuildServicePluginDefinition<T extends ServicePluginDefinition<any>> = (implementation: T['__contract']) => void;
11540
+ declare const SERVICE_PLUGIN_ERROR_TYPE = "wix_spi_error";
11541
+
11542
+ type RequestContext = {
11543
+ isSSR: boolean;
11544
+ host: string;
11545
+ protocol?: string;
11546
+ };
11547
+ type ResponseTransformer = (data: any, headers?: any) => any;
11548
+ /**
11549
+ * Ambassador request options types are copied mostly from AxiosRequestConfig.
11550
+ * They are copied and not imported to reduce the amount of dependencies (to reduce install time).
11551
+ * https://github.com/axios/axios/blob/3f53eb6960f05a1f88409c4b731a40de595cb825/index.d.ts#L307-L315
11552
+ */
11553
+ type Method = 'get' | 'GET' | 'delete' | 'DELETE' | 'head' | 'HEAD' | 'options' | 'OPTIONS' | 'post' | 'POST' | 'put' | 'PUT' | 'patch' | 'PATCH' | 'purge' | 'PURGE' | 'link' | 'LINK' | 'unlink' | 'UNLINK';
11554
+ type AmbassadorRequestOptions<T = any> = {
11555
+ _?: T;
11556
+ url?: string;
11557
+ method?: Method;
11558
+ params?: any;
11559
+ data?: any;
11560
+ transformResponse?: ResponseTransformer | ResponseTransformer[];
11561
+ };
11562
+ type AmbassadorFactory<Request, Response> = (payload: Request) => ((context: RequestContext) => AmbassadorRequestOptions<Response>) & {
11563
+ __isAmbassador: boolean;
11564
+ };
11565
+ type AmbassadorFunctionDescriptor<Request = any, Response = any> = AmbassadorFactory<Request, Response>;
11566
+ type BuildAmbassadorFunction<T extends AmbassadorFunctionDescriptor> = T extends AmbassadorFunctionDescriptor<infer Request, infer Response> ? (req: Request) => Promise<Response> : never;
11567
+
11568
+ declare global {
11569
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
11570
+ interface SymbolConstructor {
11571
+ readonly observable: symbol;
11572
+ }
11573
+ }
11574
+
11575
+ declare const emptyObjectSymbol: unique symbol;
11576
+
11577
+ /**
11578
+ Represents a strictly empty plain object, the `{}` value.
11579
+
11580
+ When you annotate something as the type `{}`, it can be anything except `null` and `undefined`. This means that you cannot use `{}` to represent an empty plain object ([read more](https://stackoverflow.com/questions/47339869/typescript-empty-object-and-any-difference/52193484#52193484)).
11581
+
11582
+ @example
11583
+ ```
11584
+ import type {EmptyObject} from 'type-fest';
11585
+
11586
+ // The following illustrates the problem with `{}`.
11587
+ const foo1: {} = {}; // Pass
11588
+ const foo2: {} = []; // Pass
11589
+ const foo3: {} = 42; // Pass
11590
+ const foo4: {} = {a: 1}; // Pass
11591
+
11592
+ // With `EmptyObject` only the first case is valid.
11593
+ const bar1: EmptyObject = {}; // Pass
11594
+ const bar2: EmptyObject = 42; // Fail
11595
+ const bar3: EmptyObject = []; // Fail
11596
+ const bar4: EmptyObject = {a: 1}; // Fail
11597
+ ```
11598
+
11599
+ Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<never, never>` do not work. See {@link https://github.com/sindresorhus/type-fest/issues/395 #395}.
11600
+
11601
+ @category Object
11602
+ */
11603
+ type EmptyObject = {[emptyObjectSymbol]?: never};
11604
+
11605
+ /**
11606
+ Returns a boolean for whether the two given types are equal.
11607
+
11608
+ @link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650
11609
+ @link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796
11610
+
11611
+ Use-cases:
11612
+ - If you want to make a conditional branch based on the result of a comparison of two types.
11613
+
11614
+ @example
11615
+ ```
11616
+ import type {IsEqual} from 'type-fest';
11617
+
11618
+ // This type returns a boolean for whether the given array includes the given item.
11619
+ // `IsEqual` is used to compare the given array at position 0 and the given item and then return true if they are equal.
11620
+ type Includes<Value extends readonly any[], Item> =
11621
+ Value extends readonly [Value[0], ...infer rest]
11622
+ ? IsEqual<Value[0], Item> extends true
11623
+ ? true
11624
+ : Includes<rest, Item>
11625
+ : false;
11626
+ ```
11627
+
11628
+ @category Type Guard
11629
+ @category Utilities
11630
+ */
11631
+ type IsEqual<A, B> =
11632
+ (<G>() => G extends A ? 1 : 2) extends
11633
+ (<G>() => G extends B ? 1 : 2)
11634
+ ? true
11635
+ : false;
11636
+
11637
+ /**
11638
+ Filter out keys from an object.
11639
+
11640
+ Returns `never` if `Exclude` is strictly equal to `Key`.
11641
+ Returns `never` if `Key` extends `Exclude`.
11642
+ Returns `Key` otherwise.
11643
+
11644
+ @example
11645
+ ```
11646
+ type Filtered = Filter<'foo', 'foo'>;
11647
+ //=> never
11648
+ ```
11649
+
11650
+ @example
11651
+ ```
11652
+ type Filtered = Filter<'bar', string>;
11653
+ //=> never
11654
+ ```
11655
+
11656
+ @example
11657
+ ```
11658
+ type Filtered = Filter<'bar', 'foo'>;
11659
+ //=> 'bar'
11660
+ ```
11661
+
11662
+ @see {Except}
11663
+ */
11664
+ type Filter<KeyType, ExcludeType> = IsEqual<KeyType, ExcludeType> extends true ? never : (KeyType extends ExcludeType ? never : KeyType);
11665
+
11666
+ type ExceptOptions = {
11667
+ /**
11668
+ Disallow assigning non-specified properties.
11669
+
11670
+ Note that any omitted properties in the resulting type will be present in autocomplete as `undefined`.
11671
+
11672
+ @default false
11673
+ */
11674
+ requireExactProps?: boolean;
11675
+ };
11676
+
11677
+ /**
11678
+ Create a type from an object type without certain keys.
11679
+
11680
+ We recommend setting the `requireExactProps` option to `true`.
11681
+
11682
+ This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
11683
+
11684
+ This type was proposed to the TypeScript team, which declined it, saying they prefer that libraries implement stricter versions of the built-in types ([microsoft/TypeScript#30825](https://github.com/microsoft/TypeScript/issues/30825#issuecomment-523668235)).
11685
+
11686
+ @example
11687
+ ```
11688
+ import type {Except} from 'type-fest';
11689
+
11690
+ type Foo = {
11691
+ a: number;
11692
+ b: string;
11693
+ };
11694
+
11695
+ type FooWithoutA = Except<Foo, 'a'>;
11696
+ //=> {b: string}
11697
+
11698
+ const fooWithoutA: FooWithoutA = {a: 1, b: '2'};
11699
+ //=> errors: 'a' does not exist in type '{ b: string; }'
11700
+
11701
+ type FooWithoutB = Except<Foo, 'b', {requireExactProps: true}>;
11702
+ //=> {a: number} & Partial<Record<"b", never>>
11703
+
11704
+ const fooWithoutB: FooWithoutB = {a: 1, b: '2'};
11705
+ //=> errors at 'b': Type 'string' is not assignable to type 'undefined'.
11706
+ ```
11707
+
11708
+ @category Object
11709
+ */
11710
+ type Except<ObjectType, KeysType extends keyof ObjectType, Options extends ExceptOptions = {requireExactProps: false}> = {
11711
+ [KeyType in keyof ObjectType as Filter<KeyType, KeysType>]: ObjectType[KeyType];
11712
+ } & (Options['requireExactProps'] extends true
11713
+ ? Partial<Record<KeysType, never>>
11714
+ : {});
11715
+
11716
+ /**
11717
+ Extract the keys from a type where the value type of the key extends the given `Condition`.
11718
+
11719
+ Internally this is used for the `ConditionalPick` and `ConditionalExcept` types.
11720
+
11721
+ @example
11722
+ ```
11723
+ import type {ConditionalKeys} from 'type-fest';
11724
+
11725
+ interface Example {
11726
+ a: string;
11727
+ b: string | number;
11728
+ c?: string;
11729
+ d: {};
11730
+ }
11731
+
11732
+ type StringKeysOnly = ConditionalKeys<Example, string>;
11733
+ //=> 'a'
11734
+ ```
11735
+
11736
+ To support partial types, make sure your `Condition` is a union of undefined (for example, `string | undefined`) as demonstrated below.
11737
+
11738
+ @example
11739
+ ```
11740
+ import type {ConditionalKeys} from 'type-fest';
11741
+
11742
+ type StringKeysAndUndefined = ConditionalKeys<Example, string | undefined>;
11743
+ //=> 'a' | 'c'
11744
+ ```
11745
+
11746
+ @category Object
11747
+ */
11748
+ type ConditionalKeys<Base, Condition> = NonNullable<
11749
+ // Wrap in `NonNullable` to strip away the `undefined` type from the produced union.
11750
+ {
11751
+ // Map through all the keys of the given base type.
11752
+ [Key in keyof Base]:
11753
+ // Pick only keys with types extending the given `Condition` type.
11754
+ Base[Key] extends Condition
11755
+ // Retain this key since the condition passes.
11756
+ ? Key
11757
+ // Discard this key since the condition fails.
11758
+ : never;
11759
+
11760
+ // Convert the produced object into a union type of the keys which passed the conditional test.
11761
+ }[keyof Base]
11762
+ >;
11763
+
11764
+ /**
11765
+ Exclude keys from a shape that matches the given `Condition`.
11766
+
11767
+ This is useful when you want to create a new type with a specific set of keys from a shape. For example, you might want to exclude all the primitive properties from a class and form a new shape containing everything but the primitive properties.
11768
+
11769
+ @example
11770
+ ```
11771
+ import type {Primitive, ConditionalExcept} from 'type-fest';
11772
+
11773
+ class Awesome {
11774
+ name: string;
11775
+ successes: number;
11776
+ failures: bigint;
11777
+
11778
+ run() {}
11779
+ }
11780
+
11781
+ type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>;
11782
+ //=> {run: () => void}
11783
+ ```
11784
+
11785
+ @example
11786
+ ```
11787
+ import type {ConditionalExcept} from 'type-fest';
11788
+
11789
+ interface Example {
11790
+ a: string;
11791
+ b: string | number;
11792
+ c: () => void;
11793
+ d: {};
11794
+ }
11795
+
11796
+ type NonStringKeysOnly = ConditionalExcept<Example, string>;
11797
+ //=> {b: string | number; c: () => void; d: {}}
11798
+ ```
11799
+
11800
+ @category Object
11801
+ */
11802
+ type ConditionalExcept<Base, Condition> = Except<
11803
+ Base,
11804
+ ConditionalKeys<Base, Condition>
11805
+ >;
11806
+
11807
+ /**
11808
+ * Descriptors are objects that describe the API of a module, and the module
11809
+ * can either be a REST module or a host module.
11810
+ * This type is recursive, so it can describe nested modules.
11811
+ */
11812
+ type Descriptors = RESTFunctionDescriptor | AmbassadorFunctionDescriptor | HostModule<any, any> | EventDefinition$1<any> | ServicePluginDefinition<any> | {
11813
+ [key: string]: Descriptors | PublicMetadata | any;
11814
+ };
11815
+ /**
11816
+ * This type takes in a descriptors object of a certain Host (including an `unknown` host)
11817
+ * and returns an object with the same structure, but with all descriptors replaced with their API.
11818
+ * Any non-descriptor properties are removed from the returned object, including descriptors that
11819
+ * do not match the given host (as they will not work with the given host).
11820
+ */
11821
+ type BuildDescriptors<T extends Descriptors, H extends Host<any> | undefined, Depth extends number = 5> = {
11822
+ done: T;
11823
+ recurse: T extends {
11824
+ __type: typeof SERVICE_PLUGIN_ERROR_TYPE;
11825
+ } ? never : T extends AmbassadorFunctionDescriptor ? BuildAmbassadorFunction<T> : T extends RESTFunctionDescriptor ? BuildRESTFunction<T> : T extends EventDefinition$1<any> ? BuildEventDefinition$1<T> : T extends ServicePluginDefinition<any> ? BuildServicePluginDefinition<T> : T extends HostModule<any, any> ? HostModuleAPI<T> : ConditionalExcept<{
11826
+ [Key in keyof T]: T[Key] extends Descriptors ? BuildDescriptors<T[Key], H, [
11827
+ -1,
11828
+ 0,
11829
+ 1,
11830
+ 2,
11831
+ 3,
11832
+ 4,
11833
+ 5
11834
+ ][Depth]> : never;
11835
+ }, EmptyObject>;
11836
+ }[Depth extends -1 ? 'done' : 'recurse'];
11837
+ type PublicMetadata = {
11838
+ PACKAGE_NAME?: string;
11839
+ };
11840
+
11841
+ declare global {
11842
+ interface ContextualClient {
11843
+ }
11844
+ }
11845
+ /**
11846
+ * A type used to create concerete types from SDK descriptors in
11847
+ * case a contextual client is available.
11848
+ */
11849
+ type MaybeContext<T extends Descriptors> = globalThis.ContextualClient extends {
11850
+ host: Host;
11851
+ } ? BuildDescriptors<T, globalThis.ContextualClient['host']> : T;
11852
+
9383
11853
  interface BlogTag {
9384
11854
  /**
9385
11855
  * Tag ID.
@@ -10389,18 +12859,36 @@ interface DeleteTagSignature {
10389
12859
  */
10390
12860
  (tagId: string): Promise<void>;
10391
12861
  }
10392
- declare const onTagCreated$1: EventDefinition<TagCreatedEnvelope, "wix.blog.v3.tag_created">;
10393
- declare const onTagUpdated$1: EventDefinition<TagUpdatedEnvelope, "wix.blog.v3.tag_updated">;
10394
- declare const onTagDeleted$1: EventDefinition<TagDeletedEnvelope, "wix.blog.v3.tag_deleted">;
12862
+ declare const onTagCreated$1: EventDefinition$1<TagCreatedEnvelope, "wix.blog.v3.tag_created">;
12863
+ declare const onTagUpdated$1: EventDefinition$1<TagUpdatedEnvelope, "wix.blog.v3.tag_updated">;
12864
+ declare const onTagDeleted$1: EventDefinition$1<TagDeletedEnvelope, "wix.blog.v3.tag_deleted">;
12865
+
12866
+ type EventDefinition<Payload = unknown, Type extends string = string> = {
12867
+ __type: 'event-definition';
12868
+ type: Type;
12869
+ isDomainEvent?: boolean;
12870
+ transformations?: (envelope: unknown) => Payload;
12871
+ __payload: Payload;
12872
+ };
12873
+ declare function EventDefinition<Type extends string>(type: Type, isDomainEvent?: boolean, transformations?: (envelope: any) => unknown): <Payload = unknown>() => EventDefinition<Payload, Type>;
12874
+ type EventHandler<T extends EventDefinition> = (payload: T['__payload']) => void | Promise<void>;
12875
+ type BuildEventDefinition<T extends EventDefinition<any, string>> = (handler: EventHandler<T>) => void;
12876
+
12877
+ declare global {
12878
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
12879
+ interface SymbolConstructor {
12880
+ readonly observable: symbol;
12881
+ }
12882
+ }
10395
12883
 
10396
12884
  declare function createEventModule<T extends EventDefinition<any, string>>(eventDefinition: T): BuildEventDefinition<T> & T;
10397
12885
 
10398
- declare const createTag: BuildRESTFunction<typeof createTag$1> & typeof createTag$1;
10399
- declare const getTagByLabel: BuildRESTFunction<typeof getTagByLabel$1> & typeof getTagByLabel$1;
10400
- declare const getTag: BuildRESTFunction<typeof getTag$1> & typeof getTag$1;
10401
- declare const getTagBySlug: BuildRESTFunction<typeof getTagBySlug$1> & typeof getTagBySlug$1;
10402
- declare const queryTags: BuildRESTFunction<typeof queryTags$1> & typeof queryTags$1;
10403
- declare const deleteTag: BuildRESTFunction<typeof deleteTag$1> & typeof deleteTag$1;
12886
+ declare const createTag: MaybeContext<BuildRESTFunction<typeof createTag$1> & typeof createTag$1>;
12887
+ declare const getTagByLabel: MaybeContext<BuildRESTFunction<typeof getTagByLabel$1> & typeof getTagByLabel$1>;
12888
+ declare const getTag: MaybeContext<BuildRESTFunction<typeof getTag$1> & typeof getTag$1>;
12889
+ declare const getTagBySlug: MaybeContext<BuildRESTFunction<typeof getTagBySlug$1> & typeof getTagBySlug$1>;
12890
+ declare const queryTags: MaybeContext<BuildRESTFunction<typeof queryTags$1> & typeof queryTags$1>;
12891
+ declare const deleteTag: MaybeContext<BuildRESTFunction<typeof deleteTag$1> & typeof deleteTag$1>;
10404
12892
 
10405
12893
  type _publicOnTagCreatedType = typeof onTagCreated$1;
10406
12894
  /**