@builder-builder/builder 0.0.3 → 0.0.4
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/assert/assert.d.ts +6 -6
- package/dist/assert/assert.js +11 -11
- package/dist/assert/expectation.js +2 -2
- package/dist/check.d.ts +8 -0
- package/dist/check.js +18 -0
- package/dist/core/builder.d.ts +5 -3
- package/dist/core/builder.js +45 -21
- package/dist/core/collection/collection.d.ts +2 -2
- package/dist/core/collection/collection.js +4 -4
- package/dist/core/component/graph.d.ts +0 -3
- package/dist/core/component/graph.js +4 -7
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -0
- package/dist/core/option/graph.js +5 -4
- package/dist/core/option/method.d.ts +60 -15
- package/dist/core/option/method.js +18 -4
- package/dist/core/option/option.d.ts +13 -7
- package/dist/core/option/option.js +16 -4
- package/dist/core/option/select.d.ts +6 -1
- package/dist/core/option/select.js +5 -1
- package/dist/core/parameter.d.ts +35 -0
- package/dist/core/parameter.js +25 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/paths.d.ts +2 -2
- package/dist/resolve/instance.d.ts +1 -1
- package/dist/resolve/order.d.ts +2 -2
- package/dist/schemas/index.d.ts +4 -4
- package/dist/schemas/index.js +2 -2
- package/dist/schemas/serialise.d.ts +936 -150
- package/dist/schemas/serialise.js +32 -31
- package/dist/serialise/deserialise.js +11 -6
- package/dist/serialise/serialise.js +12 -1
- package/dist/ui.d.ts +10 -12
- package/dist/ui.js +2 -2
- package/package.json +1 -1
- package/dist/invariant.d.ts +0 -1
- package/dist/invariant.js +0 -6
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
|
+
import { BuilderParameter } from '../parameter.js';
|
|
2
3
|
export class BuilderSelectType {
|
|
3
4
|
options;
|
|
4
5
|
valueSchema;
|
|
@@ -23,8 +24,11 @@ export class BuilderSelectType {
|
|
|
23
24
|
return new BuilderSelectType(this.options, this.valueSchema, this.defaultValue, this.isOptional, optionLabels);
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
function createSelect(values) {
|
|
27
28
|
const [defaultValue] = values;
|
|
28
29
|
const valueSchema = v.union(values.map((value) => v.literal(value)));
|
|
29
30
|
return new BuilderSelectType(values, valueSchema, defaultValue, false);
|
|
30
31
|
}
|
|
32
|
+
export const select = Object.assign(createSelect, {
|
|
33
|
+
parameter: () => new BuilderParameter()
|
|
34
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { BuilderState, BuilderStateMerge } from './builder';
|
|
2
|
+
import type { BuilderOption, BuilderOptionEntries, BuilderOptionValues, BuilderOptionWhenConfig } from './option/index';
|
|
3
|
+
export declare class BuilderParameter {
|
|
4
|
+
readonly parameter: true;
|
|
5
|
+
}
|
|
6
|
+
export declare function bindOptions<Bindings extends Record<string, unknown>>(options: BuilderOptionEntries, bindings: Bindings): BuilderOptionEntries;
|
|
7
|
+
export type ParameterisedOptions<Options extends BuilderOptionEntries> = {
|
|
8
|
+
[K in keyof Options]: Options[K] extends BuilderOption<infer Name, infer Values> ? Values extends BuilderParameter ? BuilderOption<Name, Values> : never : never;
|
|
9
|
+
}[number];
|
|
10
|
+
export type BuilderBindings<State extends BuilderState> = {
|
|
11
|
+
readonly [P in ParameterisedOptions<State['options']> as P['name']]?: BuilderOptionValues | BuilderOptionWhenConfig;
|
|
12
|
+
};
|
|
13
|
+
export type ReplaceOption<Options extends BuilderOptionEntries, BoundNames extends string> = Options extends readonly [
|
|
14
|
+
infer Head extends BuilderOption,
|
|
15
|
+
...infer Tail extends BuilderOptionEntries
|
|
16
|
+
] ? Head extends BuilderOption<infer Name, infer Values> ? Values extends BuilderParameter ? Name extends BoundNames ? [...ReplaceOption<Tail, BoundNames>] : [Head, ...ReplaceOption<Tail, BoundNames>] : [Head, ...ReplaceOption<Tail, BoundNames>] : [Head, ...ReplaceOption<Tail, BoundNames>] : [];
|
|
17
|
+
type BindingModelType<Binding> = Binding extends {
|
|
18
|
+
readonly type: 'match';
|
|
19
|
+
readonly selectMap: infer SelectMap extends Record<string, unknown>;
|
|
20
|
+
} ? NonNullable<SelectMap[keyof SelectMap]> extends {
|
|
21
|
+
readonly value: infer Value;
|
|
22
|
+
} ? Value | null : string | null : Binding extends {
|
|
23
|
+
readonly values: infer Values;
|
|
24
|
+
} ? Values extends {
|
|
25
|
+
readonly value: infer Value;
|
|
26
|
+
} ? Value | null : string | null : Binding extends {
|
|
27
|
+
readonly value: infer Value;
|
|
28
|
+
} ? Value : string;
|
|
29
|
+
export type BuilderBoundState<State extends BuilderState, Bindings extends Record<string, unknown>> = BuilderStateMerge<State, {
|
|
30
|
+
options: ReplaceOption<State['options'], Extract<keyof Bindings, string>>;
|
|
31
|
+
model: Omit<State['model'], keyof Bindings> & {
|
|
32
|
+
[K in Extract<keyof Bindings, string>]: BindingModelType<Bindings[K]>;
|
|
33
|
+
};
|
|
34
|
+
}>;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export class BuilderParameter {
|
|
2
|
+
parameter = true;
|
|
3
|
+
}
|
|
4
|
+
function createOption(option, values, config) {
|
|
5
|
+
const OptionConstructor = option.constructor;
|
|
6
|
+
return new OptionConstructor(option.name, values, option.gatePaths, config);
|
|
7
|
+
}
|
|
8
|
+
function isWhenConfig(binding) {
|
|
9
|
+
return typeof binding === 'object' && binding !== null && 'type' in binding;
|
|
10
|
+
}
|
|
11
|
+
function bindOption(option, binding) {
|
|
12
|
+
if (isWhenConfig(binding)) {
|
|
13
|
+
return createOption(option, binding.values, binding);
|
|
14
|
+
}
|
|
15
|
+
return createOption(option, binding, option.config);
|
|
16
|
+
}
|
|
17
|
+
export function bindOptions(options, bindings) {
|
|
18
|
+
return options.map((option) => {
|
|
19
|
+
const binding = bindings[option.name];
|
|
20
|
+
if (binding === undefined) {
|
|
21
|
+
return option;
|
|
22
|
+
}
|
|
23
|
+
return bindOption(option, binding);
|
|
24
|
+
});
|
|
25
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { BuilderUI, BuilderUIFactory, BuilderUIPart, BuilderUIParts } from
|
|
|
10
10
|
export type { BuilderCollectionSerialised, BuilderCollectionWhenConfigSerialised, BuilderComponentSerialised, BuilderOptionSerialised, BuilderOptionWhenConfigSerialised, BuilderSelectTypeSerialised, BuilderSerialised, BuilderToggleTypeSerialised, BuilderUISerialised, BuilderValuesSerialised } from './serialise/index';
|
|
11
11
|
export { BuilderExpectation } from './assert/expectation.js';
|
|
12
12
|
export { assert, component, option } from './assert/index.js';
|
|
13
|
-
export { builder, BuilderCollection, BuilderComponent, BuilderOption, BuilderSelectType, BuilderToggleType, collection, enable, match, select, toggleBoolean, toggleNumber, toggleString, unless } from './core/index.js';
|
|
13
|
+
export { builder, BuilderCollection, BuilderComponent, BuilderOption, BuilderParameter, BuilderSelectType, BuilderToggleType, collection, enable, match, select, toggleBoolean, toggleNumber, toggleString, unless } from './core/index.js';
|
|
14
14
|
export { instance, models, order, ordinal, render, validate } from './resolve/index.js';
|
|
15
15
|
export { deserialise, serialise } from './serialise/index.js';
|
|
16
16
|
export { ui } from './ui.js';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { BuilderExpectation } from './assert/expectation.js';
|
|
2
2
|
export { assert, component, option } from './assert/index.js';
|
|
3
|
-
export { builder, BuilderCollection, BuilderComponent, BuilderOption, BuilderSelectType, BuilderToggleType, collection, enable, match, select, toggleBoolean, toggleNumber, toggleString, unless } from './core/index.js';
|
|
3
|
+
export { builder, BuilderCollection, BuilderComponent, BuilderOption, BuilderParameter, BuilderSelectType, BuilderToggleType, collection, enable, match, select, toggleBoolean, toggleNumber, toggleString, unless } from './core/index.js';
|
|
4
4
|
export { instance, models, order, ordinal, render, validate } from './resolve/index.js';
|
|
5
5
|
export { deserialise, serialise } from './serialise/index.js';
|
|
6
6
|
export { ui } from './ui.js';
|
package/dist/paths.d.ts
CHANGED
|
@@ -2,9 +2,9 @@ export type { BuilderPath, BuilderPaths } from './schemas/index';
|
|
|
2
2
|
import type { BuilderGeneric, BuilderModelOf } from './core/index';
|
|
3
3
|
import type { BuilderPath, BuilderPrimitive } from './schemas/index';
|
|
4
4
|
export type BuilderValidPath<Model, Depth extends ReadonlyArray<never> = []> = Depth['length'] extends 10 ? never : Model extends BuilderPrimitive | null ? never : Model extends ReadonlyArray<infer Item> ? [number] | [number, ...BuilderValidPath<Item, [...Depth, never]>] : {
|
|
5
|
-
[
|
|
5
|
+
[Key in keyof Model & string]: [Key] | (Model[Key] extends BuilderPrimitive | null ? never : [Key, ...BuilderValidPath<Model[Key], [...Depth, never]>]);
|
|
6
6
|
}[keyof Model & string];
|
|
7
|
-
export type BuilderModelPaths<
|
|
7
|
+
export type BuilderModelPaths<Builder extends BuilderGeneric> = ReadonlyArray<BuilderValidPath<BuilderModelOf<Builder>>>;
|
|
8
8
|
export type BuilderResolvePath<Model, Path extends BuilderPath> = Path extends readonly [
|
|
9
9
|
infer Head extends keyof Model & string
|
|
10
10
|
] ? Model[Head] : Path extends readonly [
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { BuilderGeneric, BuilderModelOf } from '../core/index';
|
|
2
2
|
import type { BuilderModelMutable } from '../config';
|
|
3
|
-
export declare function instance<const
|
|
3
|
+
export declare function instance<const Builder extends BuilderGeneric>(builder: Builder, partial?: BuilderModelMutable): BuilderModelOf<Builder>;
|
package/dist/resolve/order.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { BuilderModel, BuilderVariant } from '../config';
|
|
2
2
|
import type { BuilderCollection, BuilderCollectionEntries, BuilderComponentEntries, BuilderComponentNamesOf, BuilderGeneric, BuilderTupleOf } from '../core/index';
|
|
3
3
|
import type { BuilderDataValidated } from './validate';
|
|
4
|
-
export type BuilderOrder<
|
|
4
|
+
export type BuilderOrder<Builder extends BuilderGeneric> = Builder extends {
|
|
5
5
|
readonly _components: infer Components extends BuilderComponentEntries;
|
|
6
6
|
readonly _collections: infer Collections extends BuilderCollectionEntries;
|
|
7
7
|
} ? Prettify<ComponentsOrder<Components> & CollectionsOrder<Collections>> : Record<string, unknown>;
|
|
8
|
-
export declare function order<const
|
|
8
|
+
export declare function order<const Builder extends BuilderGeneric>(builder: Builder, model: BuilderModel, componentModels: BuilderDataValidated): BuilderOrder<Builder>;
|
|
9
9
|
import type { Prettify } from '../prettify';
|
|
10
10
|
type ComponentsOrder<Components extends BuilderComponentEntries> = {
|
|
11
11
|
readonly [Name in BuilderComponentNamesOf<Components>]: BuilderVariant | null;
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export type { BuilderLayout, BuilderLayoutOption, BuilderLayoutOptions, BuilderL
|
|
|
4
4
|
export { BuilderLayoutOptionSchema, BuilderLayoutOptionsSchema, BuilderLayoutPageSchema, BuilderLayoutSchema } from './layout.js';
|
|
5
5
|
export type { BuilderPath, BuilderPaths, BuilderPrimitive, BuilderPrimitives } from './primitives';
|
|
6
6
|
export { BuilderPathSchema, BuilderPathsSchema, BuilderPrimitiveSchema, BuilderPrimitivesSchema } from './primitives.js';
|
|
7
|
-
export type {
|
|
8
|
-
export { BuilderCollectionConfigSerialisedSchema, BuilderCollectionEnableConfigSerialisedSchema, BuilderCollectionMatchConfigSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionUnlessConfigSerialisedSchema, BuilderCollectionWhenConfigSerialisedSchema, BuilderComponentSerialisedSchema,
|
|
9
|
-
export type {
|
|
10
|
-
export {
|
|
7
|
+
export type { BuilderCollectionConfigSerialised, BuilderCollectionEnableConfigSerialised, BuilderCollectionMatchConfigSerialised, BuilderCollectionSerialised, BuilderCollectionUnlessConfigSerialised, BuilderCollectionWhenConfigSerialised, BuilderComponentSerialised, BuilderOptionEnableConfigSerialised, BuilderOptionMatchConfigSerialised, BuilderOptionSerialised, BuilderOptionUnlessConfigSerialised, BuilderOptionValues, BuilderOptionValuesMap, BuilderOptionWhenConfigSerialised, BuilderSelectTypeSerialised, BuilderSerialised, BuilderToggleTypeSerialised, BuilderUICollectionSerialised, BuilderUIDescribeSerialised, BuilderUIItemSerialised, BuilderUIItemsSerialised, BuilderUIPageSerialised, BuilderUISerialised, BuilderParameterSerialised, BuilderValuesSerialised } from './serialise';
|
|
8
|
+
export { BuilderCollectionConfigSerialisedSchema, BuilderCollectionEnableConfigSerialisedSchema, BuilderCollectionMatchConfigSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionUnlessConfigSerialisedSchema, BuilderCollectionWhenConfigSerialisedSchema, BuilderComponentSerialisedSchema, BuilderOptionEnableConfigSerialisedSchema, BuilderOptionMatchConfigSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionUnlessConfigSerialisedSchema, BuilderOptionValuesMapSchema, BuilderOptionValuesSchema, BuilderOptionWhenConfigSerialisedSchema, BuilderParameterSchema, BuilderSelectTypeSerialisedSchema, BuilderSerialisedSchema, BuilderToggleTypeSerialisedSchema, BuilderUICollectionSerialisedSchema, BuilderUIDescribeSerialisedSchema, BuilderUIItemSerialisedSchema, BuilderUIItemsSerialisedSchema, BuilderUIPageSerialisedSchema, BuilderValuesSerialisedSchema } from './serialise.js';
|
|
9
|
+
export type { BuilderUICollection, BuilderUIDescribe, BuilderUIItem, BuilderUIItems, BuilderUIPage } from './ui';
|
|
10
|
+
export { BuilderUICollectionSchema, BuilderUIDescribeSchema, BuilderUIItemSchema, BuilderUIItemsSchema, BuilderUIPageSchema } from './ui.js';
|
package/dist/schemas/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { BuilderDescriptionItemSchema, BuilderDescriptionSchema } from './description.js';
|
|
2
2
|
export { BuilderLayoutOptionSchema, BuilderLayoutOptionsSchema, BuilderLayoutPageSchema, BuilderLayoutSchema } from './layout.js';
|
|
3
3
|
export { BuilderPathSchema, BuilderPathsSchema, BuilderPrimitiveSchema, BuilderPrimitivesSchema } from './primitives.js';
|
|
4
|
-
export { BuilderCollectionConfigSerialisedSchema, BuilderCollectionEnableConfigSerialisedSchema, BuilderCollectionMatchConfigSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionUnlessConfigSerialisedSchema, BuilderCollectionWhenConfigSerialisedSchema, BuilderComponentSerialisedSchema,
|
|
5
|
-
export {
|
|
4
|
+
export { BuilderCollectionConfigSerialisedSchema, BuilderCollectionEnableConfigSerialisedSchema, BuilderCollectionMatchConfigSerialisedSchema, BuilderCollectionSerialisedSchema, BuilderCollectionUnlessConfigSerialisedSchema, BuilderCollectionWhenConfigSerialisedSchema, BuilderComponentSerialisedSchema, BuilderOptionEnableConfigSerialisedSchema, BuilderOptionMatchConfigSerialisedSchema, BuilderOptionSerialisedSchema, BuilderOptionUnlessConfigSerialisedSchema, BuilderOptionValuesMapSchema, BuilderOptionValuesSchema, BuilderOptionWhenConfigSerialisedSchema, BuilderParameterSchema, BuilderSelectTypeSerialisedSchema, BuilderSerialisedSchema, BuilderToggleTypeSerialisedSchema, BuilderUICollectionSerialisedSchema, BuilderUIDescribeSerialisedSchema, BuilderUIItemSerialisedSchema, BuilderUIItemsSerialisedSchema, BuilderUIPageSerialisedSchema, BuilderValuesSerialisedSchema } from './serialise.js';
|
|
5
|
+
export { BuilderUICollectionSchema, BuilderUIDescribeSchema, BuilderUIItemSchema, BuilderUIItemsSchema, BuilderUIPageSchema } from './ui.js';
|