@ninetailed/experience.js-utils 7.12.0 → 7.13.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.cjs.js CHANGED
@@ -11,24 +11,52 @@ const Audience = zod.z.object({
11
11
  description: zod.z.string().optional()
12
12
  });
13
13
 
14
+ var ComponentTypeEnum;
15
+ (function (ComponentTypeEnum) {
16
+ ComponentTypeEnum["EntryReplacement"] = "EntryReplacement";
17
+ ComponentTypeEnum["InlineVariable"] = "InlineVariable";
18
+ })(ComponentTypeEnum || (ComponentTypeEnum = {}));
19
+ var InlineVariableComponentValueTypeEnum;
20
+ (function (InlineVariableComponentValueTypeEnum) {
21
+ InlineVariableComponentValueTypeEnum["String"] = "String";
22
+ InlineVariableComponentValueTypeEnum["Object"] = "Object";
23
+ })(InlineVariableComponentValueTypeEnum || (InlineVariableComponentValueTypeEnum = {}));
24
+ const entryReplacementVariantSchema = zod.z.object({
25
+ id: zod.z.string(),
26
+ hidden: zod.z.boolean().default(false)
27
+ });
28
+ const variableVariantSchema = zod.z.object({
29
+ value: zod.z.union([zod.z.string(), experience_jsShared.SerializableObject])
30
+ });
31
+ const EntryReplacementComponentSchema = zod.z.object({
32
+ type: zod.z.literal(ComponentTypeEnum.EntryReplacement).optional(),
33
+ baseline: entryReplacementVariantSchema,
34
+ variants: zod.z.array(entryReplacementVariantSchema)
35
+ });
36
+ function isEntryReplacementComponent(component) {
37
+ return component.type === ComponentTypeEnum.EntryReplacement || component.type === undefined;
38
+ }
39
+ const InlineVariableComponentSchema = zod.z.object({
40
+ type: zod.z.literal(ComponentTypeEnum.InlineVariable),
41
+ key: zod.z.string(),
42
+ valueType: zod.z.nativeEnum(InlineVariableComponentValueTypeEnum),
43
+ baseline: variableVariantSchema,
44
+ variants: zod.z.array(variableVariantSchema)
45
+ });
46
+ function isInlineVariableComponent(component) {
47
+ return component.type === ComponentTypeEnum.InlineVariable;
48
+ }
49
+ const ExperienceConfigComponentSchema = zod.z.discriminatedUnion('type', [EntryReplacementComponentSchema, InlineVariableComponentSchema]);
14
50
  const Config = zod.z.object({
15
51
  distribution: zod.z.array(zod.z.number()).optional().default([0.5, 0.5]),
16
52
  traffic: zod.z.number().optional().default(0),
17
- components: zod.z.array(zod.z.object({
18
- baseline: zod.z.object({
19
- id: zod.z.string().default('')
20
- }),
21
- variants: zod.z.array(zod.z.object({
22
- id: zod.z.string().default(''),
23
- hidden: zod.z.boolean().default(false)
24
- }))
25
- })).optional().default([{
53
+ components: zod.z.array(ExperienceConfigComponentSchema).optional().default([{
54
+ type: ComponentTypeEnum.EntryReplacement,
26
55
  baseline: {
27
56
  id: ''
28
57
  },
29
58
  variants: [{
30
- id: '',
31
- hidden: false
59
+ id: ''
32
60
  }]
33
61
  }]),
34
62
  sticky: zod.z.boolean().optional().default(false)
@@ -178,16 +206,27 @@ class ExperienceMapper {
178
206
  end: config.distribution.slice(0, index + 1).reduce((a, b) => a + b, 0)
179
207
  })),
180
208
  sticky,
181
- components: components.map(component => ({
182
- baseline: component.baseline,
183
- variants: component.variants.map(variantRef => {
184
- if (variantRef.hidden) {
185
- return variantRef;
186
- }
187
- const matchingVariant = variants.find(variant => variant.id === variantRef.id);
188
- return matchingVariant !== null && matchingVariant !== void 0 ? matchingVariant : null;
189
- }).filter(variant => variant !== null)
190
- }))
209
+ components: components.map(component => {
210
+ if (isEntryReplacementComponent(component)) {
211
+ // Process EntryReplacement component
212
+ const processedVariants = component.variants.map(variantRef => {
213
+ if (variantRef.hidden) {
214
+ return variantRef;
215
+ }
216
+ const matchingVariant = variants.find(variant => variant.id === variantRef.id);
217
+ return matchingVariant !== null && matchingVariant !== void 0 ? matchingVariant : null;
218
+ }).filter(variant => variant !== null);
219
+ return {
220
+ type: ComponentTypeEnum.EntryReplacement,
221
+ baseline: component.baseline,
222
+ variants: processedVariants
223
+ };
224
+ }
225
+ if (isInlineVariableComponent(component)) {
226
+ return component;
227
+ }
228
+ throw new Error(`Unsupported component type encountered`);
229
+ })
191
230
  });
192
231
  }
193
232
  static isExperimentEntry(experiment) {
package/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { logger } from '@ninetailed/experience.js-shared';
1
+ import { SerializableObject, logger } from '@ninetailed/experience.js-shared';
2
2
  import { z } from 'zod';
3
3
 
4
4
  const Audience = z.object({
@@ -7,24 +7,53 @@ const Audience = z.object({
7
7
  description: z.string().optional()
8
8
  });
9
9
 
10
+ let ComponentTypeEnum = /*#__PURE__*/function (ComponentTypeEnum) {
11
+ ComponentTypeEnum["EntryReplacement"] = "EntryReplacement";
12
+ ComponentTypeEnum["InlineVariable"] = "InlineVariable";
13
+ return ComponentTypeEnum;
14
+ }({});
15
+ let InlineVariableComponentValueTypeEnum = /*#__PURE__*/function (InlineVariableComponentValueTypeEnum) {
16
+ InlineVariableComponentValueTypeEnum["String"] = "String";
17
+ InlineVariableComponentValueTypeEnum["Object"] = "Object";
18
+ return InlineVariableComponentValueTypeEnum;
19
+ }({});
20
+ const entryReplacementVariantSchema = z.object({
21
+ id: z.string(),
22
+ hidden: z.boolean().default(false)
23
+ });
24
+ const variableVariantSchema = z.object({
25
+ value: z.union([z.string(), SerializableObject])
26
+ });
27
+ const EntryReplacementComponentSchema = z.object({
28
+ type: z.literal(ComponentTypeEnum.EntryReplacement).optional(),
29
+ // [components-migration] TODO: to become mandatory once migration is finalized
30
+ baseline: entryReplacementVariantSchema,
31
+ variants: z.array(entryReplacementVariantSchema)
32
+ });
33
+ function isEntryReplacementComponent(component) {
34
+ return component.type === ComponentTypeEnum.EntryReplacement || component.type === undefined;
35
+ }
36
+ const InlineVariableComponentSchema = z.object({
37
+ type: z.literal(ComponentTypeEnum.InlineVariable),
38
+ key: z.string(),
39
+ valueType: z.nativeEnum(InlineVariableComponentValueTypeEnum),
40
+ baseline: variableVariantSchema,
41
+ variants: z.array(variableVariantSchema)
42
+ });
43
+ function isInlineVariableComponent(component) {
44
+ return component.type === ComponentTypeEnum.InlineVariable;
45
+ }
46
+ const ExperienceConfigComponentSchema = z.discriminatedUnion('type', [EntryReplacementComponentSchema, InlineVariableComponentSchema]);
10
47
  const Config = z.object({
11
48
  distribution: z.array(z.number()).optional().default([0.5, 0.5]),
12
49
  traffic: z.number().optional().default(0),
13
- components: z.array(z.object({
14
- baseline: z.object({
15
- id: z.string().default('')
16
- }),
17
- variants: z.array(z.object({
18
- id: z.string().default(''),
19
- hidden: z.boolean().default(false)
20
- }))
21
- })).optional().default([{
50
+ components: z.array(ExperienceConfigComponentSchema).optional().default([{
51
+ type: ComponentTypeEnum.EntryReplacement,
22
52
  baseline: {
23
53
  id: ''
24
54
  },
25
55
  variants: [{
26
- id: '',
27
- hidden: false
56
+ id: ''
28
57
  }]
29
58
  }]),
30
59
  sticky: z.boolean().optional().default(false)
@@ -174,16 +203,27 @@ class ExperienceMapper {
174
203
  end: config.distribution.slice(0, index + 1).reduce((a, b) => a + b, 0)
175
204
  })),
176
205
  sticky,
177
- components: components.map(component => ({
178
- baseline: component.baseline,
179
- variants: component.variants.map(variantRef => {
180
- if (variantRef.hidden) {
181
- return variantRef;
182
- }
183
- const matchingVariant = variants.find(variant => variant.id === variantRef.id);
184
- return matchingVariant != null ? matchingVariant : null;
185
- }).filter(variant => variant !== null)
186
- }))
206
+ components: components.map(component => {
207
+ if (isEntryReplacementComponent(component)) {
208
+ // Process EntryReplacement component
209
+ const processedVariants = component.variants.map(variantRef => {
210
+ if (variantRef.hidden) {
211
+ return variantRef;
212
+ }
213
+ const matchingVariant = variants.find(variant => variant.id === variantRef.id);
214
+ return matchingVariant != null ? matchingVariant : null;
215
+ }).filter(variant => variant !== null);
216
+ return {
217
+ type: ComponentTypeEnum.EntryReplacement,
218
+ baseline: component.baseline,
219
+ variants: processedVariants
220
+ };
221
+ }
222
+ if (isInlineVariableComponent(component)) {
223
+ return component;
224
+ }
225
+ throw new Error(`Unsupported component type encountered`);
226
+ })
187
227
  });
188
228
  }
189
229
  static isExperimentEntry(experiment) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ninetailed/experience.js-utils",
3
- "version": "7.12.0",
3
+ "version": "7.13.0-beta.0",
4
4
  "description": "Ninetailed Experience.js Utils",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -9,8 +9,8 @@
9
9
  "directory": "packages/utils/javascript"
10
10
  },
11
11
  "dependencies": {
12
- "@ninetailed/experience.js": "7.12.0",
13
- "@ninetailed/experience.js-shared": "7.12.0",
12
+ "@ninetailed/experience.js": "7.13.0-beta.0",
13
+ "@ninetailed/experience.js-shared": "7.13.0-beta.0",
14
14
  "zod": "3.23.0"
15
15
  },
16
16
  "module": "./index.esm.js",
@@ -1,69 +1,333 @@
1
1
  import { Baseline, VariantRef } from '@ninetailed/experience.js';
2
+ import { SerializableObject } from '@ninetailed/experience.js-shared';
2
3
  import { z } from 'zod';
4
+ export declare enum ComponentTypeEnum {
5
+ EntryReplacement = "EntryReplacement",
6
+ InlineVariable = "InlineVariable"
7
+ }
8
+ export declare enum InlineVariableComponentValueTypeEnum {
9
+ String = "String",
10
+ Object = "Object"
11
+ }
12
+ export declare const entryReplacementVariantSchema: z.ZodObject<{
13
+ id: z.ZodString;
14
+ hidden: z.ZodDefault<z.ZodBoolean>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ id: string;
17
+ hidden: boolean;
18
+ }, {
19
+ id: string;
20
+ hidden?: boolean | undefined;
21
+ }>;
22
+ export declare const variableVariantSchema: z.ZodObject<{
23
+ value: z.ZodUnion<[z.ZodString, z.ZodType<SerializableObject, z.ZodTypeDef, unknown>]>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ value: string | SerializableObject;
26
+ }, {
27
+ value?: unknown;
28
+ }>;
29
+ export declare const EntryReplacementComponentSchema: z.ZodObject<{
30
+ type: z.ZodOptional<z.ZodLiteral<ComponentTypeEnum.EntryReplacement>>;
31
+ baseline: z.ZodObject<{
32
+ id: z.ZodString;
33
+ hidden: z.ZodDefault<z.ZodBoolean>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ id: string;
36
+ hidden: boolean;
37
+ }, {
38
+ id: string;
39
+ hidden?: boolean | undefined;
40
+ }>;
41
+ variants: z.ZodArray<z.ZodObject<{
42
+ id: z.ZodString;
43
+ hidden: z.ZodDefault<z.ZodBoolean>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ id: string;
46
+ hidden: boolean;
47
+ }, {
48
+ id: string;
49
+ hidden?: boolean | undefined;
50
+ }>, "many">;
51
+ }, "strip", z.ZodTypeAny, {
52
+ baseline: {
53
+ id: string;
54
+ hidden: boolean;
55
+ };
56
+ variants: {
57
+ id: string;
58
+ hidden: boolean;
59
+ }[];
60
+ type?: ComponentTypeEnum.EntryReplacement | undefined;
61
+ }, {
62
+ baseline: {
63
+ id: string;
64
+ hidden?: boolean | undefined;
65
+ };
66
+ variants: {
67
+ id: string;
68
+ hidden?: boolean | undefined;
69
+ }[];
70
+ type?: ComponentTypeEnum.EntryReplacement | undefined;
71
+ }>;
72
+ export type EntryReplacementComponent = z.infer<typeof EntryReplacementComponentSchema>;
73
+ export type TExperienceConfigComponentSchema = z.infer<typeof ExperienceConfigComponentSchema>;
74
+ export declare function isEntryReplacementComponent(component: TExperienceConfigComponentSchema): component is EntryReplacementComponent;
75
+ export declare const InlineVariableComponentSchema: z.ZodObject<{
76
+ type: z.ZodLiteral<ComponentTypeEnum.InlineVariable>;
77
+ key: z.ZodString;
78
+ valueType: z.ZodNativeEnum<typeof InlineVariableComponentValueTypeEnum>;
79
+ baseline: z.ZodObject<{
80
+ value: z.ZodUnion<[z.ZodString, z.ZodType<SerializableObject, z.ZodTypeDef, unknown>]>;
81
+ }, "strip", z.ZodTypeAny, {
82
+ value: string | SerializableObject;
83
+ }, {
84
+ value?: unknown;
85
+ }>;
86
+ variants: z.ZodArray<z.ZodObject<{
87
+ value: z.ZodUnion<[z.ZodString, z.ZodType<SerializableObject, z.ZodTypeDef, unknown>]>;
88
+ }, "strip", z.ZodTypeAny, {
89
+ value: string | SerializableObject;
90
+ }, {
91
+ value?: unknown;
92
+ }>, "many">;
93
+ }, "strip", z.ZodTypeAny, {
94
+ type: ComponentTypeEnum.InlineVariable;
95
+ baseline: {
96
+ value: string | SerializableObject;
97
+ };
98
+ variants: {
99
+ value: string | SerializableObject;
100
+ }[];
101
+ key: string;
102
+ valueType: InlineVariableComponentValueTypeEnum;
103
+ }, {
104
+ type: ComponentTypeEnum.InlineVariable;
105
+ baseline: {
106
+ value?: unknown;
107
+ };
108
+ variants: {
109
+ value?: unknown;
110
+ }[];
111
+ key: string;
112
+ valueType: InlineVariableComponentValueTypeEnum;
113
+ }>;
114
+ export type InlineVariableComponent = z.infer<typeof InlineVariableComponentSchema>;
115
+ export declare function isInlineVariableComponent(component: TExperienceConfigComponentSchema): component is InlineVariableComponent;
116
+ export declare const ExperienceConfigComponentSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
117
+ type: z.ZodOptional<z.ZodLiteral<ComponentTypeEnum.EntryReplacement>>;
118
+ baseline: z.ZodObject<{
119
+ id: z.ZodString;
120
+ hidden: z.ZodDefault<z.ZodBoolean>;
121
+ }, "strip", z.ZodTypeAny, {
122
+ id: string;
123
+ hidden: boolean;
124
+ }, {
125
+ id: string;
126
+ hidden?: boolean | undefined;
127
+ }>;
128
+ variants: z.ZodArray<z.ZodObject<{
129
+ id: z.ZodString;
130
+ hidden: z.ZodDefault<z.ZodBoolean>;
131
+ }, "strip", z.ZodTypeAny, {
132
+ id: string;
133
+ hidden: boolean;
134
+ }, {
135
+ id: string;
136
+ hidden?: boolean | undefined;
137
+ }>, "many">;
138
+ }, "strip", z.ZodTypeAny, {
139
+ baseline: {
140
+ id: string;
141
+ hidden: boolean;
142
+ };
143
+ variants: {
144
+ id: string;
145
+ hidden: boolean;
146
+ }[];
147
+ type?: ComponentTypeEnum.EntryReplacement | undefined;
148
+ }, {
149
+ baseline: {
150
+ id: string;
151
+ hidden?: boolean | undefined;
152
+ };
153
+ variants: {
154
+ id: string;
155
+ hidden?: boolean | undefined;
156
+ }[];
157
+ type?: ComponentTypeEnum.EntryReplacement | undefined;
158
+ }>, z.ZodObject<{
159
+ type: z.ZodLiteral<ComponentTypeEnum.InlineVariable>;
160
+ key: z.ZodString;
161
+ valueType: z.ZodNativeEnum<typeof InlineVariableComponentValueTypeEnum>;
162
+ baseline: z.ZodObject<{
163
+ value: z.ZodUnion<[z.ZodString, z.ZodType<SerializableObject, z.ZodTypeDef, unknown>]>;
164
+ }, "strip", z.ZodTypeAny, {
165
+ value: string | SerializableObject;
166
+ }, {
167
+ value?: unknown;
168
+ }>;
169
+ variants: z.ZodArray<z.ZodObject<{
170
+ value: z.ZodUnion<[z.ZodString, z.ZodType<SerializableObject, z.ZodTypeDef, unknown>]>;
171
+ }, "strip", z.ZodTypeAny, {
172
+ value: string | SerializableObject;
173
+ }, {
174
+ value?: unknown;
175
+ }>, "many">;
176
+ }, "strip", z.ZodTypeAny, {
177
+ type: ComponentTypeEnum.InlineVariable;
178
+ baseline: {
179
+ value: string | SerializableObject;
180
+ };
181
+ variants: {
182
+ value: string | SerializableObject;
183
+ }[];
184
+ key: string;
185
+ valueType: InlineVariableComponentValueTypeEnum;
186
+ }, {
187
+ type: ComponentTypeEnum.InlineVariable;
188
+ baseline: {
189
+ value?: unknown;
190
+ };
191
+ variants: {
192
+ value?: unknown;
193
+ }[];
194
+ key: string;
195
+ valueType: InlineVariableComponentValueTypeEnum;
196
+ }>]>;
3
197
  export declare const Config: z.ZodObject<{
4
198
  distribution: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>>;
5
199
  traffic: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6
- components: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
200
+ components: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
201
+ type: z.ZodOptional<z.ZodLiteral<ComponentTypeEnum.EntryReplacement>>;
7
202
  baseline: z.ZodObject<{
8
- id: z.ZodDefault<z.ZodString>;
203
+ id: z.ZodString;
204
+ hidden: z.ZodDefault<z.ZodBoolean>;
9
205
  }, "strip", z.ZodTypeAny, {
10
206
  id: string;
207
+ hidden: boolean;
11
208
  }, {
12
- id?: string | undefined;
209
+ id: string;
210
+ hidden?: boolean | undefined;
13
211
  }>;
14
212
  variants: z.ZodArray<z.ZodObject<{
15
- id: z.ZodDefault<z.ZodString>;
213
+ id: z.ZodString;
16
214
  hidden: z.ZodDefault<z.ZodBoolean>;
17
215
  }, "strip", z.ZodTypeAny, {
18
216
  id: string;
19
217
  hidden: boolean;
20
218
  }, {
21
- id?: string | undefined;
219
+ id: string;
22
220
  hidden?: boolean | undefined;
23
221
  }>, "many">;
24
222
  }, "strip", z.ZodTypeAny, {
25
223
  baseline: {
26
224
  id: string;
225
+ hidden: boolean;
27
226
  };
28
227
  variants: {
29
228
  id: string;
30
229
  hidden: boolean;
31
230
  }[];
231
+ type?: ComponentTypeEnum.EntryReplacement | undefined;
32
232
  }, {
33
233
  baseline: {
34
- id?: string | undefined;
234
+ id: string;
235
+ hidden?: boolean | undefined;
35
236
  };
36
237
  variants: {
37
- id?: string | undefined;
238
+ id: string;
38
239
  hidden?: boolean | undefined;
39
240
  }[];
40
- }>, "many">>>;
241
+ type?: ComponentTypeEnum.EntryReplacement | undefined;
242
+ }>, z.ZodObject<{
243
+ type: z.ZodLiteral<ComponentTypeEnum.InlineVariable>;
244
+ key: z.ZodString;
245
+ valueType: z.ZodNativeEnum<typeof InlineVariableComponentValueTypeEnum>;
246
+ baseline: z.ZodObject<{
247
+ value: z.ZodUnion<[z.ZodString, z.ZodType<SerializableObject, z.ZodTypeDef, unknown>]>;
248
+ }, "strip", z.ZodTypeAny, {
249
+ value: string | SerializableObject;
250
+ }, {
251
+ value?: unknown;
252
+ }>;
253
+ variants: z.ZodArray<z.ZodObject<{
254
+ value: z.ZodUnion<[z.ZodString, z.ZodType<SerializableObject, z.ZodTypeDef, unknown>]>;
255
+ }, "strip", z.ZodTypeAny, {
256
+ value: string | SerializableObject;
257
+ }, {
258
+ value?: unknown;
259
+ }>, "many">;
260
+ }, "strip", z.ZodTypeAny, {
261
+ type: ComponentTypeEnum.InlineVariable;
262
+ baseline: {
263
+ value: string | SerializableObject;
264
+ };
265
+ variants: {
266
+ value: string | SerializableObject;
267
+ }[];
268
+ key: string;
269
+ valueType: InlineVariableComponentValueTypeEnum;
270
+ }, {
271
+ type: ComponentTypeEnum.InlineVariable;
272
+ baseline: {
273
+ value?: unknown;
274
+ };
275
+ variants: {
276
+ value?: unknown;
277
+ }[];
278
+ key: string;
279
+ valueType: InlineVariableComponentValueTypeEnum;
280
+ }>]>, "many">>>;
41
281
  sticky: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
42
282
  }, "strip", z.ZodTypeAny, {
43
283
  distribution: number[];
44
284
  traffic: number;
45
- components: {
285
+ components: ({
46
286
  baseline: {
47
287
  id: string;
288
+ hidden: boolean;
48
289
  };
49
290
  variants: {
50
291
  id: string;
51
292
  hidden: boolean;
52
293
  }[];
53
- }[];
294
+ type?: ComponentTypeEnum.EntryReplacement | undefined;
295
+ } | {
296
+ type: ComponentTypeEnum.InlineVariable;
297
+ baseline: {
298
+ value: string | SerializableObject;
299
+ };
300
+ variants: {
301
+ value: string | SerializableObject;
302
+ }[];
303
+ key: string;
304
+ valueType: InlineVariableComponentValueTypeEnum;
305
+ })[];
54
306
  sticky: boolean;
55
307
  }, {
56
308
  distribution?: number[] | undefined;
57
309
  traffic?: number | undefined;
58
- components?: {
310
+ components?: ({
59
311
  baseline: {
60
- id?: string | undefined;
312
+ id: string;
313
+ hidden?: boolean | undefined;
61
314
  };
62
315
  variants: {
63
- id?: string | undefined;
316
+ id: string;
64
317
  hidden?: boolean | undefined;
65
318
  }[];
66
- }[] | undefined;
319
+ type?: ComponentTypeEnum.EntryReplacement | undefined;
320
+ } | {
321
+ type: ComponentTypeEnum.InlineVariable;
322
+ baseline: {
323
+ value?: unknown;
324
+ };
325
+ variants: {
326
+ value?: unknown;
327
+ }[];
328
+ key: string;
329
+ valueType: InlineVariableComponentValueTypeEnum;
330
+ })[] | undefined;
67
331
  sticky?: boolean | undefined;
68
332
  }>;
69
333
  export type ConfigLike = z.input<typeof Config>;