@atomic-ehr/codegen 0.0.1-canary.20250808231821.ab61009

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 (64) hide show
  1. package/README.md +446 -0
  2. package/dist/api/builder.d.ts +147 -0
  3. package/dist/api/builder.d.ts.map +1 -0
  4. package/dist/api/generators/typescript.d.ts +129 -0
  5. package/dist/api/generators/typescript.d.ts.map +1 -0
  6. package/dist/api/index.d.ts +51 -0
  7. package/dist/api/index.d.ts.map +1 -0
  8. package/dist/cli/commands/generate/typescript.d.ts +11 -0
  9. package/dist/cli/commands/generate/typescript.d.ts.map +1 -0
  10. package/dist/cli/commands/generate.d.ts +23 -0
  11. package/dist/cli/commands/generate.d.ts.map +1 -0
  12. package/dist/cli/commands/index.d.ts +40 -0
  13. package/dist/cli/commands/index.d.ts.map +1 -0
  14. package/dist/cli/commands/typeschema/generate.d.ts +18 -0
  15. package/dist/cli/commands/typeschema/generate.d.ts.map +1 -0
  16. package/dist/cli/commands/typeschema.d.ts +11 -0
  17. package/dist/cli/commands/typeschema.d.ts.map +1 -0
  18. package/dist/cli/index.d.ts +11 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/utils/prompts.d.ts +57 -0
  21. package/dist/cli/utils/prompts.d.ts.map +1 -0
  22. package/dist/cli/utils/spinner.d.ts +111 -0
  23. package/dist/cli/utils/spinner.d.ts.map +1 -0
  24. package/dist/config.d.ts +171 -0
  25. package/dist/config.d.ts.map +1 -0
  26. package/dist/index.d.ts +83 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +4008 -0
  29. package/dist/logger.d.ts +158 -0
  30. package/dist/logger.d.ts.map +1 -0
  31. package/dist/types/base.d.ts +66 -0
  32. package/dist/types/base.d.ts.map +1 -0
  33. package/dist/typeschema/cache.d.ts +105 -0
  34. package/dist/typeschema/cache.d.ts.map +1 -0
  35. package/dist/typeschema/core/binding.d.ts +29 -0
  36. package/dist/typeschema/core/binding.d.ts.map +1 -0
  37. package/dist/typeschema/core/field-builder.d.ts +45 -0
  38. package/dist/typeschema/core/field-builder.d.ts.map +1 -0
  39. package/dist/typeschema/core/identifier.d.ts +28 -0
  40. package/dist/typeschema/core/identifier.d.ts.map +1 -0
  41. package/dist/typeschema/core/nested-types.d.ts +25 -0
  42. package/dist/typeschema/core/nested-types.d.ts.map +1 -0
  43. package/dist/typeschema/core/transformer.d.ts +18 -0
  44. package/dist/typeschema/core/transformer.d.ts.map +1 -0
  45. package/dist/typeschema/generator.d.ts +57 -0
  46. package/dist/typeschema/generator.d.ts.map +1 -0
  47. package/dist/typeschema/index.d.ts +66 -0
  48. package/dist/typeschema/index.d.ts.map +1 -0
  49. package/dist/typeschema/parser.d.ts +92 -0
  50. package/dist/typeschema/parser.d.ts.map +1 -0
  51. package/dist/typeschema/profile/processor.d.ts +14 -0
  52. package/dist/typeschema/profile/processor.d.ts.map +1 -0
  53. package/dist/typeschema/schema.d.ts +486 -0
  54. package/dist/typeschema/schema.d.ts.map +1 -0
  55. package/dist/typeschema/types.d.ts +326 -0
  56. package/dist/typeschema/types.d.ts.map +1 -0
  57. package/dist/typeschema/utils.d.ts +7 -0
  58. package/dist/typeschema/utils.d.ts.map +1 -0
  59. package/dist/typeschema/value-set/processor.d.ts +20 -0
  60. package/dist/typeschema/value-set/processor.d.ts.map +1 -0
  61. package/dist/utils.d.ts +23 -0
  62. package/dist/utils.d.ts.map +1 -0
  63. package/package.json +60 -0
  64. package/src/index.ts +86 -0
@@ -0,0 +1,171 @@
1
+ /**
2
+ * New Config Schema for High-Level API
3
+ *
4
+ * Simple configuration system compatible ONLY with the new high-level APIBuilder.
5
+ * All legacy config functionality has been removed.
6
+ */
7
+ /**
8
+ * TypeScript generator configuration options
9
+ */
10
+ export interface TypeScriptGeneratorConfig {
11
+ moduleFormat?: "esm" | "cjs";
12
+ generateIndex?: boolean;
13
+ includeDocuments?: boolean;
14
+ namingConvention?: "PascalCase" | "camelCase";
15
+ strictMode?: boolean;
16
+ generateValidators?: boolean;
17
+ generateGuards?: boolean;
18
+ includeProfiles?: boolean;
19
+ includeExtensions?: boolean;
20
+ includeValueSets?: boolean;
21
+ includeCodeSystems?: boolean;
22
+ includeOperations?: boolean;
23
+ fhirVersion?: "R4" | "R5";
24
+ resourceTypes?: string[];
25
+ maxDepth?: number;
26
+ generateBuilders?: boolean;
27
+ builderOptions?: {
28
+ includeValidation?: boolean;
29
+ includeFactoryMethods?: boolean;
30
+ includeInterfaces?: boolean;
31
+ generateNestedBuilders?: boolean;
32
+ includeHelperMethods?: boolean;
33
+ supportPartialBuild?: boolean;
34
+ includeJSDoc?: boolean;
35
+ generateFactories?: boolean;
36
+ includeTypeGuards?: boolean;
37
+ handleChoiceTypes?: boolean;
38
+ generateArrayHelpers?: boolean;
39
+ };
40
+ validatorOptions?: {
41
+ includeCardinality?: boolean;
42
+ includeTypes?: boolean;
43
+ includeConstraints?: boolean;
44
+ includeInvariants?: boolean;
45
+ validateRequired?: boolean;
46
+ allowAdditional?: boolean;
47
+ strictValidation?: boolean;
48
+ collectMetrics?: boolean;
49
+ generateAssertions?: boolean;
50
+ generatePartialValidators?: boolean;
51
+ optimizePerformance?: boolean;
52
+ includeJSDoc?: boolean;
53
+ generateCompositeValidators?: boolean;
54
+ };
55
+ guardOptions?: {
56
+ includeRuntimeValidation?: boolean;
57
+ includeErrorMessages?: boolean;
58
+ treeShakeable?: boolean;
59
+ targetTSVersion?: "3.8" | "4.0" | "4.5" | "5.0";
60
+ strictGuards?: boolean;
61
+ includeNullChecks?: boolean;
62
+ verbose?: boolean;
63
+ };
64
+ }
65
+ /**
66
+ * TypeSchema Configuration
67
+ * Controls TypeSchema generation and caching behavior
68
+ */
69
+ export interface TypeSchemaConfig {
70
+ /** Enable persistent caching of generated TypeSchemas */
71
+ enablePersistence?: boolean;
72
+ /** Directory to store cached TypeSchemas (relative to outputDir) */
73
+ cacheDir?: string;
74
+ /** Maximum age of cached schemas in milliseconds before regeneration */
75
+ maxAge?: number;
76
+ /** Whether to validate cached schemas before reuse */
77
+ validateCached?: boolean;
78
+ /** Force regeneration of schemas even if cached */
79
+ forceRegenerate?: boolean;
80
+ /** Share cache across multiple codegen runs */
81
+ shareCache?: boolean;
82
+ /** Cache key prefix for namespacing */
83
+ cacheKeyPrefix?: string;
84
+ }
85
+ /**
86
+ * Main configuration schema for the new high-level API
87
+ */
88
+ export interface Config {
89
+ outputDir?: string;
90
+ verbose?: boolean;
91
+ overwrite?: boolean;
92
+ validate?: boolean;
93
+ cache?: boolean;
94
+ typescript?: TypeScriptGeneratorConfig;
95
+ typeSchema?: TypeSchemaConfig;
96
+ packages?: string[];
97
+ files?: string[];
98
+ $schema?: string;
99
+ }
100
+ /**
101
+ * Default configuration values
102
+ */
103
+ export declare const DEFAULT_CONFIG: Required<Config>;
104
+ /**
105
+ * Configuration file names to search for
106
+ */
107
+ export declare const CONFIG_FILE_NAMES: string[];
108
+ /**
109
+ * Validation error interface
110
+ */
111
+ export interface ConfigValidationError {
112
+ path: string;
113
+ message: string;
114
+ value?: unknown;
115
+ }
116
+ /**
117
+ * Configuration validation result
118
+ */
119
+ export interface ConfigValidationResult {
120
+ valid: boolean;
121
+ errors: ConfigValidationError[];
122
+ warnings: string[];
123
+ config?: Config;
124
+ }
125
+ /**
126
+ * Simple configuration validator
127
+ */
128
+ export declare class ConfigValidator {
129
+ /**
130
+ * Validate a configuration object
131
+ */
132
+ validate(config: unknown): ConfigValidationResult;
133
+ private validateTypeScriptConfig;
134
+ private validateValidatorOptions;
135
+ private validateGuardOptions;
136
+ }
137
+ /**
138
+ * Configuration loader with autoloading capabilities
139
+ */
140
+ export declare class ConfigLoader {
141
+ private validator;
142
+ /**
143
+ * Auto-load configuration from the current working directory
144
+ */
145
+ autoload(workingDir?: string): Promise<Config>;
146
+ /**
147
+ * Load configuration from a specific file
148
+ */
149
+ loadFromFile(filePath: string): Promise<Config>;
150
+ /**
151
+ * Find configuration file in the given directory
152
+ */
153
+ private findConfigFile;
154
+ /**
155
+ * Merge user config with defaults
156
+ */
157
+ private mergeWithDefaults;
158
+ }
159
+ /**
160
+ * Global config loader instance
161
+ */
162
+ export declare const configLoader: ConfigLoader;
163
+ /**
164
+ * Convenience function to auto-load configuration
165
+ */
166
+ export declare function loadConfig(workingDir?: string): Promise<Config>;
167
+ /**
168
+ * Type guard to check if an object is a valid Config
169
+ */
170
+ export declare function isConfig(obj: unknown): obj is Config;
171
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC,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,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE;QAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;IAGF,gBAAgB,CAAC,EAAE;QAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,2BAA2B,CAAC,EAAE,OAAO,CAAC;KACtC,CAAC;IAGF,YAAY,CAAC,EAAE;QACd,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,eAAe,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;QAChD,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mDAAmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAG9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CA+E3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC3B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,sBAAsB;IAgGjD,OAAO,CAAC,wBAAwB;IA2EhC,OAAO,CAAC,wBAAwB;IA4ChC,OAAO,CAAC,oBAAoB;CAiD5B;AAED;;GAEG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,SAAS,CAAyB;IAE1C;;OAEG;IACG,QAAQ,CAAC,UAAU,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWnE;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoCrD;;OAEG;YACW,cAAc;IAU5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAUzB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C;;GAEG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAIpD"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Main entry point for the @atomic-ehr/codegen library
3
+ *
4
+ * ## Overview
5
+ *
6
+ * atomic-codegen is a comprehensive code generation toolkit for FHIR healthcare standards,
7
+ * designed with TypeSchema as the intermediate format for maximum flexibility and type safety.
8
+ *
9
+ * ## Key Features
10
+ *
11
+ * - **πŸ”₯ FHIR R4/R5 Support**: Complete FHIR resource and profile generation
12
+ * - **πŸ‡ΊπŸ‡Έ US Core Profiles**: Built-in support for US healthcare implementation guides
13
+ * - **πŸ“‹ TypeSchema Integration**: Uses TypeSchema as universal intermediate format
14
+ * - **🎯 Type Safety**: Full TypeScript support with runtime validation
15
+ * - **⚑ Performance**: Built with Bun for maximum speed
16
+ * - **πŸ—οΈ Extensible**: Plugin architecture for custom generators
17
+ *
18
+ * ## Quick Start
19
+ *
20
+ * ```typescript
21
+ * import { APIBuilder } from '@atomic-ehr/codegen';
22
+ *
23
+ * // High-level API for common workflows
24
+ * const api = new APIBuilder();
25
+ *
26
+ * // Generate FHIR types from packages
27
+ * await api
28
+ * .fromFHIRPackages(['hl7.fhir.r4.core@4.0.1', 'hl7.fhir.us.core@6.1.0'])
29
+ * .typescript('./src/types/fhir')
30
+ * .withValidation()
31
+ * .generate();
32
+ * ```
33
+ *
34
+ * ## Architecture
35
+ *
36
+ * The library follows a three-stage architecture:
37
+ *
38
+ * 1. **Input**: FHIR packages, JSON Schema, or custom schemas
39
+ * 2. **TypeSchema**: Universal intermediate representation
40
+ * 3. **Output**: TypeScript, Python, Go, or custom target languages
41
+ *
42
+ * ## Examples
43
+ *
44
+ * ### FHIR Patient with US Core Extensions
45
+ *
46
+ * ```typescript
47
+ * import { USCorePatient, USCoreRaceExtension } from './types/fhir';
48
+ *
49
+ * const patient: USCorePatient = {
50
+ * resourceType: 'Patient',
51
+ * identifier: [{ value: 'MRN-123' }],
52
+ * name: [{ family: 'Johnson', given: ['Maria'] }],
53
+ * gender: 'female',
54
+ * extension: [{
55
+ * url: 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race',
56
+ * extension: [{ url: 'text', valueString: 'Hispanic or Latino' }]
57
+ * } as USCoreRaceExtension]
58
+ * };
59
+ * ```
60
+ *
61
+ * ### Runtime Validation
62
+ *
63
+ * ```typescript
64
+ * import { isUSCorePatient, validateFHIRResource } from './types/fhir/guards';
65
+ *
66
+ * if (isUSCorePatient(someData)) {
67
+ * // TypeScript knows this is a USCorePatient
68
+ * const validation = await validateFHIRResource(someData);
69
+ * if (validation.valid) {
70
+ * console.log('Valid US Core Patient!');
71
+ * }
72
+ * }
73
+ * ```
74
+ *
75
+ * @packageDocumentation
76
+ * @module @atomic-ehr/codegen
77
+ * @version 0.0.1
78
+ * @author Atomic EHR Team
79
+ * @since 0.0.1
80
+ */
81
+ export * from "./api";
82
+ export * from "./config";
83
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AAGH,cAAc,OAAO,CAAC;AAGtB,cAAc,UAAU,CAAC"}