@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,53 +1,40 @@
1
1
  import * as v from 'valibot';
2
- import { BuilderRefsSerialisedSchema, isRef, refable } 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 './parameter.js';
7
6
  import { BuilderUIDescribe } from './describe.js';
8
- import { BuilderUILabel } from './label.js';
9
7
  import { BuilderUIPage } from './page.js';
10
8
  import { BuilderUIItemsSerialisedSchema, BuilderUIPages } from './pages.js';
11
- import { validatePagesCollections } from './validate.js';
12
9
  export class BuilderUI {
13
- builder;
14
- references;
10
+ uis;
15
11
  items;
16
12
  expectations;
17
- id = crypto.randomUUID();
18
- constructor(builder, references, items, expectations) {
19
- this.builder = builder;
20
- this.references = references;
13
+ constructor(uis, items, expectations) {
14
+ this.uis = uis;
21
15
  this.items = items;
22
16
  this.expectations = expectations;
23
- validatePagesCollections(builder, items);
24
17
  }
25
18
  expect(...expectations) {
26
- return new BuilderUI(this.builder, this.references, this.items, [...this.expectations, ...expectations]
27
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- type narrowing cast, validated at merge time
28
- );
19
+ return new BuilderUI(this.uis, this.items, [
20
+ ...this.expectations,
21
+ ...expectations
22
+ ]);
29
23
  }
30
24
  page(label, paths) {
31
- return new BuilderUI(this.builder, this.references, [...this.items, new BuilderUIPage(this.#label(label), paths)], this.expectations);
25
+ return new BuilderUI(this.uis, [...this.items, new BuilderUIPage(label, paths)], this.expectations);
32
26
  }
33
27
  describe(label, paths) {
34
- return new BuilderUI(this.builder, this.references, [...this.items, new BuilderUIDescribe(this.#label(label), paths)], this.expectations);
28
+ return new BuilderUI(this.uis, [...this.items, new BuilderUIDescribe(label, paths)], this.expectations);
35
29
  }
36
30
  pages(name, label, itemUI) {
37
- const items = isRef(itemUI) ? itemUI : itemUI.items;
38
- return new BuilderUI(this.builder, this.references, [...this.items, new BuilderUIPages(name, this.#label(label), items)], this.expectations);
39
- }
40
- bind(bindings) {
41
- return bindUI(this, bindings);
42
- }
43
- #label(label) {
44
- return isRef(label) ? label : new BuilderUILabel(label);
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);
45
33
  }
46
34
  }
47
35
  export const BuilderUISchema = v.instance(BuilderUI);
48
- export const BuilderUISerialisedSchema = serialisable(BuilderUI, v.object({
49
- builder: refable(v.lazy(() => BuilderSerialisedSchema)),
50
- references: BuilderRefsSerialisedSchema,
36
+ export const BuilderUISerialisedSchema = serialisable(v.object({
37
+ uis: v.pipe(v.array(paramable(v.lazy(() => BuilderUISerialisedSchema))), v.readonly()),
51
38
  items: BuilderUIItemsSerialisedSchema,
52
39
  expectations: BuilderExpectationsSerialisedSchema
53
40
  }));
@@ -1,10 +1,6 @@
1
- import type { BuilderGeneric } from '../builder/index';
2
- import type { BuilderUIReferences } from './ui';
3
- import { BuilderRef } from '../../references.js';
1
+ import type { BuilderModelGeneric } from '../model/model';
2
+ import type { BuilderUIs } from './ui';
4
3
  import { BuilderUI } from './ui.js';
5
- export declare function uis(): BuilderUI<BuilderRef>;
6
- export declare function uis<const BuilderType extends BuilderGeneric>(uiBuilder: BuilderType, ...parts: BuilderUIReferences): BuilderUI<BuilderType>;
7
- export declare function mergeUIParts(parts: ReadonlyArray<unknown>): {
8
- references: BuilderRef[];
9
- expectations: import("..").BuilderExpectation<string, unknown, "option" | "component" | "collection" | "detail">[];
10
- };
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,20 +1,13 @@
1
- import * as v from 'valibot';
2
- import { BuilderRef } from '../../references.js';
3
- import { BuilderUI, BuilderUISchema } from './ui.js';
4
- export function uis(uiBuilder, ...parts) {
5
- const builder = uiBuilder ?? new BuilderRef('builder');
6
- const merged = mergeUIParts(parts);
7
- return new BuilderUI(builder, merged.references, parts.flatMap((part) => {
8
- if (v.is(BuilderUISchema, part)) {
9
- return [...part.items];
10
- }
11
- return [part];
12
- }), merged.expectations);
13
- }
14
- export function mergeUIParts(parts) {
15
- const instances = parts.filter((part) => v.is(BuilderUISchema, part));
16
- return {
17
- references: instances.flatMap((instance) => [...instance.references]),
18
- expectations: instances.flatMap((instance) => [...instance.expectations])
19
- };
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, [], []);
20
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
- import type { BuilderRef, BuilderRefSerialised, Refable } from '../references';
4
- import type { BuilderGeneric, BuilderState, BuilderStateOf } from './builder/index';
3
+ import type { BuilderParameter, BuilderParameterSerialised, Paramable } from '../references';
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,20 +20,20 @@ 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
- readonly payload: Payload | BuilderRefSerialised;
25
+ readonly payload: Payload | BuilderParameterSerialised;
26
26
  } | {
27
27
  readonly type: 'match';
28
- readonly matchPath: BuilderRefSerialised | BuilderPath;
29
- readonly selectMap: Record<string, (Payload | BuilderRefSerialised) | null> | BuilderRefSerialised;
28
+ readonly matchPath: BuilderParameterSerialised | BuilderPath;
29
+ readonly selectMap: Record<string, (Payload | BuilderParameterSerialised) | null> | BuilderParameterSerialised;
30
30
  } | {
31
31
  readonly type: 'unless';
32
- readonly unlessPath: BuilderRefSerialised | BuilderPath;
32
+ readonly unlessPath: BuilderParameterSerialised | BuilderPath;
33
33
  readonly disabledValues: BuilderPrimitives;
34
- readonly payload: Payload | BuilderRefSerialised;
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,136 +41,145 @@ 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<{
45
- readonly type: v.LiteralSchema<"ref", undefined>;
44
+ readonly matchPath: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
45
+ readonly type: v.LiteralSchema<"parameter", undefined>;
46
46
  readonly id: v.StringSchema<undefined>;
47
47
  readonly name: v.StringSchema<undefined>;
48
48
  }, undefined>, v.ReadonlyAction<{
49
- type: "ref";
49
+ type: "parameter";
50
50
  id: string;
51
51
  name: string;
52
- }>]>, v.InstanceSchema<typeof BuilderRef, 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)[] | BuilderRef | Readonly<{
52
+ }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
53
+ readonly type: v.LiteralSchema<"ref", undefined>;
54
+ readonly id: v.StringSchema<undefined>;
55
+ }, undefined>, v.ReadonlyAction<{
53
56
  type: "ref";
54
57
  id: string;
55
- name: string;
56
- }>, {
57
- readonly refable: 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<{
63
- readonly type: v.LiteralSchema<"ref", undefined>;
62
+ readonly unlessPath: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
63
+ readonly type: v.LiteralSchema<"parameter", undefined>;
64
64
  readonly id: v.StringSchema<undefined>;
65
65
  readonly name: v.StringSchema<undefined>;
66
66
  }, undefined>, v.ReadonlyAction<{
67
- type: "ref";
67
+ type: "parameter";
68
68
  id: string;
69
69
  name: string;
70
- }>]>, v.InstanceSchema<typeof BuilderRef, 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)[] | BuilderRef | Readonly<{
70
+ }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
71
+ readonly type: v.LiteralSchema<"ref", undefined>;
72
+ readonly id: v.StringSchema<undefined>;
73
+ }, undefined>, v.ReadonlyAction<{
71
74
  type: "ref";
72
75
  id: string;
73
- name: string;
74
- }>, {
75
- readonly refable: 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<{
83
- readonly type: v.LiteralSchema<"ref", undefined>;
82
+ readonly matchPath: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
83
+ readonly type: v.LiteralSchema<"parameter", undefined>;
84
84
  readonly id: v.StringSchema<undefined>;
85
85
  readonly name: v.StringSchema<undefined>;
86
86
  }, undefined>, v.ReadonlyAction<{
87
- type: "ref";
87
+ type: "parameter";
88
88
  id: string;
89
89
  name: string;
90
- }>]>, v.InstanceSchema<typeof BuilderRef, 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)[] | BuilderRef | Readonly<{
90
+ }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
91
+ readonly type: v.LiteralSchema<"ref", undefined>;
92
+ readonly id: v.StringSchema<undefined>;
93
+ }, undefined>, v.ReadonlyAction<{
91
94
  type: "ref";
92
95
  id: string;
93
- name: string;
94
- }>, {
95
- readonly refable: 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<{
100
- readonly type: v.LiteralSchema<"ref", undefined>;
99
+ readonly unlessPath: v.UnionSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
100
+ readonly type: v.LiteralSchema<"parameter", undefined>;
101
101
  readonly id: v.StringSchema<undefined>;
102
102
  readonly name: v.StringSchema<undefined>;
103
103
  }, undefined>, v.ReadonlyAction<{
104
- type: "ref";
104
+ type: "parameter";
105
105
  id: string;
106
106
  name: string;
107
- }>]>, v.InstanceSchema<typeof BuilderRef, 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)[] | BuilderRef | Readonly<{
107
+ }>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
108
+ readonly type: v.LiteralSchema<"ref", undefined>;
109
+ readonly id: v.StringSchema<undefined>;
110
+ }, undefined>, v.ReadonlyAction<{
108
111
  type: "ref";
109
112
  id: string;
110
- name: string;
111
- }>, {
112
- readonly refable: 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
- matchPath: readonly (string | number)[] | BuilderRef | Readonly<{
119
- type: "ref";
116
+ matchPath: readonly (string | number)[] | Readonly<{
117
+ type: "parameter";
120
118
  id: string;
121
119
  name: string;
120
+ }> | Readonly<{
121
+ type: "ref";
122
+ id: string;
122
123
  }>;
123
124
  } | {
124
125
  type: "unless";
125
- unlessPath: readonly (string | number)[] | BuilderRef | Readonly<{
126
- type: "ref";
126
+ unlessPath: readonly (string | number)[] | Readonly<{
127
+ type: "parameter";
127
128
  id: string;
128
129
  name: string;
130
+ }> | Readonly<{
131
+ type: "ref";
132
+ id: string;
129
133
  }>;
134
+ } | {
135
+ type: "enable";
130
136
  }>]>;
131
137
  export type BuilderWhenConfig = v.InferOutput<typeof BuilderWhenConfigSchema>;
132
- 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>>>;
133
142
  export declare function createWhenFactories<Payload>(): {
134
- enable: <const Values extends Refable<Payload>>(values: Values) => BuilderEnableConfig<Values>;
135
- match: <const MatchPayload extends Refable<Payload>, const MatchPath extends Refable<BuilderPath>, const SelectMap extends Refable<BuilderMatchSelectMap<Refable<Payload>>>>(matchPath: MatchPath, selectMap: SelectMap) => BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
136
- unless: <const Values extends Refable<Payload>, const UnlessPath extends Refable<BuilderPath>>(unlessPath: UnlessPath, disabledValues: BuilderPrimitives, values: Values) => BuilderUnlessConfig<Values, UnlessPath>;
143
+ enable: <const Values extends Paramable<Payload>>(values: Values) => BuilderEnableConfig<Values>;
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>;
145
+ unless: <const Values extends Paramable<Payload>, const UnlessPath extends Paramable<BuilderPath>>(unlessPath: UnlessPath, disabledValues: BuilderPrimitives, values: Values) => BuilderUnlessConfig<Values, UnlessPath>;
137
146
  };
138
- export type BuilderValidPath<State extends BuilderState> = ModelValidPath<State['model']>;
139
- export type BuilderValidPaths<State extends BuilderState> = ReadonlyArray<BuilderValidPath<State>>;
140
- export type BuilderValidPathsOf<Input extends Refable<BuilderGeneric>> = BuilderValidPaths<BuilderStateOf<Input>>;
141
- export type BuilderWhenConstrained<State extends BuilderState, Config> = Config extends BuilderRef ? 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 {
142
151
  readonly type: 'match';
143
152
  readonly matchPath: infer MatchPath extends BuilderPath;
144
153
  readonly selectMap: infer SelectMap;
145
154
  } ? Config & {
146
155
  readonly matchPath: [MatchPath] extends [Readonly<BuilderValidPath<State>>] ? MatchPath : Readonly<BuilderValidPath<State>>;
147
- readonly selectMap: SelectMap extends BuilderRef ? 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]>;
148
157
  } : Config extends {
149
158
  readonly type: 'unless';
150
159
  readonly unlessPath: infer UnlessPath extends BuilderPath;
151
160
  } ? Config & {
152
161
  readonly unlessPath: [UnlessPath] extends [Readonly<BuilderValidPath<State>>] ? UnlessPath : Readonly<BuilderValidPath<State>>;
153
162
  } : Config;
154
- export type WhenConfigNullable<Config extends BuilderWhenConfig> = Config extends {
163
+ export type WhenConfigNullable<Config extends BuilderWhenGeneric> = Config extends {
155
164
  readonly type: 'unless';
156
165
  } ? null : Config extends {
157
166
  readonly type: 'match';
158
167
  readonly selectMap: infer SelectMap;
159
168
  } ? null extends SelectMap[keyof SelectMap] ? null : never : never;
160
- export type WhenNullability<State extends BuilderState, GatePaths extends Refable<BuilderPaths>, Config extends Refable<BuilderWhenConfig>> = [GatePaths] extends [BuilderRef] ? null : WhenNullabilityFromPaths<State['model'], Extract<GatePaths, BuilderValidPaths<State>>, Config>;
161
- type BuilderResolvePath<Model, Path extends BuilderPath> = Path extends readonly [
162
- infer Head extends keyof Model & string
163
- ] ? Model[Head] : Path extends readonly [
164
- 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,
165
174
  ...infer Tail extends BuilderPath
166
- ] ? Model[Head] extends ReadonlyArray<infer Item> ? Tail extends readonly [number, ...infer Rest extends BuilderPath] ? BuilderResolvePath<Item, Rest> : never : BuilderResolvePath<Model[Head], Tail> : never;
167
- type WhenNullabilityFromPaths<Model, GatePaths extends BuilderPaths, Config extends Refable<BuilderWhenConfig>> = Config extends BuilderRef ? WhenPathsNullable<Model, GatePaths> : Config extends BuilderWhenConfig ? WhenPathsNullable<Model, GatePaths> | WhenConfigNullable<Config> : never;
168
- 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 [
169
178
  infer Head extends BuilderPath,
170
179
  ...infer Tail extends BuilderPaths
171
- ] ? WhenPathNullable<Model, Head> | WhenPathsNullable<Model, Tail> : never;
172
- type WhenPathNullable<Model, Path extends BuilderPath> = null extends BuilderResolvePath<Model, Path> ? null : never;
173
- 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]>] : {
174
- [Key in keyof Model & string]: [Key] | (Model[Key] extends BuilderPrimitive | null ? never : [Key, ...ModelValidPath<Model[Key], [...Depth, never]>]);
175
- }[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];
176
185
  export {};
@@ -1,34 +1,38 @@
1
1
  import * as v from 'valibot';
2
2
  import { BuilderPathSchema } from '../paths.js';
3
3
  import { BuilderPrimitivesSchema } from '../primitive.js';
4
- import { refable } from '../references.js';
4
+ import { paramable } from '../references.js';
5
5
  export const BuilderWhenEnableSchema = v.object({
6
6
  type: v.literal('enable')
7
7
  });
8
8
  export const BuilderWhenMatchSchema = v.object({
9
9
  type: v.literal('match'),
10
- matchPath: refable(BuilderPathSchema)
10
+ matchPath: paramable(BuilderPathSchema)
11
11
  });
12
12
  export const BuilderWhenUnlessSchema = v.object({
13
13
  type: v.literal('unless'),
14
- unlessPath: refable(BuilderPathSchema)
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());
18
+ export function createSelectMapSerialisedSchema(payloadSchema) {
19
+ return v.pipe(v.record(v.string(), v.nullable(paramable(payloadSchema))), v.readonly());
20
+ }
17
21
  export function createWhenSerialisedSchema(payloadSchema) {
18
- const refablePayload = refable(payloadSchema);
22
+ const paramablePayload = paramable(payloadSchema);
19
23
  return v.pipe(v.variant('type', [
20
24
  v.object({
21
25
  ...BuilderWhenEnableSchema.entries,
22
- payload: refablePayload
26
+ payload: paramablePayload
23
27
  }),
24
28
  v.object({
25
29
  ...BuilderWhenMatchSchema.entries,
26
- selectMap: refable(v.record(v.string(), v.nullable(refablePayload)))
30
+ selectMap: paramable(createSelectMapSerialisedSchema(payloadSchema))
27
31
  }),
28
32
  v.object({
29
33
  ...BuilderWhenUnlessSchema.entries,
30
34
  disabledValues: BuilderPrimitivesSchema,
31
- payload: refablePayload
35
+ payload: paramablePayload
32
36
  })
33
37
  ]), v.readonly());
34
38
  }
@@ -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,38 +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, BuilderReference, BuilderReferences, BuilderSelectType, BuilderSelectTypeLabels, BuilderSelectTypeSerialised, BuilderSelectTypeValues, BuilderSerialised, BuilderToggleType, BuilderToggleTypeSerialised, BuilderToggleValueType, BuilderUI, BuilderUIDescribe, BuilderUIDescribeSerialised, BuilderUIGeneric, BuilderUIItem, BuilderUIItems, BuilderUIItemsSerialised, BuilderUILabel, BuilderUILabelSerialised, BuilderUIPage, BuilderUIPageSerialised, BuilderUIPages, BuilderUIPagesSerialised, BuilderUIReference, BuilderUIReferences, BuilderUISerialised, BuilderUIValidated, BuilderValidated, BuilderWhenConfig } from './entities/index';
2
- export type { BuilderError, BuilderErrors } from './exception';
3
- export type { BuilderErrorInvalidCollection, BuilderErrorInvalidOption, BuilderErrorInvalidVariant, BuilderErrorMissingComponent, BuilderErrorMissingDetail, BuilderErrorMissingVariant, BuilderErrorUnexpectedComponent, BuilderErrorUnexpectedDetail, BuilderOrder, BuilderRenderOption, BuilderRenderOptions, BuilderRenderPage, BuilderRenderPages, BuilderRenderResult, BuilderRenderUpdate } from './mappers/index';
4
- 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';
5
7
  export type { BuilderPath, BuilderPaths } from './paths';
6
8
  export type { BuilderPrimitive, BuilderPrimitives } from './primitive';
7
- export type { BuilderRef, BuilderRefSerialised, Refable, RefableSerialised } from './references';
8
- import { builders, collectionConfig, collectionExpectation, componentDetails, componentExpectation, detailExpectation, optionExpectation, uis } from './entities/index.js';
9
- import { createInstance, createModels } from './mappers/index.js';
10
- 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';
11
15
  export declare const collection: typeof collectionConfig & {
12
- enable: <const Values extends import("./references").Refable<import(".").BuilderCollectionConfig<import("./references").Refable<import(".").BuilderGeneric>, import("./references").Refable<number>, import("./references").Refable<number>>>>(values: Values) => import("./entities/when").BuilderEnableConfig<Values>;
13
- match: <const MatchPayload extends import("./references").Refable<import(".").BuilderCollectionConfig<import("./references").Refable<import(".").BuilderGeneric>, import("./references").Refable<number>, import("./references").Refable<number>>>, const MatchPath extends import("./references").Refable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Refable<import("./entities/when").BuilderMatchSelectMap<import("./references").Refable<import(".").BuilderCollectionConfig<import("./references").Refable<import(".").BuilderGeneric>, import("./references").Refable<number>, import("./references").Refable<number>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import("./entities/when").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
14
- unless: <const Values extends import("./references").Refable<import(".").BuilderCollectionConfig<import("./references").Refable<import(".").BuilderGeneric>, import("./references").Refable<number>, import("./references").Refable<number>>>, const UnlessPath extends import("./references").Refable<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>;
15
19
  };
16
20
  export declare const component: typeof componentDetails & {
17
- enable: <const Payload extends import("./references").Refable<import(".").BuilderComponentDetails>>(payload?: Payload) => import("./entities/when").BuilderEnableConfig<Payload>;
18
- match: <const Payload extends import("./references").Refable<import(".").BuilderComponentDetails>, const MatchPath extends import("./references").Refable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Refable<import("./entities/when").BuilderMatchSelectMap<import("./references").Refable<import(".").BuilderComponentDetails>>>>(matchPath: MatchPath, selectMap: SelectMap) => import("./entities/when").BuilderMatchConfig<Payload, MatchPath, SelectMap>;
19
- unless: <const UnlessPath extends import("./references").Refable<import("./paths").BuilderPath>, const Payload extends import("./references").Refable<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>;
20
24
  };
21
25
  export declare const has: {
22
26
  collection: typeof collectionExpectation;
23
27
  component: typeof componentExpectation;
24
- detail: typeof detailExpectation;
25
28
  option: typeof optionExpectation;
26
29
  };
27
- export declare const instance: typeof createInstance;
28
- export declare const models: typeof createModels;
29
30
  export declare const option: {
30
- enable: <const Values extends import("./references").Refable<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>;
31
- match: <const MatchPayload extends import("./references").Refable<import(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<import("valibot").GenericSchema<string | number | boolean | null>>>, const MatchPath extends import("./references").Refable<import("./paths").BuilderPath>, const SelectMap extends import("./references").Refable<import("./entities/when").BuilderMatchSelectMap<import("./references").Refable<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>;
32
- unless: <const Values extends import("./references").Refable<import(".").BuilderSelectType<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import(".").BuilderToggleType<import("valibot").GenericSchema<string | number | boolean | null>>>, const UnlessPath extends import("./references").Refable<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>;
33
34
  };
34
35
  export declare const ui: typeof uis;
35
- export { BuilderException } from './exception.js';
36
- export { BuilderSerialisedSchema } from './entities/builder/index.js';
37
- export { deserialise, parameter, select, serialise, toggleBoolean, toggleNumber, toggleString } from './entities/index.js';
38
- export { order, ordinal, render } from './mappers/index.js';