@builder-builder/builder 0.0.23 → 0.0.25

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 (74) hide show
  1. package/dist/client/client.d.ts +3 -1
  2. package/dist/client/client.js +30 -18
  3. package/dist/client/index.d.ts +1 -4
  4. package/dist/client/index.js +1 -2
  5. package/dist/client/public.d.ts +4 -0
  6. package/dist/client/public.js +2 -0
  7. package/dist/client/schema.d.ts +23 -14
  8. package/dist/client/schema.js +9 -2
  9. package/dist/entities/collection/collection.d.ts +2 -2
  10. package/dist/entities/collection/config.d.ts +1 -1
  11. package/dist/entities/collection/config.js +1 -1
  12. package/dist/entities/component/component.d.ts +2 -2
  13. package/dist/entities/component/config.d.ts +1 -1
  14. package/dist/entities/component/config.js +1 -1
  15. package/dist/entities/expectation.d.ts +1 -1
  16. package/dist/entities/kind.d.ts +3 -3
  17. package/dist/entities/kind.js +3 -3
  18. package/dist/entities/option/option.d.ts +2 -2
  19. package/dist/entities/option/select.d.ts +1 -1
  20. package/dist/entities/option/select.js +7 -5
  21. package/dist/entities/option/toggle.d.ts +1 -1
  22. package/dist/entities/option/toggle.js +1 -1
  23. package/dist/entities/paths.d.ts +2 -2
  24. package/dist/entities/pricing/rates.d.ts +1 -1
  25. package/dist/entities/serialise.d.ts +3 -3
  26. package/dist/entities/ui/describe.d.ts +1 -1
  27. package/dist/entities/ui/describe.js +2 -2
  28. package/dist/entities/ui/input.d.ts +1 -1
  29. package/dist/entities/ui/page.d.ts +1 -1
  30. package/dist/entities/ui/page.js +2 -2
  31. package/dist/entities/ui/pages.d.ts +2 -2
  32. package/dist/entities/ui/pages.js +2 -2
  33. package/dist/errors/check.d.ts +2 -3
  34. package/dist/errors/check.js +5 -10
  35. package/dist/errors/errors.d.ts +231 -158
  36. package/dist/errors/errors.js +143 -173
  37. package/dist/errors/exception.d.ts +6 -4
  38. package/dist/errors/exception.js +11 -66
  39. package/dist/errors/index.d.ts +2 -4
  40. package/dist/errors/index.js +2 -2
  41. package/dist/errors/public.d.ts +2 -0
  42. package/dist/errors/public.js +1 -0
  43. package/dist/index.d.ts +4 -36
  44. package/dist/index.js +4 -19
  45. package/dist/mappers/price.js +1 -1
  46. package/dist/mappers/render/render.js +7 -7
  47. package/dist/mappers/resolve.js +5 -5
  48. package/dist/mappers/variants/option-graph.js +11 -4
  49. package/dist/mappers/variants/variants.js +7 -6
  50. package/dist/public.d.ts +37 -0
  51. package/dist/public.js +19 -0
  52. package/dist/validate/brand.js +2 -4
  53. package/dist/validate/builder.d.ts +2 -2
  54. package/dist/validate/builder.js +3 -3
  55. package/dist/validate/expectations.d.ts +2 -2
  56. package/dist/validate/expectations.js +1 -1
  57. package/dist/validate/index.d.ts +0 -1
  58. package/dist/validate/instance.d.ts +2 -2
  59. package/dist/validate/instance.js +6 -6
  60. package/dist/validate/model.d.ts +4 -4
  61. package/dist/validate/model.js +118 -101
  62. package/dist/validate/paths.d.ts +2 -2
  63. package/dist/validate/paths.js +45 -21
  64. package/dist/validate/pricing.d.ts +4 -4
  65. package/dist/validate/pricing.js +26 -13
  66. package/dist/validate/resolve.d.ts +2 -2
  67. package/dist/validate/resolve.js +14 -3
  68. package/dist/validate/ui.d.ts +4 -4
  69. package/dist/validate/ui.js +3 -3
  70. package/dist/validate/variants.d.ts +2 -2
  71. package/dist/validate/variants.js +16 -16
  72. package/package.json +11 -7
  73. package/dist/private.d.ts +0 -3
  74. package/dist/private.js +0 -3
@@ -1,27 +1,22 @@
1
1
  import * as v from 'valibot';
2
- import { BuilderException, formatSchemaIssues } from './exception.js';
2
+ import { BuilderException } from './exception.js';
3
3
  class Check {
4
- truthy(input, message) {
4
+ invariant(input) {
5
5
  if (!input) {
6
- throw new BuilderException({ category: 'assertion', summary: message });
7
- }
8
- }
9
- falsy(input, message) {
10
- if (input) {
11
- throw new BuilderException({ category: 'assertion', summary: message });
6
+ throw new BuilderException({ category: 'invariant', value: input });
12
7
  }
13
8
  }
14
9
  is(schema, input) {
15
10
  return v.is(schema, input);
16
11
  }
17
- assert(schema, input, message) {
12
+ assert(schema, input) {
18
13
  const result = v.safeParse(schema, input);
19
14
  if (result.success) {
20
15
  return;
21
16
  }
22
17
  throw new BuilderException({
23
18
  category: 'assertion',
24
- summary: message ?? formatSchemaIssues(result.issues),
19
+ value: input,
25
20
  issues: result.issues
26
21
  });
27
22
  }
@@ -1,170 +1,243 @@
1
- import type { BuilderEntityKind, BuilderExpectationKind } from '../entities/index';
1
+ import type { BuilderEntityKind } from '../entities/index';
2
2
  import type { BuilderInstance } from '../instance';
3
3
  export type BuilderErrorLocation = ReadonlyArray<string | number>;
4
- export declare function builderError<Kind extends string>(kind: Kind, location: BuilderErrorLocation): {
5
- kind: Kind;
6
- location: BuilderErrorLocation;
7
- };
8
- export type BuilderError = ReturnType<typeof builderError> & {
9
- readonly [key: string]: unknown;
10
- };
11
- export type BuilderErrors = ReadonlyArray<BuilderError>;
12
- export declare class BuilderValidateErrors {
4
+ export declare class BuilderErrorsScope {
13
5
  #private;
6
+ constructor(root: unknown);
14
7
  get errors(): BuilderErrors;
15
8
  scope<Result>(part: string | number, fn: () => Result): Result;
16
- invalidEntity(target: BuilderEntityKind): {
17
- target: "string" | "number" | "boolean" | "builder" | "model" | "select" | "toggle" | "optionSelectMap" | "optionWhen" | "componentConfig" | "componentSelectMap" | "componentWhen" | "collectionConfig" | "collectionSelectMap" | "collectionWhen" | "ui" | "uiDescribe" | "uiItems" | "uiPage" | "uiPages" | "uiInput" | "pricing" | "pricingRates" | "expectations" | "paths" | "path";
18
- kind: "invalid-entity";
19
- location: BuilderErrorLocation;
20
- };
21
- invalidVariants(): {
22
- kind: "invalid-variants";
23
- location: BuilderErrorLocation;
24
- };
25
- invalidOption(name: string, value: unknown): {
26
- name: string;
27
- value: unknown;
28
- kind: "invalid-option";
29
- location: BuilderErrorLocation;
30
- };
31
- invalidCollection(name: string): {
32
- name: string;
33
- kind: "invalid-collection";
34
- location: BuilderErrorLocation;
35
- };
36
- duplicateName(name: string): {
37
- name: string;
38
- kind: "duplicate-name";
9
+ entityInvalid(target: BuilderEntityKind): {
10
+ kind: "entity-invalid";
39
11
  location: BuilderErrorLocation;
12
+ root: unknown;
13
+ } & {
14
+ target: "string" | "number" | "boolean" | "builder" | "model" | "select" | "toggle" | "optionSelectMap" | "optionWhen" | "componentConfig" | "componentSelectMap" | "componentWhen" | "collectionConfig" | "collectionSelectMap" | "collectionWhen" | "ui" | "uiDescribe" | "uiItems" | "uiPage" | "uiPages" | "uiInput" | "pricing" | "pricingRates" | "expectations" | "paths" | "path";
40
15
  };
41
- invalidCollectionBounds(min: number, max: number): {
42
- min: number;
16
+ entityEmptyLabel(): {
17
+ kind: "entity-empty-label";
18
+ location: BuilderErrorLocation;
19
+ root: unknown;
20
+ } & object;
21
+ entityEmptyInputs(): {
22
+ kind: "entity-empty-inputs";
23
+ location: BuilderErrorLocation;
24
+ root: unknown;
25
+ } & object;
26
+ entityEmptyName(): {
27
+ kind: "entity-empty-name";
28
+ location: BuilderErrorLocation;
29
+ root: unknown;
30
+ } & object;
31
+ entityInvalidCollectionBounds(): {
32
+ kind: "entity-invalid-collection-bounds";
33
+ location: BuilderErrorLocation;
34
+ root: unknown;
35
+ } & object;
36
+ entityInvalidSelectDefault(): {
37
+ kind: "entity-invalid-select-default";
38
+ location: BuilderErrorLocation;
39
+ root: unknown;
40
+ } & object;
41
+ entityInvalidSelectLabel(): {
42
+ kind: "entity-invalid-select-label";
43
+ location: BuilderErrorLocation;
44
+ root: unknown;
45
+ } & object;
46
+ entityInvalidToggleDefault(): {
47
+ kind: "entity-invalid-toggle-default";
48
+ location: BuilderErrorLocation;
49
+ root: unknown;
50
+ } & object;
51
+ entityDuplicateField(): {
52
+ kind: "entity-duplicate-field";
53
+ location: BuilderErrorLocation;
54
+ root: unknown;
55
+ } & object;
56
+ modelDuplicateOption(): {
57
+ kind: "model-duplicate-option";
58
+ location: BuilderErrorLocation;
59
+ root: unknown;
60
+ } & object;
61
+ modelDuplicateComponent(): {
62
+ kind: "model-duplicate-component";
63
+ location: BuilderErrorLocation;
64
+ root: unknown;
65
+ } & object;
66
+ modelDuplicateCollection(): {
67
+ kind: "model-duplicate-collection";
68
+ location: BuilderErrorLocation;
69
+ root: unknown;
70
+ } & object;
71
+ modelOverriddenOption(): {
72
+ kind: "model-overridden-option";
73
+ location: BuilderErrorLocation;
74
+ root: unknown;
75
+ } & object;
76
+ modelOverriddenComponent(): {
77
+ kind: "model-overridden-component";
78
+ location: BuilderErrorLocation;
79
+ root: unknown;
80
+ } & object;
81
+ modelOverriddenCollection(): {
82
+ kind: "model-overridden-collection";
83
+ location: BuilderErrorLocation;
84
+ root: unknown;
85
+ } & object;
86
+ modelUnmetExpectation(): {
87
+ kind: "model-unmet-expectation";
88
+ location: BuilderErrorLocation;
89
+ root: unknown;
90
+ } & object;
91
+ modelEmptyComponents(): {
92
+ kind: "model-empty-components";
93
+ location: BuilderErrorLocation;
94
+ root: unknown;
95
+ } & object;
96
+ pathEmpty(): {
97
+ kind: "path-empty";
98
+ location: BuilderErrorLocation;
99
+ root: unknown;
100
+ } & object;
101
+ pathInvalidSegment(): {
102
+ kind: "path-invalid-segment";
103
+ location: BuilderErrorLocation;
104
+ root: unknown;
105
+ } & object;
106
+ pathInvalidIndex(max: number): {
107
+ kind: "path-invalid-index";
108
+ location: BuilderErrorLocation;
109
+ root: unknown;
110
+ } & {
43
111
  max: number;
44
- kind: "invalid-collection-bounds";
45
- location: BuilderErrorLocation;
46
- };
47
- invalidPath(reason: string): {
48
- reason: string;
49
- kind: "invalid-path";
50
- location: BuilderErrorLocation;
51
- };
52
- invalidSelectMapKey(key: string): {
53
- key: string;
54
- kind: "invalid-select-map-key";
55
- location: BuilderErrorLocation;
56
- };
57
- invalidSelectDefault(value: string): {
58
- value: string;
59
- kind: "invalid-select-default";
60
- location: BuilderErrorLocation;
61
- };
62
- invalidSelectLabel(key: string): {
63
- key: string;
64
- kind: "invalid-select-label";
65
- location: BuilderErrorLocation;
66
- };
67
- invalidToggleDefault(value: unknown, valueType: string): {
68
- value: unknown;
69
- valueType: string;
70
- kind: "invalid-toggle-default";
71
- location: BuilderErrorLocation;
72
- };
73
- emptyLabel(): {
74
- kind: "empty-label";
75
- location: BuilderErrorLocation;
76
- };
77
- emptyInputs(): {
78
- kind: "empty-inputs";
79
- location: BuilderErrorLocation;
80
- };
81
- emptyItems(): {
82
- kind: "empty-items";
83
- location: BuilderErrorLocation;
84
- };
85
- emptyName(): {
86
- kind: "empty-name";
87
- location: BuilderErrorLocation;
88
- };
89
- unboundParameter(name: string): {
90
- name: string;
91
- kind: "unbound-parameter";
92
- location: BuilderErrorLocation;
93
- };
94
- missingReference(id: string): {
95
- id: string;
96
- kind: "missing-reference";
97
- location: BuilderErrorLocation;
98
- };
99
- unmetExpectation(expectationKind: BuilderExpectationKind, name: string): {
100
- expectationKind: "option" | "component" | "collection";
101
- name: string;
102
- kind: "unmet-expectation";
103
- location: BuilderErrorLocation;
104
- };
105
- unvalidated(value: unknown): {
106
- value: unknown;
107
- kind: "unvalidated";
108
- location: BuilderErrorLocation;
109
- };
110
- missingComponent(component: string): {
111
- component: string;
112
- kind: "missing-component";
113
- location: BuilderErrorLocation;
114
- };
115
- unexpectedComponent(component: string): {
116
- component: string;
117
- kind: "unexpected-component";
118
- location: BuilderErrorLocation;
119
- };
120
- missingVariant(component: string, instance: BuilderInstance): {
121
- component: string;
122
- instance: BuilderInstance;
123
- kind: "missing-variant";
124
- location: BuilderErrorLocation;
125
112
  };
126
- invalidVariant(component: string, instance: BuilderInstance): {
127
- component: string;
113
+ pathTargetIsCollection(): {
114
+ kind: "path-target-is-collection";
115
+ location: BuilderErrorLocation;
116
+ root: unknown;
117
+ } & object;
118
+ pathTargetIsComponent(): {
119
+ kind: "path-target-is-component";
120
+ location: BuilderErrorLocation;
121
+ root: unknown;
122
+ } & object;
123
+ pathMissingOption(): {
124
+ kind: "path-missing-option";
125
+ location: BuilderErrorLocation;
126
+ root: unknown;
127
+ } & object;
128
+ pathMissingCollection(): {
129
+ kind: "path-missing-collection";
130
+ location: BuilderErrorLocation;
131
+ root: unknown;
132
+ } & object;
133
+ referenceMissing(): {
134
+ kind: "reference-missing";
135
+ location: BuilderErrorLocation;
136
+ root: unknown;
137
+ } & object;
138
+ referenceCircular(): {
139
+ kind: "reference-circular";
140
+ location: BuilderErrorLocation;
141
+ root: unknown;
142
+ } & object;
143
+ referenceUnboundParameter(): {
144
+ kind: "reference-unbound-parameter";
145
+ location: BuilderErrorLocation;
146
+ root: unknown;
147
+ } & object;
148
+ instanceInvalidOption(): {
149
+ kind: "instance-invalid-option";
150
+ location: BuilderErrorLocation;
151
+ root: unknown;
152
+ } & object;
153
+ instanceInvalidCollection(): {
154
+ kind: "instance-invalid-collection";
155
+ location: BuilderErrorLocation;
156
+ root: unknown;
157
+ } & object;
158
+ variantsInvalid(): {
159
+ kind: "variants-invalid";
160
+ location: BuilderErrorLocation;
161
+ root: unknown;
162
+ } & object;
163
+ variantsMissingComponent(): {
164
+ kind: "variants-missing-component";
165
+ location: BuilderErrorLocation;
166
+ root: unknown;
167
+ } & object;
168
+ variantsUnexpectedComponent(): {
169
+ kind: "variants-unexpected-component";
170
+ location: BuilderErrorLocation;
171
+ root: unknown;
172
+ } & object;
173
+ variantsMissingVariant(instance: BuilderInstance): {
174
+ kind: "variants-missing-variant";
175
+ location: BuilderErrorLocation;
176
+ root: unknown;
177
+ } & {
128
178
  instance: BuilderInstance;
129
- kind: "invalid-variant";
130
- location: BuilderErrorLocation;
131
- };
132
- missingDetail(component: string, detail: string, instance: BuilderInstance): {
133
- component: string;
134
- detail: string;
135
- instance: BuilderInstance;
136
- kind: "missing-detail";
137
- location: BuilderErrorLocation;
138
- };
139
- unexpectedDetail(component: string, detail: string, instance: BuilderInstance): {
140
- component: string;
141
- detail: string;
142
- instance: BuilderInstance;
143
- kind: "unexpected-detail";
144
- location: BuilderErrorLocation;
145
- };
146
- invalidDetail(component: string, detail: string, instance: BuilderInstance): {
147
- component: string;
148
- detail: string;
149
- instance: BuilderInstance;
150
- kind: "invalid-detail";
151
- location: BuilderErrorLocation;
152
- };
153
- invalidPricing(reason: string): {
154
- reason: string;
155
- kind: "invalid-pricing";
156
- location: BuilderErrorLocation;
157
- };
158
- missingRate(rate: string): {
159
- rate: string;
160
- kind: "missing-rate";
161
- location: BuilderErrorLocation;
162
- };
163
- noComponents(): {
164
- kind: "no-components";
165
- location: BuilderErrorLocation;
166
179
  };
180
+ variantsInvalidVariant(): {
181
+ kind: "variants-invalid-variant";
182
+ location: BuilderErrorLocation;
183
+ root: unknown;
184
+ } & object;
185
+ variantsMissingDetail(): {
186
+ kind: "variants-missing-detail";
187
+ location: BuilderErrorLocation;
188
+ root: unknown;
189
+ } & object;
190
+ variantsUnexpectedDetail(): {
191
+ kind: "variants-unexpected-detail";
192
+ location: BuilderErrorLocation;
193
+ root: unknown;
194
+ } & object;
195
+ variantsInvalidDetail(): {
196
+ kind: "variants-invalid-detail";
197
+ location: BuilderErrorLocation;
198
+ root: unknown;
199
+ } & object;
200
+ pricingInvalidScope(): {
201
+ kind: "pricing-invalid-scope";
202
+ location: BuilderErrorLocation;
203
+ root: unknown;
204
+ } & object;
205
+ pricingNestedVariants(): {
206
+ kind: "pricing-nested-variants";
207
+ location: BuilderErrorLocation;
208
+ root: unknown;
209
+ } & object;
210
+ pricingMalformedExpression(): {
211
+ kind: "pricing-malformed-expression";
212
+ location: BuilderErrorLocation;
213
+ root: unknown;
214
+ } & object;
215
+ pricingInvalidRateValue(): {
216
+ kind: "pricing-invalid-rate-value";
217
+ location: BuilderErrorLocation;
218
+ root: unknown;
219
+ } & object;
220
+ pricingEmptyRates(): {
221
+ kind: "pricing-empty-rates";
222
+ location: BuilderErrorLocation;
223
+ root: unknown;
224
+ } & object;
225
+ pricingDivideByZero(): {
226
+ kind: "pricing-divide-by-zero";
227
+ location: BuilderErrorLocation;
228
+ root: unknown;
229
+ } & object;
230
+ pricingMissingOption(): {
231
+ kind: "pricing-missing-option";
232
+ location: BuilderErrorLocation;
233
+ root: unknown;
234
+ } & object;
235
+ pricingMissingRate(): {
236
+ kind: "pricing-missing-rate";
237
+ location: BuilderErrorLocation;
238
+ root: unknown;
239
+ } & object;
167
240
  }
168
- type ErrorMethodKey = Exclude<keyof BuilderValidateErrors, 'scope' | 'errors'>;
169
- export type BuilderErrorKind = ReturnType<BuilderValidateErrors[ErrorMethodKey]>['kind'];
170
- export {};
241
+ export type BuilderError = ReturnType<BuilderErrorsScope[Exclude<keyof BuilderErrorsScope, 'scope' | 'errors'>]>;
242
+ export type BuilderErrorKind = BuilderError['kind'];
243
+ export type BuilderErrors = ReadonlyArray<BuilderError>;