@builder-builder/builder 0.0.10 → 0.0.11

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 (191) hide show
  1. package/dist/bb.d.ts +28 -0
  2. package/dist/bb.js +49 -0
  3. package/dist/check.d.ts +1 -1
  4. package/dist/check.js +4 -2
  5. package/dist/entities/builder/bind.d.ts +4 -85
  6. package/dist/entities/builder/bind.js +1 -9
  7. package/dist/entities/builder/builder.d.ts +17 -509
  8. package/dist/entities/builder/builder.js +19 -79
  9. package/dist/entities/builder/factory.d.ts +7 -0
  10. package/dist/entities/builder/factory.js +4 -0
  11. package/dist/entities/builder/index.d.ts +3 -6
  12. package/dist/entities/builder/index.js +1 -2
  13. package/dist/entities/collection/collection.d.ts +69 -19
  14. package/dist/entities/collection/collection.js +7 -25
  15. package/dist/entities/collection/config.d.ts +38 -1095
  16. package/dist/entities/collection/config.js +8 -8
  17. package/dist/entities/collection/expectation.d.ts +8 -4
  18. package/dist/entities/collection/index.d.ts +2 -2
  19. package/dist/entities/collection/when.d.ts +5 -4
  20. package/dist/entities/component/component.d.ts +264 -293
  21. package/dist/entities/component/component.js +5 -5
  22. package/dist/entities/component/details.d.ts +32 -57
  23. package/dist/entities/component/details.js +8 -8
  24. package/dist/entities/component/expectation.d.ts +7 -4
  25. package/dist/entities/component/expectation.js +0 -3
  26. package/dist/entities/component/field.d.ts +50 -0
  27. package/dist/entities/component/field.js +41 -0
  28. package/dist/entities/component/index.d.ts +4 -2
  29. package/dist/entities/component/index.js +2 -1
  30. package/dist/entities/component/when.d.ts +1 -1
  31. package/dist/entities/component/when.js +2 -2
  32. package/dist/entities/entry.d.ts +4 -0
  33. package/dist/entities/expectation.d.ts +10 -22
  34. package/dist/entities/expectation.js +2 -7
  35. package/dist/entities/index.d.ts +20 -17
  36. package/dist/entities/index.js +9 -8
  37. package/dist/entities/kind.d.ts +8 -5
  38. package/dist/entities/kind.js +3 -4
  39. package/dist/entities/model/bind.d.ts +83 -0
  40. package/dist/entities/model/expectation.d.ts +16 -0
  41. package/dist/entities/model/index.d.ts +7 -0
  42. package/dist/entities/model/index.js +2 -0
  43. package/dist/entities/model/methods.d.ts +57 -0
  44. package/dist/entities/{builder → model}/methods.js +8 -8
  45. package/dist/entities/model/model.d.ts +39 -0
  46. package/dist/entities/model/model.js +73 -0
  47. package/dist/entities/model/models.d.ts +39 -0
  48. package/dist/entities/model/models.js +14 -0
  49. package/dist/entities/{builder → model}/state.d.ts +10 -10
  50. package/dist/entities/option/index.d.ts +1 -1
  51. package/dist/entities/option/index.js +1 -1
  52. package/dist/entities/option/option.d.ts +210 -209
  53. package/dist/entities/option/option.js +5 -5
  54. package/dist/entities/option/select.d.ts +2 -12
  55. package/dist/entities/option/select.js +6 -3
  56. package/dist/entities/option/toggle.d.ts +2 -9
  57. package/dist/entities/option/toggle.js +3 -3
  58. package/dist/entities/option/values.d.ts +3 -21
  59. package/dist/entities/option/values.js +8 -2
  60. package/dist/entities/option/when.d.ts +5 -4
  61. package/dist/entities/refs.d.ts +6 -0
  62. package/dist/entities/refs.js +1 -0
  63. package/dist/entities/serialise.d.ts +388 -2919
  64. package/dist/entities/serialise.js +116 -17
  65. package/dist/entities/ui/describe.d.ts +22 -31
  66. package/dist/entities/ui/describe.js +1 -1
  67. package/dist/entities/ui/index.d.ts +2 -5
  68. package/dist/entities/ui/index.js +1 -2
  69. package/dist/entities/ui/page.d.ts +22 -31
  70. package/dist/entities/ui/page.js +1 -1
  71. package/dist/entities/ui/pages.d.ts +11 -8
  72. package/dist/entities/ui/pages.js +1 -1
  73. package/dist/entities/ui/ui.d.ts +22 -1194
  74. package/dist/entities/ui/ui.js +16 -28
  75. package/dist/entities/ui/uis.d.ts +5 -15
  76. package/dist/entities/ui/uis.js +12 -18
  77. package/dist/entities/validated.d.ts +35 -0
  78. package/dist/entities/validated.js +1 -0
  79. package/dist/entities/when.d.ts +64 -56
  80. package/dist/entities/when.js +1 -0
  81. package/dist/environment.d.ts +5 -0
  82. package/dist/environment.js +2 -0
  83. package/dist/exception.d.ts +8 -3
  84. package/dist/exception.js +3 -0
  85. package/dist/index.d.ts +21 -28
  86. package/dist/index.js +5 -13
  87. package/dist/instance.d.ts +56 -0
  88. package/dist/instance.js +10 -0
  89. package/dist/mappers/index.d.ts +7 -7
  90. package/dist/mappers/index.js +5 -4
  91. package/dist/mappers/instance.d.ts +3 -0
  92. package/dist/mappers/instance.js +35 -0
  93. package/dist/mappers/order.d.ts +6 -0
  94. package/dist/mappers/order.js +22 -0
  95. package/dist/mappers/render/pages.d.ts +4 -4
  96. package/dist/mappers/render/render.d.ts +2 -3
  97. package/dist/mappers/render/render.js +83 -78
  98. package/dist/mappers/resolve.d.ts +5 -9
  99. package/dist/mappers/resolve.js +25 -33
  100. package/dist/mappers/variants/index.d.ts +1 -0
  101. package/dist/mappers/variants/index.js +1 -0
  102. package/dist/mappers/variants/option-graph.d.ts +19 -0
  103. package/dist/mappers/{models → variants}/option-graph.js +33 -22
  104. package/dist/mappers/variants/variants.d.ts +3 -0
  105. package/dist/mappers/variants/variants.js +57 -0
  106. package/dist/private.d.ts +4 -0
  107. package/dist/private.js +4 -0
  108. package/dist/references.d.ts +13 -48
  109. package/dist/references.js +6 -14
  110. package/dist/serialisable.d.ts +1 -9
  111. package/dist/serialisable.js +2 -3
  112. package/dist/validate/brand.d.ts +14 -0
  113. package/dist/validate/brand.js +17 -0
  114. package/dist/validate/builder.d.ts +4 -0
  115. package/dist/validate/builder.js +27 -0
  116. package/dist/validate/expectations.d.ts +10 -0
  117. package/dist/validate/expectations.js +12 -0
  118. package/dist/validate/index.d.ts +18 -0
  119. package/dist/validate/index.js +9 -0
  120. package/dist/validate/instance.d.ts +19 -0
  121. package/dist/validate/instance.js +46 -0
  122. package/dist/validate/model.d.ts +36 -0
  123. package/dist/validate/model.js +196 -0
  124. package/dist/validate/resolve.d.ts +16 -0
  125. package/dist/validate/resolve.js +91 -0
  126. package/dist/validate/result.d.ts +8 -0
  127. package/dist/validate/result.js +4 -0
  128. package/dist/validate/ui.d.ts +8 -0
  129. package/dist/validate/ui.js +77 -0
  130. package/dist/validate/variants.d.ts +59 -0
  131. package/dist/validate/variants.js +102 -0
  132. package/package.json +5 -4
  133. package/dist/entities/bind.d.ts +0 -4
  134. package/dist/entities/bind.js +0 -44
  135. package/dist/entities/builder/builders.d.ts +0 -35
  136. package/dist/entities/builder/builders.js +0 -19
  137. package/dist/entities/builder/expectation.d.ts +0 -12
  138. package/dist/entities/builder/methods.d.ts +0 -58
  139. package/dist/entities/builder/validate.d.ts +0 -3
  140. package/dist/entities/builder/validate.js +0 -108
  141. package/dist/entities/errors.d.ts +0 -21
  142. package/dist/entities/ui/bind.d.ts +0 -10
  143. package/dist/entities/ui/bind.js +0 -9
  144. package/dist/entities/ui/validate.d.ts +0 -8
  145. package/dist/entities/ui/validate.js +0 -21
  146. package/dist/entities/validate.d.ts +0 -28
  147. package/dist/mappers/assert/builder.d.ts +0 -2
  148. package/dist/mappers/assert/builder.js +0 -46
  149. package/dist/mappers/assert/expectation.d.ts +0 -2
  150. package/dist/mappers/assert/expectation.js +0 -23
  151. package/dist/mappers/assert/index.d.ts +0 -6
  152. package/dist/mappers/assert/index.js +0 -4
  153. package/dist/mappers/assert/model.d.ts +0 -13
  154. package/dist/mappers/assert/model.js +0 -47
  155. package/dist/mappers/assert/models.d.ts +0 -33
  156. package/dist/mappers/assert/models.js +0 -74
  157. package/dist/mappers/assert/ui.d.ts +0 -2
  158. package/dist/mappers/assert/ui.js +0 -22
  159. package/dist/mappers/instance/index.d.ts +0 -1
  160. package/dist/mappers/instance/index.js +0 -1
  161. package/dist/mappers/instance/instance.d.ts +0 -4
  162. package/dist/mappers/instance/instance.js +0 -33
  163. package/dist/mappers/models/component-graph.d.ts +0 -9
  164. package/dist/mappers/models/component-graph.js +0 -51
  165. package/dist/mappers/models/graph.d.ts +0 -12
  166. package/dist/mappers/models/graph.js +0 -17
  167. package/dist/mappers/models/index.d.ts +0 -1
  168. package/dist/mappers/models/index.js +0 -1
  169. package/dist/mappers/models/models.d.ts +0 -3
  170. package/dist/mappers/models/models.js +0 -37
  171. package/dist/mappers/models/option-graph.d.ts +0 -9
  172. package/dist/mappers/order/index.d.ts +0 -2
  173. package/dist/mappers/order/index.js +0 -1
  174. package/dist/mappers/order/order.d.ts +0 -14
  175. package/dist/mappers/order/order.js +0 -31
  176. package/dist/mappers/refs.d.ts +0 -12
  177. package/dist/mappers/refs.js +0 -36
  178. package/dist/model.d.ts +0 -35
  179. package/dist/model.js +0 -9
  180. package/dist/walker/index.d.ts +0 -2
  181. package/dist/walker/index.js +0 -1
  182. package/dist/walker/walkable.d.ts +0 -4
  183. package/dist/walker/walkable.js +0 -4
  184. package/dist/walker/walker.d.ts +0 -26
  185. package/dist/walker/walker.js +0 -115
  186. package/dist/walker/walkers.d.ts +0 -9
  187. package/dist/walker/walkers.js +0 -55
  188. /package/dist/entities/{builder/expectation.js → entry.js} +0 -0
  189. /package/dist/entities/{builder/state.js → model/bind.js} +0 -0
  190. /package/dist/entities/{errors.js → model/expectation.js} +0 -0
  191. /package/dist/entities/{validate.js → model/state.js} +0 -0
@@ -1,52 +1,40 @@
1
1
  import * as v from 'valibot';
2
- import { BuilderParametersSerialisedSchema, BuilderReferencesSchema, isParameter, paramable } from '../../references.js';
2
+ import { check } from '../../check.js';
3
+ import { paramable } from '../../references.js';
3
4
  import { serialisable } from '../../serialisable.js';
4
- import { BuilderSerialisedSchema } from '../builder/index.js';
5
5
  import { BuilderExpectationsSerialisedSchema } from '../expectation.js';
6
- import { bindUI } from './bind.js';
7
6
  import { BuilderUIDescribe } from './describe.js';
8
7
  import { BuilderUIPage } from './page.js';
9
8
  import { BuilderUIItemsSerialisedSchema, BuilderUIPages } from './pages.js';
10
- import { validatePagesCollections } from './validate.js';
11
9
  export class BuilderUI {
12
- builder;
13
- parameters;
10
+ uis;
14
11
  items;
15
12
  expectations;
16
- references;
17
- id = crypto.randomUUID();
18
- constructor(builder, parameters, items, expectations, references = []) {
19
- this.builder = builder;
20
- this.parameters = parameters;
13
+ constructor(uis, items, expectations) {
14
+ this.uis = uis;
21
15
  this.items = items;
22
16
  this.expectations = expectations;
23
- this.references = references;
24
- validatePagesCollections(builder, items);
25
17
  }
26
18
  expect(...expectations) {
27
- return new BuilderUI(this.builder, this.parameters, this.items, [...this.expectations, ...expectations], this.references
28
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- type narrowing cast, validated at merge time
29
- );
19
+ return new BuilderUI(this.uis, this.items, [
20
+ ...this.expectations,
21
+ ...expectations
22
+ ]);
30
23
  }
31
24
  page(label, paths) {
32
- return new BuilderUI(this.builder, this.parameters, [...this.items, new BuilderUIPage(label, paths)], this.expectations, this.references);
25
+ return new BuilderUI(this.uis, [...this.items, new BuilderUIPage(label, paths)], this.expectations);
33
26
  }
34
27
  describe(label, paths) {
35
- return new BuilderUI(this.builder, this.parameters, [...this.items, new BuilderUIDescribe(label, paths)], this.expectations, this.references);
28
+ return new BuilderUI(this.uis, [...this.items, new BuilderUIDescribe(label, paths)], this.expectations);
36
29
  }
37
30
  pages(name, label, itemUI) {
38
- const items = isParameter(itemUI) ? itemUI : itemUI.items;
39
- return new BuilderUI(this.builder, this.parameters, [...this.items, new BuilderUIPages(name, label, items)], this.expectations, this.references);
40
- }
41
- bind(bindings) {
42
- return bindUI(this, bindings);
31
+ const items = check.is(BuilderUISchema, itemUI) ? itemUI.items : itemUI;
32
+ return new BuilderUI(this.uis, [...this.items, new BuilderUIPages(name, label, items)], this.expectations);
43
33
  }
44
34
  }
45
35
  export const BuilderUISchema = v.instance(BuilderUI);
46
- export const BuilderUISerialisedSchema = serialisable(BuilderUI, v.object({
47
- builder: paramable(v.lazy(() => BuilderSerialisedSchema)),
48
- parameters: BuilderParametersSerialisedSchema,
36
+ export const BuilderUISerialisedSchema = serialisable(v.object({
37
+ uis: v.pipe(v.array(paramable(v.lazy(() => BuilderUISerialisedSchema))), v.readonly()),
49
38
  items: BuilderUIItemsSerialisedSchema,
50
- expectations: BuilderExpectationsSerialisedSchema,
51
- references: BuilderReferencesSchema
39
+ expectations: BuilderExpectationsSerialisedSchema
52
40
  }));
@@ -1,16 +1,6 @@
1
- import type { BuilderGeneric } from '../builder/index';
2
- import type { BuilderUIParts } from './ui';
3
- import type { BuilderUIItems } from './pages';
4
- import { BuilderParameter } from '../../references.js';
1
+ import type { BuilderModelGeneric } from '../model/model';
2
+ import type { BuilderUIs } from './ui';
5
3
  import { BuilderUI } from './ui.js';
6
- export declare function uis(): BuilderUI<BuilderParameter>;
7
- export declare function uis<const BuilderType extends BuilderGeneric>(uiBuilder: BuilderType, ...parts: BuilderUIParts): BuilderUI<BuilderType>;
8
- export declare function mergeUIParts(parts: ReadonlyArray<unknown>): {
9
- parameters: BuilderParameter<string>[];
10
- expectations: import("..").BuilderExpectation<string, unknown, "option" | "component" | "collection" | "detail">[];
11
- references: Readonly<{
12
- parameter: string;
13
- id: string;
14
- }>[];
15
- };
16
- export declare function flattenUIItems(items: ReadonlyArray<unknown>): BuilderUIItems;
4
+ export declare function uis(): BuilderUI<BuilderModelGeneric>;
5
+ export declare function uis<const Model extends BuilderModelGeneric>(model: Model, ...parts: BuilderUIs): BuilderUI<Model>;
6
+ export declare function uis(...parts: BuilderUIs): BuilderUI<BuilderModelGeneric>;
@@ -1,19 +1,13 @@
1
- import * as v from 'valibot';
2
- import { BuilderParameter } from '../../references.js';
3
- import { BuilderUI, BuilderUISchema } from './ui.js';
4
- export function uis(uiBuilder, ...parts) {
5
- const builder = uiBuilder ?? new BuilderParameter('builder');
6
- const merged = mergeUIParts(parts);
7
- return new BuilderUI(builder, merged.parameters, flattenUIItems(parts), merged.expectations, merged.references);
8
- }
9
- export function mergeUIParts(parts) {
10
- const instances = parts.filter((part) => v.is(BuilderUISchema, part));
11
- return {
12
- parameters: instances.flatMap((instance) => [...instance.parameters]),
13
- expectations: instances.flatMap((instance) => [...instance.expectations]),
14
- references: instances.flatMap((instance) => [...instance.references])
15
- };
16
- }
17
- export function flattenUIItems(items) {
18
- return items.flatMap((item) => v.is(BuilderUISchema, item) ? [...item.items] : [item]);
1
+ import { check } from '../../check.js';
2
+ import { BuilderModelSchema } from '../model/model.js';
3
+ import { BuilderUI } from './ui.js';
4
+ export function uis(...args) {
5
+ const [first, ...rest] = args;
6
+ if (first === undefined) {
7
+ return new BuilderUI([], [], []);
8
+ }
9
+ if (check.is(BuilderModelSchema, first)) {
10
+ return new BuilderUI(rest, [], []);
11
+ }
12
+ return new BuilderUI(args, [], []);
19
13
  }
@@ -0,0 +1,35 @@
1
+ import type { BuilderValidatedBrand } from '../validate/brand';
2
+ import type { BuilderComponentVariants, BuilderInstance, BuilderInstances } from '../instance';
3
+ import type { Prettify } from '../prettify';
4
+ import type { BuilderParameter, BuilderParameterSerialised, BuilderRef, BuilderRefSerialised } from '../references';
5
+ import type { BuilderSerialised } from './builder/index';
6
+ import type { BuilderCollectionConfigSerialised, BuilderCollectionSerialised, BuilderCollectionsSerialised } from './collection/index';
7
+ import type { BuilderComponentSerialised, BuilderComponentsSerialised } from './component/index';
8
+ import type { BuilderModelSerialised } from './model/index';
9
+ import type { BuilderOptionSerialised, BuilderOptionsSerialised } from './option/index';
10
+ import type { BuilderUIDescribeSerialised, BuilderUIItemsSerialised, BuilderUIPageSerialised, BuilderUISerialised } from './ui/index';
11
+ export type Validated<Input> = Input extends BuilderComponentVariants | BuilderInstance | BuilderModelSerialised | BuilderSerialised | BuilderUISerialised ? Prettify<Validate<Input> & BuilderValidatedBrand> : Validate<Input>;
12
+ type Validate<Input> = Input extends BuilderParameter<string> | BuilderParameterSerialised | BuilderRef | BuilderRefSerialised ? never : Input extends ReadonlyArray<unknown> ? ValidatedTuple<Input> : Input extends object ? Prettify<{
13
+ readonly [Key in keyof Input]: Validated<Input[Key]>;
14
+ }> : Input;
15
+ type ValidatedTuple<Input extends ReadonlyArray<unknown>> = Input extends readonly [
16
+ infer Head,
17
+ ...infer Rest extends ReadonlyArray<unknown>
18
+ ] ? [Validated<Head>] extends [never] ? ValidatedTuple<Rest> : readonly [Validated<Head>, ...ValidatedTuple<Rest>] : Input extends readonly [] ? readonly [] : ReadonlyArray<Validated<Input[number]>>;
19
+ export type BuilderValidated = Validated<BuilderSerialised>;
20
+ export type BuilderModelValidated = Validated<BuilderModelSerialised>;
21
+ export type BuilderUIValidated = Validated<BuilderUISerialised>;
22
+ export type BuilderInstanceValidated = Validated<BuilderInstance>;
23
+ export type BuilderInstancesValidated = Validated<BuilderInstances>;
24
+ export type BuilderComponentVariantsValidated = Validated<BuilderComponentVariants>;
25
+ export type BuilderOptionValidated = Validated<BuilderOptionSerialised>;
26
+ export type BuilderOptionsValidated = Validated<BuilderOptionsSerialised>;
27
+ export type BuilderComponentValidated = Validated<BuilderComponentSerialised>;
28
+ export type BuilderComponentsValidated = Validated<BuilderComponentsSerialised>;
29
+ export type BuilderCollectionValidated = Validated<BuilderCollectionSerialised>;
30
+ export type BuilderCollectionsValidated = Validated<BuilderCollectionsSerialised>;
31
+ export type BuilderCollectionConfigValidated = Validated<BuilderCollectionConfigSerialised>;
32
+ export type BuilderUIItemsValidated = Validated<BuilderUIItemsSerialised>;
33
+ export type BuilderUIPageValidated = Validated<BuilderUIPageSerialised>;
34
+ export type BuilderUIDescribeValidated = Validated<BuilderUIDescribeSerialised>;
35
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,7 @@
1
1
  import type { BuilderPath, BuilderPaths } from '../paths';
2
2
  import type { BuilderPrimitive, BuilderPrimitives } from '../primitive';
3
3
  import type { BuilderParameter, BuilderParameterSerialised, Paramable } from '../references';
4
- import type { BuilderGeneric, BuilderState, BuilderStateOf } from './builder/index';
4
+ import type { BuilderModelGeneric, BuilderModelState, BuilderModelStateOf } from './model/index';
5
5
  import * as v from 'valibot';
6
6
  export type BuilderEnableConfig<Payload = unknown> = {
7
7
  readonly type: 'enable';
@@ -20,7 +20,7 @@ export type BuilderUnlessConfig<Payload = unknown, UnlessPath = BuilderPath> = {
20
20
  readonly payload: Payload;
21
21
  };
22
22
  export type BuilderWhen<Payload = unknown, MatchPath = BuilderPath, MatchSelectMap = Record<string, Payload | null>, UnlessPath = BuilderPath> = BuilderEnableConfig<Payload> | BuilderMatchConfig<Payload, MatchPath, MatchSelectMap> | BuilderUnlessConfig<Payload, UnlessPath>;
23
- export type WhenSerialised<Payload> = {
23
+ export type BuilderWhenSerialised<Payload> = {
24
24
  readonly type: 'enable';
25
25
  readonly payload: Payload | BuilderParameterSerialised;
26
26
  } | {
@@ -33,7 +33,7 @@ export type WhenSerialised<Payload> = {
33
33
  readonly disabledValues: BuilderPrimitives;
34
34
  readonly payload: Payload | BuilderParameterSerialised;
35
35
  };
36
- export type WhenConfigPayload<Config extends BuilderWhenConfig, Payload> = Config extends {
36
+ export type WhenConfigPayload<Config extends BuilderWhenGeneric, Payload> = Config extends {
37
37
  readonly payload: infer Inner extends Payload;
38
38
  } ? Inner : Config extends BuilderMatchConfig ? NonNullable<Config['selectMap'][keyof Config['selectMap']]> & Payload : never;
39
39
  export declare const BuilderWhenEnableSchema: v.ObjectSchema<{
@@ -41,7 +41,7 @@ export declare const BuilderWhenEnableSchema: v.ObjectSchema<{
41
41
  }, undefined>;
42
42
  export declare const BuilderWhenMatchSchema: v.ObjectSchema<{
43
43
  readonly type: v.LiteralSchema<"match", undefined>;
44
- readonly matchPath: v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
44
+ readonly matchPath: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
45
45
  readonly type: v.LiteralSchema<"parameter", undefined>;
46
46
  readonly id: v.StringSchema<undefined>;
47
47
  readonly name: v.StringSchema<undefined>;
@@ -49,17 +49,17 @@ export declare const BuilderWhenMatchSchema: v.ObjectSchema<{
49
49
  type: "parameter";
50
50
  id: string;
51
51
  name: string;
52
- }>]>, v.InstanceSchema<typeof BuilderParameter, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>], undefined>, v.MetadataAction<readonly (string | number)[] | Readonly<{
53
- type: "parameter";
52
+ }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
53
+ readonly type: v.LiteralSchema<"ref", undefined>;
54
+ readonly id: v.StringSchema<undefined>;
55
+ }, undefined>, v.ReadonlyAction<{
56
+ type: "ref";
54
57
  id: string;
55
- name: string;
56
- }> | BuilderParameter<string>, {
57
- readonly paramable: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
58
- }>]>;
58
+ }>]>, v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>], undefined>;
59
59
  }, undefined>;
60
60
  export declare const BuilderWhenUnlessSchema: v.ObjectSchema<{
61
61
  readonly type: v.LiteralSchema<"unless", undefined>;
62
- readonly unlessPath: v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
62
+ readonly unlessPath: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
63
63
  readonly type: v.LiteralSchema<"parameter", undefined>;
64
64
  readonly id: v.StringSchema<undefined>;
65
65
  readonly name: v.StringSchema<undefined>;
@@ -67,19 +67,19 @@ export declare const BuilderWhenUnlessSchema: v.ObjectSchema<{
67
67
  type: "parameter";
68
68
  id: string;
69
69
  name: string;
70
- }>]>, v.InstanceSchema<typeof BuilderParameter, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>], undefined>, v.MetadataAction<readonly (string | number)[] | Readonly<{
71
- type: "parameter";
70
+ }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
71
+ readonly type: v.LiteralSchema<"ref", undefined>;
72
+ readonly id: v.StringSchema<undefined>;
73
+ }, undefined>, v.ReadonlyAction<{
74
+ type: "ref";
72
75
  id: string;
73
- name: string;
74
- }> | BuilderParameter<string>, {
75
- readonly paramable: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
76
- }>]>;
76
+ }>]>, v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>], undefined>;
77
77
  }, undefined>;
78
78
  export declare const BuilderWhenConfigSchema: v.SchemaWithPipe<readonly [v.VariantSchema<"type", [v.ObjectSchema<{
79
79
  readonly type: v.LiteralSchema<"enable", undefined>;
80
80
  }, undefined>, v.ObjectSchema<{
81
81
  readonly type: v.LiteralSchema<"match", undefined>;
82
- readonly matchPath: v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
82
+ readonly matchPath: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
83
83
  readonly type: v.LiteralSchema<"parameter", undefined>;
84
84
  readonly id: v.StringSchema<undefined>;
85
85
  readonly name: v.StringSchema<undefined>;
@@ -87,16 +87,16 @@ export declare const BuilderWhenConfigSchema: v.SchemaWithPipe<readonly [v.Varia
87
87
  type: "parameter";
88
88
  id: string;
89
89
  name: string;
90
- }>]>, v.InstanceSchema<typeof BuilderParameter, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>], undefined>, v.MetadataAction<readonly (string | number)[] | Readonly<{
91
- type: "parameter";
90
+ }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
91
+ readonly type: v.LiteralSchema<"ref", undefined>;
92
+ readonly id: v.StringSchema<undefined>;
93
+ }, undefined>, v.ReadonlyAction<{
94
+ type: "ref";
92
95
  id: string;
93
- name: string;
94
- }> | BuilderParameter<string>, {
95
- readonly paramable: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
96
- }>]>;
96
+ }>]>, v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>], undefined>;
97
97
  }, undefined>, v.ObjectSchema<{
98
98
  readonly type: v.LiteralSchema<"unless", undefined>;
99
- readonly unlessPath: v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
99
+ readonly unlessPath: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
100
100
  readonly type: v.LiteralSchema<"parameter", undefined>;
101
101
  readonly id: v.StringSchema<undefined>;
102
102
  readonly name: v.StringSchema<undefined>;
@@ -104,74 +104,82 @@ export declare const BuilderWhenConfigSchema: v.SchemaWithPipe<readonly [v.Varia
104
104
  type: "parameter";
105
105
  id: string;
106
106
  name: string;
107
- }>]>, v.InstanceSchema<typeof BuilderParameter, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>], undefined>, v.MetadataAction<readonly (string | number)[] | Readonly<{
108
- type: "parameter";
107
+ }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
108
+ readonly type: v.LiteralSchema<"ref", undefined>;
109
+ readonly id: v.StringSchema<undefined>;
110
+ }, undefined>, v.ReadonlyAction<{
111
+ type: "ref";
109
112
  id: string;
110
- name: string;
111
- }> | BuilderParameter<string>, {
112
- readonly paramable: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
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
- } | {
117
115
  type: "match";
118
116
  matchPath: readonly (string | number)[] | Readonly<{
119
117
  type: "parameter";
120
118
  id: string;
121
119
  name: string;
122
- }> | BuilderParameter<string>;
120
+ }> | Readonly<{
121
+ type: "ref";
122
+ id: string;
123
+ }>;
123
124
  } | {
124
125
  type: "unless";
125
126
  unlessPath: readonly (string | number)[] | Readonly<{
126
127
  type: "parameter";
127
128
  id: string;
128
129
  name: string;
129
- }> | BuilderParameter<string>;
130
+ }> | Readonly<{
131
+ type: "ref";
132
+ id: string;
133
+ }>;
134
+ } | {
135
+ type: "enable";
130
136
  }>]>;
131
137
  export type BuilderWhenConfig = v.InferOutput<typeof BuilderWhenConfigSchema>;
132
- export declare function createSelectMapSerialisedSchema(payloadSchema: v.GenericSchema): v.GenericSchema;
133
- export declare function createWhenSerialisedSchema(payloadSchema: v.GenericSchema): v.GenericSchema;
138
+ export type BuilderWhenGeneric = BuilderWhen<unknown, unknown, unknown, unknown>;
139
+ export declare const BuilderWhenSerialisedSchema: v.GenericSchema<BuilderWhenSerialised<unknown>>;
140
+ export declare function createSelectMapSerialisedSchema<Payload extends v.GenericSchema>(payloadSchema: Payload): v.GenericSchema<BuilderMatchSelectMap<v.InferOutput<Payload> | BuilderParameterSerialised>>;
141
+ export declare function createWhenSerialisedSchema<Payload extends v.GenericSchema>(payloadSchema: Payload): v.GenericSchema<BuilderWhenSerialised<v.InferOutput<Payload>>>;
134
142
  export declare function createWhenFactories<Payload>(): {
135
143
  enable: <const Values extends Paramable<Payload>>(values: Values) => BuilderEnableConfig<Values>;
136
144
  match: <const MatchPayload extends Paramable<Payload>, const MatchPath extends Paramable<BuilderPath>, const SelectMap extends Paramable<BuilderMatchSelectMap<Paramable<Payload>>>>(matchPath: MatchPath, selectMap: SelectMap) => BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
137
145
  unless: <const Values extends Paramable<Payload>, const UnlessPath extends Paramable<BuilderPath>>(unlessPath: UnlessPath, disabledValues: BuilderPrimitives, values: Values) => BuilderUnlessConfig<Values, UnlessPath>;
138
146
  };
139
- export type BuilderValidPath<State extends BuilderState> = ModelValidPath<State['model']>;
140
- export type BuilderValidPaths<State extends BuilderState> = ReadonlyArray<BuilderValidPath<State>>;
141
- export type BuilderValidPathsOf<Input extends Paramable<BuilderGeneric>> = BuilderValidPaths<BuilderStateOf<Input>>;
142
- export type BuilderWhenConstrained<State extends BuilderState, Config> = Config extends BuilderParameter ? Config : Config extends {
147
+ export type BuilderValidPath<State extends BuilderModelState> = InstanceValidPath<State['instance']>;
148
+ export type BuilderValidPaths<State extends BuilderModelState> = ReadonlyArray<BuilderValidPath<State>>;
149
+ export type BuilderValidPathsOf<Input extends Paramable<BuilderModelGeneric>> = BuilderValidPaths<BuilderModelStateOf<Input>>;
150
+ export type BuilderWhenConstrained<State extends BuilderModelState, Config> = Config extends BuilderParameter ? Config : Config extends {
143
151
  readonly type: 'match';
144
152
  readonly matchPath: infer MatchPath extends BuilderPath;
145
153
  readonly selectMap: infer SelectMap;
146
154
  } ? Config & {
147
155
  readonly matchPath: [MatchPath] extends [Readonly<BuilderValidPath<State>>] ? MatchPath : Readonly<BuilderValidPath<State>>;
148
- readonly selectMap: SelectMap extends BuilderParameter ? SelectMap : Record<BuilderResolvePath<State['model'], MatchPath> & string, SelectMap[keyof SelectMap]>;
156
+ readonly selectMap: SelectMap extends BuilderParameter ? SelectMap : Record<BuilderResolvePath<State['instance'], MatchPath> & string, SelectMap[keyof SelectMap]>;
149
157
  } : Config extends {
150
158
  readonly type: 'unless';
151
159
  readonly unlessPath: infer UnlessPath extends BuilderPath;
152
160
  } ? Config & {
153
161
  readonly unlessPath: [UnlessPath] extends [Readonly<BuilderValidPath<State>>] ? UnlessPath : Readonly<BuilderValidPath<State>>;
154
162
  } : Config;
155
- export type WhenConfigNullable<Config extends BuilderWhenConfig> = Config extends {
163
+ export type WhenConfigNullable<Config extends BuilderWhenGeneric> = Config extends {
156
164
  readonly type: 'unless';
157
165
  } ? null : Config extends {
158
166
  readonly type: 'match';
159
167
  readonly selectMap: infer SelectMap;
160
168
  } ? null extends SelectMap[keyof SelectMap] ? null : never : never;
161
- export type WhenNullability<State extends BuilderState, GatePaths extends Paramable<BuilderPaths>, Config extends Paramable<BuilderWhenConfig>> = [GatePaths] extends [BuilderParameter] ? null : WhenNullabilityFromPaths<State['model'], Extract<GatePaths, BuilderValidPaths<State>>, Config>;
162
- type BuilderResolvePath<Model, Path extends BuilderPath> = Path extends readonly [
163
- infer Head extends keyof Model & string
164
- ] ? Model[Head] : Path extends readonly [
165
- infer Head extends keyof Model & string,
169
+ export type WhenNullability<State extends BuilderModelState, GatePaths extends Paramable<BuilderPaths>, Config extends Paramable<BuilderWhenGeneric>> = [GatePaths] extends [BuilderParameter] ? null : WhenNullabilityFromPaths<State['instance'], Extract<GatePaths, BuilderValidPaths<State>>, Config>;
170
+ type BuilderResolvePath<Instance, Path extends BuilderPath> = Path extends readonly [
171
+ infer Head extends keyof Instance & string
172
+ ] ? Instance[Head] : Path extends readonly [
173
+ infer Head extends keyof Instance & string,
166
174
  ...infer Tail extends BuilderPath
167
- ] ? Model[Head] extends ReadonlyArray<infer Item> ? Tail extends readonly [number, ...infer Rest extends BuilderPath] ? BuilderResolvePath<Item, Rest> : never : BuilderResolvePath<Model[Head], Tail> : never;
168
- type WhenNullabilityFromPaths<Model, GatePaths extends BuilderPaths, Config extends Paramable<BuilderWhenConfig>> = Config extends BuilderParameter ? WhenPathsNullable<Model, GatePaths> : Config extends BuilderWhenConfig ? WhenPathsNullable<Model, GatePaths> | WhenConfigNullable<Config> : never;
169
- type WhenPathsNullable<Model, GatePaths extends BuilderPaths> = GatePaths extends readonly [
175
+ ] ? Instance[Head] extends ReadonlyArray<infer Item> ? Tail extends readonly [number, ...infer Rest extends BuilderPath] ? BuilderResolvePath<Item, Rest> : never : BuilderResolvePath<Instance[Head], Tail> : never;
176
+ type WhenNullabilityFromPaths<Instance, GatePaths extends BuilderPaths, Config extends Paramable<BuilderWhenGeneric>> = Config extends BuilderParameter ? WhenPathsNullable<Instance, GatePaths> : Config extends BuilderWhenGeneric ? WhenPathsNullable<Instance, GatePaths> | WhenConfigNullable<Config> : never;
177
+ type WhenPathsNullable<Instance, GatePaths extends BuilderPaths> = GatePaths extends readonly [
170
178
  infer Head extends BuilderPath,
171
179
  ...infer Tail extends BuilderPaths
172
- ] ? WhenPathNullable<Model, Head> | WhenPathsNullable<Model, Tail> : never;
173
- type WhenPathNullable<Model, Path extends BuilderPath> = null extends BuilderResolvePath<Model, Path> ? null : never;
174
- type ModelValidPath<Model, Depth extends ReadonlyArray<never> = []> = Depth['length'] extends 10 ? never : Model extends BuilderPrimitive | null ? never : Model extends ReadonlyArray<infer Item> ? [number] | [number, ...ModelValidPath<Item, [...Depth, never]>] : {
175
- [Key in keyof Model & string]: [Key] | (Model[Key] extends BuilderPrimitive | null ? never : [Key, ...ModelValidPath<Model[Key], [...Depth, never]>]);
176
- }[keyof Model & string];
180
+ ] ? WhenPathNullable<Instance, Head> | WhenPathsNullable<Instance, Tail> : never;
181
+ type WhenPathNullable<Instance, Path extends BuilderPath> = null extends BuilderResolvePath<Instance, Path> ? null : never;
182
+ type InstanceValidPath<Instance, Depth extends ReadonlyArray<never> = []> = Depth['length'] extends 10 ? never : Instance extends BuilderPrimitive | null ? never : Instance extends ReadonlyArray<infer Item> ? [number] | [number, ...InstanceValidPath<Item, [...Depth, never]>] : {
183
+ [Key in keyof Instance & string]: [Key] | (Instance[Key] extends BuilderPrimitive | null ? never : [Key, ...InstanceValidPath<Instance[Key], [...Depth, never]>]);
184
+ }[keyof Instance & string];
177
185
  export {};
@@ -14,6 +14,7 @@ export const BuilderWhenUnlessSchema = v.object({
14
14
  unlessPath: paramable(BuilderPathSchema)
15
15
  });
16
16
  export const BuilderWhenConfigSchema = v.pipe(v.variant('type', [BuilderWhenEnableSchema, BuilderWhenMatchSchema, BuilderWhenUnlessSchema]), v.readonly());
17
+ export const BuilderWhenSerialisedSchema = createWhenSerialisedSchema(v.unknown());
17
18
  export function createSelectMapSerialisedSchema(payloadSchema) {
18
19
  return v.pipe(v.record(v.string(), v.nullable(paramable(payloadSchema))), v.readonly());
19
20
  }
@@ -0,0 +1,5 @@
1
+ import type { BuilderErrors } from './exception';
2
+ import * as v from 'valibot';
3
+ export declare const BuilderEnvironmentSchema: v.PicklistSchema<["development", "staging", "production"], undefined>;
4
+ export type BuilderEnvironment = v.InferOutput<typeof BuilderEnvironmentSchema>;
5
+ export type BuilderEnvironmentResult<EntityType, Env extends BuilderEnvironment = 'production'> = Env extends 'production' ? EntityType : readonly [EntityType, BuilderErrors];
@@ -0,0 +1,2 @@
1
+ import * as v from 'valibot';
2
+ export const BuilderEnvironmentSchema = v.picklist(['development', 'staging', 'production']);
@@ -1,6 +1,11 @@
1
- import type { BuilderErrorDuplicateName, BuilderErrorInvalidCollectionBounds, BuilderErrorInvalidGatePath, BuilderErrorPagesUnknownCollection, BuilderErrorUnboundParameter, BuilderErrorUnmetExpectation } from './entities/index';
2
- import type { BuilderErrorInvalidCollection, BuilderErrorInvalidOption, BuilderErrorInvalidVariant, BuilderErrorMissingComponent, BuilderErrorMissingDetail, BuilderErrorMissingVariant, BuilderErrorUnexpectedComponent, BuilderErrorUnexpectedDetail } from './mappers/index';
3
- export type BuilderError = BuilderErrorUnmetExpectation | BuilderErrorUnboundParameter | BuilderErrorInvalidGatePath | BuilderErrorDuplicateName | BuilderErrorInvalidCollectionBounds | BuilderErrorPagesUnknownCollection | BuilderErrorInvalidOption | BuilderErrorInvalidCollection | BuilderErrorMissingComponent | BuilderErrorUnexpectedComponent | BuilderErrorMissingVariant | BuilderErrorInvalidVariant | BuilderErrorMissingDetail | BuilderErrorUnexpectedDetail;
1
+ import type { BuilderErrorDuplicateName, BuilderErrorInvalidCollection, BuilderErrorInvalidCollectionBounds, BuilderErrorInvalidDetail, BuilderErrorInvalidInput, BuilderErrorInvalidOption, BuilderErrorInvalidPath, BuilderErrorInvalidSelectMapKey, BuilderErrorInvalidVariant, BuilderErrorMissingComponent, BuilderErrorMissingDetail, BuilderErrorMissingReference, BuilderErrorMissingVariant, BuilderErrorUnboundParameter, BuilderErrorUnexpectedComponent, BuilderErrorUnexpectedDetail, BuilderErrorUnmetExpectation, BuilderErrorUnvalidated } from './validate/index';
2
+ export type BuilderErrorLocation = ReadonlyArray<string | number>;
3
+ export declare function builderError<Kind extends string>(kind: Kind, location: BuilderErrorLocation): {
4
+ kind: Kind;
5
+ location: BuilderErrorLocation;
6
+ };
7
+ export type BuilderErrorBase = ReturnType<typeof builderError>;
8
+ export type BuilderError = BuilderErrorUnmetExpectation | BuilderErrorUnboundParameter | BuilderErrorMissingReference | BuilderErrorInvalidPath | BuilderErrorInvalidSelectMapKey | BuilderErrorDuplicateName | BuilderErrorInvalidCollectionBounds | BuilderErrorInvalidOption | BuilderErrorInvalidCollection | BuilderErrorMissingComponent | BuilderErrorUnexpectedComponent | BuilderErrorMissingVariant | BuilderErrorInvalidVariant | BuilderErrorMissingDetail | BuilderErrorUnexpectedDetail | BuilderErrorInvalidDetail | BuilderErrorInvalidInput | BuilderErrorUnvalidated;
4
9
  export type BuilderErrors = ReadonlyArray<BuilderError>;
5
10
  export declare class BuilderException extends globalThis.Error {
6
11
  readonly errors: BuilderErrors;
package/dist/exception.js CHANGED
@@ -1,3 +1,6 @@
1
+ export function builderError(kind, location) {
2
+ return { kind, location };
3
+ }
1
4
  export class BuilderException extends globalThis.Error {
2
5
  errors;
3
6
  constructor(errors, message = '') {
package/dist/index.d.ts CHANGED
@@ -1,42 +1,35 @@
1
- export type { Builder, BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSerialised, BuilderCollections, BuilderCollectionSerialised, BuilderCollectionsSerialised, BuilderCollectionWhen, BuilderCollectionWhenSerialised, BuilderComponent, BuilderComponentDetails, BuilderComponentDetailsSerialised, BuilderComponents, BuilderComponentSerialised, BuilderComponentsSerialised, BuilderComponentWhen, BuilderComponentWhenSerialised, BuilderDescription, BuilderDescriptionItem, BuilderErrorDuplicateName, BuilderErrorInvalidCollectionBounds, BuilderErrorInvalidGatePath, BuilderErrorPagesUnknownCollection, BuilderErrorUnboundParameter, BuilderErrorUnmetExpectation, BuilderExpectation, BuilderExpectationKind, BuilderExpectations, BuilderExpectationSerialised, BuilderExpectationsSerialised, BuilderGeneric, BuilderInstanceOf, BuilderOption, BuilderOptions, BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionValues, BuilderOptionValuesSerialised, BuilderOptionWhen, BuilderOptionWhenSerialised, BuilderPart, BuilderParts, BuilderSelectType, BuilderSelectTypeLabels, BuilderSelectTypeSerialised, BuilderSelectTypeValues, BuilderSerialised, BuilderToggleType, BuilderToggleTypeSerialised, BuilderToggleValueType, BuilderUI, BuilderUIDescribe, BuilderUIDescribeSerialised, BuilderUIGeneric, BuilderUIItem, BuilderUIItems, BuilderUIItemsSerialised, BuilderUIPage, BuilderUIPages, BuilderUIPageSerialised, BuilderUIPagesSerialised, BuilderUIPart, BuilderUIParts, BuilderUISerialised, BuilderUIValidated, BuilderValidated, BuilderWhenConfig } from './entities/index';
2
- export type { BuilderEntity, BuilderEntityKind } from './entities/index';
3
- export type { BuilderError, BuilderErrors } from './exception';
4
- export type { BuilderErrorInvalidCollection, BuilderErrorInvalidOption, BuilderErrorInvalidVariant, BuilderErrorMissingComponent, BuilderErrorMissingDetail, BuilderErrorMissingVariant, BuilderErrorUnexpectedComponent, BuilderErrorUnexpectedDetail, BuilderOrder, BuilderRefEntities, BuilderRefEntity, BuilderRenderOption, BuilderRenderOptions, BuilderRenderPage, BuilderRenderPages, BuilderRenderResult, BuilderRenderUpdate } from './mappers/index';
5
- export type { BuilderData, BuilderModel, BuilderModelInput, BuilderModels, BuilderVariant, BuilderVariants } from './model';
1
+ export type { BB, BBOptions } from './bb';
2
+ export type { BuilderBindings, BuilderBindingsSerialised, BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSerialised, BuilderCollections, BuilderCollectionSerialised, BuilderCollectionsSerialised, BuilderCollectionWhen, BuilderCollectionWhenSerialised, BuilderComponent, BuilderComponentDetails, BuilderComponentDetailsSerialised, BuilderComponentField, BuilderComponentFields, BuilderComponentFieldSerialised, BuilderComponentFieldsSerialised, BuilderComponentFieldValueType, BuilderComponents, BuilderComponentSerialised, BuilderComponentsSerialised, BuilderComponentWhen, BuilderComponentWhenSerialised, BuilderDescription, BuilderDescriptionItem, BuilderEntityKind, BuilderEntitySerialised, BuilderExpectation, BuilderExpectationKind, BuilderExpectations, BuilderExpectationSerialised, BuilderExpectationsSerialised, BuilderInstanceOf, BuilderModel, BuilderModels, BuilderModelSerialised, BuilderModelValidated, BuilderOption, BuilderOptions, BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionValues, BuilderOptionValuesSerialised, BuilderOptionWhen, BuilderOptionWhenSerialised, BuilderRefEntities, BuilderRefEntity, BuilderSelectType, BuilderSelectTypeLabels, BuilderSelectTypeSerialised, BuilderSelectTypeValues, BuilderSerialised, BuilderToggleType, BuilderToggleTypeSerialised, BuilderToggleValueType, BuilderUI, BuilderUIDescribe, BuilderUIDescribeSerialised, BuilderUIItem, BuilderUIItems, BuilderUIItemsSerialised, BuilderUIPage, BuilderUIPages, BuilderUIPageSerialised, BuilderUIPagesSerialised, BuilderUIs, BuilderUIsSerialised, BuilderUISerialised, BuilderUIValidated, BuilderValidated, BuilderEnableConfig, BuilderMatchConfig, BuilderMatchSelectMap, BuilderUnlessConfig, BuilderWhen, BuilderWhenConfig, BuilderWhenSerialised } from './entities/index';
3
+ export type { BuilderEnvironment } from './environment';
4
+ export type { BuilderError, BuilderErrorBase, BuilderErrorLocation, BuilderErrors } from './exception';
5
+ export type { BuilderComponentVariantsValidationResult, BuilderErrorDuplicateName, BuilderErrorInvalidCollection, BuilderErrorInvalidCollectionBounds, BuilderErrorInvalidDetail, BuilderErrorInvalidInput, BuilderErrorInvalidOption, BuilderErrorInvalidPath, BuilderErrorInvalidPathReason, BuilderErrorInvalidSelectMapKey, BuilderErrorInvalidVariant, BuilderErrorMissingComponent, BuilderErrorMissingDetail, BuilderErrorMissingReference, BuilderErrorMissingVariant, BuilderErrorUnboundParameter, BuilderErrorUnexpectedComponent, BuilderErrorUnexpectedDetail, BuilderErrorUnmetExpectation, BuilderErrorUnvalidated, BuilderInstanceValidationResult, BuilderModelValidationResult, BuilderOrder, BuilderRenderOption, BuilderRenderOptions, BuilderRenderPage, BuilderRenderPages, BuilderRenderResult, BuilderRenderUpdate, BuilderUIValidationResult, BuilderValidationResult, BuilderVariantsValidationOptions } from './mappers/index';
6
+ export type { BuilderComponentVariants, BuilderInstance, BuilderInstanceInput, BuilderInstances, BuilderVariant, BuilderVariants } from './instance';
6
7
  export type { BuilderPath, BuilderPaths } from './paths';
7
8
  export type { BuilderPrimitive, BuilderPrimitives } from './primitive';
8
- export type { BuilderParameter, BuilderParameterSerialised, BuilderRef, BuilderReference, BuilderReferences, Paramable, ParamableSerialised } from './references';
9
- import { builders, collectionConfig, collectionExpectation, componentDetails, componentExpectation, detailExpectation, optionExpectation, uis } from './entities/index.js';
10
- import { createInstance, createModels } from './mappers/index.js';
11
- export declare const builder: typeof builders;
9
+ export type { BuilderParameter, BuilderParameterSerialised, BuilderRef, Paramable, ParamableSerialised } from './references';
10
+ export { bb } from './bb.js';
11
+ export { Builder, builder, detailBoolean, detailNumber, detailString, model, parameter, ref, select, serialise, toggleBoolean, toggleNumber, toggleString } from './entities/index.js';
12
+ export { BuilderException } from './exception.js';
13
+ export { ordinal } from './mappers/index.js';
14
+ import { collectionConfig, collectionExpectation, componentDetails, componentExpectation, optionExpectation, uis } from './entities/index.js';
12
15
  export declare const collection: typeof collectionConfig & {
13
- enable: <const Values extends import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import(".").BuilderGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>>(values: Values) => import("./entities/when").BuilderEnableConfig<Values>;
14
- match: <const MatchPayload extends import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import(".").BuilderGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>, const MatchPath extends import("./references").Paramable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Paramable<import("./entities/when").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import(".").BuilderGeneric>, import("./references").Paramable<number>, import("./references").Paramable<number>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import("./entities/when").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
15
- unless: <const Values extends import("./references").Paramable<import(".").BuilderCollectionConfig<import("./references").Paramable<import(".").BuilderGeneric>, 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("./entities/when").BuilderUnlessConfig<Values, UnlessPath>;
16
+ 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>;
17
+ 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>;
18
+ 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>;
16
19
  };
17
20
  export declare const component: typeof componentDetails & {
18
- enable: <const Payload extends import("./references").Paramable<import(".").BuilderComponentDetails>>(payload?: Payload) => import("./entities/when").BuilderEnableConfig<Payload>;
19
- match: <const Payload extends import("./references").Paramable<import(".").BuilderComponentDetails>, const MatchPath extends import("./references").Paramable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Paramable<import("./entities/when").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderComponentDetails>>>>(matchPath: MatchPath, selectMap: SelectMap) => import("./entities/when").BuilderMatchConfig<Payload, MatchPath, SelectMap>;
20
- unless: <const UnlessPath extends import("./references").Paramable<import("./paths").BuilderPath>, const Payload extends import("./references").Paramable<import(".").BuilderComponentDetails>>(unlessPath: UnlessPath, disabledValues: import("./primitive").BuilderPrimitives, payload?: Payload) => import("./entities/when").BuilderUnlessConfig<Payload, UnlessPath>;
21
+ enable: <const Payload extends import("./references").Paramable<import(".").BuilderComponentDetails>>(payload?: Payload) => import(".").BuilderEnableConfig<Payload>;
22
+ match: <const Payload extends import("./references").Paramable<import(".").BuilderComponentDetails>, const MatchPath extends import("./references").Paramable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Paramable<import(".").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderComponentDetails>>>>(matchPath: MatchPath, selectMap: SelectMap) => import(".").BuilderMatchConfig<Payload, MatchPath, SelectMap>;
23
+ unless: <const UnlessPath extends import("./references").Paramable<import("./paths").BuilderPath>, const Payload extends import("./references").Paramable<import(".").BuilderComponentDetails>>(unlessPath: UnlessPath, disabledValues: import("./primitive").BuilderPrimitives, payload?: Payload) => import(".").BuilderUnlessConfig<Payload, UnlessPath>;
21
24
  };
22
25
  export declare const has: {
23
26
  collection: typeof collectionExpectation;
24
27
  component: typeof componentExpectation;
25
- detail: typeof detailExpectation;
26
28
  option: typeof optionExpectation;
27
29
  };
28
- export declare const instance: typeof createInstance;
29
- export declare const models: typeof createModels;
30
30
  export declare const option: {
31
- enable: <const Values extends import("./references").Paramable<import(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<import("valibot").GenericSchema<string | number | boolean | null>>>>(values: Values) => import("./entities/when").BuilderEnableConfig<Values>;
32
- match: <const MatchPayload extends import("./references").Paramable<import(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<import("valibot").GenericSchema<string | number | boolean | null>>>, const MatchPath extends import("./references").Paramable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Paramable<import("./entities/when").BuilderMatchSelectMap<import("./references").Paramable<import(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<import("valibot").GenericSchema<string | number | boolean | null>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import("./entities/when").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
33
- unless: <const Values extends import("./references").Paramable<import(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<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("./entities/when").BuilderUnlessConfig<Values, UnlessPath>;
31
+ enable: <const Values extends import("./references").Paramable<import(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<import("valibot").GenericSchema<string | number | boolean | null>>>>(values: Values) => import(".").BuilderEnableConfig<Values>;
32
+ match: <const MatchPayload extends import("./references").Paramable<import(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<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(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<import("valibot").GenericSchema<string | number | boolean | null>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import(".").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
33
+ unless: <const Values extends import("./references").Paramable<import(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<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>;
34
34
  };
35
35
  export declare const ui: typeof uis;
36
- export { BuilderCollectionConfigSerialisedSchema, BuilderCollectionSelectMapSerialisedSchema, BuilderCollectionWhenSerialisedSchema, BuilderComponentDetailsSerialisedSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentWhenSerialisedSchema, BuilderExpectationsSerialisedSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionValuesSerialisedSchema, BuilderOptionWhenSerialisedSchema, BuilderSelectTypeSerialisedSchema, BuilderSerialisedSchema, BuilderToggleTypeSerialisedSchema, BuilderUIDescribeSerialisedSchema, BuilderUIItemSerialisedSchema, BuilderUIItemsSerialisedSchema, BuilderUIPageSerialisedSchema, BuilderUIPagesSerialisedSchema, BuilderUISerialisedSchema, deserialise, entitiesByKind, parameter, ref, select, serialise, toggleBoolean, toggleNumber, toggleString } from './entities/index.js';
37
- export { BuilderException } from './exception.js';
38
- export { BuilderEntityKindSchema, BuilderEntitySchema } from './entities/index.js';
39
- export { order, ordinal, refs, render } from './mappers/index.js';
40
- export { BuilderVariantsSchema } from './model.js';
41
- export { BuilderPathSchema, BuilderPathsSchema } from './paths.js';
42
- export { isSerialisedParameter } from './references.js';
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
- import { builders, collectionConfig, collectionExpectation, collectionWhen, componentDetails, componentExpectation, componentWhen, detailExpectation, optionExpectation, optionWhen, uis } from './entities/index.js';
2
- import { createInstance, createModels } from './mappers/index.js';
3
- export const builder = builders;
1
+ export { bb } from './bb.js';
2
+ export { Builder, builder, detailBoolean, detailNumber, detailString, model, parameter, ref, select, serialise, toggleBoolean, toggleNumber, toggleString } from './entities/index.js';
3
+ export { BuilderException } from './exception.js';
4
+ export { ordinal } from './mappers/index.js';
5
+ import { collectionConfig, collectionExpectation, collectionWhen, componentDetails, componentExpectation, componentWhen, optionExpectation, optionWhen, uis } from './entities/index.js';
4
6
  export const collection = Object.assign(collectionConfig, {
5
7
  ...collectionWhen
6
8
  });
@@ -10,17 +12,7 @@ export const component = Object.assign(componentDetails, {
10
12
  export const has = {
11
13
  collection: collectionExpectation,
12
14
  component: componentExpectation,
13
- detail: detailExpectation,
14
15
  option: optionExpectation
15
16
  };
16
- export const instance = createInstance;
17
- export const models = createModels;
18
17
  export const option = optionWhen;
19
18
  export const ui = uis;
20
- export { BuilderCollectionConfigSerialisedSchema, BuilderCollectionSelectMapSerialisedSchema, BuilderCollectionWhenSerialisedSchema, BuilderComponentDetailsSerialisedSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentWhenSerialisedSchema, BuilderExpectationsSerialisedSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionValuesSerialisedSchema, BuilderOptionWhenSerialisedSchema, BuilderSelectTypeSerialisedSchema, BuilderSerialisedSchema, BuilderToggleTypeSerialisedSchema, BuilderUIDescribeSerialisedSchema, BuilderUIItemSerialisedSchema, BuilderUIItemsSerialisedSchema, BuilderUIPageSerialisedSchema, BuilderUIPagesSerialisedSchema, BuilderUISerialisedSchema, deserialise, entitiesByKind, parameter, ref, select, serialise, toggleBoolean, toggleNumber, toggleString } from './entities/index.js';
21
- export { BuilderException } from './exception.js';
22
- export { BuilderEntityKindSchema, BuilderEntitySchema } from './entities/index.js';
23
- export { order, ordinal, refs, render } from './mappers/index.js';
24
- export { BuilderVariantsSchema } from './model.js';
25
- export { BuilderPathSchema, BuilderPathsSchema } from './paths.js';
26
- export { isSerialisedParameter } from './references.js';