babelfhir-ts 1.0.15 → 1.0.16

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 (2) hide show
  1. package/out/main.js +27 -18
  2. package/package.json +2 -1
package/out/main.js CHANGED
@@ -210,6 +210,8 @@ async function run() {
210
210
  console.error(' or: babelfhir-ts install ./package.tgz');
211
211
  process.exit(1);
212
212
  }
213
+ // Force no-cache for install command
214
+ flags.noCache = true;
213
215
  try {
214
216
  let downloadedPath;
215
217
  // Check if packageToInstall is a local file path
@@ -234,38 +236,37 @@ async function run() {
234
236
  }
235
237
  console.log(`✓ Package processed successfully: ${path.basename(outputArchive)}`);
236
238
  // Extract the archive to access generated folder
237
- console.log(`Extracting package for installation...`);
239
+ console.log(`Extracting generated code...`);
238
240
  const { extract } = await import('tar');
239
241
  const extractDir = path.join(process.cwd(), '.temp-install');
240
242
  if (!fs.existsSync(extractDir)) {
241
243
  fs.mkdirSync(extractDir, { recursive: true });
242
244
  }
243
245
  await extract({ cwd: extractDir, file: outputArchive });
244
- // Create a tarball from the generated folder
245
- const generatedDir = path.join(extractDir, 'generated');
246
+ // Look for generated folder - could be at root or under 'package' subfolder
247
+ let generatedDir = path.join(extractDir, 'generated');
248
+ if (!fs.existsSync(generatedDir)) {
249
+ generatedDir = path.join(extractDir, 'package', 'generated');
250
+ }
246
251
  if (!fs.existsSync(generatedDir)) {
247
252
  throw new Error('Generated folder not found in package archive');
248
253
  }
249
- console.log(`Creating package from generated folder...`);
250
- const { create } = await import('tar');
251
- const generatedTarball = path.join(process.cwd(), `${baseName}-generated.tgz`);
252
- await create({
253
- gzip: true,
254
- file: generatedTarball,
255
- cwd: generatedDir
256
- }, ['.']);
257
- // Install the generated tarball with npm
258
- await npmInstall(generatedTarball);
259
- // Clean up extraction directory and archives
254
+ // Verify package.json exists
255
+ const pkgJsonPath = path.join(generatedDir, 'package.json');
256
+ if (!fs.existsSync(pkgJsonPath)) {
257
+ throw new Error(`package.json not found in generated folder: ${generatedDir}`);
258
+ }
259
+ console.log(`Installing from: ${path.relative(process.cwd(), generatedDir)}`);
260
+ // Install directly from the generated folder
261
+ await npmInstall(generatedDir);
262
+ // Clean up temporary files
260
263
  console.log(`Cleaning up temporary files...`);
261
264
  if (fs.existsSync(extractDir)) {
262
265
  fs.rmSync(extractDir, { recursive: true, force: true });
263
266
  }
264
267
  if (fs.existsSync(outputArchive)) {
265
268
  fs.unlinkSync(outputArchive);
266
- }
267
- if (fs.existsSync(generatedTarball)) {
268
- fs.unlinkSync(generatedTarball);
269
+ console.log(`✓ Removed ${path.basename(outputArchive)}`);
269
270
  }
270
271
  if (flags.noCache) {
271
272
  cleanupCache();
@@ -274,7 +275,7 @@ async function run() {
274
275
  return;
275
276
  }
276
277
  catch (error) {
277
- // Clean up temp directory and archive on error
278
+ // Clean up temporary files on error
278
279
  const tempDir = path.join(process.cwd(), '.temp-download');
279
280
  if (fs.existsSync(tempDir)) {
280
281
  fs.rmSync(tempDir, { recursive: true, force: true });
@@ -283,6 +284,14 @@ async function run() {
283
284
  if (fs.existsSync(extractDir)) {
284
285
  fs.rmSync(extractDir, { recursive: true, force: true });
285
286
  }
287
+ // Clean up any leftover archive
288
+ const baseName = packageToInstall.includes('@')
289
+ ? packageToInstall.replace('@', '-').replace(/\//g, '-')
290
+ : path.basename(packageToInstall, path.extname(packageToInstall));
291
+ const outputArchive = path.join(process.cwd(), `${baseName}.with-generated.tgz`);
292
+ if (fs.existsSync(outputArchive)) {
293
+ fs.unlinkSync(outputArchive);
294
+ }
286
295
  console.error(`Error: ${error.message}`);
287
296
  process.exit(1);
288
297
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babelfhir-ts",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "BabelFHIR-TS: generate TypeScript interfaces, validators, and helper classes from FHIR R4 StructureDefinitions (profiles) directly inside package archives.",
5
5
  "type": "module",
6
6
  "main": "out/main.js",
@@ -66,6 +66,7 @@
66
66
  "@vitest/eslint-plugin": "^1.1.44",
67
67
  "axios": "^1.8.4",
68
68
  "fhirpath": "^4.0.0",
69
+ "pink.admission-generated": "file:.temp-install/generated",
69
70
  "tar": "^7.4.3",
70
71
  "ts-morph": "^25.0.1",
71
72
  "tsx": "^4.19.3",