@builder-builder/builder 0.0.6 → 0.0.8

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 (216) hide show
  1. package/dist/check.d.ts +2 -1
  2. package/dist/check.js +6 -2
  3. package/dist/entities/builder/builder.d.ts +494 -0
  4. package/dist/entities/builder/builder.js +84 -0
  5. package/dist/entities/builder/builders.d.ts +20 -0
  6. package/dist/entities/builder/builders.js +18 -0
  7. package/dist/entities/builder/expectation.d.ts +12 -0
  8. package/dist/entities/builder/index.d.ts +7 -0
  9. package/dist/entities/builder/index.js +3 -0
  10. package/dist/entities/builder/methods.d.ts +58 -0
  11. package/dist/entities/builder/methods.js +30 -0
  12. package/dist/entities/builder/parameter.d.ts +61 -0
  13. package/dist/entities/builder/parameter.js +18 -0
  14. package/dist/entities/builder/state.d.ts +26 -0
  15. package/dist/entities/builder/validate.d.ts +3 -0
  16. package/dist/entities/builder/validate.js +108 -0
  17. package/dist/entities/collection/collection.d.ts +37 -0
  18. package/dist/entities/collection/collection.js +42 -0
  19. package/dist/entities/collection/config.d.ts +1094 -0
  20. package/dist/entities/collection/config.js +23 -0
  21. package/dist/entities/collection/expectation.d.ts +7 -0
  22. package/dist/entities/collection/expectation.js +4 -0
  23. package/dist/entities/collection/index.d.ts +8 -0
  24. package/dist/entities/collection/index.js +4 -0
  25. package/dist/entities/collection/when.d.ts +9 -0
  26. package/dist/entities/collection/when.js +2 -0
  27. package/dist/entities/component/component.d.ts +403 -0
  28. package/dist/entities/component/component.js +24 -0
  29. package/dist/entities/component/details.d.ts +82 -0
  30. package/dist/entities/component/details.js +17 -0
  31. package/dist/entities/component/expectation.d.ts +8 -0
  32. package/dist/entities/component/expectation.js +7 -0
  33. package/dist/entities/component/index.d.ts +8 -0
  34. package/dist/entities/component/index.js +4 -0
  35. package/dist/entities/component/when.d.ts +11 -0
  36. package/dist/entities/component/when.js +20 -0
  37. package/dist/entities/errors.d.ts +21 -0
  38. package/dist/entities/expectation.d.ts +44 -0
  39. package/dist/entities/expectation.js +23 -0
  40. package/dist/entities/index.d.ts +18 -0
  41. package/dist/entities/index.js +9 -0
  42. package/dist/entities/option/expectation.d.ts +2 -0
  43. package/dist/entities/option/expectation.js +4 -0
  44. package/dist/entities/option/index.d.ts +11 -0
  45. package/dist/entities/option/index.js +6 -0
  46. package/dist/entities/option/option.d.ts +347 -0
  47. package/dist/entities/option/option.js +24 -0
  48. package/dist/entities/option/select.d.ts +49 -0
  49. package/dist/entities/option/select.js +40 -0
  50. package/dist/entities/option/toggle.d.ts +39 -0
  51. package/dist/entities/option/toggle.js +42 -0
  52. package/dist/entities/option/values.d.ts +63 -0
  53. package/dist/entities/option/values.js +8 -0
  54. package/dist/entities/option/when.d.ts +9 -0
  55. package/dist/entities/option/when.js +2 -0
  56. package/dist/entities/serialise.d.ts +3801 -0
  57. package/dist/entities/serialise.js +41 -0
  58. package/dist/entities/ui/describe.d.ts +100 -0
  59. package/dist/entities/ui/describe.js +22 -0
  60. package/dist/entities/ui/index.d.ts +14 -0
  61. package/dist/entities/ui/index.js +7 -0
  62. package/dist/entities/ui/label.d.ts +18 -0
  63. package/dist/entities/ui/label.js +12 -0
  64. package/dist/entities/ui/page.d.ts +96 -0
  65. package/dist/entities/ui/page.js +20 -0
  66. package/dist/entities/ui/pages.d.ts +431 -0
  67. package/dist/entities/ui/pages.js +29 -0
  68. package/dist/entities/ui/parameter.d.ts +7 -0
  69. package/dist/entities/ui/parameter.js +29 -0
  70. package/dist/entities/ui/ui.d.ts +1582 -0
  71. package/dist/entities/ui/ui.js +53 -0
  72. package/dist/entities/ui/uis.d.ts +10 -0
  73. package/dist/entities/ui/uis.js +20 -0
  74. package/dist/entities/ui/validate.d.ts +8 -0
  75. package/dist/entities/ui/validate.js +21 -0
  76. package/dist/entities/validate.d.ts +28 -0
  77. package/dist/entities/validate.js +1 -0
  78. package/dist/entities/when.d.ts +176 -0
  79. package/dist/entities/when.js +47 -0
  80. package/dist/exception.d.ts +8 -0
  81. package/dist/exception.js +7 -0
  82. package/dist/index.d.ts +37 -13
  83. package/dist/index.js +22 -5
  84. package/dist/mappers/assert/builder.d.ts +2 -0
  85. package/dist/mappers/assert/builder.js +46 -0
  86. package/dist/mappers/assert/expectation.d.ts +2 -0
  87. package/dist/mappers/assert/expectation.js +23 -0
  88. package/dist/mappers/assert/index.d.ts +6 -0
  89. package/dist/mappers/assert/index.js +4 -0
  90. package/dist/mappers/assert/model.d.ts +13 -0
  91. package/dist/mappers/assert/model.js +47 -0
  92. package/dist/mappers/assert/models.d.ts +33 -0
  93. package/dist/mappers/assert/models.js +74 -0
  94. package/dist/mappers/assert/ui.d.ts +2 -0
  95. package/dist/mappers/assert/ui.js +22 -0
  96. package/dist/mappers/index.d.ts +7 -0
  97. package/dist/mappers/index.js +4 -0
  98. package/dist/mappers/instance/index.d.ts +1 -0
  99. package/dist/mappers/instance/index.js +1 -0
  100. package/dist/mappers/instance/instance.d.ts +4 -0
  101. package/dist/mappers/instance/instance.js +33 -0
  102. package/dist/mappers/models/component-graph.d.ts +9 -0
  103. package/dist/{core/component/graph.js → mappers/models/component-graph.js} +3 -3
  104. package/dist/{core → mappers/models}/graph.d.ts +4 -1
  105. package/dist/mappers/models/graph.js +17 -0
  106. package/dist/mappers/models/index.d.ts +1 -0
  107. package/dist/mappers/models/index.js +1 -0
  108. package/dist/mappers/models/models.d.ts +3 -0
  109. package/dist/mappers/models/models.js +37 -0
  110. package/dist/mappers/models/option-graph.d.ts +9 -0
  111. package/dist/mappers/models/option-graph.js +77 -0
  112. package/dist/mappers/order/index.d.ts +2 -0
  113. package/dist/mappers/order/index.js +1 -0
  114. package/dist/mappers/order/order.d.ts +14 -0
  115. package/dist/mappers/order/order.js +31 -0
  116. package/dist/mappers/render/index.d.ts +4 -0
  117. package/dist/mappers/render/index.js +2 -0
  118. package/dist/mappers/render/ordinal.d.ts +1 -0
  119. package/dist/mappers/render/ordinal.js +20 -0
  120. package/dist/mappers/render/pages.d.ts +15 -0
  121. package/dist/mappers/render/pages.js +1 -0
  122. package/dist/mappers/render/render.d.ts +8 -0
  123. package/dist/mappers/render/render.js +124 -0
  124. package/dist/mappers/resolve.d.ts +9 -0
  125. package/dist/mappers/resolve.js +57 -0
  126. package/dist/model.d.ts +8 -8
  127. package/dist/paths.d.ts +5 -16
  128. package/dist/paths.js +3 -0
  129. package/dist/primitive.d.ts +5 -0
  130. package/dist/{schemas/primitives.js → primitive.js} +0 -2
  131. package/dist/references.d.ts +60 -0
  132. package/dist/references.js +26 -0
  133. package/dist/serialisable.d.ts +10 -0
  134. package/dist/serialisable.js +5 -0
  135. package/dist/walker/index.d.ts +2 -0
  136. package/dist/walker/index.js +1 -0
  137. package/dist/walker/walkable.d.ts +4 -0
  138. package/dist/walker/walkable.js +4 -0
  139. package/dist/walker/walker.d.ts +18 -0
  140. package/dist/walker/walker.js +103 -0
  141. package/dist/walker/walkers.d.ts +8 -0
  142. package/dist/walker/walkers.js +51 -0
  143. package/package.json +10 -4
  144. package/dist/core/builder.d.ts +0 -70
  145. package/dist/core/builder.js +0 -124
  146. package/dist/core/collection/collection.d.ts +0 -32
  147. package/dist/core/collection/collection.js +0 -37
  148. package/dist/core/collection/index.d.ts +0 -4
  149. package/dist/core/collection/index.js +0 -2
  150. package/dist/core/collection/method.d.ts +0 -30
  151. package/dist/core/collection/method.js +0 -11
  152. package/dist/core/component/component.d.ts +0 -9
  153. package/dist/core/component/component.js +0 -10
  154. package/dist/core/component/graph.d.ts +0 -9
  155. package/dist/core/component/index.d.ts +0 -4
  156. package/dist/core/component/index.js +0 -2
  157. package/dist/core/component/method.d.ts +0 -11
  158. package/dist/core/expectation.d.ts +0 -45
  159. package/dist/core/expectation.js +0 -22
  160. package/dist/core/graph.js +0 -3
  161. package/dist/core/index.d.ts +0 -12
  162. package/dist/core/index.js +0 -6
  163. package/dist/core/option/graph.d.ts +0 -10
  164. package/dist/core/option/graph.js +0 -78
  165. package/dist/core/option/index.d.ts +0 -9
  166. package/dist/core/option/index.js +0 -5
  167. package/dist/core/option/method.d.ts +0 -70
  168. package/dist/core/option/method.js +0 -13
  169. package/dist/core/option/option.d.ts +0 -30
  170. package/dist/core/option/option.js +0 -42
  171. package/dist/core/option/select.d.ts +0 -22
  172. package/dist/core/option/select.js +0 -34
  173. package/dist/core/option/toggle.d.ts +0 -14
  174. package/dist/core/option/toggle.js +0 -27
  175. package/dist/core/parameter.d.ts +0 -48
  176. package/dist/core/parameter.js +0 -31
  177. package/dist/core/when/config.d.ts +0 -20
  178. package/dist/core/when/config.js +0 -4
  179. package/dist/core/when/constrain.d.ts +0 -14
  180. package/dist/core/when/index.d.ts +0 -5
  181. package/dist/core/when/index.js +0 -2
  182. package/dist/core/when/nullability.d.ts +0 -18
  183. package/dist/core/when/resolve.d.ts +0 -18
  184. package/dist/core/when/resolve.js +0 -22
  185. package/dist/resolve/index.d.ts +0 -9
  186. package/dist/resolve/index.js +0 -5
  187. package/dist/resolve/instance.d.ts +0 -3
  188. package/dist/resolve/instance.js +0 -26
  189. package/dist/resolve/models.d.ts +0 -3
  190. package/dist/resolve/models.js +0 -10
  191. package/dist/resolve/order.d.ts +0 -19
  192. package/dist/resolve/order.js +0 -24
  193. package/dist/resolve/render.d.ts +0 -21
  194. package/dist/resolve/render.js +0 -171
  195. package/dist/resolve/validate.d.ts +0 -33
  196. package/dist/resolve/validate.js +0 -51
  197. package/dist/schemas/description.d.ts +0 -5
  198. package/dist/schemas/description.js +0 -3
  199. package/dist/schemas/index.d.ts +0 -6
  200. package/dist/schemas/index.js +0 -3
  201. package/dist/schemas/primitives.d.ts +0 -9
  202. package/dist/schemas/ui.d.ts +0 -96
  203. package/dist/schemas/ui.js +0 -23
  204. package/dist/serialise/deserialise.d.ts +0 -9
  205. package/dist/serialise/deserialise.js +0 -113
  206. package/dist/serialise/index.d.ts +0 -4
  207. package/dist/serialise/index.js +0 -3
  208. package/dist/serialise/schemas.d.ts +0 -1885
  209. package/dist/serialise/schemas.js +0 -141
  210. package/dist/serialise/serialise.d.ts +0 -10
  211. package/dist/serialise/serialise.js +0 -140
  212. package/dist/ui.d.ts +0 -18
  213. package/dist/ui.js +0 -53
  214. /package/dist/{core/component/method.js → entities/builder/expectation.js} +0 -0
  215. /package/dist/{core/when/constrain.js → entities/builder/state.js} +0 -0
  216. /package/dist/{core/when/nullability.js → entities/errors.js} +0 -0
@@ -1,141 +0,0 @@
1
- import * as v from 'valibot';
2
- import { BuilderParameterSchema } from '../core/parameter.js';
3
- import { BuilderOptionValuesMapSchema, BuilderOptionValuesSchema } from '../core/option/option.js';
4
- import { BuilderPathSchema, BuilderPathsSchema, BuilderPrimitiveSchema } from '../schemas/primitives.js';
5
- export { BuilderOptionValuesMapSchema, BuilderOptionValuesSchema, BuilderParameterSchema };
6
- export const BuilderSelectTypeSerialisedSchema = v.pipe(v.object({
7
- type: v.literal('select'),
8
- options: v.pipe(v.tupleWithRest([v.string()], v.string()), v.readonly()),
9
- defaultValue: v.nullable(v.string()),
10
- optional: v.boolean(),
11
- labels: v.record(v.string(), v.string())
12
- }), v.readonly());
13
- export const BuilderToggleTypeSerialisedSchema = v.pipe(v.object({
14
- type: v.literal('toggle'),
15
- valueType: v.string(),
16
- defaultValue: v.nullable(v.union([v.boolean(), v.string(), v.number()])),
17
- optional: v.boolean()
18
- }), v.readonly());
19
- export const BuilderParameterSerialisedSchema = v.pipe(v.object({ type: v.literal('parameter') }), v.readonly());
20
- export const BuilderValuesSerialisedSchema = v.pipe(v.variant('type', [BuilderSelectTypeSerialisedSchema, BuilderToggleTypeSerialisedSchema]), v.readonly());
21
- export const BuilderOptionEnableConfigSerialisedSchema = v.pipe(v.object({
22
- type: v.literal('enable'),
23
- values: v.union([BuilderValuesSerialisedSchema, BuilderParameterSerialisedSchema])
24
- }), v.readonly());
25
- export const BuilderOptionMatchConfigSerialisedSchema = v.pipe(v.object({
26
- type: v.literal('match'),
27
- matchPath: BuilderPathSchema,
28
- selectMap: v.union([
29
- v.record(v.string(), v.nullable(BuilderValuesSerialisedSchema)),
30
- BuilderParameterSerialisedSchema
31
- ])
32
- }), v.readonly());
33
- export const BuilderOptionUnlessConfigSerialisedSchema = v.pipe(v.object({
34
- type: v.literal('unless'),
35
- unlessPath: BuilderPathSchema,
36
- disabledValues: v.pipe(v.array(BuilderPrimitiveSchema), v.readonly()),
37
- values: v.union([BuilderValuesSerialisedSchema, BuilderParameterSerialisedSchema])
38
- }), v.readonly());
39
- export const BuilderOptionWhenConfigSerialisedSchema = v.pipe(v.variant('type', [
40
- BuilderOptionEnableConfigSerialisedSchema,
41
- BuilderOptionMatchConfigSerialisedSchema,
42
- BuilderOptionUnlessConfigSerialisedSchema
43
- ]), v.readonly());
44
- export const BuilderOptionSerialisedSchema = v.pipe(v.object({
45
- name: v.string(),
46
- values: v.union([BuilderValuesSerialisedSchema, BuilderParameterSerialisedSchema]),
47
- gatePaths: BuilderPathsSchema,
48
- config: v.nullable(BuilderOptionWhenConfigSerialisedSchema)
49
- }), v.readonly());
50
- export const BuilderComponentSerialisedSchema = v.pipe(v.object({
51
- name: v.string(),
52
- paths: BuilderPathsSchema,
53
- dependencies: v.pipe(v.array(v.string()), v.readonly())
54
- }), v.readonly());
55
- const lazyBuilder = () => v.lazy(() => BuilderSerialisedSchema);
56
- const BuilderSerialisedCollectionConfigObject = v.object({
57
- builder: lazyBuilder(),
58
- min: v.number(),
59
- max: v.number()
60
- });
61
- const BuilderSerialisedCollectionEnableConfigObject = v.object({
62
- type: v.literal('enable'),
63
- builder: lazyBuilder(),
64
- min: v.number(),
65
- max: v.number()
66
- });
67
- const BuilderSerialisedCollectionMatchConfigObject = v.object({
68
- type: v.literal('match'),
69
- matchPath: BuilderPathSchema,
70
- selectMap: v.record(v.string(), v.nullable(BuilderSerialisedCollectionConfigObject))
71
- });
72
- const BuilderSerialisedCollectionUnlessConfigObject = v.object({
73
- type: v.literal('unless'),
74
- unlessPath: BuilderPathSchema,
75
- disabledValues: v.pipe(v.array(BuilderPrimitiveSchema), v.readonly()),
76
- builder: lazyBuilder(),
77
- min: v.number(),
78
- max: v.number()
79
- });
80
- const BuilderSerialisedCollectionObject = v.object({
81
- name: v.string(),
82
- builder: lazyBuilder(),
83
- min: v.number(),
84
- max: v.number(),
85
- gatePaths: BuilderPathsSchema,
86
- config: v.nullable(v.variant('type', [
87
- BuilderSerialisedCollectionEnableConfigObject,
88
- BuilderSerialisedCollectionMatchConfigObject,
89
- BuilderSerialisedCollectionUnlessConfigObject
90
- ]))
91
- });
92
- const BuilderSerialisedUIPageObject = v.object({
93
- type: v.literal('page'),
94
- label: v.nullable(v.string()),
95
- paths: BuilderPathsSchema
96
- });
97
- const BuilderSerialisedUIDescribeObject = v.object({
98
- type: v.literal('describe'),
99
- label: v.nullable(v.string()),
100
- paths: BuilderPathsSchema
101
- });
102
- const lazySerialisedUIItems = () => v.lazy(() => BuilderUIItemsSerialisedSchema);
103
- const BuilderSerialisedUICollectionObject = v.object({
104
- type: v.literal('collection'),
105
- name: v.string(),
106
- label: v.string(),
107
- items: lazySerialisedUIItems()
108
- });
109
- export const BuilderCollectionConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionConfigObject, v.readonly());
110
- export const BuilderCollectionEnableConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionEnableConfigObject, v.readonly());
111
- export const BuilderCollectionMatchConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionMatchConfigObject, v.readonly());
112
- export const BuilderCollectionUnlessConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionUnlessConfigObject, v.readonly());
113
- export const BuilderCollectionWhenConfigSerialisedSchema = v.pipe(v.variant('type', [
114
- BuilderSerialisedCollectionEnableConfigObject,
115
- BuilderSerialisedCollectionMatchConfigObject,
116
- BuilderSerialisedCollectionUnlessConfigObject
117
- ]), v.readonly());
118
- export const BuilderCollectionSerialisedSchema = v.pipe(BuilderSerialisedCollectionObject, v.readonly());
119
- export const BuilderExpectationSerialisedSchema = v.pipe(v.object({
120
- name: v.string(),
121
- kind: v.picklist(['option', 'component', 'collection'])
122
- }), v.readonly());
123
- export const BuilderSerialisedSchema = v.pipe(v.object({
124
- options: v.pipe(v.array(BuilderOptionSerialisedSchema), v.readonly()),
125
- components: v.pipe(v.array(BuilderComponentSerialisedSchema), v.readonly()),
126
- collections: v.pipe(v.array(BuilderSerialisedCollectionObject), v.readonly()),
127
- expectations: v.pipe(v.array(BuilderExpectationSerialisedSchema), v.readonly())
128
- }), v.readonly());
129
- export const BuilderUIPageSerialisedSchema = v.pipe(BuilderSerialisedUIPageObject, v.readonly());
130
- export const BuilderUIDescribeSerialisedSchema = v.pipe(BuilderSerialisedUIDescribeObject, v.readonly());
131
- export const BuilderUICollectionSerialisedSchema = v.pipe(BuilderSerialisedUICollectionObject, v.readonly());
132
- export const BuilderUIItemSerialisedSchema = v.pipe(v.variant('type', [
133
- BuilderSerialisedUIPageObject,
134
- BuilderSerialisedUIDescribeObject,
135
- BuilderSerialisedUICollectionObject
136
- ]), v.readonly());
137
- export const BuilderUIItemsSerialisedSchema = v.pipe(v.array(v.variant('type', [
138
- BuilderSerialisedUIPageObject,
139
- BuilderSerialisedUIDescribeObject,
140
- BuilderSerialisedUICollectionObject
141
- ])), v.readonly());
@@ -1,10 +0,0 @@
1
- import type { BuilderGeneric } from '../core/index';
2
- import type { BuilderSerialised, BuilderUISerialised } from './schemas';
3
- import type { BuilderUIGeneric } from '../ui';
4
- export declare const serialise: {
5
- builder: typeof serialiseBuilder;
6
- ui: typeof serialiseUI;
7
- };
8
- declare function serialiseBuilder(builder: BuilderGeneric): BuilderSerialised;
9
- declare function serialiseUI(input: BuilderUIGeneric): BuilderUISerialised;
10
- export {};
@@ -1,140 +0,0 @@
1
- import * as v from 'valibot';
2
- import { BuilderCollection, BuilderComponent, BuilderOption, BuilderParameter, BuilderParameterSchema, BuilderSelectType } from '../core/index.js';
3
- export const serialise = {
4
- builder: serialiseBuilder,
5
- ui: serialiseUI
6
- };
7
- function serialiseBuilder(builder) {
8
- return {
9
- options: builder.options.map(serialiseOption),
10
- components: builder.components.map(serialiseComponent),
11
- collections: builder.collections.map(serialiseCollection),
12
- expectations: builder.expectations.map(serialiseExpectation)
13
- };
14
- }
15
- function serialiseUI(input) {
16
- return input.items;
17
- }
18
- function serialiseOption(option) {
19
- return {
20
- name: option.name,
21
- values: serialiseValues(option.values),
22
- gatePaths: option.gatePaths,
23
- config: serialiseOptionWhenConfig(option.config)
24
- };
25
- }
26
- function serialiseComponent(component) {
27
- return {
28
- name: component.name,
29
- paths: component.paths,
30
- dependencies: component.dependencies
31
- };
32
- }
33
- function serialiseExpectation(expectation) {
34
- return {
35
- name: expectation.name,
36
- kind: expectation.kind
37
- };
38
- }
39
- function serialiseCollection(collection) {
40
- return {
41
- name: collection.name,
42
- builder: serialiseBuilder(collection.builder),
43
- min: collection.min,
44
- max: collection.max,
45
- gatePaths: collection.gatePaths,
46
- config: serialiseCollectionWhenConfig(collection.config)
47
- };
48
- }
49
- function serialiseValues(optionValues) {
50
- if (v.is(BuilderParameterSchema, optionValues)) {
51
- return { type: 'parameter' };
52
- }
53
- if (v.is(v.instance(BuilderSelectType), optionValues)) {
54
- return {
55
- type: 'select',
56
- options: optionValues.options,
57
- defaultValue: optionValues.defaultValue,
58
- optional: optionValues.isOptional,
59
- labels: optionValues.optionLabels
60
- };
61
- }
62
- return {
63
- type: 'toggle',
64
- valueType: optionValues.valueSchema.expects,
65
- defaultValue: optionValues.defaultValue,
66
- optional: optionValues.isOptional
67
- };
68
- }
69
- function serialiseOptionWhenConfig(config) {
70
- if (config === null) {
71
- return null;
72
- }
73
- switch (config.type) {
74
- case 'enable': {
75
- return { type: 'enable', values: serialiseValues(config.values) };
76
- }
77
- case 'match': {
78
- if (v.is(BuilderParameterSchema, config.selectMap)) {
79
- return {
80
- type: 'match',
81
- matchPath: config.matchPath,
82
- selectMap: { type: 'parameter' }
83
- };
84
- }
85
- return {
86
- type: 'match',
87
- matchPath: config.matchPath,
88
- selectMap: Object.fromEntries(Object.entries(config.selectMap).map(([key, value]) => [
89
- key,
90
- value ? serialiseValues(value) : null
91
- ]))
92
- };
93
- }
94
- case 'unless': {
95
- return {
96
- type: 'unless',
97
- unlessPath: config.unlessPath,
98
- disabledValues: config.disabledValues,
99
- values: serialiseValues(config.values)
100
- };
101
- }
102
- }
103
- }
104
- function serialiseCollectionWhenConfig(config) {
105
- if (config === null) {
106
- return null;
107
- }
108
- switch (config.type) {
109
- case 'enable': {
110
- return {
111
- type: 'enable',
112
- builder: serialiseBuilder(config.builder),
113
- min: config.min,
114
- max: config.max
115
- };
116
- }
117
- case 'match': {
118
- return {
119
- type: 'match',
120
- matchPath: config.matchPath,
121
- selectMap: Object.fromEntries(Object.entries(config.selectMap).map(([key, value]) => [
122
- key,
123
- value
124
- ? { builder: serialiseBuilder(value.builder), min: value.min, max: value.max }
125
- : null
126
- ]))
127
- };
128
- }
129
- case 'unless': {
130
- return {
131
- type: 'unless',
132
- unlessPath: config.unlessPath,
133
- disabledValues: config.disabledValues,
134
- builder: serialiseBuilder(config.builder),
135
- min: config.min,
136
- max: config.max
137
- };
138
- }
139
- }
140
- }
package/dist/ui.d.ts DELETED
@@ -1,18 +0,0 @@
1
- import type { BuilderModelPaths } from './paths';
2
- import type { BuilderCollectionNamesOf, BuilderGeneric } from './core/index';
3
- import type { BuilderExpectationEntries, BuilderExpectations, BuilderModelAsserted } from './core/expectation';
4
- import type { BuilderUIItems } from './schemas/index';
5
- export type BuilderUIGeneric = BuilderUI<BuilderGeneric>;
6
- export type BuilderUIs = ReadonlyArray<BuilderUI<BuilderGeneric | null>>;
7
- export declare class BuilderUI<Builder extends BuilderGeneric | null = BuilderGeneric> {
8
- readonly builder: Builder;
9
- readonly items: BuilderUIItems;
10
- readonly expectations: BuilderExpectationEntries;
11
- constructor(builder: Builder, items?: BuilderUIItems, expectations?: BuilderExpectationEntries);
12
- expect<const Expectations extends BuilderExpectations>(...expectations: Expectations): BuilderUI<BuilderModelAsserted<Builder, Expectations>>;
13
- page(label: string | null, paths: BuilderModelPaths<Builder>): BuilderUI<Builder>;
14
- describe(label: string | null, paths: BuilderModelPaths<Builder>): BuilderUI<Builder>;
15
- collection<const Name extends BuilderCollectionNamesOf<Builder>>(name: Name, label: string, itemUI: BuilderUI<BuilderGeneric | null>): BuilderUI<Builder>;
16
- }
17
- export declare function ui(): BuilderUI<null>;
18
- export declare function ui<const Builder extends BuilderGeneric>(builder: Builder, ...uis: BuilderUIs): BuilderUI<Builder>;
package/dist/ui.js DELETED
@@ -1,53 +0,0 @@
1
- import * as v from 'valibot';
2
- import { BuilderExpectation } from './core/expectation.js';
3
- import { check } from './check.js';
4
- export class BuilderUI {
5
- builder;
6
- items;
7
- expectations;
8
- constructor(builder, items = [], expectations = []) {
9
- this.builder = builder;
10
- this.items = items;
11
- this.expectations = expectations;
12
- }
13
- expect(...expectations) {
14
- return new BuilderUI(
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- type narrowing cast, validated at merge time
16
- this.builder, this.items, [...this.expectations, ...expectations]);
17
- }
18
- page(label, paths) {
19
- return new BuilderUI(this.builder, [...this.items, { type: 'page', label, paths }], this.expectations);
20
- }
21
- describe(label, paths) {
22
- return new BuilderUI(this.builder, [...this.items, { type: 'describe', label, paths }], this.expectations);
23
- }
24
- collection(name, label, itemUI) {
25
- if (this.builder) {
26
- const foundCollection = this.builder.collections.find((entry) => entry.name === name);
27
- check.truthy(foundCollection, `Collection '${name}' not found! ❌`);
28
- }
29
- return new BuilderUI(this.builder, [...this.items, { type: 'collection', name, label, items: itemUI.items }], this.expectations);
30
- }
31
- }
32
- export function ui(builder, ...uis) {
33
- if (!builder) {
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- null builder for partial UIs, typed as BuilderUI<null>
35
- return new BuilderUI(null);
36
- }
37
- const merged = uis.reduce((accumulated, currentUI) => {
38
- return new BuilderUI(
39
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- accumulated.builder is always the real builder from the first argument
40
- accumulated.builder, [...accumulated.items, ...currentUI.items], [...accumulated.expectations, ...currentUI.expectations]);
41
- }, new BuilderUI(builder));
42
- merged.expectations.forEach((expectation) => {
43
- if (v.is(v.instance(BuilderExpectation), expectation)) {
44
- if (expectation.kind === 'option') {
45
- expectation.validate(merged.builder.options);
46
- }
47
- else if (expectation.kind === 'collection') {
48
- expectation.validate(merged.builder.collections);
49
- }
50
- }
51
- });
52
- return merged;
53
- }