@builder-builder/builder 0.0.20 → 0.0.22

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 (125) hide show
  1. package/README.md +33 -24
  2. package/dist/bb.d.ts +10 -11
  3. package/dist/bb.js +25 -2
  4. package/dist/client/client.d.ts +7 -0
  5. package/dist/client/client.js +19 -0
  6. package/dist/client/index.d.ts +4 -0
  7. package/dist/client/index.js +2 -0
  8. package/dist/client/schema.d.ts +396 -0
  9. package/dist/client/schema.js +13 -0
  10. package/dist/entities/builder/bind.d.ts +1 -1
  11. package/dist/entities/builder/builder.js +1 -1
  12. package/dist/entities/collection/collection.d.ts +689 -1
  13. package/dist/entities/collection/collection.js +5 -2
  14. package/dist/entities/collection/config.d.ts +189 -0
  15. package/dist/entities/collection/config.js +12 -2
  16. package/dist/entities/collection/expectation.d.ts +1 -1
  17. package/dist/entities/collection/index.d.ts +2 -2
  18. package/dist/entities/collection/index.js +2 -2
  19. package/dist/entities/collection/when.d.ts +1 -1
  20. package/dist/entities/component/component.d.ts +61 -7
  21. package/dist/entities/component/component.js +5 -2
  22. package/dist/entities/component/config.d.ts +10 -0
  23. package/dist/entities/component/config.js +19 -2
  24. package/dist/entities/component/field.js +1 -1
  25. package/dist/entities/component/index.d.ts +2 -2
  26. package/dist/entities/component/index.js +2 -2
  27. package/dist/entities/component/when.d.ts +1 -1
  28. package/dist/entities/expectation.d.ts +4 -0
  29. package/dist/entities/expectation.js +3 -1
  30. package/dist/entities/index.d.ts +15 -13
  31. package/dist/entities/index.js +11 -10
  32. package/dist/entities/kind.d.ts +10 -7
  33. package/dist/entities/kind.js +39 -5
  34. package/dist/entities/model/bind.d.ts +1 -1
  35. package/dist/entities/model/methods.d.ts +4 -4
  36. package/dist/entities/model/model.js +1 -1
  37. package/dist/entities/option/index.d.ts +3 -3
  38. package/dist/entities/option/index.js +3 -3
  39. package/dist/entities/option/option.d.ts +85 -7
  40. package/dist/entities/option/option.js +5 -2
  41. package/dist/entities/option/select.d.ts +10 -0
  42. package/dist/entities/option/select.js +12 -1
  43. package/dist/entities/option/toggle.d.ts +7 -0
  44. package/dist/entities/option/toggle.js +12 -1
  45. package/dist/entities/option/when.d.ts +1 -1
  46. package/dist/{paths.d.ts → entities/paths.d.ts} +2 -0
  47. package/dist/{paths.js → entities/paths.js} +3 -0
  48. package/dist/entities/pricing/index.d.ts +1 -1
  49. package/dist/entities/pricing/index.js +1 -1
  50. package/dist/entities/pricing/pricing.js +1 -1
  51. package/dist/entities/pricing/rates.d.ts +5 -0
  52. package/dist/entities/pricing/rates.js +3 -1
  53. package/dist/entities/references.d.ts +723 -6
  54. package/dist/entities/references.js +7 -1
  55. package/dist/entities/serialise.d.ts +48 -42
  56. package/dist/entities/serialise.js +9 -3
  57. package/dist/entities/ui/describe.d.ts +15 -0
  58. package/dist/entities/ui/describe.js +11 -2
  59. package/dist/entities/ui/index.d.ts +4 -4
  60. package/dist/entities/ui/index.js +4 -4
  61. package/dist/entities/ui/input.d.ts +11 -1
  62. package/dist/entities/ui/input.js +4 -2
  63. package/dist/entities/ui/page.d.ts +15 -0
  64. package/dist/entities/ui/page.js +11 -2
  65. package/dist/entities/ui/pages.d.ts +132 -0
  66. package/dist/entities/ui/pages.js +12 -2
  67. package/dist/entities/ui/ui.d.ts +1 -1
  68. package/dist/entities/ui/ui.js +2 -2
  69. package/dist/entities/ui/uis.js +1 -1
  70. package/dist/entities/validated.d.ts +26 -18
  71. package/dist/entities/when.d.ts +4 -3
  72. package/dist/entities/when.js +22 -2
  73. package/dist/environment.d.ts +2 -2
  74. package/dist/{validate → errors}/errors.d.ts +57 -35
  75. package/dist/{validate → errors}/errors.js +40 -5
  76. package/dist/errors/exception.d.ts +5 -0
  77. package/dist/{exception.js → errors/exception.js} +0 -3
  78. package/dist/errors/index.d.ts +4 -0
  79. package/dist/errors/index.js +3 -0
  80. package/dist/index.d.ts +14 -14
  81. package/dist/index.js +3 -2
  82. package/dist/instance.d.ts +7 -7
  83. package/dist/instance.js +4 -4
  84. package/dist/mappers/instance.js +1 -1
  85. package/dist/mappers/order.d.ts +4 -4
  86. package/dist/mappers/order.js +1 -1
  87. package/dist/mappers/price.js +18 -18
  88. package/dist/mappers/render/render.js +1 -1
  89. package/dist/mappers/resolve.d.ts +1 -2
  90. package/dist/mappers/resolve.js +3 -20
  91. package/dist/mappers/variants/option-graph.d.ts +1 -2
  92. package/dist/mappers/variants/option-graph.js +2 -3
  93. package/dist/mappers/variants/variants.d.ts +2 -2
  94. package/dist/mappers/variants/variants.js +1 -1
  95. package/dist/private.d.ts +1 -2
  96. package/dist/private.js +1 -2
  97. package/dist/references.js +1 -1
  98. package/dist/validate/brand.js +1 -2
  99. package/dist/validate/builder.d.ts +2 -3
  100. package/dist/validate/builder.js +2 -3
  101. package/dist/validate/expectations.d.ts +1 -1
  102. package/dist/validate/index.d.ts +4 -2
  103. package/dist/validate/index.js +1 -0
  104. package/dist/validate/instance.d.ts +2 -3
  105. package/dist/validate/instance.js +1 -2
  106. package/dist/validate/model.d.ts +2 -3
  107. package/dist/validate/model.js +39 -44
  108. package/dist/validate/paths.d.ts +2 -3
  109. package/dist/validate/paths.js +1 -1
  110. package/dist/validate/pricing.d.ts +2 -3
  111. package/dist/validate/pricing.js +2 -3
  112. package/dist/validate/resolve.d.ts +1 -1
  113. package/dist/validate/resolve.js +1 -1
  114. package/dist/validate/ui.d.ts +2 -3
  115. package/dist/validate/ui.js +13 -4
  116. package/dist/validate/variants.d.ts +4 -5
  117. package/dist/validate/variants.js +4 -5
  118. package/package.json +17 -5
  119. package/dist/exception.d.ts +0 -13
  120. package/dist/validate/result.d.ts +0 -2
  121. package/dist/validate/result.js +0 -1
  122. /package/dist/{serialisable.d.ts → entities/serialisable.d.ts} +0 -0
  123. /package/dist/{serialisable.js → entities/serialisable.js} +0 -0
  124. /package/dist/{check.d.ts → errors/check.d.ts} +0 -0
  125. /package/dist/{check.js → errors/check.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  import * as v from 'valibot';
2
- import { paramable } from '../../references.js';
3
- import { serialisable } from '../../serialisable.js';
2
+ import { isParamable, paramable } from '../../references.js';
3
+ import { createEntityValidator } from '../kind.js';
4
+ import { serialisable } from '../serialisable.js';
4
5
  import { BuilderTagsSchema } from '../tags.js';
5
6
  import { BuilderUIDescribeSerialisedSchema } from './describe.js';
6
7
  import { BuilderUIPageSerialisedSchema } from './page.js';
@@ -34,3 +35,12 @@ export const BuilderUIItemSerialisedSchema = v.union([
34
35
  BuilderUIPagesSerialisedSchema
35
36
  ]);
36
37
  export const BuilderUIItemsSerialisedSchema = v.pipe(v.array(paramable(BuilderUIItemSerialisedSchema)), v.readonly());
38
+ export const validateUIPages = createEntityValidator('uiPages', BuilderUIPagesSerialisedSchema, (input, errors) => {
39
+ if (input.name.length === 0) {
40
+ errors.emptyName();
41
+ }
42
+ if (!isParamable(input.label) && input.label.length === 0) {
43
+ errors.emptyLabel();
44
+ }
45
+ });
46
+ export const validateUIItems = createEntityValidator('uiItems', BuilderUIItemsSerialisedSchema);
@@ -1,6 +1,6 @@
1
1
  import type { Paramable, ParamableSerialised } from '../../references';
2
- import type { BuilderExpectation, BuilderExpectations, BuilderExpectationsSerialised } from '../expectation';
3
2
  import type { CollectionNamesOf } from '../collection/index';
3
+ import type { BuilderExpectation, BuilderExpectations, BuilderExpectationsSerialised } from '../expectation';
4
4
  import type { BuilderModel, BuilderModelGeneric, BuilderModelStateAsserted, BuilderModelStateOf } from '../model/index';
5
5
  import type { BuilderTags } from '../tags';
6
6
  import type { BuilderUIValidInputsOf } from './input';
@@ -1,8 +1,8 @@
1
1
  import * as v from 'valibot';
2
- import { check } from '../../check.js';
2
+ import { check } from '../../errors/index.js';
3
3
  import { paramable } from '../../references.js';
4
- import { serialisable } from '../../serialisable.js';
5
4
  import { BuilderExpectationsSerialisedSchema } from '../expectation.js';
5
+ import { serialisable } from '../serialisable.js';
6
6
  import { BuilderTagsSchema } from '../tags.js';
7
7
  import { BuilderUIDescribe } from './describe.js';
8
8
  import { BuilderUIPage } from './page.js';
@@ -1,4 +1,4 @@
1
- import { check } from '../../check.js';
1
+ import { check } from '../../errors/index.js';
2
2
  import { BuilderModelSchema } from '../model/index.js';
3
3
  import { BuilderUI } from './ui.js';
4
4
  export function uis(...args) {
@@ -1,15 +1,19 @@
1
- import type { BuilderValidatedBrand } from '../validate/index';
2
- import type { BuilderComponentVariants, BuilderInstance, BuilderInstances } from '../instance';
1
+ import type { BuilderErrors } from '../errors/index';
2
+ import type { BuilderInstance, BuilderInstances, BuilderVariants } from '../instance';
3
3
  import type { Prettify } from '../prettify';
4
4
  import type { BuilderParameter, BuilderParameterSerialised, BuilderRef, BuilderRefSerialised } from '../references';
5
+ import type { BuilderValidatedBrand } from '../validate/index';
5
6
  import type { BuilderSerialised } from './builder/index';
6
- import type { BuilderCollectionConfigSerialised, BuilderCollectionSerialised, BuilderCollectionsSerialised } from './collection/index';
7
- import type { BuilderComponentConfigSerialised, BuilderComponentSerialised, BuilderComponentsSerialised } from './component/index';
7
+ import type { BuilderCollectionSerialised, BuilderCollectionsSerialised } from './collection/index';
8
+ import type { BuilderComponentSerialised, BuilderComponentsSerialised } from './component/index';
9
+ import type { BuilderEntityKind } from './kind';
8
10
  import type { BuilderModelSerialised } from './model/index';
9
- import type { BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionConfigSerialised } from './option/index';
11
+ import type { BuilderOptionSerialised, BuilderOptionsSerialised } from './option/index';
10
12
  import type { BuilderPricingSerialised } from './pricing/index';
11
- import type { BuilderUIDescribeSerialised, BuilderUIItemsSerialised, BuilderUIPageSerialised, BuilderUISerialised } from './ui/index';
12
- export type Validated<Input> = Input extends BuilderComponentVariants | BuilderInstance | BuilderModelSerialised | BuilderPricingSerialised | BuilderSerialised | BuilderUISerialised ? Validate<Input> & BuilderValidatedBrand : Validate<Input>;
13
+ import type { entitiesMap } from './serialise';
14
+ import type { BuilderUISerialised } from './ui/index';
15
+ import type * as v from 'valibot';
16
+ export type Validated<Input> = Input extends BuilderVariants | BuilderInstance | BuilderModelSerialised | BuilderPricingSerialised | BuilderSerialised | BuilderUISerialised ? Validate<Input> & BuilderValidatedBrand : Validate<Input>;
13
17
  type Validate<Input> = Input extends BuilderParameter<string> | BuilderParameterSerialised | BuilderRef | BuilderRefSerialised ? never : Input extends ReadonlyArray<unknown> ? ValidatedTuple<Input> : Input extends object ? {
14
18
  readonly [Key in keyof Input]: Validated<Input[Key]>;
15
19
  } : Input;
@@ -17,23 +21,27 @@ type ValidatedTuple<Input extends ReadonlyArray<unknown>> = Input extends readon
17
21
  infer Head,
18
22
  ...infer Rest extends ReadonlyArray<unknown>
19
23
  ] ? [Validated<Head>] extends [never] ? ValidatedTuple<Rest> : readonly [Validated<Head>, ...ValidatedTuple<Rest>] : Input extends readonly [] ? readonly [] : ReadonlyArray<Validated<Input[number]>>;
20
- export type BuilderValidated = Prettify<Validated<BuilderSerialised>>;
21
- export type BuilderModelValidated = Prettify<Validated<BuilderModelSerialised>>;
22
- export type BuilderUIValidated = Prettify<Validated<BuilderUISerialised>>;
24
+ export type BuilderValidatedMap = {
25
+ readonly [Kind in BuilderEntityKind]: Prettify<Validated<v.InferOutput<(typeof entitiesMap)[Kind]['serialised']>>>;
26
+ };
27
+ export type ValidationResult<Entity> = readonly [Entity, BuilderErrors];
28
+ export type BuilderValidated = BuilderValidatedMap['builder'];
29
+ export type BuilderModelValidated = BuilderValidatedMap['model'];
30
+ export type BuilderPricingValidated = BuilderValidatedMap['pricing'];
31
+ export type BuilderUIValidated = BuilderValidatedMap['ui'];
32
+ export type BuilderUIDescribeValidated = BuilderValidatedMap['uiDescribe'];
33
+ export type BuilderUIItemsValidated = BuilderValidatedMap['uiItems'];
34
+ export type BuilderUIPageValidated = BuilderValidatedMap['uiPage'];
23
35
  export type BuilderInstanceValidated = Prettify<Validated<BuilderInstance>>;
24
36
  export type BuilderInstancesValidated = Prettify<Validated<BuilderInstances>>;
25
- export type BuilderComponentVariantsValidated = Prettify<Validated<BuilderComponentVariants>>;
37
+ export type BuilderVariantsValidated = Prettify<Validated<BuilderVariants>>;
26
38
  export type BuilderOptionValidated = Prettify<Validated<BuilderOptionSerialised>>;
27
39
  export type BuilderOptionsValidated = Prettify<Validated<BuilderOptionsSerialised>>;
28
- export type BuilderOptionConfigValidated = Prettify<Validated<BuilderOptionConfigSerialised>>;
40
+ export type BuilderOptionConfigValidated = BuilderValidatedMap['select' | 'toggle'];
29
41
  export type BuilderComponentValidated = Prettify<Validated<BuilderComponentSerialised>>;
30
42
  export type BuilderComponentsValidated = Prettify<Validated<BuilderComponentsSerialised>>;
31
- export type BuilderComponentConfigValidated = Prettify<Validated<BuilderComponentConfigSerialised>>;
43
+ export type BuilderComponentConfigValidated = BuilderValidatedMap['componentConfig'];
32
44
  export type BuilderCollectionValidated = Prettify<Validated<BuilderCollectionSerialised>>;
33
45
  export type BuilderCollectionsValidated = Prettify<Validated<BuilderCollectionsSerialised>>;
34
- export type BuilderCollectionConfigValidated = Prettify<Validated<BuilderCollectionConfigSerialised>>;
35
- export type BuilderPricingValidated = Prettify<Validated<BuilderPricingSerialised>>;
36
- export type BuilderUIItemsValidated = Prettify<Validated<BuilderUIItemsSerialised>>;
37
- export type BuilderUIPageValidated = Prettify<Validated<BuilderUIPageSerialised>>;
38
- export type BuilderUIDescribeValidated = Prettify<Validated<BuilderUIDescribeSerialised>>;
46
+ export type BuilderCollectionConfigValidated = BuilderValidatedMap['collectionConfig'];
39
47
  export {};
@@ -1,7 +1,7 @@
1
- import type { BuilderPath, BuilderPaths } from '../paths';
2
1
  import type { BuilderPrimitive, BuilderPrimitives } from '../primitive';
3
2
  import type { BuilderParameter, BuilderParameterSerialised, Paramable } from '../references';
4
3
  import type { BuilderModelGeneric, BuilderModelState, BuilderModelStateOf } from './model/index';
4
+ import type { BuilderPath, BuilderPaths } from './paths';
5
5
  import * as v from 'valibot';
6
6
  export type BuilderEnableConfig<Payload = unknown> = {
7
7
  readonly type: 'enable';
@@ -112,6 +112,8 @@ export declare const BuilderWhenConfigSchema: v.SchemaWithPipe<readonly [v.Varia
112
112
  id: string;
113
113
  }>]>, v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>], undefined>;
114
114
  }, undefined>], undefined>, v.ReadonlyAction<{
115
+ type: "enable";
116
+ } | {
115
117
  type: "match";
116
118
  matchPath: readonly (string | number)[] | Readonly<{
117
119
  type: "parameter";
@@ -131,12 +133,11 @@ export declare const BuilderWhenConfigSchema: v.SchemaWithPipe<readonly [v.Varia
131
133
  type: "ref";
132
134
  id: string;
133
135
  }>;
134
- } | {
135
- type: "enable";
136
136
  }>]>;
137
137
  export type BuilderWhenConfig = v.InferOutput<typeof BuilderWhenConfigSchema>;
138
138
  export type BuilderWhenGeneric = BuilderWhen<unknown, unknown, unknown, unknown>;
139
139
  export declare const BuilderWhenSerialisedSchema: v.GenericSchema<BuilderWhenSerialised<unknown>>;
140
+ export declare function whenBranches<Leaf>(payload: unknown, schema: v.GenericSchema<Leaf>): ReadonlyArray<Leaf>;
140
141
  export declare function createSelectMapSerialisedSchema<Payload extends v.GenericSchema>(payloadSchema: Payload): v.GenericSchema<BuilderMatchSelectMap<v.InferOutput<Payload> | BuilderParameterSerialised>>;
141
142
  export declare function createWhenSerialisedSchema<Payload extends v.GenericSchema>(payloadSchema: Payload): v.GenericSchema<BuilderWhenSerialised<v.InferOutput<Payload>>>;
142
143
  export declare function createWhenFactories<Payload>(): {
@@ -1,7 +1,8 @@
1
1
  import * as v from 'valibot';
2
- import { BuilderPathSchema } from '../paths.js';
2
+ import { check } from '../errors/index.js';
3
3
  import { BuilderPrimitivesSchema } from '../primitive.js';
4
- import { paramable } from '../references.js';
4
+ import { isParamable, paramable } from '../references.js';
5
+ import { BuilderPathSchema } from './paths.js';
5
6
  export const BuilderWhenEnableSchema = v.object({
6
7
  type: v.literal('enable')
7
8
  });
@@ -15,6 +16,25 @@ export const BuilderWhenUnlessSchema = v.object({
15
16
  });
16
17
  export const BuilderWhenConfigSchema = v.pipe(v.variant('type', [BuilderWhenEnableSchema, BuilderWhenMatchSchema, BuilderWhenUnlessSchema]), v.readonly());
17
18
  export const BuilderWhenSerialisedSchema = createWhenSerialisedSchema(v.unknown());
19
+ export function whenBranches(payload, schema) {
20
+ if (check.is(schema, payload)) {
21
+ return [payload];
22
+ }
23
+ if (isParamable(payload)) {
24
+ return [];
25
+ }
26
+ check.assert(BuilderWhenSerialisedSchema, payload);
27
+ const when = payload;
28
+ switch (when.type) {
29
+ case 'enable':
30
+ case 'unless': {
31
+ return [when.payload];
32
+ }
33
+ case 'match': {
34
+ return Object.values(when.selectMap).filter((branch) => branch != null);
35
+ }
36
+ }
37
+ }
18
38
  export function createSelectMapSerialisedSchema(payloadSchema) {
19
39
  return v.pipe(v.record(v.string(), v.nullable(paramable(payloadSchema))), v.readonly());
20
40
  }
@@ -1,5 +1,5 @@
1
- import type { BuilderErrors } from './exception';
1
+ import type { BuilderErrors } from './errors/index';
2
2
  import * as v from 'valibot';
3
3
  export declare const BuilderEnvironmentSchema: v.PicklistSchema<["development", "staging", "production"], undefined>;
4
4
  export type BuilderEnvironment = v.InferOutput<typeof BuilderEnvironmentSchema>;
5
- export type BuilderEnvironmentResult<EntityType, Env extends BuilderEnvironment = 'production'> = Env extends 'development' ? readonly [EntityType, BuilderErrors] : readonly [EntityType, readonly never[]];
5
+ export type BuilderEnvironmentResult<EntityType, Env extends BuilderEnvironment = 'production'> = Env extends 'development' ? readonly [EntityType, BuilderErrors] : readonly [EntityType, ReadonlyArray<never>];
@@ -1,16 +1,25 @@
1
- import type { BuilderExpectationKind } from '../entities/index';
2
- import type { BuilderErrorLocation, BuilderErrors } from '../exception';
1
+ import type { BuilderEntityKind, BuilderExpectationKind } from '../entities/index';
3
2
  import type { BuilderInstance } from '../instance';
4
- export type BuilderInvalidInputTarget = 'builder' | 'model' | 'pricing' | 'ui' | 'variants';
5
- export type BuilderErrorInvalidPathReason = 'shape' | 'out-of-bounds' | 'missing-collection' | 'option-not-found';
6
- export type BuilderErrorInvalidPricingReason = 'scope' | 'nested-variants';
3
+ export type BuilderErrorLocation = ReadonlyArray<string | number>;
4
+ export declare function builderError<Kind extends string>(kind: Kind, location: BuilderErrorLocation): {
5
+ kind: Kind;
6
+ location: BuilderErrorLocation;
7
+ };
8
+ export type BuilderError = ReturnType<typeof builderError> & {
9
+ readonly [key: string]: unknown;
10
+ };
11
+ export type BuilderErrors = ReadonlyArray<BuilderError>;
7
12
  export declare class BuilderValidateErrors {
8
13
  #private;
9
14
  get errors(): BuilderErrors;
10
15
  scope<Result>(part: string | number, fn: () => Result): Result;
11
- invalidInput(target: BuilderInvalidInputTarget): {
12
- target: BuilderInvalidInputTarget;
13
- kind: "invalid-input";
16
+ invalidEntity(target: BuilderEntityKind): {
17
+ target: "string" | "number" | "boolean" | "builder" | "model" | "select" | "toggle" | "optionSelectMap" | "optionWhen" | "componentConfig" | "componentSelectMap" | "componentWhen" | "collectionConfig" | "collectionSelectMap" | "collectionWhen" | "ui" | "uiDescribe" | "uiItems" | "uiPage" | "uiPages" | "uiInput" | "pricing" | "pricingRates" | "expectations" | "paths" | "path";
18
+ kind: "invalid-entity";
19
+ location: BuilderErrorLocation;
20
+ };
21
+ invalidVariants(): {
22
+ kind: "invalid-variants";
14
23
  location: BuilderErrorLocation;
15
24
  };
16
25
  invalidOption(name: string, value: unknown): {
@@ -29,15 +38,14 @@ export declare class BuilderValidateErrors {
29
38
  kind: "duplicate-name";
30
39
  location: BuilderErrorLocation;
31
40
  };
32
- invalidCollectionBounds(name: string, min: number, max: number): {
33
- name: string;
41
+ invalidCollectionBounds(min: number, max: number): {
34
42
  min: number;
35
43
  max: number;
36
44
  kind: "invalid-collection-bounds";
37
45
  location: BuilderErrorLocation;
38
46
  };
39
- invalidPath(reason: BuilderErrorInvalidPathReason): {
40
- reason: BuilderErrorInvalidPathReason;
47
+ invalidPath(reason: string): {
48
+ reason: string;
41
49
  kind: "invalid-path";
42
50
  location: BuilderErrorLocation;
43
51
  };
@@ -46,6 +54,38 @@ export declare class BuilderValidateErrors {
46
54
  kind: "invalid-select-map-key";
47
55
  location: BuilderErrorLocation;
48
56
  };
57
+ invalidSelectDefault(value: string): {
58
+ value: string;
59
+ kind: "invalid-select-default";
60
+ location: BuilderErrorLocation;
61
+ };
62
+ invalidSelectLabel(key: string): {
63
+ key: string;
64
+ kind: "invalid-select-label";
65
+ location: BuilderErrorLocation;
66
+ };
67
+ invalidToggleDefault(value: unknown, valueType: string): {
68
+ value: unknown;
69
+ valueType: string;
70
+ kind: "invalid-toggle-default";
71
+ location: BuilderErrorLocation;
72
+ };
73
+ emptyLabel(): {
74
+ kind: "empty-label";
75
+ location: BuilderErrorLocation;
76
+ };
77
+ emptyInputs(): {
78
+ kind: "empty-inputs";
79
+ location: BuilderErrorLocation;
80
+ };
81
+ emptyItems(): {
82
+ kind: "empty-items";
83
+ location: BuilderErrorLocation;
84
+ };
85
+ emptyName(): {
86
+ kind: "empty-name";
87
+ location: BuilderErrorLocation;
88
+ };
49
89
  unboundParameter(name: string): {
50
90
  name: string;
51
91
  kind: "unbound-parameter";
@@ -110,8 +150,8 @@ export declare class BuilderValidateErrors {
110
150
  kind: "invalid-detail";
111
151
  location: BuilderErrorLocation;
112
152
  };
113
- invalidPricing(reason: BuilderErrorInvalidPricingReason): {
114
- reason: BuilderErrorInvalidPricingReason;
153
+ invalidPricing(reason: string): {
154
+ reason: string;
115
155
  kind: "invalid-pricing";
116
156
  location: BuilderErrorLocation;
117
157
  };
@@ -125,24 +165,6 @@ export declare class BuilderValidateErrors {
125
165
  location: BuilderErrorLocation;
126
166
  };
127
167
  }
128
- export type BuilderErrorInvalidInput = ReturnType<BuilderValidateErrors['invalidInput']>;
129
- export type BuilderErrorInvalidOption = ReturnType<BuilderValidateErrors['invalidOption']>;
130
- export type BuilderErrorInvalidCollection = ReturnType<BuilderValidateErrors['invalidCollection']>;
131
- export type BuilderErrorDuplicateName = ReturnType<BuilderValidateErrors['duplicateName']>;
132
- export type BuilderErrorInvalidCollectionBounds = ReturnType<BuilderValidateErrors['invalidCollectionBounds']>;
133
- export type BuilderErrorInvalidPath = ReturnType<BuilderValidateErrors['invalidPath']>;
134
- export type BuilderErrorInvalidSelectMapKey = ReturnType<BuilderValidateErrors['invalidSelectMapKey']>;
135
- export type BuilderErrorUnboundParameter = ReturnType<BuilderValidateErrors['unboundParameter']>;
136
- export type BuilderErrorMissingReference = ReturnType<BuilderValidateErrors['missingReference']>;
137
- export type BuilderErrorUnmetExpectation = ReturnType<BuilderValidateErrors['unmetExpectation']>;
138
- export type BuilderErrorUnvalidated = ReturnType<BuilderValidateErrors['unvalidated']>;
139
- export type BuilderErrorMissingComponent = ReturnType<BuilderValidateErrors['missingComponent']>;
140
- export type BuilderErrorUnexpectedComponent = ReturnType<BuilderValidateErrors['unexpectedComponent']>;
141
- export type BuilderErrorMissingVariant = ReturnType<BuilderValidateErrors['missingVariant']>;
142
- export type BuilderErrorInvalidVariant = ReturnType<BuilderValidateErrors['invalidVariant']>;
143
- export type BuilderErrorMissingDetail = ReturnType<BuilderValidateErrors['missingDetail']>;
144
- export type BuilderErrorUnexpectedDetail = ReturnType<BuilderValidateErrors['unexpectedDetail']>;
145
- export type BuilderErrorInvalidDetail = ReturnType<BuilderValidateErrors['invalidDetail']>;
146
- export type BuilderErrorInvalidPricing = ReturnType<BuilderValidateErrors['invalidPricing']>;
147
- export type BuilderErrorMissingRate = ReturnType<BuilderValidateErrors['missingRate']>;
148
- export type BuilderErrorNoComponents = ReturnType<BuilderValidateErrors['noComponents']>;
168
+ type ErrorMethodKey = Exclude<keyof BuilderValidateErrors, 'scope' | 'errors'>;
169
+ export type BuilderErrorKind = ReturnType<BuilderValidateErrors[ErrorMethodKey]>['kind'];
170
+ export {};
@@ -1,4 +1,6 @@
1
- import { builderError } from '../exception.js';
1
+ export function builderError(kind, location) {
2
+ return { kind, location };
3
+ }
2
4
  export class BuilderValidateErrors {
3
5
  #errors = [];
4
6
  #location = [];
@@ -14,12 +16,15 @@ export class BuilderValidateErrors {
14
16
  this.#location = this.#location.slice(0, -1);
15
17
  }
16
18
  }
17
- invalidInput(target) {
19
+ invalidEntity(target) {
18
20
  return this.#addError({
19
- ...builderError('invalid-input', this.#location),
21
+ ...builderError('invalid-entity', this.#location),
20
22
  target
21
23
  });
22
24
  }
25
+ invalidVariants() {
26
+ return this.#addError(builderError('invalid-variants', this.#location));
27
+ }
23
28
  invalidOption(name, value) {
24
29
  return this.#addError({
25
30
  ...builderError('invalid-option', this.#location),
@@ -39,10 +44,9 @@ export class BuilderValidateErrors {
39
44
  name
40
45
  });
41
46
  }
42
- invalidCollectionBounds(name, min, max) {
47
+ invalidCollectionBounds(min, max) {
43
48
  return this.#addError({
44
49
  ...builderError('invalid-collection-bounds', this.#location),
45
- name,
46
50
  min,
47
51
  max
48
52
  });
@@ -59,6 +63,37 @@ export class BuilderValidateErrors {
59
63
  key
60
64
  });
61
65
  }
66
+ invalidSelectDefault(value) {
67
+ return this.#addError({
68
+ ...builderError('invalid-select-default', this.#location),
69
+ value
70
+ });
71
+ }
72
+ invalidSelectLabel(key) {
73
+ return this.#addError({
74
+ ...builderError('invalid-select-label', this.#location),
75
+ key
76
+ });
77
+ }
78
+ invalidToggleDefault(value, valueType) {
79
+ return this.#addError({
80
+ ...builderError('invalid-toggle-default', this.#location),
81
+ value,
82
+ valueType
83
+ });
84
+ }
85
+ emptyLabel() {
86
+ return this.#addError(builderError('empty-label', this.#location));
87
+ }
88
+ emptyInputs() {
89
+ return this.#addError(builderError('empty-inputs', this.#location));
90
+ }
91
+ emptyItems() {
92
+ return this.#addError(builderError('empty-items', this.#location));
93
+ }
94
+ emptyName() {
95
+ return this.#addError(builderError('empty-name', this.#location));
96
+ }
62
97
  unboundParameter(name) {
63
98
  return this.#addError({
64
99
  ...builderError('unbound-parameter', this.#location),
@@ -0,0 +1,5 @@
1
+ import type { BuilderErrors } from './errors';
2
+ export declare class BuilderException extends globalThis.Error {
3
+ readonly errors: BuilderErrors;
4
+ constructor(errors: BuilderErrors, message?: string);
5
+ }
@@ -1,6 +1,3 @@
1
- export function builderError(kind, location) {
2
- return { kind, location };
3
- }
4
1
  export class BuilderException extends globalThis.Error {
5
2
  errors;
6
3
  constructor(errors, message = '') {
@@ -0,0 +1,4 @@
1
+ export type { BuilderError, BuilderErrorKind, BuilderErrorLocation, BuilderErrors } from './errors';
2
+ export { check } from './check.js';
3
+ export { BuilderValidateErrors } from './errors.js';
4
+ export { BuilderException } from './exception.js';
@@ -0,0 +1,3 @@
1
+ export { check } from './check.js';
2
+ export { BuilderValidateErrors } from './errors.js';
3
+ export { BuilderException } from './exception.js';
package/dist/index.d.ts CHANGED
@@ -1,27 +1,27 @@
1
- export type { BB, BBOptions } from './bb';
2
- export type { Builder, BuilderBindings, BuilderBindingsSerialised, BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSerialised, BuilderCollections, BuilderCollectionSerialised, BuilderCollectionsSerialised, BuilderCollectionWhen, BuilderCollectionWhenSerialised, BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSerialised, BuilderComponentField, BuilderComponentFields, BuilderComponentFieldSerialised, BuilderComponentFieldsSerialised, BuilderComponentFieldValueType, BuilderComponents, BuilderComponentSerialised, BuilderComponentsSerialised, BuilderComponentVariantsValidated, BuilderComponentWhen, BuilderComponentWhenSerialised, BuilderDescription, BuilderDescriptionItem, BuilderEnableConfig, BuilderEntityKind, BuilderEntitySerialised, BuilderExpectation, BuilderExpectationKind, BuilderExpectations, BuilderExpectationSerialised, BuilderExpectationsSerialised, BuilderInstanceOf, BuilderInstanceValidated, BuilderMatchConfig, BuilderMatchSelectMap, BuilderModel, BuilderModels, BuilderModelSerialised, BuilderModelValidated, BuilderOption, BuilderOptions, BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionConfig, BuilderOptionConfigSerialised, BuilderOptionWhen, BuilderOptionWhenSerialised, BuilderPricing, BuilderPricingExpression, BuilderPricingLookupKey, BuilderPricingReduce, BuilderPricingSerialised, BuilderReference, BuilderReferences, BuilderSelectConfig, BuilderSelectConfigLabels, BuilderSelectConfigSerialised, BuilderSelectConfigValues, BuilderSerialised, BuilderTags, BuilderToggleConfig, BuilderToggleConfigSerialised, BuilderToggleValueType, BuilderUI, BuilderUIDescribe, BuilderUIDescribeSerialised, BuilderUIInput, BuilderUIInputMetadata, BuilderUIInputMetadataSerialised, BuilderUIInputs, BuilderUIInputSerialised, BuilderUIInputsSerialised, BuilderUIItem, BuilderUIItems, BuilderUIItemsSerialised, BuilderUIPage, BuilderUIPages, BuilderUIPageSerialised, BuilderUIPagesSerialised, BuilderUIs, BuilderUISerialised, BuilderUIsSerialised, BuilderUIValidated, BuilderUnlessConfig, BuilderValidated, BuilderWhen, BuilderWhenConfig, BuilderWhenSerialised } from './entities/index';
1
+ export type { BB, BBOptions, BuilderEntityValidators } from './bb';
2
+ export type { Builder, BuilderBindings, BuilderBindingsSerialised, BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSerialised, BuilderCollections, BuilderCollectionSerialised, BuilderCollectionsSerialised, BuilderCollectionWhen, BuilderCollectionWhenSerialised, BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSerialised, BuilderComponentField, BuilderComponentFields, BuilderComponentFieldSerialised, BuilderComponentFieldsSerialised, BuilderComponentFieldValueType, BuilderComponents, BuilderComponentSerialised, BuilderComponentsSerialised, BuilderComponentWhen, BuilderComponentWhenSerialised, BuilderDescription, BuilderDescriptionItem, BuilderEnableConfig, BuilderEntityKind, BuilderEntitySerialised, BuilderExpectation, BuilderExpectationKind, BuilderExpectations, BuilderExpectationSerialised, BuilderExpectationsSerialised, BuilderInstanceOf, BuilderInstanceValidated, BuilderMatchConfig, BuilderMatchSelectMap, BuilderModel, BuilderModels, BuilderModelSerialised, BuilderModelValidated, BuilderOption, BuilderOptionConfig, BuilderOptionConfigSerialised, BuilderOptions, BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionWhen, BuilderOptionWhenSerialised, BuilderPath, BuilderPaths, BuilderPricing, BuilderPricingExpression, BuilderPricingLookupKey, BuilderPricingReduce, BuilderPricingSerialised, BuilderReference, BuilderReferences, BuilderSelectConfig, BuilderSelectConfigLabels, BuilderSelectConfigSerialised, BuilderSelectConfigValues, BuilderSerialised, BuilderTags, BuilderToggleConfig, BuilderToggleConfigSerialised, BuilderToggleValueType, BuilderUI, BuilderUIDescribe, BuilderUIDescribeSerialised, BuilderUIInput, BuilderUIInputMetadata, BuilderUIInputMetadataSerialised, BuilderUIInputs, BuilderUIInputSerialised, BuilderUIInputsSerialised, BuilderUIItem, BuilderUIItems, BuilderUIItemsSerialised, BuilderUIPage, BuilderUIPages, BuilderUIPageSerialised, BuilderUIPagesSerialised, BuilderUIs, BuilderUISerialised, BuilderUIsSerialised, BuilderUIValidated, BuilderUnlessConfig, BuilderValidated, BuilderVariantsValidated, BuilderWhen, BuilderWhenConfig, BuilderWhenSerialised } from './entities/index';
3
3
  export type { BuilderEnvironment } from './environment';
4
- export type { BuilderError, BuilderErrorBase, BuilderErrorLocation, BuilderErrors } from './exception';
5
- export type { BuilderComponentVariants, BuilderInstance, BuilderInstanceInput, BuilderInstances, BuilderVariant, BuilderVariants } from './instance';
4
+ export type { BuilderError, BuilderErrorLocation, BuilderErrors } from './errors/index';
5
+ export type { BuilderComponentVariant, BuilderComponentVariants, BuilderInstance, BuilderInstanceInput, BuilderInstances, BuilderVariants } from './instance';
6
6
  export type { BuilderOrder, BuilderRenderMetadata, BuilderRenderOption, BuilderRenderOptions, BuilderRenderPage, BuilderRenderPages, BuilderRenderResult, BuilderRenderUpdate } from './mappers/index';
7
- export type { BuilderComponentVariantsValidationResult, BuilderErrorDuplicateName, BuilderErrorInvalidCollection, BuilderErrorInvalidCollectionBounds, BuilderErrorInvalidDetail, BuilderErrorInvalidInput, BuilderErrorInvalidOption, BuilderErrorInvalidPath, BuilderErrorInvalidPathReason, BuilderErrorInvalidPricing, BuilderErrorInvalidSelectMapKey, BuilderErrorInvalidPricingReason, BuilderErrorInvalidVariant, BuilderErrorMissingComponent, BuilderErrorMissingDetail, BuilderErrorMissingRate, BuilderErrorMissingReference, BuilderErrorMissingVariant, BuilderErrorUnboundParameter, BuilderErrorUnexpectedComponent, BuilderErrorUnexpectedDetail, BuilderErrorUnmetExpectation, BuilderErrorUnvalidated, BuilderInstanceValidationResult, BuilderModelValidationResult, BuilderPricingValidationResult, BuilderUIValidationResult, BuilderValidationResult, BuilderVariantsValidationOptions } from './validate/index';
8
- export type { BuilderPath, BuilderPaths } from './paths';
9
7
  export type { BuilderPrimitive, BuilderPrimitives } from './primitive';
10
8
  export type { BuilderParameter, BuilderParameterSerialised, BuilderRef, Paramable, ParamableSerialised } from './references';
9
+ export type { BuilderErrorKind, BuilderInstanceValidationResult, BuilderModelValidationResult, BuilderPricingValidationResult, BuilderUIValidationResult, BuilderValidationResult, BuilderVariantsValidationOptions, BuilderVariantsValidationResult } from './validate/index';
11
10
  import { collectionConfig, collectionExpectation, componentConfig, componentExpectation, optionExpectation, uis } from './entities/index.js';
12
11
  export { bb } from './bb.js';
13
- export { builder, detailBoolean, detailNumber, detailString, input, model, parameter, pricing, ref, select, serialise, toggleBoolean, toggleNumber, toggleString } from './entities/index.js';
14
- export { BuilderException } from './exception.js';
12
+ export { builder, detailBoolean, detailNumber, detailString, input, model, pricing, select, serialise, toggleBoolean, toggleNumber, toggleString } from './entities/index.js';
13
+ export { BuilderException } from './errors/index.js';
14
+ export { parameter, ref } from './references.js';
15
15
  export { ordinal } from './mappers/index.js';
16
16
  export declare const collection: typeof collectionConfig & {
17
17
  enable: <const Values extends import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import("./entities/model").BuilderModelGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>>(values: Values) => import(".").BuilderEnableConfig<Values>;
18
- match: <const MatchPayload extends import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import("./entities/model").BuilderModelGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>, const MatchPath extends import("./references").Paramable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Paramable<import(".").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import("./entities/model").BuilderModelGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import(".").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
19
- unless: <const Values extends import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import("./entities/model").BuilderModelGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>, const UnlessPath extends import("./references").Paramable<import("./paths").BuilderPath>>(unlessPath: UnlessPath, disabledValues: import("./primitive").BuilderPrimitives, values: Values) => import(".").BuilderUnlessConfig<Values, UnlessPath>;
18
+ match: <const MatchPayload extends import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import("./entities/model").BuilderModelGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>, const MatchPath extends import("./references").Paramable<import(".").BuilderPath>, const SelectMap extends import("./references").Paramable<import(".").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import("./entities/model").BuilderModelGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import(".").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
19
+ unless: <const Values extends import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import("./entities/model").BuilderModelGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>, const UnlessPath extends import("./references").Paramable<import(".").BuilderPath>>(unlessPath: UnlessPath, disabledValues: import("./primitive").BuilderPrimitives, values: Values) => import(".").BuilderUnlessConfig<Values, UnlessPath>;
20
20
  };
21
21
  export declare const component: typeof componentConfig & {
22
22
  enable: <const Payload extends import("./references").Paramable<import(".").BuilderComponentConfig>>(payload?: Payload) => import(".").BuilderEnableConfig<Payload>;
23
- match: <const Payload extends import("./references").Paramable<import(".").BuilderComponentConfig>, const MatchPath extends import("./references").Paramable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Paramable<import(".").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderComponentConfig>>>>(matchPath: MatchPath, selectMap: SelectMap) => import(".").BuilderMatchConfig<Payload, MatchPath, SelectMap>;
24
- unless: <const UnlessPath extends import("./references").Paramable<import("./paths").BuilderPath>, const Payload extends import("./references").Paramable<import(".").BuilderComponentConfig>>(unlessPath: UnlessPath, disabledValues: import("./primitive").BuilderPrimitives, payload?: Payload) => import(".").BuilderUnlessConfig<Payload, UnlessPath>;
23
+ match: <const Payload extends import("./references").Paramable<import(".").BuilderComponentConfig>, const MatchPath extends import("./references").Paramable<import(".").BuilderPath>, const SelectMap extends import("./references").Paramable<import(".").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderComponentConfig>>>>(matchPath: MatchPath, selectMap: SelectMap) => import(".").BuilderMatchConfig<Payload, MatchPath, SelectMap>;
24
+ unless: <const UnlessPath extends import("./references").Paramable<import(".").BuilderPath>, const Payload extends import("./references").Paramable<import(".").BuilderComponentConfig>>(unlessPath: UnlessPath, disabledValues: import("./primitive").BuilderPrimitives, payload?: Payload) => import(".").BuilderUnlessConfig<Payload, UnlessPath>;
25
25
  };
26
26
  export declare const has: {
27
27
  collection: typeof collectionExpectation;
@@ -30,7 +30,7 @@ export declare const has: {
30
30
  };
31
31
  export declare const option: {
32
32
  enable: <const Values extends import("./references").Paramable<import(".").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>>(values: Values) => import(".").BuilderEnableConfig<Values>;
33
- match: <const MatchPayload extends import("./references").Paramable<import(".").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>, const MatchPath extends import("./references").Paramable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Paramable<import(".").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import(".").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
34
- unless: <const Values extends import("./references").Paramable<import(".").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>, const UnlessPath extends import("./references").Paramable<import("./paths").BuilderPath>>(unlessPath: UnlessPath, disabledValues: import("./primitive").BuilderPrimitives, values: Values) => import(".").BuilderUnlessConfig<Values, UnlessPath>;
33
+ match: <const MatchPayload extends import("./references").Paramable<import(".").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>, const MatchPath extends import("./references").Paramable<import(".").BuilderPath>, const SelectMap extends import("./references").Paramable<import(".").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import(".").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
34
+ unless: <const Values extends import("./references").Paramable<import(".").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>, const UnlessPath extends import("./references").Paramable<import(".").BuilderPath>>(unlessPath: UnlessPath, disabledValues: import("./primitive").BuilderPrimitives, values: Values) => import(".").BuilderUnlessConfig<Values, UnlessPath>;
35
35
  };
36
36
  export declare const ui: typeof uis;
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { collectionConfig, collectionExpectation, collectionWhen, componentConfig, componentExpectation, componentWhen, optionExpectation, optionWhen, uis } from './entities/index.js';
2
2
  export { bb } from './bb.js';
3
- export { builder, detailBoolean, detailNumber, detailString, input, model, parameter, pricing, ref, select, serialise, toggleBoolean, toggleNumber, toggleString } from './entities/index.js';
4
- export { BuilderException } from './exception.js';
3
+ export { builder, detailBoolean, detailNumber, detailString, input, model, pricing, select, serialise, toggleBoolean, toggleNumber, toggleString } from './entities/index.js';
4
+ export { BuilderException } from './errors/index.js';
5
+ export { parameter, ref } from './references.js';
5
6
  export { ordinal } from './mappers/index.js';
6
7
  export const collection = Object.assign(collectionConfig, {
7
8
  ...collectionWhen
@@ -1,5 +1,5 @@
1
+ import type { BuilderPrimitive } from './primitive';
1
2
  import * as v from 'valibot';
2
- import { type BuilderPrimitive } from './primitive.js';
3
3
  export type BuilderInstance = {
4
4
  readonly [key: string]: BuilderPrimitive | BuilderInstances;
5
5
  };
@@ -7,7 +7,7 @@ export declare const BuilderInstanceSchema: v.GenericSchema<BuilderInstance>;
7
7
  export declare const BuilderInstancesSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.GenericSchema<BuilderInstance>, undefined>, v.ReadonlyAction<BuilderInstance[]>]>;
8
8
  export type BuilderInstances = v.InferOutput<typeof BuilderInstancesSchema>;
9
9
  export type BuilderInstanceInput = Readonly<Record<string, unknown>>;
10
- export declare const BuilderVariantSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
10
+ export declare const BuilderComponentVariantSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
11
11
  readonly instance: v.GenericSchema<BuilderInstance>;
12
12
  readonly details: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.NullableSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, undefined>, undefined>;
13
13
  readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
@@ -18,8 +18,8 @@ export declare const BuilderVariantSchema: v.SchemaWithPipe<readonly [v.ObjectSc
18
18
  } | undefined;
19
19
  tags?: readonly string[] | undefined;
20
20
  }>]>;
21
- export type BuilderVariant = v.InferOutput<typeof BuilderVariantSchema>;
22
- export declare const BuilderVariantsSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
21
+ export type BuilderComponentVariant = v.InferOutput<typeof BuilderComponentVariantSchema>;
22
+ export declare const BuilderComponentVariantsSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
23
23
  readonly instance: v.GenericSchema<BuilderInstance>;
24
24
  readonly details: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.NullableSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, undefined>, undefined>;
25
25
  readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
@@ -36,8 +36,8 @@ export declare const BuilderVariantsSchema: v.SchemaWithPipe<readonly [v.ArraySc
36
36
  } | undefined;
37
37
  tags?: readonly string[] | undefined;
38
38
  }>[]>]>;
39
- export type BuilderVariants = v.InferOutput<typeof BuilderVariantsSchema>;
40
- export declare const BuilderComponentVariantsSchema: v.SchemaWithPipe<readonly [v.RecordSchema<v.StringSchema<undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
39
+ export type BuilderComponentVariants = v.InferOutput<typeof BuilderComponentVariantsSchema>;
40
+ export declare const BuilderVariantsSchema: v.SchemaWithPipe<readonly [v.RecordSchema<v.StringSchema<undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
41
41
  readonly instance: v.GenericSchema<BuilderInstance>;
42
42
  readonly details: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.NullableSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, undefined>, undefined>;
43
43
  readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.StringSchema<undefined>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
@@ -62,4 +62,4 @@ export declare const BuilderComponentVariantsSchema: v.SchemaWithPipe<readonly [
62
62
  tags?: readonly string[] | undefined;
63
63
  }>[];
64
64
  }>]>;
65
- export type BuilderComponentVariants = v.InferOutput<typeof BuilderComponentVariantsSchema>;
65
+ export type BuilderVariants = v.InferOutput<typeof BuilderVariantsSchema>;
package/dist/instance.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import * as v from 'valibot';
2
+ import { BuilderTagsSchema } from './entities/index.js';
2
3
  import { BuilderPrimitiveSchema } from './primitive.js';
3
- import { BuilderTagsSchema } from './entities/tags.js';
4
4
  export const BuilderInstanceSchema = v.pipe(v.record(v.string(), v.union([BuilderPrimitiveSchema, v.lazy(() => BuilderInstancesSchema)])), v.readonly());
5
5
  export const BuilderInstancesSchema = v.pipe(v.array(BuilderInstanceSchema), v.readonly());
6
- export const BuilderVariantSchema = v.pipe(v.object({
6
+ export const BuilderComponentVariantSchema = v.pipe(v.object({
7
7
  instance: BuilderInstanceSchema,
8
8
  details: v.optional(v.record(v.string(), BuilderPrimitiveSchema)),
9
9
  tags: v.optional(BuilderTagsSchema)
10
10
  }), v.readonly());
11
- export const BuilderVariantsSchema = v.pipe(v.array(BuilderVariantSchema), v.readonly());
12
- export const BuilderComponentVariantsSchema = v.pipe(v.record(v.string(), BuilderVariantsSchema), v.readonly());
11
+ export const BuilderComponentVariantsSchema = v.pipe(v.array(BuilderComponentVariantSchema), v.readonly());
12
+ export const BuilderVariantsSchema = v.pipe(v.record(v.string(), BuilderComponentVariantsSchema), v.readonly());
@@ -1,5 +1,5 @@
1
- import { check } from '../check.js';
2
1
  import { modelsMerge, optionValueSchema } from '../entities/index.js';
2
+ import { check } from '../errors/index.js';
3
3
  import { BuilderInstanceSchema, BuilderInstancesSchema } from '../instance.js';
4
4
  import { resolveCollection, resolveOption } from './resolve.js';
5
5
  export function createInstance(entity, partial = {}, references = []) {
@@ -1,6 +1,6 @@
1
- import type { BuilderComponentVariantsValidated, BuilderInstanceValidated, BuilderModelValidated, BuilderReferences } from '../entities/index';
2
- import type { BuilderVariant } from '../instance';
1
+ import type { BuilderInstanceValidated, BuilderModelValidated, BuilderReferences, BuilderVariantsValidated } from '../entities/index';
2
+ import type { BuilderComponentVariant } from '../instance';
3
3
  export interface BuilderOrder {
4
- readonly [key: string]: BuilderVariant | BuilderOrder | ReadonlyArray<BuilderOrder> | null;
4
+ readonly [key: string]: BuilderComponentVariant | BuilderOrder | ReadonlyArray<BuilderOrder> | null;
5
5
  }
6
- export declare function order(model: BuilderModelValidated, instance: BuilderInstanceValidated, variants: BuilderComponentVariantsValidated, references?: BuilderReferences): BuilderOrder;
6
+ export declare function order(model: BuilderModelValidated, instance: BuilderInstanceValidated, variants: BuilderVariantsValidated, references?: BuilderReferences): BuilderOrder;
@@ -1,4 +1,4 @@
1
- import { check } from '../check.js';
1
+ import { check } from '../errors/index.js';
2
2
  import { BuilderInstancesSchema } from '../instance.js';
3
3
  import { resolveCollection, resolveComponent } from './resolve.js';
4
4
  export function order(model, instance, variants, references = []) {