UNPKG

dad-tool

Version:

Dummy Address Data (DAD) - Retrieve real addresses from all around the world.

46 lines (40 loc) 1.98 kB
import { promises } from 'fs'; // A helper utility to build slim lists from a larger data set. Data source: https://batch.openaddresses.io/data // You may be required to wrap the JSON in an addresses wrapper on the dataSet you want to use. eg: {"addresses":[{ ... } // Additionally, you may be required to add commas after each JSON address object // Usage: DATA_SET="path/to/dataset.json" STATE="UT" COUNTRY="US" node util/create-slim-json.js export async function createSlimJson() { const numberOfAddresses = process.env.NUM_ADDRESSES || 100; // How many items should be pulled from the larger data set for this slim list const dataSetFilePath = process.env.DATA_SET; // The path to a JSON data set you want to build a slim list from const outputPath = `${dataSetFilePath}-slim.json`; const state = process.env.STATE || ''; const country = process.env.COUNTRY || ''; let finalList = []; if (!dataSetFilePath) { throw new Error('DATA_SET env variable must be set. Please correct and try again.'); } try { for (let i = 0; i < numberOfAddresses; i++) { const fileContent = await promises.readFile(dataSetFilePath, 'utf-8'); const dataSetFile = JSON.parse(fileContent).addresses; let randomAddress = dataSetFile[Math.floor(Math.random() * dataSetFile.length)]['properties']; let addressObject = { street1: `${randomAddress['number']} ${randomAddress['street']}`, street2: randomAddress['unit'], city: randomAddress['city'], state: state, zip: randomAddress['postcode'], country: country, }; finalList.push(addressObject); } await promises.writeFile(outputPath, JSON.stringify(finalList) + '\n'); console.log( `Addresses slimmed and saved to ${outputPath}. Place the new list in its corresponding country folder and rename as needed.` ); return true; } catch (error) { throw Error(error); } } createSlimJson().catch(console.log);