From 80d26ec002cdaf2c0745379bfb47e04b80008f62 Mon Sep 17 00:00:00 2001 From: Nadeem Patwekar Date: Wed, 29 Oct 2025 16:38:18 +0530 Subject: [PATCH] feat: implement download script for regions.json and update postinstall/postupdate scripts --- package.json | 5 ++-- scripts/download-regions.cjs | 47 ++++++++++++++++++++++++++++++++++++ scripts/download-regions.js | 1 + 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 scripts/download-regions.cjs create mode 100644 scripts/download-regions.js diff --git a/package.json b/package.json index 346d6f6..f706ad2 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,8 @@ "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json", "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json", "husky-check": "npm run build && husky && chmod +x .husky/pre-commit", - "postinstall": "curl -s --max-time 30 --fail https://artifacts.contentstack.com/regions.json -o src/assets/regions.json || echo 'Warning: Failed to download regions.json, using existing file if available'", - "postupdate": "curl -s --max-time 30 --fail https://artifacts.contentstack.com/regions.json -o src/assets/regions.json || echo 'Warning: Failed to download regions.json, using existing file if available'" + "postinstall": "node scripts/download-regions.cjs", + "postupdate": "node scripts/download-regions.cjs" }, "dependencies": { "@contentstack/core": "^1.3.1", @@ -44,6 +44,7 @@ }, "files": [ "dist", + "scripts/download-regions.cjs", "package.json", "README.md", "src/assets/regions.json" diff --git a/scripts/download-regions.cjs b/scripts/download-regions.cjs new file mode 100644 index 0000000..db8bacb --- /dev/null +++ b/scripts/download-regions.cjs @@ -0,0 +1,47 @@ +#!/usr/bin/env node +const fs = require('fs'); +const https = require('https'); +const path = require('path'); + +const targetFiles = [ + 'src/assets/regions.json', + 'dist/modern/assets/regions.json', + 'dist/legacy/assets/regions.json' +]; + +function downloadRegions(targetFile) { + const targetDir = path.dirname(targetFile); + + // Ensure directory exists + if (!fs.existsSync(targetDir)) { + fs.mkdirSync(targetDir, { recursive: true }); + } + + const url = 'https://artifacts.contentstack.com/regions.json'; + + https.get(url, { timeout: 30000 }, (response) => { + if (response.statusCode === 200) { + const fileStream = fs.createWriteStream(targetFile); + response.pipe(fileStream); + + fileStream.on('close', () => { + console.log(`✓ Updated ${targetFile}`); + }); + + fileStream.on('error', (err) => { + console.log(`Warning: Failed to write ${targetFile}, using bundled version`); + }); + } else { + console.log(`Warning: HTTP ${response.statusCode}, using bundled regions.json`); + } + }).on('error', (err) => { + console.log(`Warning: Failed to download regions.json (${err.message}), using bundled version`); + }).setTimeout(30000, function() { + this.destroy(); + console.log('Warning: Download timeout, using bundled regions.json'); + }); +} + +// Download to all target locations +targetFiles.forEach(downloadRegions); + diff --git a/scripts/download-regions.js b/scripts/download-regions.js new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/scripts/download-regions.js @@ -0,0 +1 @@ + \ No newline at end of file