@builder-builder/builder 0.0.9 → 0.0.10

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 (83) hide show
  1. package/dist/entities/bind.d.ts +4 -0
  2. package/dist/entities/bind.js +44 -0
  3. package/dist/entities/builder/bind.d.ts +85 -0
  4. package/dist/entities/builder/bind.js +9 -0
  5. package/dist/entities/builder/builder.d.ts +111 -92
  6. package/dist/entities/builder/builder.js +11 -8
  7. package/dist/entities/builder/builders.d.ts +23 -8
  8. package/dist/entities/builder/builders.js +6 -5
  9. package/dist/entities/builder/index.d.ts +3 -3
  10. package/dist/entities/builder/index.js +1 -1
  11. package/dist/entities/builder/methods.d.ts +17 -17
  12. package/dist/entities/builder/state.d.ts +4 -4
  13. package/dist/entities/builder/validate.js +7 -7
  14. package/dist/entities/collection/collection.d.ts +6 -5
  15. package/dist/entities/collection/collection.js +6 -5
  16. package/dist/entities/collection/config.d.ts +280 -232
  17. package/dist/entities/collection/config.js +4 -4
  18. package/dist/entities/collection/index.d.ts +1 -1
  19. package/dist/entities/collection/index.js +1 -1
  20. package/dist/entities/collection/when.d.ts +5 -5
  21. package/dist/entities/component/component.d.ts +91 -90
  22. package/dist/entities/component/component.js +5 -4
  23. package/dist/entities/component/details.d.ts +16 -16
  24. package/dist/entities/component/details.js +2 -2
  25. package/dist/entities/component/index.d.ts +1 -1
  26. package/dist/entities/component/index.js +1 -1
  27. package/dist/entities/component/when.d.ts +5 -5
  28. package/dist/entities/index.d.ts +10 -8
  29. package/dist/entities/index.js +7 -6
  30. package/dist/entities/kind.d.ts +6 -0
  31. package/dist/entities/kind.js +6 -0
  32. package/dist/entities/option/index.d.ts +1 -1
  33. package/dist/entities/option/index.js +1 -1
  34. package/dist/entities/option/option.d.ts +39 -38
  35. package/dist/entities/option/option.js +5 -4
  36. package/dist/entities/option/values.d.ts +5 -7
  37. package/dist/entities/option/values.js +4 -4
  38. package/dist/entities/option/when.d.ts +5 -5
  39. package/dist/entities/serialise.d.ts +1582 -2226
  40. package/dist/entities/serialise.js +52 -22
  41. package/dist/entities/ui/bind.d.ts +10 -0
  42. package/dist/entities/ui/bind.js +9 -0
  43. package/dist/entities/ui/describe.d.ts +26 -51
  44. package/dist/entities/ui/describe.js +3 -4
  45. package/dist/entities/ui/index.d.ts +5 -7
  46. package/dist/entities/ui/index.js +2 -3
  47. package/dist/entities/ui/page.d.ts +26 -51
  48. package/dist/entities/ui/page.js +3 -4
  49. package/dist/entities/ui/pages.d.ts +17 -405
  50. package/dist/entities/ui/pages.js +6 -6
  51. package/dist/entities/ui/ui.d.ts +307 -688
  52. package/dist/entities/ui/ui.js +16 -17
  53. package/dist/entities/ui/uis.d.ts +11 -5
  54. package/dist/entities/ui/uis.js +9 -10
  55. package/dist/entities/ui/validate.d.ts +2 -2
  56. package/dist/entities/ui/validate.js +3 -3
  57. package/dist/entities/validate.d.ts +3 -3
  58. package/dist/entities/when.d.ts +45 -44
  59. package/dist/entities/when.js +10 -7
  60. package/dist/index.d.ts +19 -15
  61. package/dist/index.js +6 -3
  62. package/dist/mappers/assert/builder.js +13 -13
  63. package/dist/mappers/assert/ui.js +4 -4
  64. package/dist/mappers/index.d.ts +2 -0
  65. package/dist/mappers/index.js +1 -0
  66. package/dist/mappers/refs.d.ts +12 -0
  67. package/dist/mappers/refs.js +36 -0
  68. package/dist/mappers/render/render.js +3 -3
  69. package/dist/model.d.ts +29 -8
  70. package/dist/model.js +9 -1
  71. package/dist/references.d.ts +55 -29
  72. package/dist/references.js +25 -10
  73. package/dist/walker/walker.d.ts +13 -5
  74. package/dist/walker/walker.js +39 -27
  75. package/dist/walker/walkers.d.ts +4 -3
  76. package/dist/walker/walkers.js +18 -14
  77. package/package.json +9 -7
  78. package/dist/entities/builder/parameter.d.ts +0 -62
  79. package/dist/entities/builder/parameter.js +0 -18
  80. package/dist/entities/ui/label.d.ts +0 -18
  81. package/dist/entities/ui/label.js +0 -12
  82. package/dist/entities/ui/parameter.d.ts +0 -7
  83. package/dist/entities/ui/parameter.js +0 -29
@@ -0,0 +1,4 @@
1
+ import type { BuilderParameters, BuilderReferences } from '../references';
2
+ import type { BuilderGeneric } from './builder/index';
3
+ import type { BuilderUIGeneric } from './ui/index';
4
+ export declare function bind<Instance extends BuilderGeneric | BuilderUIGeneric>(instance: Instance, bindings: Record<string, unknown>, construct: (walked: Instance, walkedNonRefValues: ReadonlyArray<unknown>, remainingParameters: BuilderParameters, newReferences: BuilderReferences) => Instance): Instance;
@@ -0,0 +1,44 @@
1
+ import * as v from 'valibot';
2
+ import { isParameter, isRef } from '../references.js';
3
+ import { createWalkerBinding } from '../walker/index.js';
4
+ import { BuilderSchema, BuilderSerialisedSchema } from './builder/index.js';
5
+ import { BuilderUISchema, BuilderUISerialisedSchema } from './ui/index.js';
6
+ export function bind(instance, bindings, construct) {
7
+ const bindingEntries = Object.entries(bindings);
8
+ const refBindings = bindingEntries.filter(([, value]) => isRef(value));
9
+ const partBindingNames = new Set(bindingEntries
10
+ .filter(([, value]) => v.is(BuilderSchema, value) || v.is(BuilderUISchema, value))
11
+ .map(([name]) => name));
12
+ const walk = createWalkerBinding({
13
+ lookupBinding: (parameter) => {
14
+ const binding = bindings[parameter.name];
15
+ if (binding == null || isRef(binding)) {
16
+ return null;
17
+ }
18
+ return binding;
19
+ }
20
+ });
21
+ const walked = walk(schemaOf(instance), instance);
22
+ const nonRefValues = bindingEntries
23
+ .filter(([, value]) => !isRef(value))
24
+ .map(([, value]) => value);
25
+ const walkedNonRefValues = nonRefValues.map((value) => walkBindable(value, walk));
26
+ const newReferences = refBindings.map(([name, refValue]) => ({
27
+ parameter: name,
28
+ id: refValue.id
29
+ }));
30
+ const remainingParameters = walked.parameters.filter((parameter) => !isParameter(parameter) || !partBindingNames.has(parameter.name));
31
+ return construct(walked, walkedNonRefValues, remainingParameters, newReferences);
32
+ }
33
+ function schemaOf(instance) {
34
+ return v.is(BuilderUISchema, instance) ? BuilderUISerialisedSchema : BuilderSerialisedSchema;
35
+ }
36
+ function walkBindable(value, walk) {
37
+ if (v.is(BuilderUISchema, value)) {
38
+ return walk(BuilderUISerialisedSchema, value);
39
+ }
40
+ if (v.is(BuilderSchema, value)) {
41
+ return walk(BuilderSerialisedSchema, value);
42
+ }
43
+ return value;
44
+ }
@@ -0,0 +1,85 @@
1
+ import type { BuilderPaths } from '../../paths';
2
+ import type { BuilderParameter, BuilderParameters, BuilderRef, Paramable } from '../../references';
3
+ import type { BuilderCollectionConfig } from '../collection/config';
4
+ import type { BuilderCollectionPayload } from '../collection/index';
5
+ import type { BuilderComponentPayload } from '../component/index';
6
+ import type { BuilderOptionPayload } from '../option/index';
7
+ import type { BuilderWhenConfig, BuilderWhenConstrained, WhenConfigNullable } from '../when';
8
+ import type { BuilderGeneric } from './builder';
9
+ import type { BuilderState, BuilderStateAppend } from './state';
10
+ import { Builder } from './builder.js';
11
+ export type BuilderBindings<State extends BuilderState> = {
12
+ readonly [Name in BuilderParametersNamesOf<State['parameters']> | ParameterNamesOf<State['options']> | ParameterNamesOf<State['collections']> | ParameterNamesOf<State['components']> | CollectionConfigParameterNamesOf<State['collections']>]?: BuilderWhenConstrained<State, PayloadForParameter<State, Name>> | BuilderRef;
13
+ };
14
+ export declare function bindBuilder<State extends BuilderState, Bindings extends BuilderBindings<State>>(builder: Builder<State>, bindings: Bindings): Builder<BuilderBoundState<State, Bindings>>;
15
+ export type BuilderBoundState<State extends BuilderState, Bindings extends BuilderBindings<State>> = BuilderStateAppend<State, {
16
+ options: EntryBound<State['options'], Bindings>;
17
+ collections: EntryBound<State['collections'], Bindings>;
18
+ components: EntryBound<State['components'], Bindings>;
19
+ model: Omit<State['model'], keyof Bindings> & {
20
+ [K in Extract<keyof Bindings, string>]: BindingModelType<Bindings[K]>;
21
+ };
22
+ }>;
23
+ export type BindingModelType<Binding> = Binding extends BuilderRef ? unknown : BindingValueType<Binding> | BindingConfigNullable<Binding>;
24
+ type BindingValueType<Binding> = Binding extends {
25
+ readonly type: 'match';
26
+ readonly selectMap: infer SelectMap extends Record<string, unknown>;
27
+ } ? NonNullable<SelectMap[keyof SelectMap]> extends {
28
+ readonly value: infer Value;
29
+ } ? Value : string : Binding extends {
30
+ readonly payload: {
31
+ readonly value: infer Value;
32
+ };
33
+ } ? Value : Binding extends {
34
+ readonly value: infer Value;
35
+ } ? Value : string;
36
+ type BindingConfigNullable<Binding> = Binding extends BuilderWhenConfig ? WhenConfigNullable<Binding> : never;
37
+ type EntryLike = {
38
+ readonly name: string;
39
+ readonly payload: unknown;
40
+ readonly gatePaths?: Paramable<BuilderPaths>;
41
+ };
42
+ type EntryBound<Entries extends ReadonlyArray<EntryLike>, Bindings> = Entries extends readonly [
43
+ infer Head extends EntryLike,
44
+ ...infer Tail extends ReadonlyArray<EntryLike>
45
+ ] ? Head extends {
46
+ readonly payload: infer Payload;
47
+ } ? Payload extends BuilderParameter ? Head['name'] extends keyof Bindings ? Bindings[Head['name']] extends BuilderRef ? [Head, ...EntryBound<Tail, Bindings>] : [...EntryBound<Tail, Bindings>] : [Head, ...EntryBound<Tail, Bindings>] : [Head, ...EntryBound<Tail, Bindings>] : [Head, ...EntryBound<Tail, Bindings>] : [];
48
+ type EntryParameters<Entries extends ReadonlyArray<EntryLike>> = Entries[number] extends infer Entry ? Entry extends {
49
+ readonly payload: infer Payload;
50
+ } ? PayloadParameters<Payload> : never : never;
51
+ type PayloadParameters<Payload> = ParameterOf<Payload> | (Payload extends {
52
+ readonly type: 'match';
53
+ readonly selectMap: infer SelectMap;
54
+ } ? ParameterOf<SelectMap[keyof SelectMap]> : never) | (Payload extends {
55
+ readonly type: 'enable' | 'unless';
56
+ readonly payload: infer Inner;
57
+ } ? ParameterOf<Inner> : never);
58
+ type ParameterOf<Value> = Extract<Value, BuilderParameter> extends infer Parameter extends BuilderParameter ? {
59
+ readonly name: Parameter['name'];
60
+ readonly payload: Parameter;
61
+ } : never;
62
+ type ParameterNamesOf<Entries extends ReadonlyArray<EntryLike>> = EntryParameters<Entries>['name'];
63
+ type PayloadForParameter<State extends BuilderState, Name extends string> = Name extends BuilderParametersNamesOf<State['parameters']> ? BuilderGeneric : Name extends ParameterNamesOf<State['options']> ? BuilderOptionPayload : Name extends ParameterNamesOf<State['collections']> ? BuilderCollectionPayload : Name extends ParameterNamesOf<State['components']> ? BuilderComponentPayload : Name extends CollectionConfigParameterNamesOf<State['collections']> ? CollectionConfigExpectedOf<State['collections'], Name> : never;
64
+ type BuilderParametersNamesOf<Parameters extends BuilderParameters> = Extract<Parameters[number], BuilderParameter>['name'];
65
+ type CollectionConfigOf<Payload> = Payload extends BuilderCollectionConfig<infer Builder, infer Min, infer Max> ? BuilderCollectionConfig<Builder, Min, Max> : Payload extends {
66
+ readonly type: 'enable' | 'unless';
67
+ readonly payload: infer Inner;
68
+ } ? CollectionConfigOf<Inner> : Payload extends {
69
+ readonly type: 'match';
70
+ readonly selectMap: infer SelectMap;
71
+ } ? CollectionConfigOf<NonNullable<SelectMap[keyof SelectMap]>> : never;
72
+ type CollectionConfigParameterInfo<Value, Expected> = Value extends BuilderParameter ? {
73
+ readonly name: Value['name'];
74
+ readonly payload: Value;
75
+ readonly expected: Expected;
76
+ } : never;
77
+ type CollectionConfigParameters<Payload> = [CollectionConfigOf<Payload>] extends [never] ? never : CollectionConfigOf<Payload> extends BuilderCollectionConfig<infer Builder, infer Min, infer Max> ? CollectionConfigParameterInfo<Builder, BuilderGeneric> | CollectionConfigParameterInfo<Min, number> | CollectionConfigParameterInfo<Max, number> : never;
78
+ type CollectionConfigParametersOfEntries<Entries extends ReadonlyArray<EntryLike>> = Entries[number] extends infer Entry ? Entry extends {
79
+ readonly payload: infer Payload;
80
+ } ? CollectionConfigParameters<Payload> : never : never;
81
+ type CollectionConfigParameterNamesOf<Entries extends ReadonlyArray<EntryLike>> = CollectionConfigParametersOfEntries<Entries>['name'];
82
+ type CollectionConfigExpectedOf<Entries extends ReadonlyArray<EntryLike>, Name extends string> = Extract<CollectionConfigParametersOfEntries<Entries>, {
83
+ readonly name: Name;
84
+ }>['expected'];
85
+ export {};
@@ -0,0 +1,9 @@
1
+ import { bind } from '../bind.js';
2
+ import { Builder } from './builder.js';
3
+ import { mergeBuilderParts } from './builders.js';
4
+ export function bindBuilder(builder, bindings) {
5
+ return bind(builder, bindings, (walked, walkedNonRefValues, remainingParameters, newReferences) => {
6
+ const merged = mergeBuilderParts(walkedNonRefValues);
7
+ return new Builder([...remainingParameters, ...merged.parameters], [...walked.options, ...merged.options], [...walked.components, ...merged.components], [...walked.collections, ...merged.collections], [...walked.expectations, ...merged.expectations], [...walked.references, ...newReferences, ...merged.references]);
8
+ });
9
+ }
@@ -1,5 +1,5 @@
1
1
  import type { Prettify } from '../../prettify';
2
- import type { BuilderRefs, Refable } from '../../references';
2
+ import type { BuilderParameters, BuilderReferences, Paramable } from '../../references';
3
3
  import type { BuilderCollections } from '../collection/index';
4
4
  import type { BuilderComponentDetails, BuilderComponents } from '../component/index';
5
5
  import type { BuilderExpectation, BuilderExpectations } from '../expectation';
@@ -7,54 +7,55 @@ import type { BuilderOptions } from '../option/index';
7
7
  import type { BuilderWhenConstrained } from '../when';
8
8
  import type { BuilderStateAsserted } from './expectation';
9
9
  import type { BuilderCollectionMethod, BuilderComponentMethod, BuilderOptionMethod } from './methods';
10
- import type { BuilderBindings, BuilderBoundState } from './parameter';
10
+ import type { BuilderBindings, BuilderBoundState } from './bind';
11
11
  import type { BuilderState, BuilderStateEmpty } from './state';
12
12
  import * as v from 'valibot';
13
13
  export declare class Builder<State extends BuilderState = BuilderStateEmpty> {
14
14
  #private;
15
15
  readonly type: 'builder';
16
- readonly references: State['references'];
16
+ readonly parameters: State['parameters'];
17
17
  readonly options: State['options'];
18
18
  readonly components: State['components'];
19
19
  readonly collections: State['collections'];
20
20
  readonly expectations: BuilderExpectations;
21
+ readonly references: BuilderReferences;
21
22
  readonly id: `${string}-${string}-${string}-${string}-${string}`;
22
- constructor(references?: BuilderRefs, options?: BuilderOptions, components?: BuilderComponents, collections?: BuilderCollections, expectations?: BuilderExpectations);
23
+ constructor(parameters?: BuilderParameters, options?: BuilderOptions, components?: BuilderComponents, collections?: BuilderCollections, expectations?: BuilderExpectations, references?: BuilderReferences);
23
24
  get option(): BuilderOptionMethod<State>;
24
25
  get component(): BuilderComponentMethod<State>;
25
26
  get collection(): BuilderCollectionMethod<State>;
26
27
  expect<const Expectations extends readonly [BuilderExpectation, ...ReadonlyArray<BuilderExpectation>]>(...expectations: Expectations): Builder<BuilderStateAsserted<State, Expectations>>;
27
28
  bind<const Bindings extends BuilderBindings<State>>(bindings: Bindings & {
28
29
  readonly [Key in keyof Bindings]: BuilderWhenConstrained<State, Bindings[Key]>;
29
- }): Builder<BuilderBoundState<State, Bindings>>;
30
+ }): Builder<Prettify<BuilderBoundState<State, Bindings>>>;
30
31
  }
31
32
  export type BuilderGeneric = Builder<BuilderState>;
32
33
  export declare const BuilderSchema: v.InstanceSchema<typeof Builder, undefined>;
33
34
  export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
34
- readonly references: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
35
- readonly type: v.LiteralSchema<"ref", undefined>;
35
+ readonly parameters: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
36
+ readonly type: v.LiteralSchema<"parameter", undefined>;
36
37
  readonly id: v.StringSchema<undefined>;
37
38
  readonly name: v.StringSchema<undefined>;
38
39
  }, undefined>, v.ReadonlyAction<{
39
- type: "ref";
40
+ type: "parameter";
40
41
  id: string;
41
42
  name: string;
42
43
  }>]>, undefined>, v.ReadonlyAction<Readonly<{
43
- type: "ref";
44
+ type: "parameter";
44
45
  id: string;
45
46
  name: string;
46
47
  }>[]>]>;
47
48
  readonly options: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
48
49
  readonly name: v.StringSchema<undefined>;
49
50
  readonly payload: v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
50
- readonly type: v.LiteralSchema<"ref", undefined>;
51
+ readonly type: v.LiteralSchema<"parameter", undefined>;
51
52
  readonly id: v.StringSchema<undefined>;
52
53
  readonly name: v.StringSchema<undefined>;
53
54
  }, undefined>, v.ReadonlyAction<{
54
- type: "ref";
55
+ type: "parameter";
55
56
  id: string;
56
57
  name: string;
57
- }>]>, v.InstanceSchema<typeof import("../..").BuilderRef, undefined>, v.UnionSchema<[v.SchemaWithPipe<readonly [v.VariantSchema<"type", [v.SchemaWithPipe<readonly [v.ObjectSchema<{
58
+ }>]>, v.InstanceSchema<typeof import("../..").BuilderParameter, undefined>, v.UnionSchema<[v.SchemaWithPipe<readonly [v.VariantSchema<"type", [v.SchemaWithPipe<readonly [v.ObjectSchema<{
58
59
  readonly type: v.LiteralSchema<"select", undefined>;
59
60
  readonly options: v.SchemaWithPipe<readonly [v.TupleWithRestSchema<[v.StringSchema<undefined>], v.StringSchema<undefined>, undefined>, v.ReadonlyAction<[string, ...string[]]>]>;
60
61
  readonly defaultValue: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -111,7 +112,7 @@ export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.Objec
111
112
  defaultValue: string | number | boolean | null;
112
113
  isOptional: boolean;
113
114
  }>>]>, v.GenericSchema], undefined>], undefined>, v.MetadataAction<unknown, {
114
- readonly refable: v.UnionSchema<[v.SchemaWithPipe<readonly [v.VariantSchema<"type", [v.SchemaWithPipe<readonly [v.ObjectSchema<{
115
+ readonly paramable: v.UnionSchema<[v.SchemaWithPipe<readonly [v.VariantSchema<"type", [v.SchemaWithPipe<readonly [v.ObjectSchema<{
115
116
  readonly type: v.LiteralSchema<"select", undefined>;
116
117
  readonly options: v.SchemaWithPipe<readonly [v.TupleWithRestSchema<[v.StringSchema<undefined>], v.StringSchema<undefined>, undefined>, v.ReadonlyAction<[string, ...string[]]>]>;
117
118
  readonly defaultValue: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -170,68 +171,68 @@ export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.Objec
170
171
  }>>]>, v.GenericSchema], undefined>;
171
172
  }>]>;
172
173
  readonly gatePaths: v.OptionalSchema<v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
173
- readonly type: v.LiteralSchema<"ref", undefined>;
174
+ readonly type: v.LiteralSchema<"parameter", undefined>;
174
175
  readonly id: v.StringSchema<undefined>;
175
176
  readonly name: v.StringSchema<undefined>;
176
177
  }, undefined>, v.ReadonlyAction<{
177
- type: "ref";
178
+ type: "parameter";
178
179
  id: string;
179
180
  name: string;
180
- }>]>, v.InstanceSchema<typeof import("../..").BuilderRef, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>], undefined>, v.MetadataAction<readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
181
- type: "ref";
181
+ }>]>, v.InstanceSchema<typeof import("../..").BuilderParameter, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>], undefined>, v.MetadataAction<readonly (readonly (string | number)[])[] | Readonly<{
182
+ type: "parameter";
182
183
  id: string;
183
184
  name: string;
184
- }>, {
185
- readonly refable: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
185
+ }> | import("../..").BuilderParameter<string>, {
186
+ readonly paramable: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
186
187
  }>]>, undefined>;
187
188
  }, undefined>, v.MetadataAction<{
188
189
  name: string;
189
190
  payload: unknown;
190
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
191
- type: "ref";
191
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
192
+ type: "parameter";
192
193
  id: string;
193
194
  name: string;
194
- }> | undefined;
195
+ }> | import("../..").BuilderParameter<string> | undefined;
195
196
  }, {
196
197
  readonly serialisable: typeof import("..").BuilderOption;
197
198
  readonly instance: v.InstanceSchema<typeof import("..").BuilderOption, undefined>;
198
199
  }>, v.ReadonlyAction<{
199
200
  name: string;
200
201
  payload: unknown;
201
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
202
- type: "ref";
202
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
203
+ type: "parameter";
203
204
  id: string;
204
205
  name: string;
205
- }> | undefined;
206
+ }> | import("../..").BuilderParameter<string> | undefined;
206
207
  }>]>, undefined>, v.ReadonlyAction<Readonly<{
207
208
  name: string;
208
209
  payload: unknown;
209
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
210
- type: "ref";
210
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
211
+ type: "parameter";
211
212
  id: string;
212
213
  name: string;
213
- }> | undefined;
214
+ }> | import("../..").BuilderParameter<string> | undefined;
214
215
  }>[]>]>;
215
216
  readonly components: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
216
217
  readonly name: v.StringSchema<undefined>;
217
218
  readonly payload: v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
218
- readonly type: v.LiteralSchema<"ref", undefined>;
219
+ readonly type: v.LiteralSchema<"parameter", undefined>;
219
220
  readonly id: v.StringSchema<undefined>;
220
221
  readonly name: v.StringSchema<undefined>;
221
222
  }, undefined>, v.ReadonlyAction<{
222
- type: "ref";
223
+ type: "parameter";
223
224
  id: string;
224
225
  name: string;
225
- }>]>, v.InstanceSchema<typeof import("../..").BuilderRef, undefined>, v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
226
+ }>]>, v.InstanceSchema<typeof import("../..").BuilderParameter, undefined>, v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
226
227
  readonly expectations: v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
227
- readonly type: v.LiteralSchema<"ref", undefined>;
228
+ readonly type: v.LiteralSchema<"parameter", undefined>;
228
229
  readonly id: v.StringSchema<undefined>;
229
230
  readonly name: v.StringSchema<undefined>;
230
231
  }, undefined>, v.ReadonlyAction<{
231
- type: "ref";
232
+ type: "parameter";
232
233
  id: string;
233
234
  name: string;
234
- }>]>, v.InstanceSchema<typeof import("../..").BuilderRef, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
235
+ }>]>, v.InstanceSchema<typeof import("../..").BuilderParameter, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
235
236
  readonly name: v.StringSchema<undefined>;
236
237
  readonly kind: v.PicklistSchema<["option", "component", "collection", "detail"], undefined>;
237
238
  }, undefined>, v.MetadataAction<{
@@ -246,15 +247,15 @@ export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.Objec
246
247
  }>]>, undefined>, v.ReadonlyAction<Readonly<{
247
248
  name: string;
248
249
  kind: "option" | "component" | "collection" | "detail";
249
- }>[]>]>], undefined>, v.MetadataAction<import("../..").BuilderRef | Readonly<{
250
- type: "ref";
250
+ }>[]>]>], undefined>, v.MetadataAction<Readonly<{
251
+ type: "parameter";
251
252
  id: string;
252
253
  name: string;
253
- }> | readonly Readonly<{
254
+ }> | import("../..").BuilderParameter<string> | readonly Readonly<{
254
255
  name: string;
255
256
  kind: "option" | "component" | "collection" | "detail";
256
257
  }>[], {
257
- readonly refable: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
258
+ readonly paramable: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
258
259
  readonly name: v.StringSchema<undefined>;
259
260
  readonly kind: v.PicklistSchema<["option", "component", "collection", "detail"], undefined>;
260
261
  }, undefined>, v.MetadataAction<{
@@ -272,11 +273,11 @@ export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.Objec
272
273
  }>[]>]>;
273
274
  }>]>;
274
275
  }, undefined>, v.MetadataAction<{
275
- expectations: import("../..").BuilderRef | Readonly<{
276
- type: "ref";
276
+ expectations: Readonly<{
277
+ type: "parameter";
277
278
  id: string;
278
279
  name: string;
279
- }> | readonly Readonly<{
280
+ }> | import("../..").BuilderParameter<string> | readonly Readonly<{
280
281
  name: string;
281
282
  kind: "option" | "component" | "collection" | "detail";
282
283
  }>[];
@@ -284,25 +285,25 @@ export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.Objec
284
285
  readonly serialisable: typeof BuilderComponentDetails;
285
286
  readonly instance: v.InstanceSchema<typeof BuilderComponentDetails, undefined>;
286
287
  }>, v.ReadonlyAction<{
287
- expectations: import("../..").BuilderRef | Readonly<{
288
- type: "ref";
288
+ expectations: Readonly<{
289
+ type: "parameter";
289
290
  id: string;
290
291
  name: string;
291
- }> | readonly Readonly<{
292
+ }> | import("../..").BuilderParameter<string> | readonly Readonly<{
292
293
  name: string;
293
294
  kind: "option" | "component" | "collection" | "detail";
294
295
  }>[];
295
296
  }>]>, v.GenericSchema], undefined>], undefined>, v.MetadataAction<unknown, {
296
- readonly refable: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
297
+ readonly paramable: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
297
298
  readonly expectations: v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
298
- readonly type: v.LiteralSchema<"ref", undefined>;
299
+ readonly type: v.LiteralSchema<"parameter", undefined>;
299
300
  readonly id: v.StringSchema<undefined>;
300
301
  readonly name: v.StringSchema<undefined>;
301
302
  }, undefined>, v.ReadonlyAction<{
302
- type: "ref";
303
+ type: "parameter";
303
304
  id: string;
304
305
  name: string;
305
- }>]>, v.InstanceSchema<typeof import("../..").BuilderRef, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
306
+ }>]>, v.InstanceSchema<typeof import("../..").BuilderParameter, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
306
307
  readonly name: v.StringSchema<undefined>;
307
308
  readonly kind: v.PicklistSchema<["option", "component", "collection", "detail"], undefined>;
308
309
  }, undefined>, v.MetadataAction<{
@@ -317,15 +318,15 @@ export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.Objec
317
318
  }>]>, undefined>, v.ReadonlyAction<Readonly<{
318
319
  name: string;
319
320
  kind: "option" | "component" | "collection" | "detail";
320
- }>[]>]>], undefined>, v.MetadataAction<import("../..").BuilderRef | Readonly<{
321
- type: "ref";
321
+ }>[]>]>], undefined>, v.MetadataAction<Readonly<{
322
+ type: "parameter";
322
323
  id: string;
323
324
  name: string;
324
- }> | readonly Readonly<{
325
+ }> | import("../..").BuilderParameter<string> | readonly Readonly<{
325
326
  name: string;
326
327
  kind: "option" | "component" | "collection" | "detail";
327
328
  }>[], {
328
- readonly refable: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
329
+ readonly paramable: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
329
330
  readonly name: v.StringSchema<undefined>;
330
331
  readonly kind: v.PicklistSchema<["option", "component", "collection", "detail"], undefined>;
331
332
  }, undefined>, v.MetadataAction<{
@@ -343,11 +344,11 @@ export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.Objec
343
344
  }>[]>]>;
344
345
  }>]>;
345
346
  }, undefined>, v.MetadataAction<{
346
- expectations: import("../..").BuilderRef | Readonly<{
347
- type: "ref";
347
+ expectations: Readonly<{
348
+ type: "parameter";
348
349
  id: string;
349
350
  name: string;
350
- }> | readonly Readonly<{
351
+ }> | import("../..").BuilderParameter<string> | readonly Readonly<{
351
352
  name: string;
352
353
  kind: "option" | "component" | "collection" | "detail";
353
354
  }>[];
@@ -355,58 +356,58 @@ export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.Objec
355
356
  readonly serialisable: typeof BuilderComponentDetails;
356
357
  readonly instance: v.InstanceSchema<typeof BuilderComponentDetails, undefined>;
357
358
  }>, v.ReadonlyAction<{
358
- expectations: import("../..").BuilderRef | Readonly<{
359
- type: "ref";
359
+ expectations: Readonly<{
360
+ type: "parameter";
360
361
  id: string;
361
362
  name: string;
362
- }> | readonly Readonly<{
363
+ }> | import("../..").BuilderParameter<string> | readonly Readonly<{
363
364
  name: string;
364
365
  kind: "option" | "component" | "collection" | "detail";
365
366
  }>[];
366
367
  }>]>, v.GenericSchema], undefined>;
367
368
  }>]>;
368
369
  readonly gatePaths: v.OptionalSchema<v.SchemaWithPipe<readonly [v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
369
- readonly type: v.LiteralSchema<"ref", undefined>;
370
+ readonly type: v.LiteralSchema<"parameter", undefined>;
370
371
  readonly id: v.StringSchema<undefined>;
371
372
  readonly name: v.StringSchema<undefined>;
372
373
  }, undefined>, v.ReadonlyAction<{
373
- type: "ref";
374
+ type: "parameter";
374
375
  id: string;
375
376
  name: string;
376
- }>]>, v.InstanceSchema<typeof import("../..").BuilderRef, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>], undefined>, v.MetadataAction<readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
377
- type: "ref";
377
+ }>]>, v.InstanceSchema<typeof import("../..").BuilderParameter, undefined>, v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>], undefined>, v.MetadataAction<readonly (readonly (string | number)[])[] | Readonly<{
378
+ type: "parameter";
378
379
  id: string;
379
380
  name: string;
380
- }>, {
381
- readonly refable: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
381
+ }> | import("../..").BuilderParameter<string>, {
382
+ readonly paramable: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
382
383
  }>]>, undefined>;
383
384
  }, undefined>, v.MetadataAction<{
384
385
  name: string;
385
386
  payload: unknown;
386
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
387
- type: "ref";
387
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
388
+ type: "parameter";
388
389
  id: string;
389
390
  name: string;
390
- }> | undefined;
391
+ }> | import("../..").BuilderParameter<string> | undefined;
391
392
  }, {
392
393
  readonly serialisable: typeof import("..").BuilderComponent;
393
394
  readonly instance: v.InstanceSchema<typeof import("..").BuilderComponent, undefined>;
394
395
  }>, v.ReadonlyAction<{
395
396
  name: string;
396
397
  payload: unknown;
397
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
398
- type: "ref";
398
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
399
+ type: "parameter";
399
400
  id: string;
400
401
  name: string;
401
- }> | undefined;
402
+ }> | import("../..").BuilderParameter<string> | undefined;
402
403
  }>]>, undefined>, v.ReadonlyAction<Readonly<{
403
404
  name: string;
404
405
  payload: unknown;
405
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
406
- type: "ref";
406
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
407
+ type: "parameter";
407
408
  id: string;
408
409
  name: string;
409
- }> | undefined;
410
+ }> | import("../..").BuilderParameter<string> | undefined;
410
411
  }>[]>]>;
411
412
  readonly collections: v.SchemaWithPipe<readonly [v.ArraySchema<v.GenericSchema<import("..").BuilderCollectionSerialised>, undefined>, v.ReadonlyAction<import("..").BuilderCollectionSerialised[]>]>;
412
413
  readonly expectations: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
@@ -425,70 +426,88 @@ export declare const BuilderSerialisedSchema: v.SchemaWithPipe<readonly [v.Objec
425
426
  name: string;
426
427
  kind: "option" | "component" | "collection" | "detail";
427
428
  }>[]>]>;
429
+ readonly references: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
430
+ readonly parameter: v.StringSchema<undefined>;
431
+ readonly id: v.StringSchema<undefined>;
432
+ }, undefined>, v.ReadonlyAction<{
433
+ parameter: string;
434
+ id: string;
435
+ }>]>, undefined>, v.ReadonlyAction<Readonly<{
436
+ parameter: string;
437
+ id: string;
438
+ }>[]>]>;
428
439
  }, undefined>, v.MetadataAction<{
429
- readonly references: readonly Readonly<{
430
- type: "ref";
440
+ readonly parameters: readonly Readonly<{
441
+ type: "parameter";
431
442
  id: string;
432
443
  name: string;
433
444
  }>[];
434
445
  readonly options: readonly Readonly<{
435
446
  name: string;
436
447
  payload: unknown;
437
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
438
- type: "ref";
448
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
449
+ type: "parameter";
439
450
  id: string;
440
451
  name: string;
441
- }> | undefined;
452
+ }> | import("../..").BuilderParameter<string> | undefined;
442
453
  }>[];
443
454
  readonly components: readonly Readonly<{
444
455
  name: string;
445
456
  payload: unknown;
446
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
447
- type: "ref";
457
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
458
+ type: "parameter";
448
459
  id: string;
449
460
  name: string;
450
- }> | undefined;
461
+ }> | import("../..").BuilderParameter<string> | undefined;
451
462
  }>[];
452
463
  readonly collections: readonly import("..").BuilderCollectionSerialised[];
453
464
  readonly expectations: readonly Readonly<{
454
465
  name: string;
455
466
  kind: "option" | "component" | "collection" | "detail";
456
467
  }>[];
468
+ readonly references: readonly Readonly<{
469
+ parameter: string;
470
+ id: string;
471
+ }>[];
457
472
  }, {
458
473
  readonly serialisable: typeof Builder;
459
474
  readonly instance: v.InstanceSchema<typeof Builder, undefined>;
460
475
  }>, v.ReadonlyAction<{
461
- readonly references: readonly Readonly<{
462
- type: "ref";
476
+ readonly parameters: readonly Readonly<{
477
+ type: "parameter";
463
478
  id: string;
464
479
  name: string;
465
480
  }>[];
466
481
  readonly options: readonly Readonly<{
467
482
  name: string;
468
483
  payload: unknown;
469
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
470
- type: "ref";
484
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
485
+ type: "parameter";
471
486
  id: string;
472
487
  name: string;
473
- }> | undefined;
488
+ }> | import("../..").BuilderParameter<string> | undefined;
474
489
  }>[];
475
490
  readonly components: readonly Readonly<{
476
491
  name: string;
477
492
  payload: unknown;
478
- gatePaths?: readonly (readonly (string | number)[])[] | import("../..").BuilderRef | Readonly<{
479
- type: "ref";
493
+ gatePaths?: readonly (readonly (string | number)[])[] | Readonly<{
494
+ type: "parameter";
480
495
  id: string;
481
496
  name: string;
482
- }> | undefined;
497
+ }> | import("../..").BuilderParameter<string> | undefined;
483
498
  }>[];
484
499
  readonly collections: readonly import("..").BuilderCollectionSerialised[];
485
500
  readonly expectations: readonly Readonly<{
486
501
  name: string;
487
502
  kind: "option" | "component" | "collection" | "detail";
488
503
  }>[];
504
+ readonly references: readonly Readonly<{
505
+ parameter: string;
506
+ id: string;
507
+ }>[];
489
508
  }>]>;
490
509
  export type BuilderSerialised = v.InferOutput<typeof BuilderSerialisedSchema>;
491
- export type BuilderStateOf<Input extends Refable<BuilderGeneric>> = Input extends Builder<infer State extends BuilderState> ? State : BuilderStateEmpty;
510
+ export type BuilderStateOf<Input extends Paramable<BuilderGeneric>> = Input extends Builder<infer State extends BuilderState> ? State : BuilderStateEmpty;
492
511
  export type BuilderInstanceOf<Input extends BuilderGeneric> = Input extends Builder<infer State extends BuilderState> ? Prettify<State['model']> : never;
493
- export type BuilderReference = Refable<BuilderGeneric>;
494
- export type BuilderReferences = ReadonlyArray<Refable<BuilderGeneric>>;
512
+ export type BuilderPart = Paramable<BuilderGeneric>;
513
+ export type BuilderParts = ReadonlyArray<Paramable<BuilderGeneric>>;