@builder-builder/builder 0.0.27 → 0.0.28
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/bb.js +4 -4
- package/dist/client/client.d.ts +2 -1
- package/dist/client/client.js +4 -1
- package/dist/client/public.d.ts +2 -2
- package/dist/client/public.js +1 -1
- package/dist/client/schema.d.ts +79 -18
- package/dist/client/schema.js +6 -1
- package/dist/components/BuilderRender.svelte.d.ts +2 -2
- package/dist/components/index.js +4377 -4303
- package/dist/components/index.min.js +3 -0
- package/dist/entities/collection/collection.d.ts +66 -66
- package/dist/entities/collection/config.d.ts +17 -17
- package/dist/entities/collection/when.d.ts +1 -1
- package/dist/entities/component/component.d.ts +64 -64
- package/dist/entities/component/config.d.ts +33 -33
- package/dist/entities/component/config.js +18 -16
- package/dist/entities/component/detail.d.ts +61 -0
- package/dist/entities/component/detail.js +71 -0
- package/dist/entities/component/index.d.ts +2 -2
- package/dist/entities/component/index.js +1 -1
- package/dist/entities/component/when.d.ts +2 -2
- package/dist/entities/expectation.d.ts +1 -1
- package/dist/entities/index.d.ts +4 -4
- package/dist/entities/index.js +1 -1
- package/dist/entities/kind.d.ts +3 -3
- package/dist/entities/kind.js +20 -20
- package/dist/entities/model/methods.d.ts +1 -1
- package/dist/entities/option/config.d.ts +7 -7
- package/dist/entities/option/config.js +1 -1
- package/dist/entities/option/index.d.ts +4 -4
- package/dist/entities/option/index.js +2 -2
- package/dist/entities/option/option.d.ts +22 -22
- package/dist/entities/option/select.d.ts +1 -1
- package/dist/entities/option/toggle.d.ts +9 -9
- package/dist/entities/option/toggle.js +15 -10
- package/dist/entities/option/when.d.ts +1 -1
- package/dist/entities/paths.d.ts +2 -2
- package/dist/entities/pricing/expression.d.ts +16 -39
- package/dist/entities/pricing/expression.js +1 -16
- package/dist/entities/pricing/index.d.ts +1 -1
- package/dist/entities/pricing/rates.d.ts +1 -1
- package/dist/entities/references.d.ts +24 -24
- package/dist/entities/serialise.d.ts +31 -32
- package/dist/entities/serialise.js +7 -7
- package/dist/entities/ui/describe.d.ts +1 -1
- package/dist/entities/ui/input.d.ts +1 -1
- package/dist/entities/ui/page.d.ts +1 -1
- package/dist/entities/ui/pages.d.ts +2 -2
- package/dist/entities/validated.d.ts +2 -2
- package/dist/entities/when.d.ts +5 -5
- package/dist/environment.d.ts +2 -2
- package/dist/errors/errors.d.ts +86 -55
- package/dist/errors/errors.js +36 -5
- package/dist/errors/exception.d.ts +3 -3
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/public.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/instance.d.ts +53 -9
- package/dist/instance.js +6 -2
- package/dist/mappers/dependencies.d.ts +3 -0
- package/dist/mappers/dependencies.js +44 -0
- package/dist/mappers/index.d.ts +2 -2
- package/dist/mappers/index.js +2 -1
- package/dist/mappers/instance.js +26 -21
- package/dist/mappers/price.js +6 -4
- package/dist/mappers/variants/index.d.ts +1 -2
- package/dist/mappers/variants/index.js +1 -2
- package/dist/mappers/variants/option-graph.d.ts +1 -2
- package/dist/mappers/variants/option-graph.js +3 -17
- package/dist/mappers/variants/variants.d.ts +3 -6
- package/dist/mappers/variants/variants.js +34 -11
- package/dist/primitive.d.ts +3 -0
- package/dist/primitive.js +2 -0
- package/dist/public.d.ts +8 -8
- package/dist/public.js +1 -1
- package/dist/validate/builder.d.ts +2 -2
- package/dist/validate/builder.js +15 -15
- package/dist/validate/expectations.d.ts +2 -2
- package/dist/validate/expectations.js +3 -3
- package/dist/validate/instance.d.ts +2 -2
- package/dist/validate/instance.js +31 -13
- package/dist/validate/model.d.ts +4 -4
- package/dist/validate/model.js +51 -42
- package/dist/validate/paths.d.ts +2 -2
- package/dist/validate/paths.js +19 -14
- package/dist/validate/pricing.d.ts +4 -4
- package/dist/validate/pricing.js +31 -31
- package/dist/validate/resolve.d.ts +2 -2
- package/dist/validate/resolve.js +18 -18
- package/dist/validate/ui.d.ts +4 -4
- package/dist/validate/ui.js +38 -38
- package/dist/validate/variants.d.ts +3 -3
- package/dist/validate/variants.js +32 -31
- package/package.json +4 -2
- package/dist/entities/component/field.d.ts +0 -59
- package/dist/entities/component/field.js +0 -52
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { BuilderPrimitive } from '../../primitive';
|
|
2
|
+
import type { BuilderTags } from '../tags';
|
|
3
|
+
import * as v from 'valibot';
|
|
4
|
+
export declare const BuilderComponentDetailKindSchema: v.PicklistSchema<["string", "boolean", "number", "price", "image"], undefined>;
|
|
5
|
+
export type BuilderComponentDetailKind = v.InferOutput<typeof BuilderComponentDetailKindSchema>;
|
|
6
|
+
export declare class BuilderComponentDetail<const Name extends string = string, const ValueSchema extends v.GenericSchema<BuilderPrimitive> = v.GenericSchema<BuilderPrimitive>> {
|
|
7
|
+
#private;
|
|
8
|
+
readonly value: v.InferOutput<ValueSchema>;
|
|
9
|
+
readonly type: "component-detail";
|
|
10
|
+
readonly name: Name;
|
|
11
|
+
readonly kind: BuilderComponentDetailKind;
|
|
12
|
+
readonly valueSchema: ValueSchema;
|
|
13
|
+
readonly isOptional: boolean;
|
|
14
|
+
readonly tags?: BuilderTags;
|
|
15
|
+
constructor(name: Name, kind: BuilderComponentDetailKind, optional?: boolean, tags?: BuilderTags);
|
|
16
|
+
optional(): BuilderComponentDetail<Name, v.NullableSchema<ValueSchema, undefined>>;
|
|
17
|
+
tag(...tags: Array<string>): BuilderComponentDetail<Name, ValueSchema>;
|
|
18
|
+
}
|
|
19
|
+
export declare function detailString<const Name extends string>(name: Name): BuilderComponentDetail<Name, v.StringSchema<undefined>>;
|
|
20
|
+
export declare function detailNumber<const Name extends string>(name: Name): BuilderComponentDetail<Name, v.NumberSchema<undefined>>;
|
|
21
|
+
export declare function detailBoolean<const Name extends string>(name: Name): BuilderComponentDetail<Name, v.BooleanSchema<undefined>>;
|
|
22
|
+
export declare function detailPrice<const Name extends string>(name: Name): BuilderComponentDetail<Name, v.NumberSchema<undefined>>;
|
|
23
|
+
export declare function detailImage<const Name extends string>(name: Name): BuilderComponentDetail<Name, v.StringSchema<undefined>>;
|
|
24
|
+
export declare const BuilderComponentDetailSchema: v.InstanceSchema<typeof BuilderComponentDetail, undefined>;
|
|
25
|
+
export declare const BuilderComponentDetailsSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.InstanceSchema<typeof BuilderComponentDetail, undefined>, undefined>, v.ReadonlyAction<BuilderComponentDetail<string, v.GenericSchema<string | number | boolean | null>>[]>]>;
|
|
26
|
+
export type BuilderComponentDetails = v.InferOutput<typeof BuilderComponentDetailsSchema>;
|
|
27
|
+
export declare const BuilderComponentDetailSerialisedSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
28
|
+
readonly type: v.LiteralSchema<"component-detail", undefined>;
|
|
29
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
30
|
+
readonly kind: v.PicklistSchema<["string", "boolean", "number", "price", "image"], undefined>;
|
|
31
|
+
readonly isOptional: v.BooleanSchema<undefined>;
|
|
32
|
+
readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
|
|
33
|
+
}, undefined>, v.ReadonlyAction<{
|
|
34
|
+
type: "component-detail";
|
|
35
|
+
name: string;
|
|
36
|
+
kind: "string" | "number" | "boolean" | "price" | "image";
|
|
37
|
+
isOptional: boolean;
|
|
38
|
+
tags?: readonly string[] | undefined;
|
|
39
|
+
}>]>;
|
|
40
|
+
export type BuilderComponentDetailSerialised = v.InferOutput<typeof BuilderComponentDetailSerialisedSchema>;
|
|
41
|
+
export declare const BuilderComponentDetailsSerialisedSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
42
|
+
readonly type: v.LiteralSchema<"component-detail", undefined>;
|
|
43
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
44
|
+
readonly kind: v.PicklistSchema<["string", "boolean", "number", "price", "image"], undefined>;
|
|
45
|
+
readonly isOptional: v.BooleanSchema<undefined>;
|
|
46
|
+
readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
|
|
47
|
+
}, undefined>, v.ReadonlyAction<{
|
|
48
|
+
type: "component-detail";
|
|
49
|
+
name: string;
|
|
50
|
+
kind: "string" | "number" | "boolean" | "price" | "image";
|
|
51
|
+
isOptional: boolean;
|
|
52
|
+
tags?: readonly string[] | undefined;
|
|
53
|
+
}>]>, undefined>, v.ReadonlyAction<Readonly<{
|
|
54
|
+
type: "component-detail";
|
|
55
|
+
name: string;
|
|
56
|
+
kind: "string" | "number" | "boolean" | "price" | "image";
|
|
57
|
+
isOptional: boolean;
|
|
58
|
+
tags?: readonly string[] | undefined;
|
|
59
|
+
}>[]>]>;
|
|
60
|
+
export type BuilderComponentDetailsSerialised = v.InferOutput<typeof BuilderComponentDetailsSerialisedSchema>;
|
|
61
|
+
export declare function detailValueSchema(kind: BuilderComponentDetailKind, optional: boolean): v.GenericSchema<BuilderPrimitive>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
import { BooleanSchema, NameSchema, NumberSchema, StringSchema, UrlSchema } from '../../primitive.js';
|
|
3
|
+
import { serialisable } from '../serialisable.js';
|
|
4
|
+
import { BuilderTagsSchema } from '../tags.js';
|
|
5
|
+
export const BuilderComponentDetailKindSchema = v.picklist([
|
|
6
|
+
'string',
|
|
7
|
+
'boolean',
|
|
8
|
+
'number',
|
|
9
|
+
'price',
|
|
10
|
+
'image'
|
|
11
|
+
]);
|
|
12
|
+
export class BuilderComponentDetail {
|
|
13
|
+
type = 'component-detail';
|
|
14
|
+
name;
|
|
15
|
+
kind;
|
|
16
|
+
valueSchema;
|
|
17
|
+
isOptional;
|
|
18
|
+
tags;
|
|
19
|
+
constructor(name, kind, optional = false, tags) {
|
|
20
|
+
this.name = name;
|
|
21
|
+
this.kind = kind;
|
|
22
|
+
this.valueSchema = detailValueSchema(kind, optional);
|
|
23
|
+
this.isOptional = optional;
|
|
24
|
+
this.tags = tags;
|
|
25
|
+
}
|
|
26
|
+
#next(patch) {
|
|
27
|
+
return new BuilderComponentDetail(this.name, this.kind, patch.optional ?? this.isOptional, patch.tags ?? this.tags);
|
|
28
|
+
}
|
|
29
|
+
optional() {
|
|
30
|
+
return this.#next({ optional: true });
|
|
31
|
+
}
|
|
32
|
+
tag(...tags) {
|
|
33
|
+
return this.#next({ tags });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function detailString(name) {
|
|
37
|
+
return new BuilderComponentDetail(name, 'string');
|
|
38
|
+
}
|
|
39
|
+
export function detailNumber(name) {
|
|
40
|
+
return new BuilderComponentDetail(name, 'number');
|
|
41
|
+
}
|
|
42
|
+
export function detailBoolean(name) {
|
|
43
|
+
return new BuilderComponentDetail(name, 'boolean');
|
|
44
|
+
}
|
|
45
|
+
export function detailPrice(name) {
|
|
46
|
+
return new BuilderComponentDetail(name, 'price');
|
|
47
|
+
}
|
|
48
|
+
export function detailImage(name) {
|
|
49
|
+
return new BuilderComponentDetail(name, 'image');
|
|
50
|
+
}
|
|
51
|
+
export const BuilderComponentDetailSchema = v.instance(BuilderComponentDetail);
|
|
52
|
+
export const BuilderComponentDetailsSchema = v.pipe(v.array(BuilderComponentDetailSchema), v.readonly());
|
|
53
|
+
export const BuilderComponentDetailSerialisedSchema = serialisable(v.object({
|
|
54
|
+
type: v.literal('component-detail'),
|
|
55
|
+
name: NameSchema,
|
|
56
|
+
kind: BuilderComponentDetailKindSchema,
|
|
57
|
+
isOptional: BooleanSchema,
|
|
58
|
+
tags: v.optional(BuilderTagsSchema)
|
|
59
|
+
}));
|
|
60
|
+
export const BuilderComponentDetailsSerialisedSchema = v.pipe(v.array(BuilderComponentDetailSerialisedSchema), v.readonly());
|
|
61
|
+
export function detailValueSchema(kind, optional) {
|
|
62
|
+
const kindSchemas = {
|
|
63
|
+
string: StringSchema,
|
|
64
|
+
number: NumberSchema,
|
|
65
|
+
boolean: BooleanSchema,
|
|
66
|
+
price: NumberSchema,
|
|
67
|
+
image: UrlSchema
|
|
68
|
+
};
|
|
69
|
+
const baseSchema = kindSchemas[kind];
|
|
70
|
+
return optional ? v.nullable(baseSchema) : baseSchema;
|
|
71
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export type { BuilderComponentPayload, BuilderComponents, BuilderComponentSerialised, BuilderComponentsSerialised, BuilderComponentWhenSerialised } from './component';
|
|
2
2
|
export type { BuilderComponentConfigSerialised, BuilderComponentConfigsSerialised } from './config';
|
|
3
3
|
export type { ComponentAsserted } from './expectation';
|
|
4
|
-
export type {
|
|
4
|
+
export type { BuilderComponentDetailKind, BuilderComponentDetails, BuilderComponentDetailSerialised, BuilderComponentDetailsSerialised } from './detail';
|
|
5
5
|
export type { BuilderComponentWhen } from './when';
|
|
6
6
|
export { BuilderComponent, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentWhenSerialisedSchema, validateComponentSelectMap, validateComponentWhen } from './component.js';
|
|
7
7
|
export { BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema, componentConfig, validateComponentConfig } from './config.js';
|
|
8
8
|
export { componentExpectation } from './expectation.js';
|
|
9
|
-
export {
|
|
9
|
+
export { BuilderComponentDetail, BuilderComponentDetailKindSchema, BuilderComponentDetailSchema, BuilderComponentDetailSerialisedSchema, BuilderComponentDetailsSchema, BuilderComponentDetailsSerialisedSchema, detailBoolean, detailImage, detailNumber, detailPrice, detailString, detailValueSchema } from './detail.js';
|
|
10
10
|
export { componentWhen } from './when.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { BuilderComponent, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentWhenSerialisedSchema, validateComponentSelectMap, validateComponentWhen } from './component.js';
|
|
2
2
|
export { BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema, componentConfig, validateComponentConfig } from './config.js';
|
|
3
3
|
export { componentExpectation } from './expectation.js';
|
|
4
|
-
export {
|
|
4
|
+
export { BuilderComponentDetail, BuilderComponentDetailKindSchema, BuilderComponentDetailSchema, BuilderComponentDetailSerialisedSchema, BuilderComponentDetailsSchema, BuilderComponentDetailsSerialisedSchema, detailBoolean, detailImage, detailNumber, detailPrice, detailString, detailValueSchema } from './detail.js';
|
|
5
5
|
export { componentWhen } from './when.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BuilderPrimitivesNonEmpty } from '../../primitive';
|
|
2
2
|
import type { Paramable } from '../../references';
|
|
3
3
|
import type { BuilderPath } from '../paths';
|
|
4
4
|
import type { BuilderEnableConfig, BuilderMatchConfig, BuilderMatchSelectMap, BuilderUnlessConfig, BuilderWhen } from '../when';
|
|
@@ -7,5 +7,5 @@ export type BuilderComponentWhen = BuilderWhen<Paramable<BuilderComponentConfig>
|
|
|
7
7
|
export declare const componentWhen: {
|
|
8
8
|
enable: <const Payload extends Paramable<BuilderComponentConfig>>(payload?: Payload) => BuilderEnableConfig<Payload>;
|
|
9
9
|
match: <const Payload extends Paramable<BuilderComponentConfig>, const MatchPath extends Paramable<BuilderPath>, const SelectMap extends Paramable<BuilderMatchSelectMap<Paramable<BuilderComponentConfig>>>>(matchPath: MatchPath, selectMap: SelectMap) => BuilderMatchConfig<Payload, MatchPath, SelectMap>;
|
|
10
|
-
unless: <const UnlessPath extends Paramable<BuilderPath>, const Payload extends Paramable<BuilderComponentConfig>>(unlessPath: UnlessPath, disabledValues:
|
|
10
|
+
unless: <const UnlessPath extends Paramable<BuilderPath>, const Payload extends Paramable<BuilderComponentConfig>>(unlessPath: UnlessPath, disabledValues: BuilderPrimitivesNonEmpty, payload?: Payload) => BuilderUnlessConfig<Payload, UnlessPath>;
|
|
11
11
|
};
|
|
@@ -30,7 +30,7 @@ export declare const BuilderExpectationsSerialisedSchema: v.SchemaWithPipe<reado
|
|
|
30
30
|
kind: "option" | "component" | "collection";
|
|
31
31
|
}>[]>]>;
|
|
32
32
|
export type BuilderExpectationsSerialised = v.InferOutput<typeof BuilderExpectationsSerialisedSchema>;
|
|
33
|
-
export declare const validateExpectations: (input: unknown, references?: import("./references.js").BuilderReferences,
|
|
33
|
+
export declare const validateExpectations: (input: unknown, references?: import("./references.js").BuilderReferences, issues?: import("../errors/errors.js").BuilderIssuesScope) => import("./validated.js").ValidationResult<readonly ({
|
|
34
34
|
readonly name: string;
|
|
35
35
|
readonly kind: "option" | "component" | "collection";
|
|
36
36
|
} & import("../validate/brand.js").BuilderValidatedBrand)[]>;
|
package/dist/entities/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export type { BuilderBindings, BuilderBindingsSerialised, BuilderSerialised } from './builder/index';
|
|
2
2
|
export type { BuilderCollectionConfigSerialised, BuilderCollectionConfigsSerialised, BuilderCollectionPayload, BuilderCollections, BuilderCollectionSerialised, BuilderCollectionsSerialised, BuilderCollectionWhen, BuilderCollectionWhenSerialised, CollectionNamesOf, CollectionShape } from './collection/index';
|
|
3
|
-
export type { BuilderComponentConfigSerialised, BuilderComponentConfigsSerialised,
|
|
3
|
+
export type { BuilderComponentConfigSerialised, BuilderComponentConfigsSerialised, BuilderComponentDetailKind, BuilderComponentDetails, BuilderComponentDetailSerialised, BuilderComponentDetailsSerialised, BuilderComponentPayload, BuilderComponents, BuilderComponentSerialised, BuilderComponentsSerialised, BuilderComponentWhen, BuilderComponentWhenSerialised } from './component/index';
|
|
4
4
|
export type { BuilderExpectationKind, BuilderExpectations, BuilderExpectationSerialised, BuilderExpectationsSerialised } from './expectation';
|
|
5
5
|
export type { BuilderEntityKind, BuilderEntitySerialised } from './kind.js';
|
|
6
6
|
export type { BuilderInstanceOf, BuilderModelGeneric, BuilderModels, BuilderModelSerialised, BuilderModelState, BuilderModelStateEmpty, BuilderModelStateOf } from './model/index';
|
|
7
7
|
export { BuilderModel, BuilderModelSchema, BuilderModelSerialisedSchema, model, modelsMerge } from './model/index.js';
|
|
8
|
-
export type { BuilderOptionConfig, BuilderOptionConfigSerialised, BuilderOptionConfigsSerialised, BuilderOptionPayload, BuilderOptions, BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionWhen, BuilderOptionWhenSerialised, BuilderSelectConfigLabels, BuilderSelectConfigSerialised, BuilderSelectConfigValues, BuilderToggleConfigSerialised,
|
|
8
|
+
export type { BuilderOptionConfig, BuilderOptionConfigSerialised, BuilderOptionConfigsSerialised, BuilderOptionPayload, BuilderOptions, BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionWhen, BuilderOptionWhenSerialised, BuilderSelectConfigLabels, BuilderSelectConfigSerialised, BuilderSelectConfigValues, BuilderToggleConfigSerialised, BuilderToggleKind } from './option/index';
|
|
9
9
|
export type { BuilderPath, BuilderPaths } from './paths.js';
|
|
10
|
-
export type { BuilderPricingExpression, BuilderPricingLookupKey, BuilderPricingReduce, BuilderPricingSerialised, BuilderRates } from './pricing/index';
|
|
10
|
+
export type { BuilderPricingExpression, BuilderPricingLookup, BuilderPricingLookupKey, BuilderPricingReduce, BuilderPricingSerialised, BuilderPricingVariants, BuilderRates } from './pricing/index';
|
|
11
11
|
export type { BuilderReference, BuilderReferences } from './references.js';
|
|
12
12
|
export type { BuilderTags } from './tags';
|
|
13
13
|
export type { BuilderDescription, BuilderDescriptionItem, BuilderUIDescribeSerialised, BuilderUIInputMetadata, BuilderUIInputMetadataSerialised, BuilderUIInputs, BuilderUIInputSerialised, BuilderUIInputsSerialised, BuilderUIItem, BuilderUIItems, BuilderUIItemSerialised, BuilderUIItemsSerialised, BuilderUIPageSerialised, BuilderUIPagesSerialised, BuilderUIs, BuilderUISerialised, BuilderUIsSerialised } from './ui/index';
|
|
@@ -15,7 +15,7 @@ export type { BuilderCollectionConfigValidated, BuilderCollectionsValidated, Bui
|
|
|
15
15
|
export type { BuilderEnableConfig, BuilderMatchConfig, BuilderMatchSelectMap, BuilderUnlessConfig, BuilderWhen, BuilderWhenConfig, BuilderWhenSerialised } from './when';
|
|
16
16
|
export { Builder, builder, BuilderSchema, BuilderSerialisedSchema } from './builder/index.js';
|
|
17
17
|
export { BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSchema, BuilderCollectionConfigSerialisedSchema, BuilderCollectionConfigsSerialisedSchema, BuilderCollectionSchema, BuilderCollectionSelectMapSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionsSerialisedSchema, BuilderCollectionWhenSerialisedSchema, collectionConfig, collectionExpectation, collectionWhen, validateCollectionConfig, validateCollectionSelectMap, validateCollectionWhen } from './collection/index.js';
|
|
18
|
-
export { BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema,
|
|
18
|
+
export { BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema, BuilderComponentDetail, BuilderComponentDetailKindSchema, BuilderComponentDetailSchema, BuilderComponentDetailSerialisedSchema, BuilderComponentDetailsSchema, BuilderComponentDetailsSerialisedSchema, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentWhenSerialisedSchema, componentConfig, componentExpectation, componentWhen, detailBoolean, detailImage, detailNumber, detailPrice, detailString, detailValueSchema, validateComponentConfig, validateComponentSelectMap, validateComponentWhen } from './component/index.js';
|
|
19
19
|
export { BuilderExpectation, BuilderExpectationKindSchema, BuilderExpectationSchema, BuilderExpectationSerialisedSchema, BuilderExpectationsSchema, BuilderExpectationsSerialisedSchema, validateExpectations } from './expectation.js';
|
|
20
20
|
export { createEntityValidator } from './kind.js';
|
|
21
21
|
export { BuilderOption, BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, BuilderOptionSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionsSerialisedSchema, BuilderOptionWhenSerialisedSchema, BuilderSelectConfig, BuilderSelectConfigSchema, BuilderSelectConfigSerialisedSchema, BuilderToggleConfig, BuilderToggleConfigSchema, BuilderToggleConfigSerialisedSchema, optionExpectation, optionValueSchema, optionWhen, select, toggleBoolean, toggleNumber, toggleString, validateOptionSelectMap, validateOptionWhen, validateSelect, validateToggle } from './option/index.js';
|
package/dist/entities/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { BuilderModel, BuilderModelSchema, BuilderModelSerialisedSchema, model, modelsMerge } from './model/index.js';
|
|
2
2
|
export { Builder, builder, BuilderSchema, BuilderSerialisedSchema } from './builder/index.js';
|
|
3
3
|
export { BuilderCollection, BuilderCollectionConfig, BuilderCollectionConfigSchema, BuilderCollectionConfigSerialisedSchema, BuilderCollectionConfigsSerialisedSchema, BuilderCollectionSchema, BuilderCollectionSelectMapSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionsSerialisedSchema, BuilderCollectionWhenSerialisedSchema, collectionConfig, collectionExpectation, collectionWhen, validateCollectionConfig, validateCollectionSelectMap, validateCollectionWhen } from './collection/index.js';
|
|
4
|
-
export { BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema,
|
|
4
|
+
export { BuilderComponent, BuilderComponentConfig, BuilderComponentConfigSchema, BuilderComponentConfigSerialisedSchema, BuilderComponentConfigsSerialisedSchema, BuilderComponentDetail, BuilderComponentDetailKindSchema, BuilderComponentDetailSchema, BuilderComponentDetailSerialisedSchema, BuilderComponentDetailsSchema, BuilderComponentDetailsSerialisedSchema, BuilderComponentSchema, BuilderComponentSelectMapSerialisedSchema, BuilderComponentSerialisedSchema, BuilderComponentsSerialisedSchema, BuilderComponentWhenSerialisedSchema, componentConfig, componentExpectation, componentWhen, detailBoolean, detailImage, detailNumber, detailPrice, detailString, detailValueSchema, validateComponentConfig, validateComponentSelectMap, validateComponentWhen } from './component/index.js';
|
|
5
5
|
export { BuilderExpectation, BuilderExpectationKindSchema, BuilderExpectationSchema, BuilderExpectationSerialisedSchema, BuilderExpectationsSchema, BuilderExpectationsSerialisedSchema, validateExpectations } from './expectation.js';
|
|
6
6
|
export { createEntityValidator } from './kind.js';
|
|
7
7
|
export { BuilderOption, BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, BuilderOptionSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionsSerialisedSchema, BuilderOptionWhenSerialisedSchema, BuilderSelectConfig, BuilderSelectConfigSchema, BuilderSelectConfigSerialisedSchema, BuilderToggleConfig, BuilderToggleConfigSchema, BuilderToggleConfigSerialisedSchema, optionExpectation, optionValueSchema, optionWhen, select, toggleBoolean, toggleNumber, toggleString, validateOptionSelectMap, validateOptionWhen, validateSelect, validateToggle } from './option/index.js';
|
package/dist/entities/kind.d.ts
CHANGED
|
@@ -2,11 +2,11 @@ import type { BuilderReferences } from './references';
|
|
|
2
2
|
import type { EntitiesMap } from './serialise';
|
|
3
3
|
import type { BuilderValidatedMap, ValidationResult } from './validated';
|
|
4
4
|
import * as v from 'valibot';
|
|
5
|
-
import {
|
|
5
|
+
import { BuilderIssuesScope } from '../errors/index.js';
|
|
6
6
|
export declare const builderEntityKinds: readonly ["builder", "model", "select", "toggle", "optionSelectMap", "optionWhen", "componentConfig", "componentSelectMap", "componentWhen", "collectionConfig", "collectionSelectMap", "collectionWhen", "ui", "uiDescribe", "uiItems", "uiPage", "uiPages", "uiInput", "pricing", "pricingRates", "expectations", "paths", "path", "number", "string", "boolean"];
|
|
7
7
|
export type BuilderEntityKind = (typeof builderEntityKinds)[number];
|
|
8
8
|
export type BuilderEntitySerialised = {
|
|
9
9
|
[Kind in BuilderEntityKind]: v.InferOutput<EntitiesMap[Kind]['serialised']>;
|
|
10
10
|
}[BuilderEntityKind];
|
|
11
|
-
export type EntityValidate<Kind extends BuilderEntityKind> = (input: BuilderValidatedMap[Kind],
|
|
12
|
-
export declare function createEntityValidator<Kind extends BuilderEntityKind>(kind: Kind, schema: v.GenericSchema, validate?: EntityValidate<Kind>): (input: unknown, references?: BuilderReferences,
|
|
11
|
+
export type EntityValidate<Kind extends BuilderEntityKind> = (input: BuilderValidatedMap[Kind], issues: BuilderIssuesScope, references: BuilderReferences) => void;
|
|
12
|
+
export declare function createEntityValidator<Kind extends BuilderEntityKind>(kind: Kind, schema: v.GenericSchema, validate?: EntityValidate<Kind>): (input: unknown, references?: BuilderReferences, issues?: BuilderIssuesScope) => ValidationResult<BuilderValidatedMap[Kind]>;
|
package/dist/entities/kind.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
|
-
import {
|
|
2
|
+
import { BuilderIssuesScope } from '../errors/index.js';
|
|
3
3
|
export const builderEntityKinds = [
|
|
4
4
|
'builder',
|
|
5
5
|
'model',
|
|
@@ -29,51 +29,51 @@ export const builderEntityKinds = [
|
|
|
29
29
|
'boolean'
|
|
30
30
|
];
|
|
31
31
|
export function createEntityValidator(kind, schema, validate) {
|
|
32
|
-
return (input, references = [],
|
|
32
|
+
return (input, references = [], issues = new BuilderIssuesScope(input)) => {
|
|
33
33
|
const result = v.safeParse(schema, input);
|
|
34
34
|
if (!result.success) {
|
|
35
|
-
if (!toEmptyErrors(result.issues,
|
|
36
|
-
|
|
35
|
+
if (!toEmptyErrors(result.issues, issues)) {
|
|
36
|
+
issues.entityInvalid(kind);
|
|
37
37
|
}
|
|
38
|
-
return [input, errors.
|
|
38
|
+
return [input, issues.errors, issues.warnings];
|
|
39
39
|
}
|
|
40
|
-
validate?.(input,
|
|
41
|
-
return [input, errors.
|
|
40
|
+
validate?.(input, issues, references);
|
|
41
|
+
return [input, issues.errors, issues.warnings];
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
-
function toEmptyErrors(
|
|
45
|
-
if (
|
|
44
|
+
function toEmptyErrors(schemaIssues, issues) {
|
|
45
|
+
if (schemaIssues.length === 0) {
|
|
46
46
|
return false;
|
|
47
47
|
}
|
|
48
|
-
return
|
|
48
|
+
return schemaIssues.map((schemaIssue) => toEmptyError(schemaIssue, issues)).every(Boolean);
|
|
49
49
|
}
|
|
50
|
-
function toEmptyError(
|
|
51
|
-
const [firstSegment] =
|
|
52
|
-
if (firstSegment == null || !hasMinLengthFailure(
|
|
50
|
+
function toEmptyError(schemaIssue, issues) {
|
|
51
|
+
const [firstSegment] = schemaIssue.path ?? [];
|
|
52
|
+
if (firstSegment == null || !hasMinLengthFailure(schemaIssue)) {
|
|
53
53
|
return false;
|
|
54
54
|
}
|
|
55
55
|
const { key } = firstSegment;
|
|
56
56
|
if (key === 'name') {
|
|
57
|
-
|
|
57
|
+
issues.entityEmptyName();
|
|
58
58
|
return true;
|
|
59
59
|
}
|
|
60
60
|
if (key === 'label') {
|
|
61
|
-
|
|
61
|
+
issues.entityEmptyLabel();
|
|
62
62
|
return true;
|
|
63
63
|
}
|
|
64
64
|
if (key === 'id') {
|
|
65
|
-
|
|
65
|
+
issues.entityEmptyId();
|
|
66
66
|
return true;
|
|
67
67
|
}
|
|
68
68
|
if (key === 'inputs') {
|
|
69
|
-
|
|
69
|
+
issues.entityEmptyInputs();
|
|
70
70
|
return true;
|
|
71
71
|
}
|
|
72
72
|
return false;
|
|
73
73
|
}
|
|
74
|
-
function hasMinLengthFailure(
|
|
75
|
-
if (
|
|
74
|
+
function hasMinLengthFailure(schemaIssue) {
|
|
75
|
+
if (schemaIssue.type === 'min_length') {
|
|
76
76
|
return true;
|
|
77
77
|
}
|
|
78
|
-
return
|
|
78
|
+
return schemaIssue.issues?.some(hasMinLengthFailure) ?? false;
|
|
79
79
|
}
|
|
@@ -48,7 +48,7 @@ type CollectionTuple<Item, Length extends number, Result extends ReadonlyArray<I
|
|
|
48
48
|
export declare function builderOptionMethod(): ((name: string, payload: Paramable<BuilderOptionConfig>) => BuilderOption<string, Paramable<import("..").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import("..").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>, Paramable<readonly (readonly (string | number)[])[]>>) & {
|
|
49
49
|
when(paths: Paramable<BuilderPaths>, name: string, payload: Paramable<BuilderOptionWhen>): BuilderOption<string, Paramable<BuilderOptionWhen>, BuilderParameter<string> | import("../..").BuilderRef | readonly (readonly (string | number)[])[]>;
|
|
50
50
|
};
|
|
51
|
-
export declare function builderComponentMethod(): ((name: string, payload?: Paramable<BuilderComponentConfig>) => BuilderComponent<string, Paramable<BuilderComponentConfig<Paramable<readonly import("..").
|
|
51
|
+
export declare function builderComponentMethod(): ((name: string, payload?: Paramable<BuilderComponentConfig>) => BuilderComponent<string, Paramable<BuilderComponentConfig<Paramable<readonly import("..").BuilderComponentDetail<string, import("valibot").GenericSchema<string | number | boolean | null>>[]>>>, Paramable<readonly (readonly (string | number)[])[]>>) & {
|
|
52
52
|
when(paths: Paramable<BuilderPaths>, name: string, payload?: Paramable<BuilderComponentWhen>): BuilderComponent<string, Paramable<BuilderComponentWhen>, BuilderParameter<string> | import("../..").BuilderRef | readonly (readonly (string | number)[])[]>;
|
|
53
53
|
};
|
|
54
54
|
export declare function builderCollectionMethod(): ((name: string, payload: Paramable<BuilderCollectionConfig>) => BuilderCollection<string, Paramable<BuilderCollectionConfig<Paramable<import("./model").BuilderModelGeneric>, Paramable<number>, Paramable<number>>>, Paramable<readonly (readonly (string | number)[])[]>>) & {
|
|
@@ -19,13 +19,13 @@ export declare const BuilderOptionConfigSerialisedSchema: v.SchemaWithPipe<reado
|
|
|
19
19
|
tags?: readonly string[] | undefined;
|
|
20
20
|
}>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
21
21
|
readonly type: v.LiteralSchema<"toggle", undefined>;
|
|
22
|
-
readonly
|
|
22
|
+
readonly kind: v.PicklistSchema<["string", "boolean", "number"], undefined>;
|
|
23
23
|
readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
|
|
24
24
|
readonly isOptional: v.BooleanSchema<undefined>;
|
|
25
25
|
readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
|
|
26
26
|
}, undefined>, v.ReadonlyAction<{
|
|
27
27
|
type: "toggle";
|
|
28
|
-
|
|
28
|
+
kind: "string" | "number" | "boolean";
|
|
29
29
|
defaultValue: string | number | boolean | null;
|
|
30
30
|
isOptional: boolean;
|
|
31
31
|
tags?: readonly string[] | undefined;
|
|
@@ -40,7 +40,7 @@ export declare const BuilderOptionConfigSerialisedSchema: v.SchemaWithPipe<reado
|
|
|
40
40
|
tags?: readonly string[] | undefined;
|
|
41
41
|
}> | Readonly<{
|
|
42
42
|
type: "toggle";
|
|
43
|
-
|
|
43
|
+
kind: "string" | "number" | "boolean";
|
|
44
44
|
defaultValue: string | number | boolean | null;
|
|
45
45
|
isOptional: boolean;
|
|
46
46
|
tags?: readonly string[] | undefined;
|
|
@@ -64,13 +64,13 @@ export declare const BuilderOptionConfigsSerialisedSchema: v.SchemaWithPipe<read
|
|
|
64
64
|
tags?: readonly string[] | undefined;
|
|
65
65
|
}>]>, v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
66
66
|
readonly type: v.LiteralSchema<"toggle", undefined>;
|
|
67
|
-
readonly
|
|
67
|
+
readonly kind: v.PicklistSchema<["string", "boolean", "number"], undefined>;
|
|
68
68
|
readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
|
|
69
69
|
readonly isOptional: v.BooleanSchema<undefined>;
|
|
70
70
|
readonly tags: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.ReadonlyAction<string[]>]>, undefined>;
|
|
71
71
|
}, undefined>, v.ReadonlyAction<{
|
|
72
72
|
type: "toggle";
|
|
73
|
-
|
|
73
|
+
kind: "string" | "number" | "boolean";
|
|
74
74
|
defaultValue: string | number | boolean | null;
|
|
75
75
|
isOptional: boolean;
|
|
76
76
|
tags?: readonly string[] | undefined;
|
|
@@ -85,7 +85,7 @@ export declare const BuilderOptionConfigsSerialisedSchema: v.SchemaWithPipe<read
|
|
|
85
85
|
tags?: readonly string[] | undefined;
|
|
86
86
|
}> | Readonly<{
|
|
87
87
|
type: "toggle";
|
|
88
|
-
|
|
88
|
+
kind: "string" | "number" | "boolean";
|
|
89
89
|
defaultValue: string | number | boolean | null;
|
|
90
90
|
isOptional: boolean;
|
|
91
91
|
tags?: readonly string[] | undefined;
|
|
@@ -100,7 +100,7 @@ export declare const BuilderOptionConfigsSerialisedSchema: v.SchemaWithPipe<read
|
|
|
100
100
|
tags?: readonly string[] | undefined;
|
|
101
101
|
}>> | Readonly<Readonly<{
|
|
102
102
|
type: "toggle";
|
|
103
|
-
|
|
103
|
+
kind: "string" | "number" | "boolean";
|
|
104
104
|
defaultValue: string | number | boolean | null;
|
|
105
105
|
isOptional: boolean;
|
|
106
106
|
tags?: readonly string[] | undefined;
|
|
@@ -11,5 +11,5 @@ export function optionValueSchema(payload) {
|
|
|
11
11
|
if (payload.type === 'select') {
|
|
12
12
|
return selectValueSchema(payload.options, payload.isOptional);
|
|
13
13
|
}
|
|
14
|
-
return toggleValueSchema(payload.
|
|
14
|
+
return toggleValueSchema(payload.kind, payload.isOptional);
|
|
15
15
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
export type { BuilderOptionConfig, BuilderOptionConfigSerialised, BuilderOptionConfigsSerialised } from './config';
|
|
1
2
|
export type { BuilderOptionPayload, BuilderOptions, BuilderOptionSerialised, BuilderOptionsSerialised, BuilderOptionWhenSerialised } from './option';
|
|
2
3
|
export type { BuilderSelectConfigLabels, BuilderSelectConfigSerialised, BuilderSelectConfigValues } from './select';
|
|
3
|
-
export type { BuilderToggleConfigSerialised,
|
|
4
|
-
export type { BuilderOptionConfig, BuilderOptionConfigSerialised, BuilderOptionConfigsSerialised } from './config';
|
|
4
|
+
export type { BuilderToggleConfigSerialised, BuilderToggleKind } from './toggle';
|
|
5
5
|
export type { BuilderOptionWhen } from './when';
|
|
6
|
+
export { BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, optionValueSchema } from './config.js';
|
|
7
|
+
export { optionExpectation } from './expectation.js';
|
|
6
8
|
export { BuilderOption, BuilderOptionSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionsSerialisedSchema, BuilderOptionWhenSerialisedSchema, validateOptionSelectMap, validateOptionWhen } from './option.js';
|
|
7
9
|
export { BuilderSelectConfig, BuilderSelectConfigSchema, BuilderSelectConfigSerialisedSchema, select, validateSelect } from './select.js';
|
|
8
10
|
export { BuilderToggleConfig, BuilderToggleConfigSchema, BuilderToggleConfigSerialisedSchema, toggleBoolean, toggleNumber, toggleString, validateToggle } from './toggle.js';
|
|
9
|
-
export { BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, optionValueSchema } from './config.js';
|
|
10
|
-
export { optionExpectation } from './expectation.js';
|
|
11
11
|
export { optionWhen } from './when.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
export { BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, optionValueSchema } from './config.js';
|
|
2
|
+
export { optionExpectation } from './expectation.js';
|
|
1
3
|
export { BuilderOption, BuilderOptionSchema, BuilderOptionSelectMapSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionsSerialisedSchema, BuilderOptionWhenSerialisedSchema, validateOptionSelectMap, validateOptionWhen } from './option.js';
|
|
2
4
|
export { BuilderSelectConfig, BuilderSelectConfigSchema, BuilderSelectConfigSerialisedSchema, select, validateSelect } from './select.js';
|
|
3
5
|
export { BuilderToggleConfig, BuilderToggleConfigSchema, BuilderToggleConfigSerialisedSchema, toggleBoolean, toggleNumber, toggleString, validateToggle } from './toggle.js';
|
|
4
|
-
export { BuilderOptionConfigSchema, BuilderOptionConfigSerialisedSchema, BuilderOptionConfigsSerialisedSchema, optionValueSchema } from './config.js';
|
|
5
|
-
export { optionExpectation } from './expectation.js';
|
|
6
6
|
export { optionWhen } from './when.js';
|