{"_id":"@aprestmo/norway-geodata","_rev":"18-e9bafc71b82caa502c3ea9eb23d2611f","name":"@aprestmo/norway-geodata","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@aprestmo/norway-geodata","version":"0.1.0","keywords":["norway","geodata","municipalities","counties","postal-codes","kommune","fylke","typescript","types"],"author":{"name":"Alexander Prestmo"},"license":"MIT","_id":"@aprestmo/norway-geodata@0.1.0","maintainers":[{"name":"aprestmo","email":"aprestmo@gmail.com"}],"homepage":"https://github.com/aprestmo/norway-geodata#readme","bugs":{"url":"https://github.com/aprestmo/norway-geodata/issues"},"dist":{"shasum":"95a92425c96a7617d838a03e7df20bc98f2a57bf","tarball":"https://registry.npmjs.org/@aprestmo/norway-geodata/-/norway-geodata-0.1.0.tgz","fileCount":14,"integrity":"sha512-1JBIveyzd/edScqA4Gzl2m/uFt7kpb51+YHws/2XQEkuRW02CoXAAX1Kcd3kbF707wu4RcLolIJr9lmRHgLA2A==","signatures":[{"sig":"MEYCIQDDbtu7IKwtKzXa1GeLlrnPbxA7PbiYIGkWfyYfP5vv1wIhAOqhzoPAWTw2gKUlesM/nhsqmysAGS+sh77hBNor6oRh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1072072},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","require":"./dist/types.js"},"./package.json":"./package.json","./data/counties":"./data/fylker-2025.json","./data/municipalities":"./data/kommuner-2025.json"},"gitHead":"8e1adad0894ab565535f1d56c6f5808061b6610c","scripts":{"dev":"npm run build:watch","test":"npm run build && node -e \"console.log('Running TypeScript validation...'); require('./dist/index.js'); console.log('✅ All exports working correctly!');\"","build":"npm run build:cjs && npm run build:esm","clean":"rimraf dist","prebuild":"npm run clean","validate":"node scripts/validate-data.js","build:cjs":"tsc -p tsconfig.json","build:esm":"tsc -p tsconfig.esm.json","test:types":"tsc --noEmit","build:watch":"tsc --watch","publish:npm":"npm run check-conflicts && npm run prepublishOnly && npm publish --access public","publish:both":"npm run publish:npm && npm run publish:github","check-version":"npm view @aprestmo/norway-geodata version","release:major":"npm run version:major && npm run publish:npm","release:minor":"npm run version:minor && npm run publish:npm","release:patch":"npm run version:patch && npm run publish:npm","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","prepublishOnly":"npm run validate && npm run build && npm test","publish:github":"npm run prepublishOnly && npm publish --registry=https://npm.pkg.github.com","version-status":"node -e \"const pkg=require('./package.json'); console.log('📦 Package:', pkg.name); console.log('🏷️  Local version:', pkg.version); require('child_process').exec('npm view @aprestmo/norway-geodata version', (err,stdout) => { if(err) { console.log('📡 Published: Not yet published'); } else { console.log('📡 Published version:', stdout.trim()); } });\"","check-conflicts":"node -e \"const pkg=require('./package.json'); const localVer=pkg.version; console.log('Local version:', localVer); require('child_process').exec('npm view @aprestmo/norway-geodata version', (err,stdout) => { if(err) { console.log('✅ Package not published yet - safe to publish'); return; } const remoteVer=stdout.trim(); console.log('Published version:', remoteVer); if(localVer===remoteVer) console.log('❌ Version conflict! Local version already published'); else console.log('✅ No conflicts - safe to publish'); });\"","publish:npm-dry":"npm run prepublishOnly && npm publish --dry-run","version:prerelease":"npm version prerelease --no-git-tag-version"},"_npmUser":{"name":"aprestmo","email":"aprestmo@gmail.com"},"overrides":{"glob":"^10.3.0","inflight":"npm:@lukekarrys/inflight@^1.0.4"},"repository":{"url":"git+https://github.com/aprestmo/norway-geodata.git","type":"git"},"_npmVersion":"11.4.1","description":"Administrative geographic data for Norway including municipalities, counties, and postal codes.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^6.0.1","ts-jest":"^29.2.5","typescript":"^5.6.0","@types/jest":"^29.5.12","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/norway-geodata_0.1.0_1749152776433_0.18125549552502584","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aprestmo/norway-geodata","version":"0.1.2","keywords":["norway","geodata","municipalities","counties","postal-codes","kommune","fylke","typescript","types"],"author":{"name":"Alexander Prestmo"},"license":"MIT","_id":"@aprestmo/norway-geodata@0.1.2","maintainers":[{"name":"aprestmo","email":"aprestmo@gmail.com"}],"homepage":"https://github.com/aprestmo/norway-geodata#readme","bugs":{"url":"https://github.com/aprestmo/norway-geodata/issues"},"dist":{"shasum":"455219d9e94a00d03c85bf176ceee08d50bba2b1","tarball":"https://registry.npmjs.org/@aprestmo/norway-geodata/-/norway-geodata-0.1.2.tgz","fileCount":14,"integrity":"sha512-ZN/rRryipQYL9aZcyE4V8g/Ft5M08K3M0UwP9L2ollK1r5ROUe5KEtI0M7fypB9Ervp7QWEVzb/XJ7ms5WJXMg==","signatures":[{"sig":"MEUCIQCgQA5FxoZUkpgraNpPRZWeBMDtkkaF2OmDuIamtY745wIgbvspMwDVs8v0L3nhF1ZbNdjaL/HkB5pxCxyOHnILkvA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":869725},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","require":"./dist/types.js"},"./package.json":"./package.json","./data/counties":"./data/counties-2025.json","./data/municipalities":"./data/municipalities-2025.json"},"gitHead":"4b04c540210d50ebab22eada925e28464ad1d841","scripts":{"dev":"npm run build:watch","test":"npm run build && node -e \"console.log('Running TypeScript validation...'); require('./dist/index.js'); console.log('✅ All exports working correctly!');\"","build":"npm run build:cjs && npm run build:esm","clean":"rimraf dist","prebuild":"npm run clean","validate":"node scripts/validate-data.js","build:cjs":"tsc -p tsconfig.json","build:esm":"tsc -p tsconfig.esm.json","test:types":"tsc --noEmit","build:watch":"tsc --watch","publish:npm":"npm run check-conflicts && npm run prepublishOnly && npm publish --access public","publish:both":"npm run publish:npm && npm run publish:github","check-version":"npm view @aprestmo/norway-geodata version","release:major":"npm run version:major && npm run publish:npm","release:minor":"npm run version:minor && npm run publish:npm","release:patch":"npm run version:patch && npm run publish:npm","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","prepublishOnly":"npm run validate && npm run build && npm test","publish:github":"npm run prepublishOnly && npm publish --registry=https://npm.pkg.github.com","version-status":"node -e \"const pkg=require('./package.json'); console.log('📦 Package:', pkg.name); console.log('🏷️  Local version:', pkg.version); require('child_process').exec('npm view @aprestmo/norway-geodata version', (err,stdout) => { if(err) { console.log('📡 Published: Not yet published'); } else { console.log('📡 Published version:', stdout.trim()); } });\"","check-conflicts":"node -e \"const pkg=require('./package.json'); const localVer=pkg.version; console.log('Local version:', localVer); require('child_process').exec('npm view @aprestmo/norway-geodata version', (err,stdout) => { if(err) { console.log('✅ Package not published yet - safe to publish'); return; } const remoteVer=stdout.trim(); console.log('Published version:', remoteVer); if(localVer===remoteVer) console.log('❌ Version conflict! Local version already published'); else console.log('✅ No conflicts - safe to publish'); });\"","publish:npm-dry":"npm run prepublishOnly && npm publish --dry-run","version:prerelease":"npm version prerelease --no-git-tag-version"},"_npmUser":{"name":"aprestmo","email":"aprestmo@gmail.com"},"overrides":{"glob":"^10.3.0","inflight":"npm:@lukekarrys/inflight@^1.0.4"},"repository":{"url":"git+https://github.com/aprestmo/norway-geodata.git","type":"git"},"_npmVersion":"11.4.1","description":"Administrative geographic data for Norway including municipalities, counties, and postal codes.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^6.0.1","ts-jest":"^29.2.5","typescript":"^5.6.0","@types/jest":"^29.5.12","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/norway-geodata_0.1.2_1749415765013_0.6631599427666091","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aprestmo/norway-geodata","version":"0.1.4","keywords":["norway","geodata","municipalities","counties","postal-codes","kommune","fylke","typescript","types"],"author":{"name":"Alexander Prestmo"},"license":"MIT","_id":"@aprestmo/norway-geodata@0.1.4","maintainers":[{"name":"aprestmo","email":"aprestmo@gmail.com"}],"homepage":"https://github.com/aprestmo/norway-geodata#readme","bugs":{"url":"https://github.com/aprestmo/norway-geodata/issues"},"dist":{"shasum":"d890787c298912b40e0e5b9616f2198d4656937b","tarball":"https://registry.npmjs.org/@aprestmo/norway-geodata/-/norway-geodata-0.1.4.tgz","fileCount":14,"integrity":"sha512-YYuTKJhogLPWsOoI8JTwlLv+AAc+r2Qo9L44Vx5ETu03SfDECsYW/ej6IU+anYFtYeXE2qr1RmgotNDbgP3Tng==","signatures":[{"sig":"MEYCIQDGZym+FhOQPPxVT+lPWUnDm54JJnDCzx/liLM59sYtogIhAON8vSTWhoapu+7448o1zgppRQDShdT9pnZwAv3JZKqv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":869725},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","require":"./dist/types.js"},"./package.json":"./package.json","./data/counties":"./data/counties-2025.json","./data/municipalities":"./data/municipalities-2025.json"},"gitHead":"4b04c540210d50ebab22eada925e28464ad1d841","scripts":{"dev":"npm run build:watch","test":"npm run build && node -e \"console.log('Running TypeScript validation...'); require('./dist/index.js'); console.log('✅ All exports working correctly!');\"","build":"npm run build:cjs && npm run build:esm","clean":"rimraf dist","prebuild":"npm run clean","validate":"node scripts/validate-data.js","build:cjs":"tsc -p tsconfig.json","build:esm":"tsc -p tsconfig.esm.json","test:types":"tsc --noEmit","build:watch":"tsc --watch","publish:npm":"npm run check-conflicts && npm run prepublishOnly && npm publish --access public","publish:both":"npm run publish:npm && npm run publish:github","check-version":"npm view @aprestmo/norway-geodata version","release:major":"npm run version:major && npm run publish:npm","release:minor":"npm run version:minor && npm run publish:npm","release:patch":"npm run version:patch && npm run publish:npm","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","prepublishOnly":"npm run validate && npm run build && npm test","publish:github":"npm run prepublishOnly && npm publish --registry=https://npm.pkg.github.com","version-status":"node -e \"const pkg=require('./package.json'); console.log('📦 Package:', pkg.name); console.log('🏷️  Local version:', pkg.version); require('child_process').exec('npm view @aprestmo/norway-geodata version', (err,stdout) => { if(err) { console.log('📡 Published: Not yet published'); } else { console.log('📡 Published version:', stdout.trim()); } });\"","check-conflicts":"node -e \"const pkg=require('./package.json'); const localVer=pkg.version; console.log('Local version:', localVer); require('child_process').exec('npm view @aprestmo/norway-geodata version', (err,stdout) => { if(err) { console.log('✅ Package not published yet - safe to publish'); return; } const remoteVer=stdout.trim(); console.log('Published version:', remoteVer); if(localVer===remoteVer) console.log('❌ Version conflict! Local version already published'); else console.log('✅ No conflicts - safe to publish'); });\"","publish:npm-dry":"npm run prepublishOnly && npm publish --dry-run","version:prerelease":"npm version prerelease --no-git-tag-version"},"_npmUser":{"name":"aprestmo","email":"aprestmo@gmail.com"},"overrides":{"glob":"^10.3.0","inflight":"npm:@lukekarrys/inflight@^1.0.4"},"repository":{"url":"git+https://github.com/aprestmo/norway-geodata.git","type":"git"},"_npmVersion":"11.4.1","description":"Administrative geographic data for Norway including municipalities, counties, and postal codes.","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^6.0.1","ts-jest":"^29.2.5","typescript":"^5.6.0","@types/jest":"^29.5.12","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/norway-geodata_0.1.4_1749415949025_0.18862087575593556","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@aprestmo/norway-geodata","version":"0.1.5","description":"Administrative geographic data for Norway including municipalities, counties, and postal codes.","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js","import":"./dist/index.js"},"./data/municipalities":"./data/municipalities-2025.json","./data/counties":"./data/counties-2025.json","./types":{"types":"./dist/types.d.ts","require":"./dist/types.js","import":"./dist/types.js"},"./package.json":"./package.json"},"engines":{"node":">=18.0.0","npm":">=8.0.0"},"scripts":{"build":"npm run build:cjs && npm run build:esm","build:cjs":"tsc -p tsconfig.json","build:esm":"tsc -p tsconfig.esm.json","build:watch":"tsc --watch","clean":"rimraf dist","prebuild":"npm run clean","test":"npm run build && node -e \"console.log('Running TypeScript validation...'); require('./dist/index.js'); console.log('✅ All exports working correctly!');\"","test:types":"tsc --noEmit","validate":"node scripts/validate-data.js","prepublishOnly":"npm run validate && npm run build && npm test","dev":"npm run build:watch","version:patch":"npm version patch --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:major":"npm version major --no-git-tag-version","version:prerelease":"npm version prerelease --no-git-tag-version","check-version":"npm view @aprestmo/norway-geodata version","check-conflicts":"node -e \"const pkg=require('./package.json'); const localVer=pkg.version; console.log('Local version:', localVer); require('child_process').exec('npm view @aprestmo/norway-geodata version', (err,stdout) => { if(err) { console.log('✅ Package not published yet - safe to publish'); return; } const remoteVer=stdout.trim(); console.log('Published version:', remoteVer); if(localVer===remoteVer) console.log('❌ Version conflict! Local version already published'); else console.log('✅ No conflicts - safe to publish'); });\"","version-status":"node -e \"const pkg=require('./package.json'); console.log('📦 Package:', pkg.name); console.log('🏷️  Local version:', pkg.version); require('child_process').exec('npm view @aprestmo/norway-geodata version', (err,stdout) => { if(err) { console.log('📡 Published: Not yet published'); } else { console.log('📡 Published version:', stdout.trim()); } });\"","publish:npm":"npm run check-conflicts && npm run prepublishOnly && npm publish --access public","publish:npm-dry":"npm run prepublishOnly && npm publish --dry-run","publish:github":"npm run prepublishOnly && npm publish --registry=https://npm.pkg.github.com","publish:both":"npm run publish:npm && npm run publish:github","release:patch":"npm run version:patch && npm run publish:npm","release:minor":"npm run version:minor && npm run publish:npm","release:major":"npm run version:major && npm run publish:npm"},"devDependencies":{"@types/jest":"^29.5.12","@types/node":"^22.0.0","jest":"^29.7.0","rimraf":"^6.0.1","ts-jest":"^29.2.5","typescript":"^5.6.0"},"keywords":["norway","geodata","municipalities","counties","postal-codes","kommune","fylke","typescript","types"],"author":{"name":"Alexander Prestmo"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aprestmo/norway-geodata.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"overrides":{"inflight":"npm:@lukekarrys/inflight@^1.0.4","glob":"^10.3.0"},"_id":"@aprestmo/norway-geodata@0.1.5","gitHead":"098e92e9069834e242ba75bedc0ab8b1a3fbf5da","bugs":{"url":"https://github.com/aprestmo/norway-geodata/issues"},"homepage":"https://github.com/aprestmo/norway-geodata#readme","_nodeVersion":"24.2.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-yVdtaaw17tv8HYhmZooKdkgRCsACiunqKGahmulBZc8Q8JY/pQqmaFz8zvyRND9GoPVP+2Sevl5JV7wDjYSGLA==","shasum":"bbea8c5b6ee9fc51824671ba91500ad3c19595c8","tarball":"https://registry.npmjs.org/@aprestmo/norway-geodata/-/norway-geodata-0.1.5.tgz","fileCount":14,"unpackedSize":868675,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBpKe3XfhNUNMIyEWJvoIEZV6/ovzcwaYCr8+VChaZnJAiEAux8PKnXrCuVfmLUPkXLVL5694bfeGFVoQUvPm6mokfk="}]},"_npmUser":{"name":"aprestmo","email":"aprestmo@gmail.com"},"directories":{},"maintainers":[{"name":"aprestmo","email":"aprestmo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/norway-geodata_0.1.5_1767607947060_0.9325159744804019"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-05T19:46:16.361Z","modified":"2026-01-05T10:12:27.401Z","1.0.1":"2025-06-02T10:36:43.936Z","0.0.1-alpha.1":"2025-06-02T10:53:00.955Z","0.0.1-alpha.2":"2025-06-02T10:53:31.285Z","0.0.1-alpha.3":"2025-06-02T11:30:20.962Z","0.0.1":"2025-06-02T19:54:53.464Z","0.0.1-alpha.4":"2025-06-02T19:55:07.223Z","0.0.1-alpha.5":"2025-06-03T04:35:58.460Z","0.0.1-alpha.6":"2025-06-03T04:38:43.401Z","0.0.2-alpha.1":"2025-06-03T04:46:15.742Z","0.0.2":"2025-06-03T05:36:08.202Z","0.1.1":"2025-06-04T10:14:19.584Z","0.1.0":"2025-06-05T19:46:16.611Z","0.1.2":"2025-06-08T20:49:25.343Z","0.1.4":"2025-06-08T20:52:29.194Z","0.1.5":"2026-01-05T10:12:27.205Z"},"bugs":{"url":"https://github.com/aprestmo/norway-geodata/issues"},"author":{"name":"Alexander Prestmo"},"license":"MIT","homepage":"https://github.com/aprestmo/norway-geodata#readme","keywords":["norway","geodata","municipalities","counties","postal-codes","kommune","fylke","typescript","types"],"repository":{"type":"git","url":"git+https://github.com/aprestmo/norway-geodata.git"},"description":"Administrative geographic data for Norway including municipalities, counties, and postal codes.","maintainers":[{"name":"aprestmo","email":"aprestmo@gmail.com"}],"readme":"# 🇳🇴 Norway Geodata\n\n📍 Complete administrative geographic data for Norway (2025) with TypeScript support - municipalities, counties, postal codes, and 35+ utility functions.\n\n[![npm version](https://img.shields.io/npm/v/@aprestmo/norway-geodata)](https://www.npmjs.com/package/@aprestmo/norway-geodata)\n[![npm downloads](https://img.shields.io/npm/dm/@aprestmo/norway-geodata)](https://www.npmjs.com/package/@aprestmo/norway-geodata)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## ✨ Features\n\n- 🏛️ **Complete 2025 data** - All Norwegian municipalities and counties\n- 🔒 **TypeScript first** - Full type safety and IntelliSense support\n- 🚀 **Zero dependencies** - Lightweight and fast\n- 🔍 **Rich search API** - 25+ functions for filtering and statistics\n- 📦 **Multiple registries** - Available on npm and GitHub Packages\n\n## 📦 Installation\n\n```bash\nnpm install @aprestmo/norway-geodata\n```\n\n<details>\n<summary>Alternative: GitHub Packages</summary>\n\n```bash\n# Configure npm for GitHub Packages\nnpm config set @aprestmo:registry https://npm.pkg.github.com\nnpm config set //npm.pkg.github.com/:_authToken YOUR_GITHUB_TOKEN\n\n# Install\nnpm install @aprestmo/norway-geodata\n```\n\n> Requires a [GitHub personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) with `read:packages` permission.\n\n</details>\n\n## 🚀 Quick Start\n\n```typescript\nimport {\n  getMunicipalities,\n  getCounties,\n  getMunicipalityById,\n  getMunicipalitiesByName,\n  getAllPostalCodes,\n  type Municipality,\n  type County\n} from '@aprestmo/norway-geodata';\n\n// Get all municipalities\nconst municipalities = getMunicipalities();\nconsole.log(`Found ${municipalities.length} municipalities`);\n\n// Find Oslo\nconst oslo = getMunicipalityById('0301');\nconsole.log('Oslo population:', oslo?.population);\n\n// Search municipalities\nconst bergMunicipalities = getMunicipalitiesByName('berg');\nconsole.log('Found:', bergMunicipalities.length);\n\n// Get all postal codes\nconst postalCodes = getAllPostalCodes();\nconsole.log(`Found ${postalCodes.length} postal codes`);\n\n// Get postal codes with details\nconst detailedCodes = getAllPostalCodes(true);\nconsole.log('First postal code:', detailedCodes[0]);\n// Output: { code: \"0001\", place: \"Oslo\", municipalityId: \"0301\", municipalityName: \"Oslo\" }\n\n// Get all counties\nconst counties = getCounties();\nconsole.log(`Found ${counties.length} counties`);\n```\n\n### Working with Postal Codes\n\n```typescript\nimport {\n  getPostalCodes,\n  getPostalCodeByCode,\n  getPostalCodesByPlace,\n  getPostalCodesByMunicipalityId,\n  getUniquePostalPlaces,\n  isValidPostalCode,\n  type PostalCode\n} from '@aprestmo/norway-geodata';\n\n// Get all postal codes\nconst allPostalCodes = getPostalCodes();\nconsole.log(`Total postal codes: ${allPostalCodes.length}`);\n\n// Find a specific postal code\nconst osloCenter = getPostalCodeByCode('0001');\nconsole.log(osloCenter);\n// Output: { code: \"0001\", place: \"Oslo\", id: \"0301\" }\n\n// Search by place name (case-insensitive partial match)\nconst bergensPostalCodes = getPostalCodesByPlace('bergen');\nconsole.log(`Bergen postal codes: ${bergensPostalCodes.length}`);\n\n// Get postal codes for a municipality\nconst osloPostalCodes = getPostalCodesByMunicipalityId('0301');\nconsole.log(`Oslo has ${osloPostalCodes.length} postal codes`);\n\n// Check if postal code exists\nconst isValid = isValidPostalCode('0001');\nconsole.log(`0001 is valid: ${isValid}`);\n\n// Get unique postal places\nconst uniquePlaces = getUniquePostalPlaces();\nconsole.log(`Unique places: ${uniquePlaces.length}`);\n```\n\n## API Reference\n\n### Core Functions\n\n- `getVersion()` - Get library version\n- `getMunicipalities()` - Get all municipalities\n- `getCounties()` - Get all counties\n\n### Municipality Functions\n\n- `getMunicipalityById(id: string)` - Get municipality by ID\n- `getMunicipalitiesByName(name: string, options?: MunicipalitySearchOptions)` - Search by name with options\n- `getMunicipalitiesByCounty(countyId: string)` - Get municipalities in county\n- `getMunicipalityByPostalCode(postalCode: string | number)` - Get municipality by postal code\n- `getPostalCodesByMunicipality(municipalityId: string)` - Get postal codes for municipality\n- `getAllPostalCodes(includeDetails?: boolean)` - Get all postal codes, optionally with place names and municipality info\n- `getMunicipalitiesByPopulation(ascending?: boolean)` - Sort by population\n- `getMunicipalitiesByArea(ascending?: boolean)` - Sort by area\n- `getMunicipalitiesByLanguage(language: LanguageStatus)` - Filter by language status\n- `getMunicipalitiesFiltered(options: MunicipalityFilterOptions)` - Advanced filtering\n- `getMunicipalitiesByPopulationDensity(min?: number, max?: number)` - Filter by density\n- `getLargestMunicipalities(count?: number)` - Get largest by population\n- `getSmallestMunicipalities(count?: number)` - Get smallest by population\n\n### County Functions\n\n- `getCountyById(id: string)` - Get county by ID\n- `getCountyByName(name: string, exactMatch?: boolean)` - Search county by name\n\n### Postal Code Functions\n\n- `getPostalCodes()` - Get all postal codes with metadata\n- `getPostalCodeByCode(code: string)` - Get postal code information by code\n- `getPostalCodesByPlace(place: string, options?: PostalCodeSearchOptions)` - Search by postal place name\n- `getPostalCodesByMunicipalityId(municipalityId: string)` - Get postal codes for municipality\n- `getPostalCodesByMunicipalityName(municipalityName: string, exactMatch?: boolean)` - Get postal codes by municipality name\n- `getUniquePostalPlaces()` - Get all unique postal place names\n- `getPostalCodesInRange(startCode: string, endCode: string)` - Get postal codes within range\n- `getPostalCodesSorted(ascending?: boolean)` - Get sorted postal codes\n- `getPostalCodesStats()` - Get postal codes statistics\n- `isValidPostalCode(code: string)` - Check if postal code exists\n\n### Statistics Functions\n\n- `getTotalPopulation(): number` - Total population of Norway\n- `getTotalArea(): number` - Total area of Norway\n- `getPopulationDensityStats(): PopulationDensityStats` - Population density statistics\n\n### Type Exports\n\nAll TypeScript interfaces and types are exported:\n\n```typescript\nimport type {\n  Municipality,\n  County,\n  PostalCode,\n  LanguageStatus,\n  PopulationDensityStats,\n  MunicipalitySearchOptions,\n  MunicipalityFilterOptions,\n  PostalCodeSearchOptions\n} from '@aprestmo/norway-geodata';\n```\n\n## 🎯 TypeScript Support\n\nFull TypeScript support with strict type safety:\n\n```typescript\nimport type {\n  Municipality,\n  County,\n  LanguageStatus,\n  MunicipalitySearchOptions,\n  MunicipalityFilterOptions\n} from '@aprestmo/norway-geodata';\n\n// Type-safe operations\nconst oslo: Municipality | undefined = getMunicipalityById('0301');\nif (oslo) {\n  // Full IntelliSense support\n  console.log(oslo.name);       // string\n  console.log(oslo.population); // number\n  console.log(oslo.postal_codes); // readonly number[]\n}\n```\n\n## 📊 Data Types\n\n### Municipality\n```typescript\ninterface Municipality {\n  readonly id: string;                    // \"0301\" (Oslo)\n  readonly name: string;                  // \"Oslo\"\n  readonly name_no: string;               // \"Oslo\"\n  readonly adm_center: string;            // \"Oslo\"\n  readonly population: number;            // 709037\n  readonly area: number;                  // 454.07\n  readonly language: LanguageStatus;      // \"Nøytral\"\n  readonly url: string;                   // \"https://oslo.kommune.no\"\n  readonly postal_codes: readonly number[]; // [179, 180, 181, ...]\n}\n```\n\n### County\n```typescript\ninterface County {\n  readonly id: string;    // \"03\" (Oslo)\n  readonly name: string;  // \"Oslo\"\n  readonly url: string;   // \"https://oslo.fylkeskommune.no\"\n}\n```\n\n### PostalCode\n```typescript\ninterface PostalCode {\n  readonly code: string;    // \"0001\"\n  readonly place: string;   // \"Oslo\"\n  readonly id: string;             // \"0301\" (municipality ID)\n}\n```\n\n### Options\n```typescript\ninterface MunicipalitySearchOptions {\n  readonly includeAllNames?: boolean;   // Search both EN/NO names\n  readonly caseSensitive?: boolean;     // Case sensitive\n  readonly exactMatch?: boolean;        // Exact match only\n}\n\ninterface MunicipalityFilterOptions {\n  readonly minPopulation?: number;\n  readonly maxPopulation?: number;\n  readonly minArea?: number;            // km²\n  readonly maxArea?: number;            // km²\n  readonly language?: LanguageStatus;\n  readonly countyId?: string;\n}\n\ninterface PostalCodeSearchOptions {\n  readonly caseSensitive?: boolean;     // Case sensitive search\n  readonly exactMatch?: boolean;        // Exact match only\n}\n\ntype LanguageStatus = 'Nøytral' | 'Bokmål' | 'Nynorsk';\n```\n\n## 🤝 Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines.\n\n### Quick Start\n1. Fork the repository\n2. Create a feature branch  \n3. Make your changes\n4. Create a pull request\n\nAll contributions go through automated validation and testing.\n\n## 📄 License\n\nMIT License - see [LICENSE](./LICENSE) file for details.\n\n## 📊 Package Info\n\n- **npm**: [@aprestmo/norway-geodata](https://www.npmjs.com/package/@aprestmo/norway-geodata)\n- **GitHub**: [aprestmo/norway-geodata](https://github.com/aprestmo/norway-geodata)\n- **Data**: Norwegian administrative data (2025)\n- **License**: MIT\n\n","readmeFilename":"README.md"}