ai-props 2.1.3 → 2.3.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 (73) hide show
  1. package/.dev.vars +2 -0
  2. package/CHANGELOG.md +11 -0
  3. package/README.md +2 -0
  4. package/package.json +39 -13
  5. package/src/ai.ts +12 -31
  6. package/src/cascade.ts +795 -0
  7. package/src/client.ts +440 -0
  8. package/src/durable-cascade.ts +743 -0
  9. package/src/event-bridge.ts +478 -0
  10. package/src/generate.ts +14 -12
  11. package/src/hoc.ts +15 -19
  12. package/src/hono-jsx.ts +675 -0
  13. package/src/index.ts +30 -0
  14. package/src/mdx-types.ts +169 -0
  15. package/src/mdx-utils.ts +437 -0
  16. package/src/mdx.ts +1008 -0
  17. package/src/rpc.ts +614 -0
  18. package/src/streaming.ts +618 -0
  19. package/src/validate.ts +15 -29
  20. package/src/worker.ts +547 -0
  21. package/test/cascade.test.ts +338 -0
  22. package/test/durable-cascade.test.ts +319 -0
  23. package/test/event-bridge.test.ts +351 -0
  24. package/test/generate.test.ts +6 -16
  25. package/test/mdx.test.ts +817 -0
  26. package/test/worker/capnweb-rpc.test.ts +1084 -0
  27. package/test/worker/full-flow.integration.test.ts +1463 -0
  28. package/test/worker/hono-jsx.test.ts +1258 -0
  29. package/test/worker/mdx-parsing.test.ts +1148 -0
  30. package/test/worker/setup.ts +56 -0
  31. package/test/worker.test.ts +595 -0
  32. package/tsconfig.json +2 -1
  33. package/vitest.config.js +6 -0
  34. package/vitest.config.ts +15 -1
  35. package/vitest.workers.config.ts +58 -0
  36. package/wrangler.jsonc +27 -0
  37. package/.turbo/turbo-build.log +0 -4
  38. package/LICENSE +0 -21
  39. package/dist/ai.d.ts +0 -125
  40. package/dist/ai.d.ts.map +0 -1
  41. package/dist/ai.js +0 -199
  42. package/dist/ai.js.map +0 -1
  43. package/dist/cache.d.ts +0 -66
  44. package/dist/cache.d.ts.map +0 -1
  45. package/dist/cache.js +0 -183
  46. package/dist/cache.js.map +0 -1
  47. package/dist/generate.d.ts +0 -69
  48. package/dist/generate.d.ts.map +0 -1
  49. package/dist/generate.js +0 -221
  50. package/dist/generate.js.map +0 -1
  51. package/dist/hoc.d.ts +0 -164
  52. package/dist/hoc.d.ts.map +0 -1
  53. package/dist/hoc.js +0 -236
  54. package/dist/hoc.js.map +0 -1
  55. package/dist/index.d.ts +0 -15
  56. package/dist/index.d.ts.map +0 -1
  57. package/dist/index.js +0 -21
  58. package/dist/index.js.map +0 -1
  59. package/dist/types.d.ts +0 -152
  60. package/dist/types.d.ts.map +0 -1
  61. package/dist/types.js +0 -7
  62. package/dist/types.js.map +0 -1
  63. package/dist/validate.d.ts +0 -58
  64. package/dist/validate.d.ts.map +0 -1
  65. package/dist/validate.js +0 -253
  66. package/dist/validate.js.map +0 -1
  67. package/src/ai.js +0 -198
  68. package/src/cache.js +0 -182
  69. package/src/generate.js +0 -220
  70. package/src/hoc.js +0 -235
  71. package/src/index.js +0 -20
  72. package/src/types.js +0 -6
  73. package/src/validate.js +0 -252
package/dist/hoc.js DELETED
@@ -1,236 +0,0 @@
1
- /**
2
- * Higher-Order Component (HOC) for React components
3
- *
4
- * Provides withAIProps HOC for wrapping React components
5
- * with AI-powered prop generation.
6
- *
7
- * @packageDocumentation
8
- */
9
- import { generateProps, mergeWithGenerated } from './generate.js';
10
- /**
11
- * Create props wrapper that can be used with any component system
12
- *
13
- * This is framework-agnostic and returns the enhanced props.
14
- *
15
- * @example
16
- * ```ts
17
- * const enhancer = createPropsEnhancer({
18
- * schema: {
19
- * title: 'Page title',
20
- * description: 'Page description',
21
- * },
22
- * defaults: {
23
- * title: 'Default Title',
24
- * },
25
- * })
26
- *
27
- * // Use with any component
28
- * const props = await enhancer({ description: 'My page' })
29
- * // { title: 'Default Title', description: 'My page' }
30
- *
31
- * const generatedProps = await enhancer({})
32
- * // { title: 'AI-generated title', description: 'AI-generated description' }
33
- * ```
34
- */
35
- export function createPropsEnhancer(options) {
36
- const { schema, defaults = {}, required = [], exclude = [], config = {}, fallback } = options;
37
- return async (partialProps) => {
38
- try {
39
- // Merge with defaults
40
- const propsWithDefaults = { ...defaults, ...partialProps };
41
- // Check required props
42
- const missingRequired = required.filter(key => propsWithDefaults[key] === undefined);
43
- if (missingRequired.length > 0) {
44
- throw new Error(`Missing required props: ${missingRequired.join(', ')}`);
45
- }
46
- // Filter out excluded props from schema
47
- const filteredSchema = filterSchemaKeys(schema, exclude);
48
- // Generate missing props
49
- return await mergeWithGenerated(filteredSchema, propsWithDefaults, {
50
- model: config.model,
51
- system: config.system,
52
- });
53
- }
54
- catch (error) {
55
- if (fallback) {
56
- return { ...defaults, ...fallback, ...partialProps };
57
- }
58
- throw error;
59
- }
60
- };
61
- }
62
- /**
63
- * Filter schema to exclude certain keys
64
- */
65
- function filterSchemaKeys(schema, exclude) {
66
- if (typeof schema === 'string' || exclude.length === 0) {
67
- return schema;
68
- }
69
- const filtered = {};
70
- for (const [key, value] of Object.entries(schema)) {
71
- if (!exclude.includes(key)) {
72
- filtered[key] = value;
73
- }
74
- }
75
- return filtered;
76
- }
77
- /**
78
- * Create an async props provider
79
- *
80
- * Returns a function that generates props on each call.
81
- * Useful for SSR and static generation.
82
- *
83
- * @example
84
- * ```ts
85
- * const getPageProps = createAsyncPropsProvider({
86
- * schema: {
87
- * title: 'SEO-optimized page title',
88
- * meta: { description: 'Meta description' },
89
- * },
90
- * })
91
- *
92
- * // In getStaticProps or getServerSideProps
93
- * export async function getStaticProps() {
94
- * const props = await getPageProps({ slug: 'about' })
95
- * return { props }
96
- * }
97
- * ```
98
- */
99
- export function createAsyncPropsProvider(options) {
100
- const enhancer = createPropsEnhancer(options);
101
- return {
102
- /**
103
- * Get props with AI generation
104
- */
105
- getProps: enhancer,
106
- /**
107
- * Get props for multiple items
108
- */
109
- getManyProps: async (contexts) => {
110
- return Promise.all(contexts.map(enhancer));
111
- },
112
- /**
113
- * Get props with caching hint
114
- */
115
- getCachedProps: async (context, revalidate) => {
116
- const props = await enhancer(context);
117
- return { props, revalidate };
118
- },
119
- };
120
- }
121
- /**
122
- * Create a props transformer
123
- *
124
- * Transforms existing props by filling in missing values.
125
- *
126
- * @example
127
- * ```ts
128
- * const transformUserProps = createPropsTransformer({
129
- * schema: {
130
- * displayName: 'Display name for the user',
131
- * initials: 'User initials (2 letters)',
132
- * },
133
- * })
134
- *
135
- * const user = await transformUserProps({
136
- * username: 'johndoe',
137
- * email: 'john@example.com',
138
- * })
139
- * // { username: 'johndoe', email: '...', displayName: 'John Doe', initials: 'JD' }
140
- * ```
141
- */
142
- export function createPropsTransformer(options) {
143
- const { schema, transform, config = {} } = options;
144
- return async (input) => {
145
- const result = await generateProps({
146
- schema,
147
- context: input,
148
- model: config.model,
149
- system: config.system,
150
- });
151
- const generated = result.props;
152
- if (transform) {
153
- return { ...input, ...transform(input, generated) };
154
- }
155
- return { ...input, ...generated };
156
- };
157
- }
158
- /**
159
- * Create a conditional props generator
160
- *
161
- * Only generates props when a condition is met.
162
- *
163
- * @example
164
- * ```ts
165
- * const maybeGenerateProps = createConditionalGenerator({
166
- * schema: { summary: 'Article summary' },
167
- * condition: (props) => !props.summary && props.content?.length > 100,
168
- * })
169
- * ```
170
- */
171
- export function createConditionalGenerator(options) {
172
- const { schema, condition, config = {} } = options;
173
- return async (props) => {
174
- if (!condition(props)) {
175
- return props;
176
- }
177
- return mergeWithGenerated(schema, props, {
178
- model: config.model,
179
- system: config.system,
180
- });
181
- };
182
- }
183
- /**
184
- * Batch props generator for list rendering
185
- *
186
- * Efficiently generates props for multiple items.
187
- *
188
- * @example
189
- * ```ts
190
- * const batchGenerator = createBatchGenerator({
191
- * schema: { title: 'Item title', description: 'Item description' },
192
- * })
193
- *
194
- * const items = await batchGenerator.generate([
195
- * { id: 1, category: 'tech' },
196
- * { id: 2, category: 'science' },
197
- * { id: 3, category: 'art' },
198
- * ])
199
- * ```
200
- */
201
- export function createBatchGenerator(options) {
202
- const { schema, concurrency = 3, config = {} } = options;
203
- return {
204
- /**
205
- * Generate props for multiple items
206
- */
207
- generate: async (items) => {
208
- const results = [];
209
- // Process in batches based on concurrency
210
- for (let i = 0; i < items.length; i += concurrency) {
211
- const batch = items.slice(i, i + concurrency);
212
- const batchResults = await Promise.all(batch.map(item => mergeWithGenerated(schema, item, {
213
- model: config.model,
214
- system: config.system,
215
- })));
216
- results.push(...batchResults);
217
- }
218
- return results;
219
- },
220
- /**
221
- * Generate props one at a time (for rate limiting)
222
- */
223
- generateSequential: async (items) => {
224
- const results = [];
225
- for (const item of items) {
226
- const result = await mergeWithGenerated(schema, item, {
227
- model: config.model,
228
- system: config.system,
229
- });
230
- results.push(result);
231
- }
232
- return results;
233
- },
234
- };
235
- }
236
- //# sourceMappingURL=hoc.js.map
package/dist/hoc.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"hoc.js","sourceRoot":"","sources":["../src/hoc.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,15 +0,0 @@
1
- /**
2
- * ai-props - AI-powered props for intelligent component properties
3
- *
4
- * This package provides utilities for automatically generating
5
- * component props using AI based on schema definitions.
6
- *
7
- * @packageDocumentation
8
- */
9
- export * from './types.js';
10
- export { AI, createAIComponent, definePropsSchema, createComponentFactory, composeAIComponents, } from './ai.js';
11
- export { generateProps, getPropsSync, prefetchProps, generatePropsMany, mergeWithGenerated, configureAIProps, getConfig, resetConfig, } from './generate.js';
12
- export { MemoryPropsCache, LRUPropsCache, createCacheKey, getDefaultCache, configureCache, clearCache, DEFAULT_CACHE_TTL, } from './cache.js';
13
- export { createPropsEnhancer, createAsyncPropsProvider, createPropsTransformer, createConditionalGenerator, createBatchGenerator, type WithAIPropsOptions, } from './hoc.js';
14
- export { validateProps, hasRequiredProps, getMissingProps, isComplete, getMissingFromSchema, sanitizeProps, mergeWithDefaults, createValidator, assertValidProps, } from './validate.js';
15
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,cAAc,YAAY,CAAA;AAG1B,OAAO,EACL,EAAE,EACF,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,WAAW,GACZ,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAA"}
package/dist/index.js DELETED
@@ -1,21 +0,0 @@
1
- /**
2
- * ai-props - AI-powered props for intelligent component properties
3
- *
4
- * This package provides utilities for automatically generating
5
- * component props using AI based on schema definitions.
6
- *
7
- * @packageDocumentation
8
- */
9
- // Export types
10
- export * from './types.js';
11
- // Export core functionality
12
- export { AI, createAIComponent, definePropsSchema, createComponentFactory, composeAIComponents, } from './ai.js';
13
- // Export generation functions
14
- export { generateProps, getPropsSync, prefetchProps, generatePropsMany, mergeWithGenerated, configureAIProps, getConfig, resetConfig, } from './generate.js';
15
- // Export cache utilities
16
- export { MemoryPropsCache, LRUPropsCache, createCacheKey, getDefaultCache, configureCache, clearCache, DEFAULT_CACHE_TTL, } from './cache.js';
17
- // Export HOC and enhancers
18
- export { createPropsEnhancer, createAsyncPropsProvider, createPropsTransformer, createConditionalGenerator, createBatchGenerator, } from './hoc.js';
19
- // Export validation utilities
20
- export { validateProps, hasRequiredProps, getMissingProps, isComplete, getMissingFromSchema, sanitizeProps, mergeWithDefaults, createValidator, assertValidProps, } from './validate.js';
21
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAe;AACf,cAAc,YAAY,CAAA;AAE1B,4BAA4B;AAC5B,OAAO,EACL,EAAE,EACF,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAEhB,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,WAAW,GACZ,MAAM,eAAe,CAAA;AAEtB,yBAAyB;AACzB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAEnB,2BAA2B;AAC3B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,GAErB,MAAM,UAAU,CAAA;AAEjB,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAA"}
package/dist/types.d.ts DELETED
@@ -1,152 +0,0 @@
1
- /**
2
- * Type definitions for ai-props
3
- *
4
- * @packageDocumentation
5
- */
6
- import type { SimpleSchema } from 'ai-functions';
7
- /**
8
- * Configuration for AI prop generation
9
- */
10
- export interface AIPropsConfig {
11
- /** Model to use for generation (default: 'sonnet') */
12
- model?: string;
13
- /** System prompt for generation context */
14
- system?: string;
15
- /** Whether to cache generated props */
16
- cache?: boolean;
17
- /** Cache TTL in milliseconds (default: 5 minutes) */
18
- cacheTTL?: number;
19
- /** Custom generation function */
20
- generate?: <T>(schema: SimpleSchema, context: Record<string, unknown>) => Promise<T>;
21
- }
22
- /**
23
- * Schema definition for component props
24
- * Can be a SimpleSchema or a named type string
25
- */
26
- export type PropSchema = SimpleSchema | string;
27
- /**
28
- * Options for prop generation
29
- */
30
- export interface GeneratePropsOptions {
31
- /** Schema defining the props to generate */
32
- schema: PropSchema;
33
- /** Partial props to use as context */
34
- context?: Record<string, unknown>;
35
- /** Additional prompt context */
36
- prompt?: string;
37
- /** Model to use */
38
- model?: string;
39
- /** System prompt */
40
- system?: string;
41
- }
42
- /**
43
- * Result of prop generation
44
- */
45
- export interface GeneratePropsResult<T> {
46
- /** Generated props */
47
- props: T;
48
- /** Whether props were from cache */
49
- cached: boolean;
50
- /** Generation metadata */
51
- metadata?: {
52
- model: string;
53
- tokens?: number;
54
- duration?: number;
55
- };
56
- }
57
- /**
58
- * Cache entry for generated props
59
- */
60
- export interface PropsCacheEntry<T = unknown> {
61
- props: T;
62
- timestamp: number;
63
- key: string;
64
- }
65
- /**
66
- * Props cache interface
67
- */
68
- export interface PropsCache {
69
- get<T>(key: string): PropsCacheEntry<T> | undefined;
70
- set<T>(key: string, props: T): void;
71
- delete(key: string): boolean;
72
- clear(): void;
73
- size: number;
74
- }
75
- /**
76
- * Hook result for useAIProps
77
- */
78
- export interface UseAIPropsResult<T> {
79
- /** Generated props (null while loading) */
80
- props: T | null;
81
- /** Whether generation is in progress */
82
- loading: boolean;
83
- /** Error if generation failed */
84
- error: Error | null;
85
- /** Regenerate props */
86
- regenerate: () => Promise<void>;
87
- /** Whether props were from cache */
88
- cached: boolean;
89
- }
90
- /**
91
- * Options for useAIProps hook
92
- */
93
- export interface UseAIPropsOptions<T> extends Omit<GeneratePropsOptions, 'context'> {
94
- /** Partial props to merge and use as context */
95
- partialProps?: Partial<T>;
96
- /** Skip generation if all required props are provided */
97
- skipIfComplete?: boolean;
98
- /** Dependencies that trigger regeneration */
99
- deps?: unknown[];
100
- }
101
- /**
102
- * Component wrapper options for AI()
103
- */
104
- export interface AIComponentOptions<P> {
105
- /** Schema for the component props */
106
- schema: PropSchema;
107
- /** Default props */
108
- defaults?: Partial<P>;
109
- /** Props that are always required (never generated) */
110
- required?: (keyof P)[];
111
- /** Props to exclude from generation */
112
- exclude?: (keyof P)[];
113
- /** AI generation config */
114
- config?: AIPropsConfig;
115
- }
116
- /**
117
- * Enhanced component type with AI capabilities
118
- */
119
- export interface AIComponent<P> {
120
- (props: Partial<P>): Promise<P>;
121
- /** Original schema */
122
- schema: PropSchema;
123
- /** Generate props without rendering */
124
- generateProps: (context?: Partial<P>) => Promise<P>;
125
- /** Configuration */
126
- config: AIPropsConfig;
127
- }
128
- /**
129
- * Type helper to extract props type from a schema
130
- */
131
- export type InferProps<S extends PropSchema> = S extends SimpleSchema ? S extends string ? string : S extends {
132
- [key: string]: SimpleSchema;
133
- } ? {
134
- [K in keyof S]: InferProps<S[K]>;
135
- } : unknown : unknown;
136
- /**
137
- * Validation result for props
138
- */
139
- export interface ValidationResult {
140
- valid: boolean;
141
- errors: ValidationError[];
142
- }
143
- /**
144
- * Individual validation error
145
- */
146
- export interface ValidationError {
147
- path: string;
148
- message: string;
149
- expected?: string;
150
- received?: unknown;
151
- }
152
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * Type definitions for ai-props
3
- *
4
- * @packageDocumentation
5
- */
6
- export {};
7
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,58 +0,0 @@
1
- /**
2
- * Validation utilities for ai-props
3
- *
4
- * Provides prop validation against schemas.
5
- *
6
- * @packageDocumentation
7
- */
8
- import type { PropSchema, ValidationResult } from './types.js';
9
- /**
10
- * Validate props against a schema
11
- *
12
- * @example
13
- * ```ts
14
- * const result = validateProps(
15
- * { name: 'John', age: '25' }, // props
16
- * { name: 'Name', age: 'Age (number)' } // schema
17
- * )
18
- *
19
- * if (!result.valid) {
20
- * console.log(result.errors)
21
- * // [{ path: 'age', message: 'Expected number, got string' }]
22
- * }
23
- * ```
24
- */
25
- export declare function validateProps(props: Record<string, unknown>, schema: PropSchema): ValidationResult;
26
- /**
27
- * Check if all required props are present
28
- */
29
- export declare function hasRequiredProps<P extends Record<string, unknown>>(props: Partial<P>, required: (keyof P)[]): boolean;
30
- /**
31
- * Get list of missing required props
32
- */
33
- export declare function getMissingProps<P extends Record<string, unknown>>(props: Partial<P>, required: (keyof P)[]): (keyof P)[];
34
- /**
35
- * Check if props are complete according to schema
36
- */
37
- export declare function isComplete(props: Record<string, unknown>, schema: PropSchema): boolean;
38
- /**
39
- * Get list of missing props according to schema
40
- */
41
- export declare function getMissingFromSchema(props: Record<string, unknown>, schema: PropSchema): string[];
42
- /**
43
- * Sanitize props by removing extra keys not in schema
44
- */
45
- export declare function sanitizeProps<P extends Record<string, unknown>>(props: P, schema: PropSchema): Partial<P>;
46
- /**
47
- * Merge props with defaults, respecting schema types
48
- */
49
- export declare function mergeWithDefaults<P extends Record<string, unknown>>(props: Partial<P>, defaults: Partial<P>, schema: PropSchema): Partial<P>;
50
- /**
51
- * Create a props validator function
52
- */
53
- export declare function createValidator<P extends Record<string, unknown>>(schema: PropSchema): (props: Partial<P>) => ValidationResult;
54
- /**
55
- * Assert props are valid, throwing on error
56
- */
57
- export declare function assertValidProps(props: Record<string, unknown>, schema: PropSchema): void;
58
- //# sourceMappingURL=validate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAA;AAE/E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,UAAU,GACjB,gBAAgB,CAwBlB;AAuID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GACpB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GACpB,CAAC,MAAM,CAAC,CAAC,EAAE,CAEb;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,UAAU,GACjB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,UAAU,GACjB,MAAM,EAAE,CAMV;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,CAAC,CAAC,CAeZ;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAsBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,MAAM,EAAE,UAAU,GACjB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAEzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,UAAU,GACjB,IAAI,CAMN"}