@builder-builder/builder 0.0.9 → 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 -0
  6. package/dist/entities/builder/builder.d.ts +17 -490
  7. package/dist/entities/builder/builder.js +19 -76
  8. package/dist/entities/builder/factory.d.ts +7 -0
  9. package/dist/entities/builder/factory.js +4 -0
  10. package/dist/entities/builder/index.d.ts +3 -6
  11. package/dist/entities/builder/index.js +1 -2
  12. package/dist/entities/collection/collection.d.ts +71 -20
  13. package/dist/entities/collection/collection.js +10 -27
  14. package/dist/entities/collection/config.d.ts +40 -1049
  15. package/dist/entities/collection/config.js +11 -11
  16. package/dist/entities/collection/expectation.d.ts +8 -4
  17. package/dist/entities/collection/index.d.ts +3 -3
  18. package/dist/entities/collection/index.js +1 -1
  19. package/dist/entities/collection/when.d.ts +6 -5
  20. package/dist/entities/component/component.d.ts +272 -300
  21. package/dist/entities/component/component.js +9 -8
  22. package/dist/entities/component/details.d.ts +35 -60
  23. package/dist/entities/component/details.js +9 -9
  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 +5 -3
  29. package/dist/entities/component/index.js +3 -2
  30. package/dist/entities/component/when.d.ts +5 -5
  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 +21 -16
  36. package/dist/entities/index.js +10 -8
  37. package/dist/entities/kind.d.ts +9 -0
  38. package/dist/entities/kind.js +5 -0
  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 +2 -2
  51. package/dist/entities/option/index.js +2 -2
  52. package/dist/entities/option/option.d.ts +216 -214
  53. package/dist/entities/option/option.js +9 -8
  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 +4 -24
  59. package/dist/entities/option/values.js +10 -4
  60. package/dist/entities/option/when.d.ts +6 -5
  61. package/dist/entities/refs.d.ts +6 -0
  62. package/dist/entities/refs.js +1 -0
  63. package/dist/entities/serialise.d.ts +393 -3568
  64. package/dist/entities/serialise.js +160 -31
  65. package/dist/entities/ui/describe.d.ts +23 -57
  66. package/dist/entities/ui/describe.js +4 -5
  67. package/dist/entities/ui/index.d.ts +4 -9
  68. package/dist/entities/ui/index.js +2 -4
  69. package/dist/entities/ui/page.d.ts +23 -57
  70. package/dist/entities/ui/page.js +4 -5
  71. package/dist/entities/ui/pages.d.ts +18 -403
  72. package/dist/entities/ui/pages.js +7 -7
  73. package/dist/entities/ui/ui.d.ts +22 -1575
  74. package/dist/entities/ui/ui.js +15 -28
  75. package/dist/entities/ui/uis.d.ts +5 -9
  76. package/dist/entities/ui/uis.js +12 -19
  77. package/dist/entities/validated.d.ts +35 -0
  78. package/dist/entities/validated.js +1 -0
  79. package/dist/entities/when.d.ts +79 -70
  80. package/dist/entities/when.js +11 -7
  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 -24
  86. package/dist/index.js +5 -10
  87. package/dist/instance.d.ts +56 -0
  88. package/dist/instance.js +10 -0
  89. package/dist/mappers/index.d.ts +7 -5
  90. package/dist/mappers/index.js +5 -3
  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 +27 -36
  109. package/dist/references.js +19 -12
  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 +12 -9
  133. package/dist/entities/builder/builders.d.ts +0 -20
  134. package/dist/entities/builder/builders.js +0 -18
  135. package/dist/entities/builder/expectation.d.ts +0 -12
  136. package/dist/entities/builder/methods.d.ts +0 -58
  137. package/dist/entities/builder/parameter.d.ts +0 -62
  138. package/dist/entities/builder/parameter.js +0 -18
  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/label.d.ts +0 -18
  143. package/dist/entities/ui/label.js +0 -12
  144. package/dist/entities/ui/parameter.d.ts +0 -7
  145. package/dist/entities/ui/parameter.js +0 -29
  146. package/dist/entities/ui/validate.d.ts +0 -8
  147. package/dist/entities/ui/validate.js +0 -21
  148. package/dist/entities/validate.d.ts +0 -28
  149. package/dist/mappers/assert/builder.d.ts +0 -2
  150. package/dist/mappers/assert/builder.js +0 -46
  151. package/dist/mappers/assert/expectation.d.ts +0 -2
  152. package/dist/mappers/assert/expectation.js +0 -23
  153. package/dist/mappers/assert/index.d.ts +0 -6
  154. package/dist/mappers/assert/index.js +0 -4
  155. package/dist/mappers/assert/model.d.ts +0 -13
  156. package/dist/mappers/assert/model.js +0 -47
  157. package/dist/mappers/assert/models.d.ts +0 -33
  158. package/dist/mappers/assert/models.js +0 -74
  159. package/dist/mappers/assert/ui.d.ts +0 -2
  160. package/dist/mappers/assert/ui.js +0 -22
  161. package/dist/mappers/instance/index.d.ts +0 -1
  162. package/dist/mappers/instance/index.js +0 -1
  163. package/dist/mappers/instance/instance.d.ts +0 -4
  164. package/dist/mappers/instance/instance.js +0 -33
  165. package/dist/mappers/models/component-graph.d.ts +0 -9
  166. package/dist/mappers/models/component-graph.js +0 -51
  167. package/dist/mappers/models/graph.d.ts +0 -12
  168. package/dist/mappers/models/graph.js +0 -17
  169. package/dist/mappers/models/index.d.ts +0 -1
  170. package/dist/mappers/models/index.js +0 -1
  171. package/dist/mappers/models/models.d.ts +0 -3
  172. package/dist/mappers/models/models.js +0 -37
  173. package/dist/mappers/models/option-graph.d.ts +0 -9
  174. package/dist/mappers/order/index.d.ts +0 -2
  175. package/dist/mappers/order/index.js +0 -1
  176. package/dist/mappers/order/order.d.ts +0 -14
  177. package/dist/mappers/order/order.js +0 -31
  178. package/dist/model.d.ts +0 -14
  179. package/dist/walker/index.d.ts +0 -2
  180. package/dist/walker/index.js +0 -1
  181. package/dist/walker/walkable.d.ts +0 -4
  182. package/dist/walker/walkable.js +0 -4
  183. package/dist/walker/walker.d.ts +0 -18
  184. package/dist/walker/walker.js +0 -103
  185. package/dist/walker/walkers.d.ts +0 -8
  186. package/dist/walker/walkers.js +0 -51
  187. /package/dist/entities/builder/{expectation.js → bind.js} +0 -0
  188. /package/dist/entities/{builder/state.js → entry.js} +0 -0
  189. /package/dist/entities/{errors.js → model/bind.js} +0 -0
  190. /package/dist/entities/{validate.js → model/expectation.js} +0 -0
  191. /package/dist/{model.js → entities/model/state.js} +0 -0
@@ -1,84 +1,27 @@
1
1
  import * as v from 'valibot';
2
- import { check } from '../../check.js';
3
- import { BuilderRefsSerialisedSchema } from '../../references.js';
2
+ import { BuilderRefSerialisedSchema } from '../../references.js';
4
3
  import { serialisable } from '../../serialisable.js';
5
- import { BuilderCollectionsSerialisedSchema } from '../collection/index.js';
6
- import { BuilderComponentDetailsSchema, BuilderComponentsSerialisedSchema, componentDetails } from '../component/index.js';
7
- import { BuilderExpectationsSerialisedSchema } from '../expectation.js';
8
- import { BuilderOptionsSerialisedSchema } from '../option/index.js';
9
- import { builderCollectionMethod, builderComponentMethod, builderOptionMethod } from './methods.js';
10
- import { bindBuilder } from './parameter.js';
11
- import { validateDuplicates, validatePaths } from './validate.js';
4
+ import { BuilderModel, BuilderModelSerialisedSchema } from '../model/index.js';
5
+ import { BuilderUI, BuilderUISerialisedSchema } from '../ui/index.js';
12
6
  export class Builder {
13
- references;
14
- options;
15
- components;
16
- collections;
17
- expectations;
18
- id = crypto.randomUUID();
19
- constructor(references = [], options = [], components = [], collections = [], expectations = []) {
20
- this.references = references;
21
- this.options = options;
22
- this.components = components;
23
- this.collections = collections;
24
- this.expectations = expectations;
25
- validateDuplicates(this);
26
- validatePaths(this);
7
+ model;
8
+ ui;
9
+ bindings;
10
+ constructor(model = new BuilderModel(), ui = new BuilderUI([], [], []), bindings = {}) {
11
+ this.model = model;
12
+ this.ui = ui;
13
+ this.bindings = bindings;
27
14
  }
28
- get option() {
29
- const method = builderOptionMethod();
30
- const add = (name, payload) => {
31
- return this.#next({ options: [...this.options, method(name, payload)] });
32
- };
33
- const when = (gatePaths, name, config) => {
34
- return this.#next({ options: [...this.options, method.when(gatePaths, name, config)] });
35
- };
36
- return Object.assign(add, { when });
37
- }
38
- get component() {
39
- const method = builderComponentMethod();
40
- const add = (name, details) => {
41
- const wrappedDetails = check.is(BuilderComponentDetailsSchema, details)
42
- ? details
43
- : details != null
44
- ? componentDetails(details)
45
- : details;
46
- return this.#next({ components: [...this.components, method(name, wrappedDetails)] });
47
- };
48
- const when = (gatePaths, name, config) => {
49
- return this.#next({
50
- components: [...this.components, method.when(gatePaths, name, config)]
51
- });
52
- };
53
- return Object.assign(add, { when });
54
- }
55
- get collection() {
56
- const method = builderCollectionMethod();
57
- const add = (name, payload) => {
58
- return this.#next({ collections: [...this.collections, method(name, payload)] });
59
- };
60
- const when = (gatePaths, name, config) => {
61
- return this.#next({
62
- collections: [...this.collections, method.when(gatePaths, name, config)]
63
- });
64
- };
65
- return Object.assign(add, { when });
66
- }
67
- expect(...expectations) {
68
- return this.#next({ expectations: [...this.expectations, ...expectations] });
69
- }
70
- bind(bindings) {
71
- return bindBuilder(this, bindings);
72
- }
73
- #next(patch) {
74
- return new Builder(this.references, patch.options ?? this.options, patch.components ?? this.components, patch.collections ?? this.collections, patch.expectations ?? this.expectations);
15
+ bind(extra) {
16
+ return new Builder(this.model, this.ui, {
17
+ ...this.bindings,
18
+ ...extra
19
+ });
75
20
  }
76
21
  }
77
22
  export const BuilderSchema = v.instance(Builder);
78
- export const BuilderSerialisedSchema = serialisable(Builder, v.object({
79
- references: BuilderRefsSerialisedSchema,
80
- options: BuilderOptionsSerialisedSchema,
81
- components: BuilderComponentsSerialisedSchema,
82
- collections: BuilderCollectionsSerialisedSchema,
83
- expectations: BuilderExpectationsSerialisedSchema
23
+ export const BuilderSerialisedSchema = serialisable(v.object({
24
+ model: BuilderModelSerialisedSchema,
25
+ ui: BuilderUISerialisedSchema,
26
+ bindings: v.pipe(v.record(v.string(), v.union([BuilderRefSerialisedSchema, v.unknown()])), v.readonly())
84
27
  }));
@@ -0,0 +1,7 @@
1
+ import type { BuilderModel } from '../model/model';
2
+ import type { BuilderModelState } from '../model/state';
3
+ import type { BuilderUI } from '../ui/ui';
4
+ import type { BuilderBindings } from './bind';
5
+ import { Builder } from './builder.js';
6
+ export declare function builder(): Builder<BuilderModelState>;
7
+ export declare function builder<const State extends BuilderModelState>(model: BuilderModel<State>, ui?: BuilderUI, bindings?: BuilderBindings): Builder<State>;
@@ -0,0 +1,4 @@
1
+ import { Builder } from './builder.js';
2
+ export function builder(model, ui, bindings) {
3
+ return new Builder(model, ui, bindings);
4
+ }
@@ -1,7 +1,4 @@
1
- export type { BuilderGeneric, BuilderInstanceOf, BuilderReference, BuilderReferences, BuilderSerialised, BuilderStateOf } from './builder';
2
- export type { BuilderStateAsserted, ModelAsserted, ModelExpected } from './expectation';
3
- export type { BindingModelType, BuilderBindings, BuilderBoundState } from './parameter';
4
- export type { BuilderState, BuilderStateAppend, BuilderStateEmpty } from './state';
1
+ export type { BuilderBindings, BuilderBindingsSerialised } from './bind';
2
+ export type { BuilderSerialised } from './builder';
5
3
  export { Builder, BuilderSchema, BuilderSerialisedSchema } from './builder.js';
6
- export { builders, mergeBuilderParts } from './builders.js';
7
- export { bindBuilder } from './parameter.js';
4
+ export { builder } from './factory.js';
@@ -1,3 +1,2 @@
1
1
  export { Builder, BuilderSchema, BuilderSerialisedSchema } from './builder.js';
2
- export { builders, mergeBuilderParts } from './builders.js';
3
- export { bindBuilder } from './parameter.js';
2
+ export { builder } from './factory.js';
@@ -1,37 +1,88 @@
1
1
  import type { BuilderPaths } from '../../paths';
2
- import type { Refable, RefableSerialised } from '../../references';
3
- import type { BuilderState } from '../builder/index';
4
- import type { BuilderWhen, WhenSerialised } from '../when';
5
- import type { BuilderCollectionConfigSerialised } from './config';
2
+ import type { Paramable, ParamableSerialised } from '../../references';
3
+ import type { BuilderModelState } from '../model/index';
4
+ import type { BuilderWhenSerialised } from '../when';
5
+ import type { BuilderCollectionConfig, BuilderCollectionConfigSerialised } from './config';
6
+ import type { BuilderCollectionWhen } from './when';
6
7
  import * as v from 'valibot';
7
- import { BuilderCollectionConfig } from './config.js';
8
- export type BuilderErrorInvalidCollectionBounds = {
9
- readonly kind: 'invalid-collection-bounds';
10
- readonly name: string;
11
- readonly min: number;
12
- readonly max: number;
13
- };
14
- export type BuilderCollectionPayload = BuilderCollectionConfig | BuilderWhen<Refable<BuilderCollectionConfig>>;
15
- export declare class BuilderCollection<const Name extends string = string, const Payload extends Refable<BuilderCollectionPayload> = Refable<BuilderCollectionPayload>, const GatePaths extends Refable<BuilderPaths> = Refable<BuilderPaths>> {
8
+ export type BuilderCollectionPayload = BuilderCollectionConfig | BuilderCollectionWhen;
9
+ export declare class BuilderCollection<const Name extends string = string, const Payload extends Paramable<BuilderCollectionPayload> = Paramable<BuilderCollectionPayload>, const Paths extends Paramable<BuilderPaths> = Paramable<BuilderPaths>> {
16
10
  readonly type: 'collection';
17
11
  readonly name: Name;
18
12
  readonly payload: Payload;
19
- readonly gatePaths?: GatePaths;
20
- constructor(name: Name, payload: Payload, gatePaths?: GatePaths);
13
+ readonly paths?: Paths;
14
+ constructor(name: Name, payload: Payload, paths?: Paths);
21
15
  }
22
16
  export declare const BuilderCollectionSchema: v.InstanceSchema<typeof BuilderCollection, undefined>;
23
17
  export type BuilderCollections = ReadonlyArray<BuilderCollection>;
24
- export declare const BuilderCollectionWhenSerialisedSchema: v.GenericSchema;
25
- export type BuilderCollectionWhenSerialised = WhenSerialised<BuilderCollectionConfigSerialised>;
18
+ export declare const BuilderCollectionWhenSerialisedSchema: v.GenericSchema<BuilderWhenSerialised<Readonly<{
19
+ model: Readonly<{
20
+ type: "parameter";
21
+ id: string;
22
+ name: string;
23
+ }> | Readonly<{
24
+ type: "ref";
25
+ id: string;
26
+ }> | import("..").BuilderModelSerialised;
27
+ min: number | Readonly<{
28
+ type: "parameter";
29
+ id: string;
30
+ name: string;
31
+ }> | Readonly<{
32
+ type: "ref";
33
+ id: string;
34
+ }>;
35
+ max: number | Readonly<{
36
+ type: "parameter";
37
+ id: string;
38
+ name: string;
39
+ }> | Readonly<{
40
+ type: "ref";
41
+ id: string;
42
+ }>;
43
+ }>>>;
44
+ export type BuilderCollectionWhenSerialised = BuilderWhenSerialised<BuilderCollectionConfigSerialised>;
45
+ export declare const BuilderCollectionSelectMapSerialisedSchema: v.GenericSchema<import("..").BuilderMatchSelectMap<Readonly<{
46
+ type: "parameter";
47
+ id: string;
48
+ name: string;
49
+ }> | Readonly<{
50
+ model: Readonly<{
51
+ type: "parameter";
52
+ id: string;
53
+ name: string;
54
+ }> | Readonly<{
55
+ type: "ref";
56
+ id: string;
57
+ }> | import("..").BuilderModelSerialised;
58
+ min: number | Readonly<{
59
+ type: "parameter";
60
+ id: string;
61
+ name: string;
62
+ }> | Readonly<{
63
+ type: "ref";
64
+ id: string;
65
+ }>;
66
+ max: number | Readonly<{
67
+ type: "parameter";
68
+ id: string;
69
+ name: string;
70
+ }> | Readonly<{
71
+ type: "ref";
72
+ id: string;
73
+ }>;
74
+ }>>>;
26
75
  export type BuilderCollectionSerialised = {
27
76
  readonly name: string;
28
- readonly gatePaths?: RefableSerialised<BuilderPaths>;
29
- readonly payload: RefableSerialised<BuilderCollectionConfigSerialised | BuilderCollectionWhenSerialised>;
77
+ readonly paths?: ParamableSerialised<BuilderPaths>;
78
+ readonly payload: ParamableSerialised<BuilderCollectionConfigSerialised | BuilderCollectionWhenSerialised>;
30
79
  };
31
80
  export declare const BuilderCollectionSerialisedSchema: v.GenericSchema<BuilderCollectionSerialised>;
32
81
  export declare const BuilderCollectionsSerialisedSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.GenericSchema<BuilderCollectionSerialised>, undefined>, v.ReadonlyAction<BuilderCollectionSerialised[]>]>;
33
82
  export type BuilderCollectionsSerialised = ReadonlyArray<BuilderCollectionSerialised>;
34
- export type CollectionNamesOf<State extends BuilderState | null> = [State] extends [BuilderState] ? State['collections'][number]['name'] : never;
83
+ export type CollectionNamesOf<State extends BuilderModelState | null> = [State] extends [
84
+ BuilderModelState
85
+ ] ? State['collections'][number]['name'] : never;
35
86
  export type CollectionShape<Collection extends BuilderCollection, Item> = Collection['payload'] extends BuilderCollectionConfig ? Collection['payload']['min'] extends number ? Collection['payload']['max'] extends number ? number extends Collection['payload']['min'] ? ReadonlyArray<Item> : number extends Collection['payload']['max'] ? ReadonlyArray<Item> : Collection['payload']['min'] extends Collection['payload']['max'] ? CollectionTuple<Item, Collection['payload']['min']> : ReadonlyArray<Item> : ReadonlyArray<Item> : ReadonlyArray<Item> : ReadonlyArray<Item>;
36
87
  type CollectionTuple<Item, Length extends number, Result extends ReadonlyArray<Item> = []> = Result['length'] extends Length ? Result : CollectionTuple<Item, Length, [...Result, Item]>;
37
88
  export {};
@@ -1,42 +1,25 @@
1
1
  import * as v from 'valibot';
2
- import { BuilderException } from '../../exception.js';
3
2
  import { BuilderPathsSchema } from '../../paths.js';
4
- import { isRef, refable } from '../../references.js';
3
+ import { paramable } from '../../references.js';
5
4
  import { serialisable } from '../../serialisable.js';
6
- import { createWhenSerialisedSchema } from '../when.js';
7
- import { BuilderCollectionConfig, BuilderCollectionConfigSerialisedSchema } from './config.js';
5
+ import { createSelectMapSerialisedSchema, createWhenSerialisedSchema } from '../when.js';
6
+ import { BuilderCollectionConfigSerialisedSchema } from './config.js';
8
7
  export class BuilderCollection {
9
8
  name;
10
9
  payload;
11
- gatePaths;
12
- constructor(name, payload, gatePaths) {
10
+ paths;
11
+ constructor(name, payload, paths) {
13
12
  this.name = name;
14
13
  this.payload = payload;
15
- this.gatePaths = gatePaths;
16
- validateCollectionBounds(name, payload);
17
- }
18
- }
19
- function validateCollectionBounds(name, payload) {
20
- if (!(payload instanceof BuilderCollectionConfig)) {
21
- return;
22
- }
23
- const { min, max } = payload;
24
- if (isRef(min) || isRef(max)) {
25
- return;
26
- }
27
- const minValue = min;
28
- const maxValue = max;
29
- if (minValue < 0 || maxValue <= 0 || maxValue < minValue) {
30
- throw new BuilderException([
31
- { kind: 'invalid-collection-bounds', name, min: minValue, max: maxValue }
32
- ]);
14
+ this.paths = paths;
33
15
  }
34
16
  }
35
17
  export const BuilderCollectionSchema = v.instance(BuilderCollection);
36
18
  export const BuilderCollectionWhenSerialisedSchema = createWhenSerialisedSchema(BuilderCollectionConfigSerialisedSchema);
37
- export const BuilderCollectionSerialisedSchema = serialisable(BuilderCollection, v.object({
19
+ export const BuilderCollectionSelectMapSerialisedSchema = createSelectMapSerialisedSchema(BuilderCollectionConfigSerialisedSchema);
20
+ export const BuilderCollectionSerialisedSchema = serialisable(v.object({
38
21
  name: v.string(),
39
- payload: refable(v.union([BuilderCollectionConfigSerialisedSchema, BuilderCollectionWhenSerialisedSchema])),
40
- gatePaths: v.optional(refable(BuilderPathsSchema))
22
+ payload: paramable(v.union([BuilderCollectionConfigSerialisedSchema, BuilderCollectionWhenSerialisedSchema])),
23
+ paths: v.optional(paramable(BuilderPathsSchema))
41
24
  }));
42
25
  export const BuilderCollectionsSerialisedSchema = v.pipe(v.array(BuilderCollectionSerialisedSchema), v.readonly());