@builder-builder/builder 0.0.27 → 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 (132) hide show
  1. package/dist/bb.js +9 -10
  2. package/dist/client/client.d.ts +2 -1
  3. package/dist/client/client.js +4 -1
  4. package/dist/client/public.d.ts +2 -2
  5. package/dist/client/public.js +1 -1
  6. package/dist/client/schema.d.ts +126 -45
  7. package/dist/client/schema.js +6 -1
  8. package/dist/components/BuilderOption.svelte.d.ts +12 -12
  9. package/dist/components/BuilderOptionValueBoolean.svelte.d.ts +20 -0
  10. package/dist/components/BuilderOptionValueNumber.svelte.d.ts +21 -0
  11. package/dist/components/BuilderOptionValueSelect.svelte.d.ts +21 -0
  12. package/dist/components/BuilderOptionValueString.svelte.d.ts +21 -0
  13. package/dist/components/BuilderRender.svelte.d.ts +2 -2
  14. package/dist/components/index.d.ts +8 -8
  15. package/dist/components/index.js +4376 -4258
  16. package/dist/components/index.min.js +3 -0
  17. package/dist/entities/collection/collection.d.ts +191 -401
  18. package/dist/entities/collection/collection.js +7 -4
  19. package/dist/entities/collection/{when.d.ts → condition.d.ts} +4 -5
  20. package/dist/entities/collection/condition.js +2 -0
  21. package/dist/entities/collection/config.d.ts +62 -80
  22. package/dist/entities/collection/index.d.ts +4 -4
  23. package/dist/entities/collection/index.js +2 -2
  24. package/dist/entities/component/component.d.ts +71 -83
  25. package/dist/entities/component/component.js +4 -4
  26. package/dist/entities/component/condition.d.ts +10 -0
  27. package/dist/entities/component/{when.js → condition.js} +3 -9
  28. package/dist/entities/component/config.d.ts +33 -33
  29. package/dist/entities/component/config.js +18 -16
  30. package/dist/entities/component/detail.d.ts +61 -0
  31. package/dist/entities/component/detail.js +71 -0
  32. package/dist/entities/component/index.d.ts +6 -6
  33. package/dist/entities/component/index.js +3 -3
  34. package/dist/entities/{when.d.ts → condition.d.ts} +23 -36
  35. package/dist/entities/{when.js → condition.js} +20 -25
  36. package/dist/entities/expectation.d.ts +135 -3
  37. package/dist/entities/expectation.js +6 -2
  38. package/dist/entities/index.d.ts +9 -9
  39. package/dist/entities/index.js +4 -4
  40. package/dist/entities/kind.d.ts +4 -4
  41. package/dist/entities/kind.js +24 -25
  42. package/dist/entities/model/bind.d.ts +5 -5
  43. package/dist/entities/model/methods.d.ts +18 -27
  44. package/dist/entities/model/methods.js +4 -22
  45. package/dist/entities/model/model.d.ts +3 -1
  46. package/dist/entities/model/model.js +25 -27
  47. package/dist/entities/option/condition.d.ts +9 -0
  48. package/dist/entities/option/condition.js +2 -0
  49. package/dist/entities/option/config.d.ts +47 -72
  50. package/dist/entities/option/config.js +6 -6
  51. package/dist/entities/option/expectation.d.ts +6 -1
  52. package/dist/entities/option/expectation.js +2 -2
  53. package/dist/entities/option/index.d.ts +8 -8
  54. package/dist/entities/option/index.js +4 -4
  55. package/dist/entities/option/option.d.ts +179 -210
  56. package/dist/entities/option/option.js +4 -4
  57. package/dist/entities/option/select.d.ts +16 -43
  58. package/dist/entities/option/select.js +8 -31
  59. package/dist/entities/option/value.d.ts +73 -0
  60. package/dist/entities/option/value.js +99 -0
  61. package/dist/entities/paths.d.ts +2 -2
  62. package/dist/entities/pricing/expression.d.ts +16 -39
  63. package/dist/entities/pricing/expression.js +1 -16
  64. package/dist/entities/pricing/index.d.ts +1 -1
  65. package/dist/entities/pricing/rates.d.ts +1 -1
  66. package/dist/entities/references.d.ts +124 -84
  67. package/dist/entities/serialise.d.ts +175 -109
  68. package/dist/entities/serialise.js +32 -27
  69. package/dist/entities/ui/describe.d.ts +1 -1
  70. package/dist/entities/ui/input.d.ts +2 -2
  71. package/dist/entities/ui/page.d.ts +1 -1
  72. package/dist/entities/ui/pages.d.ts +2 -2
  73. package/dist/entities/validated.d.ts +3 -3
  74. package/dist/environment.d.ts +2 -2
  75. package/dist/errors/errors.d.ts +94 -58
  76. package/dist/errors/errors.js +41 -7
  77. package/dist/errors/exception.d.ts +3 -3
  78. package/dist/errors/index.d.ts +1 -1
  79. package/dist/errors/index.js +1 -1
  80. package/dist/errors/public.d.ts +1 -1
  81. package/dist/index.d.ts +1 -1
  82. package/dist/index.js +1 -1
  83. package/dist/instance.d.ts +53 -9
  84. package/dist/instance.js +6 -2
  85. package/dist/mappers/dependencies.d.ts +3 -0
  86. package/dist/mappers/dependencies.js +45 -0
  87. package/dist/mappers/index.d.ts +2 -2
  88. package/dist/mappers/index.js +2 -1
  89. package/dist/mappers/instance.js +26 -21
  90. package/dist/mappers/price.js +6 -4
  91. package/dist/mappers/resolve.js +23 -22
  92. package/dist/mappers/variants/index.d.ts +1 -2
  93. package/dist/mappers/variants/index.js +1 -2
  94. package/dist/mappers/variants/option-graph.d.ts +1 -2
  95. package/dist/mappers/variants/option-graph.js +4 -18
  96. package/dist/mappers/variants/variants.d.ts +3 -6
  97. package/dist/mappers/variants/variants.js +34 -11
  98. package/dist/primitive.d.ts +3 -0
  99. package/dist/primitive.js +2 -0
  100. package/dist/public.d.ts +20 -20
  101. package/dist/public.js +17 -9
  102. package/dist/validate/builder.d.ts +2 -2
  103. package/dist/validate/builder.js +15 -15
  104. package/dist/validate/expectations.d.ts +2 -2
  105. package/dist/validate/expectations.js +23 -5
  106. package/dist/validate/instance.d.ts +2 -2
  107. package/dist/validate/instance.js +31 -13
  108. package/dist/validate/model.d.ts +4 -4
  109. package/dist/validate/model.js +57 -51
  110. package/dist/validate/paths.d.ts +2 -2
  111. package/dist/validate/paths.js +19 -14
  112. package/dist/validate/pricing.d.ts +4 -4
  113. package/dist/validate/pricing.js +31 -31
  114. package/dist/validate/resolve.d.ts +2 -2
  115. package/dist/validate/resolve.js +27 -31
  116. package/dist/validate/ui.d.ts +4 -4
  117. package/dist/validate/ui.js +38 -38
  118. package/dist/validate/variants.d.ts +3 -3
  119. package/dist/validate/variants.js +32 -31
  120. package/package.json +4 -2
  121. package/dist/components/BuilderOptionSelect.svelte.d.ts +0 -21
  122. package/dist/components/BuilderOptionToggleBoolean.svelte.d.ts +0 -20
  123. package/dist/components/BuilderOptionToggleNumber.svelte.d.ts +0 -21
  124. package/dist/components/BuilderOptionToggleString.svelte.d.ts +0 -21
  125. package/dist/entities/collection/when.js +0 -2
  126. package/dist/entities/component/field.d.ts +0 -59
  127. package/dist/entities/component/field.js +0 -52
  128. package/dist/entities/component/when.d.ts +0 -11
  129. package/dist/entities/option/toggle.d.ts +0 -45
  130. package/dist/entities/option/toggle.js +0 -66
  131. package/dist/entities/option/when.d.ts +0 -10
  132. package/dist/entities/option/when.js +0 -2
@@ -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, BuilderComponentFields, BuilderComponentFieldSerialised, BuilderComponentFieldsSerialised, BuilderComponentFieldValueType, 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, BuilderToggleValueType } 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
- export type { BuilderPricingExpression, BuilderPricingLookupKey, BuilderPricingReduce, BuilderPricingSerialised, BuilderRates } from './pricing/index';
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, BuilderComponentField, BuilderComponentFieldSchema, BuilderComponentFieldSerialisedSchema, BuilderComponentFieldsSchema, BuilderComponentFieldsSerialisedSchema, BuilderComponentFieldValueTypeSchema, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentWhenSerialisedSchema, componentConfig, componentExpectation, componentWhen, detailBoolean, detailNumber, 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, BuilderComponentField, BuilderComponentFieldSchema, BuilderComponentFieldSerialisedSchema, BuilderComponentFieldsSchema, BuilderComponentFieldsSerialisedSchema, BuilderComponentFieldValueTypeSchema, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentWhenSerialisedSchema, componentConfig, componentExpectation, componentWhen, detailBoolean, detailNumber, 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';
@@ -2,11 +2,11 @@ import type { BuilderReferences } from './references';
2
2
  import type { EntitiesMap } from './serialise';
3
3
  import type { BuilderValidatedMap, ValidationResult } from './validated';
4
4
  import * as v from 'valibot';
5
- import { BuilderErrorsScope } 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"];
5
+ import { BuilderIssuesScope } from '../errors/index.js';
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']>;
10
10
  }[BuilderEntityKind];
11
- export type EntityValidate<Kind extends BuilderEntityKind> = (input: BuilderValidatedMap[Kind], errors: BuilderErrorsScope, references: BuilderReferences) => void;
12
- export declare function createEntityValidator<Kind extends BuilderEntityKind>(kind: Kind, schema: v.GenericSchema, validate?: EntityValidate<Kind>): (input: unknown, references?: BuilderReferences, errors?: BuilderErrorsScope) => ValidationResult<BuilderValidatedMap[Kind]>;
11
+ export type EntityValidate<Kind extends BuilderEntityKind> = (input: BuilderValidatedMap[Kind], issues: BuilderIssuesScope, references: BuilderReferences) => void;
12
+ export declare function createEntityValidator<Kind extends BuilderEntityKind>(kind: Kind, schema: v.GenericSchema, validate?: EntityValidate<Kind>): (input: unknown, references?: BuilderReferences, issues?: BuilderIssuesScope) => ValidationResult<BuilderValidatedMap[Kind]>;
@@ -1,18 +1,17 @@
1
1
  import * as v from 'valibot';
2
- import { BuilderErrorsScope } from '../errors/index.js';
2
+ 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',
@@ -29,51 +28,51 @@ export const builderEntityKinds = [
29
28
  'boolean'
30
29
  ];
31
30
  export function createEntityValidator(kind, schema, validate) {
32
- return (input, references = [], errors = new BuilderErrorsScope(input)) => {
31
+ return (input, references = [], issues = new BuilderIssuesScope(input)) => {
33
32
  const result = v.safeParse(schema, input);
34
33
  if (!result.success) {
35
- if (!toEmptyErrors(result.issues, errors)) {
36
- errors.entityInvalid(kind);
34
+ if (!toEmptyErrors(result.issues, issues)) {
35
+ issues.entityInvalid(kind);
37
36
  }
38
- return [input, errors.errors];
37
+ return [input, issues.errors, issues.warnings];
39
38
  }
40
- validate?.(input, errors, references);
41
- return [input, errors.errors];
39
+ validate?.(input, issues, references);
40
+ return [input, issues.errors, issues.warnings];
42
41
  };
43
42
  }
44
- function toEmptyErrors(issues, errors) {
45
- if (issues.length === 0) {
43
+ function toEmptyErrors(schemaIssues, issues) {
44
+ if (schemaIssues.length === 0) {
46
45
  return false;
47
46
  }
48
- return issues.map((issue) => toEmptyError(issue, errors)).every(Boolean);
47
+ return schemaIssues.map((schemaIssue) => toEmptyError(schemaIssue, issues)).every(Boolean);
49
48
  }
50
- function toEmptyError(issue, errors) {
51
- const [firstSegment] = issue.path ?? [];
52
- if (firstSegment == null || !hasMinLengthFailure(issue)) {
49
+ function toEmptyError(schemaIssue, issues) {
50
+ const [firstSegment] = schemaIssue.path ?? [];
51
+ if (firstSegment == null || !hasMinLengthFailure(schemaIssue)) {
53
52
  return false;
54
53
  }
55
54
  const { key } = firstSegment;
56
55
  if (key === 'name') {
57
- errors.entityEmptyName();
56
+ issues.entityEmptyName();
58
57
  return true;
59
58
  }
60
59
  if (key === 'label') {
61
- errors.entityEmptyLabel();
60
+ issues.entityEmptyLabel();
62
61
  return true;
63
62
  }
64
63
  if (key === 'id') {
65
- errors.entityEmptyId();
64
+ issues.entityEmptyId();
66
65
  return true;
67
66
  }
68
67
  if (key === 'inputs') {
69
- errors.entityEmptyInputs();
68
+ issues.entityEmptyInputs();
70
69
  return true;
71
70
  }
72
71
  return false;
73
72
  }
74
- function hasMinLengthFailure(issue) {
75
- if (issue.type === 'min_length') {
73
+ function hasMinLengthFailure(schemaIssue) {
74
+ if (schemaIssue.type === 'min_length') {
76
75
  return true;
77
76
  }
78
- return issue.issues?.some(hasMinLengthFailure) ?? false;
77
+ return schemaIssue.issues?.some(hasMinLengthFailure) ?? false;
79
78
  }
@@ -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("..").BuilderComponentField<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>>;
@@ -1,8 +1,8 @@
1
1
  import * as v from 'valibot';
2
- import { BuilderCollectionsSerialisedSchema } from '../collection/index.js';
3
- import { BuilderComponentsSerialisedSchema } from '../component/index.js';
2
+ import { BuilderCollection, BuilderCollectionsSerialisedSchema } from '../collection/index.js';
3
+ import { BuilderComponent, BuilderComponentsSerialisedSchema, componentConfig } from '../component/index.js';
4
4
  import { BuilderExpectationsSerialisedSchema } from '../expectation.js';
5
- import { BuilderOptionsSerialisedSchema } from '../option/index.js';
5
+ import { BuilderOption, BuilderOptionsSerialisedSchema } from '../option/index.js';
6
6
  import { serialisable } from '../serialisable.js';
7
7
  import { BuilderTagsSchema } from '../tags.js';
8
8
  import { builderCollectionMethod, builderComponentMethod, builderOptionMethod } from './methods.js';
@@ -27,37 +27,35 @@ export class BuilderModel {
27
27
  }
28
28
  get option() {
29
29
  const method = builderOptionMethod();
30
- const add = (name, payload) => {
31
- return this.#next({ options: [...this.options, method(name, payload)] });
32
- };
33
- const when = (paths, name, config) => {
34
- return this.#next({ options: [...this.options, method.when(paths, name, config)] });
35
- };
36
- return Object.assign(add, { when });
30
+ return ((name, payload) => this.#next({
31
+ options: [...this.options, method(name, payload)]
32
+ }));
37
33
  }
38
34
  get component() {
39
35
  const method = builderComponentMethod();
40
- const add = (name, details) => {
41
- return this.#next({ components: [...this.components, method(name, details)] });
42
- };
43
- const when = (paths, name, config) => {
44
- return this.#next({
45
- components: [...this.components, method.when(paths, name, config)]
46
- });
47
- };
48
- return Object.assign(add, { when });
36
+ return ((name, details) => this.#next({
37
+ components: [...this.components, method(name, details)]
38
+ }));
49
39
  }
50
40
  get collection() {
51
41
  const method = builderCollectionMethod();
52
- const add = (name, payload) => {
53
- return this.#next({ collections: [...this.collections, method(name, payload)] });
54
- };
55
- const when = (paths, name, config) => {
56
- return this.#next({
57
- collections: [...this.collections, method.when(paths, name, config)]
58
- });
42
+ return ((name, payload) => this.#next({
43
+ collections: [...this.collections, method(name, payload)]
44
+ }));
45
+ }
46
+ if(paths) {
47
+ return {
48
+ option: (name, payload) => this.#next({ options: [...this.options, new BuilderOption(name, payload, paths)] }),
49
+ collection: (name, payload) => this.#next({
50
+ collections: [...this.collections, new BuilderCollection(name, payload, paths)]
51
+ }),
52
+ component: (name, payload) => this.#next({
53
+ components: [
54
+ ...this.components,
55
+ new BuilderComponent(name, payload ?? componentConfig(), paths)
56
+ ]
57
+ })
59
58
  };
60
- return Object.assign(add, { when });
61
59
  }
62
60
  expect(...expectations) {
63
61
  return this.#next({ expectations: [...this.expectations, ...expectations] });
@@ -0,0 +1,9 @@
1
+ import type { Paramable } from '../../references';
2
+ import type { BuilderPath } from '../paths';
3
+ import type { BuilderCondition } from '../condition';
4
+ import type { BuilderOptionConfig } from './config';
5
+ export type BuilderOptionCondition = BuilderCondition<Paramable<BuilderOptionConfig>, Paramable<BuilderPath>, Paramable<Record<string, Paramable<BuilderOptionConfig> | null>>, Paramable<BuilderPath>>;
6
+ export declare const optionCondition: {
7
+ match: <const MatchPayload extends Paramable<import("./value").BuilderValueConfig<import("valibot").GenericSchema<string | number | boolean | null>> | import("./select").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>>>, const MatchPath extends Paramable<BuilderPath>, const SelectMap extends Paramable<import("..").BuilderMatchSelectMap<Paramable<import("./value").BuilderValueConfig<import("valibot").GenericSchema<string | number | boolean | null>> | import("./select").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import("..").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
8
+ unless: <const Values extends Paramable<import("./value").BuilderValueConfig<import("valibot").GenericSchema<string | number | boolean | null>> | import("./select").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>>>, const UnlessPath extends Paramable<BuilderPath>>(unlessPath: UnlessPath, disabledValues: import("../../primitive").BuilderPrimitivesNonEmpty, values: Values) => import("..").BuilderUnlessConfig<Values, UnlessPath>;
9
+ };
@@ -0,0 +1,2 @@
1
+ import { createConditionFactories } from '../condition.js';
2
+ export const optionCondition = createConditionFactories();