@builder-builder/builder 0.0.7 → 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.
- 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 +61 -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 +37 -13
- package/dist/index.js +22 -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 +9 -3
- 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
package/dist/resolve/instance.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
import { resolveCollectionModels } from '../core/index.js';
|
|
3
|
-
export class BuilderModelValidateException extends Error {
|
|
4
|
-
errors;
|
|
5
|
-
constructor(errors) {
|
|
6
|
-
super('model validation failed');
|
|
7
|
-
this.errors = errors;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
export function validateInstance(builder, model, options) {
|
|
11
|
-
const errors = validateModel(builder, model);
|
|
12
|
-
if (options?.strict && errors.length > 0) {
|
|
13
|
-
throw new BuilderModelValidateException(errors);
|
|
14
|
-
}
|
|
15
|
-
return [model, errors];
|
|
16
|
-
}
|
|
17
|
-
export const instance = Object.assign(createInstance, { validate: validateInstance });
|
|
18
|
-
function validateModel(builder, model) {
|
|
19
|
-
let errors = [];
|
|
20
|
-
builder.options.forEach((entry) => {
|
|
21
|
-
const option = entry.resolve(model);
|
|
22
|
-
if (!option) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const value = model[option.name];
|
|
26
|
-
if (!v.is(option.values.valueSchema, value)) {
|
|
27
|
-
errors = [...errors, { kind: 'invalid-option', name: option.name, value }];
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
builder.collections.forEach((entry) => {
|
|
31
|
-
const collection = entry.resolve(model);
|
|
32
|
-
if (!collection) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
const existing = model[collection.name];
|
|
36
|
-
if (!Array.isArray(existing)) {
|
|
37
|
-
errors = [
|
|
38
|
-
...errors,
|
|
39
|
-
{ kind: 'invalid-collection', name: collection.name, detail: 'expected an array' }
|
|
40
|
-
];
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const collectionModels = resolveCollectionModels(model, collection.name);
|
|
44
|
-
collectionModels.forEach((itemModel, index) => {
|
|
45
|
-
const nestedErrors = validateModel(collection.builder, itemModel);
|
|
46
|
-
errors = [
|
|
47
|
-
...errors,
|
|
48
|
-
...nestedErrors.map((error) => ({
|
|
49
|
-
...error,
|
|
50
|
-
name: `${collection.name}[${String(index)}].${error.name}`
|
|
51
|
-
}))
|
|
52
|
-
];
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
return errors;
|
|
56
|
-
}
|
|
57
|
-
function createInstance(builder, partial = {}) {
|
|
58
|
-
const model = partial;
|
|
59
|
-
builder.options.forEach((entry) => {
|
|
60
|
-
const option = entry.resolve(model);
|
|
61
|
-
if (!option) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
if (!v.is(option.values.valueSchema, model[option.name])) {
|
|
65
|
-
model[option.name] = option.values.defaultValue;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
builder.collections.forEach((entry) => {
|
|
69
|
-
const collection = entry.resolve(model);
|
|
70
|
-
if (!collection) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
const existing = model[collection.name];
|
|
74
|
-
const collectionModels = existing != null ? resolveCollectionModels(model, collection.name) : [];
|
|
75
|
-
model[collection.name] = Array.from({
|
|
76
|
-
length: Math.max(collectionModels.length, collection.min)
|
|
77
|
-
}).map((_, index) => createInstance(collection.builder, collectionModels[index] || {}));
|
|
78
|
-
});
|
|
79
|
-
return model;
|
|
80
|
-
}
|
package/dist/resolve/models.d.ts
DELETED
package/dist/resolve/models.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export function models(builder) {
|
|
2
|
-
return modelsRecursive(builder);
|
|
3
|
-
}
|
|
4
|
-
function modelsRecursive(builder) {
|
|
5
|
-
const collectionModels = builder.collections.flatMap((entry) => {
|
|
6
|
-
return collectionBuilders(entry).map((collectionBuilder) => modelsRecursive(collectionBuilder));
|
|
7
|
-
});
|
|
8
|
-
const wrapped = Object.fromEntries(builder.componentGraph.paths.map((path) => [path.name, path.models.map((model) => ({ model }))]));
|
|
9
|
-
return {
|
|
10
|
-
...collectionModels.reduce((merged, component) => ({ ...merged, ...component }), {}),
|
|
11
|
-
...wrapped
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
function collectionBuilders(entry) {
|
|
15
|
-
if (entry.config?.type === 'match') {
|
|
16
|
-
const selectMap = entry.config.selectMap;
|
|
17
|
-
return Object.values(selectMap).flatMap((value) => (value ? [value.builder] : []));
|
|
18
|
-
}
|
|
19
|
-
return [entry.builder];
|
|
20
|
-
}
|
package/dist/resolve/order.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { Prettify } from '../prettify';
|
|
2
|
-
import type { BuilderVariant } from '../model';
|
|
3
|
-
import type { CollectionShape } from '../core/collection/index';
|
|
4
|
-
import type { BuilderCollection, BuilderCollectionEntries, BuilderComponentEntries, BuilderComponentNamesOf, BuilderGeneric } from '../core/index';
|
|
5
|
-
import type { BuilderValidated } from '../core/validate';
|
|
6
|
-
import type { BuilderModelValidated } from './instance';
|
|
7
|
-
import type { BuilderDataValidated } from './validate';
|
|
8
|
-
export type BuilderOrder<Builder extends BuilderGeneric> = Builder extends {
|
|
9
|
-
readonly _components: infer Components extends BuilderComponentEntries;
|
|
10
|
-
readonly _collections: infer Collections extends BuilderCollectionEntries;
|
|
11
|
-
} ? Prettify<ComponentsOrder<Components> & CollectionsOrder<Collections>> : Record<string, unknown>;
|
|
12
|
-
export declare function order<const Builder extends BuilderGeneric>(builder: Builder & BuilderValidated, model: BuilderModelValidated, componentModels: BuilderDataValidated): BuilderOrder<Builder>;
|
|
13
|
-
type ComponentsOrder<Components extends BuilderComponentEntries> = {
|
|
14
|
-
readonly [Name in BuilderComponentNamesOf<Components>]: BuilderVariant | null;
|
|
15
|
-
};
|
|
16
|
-
type CollectionsOrder<Collections extends BuilderCollectionEntries> = Collections extends readonly [
|
|
17
|
-
infer Head extends BuilderCollection,
|
|
18
|
-
...infer Tail extends BuilderCollectionEntries
|
|
19
|
-
] ? Record<Head['name'], CollectionOrderOf<Head>> & CollectionsOrder<Tail> : {};
|
|
20
|
-
type CollectionOrderOf<Input extends BuilderCollection> = Input extends BuilderCollection<any, infer CollectionRecipe extends BuilderGeneric, infer Min, infer Max> ? CollectionShape<BuilderOrder<CollectionRecipe>, Min, Max> : ReadonlyArray<Record<string, unknown>>;
|
|
21
|
-
export {};
|
package/dist/resolve/order.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { resolveCollectionModels } from '../core/index.js';
|
|
2
|
-
import { check } from '../check.js';
|
|
3
|
-
function orderInternal(builder, model, componentModels) {
|
|
4
|
-
const result = {};
|
|
5
|
-
const resolved = new Set();
|
|
6
|
-
builder.components.forEach((component) => {
|
|
7
|
-
component.dependencies.forEach((dependency) => {
|
|
8
|
-
check.truthy(resolved.has(dependency), `Component '${component.name}' depends on '${dependency}' which has not been resolved! ❌`);
|
|
9
|
-
});
|
|
10
|
-
resolved.add(component.name);
|
|
11
|
-
const variants = componentModels[component.name] ?? [];
|
|
12
|
-
result[component.name] =
|
|
13
|
-
variants.find((variant) => Object.entries(variant.model).every(([key, value]) => model[key] === value)) ?? null;
|
|
14
|
-
});
|
|
15
|
-
builder.collections.forEach((entry) => {
|
|
16
|
-
const collection = entry.resolve(model);
|
|
17
|
-
if (!collection) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const itemModels = resolveCollectionModels(model, collection.name);
|
|
21
|
-
result[collection.name] = itemModels.map((itemModel) => orderInternal(collection.builder, itemModel, componentModels));
|
|
22
|
-
});
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
|
-
export function order(builder, model, componentModels) {
|
|
26
|
-
return orderInternal(builder, model, componentModels);
|
|
27
|
-
}
|
package/dist/resolve/render.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { BuilderOption } from '../core/index';
|
|
2
|
-
import type { BuilderValidated } from '../core/validate';
|
|
3
|
-
import type { BuilderModel } from '../model';
|
|
4
|
-
import type { BuilderModelValidated } from './instance';
|
|
5
|
-
import type { BuilderDescription, BuilderUIItems, BuilderPrimitive } from '../schemas/index';
|
|
6
|
-
import { BuilderUI } from '../ui.js';
|
|
7
|
-
export type BuilderRenderOption = {
|
|
8
|
-
readonly value: BuilderPrimitive | null;
|
|
9
|
-
update(model: BuilderModel, value: BuilderPrimitive | null): BuilderModel;
|
|
10
|
-
readonly option: BuilderOption;
|
|
11
|
-
};
|
|
12
|
-
export type BuilderRenderOptions = ReadonlyArray<BuilderRenderOption>;
|
|
13
|
-
export type BuilderRenderPage = {
|
|
14
|
-
readonly label: string | null;
|
|
15
|
-
readonly options: BuilderRenderOptions;
|
|
16
|
-
};
|
|
17
|
-
export type BuilderRenderPages = ReadonlyArray<BuilderRenderPage>;
|
|
18
|
-
export type BuilderRenderResult = {
|
|
19
|
-
readonly layout: BuilderRenderPages;
|
|
20
|
-
readonly description: BuilderDescription;
|
|
21
|
-
};
|
|
22
|
-
export declare function render(rootBuilder: BuilderValidated, rootModel: BuilderModelValidated, input: BuilderUI | BuilderUIItems): BuilderRenderResult;
|
|
23
|
-
export declare function ordinal(index: number): string;
|
package/dist/resolve/render.js
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
import { resolveCollectionModels } from '../core/index.js';
|
|
3
|
-
import { readPath } from '../paths.js';
|
|
4
|
-
import { BuilderUI } from '../ui.js';
|
|
5
|
-
export function render(rootBuilder, rootModel, input) {
|
|
6
|
-
const items = v.is(v.instance(BuilderUI), input) ? input.items : input;
|
|
7
|
-
function walk(builder, model, collectionPath, labelContext, items) {
|
|
8
|
-
function composeLabel(label) {
|
|
9
|
-
if (labelContext.length === 0) {
|
|
10
|
-
return label;
|
|
11
|
-
}
|
|
12
|
-
const prefix = labelContext.join(', ');
|
|
13
|
-
if (label == null) {
|
|
14
|
-
return prefix;
|
|
15
|
-
}
|
|
16
|
-
return `${prefix}, ${label}`;
|
|
17
|
-
}
|
|
18
|
-
const layout = [];
|
|
19
|
-
const description = [];
|
|
20
|
-
items.forEach((item) => {
|
|
21
|
-
if (item.type === 'collection') {
|
|
22
|
-
const collection = findCollection(builder, model, item.name);
|
|
23
|
-
if (!collection) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
const models = resolveCollectionModels(model, collection.name);
|
|
27
|
-
models.forEach((collectionModel, itemIndex) => {
|
|
28
|
-
const child = walk(collection.builder, collectionModel, [...collectionPath, item.name, itemIndex], [...labelContext, `${ordinal(itemIndex)} ${item.label}`], item.items);
|
|
29
|
-
layout.push(...child.layout);
|
|
30
|
-
description.push(...child.description);
|
|
31
|
-
});
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
if (item.type === 'page') {
|
|
35
|
-
const resolvedOptions = item.paths.flatMap((path) => {
|
|
36
|
-
const option = findPageOption(builder, model, path);
|
|
37
|
-
if (!option) {
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
const fullPath = [...collectionPath, ...path];
|
|
41
|
-
return [
|
|
42
|
-
{
|
|
43
|
-
option,
|
|
44
|
-
value: readPath(model, fullPath),
|
|
45
|
-
update: (updateModel, updateValue) => setPath(updateModel, fullPath, updateValue)
|
|
46
|
-
}
|
|
47
|
-
];
|
|
48
|
-
});
|
|
49
|
-
if (resolvedOptions.length === 0) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
layout.push({
|
|
53
|
-
label: composeLabel(item.label),
|
|
54
|
-
options: resolvedOptions
|
|
55
|
-
});
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
if (item.type === 'describe') {
|
|
59
|
-
const composedLabel = composeLabel(item.label);
|
|
60
|
-
if (composedLabel == null) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
const values = item.paths.flatMap((path) => {
|
|
64
|
-
const value = findOptionValue(builder, model, path);
|
|
65
|
-
if (value === MISSING || value == null) {
|
|
66
|
-
return [];
|
|
67
|
-
}
|
|
68
|
-
return [value];
|
|
69
|
-
});
|
|
70
|
-
if (values.length === 0) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
description.push([composedLabel, values.join(' ')]);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
return { layout, description };
|
|
77
|
-
}
|
|
78
|
-
return walk(rootBuilder, rootModel, [], [], items);
|
|
79
|
-
}
|
|
80
|
-
export function ordinal(index) {
|
|
81
|
-
return ordinals[index] ?? `${index + 1}`;
|
|
82
|
-
}
|
|
83
|
-
const MISSING = {};
|
|
84
|
-
const ordinals = [
|
|
85
|
-
'First',
|
|
86
|
-
'Second',
|
|
87
|
-
'Third',
|
|
88
|
-
'Fourth',
|
|
89
|
-
'Fifth',
|
|
90
|
-
'Sixth',
|
|
91
|
-
'Seventh',
|
|
92
|
-
'Eighth',
|
|
93
|
-
'Ninth',
|
|
94
|
-
'Tenth',
|
|
95
|
-
'Eleventh',
|
|
96
|
-
'Twelfth',
|
|
97
|
-
'Thirteenth',
|
|
98
|
-
'Fourteenth',
|
|
99
|
-
'Fifteenth'
|
|
100
|
-
];
|
|
101
|
-
function findPageOption(builder, model, path) {
|
|
102
|
-
const resolved = walkCollectionPath(builder, model, path);
|
|
103
|
-
if (!resolved) {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
return resolved.builder.options.reduce((found, entry) => {
|
|
107
|
-
if (found) {
|
|
108
|
-
return found;
|
|
109
|
-
}
|
|
110
|
-
const option = entry.resolve(resolved.model);
|
|
111
|
-
return option?.name === resolved.optionName ? option : null;
|
|
112
|
-
}, null);
|
|
113
|
-
}
|
|
114
|
-
function findOptionValue(builder, model, path) {
|
|
115
|
-
const resolved = walkCollectionPath(builder, model, path);
|
|
116
|
-
if (!resolved) {
|
|
117
|
-
return MISSING;
|
|
118
|
-
}
|
|
119
|
-
const hasOption = resolved.builder.options.some((entry) => {
|
|
120
|
-
const option = entry.resolve(resolved.model);
|
|
121
|
-
return option?.name === resolved.optionName;
|
|
122
|
-
});
|
|
123
|
-
if (!hasOption) {
|
|
124
|
-
return MISSING;
|
|
125
|
-
}
|
|
126
|
-
return resolved.model[resolved.optionName];
|
|
127
|
-
}
|
|
128
|
-
function walkCollectionPath(builder, model, path) {
|
|
129
|
-
const optionName = path[path.length - 1];
|
|
130
|
-
const collectionPairs = path.slice(0, -1);
|
|
131
|
-
let currentBuilder = builder;
|
|
132
|
-
let currentModel = model;
|
|
133
|
-
for (let pairIndex = 0; pairIndex < collectionPairs.length; pairIndex += 2) {
|
|
134
|
-
if (!currentModel) {
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
|
-
const collection = findCollection(currentBuilder, currentModel, collectionPairs[pairIndex]);
|
|
138
|
-
if (!collection) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
currentBuilder = collection.builder;
|
|
142
|
-
const collectionModels = resolveCollectionModels(model, collection.name);
|
|
143
|
-
currentModel = collectionModels[collectionPairs[pairIndex + 1]];
|
|
144
|
-
}
|
|
145
|
-
if (!currentModel) {
|
|
146
|
-
return null;
|
|
147
|
-
}
|
|
148
|
-
return { builder: currentBuilder, model: currentModel, optionName };
|
|
149
|
-
}
|
|
150
|
-
function findCollection(builder, model, collectionName) {
|
|
151
|
-
return builder.collections.reduce((found, entry) => {
|
|
152
|
-
if (found) {
|
|
153
|
-
return found;
|
|
154
|
-
}
|
|
155
|
-
const collection = entry.resolve(model);
|
|
156
|
-
return collection?.name === collectionName ? collection : null;
|
|
157
|
-
}, null);
|
|
158
|
-
}
|
|
159
|
-
function setPath(container, path, value) {
|
|
160
|
-
const [head, ...tail] = path;
|
|
161
|
-
if (typeof head === 'number') {
|
|
162
|
-
const arrayContainer = container ? [...container] : [];
|
|
163
|
-
arrayContainer[head] = tail.length === 0 ? value : setPath(arrayContainer[head], tail, value);
|
|
164
|
-
return arrayContainer;
|
|
165
|
-
}
|
|
166
|
-
const objectContainer = container ? container : {};
|
|
167
|
-
return {
|
|
168
|
-
...objectContainer,
|
|
169
|
-
[head]: tail.length === 0 ? value : setPath(objectContainer[head], tail, value)
|
|
170
|
-
};
|
|
171
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { BuilderData, BuilderModel } from '../model';
|
|
2
|
-
import type { BuilderValidated } from '../core/validate';
|
|
3
|
-
declare const validated: unique symbol;
|
|
4
|
-
export type BuilderDataValidated = BuilderData & {
|
|
5
|
-
readonly [validated]: true;
|
|
6
|
-
};
|
|
7
|
-
export type BuilderDataErrorComponentMissing = {
|
|
8
|
-
readonly kind: 'missing-component';
|
|
9
|
-
readonly component: string;
|
|
10
|
-
};
|
|
11
|
-
export type BuilderDataErrorComponentUnexpected = {
|
|
12
|
-
readonly kind: 'unexpected-component';
|
|
13
|
-
readonly component: string;
|
|
14
|
-
};
|
|
15
|
-
export type BuilderDataErrorVariantMissing = {
|
|
16
|
-
readonly kind: 'missing-variant';
|
|
17
|
-
readonly component: string;
|
|
18
|
-
readonly model: BuilderModel;
|
|
19
|
-
};
|
|
20
|
-
export type BuilderDataErrorVariantInvalid = {
|
|
21
|
-
readonly kind: 'invalid-variant';
|
|
22
|
-
readonly component: string;
|
|
23
|
-
readonly model: BuilderModel;
|
|
24
|
-
};
|
|
25
|
-
export type BuilderDataError = BuilderDataErrorComponentMissing | BuilderDataErrorComponentUnexpected | BuilderDataErrorVariantMissing | BuilderDataErrorVariantInvalid;
|
|
26
|
-
export type BuilderDataErrors = ReadonlyArray<BuilderDataError>;
|
|
27
|
-
export type BuilderDataValidateResult = readonly [BuilderDataValidated, BuilderDataErrors];
|
|
28
|
-
export type BuilderDataValidateOptions = {
|
|
29
|
-
readonly strict: true;
|
|
30
|
-
};
|
|
31
|
-
export declare class BuilderDataValidateError extends Error {
|
|
32
|
-
readonly errors: BuilderDataErrors;
|
|
33
|
-
constructor(errors: BuilderDataErrors);
|
|
34
|
-
}
|
|
35
|
-
export declare const validate: typeof validateData;
|
|
36
|
-
declare function validateData(builder: BuilderValidated, builderData: BuilderData, options?: BuilderDataValidateOptions): BuilderDataValidateResult;
|
|
37
|
-
export {};
|
package/dist/resolve/validate.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { models } from './models.js';
|
|
2
|
-
export class BuilderDataValidateError extends Error {
|
|
3
|
-
errors;
|
|
4
|
-
constructor(errors) {
|
|
5
|
-
super('data validation failed');
|
|
6
|
-
this.errors = errors;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export const validate = validateData;
|
|
10
|
-
function validateData(builder, builderData, options) {
|
|
11
|
-
const expected = models(builder);
|
|
12
|
-
let errors = [];
|
|
13
|
-
Object.entries(expected).forEach(([component, expectedModels]) => {
|
|
14
|
-
const componentModels = builderData[component];
|
|
15
|
-
if (!componentModels) {
|
|
16
|
-
errors = [...errors, { kind: 'missing-component', component }];
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const expectedKeys = new Map(expectedModels.map((variant) => [sortedKey(variant.model), variant.model]));
|
|
20
|
-
const actualKeys = new Set();
|
|
21
|
-
componentModels.forEach((variant) => {
|
|
22
|
-
const key = sortedKey(variant.model);
|
|
23
|
-
actualKeys.add(key);
|
|
24
|
-
if (!expectedKeys.has(key)) {
|
|
25
|
-
errors = [...errors, { kind: 'invalid-variant', component, model: variant.model }];
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
expectedKeys.forEach((model, key) => {
|
|
29
|
-
if (!actualKeys.has(key)) {
|
|
30
|
-
errors = [...errors, { kind: 'missing-variant', component, model }];
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
Object.keys(builderData).forEach((component) => {
|
|
35
|
-
if (!expected[component]) {
|
|
36
|
-
errors = [...errors, { kind: 'unexpected-component', component }];
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
if (options?.strict && errors.length > 0) {
|
|
40
|
-
throw new BuilderDataValidateError(errors);
|
|
41
|
-
}
|
|
42
|
-
return [builderData, errors];
|
|
43
|
-
}
|
|
44
|
-
function sortedKey(model) {
|
|
45
|
-
const entries = Object.entries(model).filter(([, value]) => value != null);
|
|
46
|
-
return JSON.stringify(entries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB)));
|
|
47
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
export declare const BuilderDescriptionItemSchema: v.SchemaWithPipe<readonly [v.TupleSchema<[v.StringSchema<undefined>, v.StringSchema<undefined>], undefined>, v.ReadonlyAction<[string, string]>]>;
|
|
3
|
-
export type BuilderDescriptionItem = v.InferOutput<typeof BuilderDescriptionItemSchema>;
|
|
4
|
-
export declare const BuilderDescriptionSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.TupleSchema<[v.StringSchema<undefined>, v.StringSchema<undefined>], undefined>, v.ReadonlyAction<[string, string]>]>, undefined>, v.ReadonlyAction<(readonly [string, string])[]>]>;
|
|
5
|
-
export type BuilderDescription = v.InferOutput<typeof BuilderDescriptionSchema>;
|
package/dist/schemas/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export type { BuilderDescription, BuilderDescriptionItem } from './description';
|
|
2
|
-
export { BuilderDescriptionItemSchema, BuilderDescriptionSchema } from './description.js';
|
|
3
|
-
export type { BuilderPath, BuilderPaths, BuilderPrimitive, BuilderPrimitives } from './primitives';
|
|
4
|
-
export { BuilderPathSchema, BuilderPathsSchema, BuilderPrimitiveSchema, BuilderPrimitivesSchema } from './primitives.js';
|
|
5
|
-
export type { BuilderUICollection, BuilderUIDescribe, BuilderUIItem, BuilderUIItems, BuilderUIPage } from './ui';
|
|
6
|
-
export { BuilderUICollectionSchema, BuilderUIDescribeSchema, BuilderUIItemSchema, BuilderUIItemsSchema, BuilderUIPageSchema } from './ui.js';
|
package/dist/schemas/index.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { BuilderDescriptionItemSchema, BuilderDescriptionSchema } from './description.js';
|
|
2
|
-
export { BuilderPathSchema, BuilderPathsSchema, BuilderPrimitiveSchema, BuilderPrimitivesSchema } from './primitives.js';
|
|
3
|
-
export { BuilderUICollectionSchema, BuilderUIDescribeSchema, BuilderUIItemSchema, BuilderUIItemsSchema, BuilderUIPageSchema } from './ui.js';
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
export declare const BuilderPrimitiveSchema: v.NullableSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
|
|
3
|
-
export type BuilderPrimitive = v.InferOutput<typeof BuilderPrimitiveSchema>;
|
|
4
|
-
export declare const BuilderPrimitivesSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.NullableSchema<v.UnionSchema<[v.StringSchema<undefined>, v.BooleanSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, undefined>, v.ReadonlyAction<(string | number | boolean | null)[]>]>;
|
|
5
|
-
export type BuilderPrimitives = v.InferOutput<typeof BuilderPrimitivesSchema>;
|
|
6
|
-
export declare const BuilderPathSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
|
|
7
|
-
export type BuilderPath = v.InferOutput<typeof BuilderPathSchema>;
|
|
8
|
-
export declare const BuilderPathsSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
|
|
9
|
-
export type BuilderPaths = v.InferOutput<typeof BuilderPathsSchema>;
|
package/dist/schemas/ui.d.ts
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
export declare const BuilderUIPageSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
3
|
-
readonly type: v.LiteralSchema<"page", undefined>;
|
|
4
|
-
readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
5
|
-
readonly paths: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
|
|
6
|
-
}, undefined>, v.ReadonlyAction<{
|
|
7
|
-
type: "page";
|
|
8
|
-
label: string | null;
|
|
9
|
-
readonly paths: readonly (readonly (string | number)[])[];
|
|
10
|
-
}>]>;
|
|
11
|
-
export type BuilderUIPage = v.InferOutput<typeof BuilderUIPageSchema>;
|
|
12
|
-
export declare const BuilderUIDescribeSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
13
|
-
readonly type: v.LiteralSchema<"describe", undefined>;
|
|
14
|
-
readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
15
|
-
readonly paths: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
|
|
16
|
-
}, undefined>, v.ReadonlyAction<{
|
|
17
|
-
type: "describe";
|
|
18
|
-
label: string | null;
|
|
19
|
-
readonly paths: readonly (readonly (string | number)[])[];
|
|
20
|
-
}>]>;
|
|
21
|
-
export type BuilderUIDescribe = v.InferOutput<typeof BuilderUIDescribeSchema>;
|
|
22
|
-
export type BuilderUICollection = {
|
|
23
|
-
readonly type: 'collection';
|
|
24
|
-
readonly name: string;
|
|
25
|
-
readonly label: string;
|
|
26
|
-
readonly items: BuilderUIItems;
|
|
27
|
-
};
|
|
28
|
-
export type BuilderUIItem = BuilderUIPage | BuilderUIDescribe | BuilderUICollection;
|
|
29
|
-
export type BuilderUIItems = ReadonlyArray<BuilderUIItem>;
|
|
30
|
-
type UIItemsSchemaType = v.GenericSchema<BuilderUIItems>;
|
|
31
|
-
export declare const BuilderUICollectionSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
32
|
-
readonly type: v.LiteralSchema<"collection", undefined>;
|
|
33
|
-
readonly name: v.StringSchema<undefined>;
|
|
34
|
-
readonly label: v.StringSchema<undefined>;
|
|
35
|
-
readonly items: v.LazySchema<UIItemsSchemaType>;
|
|
36
|
-
}, undefined>, v.ReadonlyAction<{
|
|
37
|
-
type: "collection";
|
|
38
|
-
name: string;
|
|
39
|
-
label: string;
|
|
40
|
-
items: BuilderUIItems;
|
|
41
|
-
}>]>;
|
|
42
|
-
export declare const BuilderUIItemSchema: v.SchemaWithPipe<readonly [v.VariantSchema<"type", [v.ObjectSchema<{
|
|
43
|
-
readonly type: v.LiteralSchema<"page", undefined>;
|
|
44
|
-
readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
45
|
-
readonly paths: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
|
|
46
|
-
}, undefined>, v.ObjectSchema<{
|
|
47
|
-
readonly type: v.LiteralSchema<"describe", undefined>;
|
|
48
|
-
readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
49
|
-
readonly paths: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
|
|
50
|
-
}, undefined>, v.ObjectSchema<{
|
|
51
|
-
readonly type: v.LiteralSchema<"collection", undefined>;
|
|
52
|
-
readonly name: v.StringSchema<undefined>;
|
|
53
|
-
readonly label: v.StringSchema<undefined>;
|
|
54
|
-
readonly items: v.LazySchema<UIItemsSchemaType>;
|
|
55
|
-
}, undefined>], undefined>, v.ReadonlyAction<{
|
|
56
|
-
type: "page";
|
|
57
|
-
label: string | null;
|
|
58
|
-
readonly paths: readonly (readonly (string | number)[])[];
|
|
59
|
-
} | {
|
|
60
|
-
type: "describe";
|
|
61
|
-
label: string | null;
|
|
62
|
-
readonly paths: readonly (readonly (string | number)[])[];
|
|
63
|
-
} | {
|
|
64
|
-
type: "collection";
|
|
65
|
-
name: string;
|
|
66
|
-
label: string;
|
|
67
|
-
items: BuilderUIItems;
|
|
68
|
-
}>]>;
|
|
69
|
-
export declare const BuilderUIItemsSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.VariantSchema<"type", [v.ObjectSchema<{
|
|
70
|
-
readonly type: v.LiteralSchema<"page", undefined>;
|
|
71
|
-
readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
72
|
-
readonly paths: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
|
|
73
|
-
}, undefined>, v.ObjectSchema<{
|
|
74
|
-
readonly type: v.LiteralSchema<"describe", undefined>;
|
|
75
|
-
readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
76
|
-
readonly paths: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>, undefined>, v.ReadonlyAction<(readonly (string | number)[])[]>]>;
|
|
77
|
-
}, undefined>, v.ObjectSchema<{
|
|
78
|
-
readonly type: v.LiteralSchema<"collection", undefined>;
|
|
79
|
-
readonly name: v.StringSchema<undefined>;
|
|
80
|
-
readonly label: v.StringSchema<undefined>;
|
|
81
|
-
readonly items: v.LazySchema<UIItemsSchemaType>;
|
|
82
|
-
}, undefined>], undefined>, undefined>, v.ReadonlyAction<({
|
|
83
|
-
type: "page";
|
|
84
|
-
label: string | null;
|
|
85
|
-
readonly paths: readonly (readonly (string | number)[])[];
|
|
86
|
-
} | {
|
|
87
|
-
type: "describe";
|
|
88
|
-
label: string | null;
|
|
89
|
-
readonly paths: readonly (readonly (string | number)[])[];
|
|
90
|
-
} | {
|
|
91
|
-
type: "collection";
|
|
92
|
-
name: string;
|
|
93
|
-
label: string;
|
|
94
|
-
items: BuilderUIItems;
|
|
95
|
-
})[]>]>;
|
|
96
|
-
export {};
|
package/dist/schemas/ui.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import * as v from 'valibot';
|
|
2
|
-
import { BuilderPathsSchema } from './primitives.js';
|
|
3
|
-
const BuilderUIPageObject = v.object({
|
|
4
|
-
type: v.literal('page'),
|
|
5
|
-
label: v.nullable(v.string()),
|
|
6
|
-
paths: BuilderPathsSchema
|
|
7
|
-
});
|
|
8
|
-
const BuilderUIDescribeObject = v.object({
|
|
9
|
-
type: v.literal('describe'),
|
|
10
|
-
label: v.nullable(v.string()),
|
|
11
|
-
paths: BuilderPathsSchema
|
|
12
|
-
});
|
|
13
|
-
export const BuilderUIPageSchema = v.pipe(BuilderUIPageObject, v.readonly());
|
|
14
|
-
export const BuilderUIDescribeSchema = v.pipe(BuilderUIDescribeObject, v.readonly());
|
|
15
|
-
const BuilderUICollectionObject = v.object({
|
|
16
|
-
type: v.literal('collection'),
|
|
17
|
-
name: v.string(),
|
|
18
|
-
label: v.string(),
|
|
19
|
-
items: v.lazy(() => BuilderUIItemsSchema)
|
|
20
|
-
});
|
|
21
|
-
export const BuilderUICollectionSchema = v.pipe(BuilderUICollectionObject, v.readonly());
|
|
22
|
-
export const BuilderUIItemSchema = v.pipe(v.variant('type', [BuilderUIPageObject, BuilderUIDescribeObject, BuilderUICollectionObject]), v.readonly());
|
|
23
|
-
export const BuilderUIItemsSchema = v.pipe(v.array(v.variant('type', [BuilderUIPageObject, BuilderUIDescribeObject, BuilderUICollectionObject])), v.readonly());
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { BuilderGeneric } from '../core/index';
|
|
2
|
-
import type { BuilderUIGeneric } from '../ui';
|
|
3
|
-
import type { BuilderSelectTypeSerialised } from './schemas';
|
|
4
|
-
import { Builder, BuilderSelectType } from '../core/index.js';
|
|
5
|
-
export declare const deserialise: {
|
|
6
|
-
builder: typeof deserialiseBuilder;
|
|
7
|
-
select: typeof deserialiseSelect;
|
|
8
|
-
ui: typeof deserialiseUI;
|
|
9
|
-
validate: (data: unknown, options?: import("./validate.js").BuilderSerialisedValidateOptions) => import("./validate.js").BuilderSerialisedValidateResult;
|
|
10
|
-
};
|
|
11
|
-
declare function deserialiseBuilder(data: unknown): Builder;
|
|
12
|
-
declare function deserialiseUI(builder: BuilderGeneric, data: unknown): BuilderUIGeneric;
|
|
13
|
-
declare function deserialiseSelect(data: BuilderSelectTypeSerialised): BuilderSelectType;
|
|
14
|
-
export {};
|