{"_id":"@squawk/flightplan","_rev":"25-bc0447460ced91e2df87c10d3792d191","name":"@squawk/flightplan","dist-tags":{"latest":"0.6.0"},"versions":{"0.2.0":{"name":"@squawk/flightplan","version":"0.2.0","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.2.0","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"4688eb86c4cb9078dd106ecf39755fb499d5ca3f","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.2.0.tgz","fileCount":8,"integrity":"sha512-vdOoonWdwLR9DS4sXIa77XFifDV/XkhdyV0Cxz0c88XMH+Z7R6pky824Fia+Px+krLMVC7CglMjI/pODqLMzZQ==","signatures":[{"sig":"MEQCICRcDEDTRGWnWnNWVz22xC0Rv3NgkTs2bPKoQchKqlVSAiBWS8bLEzvakx0Yk91NS8JoDQu33R69DSXOiu0Kg8xJgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33808},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"174d83fec05c829844bc9dd82738ef2945c586df","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/types":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.2","@squawk/fixes":"*","@squawk/airways":"*","@squawk/navaids":"*","@squawk/airports":"*","@squawk/fix-data":"*","@squawk/procedures":"*","@squawk/airway-data":"*","@squawk/navaid-data":"*","@squawk/airport-data":"*","@squawk/procedure-data":"*"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.2.0_1776017259638_0.46545522519412796","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@squawk/flightplan","version":"0.2.1","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.2.1","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"1bebf3ef5f55d67968458a7f594159b45813e19c","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.2.1.tgz","fileCount":8,"integrity":"sha512-4aIH03Ci9Cu4Q2JrW/gdbycLULbhiV41PfrflEtZQTIpRgxA8ls/JUI7AoDdYvDXEf1G955EDcVIBN8YmwlHLA==","signatures":[{"sig":"MEUCIGfKUhQW8NfqtAq4QaSWPMISGhnndMmRM1y39tv6ZmmNAiEA7Tl+cAvxRrcnbEThTajNLH7UhmH4coLBC4Gtpuy3Z+c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34327},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d5fb541f6cab6a09f0dc4f8750f445b2114342f1","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/types":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.2","@squawk/fixes":"*","@squawk/airways":"*","@squawk/navaids":"*","@squawk/airports":"*","@squawk/fix-data":"*","@squawk/procedures":"*","@squawk/airway-data":"*","@squawk/navaid-data":"*","@squawk/airport-data":"*","@squawk/procedure-data":"*"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.2.1_1776043025089_0.8287688407425606","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@squawk/flightplan","version":"0.2.2","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.2.2","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"9a792b98267eaff4f43b253486100052db9e3535","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.2.2.tgz","fileCount":8,"integrity":"sha512-JBj+v9tS9GCNqF7+34PPfRJrFtAnL3OqKxf2qyBpzc6U9bp8bITo0x432USLIYTBY0g1MHQGCL51mAOCOMlStQ==","signatures":[{"sig":"MEYCIQDoseQuqmxcPfL32hr73yVjbP0BJdEEM1zn8Kamiq4uWwIhAJzeolJVvnip/EkVJeJZaUpSKN8zXx8vasQEmU4jwCVR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34327},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0c1b7dab34e0e226785644459e76fc1ea05e872b","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/types":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"*","@squawk/airways":"*","@squawk/navaids":"*","@squawk/airports":"*","@squawk/fix-data":"*","@squawk/procedures":"*","@squawk/airway-data":"*","@squawk/navaid-data":"*","@squawk/airport-data":"*","@squawk/procedure-data":"*"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.2.2_1776205024858_0.6624979228773147","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@squawk/flightplan","version":"0.3.0","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.3.0","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"9affc2ecdc13acc87c2142d9043b7d96ece400de","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.3.0.tgz","fileCount":11,"integrity":"sha512-70/Dypo6A6nD/Ba96bZUNZQp7Ei3WwQ4F0UYeluD+ebSScJr82qSdW1bgWepkT1wS1R28NBxbnvQ+NLvgTbubA==","signatures":[{"sig":"MEUCIBi4X4fKcr3XSHtLxIKGuuRwPGsakdfYqvQCvuBqdcVEAiEA0gBmkPViPm6FcfU0w89n/Z8wNC8iv8xbv0bDvMWiDHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44479},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"39d6e95a81c690d229bd49c25109bbb16d5eaaa1","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/types":"*","@squawk/units":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"*","@squawk/airways":"*","@squawk/navaids":"*","@squawk/airports":"*","@squawk/fix-data":"*","@squawk/procedures":"*","@squawk/airway-data":"*","@squawk/navaid-data":"*","@squawk/airport-data":"*","@squawk/procedure-data":"*"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.3.0_1776300396287_0.4001058181843895","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@squawk/flightplan","version":"0.3.1","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.3.1","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"391ce9b9e771794efbb2d342220bd899bbd0b9a9","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.3.1.tgz","fileCount":11,"integrity":"sha512-h3s9vT/a8WafAvCOnTyrVk0vcoazYCP/8bu4jeo9rd2ELqmHhn/JoK+DOQH5syGsQY8CSlVEiajcuyWOvAmsKA==","signatures":[{"sig":"MEYCIQDuVk4SF4AZqzYjircuv+4YHD5ZNagV+c8PvlelqRO/wgIhAL0Pb7sO2mwnMKLJMG3NezpDGG8Yf2TpuN7BA2HdzDXQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44470},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"17f0918df6bf2b562636d6b424a3fe722016ab9f","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"*","@squawk/types":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"*","@squawk/airways":"*","@squawk/navaids":"*","@squawk/airports":"*","@squawk/fix-data":"*","@squawk/procedures":"*","@squawk/airway-data":"*","@squawk/navaid-data":"*","@squawk/airport-data":"*","@squawk/procedure-data":"*"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.3.1_1776539128747_0.8835531628634532","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@squawk/flightplan","version":"0.3.2","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.3.2","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"841b2c267fe1c882c6ee5453182ace3e03210bfb","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.3.2.tgz","fileCount":11,"integrity":"sha512-t0YhXsnM6saGbmDkYd0wvIyhdi8jF0Kc+oZOx6V9jwOaBbp6tCHnXKM0BVM74JYdPfEXfG74xBTOn6iZuRjKMQ==","signatures":[{"sig":"MEQCIH0WX/moaAsmxKKb8PNaDsXNFF0YhiCoWLjjooVibk4lAiA1KhR4Fg/mpRJcgH8bO4v6QaAlfmqAZA7kRRU79cXKeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45106},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"237480093e670d373e72db9ee313d3644b6b4524","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"*","@squawk/types":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"*","@squawk/airways":"*","@squawk/navaids":"*","@squawk/airports":"*","@squawk/fix-data":"*","@squawk/procedures":"*","@squawk/airway-data":"*","@squawk/navaid-data":"*","@squawk/airport-data":"*","@squawk/procedure-data":"*"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.3.2_1776582807922_0.5248186908547088","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@squawk/flightplan","version":"0.3.3","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.3.3","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"ac3f2b2d10f673a594f353f234eabc7034d262ef","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.3.3.tgz","fileCount":11,"integrity":"sha512-sIEWivnh0cllHxAZMejn1xMnbQn34ZS5lNid5JpAq8u4TtDp7dKVcq9lbNxjc1mFWycTjlRb1M5ycOkszWeQbw==","signatures":[{"sig":"MEYCIQDwDUrH5Zsp/dvDNP5OqBHjR60x408ueiwqMGel7+0YnAIhAPpXDsS53lg0PP9Bl1/3/AXCp0RYNP1bLCkXhPJhy0Ib","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45166},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0c02e267b050ba7bf10619e1d4648ca37fd20b8d","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"^0.2.1","@squawk/types":"^0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"^0.1.4","@squawk/airways":"^0.2.3","@squawk/navaids":"^0.2.4","@squawk/airports":"^0.3.2","@squawk/fix-data":"^0.4.1","@squawk/procedures":"^0.2.4","@squawk/airway-data":"^0.3.3","@squawk/navaid-data":"^0.4.1","@squawk/airport-data":"^0.4.1","@squawk/procedure-data":"^0.3.3"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.3.3_1776633619403_0.6556838025681722","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@squawk/flightplan","version":"0.4.0","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.4.0","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"782a17a7d6b8f4fd200511af727a5c36cdca6fea","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.4.0.tgz","fileCount":11,"integrity":"sha512-0mxs9viJaPcfJsFC12m4Mo3m8yHjWwnmXUUfVh+/R0S7ekyt+uPmdWFFQh/XG45oaTlN3jDlRVxFSCyhevyvWQ==","signatures":[{"sig":"MEUCICApZUlEF3BF1Mo5IBS0PcRtuhELTuhmj9yfos88vyUAAiEA2goY4JgRmpPs8l27f/79A+3cmCtAnATVYoYxlaC6vm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"426d6e6dcafe1abc0c81bb117ced62b7dd66f178","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"^0.3.0","@squawk/types":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"^0.2.0","@squawk/airways":"^0.3.0","@squawk/navaids":"^0.3.0","@squawk/airports":"^0.4.0","@squawk/fix-data":"^0.5.0","@squawk/procedures":"^0.4.0","@squawk/airway-data":"^0.4.0","@squawk/navaid-data":"^0.5.0","@squawk/airport-data":"^0.5.0","@squawk/procedure-data":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.4.0_1776742993272_0.4440041361663509","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@squawk/flightplan","version":"0.4.1","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.4.1","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"0eff5331148367cd549cbbde173c7f7af186a428","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.4.1.tgz","fileCount":11,"integrity":"sha512-STvrnoTQh64zIAUhmfrwd+Sc9UNk+wjgasJhYvlZ9sgBpuaoE/qQuXElX3S1cEXDFbrHYoUe+dURBwkVeXWsUA==","signatures":[{"sig":"MEUCIQC6t9dnu0fITE0EXdAvrrPSwk2T6TDWR3EHVOPui0Kw1AIgNi9IqY1oO+7dHhHg1jQTaD4l+Ptb3HRIqSsEfhc43+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"47dc0e45a260ca79527047935dc2073ea0fff5c6","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"^0.3.1","@squawk/types":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"^0.2.1","@squawk/airways":"^0.3.1","@squawk/navaids":"^0.3.1","@squawk/airports":"^0.5.0","@squawk/fix-data":"^0.5.1","@squawk/procedures":"^0.4.1","@squawk/airway-data":"^0.4.1","@squawk/navaid-data":"^0.5.1","@squawk/airport-data":"^0.6.0","@squawk/procedure-data":"^0.5.1"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.4.1_1776986816621_0.27190223313203665","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@squawk/flightplan","version":"0.4.2","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.4.2","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"707451ac03266695f7893d7dc69217198f674b19","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.4.2.tgz","fileCount":11,"integrity":"sha512-m6FV8ktHnZyLuiEhQ1RV1xzmbVE67jjMlTLUYDcd2dX5ITEGXLKhYPvFqG5ZYpTMZpAh5mi2yd105Mje2JQUrg==","signatures":[{"sig":"MEQCIExaWR7TRtwKFeuzJ2kIA27v4m6dcjC9MUnWCZLikKIjAiAdEpmaf4s6vjDSltPnRqA21BtlVMZy1+v+ktrtZlM1sA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"cf18b826d905ffd851ab2c80ada1423fab825a94","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"^0.3.2","@squawk/types":"^0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"^0.2.2","@squawk/airways":"^0.3.2","@squawk/navaids":"^0.3.2","@squawk/airports":"^0.5.1","@squawk/fix-data":"^0.5.2","@squawk/procedures":"^0.4.2","@squawk/airway-data":"^0.4.2","@squawk/navaid-data":"^0.5.2","@squawk/airport-data":"^0.6.1","@squawk/procedure-data":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.4.2_1777079720859_0.9814038590519176","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@squawk/flightplan","version":"0.4.3","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.4.3","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"c9c3a19fa795cab22cd03d69c75b182233e527f9","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.4.3.tgz","fileCount":11,"integrity":"sha512-AYl6PG9GA63GiCqN27hrLL1XD0lnBCLOL2l6w7dFQBN198De+G7Zx4peWLjsWSc/WLzPGdHKAesJCJaCRBX/gQ==","signatures":[{"sig":"MEYCIQCuFaGfMqQXOIx+gJq43sfnjXCqrLWpHp1bAvfjKzPEdgIhAOeoKzyqL17b/QedqL+P956RwHZ13ZxOj/xMEIo00BSo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46455},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ccaa413d7043100fc67081bb5ab46a7256e7f8be","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/libs/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"^0.3.3","@squawk/types":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"^0.2.3","@squawk/airways":"^0.3.3","@squawk/navaids":"^0.3.3","@squawk/airports":"^0.5.2","@squawk/fix-data":"^0.6.1","@squawk/procedures":"^0.4.3","@squawk/airway-data":"^0.5.1","@squawk/navaid-data":"^0.6.1","@squawk/airport-data":"^0.7.1","@squawk/procedure-data":"^0.6.1"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.4.3_1777323514709_0.11503500303575631","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@squawk/flightplan","version":"0.4.4","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.4.4","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"044f4ff72a70c1ec947d7bd32aab0621fbda0368","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.4.4.tgz","fileCount":11,"integrity":"sha512-WPa2jJn3BpY4AFKUiZxLYB/WXFlQbZW6OJpAW55XtdFYrwIxbYLysGtJYPOWogj4UYiVbIdXOPUmVu5aIPpNlw==","signatures":[{"sig":"MEUCIQDPcs1mDHCFQmEdy6lI/+Olad7HUapLRq4Hzu18GCd6cwIgTNOCevJ4Ov1cGShgYzKJfeqoMIgRKPjE+H7zor9Kas8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46455},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"13b365679d9c997f55bf8af1d9fa60e42f0170df","scripts":{"lint":"tsc --noEmit && eslint src","test":"node --test 'dist/**/*.spec.js'","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/libs/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"^0.4.0","@squawk/types":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"^0.2.4","@squawk/airways":"^0.3.3","@squawk/navaids":"^0.3.4","@squawk/airports":"^0.5.3","@squawk/fix-data":"^0.6.1","@squawk/procedures":"^0.4.3","@squawk/airway-data":"^0.5.1","@squawk/navaid-data":"^0.6.1","@squawk/airport-data":"^0.7.1","@squawk/procedure-data":"^0.6.1"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.4.4_1777414185653_0.2029971484791535","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@squawk/flightplan","version":"0.4.5","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.4.5","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"235734e35f3a69c6c112546fea457463b87e041a","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.4.5.tgz","fileCount":11,"integrity":"sha512-aDLT36vyW6rSCGODaHC1L/sX5NUT4WZDm5W+FC6lOSaFjKfpSoglNnO9uu3rr7XfwjY7AEw1CJ50aoSW6VzW8A==","signatures":[{"sig":"MEUCIQCePJs2L0U4gpZI37UQko4ywgTR9Zk1rvFMlpPbC5CTtQIgQfIokm7vKx66pUWtGWRoUZ7RLUGVrBczbEmA+iVTN+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@squawk%2fflightplan@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46486},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a60d00be86de161b30f2c5ae2d1cd296ae40f563","scripts":{"lint":"tsc --noEmit && eslint src","test":"vitest run","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/libs/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"^0.4.2","@squawk/types":"^0.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"^0.2.5","@squawk/airways":"^0.3.5","@squawk/navaids":"^0.3.5","@squawk/airports":"^0.5.4","@squawk/fix-data":"^0.6.2","@squawk/procedures":"^0.4.4","@squawk/airway-data":"^0.5.2","@squawk/navaid-data":"^0.6.2","@squawk/airport-data":"^0.7.2","@squawk/procedure-data":"^0.7.1"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.4.5_1777845353435_0.6246939530130058","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@squawk/flightplan","version":"0.5.0","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.5.0","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"1e517f9395e9da52d3ae18d41ac895201d4b2b19","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.5.0.tgz","fileCount":11,"integrity":"sha512-hVApsKrm1NcGQaFUkkDf+JQLouBhMYAjxyYcQW6unsJfhg/NFCLKAHgG5twxLK31szbEZqvK5Do8N6TucsfNww==","signatures":[{"sig":"MEUCIQDn4/zLnS2sEXyCAaiaaNp10OmDHAaMjXYa5hz1r7oErwIgUJ7ocr17RvcF2B1Z2/8gsfC4b91cPXwABP4iTPdGWLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@squawk%2fflightplan@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48291},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f78bdd0f1dcc89f5e366e2c14f9ae3ec36608a70","scripts":{"lint":"tsc --noEmit && eslint src","test":"vitest run","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/libs/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"^0.4.2","@squawk/types":"^0.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"^0.3.0","@squawk/airways":"^0.4.0","@squawk/navaids":"^0.4.0","@squawk/airports":"^0.6.0","@squawk/fix-data":"^0.6.2","@squawk/procedures":"^0.5.0","@squawk/airway-data":"^0.5.2","@squawk/navaid-data":"^0.6.2","@squawk/airport-data":"^0.7.2","@squawk/procedure-data":"^0.7.1"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.5.0_1778033725342_0.20330136369559115","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@squawk/flightplan","version":"0.5.1","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.5.1","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"5d643c6ce805589f2c06b999296d3ac6e2f28a96","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.5.1.tgz","fileCount":11,"integrity":"sha512-Oq6o9kwO9bCBu/YXhYvIr33ioA6bWi4uirSH9/lGM9eGdJa5cClo7AHMWnJmq9zFN3SG9cD04/kpoY//lVwJ1w==","signatures":[{"sig":"MEUCIBeLvFGZC5yrMophApGpp+A98scJ5000d+BBlIcdIcsdAiEA9a0X6Biqknd0l+ZxZZCA+GJHfSX7nU/6BukjdO9Zp4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@squawk%2fflightplan@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48291},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"dc5b5968b3dbc59207705ecd142aa325cb9185b7","scripts":{"lint":"tsc --noEmit && eslint src","test":"vitest run","build":"tsc","lint:pack":"publint && attw --pack . --profile esm-only","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"neilcochran","email":"dev.neil.cochran@pm.me"},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/libs/flightplan"},"_npmVersion":"10.9.7","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.2","dependencies":{"@squawk/geo":"^0.4.3","@squawk/types":"^0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.6.0","@squawk/fixes":"^0.3.1","@squawk/airways":"^0.4.1","@squawk/navaids":"^0.4.1","@squawk/airports":"^0.6.1","@squawk/fix-data":"^0.6.3","@squawk/procedures":"^0.5.1","@squawk/airway-data":"^0.5.3","@squawk/navaid-data":"^0.6.3","@squawk/airport-data":"^0.7.3","@squawk/procedure-data":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.5.1_1778100159202_0.7401123506799205","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"@squawk/flightplan","version":"0.5.7","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"author":{"name":"Neil Cochran"},"license":"MIT","_id":"@squawk/flightplan@0.5.7","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"homepage":"https://github.com/neilcochran/squawk","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"dist":{"shasum":"a232660c614788aad08b2252156116ed3a6e3d61","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.5.7.tgz","fileCount":11,"integrity":"sha512-xz8gmF8jIDhkNqMqWNqEl28EDpAfvQI74roYGyUIoUZ3GSOBkf9Il4rulnmHzt/X0mzOCHBFoX8lm+vNj5I/Lw==","signatures":[{"sig":"MEUCIQC+HfhqFu+fvT3gmK9VF6qoQF8wcMbRygB1w/DQ72L3ngIgTAVpTaFYJvq6NWsZSxb+0T0TyDfQD8YEThhDZsx+XLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@squawk%2fflightplan@0.5.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48441},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1979042537e1986a65803f7f141f3b42276c2658","scripts":{"lint":"tsc --noEmit && eslint src","test":"vitest run","build":"tsc","api:check":"api-extractor run --verbose","lint:pack":"publint && attw --pack . --profile esm-only","api:report":"api-extractor run --local --verbose","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e1060cf9-3b53-446e-8d95-a22732f8cac9"}},"repository":{"url":"git+https://github.com/neilcochran/squawk.git","type":"git","directory":"packages/libs/flightplan"},"_npmVersion":"11.5.2","description":"Flight plan route string parsing and resolution using composed navigation resolvers","directories":{},"typedocMain":"src/index.ts","_nodeVersion":"22.22.3","dependencies":{"@squawk/geo":"^0.4.3","@squawk/types":"^0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.9.3","@squawk/fixes":"^0.3.1","@squawk/airways":"^0.4.1","@squawk/navaids":"^0.4.1","@squawk/airports":"^0.6.1","@squawk/fix-data":"^0.6.3","@squawk/procedures":"^0.5.1","@squawk/airway-data":"^0.5.3","@squawk/navaid-data":"^0.6.3","@squawk/airport-data":"^0.7.3","@squawk/procedure-data":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/flightplan_0.5.7_1781459219139_0.8875526075004392","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@squawk/flightplan","version":"0.6.0","type":"module","description":"Flight plan route string parsing and resolution using composed navigation resolvers","author":{"name":"Neil Cochran"},"license":"MIT","homepage":"https://github.com/neilcochran/squawk","repository":{"type":"git","url":"git+https://github.com/neilcochran/squawk.git","directory":"packages/libs/flightplan"},"engines":{"node":">=22"},"typedocMain":"src/index.ts","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./browser":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc","test":"vitest run","test:coverage":"vitest run --coverage","lint":"tsc --noEmit && eslint src","lint:pack":"publint && attw --pack . --profile esm-only","api:check":"api-extractor run --verbose","api:report":"api-extractor run --local --verbose"},"dependencies":{"@squawk/flight-math":"^0.5.9","@squawk/geo":"^0.4.3","@squawk/types":"^0.8.0","@types/geojson":"^7946.0.16"},"devDependencies":{"@squawk/airport-data":"^0.7.3","@squawk/airports":"^0.7.0","@squawk/airway-data":"^0.5.3","@squawk/airways":"^0.5.0","@squawk/fix-data":"^0.6.3","@squawk/fixes":"^0.5.0","@squawk/navaid-data":"^0.6.3","@squawk/navaids":"^0.6.0","@squawk/procedure-data":"^0.7.2","@squawk/procedures":"^0.7.0","@types/node":"^25.9.3"},"keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"publishConfig":{"access":"public"},"_id":"@squawk/flightplan@0.6.0","gitHead":"1ab6ddefa7a9e1334e6fc6f3d45f36c418a409f8","bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"_nodeVersion":"22.22.3","_npmVersion":"11.5.2","dist":{"integrity":"sha512-hk5tYt1QLgTB1jQPHSauzLNoZRx+0PgPXW7BsE0vWBmE9U1yl2+ZtZO1napPYPWDtz2CvdWVKSWaQLhKHVJPqg==","shasum":"3ced1aee6bc7fc1a2bafe86bcfe4ef94378af0a4","tarball":"https://registry.npmjs.org/@squawk/flightplan/-/flightplan-0.6.0.tgz","fileCount":17,"unpackedSize":81904,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@squawk%2fflightplan@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGAQBh5EFZ0e+SL1WeOdVrFGTY5x+TunqTtDAqAioTiYAiEAwK6epSwmbH9lPoj6Lm2j46U40ufHxPXafNV/JWFy+qU="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e1060cf9-3b53-446e-8d95-a22732f8cac9"}},"directories":{},"maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/flightplan_0.6.0_1782104078424_0.2025036866458536"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-12T18:07:39.525Z","modified":"2026-06-22T04:54:38.838Z","0.2.0":"2026-04-12T18:07:39.787Z","0.2.1":"2026-04-13T01:17:05.239Z","0.2.2":"2026-04-14T22:17:05.026Z","0.3.0":"2026-04-16T00:46:36.438Z","0.3.1":"2026-04-18T19:05:28.898Z","0.3.2":"2026-04-19T07:13:28.086Z","0.3.3":"2026-04-19T21:20:19.582Z","0.4.0":"2026-04-21T03:43:13.418Z","0.4.1":"2026-04-23T23:26:56.776Z","0.4.2":"2026-04-25T01:15:21.022Z","0.4.3":"2026-04-27T20:58:34.863Z","0.4.4":"2026-04-28T22:09:45.824Z","0.4.5":"2026-05-03T21:55:53.570Z","0.5.0":"2026-05-06T02:15:25.517Z","0.5.1":"2026-05-06T20:42:39.364Z","0.5.2":"2026-05-11T22:17:05.323Z","0.5.3":"2026-05-11T22:48:47.085Z","0.5.4":"2026-05-11T22:55:28.513Z","0.5.5":"2026-05-11T22:57:01.980Z","0.5.6":"2026-05-11T23:51:54.739Z","0.5.7":"2026-06-14T17:46:59.253Z","0.6.0":"2026-06-22T04:54:38.576Z"},"bugs":{"url":"https://github.com/neilcochran/squawk/issues"},"author":{"name":"Neil Cochran"},"license":"MIT","homepage":"https://github.com/neilcochran/squawk","keywords":["aviation","typescript","flight-plan","route","navigation","ifr"],"repository":{"type":"git","url":"git+https://github.com/neilcochran/squawk.git","directory":"packages/libs/flightplan"},"description":"Flight plan route string parsing and resolution using composed navigation resolvers","maintainers":[{"name":"neilcochran","email":"dev.neil.cochran@pm.me"}],"readme":"<h1><img src=\"../../../assets/squawk-logo.svg\" alt=\"squawk logo\" width=\"48\" height=\"48\" style=\"vertical-align: middle\">&nbsp; @squawk/flightplan</h1>\n\n[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](../../../LICENSE.md) [![npm](https://img.shields.io/npm/v/@squawk/flightplan)](https://www.npmjs.com/package/@squawk/flightplan) ![TypeScript](https://img.shields.io/badge/TypeScript-blue?logo=typescript&logoColor=white)\n\nPure logic library for parsing flight plan route strings into structured,\ncoordinate-resolved route elements. Composes airport, navaid, fix, airway,\nand procedure resolvers to classify and resolve each token in a route string.\nContains no bundled data - accepts resolver instances at initialization. For\nzero-config use, pair with the companion data and resolver packages.\n\nPart of the [@squawk](https://www.npmjs.com/org/squawk) aviation library suite. See all packages on npm.\n\n## Usage\n\n```typescript\nimport { createFlightplanResolver } from '@squawk/flightplan';\nimport { createAirportResolver } from '@squawk/airports';\nimport { createNavaidResolver } from '@squawk/navaids';\nimport { createFixResolver } from '@squawk/fixes';\nimport { createAirwayResolver } from '@squawk/airways';\nimport { createProcedureResolver } from '@squawk/procedures';\nimport { usBundledAirports } from '@squawk/airport-data';\nimport { usBundledNavaids } from '@squawk/navaid-data';\nimport { usBundledFixes } from '@squawk/fix-data';\nimport { usBundledAirways } from '@squawk/airway-data';\nimport { usBundledProcedures } from '@squawk/procedure-data';\n\nconst resolver = createFlightplanResolver({\n  airports: createAirportResolver({ data: usBundledAirports.records }),\n  navaids: createNavaidResolver({ data: usBundledNavaids.records }),\n  fixes: createFixResolver({ data: usBundledFixes.records }),\n  airways: createAirwayResolver({ data: usBundledAirways.records }),\n  procedures: createProcedureResolver({ data: usBundledProcedures.records }),\n});\n\nconst route = resolver.parse('KJFK DCT MERIT J60 MARTN DCT KLAX');\nfor (const element of route.elements) {\n  console.log(element.type, element.raw);\n}\n```\n\nAll resolver providers are optional. Tokens that require a missing provider\nare marked as `unresolved`:\n\n```typescript\nimport { createFlightplanResolver } from '@squawk/flightplan';\n\n// Works with only the resolvers you have\nconst resolver = createFlightplanResolver({ airports: myAirportResolver });\nconst route = resolver.parse('KJFK DCT KLAX');\n```\n\n## Browser / SPA usage\n\nThe resolver factory has no Node-specific imports and ships an explicit `/browser` subpath for SPAs and edge runtimes. Pair it with the `/browser` entries of the resolvers you want to compose:\n\n```typescript\nimport { loadUsBundledAirports } from '@squawk/airport-data/browser';\nimport { loadUsBundledNavaids } from '@squawk/navaid-data/browser';\nimport { loadUsBundledFixes } from '@squawk/fix-data/browser';\nimport { loadUsBundledAirways } from '@squawk/airway-data/browser';\nimport { loadUsBundledProcedures } from '@squawk/procedure-data/browser';\nimport { createAirportResolver } from '@squawk/airports/browser';\nimport { createNavaidResolver } from '@squawk/navaids/browser';\nimport { createFixResolver } from '@squawk/fixes/browser';\nimport { createAirwayResolver } from '@squawk/airways/browser';\nimport { createProcedureResolver } from '@squawk/procedures/browser';\nimport { createFlightplanResolver } from '@squawk/flightplan/browser';\n\nconst [airports, navaids, fixes, airways, procedures] = await Promise.all([\n  loadUsBundledAirports(),\n  loadUsBundledNavaids(),\n  loadUsBundledFixes(),\n  loadUsBundledAirways(),\n  loadUsBundledProcedures(),\n]);\n\nconst resolver = createFlightplanResolver({\n  airports: createAirportResolver({ data: airports.records }),\n  navaids: createNavaidResolver({ data: navaids.records }),\n  fixes: createFixResolver({ data: fixes.records }),\n  airways: createAirwayResolver({ data: airways.records }),\n  procedures: createProcedureResolver({ data: procedures.records }),\n});\n```\n\nThe `/browser` entry is identical to the main entry; the separate subpath exists so browser support is an explicit, `publint`-verified part of the public API surface.\n\n## API\n\n### `createFlightplanResolver(options)`\n\nCreates a resolver from optional lookup providers.\n\n**Parameters:**\n\n- `options.airports` - airport lookup (must provide `byFaaId` and `byIcao`)\n- `options.navaids` - navaid lookup (must provide `byIdent`; may also provide `byIdentAtPosition` for proximity disambiguation)\n- `options.fixes` - fix lookup (must provide `byIdent`; may also provide `byIdentAtPosition` for proximity disambiguation)\n- `options.airways` - airway lookup (must provide `byDesignation` and `expand`)\n- `options.procedures` - procedure lookup (must provide `byIdentifier` and `expand`)\n\n**Returns:** `FlightplanResolver` - an object with the `parse` method described below.\n\n### `resolver.parse(routeString)`\n\nParses a flight plan route string into an ordered sequence of resolved\nelements. Each whitespace-separated token is classified and resolved against\nthe configured lookup providers.\n\n**Returns:** `ParsedRoute` with:\n\n- `raw` - the original route string\n- `elements` - ordered array of `RouteElement` values\n\n### Route element types\n\nEach element has a `type` discriminant and a `raw` field with the original token.\n\n| Type            | Description                               | Key fields                                                  |\n| --------------- | ----------------------------------------- | ----------------------------------------------------------- |\n| `airport`       | Resolved airport (ICAO or FAA ID)         | `airport`                                                   |\n| `sid`           | Standard Instrument Departure             | `procedure`, `legs`                                         |\n| `star`          | Standard Terminal Arrival Route           | `procedure`, `legs`                                         |\n| `airway`        | Airway segment between entry and exit fix | `airway`, `entryFix`, `exitFix`, `waypoints`                |\n| `direct`        | DCT (direct) indicator                    | -                                                           |\n| `waypoint`      | Resolved fix or navaid                    | `fix` and/or `navaid`, `lat`, `lon`                         |\n| `coordinate`    | Lat/lon specified in the route string     | `lat`, `lon`                                                |\n| `speedAltitude` | Speed/altitude group (e.g. N0450F350)     | `speedKt`/`speedKmPerHr`/`mach`, `flightLevel`/`altitudeFt` |\n| `unresolved`    | Token that could not be resolved          | -                                                           |\n\n### Coordinate formats\n\n- `DDMMN/DDDMMEW` (e.g. `4030N07045W` for 40 deg 30 min N, 70 deg 45 min W)\n- `DDN/DDDEW` (e.g. `40N070W` for 40 deg N, 70 deg W)\n\n### Speed/altitude formats\n\n- `N0450F350` - 450 knots at FL350\n- `K0830F350` - 830 km/h at FL350\n- `M082F350` - Mach 0.82 at FL350\n- `N0250A065` - 250 knots at 6500 ft\n\n### Airway handling\n\nWhen a token matches an airway designation and both a previous waypoint\nand a next token (exit fix) are available, the resolver expands the airway\nbetween those fixes. The exit fix token is consumed as part of the airway\nelement. If expansion fails, the airway token falls through to other\nresolution strategies.\n\n### Identifier ambiguity\n\nWhen a token could match multiple entity types (e.g. a 3-letter code matching\nboth an airport and a navaid), the resolver uses this priority order:\n\n1. Airway (if previous waypoint context exists and next token available)\n2. Airport (ICAO or FAA ID)\n3. Procedure (SID/STAR)\n4. Fix\n5. Navaid\n\nThe same fix or navaid identifier is sometimes published in more than one\nregion. When the `fixes` or `navaids` provider exposes `byIdentAtPosition`, the\nresolver disambiguates such a token by proximity to the most recently resolved\npositional element (a preceding airport, coordinate, waypoint, airway exit fix,\nor procedure terminus). The first token in a route has no such anchor, and a\nprovider that exposes only `byIdent` cannot disambiguate; both cases fall back\nto the first `byIdent` match.\n\n### `computeRouteDistance(route, groundSpeedKt?)`\n\nComputes the total great-circle route distance and optional estimated time\nenroute from a parsed route. Walks the same ordered point sequence as the\ngeometry helpers below, so distance and geometry stay in agreement. Airway\nsegments use FAA-published per-segment distances when available, falling back\nto great-circle computation.\n\n```typescript\nimport { computeRouteDistance } from '@squawk/flightplan';\n\nconst route = resolver.parse('KJFK DCT MERIT J60 MARTN DCT KLAX');\nconst result = computeRouteDistance(route, 450);\nconsole.log(result.totalDistanceNm, result.estimatedTimeEnrouteHrs);\n```\n\n**Parameters:**\n\n- `route` - a `ParsedRoute` from `resolver.parse`\n- `groundSpeedKt` - optional ground speed in knots; omit to skip ETE\n\n**Returns:** `RouteDistanceResult` with:\n\n- `legs` - ordered `RouteLeg` values, each with `from`/`to` point labels, their `fromLat`/`fromLon`/`toLat`/`toLon` coordinates in decimal degrees, `distanceNm`, and `cumulativeDistanceNm`\n- `totalDistanceNm` - total great-circle distance in nautical miles\n- `estimatedTimeEnrouteHrs` - ETE in hours, or `undefined` when no ground speed was given\n- `unresolvedElements` - route elements that could not contribute coordinates\n\n### `computeRouteTiming(route, options)`\n\nLayers per-leg, wind-corrected timing over the same legs as\n`computeRouteDistance`. For each leg it derives the initial great-circle true\ncourse, samples the wind at the leg midpoint, and solves the wind triangle for\ntrue heading, wind correction angle, and ground speed. Estimated time enroute\nfollows from leg distance and ground speed, and fuel burn follows from the same\nground speed.\n\nWinds are supplied through an optional `windProvider` callback, keeping this\nfunction independent of any weather source. The provider takes only a position;\nbake the sampling altitude into the closure. A `@squawk/weather` winds-aloft\nforecast read at a chosen cruise altitude is one way to satisfy it. When the\nprovider is omitted, or returns `undefined` for a leg (no data, or light and\nvariable), that leg is timed as calm: ground speed equals true airspeed and the\nwind correction angle is zero.\n\n```typescript\nimport { computeRouteTiming } from '@squawk/flightplan';\n\nconst route = resolver.parse('KJFK DCT MERIT J60 MARTN DCT KLAX');\nconst result = computeRouteTiming(route, {\n  trueAirspeedKt: 450,\n  windProvider: (lat, lon) => ({ directionDeg: 270, speedKt: 80 }),\n  fuelBurnPerHr: 600,\n  fuelAvailable: 2400,\n});\nconsole.log(result.totalEteHrs, result.totalFuelRequired, result.fuelSufficient);\n```\n\n**Parameters:**\n\n- `route` - a `ParsedRoute` from `resolver.parse`\n- `options.trueAirspeedKt` - true airspeed in knots flown on every leg\n- `options.windProvider` - optional `(lat, lon) => WindVector | undefined` callback sampling the wind at each leg midpoint\n- `options.fuelBurnPerHr` - optional fuel burn rate per hour (any consistent unit); enables per-leg and total fuel\n- `options.fuelAvailable` - optional fuel on board (same unit as `fuelBurnPerHr`); with the burn rate, enables endurance and sufficiency\n\n**Returns:** `RouteTimingResult` with:\n\n- `legs` - ordered `RouteTimingLeg` values, each carrying the distance fields above plus `trueCourseDeg`, `trueHeadingDeg`, `windCorrectionAngleDeg`, `groundSpeedKt`, the applied `wind` (or `undefined` when calm), `eteHrs`, `cumulativeEteHrs`, and `fuelRequired`\n- `totalDistanceNm` - total great-circle distance in nautical miles\n- `totalEteHrs` - total estimated time enroute in hours, or `undefined` if any leg could not be timed\n- `totalFuelRequired` - total fuel across all legs, or `undefined` without a burn rate or when any leg could not be timed\n- `enduranceHrs` - endurance in hours from `fuelAvailable` and `fuelBurnPerHr`, or `undefined`\n- `fuelSufficient` - whether endurance covers the total ETE, or `undefined`\n- `unresolvedElements` - route elements that could not contribute coordinates\n\nGround speed comes from the wind triangle as a magnitude, so a leg is left\nuntimed (`eteHrs` is `undefined`) only when ground speed is not positive, which\noccurs where a pure headwind equals true airspeed. A headwind exceeding true\nairspeed still yields a positive magnitude and is not separately flagged.\n\n### `extractRoutePoints(route)`\n\nExtracts the ordered sequence of drawable geographic points from a parsed\nroute. Expands airway and SID/STAR segments into their constituent fixes and\nsuppresses consecutive duplicate points (e.g. an airway entry fix that matches\nthe preceding waypoint). Elements without coordinates (DCT, speed/altitude\ngroups, unresolved tokens) contribute no points.\n\n**Returns:** `RoutePoint[]`, each with `label`, `lat`, and `lon`.\n\n### `routeToLineString(route)`\n\nBuilds a GeoJSON `LineString` from a parsed route, ready to render as a\npolyline on a map (e.g. MapLibre, Leaflet). Coordinates follow the GeoJSON\n`[lon, lat]` ordering. Returns `undefined` when the route yields fewer than\ntwo drawable points, since a `LineString` requires at least two positions.\n\n```typescript\nimport { routeToLineString } from '@squawk/flightplan';\n\nconst route = resolver.parse('KJFK DCT MERIT J60 MARTN DCT KLAX');\nconst line = routeToLineString(route);\nif (line) {\n  map.addSource('route', { type: 'geojson', data: line });\n}\n```\n","readmeFilename":"README.md"}