mtrl 0.8.0 → 0.9.0

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 (245) hide show
  1. package/dist/components/badge/config.d.ts +2 -2
  2. package/dist/components/bottom-sheet/bottom-sheet.js +1 -1
  3. package/dist/components/bottom-sheet/config.d.ts +2 -2
  4. package/dist/components/bottom-sheet/features/drag.d.ts +2 -2
  5. package/dist/components/bottom-sheet/features/drag.js +1 -1
  6. package/dist/components/button/api.d.ts +3 -3
  7. package/dist/components/button/button.d.ts +1 -1
  8. package/dist/components/button/config.d.ts +2 -2
  9. package/dist/components/button/features/progress.d.ts +17 -5
  10. package/dist/components/button-group/config.d.ts +20 -0
  11. package/dist/components/card/api.d.ts +10 -1
  12. package/dist/components/card/api.js +6 -1
  13. package/dist/components/card/card.js +1 -1
  14. package/dist/components/card/config.d.ts +15 -9
  15. package/dist/components/card/features.d.ts +2 -1
  16. package/dist/components/card/types.d.ts +5 -4
  17. package/dist/components/carousel/config.d.ts +2 -2
  18. package/dist/components/checkbox/config.d.ts +2 -2
  19. package/dist/components/checkbox/types.d.ts +15 -16
  20. package/dist/components/chips/api.d.ts +6 -6
  21. package/dist/components/chips/chip/api.d.ts +2 -2
  22. package/dist/components/chips/chip/config.d.ts +6 -7
  23. package/dist/components/chips/config.d.ts +2 -2
  24. package/dist/components/chips/features/dom.js +0 -1
  25. package/dist/components/chips/types.d.ts +12 -1
  26. package/dist/components/datepicker/api.d.ts +5 -2
  27. package/dist/components/datepicker/config.d.ts +16 -13
  28. package/dist/components/datepicker/datepicker.js +10 -4
  29. package/dist/components/datepicker/render.d.ts +14 -6
  30. package/dist/components/datepicker/render.js +1 -1
  31. package/dist/components/datepicker/types.d.ts +51 -3
  32. package/dist/components/dialog/api.d.ts +1 -1
  33. package/dist/components/dialog/config.d.ts +3 -4
  34. package/dist/components/dialog/config.js +1 -1
  35. package/dist/components/dialog/features.js +1 -1
  36. package/dist/components/dialog/types.d.ts +1 -1
  37. package/dist/components/divider/features.js +2 -0
  38. package/dist/components/drawer/api.d.ts +3 -3
  39. package/dist/components/drawer/config.d.ts +2 -2
  40. package/dist/components/drawer/drawer.d.ts +1 -1
  41. package/dist/components/drawer/features/headline.d.ts +12 -2
  42. package/dist/components/drawer/features/items.d.ts +17 -3
  43. package/dist/components/drawer/features/state.d.ts +14 -2
  44. package/dist/components/extended-fab/api.d.ts +12 -4
  45. package/dist/components/extended-fab/api.js +12 -0
  46. package/dist/components/extended-fab/config.d.ts +10 -10
  47. package/dist/components/extended-fab/types.d.ts +4 -2
  48. package/dist/components/fab/api.d.ts +9 -2
  49. package/dist/components/fab/api.js +12 -0
  50. package/dist/components/fab/config.d.ts +8 -8
  51. package/dist/components/fab/types.d.ts +2 -1
  52. package/dist/components/icon-button/config.d.ts +2 -2
  53. package/dist/components/icon-button/features/toggle.d.ts +1 -5
  54. package/dist/components/icon-button/types.d.ts +6 -0
  55. package/dist/components/list/api.d.ts +18 -18
  56. package/dist/components/list/config.d.ts +6 -3
  57. package/dist/components/list/config.js +6 -7
  58. package/dist/components/list/features/renderer.js +2 -2
  59. package/dist/components/list/list.d.ts +20 -1
  60. package/dist/components/list/types.d.ts +32 -32
  61. package/dist/components/loading-indicator/config.d.ts +2 -2
  62. package/dist/components/loading-indicator/types.d.ts +3 -1
  63. package/dist/components/menu/api.d.ts +6 -5
  64. package/dist/components/menu/config.d.ts +2 -2
  65. package/dist/components/menu/features/keyboard.d.ts +19 -9
  66. package/dist/components/menu/types.d.ts +25 -9
  67. package/dist/components/navigation/config.d.ts +2 -2
  68. package/dist/components/navigation/features/controller.d.ts +1 -3
  69. package/dist/components/navigation/features/items.d.ts +1 -2
  70. package/dist/components/navigation/system/core.d.ts +6 -6
  71. package/dist/components/navigation/system/events.d.ts +3 -3
  72. package/dist/components/navigation/system/mobile.d.ts +6 -6
  73. package/dist/components/navigation/system/state.d.ts +3 -3
  74. package/dist/components/navigation/system/types.d.ts +43 -11
  75. package/dist/components/navigation/types.d.ts +15 -6
  76. package/dist/components/progress/api.js +0 -1
  77. package/dist/components/progress/config.d.ts +2 -2
  78. package/dist/components/progress/features/canvas.d.ts +14 -5
  79. package/dist/components/progress/features/state.d.ts +1 -2
  80. package/dist/components/progress/types.d.ts +1 -1
  81. package/dist/components/radios/config.d.ts +2 -2
  82. package/dist/components/search/api.js +4 -4
  83. package/dist/components/search/config.d.ts +2 -2
  84. package/dist/components/search/features/suggestions.d.ts +1 -3
  85. package/dist/components/search/features/suggestions.js +5 -5
  86. package/dist/components/search/search.js +1 -1
  87. package/dist/components/segmented-button/config.d.ts +1 -5
  88. package/dist/components/segmented-button/config.js +1 -1
  89. package/dist/components/select/api.d.ts +2 -2
  90. package/dist/components/select/features.d.ts +2 -2
  91. package/dist/components/select/features.js +2 -1
  92. package/dist/components/select/types.d.ts +38 -21
  93. package/dist/components/side-sheet/config.d.ts +2 -2
  94. package/dist/components/slider/api.d.ts +6 -6
  95. package/dist/components/slider/config.d.ts +2 -2
  96. package/dist/components/slider/types.d.ts +2 -2
  97. package/dist/components/snackbar/config.d.ts +2 -2
  98. package/dist/components/snackbar/features.d.ts +3 -3
  99. package/dist/components/snackbar/position.d.ts +1 -1
  100. package/dist/components/snackbar/types.d.ts +5 -6
  101. package/dist/components/split-button/api.js +1 -3
  102. package/dist/components/split-button/config.d.ts +2 -2
  103. package/dist/components/split-button/features/buttons.d.ts +3 -2
  104. package/dist/components/split-button/features/menu.d.ts +3 -2
  105. package/dist/components/split-button/types.d.ts +13 -2
  106. package/dist/components/switch/config.d.ts +2 -2
  107. package/dist/components/switch/types.d.ts +0 -1
  108. package/dist/components/tabs/api.d.ts +8 -5
  109. package/dist/components/tabs/config.d.ts +9 -1
  110. package/dist/components/tabs/features.d.ts +7 -11
  111. package/dist/components/tabs/features.js +2 -1
  112. package/dist/components/tabs/indicator.js +4 -2
  113. package/dist/components/tabs/responsive.js +2 -1
  114. package/dist/components/tabs/tab-api.d.ts +11 -5
  115. package/dist/components/tabs/tab-api.js +1 -1
  116. package/dist/components/tabs/tab.js +9 -1
  117. package/dist/components/tabs/types.d.ts +9 -2
  118. package/dist/components/tabs/utils.d.ts +14 -3
  119. package/dist/components/textfield/api.d.ts +1 -1
  120. package/dist/components/textfield/config.d.ts +2 -2
  121. package/dist/components/textfield/features/error.d.ts +1 -2
  122. package/dist/components/textfield/features/leading-icon.d.ts +1 -2
  123. package/dist/components/textfield/features/prefix-text.d.ts +1 -2
  124. package/dist/components/textfield/features/suffix-text.d.ts +1 -2
  125. package/dist/components/textfield/features/supporting-text.d.ts +1 -2
  126. package/dist/components/textfield/features/trailing-icon.d.ts +1 -2
  127. package/dist/components/textfield/types.d.ts +0 -2
  128. package/dist/components/timepicker/api.d.ts +5 -4
  129. package/dist/components/timepicker/config.d.ts +14 -11
  130. package/dist/components/tooltip/config.d.ts +2 -2
  131. package/dist/components/tooltip/tooltip.d.ts +1 -1
  132. package/dist/core/compose/base.d.ts +2 -2
  133. package/dist/core/compose/base.js +1 -1
  134. package/dist/core/compose/component.d.ts +13 -4
  135. package/dist/core/compose/component.js +1 -1
  136. package/dist/core/compose/features/badge.d.ts +3 -4
  137. package/dist/core/compose/features/badge.js +1 -1
  138. package/dist/core/compose/features/checkable.d.ts +3 -4
  139. package/dist/core/compose/features/debounce.d.ts +2 -3
  140. package/dist/core/compose/features/disabled.d.ts +1 -2
  141. package/dist/core/compose/features/events.d.ts +4 -3
  142. package/dist/core/compose/features/icon.d.ts +1 -5
  143. package/dist/core/compose/features/input.d.ts +2 -3
  144. package/dist/core/compose/features/lifecycle.d.ts +2 -2
  145. package/dist/core/compose/features/lifecycle.js +3 -3
  146. package/dist/core/compose/features/position.d.ts +1 -2
  147. package/dist/core/compose/features/ripple.d.ts +1 -2
  148. package/dist/core/compose/features/size.d.ts +1 -2
  149. package/dist/core/compose/features/style.d.ts +1 -2
  150. package/dist/core/compose/features/text.d.ts +1 -5
  151. package/dist/core/compose/features/textinput.d.ts +2 -3
  152. package/dist/core/compose/features/textlabel.d.ts +1 -2
  153. package/dist/core/compose/features/throttle.d.ts +1 -2
  154. package/dist/core/compose/features/track.d.ts +0 -1
  155. package/dist/core/compose/features/variant.d.ts +1 -2
  156. package/dist/core/compose/index.d.ts +1 -1
  157. package/dist/core/compose/pipe.d.ts +43 -3
  158. package/dist/core/compose/pipe.js +6 -2
  159. package/dist/core/compose/utils/type-guards.d.ts +4 -4
  160. package/dist/core/compose/utils/type-guards.js +1 -1
  161. package/dist/core/config/component.d.ts +12 -9
  162. package/dist/core/config/global.d.ts +12 -8
  163. package/dist/core/config.d.ts +1 -1
  164. package/dist/core/dom/attributes.d.ts +6 -6
  165. package/dist/core/dom/attributes.js +3 -2
  166. package/dist/core/dom/create.d.ts +27 -10
  167. package/dist/core/dom/create.js +0 -24
  168. package/dist/core/dom/utils.d.ts +1 -1
  169. package/dist/core/state/emitter.d.ts +2 -2
  170. package/dist/core/state/events.d.ts +3 -3
  171. package/dist/core/state/lifecycle.d.ts +0 -1
  172. package/dist/core/state/store.d.ts +3 -3
  173. package/dist/core/utils/object.d.ts +2 -2
  174. package/dist/core/utils/performance.d.ts +3 -3
  175. package/dist/core/utils/validate.d.ts +6 -6
  176. package/dist/core/utils/validate.js +13 -12
  177. package/dist/index.cjs +12 -12
  178. package/dist/package.json +1 -1
  179. package/dist/styles/badge.css +2 -2
  180. package/dist/styles/base.css +2 -2
  181. package/dist/styles/bottom-app-bar.css +2 -2
  182. package/dist/styles/bottom-sheet.css +2 -2
  183. package/dist/styles/button-group.css +2 -2
  184. package/dist/styles/button.css +2 -2
  185. package/dist/styles/card.css +2 -2
  186. package/dist/styles/carousel.css +2 -2
  187. package/dist/styles/checkbox.css +2 -2
  188. package/dist/styles/chips.css +2 -2
  189. package/dist/styles/dialog.css +2 -2
  190. package/dist/styles/divider.css +2 -2
  191. package/dist/styles/drawer.css +2 -2
  192. package/dist/styles/extended-fab.css +2 -2
  193. package/dist/styles/fab.css +2 -2
  194. package/dist/styles/icon-button.css +2 -2
  195. package/dist/styles/list.css +2 -2
  196. package/dist/styles/loading-indicator.css +2 -2
  197. package/dist/styles/menu.css +2 -2
  198. package/dist/styles/navigation-rail.css +2 -2
  199. package/dist/styles/navigation.css +2 -2
  200. package/dist/styles/progress.css +2 -2
  201. package/dist/styles/radios.css +2 -2
  202. package/dist/styles/search.css +2 -2
  203. package/dist/styles/segmented-button.css +2 -2
  204. package/dist/styles/select.css +2 -2
  205. package/dist/styles/side-sheet.css +2 -2
  206. package/dist/styles/slider.css +2 -2
  207. package/dist/styles/snackbar.css +2 -2
  208. package/dist/styles/split-button.css +2 -2
  209. package/dist/styles/switch.css +2 -2
  210. package/dist/styles/tabs.css +2 -2
  211. package/dist/styles/textfield.css +2 -2
  212. package/dist/styles/timepicker.css +2 -2
  213. package/dist/styles/tooltip.css +2 -0
  214. package/dist/styles/tooltip.d.ts +1 -0
  215. package/dist/styles/tooltip.js +2 -0
  216. package/dist/styles/top-app-bar.css +2 -2
  217. package/dist/styles/utilities.css +2 -2
  218. package/dist/styles.css +2 -2
  219. package/dist/themes/autumn.css +1 -1
  220. package/dist/themes/baseline.css +1 -1
  221. package/dist/themes/brownbeige.css +1 -1
  222. package/dist/themes/browngreen.css +1 -1
  223. package/dist/themes/desert.css +1 -1
  224. package/dist/themes/forest.css +1 -1
  225. package/dist/themes/highcontrast.css +1 -1
  226. package/dist/themes/legacy.css +1 -1
  227. package/dist/themes/material.css +1 -1
  228. package/dist/themes/ocean.css +1 -1
  229. package/dist/themes/sageivory.css +1 -1
  230. package/dist/themes/spring.css +1 -1
  231. package/dist/themes/summer.css +1 -1
  232. package/dist/themes/sunset.css +1 -1
  233. package/dist/themes/tealcaramel.css +1 -1
  234. package/dist/themes/winter.css +1 -1
  235. package/package.json +2 -2
  236. package/src/styles/abstract/_mixins.scss +5 -1
  237. package/src/styles/components/_checkbox.scss +27 -7
  238. package/src/styles/components/_chips.scss +13 -13
  239. package/src/styles/components/_datepicker.scss +5 -5
  240. package/src/styles/components/_dialog.scss +2 -2
  241. package/src/styles/components/_radios.scss +30 -30
  242. package/src/styles/components/_switch.scss +36 -26
  243. package/src/styles/components/_tabs.scss +59 -58
  244. package/src/styles/components/_timepicker.scss +3 -3
  245. package/src/styles/main.scss +1 -0
@@ -6,7 +6,7 @@ export { normalizeClasses } from "./classes.js";
6
6
  * @param attributes - Element attributes
7
7
  * @returns Created element
8
8
  */
9
- export declare const createElement: <T extends HTMLElement>(tag: string, attributes?: Record<string, any>) => T;
9
+ export declare const createElement: <T extends HTMLElement>(tag: string, attributes?: Record<string, unknown>) => T;
10
10
  /**
11
11
  * Sets inline styles on an element
12
12
  *
@@ -4,7 +4,7 @@
4
4
  /**
5
5
  * Type definition for event callback functions
6
6
  */
7
- export type EventCallback = (...args: any[]) => void;
7
+ export type EventCallback = (...args: never[]) => void;
8
8
  /**
9
9
  * Interface for the event emitter
10
10
  */
@@ -27,7 +27,7 @@ export interface Emitter {
27
27
  * @param event - Event name
28
28
  * @param args - Event arguments
29
29
  */
30
- emit(event: string, ...args: any[]): void;
30
+ emit(event: string, ...args: unknown[]): void;
31
31
  /**
32
32
  * Clear all event listeners
33
33
  */
@@ -8,14 +8,14 @@ export interface EventManagerState {
8
8
  * @param handler - Event handler
9
9
  * @returns EventManagerState instance for chaining
10
10
  */
11
- on: (event: string, handler: (...args: any[]) => void) => EventManagerState;
11
+ on: (event: string, handler: (...args: never[]) => void) => EventManagerState;
12
12
  /**
13
13
  * Removes an event listener
14
14
  * @param event - Event name
15
15
  * @param handler - Event handler
16
16
  * @returns EventManagerState instance for chaining
17
17
  */
18
- off: (event: string, handler: (...args: any[]) => void) => EventManagerState;
18
+ off: (event: string, handler: (...args: never[]) => void) => EventManagerState;
19
19
  /**
20
20
  * Removes all event listeners and cleans up
21
21
  */
@@ -24,7 +24,7 @@ export interface EventManagerState {
24
24
  * Gets all active handlers
25
25
  * @returns Map of event names to handlers
26
26
  */
27
- getHandlers: () => Map<(...args: any[]) => void, string>;
27
+ getHandlers: () => Map<(...args: never[]) => void, string>;
28
28
  }
29
29
  /**
30
30
  * Creates an event manager for a component
@@ -11,7 +11,6 @@ export interface LifecycleManagers {
11
11
  icon?: {
12
12
  getElement: () => HTMLElement | null;
13
13
  };
14
- [key: string]: any;
15
14
  }
16
15
  /**
17
16
  * Lifecycle manager interface
@@ -64,7 +64,7 @@ export interface Store<T> {
64
64
  * @param options - Store options
65
65
  * @returns State store interface
66
66
  */
67
- export declare const createStore: <T extends Record<string, any>>(initialState?: T, options?: StoreOptions<T>) => Store<T>;
67
+ export declare const createStore: <T extends object>(initialState?: T, options?: StoreOptions<T>) => Store<T>;
68
68
  /**
69
69
  * Example middleware that logs state changes
70
70
  *
@@ -72,11 +72,11 @@ export declare const createStore: <T extends Record<string, any>>(initialState?:
72
72
  * @param oldState - Previous state before change
73
73
  * @returns Processed state (unchanged in this middleware)
74
74
  */
75
- export declare const loggingMiddleware: <T extends Record<string, any>>(newState: T, oldState: T) => T;
75
+ export declare const loggingMiddleware: <T extends object>(newState: T, oldState: T) => T;
76
76
  /**
77
77
  * Creates a derived state selector for filtering objects
78
78
  *
79
79
  * @param predicate - Filter predicate function
80
80
  * @returns Computation function for derived state
81
81
  */
82
- export declare const deriveFiltered: <T>(predicate: (value: any, key: string) => boolean) => (state: Record<string, T>) => Record<string, T>;
82
+ export declare const deriveFiltered: <T>(predicate: (value: T, key: string) => boolean) => (state: Record<string, T>) => Record<string, T>;
@@ -3,11 +3,11 @@
3
3
  * @param value - The value to check
4
4
  * @returns true if the value is a plain object
5
5
  */
6
- export declare const isObject: (value: unknown) => value is Record<string, any>;
6
+ export declare const isObject: (value: unknown) => value is Record<string, unknown>;
7
7
  /**
8
8
  * Accesses a nested property of an object using a string path
9
9
  * @param obj - The object to traverse
10
10
  * @param path - The property path (e.g. 'user.address.street')
11
11
  * @returns The value at the specified path or undefined if not found
12
12
  */
13
- export declare const byString: <T extends Record<string, any>, R = any>(obj: T, path: string) => R | undefined;
13
+ export declare const byString: <T extends object, R = unknown>(obj: T, path: string) => R | undefined;
@@ -27,7 +27,7 @@ export type Cancellable<F> = F & {
27
27
  *
28
28
  * window.addEventListener('scroll', throttledScroll);
29
29
  */
30
- export declare const throttle: <T extends (...args: any[]) => any>(fn: T, wait: number, options?: {
30
+ export declare const throttle: <T extends (...args: never[]) => unknown>(fn: T, wait: number, options?: {
31
31
  leading?: boolean;
32
32
  trailing?: boolean;
33
33
  }) => Cancellable<(...args: Parameters<T>) => void>;
@@ -56,7 +56,7 @@ export declare const throttle: <T extends (...args: any[]) => any>(fn: T, wait:
56
56
  * debouncedSearch(e.target.value);
57
57
  * });
58
58
  */
59
- export declare const debounce: <T extends (...args: any[]) => any>(fn: T, wait: number, options?: {
59
+ export declare const debounce: <T extends (...args: never[]) => unknown>(fn: T, wait: number, options?: {
60
60
  leading?: boolean;
61
61
  maxWait?: number;
62
62
  }) => Cancellable<(...args: Parameters<T>) => void>;
@@ -79,4 +79,4 @@ export declare const debounce: <T extends (...args: any[]) => any>(fn: T, wait:
79
79
  * button1.addEventListener('click', initApp);
80
80
  * button2.addEventListener('click', initApp);
81
81
  */
82
- export declare const once: <T extends (...args: any[]) => any>(fn: T) => ((...args: Parameters<T>) => ReturnType<T>);
82
+ export declare const once: <T extends (...args: never[]) => unknown>(fn: T) => ((...args: Parameters<T>) => ReturnType<T>);
@@ -25,7 +25,7 @@ export interface ValidationRule {
25
25
  /**
26
26
  * Allowed values (enum)
27
27
  */
28
- enum?: any[];
28
+ enum?: unknown[];
29
29
  /**
30
30
  * Minimum string length
31
31
  */
@@ -37,11 +37,11 @@ export interface ValidationRule {
37
37
  /**
38
38
  * Default value
39
39
  */
40
- default?: any;
40
+ default?: unknown;
41
41
  /**
42
42
  * Custom validator function
43
43
  */
44
- validator?: (value: any) => boolean | string;
44
+ validator?(value: unknown): boolean | string;
45
45
  }
46
46
  /**
47
47
  * Validation schema type
@@ -54,7 +54,7 @@ export type ValidationSchema = Record<string, ValidationRule>;
54
54
  * @param schema - Validation schema
55
55
  * @throws Error if validation fails
56
56
  */
57
- export declare const validateConfig: (config: Record<string, any>, schema: ValidationSchema) => void;
57
+ export declare const validateConfig: (config: object, schema: ValidationSchema) => void;
58
58
  /**
59
59
  * Validates a single value against a rule
60
60
  *
@@ -62,7 +62,7 @@ export declare const validateConfig: (config: Record<string, any>, schema: Valid
62
62
  * @param rule - Validation rule
63
63
  * @returns Validation result (true if valid, error message if invalid)
64
64
  */
65
- export declare const validateValue: (value: any, rule: ValidationRule) => true | string;
65
+ export declare const validateValue: (value: unknown, rule: ValidationRule) => true | string;
66
66
  /**
67
67
  * Applies default values from schema to config
68
68
  *
@@ -70,4 +70,4 @@ export declare const validateValue: (value: any, rule: ValidationRule) => true |
70
70
  * @param schema - Validation schema with defaults
71
71
  * @returns Configuration with defaults applied
72
72
  */
73
- export declare const applyDefaults: <T extends Record<string, any>>(config: T, schema: ValidationSchema) => T;
73
+ export declare const applyDefaults: <T extends object>(config: T, schema: ValidationSchema) => T;
@@ -1,47 +1,48 @@
1
1
  export const validateConfig = (config, schema) => {
2
2
  const errors = [];
3
+ const values = config;
3
4
  Object.entries(schema).forEach(([key, rule]) => {
4
- if (rule.required && config[key] === undefined) {
5
+ if (rule.required && values[key] === undefined) {
5
6
  errors.push(`Missing required field: ${key}`);
6
7
  }
7
- if (config[key] !== undefined) {
8
+ if (values[key] !== undefined) {
8
9
  if (rule.type) {
9
- const actualType = typeof config[key];
10
+ const actualType = typeof values[key];
10
11
  if (actualType !== rule.type) {
11
12
  errors.push(`Invalid type for ${key}: expected ${rule.type}, got ${actualType}`);
12
13
  }
13
14
  }
14
- if (typeof config[key] === 'number') {
15
- if (rule.minimum !== undefined && config[key] < rule.minimum) {
15
+ if (typeof values[key] === 'number') {
16
+ if (rule.minimum !== undefined && values[key] < rule.minimum) {
16
17
  errors.push(`Value for ${key} is too small: minimum is ${rule.minimum}`);
17
18
  }
18
- if (rule.maximum !== undefined && config[key] > rule.maximum) {
19
+ if (rule.maximum !== undefined && values[key] > rule.maximum) {
19
20
  errors.push(`Value for ${key} is too large: maximum is ${rule.maximum}`);
20
21
  }
21
22
  }
22
- if (typeof config[key] === 'string') {
23
- if (rule.minLength !== undefined && config[key].length < rule.minLength) {
23
+ if (typeof values[key] === 'string') {
24
+ if (rule.minLength !== undefined && values[key].length < rule.minLength) {
24
25
  errors.push(`String for ${key} is too short: minimum length is ${rule.minLength}`);
25
26
  }
26
- if (rule.maxLength !== undefined && config[key].length > rule.maxLength) {
27
+ if (rule.maxLength !== undefined && values[key].length > rule.maxLength) {
27
28
  errors.push(`String for ${key} is too long: maximum length is ${rule.maxLength}`);
28
29
  }
29
30
  if (rule.pattern) {
30
31
  const pattern = rule.pattern instanceof RegExp
31
32
  ? rule.pattern
32
33
  : new RegExp(rule.pattern);
33
- if (!pattern.test(config[key])) {
34
+ if (!pattern.test(values[key])) {
34
35
  errors.push(`Invalid format for ${key}: must match pattern ${pattern}`);
35
36
  }
36
37
  }
37
38
  }
38
39
  if (rule.enum) {
39
- if (!rule.enum.includes(config[key])) {
40
+ if (!rule.enum.includes(values[key])) {
40
41
  errors.push(`Invalid value for ${key}. Must be one of: ${rule.enum.join(', ')}`);
41
42
  }
42
43
  }
43
44
  if (rule.validator) {
44
- const result = rule.validator(config[key]);
45
+ const result = rule.validator(values[key]);
45
46
  if (result === false) {
46
47
  errors.push(`Invalid value for ${key}`);
47
48
  }