@builder-builder/builder 0.0.7 → 0.0.9
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.
- package/dist/check.d.ts +2 -1
- package/dist/check.js +6 -2
- package/dist/entities/builder/builder.d.ts +494 -0
- package/dist/entities/builder/builder.js +84 -0
- package/dist/entities/builder/builders.d.ts +20 -0
- package/dist/entities/builder/builders.js +18 -0
- package/dist/entities/builder/expectation.d.ts +12 -0
- package/dist/entities/builder/index.d.ts +7 -0
- package/dist/entities/builder/index.js +3 -0
- package/dist/entities/builder/methods.d.ts +58 -0
- package/dist/entities/builder/methods.js +30 -0
- package/dist/entities/builder/parameter.d.ts +62 -0
- package/dist/entities/builder/parameter.js +18 -0
- package/dist/entities/builder/state.d.ts +26 -0
- package/dist/entities/builder/validate.d.ts +3 -0
- package/dist/entities/builder/validate.js +108 -0
- package/dist/entities/collection/collection.d.ts +37 -0
- package/dist/entities/collection/collection.js +42 -0
- package/dist/entities/collection/config.d.ts +1094 -0
- package/dist/entities/collection/config.js +23 -0
- package/dist/entities/collection/expectation.d.ts +7 -0
- package/dist/entities/collection/expectation.js +4 -0
- package/dist/entities/collection/index.d.ts +8 -0
- package/dist/entities/collection/index.js +4 -0
- package/dist/entities/collection/when.d.ts +9 -0
- package/dist/entities/collection/when.js +2 -0
- package/dist/entities/component/component.d.ts +403 -0
- package/dist/entities/component/component.js +24 -0
- package/dist/entities/component/details.d.ts +82 -0
- package/dist/entities/component/details.js +17 -0
- package/dist/entities/component/expectation.d.ts +8 -0
- package/dist/entities/component/expectation.js +7 -0
- package/dist/entities/component/index.d.ts +8 -0
- package/dist/entities/component/index.js +4 -0
- package/dist/entities/component/when.d.ts +11 -0
- package/dist/entities/component/when.js +20 -0
- package/dist/entities/errors.d.ts +21 -0
- package/dist/entities/expectation.d.ts +44 -0
- package/dist/entities/expectation.js +23 -0
- package/dist/entities/index.d.ts +18 -0
- package/dist/entities/index.js +9 -0
- package/dist/entities/option/expectation.d.ts +2 -0
- package/dist/entities/option/expectation.js +4 -0
- package/dist/entities/option/index.d.ts +11 -0
- package/dist/entities/option/index.js +6 -0
- package/dist/entities/option/option.d.ts +347 -0
- package/dist/entities/option/option.js +24 -0
- package/dist/entities/option/select.d.ts +49 -0
- package/dist/entities/option/select.js +40 -0
- package/dist/entities/option/toggle.d.ts +39 -0
- package/dist/entities/option/toggle.js +42 -0
- package/dist/entities/option/values.d.ts +63 -0
- package/dist/entities/option/values.js +8 -0
- package/dist/entities/option/when.d.ts +9 -0
- package/dist/entities/option/when.js +2 -0
- package/dist/entities/serialise.d.ts +3801 -0
- package/dist/entities/serialise.js +41 -0
- package/dist/entities/ui/describe.d.ts +100 -0
- package/dist/entities/ui/describe.js +22 -0
- package/dist/entities/ui/index.d.ts +14 -0
- package/dist/entities/ui/index.js +7 -0
- package/dist/entities/ui/label.d.ts +18 -0
- package/dist/entities/ui/label.js +12 -0
- package/dist/entities/ui/page.d.ts +96 -0
- package/dist/entities/ui/page.js +20 -0
- package/dist/entities/ui/pages.d.ts +431 -0
- package/dist/entities/ui/pages.js +29 -0
- package/dist/entities/ui/parameter.d.ts +7 -0
- package/dist/entities/ui/parameter.js +29 -0
- package/dist/entities/ui/ui.d.ts +1582 -0
- package/dist/entities/ui/ui.js +53 -0
- package/dist/entities/ui/uis.d.ts +10 -0
- package/dist/entities/ui/uis.js +20 -0
- package/dist/entities/ui/validate.d.ts +8 -0
- package/dist/entities/ui/validate.js +21 -0
- package/dist/entities/validate.d.ts +28 -0
- package/dist/entities/validate.js +1 -0
- package/dist/entities/when.d.ts +176 -0
- package/dist/entities/when.js +47 -0
- package/dist/exception.d.ts +8 -0
- package/dist/exception.js +7 -0
- package/dist/index.d.ts +38 -13
- package/dist/index.js +23 -5
- package/dist/mappers/assert/builder.d.ts +2 -0
- package/dist/mappers/assert/builder.js +46 -0
- package/dist/mappers/assert/expectation.d.ts +2 -0
- package/dist/mappers/assert/expectation.js +23 -0
- package/dist/mappers/assert/index.d.ts +6 -0
- package/dist/mappers/assert/index.js +4 -0
- package/dist/mappers/assert/model.d.ts +13 -0
- package/dist/mappers/assert/model.js +47 -0
- package/dist/mappers/assert/models.d.ts +33 -0
- package/dist/mappers/assert/models.js +74 -0
- package/dist/mappers/assert/ui.d.ts +2 -0
- package/dist/mappers/assert/ui.js +22 -0
- package/dist/mappers/index.d.ts +7 -0
- package/dist/mappers/index.js +4 -0
- package/dist/mappers/instance/index.d.ts +1 -0
- package/dist/mappers/instance/index.js +1 -0
- package/dist/mappers/instance/instance.d.ts +4 -0
- package/dist/mappers/instance/instance.js +33 -0
- package/dist/mappers/models/component-graph.d.ts +9 -0
- package/dist/{core/component/graph.js → mappers/models/component-graph.js} +3 -3
- package/dist/{core → mappers/models}/graph.d.ts +4 -1
- package/dist/mappers/models/graph.js +17 -0
- package/dist/mappers/models/index.d.ts +1 -0
- package/dist/mappers/models/index.js +1 -0
- package/dist/mappers/models/models.d.ts +3 -0
- package/dist/mappers/models/models.js +37 -0
- package/dist/mappers/models/option-graph.d.ts +9 -0
- package/dist/mappers/models/option-graph.js +77 -0
- package/dist/mappers/order/index.d.ts +2 -0
- package/dist/mappers/order/index.js +1 -0
- package/dist/mappers/order/order.d.ts +14 -0
- package/dist/mappers/order/order.js +31 -0
- package/dist/mappers/render/index.d.ts +4 -0
- package/dist/mappers/render/index.js +2 -0
- package/dist/mappers/render/ordinal.d.ts +1 -0
- package/dist/mappers/render/ordinal.js +20 -0
- package/dist/mappers/render/pages.d.ts +15 -0
- package/dist/mappers/render/pages.js +1 -0
- package/dist/mappers/render/render.d.ts +8 -0
- package/dist/mappers/render/render.js +124 -0
- package/dist/mappers/resolve.d.ts +9 -0
- package/dist/mappers/resolve.js +57 -0
- package/dist/model.d.ts +8 -8
- package/dist/paths.d.ts +5 -16
- package/dist/paths.js +3 -0
- package/dist/primitive.d.ts +5 -0
- package/dist/{schemas/primitives.js → primitive.js} +0 -2
- package/dist/references.d.ts +60 -0
- package/dist/references.js +26 -0
- package/dist/serialisable.d.ts +10 -0
- package/dist/serialisable.js +5 -0
- package/dist/walker/index.d.ts +2 -0
- package/dist/walker/index.js +1 -0
- package/dist/walker/walkable.d.ts +4 -0
- package/dist/walker/walkable.js +4 -0
- package/dist/walker/walker.d.ts +18 -0
- package/dist/walker/walker.js +103 -0
- package/dist/walker/walkers.d.ts +8 -0
- package/dist/walker/walkers.js +51 -0
- package/package.json +8 -2
- package/dist/core/builder.d.ts +0 -74
- package/dist/core/builder.js +0 -109
- package/dist/core/collection/collection.d.ts +0 -32
- package/dist/core/collection/collection.js +0 -37
- package/dist/core/collection/index.d.ts +0 -4
- package/dist/core/collection/index.js +0 -2
- package/dist/core/collection/method.d.ts +0 -30
- package/dist/core/collection/method.js +0 -11
- package/dist/core/component/component.d.ts +0 -9
- package/dist/core/component/component.js +0 -10
- package/dist/core/component/graph.d.ts +0 -9
- package/dist/core/component/index.d.ts +0 -4
- package/dist/core/component/index.js +0 -2
- package/dist/core/component/method.d.ts +0 -11
- package/dist/core/expectation.d.ts +0 -42
- package/dist/core/expectation.js +0 -18
- package/dist/core/graph.js +0 -3
- package/dist/core/index.d.ts +0 -14
- package/dist/core/index.js +0 -7
- package/dist/core/option/graph.d.ts +0 -10
- package/dist/core/option/graph.js +0 -78
- package/dist/core/option/index.d.ts +0 -10
- package/dist/core/option/index.js +0 -5
- package/dist/core/option/method.d.ts +0 -70
- package/dist/core/option/method.js +0 -13
- package/dist/core/option/option.d.ts +0 -30
- package/dist/core/option/option.js +0 -42
- package/dist/core/option/select.d.ts +0 -22
- package/dist/core/option/select.js +0 -34
- package/dist/core/option/toggle.d.ts +0 -16
- package/dist/core/option/toggle.js +0 -29
- package/dist/core/parameter.d.ts +0 -48
- package/dist/core/parameter.js +0 -31
- package/dist/core/validate.d.ts +0 -26
- package/dist/core/validate.js +0 -43
- package/dist/core/when/config.d.ts +0 -20
- package/dist/core/when/config.js +0 -4
- package/dist/core/when/constrain.d.ts +0 -14
- package/dist/core/when/index.d.ts +0 -5
- package/dist/core/when/index.js +0 -2
- package/dist/core/when/nullability.d.ts +0 -18
- package/dist/core/when/resolve.d.ts +0 -18
- package/dist/core/when/resolve.js +0 -22
- package/dist/resolve/index.d.ts +0 -10
- package/dist/resolve/index.js +0 -5
- package/dist/resolve/instance.d.ts +0 -35
- package/dist/resolve/instance.js +0 -80
- package/dist/resolve/models.d.ts +0 -3
- package/dist/resolve/models.js +0 -20
- package/dist/resolve/order.d.ts +0 -21
- package/dist/resolve/order.js +0 -27
- package/dist/resolve/render.d.ts +0 -23
- package/dist/resolve/render.js +0 -171
- package/dist/resolve/validate.d.ts +0 -37
- package/dist/resolve/validate.js +0 -47
- package/dist/schemas/description.d.ts +0 -5
- package/dist/schemas/description.js +0 -3
- package/dist/schemas/index.d.ts +0 -6
- package/dist/schemas/index.js +0 -3
- package/dist/schemas/primitives.d.ts +0 -9
- package/dist/schemas/ui.d.ts +0 -96
- package/dist/schemas/ui.js +0 -23
- package/dist/serialise/deserialise.d.ts +0 -14
- package/dist/serialise/deserialise.js +0 -119
- package/dist/serialise/index.d.ts +0 -6
- package/dist/serialise/index.js +0 -4
- package/dist/serialise/schemas.d.ts +0 -1946
- package/dist/serialise/schemas.js +0 -150
- package/dist/serialise/serialise.d.ts +0 -13
- package/dist/serialise/serialise.js +0 -147
- package/dist/serialise/validate.d.ts +0 -26
- package/dist/serialise/validate.js +0 -148
- package/dist/ui.d.ts +0 -19
- package/dist/ui.js +0 -44
- /package/dist/{core/component/method.js → entities/builder/expectation.js} +0 -0
- /package/dist/{core/when/constrain.js → entities/builder/state.js} +0 -0
- /package/dist/{core/when/nullability.js → entities/errors.js} +0 -0
|
@@ -1,150 +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, BuilderPrimitivesSchema } 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.picklist(['string', 'boolean', 'number']),
|
|
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: BuilderPrimitivesSchema,
|
|
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
|
-
const BuilderDependenciesSerialisedSchema = v.pipe(v.array(v.string()), v.readonly());
|
|
51
|
-
export const BuilderComponentSerialisedSchema = v.pipe(v.object({
|
|
52
|
-
name: v.string(),
|
|
53
|
-
paths: BuilderPathsSchema,
|
|
54
|
-
dependencies: BuilderDependenciesSerialisedSchema
|
|
55
|
-
}), v.readonly());
|
|
56
|
-
const lazyBuilder = () => v.lazy(() => BuilderSerialisedSchema);
|
|
57
|
-
const BuilderSerialisedCollectionConfigObject = v.object({
|
|
58
|
-
builder: lazyBuilder(),
|
|
59
|
-
min: v.number(),
|
|
60
|
-
max: v.number()
|
|
61
|
-
});
|
|
62
|
-
const BuilderSerialisedCollectionEnableConfigObject = v.object({
|
|
63
|
-
type: v.literal('enable'),
|
|
64
|
-
builder: lazyBuilder(),
|
|
65
|
-
min: v.number(),
|
|
66
|
-
max: v.number()
|
|
67
|
-
});
|
|
68
|
-
const BuilderSerialisedCollectionMatchConfigObject = v.object({
|
|
69
|
-
type: v.literal('match'),
|
|
70
|
-
matchPath: BuilderPathSchema,
|
|
71
|
-
selectMap: v.record(v.string(), v.nullable(BuilderSerialisedCollectionConfigObject))
|
|
72
|
-
});
|
|
73
|
-
const BuilderSerialisedCollectionUnlessConfigObject = v.object({
|
|
74
|
-
type: v.literal('unless'),
|
|
75
|
-
unlessPath: BuilderPathSchema,
|
|
76
|
-
disabledValues: BuilderPrimitivesSchema,
|
|
77
|
-
builder: lazyBuilder(),
|
|
78
|
-
min: v.number(),
|
|
79
|
-
max: v.number()
|
|
80
|
-
});
|
|
81
|
-
const BuilderSerialisedCollectionObject = v.object({
|
|
82
|
-
name: v.string(),
|
|
83
|
-
builder: lazyBuilder(),
|
|
84
|
-
min: v.number(),
|
|
85
|
-
max: v.number(),
|
|
86
|
-
gatePaths: BuilderPathsSchema,
|
|
87
|
-
config: v.nullable(v.variant('type', [
|
|
88
|
-
BuilderSerialisedCollectionEnableConfigObject,
|
|
89
|
-
BuilderSerialisedCollectionMatchConfigObject,
|
|
90
|
-
BuilderSerialisedCollectionUnlessConfigObject
|
|
91
|
-
]))
|
|
92
|
-
});
|
|
93
|
-
const BuilderSerialisedUIPageObject = v.object({
|
|
94
|
-
type: v.literal('page'),
|
|
95
|
-
label: v.nullable(v.string()),
|
|
96
|
-
paths: BuilderPathsSchema
|
|
97
|
-
});
|
|
98
|
-
const BuilderSerialisedUIDescribeObject = v.object({
|
|
99
|
-
type: v.literal('describe'),
|
|
100
|
-
label: v.nullable(v.string()),
|
|
101
|
-
paths: BuilderPathsSchema
|
|
102
|
-
});
|
|
103
|
-
const lazySerialisedUIItems = () => v.lazy(() => BuilderUIItemsSerialisedSchema);
|
|
104
|
-
const BuilderSerialisedUICollectionObject = v.object({
|
|
105
|
-
type: v.literal('collection'),
|
|
106
|
-
name: v.string(),
|
|
107
|
-
label: v.string(),
|
|
108
|
-
items: lazySerialisedUIItems()
|
|
109
|
-
});
|
|
110
|
-
export const BuilderCollectionConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionConfigObject, v.readonly());
|
|
111
|
-
export const BuilderCollectionEnableConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionEnableConfigObject, v.readonly());
|
|
112
|
-
export const BuilderCollectionMatchConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionMatchConfigObject, v.readonly());
|
|
113
|
-
export const BuilderCollectionUnlessConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionUnlessConfigObject, v.readonly());
|
|
114
|
-
export const BuilderCollectionWhenConfigSerialisedSchema = v.pipe(v.variant('type', [
|
|
115
|
-
BuilderSerialisedCollectionEnableConfigObject,
|
|
116
|
-
BuilderSerialisedCollectionMatchConfigObject,
|
|
117
|
-
BuilderSerialisedCollectionUnlessConfigObject
|
|
118
|
-
]), v.readonly());
|
|
119
|
-
export const BuilderCollectionSerialisedSchema = v.pipe(BuilderSerialisedCollectionObject, v.readonly());
|
|
120
|
-
export const BuilderExpectationSerialisedSchema = v.pipe(v.object({
|
|
121
|
-
name: v.string(),
|
|
122
|
-
kind: v.picklist(['option', 'component', 'collection'])
|
|
123
|
-
}), v.readonly());
|
|
124
|
-
const BuilderOptionsSerialisedSchema = v.pipe(v.array(BuilderOptionSerialisedSchema), v.readonly());
|
|
125
|
-
const BuilderComponentsSerialisedSchema = v.pipe(v.array(BuilderComponentSerialisedSchema), v.readonly());
|
|
126
|
-
const BuilderCollectionsSerialisedSchema = v.pipe(v.array(BuilderSerialisedCollectionObject), v.readonly());
|
|
127
|
-
const BuilderExpectationsSerialisedSchema = v.pipe(v.array(BuilderExpectationSerialisedSchema), v.readonly());
|
|
128
|
-
export const BuilderSerialisedSchema = v.pipe(v.object({
|
|
129
|
-
options: BuilderOptionsSerialisedSchema,
|
|
130
|
-
components: BuilderComponentsSerialisedSchema,
|
|
131
|
-
collections: BuilderCollectionsSerialisedSchema,
|
|
132
|
-
expectations: BuilderExpectationsSerialisedSchema
|
|
133
|
-
}), v.readonly());
|
|
134
|
-
export const BuilderUIPageSerialisedSchema = v.pipe(BuilderSerialisedUIPageObject, v.readonly());
|
|
135
|
-
export const BuilderUIDescribeSerialisedSchema = v.pipe(BuilderSerialisedUIDescribeObject, v.readonly());
|
|
136
|
-
export const BuilderUICollectionSerialisedSchema = v.pipe(BuilderSerialisedUICollectionObject, v.readonly());
|
|
137
|
-
export const BuilderUIItemSerialisedSchema = v.pipe(v.variant('type', [
|
|
138
|
-
BuilderSerialisedUIPageObject,
|
|
139
|
-
BuilderSerialisedUIDescribeObject,
|
|
140
|
-
BuilderSerialisedUICollectionObject
|
|
141
|
-
]), v.readonly());
|
|
142
|
-
export const BuilderUIItemsSerialisedSchema = v.pipe(v.array(v.variant('type', [
|
|
143
|
-
BuilderSerialisedUIPageObject,
|
|
144
|
-
BuilderSerialisedUIDescribeObject,
|
|
145
|
-
BuilderSerialisedUICollectionObject
|
|
146
|
-
])), v.readonly());
|
|
147
|
-
export const BuilderUISerialisedSchema = v.pipe(v.object({
|
|
148
|
-
items: BuilderUIItemsSerialisedSchema,
|
|
149
|
-
expectations: BuilderExpectationsSerialisedSchema
|
|
150
|
-
}), v.readonly());
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { BuilderGeneric } from '../core/index';
|
|
2
|
-
import type { BuilderSelectTypeSerialised, BuilderSerialised, BuilderUISerialised } from './schemas';
|
|
3
|
-
import type { BuilderUIGeneric } from '../ui';
|
|
4
|
-
import { BuilderSelectType } from '../core/index.js';
|
|
5
|
-
export declare const serialise: {
|
|
6
|
-
builder: typeof serialiseBuilder;
|
|
7
|
-
select: typeof serialiseSelect;
|
|
8
|
-
ui: typeof serialiseUI;
|
|
9
|
-
};
|
|
10
|
-
declare function serialiseBuilder(builder: BuilderGeneric): BuilderSerialised;
|
|
11
|
-
declare function serialiseUI(input: BuilderUIGeneric): BuilderUISerialised;
|
|
12
|
-
declare function serialiseSelect(selectType: BuilderSelectType): BuilderSelectTypeSerialised;
|
|
13
|
-
export {};
|
|
@@ -1,147 +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
|
-
select: serialiseSelect,
|
|
6
|
-
ui: serialiseUI
|
|
7
|
-
};
|
|
8
|
-
function serialiseBuilder(builder) {
|
|
9
|
-
return {
|
|
10
|
-
options: builder.options.map(serialiseOption),
|
|
11
|
-
components: builder.components.map(serialiseComponent),
|
|
12
|
-
collections: builder.collections.map(serialiseCollection),
|
|
13
|
-
expectations: builder.expectations.map(serialiseExpectation)
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
function serialiseUI(input) {
|
|
17
|
-
return {
|
|
18
|
-
items: input.items,
|
|
19
|
-
expectations: input.expectations.map(serialiseExpectation)
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
function serialiseOption(option) {
|
|
23
|
-
return {
|
|
24
|
-
name: option.name,
|
|
25
|
-
values: serialiseValues(option.values),
|
|
26
|
-
gatePaths: option.gatePaths,
|
|
27
|
-
config: serialiseOptionWhenConfig(option.config)
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function serialiseComponent(component) {
|
|
31
|
-
return {
|
|
32
|
-
name: component.name,
|
|
33
|
-
paths: component.paths,
|
|
34
|
-
dependencies: component.dependencies
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
function serialiseExpectation(expectation) {
|
|
38
|
-
return {
|
|
39
|
-
name: expectation.name,
|
|
40
|
-
kind: expectation.kind
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
function serialiseCollection(collection) {
|
|
44
|
-
return {
|
|
45
|
-
name: collection.name,
|
|
46
|
-
builder: serialiseBuilder(collection.builder),
|
|
47
|
-
min: collection.min,
|
|
48
|
-
max: collection.max,
|
|
49
|
-
gatePaths: collection.gatePaths,
|
|
50
|
-
config: serialiseCollectionWhenConfig(collection.config)
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
function serialiseSelect(selectType) {
|
|
54
|
-
return {
|
|
55
|
-
type: 'select',
|
|
56
|
-
options: selectType.options,
|
|
57
|
-
defaultValue: selectType.defaultValue,
|
|
58
|
-
optional: selectType.isOptional,
|
|
59
|
-
labels: selectType.optionLabels
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
function serialiseValues(optionValues) {
|
|
63
|
-
if (v.is(BuilderParameterSchema, optionValues)) {
|
|
64
|
-
return { type: 'parameter' };
|
|
65
|
-
}
|
|
66
|
-
if (v.is(v.instance(BuilderSelectType), optionValues)) {
|
|
67
|
-
return serialiseSelect(optionValues);
|
|
68
|
-
}
|
|
69
|
-
return {
|
|
70
|
-
type: 'toggle',
|
|
71
|
-
valueType: optionValues.valueType,
|
|
72
|
-
defaultValue: optionValues.defaultValue,
|
|
73
|
-
optional: optionValues.isOptional
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
function serialiseOptionWhenConfig(config) {
|
|
77
|
-
if (config === null) {
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
switch (config.type) {
|
|
81
|
-
case 'enable': {
|
|
82
|
-
return { type: 'enable', values: serialiseValues(config.values) };
|
|
83
|
-
}
|
|
84
|
-
case 'match': {
|
|
85
|
-
if (v.is(BuilderParameterSchema, config.selectMap)) {
|
|
86
|
-
return {
|
|
87
|
-
type: 'match',
|
|
88
|
-
matchPath: config.matchPath,
|
|
89
|
-
selectMap: { type: 'parameter' }
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
return {
|
|
93
|
-
type: 'match',
|
|
94
|
-
matchPath: config.matchPath,
|
|
95
|
-
selectMap: Object.fromEntries(Object.entries(config.selectMap).map(([key, value]) => [
|
|
96
|
-
key,
|
|
97
|
-
value ? serialiseValues(value) : null
|
|
98
|
-
]))
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
case 'unless': {
|
|
102
|
-
return {
|
|
103
|
-
type: 'unless',
|
|
104
|
-
unlessPath: config.unlessPath,
|
|
105
|
-
disabledValues: config.disabledValues,
|
|
106
|
-
values: serialiseValues(config.values)
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
function serialiseCollectionWhenConfig(config) {
|
|
112
|
-
if (config === null) {
|
|
113
|
-
return null;
|
|
114
|
-
}
|
|
115
|
-
switch (config.type) {
|
|
116
|
-
case 'enable': {
|
|
117
|
-
return {
|
|
118
|
-
type: 'enable',
|
|
119
|
-
builder: serialiseBuilder(config.builder),
|
|
120
|
-
min: config.min,
|
|
121
|
-
max: config.max
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
case 'match': {
|
|
125
|
-
return {
|
|
126
|
-
type: 'match',
|
|
127
|
-
matchPath: config.matchPath,
|
|
128
|
-
selectMap: Object.fromEntries(Object.entries(config.selectMap).map(([key, value]) => [
|
|
129
|
-
key,
|
|
130
|
-
value
|
|
131
|
-
? { builder: serialiseBuilder(value.builder), min: value.min, max: value.max }
|
|
132
|
-
: null
|
|
133
|
-
]))
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
case 'unless': {
|
|
137
|
-
return {
|
|
138
|
-
type: 'unless',
|
|
139
|
-
unlessPath: config.unlessPath,
|
|
140
|
-
disabledValues: config.disabledValues,
|
|
141
|
-
builder: serialiseBuilder(config.builder),
|
|
142
|
-
min: config.min,
|
|
143
|
-
max: config.max
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { BuilderSerialised } from './schemas';
|
|
2
|
-
declare const validated: unique symbol;
|
|
3
|
-
export type BuilderSerialisedValidated = BuilderSerialised & {
|
|
4
|
-
readonly [validated]: true;
|
|
5
|
-
};
|
|
6
|
-
export type BuilderSerialisedErrorKind = 'duplicate-option' | 'duplicate-component' | 'duplicate-collection' | 'invalid-gate-path' | 'invalid-component-path' | 'invalid-component-dependency' | 'invalid-config-path';
|
|
7
|
-
export type BuilderSerialisedError = {
|
|
8
|
-
readonly kind: BuilderSerialisedErrorKind;
|
|
9
|
-
readonly name: string;
|
|
10
|
-
readonly detail: string;
|
|
11
|
-
};
|
|
12
|
-
export type BuilderSerialisedErrors = ReadonlyArray<BuilderSerialisedError>;
|
|
13
|
-
export type BuilderSerialisedValidateResult = readonly [
|
|
14
|
-
BuilderSerialisedValidated,
|
|
15
|
-
BuilderSerialisedErrors
|
|
16
|
-
];
|
|
17
|
-
export type BuilderSerialisedValidateOptions = {
|
|
18
|
-
readonly strict: true;
|
|
19
|
-
};
|
|
20
|
-
export declare class BuilderSerialisedValidateError extends Error {
|
|
21
|
-
readonly errors: BuilderSerialisedErrors;
|
|
22
|
-
constructor(errors: BuilderSerialisedErrors);
|
|
23
|
-
}
|
|
24
|
-
export declare const validate: typeof validateSerialised;
|
|
25
|
-
declare function validateSerialised(data: unknown, options?: BuilderSerialisedValidateOptions): BuilderSerialisedValidateResult;
|
|
26
|
-
export {};
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
import { BuilderSerialisedSchema } from './schemas.js';
|
|
3
|
-
export class BuilderSerialisedValidateError extends Error {
|
|
4
|
-
errors;
|
|
5
|
-
constructor(errors) {
|
|
6
|
-
super('serialised validation failed');
|
|
7
|
-
this.errors = errors;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
export const validate = validateSerialised;
|
|
11
|
-
function validateSerialised(data, options) {
|
|
12
|
-
const serialised = v.parse(BuilderSerialisedSchema, data);
|
|
13
|
-
let errors = [];
|
|
14
|
-
const optionNames = new Set();
|
|
15
|
-
const componentNames = new Set();
|
|
16
|
-
const collectionNames = new Set();
|
|
17
|
-
const optionExpectationNames = new Set(serialised.expectations
|
|
18
|
-
.filter((expectation) => expectation.kind === 'option')
|
|
19
|
-
.map((expectation) => expectation.name));
|
|
20
|
-
const componentExpectationNames = new Set(serialised.expectations
|
|
21
|
-
.filter((expectation) => expectation.kind === 'component')
|
|
22
|
-
.map((expectation) => expectation.name));
|
|
23
|
-
const validOptionPaths = () => {
|
|
24
|
-
const names = new Set(optionNames);
|
|
25
|
-
optionExpectationNames.forEach((name) => names.add(name));
|
|
26
|
-
return names;
|
|
27
|
-
};
|
|
28
|
-
const validComponentNames = () => {
|
|
29
|
-
const names = new Set(componentNames);
|
|
30
|
-
componentExpectationNames.forEach((name) => names.add(name));
|
|
31
|
-
return names;
|
|
32
|
-
};
|
|
33
|
-
serialised.options.forEach((option) => {
|
|
34
|
-
if (optionNames.has(option.name)) {
|
|
35
|
-
errors = [
|
|
36
|
-
...errors,
|
|
37
|
-
{
|
|
38
|
-
kind: 'duplicate-option',
|
|
39
|
-
name: option.name,
|
|
40
|
-
detail: `Duplicate option '${option.name}'`
|
|
41
|
-
}
|
|
42
|
-
];
|
|
43
|
-
}
|
|
44
|
-
optionNames.add(option.name);
|
|
45
|
-
const validPaths = validOptionPaths();
|
|
46
|
-
option.gatePaths.forEach((gatePath) => {
|
|
47
|
-
const [pathName] = gatePath;
|
|
48
|
-
if (typeof pathName === 'string' && !validPaths.has(pathName)) {
|
|
49
|
-
errors = [
|
|
50
|
-
...errors,
|
|
51
|
-
{
|
|
52
|
-
kind: 'invalid-gate-path',
|
|
53
|
-
name: option.name,
|
|
54
|
-
detail: `Option '${option.name}' has gate path '${String(pathName)}' which does not reference a known option or expectation`
|
|
55
|
-
}
|
|
56
|
-
];
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
if (option.config !== null) {
|
|
60
|
-
if (option.config.type === 'match' && 'matchPath' in option.config) {
|
|
61
|
-
const [matchPathName] = option.config.matchPath;
|
|
62
|
-
if (typeof matchPathName === 'string' && !validPaths.has(matchPathName)) {
|
|
63
|
-
errors = [
|
|
64
|
-
...errors,
|
|
65
|
-
{
|
|
66
|
-
kind: 'invalid-config-path',
|
|
67
|
-
name: option.name,
|
|
68
|
-
detail: `Option '${option.name}' has match path '${String(matchPathName)}' which does not reference a known option or expectation`
|
|
69
|
-
}
|
|
70
|
-
];
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (option.config.type === 'unless' && 'unlessPath' in option.config) {
|
|
74
|
-
const [unlessPathName] = option.config.unlessPath;
|
|
75
|
-
if (typeof unlessPathName === 'string' && !validPaths.has(unlessPathName)) {
|
|
76
|
-
errors = [
|
|
77
|
-
...errors,
|
|
78
|
-
{
|
|
79
|
-
kind: 'invalid-config-path',
|
|
80
|
-
name: option.name,
|
|
81
|
-
detail: `Option '${option.name}' has unless path '${String(unlessPathName)}' which does not reference a known option or expectation`
|
|
82
|
-
}
|
|
83
|
-
];
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
const validPaths = validOptionPaths();
|
|
89
|
-
serialised.components.forEach((component) => {
|
|
90
|
-
if (componentNames.has(component.name)) {
|
|
91
|
-
errors = [
|
|
92
|
-
...errors,
|
|
93
|
-
{
|
|
94
|
-
kind: 'duplicate-component',
|
|
95
|
-
name: component.name,
|
|
96
|
-
detail: `Duplicate component '${component.name}'`
|
|
97
|
-
}
|
|
98
|
-
];
|
|
99
|
-
}
|
|
100
|
-
componentNames.add(component.name);
|
|
101
|
-
component.paths.forEach((path) => {
|
|
102
|
-
const [pathName] = path;
|
|
103
|
-
if (typeof pathName === 'string' && !validPaths.has(pathName)) {
|
|
104
|
-
errors = [
|
|
105
|
-
...errors,
|
|
106
|
-
{
|
|
107
|
-
kind: 'invalid-component-path',
|
|
108
|
-
name: component.name,
|
|
109
|
-
detail: `Component '${component.name}' references path '${String(pathName)}' which does not reference a known option or expectation`
|
|
110
|
-
}
|
|
111
|
-
];
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
component.dependencies.forEach((dependency) => {
|
|
115
|
-
if (!validComponentNames().has(dependency)) {
|
|
116
|
-
errors = [
|
|
117
|
-
...errors,
|
|
118
|
-
{
|
|
119
|
-
kind: 'invalid-component-dependency',
|
|
120
|
-
name: component.name,
|
|
121
|
-
detail: `Component '${component.name}' depends on '${dependency}' which does not reference a known component or expectation`
|
|
122
|
-
}
|
|
123
|
-
];
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
serialised.collections.forEach((collection) => {
|
|
128
|
-
if (collectionNames.has(collection.name)) {
|
|
129
|
-
errors = [
|
|
130
|
-
...errors,
|
|
131
|
-
{
|
|
132
|
-
kind: 'duplicate-collection',
|
|
133
|
-
name: collection.name,
|
|
134
|
-
detail: `Duplicate collection '${collection.name}'`
|
|
135
|
-
}
|
|
136
|
-
];
|
|
137
|
-
}
|
|
138
|
-
collectionNames.add(collection.name);
|
|
139
|
-
});
|
|
140
|
-
serialised.collections.forEach((collection) => {
|
|
141
|
-
const [, nestedErrors] = validateSerialised(collection.builder);
|
|
142
|
-
errors = [...errors, ...nestedErrors];
|
|
143
|
-
});
|
|
144
|
-
if (options?.strict && errors.length > 0) {
|
|
145
|
-
throw new BuilderSerialisedValidateError(errors);
|
|
146
|
-
}
|
|
147
|
-
return [serialised, errors];
|
|
148
|
-
}
|
package/dist/ui.d.ts
DELETED
|
@@ -1,19 +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 { BuilderValidated } from './core/validate';
|
|
5
|
-
import type { BuilderUIItems } from './schemas/index';
|
|
6
|
-
export type BuilderUIGeneric = BuilderUI<BuilderGeneric>;
|
|
7
|
-
export type BuilderUIs = ReadonlyArray<BuilderUI<BuilderGeneric | null>>;
|
|
8
|
-
export declare class BuilderUI<Builder extends BuilderGeneric | null = BuilderGeneric> {
|
|
9
|
-
readonly builder: Builder;
|
|
10
|
-
readonly items: BuilderUIItems;
|
|
11
|
-
readonly expectations: BuilderExpectationEntries;
|
|
12
|
-
constructor(builder: Builder, items?: BuilderUIItems, expectations?: BuilderExpectationEntries);
|
|
13
|
-
expect<const Expectations extends BuilderExpectations>(...expectations: Expectations): BuilderUI<BuilderModelAsserted<Builder, Expectations>>;
|
|
14
|
-
page(label: string | null, paths: BuilderModelPaths<Builder>): BuilderUI<Builder>;
|
|
15
|
-
describe(label: string | null, paths: BuilderModelPaths<Builder>): BuilderUI<Builder>;
|
|
16
|
-
collection<const Name extends BuilderCollectionNamesOf<Builder>>(name: Name, label: string, itemUI: BuilderUI<BuilderGeneric | null>): BuilderUI<Builder>;
|
|
17
|
-
}
|
|
18
|
-
export declare function ui(): BuilderUI<null>;
|
|
19
|
-
export declare function ui<const Builder extends BuilderValidated>(builder: Builder, ...uis: BuilderUIs): BuilderUI<Builder>;
|
package/dist/ui.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { Builder } from './core/builder.js';
|
|
2
|
-
import { check } from './check.js';
|
|
3
|
-
import { validateBuilder } from './core/validate.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
|
-
validateBuilder(new Builder(merged.builder.options, merged.builder.components, merged.builder.collections, merged.expectations), { strict: true });
|
|
43
|
-
return merged;
|
|
44
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|