@builder-builder/builder 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/core/builder.d.ts +27 -20
  2. package/dist/core/builder.js +37 -15
  3. package/dist/core/collection/collection.d.ts +9 -12
  4. package/dist/core/collection/collection.js +5 -23
  5. package/dist/core/collection/index.d.ts +1 -1
  6. package/dist/core/collection/method.d.ts +22 -43
  7. package/dist/core/component/component.d.ts +1 -4
  8. package/dist/core/component/graph.js +3 -2
  9. package/dist/core/component/method.d.ts +7 -9
  10. package/dist/core/expectation.d.ts +39 -0
  11. package/dist/{assert → core}/expectation.js +1 -0
  12. package/dist/core/graph.d.ts +2 -1
  13. package/dist/core/graph.js +3 -1
  14. package/dist/core/index.d.ts +8 -5
  15. package/dist/core/index.js +3 -2
  16. package/dist/core/option/graph.js +2 -1
  17. package/dist/core/option/method.d.ts +34 -61
  18. package/dist/core/option/method.js +4 -14
  19. package/dist/core/option/option.d.ts +5 -4
  20. package/dist/core/option/option.js +12 -32
  21. package/dist/core/parameter.d.ts +25 -12
  22. package/dist/core/parameter.js +18 -12
  23. package/dist/core/when/config.d.ts +20 -0
  24. package/dist/core/when/config.js +4 -0
  25. package/dist/core/when/constrain.d.ts +14 -0
  26. package/dist/core/when/index.d.ts +5 -0
  27. package/dist/core/when/index.js +2 -0
  28. package/dist/core/when/nullability.d.ts +18 -0
  29. package/dist/core/when/nullability.js +1 -0
  30. package/dist/core/when/resolve.d.ts +18 -0
  31. package/dist/core/when/resolve.js +22 -0
  32. package/dist/index.d.ts +6 -9
  33. package/dist/index.js +1 -2
  34. package/dist/{config.d.ts → model.d.ts} +1 -1
  35. package/dist/model.js +1 -0
  36. package/dist/paths.d.ts +3 -2
  37. package/dist/resolve/index.d.ts +2 -2
  38. package/dist/resolve/instance.d.ts +2 -2
  39. package/dist/resolve/models.d.ts +1 -1
  40. package/dist/resolve/order.d.ts +5 -4
  41. package/dist/resolve/render.d.ts +4 -4
  42. package/dist/resolve/render.js +49 -60
  43. package/dist/resolve/validate.d.ts +6 -5
  44. package/dist/resolve/validate.js +5 -4
  45. package/dist/schemas/index.d.ts +0 -4
  46. package/dist/schemas/index.js +0 -2
  47. package/dist/serialise/deserialise.js +6 -6
  48. package/dist/serialise/index.d.ts +2 -2
  49. package/dist/serialise/index.js +1 -1
  50. package/dist/{schemas/serialise.d.ts → serialise/schemas.d.ts} +184 -162
  51. package/dist/{schemas/serialise.js → serialise/schemas.js} +24 -25
  52. package/dist/serialise/serialise.d.ts +1 -1
  53. package/dist/serialise/serialise.js +9 -3
  54. package/dist/ui.d.ts +6 -4
  55. package/dist/ui.js +21 -14
  56. package/package.json +1 -1
  57. package/dist/assert/assert.d.ts +0 -28
  58. package/dist/assert/assert.js +0 -28
  59. package/dist/assert/expectation.d.ts +0 -20
  60. package/dist/assert/index.d.ts +0 -3
  61. package/dist/assert/index.js +0 -2
  62. package/dist/schemas/layout.d.ts +0 -52
  63. package/dist/schemas/layout.js +0 -6
  64. /package/dist/{config.js → core/when/constrain.js} +0 -0
@@ -1,14 +1,8 @@
1
1
  import * as v from 'valibot';
2
- import { BuilderParameter } from '../core/parameter.js';
3
- import { BuilderSelectType } from '../core/option/select.js';
4
- import { BuilderToggleType } from '../core/option/toggle.js';
5
- import { BuilderPathSchema, BuilderPathsSchema, BuilderPrimitiveSchema } from './primitives.js';
6
- export const BuilderParameterSchema = v.instance(BuilderParameter);
7
- export const BuilderOptionValuesSchema = v.union([
8
- v.instance(BuilderSelectType),
9
- v.instance(BuilderToggleType)
10
- ]);
11
- export const BuilderOptionValuesMapSchema = v.record(v.string(), v.nullable(BuilderOptionValuesSchema));
2
+ import { BuilderParameterSchema } from '../core/parameter.js';
3
+ import { BuilderOptionValuesMapSchema, BuilderOptionValuesSchema } from '../core/option/option.js';
4
+ import { BuilderPathSchema, BuilderPathsSchema, BuilderPrimitiveSchema } from '../schemas/primitives.js';
5
+ export { BuilderOptionValuesMapSchema, BuilderOptionValuesSchema, BuilderParameterSchema };
12
6
  export const BuilderSelectTypeSerialisedSchema = v.pipe(v.object({
13
7
  type: v.literal('select'),
14
8
  options: v.pipe(v.tupleWithRest([v.string()], v.string()), v.readonly()),
@@ -83,15 +77,6 @@ const BuilderSerialisedCollectionUnlessConfigObject = v.object({
83
77
  min: v.number(),
84
78
  max: v.number()
85
79
  });
86
- export const BuilderCollectionConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionConfigObject, v.readonly());
87
- export const BuilderCollectionEnableConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionEnableConfigObject, v.readonly());
88
- export const BuilderCollectionMatchConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionMatchConfigObject, v.readonly());
89
- export const BuilderCollectionUnlessConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionUnlessConfigObject, v.readonly());
90
- export const BuilderCollectionWhenConfigSerialisedSchema = v.pipe(v.variant('type', [
91
- BuilderSerialisedCollectionEnableConfigObject,
92
- BuilderSerialisedCollectionMatchConfigObject,
93
- BuilderSerialisedCollectionUnlessConfigObject
94
- ]), v.readonly());
95
80
  const BuilderSerialisedCollectionObject = v.object({
96
81
  name: v.string(),
97
82
  builder: lazyBuilder(),
@@ -104,12 +89,6 @@ const BuilderSerialisedCollectionObject = v.object({
104
89
  BuilderSerialisedCollectionUnlessConfigObject
105
90
  ]))
106
91
  });
107
- export const BuilderCollectionSerialisedSchema = v.pipe(BuilderSerialisedCollectionObject, v.readonly());
108
- export const BuilderSerialisedSchema = v.pipe(v.object({
109
- options: v.pipe(v.array(BuilderOptionSerialisedSchema), v.readonly()),
110
- components: v.pipe(v.array(BuilderComponentSerialisedSchema), v.readonly()),
111
- collections: v.pipe(v.array(BuilderSerialisedCollectionObject), v.readonly())
112
- }), v.readonly());
113
92
  const BuilderSerialisedUIPageObject = v.object({
114
93
  type: v.literal('page'),
115
94
  label: v.nullable(v.string()),
@@ -127,6 +106,26 @@ const BuilderSerialisedUICollectionObject = v.object({
127
106
  label: v.string(),
128
107
  items: lazySerialisedUIItems()
129
108
  });
109
+ export const BuilderCollectionConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionConfigObject, v.readonly());
110
+ export const BuilderCollectionEnableConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionEnableConfigObject, v.readonly());
111
+ export const BuilderCollectionMatchConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionMatchConfigObject, v.readonly());
112
+ export const BuilderCollectionUnlessConfigSerialisedSchema = v.pipe(BuilderSerialisedCollectionUnlessConfigObject, v.readonly());
113
+ export const BuilderCollectionWhenConfigSerialisedSchema = v.pipe(v.variant('type', [
114
+ BuilderSerialisedCollectionEnableConfigObject,
115
+ BuilderSerialisedCollectionMatchConfigObject,
116
+ BuilderSerialisedCollectionUnlessConfigObject
117
+ ]), v.readonly());
118
+ export const BuilderCollectionSerialisedSchema = v.pipe(BuilderSerialisedCollectionObject, v.readonly());
119
+ export const BuilderExpectationSerialisedSchema = v.pipe(v.object({
120
+ name: v.string(),
121
+ kind: v.picklist(['option', 'component'])
122
+ }), v.readonly());
123
+ export const BuilderSerialisedSchema = v.pipe(v.object({
124
+ options: v.pipe(v.array(BuilderOptionSerialisedSchema), v.readonly()),
125
+ components: v.pipe(v.array(BuilderComponentSerialisedSchema), v.readonly()),
126
+ collections: v.pipe(v.array(BuilderSerialisedCollectionObject), v.readonly()),
127
+ expectations: v.pipe(v.array(BuilderExpectationSerialisedSchema), v.readonly())
128
+ }), v.readonly());
130
129
  export const BuilderUIPageSerialisedSchema = v.pipe(BuilderSerialisedUIPageObject, v.readonly());
131
130
  export const BuilderUIDescribeSerialisedSchema = v.pipe(BuilderSerialisedUIDescribeObject, v.readonly());
132
131
  export const BuilderUICollectionSerialisedSchema = v.pipe(BuilderSerialisedUICollectionObject, v.readonly());
@@ -1,6 +1,6 @@
1
1
  import type { BuilderGeneric } from '../core/index';
2
+ import type { BuilderSerialised, BuilderUISerialised } from './schemas';
2
3
  import type { BuilderUIGeneric } from '../ui';
3
- import type { BuilderSerialised, BuilderUISerialised } from '../schemas/index';
4
4
  export declare const serialise: {
5
5
  builder: typeof serialiseBuilder;
6
6
  ui: typeof serialiseUI;
@@ -1,6 +1,5 @@
1
1
  import * as v from 'valibot';
2
- import { BuilderCollection, BuilderComponent, BuilderOption, BuilderParameter, BuilderSelectType } from '../core/index.js';
3
- import { BuilderParameterSchema } from '../schemas/index.js';
2
+ import { BuilderCollection, BuilderComponent, BuilderOption, BuilderParameter, BuilderParameterSchema, BuilderSelectType } from '../core/index.js';
4
3
  export const serialise = {
5
4
  builder: serialiseBuilder,
6
5
  ui: serialiseUI
@@ -9,7 +8,8 @@ function serialiseBuilder(builder) {
9
8
  return {
10
9
  options: builder.options.map(serialiseOption),
11
10
  components: builder.components.map(serialiseComponent),
12
- collections: builder.collections.map(serialiseCollection)
11
+ collections: builder.collections.map(serialiseCollection),
12
+ expectations: builder.expectations.map(serialiseExpectation)
13
13
  };
14
14
  }
15
15
  function serialiseUI(input) {
@@ -30,6 +30,12 @@ function serialiseComponent(component) {
30
30
  dependencies: component.dependencies
31
31
  };
32
32
  }
33
+ function serialiseExpectation(expectation) {
34
+ return {
35
+ name: expectation.name,
36
+ kind: expectation.kind
37
+ };
38
+ }
33
39
  function serialiseCollection(collection) {
34
40
  return {
35
41
  name: collection.name,
package/dist/ui.d.ts CHANGED
@@ -1,16 +1,18 @@
1
1
  import type { BuilderModelPaths } from './paths';
2
2
  import type { BuilderCollectionNamesOf, BuilderCollectionOf, BuilderGeneric } from './core/index';
3
+ import type { BuilderExpectationEntries, BuilderExpectations, BuilderModelAsserted } from './core/expectation';
3
4
  import type { BuilderUIItems } from './schemas/index';
4
5
  export type BuilderUIGeneric = BuilderUI<BuilderGeneric>;
5
6
  export type BuilderUIFactory<Builder extends BuilderGeneric = BuilderGeneric> = (ui: BuilderUI<Builder>) => BuilderUIGeneric;
6
- export type BuilderUIPart<Builder extends BuilderGeneric = BuilderGeneric> = BuilderUIGeneric | BuilderUIFactory<Builder>;
7
- export type BuilderUIParts<Builder extends BuilderGeneric = BuilderGeneric> = ReadonlyArray<BuilderUIPart<Builder>>;
7
+ export type BuilderUIs = ReadonlyArray<BuilderUIGeneric>;
8
8
  export declare class BuilderUI<Builder extends BuilderGeneric = BuilderGeneric> {
9
9
  readonly builder: Builder;
10
10
  readonly items: BuilderUIItems;
11
- constructor(builder: Builder, items?: BuilderUIItems);
11
+ readonly expectations: BuilderExpectationEntries;
12
+ constructor(builder: Builder, items?: BuilderUIItems, expectations?: BuilderExpectationEntries);
13
+ expect<const Expectations extends BuilderExpectations>(...expectations: Expectations): BuilderUI<BuilderModelAsserted<Builder, Expectations>>;
12
14
  page(label: string | null, paths: BuilderModelPaths<Builder>): BuilderUI<Builder>;
13
15
  describe(label: string | null, paths: BuilderModelPaths<Builder>): BuilderUI<Builder>;
14
16
  collection<const Name extends BuilderCollectionNamesOf<Builder>>(name: Name, label: string, factory: BuilderUIFactory<BuilderCollectionOf<Builder, Name>['builder']>): BuilderUI<Builder>;
15
17
  }
16
- export declare function ui<const Builder extends BuilderGeneric>(builder: Builder, ...parts: BuilderUIParts<Builder>): BuilderUI<Builder>;
18
+ export declare function ui<const Builder extends BuilderGeneric>(builder: Builder, ...uis: BuilderUIs): BuilderUI<Builder>;
package/dist/ui.js CHANGED
@@ -1,35 +1,42 @@
1
1
  import * as v from 'valibot';
2
+ import { BuilderExpectation } from './core/expectation.js';
2
3
  import { check } from './check.js';
3
4
  export class BuilderUI {
4
5
  builder;
5
6
  items;
6
- constructor(builder, items = []) {
7
+ expectations;
8
+ constructor(builder, items = [], expectations = []) {
7
9
  this.builder = builder;
8
10
  this.items = items;
11
+ this.expectations = expectations;
12
+ }
13
+ expect(...expectations) {
14
+ return new BuilderUI(
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- type narrowing cast, validated at merge time
16
+ this.builder, this.items, [...this.expectations, ...expectations]);
9
17
  }
10
18
  page(label, paths) {
11
- return new BuilderUI(this.builder, [...this.items, { type: 'page', label, paths }]);
19
+ return new BuilderUI(this.builder, [...this.items, { type: 'page', label, paths }], this.expectations);
12
20
  }
13
21
  describe(label, paths) {
14
- return new BuilderUI(this.builder, [...this.items, { type: 'describe', label, paths }]);
22
+ return new BuilderUI(this.builder, [...this.items, { type: 'describe', label, paths }], this.expectations);
15
23
  }
16
24
  collection(name, label, factory) {
17
25
  const foundCollection = this.builder.collections.find((entry) => entry.name === name);
18
26
  check.truthy(foundCollection, `Collection '${name}' not found! ❌`);
19
27
  const templateUI = new BuilderUI(foundCollection.builder);
20
28
  const result = factory(templateUI);
21
- return new BuilderUI(this.builder, [
22
- ...this.items,
23
- { type: 'collection', name, label, items: result.items }
24
- ]);
29
+ return new BuilderUI(this.builder, [...this.items, { type: 'collection', name, label, items: result.items }], this.expectations);
25
30
  }
26
31
  }
27
- export function ui(builder, ...parts) {
28
- const base = new BuilderUI(builder);
29
- return parts.reduce((accumulated, part) => {
30
- if (v.is(v.instance(BuilderUI), part)) {
31
- return new BuilderUI(accumulated.builder, [...accumulated.items, ...part.items]);
32
+ export function ui(builder, ...uis) {
33
+ const merged = uis.reduce((accumulated, ui) => {
34
+ return new BuilderUI(accumulated.builder, [...accumulated.items, ...ui.items], [...accumulated.expectations, ...ui.expectations]);
35
+ }, new BuilderUI(builder));
36
+ merged.expectations.forEach((expectation) => {
37
+ if (v.is(v.instance(BuilderExpectation), expectation) && expectation.kind === 'option') {
38
+ expectation.validate(merged.builder.options);
32
39
  }
33
- return new BuilderUI(accumulated.builder, part(accumulated).items);
34
- }, base);
40
+ });
41
+ return merged;
35
42
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builder-builder/builder",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1,28 +0,0 @@
1
- import type { BuilderStateMerge, BuilderGeneric, BuilderStateOf } from '../core/index';
2
- import type { Prettify } from '../prettify';
3
- import type { BuilderUI } from '../ui';
4
- import type { BuilderExpectations } from './expectation';
5
- import { BuilderComponent, Builder } from '../core/index.js';
6
- import { BuilderExpectation } from './expectation.js';
7
- export type BuilderModelAsserted<BuilderInput extends BuilderGeneric, Expectations extends BuilderExpectations> = Builder<BuilderStateMerge<BuilderStateOf<BuilderInput>, {
8
- model: ModelAssert<BuilderInput, Expectations>;
9
- components: ComponentAssert<BuilderInput, Expectations>;
10
- }>>;
11
- export type BuilderUIModelAsserted<Builder extends BuilderGeneric, Expectations extends BuilderExpectations> = BuilderUI<BuilderModelAsserted<Builder, Expectations>>;
12
- declare function assertBuilder<const Builder extends BuilderGeneric, const Expectations extends BuilderExpectations>(builder: Builder, ...expectations: Expectations): BuilderModelAsserted<Builder, Expectations>;
13
- declare function assertUI<const Builder extends BuilderGeneric, const Expectations extends BuilderExpectations>(ui: BuilderUI<Builder>, ...expectations: Expectations): BuilderUIModelAsserted<Builder, Expectations>;
14
- export declare const assert: {
15
- builder: typeof assertBuilder;
16
- ui: typeof assertUI;
17
- };
18
- type ModelAssert<BuilderInput extends BuilderGeneric, Items extends BuilderExpectations, Current extends BuilderStateOf<BuilderInput> = BuilderStateOf<BuilderInput>, Asserted extends ExpectedModel<Items> = ExpectedModel<Items>> = unknown extends Current['model'] ? Prettify<Asserted> : Prettify<Current['model'] & Asserted>;
19
- type ComponentAssert<BuilderInput extends BuilderGeneric, Items extends BuilderExpectations, Current extends BuilderStateOf<BuilderInput> = BuilderStateOf<BuilderInput>, Asserted extends ExpectedComponents<Items> = ExpectedComponents<Items>> = Current['components'] extends [] ? ExpectedComponents<Items> : number extends Asserted['length'] ? Asserted : [...Current['components'], ...Asserted];
20
- type ExpectedModel<Items extends ReadonlyArray<BuilderExpectation>> = Items extends readonly [
21
- infer Head,
22
- ...infer Tail extends ReadonlyArray<BuilderExpectation>
23
- ] ? (Head extends BuilderExpectation<infer Name, infer Value> ? [Value] extends [never] ? unknown : Record<Name, Value> : unknown) & ExpectedModel<Tail> : unknown;
24
- type ExpectedComponents<Items extends ReadonlyArray<BuilderExpectation>> = Items extends readonly [
25
- infer Head,
26
- ...infer Tail extends ReadonlyArray<BuilderExpectation>
27
- ] ? Head extends BuilderExpectation<infer Name, Array<any>> ? [BuilderComponent<Name>, ...ExpectedComponents<Tail>] : ExpectedComponents<Tail> : [];
28
- export {};
@@ -1,28 +0,0 @@
1
- import * as v from 'valibot';
2
- import { BuilderComponent, Builder } from '../core/index.js';
3
- import { BuilderExpectation } from './expectation.js';
4
- function assertBuilder(builder, ...expectations) {
5
- expectations.forEach((expectation) => {
6
- if (v.is(v.instance(BuilderExpectation), expectation)) {
7
- if (expectation.kind === 'option') {
8
- expectation.validate(builder.options);
9
- }
10
- else if (expectation.kind === 'component') {
11
- expectation.validate(builder.components);
12
- }
13
- }
14
- });
15
- return builder;
16
- }
17
- function assertUI(ui, ...expectations) {
18
- expectations.forEach((expectation) => {
19
- if (v.is(v.instance(BuilderExpectation), expectation) && expectation.kind === 'option') {
20
- expectation.validate(ui.builder.options);
21
- }
22
- });
23
- return ui;
24
- }
25
- export const assert = {
26
- builder: assertBuilder,
27
- ui: assertUI
28
- };
@@ -1,20 +0,0 @@
1
- import type { BuilderComponentEntries, BuilderOptionEntries } from '../core/index';
2
- export type BuilderExpectationKind = 'option' | 'component';
3
- export type BuilderExpectationEntries = BuilderOptionEntries | BuilderComponentEntries;
4
- export declare class BuilderExpectation<Name extends string = string, Value = unknown> {
5
- readonly name: Name;
6
- readonly kind: BuilderExpectationKind;
7
- constructor(name: Name, kind: BuilderExpectationKind);
8
- optional(): BuilderExpectation<Name, Value | null>;
9
- validate(entries: BuilderExpectationEntries): void;
10
- }
11
- export type BuilderExpectations = readonly [
12
- BuilderExpectation,
13
- ...ReadonlyArray<BuilderExpectation>
14
- ];
15
- export declare const option: {
16
- expect: <const Name extends string>(name: Name) => BuilderExpectation<Name, string>;
17
- };
18
- export declare const component: {
19
- expect: <const Name extends string>(name: Name) => BuilderExpectation<Name, never>;
20
- };
@@ -1,3 +0,0 @@
1
- export type { BuilderExpectations } from './expectation';
2
- export { assert } from './assert.js';
3
- export { BuilderExpectation, component, option } from './expectation.js';
@@ -1,2 +0,0 @@
1
- export { assert } from './assert.js';
2
- export { BuilderExpectation, component, option } from './expectation.js';
@@ -1,52 +0,0 @@
1
- import * as v from 'valibot';
2
- export declare const BuilderLayoutOptionSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
3
- readonly path: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
4
- }, undefined>, v.ReadonlyAction<{
5
- readonly path: readonly (string | number)[];
6
- }>]>;
7
- export type BuilderLayoutOption = v.InferOutput<typeof BuilderLayoutOptionSchema>;
8
- export declare const BuilderLayoutOptionsSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
9
- readonly path: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
10
- }, undefined>, v.ReadonlyAction<{
11
- readonly path: readonly (string | number)[];
12
- }>]>, undefined>, v.ReadonlyAction<Readonly<{
13
- readonly path: readonly (string | number)[];
14
- }>[]>]>;
15
- export type BuilderLayoutOptions = v.InferOutput<typeof BuilderLayoutOptionsSchema>;
16
- export declare const BuilderLayoutPageSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
17
- readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
18
- readonly options: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
19
- readonly path: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
20
- }, undefined>, v.ReadonlyAction<{
21
- readonly path: readonly (string | number)[];
22
- }>]>, undefined>, v.ReadonlyAction<Readonly<{
23
- readonly path: readonly (string | number)[];
24
- }>[]>]>;
25
- }, undefined>, v.ReadonlyAction<{
26
- label: string | null;
27
- readonly options: readonly Readonly<{
28
- readonly path: readonly (string | number)[];
29
- }>[];
30
- }>]>;
31
- export type BuilderLayoutPage = v.InferOutput<typeof BuilderLayoutPageSchema>;
32
- export declare const BuilderLayoutSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
33
- readonly label: v.NullableSchema<v.StringSchema<undefined>, undefined>;
34
- readonly options: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
35
- readonly path: v.SchemaWithPipe<readonly [v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.ReadonlyAction<(string | number)[]>]>;
36
- }, undefined>, v.ReadonlyAction<{
37
- readonly path: readonly (string | number)[];
38
- }>]>, undefined>, v.ReadonlyAction<Readonly<{
39
- readonly path: readonly (string | number)[];
40
- }>[]>]>;
41
- }, undefined>, v.ReadonlyAction<{
42
- label: string | null;
43
- readonly options: readonly Readonly<{
44
- readonly path: readonly (string | number)[];
45
- }>[];
46
- }>]>, undefined>, v.ReadonlyAction<Readonly<{
47
- label: string | null;
48
- readonly options: readonly Readonly<{
49
- readonly path: readonly (string | number)[];
50
- }>[];
51
- }>[]>]>;
52
- export type BuilderLayout = v.InferOutput<typeof BuilderLayoutSchema>;
@@ -1,6 +0,0 @@
1
- import * as v from 'valibot';
2
- import { BuilderPathSchema } from './primitives.js';
3
- export const BuilderLayoutOptionSchema = v.pipe(v.object({ path: BuilderPathSchema }), v.readonly());
4
- export const BuilderLayoutOptionsSchema = v.pipe(v.array(BuilderLayoutOptionSchema), v.readonly());
5
- export const BuilderLayoutPageSchema = v.pipe(v.object({ label: v.nullable(v.string()), options: BuilderLayoutOptionsSchema }), v.readonly());
6
- export const BuilderLayoutSchema = v.pipe(v.array(BuilderLayoutPageSchema), v.readonly());
File without changes