@builder-builder/builder 0.0.14 → 0.0.15

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.
Files changed (61) hide show
  1. package/dist/bb.d.ts +3 -1
  2. package/dist/bb.js +6 -1
  3. package/dist/check.d.ts +2 -2
  4. package/dist/entities/builder/builder.d.ts +11 -1
  5. package/dist/entities/builder/builder.js +22 -6
  6. package/dist/entities/collection/collection.d.ts +7 -1
  7. package/dist/entities/collection/collection.js +9 -2
  8. package/dist/entities/collection/config.d.ts +6 -1
  9. package/dist/entities/collection/config.js +9 -2
  10. package/dist/entities/component/component.d.ts +41 -1
  11. package/dist/entities/component/component.js +9 -2
  12. package/dist/entities/component/details.d.ts +11 -2
  13. package/dist/entities/component/details.js +9 -2
  14. package/dist/entities/component/field.d.ts +10 -1
  15. package/dist/entities/component/field.js +13 -3
  16. package/dist/entities/index.d.ts +5 -1
  17. package/dist/entities/index.js +2 -0
  18. package/dist/entities/kind.d.ts +1 -1
  19. package/dist/entities/model/model.d.ts +5 -1
  20. package/dist/entities/model/model.js +10 -3
  21. package/dist/entities/model/models.js +9 -5
  22. package/dist/entities/option/option.d.ts +41 -1
  23. package/dist/entities/option/option.js +9 -2
  24. package/dist/entities/option/select.d.ts +7 -1
  25. package/dist/entities/option/select.js +17 -6
  26. package/dist/entities/option/toggle.d.ts +7 -1
  27. package/dist/entities/option/toggle.js +16 -4
  28. package/dist/entities/option/values.d.ts +6 -0
  29. package/dist/entities/pricing.d.ts +64 -0
  30. package/dist/entities/pricing.js +48 -0
  31. package/dist/entities/serialise.d.ts +78 -0
  32. package/dist/entities/serialise.js +30 -11
  33. package/dist/entities/tags.d.ts +3 -0
  34. package/dist/entities/tags.js +2 -0
  35. package/dist/entities/ui/describe.d.ts +10 -1
  36. package/dist/entities/ui/describe.js +9 -2
  37. package/dist/entities/ui/input.d.ts +10 -1
  38. package/dist/entities/ui/input.js +17 -5
  39. package/dist/entities/ui/page.d.ts +10 -1
  40. package/dist/entities/ui/page.js +9 -2
  41. package/dist/entities/ui/pages.d.ts +5 -1
  42. package/dist/entities/ui/pages.js +9 -2
  43. package/dist/entities/ui/ui.d.ts +6 -1
  44. package/dist/entities/ui/ui.js +27 -12
  45. package/dist/entities/validated.d.ts +3 -1
  46. package/dist/exception.d.ts +2 -2
  47. package/dist/index.d.ts +2 -2
  48. package/dist/instance.d.ts +9 -0
  49. package/dist/instance.js +3 -1
  50. package/dist/mappers/index.d.ts +3 -2
  51. package/dist/mappers/index.js +2 -1
  52. package/dist/mappers/pricing.d.ts +3 -0
  53. package/dist/mappers/pricing.js +101 -0
  54. package/dist/validate/builder.js +5 -1
  55. package/dist/validate/errors.d.ts +9 -1
  56. package/dist/validate/errors.js +7 -0
  57. package/dist/validate/index.d.ts +3 -1
  58. package/dist/validate/index.js +1 -0
  59. package/dist/validate/pricing.d.ts +6 -0
  60. package/dist/validate/pricing.js +71 -0
  61. package/package.json +1 -1
@@ -1,17 +1,21 @@
1
1
  import type { BuilderPrimitive } from '../../primitive';
2
+ import type { BuilderTags } from '../tags';
2
3
  import * as v from 'valibot';
3
4
  export declare const BuilderToggleValueTypeSchema: v.PicklistSchema<["string", "boolean", "number"], undefined>;
4
5
  export type BuilderToggleValueType = v.InferOutput<typeof BuilderToggleValueTypeSchema>;
5
6
  export declare class BuilderToggleType<const ValueSchema extends v.GenericSchema<BuilderPrimitive> = v.GenericSchema<BuilderPrimitive>> {
7
+ #private;
6
8
  readonly value: v.InferOutput<ValueSchema>;
7
9
  readonly type: "toggle";
8
10
  readonly valueType: BuilderToggleValueType;
9
11
  readonly valueSchema: ValueSchema;
10
12
  readonly defaultValue: v.InferOutput<ValueSchema>;
11
13
  readonly isOptional: boolean;
12
- constructor(valueType: BuilderToggleValueType, defaultValue: v.InferOutput<ValueSchema>, optional?: boolean);
14
+ readonly tags?: BuilderTags;
15
+ constructor(valueType: BuilderToggleValueType, defaultValue: v.InferOutput<ValueSchema>, optional?: boolean, tags?: BuilderTags);
13
16
  default(newDefault: v.InferOutput<ValueSchema>): BuilderToggleType<ValueSchema>;
14
17
  optional(): BuilderToggleType<v.NullableSchema<ValueSchema, undefined>>;
18
+ tag(...tags: Array<string>): BuilderToggleType<ValueSchema>;
15
19
  }
16
20
  export declare function toggleString(): BuilderToggleType<v.StringSchema<undefined>>;
17
21
  export declare function toggleBoolean(): BuilderToggleType<v.BooleanSchema<undefined>>;
@@ -22,11 +26,13 @@ export declare const BuilderToggleTypeSerialisedSchema: v.SchemaWithPipe<readonl
22
26
  readonly valueType: v.PicklistSchema<["string", "boolean", "number"], undefined>;
23
27
  readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
24
28
  readonly isOptional: v.BooleanSchema<undefined>;
29
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
25
30
  }, undefined>, v.ReadonlyAction<{
26
31
  type: "toggle";
27
32
  valueType: "string" | "number" | "boolean";
28
33
  defaultValue: string | number | boolean | null;
29
34
  isOptional: boolean;
35
+ tags?: readonly string[] | undefined;
30
36
  }>]>;
31
37
  export type BuilderToggleTypeSerialised = v.InferOutput<typeof BuilderToggleTypeSerialisedSchema>;
32
38
  export declare function toggleValueSchema(valueType: BuilderToggleValueType, optional: boolean): v.GenericSchema;
@@ -1,5 +1,6 @@
1
1
  import * as v from 'valibot';
2
2
  import { serialisable } from '../../serialisable.js';
3
+ import { BuilderTagsSchema } from '../tags.js';
3
4
  export const BuilderToggleValueTypeSchema = v.picklist(['string', 'boolean', 'number']);
4
5
  export class BuilderToggleType {
5
6
  type = 'toggle';
@@ -7,17 +8,27 @@ export class BuilderToggleType {
7
8
  valueSchema;
8
9
  defaultValue;
9
10
  isOptional;
10
- constructor(valueType, defaultValue, optional) {
11
+ tags;
12
+ constructor(valueType, defaultValue, optional, tags) {
11
13
  this.valueType = valueType;
12
14
  this.valueSchema = toggleValueSchema(valueType, optional || false);
13
15
  this.defaultValue = defaultValue;
14
16
  this.isOptional = optional || false;
17
+ this.tags = tags;
18
+ }
19
+ #next(patch) {
20
+ return new BuilderToggleType(this.valueType, 'defaultValue' in patch
21
+ ? patch.defaultValue
22
+ : this.defaultValue, patch.optional ?? this.isOptional, patch.tags ?? this.tags);
15
23
  }
16
24
  default(newDefault) {
17
- return new BuilderToggleType(this.valueType, newDefault, this.isOptional);
25
+ return this.#next({ defaultValue: newDefault });
18
26
  }
19
27
  optional() {
20
- return new BuilderToggleType(this.valueType, this.defaultValue, true);
28
+ return this.#next({ optional: true });
29
+ }
30
+ tag(...tags) {
31
+ return this.#next({ tags });
21
32
  }
22
33
  }
23
34
  export function toggleString() {
@@ -34,7 +45,8 @@ export const BuilderToggleTypeSerialisedSchema = serialisable(v.object({
34
45
  type: v.literal('toggle'),
35
46
  valueType: BuilderToggleValueTypeSchema,
36
47
  defaultValue: v.nullable(v.union([v.boolean(), v.string(), v.number()])),
37
- isOptional: v.boolean()
48
+ isOptional: v.boolean(),
49
+ tags: v.optional(BuilderTagsSchema)
38
50
  }));
39
51
  export function toggleValueSchema(valueType, optional) {
40
52
  const baseSchema = valueType === 'string' ? v.string() : valueType === 'boolean' ? v.boolean() : v.number();
@@ -7,6 +7,7 @@ export declare const BuilderOptionValuesSerialisedSchema: v.SchemaWithPipe<reado
7
7
  readonly defaultValue: v.NullableSchema<v.StringSchema<undefined>, undefined>;
8
8
  readonly isOptional: v.BooleanSchema<undefined>;
9
9
  readonly optionLabels: v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>;
10
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
10
11
  }, undefined>, v.ReadonlyAction<{
11
12
  type: "select";
12
13
  readonly options: readonly [string, ...string[]];
@@ -15,16 +16,19 @@ export declare const BuilderOptionValuesSerialisedSchema: v.SchemaWithPipe<reado
15
16
  optionLabels: {
16
17
  [x: string]: string;
17
18
  };
19
+ tags?: readonly string[] | undefined;
18
20
  }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
19
21
  readonly type: v.LiteralSchema<"toggle", undefined>;
20
22
  readonly valueType: v.PicklistSchema<["string", "boolean", "number"], undefined>;
21
23
  readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
22
24
  readonly isOptional: v.BooleanSchema<undefined>;
25
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
23
26
  }, undefined>, v.ReadonlyAction<{
24
27
  type: "toggle";
25
28
  valueType: "string" | "number" | "boolean";
26
29
  defaultValue: string | number | boolean | null;
27
30
  isOptional: boolean;
31
+ tags?: readonly string[] | undefined;
28
32
  }>]>], undefined>, v.ReadonlyAction<Readonly<{
29
33
  type: "select";
30
34
  readonly options: readonly [string, ...string[]];
@@ -33,11 +37,13 @@ export declare const BuilderOptionValuesSerialisedSchema: v.SchemaWithPipe<reado
33
37
  optionLabels: {
34
38
  [x: string]: string;
35
39
  };
40
+ tags?: readonly string[] | undefined;
36
41
  }> | Readonly<{
37
42
  type: "toggle";
38
43
  valueType: "string" | "number" | "boolean";
39
44
  defaultValue: string | number | boolean | null;
40
45
  isOptional: boolean;
46
+ tags?: readonly string[] | undefined;
41
47
  }>>]>;
42
48
  export type BuilderOptionValuesSerialised = v.InferOutput<typeof BuilderOptionValuesSerialisedSchema>;
43
49
  export declare function optionValueSchema(payload: BuilderOptionValuesSerialised): v.GenericSchema;
@@ -0,0 +1,64 @@
1
+ import * as v from 'valibot';
2
+ export declare const BuilderPricingReduceSchema: v.PicklistSchema<["product", "sum", "first"], undefined>;
3
+ export type BuilderPricingReduce = v.InferOutput<typeof BuilderPricingReduceSchema>;
4
+ export type BuilderPricingTagExpression = {
5
+ readonly kind: 'tag';
6
+ readonly value: string;
7
+ } | {
8
+ readonly kind: 'modelTags';
9
+ } | {
10
+ readonly kind: 'variantTags';
11
+ };
12
+ export declare const BuilderPricingTagExpressionSchema: v.GenericSchema<BuilderPricingTagExpression>;
13
+ export type BuilderPricingExpression = {
14
+ readonly kind: 'num';
15
+ readonly value: number;
16
+ } | {
17
+ readonly kind: 'variantPrice';
18
+ } | {
19
+ readonly kind: 'rate';
20
+ readonly rate: string;
21
+ readonly tag: BuilderPricingTagExpression;
22
+ readonly reduce?: BuilderPricingReduce;
23
+ } | {
24
+ readonly kind: 'variants';
25
+ readonly tag?: BuilderPricingTagExpression;
26
+ readonly expression: BuilderPricingExpression;
27
+ readonly reduce?: BuilderPricingReduce;
28
+ } | {
29
+ readonly kind: 'add';
30
+ readonly left: BuilderPricingExpression;
31
+ readonly right: BuilderPricingExpression;
32
+ } | {
33
+ readonly kind: 'sub';
34
+ readonly left: BuilderPricingExpression;
35
+ readonly right: BuilderPricingExpression;
36
+ } | {
37
+ readonly kind: 'mul';
38
+ readonly left: BuilderPricingExpression;
39
+ readonly right: BuilderPricingExpression;
40
+ } | {
41
+ readonly kind: 'div';
42
+ readonly left: BuilderPricingExpression;
43
+ readonly right: BuilderPricingExpression;
44
+ };
45
+ export declare const BuilderPricingExpressionSchema: v.GenericSchema<BuilderPricingExpression>;
46
+ export type BuilderPricing = {
47
+ readonly rates: Record<string, Record<string, number>>;
48
+ readonly formula: BuilderPricingExpression;
49
+ };
50
+ export declare const BuilderPricingSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
51
+ readonly rates: v.SchemaWithPipe<readonly [v.RecordSchema<v.StringSchema<undefined>, v.RecordSchema<v.StringSchema<undefined>, v.NumberSchema<undefined>, undefined>, undefined>, v.ReadonlyAction<{
52
+ [x: string]: {
53
+ [x: string]: number;
54
+ };
55
+ }>]>;
56
+ readonly formula: v.GenericSchema<BuilderPricingExpression>;
57
+ }, undefined>, v.ReadonlyAction<{
58
+ readonly rates: Readonly<{
59
+ [x: string]: {
60
+ [x: string]: number;
61
+ };
62
+ }>;
63
+ formula: BuilderPricingExpression;
64
+ }>]>;
@@ -0,0 +1,48 @@
1
+ import * as v from 'valibot';
2
+ import { serialisable } from '../serialisable.js';
3
+ export const BuilderPricingReduceSchema = v.picklist(['product', 'sum', 'first']);
4
+ export const BuilderPricingTagExpressionSchema = v.variant('kind', [
5
+ v.object({ kind: v.literal('tag'), value: v.string() }),
6
+ v.object({ kind: v.literal('modelTags') }),
7
+ v.object({ kind: v.literal('variantTags') })
8
+ ]);
9
+ export const BuilderPricingExpressionSchema = v.lazy(() => v.variant('kind', [
10
+ v.object({ kind: v.literal('num'), value: v.number() }),
11
+ v.object({ kind: v.literal('variantPrice') }),
12
+ v.object({
13
+ kind: v.literal('rate'),
14
+ rate: v.string(),
15
+ tag: BuilderPricingTagExpressionSchema,
16
+ reduce: v.optional(BuilderPricingReduceSchema)
17
+ }),
18
+ v.object({
19
+ kind: v.literal('variants'),
20
+ tag: v.optional(BuilderPricingTagExpressionSchema),
21
+ expression: BuilderPricingExpressionSchema,
22
+ reduce: v.optional(BuilderPricingReduceSchema)
23
+ }),
24
+ v.object({
25
+ kind: v.literal('add'),
26
+ left: BuilderPricingExpressionSchema,
27
+ right: BuilderPricingExpressionSchema
28
+ }),
29
+ v.object({
30
+ kind: v.literal('sub'),
31
+ left: BuilderPricingExpressionSchema,
32
+ right: BuilderPricingExpressionSchema
33
+ }),
34
+ v.object({
35
+ kind: v.literal('mul'),
36
+ left: BuilderPricingExpressionSchema,
37
+ right: BuilderPricingExpressionSchema
38
+ }),
39
+ v.object({
40
+ kind: v.literal('div'),
41
+ left: BuilderPricingExpressionSchema,
42
+ right: BuilderPricingExpressionSchema
43
+ })
44
+ ]));
45
+ export const BuilderPricingSchema = serialisable(v.object({
46
+ rates: v.pipe(v.record(v.string(), v.record(v.string(), v.number())), v.readonly()),
47
+ formula: BuilderPricingExpressionSchema
48
+ }));
@@ -20,6 +20,7 @@ export declare const entitiesMap: {
20
20
  readonly defaultValue: v.NullableSchema<v.StringSchema<undefined>, undefined>;
21
21
  readonly isOptional: v.BooleanSchema<undefined>;
22
22
  readonly optionLabels: v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>;
23
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
23
24
  }, undefined>, v.ReadonlyAction<{
24
25
  type: "select";
25
26
  readonly options: readonly [string, ...string[]];
@@ -28,6 +29,7 @@ export declare const entitiesMap: {
28
29
  optionLabels: {
29
30
  [x: string]: string;
30
31
  };
32
+ tags?: readonly string[] | undefined;
31
33
  }>]>;
32
34
  };
33
35
  readonly toggle: {
@@ -37,11 +39,13 @@ export declare const entitiesMap: {
37
39
  readonly valueType: v.PicklistSchema<["string", "boolean", "number"], undefined>;
38
40
  readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
39
41
  readonly isOptional: v.BooleanSchema<undefined>;
42
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
40
43
  }, undefined>, v.ReadonlyAction<{
41
44
  type: "toggle";
42
45
  valueType: "string" | "number" | "boolean";
43
46
  defaultValue: string | number | boolean | null;
44
47
  isOptional: boolean;
48
+ tags?: readonly string[] | undefined;
45
49
  }>]>;
46
50
  };
47
51
  readonly uiPage: {
@@ -169,6 +173,7 @@ export declare const entitiesMap: {
169
173
  }>]>, v.UnknownSchema], undefined>, undefined>, v.ReadonlyAction<{
170
174
  [x: string]: unknown;
171
175
  }>]>], undefined>, undefined>;
176
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
172
177
  }, undefined>, v.ReadonlyAction<{
173
178
  type: "input";
174
179
  path: readonly (string | number)[] | Readonly<{
@@ -205,6 +210,7 @@ export declare const entitiesMap: {
205
210
  }> | Readonly<{
206
211
  [x: string]: unknown;
207
212
  }> | undefined;
213
+ tags?: readonly string[] | undefined;
208
214
  }>]>], undefined>, undefined>, v.ReadonlyAction<(Readonly<{
209
215
  type: "parameter";
210
216
  id: string;
@@ -248,7 +254,9 @@ export declare const entitiesMap: {
248
254
  }> | Readonly<{
249
255
  [x: string]: unknown;
250
256
  }> | undefined;
257
+ tags?: readonly string[] | undefined;
251
258
  }>)[]>]>], undefined>;
259
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
252
260
  }, undefined>, v.ReadonlyAction<{
253
261
  type: "page";
254
262
  label: string | Readonly<{
@@ -309,7 +317,9 @@ export declare const entitiesMap: {
309
317
  }> | Readonly<{
310
318
  [x: string]: unknown;
311
319
  }> | undefined;
320
+ tags?: readonly string[] | undefined;
312
321
  }>)[];
322
+ tags?: readonly string[] | undefined;
313
323
  }>]>;
314
324
  };
315
325
  readonly uiDescribe: {
@@ -437,6 +447,7 @@ export declare const entitiesMap: {
437
447
  }>]>, v.UnknownSchema], undefined>, undefined>, v.ReadonlyAction<{
438
448
  [x: string]: unknown;
439
449
  }>]>], undefined>, undefined>;
450
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
440
451
  }, undefined>, v.ReadonlyAction<{
441
452
  type: "input";
442
453
  path: readonly (string | number)[] | Readonly<{
@@ -473,6 +484,7 @@ export declare const entitiesMap: {
473
484
  }> | Readonly<{
474
485
  [x: string]: unknown;
475
486
  }> | undefined;
487
+ tags?: readonly string[] | undefined;
476
488
  }>]>], undefined>, undefined>, v.ReadonlyAction<(Readonly<{
477
489
  type: "parameter";
478
490
  id: string;
@@ -516,7 +528,9 @@ export declare const entitiesMap: {
516
528
  }> | Readonly<{
517
529
  [x: string]: unknown;
518
530
  }> | undefined;
531
+ tags?: readonly string[] | undefined;
519
532
  }>)[]>]>], undefined>;
533
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
520
534
  }, undefined>, v.ReadonlyAction<{
521
535
  type: "describe";
522
536
  label: string | Readonly<{
@@ -577,7 +591,9 @@ export declare const entitiesMap: {
577
591
  }> | Readonly<{
578
592
  [x: string]: unknown;
579
593
  }> | undefined;
594
+ tags?: readonly string[] | undefined;
580
595
  }>)[];
596
+ tags?: readonly string[] | undefined;
581
597
  }>]>;
582
598
  };
583
599
  readonly uiPages: {
@@ -664,6 +680,7 @@ export declare const entitiesMap: {
664
680
  }>]>, v.UnknownSchema], undefined>, undefined>, v.ReadonlyAction<{
665
681
  [x: string]: unknown;
666
682
  }>]>], undefined>, undefined>;
683
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
667
684
  }, undefined>, v.ReadonlyAction<{
668
685
  type: "input";
669
686
  path: readonly (string | number)[] | Readonly<{
@@ -700,6 +717,39 @@ export declare const entitiesMap: {
700
717
  }> | Readonly<{
701
718
  [x: string]: unknown;
702
719
  }> | undefined;
720
+ tags?: readonly string[] | undefined;
721
+ }>]>;
722
+ };
723
+ readonly pricing: {
724
+ readonly runtime: v.SchemaWithPipe<readonly [v.ObjectSchema<{
725
+ readonly rates: v.SchemaWithPipe<readonly [v.RecordSchema<v.StringSchema<undefined>, v.RecordSchema<v.StringSchema<undefined>, v.NumberSchema<undefined>, undefined>, undefined>, v.ReadonlyAction<{
726
+ [x: string]: {
727
+ [x: string]: number;
728
+ };
729
+ }>]>;
730
+ readonly formula: v.GenericSchema<import("./pricing.js").BuilderPricingExpression>;
731
+ }, undefined>, v.ReadonlyAction<{
732
+ readonly rates: Readonly<{
733
+ [x: string]: {
734
+ [x: string]: number;
735
+ };
736
+ }>;
737
+ formula: import("./pricing.js").BuilderPricingExpression;
738
+ }>]>;
739
+ readonly serialised: v.SchemaWithPipe<readonly [v.ObjectSchema<{
740
+ readonly rates: v.SchemaWithPipe<readonly [v.RecordSchema<v.StringSchema<undefined>, v.RecordSchema<v.StringSchema<undefined>, v.NumberSchema<undefined>, undefined>, undefined>, v.ReadonlyAction<{
741
+ [x: string]: {
742
+ [x: string]: number;
743
+ };
744
+ }>]>;
745
+ readonly formula: v.GenericSchema<import("./pricing.js").BuilderPricingExpression>;
746
+ }, undefined>, v.ReadonlyAction<{
747
+ readonly rates: Readonly<{
748
+ [x: string]: {
749
+ [x: string]: number;
750
+ };
751
+ }>;
752
+ formula: import("./pricing.js").BuilderPricingExpression;
703
753
  }>]>;
704
754
  };
705
755
  readonly componentDetails: {
@@ -724,17 +774,21 @@ export declare const entitiesMap: {
724
774
  readonly name: v.StringSchema<undefined>;
725
775
  readonly valueType: v.PicklistSchema<["string", "boolean", "number"], undefined>;
726
776
  readonly isOptional: v.BooleanSchema<undefined>;
777
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
727
778
  }, undefined>, v.ReadonlyAction<{
728
779
  type: "component-field";
729
780
  name: string;
730
781
  valueType: "string" | "number" | "boolean";
731
782
  isOptional: boolean;
783
+ tags?: readonly string[] | undefined;
732
784
  }>]>, undefined>, v.ReadonlyAction<Readonly<{
733
785
  type: "component-field";
734
786
  name: string;
735
787
  valueType: "string" | "number" | "boolean";
736
788
  isOptional: boolean;
789
+ tags?: readonly string[] | undefined;
737
790
  }>[]>]>], undefined>;
791
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
738
792
  }, undefined>, v.ReadonlyAction<{
739
793
  fields: Readonly<{
740
794
  type: "parameter";
@@ -748,7 +802,9 @@ export declare const entitiesMap: {
748
802
  name: string;
749
803
  valueType: "string" | "number" | "boolean";
750
804
  isOptional: boolean;
805
+ tags?: readonly string[] | undefined;
751
806
  }>[];
807
+ tags?: readonly string[] | undefined;
752
808
  }>]>;
753
809
  };
754
810
  readonly collectionConfig: {
@@ -799,6 +855,7 @@ export declare const entitiesMap: {
799
855
  type: "ref";
800
856
  id: string;
801
857
  }>]>, v.NumberSchema<undefined>], undefined>;
858
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
802
859
  }, undefined>, v.ReadonlyAction<{
803
860
  model: Readonly<{
804
861
  type: "parameter";
@@ -824,6 +881,7 @@ export declare const entitiesMap: {
824
881
  type: "ref";
825
882
  id: string;
826
883
  }>;
884
+ tags?: readonly string[] | undefined;
827
885
  }>]>;
828
886
  };
829
887
  readonly expectations: {
@@ -894,11 +952,13 @@ export declare const entitiesMap: {
894
952
  optionLabels: {
895
953
  [x: string]: string;
896
954
  };
955
+ tags?: readonly string[] | undefined;
897
956
  }>> | Readonly<Readonly<{
898
957
  type: "toggle";
899
958
  valueType: "string" | "number" | "boolean";
900
959
  defaultValue: string | number | boolean | null;
901
960
  isOptional: boolean;
961
+ tags?: readonly string[] | undefined;
902
962
  }>>>>;
903
963
  readonly serialised: v.GenericSchema<import("./when.js").BuilderWhenSerialised<Readonly<Readonly<{
904
964
  type: "select";
@@ -908,11 +968,13 @@ export declare const entitiesMap: {
908
968
  optionLabels: {
909
969
  [x: string]: string;
910
970
  };
971
+ tags?: readonly string[] | undefined;
911
972
  }>> | Readonly<Readonly<{
912
973
  type: "toggle";
913
974
  valueType: "string" | "number" | "boolean";
914
975
  defaultValue: string | number | boolean | null;
915
976
  isOptional: boolean;
977
+ tags?: readonly string[] | undefined;
916
978
  }>>>>;
917
979
  };
918
980
  readonly componentWhen: {
@@ -929,7 +991,9 @@ export declare const entitiesMap: {
929
991
  name: string;
930
992
  valueType: "string" | "number" | "boolean";
931
993
  isOptional: boolean;
994
+ tags?: readonly string[] | undefined;
932
995
  }>[];
996
+ tags?: readonly string[] | undefined;
933
997
  }>>>;
934
998
  readonly serialised: v.GenericSchema<import("./when.js").BuilderWhenSerialised<Readonly<{
935
999
  fields: Readonly<{
@@ -944,7 +1008,9 @@ export declare const entitiesMap: {
944
1008
  name: string;
945
1009
  valueType: "string" | "number" | "boolean";
946
1010
  isOptional: boolean;
1011
+ tags?: readonly string[] | undefined;
947
1012
  }>[];
1013
+ tags?: readonly string[] | undefined;
948
1014
  }>>>;
949
1015
  };
950
1016
  readonly collectionWhen: {
@@ -973,6 +1039,7 @@ export declare const entitiesMap: {
973
1039
  type: "ref";
974
1040
  id: string;
975
1041
  }>;
1042
+ tags?: readonly string[] | undefined;
976
1043
  }>>>;
977
1044
  readonly serialised: v.GenericSchema<import("./when.js").BuilderWhenSerialised<Readonly<{
978
1045
  model: Readonly<{
@@ -999,6 +1066,7 @@ export declare const entitiesMap: {
999
1066
  type: "ref";
1000
1067
  id: string;
1001
1068
  }>;
1069
+ tags?: readonly string[] | undefined;
1002
1070
  }>>>;
1003
1071
  };
1004
1072
  readonly optionSelectMap: {
@@ -1014,11 +1082,13 @@ export declare const entitiesMap: {
1014
1082
  optionLabels: {
1015
1083
  [x: string]: string;
1016
1084
  };
1085
+ tags?: readonly string[] | undefined;
1017
1086
  }>> | Readonly<Readonly<{
1018
1087
  type: "toggle";
1019
1088
  valueType: "string" | "number" | "boolean";
1020
1089
  defaultValue: string | number | boolean | null;
1021
1090
  isOptional: boolean;
1091
+ tags?: readonly string[] | undefined;
1022
1092
  }>>>>;
1023
1093
  readonly serialised: v.GenericSchema<import("./when.js").BuilderMatchSelectMap<Readonly<{
1024
1094
  type: "parameter";
@@ -1032,11 +1102,13 @@ export declare const entitiesMap: {
1032
1102
  optionLabels: {
1033
1103
  [x: string]: string;
1034
1104
  };
1105
+ tags?: readonly string[] | undefined;
1035
1106
  }>> | Readonly<Readonly<{
1036
1107
  type: "toggle";
1037
1108
  valueType: "string" | "number" | "boolean";
1038
1109
  defaultValue: string | number | boolean | null;
1039
1110
  isOptional: boolean;
1111
+ tags?: readonly string[] | undefined;
1040
1112
  }>>>>;
1041
1113
  };
1042
1114
  readonly componentSelectMap: {
@@ -1057,7 +1129,9 @@ export declare const entitiesMap: {
1057
1129
  name: string;
1058
1130
  valueType: "string" | "number" | "boolean";
1059
1131
  isOptional: boolean;
1132
+ tags?: readonly string[] | undefined;
1060
1133
  }>[];
1134
+ tags?: readonly string[] | undefined;
1061
1135
  }>>>;
1062
1136
  readonly serialised: v.GenericSchema<import("./when.js").BuilderMatchSelectMap<Readonly<{
1063
1137
  type: "parameter";
@@ -1076,7 +1150,9 @@ export declare const entitiesMap: {
1076
1150
  name: string;
1077
1151
  valueType: "string" | "number" | "boolean";
1078
1152
  isOptional: boolean;
1153
+ tags?: readonly string[] | undefined;
1079
1154
  }>[];
1155
+ tags?: readonly string[] | undefined;
1080
1156
  }>>>;
1081
1157
  };
1082
1158
  readonly collectionSelectMap: {
@@ -1109,6 +1185,7 @@ export declare const entitiesMap: {
1109
1185
  type: "ref";
1110
1186
  id: string;
1111
1187
  }>;
1188
+ tags?: readonly string[] | undefined;
1112
1189
  }>>>;
1113
1190
  readonly serialised: v.GenericSchema<import("./when.js").BuilderMatchSelectMap<Readonly<{
1114
1191
  type: "parameter";
@@ -1139,6 +1216,7 @@ export declare const entitiesMap: {
1139
1216
  type: "ref";
1140
1217
  id: string;
1141
1218
  }>;
1219
+ tags?: readonly string[] | undefined;
1142
1220
  }>>>;
1143
1221
  };
1144
1222
  readonly paths: {
@@ -6,6 +6,7 @@ import { BuilderCollectionConfigSchema, BuilderCollectionConfigSerialisedSchema,
6
6
  import { BuilderComponentDetailsSchema, BuilderComponentDetailsSerialisedSchema, BuilderComponentFieldSchema, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentWhenSerialisedSchema } from './component/index.js';
7
7
  import { BuilderExpectationSchema, BuilderExpectationsSchema, BuilderExpectationsSerialisedSchema } from './expectation.js';
8
8
  import { BuilderModelSchema, BuilderModelSerialisedSchema } from './model/index.js';
9
+ import { BuilderPricingSchema } from './pricing.js';
9
10
  import { BuilderOptionSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionWhenSerialisedSchema, BuilderSelectTypeSchema, BuilderSelectTypeSerialisedSchema, BuilderToggleTypeSchema, BuilderToggleTypeSerialisedSchema } from './option/index.js';
10
11
  import { BuilderUIDescribeSchema, BuilderUIDescribeSerialisedSchema, BuilderUIInputSchema, BuilderUIInputSerialisedSchema, BuilderUIItemsSerialisedSchema, BuilderUIPageSchema, BuilderUIPageSerialisedSchema, BuilderUIPagesSchema, BuilderUIPagesSerialisedSchema, BuilderUISchema, BuilderUISerialisedSchema } from './ui/index.js';
11
12
  import { BuilderSchema, BuilderSerialisedSchema } from './builder/index.js';
@@ -19,6 +20,7 @@ export const entitiesMap = {
19
20
  uiDescribe: { runtime: BuilderUIDescribeSchema, serialised: BuilderUIDescribeSerialisedSchema },
20
21
  uiPages: { runtime: BuilderUIPagesSchema, serialised: BuilderUIPagesSerialisedSchema },
21
22
  uiInput: { runtime: BuilderUIInputSchema, serialised: BuilderUIInputSerialisedSchema },
23
+ pricing: { runtime: BuilderPricingSchema, serialised: BuilderPricingSchema },
22
24
  componentDetails: {
23
25
  runtime: BuilderComponentDetailsSchema,
24
26
  serialised: BuilderComponentDetailsSerialisedSchema
@@ -93,64 +95,78 @@ const serialiserMap = [
93
95
  serialiser(BuilderSchema, (value) => ({
94
96
  model: serialiseValue(value.model),
95
97
  ui: serialiseValue(value.ui),
96
- bindings: serialiseRecord(value.bindings)
98
+ bindings: serialiseRecord(value.bindings),
99
+ tags: value.tags,
100
+ pricing: value.pricing
97
101
  })),
98
102
  serialiser(BuilderModelSchema, (value) => ({
99
103
  models: value.models.map(serialiseValue),
100
104
  options: value.options.map(serialiseValue),
101
105
  components: value.components.map(serialiseValue),
102
106
  collections: value.collections.map(serialiseValue),
103
- expectations: value.expectations.map(serialiseValue)
107
+ expectations: value.expectations.map(serialiseValue),
108
+ tags: value.tags
104
109
  })),
105
110
  serialiser(BuilderUISchema, (value) => ({
106
111
  uis: value.uis.map(serialiseValue),
107
112
  items: value.items.map(serialiseValue),
108
- expectations: value.expectations.map(serialiseValue)
113
+ expectations: value.expectations.map(serialiseValue),
114
+ tags: value.tags
109
115
  })),
110
116
  serialiser(BuilderUIPageSchema, (value) => ({
111
117
  type: 'page',
112
118
  label: serialiseValue(value.label),
113
- inputs: serialiseValue(value.inputs)
119
+ inputs: serialiseValue(value.inputs),
120
+ tags: value.tags
114
121
  })),
115
122
  serialiser(BuilderUIDescribeSchema, (value) => ({
116
123
  type: 'describe',
117
124
  label: serialiseValue(value.label),
118
- inputs: serialiseValue(value.inputs)
125
+ inputs: serialiseValue(value.inputs),
126
+ tags: value.tags
119
127
  })),
120
128
  serialiser(BuilderUIPagesSchema, (value) => ({
121
129
  type: 'pages',
122
130
  name: value.name,
123
131
  label: serialiseValue(value.label),
124
- items: serialiseValue(value.items)
132
+ items: serialiseValue(value.items),
133
+ tags: value.tags
125
134
  })),
126
135
  serialiser(BuilderUIInputSchema, (value) => serialiseRecord({ ...value })),
127
136
  serialiser(BuilderOptionSchema, serialiseNamedEntry),
128
137
  serialiser(BuilderComponentSchema, serialiseNamedEntry),
129
138
  serialiser(BuilderCollectionSchema, serialiseNamedEntry),
130
- serialiser(BuilderComponentDetailsSchema, (value) => ({ fields: serialiseValue(value.fields) })),
139
+ serialiser(BuilderComponentDetailsSchema, (value) => ({
140
+ fields: serialiseValue(value.fields),
141
+ tags: value.tags
142
+ })),
131
143
  serialiser(BuilderComponentFieldSchema, (value) => ({
132
144
  type: 'component-field',
133
145
  name: value.name,
134
146
  valueType: value.valueType,
135
- isOptional: value.isOptional
147
+ isOptional: value.isOptional,
148
+ tags: value.tags
136
149
  })),
137
150
  serialiser(BuilderCollectionConfigSchema, (value) => ({
138
151
  model: serialiseValue(value.model),
139
152
  min: serialiseValue(value.min),
140
- max: serialiseValue(value.max)
153
+ max: serialiseValue(value.max),
154
+ tags: value.tags
141
155
  })),
142
156
  serialiser(BuilderSelectTypeSchema, (value) => ({
143
157
  type: 'select',
144
158
  options: value.options,
145
159
  defaultValue: value.defaultValue,
146
160
  isOptional: value.isOptional,
147
- optionLabels: value.optionLabels
161
+ optionLabels: value.optionLabels,
162
+ tags: value.tags
148
163
  })),
149
164
  serialiser(BuilderToggleTypeSchema, (value) => ({
150
165
  type: 'toggle',
151
166
  valueType: value.valueType,
152
167
  defaultValue: value.defaultValue,
153
- isOptional: value.isOptional
168
+ isOptional: value.isOptional,
169
+ tags: value.tags
154
170
  })),
155
171
  serialiser(BuilderExpectationSchema, (value) => ({ name: value.name, kind: value.kind }))
156
172
  ];
@@ -162,6 +178,9 @@ function serialiseNamedEntry(value) {
162
178
  if (value.paths != null) {
163
179
  entry.paths = serialiseValue(value.paths);
164
180
  }
181
+ if (value.tags != null) {
182
+ entry.tags = serialiseValue(value.tags);
183
+ }
165
184
  return entry;
166
185
  }
167
186
  function serialiseRecord(record) {