mcp-scraper 0.40.1 → 0.40.2
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.
- package/README.md +1 -1
- package/dist/bin/api-server.cjs +60220 -0
- package/dist/bin/api-server.cjs.map +1 -0
- package/dist/bin/api-server.d.cts +1 -0
- package/dist/bin/api-server.d.ts +1 -0
- package/dist/bin/api-server.js +38 -0
- package/dist/bin/api-server.js.map +1 -0
- package/dist/bin/mcp-scraper-cli.cjs +2671 -0
- package/dist/bin/mcp-scraper-cli.cjs.map +1 -0
- package/dist/bin/mcp-scraper-cli.d.cts +1 -0
- package/dist/bin/mcp-scraper-cli.d.ts +1 -0
- package/dist/bin/mcp-scraper-cli.js +742 -0
- package/dist/bin/mcp-scraper-cli.js.map +1 -0
- package/dist/bin/mcp-scraper-install.cjs +129 -0
- package/dist/bin/mcp-scraper-install.cjs.map +1 -0
- package/dist/bin/mcp-scraper-install.d.cts +1 -0
- package/dist/bin/mcp-scraper-install.d.ts +1 -0
- package/dist/bin/mcp-scraper-install.js +27 -0
- package/dist/bin/mcp-scraper-install.js.map +1 -0
- package/dist/bin/mcp-stdio-server.cjs +12532 -0
- package/dist/bin/mcp-stdio-server.cjs.map +1 -0
- package/dist/bin/mcp-stdio-server.d.cts +1 -0
- package/dist/bin/mcp-stdio-server.d.ts +1 -0
- package/dist/bin/mcp-stdio-server.js +135 -0
- package/dist/bin/mcp-stdio-server.js.map +1 -0
- package/dist/bin/paa-harvest.cjs +3808 -0
- package/dist/bin/paa-harvest.cjs.map +1 -0
- package/dist/bin/paa-harvest.d.cts +1 -0
- package/dist/bin/paa-harvest.d.ts +1 -0
- package/dist/bin/paa-harvest.js +44 -0
- package/dist/bin/paa-harvest.js.map +1 -0
- package/dist/chunk-345BQXZH.js +712 -0
- package/dist/chunk-345BQXZH.js.map +1 -0
- package/dist/chunk-3PIWJS6Y.js +276 -0
- package/dist/chunk-3PIWJS6Y.js.map +1 -0
- package/dist/chunk-44HZLHDV.js +52 -0
- package/dist/chunk-44HZLHDV.js.map +1 -0
- package/dist/chunk-7XBBFBYY.js +3410 -0
- package/dist/chunk-7XBBFBYY.js.map +1 -0
- package/dist/chunk-CB5C3BPB.js +135 -0
- package/dist/chunk-CB5C3BPB.js.map +1 -0
- package/dist/chunk-FQI5PFE7.js +1866 -0
- package/dist/chunk-FQI5PFE7.js.map +1 -0
- package/dist/chunk-G3P3ZDB4.js +69 -0
- package/dist/chunk-G3P3ZDB4.js.map +1 -0
- package/dist/chunk-GUVKHCKE.js +3050 -0
- package/dist/chunk-GUVKHCKE.js.map +1 -0
- package/dist/chunk-K443GQY5.js +24 -0
- package/dist/chunk-K443GQY5.js.map +1 -0
- package/dist/chunk-LP6E462I.js +11555 -0
- package/dist/chunk-LP6E462I.js.map +1 -0
- package/dist/chunk-NVXNEOUQ.js +158 -0
- package/dist/chunk-NVXNEOUQ.js.map +1 -0
- package/dist/chunk-QZXKQB7Y.js +414 -0
- package/dist/chunk-QZXKQB7Y.js.map +1 -0
- package/dist/chunk-SBLGBZZB.js +647 -0
- package/dist/chunk-SBLGBZZB.js.map +1 -0
- package/dist/chunk-X2LKCX6H.js +499 -0
- package/dist/chunk-X2LKCX6H.js.map +1 -0
- package/dist/chunk-XELSA2MS.js +108 -0
- package/dist/chunk-XELSA2MS.js.map +1 -0
- package/dist/chunk-XORPNO3Z.js +684 -0
- package/dist/chunk-XORPNO3Z.js.map +1 -0
- package/dist/chunk-ZUJLSICT.js +7 -0
- package/dist/chunk-ZUJLSICT.js.map +1 -0
- package/dist/db-W3CP562I.js +239 -0
- package/dist/db-W3CP562I.js.map +1 -0
- package/dist/editorial-reading-room/assets/app.js +335 -0
- package/dist/editorial-reading-room/assets/index.html +131 -0
- package/dist/editorial-reading-room/assets/styles.css +1052 -0
- package/dist/extract-bundle-K4PG3RZJ.js +568 -0
- package/dist/extract-bundle-K4PG3RZJ.js.map +1 -0
- package/dist/index.cjs +4160 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +413 -0
- package/dist/index.d.ts +413 -0
- package/dist/index.js +338 -0
- package/dist/index.js.map +1 -0
- package/dist/location-data-repository-RLQX6SNM.js +35 -0
- package/dist/location-data-repository-RLQX6SNM.js.map +1 -0
- package/dist/server-KM3CFWCF.js +34674 -0
- package/dist/server-KM3CFWCF.js.map +1 -0
- package/dist/site-extract-repository-2SMMFKKL.js +62 -0
- package/dist/site-extract-repository-2SMMFKKL.js.map +1 -0
- package/dist/worker-FXAGFYOE.js +142 -0
- package/dist/worker-FXAGFYOE.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/location-data-repository.ts"],"sourcesContent":["import { createHash, randomUUID } from 'node:crypto'\nimport { getDb } from './db.js'\nimport { csvRecords } from '../directory/csv.js'\nimport type { DirectoryMarket, PopulationYear } from '../directory/location-db.js'\n\nexport const HOSTED_ZIP_DATASET_KIND = 'us_zip_groups' as const\nexport const HOSTED_CENSUS_DATASET_PREFIX = 'us_census_places' as const\nexport type HostedLocationDatasetKind = typeof HOSTED_ZIP_DATASET_KIND | `${typeof HOSTED_CENSUS_DATASET_PREFIX}:${string}`\nexport const MIN_NATIONWIDE_ZIP_COUNT = 25_000\n\nexport const REQUIRED_LOCATION_STATE_CODES = [\n 'AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'DC', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA',\n 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM',\n 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA',\n 'WV', 'WI', 'WY',\n] as const\n\nconst STATE_FIPS_BY_ABBR: Record<typeof REQUIRED_LOCATION_STATE_CODES[number], string> = {\n AL: '01', AK: '02', AZ: '04', AR: '05', CA: '06', CO: '08', CT: '09', DE: '10', DC: '11',\n FL: '12', GA: '13', HI: '15', ID: '16', IL: '17', IN: '18', IA: '19', KS: '20', KY: '21',\n LA: '22', ME: '23', MD: '24', MA: '25', MI: '26', MN: '27', MS: '28', MO: '29', MT: '30',\n NE: '31', NV: '32', NH: '33', NJ: '34', NM: '35', NY: '36', NC: '37', ND: '38', OH: '39',\n OK: '40', OR: '41', PA: '42', RI: '44', SC: '45', SD: '46', TN: '47', TX: '48', UT: '49',\n VT: '50', VA: '51', WA: '53', WV: '54', WI: '55', WY: '56',\n}\nconst REQUIRED_LOCATION_STATE_SET = new Set<string>(REQUIRED_LOCATION_STATE_CODES)\n\nexport interface HostedZipGroup {\n city: string\n cityKey: string\n state: string\n zips: string[]\n counties: string[]\n}\n\nexport interface HostedLocationDataset {\n id: string\n kind: HostedLocationDatasetKind\n sourceUrl: string | null\n sha256: string\n rowCount: number\n groupCount: number\n stateCount: number\n sourceRowCount: number\n rejectedRowCount: number\n zipCount: number\n coveredStates: string[]\n coverageComplete: boolean\n status: 'loading' | 'ready' | 'failed'\n createdAt: string\n completedAt: string | null\n error: string | null\n}\n\nexport interface HostedZipGroupLookup {\n dataset: HostedLocationDataset | null\n groups: Map<string, HostedZipGroup>\n}\n\nexport interface HostedZipImportResult {\n dataset: HostedLocationDataset\n duplicate: boolean\n}\n\nexport interface HostedLocationMarketQuery {\n state: string\n minPopulation: number\n populationYear: PopulationYear\n maxResults: number\n includeZipGroups: boolean\n cityQuery?: string\n zip?: string\n}\n\nexport interface HostedLocationMarketResult {\n markets: DirectoryMarket[]\n populationDataset: HostedLocationDataset | null\n zipDataset: HostedLocationDataset | null\n warnings: string[]\n}\n\ninterface HostedCensusPlace {\n city: string\n cityKey: string\n censusName: string\n estimatesBase2020: number | null\n populations: Record<PopulationYear, number | null>\n}\n\ninterface ParsedCensusDataset {\n sourceRowCount: number\n places: HostedCensusPlace[]\n}\n\ninterface ParsedZipDataset {\n sourceRowCount: number\n rowCount: number\n rejectedRowCount: number\n zipCount: number\n stateCount: number\n coveredStates: string[]\n groups: HostedZipGroup[]\n}\n\nconst IMPORT_BATCH_SIZE = 200\nconst MAX_SOURCE_URL_LENGTH = 2_000\n\nlet schemaDb: ReturnType<typeof getDb> | null = null\nlet schemaPromise: Promise<void> | null = null\n\nfunction normalizeHostedCityKey(value: string): string {\n return value.toLowerCase().replace(/[^a-z0-9]+/g, ' ').trim()\n}\n\nfunction stringArray(value: unknown): string[] {\n if (value == null) return []\n try {\n const parsed = JSON.parse(String(value)) as unknown\n return Array.isArray(parsed) ? parsed.map(String) : []\n } catch {\n return []\n }\n}\n\nfunction rowToDataset(row: Record<string, unknown>): HostedLocationDataset {\n return {\n id: String(row.id),\n kind: String(row.dataset_kind) as HostedLocationDatasetKind,\n sourceUrl: row.source_url == null ? null : String(row.source_url),\n sha256: String(row.sha256),\n rowCount: Number(row.row_count ?? 0),\n groupCount: Number(row.group_count ?? 0),\n stateCount: Number(row.state_count ?? 0),\n sourceRowCount: Number(row.source_row_count ?? row.row_count ?? 0),\n rejectedRowCount: Number(row.rejected_row_count ?? 0),\n zipCount: Number(row.zip_count ?? 0),\n coveredStates: stringArray(row.covered_states_json),\n coverageComplete: Number(row.coverage_complete ?? 0) === 1,\n status: String(row.status) as HostedLocationDataset['status'],\n createdAt: String(row.created_at),\n completedAt: row.completed_at == null ? null : String(row.completed_at),\n error: row.error == null ? null : String(row.error),\n }\n}\n\nfunction censusDatasetKind(state: string): `${typeof HOSTED_CENSUS_DATASET_PREFIX}:${string}` {\n return `${HOSTED_CENSUS_DATASET_PREFIX}:${state}`\n}\n\nfunction normalizedSourceUrl(value: string | null | undefined): string | null {\n const trimmed = value?.trim()\n if (!trimmed) return null\n if (trimmed.length > MAX_SOURCE_URL_LENGTH) throw new Error(`sourceUrl must be ${MAX_SOURCE_URL_LENGTH} characters or fewer`)\n let parsed: URL\n try {\n parsed = new URL(trimmed)\n } catch {\n throw new Error('sourceUrl must be a valid URL')\n }\n parsed.username = ''\n parsed.password = ''\n parsed.search = ''\n parsed.hash = ''\n return parsed.toString()\n}\n\nfunction normalizedZip(value: string): string | null {\n const digits = value.trim()\n if (!/^\\d{1,5}$/.test(digits)) return null\n return digits.padStart(5, '0')\n}\n\nfunction normalizedState(value: string): string | null {\n const state = value.trim().toUpperCase()\n return REQUIRED_LOCATION_STATE_SET.has(state) ? state : null\n}\n\nfunction csvColumn(record: Record<string, string>, names: string[]): string {\n for (const name of names) {\n const value = record[name]\n if (value !== undefined) return value\n }\n return ''\n}\n\nfunction numberOrNull(value: string | undefined): number | null {\n if (value === undefined || value.trim() === '') return null\n const parsed = Number(value)\n return Number.isFinite(parsed) && parsed >= 0 ? Math.trunc(parsed) : null\n}\n\nfunction displayCityFromCensus(name: string): string {\n if (/^Nashville-Davidson metropolitan government/i.test(name)) return 'Nashville'\n return name.replace(/\\s+(city|town|village|municipality|borough)$/i, '').trim()\n}\n\nexport function parseHostedCensusPlacesCsv(csv: string, expectedStateFips?: string): ParsedCensusDataset {\n const records = csvRecords(csv.replace(/^\\uFEFF/, ''))\n if (records.length === 0) throw new Error('Census place CSV contains no data rows.')\n const headers = new Set(Object.keys(records[0] ?? {}).map(header => header.trim()))\n const required = ['SUMLEV', 'STATE', 'NAME', 'POPESTIMATE2020', 'POPESTIMATE2021', 'POPESTIMATE2022', 'POPESTIMATE2023', 'POPESTIMATE2024', 'POPESTIMATE2025']\n const missing = required.filter(header => !headers.has(header))\n if (missing.length > 0) throw new Error(`Census place CSV is missing required columns: ${missing.join(', ')}.`)\n\n const placeRecords = records.filter(record => record.SUMLEV?.trim() === '162')\n if (expectedStateFips) {\n const expected = expectedStateFips.padStart(2, '0')\n const mismatched = placeRecords.filter(record => record.STATE?.trim().padStart(2, '0') !== expected)\n if (mismatched.length > 0) {\n const received = [...new Set(mismatched.map(record => record.STATE?.trim() || '(blank)'))].slice(0, 5)\n throw new Error(`Census place CSV STATE does not match requested FIPS ${expected}; received ${received.join(', ')}.`)\n }\n }\n\n const candidates = placeRecords\n .map((record): HostedCensusPlace | null => {\n const censusName = record.NAME?.trim() ?? ''\n if (!censusName) return null\n const city = displayCityFromCensus(censusName)\n const cityKey = normalizeHostedCityKey(city)\n if (!cityKey) return null\n const populations = {\n 2020: numberOrNull(record.POPESTIMATE2020),\n 2021: numberOrNull(record.POPESTIMATE2021),\n 2022: numberOrNull(record.POPESTIMATE2022),\n 2023: numberOrNull(record.POPESTIMATE2023),\n 2024: numberOrNull(record.POPESTIMATE2024),\n 2025: numberOrNull(record.POPESTIMATE2025),\n } satisfies Record<PopulationYear, number | null>\n if (Object.values(populations).every(value => value === null)) return null\n return {\n city,\n cityKey,\n censusName,\n estimatesBase2020: numberOrNull(record.ESTIMATESBASE2020),\n populations,\n }\n })\n .filter((place): place is HostedCensusPlace => place !== null)\n\n // Census can contain separate legal entities with the same normalized place\n // name in one state (for example, both a small \"Wilmington village\" and a\n // much larger \"Wilmington city\" in Illinois). The hosted table and the ZIP\n // join intentionally use one row per state/city key, so retain the largest\n // current place deterministically instead of failing the whole state import.\n const placesByCityKey = new Map<string, HostedCensusPlace>()\n const populationRank = (place: HostedCensusPlace): number => (\n place.populations[2025]\n ?? place.populations[2024]\n ?? place.populations[2023]\n ?? place.populations[2022]\n ?? place.populations[2021]\n ?? place.populations[2020]\n ?? place.estimatesBase2020\n ?? -1\n )\n for (const candidate of candidates) {\n const current = placesByCityKey.get(candidate.cityKey)\n if (!current\n || populationRank(candidate) > populationRank(current)\n || (populationRank(candidate) === populationRank(current)\n && candidate.censusName.localeCompare(current.censusName) < 0)) {\n placesByCityKey.set(candidate.cityKey, candidate)\n }\n }\n const places = [...placesByCityKey.values()]\n .sort((a, b) => a.city.localeCompare(b.city))\n\n if (places.length === 0) throw new Error('Census place CSV did not contain any valid place population rows.')\n return { sourceRowCount: records.length, places }\n}\n\nexport function parseHostedZipGroupsCsv(csv: string): ParsedZipDataset {\n const records = csvRecords(csv.replace(/^\\uFEFF/, ''))\n if (records.length === 0) throw new Error('Location ZIP CSV contains no data rows.')\n\n const first = records[0] ?? {}\n const headers = new Set(Object.keys(first).map(header => header.trim().toLowerCase()))\n const hasState = ['state_abbr', 'state', 'state_id'].some(header => headers.has(header))\n const hasCity = ['city', 'primary_city'].some(header => headers.has(header))\n const hasZip = ['zipcode', 'zip', 'zip_code'].some(header => headers.has(header))\n if (!hasState || !hasCity || !hasZip) {\n throw new Error('Location ZIP CSV must include state_abbr/state, city, and zipcode/zip columns.')\n }\n\n const grouped = new Map<string, { city: string; cityKey: string; state: string; zips: Set<string>; counties: Set<string> }>()\n let rowCount = 0\n let rejectedRowCount = 0\n const states = new Set<string>()\n const uniqueZips = new Set<string>()\n\n for (const rawRecord of records) {\n const record = Object.fromEntries(Object.entries(rawRecord).map(([key, value]) => [key.trim().toLowerCase(), value]))\n const state = normalizedState(csvColumn(record, ['state_abbr', 'state', 'state_id']))\n const city = csvColumn(record, ['city', 'primary_city']).trim()\n const zip = normalizedZip(csvColumn(record, ['zipcode', 'zip', 'zip_code']))\n const county = csvColumn(record, ['county', 'county_name']).trim()\n if (!state || !REQUIRED_LOCATION_STATE_SET.has(state) || !city || !zip) {\n rejectedRowCount += 1\n continue\n }\n\n const cityKey = normalizeHostedCityKey(city)\n if (!cityKey) {\n rejectedRowCount += 1\n continue\n }\n const key = `${state}\\0${cityKey}`\n let group = grouped.get(key)\n if (!group) {\n group = { city, cityKey, state, zips: new Set(), counties: new Set() }\n grouped.set(key, group)\n }\n group.zips.add(zip)\n if (county) group.counties.add(county)\n states.add(state)\n uniqueZips.add(zip)\n rowCount += 1\n }\n\n if (grouped.size === 0) throw new Error('Location ZIP CSV did not contain any valid US city/ZIP rows.')\n return {\n sourceRowCount: records.length,\n rowCount,\n rejectedRowCount,\n zipCount: uniqueZips.size,\n stateCount: states.size,\n coveredStates: [...states].sort(),\n groups: [...grouped.values()]\n .map(group => ({\n city: group.city,\n cityKey: group.cityKey,\n state: group.state,\n zips: [...group.zips].sort(),\n counties: [...group.counties].sort(),\n }))\n .sort((a, b) => a.state.localeCompare(b.state) || a.city.localeCompare(b.city)),\n }\n}\n\nfunction assertNationwideZipCoverage(parsed: ParsedZipDataset): void {\n const covered = new Set(parsed.coveredStates)\n const missingStates = REQUIRED_LOCATION_STATE_CODES.filter(state => !covered.has(state))\n const errors: string[] = []\n if (missingStates.length > 0) errors.push(`missing required states: ${missingStates.join(', ')}`)\n if (parsed.zipCount < MIN_NATIONWIDE_ZIP_COUNT) {\n errors.push(`only ${parsed.zipCount} unique ZIPs; at least ${MIN_NATIONWIDE_ZIP_COUNT} are required`)\n }\n if (errors.length > 0) {\n throw new Error(`Location ZIP snapshot is not nationwide and was not activated (${errors.join('; ')}; ${parsed.rejectedRowCount} rejected rows).`)\n }\n}\n\nexport async function ensureHostedLocationDataSchema(): Promise<void> {\n const db = getDb()\n if (schemaDb !== db) {\n schemaDb = db\n schemaPromise = null\n }\n if (!schemaPromise) {\n schemaPromise = (async () => {\n await db.execute(`\n CREATE TABLE IF NOT EXISTS location_data_imports (\n id TEXT PRIMARY KEY,\n dataset_kind TEXT NOT NULL,\n source_url TEXT,\n sha256 TEXT NOT NULL,\n row_count INTEGER NOT NULL DEFAULT 0,\n group_count INTEGER NOT NULL DEFAULT 0,\n state_count INTEGER NOT NULL DEFAULT 0,\n source_row_count INTEGER NOT NULL DEFAULT 0,\n rejected_row_count INTEGER NOT NULL DEFAULT 0,\n zip_count INTEGER NOT NULL DEFAULT 0,\n covered_states_json TEXT NOT NULL DEFAULT '[]',\n coverage_complete INTEGER NOT NULL DEFAULT 0,\n status TEXT NOT NULL,\n error TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n completed_at TEXT\n )\n `)\n const importColumns = new Set((await db.execute(`PRAGMA table_info(location_data_imports)`)).rows.map(row => String(row.name)))\n const missingImportColumns = [\n ['source_row_count', `INTEGER NOT NULL DEFAULT 0`],\n ['rejected_row_count', `INTEGER NOT NULL DEFAULT 0`],\n ['zip_count', `INTEGER NOT NULL DEFAULT 0`],\n ['covered_states_json', `TEXT NOT NULL DEFAULT '[]'`],\n ['coverage_complete', `INTEGER NOT NULL DEFAULT 0`],\n ] as const\n for (const [column, definition] of missingImportColumns) {\n if (!importColumns.has(column)) await db.execute(`ALTER TABLE location_data_imports ADD COLUMN ${column} ${definition}`)\n }\n await db.execute(`CREATE INDEX IF NOT EXISTS location_data_imports_kind_created ON location_data_imports(dataset_kind, created_at DESC)`)\n await db.execute(`\n CREATE TABLE IF NOT EXISTS location_zip_groups (\n import_id TEXT NOT NULL REFERENCES location_data_imports(id) ON DELETE CASCADE,\n state_abbr TEXT NOT NULL,\n city_key TEXT NOT NULL,\n city TEXT NOT NULL,\n zips_json TEXT NOT NULL,\n counties_json TEXT NOT NULL,\n PRIMARY KEY(import_id, state_abbr, city_key)\n )\n `)\n await db.execute(`CREATE INDEX IF NOT EXISTS location_zip_groups_state ON location_zip_groups(import_id, state_abbr, city_key)`)\n await db.execute(`\n CREATE TABLE IF NOT EXISTS location_census_places (\n import_id TEXT NOT NULL REFERENCES location_data_imports(id) ON DELETE CASCADE,\n state_abbr TEXT NOT NULL,\n city_key TEXT NOT NULL,\n city TEXT NOT NULL,\n census_name TEXT NOT NULL,\n estimates_base_2020 INTEGER,\n population_2020 INTEGER,\n population_2021 INTEGER,\n population_2022 INTEGER,\n population_2023 INTEGER,\n population_2024 INTEGER,\n population_2025 INTEGER,\n PRIMARY KEY(import_id, state_abbr, city_key)\n )\n `)\n await db.execute(`CREATE INDEX IF NOT EXISTS location_census_places_state ON location_census_places(import_id, state_abbr, city_key)`)\n await db.execute(`\n CREATE TABLE IF NOT EXISTS location_data_active (\n dataset_kind TEXT PRIMARY KEY,\n import_id TEXT NOT NULL REFERENCES location_data_imports(id),\n activated_at TEXT NOT NULL DEFAULT (datetime('now'))\n )\n `)\n })().catch(error => {\n schemaPromise = null\n throw error\n })\n }\n await schemaPromise\n}\n\nexport async function getActiveHostedDataset(kind: HostedLocationDatasetKind): Promise<HostedLocationDataset | null> {\n await ensureHostedLocationDataSchema()\n const result = await getDb().execute({\n sql: `\n SELECT i.*\n FROM location_data_active a\n JOIN location_data_imports i ON i.id = a.import_id\n WHERE a.dataset_kind = ? AND i.status = 'ready'\n LIMIT 1\n `,\n args: [kind],\n })\n const row = result.rows[0]\n return row ? rowToDataset(row as unknown as Record<string, unknown>) : null\n}\n\nexport async function getActiveHostedLocationDataset(): Promise<HostedLocationDataset | null> {\n return getActiveHostedDataset(HOSTED_ZIP_DATASET_KIND)\n}\n\nexport async function listActiveHostedLocationDatasets(): Promise<HostedLocationDataset[]> {\n await ensureHostedLocationDataSchema()\n const result = await getDb().execute(`\n SELECT i.*\n FROM location_data_active a\n JOIN location_data_imports i ON i.id = a.import_id\n WHERE i.status = 'ready'\n ORDER BY i.dataset_kind ASC\n `)\n return result.rows.map(row => rowToDataset(row as unknown as Record<string, unknown>))\n}\n\nexport async function getHostedZipGroups(stateInput: string): Promise<HostedZipGroupLookup> {\n const state = normalizedState(stateInput)\n if (!state) throw new Error('state must be a two-letter US state abbreviation')\n const dataset = await getActiveHostedLocationDataset()\n if (!dataset) return { dataset: null, groups: new Map() }\n\n const result = await getDb().execute({\n sql: `\n SELECT city, city_key, state_abbr, zips_json, counties_json\n FROM location_zip_groups\n WHERE import_id = ? AND state_abbr = ?\n ORDER BY city COLLATE NOCASE ASC\n `,\n args: [dataset.id, state],\n })\n const groups = new Map<string, HostedZipGroup>()\n for (const row of result.rows) {\n const cityKey = String(row.city_key)\n groups.set(cityKey, {\n city: String(row.city),\n cityKey,\n state: String(row.state_abbr),\n zips: JSON.parse(String(row.zips_json)) as string[],\n counties: JSON.parse(String(row.counties_json)) as string[],\n })\n }\n return { dataset, groups }\n}\n\nexport async function importHostedZipGroupsCsv(input: {\n csv: string\n sourceUrl?: string | null\n}): Promise<HostedZipImportResult> {\n await ensureHostedLocationDataSchema()\n const sourceUrl = normalizedSourceUrl(input.sourceUrl)\n const sha256 = createHash('sha256').update(input.csv).digest('hex')\n const active = await getActiveHostedLocationDataset()\n if (active?.sha256 === sha256) return { dataset: active, duplicate: true }\n\n const parsed = parseHostedZipGroupsCsv(input.csv)\n assertNationwideZipCoverage(parsed)\n const id = `loc_${randomUUID().replaceAll('-', '')}`\n const db = getDb()\n await db.execute({\n sql: `\n INSERT INTO location_data_imports (\n id, dataset_kind, source_url, sha256, row_count, group_count, state_count,\n source_row_count, rejected_row_count, zip_count, covered_states_json, coverage_complete, status\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, 'loading')\n `,\n args: [\n id, HOSTED_ZIP_DATASET_KIND, sourceUrl, sha256, parsed.rowCount, parsed.groups.length, parsed.stateCount,\n parsed.sourceRowCount, parsed.rejectedRowCount, parsed.zipCount, JSON.stringify(parsed.coveredStates),\n ],\n })\n\n try {\n for (let offset = 0; offset < parsed.groups.length; offset += IMPORT_BATCH_SIZE) {\n const batch = parsed.groups.slice(offset, offset + IMPORT_BATCH_SIZE).map(group => ({\n sql: `\n INSERT INTO location_zip_groups (\n import_id, state_abbr, city_key, city, zips_json, counties_json\n ) VALUES (?, ?, ?, ?, ?, ?)\n `,\n args: [id, group.state, group.cityKey, group.city, JSON.stringify(group.zips), JSON.stringify(group.counties)],\n }))\n await db.batch(batch, 'write')\n }\n\n await db.batch([\n {\n sql: `UPDATE location_data_imports SET status = 'ready', completed_at = datetime('now'), error = NULL WHERE id = ? AND status = 'loading'`,\n args: [id],\n },\n {\n sql: `\n INSERT INTO location_data_active (dataset_kind, import_id, activated_at)\n VALUES (?, ?, datetime('now'))\n ON CONFLICT(dataset_kind) DO UPDATE SET import_id = excluded.import_id, activated_at = excluded.activated_at\n `,\n args: [HOSTED_ZIP_DATASET_KIND, id],\n },\n ], 'write')\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n await db.execute({\n sql: `UPDATE location_data_imports SET status = 'failed', error = ?, completed_at = datetime('now') WHERE id = ?`,\n args: [message.slice(0, 1_000), id],\n }).catch(() => undefined)\n throw error\n }\n\n const result = await db.execute({ sql: 'SELECT * FROM location_data_imports WHERE id = ? LIMIT 1', args: [id] })\n const row = result.rows[0]\n if (!row) throw new Error('Hosted location import completed without a durable metadata row.')\n return { dataset: rowToDataset(row as unknown as Record<string, unknown>), duplicate: false }\n}\n\nexport async function importHostedCensusPlacesCsv(input: {\n state: string\n csv: string\n sourceUrl?: string | null\n}): Promise<HostedZipImportResult> {\n await ensureHostedLocationDataSchema()\n const state = normalizedState(input.state)\n if (!state) throw new Error('state must be a two-letter US state abbreviation')\n const kind = censusDatasetKind(state)\n const sourceUrl = normalizedSourceUrl(input.sourceUrl)\n const sha256 = createHash('sha256').update(input.csv).digest('hex')\n const active = await getActiveHostedDataset(kind)\n if (active?.sha256 === sha256) return { dataset: active, duplicate: true }\n\n const stateFips = STATE_FIPS_BY_ABBR[state as keyof typeof STATE_FIPS_BY_ABBR]\n const parsed = parseHostedCensusPlacesCsv(input.csv, stateFips)\n const id = `loc_${randomUUID().replaceAll('-', '')}`\n const db = getDb()\n await db.execute({\n sql: `\n INSERT INTO location_data_imports (\n id, dataset_kind, source_url, sha256, row_count, group_count, state_count,\n source_row_count, rejected_row_count, zip_count, covered_states_json, coverage_complete, status\n ) VALUES (?, ?, ?, ?, ?, ?, 1, ?, 0, 0, ?, 1, 'loading')\n `,\n args: [id, kind, sourceUrl, sha256, parsed.places.length, parsed.places.length, parsed.sourceRowCount, JSON.stringify([state])],\n })\n\n try {\n for (let offset = 0; offset < parsed.places.length; offset += IMPORT_BATCH_SIZE) {\n const batch = parsed.places.slice(offset, offset + IMPORT_BATCH_SIZE).map(place => ({\n sql: `\n INSERT INTO location_census_places (\n import_id, state_abbr, city_key, city, census_name, estimates_base_2020,\n population_2020, population_2021, population_2022, population_2023,\n population_2024, population_2025\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `,\n args: [\n id,\n state,\n place.cityKey,\n place.city,\n place.censusName,\n place.estimatesBase2020,\n place.populations[2020],\n place.populations[2021],\n place.populations[2022],\n place.populations[2023],\n place.populations[2024],\n place.populations[2025],\n ],\n }))\n await db.batch(batch, 'write')\n }\n\n await db.batch([\n {\n sql: `UPDATE location_data_imports SET status = 'ready', completed_at = datetime('now'), error = NULL WHERE id = ? AND status = 'loading'`,\n args: [id],\n },\n {\n sql: `\n INSERT INTO location_data_active (dataset_kind, import_id, activated_at)\n VALUES (?, ?, datetime('now'))\n ON CONFLICT(dataset_kind) DO UPDATE SET import_id = excluded.import_id, activated_at = excluded.activated_at\n `,\n args: [kind, id],\n },\n ], 'write')\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n await db.execute({\n sql: `UPDATE location_data_imports SET status = 'failed', error = ?, completed_at = datetime('now') WHERE id = ?`,\n args: [message.slice(0, 1_000), id],\n }).catch(() => undefined)\n throw error\n }\n\n const result = await db.execute({ sql: 'SELECT * FROM location_data_imports WHERE id = ? LIMIT 1', args: [id] })\n const row = result.rows[0]\n if (!row) throw new Error('Hosted Census import completed without a durable metadata row.')\n return { dataset: rowToDataset(row as unknown as Record<string, unknown>), duplicate: false }\n}\n\nexport async function queryHostedLocationMarkets(input: HostedLocationMarketQuery): Promise<HostedLocationMarketResult> {\n const state = normalizedState(input.state)\n if (!state) throw new Error('state must be a two-letter US state abbreviation')\n if (!Number.isSafeInteger(input.minPopulation) || input.minPopulation < 0) throw new Error('minPopulation must be a non-negative integer')\n if (!Number.isSafeInteger(input.maxResults) || input.maxResults < 1 || input.maxResults > 100) throw new Error('maxResults must be between 1 and 100')\n\n const populationDataset = await getActiveHostedDataset(censusDatasetKind(state))\n const needsZipDataset = input.includeZipGroups || Boolean(input.zip)\n const zipLookup = needsZipDataset\n ? await getHostedZipGroups(state)\n : { dataset: null, groups: new Map<string, HostedZipGroup>() }\n if (!populationDataset) {\n return { markets: [], populationDataset: null, zipDataset: zipLookup.dataset, warnings: [] }\n }\n\n const result = await getDb().execute({\n sql: `\n SELECT *\n FROM location_census_places\n WHERE import_id = ? AND state_abbr = ?\n ORDER BY city COLLATE NOCASE ASC\n `,\n args: [populationDataset.id, state],\n })\n const cityQuery = normalizeHostedCityKey(input.cityQuery ?? '')\n const zip = input.zip?.trim()\n const populationColumn = `population_${input.populationYear}`\n const markets = result.rows\n .map((row): DirectoryMarket | null => {\n const populationValue = row[populationColumn]\n if (populationValue == null) return null\n const population = Number(populationValue)\n if (!Number.isSafeInteger(population) || population < input.minPopulation) return null\n const city = String(row.city)\n const normalizedKey = String(row.city_key)\n if (cityQuery && !normalizedKey.includes(cityQuery)) return null\n const zipGroup = zipLookup.groups.get(normalizedKey)\n const zips = zipGroup?.zips ?? []\n if (zip && !zips.includes(zip)) return null\n return {\n city,\n state,\n location: `${city}, ${state}`,\n cityKey: `${city}|${state}`,\n censusName: String(row.census_name),\n population,\n populationYear: input.populationYear,\n estimatesBase2020: row.estimates_base_2020 == null ? null : Number(row.estimates_base_2020),\n zips: input.includeZipGroups ? zips : [],\n counties: input.includeZipGroups ? zipGroup?.counties ?? [] : [],\n }\n })\n .filter((market): market is DirectoryMarket => market !== null)\n .sort((a, b) => b.population - a.population || a.city.localeCompare(b.city))\n .slice(0, input.maxResults)\n\n const warnings: string[] = []\n if (input.includeZipGroups && zipLookup.dataset && markets.some(market => market.zips.length === 0)) {\n warnings.push('Some hosted Census places did not match the hosted ZIP city groups.')\n }\n return {\n markets,\n populationDataset,\n zipDataset: zipLookup.dataset,\n warnings,\n }\n}\n"],"mappings":"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","names":["key"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["export const PACKAGE_VERSION = '0.40.2'\n"],"mappings":";AAAO,IAAM,kBAAkB;","names":[]}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CORE_SCHEMA_VERSION,
|
|
3
|
+
CREDIT_LOTS_EPOCH,
|
|
4
|
+
CREDIT_LOT_TTL,
|
|
5
|
+
SiteAuditJobRowSchema,
|
|
6
|
+
SiteAuditPhaseLogRowSchema,
|
|
7
|
+
advanceWorkflowRunStep,
|
|
8
|
+
appendWorkflowArtifacts,
|
|
9
|
+
cancelJob,
|
|
10
|
+
checkRateLimit,
|
|
11
|
+
claimMonthlyFreeRefresh,
|
|
12
|
+
claimPendingJob,
|
|
13
|
+
claimPendingKpoJob,
|
|
14
|
+
claimStripeEvent,
|
|
15
|
+
completeJob,
|
|
16
|
+
completeKpoJob,
|
|
17
|
+
completeStripeEvent,
|
|
18
|
+
completeWorkflowRunRecord,
|
|
19
|
+
consumeCode,
|
|
20
|
+
consumePasswordResetToken,
|
|
21
|
+
countActiveJobsForUser,
|
|
22
|
+
countActiveUsers,
|
|
23
|
+
createJob,
|
|
24
|
+
createKpoJob,
|
|
25
|
+
createPasswordResetToken,
|
|
26
|
+
createRunningJob,
|
|
27
|
+
createUser,
|
|
28
|
+
createWorkflowRun,
|
|
29
|
+
createWorkflowSchedule,
|
|
30
|
+
creditMc,
|
|
31
|
+
creditMcIdempotent,
|
|
32
|
+
deactivateUser,
|
|
33
|
+
debitMc,
|
|
34
|
+
debitMcIdempotent,
|
|
35
|
+
deleteWorkflowSchedule,
|
|
36
|
+
expireOldLots,
|
|
37
|
+
failJob,
|
|
38
|
+
failKpoJob,
|
|
39
|
+
failStripeEvent,
|
|
40
|
+
failWorkflowRunRecord,
|
|
41
|
+
finishHarvestAttempt,
|
|
42
|
+
generateApiKey,
|
|
43
|
+
getBillingLedgerSummary,
|
|
44
|
+
getClient,
|
|
45
|
+
getConnectedAccountBillingState,
|
|
46
|
+
getDb,
|
|
47
|
+
getInboxMessage,
|
|
48
|
+
getJob,
|
|
49
|
+
getKpoJob,
|
|
50
|
+
getKpoPhaseLog,
|
|
51
|
+
getLedger,
|
|
52
|
+
getMemoryPlan,
|
|
53
|
+
getMemoryProvisioned,
|
|
54
|
+
getPageSnapshot,
|
|
55
|
+
getRefresh,
|
|
56
|
+
getUserByApiKey,
|
|
57
|
+
getUserByEmail,
|
|
58
|
+
getUserById,
|
|
59
|
+
getUserByStripeCustomerId,
|
|
60
|
+
getUserMemoryCreds,
|
|
61
|
+
getUserStats,
|
|
62
|
+
getWorkflowArtifact,
|
|
63
|
+
getWorkflowRun,
|
|
64
|
+
getWorkflowRunByIdempotencyKey,
|
|
65
|
+
getWorkflowRunStepState,
|
|
66
|
+
getWorkflowSchedule,
|
|
67
|
+
hashPassword,
|
|
68
|
+
insertInboxMessage,
|
|
69
|
+
ledgerExistsForOperation,
|
|
70
|
+
ledgerExistsForStripePI,
|
|
71
|
+
listActiveUserIds,
|
|
72
|
+
listDueWorkflowSchedules,
|
|
73
|
+
listHarvestAttempts,
|
|
74
|
+
listInboxMessages,
|
|
75
|
+
listJobs,
|
|
76
|
+
listKpoJobs,
|
|
77
|
+
listRequestEvents,
|
|
78
|
+
listUsers,
|
|
79
|
+
listUsersDueForConnectedAccountBillingReconciliation,
|
|
80
|
+
listWorkflowArtifacts,
|
|
81
|
+
listWorkflowRuns,
|
|
82
|
+
listWorkflowSchedules,
|
|
83
|
+
logKpoPhaseComplete,
|
|
84
|
+
logRequestEvent,
|
|
85
|
+
markInboxMessageOpened,
|
|
86
|
+
markWorkflowRunRunning,
|
|
87
|
+
markWorkflowScheduleRan,
|
|
88
|
+
migrate,
|
|
89
|
+
migrateExistingBalancesToLots,
|
|
90
|
+
patchWorkflowSchedule,
|
|
91
|
+
putCode,
|
|
92
|
+
putRefresh,
|
|
93
|
+
reconcileBalanceMc,
|
|
94
|
+
recordWorkflowWebhookDelivery,
|
|
95
|
+
registerClient,
|
|
96
|
+
replaceWorkflowArtifacts,
|
|
97
|
+
resolveUserByMemorySubscription,
|
|
98
|
+
revokeApiKey,
|
|
99
|
+
revokeRefresh,
|
|
100
|
+
rotateApiKey,
|
|
101
|
+
rotateRefresh,
|
|
102
|
+
setConcurrencySubId,
|
|
103
|
+
setConnectedAccountBillingState,
|
|
104
|
+
setDbForTesting,
|
|
105
|
+
setExtraConcurrencySlots,
|
|
106
|
+
setMemoryPlan,
|
|
107
|
+
setMemoryProvisioned,
|
|
108
|
+
setPassword,
|
|
109
|
+
setStripeCustomerId,
|
|
110
|
+
setSubscriptionTier,
|
|
111
|
+
setUserMemoryCreds,
|
|
112
|
+
settleDebitMcIdempotent,
|
|
113
|
+
softDeleteInboxMessage,
|
|
114
|
+
startHarvestAttempt,
|
|
115
|
+
stripeEventAlreadyProcessed,
|
|
116
|
+
updateKpoJobState,
|
|
117
|
+
upsertPageSnapshot,
|
|
118
|
+
verifyPassword
|
|
119
|
+
} from "./chunk-GUVKHCKE.js";
|
|
120
|
+
export {
|
|
121
|
+
CORE_SCHEMA_VERSION,
|
|
122
|
+
CREDIT_LOTS_EPOCH,
|
|
123
|
+
CREDIT_LOT_TTL,
|
|
124
|
+
SiteAuditJobRowSchema,
|
|
125
|
+
SiteAuditPhaseLogRowSchema,
|
|
126
|
+
advanceWorkflowRunStep,
|
|
127
|
+
appendWorkflowArtifacts,
|
|
128
|
+
cancelJob,
|
|
129
|
+
checkRateLimit,
|
|
130
|
+
claimMonthlyFreeRefresh,
|
|
131
|
+
claimPendingJob,
|
|
132
|
+
claimPendingKpoJob,
|
|
133
|
+
claimStripeEvent,
|
|
134
|
+
completeJob,
|
|
135
|
+
completeKpoJob,
|
|
136
|
+
completeStripeEvent,
|
|
137
|
+
completeWorkflowRunRecord,
|
|
138
|
+
consumeCode,
|
|
139
|
+
consumePasswordResetToken,
|
|
140
|
+
countActiveJobsForUser,
|
|
141
|
+
countActiveUsers,
|
|
142
|
+
createJob,
|
|
143
|
+
createKpoJob,
|
|
144
|
+
createPasswordResetToken,
|
|
145
|
+
createRunningJob,
|
|
146
|
+
createUser,
|
|
147
|
+
createWorkflowRun,
|
|
148
|
+
createWorkflowSchedule,
|
|
149
|
+
creditMc,
|
|
150
|
+
creditMcIdempotent,
|
|
151
|
+
deactivateUser,
|
|
152
|
+
debitMc,
|
|
153
|
+
debitMcIdempotent,
|
|
154
|
+
deleteWorkflowSchedule,
|
|
155
|
+
expireOldLots,
|
|
156
|
+
failJob,
|
|
157
|
+
failKpoJob,
|
|
158
|
+
failStripeEvent,
|
|
159
|
+
failWorkflowRunRecord,
|
|
160
|
+
finishHarvestAttempt,
|
|
161
|
+
generateApiKey,
|
|
162
|
+
getBillingLedgerSummary,
|
|
163
|
+
getClient,
|
|
164
|
+
getConnectedAccountBillingState,
|
|
165
|
+
getDb,
|
|
166
|
+
getInboxMessage,
|
|
167
|
+
getJob,
|
|
168
|
+
getKpoJob,
|
|
169
|
+
getKpoPhaseLog,
|
|
170
|
+
getLedger,
|
|
171
|
+
getMemoryPlan,
|
|
172
|
+
getMemoryProvisioned,
|
|
173
|
+
getPageSnapshot,
|
|
174
|
+
getRefresh,
|
|
175
|
+
getUserByApiKey,
|
|
176
|
+
getUserByEmail,
|
|
177
|
+
getUserById,
|
|
178
|
+
getUserByStripeCustomerId,
|
|
179
|
+
getUserMemoryCreds,
|
|
180
|
+
getUserStats,
|
|
181
|
+
getWorkflowArtifact,
|
|
182
|
+
getWorkflowRun,
|
|
183
|
+
getWorkflowRunByIdempotencyKey,
|
|
184
|
+
getWorkflowRunStepState,
|
|
185
|
+
getWorkflowSchedule,
|
|
186
|
+
hashPassword,
|
|
187
|
+
insertInboxMessage,
|
|
188
|
+
ledgerExistsForOperation,
|
|
189
|
+
ledgerExistsForStripePI,
|
|
190
|
+
listActiveUserIds,
|
|
191
|
+
listDueWorkflowSchedules,
|
|
192
|
+
listHarvestAttempts,
|
|
193
|
+
listInboxMessages,
|
|
194
|
+
listJobs,
|
|
195
|
+
listKpoJobs,
|
|
196
|
+
listRequestEvents,
|
|
197
|
+
listUsers,
|
|
198
|
+
listUsersDueForConnectedAccountBillingReconciliation,
|
|
199
|
+
listWorkflowArtifacts,
|
|
200
|
+
listWorkflowRuns,
|
|
201
|
+
listWorkflowSchedules,
|
|
202
|
+
logKpoPhaseComplete,
|
|
203
|
+
logRequestEvent,
|
|
204
|
+
markInboxMessageOpened,
|
|
205
|
+
markWorkflowRunRunning,
|
|
206
|
+
markWorkflowScheduleRan,
|
|
207
|
+
migrate,
|
|
208
|
+
migrateExistingBalancesToLots,
|
|
209
|
+
patchWorkflowSchedule,
|
|
210
|
+
putCode,
|
|
211
|
+
putRefresh,
|
|
212
|
+
reconcileBalanceMc,
|
|
213
|
+
recordWorkflowWebhookDelivery,
|
|
214
|
+
registerClient,
|
|
215
|
+
replaceWorkflowArtifacts,
|
|
216
|
+
resolveUserByMemorySubscription,
|
|
217
|
+
revokeApiKey,
|
|
218
|
+
revokeRefresh,
|
|
219
|
+
rotateApiKey,
|
|
220
|
+
rotateRefresh,
|
|
221
|
+
setConcurrencySubId,
|
|
222
|
+
setConnectedAccountBillingState,
|
|
223
|
+
setDbForTesting,
|
|
224
|
+
setExtraConcurrencySlots,
|
|
225
|
+
setMemoryPlan,
|
|
226
|
+
setMemoryProvisioned,
|
|
227
|
+
setPassword,
|
|
228
|
+
setStripeCustomerId,
|
|
229
|
+
setSubscriptionTier,
|
|
230
|
+
setUserMemoryCreds,
|
|
231
|
+
settleDebitMcIdempotent,
|
|
232
|
+
softDeleteInboxMessage,
|
|
233
|
+
startHarvestAttempt,
|
|
234
|
+
stripeEventAlreadyProcessed,
|
|
235
|
+
updateKpoJobState,
|
|
236
|
+
upsertPageSnapshot,
|
|
237
|
+
verifyPassword
|
|
238
|
+
};
|
|
239
|
+
//# sourceMappingURL=db-W3CP562I.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|