@builder-builder/builder 0.0.3 → 0.0.5
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 +8 -0
- package/dist/check.js +18 -0
- package/dist/core/builder.d.ts +31 -22
- package/dist/core/builder.js +73 -27
- package/dist/core/collection/collection.d.ts +9 -12
- package/dist/core/collection/collection.js +9 -27
- package/dist/core/collection/index.d.ts +1 -1
- package/dist/core/collection/method.d.ts +22 -43
- package/dist/core/component/component.d.ts +1 -4
- package/dist/core/component/graph.d.ts +0 -3
- package/dist/core/component/graph.js +7 -9
- package/dist/core/component/method.d.ts +7 -9
- package/dist/core/expectation.d.ts +39 -0
- package/dist/{assert → core}/expectation.js +3 -2
- package/dist/core/graph.d.ts +2 -1
- package/dist/core/graph.js +3 -1
- package/dist/core/index.d.ts +8 -4
- package/dist/core/index.js +3 -1
- package/dist/core/option/graph.js +7 -5
- package/dist/core/option/method.d.ts +60 -42
- package/dist/core/option/method.js +7 -3
- package/dist/core/option/option.d.ts +14 -7
- package/dist/core/option/option.js +15 -23
- package/dist/core/option/select.d.ts +6 -1
- package/dist/core/option/select.js +5 -1
- package/dist/core/parameter.d.ts +48 -0
- package/dist/core/parameter.js +31 -0
- package/dist/core/when/config.d.ts +20 -0
- package/dist/core/when/config.js +4 -0
- package/dist/core/when/constrain.d.ts +14 -0
- package/dist/core/when/index.d.ts +5 -0
- package/dist/core/when/index.js +2 -0
- package/dist/core/when/nullability.d.ts +18 -0
- package/dist/core/when/nullability.js +1 -0
- package/dist/core/when/resolve.d.ts +18 -0
- package/dist/core/when/resolve.js +22 -0
- package/dist/index.d.ts +7 -10
- package/dist/index.js +2 -3
- package/dist/{config.d.ts → model.d.ts} +1 -1
- package/dist/model.js +1 -0
- package/dist/paths.d.ts +4 -3
- package/dist/resolve/index.d.ts +2 -2
- package/dist/resolve/instance.d.ts +2 -2
- package/dist/resolve/models.d.ts +1 -1
- package/dist/resolve/order.d.ts +7 -6
- package/dist/resolve/render.d.ts +4 -4
- package/dist/resolve/render.js +49 -60
- package/dist/resolve/validate.d.ts +6 -5
- package/dist/resolve/validate.js +5 -4
- package/dist/schemas/index.d.ts +2 -6
- package/dist/schemas/index.js +1 -3
- package/dist/serialise/deserialise.js +11 -6
- package/dist/serialise/index.d.ts +2 -2
- package/dist/serialise/index.js +1 -1
- package/dist/{schemas/serialise.d.ts → serialise/schemas.d.ts} +1050 -242
- package/dist/{schemas/serialise.js → serialise/schemas.js} +47 -47
- package/dist/serialise/serialise.d.ts +1 -1
- package/dist/serialise/serialise.js +19 -2
- package/dist/ui.d.ts +12 -12
- package/dist/ui.js +23 -16
- package/package.json +1 -1
- package/dist/assert/assert.d.ts +0 -28
- package/dist/assert/assert.js +0 -28
- package/dist/assert/expectation.d.ts +0 -20
- package/dist/assert/index.d.ts +0 -3
- package/dist/assert/index.js +0 -2
- package/dist/invariant.d.ts +0 -1
- package/dist/invariant.js +0 -6
- package/dist/schemas/layout.d.ts +0 -52
- package/dist/schemas/layout.js +0 -6
- /package/dist/{config.js → core/when/constrain.js} +0 -0
|
@@ -1,56 +1,51 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
|
-
import {
|
|
3
|
-
|
|
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({
|
|
4
7
|
type: v.literal('select'),
|
|
5
8
|
options: v.pipe(v.tupleWithRest([v.string()], v.string()), v.readonly()),
|
|
6
9
|
defaultValue: v.nullable(v.string()),
|
|
7
10
|
optional: v.boolean(),
|
|
8
11
|
labels: v.record(v.string(), v.string())
|
|
9
|
-
});
|
|
10
|
-
const
|
|
12
|
+
}), v.readonly());
|
|
13
|
+
export const BuilderToggleTypeSerialisedSchema = v.pipe(v.object({
|
|
11
14
|
type: v.literal('toggle'),
|
|
12
15
|
valueType: v.string(),
|
|
13
16
|
defaultValue: v.nullable(v.union([v.boolean(), v.string(), v.number()])),
|
|
14
17
|
optional: v.boolean()
|
|
15
|
-
});
|
|
16
|
-
export const
|
|
17
|
-
export const
|
|
18
|
-
export const
|
|
19
|
-
const BuilderSerialisedOptionEnableConfigObject = v.object({
|
|
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({
|
|
20
22
|
type: v.literal('enable'),
|
|
21
|
-
values: v.
|
|
22
|
-
});
|
|
23
|
-
const
|
|
23
|
+
values: v.union([BuilderValuesSerialisedSchema, BuilderParameterSerialisedSchema])
|
|
24
|
+
}), v.readonly());
|
|
25
|
+
export const BuilderOptionMatchConfigSerialisedSchema = v.pipe(v.object({
|
|
24
26
|
type: v.literal('match'),
|
|
25
27
|
matchPath: BuilderPathSchema,
|
|
26
|
-
selectMap: v.
|
|
27
|
-
|
|
28
|
-
|
|
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({
|
|
29
34
|
type: v.literal('unless'),
|
|
30
35
|
unlessPath: BuilderPathSchema,
|
|
31
36
|
disabledValues: v.pipe(v.array(BuilderPrimitiveSchema), v.readonly()),
|
|
32
|
-
values: v.
|
|
33
|
-
});
|
|
34
|
-
export const BuilderOptionEnableConfigSerialisedSchema = v.pipe(BuilderSerialisedOptionEnableConfigObject, v.readonly());
|
|
35
|
-
export const BuilderOptionMatchConfigSerialisedSchema = v.pipe(BuilderSerialisedOptionMatchConfigObject, v.readonly());
|
|
36
|
-
export const BuilderOptionUnlessConfigSerialisedSchema = v.pipe(BuilderSerialisedOptionUnlessConfigObject, v.readonly());
|
|
37
|
+
values: v.union([BuilderValuesSerialisedSchema, BuilderParameterSerialisedSchema])
|
|
38
|
+
}), v.readonly());
|
|
37
39
|
export const BuilderOptionWhenConfigSerialisedSchema = v.pipe(v.variant('type', [
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
BuilderOptionEnableConfigSerialisedSchema,
|
|
41
|
+
BuilderOptionMatchConfigSerialisedSchema,
|
|
42
|
+
BuilderOptionUnlessConfigSerialisedSchema
|
|
41
43
|
]), v.readonly());
|
|
42
44
|
export const BuilderOptionSerialisedSchema = v.pipe(v.object({
|
|
43
45
|
name: v.string(),
|
|
44
|
-
values: v.
|
|
45
|
-
BuilderSerialisedSelectTypeObject,
|
|
46
|
-
BuilderSerialisedToggleTypeObject
|
|
47
|
-
]),
|
|
46
|
+
values: v.union([BuilderValuesSerialisedSchema, BuilderParameterSerialisedSchema]),
|
|
48
47
|
gatePaths: BuilderPathsSchema,
|
|
49
|
-
config: v.nullable(
|
|
50
|
-
BuilderSerialisedOptionEnableConfigObject,
|
|
51
|
-
BuilderSerialisedOptionMatchConfigObject,
|
|
52
|
-
BuilderSerialisedOptionUnlessConfigObject
|
|
53
|
-
]))
|
|
48
|
+
config: v.nullable(BuilderOptionWhenConfigSerialisedSchema)
|
|
54
49
|
}), v.readonly());
|
|
55
50
|
export const BuilderComponentSerialisedSchema = v.pipe(v.object({
|
|
56
51
|
name: v.string(),
|
|
@@ -82,15 +77,6 @@ const BuilderSerialisedCollectionUnlessConfigObject = v.object({
|
|
|
82
77
|
min: v.number(),
|
|
83
78
|
max: v.number()
|
|
84
79
|
});
|
|
85
|
-
export const BuilderCollectionConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionConfigObject, v.readonly());
|
|
86
|
-
export const BuilderCollectionEnableConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionEnableConfigObject, v.readonly());
|
|
87
|
-
export const BuilderCollectionMatchConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionMatchConfigObject, v.readonly());
|
|
88
|
-
export const BuilderCollectionUnlessConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionUnlessConfigObject, v.readonly());
|
|
89
|
-
export const BuilderCollectionWhenConfigSerialisedSchema = v.pipe(v.variant('type', [
|
|
90
|
-
BuilderSerialisedCollectionEnableConfigObject,
|
|
91
|
-
BuilderSerialisedCollectionMatchConfigObject,
|
|
92
|
-
BuilderSerialisedCollectionUnlessConfigObject
|
|
93
|
-
]), v.readonly());
|
|
94
80
|
const BuilderSerialisedCollectionObject = v.object({
|
|
95
81
|
name: v.string(),
|
|
96
82
|
builder: lazyBuilder(),
|
|
@@ -103,12 +89,6 @@ const BuilderSerialisedCollectionObject = v.object({
|
|
|
103
89
|
BuilderSerialisedCollectionUnlessConfigObject
|
|
104
90
|
]))
|
|
105
91
|
});
|
|
106
|
-
export const BuilderCollectionSerialisedSchema = v.pipe(BuilderSerialisedCollectionObject, v.readonly());
|
|
107
|
-
export const BuilderSerialisedSchema = v.pipe(v.object({
|
|
108
|
-
options: v.pipe(v.array(BuilderOptionSerialisedSchema), v.readonly()),
|
|
109
|
-
components: v.pipe(v.array(BuilderComponentSerialisedSchema), v.readonly()),
|
|
110
|
-
collections: v.pipe(v.array(BuilderSerialisedCollectionObject), v.readonly())
|
|
111
|
-
}), v.readonly());
|
|
112
92
|
const BuilderSerialisedUIPageObject = v.object({
|
|
113
93
|
type: v.literal('page'),
|
|
114
94
|
label: v.nullable(v.string()),
|
|
@@ -126,6 +106,26 @@ const BuilderSerialisedUICollectionObject = v.object({
|
|
|
126
106
|
label: v.string(),
|
|
127
107
|
items: lazySerialisedUIItems()
|
|
128
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'])
|
|
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
129
|
export const BuilderUIPageSerialisedSchema = v.pipe(BuilderSerialisedUIPageObject, v.readonly());
|
|
130
130
|
export const BuilderUIDescribeSerialisedSchema = v.pipe(BuilderSerialisedUIDescribeObject, v.readonly());
|
|
131
131
|
export const BuilderUICollectionSerialisedSchema = v.pipe(BuilderSerialisedUICollectionObject, v.readonly());
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BuilderGeneric } from '../core/index';
|
|
2
|
+
import type { BuilderSerialised, BuilderUISerialised } from './schemas';
|
|
2
3
|
import type { BuilderUIGeneric } from '../ui';
|
|
3
|
-
import type { BuilderSerialised, BuilderUISerialised } from '../schemas/index';
|
|
4
4
|
export declare const serialise: {
|
|
5
5
|
builder: typeof serialiseBuilder;
|
|
6
6
|
ui: typeof serialiseUI;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
|
-
import { BuilderCollection, BuilderComponent, BuilderOption, BuilderSelectType } from '../core/index.js';
|
|
2
|
+
import { BuilderCollection, BuilderComponent, BuilderOption, BuilderParameter, BuilderParameterSchema, BuilderSelectType } from '../core/index.js';
|
|
3
3
|
export const serialise = {
|
|
4
4
|
builder: serialiseBuilder,
|
|
5
5
|
ui: serialiseUI
|
|
@@ -8,7 +8,8 @@ function serialiseBuilder(builder) {
|
|
|
8
8
|
return {
|
|
9
9
|
options: builder.options.map(serialiseOption),
|
|
10
10
|
components: builder.components.map(serialiseComponent),
|
|
11
|
-
collections: builder.collections.map(serialiseCollection)
|
|
11
|
+
collections: builder.collections.map(serialiseCollection),
|
|
12
|
+
expectations: builder.expectations.map(serialiseExpectation)
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
15
|
function serialiseUI(input) {
|
|
@@ -29,6 +30,12 @@ function serialiseComponent(component) {
|
|
|
29
30
|
dependencies: component.dependencies
|
|
30
31
|
};
|
|
31
32
|
}
|
|
33
|
+
function serialiseExpectation(expectation) {
|
|
34
|
+
return {
|
|
35
|
+
name: expectation.name,
|
|
36
|
+
kind: expectation.kind
|
|
37
|
+
};
|
|
38
|
+
}
|
|
32
39
|
function serialiseCollection(collection) {
|
|
33
40
|
return {
|
|
34
41
|
name: collection.name,
|
|
@@ -40,6 +47,9 @@ function serialiseCollection(collection) {
|
|
|
40
47
|
};
|
|
41
48
|
}
|
|
42
49
|
function serialiseValues(optionValues) {
|
|
50
|
+
if (v.is(BuilderParameterSchema, optionValues)) {
|
|
51
|
+
return { type: 'parameter' };
|
|
52
|
+
}
|
|
43
53
|
if (v.is(v.instance(BuilderSelectType), optionValues)) {
|
|
44
54
|
return {
|
|
45
55
|
type: 'select',
|
|
@@ -65,6 +75,13 @@ function serialiseOptionWhenConfig(config) {
|
|
|
65
75
|
return { type: 'enable', values: serialiseValues(config.values) };
|
|
66
76
|
}
|
|
67
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
|
+
}
|
|
68
85
|
return {
|
|
69
86
|
type: 'match',
|
|
70
87
|
matchPath: config.matchPath,
|
package/dist/ui.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import type { BuilderModelPaths } from './paths';
|
|
2
2
|
import type { BuilderCollectionNamesOf, BuilderCollectionOf, BuilderGeneric } from './core/index';
|
|
3
|
+
import type { BuilderExpectationEntries, BuilderExpectations, BuilderModelAsserted } from './core/expectation';
|
|
3
4
|
import type { BuilderUIItems } from './schemas/index';
|
|
4
5
|
export type BuilderUIGeneric = BuilderUI<BuilderGeneric>;
|
|
5
|
-
export type BuilderUIFactory<
|
|
6
|
-
export type
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
readonly builder: B;
|
|
6
|
+
export type BuilderUIFactory<Builder extends BuilderGeneric = BuilderGeneric> = (ui: BuilderUI<Builder>) => BuilderUIGeneric;
|
|
7
|
+
export type BuilderUIs = ReadonlyArray<BuilderUIGeneric>;
|
|
8
|
+
export declare class BuilderUI<Builder extends BuilderGeneric = BuilderGeneric> {
|
|
9
|
+
readonly builder: Builder;
|
|
10
10
|
readonly items: BuilderUIItems;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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, factory: BuilderUIFactory<BuilderCollectionOf<Builder, Name>['builder']>): BuilderUI<Builder>;
|
|
15
17
|
}
|
|
16
|
-
export declare function ui<const
|
|
17
|
-
type CollectionItemBuilder<BuilderInput extends BuilderGeneric, Name extends string> = BuilderCollectionOf<BuilderInput, Name>['builder'] extends BuilderGeneric ? BuilderCollectionOf<BuilderInput, Name>['builder'] : BuilderGeneric;
|
|
18
|
-
export {};
|
|
18
|
+
export declare function ui<const Builder extends BuilderGeneric>(builder: Builder, ...uis: BuilderUIs): BuilderUI<Builder>;
|
package/dist/ui.js
CHANGED
|
@@ -1,35 +1,42 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
|
-
import {
|
|
2
|
+
import { BuilderExpectation } from './core/expectation.js';
|
|
3
|
+
import { check } from './check.js';
|
|
3
4
|
export class BuilderUI {
|
|
4
5
|
builder;
|
|
5
6
|
items;
|
|
6
|
-
|
|
7
|
+
expectations;
|
|
8
|
+
constructor(builder, items = [], expectations = []) {
|
|
7
9
|
this.builder = builder;
|
|
8
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]);
|
|
9
17
|
}
|
|
10
18
|
page(label, paths) {
|
|
11
|
-
return new BuilderUI(this.builder, [...this.items, { type: 'page', label, paths }]);
|
|
19
|
+
return new BuilderUI(this.builder, [...this.items, { type: 'page', label, paths }], this.expectations);
|
|
12
20
|
}
|
|
13
21
|
describe(label, paths) {
|
|
14
|
-
return new BuilderUI(this.builder, [...this.items, { type: 'describe', label, paths }]);
|
|
22
|
+
return new BuilderUI(this.builder, [...this.items, { type: 'describe', label, paths }], this.expectations);
|
|
15
23
|
}
|
|
16
24
|
collection(name, label, factory) {
|
|
17
25
|
const foundCollection = this.builder.collections.find((entry) => entry.name === name);
|
|
18
|
-
|
|
26
|
+
check.truthy(foundCollection, `Collection '${name}' not found! ❌`);
|
|
19
27
|
const templateUI = new BuilderUI(foundCollection.builder);
|
|
20
28
|
const result = factory(templateUI);
|
|
21
|
-
return new BuilderUI(this.builder, [
|
|
22
|
-
...this.items,
|
|
23
|
-
{ type: 'collection', name, label, items: result.items }
|
|
24
|
-
]);
|
|
29
|
+
return new BuilderUI(this.builder, [...this.items, { type: 'collection', name, label, items: result.items }], this.expectations);
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
|
-
export function ui(builder, ...
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
export function ui(builder, ...uis) {
|
|
33
|
+
const merged = uis.reduce((accumulated, ui) => {
|
|
34
|
+
return new BuilderUI(accumulated.builder, [...accumulated.items, ...ui.items], [...accumulated.expectations, ...ui.expectations]);
|
|
35
|
+
}, new BuilderUI(builder));
|
|
36
|
+
merged.expectations.forEach((expectation) => {
|
|
37
|
+
if (v.is(v.instance(BuilderExpectation), expectation) && expectation.kind === 'option') {
|
|
38
|
+
expectation.validate(merged.builder.options);
|
|
32
39
|
}
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
});
|
|
41
|
+
return merged;
|
|
35
42
|
}
|
package/package.json
CHANGED
package/dist/assert/assert.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { BuilderStateMerge, BuilderGeneric, BuilderStateOf } from '../core/index';
|
|
2
|
-
import type { Prettify } from '../prettify';
|
|
3
|
-
import type { BuilderUI } from '../ui';
|
|
4
|
-
import type { BuilderExpectations } from './expectation';
|
|
5
|
-
import { BuilderComponent, Builder } from '../core/index.js';
|
|
6
|
-
import { BuilderExpectation } from './expectation.js';
|
|
7
|
-
export type BuilderModelAsserted<BuilderInput extends BuilderGeneric, Items extends BuilderExpectations> = Builder<BuilderStateMerge<BuilderStateOf<BuilderInput>, {
|
|
8
|
-
model: ModelAssert<BuilderInput, Items>;
|
|
9
|
-
components: ComponentAssert<BuilderInput, Items>;
|
|
10
|
-
}>>;
|
|
11
|
-
export type BuilderUIModelAsserted<BuilderInput extends BuilderGeneric, Items extends BuilderExpectations> = BuilderUI<BuilderModelAsserted<BuilderInput, Items>>;
|
|
12
|
-
declare function assertBuilder<const R extends BuilderGeneric, const Items extends BuilderExpectations>(builder: R, ...items: Items): BuilderModelAsserted<R, Items>;
|
|
13
|
-
declare function assertUI<const R extends BuilderGeneric, const Items extends BuilderExpectations>(ui: BuilderUI<R>, ...items: Items): BuilderUIModelAsserted<R, Items>;
|
|
14
|
-
export declare const assert: {
|
|
15
|
-
builder: typeof assertBuilder;
|
|
16
|
-
ui: typeof assertUI;
|
|
17
|
-
};
|
|
18
|
-
type ModelAssert<BuilderInput extends BuilderGeneric, Items extends BuilderExpectations, Current extends BuilderStateOf<BuilderInput> = BuilderStateOf<BuilderInput>, Asserted extends ExpectedModel<Items> = ExpectedModel<Items>> = unknown extends Current['model'] ? Prettify<Asserted> : Prettify<Current['model'] & Asserted>;
|
|
19
|
-
type ComponentAssert<BuilderInput extends BuilderGeneric, Items extends BuilderExpectations, Current extends BuilderStateOf<BuilderInput> = BuilderStateOf<BuilderInput>, Asserted extends ExpectedComponents<Items> = ExpectedComponents<Items>> = Current['components'] extends [] ? ExpectedComponents<Items> : number extends Asserted['length'] ? Asserted : [...Current['components'], ...Asserted];
|
|
20
|
-
type ExpectedModel<Items extends ReadonlyArray<BuilderExpectation>> = Items extends readonly [
|
|
21
|
-
infer Head,
|
|
22
|
-
...infer Tail extends ReadonlyArray<BuilderExpectation>
|
|
23
|
-
] ? (Head extends BuilderExpectation<infer Name, infer Value> ? [Value] extends [never] ? unknown : Record<Name, Value> : unknown) & ExpectedModel<Tail> : unknown;
|
|
24
|
-
type ExpectedComponents<Items extends ReadonlyArray<BuilderExpectation>> = Items extends readonly [
|
|
25
|
-
infer Head,
|
|
26
|
-
...infer Tail extends ReadonlyArray<BuilderExpectation>
|
|
27
|
-
] ? Head extends BuilderExpectation<infer Name, Array<any>> ? [BuilderComponent<Name>, ...ExpectedComponents<Tail>] : ExpectedComponents<Tail> : [];
|
|
28
|
-
export {};
|
package/dist/assert/assert.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
import { BuilderComponent, Builder } from '../core/index.js';
|
|
3
|
-
import { BuilderExpectation } from './expectation.js';
|
|
4
|
-
function assertBuilder(builder, ...items) {
|
|
5
|
-
items.forEach((item) => {
|
|
6
|
-
if (v.is(v.instance(BuilderExpectation), item)) {
|
|
7
|
-
if (item.kind === 'option') {
|
|
8
|
-
item.validate(builder.options);
|
|
9
|
-
}
|
|
10
|
-
else if (item.kind === 'component') {
|
|
11
|
-
item.validate(builder.components);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
return builder;
|
|
16
|
-
}
|
|
17
|
-
function assertUI(ui, ...items) {
|
|
18
|
-
items.forEach((item) => {
|
|
19
|
-
if (v.is(v.instance(BuilderExpectation), item) && item.kind === 'option') {
|
|
20
|
-
item.validate(ui.builder.options);
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
return ui;
|
|
24
|
-
}
|
|
25
|
-
export const assert = {
|
|
26
|
-
builder: assertBuilder,
|
|
27
|
-
ui: assertUI
|
|
28
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { BuilderComponentEntries, BuilderOptionEntries } from '../core/index';
|
|
2
|
-
export type BuilderExpectationKind = 'option' | 'component';
|
|
3
|
-
export type BuilderExpectationEntries = BuilderOptionEntries | BuilderComponentEntries;
|
|
4
|
-
export declare class BuilderExpectation<Name extends string = string, Value = unknown> {
|
|
5
|
-
readonly name: Name;
|
|
6
|
-
readonly kind: BuilderExpectationKind;
|
|
7
|
-
constructor(name: Name, kind: BuilderExpectationKind);
|
|
8
|
-
optional(): BuilderExpectation<Name, Value | null>;
|
|
9
|
-
validate(entries: BuilderExpectationEntries): void;
|
|
10
|
-
}
|
|
11
|
-
export type BuilderExpectations = readonly [
|
|
12
|
-
BuilderExpectation,
|
|
13
|
-
...ReadonlyArray<BuilderExpectation>
|
|
14
|
-
];
|
|
15
|
-
export declare const option: {
|
|
16
|
-
expect: <const Name extends string>(name: Name) => BuilderExpectation<Name, string>;
|
|
17
|
-
};
|
|
18
|
-
export declare const component: {
|
|
19
|
-
expect: <const Name extends string>(name: Name) => BuilderExpectation<Name, never>;
|
|
20
|
-
};
|
package/dist/assert/index.d.ts
DELETED
package/dist/assert/index.js
DELETED
package/dist/invariant.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function invariant<Input>(input: Input, message?: `${string}! ❌`): asserts input is Exclude<Input, null | undefined | '' | 0 | false>;
|
package/dist/invariant.js
DELETED
package/dist/schemas/layout.d.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
export declare const BuilderLayoutOptionSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
3
|
-
readonly path: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
|
|
4
|
-
}, undefined>, v.ReadonlyAction<{
|
|
5
|
-
readonly path: readonly (string | number)[];
|
|
6
|
-
}>]>;
|
|
7
|
-
export type BuilderLayoutOption = v.InferOutput<typeof BuilderLayoutOptionSchema>;
|
|
8
|
-
export declare const BuilderLayoutOptionsSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
9
|
-
readonly path: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
|
|
10
|
-
}, undefined>, v.ReadonlyAction<{
|
|
11
|
-
readonly path: readonly (string | number)[];
|
|
12
|
-
}>]>, undefined>, v.ReadonlyAction<Readonly<{
|
|
13
|
-
readonly path: readonly (string | number)[];
|
|
14
|
-
}>[]>]>;
|
|
15
|
-
export type BuilderLayoutOptions = v.InferOutput<typeof BuilderLayoutOptionsSchema>;
|
|
16
|
-
export declare const BuilderLayoutPageSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
17
|
-
readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
18
|
-
readonly options: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
19
|
-
readonly path: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
|
|
20
|
-
}, undefined>, v.ReadonlyAction<{
|
|
21
|
-
readonly path: readonly (string | number)[];
|
|
22
|
-
}>]>, undefined>, v.ReadonlyAction<Readonly<{
|
|
23
|
-
readonly path: readonly (string | number)[];
|
|
24
|
-
}>[]>]>;
|
|
25
|
-
}, undefined>, v.ReadonlyAction<{
|
|
26
|
-
label: string | null;
|
|
27
|
-
readonly options: readonly Readonly<{
|
|
28
|
-
readonly path: readonly (string | number)[];
|
|
29
|
-
}>[];
|
|
30
|
-
}>]>;
|
|
31
|
-
export type BuilderLayoutPage = v.InferOutput<typeof BuilderLayoutPageSchema>;
|
|
32
|
-
export declare const BuilderLayoutSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
33
|
-
readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
34
|
-
readonly options: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
35
|
-
readonly path: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
|
|
36
|
-
}, undefined>, v.ReadonlyAction<{
|
|
37
|
-
readonly path: readonly (string | number)[];
|
|
38
|
-
}>]>, undefined>, v.ReadonlyAction<Readonly<{
|
|
39
|
-
readonly path: readonly (string | number)[];
|
|
40
|
-
}>[]>]>;
|
|
41
|
-
}, undefined>, v.ReadonlyAction<{
|
|
42
|
-
label: string | null;
|
|
43
|
-
readonly options: readonly Readonly<{
|
|
44
|
-
readonly path: readonly (string | number)[];
|
|
45
|
-
}>[];
|
|
46
|
-
}>]>, undefined>, v.ReadonlyAction<Readonly<{
|
|
47
|
-
label: string | null;
|
|
48
|
-
readonly options: readonly Readonly<{
|
|
49
|
-
readonly path: readonly (string | number)[];
|
|
50
|
-
}>[];
|
|
51
|
-
}>[]>]>;
|
|
52
|
-
export type BuilderLayout = v.InferOutput<typeof BuilderLayoutSchema>;
|
package/dist/schemas/layout.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
import { BuilderPathSchema } from './primitives.js';
|
|
3
|
-
export const BuilderLayoutOptionSchema = v.pipe(v.object({ path: BuilderPathSchema }), v.readonly());
|
|
4
|
-
export const BuilderLayoutOptionsSchema = v.pipe(v.array(BuilderLayoutOptionSchema), v.readonly());
|
|
5
|
-
export const BuilderLayoutPageSchema = v.pipe(v.object({ label: v.nullable(v.string()), options: BuilderLayoutOptionsSchema }), v.readonly());
|
|
6
|
-
export const BuilderLayoutSchema = v.pipe(v.array(BuilderLayoutPageSchema), v.readonly());
|
|
File without changes
|