@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.
- package/dist/api/builder.d.ts +13 -1
- package/dist/api/builder.d.ts.map +1 -1
- package/dist/api/generators/rest-client.d.ts +115 -0
- package/dist/api/generators/rest-client.d.ts.map +1 -0
- package/dist/api/generators/search-parameter-enhancer.d.ts +187 -0
- package/dist/api/generators/search-parameter-enhancer.d.ts.map +1 -0
- package/dist/api/generators/types.d.ts +54 -0
- package/dist/api/generators/types.d.ts.map +1 -0
- package/dist/api/generators/typescript.d.ts +44 -0
- package/dist/api/generators/typescript.d.ts.map +1 -1
- package/dist/api/generators/validation-generator.d.ts +127 -0
- package/dist/api/generators/validation-generator.d.ts.map +1 -0
- package/dist/api/index.d.ts +3 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/index.js +5 -2
- package/dist/config.d.ts +56 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/{index-k2baxg01.js → index-t2hbzagh.js} +3113 -282
- package/dist/index.js +5 -1
- package/dist/typeschema/core/transformer.d.ts +6 -2
- package/dist/typeschema/core/transformer.d.ts.map +1 -1
- package/dist/typeschema/profile/processor.d.ts +2 -2
- package/dist/typeschema/profile/processor.d.ts.map +1 -1
- package/dist/typeschema/types.d.ts +171 -1
- package/dist/typeschema/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/api/builder.d.ts
CHANGED
|
@@ -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":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,
|
|
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;
|
|
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"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -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
|
/**
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|