@builder-builder/builder 0.0.27 → 0.0.29

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 (132) hide show
  1. package/dist/bb.js +9 -10
  2. package/dist/client/client.d.ts +2 -1
  3. package/dist/client/client.js +4 -1
  4. package/dist/client/public.d.ts +2 -2
  5. package/dist/client/public.js +1 -1
  6. package/dist/client/schema.d.ts +126 -45
  7. package/dist/client/schema.js +6 -1
  8. package/dist/components/BuilderOption.svelte.d.ts +12 -12
  9. package/dist/components/BuilderOptionValueBoolean.svelte.d.ts +20 -0
  10. package/dist/components/BuilderOptionValueNumber.svelte.d.ts +21 -0
  11. package/dist/components/BuilderOptionValueSelect.svelte.d.ts +21 -0
  12. package/dist/components/BuilderOptionValueString.svelte.d.ts +21 -0
  13. package/dist/components/BuilderRender.svelte.d.ts +2 -2
  14. package/dist/components/index.d.ts +8 -8
  15. package/dist/components/index.js +4376 -4258
  16. package/dist/components/index.min.js +3 -0
  17. package/dist/entities/collection/collection.d.ts +191 -401
  18. package/dist/entities/collection/collection.js +7 -4
  19. package/dist/entities/collection/{when.d.ts → condition.d.ts} +4 -5
  20. package/dist/entities/collection/condition.js +2 -0
  21. package/dist/entities/collection/config.d.ts +62 -80
  22. package/dist/entities/collection/index.d.ts +4 -4
  23. package/dist/entities/collection/index.js +2 -2
  24. package/dist/entities/component/component.d.ts +71 -83
  25. package/dist/entities/component/component.js +4 -4
  26. package/dist/entities/component/condition.d.ts +10 -0
  27. package/dist/entities/component/{when.js → condition.js} +3 -9
  28. package/dist/entities/component/config.d.ts +33 -33
  29. package/dist/entities/component/config.js +18 -16
  30. package/dist/entities/component/detail.d.ts +61 -0
  31. package/dist/entities/component/detail.js +71 -0
  32. package/dist/entities/component/index.d.ts +6 -6
  33. package/dist/entities/component/index.js +3 -3
  34. package/dist/entities/{when.d.ts → condition.d.ts} +23 -36
  35. package/dist/entities/{when.js → condition.js} +20 -25
  36. package/dist/entities/expectation.d.ts +135 -3
  37. package/dist/entities/expectation.js +6 -2
  38. package/dist/entities/index.d.ts +9 -9
  39. package/dist/entities/index.js +4 -4
  40. package/dist/entities/kind.d.ts +4 -4
  41. package/dist/entities/kind.js +24 -25
  42. package/dist/entities/model/bind.d.ts +5 -5
  43. package/dist/entities/model/methods.d.ts +18 -27
  44. package/dist/entities/model/methods.js +4 -22
  45. package/dist/entities/model/model.d.ts +3 -1
  46. package/dist/entities/model/model.js +25 -27
  47. package/dist/entities/option/condition.d.ts +9 -0
  48. package/dist/entities/option/condition.js +2 -0
  49. package/dist/entities/option/config.d.ts +47 -72
  50. package/dist/entities/option/config.js +6 -6
  51. package/dist/entities/option/expectation.d.ts +6 -1
  52. package/dist/entities/option/expectation.js +2 -2
  53. package/dist/entities/option/index.d.ts +8 -8
  54. package/dist/entities/option/index.js +4 -4
  55. package/dist/entities/option/option.d.ts +179 -210
  56. package/dist/entities/option/option.js +4 -4
  57. package/dist/entities/option/select.d.ts +16 -43
  58. package/dist/entities/option/select.js +8 -31
  59. package/dist/entities/option/value.d.ts +73 -0
  60. package/dist/entities/option/value.js +99 -0
  61. package/dist/entities/paths.d.ts +2 -2
  62. package/dist/entities/pricing/expression.d.ts +16 -39
  63. package/dist/entities/pricing/expression.js +1 -16
  64. package/dist/entities/pricing/index.d.ts +1 -1
  65. package/dist/entities/pricing/rates.d.ts +1 -1
  66. package/dist/entities/references.d.ts +124 -84
  67. package/dist/entities/serialise.d.ts +175 -109
  68. package/dist/entities/serialise.js +32 -27
  69. package/dist/entities/ui/describe.d.ts +1 -1
  70. package/dist/entities/ui/input.d.ts +2 -2
  71. package/dist/entities/ui/page.d.ts +1 -1
  72. package/dist/entities/ui/pages.d.ts +2 -2
  73. package/dist/entities/validated.d.ts +3 -3
  74. package/dist/environment.d.ts +2 -2
  75. package/dist/errors/errors.d.ts +94 -58
  76. package/dist/errors/errors.js +41 -7
  77. package/dist/errors/exception.d.ts +3 -3
  78. package/dist/errors/index.d.ts +1 -1
  79. package/dist/errors/index.js +1 -1
  80. package/dist/errors/public.d.ts +1 -1
  81. package/dist/index.d.ts +1 -1
  82. package/dist/index.js +1 -1
  83. package/dist/instance.d.ts +53 -9
  84. package/dist/instance.js +6 -2
  85. package/dist/mappers/dependencies.d.ts +3 -0
  86. package/dist/mappers/dependencies.js +45 -0
  87. package/dist/mappers/index.d.ts +2 -2
  88. package/dist/mappers/index.js +2 -1
  89. package/dist/mappers/instance.js +26 -21
  90. package/dist/mappers/price.js +6 -4
  91. package/dist/mappers/resolve.js +23 -22
  92. package/dist/mappers/variants/index.d.ts +1 -2
  93. package/dist/mappers/variants/index.js +1 -2
  94. package/dist/mappers/variants/option-graph.d.ts +1 -2
  95. package/dist/mappers/variants/option-graph.js +4 -18
  96. package/dist/mappers/variants/variants.d.ts +3 -6
  97. package/dist/mappers/variants/variants.js +34 -11
  98. package/dist/primitive.d.ts +3 -0
  99. package/dist/primitive.js +2 -0
  100. package/dist/public.d.ts +20 -20
  101. package/dist/public.js +17 -9
  102. package/dist/validate/builder.d.ts +2 -2
  103. package/dist/validate/builder.js +15 -15
  104. package/dist/validate/expectations.d.ts +2 -2
  105. package/dist/validate/expectations.js +23 -5
  106. package/dist/validate/instance.d.ts +2 -2
  107. package/dist/validate/instance.js +31 -13
  108. package/dist/validate/model.d.ts +4 -4
  109. package/dist/validate/model.js +57 -51
  110. package/dist/validate/paths.d.ts +2 -2
  111. package/dist/validate/paths.js +19 -14
  112. package/dist/validate/pricing.d.ts +4 -4
  113. package/dist/validate/pricing.js +31 -31
  114. package/dist/validate/resolve.d.ts +2 -2
  115. package/dist/validate/resolve.js +27 -31
  116. package/dist/validate/ui.d.ts +4 -4
  117. package/dist/validate/ui.js +38 -38
  118. package/dist/validate/variants.d.ts +3 -3
  119. package/dist/validate/variants.js +32 -31
  120. package/package.json +4 -2
  121. package/dist/components/BuilderOptionSelect.svelte.d.ts +0 -21
  122. package/dist/components/BuilderOptionToggleBoolean.svelte.d.ts +0 -20
  123. package/dist/components/BuilderOptionToggleNumber.svelte.d.ts +0 -21
  124. package/dist/components/BuilderOptionToggleString.svelte.d.ts +0 -21
  125. package/dist/entities/collection/when.js +0 -2
  126. package/dist/entities/component/field.d.ts +0 -59
  127. package/dist/entities/component/field.js +0 -52
  128. package/dist/entities/component/when.d.ts +0 -11
  129. package/dist/entities/option/toggle.d.ts +0 -45
  130. package/dist/entities/option/toggle.js +0 -66
  131. package/dist/entities/option/when.d.ts +0 -10
  132. package/dist/entities/option/when.js +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builder-builder/builder",
3
- "version": "0.0.27",
3
+ "version": "0.0.29",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=24"
@@ -24,6 +24,8 @@
24
24
  ],
25
25
  "svelte": "./dist/public.js",
26
26
  "types": "./dist/public.d.ts",
27
+ "unpkg": "./dist/components/index.min.js",
28
+ "jsdelivr": "./dist/components/index.min.js",
27
29
  "publishConfig": {
28
30
  "access": "public"
29
31
  },
@@ -34,7 +36,7 @@
34
36
  "build": "NODE_ENV=production vite build",
35
37
  "package": "svelte-kit sync && npm run package:lib && npm run package:components",
36
38
  "package:lib": "svelte-package --input src/lib/builder",
37
- "package:components": "vite build --mode components && rm -f dist/components/*.svelte",
39
+ "package:components": "NODE_ENV=production vite build --mode components && rm -f dist/components/*.svelte",
38
40
  "preview": "vite preview",
39
41
  "prepare": "svelte-kit sync && npm run messages || echo ''",
40
42
  "prepublishOnly": "npm run test && npm run package",
@@ -1,21 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { BuilderRenderOption } from '../index.js';
3
- export type BuilderBuilderOptionSelectProps = {
4
- readonly option: BuilderRenderOption;
5
- readonly placeholder?: string;
6
- readonly id?: string;
7
- };
8
- export type BuilderBuilderOptionSelectUpdateEvent = CustomEvent<string | null>;
9
- declare const __propDef: {
10
- props: Record<string, never>;
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {};
15
- };
16
- export type BuilderOptionSelectProps = typeof __propDef.props;
17
- export type BuilderOptionSelectEvents = typeof __propDef.events;
18
- export type BuilderOptionSelectSlots = typeof __propDef.slots;
19
- export default class BuilderOptionSelect extends SvelteComponentTyped<BuilderOptionSelectProps, BuilderOptionSelectEvents, BuilderOptionSelectSlots> {
20
- }
21
- export {};
@@ -1,20 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { BuilderRenderOption } from '../index.js';
3
- export type BuilderBuilderOptionToggleBooleanProps = {
4
- readonly option: BuilderRenderOption;
5
- readonly id?: string;
6
- };
7
- export type BuilderBuilderOptionToggleBooleanUpdateEvent = CustomEvent<boolean>;
8
- declare const __propDef: {
9
- props: Record<string, never>;
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- };
15
- export type BuilderOptionToggleBooleanProps = typeof __propDef.props;
16
- export type BuilderOptionToggleBooleanEvents = typeof __propDef.events;
17
- export type BuilderOptionToggleBooleanSlots = typeof __propDef.slots;
18
- export default class BuilderOptionToggleBoolean extends SvelteComponentTyped<BuilderOptionToggleBooleanProps, BuilderOptionToggleBooleanEvents, BuilderOptionToggleBooleanSlots> {
19
- }
20
- export {};
@@ -1,21 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { BuilderRenderOption } from '../index.js';
3
- export type BuilderBuilderOptionToggleNumberProps = {
4
- readonly option: BuilderRenderOption;
5
- readonly placeholder?: string;
6
- readonly id?: string;
7
- };
8
- export type BuilderBuilderOptionToggleNumberUpdateEvent = CustomEvent<number>;
9
- declare const __propDef: {
10
- props: Record<string, never>;
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {};
15
- };
16
- export type BuilderOptionToggleNumberProps = typeof __propDef.props;
17
- export type BuilderOptionToggleNumberEvents = typeof __propDef.events;
18
- export type BuilderOptionToggleNumberSlots = typeof __propDef.slots;
19
- export default class BuilderOptionToggleNumber extends SvelteComponentTyped<BuilderOptionToggleNumberProps, BuilderOptionToggleNumberEvents, BuilderOptionToggleNumberSlots> {
20
- }
21
- export {};
@@ -1,21 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { BuilderRenderOption } from '../index.js';
3
- export type BuilderBuilderOptionToggleStringProps = {
4
- readonly option: BuilderRenderOption;
5
- readonly placeholder?: string;
6
- readonly id?: string;
7
- };
8
- export type BuilderBuilderOptionToggleStringUpdateEvent = CustomEvent<string>;
9
- declare const __propDef: {
10
- props: Record<string, never>;
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {};
15
- };
16
- export type BuilderOptionToggleStringProps = typeof __propDef.props;
17
- export type BuilderOptionToggleStringEvents = typeof __propDef.events;
18
- export type BuilderOptionToggleStringSlots = typeof __propDef.slots;
19
- export default class BuilderOptionToggleString extends SvelteComponentTyped<BuilderOptionToggleStringProps, BuilderOptionToggleStringEvents, BuilderOptionToggleStringSlots> {
20
- }
21
- export {};
@@ -1,2 +0,0 @@
1
- import { createWhenFactories } from '../when.js';
2
- export const collectionWhen = createWhenFactories();
@@ -1,59 +0,0 @@
1
- import type { BuilderPrimitive } from '../../primitive';
2
- import type { BuilderTags } from '../tags';
3
- import * as v from 'valibot';
4
- export declare const BuilderComponentFieldValueTypeSchema: v.PicklistSchema<["string", "boolean", "number"], undefined>;
5
- export type BuilderComponentFieldValueType = v.InferOutput<typeof BuilderComponentFieldValueTypeSchema>;
6
- export declare class BuilderComponentField<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-field";
10
- readonly name: Name;
11
- readonly valueType: BuilderComponentFieldValueType;
12
- readonly valueSchema: ValueSchema;
13
- readonly isOptional: boolean;
14
- readonly tags?: BuilderTags;
15
- constructor(name: Name, valueType: BuilderComponentFieldValueType, optional?: boolean, tags?: BuilderTags);
16
- optional(): BuilderComponentField<Name, v.NullableSchema<ValueSchema, undefined>>;
17
- tag(...tags: Array<string>): BuilderComponentField<Name, ValueSchema>;
18
- }
19
- export declare function detailString<const Name extends string>(name: Name): BuilderComponentField<Name, v.StringSchema<undefined>>;
20
- export declare function detailNumber<const Name extends string>(name: Name): BuilderComponentField<Name, v.NumberSchema<undefined>>;
21
- export declare function detailBoolean<const Name extends string>(name: Name): BuilderComponentField<Name, v.BooleanSchema<undefined>>;
22
- export declare const BuilderComponentFieldSchema: v.InstanceSchema<typeof BuilderComponentField, undefined>;
23
- export declare const BuilderComponentFieldsSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.InstanceSchema<typeof BuilderComponentField, undefined>, undefined>, v.ReadonlyAction<BuilderComponentField<string, v.GenericSchema<string | number | boolean | null>>[]>]>;
24
- export type BuilderComponentFields = v.InferOutput<typeof BuilderComponentFieldsSchema>;
25
- export declare const BuilderComponentFieldSerialisedSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
26
- readonly type: v.LiteralSchema<"component-field", undefined>;
27
- readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
28
- readonly valueType: v.PicklistSchema<["string", "boolean", "number"], undefined>;
29
- readonly isOptional: v.BooleanSchema<undefined>;
30
- 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>;
31
- }, undefined>, v.ReadonlyAction<{
32
- type: "component-field";
33
- name: string;
34
- valueType: "string" | "number" | "boolean";
35
- isOptional: boolean;
36
- tags?: readonly string[] | undefined;
37
- }>]>;
38
- export type BuilderComponentFieldSerialised = v.InferOutput<typeof BuilderComponentFieldSerialisedSchema>;
39
- export declare const BuilderComponentFieldsSerialisedSchema: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
40
- readonly type: v.LiteralSchema<"component-field", undefined>;
41
- readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
42
- readonly valueType: v.PicklistSchema<["string", "boolean", "number"], undefined>;
43
- readonly isOptional: v.BooleanSchema<undefined>;
44
- 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>;
45
- }, undefined>, v.ReadonlyAction<{
46
- type: "component-field";
47
- name: string;
48
- valueType: "string" | "number" | "boolean";
49
- isOptional: boolean;
50
- tags?: readonly string[] | undefined;
51
- }>]>, undefined>, v.ReadonlyAction<Readonly<{
52
- type: "component-field";
53
- name: string;
54
- valueType: "string" | "number" | "boolean";
55
- isOptional: boolean;
56
- tags?: readonly string[] | undefined;
57
- }>[]>]>;
58
- export type BuilderComponentFieldsSerialised = v.InferOutput<typeof BuilderComponentFieldsSerialisedSchema>;
59
- export declare function detailValueSchema(valueType: BuilderComponentFieldValueType, optional: boolean): v.GenericSchema<BuilderPrimitive>;
@@ -1,52 +0,0 @@
1
- import * as v from 'valibot';
2
- import { BooleanSchema, NameSchema, NumberSchema, StringSchema } from '../../primitive.js';
3
- import { serialisable } from '../serialisable.js';
4
- import { BuilderTagsSchema } from '../tags.js';
5
- export const BuilderComponentFieldValueTypeSchema = v.picklist(['string', 'boolean', 'number']);
6
- export class BuilderComponentField {
7
- type = 'component-field';
8
- name;
9
- valueType;
10
- valueSchema;
11
- isOptional;
12
- tags;
13
- constructor(name, valueType, optional = false, tags) {
14
- this.name = name;
15
- this.valueType = valueType;
16
- this.valueSchema = detailValueSchema(valueType, optional);
17
- this.isOptional = optional;
18
- this.tags = tags;
19
- }
20
- #next(patch) {
21
- return new BuilderComponentField(this.name, this.valueType, patch.optional ?? this.isOptional, patch.tags ?? this.tags);
22
- }
23
- optional() {
24
- return this.#next({ optional: true });
25
- }
26
- tag(...tags) {
27
- return this.#next({ tags });
28
- }
29
- }
30
- export function detailString(name) {
31
- return new BuilderComponentField(name, 'string');
32
- }
33
- export function detailNumber(name) {
34
- return new BuilderComponentField(name, 'number');
35
- }
36
- export function detailBoolean(name) {
37
- return new BuilderComponentField(name, 'boolean');
38
- }
39
- export const BuilderComponentFieldSchema = v.instance(BuilderComponentField);
40
- export const BuilderComponentFieldsSchema = v.pipe(v.array(BuilderComponentFieldSchema), v.readonly());
41
- export const BuilderComponentFieldSerialisedSchema = serialisable(v.object({
42
- type: v.literal('component-field'),
43
- name: NameSchema,
44
- valueType: BuilderComponentFieldValueTypeSchema,
45
- isOptional: BooleanSchema,
46
- tags: v.optional(BuilderTagsSchema)
47
- }));
48
- export const BuilderComponentFieldsSerialisedSchema = v.pipe(v.array(BuilderComponentFieldSerialisedSchema), v.readonly());
49
- export function detailValueSchema(valueType, optional) {
50
- const baseSchema = valueType === 'string' ? StringSchema : valueType === 'boolean' ? BooleanSchema : NumberSchema;
51
- return optional ? v.nullable(baseSchema) : baseSchema;
52
- }
@@ -1,11 +0,0 @@
1
- import type { BuilderPrimitives } from '../../primitive';
2
- import type { Paramable } from '../../references';
3
- import type { BuilderPath } from '../paths';
4
- import type { BuilderEnableConfig, BuilderMatchConfig, BuilderMatchSelectMap, BuilderUnlessConfig, BuilderWhen } from '../when';
5
- import type { BuilderComponentConfig } from './config';
6
- export type BuilderComponentWhen = BuilderWhen<Paramable<BuilderComponentConfig>, Paramable<BuilderPath>, Paramable<Record<string, Paramable<BuilderComponentConfig> | null>>, Paramable<BuilderPath>>;
7
- export declare const componentWhen: {
8
- enable: <const Payload extends Paramable<BuilderComponentConfig>>(payload?: Payload) => BuilderEnableConfig<Payload>;
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: BuilderPrimitives, payload?: Payload) => BuilderUnlessConfig<Payload, UnlessPath>;
11
- };
@@ -1,45 +0,0 @@
1
- import type { BuilderPrimitive } from '../../primitive';
2
- import type { BuilderTags } from '../tags';
3
- import * as v from 'valibot';
4
- export declare const BuilderToggleValueTypeSchema: v.PicklistSchema<["string", "boolean", "number"], undefined>;
5
- export type BuilderToggleValueType = v.InferOutput<typeof BuilderToggleValueTypeSchema>;
6
- export declare class BuilderToggleConfig<const ValueSchema extends v.GenericSchema<BuilderPrimitive> = v.GenericSchema<BuilderPrimitive>> {
7
- #private;
8
- readonly value: v.InferOutput<ValueSchema>;
9
- readonly type: "toggle";
10
- readonly valueType: BuilderToggleValueType;
11
- readonly valueSchema: ValueSchema;
12
- readonly defaultValue: v.InferOutput<ValueSchema>;
13
- readonly isOptional: boolean;
14
- readonly tags?: BuilderTags;
15
- constructor(valueType: BuilderToggleValueType, defaultValue: v.InferOutput<ValueSchema>, optional?: boolean, tags?: BuilderTags);
16
- default(newDefault: v.InferOutput<ValueSchema>): BuilderToggleConfig<ValueSchema>;
17
- optional(): BuilderToggleConfig<v.NullableSchema<ValueSchema, undefined>>;
18
- tag(...tags: Array<string>): BuilderToggleConfig<ValueSchema>;
19
- }
20
- export declare function toggleString(): BuilderToggleConfig<v.StringSchema<undefined>>;
21
- export declare function toggleBoolean(): BuilderToggleConfig<v.BooleanSchema<undefined>>;
22
- export declare function toggleNumber(): BuilderToggleConfig<v.NumberSchema<undefined>>;
23
- export declare const BuilderToggleConfigSchema: v.InstanceSchema<typeof BuilderToggleConfig, undefined>;
24
- export declare const BuilderToggleConfigSerialisedSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
25
- readonly type: v.LiteralSchema<"toggle", undefined>;
26
- readonly valueType: v.PicklistSchema<["string", "boolean", "number"], undefined>;
27
- readonly defaultValue: v.NullableSchema<v.UnionSchema<[v.BooleanSchema<undefined>, v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>;
28
- readonly isOptional: v.BooleanSchema<undefined>;
29
- 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>;
30
- }, undefined>, v.ReadonlyAction<{
31
- type: "toggle";
32
- valueType: "string" | "number" | "boolean";
33
- defaultValue: string | number | boolean | null;
34
- isOptional: boolean;
35
- tags?: readonly string[] | undefined;
36
- }>]>;
37
- export type BuilderToggleConfigSerialised = v.InferOutput<typeof BuilderToggleConfigSerialisedSchema>;
38
- export declare function toggleValueSchema(valueType: BuilderToggleValueType, optional: boolean): v.GenericSchema;
39
- export declare const validateToggle: (input: unknown, references?: import("..").BuilderReferences, errors?: import("../../errors/errors").BuilderErrorsScope) => import("..").ValidationResult<{
40
- readonly type: "toggle";
41
- readonly valueType: "string" | "number" | "boolean";
42
- readonly defaultValue: string | number | boolean | null;
43
- readonly isOptional: boolean;
44
- readonly tags?: readonly string[] | undefined;
45
- }>;
@@ -1,66 +0,0 @@
1
- import * as v from 'valibot';
2
- import { check } from '../../errors/index.js';
3
- import { BooleanSchema, NumberSchema, StringSchema } from '../../primitive.js';
4
- import { createEntityValidator } from '../kind.js';
5
- import { serialisable } from '../serialisable.js';
6
- import { BuilderTagsSchema } from '../tags.js';
7
- export const BuilderToggleValueTypeSchema = v.picklist(['string', 'boolean', 'number']);
8
- export class BuilderToggleConfig {
9
- type = 'toggle';
10
- valueType;
11
- valueSchema;
12
- defaultValue;
13
- isOptional;
14
- tags;
15
- constructor(valueType, defaultValue, optional, tags) {
16
- this.valueType = valueType;
17
- this.valueSchema = toggleValueSchema(valueType, optional || false);
18
- this.defaultValue = defaultValue;
19
- this.isOptional = optional || false;
20
- this.tags = tags;
21
- }
22
- #next(patch) {
23
- return new BuilderToggleConfig(this.valueType, 'defaultValue' in patch
24
- ? patch.defaultValue
25
- : this.defaultValue, patch.optional ?? this.isOptional, patch.tags ?? this.tags);
26
- }
27
- default(newDefault) {
28
- return this.#next({ defaultValue: newDefault });
29
- }
30
- optional() {
31
- return this.#next({ optional: true });
32
- }
33
- tag(...tags) {
34
- return this.#next({ tags });
35
- }
36
- }
37
- export function toggleString() {
38
- return new BuilderToggleConfig('string', '');
39
- }
40
- export function toggleBoolean() {
41
- return new BuilderToggleConfig('boolean', false);
42
- }
43
- export function toggleNumber() {
44
- return new BuilderToggleConfig('number', 0);
45
- }
46
- export const BuilderToggleConfigSchema = v.instance(BuilderToggleConfig);
47
- export const BuilderToggleConfigSerialisedSchema = serialisable(v.object({
48
- type: v.literal('toggle'),
49
- valueType: BuilderToggleValueTypeSchema,
50
- defaultValue: v.nullable(v.union([BooleanSchema, StringSchema, NumberSchema])),
51
- isOptional: BooleanSchema,
52
- tags: v.optional(BuilderTagsSchema)
53
- }));
54
- export function toggleValueSchema(valueType, optional) {
55
- const baseSchema = valueType === 'string' ? StringSchema : valueType === 'boolean' ? BooleanSchema : NumberSchema;
56
- return optional ? v.nullable(baseSchema) : baseSchema;
57
- }
58
- export const validateToggle = createEntityValidator('toggle', BuilderToggleConfigSerialisedSchema, (input, errors) => {
59
- if (input.defaultValue == null) {
60
- return;
61
- }
62
- const valueSchema = toggleValueSchema(input.valueType, input.isOptional);
63
- if (!check.is(valueSchema, input.defaultValue)) {
64
- errors.scope('defaultValue', () => errors.entityInvalidToggleDefault());
65
- }
66
- });
@@ -1,10 +0,0 @@
1
- import type { Paramable } from '../../references';
2
- import type { BuilderPath } from '../paths';
3
- import type { BuilderWhen } from '../when';
4
- import type { BuilderOptionConfig } from './config';
5
- export type BuilderOptionWhen = BuilderWhen<Paramable<BuilderOptionConfig>, Paramable<BuilderPath>, Paramable<Record<string, Paramable<BuilderOptionConfig> | null>>, Paramable<BuilderPath>>;
6
- export declare const optionWhen: {
7
- enable: <const Values extends Paramable<import("./select").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import("./toggle").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>>(values: Values) => import("..").BuilderEnableConfig<Values>;
8
- match: <const MatchPayload extends Paramable<import("./select").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import("./toggle").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>, const MatchPath extends Paramable<BuilderPath>, const SelectMap extends Paramable<import("..").BuilderMatchSelectMap<Paramable<import("./select").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import("./toggle").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>>>>(matchPath: MatchPath, selectMap: SelectMap) => import("..").BuilderMatchConfig<MatchPayload, MatchPath, SelectMap>;
9
- unless: <const Values extends Paramable<import("./select").BuilderSelectConfig<readonly [string, ...string[]], import("valibot").GenericSchema<string | null>> | import("./toggle").BuilderToggleConfig<import("valibot").GenericSchema<string | number | boolean | null>>>, const UnlessPath extends Paramable<BuilderPath>>(unlessPath: UnlessPath, disabledValues: import("../..").BuilderPrimitives, values: Values) => import("..").BuilderUnlessConfig<Values, UnlessPath>;
10
- };
@@ -1,2 +0,0 @@
1
- import { createWhenFactories } from '../when.js';
2
- export const optionWhen = createWhenFactories();