@urbankitstudio/atlas 0.5.1 → 0.5.3

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 (58) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +146 -110
  3. package/data/alabama.json +103 -103
  4. package/data/alaska.json +51 -51
  5. package/data/arizona.json +149 -148
  6. package/data/arkansas.json +143 -143
  7. package/data/california.json +435 -435
  8. package/data/colorado.json +150 -150
  9. package/data/connecticut.json +164 -164
  10. package/data/delaware.json +46 -46
  11. package/data/florida.json +455 -455
  12. package/data/georgia.json +176 -175
  13. package/data/hawaii.json +82 -82
  14. package/data/idaho.json +54 -54
  15. package/data/illinois.json +337 -337
  16. package/data/index.json +411 -411
  17. package/data/indiana.json +132 -132
  18. package/data/iowa.json +51 -51
  19. package/data/kansas.json +49 -49
  20. package/data/kentucky.json +52 -52
  21. package/data/louisiana.json +102 -102
  22. package/data/maine.json +138 -138
  23. package/data/maryland.json +94 -94
  24. package/data/massachusetts.json +78 -78
  25. package/data/michigan.json +92 -92
  26. package/data/minnesota.json +94 -94
  27. package/data/mississippi.json +98 -98
  28. package/data/missouri.json +99 -99
  29. package/data/montana.json +196 -196
  30. package/data/nebraska.json +137 -137
  31. package/data/nevada.json +98 -98
  32. package/data/new-hampshire.json +42 -42
  33. package/data/new-jersey.json +493 -493
  34. package/data/new-mexico.json +49 -49
  35. package/data/new-york.json +318 -318
  36. package/data/north-carolina.json +303 -303
  37. package/data/north-dakota.json +57 -57
  38. package/data/ohio.json +304 -304
  39. package/data/oklahoma.json +49 -49
  40. package/data/oregon.json +144 -144
  41. package/data/pennsylvania.json +86 -86
  42. package/data/rhode-island.json +25 -25
  43. package/data/south-carolina.json +101 -101
  44. package/data/south-dakota.json +58 -58
  45. package/data/tennessee.json +154 -154
  46. package/data/texas.json +430 -430
  47. package/data/utah.json +193 -193
  48. package/data/vermont.json +59 -59
  49. package/data/virginia.json +88 -88
  50. package/data/washington.json +183 -183
  51. package/data/west-virginia.json +172 -176
  52. package/data/wisconsin.json +374 -374
  53. package/data/wyoming.json +58 -58
  54. package/dist/index.cjs +44 -42
  55. package/dist/index.d.cts +26 -1
  56. package/dist/index.d.ts +26 -1
  57. package/dist/index.js +44 -43
  58. package/package.json +68 -68
package/dist/index.js CHANGED
@@ -1,7 +1,10 @@
1
+ // src/types.ts
2
+ var LIVE_STATUS_URL = "https://urbankitstudio.com/api/atlas/status";
3
+
1
4
  // data/index.json
2
5
  var data_default = {
3
- version: "0.5.1",
4
- lastUpdated: "2026-06-20",
6
+ version: "0.3.0",
7
+ lastUpdated: "2026-08-04",
5
8
  totals: {
6
9
  states: 50,
7
10
  counties: 155,
@@ -583,6 +586,7 @@ var arizona_default = {
583
586
  stateSlug: "arizona",
584
587
  county: "Maricopa",
585
588
  countySlug: "maricopa-county",
589
+ relatedPropertyCitySlug: "phoenix",
586
590
  countyFips: "04013",
587
591
  hasPublicRest: true,
588
592
  endpoints: [
@@ -2137,6 +2141,7 @@ var georgia_default = {
2137
2141
  stateSlug: "georgia",
2138
2142
  county: "Fulton",
2139
2143
  countySlug: "fulton-county",
2144
+ relatedPropertyCitySlug: "atlanta",
2140
2145
  countyFips: "13121",
2141
2146
  hasPublicRest: true,
2142
2147
  endpoints: [
@@ -3076,7 +3081,7 @@ var louisiana_default = {
3076
3081
  stateSlug: "louisiana",
3077
3082
  stateName: "Louisiana",
3078
3083
  stateAbbrev: "LA",
3079
- lastUpdated: "2026-05-15",
3084
+ lastUpdated: "2026-08-04",
3080
3085
  counties: [
3081
3086
  {
3082
3087
  id: "la-east-baton-rouge-parish",
@@ -3170,7 +3175,7 @@ var louisiana_default = {
3170
3175
  url: "https://gis.nola.gov/",
3171
3176
  email: null
3172
3177
  },
3173
- notes: "Orleans Parish (New Orleans, pop. 383,000) Property Information layer at index 15 of the apps/property3 composite MapServer. Note: the 'LandBase/Parcels' MapServer at gis.nola.gov only exposes GEOPIN (parcel geometry key, no attributes). For owner + address data, use apps/property3/MapServer/15 which is an assessor join. 20 fields confirmed: OBJECTID, BUILDING, UNIT, SITEADDRESS, OWNERNME1/2, PSTLADDRESS/CITY/STATE/ZIP5/ZIP4, USECD, PRPRTYDSCRP, PARCELID, TAXBILLID, LOT, SQUARE, BLOCK, PARID. New Orleans uses a Square/Lot system (not typical street address) for legal parcel identification. NOTE 2026-06-27: the liveness check 'fetch failed' was transient (metadata at /MapServer/15?f=json now returns 200). However, this ArcGIS Server 10.4 instance has two persistent query limitations: (1) LIKE/UPPER() queries return HTTP 400; (2) count-all queries (where=1=1&returnCountOnly=true) timeout >35s. PARCELID equality queries (where=PARCELID='...') return valid JSON structure. OWNERNME1 and SITEADDRESS marked searchable:false accordingly; sampleQuery changed to IS NOT NULL filter. For PARCELID-based lookups use the PARCELID or PARID fields. The countySlug 'orleans-parish' matches countySlugFromName('Orleans Parish') per atlas slugify rules."
3178
+ notes: "Orleans Parish's public parcel layer still serves metadata, but its attribute-query operation is currently failing on the county's ArcGIS server. Owner and address searches are unavailable while the county repairs the service; automatic probes continue to check for recovery. New Orleans uses Square/Lot identifiers for legal parcels. The city also publishes a weekly situs-and-geometry dataset on data.nola.gov, but it does not include owner names. An older 2018 parcel snapshot was not substituted because its ownership data is dated and the service was unstable during verification. LIVENESS 2026-08-04: the layer's metadata still loads, but EVERY query against it times out, including a bare returnCountOnly count. 161 consecutive failed checks and last_ok_at has never been set. This is a county-side outage, not a schema drift; there is nothing to fix on our side and the endpoint stays honestly degraded until New Orleans repairs it."
3174
3179
  }
3175
3180
  ]
3176
3181
  };
@@ -3887,7 +3892,7 @@ var montana_default = {
3887
3892
  stateSlug: "montana",
3888
3893
  stateName: "Montana",
3889
3894
  stateAbbrev: "MT",
3890
- lastUpdated: "2026-06-20",
3895
+ lastUpdated: "2026-08-04",
3891
3896
  counties: [
3892
3897
  {
3893
3898
  id: "mt-yellowstone",
@@ -3900,10 +3905,10 @@ var montana_default = {
3900
3905
  hasPublicRest: true,
3901
3906
  endpoints: [
3902
3907
  {
3903
- url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3908
+ url: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1",
3904
3909
  serviceType: "MapServer",
3905
- layerIndex: 0,
3906
- layerName: "Parcels",
3910
+ layerIndex: 1,
3911
+ layerName: "Montana Parcels",
3907
3912
  supportsQuery: true,
3908
3913
  corsEnabled: null,
3909
3914
  searchFields: [
@@ -3921,9 +3926,9 @@ var montana_default = {
3921
3926
  { name: "TotalValue", label: "Total Assessed Value", searchable: false },
3922
3927
  { name: "TaxYear", label: "Tax Year", searchable: false }
3923
3928
  ],
3924
- sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Yellowstone'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3929
+ sampleQuery: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1/query?where=CountyName%3D'Yellowstone'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3925
3930
  license: "public",
3926
- licenseUrl: "https://gisservicemt.gov/",
3931
+ licenseUrl: "https://gisservice.mt.gov/",
3927
3932
  status: "live",
3928
3933
  lastVerified: "2026-06-20",
3929
3934
  verifiedBy: "automated"
@@ -3947,10 +3952,10 @@ var montana_default = {
3947
3952
  hasPublicRest: true,
3948
3953
  endpoints: [
3949
3954
  {
3950
- url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3955
+ url: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1",
3951
3956
  serviceType: "MapServer",
3952
- layerIndex: 0,
3953
- layerName: "Parcels",
3957
+ layerIndex: 1,
3958
+ layerName: "Montana Parcels",
3954
3959
  supportsQuery: true,
3955
3960
  corsEnabled: null,
3956
3961
  searchFields: [
@@ -3968,9 +3973,9 @@ var montana_default = {
3968
3973
  { name: "TotalValue", label: "Total Assessed Value", searchable: false },
3969
3974
  { name: "TaxYear", label: "Tax Year", searchable: false }
3970
3975
  ],
3971
- sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Missoula'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3976
+ sampleQuery: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1/query?where=CountyName%3D'Missoula'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3972
3977
  license: "public",
3973
- licenseUrl: "https://gisservicemt.gov/",
3978
+ licenseUrl: "https://gisservice.mt.gov/",
3974
3979
  status: "live",
3975
3980
  lastVerified: "2026-06-20",
3976
3981
  verifiedBy: "automated"
@@ -3994,10 +3999,10 @@ var montana_default = {
3994
3999
  hasPublicRest: true,
3995
4000
  endpoints: [
3996
4001
  {
3997
- url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
4002
+ url: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1",
3998
4003
  serviceType: "MapServer",
3999
- layerIndex: 0,
4000
- layerName: "Parcels",
4004
+ layerIndex: 1,
4005
+ layerName: "Montana Parcels",
4001
4006
  supportsQuery: true,
4002
4007
  corsEnabled: null,
4003
4008
  searchFields: [
@@ -4015,9 +4020,9 @@ var montana_default = {
4015
4020
  { name: "TotalValue", label: "Total Assessed Value", searchable: false },
4016
4021
  { name: "TaxYear", label: "Tax Year", searchable: false }
4017
4022
  ],
4018
- sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Cascade'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4023
+ sampleQuery: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1/query?where=CountyName%3D'Cascade'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4019
4024
  license: "public",
4020
- licenseUrl: "https://gisservicemt.gov/",
4025
+ licenseUrl: "https://gisservice.mt.gov/",
4021
4026
  status: "live",
4022
4027
  lastVerified: "2026-06-20",
4023
4028
  verifiedBy: "automated"
@@ -4041,10 +4046,10 @@ var montana_default = {
4041
4046
  hasPublicRest: true,
4042
4047
  endpoints: [
4043
4048
  {
4044
- url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
4049
+ url: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1",
4045
4050
  serviceType: "MapServer",
4046
- layerIndex: 0,
4047
- layerName: "Parcels",
4051
+ layerIndex: 1,
4052
+ layerName: "Montana Parcels",
4048
4053
  supportsQuery: true,
4049
4054
  corsEnabled: null,
4050
4055
  searchFields: [
@@ -4062,9 +4067,9 @@ var montana_default = {
4062
4067
  { name: "TotalValue", label: "Total Assessed Value", searchable: false },
4063
4068
  { name: "TaxYear", label: "Tax Year", searchable: false }
4064
4069
  ],
4065
- sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Flathead'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4070
+ sampleQuery: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1/query?where=CountyName%3D'Flathead'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4066
4071
  license: "public",
4067
- licenseUrl: "https://gisservicemt.gov/",
4072
+ licenseUrl: "https://gisservice.mt.gov/",
4068
4073
  status: "live",
4069
4074
  lastVerified: "2026-06-20",
4070
4075
  verifiedBy: "automated"
@@ -6318,7 +6323,7 @@ var south_dakota_default = {
6318
6323
  stateSlug: "south-dakota",
6319
6324
  stateName: "South Dakota",
6320
6325
  stateAbbrev: "SD",
6321
- lastUpdated: "2026-06-20",
6326
+ lastUpdated: "2026-08-04",
6322
6327
  counties: [
6323
6328
  {
6324
6329
  id: "sd-minnehaha",
@@ -6331,7 +6336,7 @@ var south_dakota_default = {
6331
6336
  hasPublicRest: true,
6332
6337
  endpoints: [
6333
6338
  {
6334
- url: "https://gis.minnehahacounty.org/minnemap/rest/services/Parcels/MapServer/0",
6339
+ url: "https://gis.minnehahacounty.gov/minnemap/rest/services/Parcels/MapServer/0",
6335
6340
  serviceType: "MapServer",
6336
6341
  layerIndex: 0,
6337
6342
  layerName: "Parcels",
@@ -6355,9 +6360,9 @@ var south_dakota_default = {
6355
6360
  { name: "TRACT", label: "Tract", searchable: false },
6356
6361
  { name: "SUBDIVISION", label: "Subdivision", searchable: false }
6357
6362
  ],
6358
- sampleQuery: "https://gis.minnehahacounty.org/minnemap/rest/services/Parcels/MapServer/0/query?where=UPPER(MRTNM1)+LIKE+UPPER('%25SMITH%25')&outFields=TAG,MRTNM1,MRTNM2,MRTCTY,FULL_ADDRESS&returnGeometry=false&f=json&resultRecordCount=10",
6363
+ sampleQuery: "https://gis.minnehahacounty.gov/minnemap/rest/services/Parcels/MapServer/0/query?where=UPPER(MRTNM1)+LIKE+UPPER('%25SMITH%25')&outFields=TAG,MRTNM1,MRTNM2,MRTCTY,FULL_ADDRESS&returnGeometry=false&f=json&resultRecordCount=10",
6359
6364
  license: "public",
6360
- licenseUrl: "https://gis.minnehahacounty.org/",
6365
+ licenseUrl: "https://gis.minnehahacounty.gov/",
6361
6366
  status: "live",
6362
6367
  lastVerified: "2026-06-20",
6363
6368
  verifiedBy: "automated"
@@ -6368,7 +6373,7 @@ var south_dakota_default = {
6368
6373
  url: "https://www.minnehahacounty.org/dept/eq/eq.php",
6369
6374
  email: null
6370
6375
  },
6371
- notes: "Minnehaha County SD (Sioux Falls metro; county seat Sioux Falls; FIPS 46099; most populous county in SD, pop. 210,000) provides parcel data via gis.minnehahacounty.org. The Parcels/MapServer/0 layer exposes 20 fields: OBJECTID, FULL_ADDRESS, TAG (parcel ID), MAP_ID, MRRDID, MRTNM1 (owner name 1), MRTNM2 (owner name 2), MRTCTY (owner city), MRTSTATE, MRTZPC (ZIP), MRTZPC2, NWLOCN, NWPRED, NWLOCS (street name), NWSTYP, NWPOSD, LOT, BLOCK, TRACT, SUBDIVISION. Owner search via UPPER(MRTNM1) LIKE on MRTNM1. To get both owners, also query MRTNM2. Verified 2026-06-20: SMITH query returns Sioux Falls addresses. Minnehaha County SD (FIPS 46099) must not be confused with Minnehaha County in any other state."
6376
+ notes: "Minnehaha County SD (Sioux Falls metro; county seat Sioux Falls; FIPS 46099; most populous county in SD, pop. 210,000) provides parcel data via gis.minnehahacounty.gov. The Parcels/MapServer/0 layer exposes 20 fields: OBJECTID, FULL_ADDRESS, TAG (parcel ID), MAP_ID, MRRDID, MRTNM1 (owner name 1), MRTNM2 (owner name 2), MRTCTY (owner city), MRTSTATE, MRTZPC (ZIP), MRTZPC2, NWLOCN, NWPRED, NWLOCS (street name), NWSTYP, NWPOSD, LOT, BLOCK, TRACT, SUBDIVISION. Owner search via UPPER(MRTNM1) LIKE on MRTNM1. To get both owners, also query MRTNM2. Verified 2026-06-20: SMITH query returns Sioux Falls addresses. Minnehaha County SD (FIPS 46099) must not be confused with Minnehaha County in any other state."
6372
6377
  }
6373
6378
  ]
6374
6379
  };
@@ -6481,7 +6486,7 @@ var tennessee_default = {
6481
6486
  url: "https://www.shelbycountytn.gov/467/REGIS-Regional-GIS",
6482
6487
  email: null
6483
6488
  },
6484
- notes: "Shelby County (Memphis and suburbs, pop. 934,000) hosts parcel data through ReGIS (Regional Geographic Information Systems), a multi-jurisdictional GIS consortium established by the Shelby County Commission in 2004. The CurrentParcels MapServer at scgis.shelbycountytn.gov exposes 47 confirmed fields. Parcel identifiers: PARCELID (primary display key) and PARID (the CAMA account ID used by the Shelby County Assessor of Property). Owner field is OWNER; OWNER_EXT holds overflow text. Mailing address is split across OWN_ADRNO, ADRPREDIR, ADRSTR, ADRSUF, ADRPOSTDIR for the street component, plus OWN_CITY, OWN_STATE, OWN_ZIP/ZIP4; also available concatenated as OWN_ADDR1/2/3. The MUNI field identifies the municipality -- Memphis, Bartlett, Collierville, Germantown, Lakeland, Millington, or blank for unincorporated Shelby County. That distinction carries real workflow consequences: Memphis's Division of Planning handles incorporated parcels, while the Shelby County Land Use Control Board handles unincorporated ones. Verified 2026-05-15: SMITH returns results from Germantown, Arlington, and unincorporated areas. Last countywide reappraisal was 2025; next scheduled 2029. LEGACY TLS (first documented 2026-06-06, confirmed 2026-06-27): scgis.shelbycountytn.gov requires legacy TLS renegotiation (UNSAFE_LEGACY_RENEGOTIATION). Modern runtimes (Node.js 18+, undici fetch, Python 3.10+ ssl, standard curl) reject the handshake; curl --legacy-server-connect or OpenSSL OP_LEGACY_SERVER_CONNECT succeeds. The endpoint itself is live (353,448 parcels). The atlas liveness check will always flag this endpoint FAIL because Node's native fetch rejects the TLS handshake. This is expected behavior, NOT a server outage. FIX NEEDED (flagged for lead): add a narrow per-host legacy-TLS fetch path in atlas-liveness-check.mjs and in the server-side parcel fetch for this specific host. Weakening TLS globally is not an option."
6489
+ notes: "Shelby County (Memphis and suburbs, pop. 934,000) hosts parcel data through ReGIS (Regional Geographic Information Systems), a multi-jurisdictional GIS consortium established by the Shelby County Commission in 2004. The CurrentParcels MapServer at scgis.shelbycountytn.gov exposes 47 confirmed fields. Parcel identifiers: PARCELID (primary display key) and PARID (the CAMA account ID used by the Shelby County Assessor of Property). Owner field is OWNER; OWNER_EXT holds overflow text. Mailing address is split across OWN_ADRNO, ADRPREDIR, ADRSTR, ADRSUF, ADRPOSTDIR for the street component, plus OWN_CITY, OWN_STATE, OWN_ZIP/ZIP4; also available concatenated as OWN_ADDR1/2/3. The MUNI field identifies the municipality -- Memphis, Bartlett, Collierville, Germantown, Lakeland, Millington, or blank for unincorporated Shelby County. That distinction carries real workflow consequences: Memphis's Division of Planning handles incorporated parcels, while the Shelby County Land Use Control Board handles unincorporated ones. Verified 2026-05-15: SMITH returns results from Germantown, Arlington, and unincorporated areas. Last countywide reappraisal was 2025; next scheduled 2029. LEGACY TLS (first documented 2026-06-06, confirmed 2026-06-27): scgis.shelbycountytn.gov requires legacy TLS renegotiation (UNSAFE_LEGACY_RENEGOTIATION). Modern runtimes (Node.js 18+, undici fetch, Python 3.10+ ssl, standard curl) reject the handshake; curl --legacy-server-connect or OpenSSL OP_LEGACY_SERVER_CONNECT succeeds. The endpoint itself is live (353,448 parcels). RESOLVED (2026-07-21): the canonical liveness prober (api/cron/liveness.ts) and the server-side parcel fetch (api/_lib/atlas-resilient-fetch.ts) both use a narrow legacy-TLS path scoped to this hostname alone, so the endpoint probes and fetches correctly; global TLS behavior is unchanged."
6485
6490
  },
6486
6491
  {
6487
6492
  id: "tn-hamilton",
@@ -7220,7 +7225,7 @@ var virginia_default = {
7220
7225
  stateSlug: "virginia",
7221
7226
  stateName: "Virginia",
7222
7227
  stateAbbrev: "VA",
7223
- lastUpdated: "2026-06-20",
7228
+ lastUpdated: "2026-08-04",
7224
7229
  counties: [
7225
7230
  {
7226
7231
  id: "va-fairfax",
@@ -7300,7 +7305,7 @@ var virginia_default = {
7300
7305
  url: "https://www.pwcva.gov/department/geographic-information-systems-gis",
7301
7306
  email: null
7302
7307
  },
7303
- notes: "Prince William County (Northern Virginia, pop. ~490,000; county seat unincorporated, courts in Manassas) publishes an Open Data parcel MapServer at gisweb.pwcva.gov (note the host is gisweb.pwcva.gov, NOT pwcgov.org). Layer 0 exposes 49 fields and -- unlike neighboring Fairfax County -- includes owner name directly: CAMA_OWNER_CUR (current owner from the CAMA system) and CAMA_DEEDOWNER (deed owner). Parcel identifier is GPIN, a hyphenated geographic id (e.g. '7201-09-8851'). Site address is split across ST_NO / ST_NAME / ST_TYPE / CITY / ZIP. Verified 2026-06-20: 159,174 parcels; UPPER(CAMA_OWNER_CUR) LIKE '%SMITH%' returns real owners with Haymarket/Manassas-area addresses and ZIPs. IMPORTANT: this entry covers Prince William COUNTY only. The independent cities of Manassas (FIPS 51683) and Manassas Park (FIPS 51685) sit within the county's geographic bounds but are separate Census FIPS jurisdictions, governed and assessed independently. For authoritative assessment records use the PWC Real Estate Assessments office."
7308
+ notes: "Prince William County (Northern Virginia, pop. ~490,000; county seat unincorporated, courts in Manassas) publishes an Open Data parcel MapServer at gisweb.pwcva.gov (note the host is gisweb.pwcva.gov, NOT pwcgov.org). Layer 0 exposes 49 fields and -- unlike neighboring Fairfax County -- includes owner name directly: CAMA_OWNER_CUR (current owner from the CAMA system) and CAMA_DEEDOWNER (deed owner). Parcel identifier is GPIN, a hyphenated geographic id (e.g. '7201-09-8851'). Site address is split across ST_NO / ST_NAME / ST_TYPE / CITY / ZIP. Verified 2026-06-20: 159,174 parcels; UPPER(CAMA_OWNER_CUR) LIKE '%SMITH%' returns real owners with Haymarket/Manassas-area addresses and ZIPs. IMPORTANT: this entry covers Prince William COUNTY only. The independent cities of Manassas (FIPS 51683) and Manassas Park (FIPS 51685) sit within the county's geographic bounds but are separate Census FIPS jurisdictions, governed and assessed independently. For authoritative assessment records use the PWC Real Estate Assessments office. LIVENESS 2026-08-04: answers a home-network probe in ~2.6s with 10 correct parcel rows, but exceeds even the raised 15s host budget from the Vercel probe region on 112 consecutive checks. That pattern reads as datacenter-IP throttling rather than a slow server, so raising the budget further would risk the 60s shard ceiling for no gain. Stays honestly degraded."
7304
7309
  }
7305
7310
  ]
7306
7311
  };
@@ -7495,7 +7500,7 @@ var west_virginia_default = {
7495
7500
  stateSlug: "west-virginia",
7496
7501
  stateName: "West Virginia",
7497
7502
  stateAbbrev: "WV",
7498
- lastUpdated: "2026-06-20",
7503
+ lastUpdated: "2026-08-04",
7499
7504
  counties: [
7500
7505
  {
7501
7506
  id: "wv-kanawha",
@@ -7521,8 +7526,7 @@ var west_virginia_default = {
7521
7526
  { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7522
7527
  { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7523
7528
  { name: "CountyID", label: "County ID string ('20' = Kanawha)", searchable: false },
7524
- { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7525
- { name: "Acres_C", label: "Calculated Acres", searchable: false }
7529
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false }
7526
7530
  ],
7527
7531
  sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'20'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7528
7532
  license: "public",
@@ -7563,8 +7567,7 @@ var west_virginia_default = {
7563
7567
  { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7564
7568
  { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7565
7569
  { name: "CountyID", label: "County ID string ('31' = Monongalia)", searchable: false },
7566
- { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7567
- { name: "Acres_C", label: "Calculated Acres", searchable: false }
7570
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false }
7568
7571
  ],
7569
7572
  sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'31'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7570
7573
  license: "public",
@@ -7605,8 +7608,7 @@ var west_virginia_default = {
7605
7608
  { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7606
7609
  { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7607
7610
  { name: "CountyID", label: "County ID string ('40' = Raleigh)", searchable: false },
7608
- { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7609
- { name: "Acres_C", label: "Calculated Acres", searchable: false }
7611
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false }
7610
7612
  ],
7611
7613
  sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'40'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7612
7614
  license: "public",
@@ -7647,8 +7649,7 @@ var west_virginia_default = {
7647
7649
  { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7648
7650
  { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7649
7651
  { name: "CountyID", label: "County ID string ('06' = Cabell)", searchable: false },
7650
- { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7651
- { name: "Acres_C", label: "Calculated Acres", searchable: false }
7652
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false }
7652
7653
  ],
7653
7654
  sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'06'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7654
7655
  license: "public",
@@ -8225,4 +8226,4 @@ function countyPath(stateSlug, countySlug) {
8225
8226
  return `/parcel-atlas/${stateSlug}/${countySlug}`;
8226
8227
  }
8227
8228
 
8228
- export { atlas, atlasIndex, buildParcelLookupDeepLink, countyPath, countySlugFromName, findCounty, findCountyByFips, findState, listCountiesByState, listStates, slugify, statePath };
8229
+ export { LIVE_STATUS_URL, atlas, atlasIndex, buildParcelLookupDeepLink, countyPath, countySlugFromName, findCounty, findCountyByFips, findState, listCountiesByState, listStates, slugify, statePath };
package/package.json CHANGED
@@ -1,68 +1,68 @@
1
- {
2
- "name": "@urbankitstudio/atlas",
3
- "version": "0.5.1",
4
- "description": "JS SDK for the UrbanKit County Parcel REST API Atlas — public ArcGIS REST endpoints for US county parcel data, with searchable field metadata, sample queries, and license info.",
5
- "keywords": [
6
- "parcel",
7
- "arcgis",
8
- "gis",
9
- "county",
10
- "assessor",
11
- "rest",
12
- "api",
13
- "geojson",
14
- "featureserver",
15
- "mapserver"
16
- ],
17
- "homepage": "https://urbankitstudio.com/parcel-atlas",
18
- "repository": {
19
- "type": "git",
20
- "url": "git+https://github.com/LEOyrh/urbankitstudio.git",
21
- "directory": "packages/atlas"
22
- },
23
- "bugs": {
24
- "url": "https://github.com/LEOyrh/urbankitstudio/issues"
25
- },
26
- "author": "Leo Yong <leoyrhbiz@gmail.com>",
27
- "license": "MIT",
28
- "type": "module",
29
- "main": "./dist/index.cjs",
30
- "module": "./dist/index.js",
31
- "types": "./dist/index.d.ts",
32
- "exports": {
33
- ".": {
34
- "import": {
35
- "types": "./dist/index.d.ts",
36
- "default": "./dist/index.js"
37
- },
38
- "require": {
39
- "types": "./dist/index.d.cts",
40
- "default": "./dist/index.cjs"
41
- }
42
- }
43
- },
44
- "files": [
45
- "dist",
46
- "data",
47
- "README.md",
48
- "LICENSE"
49
- ],
50
- "sideEffects": false,
51
- "scripts": {
52
- "build": "tsup",
53
- "typecheck": "tsc --noEmit",
54
- "test": "vitest run",
55
- "prepublishOnly": "npm run typecheck && npm run test && npm run build"
56
- },
57
- "devDependencies": {
58
- "tsup": "^8.3.5",
59
- "typescript": "^5.8.3",
60
- "vitest": "^2.1.8"
61
- },
62
- "publishConfig": {
63
- "access": "public"
64
- },
65
- "engines": {
66
- "node": ">=18"
67
- }
68
- }
1
+ {
2
+ "name": "@urbankitstudio/atlas",
3
+ "version": "0.5.3",
4
+ "description": "JS SDK for the UrbanKit County Parcel REST API Atlas — public ArcGIS REST endpoints for US county parcel data, with searchable field metadata, sample queries, and license info.",
5
+ "keywords": [
6
+ "parcel",
7
+ "arcgis",
8
+ "gis",
9
+ "county",
10
+ "assessor",
11
+ "rest",
12
+ "api",
13
+ "geojson",
14
+ "featureserver",
15
+ "mapserver"
16
+ ],
17
+ "homepage": "https://urbankitstudio.com/parcel-atlas",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/LEOyrh/urbankitstudio.git",
21
+ "directory": "packages/atlas"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/LEOyrh/urbankitstudio/issues"
25
+ },
26
+ "author": "Leo Yong <leoyrhbiz@gmail.com>",
27
+ "license": "MIT",
28
+ "type": "module",
29
+ "main": "./dist/index.cjs",
30
+ "module": "./dist/index.js",
31
+ "types": "./dist/index.d.ts",
32
+ "exports": {
33
+ ".": {
34
+ "import": {
35
+ "types": "./dist/index.d.ts",
36
+ "default": "./dist/index.js"
37
+ },
38
+ "require": {
39
+ "types": "./dist/index.d.cts",
40
+ "default": "./dist/index.cjs"
41
+ }
42
+ }
43
+ },
44
+ "files": [
45
+ "dist",
46
+ "data",
47
+ "README.md",
48
+ "LICENSE"
49
+ ],
50
+ "sideEffects": false,
51
+ "scripts": {
52
+ "build": "tsup",
53
+ "typecheck": "tsc --noEmit",
54
+ "test": "vitest run",
55
+ "prepublishOnly": "npm run typecheck && npm run test && npm run build"
56
+ },
57
+ "devDependencies": {
58
+ "tsup": "^8.3.5",
59
+ "typescript": "^5.8.3",
60
+ "vitest": "^2.1.8"
61
+ },
62
+ "publishConfig": {
63
+ "access": "public"
64
+ },
65
+ "engines": {
66
+ "node": ">=18"
67
+ }
68
+ }