@builder-builder/builder 0.0.28 → 0.0.29

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 (77) hide show
  1. package/dist/bb.js +5 -6
  2. package/dist/client/schema.d.ts +49 -29
  3. package/dist/components/BuilderOption.svelte.d.ts +12 -12
  4. package/dist/components/BuilderOptionValueBoolean.svelte.d.ts +20 -0
  5. package/dist/components/BuilderOptionValueNumber.svelte.d.ts +21 -0
  6. package/dist/components/BuilderOptionValueSelect.svelte.d.ts +21 -0
  7. package/dist/components/BuilderOptionValueString.svelte.d.ts +21 -0
  8. package/dist/components/index.d.ts +8 -8
  9. package/dist/components/index.js +2479 -2435
  10. package/dist/components/index.min.js +3 -3
  11. package/dist/entities/collection/collection.d.ts +162 -372
  12. package/dist/entities/collection/collection.js +7 -4
  13. package/dist/entities/collection/{when.d.ts → condition.d.ts} +3 -4
  14. package/dist/entities/collection/condition.js +2 -0
  15. package/dist/entities/collection/config.d.ts +52 -70
  16. package/dist/entities/collection/index.d.ts +4 -4
  17. package/dist/entities/collection/index.js +2 -2
  18. package/dist/entities/component/component.d.ts +11 -23
  19. package/dist/entities/component/component.js +4 -4
  20. package/dist/entities/component/{when.d.ts → condition.d.ts} +3 -4
  21. package/dist/entities/component/{when.js → condition.js} +3 -9
  22. package/dist/entities/component/index.d.ts +4 -4
  23. package/dist/entities/component/index.js +2 -2
  24. package/dist/entities/{when.d.ts → condition.d.ts} +21 -34
  25. package/dist/entities/{when.js → condition.js} +20 -25
  26. package/dist/entities/expectation.d.ts +135 -3
  27. package/dist/entities/expectation.js +6 -2
  28. package/dist/entities/index.d.ts +8 -8
  29. package/dist/entities/index.js +4 -4
  30. package/dist/entities/kind.d.ts +1 -1
  31. package/dist/entities/kind.js +4 -5
  32. package/dist/entities/model/bind.d.ts +5 -5
  33. package/dist/entities/model/methods.d.ts +18 -27
  34. package/dist/entities/model/methods.js +4 -22
  35. package/dist/entities/model/model.d.ts +3 -1
  36. package/dist/entities/model/model.js +25 -27
  37. package/dist/entities/option/condition.d.ts +9 -0
  38. package/dist/entities/option/condition.js +2 -0
  39. package/dist/entities/option/config.d.ts +44 -69
  40. package/dist/entities/option/config.js +6 -6
  41. package/dist/entities/option/expectation.d.ts +6 -1
  42. package/dist/entities/option/expectation.js +2 -2
  43. package/dist/entities/option/index.d.ts +8 -8
  44. package/dist/entities/option/index.js +4 -4
  45. package/dist/entities/option/option.d.ts +171 -202
  46. package/dist/entities/option/option.js +4 -4
  47. package/dist/entities/option/select.d.ts +16 -43
  48. package/dist/entities/option/select.js +8 -31
  49. package/dist/entities/option/value.d.ts +73 -0
  50. package/dist/entities/option/value.js +99 -0
  51. package/dist/entities/references.d.ts +104 -64
  52. package/dist/entities/serialise.d.ts +147 -80
  53. package/dist/entities/serialise.js +26 -21
  54. package/dist/entities/ui/input.d.ts +1 -1
  55. package/dist/entities/validated.d.ts +1 -1
  56. package/dist/errors/errors.d.ts +8 -3
  57. package/dist/errors/errors.js +5 -2
  58. package/dist/index.d.ts +1 -1
  59. package/dist/index.js +1 -1
  60. package/dist/mappers/dependencies.js +4 -3
  61. package/dist/mappers/resolve.js +23 -22
  62. package/dist/mappers/variants/option-graph.js +1 -1
  63. package/dist/public.d.ts +17 -17
  64. package/dist/public.js +17 -9
  65. package/dist/validate/expectations.js +21 -3
  66. package/dist/validate/model.js +8 -11
  67. package/dist/validate/resolve.js +14 -18
  68. package/package.json +1 -1
  69. package/dist/components/BuilderOptionSelect.svelte.d.ts +0 -21
  70. package/dist/components/BuilderOptionToggleBoolean.svelte.d.ts +0 -20
  71. package/dist/components/BuilderOptionToggleNumber.svelte.d.ts +0 -21
  72. package/dist/components/BuilderOptionToggleString.svelte.d.ts +0 -21
  73. package/dist/entities/collection/when.js +0 -2
  74. package/dist/entities/option/toggle.d.ts +0 -45
  75. package/dist/entities/option/toggle.js +0 -71
  76. package/dist/entities/option/when.d.ts +0 -10
  77. package/dist/entities/option/when.js +0 -2
@@ -3,64 +3,59 @@ import { check } from '../errors/index.js';
3
3
  import { BuilderPrimitivesSchema, StringSchema } from '../primitive.js';
4
4
  import { isParamable, paramable } from '../references.js';
5
5
  import { BuilderPathSchema } from './paths.js';
6
- export const BuilderWhenEnableSchema = v.object({
7
- type: v.literal('enable')
8
- });
9
- export const BuilderWhenMatchSchema = v.object({
6
+ export function match(matchPath, selectMap) {
7
+ return { type: 'match', matchPath, selectMap };
8
+ }
9
+ export function unless(unlessPath, disabledValues, values) {
10
+ return { type: 'unless', unlessPath, disabledValues, payload: values };
11
+ }
12
+ export const BuilderConditionMatchSchema = v.object({
10
13
  type: v.literal('match'),
11
14
  matchPath: paramable(BuilderPathSchema)
12
15
  });
13
- export const BuilderWhenUnlessSchema = v.object({
16
+ export const BuilderConditionUnlessSchema = v.object({
14
17
  type: v.literal('unless'),
15
18
  unlessPath: paramable(BuilderPathSchema)
16
19
  });
17
- export const BuilderWhenConfigSchema = v.pipe(v.variant('type', [BuilderWhenEnableSchema, BuilderWhenMatchSchema, BuilderWhenUnlessSchema]), v.readonly());
18
- export const BuilderWhenSerialisedSchema = createWhenSerialisedSchema(v.unknown());
19
- export function whenBranches(payload, schema) {
20
+ export const BuilderConditionConfigSchema = v.pipe(v.variant('type', [BuilderConditionMatchSchema, BuilderConditionUnlessSchema]), v.readonly());
21
+ export const BuilderConditionSerialisedSchema = createConditionSerialisedSchema(v.unknown());
22
+ export function conditionBranches(payload, schema) {
20
23
  if (check.is(schema, payload)) {
21
24
  return [payload];
22
25
  }
23
26
  if (isParamable(payload)) {
24
27
  return [];
25
28
  }
26
- check.assert(BuilderWhenSerialisedSchema, payload);
27
- const when = payload;
28
- switch (when.type) {
29
- case 'enable':
29
+ check.assert(BuilderConditionSerialisedSchema, payload);
30
+ const condition = payload;
31
+ switch (condition.type) {
30
32
  case 'unless': {
31
- return [when.payload];
33
+ return [condition.payload];
32
34
  }
33
35
  case 'match': {
34
- return Object.values(when.selectMap).filter((branch) => branch != null);
36
+ return Object.values(condition.selectMap).filter((branch) => branch != null);
35
37
  }
36
38
  }
37
39
  }
38
40
  export function createSelectMapSerialisedSchema(payloadSchema) {
39
41
  return v.pipe(v.record(StringSchema, v.nullable(paramable(payloadSchema))), v.readonly());
40
42
  }
41
- export function createWhenSerialisedSchema(payloadSchema) {
43
+ export function createConditionSerialisedSchema(payloadSchema) {
42
44
  const paramablePayload = paramable(payloadSchema);
43
45
  return v.pipe(v.variant('type', [
44
46
  v.object({
45
- ...BuilderWhenEnableSchema.entries,
46
- payload: paramablePayload
47
- }),
48
- v.object({
49
- ...BuilderWhenMatchSchema.entries,
47
+ ...BuilderConditionMatchSchema.entries,
50
48
  selectMap: paramable(createSelectMapSerialisedSchema(payloadSchema))
51
49
  }),
52
50
  v.object({
53
- ...BuilderWhenUnlessSchema.entries,
51
+ ...BuilderConditionUnlessSchema.entries,
54
52
  disabledValues: BuilderPrimitivesSchema,
55
53
  payload: paramablePayload
56
54
  })
57
55
  ]), v.readonly());
58
56
  }
59
- export function createWhenFactories() {
57
+ export function createConditionFactories() {
60
58
  return {
61
- enable: (values) => {
62
- return { type: 'enable', payload: values };
63
- },
64
59
  match: (matchPath, selectMap) => {
65
60
  return { type: 'match', matchPath, selectMap };
66
61
  },
@@ -1,3 +1,4 @@
1
+ import type { BuilderOptionConfig } from './option/index';
1
2
  import * as v from 'valibot';
2
3
  export declare const BuilderExpectationKindSchema: v.PicklistSchema<["option", "component", "collection"], undefined>;
3
4
  export type BuilderExpectationKind = v.InferOutput<typeof BuilderExpectationKindSchema>;
@@ -6,7 +7,8 @@ export declare class BuilderExpectation<Name extends string = string, Value = un
6
7
  readonly value: Value;
7
8
  readonly name: Name;
8
9
  readonly kind: Kind;
9
- constructor(name: Name, kind: Kind);
10
+ readonly payload: BuilderOptionConfig | null;
11
+ constructor(name: Name, kind: Kind, payload?: BuilderOptionConfig | null);
10
12
  }
11
13
  export declare const BuilderExpectationSchema: v.InstanceSchema<typeof BuilderExpectation, undefined>;
12
14
  export declare const BuilderExpectationsSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.InstanceSchema<typeof BuilderExpectation, undefined>, undefined>, v.ReadonlyAction<BuilderExpectation<string, unknown, "option" | "component" | "collection">[]>]>;
@@ -14,23 +16,153 @@ export type BuilderExpectations = v.InferOutput<typeof BuilderExpectationsSchema
14
16
  export declare const BuilderExpectationSerialisedSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
15
17
  readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
16
18
  readonly kind: v.PicklistSchema<["option", "component", "collection"], undefined>;
19
+ readonly payload: v.OptionalSchema<v.LazySchema<v.SchemaWithPipe<readonly [v.VariantSchema<"kind", [v.StrictObjectSchema<{
20
+ readonly kind: v.PicklistSchema<["string", "boolean", "number"], undefined>;
21
+ readonly type: v.LiteralSchema<"value", undefined>;
22
+ readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
23
+ readonly isOptional: v.BooleanSchema<undefined>;
24
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
25
+ }, undefined>, v.StrictObjectSchema<{
26
+ readonly kind: v.LiteralSchema<"select", undefined>;
27
+ readonly options: v.SchemaWithPipe<readonly [v.TupleWithRestSchema<[v.StringSchema<undefined>], v.StringSchema<undefined>, undefined>, v.ReadonlyAction<[string, ...string[]]>]>;
28
+ readonly optionLabels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
29
+ readonly type: v.LiteralSchema<"value", undefined>;
30
+ readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
31
+ readonly isOptional: v.BooleanSchema<undefined>;
32
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
33
+ }, undefined>], undefined>, v.ReadonlyAction<{
34
+ kind: "string" | "number" | "boolean";
35
+ type: "value";
36
+ defaultValue: string | number | boolean | null;
37
+ isOptional: boolean;
38
+ tags?: readonly string[] | undefined;
39
+ } | {
40
+ kind: "select";
41
+ readonly options: readonly [string, ...string[]];
42
+ optionLabels?: {
43
+ [x: string]: string;
44
+ } | undefined;
45
+ type: "value";
46
+ defaultValue: string | number | boolean | null;
47
+ isOptional: boolean;
48
+ tags?: readonly string[] | undefined;
49
+ }>]>>, undefined>;
17
50
  }, undefined>, v.ReadonlyAction<{
18
51
  name: string;
19
52
  kind: "option" | "component" | "collection";
53
+ payload?: Readonly<{
54
+ kind: "string" | "number" | "boolean";
55
+ type: "value";
56
+ defaultValue: string | number | boolean | null;
57
+ isOptional: boolean;
58
+ tags?: readonly string[] | undefined;
59
+ }> | Readonly<{
60
+ kind: "select";
61
+ readonly options: readonly [string, ...string[]];
62
+ optionLabels?: {
63
+ [x: string]: string;
64
+ } | undefined;
65
+ type: "value";
66
+ defaultValue: string | number | boolean | null;
67
+ isOptional: boolean;
68
+ tags?: readonly string[] | undefined;
69
+ }> | undefined;
20
70
  }>]>;
21
71
  export type BuilderExpectationSerialised = v.InferOutput<typeof BuilderExpectationSerialisedSchema>;
22
72
  export declare const BuilderExpectationsSerialisedSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
23
73
  readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
24
74
  readonly kind: v.PicklistSchema<["option", "component", "collection"], undefined>;
75
+ readonly payload: v.OptionalSchema<v.LazySchema<v.SchemaWithPipe<readonly [v.VariantSchema<"kind", [v.StrictObjectSchema<{
76
+ readonly kind: v.PicklistSchema<["string", "boolean", "number"], undefined>;
77
+ readonly type: v.LiteralSchema<"value", undefined>;
78
+ readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
79
+ readonly isOptional: v.BooleanSchema<undefined>;
80
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
81
+ }, undefined>, v.StrictObjectSchema<{
82
+ readonly kind: v.LiteralSchema<"select", undefined>;
83
+ readonly options: v.SchemaWithPipe<readonly [v.TupleWithRestSchema<[v.StringSchema<undefined>], v.StringSchema<undefined>, undefined>, v.ReadonlyAction<[string, ...string[]]>]>;
84
+ readonly optionLabels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
85
+ readonly type: v.LiteralSchema<"value", undefined>;
86
+ readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
87
+ readonly isOptional: v.BooleanSchema<undefined>;
88
+ readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
89
+ }, undefined>], undefined>, v.ReadonlyAction<{
90
+ kind: "string" | "number" | "boolean";
91
+ type: "value";
92
+ defaultValue: string | number | boolean | null;
93
+ isOptional: boolean;
94
+ tags?: readonly string[] | undefined;
95
+ } | {
96
+ kind: "select";
97
+ readonly options: readonly [string, ...string[]];
98
+ optionLabels?: {
99
+ [x: string]: string;
100
+ } | undefined;
101
+ type: "value";
102
+ defaultValue: string | number | boolean | null;
103
+ isOptional: boolean;
104
+ tags?: readonly string[] | undefined;
105
+ }>]>>, undefined>;
25
106
  }, undefined>, v.ReadonlyAction<{
26
107
  name: string;
27
108
  kind: "option" | "component" | "collection";
109
+ payload?: Readonly<{
110
+ kind: "string" | "number" | "boolean";
111
+ type: "value";
112
+ defaultValue: string | number | boolean | null;
113
+ isOptional: boolean;
114
+ tags?: readonly string[] | undefined;
115
+ }> | Readonly<{
116
+ kind: "select";
117
+ readonly options: readonly [string, ...string[]];
118
+ optionLabels?: {
119
+ [x: string]: string;
120
+ } | undefined;
121
+ type: "value";
122
+ defaultValue: string | number | boolean | null;
123
+ isOptional: boolean;
124
+ tags?: readonly string[] | undefined;
125
+ }> | undefined;
28
126
  }>]>, undefined>, v.ReadonlyAction<Readonly<{
29
127
  name: string;
30
128
  kind: "option" | "component" | "collection";
129
+ payload?: Readonly<{
130
+ kind: "string" | "number" | "boolean";
131
+ type: "value";
132
+ defaultValue: string | number | boolean | null;
133
+ isOptional: boolean;
134
+ tags?: readonly string[] | undefined;
135
+ }> | Readonly<{
136
+ kind: "select";
137
+ readonly options: readonly [string, ...string[]];
138
+ optionLabels?: {
139
+ [x: string]: string;
140
+ } | undefined;
141
+ type: "value";
142
+ defaultValue: string | number | boolean | null;
143
+ isOptional: boolean;
144
+ tags?: readonly string[] | undefined;
145
+ }> | undefined;
31
146
  }>[]>]>;
32
147
  export type BuilderExpectationsSerialised = v.InferOutput<typeof BuilderExpectationsSerialisedSchema>;
33
- export declare const validateExpectations: (input: unknown, references?: import("./references.js").BuilderReferences, issues?: import("../errors/errors.js").BuilderIssuesScope) => import("./validated.js").ValidationResult<readonly ({
148
+ export declare const validateExpectations: (input: unknown, references?: import("./references").BuilderReferences, issues?: import("../errors").BuilderIssuesScope) => import("./validated").ValidationResult<readonly {
34
149
  readonly name: string;
35
150
  readonly kind: "option" | "component" | "collection";
36
- } & import("../validate/brand.js").BuilderValidatedBrand)[]>;
151
+ readonly payload?: {
152
+ readonly kind: "string" | "number" | "boolean";
153
+ readonly type: "value";
154
+ readonly defaultValue: string | number | boolean | null;
155
+ readonly isOptional: boolean;
156
+ readonly tags?: readonly string[] | undefined;
157
+ } | {
158
+ readonly kind: "select";
159
+ readonly options: readonly [string, ...string[]];
160
+ readonly optionLabels?: ({
161
+ readonly [x: string]: string;
162
+ } & import("../validate").BuilderValidatedBrand) | undefined;
163
+ readonly type: "value";
164
+ readonly defaultValue: string | number | boolean | null;
165
+ readonly isOptional: boolean;
166
+ readonly tags?: readonly string[] | undefined;
167
+ } | undefined;
168
+ }[]>;
@@ -1,21 +1,25 @@
1
1
  import * as v from 'valibot';
2
2
  import { NameSchema } from '../primitive.js';
3
3
  import { createEntityValidator } from './kind.js';
4
+ import { BuilderOptionConfigSerialisedSchema } from './option/index.js';
4
5
  import { serialisable } from './serialisable.js';
5
6
  export const BuilderExpectationKindSchema = v.picklist(['option', 'component', 'collection']);
6
7
  export class BuilderExpectation {
7
8
  name;
8
9
  kind;
9
- constructor(name, kind) {
10
+ payload;
11
+ constructor(name, kind, payload = null) {
10
12
  this.name = name;
11
13
  this.kind = kind;
14
+ this.payload = payload;
12
15
  }
13
16
  }
14
17
  export const BuilderExpectationSchema = v.instance(BuilderExpectation);
15
18
  export const BuilderExpectationsSchema = v.pipe(v.array(BuilderExpectationSchema), v.readonly());
16
19
  export const BuilderExpectationSerialisedSchema = serialisable(v.object({
17
20
  name: NameSchema,
18
- kind: BuilderExpectationKindSchema
21
+ kind: BuilderExpectationKindSchema,
22
+ payload: v.optional(v.lazy(() => BuilderOptionConfigSerialisedSchema))
19
23
  }));
20
24
  export const BuilderExpectationsSerialisedSchema = v.pipe(v.array(BuilderExpectationSerialisedSchema), v.readonly());
21
25
  export const validateExpectations = createEntityValidator('expectations', BuilderExpectationsSerialisedSchema);
@@ -1,28 +1,28 @@
1
1
  export type { BuilderBindings, BuilderBindingsSerialised, BuilderSerialised } from './builder/index';
2
- export type { BuilderCollectionConfigSerialised, BuilderCollectionConfigsSerialised, BuilderCollectionPayload, BuilderCollections, BuilderCollectionSerialised, BuilderCollectionsSerialised, BuilderCollectionWhen, BuilderCollectionWhenSerialised, CollectionNamesOf, CollectionShape } from './collection/index';
3
- export type { BuilderComponentConfigSerialised, BuilderComponentConfigsSerialised, BuilderComponentDetailKind, BuilderComponentDetails, BuilderComponentDetailSerialised, BuilderComponentDetailsSerialised, BuilderComponentPayload, BuilderComponents, BuilderComponentSerialised, BuilderComponentsSerialised, BuilderComponentWhen, BuilderComponentWhenSerialised } from './component/index';
2
+ export type { BuilderCollectionConfigSerialised, BuilderCollectionConfigsSerialised, BuilderCollectionPayload, BuilderCollections, BuilderCollectionSerialised, BuilderCollectionsSerialised, BuilderCollectionCondition, BuilderCollectionConditionSerialised, CollectionNamesOf, CollectionShape } from './collection/index';
3
+ export type { BuilderComponentConfigSerialised, BuilderComponentConfigsSerialised, BuilderComponentDetailKind, BuilderComponentDetails, BuilderComponentDetailSerialised, BuilderComponentDetailsSerialised, BuilderComponentPayload, BuilderComponents, BuilderComponentSerialised, BuilderComponentsSerialised, BuilderComponentCondition, BuilderComponentConditionSerialised } from './component/index';
4
4
  export type { BuilderExpectationKind, BuilderExpectations, BuilderExpectationSerialised, BuilderExpectationsSerialised } from './expectation';
5
5
  export type { BuilderEntityKind, BuilderEntitySerialised } from './kind.js';
6
6
  export type { BuilderInstanceOf, BuilderModelGeneric, BuilderModels, BuilderModelSerialised, BuilderModelState, BuilderModelStateEmpty, BuilderModelStateOf } from './model/index';
7
7
  export { BuilderModel, BuilderModelSchema, BuilderModelSerialisedSchema, model, modelsMerge } from './model/index.js';
8
- export type { BuilderOptionConfig, BuilderOptionConfigSerialised, BuilderOptionConfigsSerialised, BuilderOptionPayload, BuilderOptions, BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionWhen, BuilderOptionWhenSerialised, BuilderSelectConfigLabels, BuilderSelectConfigSerialised, BuilderSelectConfigValues, BuilderToggleConfigSerialised, BuilderToggleKind } from './option/index';
8
+ export type { BuilderOptionConfig, BuilderOptionConfigSerialised, BuilderOptionConfigsSerialised, BuilderOptionPayload, BuilderOptions, BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionCondition, BuilderOptionConditionSerialised, BuilderValueConfigSerialised, BuilderValueKind, BuilderValueOptionLabels, BuilderValueOptions } from './option/index';
9
9
  export type { BuilderPath, BuilderPaths } from './paths.js';
10
10
  export type { BuilderPricingExpression, BuilderPricingLookup, BuilderPricingLookupKey, BuilderPricingReduce, BuilderPricingSerialised, BuilderPricingVariants, BuilderRates } from './pricing/index';
11
11
  export type { BuilderReference, BuilderReferences } from './references.js';
12
12
  export type { BuilderTags } from './tags';
13
13
  export type { BuilderDescription, BuilderDescriptionItem, BuilderUIDescribeSerialised, BuilderUIInputMetadata, BuilderUIInputMetadataSerialised, BuilderUIInputs, BuilderUIInputSerialised, BuilderUIInputsSerialised, BuilderUIItem, BuilderUIItems, BuilderUIItemSerialised, BuilderUIItemsSerialised, BuilderUIPageSerialised, BuilderUIPagesSerialised, BuilderUIs, BuilderUISerialised, BuilderUIsSerialised } from './ui/index';
14
14
  export type { BuilderCollectionConfigValidated, BuilderCollectionsValidated, BuilderCollectionValidated, BuilderComponentConfigValidated, BuilderComponentsValidated, BuilderComponentValidated, BuilderInstancesValidated, BuilderInstanceValidated, BuilderModelValidated, BuilderOptionConfigValidated, BuilderOptionsValidated, BuilderOptionValidated, BuilderPricingValidated, BuilderUIDescribeValidated, BuilderUIInputValidated, BuilderUIItemsValidated, BuilderUIPageValidated, BuilderUIValidated, BuilderValidated, BuilderValidatedMap, BuilderVariantsValidated, Validated, ValidationResult } from './validated';
15
- export type { BuilderEnableConfig, BuilderMatchConfig, BuilderMatchSelectMap, BuilderUnlessConfig, BuilderWhen, BuilderWhenConfig, BuilderWhenSerialised } from './when';
15
+ export type { BuilderMatchConfig, BuilderMatchSelectMap, BuilderUnlessConfig, BuilderCondition, BuilderConditionConfig, BuilderConditionSerialised } from './condition';
16
16
  export { Builder, builder, BuilderSchema, BuilderSerialisedSchema } from './builder/index.js';
17
- export { BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSchema, BuilderCollectionConfigSerialisedSchema, BuilderCollectionConfigsSerialisedSchema, BuilderCollectionSchema, BuilderCollectionSelectMapSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionsSerialisedSchema, BuilderCollectionWhenSerialisedSchema, collectionConfig, collectionExpectation, collectionWhen, validateCollectionConfig, validateCollectionSelectMap, validateCollectionWhen } from './collection/index.js';
18
- export { BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema, BuilderComponentDetail, BuilderComponentDetailKindSchema, BuilderComponentDetailSchema, BuilderComponentDetailSerialisedSchema, BuilderComponentDetailsSchema, BuilderComponentDetailsSerialisedSchema, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentWhenSerialisedSchema, componentConfig, componentExpectation, componentWhen, detailBoolean, detailImage, detailNumber, detailPrice, detailString, detailValueSchema, validateComponentConfig, validateComponentSelectMap, validateComponentWhen } from './component/index.js';
17
+ export { BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSchema, BuilderCollectionConfigSerialisedSchema, BuilderCollectionConfigsSerialisedSchema, BuilderCollectionSchema, BuilderCollectionSelectMapSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionsSerialisedSchema, BuilderCollectionConditionSerialisedSchema, collectionConfig, collectionExpectation, collectionCondition, validateCollectionConfig, validateCollectionSelectMap, validateCollectionCondition } from './collection/index.js';
18
+ export { BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema, BuilderComponentDetail, BuilderComponentDetailKindSchema, BuilderComponentDetailSchema, BuilderComponentDetailSerialisedSchema, BuilderComponentDetailsSchema, BuilderComponentDetailsSerialisedSchema, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentConditionSerialisedSchema, componentConfig, componentExpectation, componentCondition, detailBoolean, detailImage, detailNumber, detailPrice, detailString, detailValueSchema, validateComponentConfig, validateComponentSelectMap, validateComponentCondition } from './component/index.js';
19
19
  export { BuilderExpectation, BuilderExpectationKindSchema, BuilderExpectationSchema, BuilderExpectationSerialisedSchema, BuilderExpectationsSchema, BuilderExpectationsSerialisedSchema, validateExpectations } from './expectation.js';
20
20
  export { createEntityValidator } from './kind.js';
21
- export { BuilderOption, BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, BuilderOptionSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionsSerialisedSchema, BuilderOptionWhenSerialisedSchema, BuilderSelectConfig, BuilderSelectConfigSchema, BuilderSelectConfigSerialisedSchema, BuilderToggleConfig, BuilderToggleConfigSchema, BuilderToggleConfigSerialisedSchema, optionExpectation, optionValueSchema, optionWhen, select, toggleBoolean, toggleNumber, toggleString, validateOptionSelectMap, validateOptionWhen, validateSelect, validateToggle } from './option/index.js';
21
+ export { BuilderOption, BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, BuilderOptionSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionsSerialisedSchema, BuilderOptionConditionSerialisedSchema, BuilderSelectConfig, BuilderSelectConfigSchema, BuilderValueConfig, BuilderValueConfigSchema, BuilderValueConfigSerialisedSchema, optionExpectation, optionValueSchema, optionCondition, valueBoolean, valueNumber, valueSelect, valueString, validateOptionSelectMap, validateOptionCondition, validateValue } from './option/index.js';
22
22
  export { BuilderPathSchema, BuilderPathsSchema, validatePath, validatePaths } from './paths.js';
23
23
  export { BuilderPricing, BuilderPricingExpressionSchema, BuilderPricingLookupKeySchema, BuilderPricingReduceSchema, BuilderPricingSchema, BuilderPricingSerialisedSchema, BuilderRatesSchema, pricing, validatePricingRates } from './pricing/index.js';
24
24
  export { BuilderReferenceSchema, BuilderReferencesSchema } from './references.js';
25
25
  export { BuilderEntityKindSchema, BuilderEntitySerialisedSchema, entitiesMap, serialise, validateBoolean, validateNumber, validateString } from './serialise.js';
26
26
  export { BuilderTagsSchema } from './tags.js';
27
27
  export { BuilderDescriptionItemSchema, BuilderDescriptionSchema, BuilderUI, BuilderUIDescribe, BuilderUIDescribeSchema, BuilderUIDescribeSerialisedSchema, BuilderUIInput, BuilderUIInputMetadataSchema, BuilderUIInputSchema, BuilderUIInputSerialisedSchema, BuilderUIInputsSerialisedSchema, BuilderUIItemSerialisedSchema, BuilderUIItemsSerialisedSchema, BuilderUIPage, BuilderUIPages, BuilderUIPageSchema, BuilderUIPageSerialisedSchema, BuilderUIPagesSchema, BuilderUIPagesSerialisedSchema, BuilderUISchema, BuilderUISerialisedSchema, input, uis, validateUIDescribe, validateUIInput, validateUIItems, validateUIPage, validateUIPages } from './ui/index.js';
28
- export { BuilderWhenConfigSchema, BuilderWhenEnableSchema, BuilderWhenMatchSchema, BuilderWhenSerialisedSchema, BuilderWhenUnlessSchema, createWhenFactories, createWhenSerialisedSchema, whenBranches } from './when.js';
28
+ export { BuilderConditionConfigSchema, BuilderConditionMatchSchema, BuilderConditionSerialisedSchema, BuilderConditionUnlessSchema, createConditionFactories, createConditionSerialisedSchema, match, unless, conditionBranches } from './condition.js';
@@ -1,14 +1,14 @@
1
1
  export { BuilderModel, BuilderModelSchema, BuilderModelSerialisedSchema, model, modelsMerge } from './model/index.js';
2
2
  export { Builder, builder, BuilderSchema, BuilderSerialisedSchema } from './builder/index.js';
3
- export { BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSchema, BuilderCollectionConfigSerialisedSchema, BuilderCollectionConfigsSerialisedSchema, BuilderCollectionSchema, BuilderCollectionSelectMapSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionsSerialisedSchema, BuilderCollectionWhenSerialisedSchema, collectionConfig, collectionExpectation, collectionWhen, validateCollectionConfig, validateCollectionSelectMap, validateCollectionWhen } from './collection/index.js';
4
- export { BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema, BuilderComponentDetail, BuilderComponentDetailKindSchema, BuilderComponentDetailSchema, BuilderComponentDetailSerialisedSchema, BuilderComponentDetailsSchema, BuilderComponentDetailsSerialisedSchema, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentWhenSerialisedSchema, componentConfig, componentExpectation, componentWhen, detailBoolean, detailImage, detailNumber, detailPrice, detailString, detailValueSchema, validateComponentConfig, validateComponentSelectMap, validateComponentWhen } from './component/index.js';
3
+ export { BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSchema, BuilderCollectionConfigSerialisedSchema, BuilderCollectionConfigsSerialisedSchema, BuilderCollectionSchema, BuilderCollectionSelectMapSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionsSerialisedSchema, BuilderCollectionConditionSerialisedSchema, collectionConfig, collectionExpectation, collectionCondition, validateCollectionConfig, validateCollectionSelectMap, validateCollectionCondition } from './collection/index.js';
4
+ export { BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema, BuilderComponentDetail, BuilderComponentDetailKindSchema, BuilderComponentDetailSchema, BuilderComponentDetailSerialisedSchema, BuilderComponentDetailsSchema, BuilderComponentDetailsSerialisedSchema, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentConditionSerialisedSchema, componentConfig, componentExpectation, componentCondition, detailBoolean, detailImage, detailNumber, detailPrice, detailString, detailValueSchema, validateComponentConfig, validateComponentSelectMap, validateComponentCondition } from './component/index.js';
5
5
  export { BuilderExpectation, BuilderExpectationKindSchema, BuilderExpectationSchema, BuilderExpectationSerialisedSchema, BuilderExpectationsSchema, BuilderExpectationsSerialisedSchema, validateExpectations } from './expectation.js';
6
6
  export { createEntityValidator } from './kind.js';
7
- export { BuilderOption, BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, BuilderOptionSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionsSerialisedSchema, BuilderOptionWhenSerialisedSchema, BuilderSelectConfig, BuilderSelectConfigSchema, BuilderSelectConfigSerialisedSchema, BuilderToggleConfig, BuilderToggleConfigSchema, BuilderToggleConfigSerialisedSchema, optionExpectation, optionValueSchema, optionWhen, select, toggleBoolean, toggleNumber, toggleString, validateOptionSelectMap, validateOptionWhen, validateSelect, validateToggle } from './option/index.js';
7
+ export { BuilderOption, BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, BuilderOptionSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionsSerialisedSchema, BuilderOptionConditionSerialisedSchema, BuilderSelectConfig, BuilderSelectConfigSchema, BuilderValueConfig, BuilderValueConfigSchema, BuilderValueConfigSerialisedSchema, optionExpectation, optionValueSchema, optionCondition, valueBoolean, valueNumber, valueSelect, valueString, validateOptionSelectMap, validateOptionCondition, validateValue } from './option/index.js';
8
8
  export { BuilderPathSchema, BuilderPathsSchema, validatePath, validatePaths } from './paths.js';
9
9
  export { BuilderPricing, BuilderPricingExpressionSchema, BuilderPricingLookupKeySchema, BuilderPricingReduceSchema, BuilderPricingSchema, BuilderPricingSerialisedSchema, BuilderRatesSchema, pricing, validatePricingRates } from './pricing/index.js';
10
10
  export { BuilderReferenceSchema, BuilderReferencesSchema } from './references.js';
11
11
  export { BuilderEntityKindSchema, BuilderEntitySerialisedSchema, entitiesMap, serialise, validateBoolean, validateNumber, validateString } from './serialise.js';
12
12
  export { BuilderTagsSchema } from './tags.js';
13
13
  export { BuilderDescriptionItemSchema, BuilderDescriptionSchema, BuilderUI, BuilderUIDescribe, BuilderUIDescribeSchema, BuilderUIDescribeSerialisedSchema, BuilderUIInput, BuilderUIInputMetadataSchema, BuilderUIInputSchema, BuilderUIInputSerialisedSchema, BuilderUIInputsSerialisedSchema, BuilderUIItemSerialisedSchema, BuilderUIItemsSerialisedSchema, BuilderUIPage, BuilderUIPages, BuilderUIPageSchema, BuilderUIPageSerialisedSchema, BuilderUIPagesSchema, BuilderUIPagesSerialisedSchema, BuilderUISchema, BuilderUISerialisedSchema, input, uis, validateUIDescribe, validateUIInput, validateUIItems, validateUIPage, validateUIPages } from './ui/index.js';
14
- export { BuilderWhenConfigSchema, BuilderWhenEnableSchema, BuilderWhenMatchSchema, BuilderWhenSerialisedSchema, BuilderWhenUnlessSchema, createWhenFactories, createWhenSerialisedSchema, whenBranches } from './when.js';
14
+ export { BuilderConditionConfigSchema, BuilderConditionMatchSchema, BuilderConditionSerialisedSchema, BuilderConditionUnlessSchema, createConditionFactories, createConditionSerialisedSchema, match, unless, conditionBranches } from './condition.js';
@@ -3,7 +3,7 @@ import type { EntitiesMap } from './serialise';
3
3
  import type { BuilderValidatedMap, ValidationResult } from './validated';
4
4
  import * as v from 'valibot';
5
5
  import { BuilderIssuesScope } from '../errors/index.js';
6
- export declare const builderEntityKinds: readonly ["builder", "model", "select", "toggle", "optionSelectMap", "optionWhen", "componentConfig", "componentSelectMap", "componentWhen", "collectionConfig", "collectionSelectMap", "collectionWhen", "ui", "uiDescribe", "uiItems", "uiPage", "uiPages", "uiInput", "pricing", "pricingRates", "expectations", "paths", "path", "number", "string", "boolean"];
6
+ export declare const builderEntityKinds: readonly ["builder", "model", "value", "optionSelectMap", "optionCondition", "componentConfig", "componentSelectMap", "componentCondition", "collectionConfig", "collectionSelectMap", "collectionCondition", "ui", "uiDescribe", "uiItems", "uiPage", "uiPages", "uiInput", "pricing", "pricingRates", "expectations", "paths", "path", "number", "string", "boolean"];
7
7
  export type BuilderEntityKind = (typeof builderEntityKinds)[number];
8
8
  export type BuilderEntitySerialised = {
9
9
  [Kind in BuilderEntityKind]: v.InferOutput<EntitiesMap[Kind]['serialised']>;
@@ -3,16 +3,15 @@ import { BuilderIssuesScope } from '../errors/index.js';
3
3
  export const builderEntityKinds = [
4
4
  'builder',
5
5
  'model',
6
- 'select',
7
- 'toggle',
6
+ 'value',
8
7
  'optionSelectMap',
9
- 'optionWhen',
8
+ 'optionCondition',
10
9
  'componentConfig',
11
10
  'componentSelectMap',
12
- 'componentWhen',
11
+ 'componentCondition',
13
12
  'collectionConfig',
14
13
  'collectionSelectMap',
15
- 'collectionWhen',
14
+ 'collectionCondition',
16
15
  'ui',
17
16
  'uiDescribe',
18
17
  'uiItems',
@@ -3,12 +3,12 @@ import type { BuilderCollectionConfig, BuilderCollectionPayload } from '../colle
3
3
  import type { BuilderComponentPayload } from '../component/index';
4
4
  import type { BuilderOptionPayload } from '../option/index';
5
5
  import type { BuilderPaths } from '../paths';
6
- import type { BuilderWhenConstrained, BuilderWhenGeneric, WhenConfigNullable } from '../when';
6
+ import type { BuilderConditionConstrained, BuilderConditionGeneric, ConditionConfigNullable } from '../condition';
7
7
  import type { BuilderModelGeneric } from './model';
8
8
  import type { BuilderModels } from './models';
9
9
  import type { BuilderModelState, BuilderModelStateAppend } from './state';
10
10
  export type BuilderModelBindings<State extends BuilderModelState> = {
11
- readonly [Name in BuilderModelPartsNamesOf<State['models']> | ParameterNamesOf<State['options']> | ParameterNamesOf<State['collections']> | ParameterNamesOf<State['components']> | CollectionConfigParameterNamesOf<State['collections']>]?: BuilderWhenConstrained<State, PayloadForParameter<State, Name>> | BuilderRef;
11
+ readonly [Name in BuilderModelPartsNamesOf<State['models']> | ParameterNamesOf<State['options']> | ParameterNamesOf<State['collections']> | ParameterNamesOf<State['components']> | CollectionConfigParameterNamesOf<State['collections']>]?: BuilderConditionConstrained<State, PayloadForParameter<State, Name>> | BuilderRef;
12
12
  };
13
13
  export type BuilderModelBoundState<State extends BuilderModelState, Bindings extends BuilderModelBindings<State>> = BuilderModelStateAppend<State, {
14
14
  options: EntryBound<State['options'], Bindings>;
@@ -31,7 +31,7 @@ type BoundValue<Binding> = Binding extends {
31
31
  } ? Value : Binding extends {
32
32
  readonly value: infer Value;
33
33
  } ? Value : string;
34
- type BoundConfigNullable<Binding> = Binding extends BuilderWhenGeneric ? WhenConfigNullable<Binding> : never;
34
+ type BoundConfigNullable<Binding> = Binding extends BuilderConditionGeneric ? ConditionConfigNullable<Binding> : never;
35
35
  type EntryLike = {
36
36
  readonly name: string;
37
37
  readonly payload: unknown;
@@ -50,7 +50,7 @@ type PayloadParameters<Payload> = ParameterInfo<Payload> | (Payload extends {
50
50
  readonly type: 'match';
51
51
  readonly selectMap: infer SelectMap;
52
52
  } ? ParameterInfo<SelectMap[keyof SelectMap]> : never) | (Payload extends {
53
- readonly type: 'enable' | 'unless';
53
+ readonly type: 'unless';
54
54
  readonly payload: infer Inner;
55
55
  } ? ParameterInfo<Inner> : never);
56
56
  type ParameterInfo<Value> = Extract<Value, BuilderParameter> extends infer Parameter extends BuilderParameter ? {
@@ -61,7 +61,7 @@ type ParameterNamesOf<Entries extends ReadonlyArray<EntryLike>> = EntryParameter
61
61
  type PayloadForParameter<State extends BuilderModelState, Name extends string> = Name extends BuilderModelPartsNamesOf<State['models']> ? BuilderModelGeneric : Name extends ParameterNamesOf<State['options']> ? BuilderOptionPayload : Name extends ParameterNamesOf<State['collections']> ? BuilderCollectionPayload : Name extends ParameterNamesOf<State['components']> ? BuilderComponentPayload : Name extends CollectionConfigParameterNamesOf<State['collections']> ? CollectionConfigExpectedOf<State['collections'], Name> : never;
62
62
  type BuilderModelPartsNamesOf<Parts extends BuilderModels> = Extract<Parts[number], BuilderParameter>['name'];
63
63
  type CollectionConfigOf<Payload> = Payload extends BuilderCollectionConfig<infer Model, infer Min, infer Max> ? BuilderCollectionConfig<Model, Min, Max> : Payload extends {
64
- readonly type: 'enable' | 'unless';
64
+ readonly type: 'unless';
65
65
  readonly payload: infer Inner;
66
66
  } ? CollectionConfigOf<Inner> : Payload extends {
67
67
  readonly type: 'match';
@@ -1,29 +1,17 @@
1
1
  import type { BuilderParameter, Paramable } from '../../references';
2
- import type { BuilderCollectionConfig, BuilderCollectionWhen } from '../collection/index';
3
- import type { BuilderComponentConfig, BuilderComponentWhen } from '../component/index';
4
- import type { BuilderOptionConfig, BuilderOptionWhen } from '../option/index';
2
+ import type { BuilderCollectionConfig, BuilderCollectionPayload, BuilderCollectionCondition } from '../collection/index';
3
+ import type { BuilderComponentConfig, BuilderComponentPayload, BuilderComponentCondition } from '../component/index';
4
+ import type { BuilderOptionConfig, BuilderOptionPayload, BuilderOptionCondition } from '../option/index';
5
5
  import type { BuilderPaths } from '../paths';
6
- import type { BuilderValidPaths, BuilderWhenConstrained, WhenConfigPayload, WhenNullability } from '../when';
6
+ import type { BuilderConditionConstrained, BuilderConditionGeneric, ConditionConfigNullable, ConditionConfigPayload, ConditionNullability } from '../condition';
7
7
  import type { BuilderModel } from './model';
8
8
  import type { BuilderModelState, BuilderModelStateAppend } from './state';
9
9
  import { BuilderCollection } from '../collection/index.js';
10
10
  import { BuilderComponent } from '../component/index.js';
11
11
  import { BuilderOption } from '../option/index.js';
12
- export type BuilderOptionMethod<State extends BuilderModelState> = {
13
- <const Name extends string, const Payload extends Paramable<BuilderOptionConfig>>(name: Name, payload: Payload): OptionStateAppend<State, BuilderOption<Name, Payload>>;
14
- when: <const Paths extends Paramable<BuilderValidPaths<State>>, const Name extends string, const Payload extends Paramable<BuilderOptionWhen>>(paths: Paths, name: Name, payload: Payload & BuilderWhenConstrained<State, Payload>) => OptionStateAppend<State, OptionWhenResolver<Name, Payload>, OptionInstanceOf<OptionWhenResolver<Name, Payload>> | WhenNullability<State, Paths, Payload>>;
15
- };
16
- export type BuilderComponentMethod<State extends BuilderModelState> = {
17
- <const Name extends string, const Payload extends Paramable<BuilderComponentConfig>>(name: Name, payload?: Payload): ComponentStateAppend<State, BuilderComponent<Name, Payload>>;
18
- when: <const Paths extends Paramable<BuilderValidPaths<State>>, const Name extends string, const Payload extends Paramable<BuilderComponentWhen>>(paths: Paths, name: Name, payload?: Payload & BuilderWhenConstrained<State, Payload>) => ComponentStateAppend<State, ComponentWhenResolver<Name, Payload>>;
19
- };
20
- export type BuilderCollectionMethod<State extends BuilderModelState> = {
21
- <const Name extends string, const Payload extends Paramable<BuilderCollectionConfig>>(name: Name, payload: Payload): CollectionStateAppend<State, BuilderCollection<Name, Payload>>;
22
- when: <const Paths extends Paramable<BuilderValidPaths<State>>, const Name extends string, const Payload extends Paramable<BuilderCollectionWhen>>(paths: Paths, name: Name, payload: Payload & BuilderWhenConstrained<State, Payload>) => CollectionStateAppend<State, CollectionWhenResolver<Name, Payload>, CollectionInstanceOf<CollectionWhenResolver<Name, Payload>> | WhenNullability<State, Paths, Payload>>;
23
- };
24
- type OptionWhenResolver<Name extends string, Payload extends Paramable<BuilderOptionWhen>> = Payload extends BuilderOptionWhen ? BuilderOption<Name, WhenConfigPayload<Payload, BuilderOptionConfig>> : BuilderOption<Name, BuilderParameter>;
25
- type ComponentWhenResolver<Name extends string, Payload extends Paramable<BuilderComponentWhen>> = Payload extends BuilderComponentWhen ? BuilderComponent<Name, WhenConfigPayload<Payload, BuilderComponentConfig>> : BuilderComponent<Name, BuilderParameter>;
26
- type CollectionWhenResolver<Name extends string, Payload extends Paramable<BuilderCollectionWhen>> = Payload extends BuilderCollectionWhen ? BuilderCollection<Name, WhenConfigPayload<Payload, BuilderCollectionConfig>> : BuilderCollection<Name, BuilderParameter>;
12
+ export type BuilderOptionMethod<State extends BuilderModelState> = <const Name extends string, const Payload extends Paramable<BuilderOptionConfig>>(name: Name, payload: Payload) => OptionStateAppend<State, BuilderOption<Name, Payload>>;
13
+ export type BuilderComponentMethod<State extends BuilderModelState> = <const Name extends string, const Payload extends Paramable<BuilderComponentConfig>>(name: Name, payload?: Payload) => ComponentStateAppend<State, BuilderComponent<Name, Payload>>;
14
+ export type BuilderCollectionMethod<State extends BuilderModelState> = <const Name extends string, const Payload extends Paramable<BuilderCollectionConfig>>(name: Name, payload: Payload) => CollectionStateAppend<State, BuilderCollection<Name, Payload>>;
27
15
  type OptionStateAppend<State extends BuilderModelState, Option extends BuilderOption, InstanceType = OptionInstanceOf<Option>> = BuilderModel<BuilderModelStateAppend<State, {
28
16
  instance: State['instance'] & {
29
17
  [K in Option['name']]: InstanceType;
@@ -45,13 +33,16 @@ type CollectionInstanceOf<Collection extends BuilderCollection> = [Collection['p
45
33
  ] ? null : Collection['payload'] extends BuilderCollectionConfig ? Collection['payload']['model'] extends BuilderModel<infer State extends BuilderModelState> ? CollectionShape<Collection, State['instance']> : ReadonlyArray<unknown> : ReadonlyArray<unknown>;
46
34
  type CollectionShape<Collection extends BuilderCollection, Item> = Collection['payload'] extends BuilderCollectionConfig ? Collection['payload']['min'] extends number ? Collection['payload']['max'] extends number ? number extends Collection['payload']['min'] ? ReadonlyArray<Item> : number extends Collection['payload']['max'] ? ReadonlyArray<Item> : Collection['payload']['min'] extends Collection['payload']['max'] ? CollectionTuple<Item, Collection['payload']['min']> : ReadonlyArray<Item> : ReadonlyArray<Item> : ReadonlyArray<Item> : ReadonlyArray<Item>;
47
35
  type CollectionTuple<Item, Length extends number, Result extends ReadonlyArray<Item> = []> = Result['length'] extends Length ? Result : CollectionTuple<Item, Length, [...Result, Item]>;
48
- export declare function builderOptionMethod(): ((name: string, payload: Paramable<BuilderOptionConfig>) => BuilderOption<string, Paramable<import("..").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import("..").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>, Paramable<readonly (readonly (string | number)[])[]>>) & {
49
- when(paths: Paramable<BuilderPaths>, name: string, payload: Paramable<BuilderOptionWhen>): BuilderOption<string, Paramable<BuilderOptionWhen>, BuilderParameter<string> | import("../..").BuilderRef | readonly (readonly (string | number)[])[]>;
50
- };
51
- export declare function builderComponentMethod(): ((name: string, payload?: Paramable<BuilderComponentConfig>) => BuilderComponent<string, Paramable<BuilderComponentConfig<Paramable<readonly import("..").BuilderComponentDetail<string, import("valibot").GenericSchema<string | number | boolean | null>>[]>>>, Paramable<readonly (readonly (string | number)[])[]>>) & {
52
- when(paths: Paramable<BuilderPaths>, name: string, payload?: Paramable<BuilderComponentWhen>): BuilderComponent<string, Paramable<BuilderComponentWhen>, BuilderParameter<string> | import("../..").BuilderRef | readonly (readonly (string | number)[])[]>;
53
- };
54
- export declare function builderCollectionMethod(): ((name: string, payload: Paramable<BuilderCollectionConfig>) => BuilderCollection<string, Paramable<BuilderCollectionConfig<Paramable<import("./model").BuilderModelGeneric>, Paramable<number>, Paramable<number>>>, Paramable<readonly (readonly (string | number)[])[]>>) & {
55
- when(paths: Paramable<BuilderPaths>, name: string, payload: Paramable<BuilderCollectionWhen>): BuilderCollection<string, Paramable<BuilderCollectionWhen>, BuilderParameter<string> | import("../..").BuilderRef | readonly (readonly (string | number)[])[]>;
36
+ type IfNullability<State extends BuilderModelState, Paths extends Paramable<BuilderPaths>, Payload> = ConditionNullability<State, Paths, BuilderParameter> | (Payload extends BuilderConditionGeneric ? ConditionConfigNullable<Payload> : never);
37
+ type OptionIfResolver<Name extends string, Payload extends Paramable<BuilderOptionPayload>> = Payload extends BuilderParameter ? BuilderOption<Name, BuilderParameter> : Payload extends BuilderOptionCondition ? BuilderOption<Name, ConditionConfigPayload<Payload, BuilderOptionConfig>> : BuilderOption<Name, Payload>;
38
+ type CollectionIfResolver<Name extends string, Payload extends Paramable<BuilderCollectionPayload>> = Payload extends BuilderParameter ? BuilderCollection<Name, BuilderParameter> : Payload extends BuilderCollectionCondition ? BuilderCollection<Name, ConditionConfigPayload<Payload, BuilderCollectionConfig>> : BuilderCollection<Name, Payload>;
39
+ type ComponentIfResolver<Name extends string, Payload extends Paramable<BuilderComponentPayload>> = Payload extends BuilderParameter ? BuilderComponent<Name, BuilderParameter> : Payload extends BuilderComponentCondition ? BuilderComponent<Name, ConditionConfigPayload<Payload, BuilderComponentConfig>> : BuilderComponent<Name, Payload>;
40
+ export type BuilderConditional<State extends BuilderModelState, Paths extends Paramable<BuilderPaths>> = {
41
+ option: <const Name extends string, const Payload extends Paramable<BuilderOptionPayload>>(name: Name, payload: Payload & BuilderConditionConstrained<State, Payload>) => OptionStateAppend<State, OptionIfResolver<Name, Payload>, OptionInstanceOf<OptionIfResolver<Name, Payload>> | IfNullability<State, Paths, Payload>>;
42
+ collection: <const Name extends string, const Payload extends Paramable<BuilderCollectionPayload>>(name: Name, payload: Payload & BuilderConditionConstrained<State, Payload>) => CollectionStateAppend<State, CollectionIfResolver<Name, Payload>, CollectionInstanceOf<CollectionIfResolver<Name, Payload>> | IfNullability<State, Paths, Payload>>;
43
+ component: <const Name extends string, const Payload extends Paramable<BuilderComponentPayload> = BuilderComponentConfig<[]>>(name: Name, payload?: Payload & BuilderConditionConstrained<State, Payload>) => ComponentStateAppend<State, ComponentIfResolver<Name, Payload>>;
56
44
  };
45
+ export declare function builderOptionMethod(): (name: string, payload: Paramable<BuilderOptionConfig>) => BuilderOption<string, Paramable<import("..").BuilderValueConfig<import("valibot").GenericSchema<string | number | boolean | null>> | import("..").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>>>, Paramable<readonly (readonly (string | number)[])[]>>;
46
+ export declare function builderComponentMethod(): (name: string, payload?: Paramable<BuilderComponentConfig>) => BuilderComponent<string, Paramable<BuilderComponentConfig<Paramable<readonly import("..").BuilderComponentDetail<string, import("valibot").GenericSchema<string | number | boolean | null>>[]>>>, Paramable<readonly (readonly (string | number)[])[]>>;
47
+ export declare function builderCollectionMethod(): (name: string, payload: Paramable<BuilderCollectionConfig>) => BuilderCollection<string, Paramable<BuilderCollectionConfig<Paramable<import("./model").BuilderModelGeneric>, Paramable<number>, Paramable<number>>>, Paramable<readonly (readonly (string | number)[])[]>>;
57
48
  export {};
@@ -1,30 +1,12 @@
1
1
  import { BuilderCollection } from '../collection/index.js';
2
- import { BuilderComponent, componentConfig, componentWhen } from '../component/index.js';
2
+ import { BuilderComponent, componentConfig } from '../component/index.js';
3
3
  import { BuilderOption } from '../option/index.js';
4
4
  export function builderOptionMethod() {
5
- return Object.assign((name, payload) => {
6
- return new BuilderOption(name, payload);
7
- }, {
8
- when(paths, name, payload) {
9
- return new BuilderOption(name, payload, paths);
10
- }
11
- });
5
+ return (name, payload) => new BuilderOption(name, payload);
12
6
  }
13
7
  export function builderComponentMethod() {
14
- return Object.assign((name, payload) => {
15
- return new BuilderComponent(name, payload ?? componentConfig());
16
- }, {
17
- when(paths, name, payload) {
18
- return new BuilderComponent(name, payload ?? componentWhen.enable(), paths);
19
- }
20
- });
8
+ return (name, payload) => new BuilderComponent(name, payload ?? componentConfig());
21
9
  }
22
10
  export function builderCollectionMethod() {
23
- return Object.assign((name, payload) => {
24
- return new BuilderCollection(name, payload);
25
- }, {
26
- when(paths, name, payload) {
27
- return new BuilderCollection(name, payload, paths);
28
- }
29
- });
11
+ return (name, payload) => new BuilderCollection(name, payload);
30
12
  }
@@ -6,8 +6,9 @@ import type { BuilderComponents, BuilderComponentsSerialised } from '../componen
6
6
  import type { BuilderExpectation, BuilderExpectations, BuilderExpectationsSerialised } from '../expectation';
7
7
  import type { BuilderOptions, BuilderOptionsSerialised } from '../option/index';
8
8
  import type { BuilderTags } from '../tags';
9
+ import type { BuilderValidPaths } from '../condition';
9
10
  import type { BuilderModelStateAsserted } from './expectation';
10
- import type { BuilderCollectionMethod, BuilderComponentMethod, BuilderOptionMethod } from './methods';
11
+ import type { BuilderCollectionMethod, BuilderComponentMethod, BuilderConditional, BuilderOptionMethod } from './methods';
11
12
  import type { BuilderModels, BuilderModelsMerge, BuilderModelsSerialised } from './models';
12
13
  import type { BuilderModelState, BuilderModelStateEmpty } from './state';
13
14
  import * as v from 'valibot';
@@ -25,6 +26,7 @@ export declare class BuilderModel<State extends BuilderModelState = BuilderModel
25
26
  get option(): BuilderOptionMethod<State>;
26
27
  get component(): BuilderComponentMethod<State>;
27
28
  get collection(): BuilderCollectionMethod<State>;
29
+ if<const Paths extends Paramable<BuilderValidPaths<State>>>(paths: Paths): BuilderConditional<State, Paths>;
28
30
  expect<const Expectations extends readonly [BuilderExpectation, ...ReadonlyArray<BuilderExpectation>]>(...expectations: Expectations): BuilderModel<BuilderModelStateAsserted<State, Expectations>>;
29
31
  }
30
32
  export declare function model<const Parts extends BuilderModels>(...parts: Parts): BuilderModel<BuilderModelsMerge<Parts>>;