@atomic-ehr/codegen 0.0.1-canary.20250808233344.0440b0e → 0.0.1-canary.20250810124254.c6a6c21

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.
@@ -4,7 +4,7 @@
4
4
  * Provides a fluent, chainable API for common codegen use cases with pre-built generators.
5
5
  * This builder pattern allows users to configure generation in a declarative way.
6
6
  */
7
- import type { TypeSchemaConfig } from "../config";
7
+ import type { Config, RestClientConfig, TypeSchemaConfig } from "../config";
8
8
  import { type TypeSchema } from "../typeschema";
9
9
  /**
10
10
  * Configuration options for the API builder
@@ -77,6 +77,10 @@ export declare class APIBuilder {
77
77
  strictValidation?: boolean;
78
78
  includePerformanceMetrics?: boolean;
79
79
  }): APIBuilder;
80
+ /**
81
+ * Configure REST client generation
82
+ */
83
+ restClient(options?: RestClientConfig): APIBuilder;
80
84
  /**
81
85
  * Set a progress callback for monitoring generation
82
86
  */
@@ -93,6 +97,10 @@ export declare class APIBuilder {
93
97
  * Enable/disable validation
94
98
  */
95
99
  validate(enabled?: boolean): APIBuilder;
100
+ /**
101
+ * Ensure TypeScript generator is configured if REST client is configured
102
+ */
103
+ private ensureTypeScriptForRestClient;
96
104
  /**
97
105
  * Execute the generation process
98
106
  */
@@ -129,6 +137,10 @@ export declare class APIBuilder {
129
137
  * Create a new API builder instance
130
138
  */
131
139
  export declare function createAPI(options?: APIBuilderOptions): APIBuilder;
140
+ /**
141
+ * Create an API builder instance from a configuration object
142
+ */
143
+ export declare function createAPIFromConfig(config: Config): APIBuilder;
132
144
  /**
133
145
  * Convenience function for quick TypeScript generation from a package
134
146
  */
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/api/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/api/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * REST Client Generator
3
+ *
4
+ * Generates a fetch-based FHIR REST client with TypeScript autocompletion
5
+ * and type safety for all FHIR resources.
6
+ */
7
+ import type { RestClientConfig } from "../../config";
8
+ import type { TypeSchema } from "../../typeschema";
9
+ /**
10
+ * Options for the REST Client generator
11
+ * Extends RestClientConfig with outputDir
12
+ */
13
+ export interface RestClientOptions extends RestClientConfig {
14
+ outputDir: string;
15
+ }
16
+ /**
17
+ * Generated file result
18
+ */
19
+ export interface GeneratedRestClient {
20
+ path: string;
21
+ filename: string;
22
+ content: string;
23
+ exports: string[];
24
+ }
25
+ /**
26
+ * REST Client Generator
27
+ *
28
+ * Generates a type-safe FHIR REST client with autocompletion for all
29
+ * available resource types.
30
+ */
31
+ export declare class RestClientGenerator {
32
+ private options;
33
+ private resourceTypes;
34
+ private searchParameterEnhancer;
35
+ private validationGenerator;
36
+ constructor(options: RestClientOptions);
37
+ /**
38
+ * Collect resource types from schemas
39
+ */
40
+ private collectResourceTypes;
41
+ /**
42
+ * Generate the REST client from TypeSchema documents
43
+ */
44
+ generate(schemas: TypeSchema[]): Promise<GeneratedRestClient[]>;
45
+ /**
46
+ * Generate the main client file
47
+ */
48
+ private generateClientFile;
49
+ /**
50
+ * Generate the types file
51
+ */
52
+ private generateTypesFile;
53
+ /**
54
+ * Generate error handling code
55
+ */
56
+ private generateErrorHandling;
57
+ /**
58
+ * Generate error handling methods
59
+ */
60
+ private generateErrorHandlingMethods;
61
+ /**
62
+ * Set output directory
63
+ */
64
+ setOutputDir(directory: string): void;
65
+ /**
66
+ * Update generator options
67
+ */
68
+ setOptions(options: Partial<RestClientOptions>): void;
69
+ /**
70
+ * Get current options
71
+ */
72
+ getOptions(): Required<RestClientOptions>;
73
+ /**
74
+ * Generate enhanced search parameters file
75
+ */
76
+ private generateEnhancedSearchParamsFile;
77
+ /**
78
+ * Generate validation configuration fields
79
+ */
80
+ private generateValidationConfigFields;
81
+ /**
82
+ * Generate validation types file
83
+ */
84
+ private generateValidationTypesFile;
85
+ /**
86
+ * Generate resource validators file
87
+ */
88
+ private generateValidatorsFile;
89
+ /**
90
+ * Generate CRUD methods with conditional validation support
91
+ */
92
+ private generateCRUDMethods;
93
+ /**
94
+ * Generate validation code for CRUD operations
95
+ */
96
+ private generateValidationCode;
97
+ /**
98
+ * Generate the search method with conditional enhanced search support
99
+ */
100
+ private generateSearchMethod;
101
+ /**
102
+ * Generate validation methods for the client
103
+ */
104
+ private generateValidationMethods;
105
+ /**
106
+ * Generate search parameter handling code based on configuration
107
+ */
108
+ private generateSearchParameterHandlingCode;
109
+ /**
110
+ * Generate utility file with ResourceTypeMap
111
+ */
112
+ private generateUtilityFile;
113
+ private ensureDirectoryExists;
114
+ }
115
+ //# sourceMappingURL=rest-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-client.d.ts","sourceRoot":"","sources":["../../../src/api/generators/rest-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AAIzE;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IAC1D,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,uBAAuB,CAA0B;IACzD,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,OAAO,EAAE,iBAAiB;IA6BtC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAwFrE;;OAEG;YACW,kBAAkB;IAoKhC;;OAEG;YACW,iBAAiB;IAqJ/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA0BpC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAIrD;;OAEG;IACH,UAAU,IAAI,QAAQ,CAAC,iBAAiB,CAAC;IAIzC;;OAEG;YACW,gCAAgC;IAsC9C;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAoBtC;;OAEG;YACW,2BAA2B;IAkBzC;;OAEG;YACW,sBAAsB;IAiBpC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmE3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsE5B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA+BjC;;OAEG;IACH,OAAO,CAAC,mCAAmC;IAqB3C;;OAEG;YACW,mBAAmB;YA+BnB,qBAAqB;CAInC"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Search Parameter Enhancer
3
+ *
4
+ * Generates enhanced search parameter types and interfaces for FHIR resources.
5
+ * Provides better type safety, validation, and developer experience for search operations.
6
+ */
7
+ import type { TypeSchema } from "../../typeschema";
8
+ /**
9
+ * Search parameter modifier types for enhanced type safety
10
+ */
11
+ export interface SearchModifiers {
12
+ /** String search modifiers */
13
+ StringModifier: {
14
+ exact: string;
15
+ } | {
16
+ contains: string;
17
+ } | {
18
+ missing: boolean;
19
+ };
20
+ /** Date parameter with prefix support */
21
+ DateParameter: string | {
22
+ gt: string;
23
+ } | {
24
+ lt: string;
25
+ } | {
26
+ ge: string;
27
+ } | {
28
+ le: string;
29
+ } | {
30
+ eq: string;
31
+ } | {
32
+ ne: string;
33
+ } | {
34
+ missing: boolean;
35
+ };
36
+ /** Token parameter for coded values */
37
+ TokenParameter: string | {
38
+ system: string;
39
+ code: string;
40
+ } | {
41
+ code: string;
42
+ } | {
43
+ system: string;
44
+ } | {
45
+ missing: boolean;
46
+ };
47
+ /** Token search options (for better autocomplete when enum values exist) */
48
+ TokenSearchOptions: {
49
+ system: string;
50
+ code: string;
51
+ } | {
52
+ code: string;
53
+ } | {
54
+ system: string;
55
+ } | {
56
+ missing: boolean;
57
+ };
58
+ /** Reference parameter for resource references */
59
+ ReferenceParameter: string | {
60
+ reference: string;
61
+ } | {
62
+ identifier: string;
63
+ } | {
64
+ missing: boolean;
65
+ };
66
+ /** Number parameter with range support */
67
+ NumberParameter: number | {
68
+ gt: number;
69
+ } | {
70
+ lt: number;
71
+ } | {
72
+ ge: number;
73
+ } | {
74
+ le: number;
75
+ } | {
76
+ eq: number;
77
+ } | {
78
+ ne: number;
79
+ } | {
80
+ missing: boolean;
81
+ };
82
+ /** Quantity parameter for measurements */
83
+ QuantityParameter: number | string | {
84
+ value: number;
85
+ unit?: string;
86
+ system?: string;
87
+ code?: string;
88
+ } | {
89
+ missing: boolean;
90
+ };
91
+ }
92
+ /**
93
+ * Base search parameters available for all resources
94
+ */
95
+ export interface BaseEnhancedSearchParams {
96
+ /** Number of results to return */
97
+ _count?: number;
98
+ /** Pagination offset */
99
+ _offset?: number;
100
+ /** Sort order */
101
+ _sort?: string | string[];
102
+ /** Summary mode */
103
+ _summary?: "true" | "false" | "text" | "data" | "count";
104
+ /** Elements to include */
105
+ _elements?: string | string[];
106
+ /** Filter by last updated */
107
+ _lastUpdated?: SearchModifiers["DateParameter"];
108
+ /** Profile filter */
109
+ _profile?: string | string[];
110
+ /** Security label filter */
111
+ _security?: string | string[];
112
+ /** Tag filter */
113
+ _tag?: SearchModifiers["TokenParameter"] | SearchModifiers["TokenParameter"][];
114
+ /** Filter by ID */
115
+ _id?: string | string[];
116
+ /** Text search */
117
+ _text?: string;
118
+ /** Content search */
119
+ _content?: string;
120
+ }
121
+ /**
122
+ * Search Parameter Enhancer class
123
+ *
124
+ * Generates enhanced type-safe search parameters and validation helpers
125
+ * for FHIR REST client operations.
126
+ */
127
+ export declare class SearchParameterEnhancer {
128
+ private resourceTypes;
129
+ private resourceSearchParams;
130
+ private autocompleteEnabled;
131
+ private valueSetEnumsEnabled;
132
+ private availableEnumTypes;
133
+ private static readonly BASE_PARAM_NAMES;
134
+ constructor(options?: {
135
+ autocomplete?: boolean;
136
+ valueSetEnums?: boolean;
137
+ });
138
+ /**
139
+ * Generate per-resource SearchParamName unions (for IDE autocomplete)
140
+ */
141
+ private generateSearchParamNameUnions;
142
+ /**
143
+ * Collect resource types and their search parameters from schemas
144
+ */
145
+ collectResourceData(schemas: TypeSchema[]): void;
146
+ /**
147
+ * Collect search parameters for a specific resource type
148
+ */
149
+ private collectSearchParameters;
150
+ /**
151
+ * Add common search parameters based on resource type
152
+ */
153
+ private addCommonSearchParameters;
154
+ /**
155
+ * Generate value set union type aliases (curated set)
156
+ */
157
+ private generateValueSetUnionTypes;
158
+ /**
159
+ * Pre-populate enum types by processing all search parameters
160
+ */
161
+ private preprocessEnumTypes;
162
+ /**
163
+ * Convert string to PascalCase
164
+ */
165
+ private toPascalCase;
166
+ /**
167
+ * Generate enhanced search parameter types
168
+ */
169
+ generateEnhancedSearchTypes(): string;
170
+ /**
171
+ * Generate resource-specific search parameter interfaces
172
+ */
173
+ private generateResourceSpecificSearchInterfaces;
174
+ /**
175
+ * Generate search interface for a specific resource type
176
+ */
177
+ private generateResourceSearchInterface;
178
+ /**
179
+ * Map FHIR search parameter types to TypeScript enhanced types
180
+ */
181
+ private getTypeScriptTypeForSearchParameter;
182
+ /**
183
+ * Get collected resource types
184
+ */
185
+ getResourceTypes(): Set<string>;
186
+ }
187
+ //# sourceMappingURL=search-parameter-enhancer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-parameter-enhancer.d.ts","sourceRoot":"","sources":["../../../src/api/generators/search-parameter-enhancer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Common types used in generated code
3
+ */
4
+ /**
5
+ * Result of validation operation
6
+ */
7
+ export interface ValidationResult {
8
+ valid: boolean;
9
+ errors: string[];
10
+ }
11
+ /**
12
+ * Base type for FHIR resources
13
+ */
14
+ export interface Resource {
15
+ resourceType: string;
16
+ id?: string;
17
+ meta?: Meta;
18
+ }
19
+ /**
20
+ * FHIR Meta element
21
+ */
22
+ export interface Meta {
23
+ versionId?: string;
24
+ lastUpdated?: string;
25
+ source?: string;
26
+ profile?: string[];
27
+ security?: Coding[];
28
+ tag?: Coding[];
29
+ }
30
+ /**
31
+ * FHIR Coding element
32
+ */
33
+ export interface Coding {
34
+ system?: string;
35
+ version?: string;
36
+ code?: string;
37
+ display?: string;
38
+ userSelected?: boolean;
39
+ }
40
+ /**
41
+ * Generic resource type mapping interface
42
+ * Maps FHIR resource type strings to their corresponding TypeScript interfaces
43
+ */
44
+ export interface ResourceTypeMap {
45
+ [resourceType: string]: any;
46
+ }
47
+ /**
48
+ * Type-safe resource type mapping generator
49
+ * Creates a mapping from resource type strings to interfaces for a given set of resource types
50
+ */
51
+ export type CreateResourceTypeMap<T extends readonly string[]> = {
52
+ [K in T[number]]: any;
53
+ };
54
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/generators/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC/B,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI;KAC/D,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG;CACrB,CAAC"}
@@ -44,6 +44,10 @@ export declare class TypeScriptAPIGenerator {
44
44
  private exports;
45
45
  private resourceTypes;
46
46
  private currentSchemaName?;
47
+ private profileTypes;
48
+ private enumTypes;
49
+ private globalEnumTypes;
50
+ private fieldEnumMap;
47
51
  constructor(options: TypeScriptAPIOptions);
48
52
  /**
49
53
  * Transform a single TypeSchema to TypeScript
@@ -125,5 +129,45 @@ export declare class TypeScriptAPIGenerator {
125
129
  * Get filename for schema
126
130
  */
127
131
  private getFilename;
132
+ /**
133
+ * Generate TypeScript for a profile schema
134
+ */
135
+ private generateProfile;
136
+ /**
137
+ * Generate TypeScript for a profile schema
138
+ */
139
+ private generateTypeScriptForProfile;
140
+ /**
141
+ * Generate TypeScript for a profile field with constraints
142
+ */
143
+ private generateProfileField;
144
+ /**
145
+ * Generate profile validator function
146
+ */
147
+ private generateProfileValidator;
148
+ /**
149
+ * Generate TypeScript field with profile constraints applied
150
+ */
151
+ private generateConstrainedProfileField;
152
+ /**
153
+ * Generate validation logic for a specific constraint
154
+ */
155
+ private generateConstraintValidation;
156
+ /**
157
+ * Generate an enum type for a field with enumerated values
158
+ */
159
+ private generateEnumType;
160
+ /**
161
+ * Generate all enum type definitions
162
+ */
163
+ private generateEnumTypes;
164
+ /**
165
+ * Convert string to PascalCase
166
+ */
167
+ private toPascalCase;
168
+ /**
169
+ * Generate profile type guard function
170
+ */
171
+ private generateProfileTypeGuard;
128
172
  }
129
173
  //# sourceMappingURL=typescript.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/api/generators/typescript.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAMN,KAAK,UAAU,EAIf,MAAM,kBAAkB,CAAC;AAO1B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;IAC9C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAmCD;;;;;GAKG;AACH,qBAAa,sBAAsB;IAClC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,iBAAiB,CAAC,CAAS;gBAEvB,OAAO,EAAE,oBAAoB;IAYzC;;OAEG;IACG,eAAe,CACpB,MAAM,EAAE,UAAU,GAChB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAgC3C;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA+DnC;;OAEG;IACH,OAAO,CAAC,cAAc;IAyCtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAuBnC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkC5B,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACG,gBAAgB,CACrB,OAAO,EAAE,UAAU,EAAE,GACnB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAajC;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAkE/D,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA6B5D;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;IAIxD;;OAEG;IACH,UAAU,IAAI,QAAQ,CAAC,oBAAoB,CAAC;YAI9B,iBAAiB;YA2IjB,qBAAqB;IAKnC;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;YACW,2BAA2B;IA+BzC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4C9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,OAAO;IAaf;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,WAAW;CAInB"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/api/generators/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Validation Generator
3
+ *
4
+ * Generates client-side validation for FHIR resources including validation types,
5
+ * resource validators, and validation helpers for the REST client.
6
+ */
7
+ import type { TypeSchema } from "../../typeschema";
8
+ /**
9
+ * Validation options for resource validation
10
+ */
11
+ export interface ValidationOptions {
12
+ /** Validation profile to use (strict, lenient, etc.) */
13
+ profile?: "strict" | "lenient" | "minimal";
14
+ /** Whether to throw on validation errors or return result */
15
+ throwOnError?: boolean;
16
+ /** Whether to validate required fields */
17
+ validateRequired?: boolean;
18
+ /** Whether to validate cardinality constraints */
19
+ validateCardinality?: boolean;
20
+ /** Whether to validate data types */
21
+ validateTypes?: boolean;
22
+ /** Whether to validate value constraints */
23
+ validateConstraints?: boolean;
24
+ /** Whether to collect performance metrics */
25
+ collectMetrics?: boolean;
26
+ }
27
+ /**
28
+ * Validation error details
29
+ */
30
+ export interface ValidationError {
31
+ /** Error severity */
32
+ severity: "error" | "warning" | "information";
33
+ /** Error code */
34
+ code: string;
35
+ /** Human-readable error message */
36
+ message: string;
37
+ /** Path to the invalid element */
38
+ path: string;
39
+ /** Current value that failed validation */
40
+ value?: unknown;
41
+ /** Expected value or constraint */
42
+ expected?: string;
43
+ /** Suggestion for fixing the error */
44
+ suggestion?: string;
45
+ }
46
+ /**
47
+ * Validation warning details
48
+ */
49
+ export interface ValidationWarning {
50
+ /** Warning code */
51
+ code: string;
52
+ /** Human-readable warning message */
53
+ message: string;
54
+ /** Path to the element */
55
+ path: string;
56
+ /** Current value */
57
+ value?: unknown;
58
+ /** Suggestion for improvement */
59
+ suggestion?: string;
60
+ }
61
+ /**
62
+ * Validation result
63
+ */
64
+ export interface ValidationResult {
65
+ /** Whether validation passed */
66
+ valid: boolean;
67
+ /** List of validation errors */
68
+ errors: ValidationError[];
69
+ /** List of validation warnings */
70
+ warnings: ValidationWarning[];
71
+ /** Validation performance metrics */
72
+ metrics?: {
73
+ /** Time taken for validation in milliseconds */
74
+ duration: number;
75
+ /** Number of elements validated */
76
+ elementsValidated: number;
77
+ /** Number of constraints checked */
78
+ constraintsChecked: number;
79
+ };
80
+ }
81
+ /**
82
+ * Validation Generator class
83
+ *
84
+ * Generates client-side validation logic for FHIR resources including
85
+ * validation types, validators, and integration helpers.
86
+ */
87
+ export declare class ValidationGenerator {
88
+ private resourceTypes;
89
+ private resourceSchemas;
90
+ /**
91
+ * Collect resource types and schemas for validation generation
92
+ */
93
+ collectResourceData(schemas: TypeSchema[]): void;
94
+ /**
95
+ * Generate validation types and interfaces
96
+ */
97
+ generateValidationTypes(): string;
98
+ /**
99
+ * Generate resource validators for all resource types
100
+ */
101
+ generateResourceValidators(): string;
102
+ /**
103
+ * Generate resource-specific validators
104
+ */
105
+ private generateResourceSpecificValidators;
106
+ /**
107
+ * Generate a specific validator for a key resource type
108
+ */
109
+ private generateResourceValidator;
110
+ /**
111
+ * Generate a generic validator for less common resource types
112
+ */
113
+ private generateGenericResourceValidator;
114
+ /**
115
+ * Get validation rules for a specific resource type
116
+ */
117
+ private getValidationRules;
118
+ /**
119
+ * Generate resource-specific constraint validation
120
+ */
121
+ private generateResourceSpecificConstraints;
122
+ /**
123
+ * Get collected resource types
124
+ */
125
+ getResourceTypes(): Set<string>;
126
+ }
127
+ //# sourceMappingURL=validation-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-generator.d.ts","sourceRoot":"","sources":["../../../src/api/generators/validation-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,wDAAwD;IACxD,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3C,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kDAAkD;IAClD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6CAA6C;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,qBAAqB;IACrB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;IAC9C,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,gCAAgC;IAChC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,qCAAqC;IACrC,OAAO,CAAC,EAAE;QACT,gDAAgD;QAChD,QAAQ,EAAE,MAAM,CAAC;QACjB,mCAAmC;QACnC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oCAAoC;QACpC,kBAAkB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACF;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,eAAe,CAAiC;IAExD;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAgBhD;;OAEG;IACH,uBAAuB,IAAI,MAAM;IA4GjC;;OAEG;IACH,0BAA0B,IAAI,MAAM;IAwPpC;;OAEG;IACH,OAAO,CAAC,kCAAkC;IA4B1C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmCjC;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAoCxC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+F1B;;OAEG;IACH,OAAO,CAAC,mCAAmC;IAqD3C;;OAEG;IACH,gBAAgB,IAAI,GAAG,CAAC,MAAM,CAAC;CAG/B"}
@@ -9,7 +9,9 @@
9
9
  export { TypeSchemaCache, TypeSchemaGenerator, TypeSchemaParser, } from "../typeschema";
10
10
  export type { PackageInfo, TypeSchemaField, TypeSchemaIdentifier, } from "../typeschema/types";
11
11
  export type { APIBuilderOptions, GenerationResult, ProgressCallback, } from "./builder";
12
- export { APIBuilder, createAPI, generateTypesFromFiles, generateTypesFromPackage, } from "./builder";
12
+ export { APIBuilder, createAPI, createAPIFromConfig, generateTypesFromFiles, generateTypesFromPackage, } from "./builder";
13
+ export type { GeneratedRestClient, RestClientOptions, } from "./generators/rest-client";
14
+ export { RestClientGenerator } from "./generators/rest-client";
13
15
  export type { GeneratedFile, TypeScriptAPIOptions, } from "./generators/typescript";
14
16
  export { TypeScriptAPIGenerator } from "./generators/typescript";
15
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACN,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACX,WAAW,EACX,eAAe,EACf,oBAAoB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACN,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,wBAAwB,GACxB,MAAM,WAAW,CAAC;AACnB,YAAY,EACX,aAAa,EACb,oBAAoB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACN,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACX,WAAW,EACX,eAAe,EACf,oBAAoB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACN,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,GACxB,MAAM,WAAW,CAAC;AACnB,YAAY,EACX,mBAAmB,EACnB,iBAAiB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACX,aAAa,EACb,oBAAoB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,UAAU,YAAa,SAAQ,OAAO;IACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;CACjD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,EAAE,EAAE,YAAY,CA6P3D,CAAC"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,UAAU,YAAa,SAAQ,OAAO;IACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;CACjD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,EAAE,EAAE,YAAY,CA8P3D,CAAC"}