@builder-builder/builder 0.0.19 → 0.0.21

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 (139) hide show
  1. package/dist/bb.d.ts +12 -14
  2. package/dist/bb.js +32 -6
  3. package/dist/entities/builder/bind.d.ts +1 -1
  4. package/dist/entities/builder/builder.d.ts +2 -4
  5. package/dist/entities/builder/builder.js +1 -1
  6. package/dist/entities/collection/collection.d.ts +689 -1
  7. package/dist/entities/collection/collection.js +5 -2
  8. package/dist/entities/collection/config.d.ts +290 -0
  9. package/dist/entities/collection/config.js +13 -2
  10. package/dist/entities/collection/expectation.d.ts +1 -1
  11. package/dist/entities/collection/index.d.ts +3 -3
  12. package/dist/entities/collection/index.js +2 -2
  13. package/dist/entities/collection/when.d.ts +1 -1
  14. package/dist/entities/component/component.d.ts +64 -10
  15. package/dist/entities/component/component.js +9 -6
  16. package/dist/entities/component/config.d.ts +145 -0
  17. package/dist/entities/component/config.js +42 -0
  18. package/dist/entities/component/field.js +1 -1
  19. package/dist/entities/component/index.d.ts +3 -3
  20. package/dist/entities/component/index.js +2 -2
  21. package/dist/entities/component/when.d.ts +6 -6
  22. package/dist/entities/component/when.js +3 -3
  23. package/dist/entities/expectation.d.ts +4 -0
  24. package/dist/entities/expectation.js +3 -1
  25. package/dist/entities/index.d.ts +18 -17
  26. package/dist/entities/index.js +11 -10
  27. package/dist/entities/kind.d.ts +10 -7
  28. package/dist/entities/kind.js +39 -5
  29. package/dist/entities/model/bind.d.ts +1 -1
  30. package/dist/entities/model/index.d.ts +1 -1
  31. package/dist/entities/model/methods.d.ts +12 -12
  32. package/dist/entities/model/methods.js +2 -2
  33. package/dist/entities/model/model.js +1 -1
  34. package/dist/entities/model/models.d.ts +1 -1
  35. package/dist/entities/option/config.d.ts +109 -0
  36. package/dist/entities/option/config.js +15 -0
  37. package/dist/entities/option/index.d.ts +7 -7
  38. package/dist/entities/option/index.js +4 -4
  39. package/dist/entities/option/option.d.ts +88 -10
  40. package/dist/entities/option/option.js +9 -6
  41. package/dist/entities/option/select.d.ts +24 -14
  42. package/dist/entities/option/select.js +17 -6
  43. package/dist/entities/option/toggle.d.ts +17 -10
  44. package/dist/entities/option/toggle.js +19 -8
  45. package/dist/entities/option/when.d.ts +6 -6
  46. package/dist/{paths.d.ts → entities/paths.d.ts} +2 -0
  47. package/dist/{paths.js → entities/paths.js} +3 -0
  48. package/dist/entities/pricing/index.d.ts +1 -1
  49. package/dist/entities/pricing/index.js +1 -1
  50. package/dist/entities/pricing/pricing.js +1 -1
  51. package/dist/entities/pricing/rates.d.ts +5 -0
  52. package/dist/entities/pricing/rates.js +3 -1
  53. package/dist/entities/references.d.ts +723 -0
  54. package/dist/entities/references.js +7 -0
  55. package/dist/entities/serialise.d.ts +49 -43
  56. package/dist/entities/serialise.js +19 -13
  57. package/dist/entities/ui/describe.d.ts +15 -0
  58. package/dist/entities/ui/describe.js +11 -2
  59. package/dist/entities/ui/index.d.ts +4 -4
  60. package/dist/entities/ui/index.js +4 -4
  61. package/dist/entities/ui/input.d.ts +12 -3
  62. package/dist/entities/ui/input.js +4 -2
  63. package/dist/entities/ui/page.d.ts +15 -0
  64. package/dist/entities/ui/page.js +11 -2
  65. package/dist/entities/ui/pages.d.ts +132 -0
  66. package/dist/entities/ui/pages.js +12 -2
  67. package/dist/entities/ui/ui.d.ts +2 -3
  68. package/dist/entities/ui/ui.js +2 -2
  69. package/dist/entities/ui/uis.d.ts +1 -1
  70. package/dist/entities/ui/uis.js +2 -2
  71. package/dist/entities/validated.d.ts +26 -18
  72. package/dist/entities/when.d.ts +4 -3
  73. package/dist/entities/when.js +22 -2
  74. package/dist/environment.d.ts +2 -2
  75. package/dist/{validate → errors}/errors.d.ts +57 -35
  76. package/dist/{validate → errors}/errors.js +40 -5
  77. package/dist/errors/exception.d.ts +5 -0
  78. package/dist/{exception.js → errors/exception.js} +0 -3
  79. package/dist/errors/index.d.ts +4 -0
  80. package/dist/errors/index.js +3 -0
  81. package/dist/index.d.ts +19 -18
  82. package/dist/index.js +5 -4
  83. package/dist/instance.d.ts +7 -7
  84. package/dist/instance.js +4 -4
  85. package/dist/mappers/index.d.ts +2 -4
  86. package/dist/mappers/index.js +1 -2
  87. package/dist/mappers/instance.d.ts +2 -2
  88. package/dist/mappers/instance.js +7 -7
  89. package/dist/mappers/order.d.ts +4 -4
  90. package/dist/mappers/order.js +5 -5
  91. package/dist/mappers/price.js +18 -18
  92. package/dist/mappers/render/pages.d.ts +2 -2
  93. package/dist/mappers/render/render.d.ts +2 -2
  94. package/dist/mappers/render/render.js +12 -12
  95. package/dist/mappers/resolve.d.ts +11 -12
  96. package/dist/mappers/resolve.js +29 -46
  97. package/dist/mappers/variants/option-graph.d.ts +2 -3
  98. package/dist/mappers/variants/option-graph.js +2 -3
  99. package/dist/mappers/variants/variants.d.ts +2 -2
  100. package/dist/mappers/variants/variants.js +1 -1
  101. package/dist/private.d.ts +1 -2
  102. package/dist/private.js +1 -2
  103. package/dist/references.js +1 -1
  104. package/dist/validate/brand.js +1 -2
  105. package/dist/validate/builder.d.ts +3 -4
  106. package/dist/validate/builder.js +2 -3
  107. package/dist/validate/expectations.d.ts +1 -1
  108. package/dist/validate/index.d.ts +5 -2
  109. package/dist/validate/index.js +1 -0
  110. package/dist/validate/instance.d.ts +2 -3
  111. package/dist/validate/instance.js +1 -2
  112. package/dist/validate/model.d.ts +3 -4
  113. package/dist/validate/model.js +39 -44
  114. package/dist/validate/paths.d.ts +2 -3
  115. package/dist/validate/paths.js +1 -1
  116. package/dist/validate/pricing.d.ts +3 -4
  117. package/dist/validate/pricing.js +2 -3
  118. package/dist/validate/resolve.d.ts +3 -3
  119. package/dist/validate/resolve.js +1 -1
  120. package/dist/validate/ui.d.ts +3 -4
  121. package/dist/validate/ui.js +14 -5
  122. package/dist/validate/variants.d.ts +4 -5
  123. package/dist/validate/variants.js +6 -7
  124. package/package.json +7 -2
  125. package/dist/entities/component/details.d.ts +0 -66
  126. package/dist/entities/component/details.js +0 -24
  127. package/dist/entities/entry.d.ts +0 -4
  128. package/dist/entities/entry.js +0 -1
  129. package/dist/entities/option/values.d.ts +0 -49
  130. package/dist/entities/option/values.js +0 -14
  131. package/dist/entities/refs.d.ts +0 -6
  132. package/dist/entities/refs.js +0 -1
  133. package/dist/exception.d.ts +0 -13
  134. package/dist/validate/result.d.ts +0 -2
  135. package/dist/validate/result.js +0 -1
  136. /package/dist/{serialisable.d.ts → entities/serialisable.d.ts} +0 -0
  137. /package/dist/{serialisable.js → entities/serialisable.js} +0 -0
  138. /package/dist/{check.d.ts → errors/check.d.ts} +0 -0
  139. /package/dist/{check.js → errors/check.js} +0 -0
package/dist/bb.d.ts CHANGED
@@ -1,26 +1,24 @@
1
- import type { BuilderComponentVariantsValidated, BuilderInstanceValidated, BuilderModelValidated, BuilderPricingValidated, BuilderRefEntities, BuilderUIValidated, BuilderValidated } from './entities/index';
1
+ import type { BuilderEntityKind, BuilderInstanceValidated, BuilderModelValidated, BuilderReferences, BuilderValidated, BuilderValidatedMap, BuilderVariantsValidated } from './entities/index';
2
2
  import type { BuilderEnvironment, BuilderEnvironmentResult } from './environment';
3
+ import type { BuilderInstance, BuilderInstanceInput, BuilderVariants } from './instance';
3
4
  import type { BuilderOrder, BuilderRenderResult } from './mappers/index';
4
- import type { BuilderComponentVariants, BuilderInstance, BuilderInstanceInput } from './instance';
5
+ import type { BuilderVariantsValidationOptions } from './validate/index';
5
6
  export type BBOptions = {
6
- readonly references?: BuilderRefEntities;
7
+ readonly references?: BuilderReferences;
8
+ };
9
+ export type BuilderEntityValidators<Env extends BuilderEnvironment> = {
10
+ readonly [Kind in BuilderEntityKind]: (input: unknown) => BuilderEnvironmentResult<BuilderValidatedMap[Kind], Env>;
7
11
  };
8
12
  export type BB<Env extends BuilderEnvironment = 'production'> = {
9
- readonly validate: {
10
- builder(input: unknown): BuilderEnvironmentResult<BuilderValidated, Env>;
11
- model(input: unknown): BuilderEnvironmentResult<BuilderModelValidated, Env>;
12
- pricing(input: unknown): BuilderEnvironmentResult<BuilderPricingValidated, Env>;
13
- ui(input: unknown): BuilderEnvironmentResult<BuilderUIValidated, Env>;
13
+ readonly validate: BuilderEntityValidators<Env> & {
14
14
  instance(model: BuilderModelValidated, instance: BuilderInstance): BuilderEnvironmentResult<BuilderInstanceValidated, Env>;
15
- variants(model: BuilderModelValidated, input: unknown, options?: {
16
- readonly partial?: boolean;
17
- }): BuilderEnvironmentResult<BuilderComponentVariantsValidated, Env>;
15
+ variants(model: BuilderModelValidated, input: unknown, options?: BuilderVariantsValidationOptions): BuilderEnvironmentResult<BuilderVariantsValidated, Env>;
18
16
  };
19
17
  instance(entity: BuilderValidated | BuilderModelValidated, partial?: BuilderInstanceInput): BuilderInstance;
20
18
  render(builder: BuilderValidated, instance: BuilderInstanceValidated): BuilderRenderResult;
21
- order(model: BuilderModelValidated, instance: BuilderInstanceValidated, variants: BuilderComponentVariantsValidated): BuilderOrder;
22
- price(pricing: BuilderPricingValidated, order: BuilderOrder): number | null;
23
- variants(entity: BuilderValidated | BuilderModelValidated): BuilderComponentVariants;
19
+ order(model: BuilderModelValidated, instance: BuilderInstanceValidated, variants: BuilderVariantsValidated): BuilderOrder;
20
+ price(pricing: BuilderValidatedMap['pricing'], order: BuilderOrder): number | null;
21
+ variants(entity: BuilderValidated | BuilderModelValidated): BuilderVariants;
24
22
  };
25
23
  export declare const bb: typeof bbProduction & {
26
24
  development: typeof bbDevelopment;
package/dist/bb.js CHANGED
@@ -1,5 +1,7 @@
1
- import { BuilderException } from './exception.js';
2
- import { assertValidated, createInstance, createVariants, order, price, render, validateBuilder, validateInstance, validateModel, validatePricing, validateUI, validateVariants } from './mappers/index.js';
1
+ import { validateBoolean, validateCollectionConfig, validateCollectionSelectMap, validateCollectionWhen, validateComponentConfig, validateComponentSelectMap, validateComponentWhen, validateExpectations, validateNumber, validateOptionSelectMap, validateOptionWhen, validatePath, validatePaths, validatePricingRates, validateSelect, validateString, validateToggle, validateUIDescribe, validateUIInput, validateUIItems, validateUIPage, validateUIPages } from './entities/index.js';
2
+ import { BuilderException } from './errors/index.js';
3
+ import { createInstance, createVariants, order, price, render } from './mappers/index.js';
4
+ import { assertValidated, validateBuilder, validateInstance, validateModel, validatePricing, validateUI, validateVariants } from './validate/index.js';
3
5
  export const bb = Object.assign(bbProduction, {
4
6
  development: bbDevelopment,
5
7
  staging: bbProduction,
@@ -16,8 +18,30 @@ function bbFactory(environment, references = []) {
16
18
  validate: {
17
19
  builder: (input) => throwInProd(validateBuilder(input, references)),
18
20
  model: (input) => throwInProd(validateModel(input, references)),
19
- pricing: (input) => throwInProd(validatePricing(input, references)),
21
+ select: (input) => throwInProd(validateSelect(input, references)),
22
+ toggle: (input) => throwInProd(validateToggle(input, references)),
23
+ optionSelectMap: (input) => throwInProd(validateOptionSelectMap(input, references)),
24
+ optionWhen: (input) => throwInProd(validateOptionWhen(input, references)),
25
+ componentConfig: (input) => throwInProd(validateComponentConfig(input, references)),
26
+ componentSelectMap: (input) => throwInProd(validateComponentSelectMap(input, references)),
27
+ componentWhen: (input) => throwInProd(validateComponentWhen(input, references)),
28
+ collectionConfig: (input) => throwInProd(validateCollectionConfig(input, references)),
29
+ collectionSelectMap: (input) => throwInProd(validateCollectionSelectMap(input, references)),
30
+ collectionWhen: (input) => throwInProd(validateCollectionWhen(input, references)),
20
31
  ui: (input) => throwInProd(validateUI(input, references)),
32
+ uiDescribe: (input) => throwInProd(validateUIDescribe(input, references)),
33
+ uiItems: (input) => throwInProd(validateUIItems(input, references)),
34
+ uiPage: (input) => throwInProd(validateUIPage(input, references)),
35
+ uiPages: (input) => throwInProd(validateUIPages(input, references)),
36
+ uiInput: (input) => throwInProd(validateUIInput(input, references)),
37
+ pricing: (input) => throwInProd(validatePricing(input, references)),
38
+ pricingRates: (input) => throwInProd(validatePricingRates(input, references)),
39
+ expectations: (input) => throwInProd(validateExpectations(input, references)),
40
+ paths: (input) => throwInProd(validatePaths(input, references)),
41
+ path: (input) => throwInProd(validatePath(input, references)),
42
+ number: (input) => throwInProd(validateNumber(input, references)),
43
+ string: (input) => throwInProd(validateString(input, references)),
44
+ boolean: (input) => throwInProd(validateBoolean(input, references)),
21
45
  instance: (model, instance) => throwInProd(validateInstance(model, instance)),
22
46
  variants: (model, input, variantOptions) => throwInProd(validateVariants(model, input, variantOptions))
23
47
  },
@@ -47,10 +71,12 @@ function bbFactory(environment, references = []) {
47
71
  };
48
72
  function throwInProd(result) {
49
73
  const [entity, errors] = result;
50
- const isDev = environment === 'development';
51
- if (!isDev && errors.length > 0) {
74
+ if (environment === 'development') {
75
+ return result;
76
+ }
77
+ if (errors.length > 0) {
52
78
  throw new BuilderException(errors);
53
79
  }
54
- return (isDev ? result : entity);
80
+ return [entity, []];
55
81
  }
56
82
  }
@@ -1,4 +1,4 @@
1
- import type { BuilderEntitySerialised } from '../kind';
2
1
  import type { BuilderRefSerialised } from '../../references';
2
+ import type { BuilderEntitySerialised } from '../kind';
3
3
  export type BuilderBindings = Readonly<Record<string, unknown>>;
4
4
  export type BuilderBindingsSerialised = Readonly<Record<string, BuilderEntitySerialised | BuilderRefSerialised>>;
@@ -1,9 +1,7 @@
1
- import type { BuilderModelSerialised } from '../model/model';
2
- import type { BuilderModelBindings, BuilderModelBoundState } from '../model/bind';
3
- import type { BuilderModelState } from '../model/state';
1
+ import type { BuilderModelBindings, BuilderModelBoundState, BuilderModelSerialised, BuilderModelState } from '../model/index';
4
2
  import type { BuilderPricingSerialised } from '../pricing/index';
5
3
  import type { BuilderTags } from '../tags';
6
- import type { BuilderUISerialised } from '../ui/ui';
4
+ import type { BuilderUISerialised } from '../ui/index';
7
5
  import type { BuilderBindings, BuilderBindingsSerialised } from './bind';
8
6
  import * as v from 'valibot';
9
7
  import { BuilderModel } from '../model/index.js';
@@ -1,8 +1,8 @@
1
1
  import * as v from 'valibot';
2
2
  import { BuilderRefSerialisedSchema } from '../../references.js';
3
- import { serialisable } from '../../serialisable.js';
4
3
  import { BuilderModel, BuilderModelSerialisedSchema } from '../model/index.js';
5
4
  import { BuilderPricing, BuilderPricingSerialisedSchema } from '../pricing/index.js';
5
+ import { serialisable } from '../serialisable.js';
6
6
  import { BuilderTagsSchema } from '../tags.js';
7
7
  import { BuilderUI, BuilderUISerialisedSchema } from '../ui/index.js';
8
8
  export class Builder {