@dra2020/dra-types 1.8.86 → 1.8.87

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.
@@ -1 +1 @@
1
- {"version":3,"file":"dra-types.js","mappings":"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E,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC;AAEW,0BAAkB,GAAQ;IACrC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,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","sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/all.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/dra-types.ts","webpack://dra-types/./lib/groups.ts","webpack://dra-types/./lib/landmark.ts","webpack://dra-types/./lib/layer.ts","webpack://dra-types/./lib/packedfields.ts","webpack://dra-types/./lib/precincts.ts","webpack://dra-types/./lib/reverse.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/splittogeofeature.ts","webpack://dra-types/./lib/stateinfo.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/./lib/workqueue.ts","webpack://dra-types/external commonjs \"@dra2020/baseclient\"","webpack://dra-types/external commonjs \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/webpack/before-startup","webpack://dra-types/webpack/startup","webpack://dra-types/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dra-types\"] = factory();\n\telse\n\t\troot[\"dra-types\"] = factory();\n})(global, () => {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\nexport * from './stateinfo';\nexport * from './workqueue';\nexport * from './landmark';\nexport * from './splittogeofeature';\nexport * from './reverse';\nexport * from './groups';\nexport * from './precincts';\n","export const BucketMap: any =\n {\n 'default': 'dev-dra-us-west-2-723398989493',\n 'development': 'dev-dra-us-west-2-723398989493',\n 'production': 'dra-us-west-2-723398989493',\n 'state': 'dra-us-west-2-723398989493',\n 'state-dev': 'dev-dra-us-west-2-723398989493',\n 'logs': 'dra-uswest-logs',\n 'logs-dev': 'dra-uswest-logs',\n 'logs-archive': 'dra-uswest-logs-archive',\n 'logs-archive-dev': 'dra-uswest-logs-archive',\n 'memsqs': 'dra-uswest-memsqs',\n 'memsqs-dev': 'dra-uswest-memsqs',\n 'images': 'dra-uswest-images',\n 'images-dev': 'dra-uswest-images',\n 'layers': 'dra-uswest-layers',\n 'layers-dev': 'dra-uswest-layers',\n 'data': 'dra-us-west-datafiles',\n 'data-dev': 'dra-us-west-datafiles-dev',\n 'splits': 'dra-block-cache',\n 'splits-dev': 'dra-block-cache-dev',\n 'counties': 'dra-county-cache',\n 'counties-dev': 'dra-county-cache-dev',\n 'geojson': 'dra-uswest-geojson',\n 'geojson-dev': 'dra-uswest-geojson',\n 'transfers': 'dra-transfers',\n 'transfers-dev': 'dra-transfers-dev',\n 'downloads': 'dra-uswest-downloads',\n 'downloads-dev': 'dra-uswest-downloads',\n 'editcache': 'dra-uswest-editcache',\n 'editcache-dev': 'dra-uswest-editcache-dev',\n }\n","// Public libraries\nimport { Util, CSV, G } from '@dra2020/baseclient';\n\n// Local library\nimport * as VF from './vfeature';\n\n// Used internally to index into District Properties Array\nexport type BlockMap = { [id: string]: number };\n\n// Used more generically and allows string districtIDs\nexport type BlockMapping = { [id: string]: string };\n\nexport type RevBlockMapping = { [id: string]: string[] };\n\n// Alternate block mapping (only supports <1 std>: <Many alt>)\nexport type AltBlockMapping = { [blockid: string]: {[blockid: string]: number} }; // {stdblock: {altblock1: pop1, altblock2: pop2, ...}}\n\nlet reNumeric = /^(\\D*)(\\d*)(\\D*)$/;\nlet reDistrictNumber = /^\\d+$/;\nlet reDistrictNumeric = /^\\d/;\n\n// Normalize any numeric part to have no padded leading zeros\nexport function canonicalDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n if (a[2].length > 0)\n a[2] = String(Number(a[2]));\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\nfunction reverseSubMapping(mbm: G.MultiBlockMapping, n: number): G.ReverseBlockMapping\n{\n let rev: any = {};\n\n mbm.forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nfunction reverseBlockgroupMapping(mbm: G.MultiBlockMapping): G.ReverseBlockMapping\n{\n return reverseSubMapping(mbm, 12);\n}\n\n// Normalize any numeric part to have four digits with padded leading zeros\n// so alphabetic sorting will result in correct numeric sort for mixed alphanumber\n// district labels.\nexport function canonicalSortingDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n {\n switch (s.length)\n {\n case 1: s = `000${s}`; break;\n case 2: s = `00${s}`; break;\n case 3: s = `0${s}`; break;\n }\n a[2] = s;\n }\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\n// Return numeric part of districtID (or -1 if there is none)\nexport function canonicalNumericFromDistrictID(districtID: string): number\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n return Number(s);\n }\n return -1;\n}\n\nexport function canonicalDistrictIDFromNumber(districtID: string, n: number): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n a[2] = String(n);\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n else\n districtID = String(n);\n return districtID;\n}\n\n// Numbers start at 1\nexport type DistrictOrder = { [districtID: string]: number };\n\n// If purely numeric districtIDs and we are missing some number of IDs less than\nexport function canonicalDistrictIDGapFill(keys: string[]): string[]\n{\n if (keys == null || keys.length == 0) return keys;\n let nonNumeric = keys.find((s: string) => !reDistrictNumber.test(s)) !== undefined;\n if (nonNumeric) return keys;\n let max = Number(keys[keys.length-1]);\n if (max == keys.length || (max - keys.length) > keys.length) return keys; // no gaps or too many gaps\n\n // OK, finally going to fill some gaps\n for (let i: number = 0; i < keys.length; i++)\n {\n let here = Number(keys[i]);\n while (here > i+1)\n {\n keys.splice(i, 0, canonicalSortingDistrictID(String(i+1)));\n i++;\n }\n }\n\n return keys;\n}\n\nexport function canonicalDistrictIDOrdering(order: DistrictOrder): DistrictOrder\n{\n let keys = Object.keys(order);\n let i: number;\n let a: any = [];\n let template: string = undefined;\n\n keys = keys.map((s: string) => canonicalSortingDistrictID(s));\n\n // Let's omit this. Some official maps have odd numbering schemes and we don't\n // want to generate anomalous spurious extra districts.\n //keys = canonicalDistrictIDGapFill(keys);\n\n keys.sort();\n order = {};\n for (i = 0; i < keys.length; i++)\n order[canonicalDistrictID(keys[i])] = i+1;\n\n // Remove water districts\n if (order['ZZZ']) delete order['ZZZ'];\n if (order['ZZ']) delete order['ZZ'];\n\n return order;\n}\n\nexport interface OneCSVLine\n{\n geoid: string;\n districtID: string;\n}\n\nlet reArray = [\n // comma-delimited\n /^(\\d\\d[^\\s,']*)[\\s]*,[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s,\"]*)[\\s]*,[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n\n // pipe-delimited, new 2020 Census Bureau format\n /^(\\d\\d[^\\s\\|']*)[\\s]*\\|[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s\\|\"]*)[\\s]*\\|[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n ];\nlet reStart = 0; // last successful regex\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n\n // start at last successful parse so we don't have to\n // iterate through all the regex's for each line.\n for (let i = reStart; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n for (let i = 0; i < reStart; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n return null;\n}\n\nexport function csvLine(coder: Util.Coder, line: string): OneCSVLine\n{\n if (!coder || !line) return null;\n let parse = new CSV.ParseOne(coder, line);\n if (parse.length != 2) return null;\n let re = /^\\d\\d/;\n if (!re.exec(parse.fields[0])) return null;\n return { geoid: parse.fields[0], districtID: parse.fields[1] };\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inMbm: G.MultiBlockMapping;\n outMbm: G.MultiBlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\n nFeatures: number;\n nSplitFromFeatures: number;\n nSplitToFeatures: number;\n nBlocks: number;\n nSplitBlocks: number;\n}\n\nexport function blockmapToState(blockMap: BlockMapping): string\n{\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n return geoidToState(id);\n return null;\n}\n\nexport function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlockMapping, altBlocks: AltBlockMapping): ConvertResult\n{\n return blockmapToVTDmapCustom(blockMap, mbm, mbm, altBlocks);\n}\n\n// blockToVTD:\n// Take BlockMapping (simple map of GEOID to districtID) and a per-state map of block-level GEOID to VTD\n// and return the output mapping of VTD to districtID, as well a data structure that describes any VTD's\n// that need to be split between districtIDs. Also returns the DistrictOrder structure that defines the\n// districtIDs that were used by the file.\n//\n// The state (as specified by the first two digits of the GEOID) is also determined. If the GEOID's do\n// not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.\n//\n\nexport function blockmapToVTDmapCustom(\n blockMap: BlockMapping,\n inMbm: G.MultiBlockMapping,\n outMbm: G.MultiBlockMapping,\n altBlocks: AltBlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inMbm: inMbm,\n outMbm: outMbm,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {},\n nFeatures: 0,\n nSplitFromFeatures: 0,\n nSplitToFeatures: 0,\n nBlocks: 0,\n nSplitBlocks: 0,\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n\n let revBG: RevBlockMapping; // lazy create on demand\n\n function isBlockID(b: string): boolean { return b.length >= 15 && (!inMbm || !!inMbm.map(b)) }\n\n if (altBlocks)\n {\n // Create reverse of altBlocks if they exist {altBlockid: {stdBlockid, pop}, ...}\n let revAltBlocks: {[altBlockid: string]: {blockid: string, pop: number}} = {};\n Object.keys(altBlocks).forEach(blockid =>\n {\n Object.keys(altBlocks[blockid]).forEach(altBlockid =>\n {\n revAltBlocks[altBlockid] = {blockid: blockid, pop: altBlocks[blockid][altBlockid]}\n })\n });\n // Now walk input and build new blockMap with altBlocks replaced with stdBlocks\n let blockMapP: BlockMapping = {};\n let bestAlt: {[blockid: string]: {dist: string, pop: number}} = {};\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let n: number = id.length;\n if (isBlockID(id) && revAltBlocks[id])\n {\n if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop)\n {\n bestAlt[revAltBlocks[id].blockid] = {dist: blockMap[id], pop: revAltBlocks[id].pop};\n blockMapP[revAltBlocks[id].blockid] = blockMap[id];\n }\n }\n else\n {\n blockMapP[id] = blockMap[id];\n }\n }\n blockMap = blockMapP;\n }\n\n // First aggregate into features across all the blocks\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let state = geoidToState(id);\n if (res.outState == null)\n res.outState = state;\n else if (res.outState !== state)\n {\n res.outValid = false;\n break;\n }\n\n let districtID: string = canonicalDistrictID(blockMap[id]);\n\n // Just ignore ZZZ (water) blocks\n if (districtID === 'ZZZ')\n continue;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\n let n: number = id.length;\n let geoids: string[];\n let ids: string[];\n res.nBlocks++;\n\n // Simple test for block id (vs. voting district or block group) id\n // Also skip longer custom precinct ids\n if (isBlockID(id))\n {\n ids = [id];\n if (outMbm && outMbm.map(id) !== undefined)\n geoids = [outMbm.map(id)];\n else\n {\n geoids = [id.substr(0, 12)];\n if (outMbm && !outMbm.rev(geoids[0]))\n {\n res.outValid = false;\n break;\n }\n }\n }\n else if (n == 12)\n {\n if (!revBG) revBG = reverseBlockgroupMapping(outMbm);\n if (revBG[id])\n {\n ids = revBG[id];\n geoids = ids.map(id => outMbm.map(id));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n }\n else if (inMbm.rev(id))\n {\n // Map down to blockids and then back up to geoids to handle both custom and default geoids\n ids = inMbm.rev(id);\n geoids = ids.map(blockid => outMbm.map(blockid));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n\n ids.forEach((id: string, i: number) => {\n let geoid = geoids[i];\n let districtToBlocks: { [districtID: string]: { [blockid: string]: boolean } } = bmGather[geoid];\n if (districtToBlocks === undefined)\n bmGather[geoid] = { [districtID]: { [id]: true } };\n else\n {\n let thisDistrict: { [blockid: string]: boolean } = districtToBlocks[districtID];\n if (thisDistrict === undefined)\n {\n thisDistrict = { };\n districtToBlocks[districtID] = thisDistrict;\n }\n thisDistrict[id] = true;\n }\n });\n }\n\n // Now determine actual mapping of blocks to features, looking for split features\n for (let geoid in bmGather) if (bmGather.hasOwnProperty(geoid))\n {\n let districtToBlocks = bmGather[geoid];\n let bWhole = false;\n if (Util.countKeys(districtToBlocks) == 1)\n {\n let blocks = Object.keys(districtToBlocks[Util.nthKey(districtToBlocks)]);\n if (blocks[0] === geoid || (outMbm.rev(geoid) && blocks.length === outMbm.rev(geoid).length))\n bWhole = true;\n }\n if (bWhole)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\n res.nFeatures++;\n }\n else\n {\n for (let districtID in districtToBlocks) if (districtToBlocks.hasOwnProperty(districtID))\n {\n let split: VF.SplitBlock = { state: '', datasource: '', geoid: geoid, blocks: Object.keys(districtToBlocks[districtID]) };\n res.nSplitBlocks += split.blocks.length;\n let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n res.nFeatures++;\n res.nSplitToFeatures++;\n }\n res.nSplitFromFeatures++;\n }\n }\n\n res.outOrder = canonicalDistrictIDOrdering(res.outOrder);\n\n return res;\n}\n\nexport const StateIdToStateCode: any = {\n '01': 'AL',\n '02': 'AK',\n '04': 'AZ',\n '05': 'AR',\n '06': 'CA',\n '08': 'CO',\n '09': 'CT',\n '10': 'DE',\n '11': 'DC',\n '12': 'FL',\n '13': 'GA',\n '15': 'HI',\n '16': 'ID',\n '17': 'IL',\n '18': 'IN',\n '19': 'IA',\n '20': 'KS',\n '21': 'KY',\n '22': 'LA',\n '23': 'ME',\n '24': 'MD',\n '25': 'MA',\n '26': 'MI',\n '27': 'MN',\n '28': 'MS',\n '29': 'MO',\n '30': 'MT',\n '31': 'NE',\n '32': 'NV',\n '33': 'NH',\n '34': 'NJ',\n '35': 'NM',\n '36': 'NY',\n '37': 'NC',\n '38': 'ND',\n '39': 'OH',\n '40': 'OK',\n '41': 'OR',\n '42': 'PA',\n '44': 'RI',\n '45': 'SC',\n '46': 'SD',\n '47': 'TN',\n '48': 'TX',\n '49': 'UT',\n '50': 'VT',\n '51': 'VA',\n '53': 'WA',\n '54': 'WV',\n '55': 'WI',\n '56': 'WY',\n '72': 'PR',\n};\n\nexport const StateCodeToStateId: any = {\n 'AL': '01',\n 'AK': '02',\n 'AZ': '04',\n 'AR': '05',\n 'CA': '06',\n 'CO': '08',\n 'CT': '09',\n 'DE': '10',\n 'DC': '11',\n 'FL': '12',\n 'GA': '13',\n 'HI': '15',\n 'ID': '16',\n 'IL': '17',\n 'IN': '18',\n 'IA': '19',\n 'KS': '20',\n 'KY': '21',\n 'LA': '22',\n 'ME': '23',\n 'MD': '24',\n 'MA': '25',\n 'MI': '26',\n 'MN': '27',\n 'MS': '28',\n 'MO': '29',\n 'MT': '30',\n 'NE': '31',\n 'NV': '32',\n 'NH': '33',\n 'NJ': '34',\n 'NM': '35',\n 'NY': '36',\n 'NC': '37',\n 'ND': '38',\n 'OH': '39',\n 'OK': '40',\n 'OR': '41',\n 'PA': '42',\n 'RI': '44',\n 'SC': '45',\n 'SD': '46',\n 'TN': '47',\n 'TX': '48',\n 'UT': '49',\n 'VT': '50',\n 'VA': '51',\n 'WA': '53',\n 'WV': '54',\n 'WI': '55',\n 'WY': '56',\n 'PR': '72',\n};\n\nexport function geoidToState(geoid: string): string\n{\n let re = /^(..).*$/;\n\n let a = re.exec(geoid);\n if (a == null || a.length != 2) return null;\n return StateIdToStateCode[a[1]];\n}\n\nexport type StateUrls = (\n 'alabama' |\n 'alaska' |\n 'arizona' |\n 'arkansas' |\n 'california' |\n 'colorado' |\n 'connecticut' |\n 'delaware' |\n 'district-of-columbia' |\n 'florida' |\n 'georgia' |\n 'hawaii' |\n 'idaho' |\n 'illinois' |\n 'indiana' |\n 'iowa' |\n 'kansas' |\n 'kentucky' |\n 'louisiana' |\n 'maine' |\n 'maryland' |\n 'massachusetts' |\n 'michigan' |\n 'minnesota' |\n 'mississippi' |\n 'missouri' |\n 'montana' |\n 'nebraska' |\n 'nevada' |\n 'new-hampshire' |\n 'new-jersey' |\n 'new-mexico' |\n 'new-york' |\n 'north-carolina' |\n 'north-dakota' |\n 'ohio' |\n 'oklahoma' |\n 'oregon' |\n 'pennsylvania' |\n 'rhode-island' |\n 'south-carolina' |\n 'south-dakota' |\n 'tennessee' |\n 'texas' |\n 'utah' |\n 'vermont' |\n 'virginia' |\n 'washington' |\n 'west-virginia' |\n 'wisconsin' |\n 'wyoming' |\n 'puerto-rico'\n);\n\nexport type ValidStateNamesForUrlType =\n{\n readonly [stateUrl in StateUrls]: boolean;\n};\n\nconst ValidStateNamesForUrl: ValidStateNamesForUrlType = {\n 'alabama': true,\n 'alaska': true,\n 'arizona': true,\n 'arkansas': true,\n 'california': true,\n 'colorado': true,\n 'connecticut': true,\n 'delaware': true,\n 'district-of-columbia': true,\n 'florida': true,\n 'georgia': true,\n 'hawaii': true,\n 'idaho': true,\n 'illinois': true,\n 'indiana': true,\n 'iowa': true,\n 'kansas': true,\n 'kentucky': true,\n 'louisiana': true,\n 'maine': true,\n 'maryland': true,\n 'massachusetts': true,\n 'michigan': true,\n 'minnesota': true,\n 'mississippi': true,\n 'missouri': true,\n 'montana': true,\n 'nebraska': true,\n 'nevada': true,\n 'new-hampshire': true,\n 'new-jersey': true,\n 'new-mexico': true,\n 'new-york': true,\n 'north-carolina': true,\n 'north-dakota': true,\n 'ohio': true,\n 'oklahoma': true,\n 'oregon': true,\n 'pennsylvania': true,\n 'rhode-island': true,\n 'south-carolina': true,\n 'south-dakota': true,\n 'tennessee': true,\n 'texas': true,\n 'utah': true,\n 'vermont': true,\n 'virginia': true,\n 'washington': true,\n 'west-virginia': true,\n 'wisconsin': true,\n 'wyoming': true,\n 'puerto-rico': true,\n};\n\nexport function isValidStateNameForUrl(s: any): s is StateUrls\n{\n return (typeof s === 'string' && s in ValidStateNamesForUrl);\n}\n\n// StateCodes in state name alphabetically order\nexport const StateCodesOrdered: string[] = [\n \"AL\",\n \"AK\",\n \"AZ\",\n \"AR\",\n \"CA\",\n \"CO\",\n \"CT\",\n \"DE\",\n \"DC\",\n \"FL\",\n \"GA\",\n \"HI\",\n \"ID\",\n \"IL\",\n \"IN\",\n \"IA\",\n \"KS\",\n \"KY\",\n \"LA\",\n \"ME\",\n \"MD\",\n \"MA\",\n \"MI\",\n \"MN\",\n \"MS\",\n \"MO\",\n \"MT\",\n \"NE\",\n \"NV\",\n \"NH\",\n \"NJ\",\n \"NM\",\n \"NY\",\n \"NC\",\n \"ND\",\n \"OH\",\n \"OK\",\n \"OR\",\n \"PA\",\n \"RI\",\n \"SC\",\n \"SD\",\n \"TN\",\n \"TX\",\n \"UT\",\n \"VT\",\n \"VA\",\n \"WA\",\n \"WV\",\n \"WI\",\n \"WY\",\n \"PR\",\n];\n\nexport const StateNameMap : {[key: string] : string} = {\n \"AL\": \"Alabama\",\n \"AK\": \"Alaska\",\n \"AZ\": \"Arizona\",\n \"AR\": \"Arkansas\",\n \"CA\": \"California\",\n \"CO\": \"Colorado\",\n \"CT\": \"Connecticut\",\n \"DE\": \"Delaware\",\n \"FL\": \"Florida\",\n \"GA\": \"Georgia\",\n \"HI\": \"Hawaii\",\n \"ID\": \"Idaho\",\n \"IL\": \"Illinois\",\n \"IN\": \"Indiana\",\n \"IA\": \"Iowa\",\n \"KS\": \"Kansas\",\n \"KY\": \"Kentucky\",\n \"LA\": \"Louisiana\",\n \"ME\": \"Maine\",\n \"MD\": \"Maryland\",\n \"MA\": \"Massachusetts\",\n \"MI\": \"Michigan\",\n \"MN\": \"Minnesota\",\n \"MS\": \"Mississippi\",\n \"MO\": \"Missouri\",\n \"MT\": \"Montana\",\n \"NE\": \"Nebraska\",\n \"NV\": \"Nevada\",\n \"NH\": \"New Hampshire\",\n \"NJ\": \"New Jersey\",\n \"NM\": \"New Mexico\",\n \"NY\": \"New York\",\n \"NC\": \"North Carolina\",\n \"ND\": \"North Dakota\",\n \"OH\": \"Ohio\",\n \"OK\": \"Oklahoma\",\n \"OR\": \"Oregon\",\n \"PA\": \"Pennsylvania\",\n \"RI\": \"Rhode Island\",\n \"SC\": \"South Carolina\",\n \"SD\": \"South Dakota\",\n \"TN\": \"Tennessee\",\n \"TX\": \"Texas\",\n \"UT\": \"Utah\",\n \"VT\": \"Vermont\",\n \"VA\": \"Virginia\",\n \"WA\": \"Washington\",\n \"WV\": \"West Virginia\",\n \"WI\": \"Wisconsin\",\n \"WY\": \"Wyoming\",\n \"DC\": \"District of Columbia\",\n \"PR\": \"Puerto Rico\",\n};\n","// Type for single comment\nexport interface Comment\n{\n userid: string;\n text: string;\n date: string;\n recommend: number;\n}\n\n// Comment record associated with a map\nexport interface CommentList\n{\n id?: string;\n [commentid: string]: Comment | string; // Really just Comment but make TypeScript happy\n}\n\n// Supported like kinds\nexport type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';\n\n// Like record for an individual like\nexport interface Like\n{\n date: string;\n kind: LikeKind;\n}\n\n// Record for likes associated with a map\nexport interface LikeList\n{\n id?: string;\n [userid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Record for likes an individual user has performed\nexport interface UserLikes\n{\n id?: string;\n [aid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Type of redistricting plan (Note: 'upper' is used when there is only 1 legislative map or body)\n// congress, upper, lower and other => the plan is for entire state\n// county and city => plan is for a single county or city within a state\nexport type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';\n\n// Once we attempt to contact, they've optedin or optedout (both mean email is valid and not blocked, even if not \"validated\")\n// implicitoptedin means we contacted them successfully and they didn't optout, but also did not explicitly optin\n// invalidemail means either ill-formed, not valid domain or does not exist.\n// blockedemail means email addr is probably valid, but blocked for some reason (and implies optedout)\n// blockedoptedin means they optedin at some point, but then email got blocked (so its possibly it would get unblocked and they're still optedin)\nexport type ContactState = 'notcontacted' | 'optedin' | 'optedout' | 'implicitoptedin' | 'invalidemail' | 'blockedemail' | 'blockedoptedin';\n","export interface Group\n{\n id: string,\n name: string,\n description: string,\n}\n\nexport const GROUP_OWNER = 1;\nexport const GROUP_VERIFIED = 2;\nexport const GROUP_SEEN = 4;\nexport const GROUP_REMOVED = 8;\nexport const GROUP_BLOCKED = 16;\nexport const GROUP_ADMIN = 32;\n\nexport function hideGroup(flags: number): boolean\n{\n return (flags & (GROUP_REMOVED|GROUP_BLOCKED)) != 0;\n}\n\nexport function adminGroup(flags: number): boolean\n{\n return (flags & (GROUP_ADMIN|GROUP_OWNER)) != 0;\n}\n\nexport interface GroupUser\n{\n id: string,\n uid: string,\n flags: number,\n}\n\nexport interface GroupMap\n{\n id: string, // group id\n sid: string, // map (session) id\n permission: number, // permissions (read or readwrite)\n}\n\nexport type GroupUserIndex = { [groupid: string]: number }; // GroupUser flags\nexport type GroupMapIndex = { [groupid: string]: number }; // GroupMap permission\nexport type GroupIndex = { [groupid: string]: Group };\n","import { Util, G } from '@dra2020/baseclient';\n\nexport interface Landmark\n{\n id: string,\n name: string,\n description: string,\n coord: [number, number],\n}\n\nexport type Landmarks = { [id: string]: Landmark };\n\nexport function landmarksToCollection(landmarks: Landmarks): G.GeoFeatureCollection\n{\n if (landmarks == null) return null;\n\n let col: G.GeoFeatureCollection = { type: 'FeatureCollection', features: [] };\n Object.values(landmarks).forEach(l => {\n let f: G.GeoFeature = {\n type: 'Feature',\n properties: {\n id: l.id,\n name: l.name,\n description: l.description,\n },\n geometry: {\n type: 'Point',\n coordinates: l.coord,\n },\n };\n col.features.push(f);\n });\n return col;\n}\n\nexport function collectionToLandmarks(col: G.GeoFeatureCollection): Landmarks\n{\n let landmarks: Landmarks = {};\n if (col && col.features) col.features.forEach((f: G.GeoFeature) => {\n if (f.geometry.type === 'Point')\n {\n let c: any = f.geometry.coordinates;\n if (Array.isArray(c) && typeof c[0] === 'number' && typeof c[1] === 'number')\n {\n let landmark: Landmark = {\n id: Util.createGuid(),\n name: G.flexName(f),\n description: f.properties.description || '',\n coord: [c[0], c[1]],\n };\n landmarks[landmark.id] = landmark;\n }\n }\n });\n return landmarks;\n}\n","export interface UserLayerMeta\n{\n createdBy: string,\n id: string,\n name?: string,\n description?: string,\n state?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean\n}\n\nexport type UserLayerMetaIndex = {\n [id: string]: UserLayerMeta\n}\n\nexport type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';\n\nexport interface UserLayerRef\n{\n id: string,\n name?: string,\n layerType?: LayerType,\n geojsonName?: string,\n blockmapName?: string,\n cacheState?: string,\n cacheDatasource?: string,\n cachePlanType?: string,\n fill: boolean,\n stroke: boolean,\n label: boolean,\n landmark: boolean,\n strokeColor: string,\n strokeOpacity: number,\n fillColor: string,\n fillOpacity: number,\n lineWidth?: number,\n}\n\nexport type UserLayerRefIndex = {\n [id: string]: UserLayerRef\n}\n","export type PackedFields = Float64Array;\n\nexport function allocPackedFields(length: number): PackedFields\n{\n let ab = new ArrayBuffer(8 * length);\n let af = new Float64Array(ab);\n return af;\n}\n\n// The first entry in the PackedFields aggregate is the count of items aggregated.\n// Treat a null instance as just a single entry with no aggregates.\nlet abZero = new ArrayBuffer(8);\nlet afZero = new Float64Array(abZero);\nafZero[0] = 0;\n\nexport function zeroPackedCopy(pf: PackedFields): PackedFields\n{\n if (pf == null) return afZero;\n let af = allocPackedFields(pf.length);\n for (let i = 0; i < af.length; i++)\n af[i] = 0;\n return af;\n}\n\nexport function packedCopy(pf: PackedFields): PackedFields\n{\n if (pf == null) return null;\n let af = allocPackedFields(pf.length);\n for (let i = 0; i < pf.length; i++)\n af[i] = pf[i];\n return af;\n}\n\nexport function aggregatePackedFields(agg: PackedFields, pf: PackedFields): PackedFields\n{\n if (agg == null || pf == null) return agg;\n if (agg.length != pf.length)\n {\n return agg; // bug, but don't crash\n //throw 'aggregatePackedFields: unexpected length mismatch';\n }\n let n = agg.length;\n for (let i = 1; i < n; i++)\n agg[i] += pf[i];\n agg[0]++; // count of number of aggregates\n return agg;\n}\n","export interface Precincts\n{\n id?: string,\n state?: string,\n datasource?: string,\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n supersets?: string[],\n subsets?: string[],\n conflicts?: string[],\n}\n\nexport type PrecinctsIndex = { [id: string]: Precincts };\n","export function reverseBlockMapping(bm: any): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = bm[blockid];\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n Object.values(rev).forEach((a: string[]) => a.sort());\n return rev;\n}\n\nexport function reverseSubMapping(bm: any, n: number): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nexport function reverseBlockgroupMapping(bm: any): any\n{\n return reverseSubMapping(bm, 12);\n}\n\nexport function reverseTractMapping(bm: any): any\n{\n return reverseSubMapping(bm, 11);\n}\n","export let Schemas: any = {\n 'users':\n {\n FileOptions: { version: 5, name: 'users', map: false },\n Schema: {\n id: 'S',\n name: 'S',\n email: 'S',\n hashPW: 'S',\n verified: 'BOOL',\n admin: 'BOOL',\n roles: 'M',\n verifyGUID: 'S',\n resetGUID: 'S',\n resetTime: 'S',\n lastActive: 'S',\n modifyTime: 'S',\n resetCount: 'N',\n accessed: 'M',\n likeID: 'S',\n visitData: 'M',\n groups: 'M',\n cache: 'N',\n cached: 'N',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { email: 'HASH' },\n { verifyGUID: 'HASH' },\n { resetGUID: 'HASH' },\n ],\n },\n 'state':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n flags: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n groups: 'M',\n xid: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { xid: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'expungestate':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n },\n KeySchema: { id: 'HASH' },\n },\n 'splitblock':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { chunkKey: 'HASH', id: 'RANGE' },\n ],\n },\n 'blockset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n chunkList: 'L',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { state: 'HASH' },\n ],\n },\n 'blockchunk':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n recompute: 'BOOL',\n splits: 'L',\n },\n },\n 'access':\n {\n FileOptions: { map: true, noobject: true },\n Schema: {\n id: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'visitor':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastModified: 'S',\n /* ... others */\n },\n KeySchema: { id: 'HASH' }\n },\n 'session':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastActive: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'userlikes':\n {},\n 'likes':\n {},\n 'comments':\n {},\n 'stats':\n {},\n 'livestats':\n {},\n 'workqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { priority: 'HASH' },\n ],\n },\n 'failqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n failType: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'layer':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'groups':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'groupsusers':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n uid: 'S',\n flags: 'N',\n },\n KeySchema: { id: 'HASH', uid: 'RANGE' },\n },\n 'groupsmaps':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'notifications':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n createdBy: 'S',\n message: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n },\n 'cull':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n key: 'S',\n bucket: 'S',\n expires: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'precincts':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n}\n","import * as geojson from 'geojson';\nimport { Util, Poly, G } from '@dra2020/baseclient';\nimport * as DT from './vfeature';\nimport * as PF from './packedfields';\n\n// Given the topology for a precinct and a split, compute the feature data for the virtual feature.\n//\n\nexport function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): G.GeoFeature\n{\n let f = Poly.topoMerge(topoPrecinct, split.blocks);\n if (!f) return f;\n\n let contiguity = new Util.IndexedArray();\n let block_contiguity = new Util.IndexedArray();\n split.blocks.forEach(blockid => {\n let b = topoPrecinct.objects[blockid];\n if (b.properties.datasets)\n {\n if (! f.properties.datasets)\n f.properties.datasets = {};\n Util.deepAccum(f.properties.datasets, b.properties.datasets);\n }\n if (b.properties.packedFields)\n {\n if (! f.properties.packedFields)\n {\n f.properties.packedFields = PF.packedCopy(b.properties.packedFields);\n f.properties.getDatasetField = b.properties.getDatasetField;\n }\n else\n PF.aggregatePackedFields(f.properties.packedFields, b.properties.packedFields);\n }\n if (b.properties.contiguity)\n {\n b.properties.contiguity.forEach((id: string) => {\n if (id === 'OUT_OF_STATE')\n contiguity.set(id);\n else\n mbm.multimap(id).forEach(geoid => contiguity.set(geoid));\n });\n b.properties.contiguity.forEach((id: string) => {\n block_contiguity.set(id);\n });\n }\n });\n split.blocks.forEach(blockid => block_contiguity.clear(blockid));\n f.properties.id = DT.splitToVgeoid(split);\n f.properties.name = `Part of ${split.geoid} from ${split.blocks.length} blocks`;\n f.properties.contiguity = contiguity.asArray();\n f.properties.block_contiguity = block_contiguity.asArray();\n f.properties.blocks = split.blocks;\n f.properties.mbmstamp = mbm.stamp;\n return f;\n}\n","import * as DT from './dra-types';\n\nexport interface StateYearInfo\n{\n population: number,\n congress: {nDistricts: number}, \n upper: {nDistricts: number}, \n lower?: {nDistricts: number}, \n}\n\nexport interface StateInfo\n{\n '2010_VD': StateYearInfo,\n '2020_VD': StateYearInfo,\n}\n\nexport const StatePlanInfoMap: {[key: string]: StateInfo} = {\n \"AL\": {\"2010_VD\": {population: 4779736, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}, \"2020_VD\": { population: 0, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}},\n \"AK\": {\"2010_VD\": {population: 710231, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}},\n \"AZ\": {\"2010_VD\": {population: 6392017, congress: {nDistricts: 9}, upper: {nDistricts: 30}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 30}}},\n \"AR\": {\"2010_VD\": {population: 2915918, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}},\n \"CA\": {\"2010_VD\": {population: 37253956, congress: {nDistricts: 53}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}, \"2020_VD\": {population: 6, congress: {nDistricts: 52}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}},\n \"CO\": {\"2010_VD\": {population: 5029196, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}},\n \"CT\": {\"2010_VD\": {population: 3574097, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}},\n \"DE\": {\"2010_VD\": {population: 897934, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}},\n \"FL\": {\"2010_VD\": {population: 18801310, congress: {nDistricts: 27}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 28}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}},\n \"GA\": {\"2010_VD\": {population: 9687653, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}},\n \"HI\": {\"2010_VD\": {population: 1360301, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}},\n \"ID\": {\"2010_VD\": {population: 1567582, congress: {nDistricts: 2}, upper: {nDistricts: 35}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}}},\n \"IL\": {\"2010_VD\": {population: 12830632, congress: {nDistricts: 18}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}},\n \"IN\": {\"2010_VD\": {population: 6483802, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"IA\": {\"2010_VD\": {population: 3046355, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"KS\": {\"2010_VD\": {population: 2853118, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}},\n \"KY\": {\"2010_VD\": {population: 4339367, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}},\n \"LA\": {\"2010_VD\": {population: 4533372, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}},\n \"ME\": {\"2010_VD\": {population: 1328361, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}},\n \"MD\": {\"2010_VD\": {population: 5773552, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}},\n \"MA\": {\"2010_VD\": {population: 6547629, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}},\n \"MI\": {\"2010_VD\": {population: 9883640, congress: {nDistricts: 14}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}, \"2020_VD\": {population: 6, congress: {nDistricts: 13}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}},\n \"MN\": {\"2010_VD\": {population: 5303925, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}},\n \"MS\": {\"2010_VD\": {population: 2967297, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}},\n \"MO\": {\"2010_VD\": {population: 5988927, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}},\n \"MT\": {\"2010_VD\": {population: 989415, congress: {nDistricts: 1}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"NE\": {\"2010_VD\": {population: 1826341, congress: {nDistricts: 3}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 49}}},\n \"NV\": {\"2010_VD\": {population: 2700551, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}},\n \"NH\": {\"2010_VD\": {population: 1316470, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 161}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 164}}},\n \"NJ\": {\"2010_VD\": {population: 8791894, congress: {nDistricts: 12}, upper: {nDistricts: 40}}, \"2020_VD\": {population: 6, congress: {nDistricts: 12}, upper: {nDistricts: 40}}},\n \"NM\": {\"2010_VD\": {population: 2059179, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}},\n \"NY\": {\"2010_VD\": {population: 19378102, congress: {nDistricts: 27}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 26}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}},\n \"NC\": {\"2010_VD\": {population: 9535483, congress: {nDistricts: 13}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}},\n \"ND\": {\"2010_VD\": {population: 672591, congress: {nDistricts: 1}, upper: {nDistricts: 47}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 47}, lower: {nDistricts: 49}}},\n \"OH\": {\"2010_VD\": {population: 11536504, congress: {nDistricts: 16}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 15}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"OK\": {\"2010_VD\": {population: 3751351, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}},\n \"OR\": {\"2010_VD\": {population: 3831074, congress: {nDistricts: 5}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}},\n \"PA\": {\"2010_VD\": {population: 12702379, congress: {nDistricts: 18}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}},\n \"RI\": {\"2010_VD\": {population: 1052567, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}},\n \"SC\": {\"2010_VD\": {population: 4625364, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}, \"2020_VD\": {population: 6, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}},\n \"SD\": {\"2010_VD\": {population: 814180, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}},\n \"TN\": {\"2010_VD\": {population: 6346105, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"TX\": {\"2010_VD\": {population: 25145561, congress: {nDistricts: 36}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 38}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}},\n \"UT\": {\"2010_VD\": {population: 2763885, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}},\n \"VT\": {\"2010_VD\": {population: 625741, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}},\n \"VA\": {\"2010_VD\": {population: 8001024, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}},\n \"WA\": {\"2010_VD\": {population: 6724540, congress: {nDistricts: 10}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 10}, upper: {nDistricts: 49}}},\n \"WV\": {\"2010_VD\": {population: 1852994, congress: {nDistricts: 3}, upper: {nDistricts: 17}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 17}, lower: {nDistricts: 100}}},\n \"WI\": {\"2010_VD\": {population: 5686986, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"WY\": {\"2010_VD\": {population: 563626, congress: {nDistricts: 1}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 31}, lower: {nDistricts: 62}}},\n \"DC\": {\"2010_VD\": {population: 601723, congress: {nDistricts: 1}, upper: {nDistricts: 8}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 8}}},\n \"PR\": {\"2010_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}},\n};\n\nexport function hasPlanType(stateCode: string, planType: DT.PlanType, is2020?: boolean): boolean\n{\n // handle unicameral states (hence no lower house districts)\n if ((stateCode === 'NE' || stateCode === 'DC') && planType === 'lower')\n return false;\n\n // handle states with only 1 congressional district (hence no plan)\n if (planType === 'congress' &&\n (stateCode === 'AK' || stateCode === 'DE' || stateCode === 'ND' || stateCode === 'SD' || stateCode === 'VT' || stateCode === 'WY' || stateCode === 'DC' ||\n (stateCode === 'MT' && !is2020)))\n {\n return false;\n }\n\n if (planType === 'county' || planType === 'city')\n return false;\n\n return true;\n}\n\nexport function hasOneLegislativePlanBothHouses(stateCode: string): boolean\n{\n return stateCode === 'AZ' || stateCode === 'ID' || stateCode === 'NJ' || stateCode === 'WA';\n}\n\nexport function getPlanDistrictCount(stateCode: string, planType: DT.PlanType, datasource: string): number\n{\n if (planType === 'coi')\n return 1;\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD') || (planType !== 'congress' && planType !== 'upper' && planType !== 'lower'))\n return 0;\n \n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo && stateYearInfo[planType] ? stateYearInfo[planType]['nDistricts'] : 0;\n}\n\n// TODO: This is not currently used (3/2/21). 2020_VD population numbers are not set; update them when apportionment happens \nexport function getStateYearTotalPop(stateCode: string, datasource: string): number\n{\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD'))\n return 0;\n\n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo ? stateYearInfo['population'] : 0;\n}\n\nexport function inferPlanType(stateCode: string, datasource: string, nDistricts: number, flex?: boolean): DT.PlanType\n{\n // Intended for datasource === '2020_VD'\n const congressCount: number = getPlanDistrictCount(stateCode, 'congress', datasource);\n const upperCount: number = getPlanDistrictCount(stateCode, 'upper', datasource);\n const lowerCount: number = getPlanDistrictCount(stateCode, 'lower', datasource);\n return (\n ((flex && nDistricts <= congressCount + 2 && nDistricts >= congressCount - 3) || nDistricts == congressCount) ? 'congress' :\n (nDistricts == upperCount) ? 'upper' :\n (nDistricts == lowerCount) ? 'lower' :\n 'other');\n}\n","// In constrast to logging, the stats manager is responsible for tracking live server status.\n// The results are stored in a compact database record which can be easily queried for current\n// status. Each server instance maintains its own field in the overall \"values\" record in the\n// stats database. The reporting tool aggregates all instances to report overall server activity.\n//\n// There are basically three kinds of values:\n// Sum - we want to sum the value across all server instances (e.g. number of connnected clients)\n// Avg - we just take average across all server instances (e.g. memory heap size)\n// Rate - we want to track the rate of some activity over some time period\n//\n\nexport type ValType = number;\nexport const ValTypeSum = 0;\nexport const ValTypeAvg = 1;\nexport const ValTypeRate = 2;\n\nconst ExpiryAge = 1000 * 60 * 60 * 24; // throw away instance record after this time period\n\nexport function statExpiryTime(): string\n{\n let time = new Date();\n time.setTime(time.getTime() + ExpiryAge);\n return time.toJSON();\n}\n\nexport interface StatRecord\n{\n id: string;\n production: boolean;\n expires: string;\n time: string;\n index: StatEntryIndex;\n}\n\nexport type StatEntry = StatValue | StatRate;\n\nexport type StatEntryIndex = { [name: string]: StatEntry };\n\nexport interface StatValue\n{\n valType?: ValType;\n cur?: number;\n min?: number;\n max?: number;\n tot?: number;\n cnt?: number;\n}\n\nexport interface StatRate\n{\n valType?: ValType;\n thisMin?: number;\n lastMin?: number;\n thisHour?: number;\n lastHour?: number;\n thisDay?: number;\n lastDay?: number;\n}\n\n// Aggregate running value. This applies both in memory (logging multiple times before\n// saving to database) as well as aggregating into an instance structure in the DB.\n\nexport function statValueRecord(sv: StatValue, cur: number, valType: ValType): StatValue\n{\n if (sv === undefined) sv = {};\n if (sv.min === undefined || cur < sv.min)\n sv.min = cur;\n if (sv.max === undefined || cur > sv.max)\n sv.max = cur;\n sv.cur = cur;\n sv.valType = valType;\n return sv;\n}\n\nexport function statRateIncr(sr: StatRate, incr: number = 1): StatRate\n{\n if (sr == null) sr = {};\n sr.valType = ValTypeRate;\n sr.thisMin = sr.thisMin === undefined ? incr : sr.thisMin+incr;\n sr.thisHour = sr.thisHour === undefined ? incr : sr.thisHour+incr;\n sr.thisDay = sr.thisDay === undefined ? incr : sr.thisDay+incr;\n return sr;\n}\n\nexport const OneMinute = 1000 * 60;\nexport const OneHour = OneMinute * 60;\nexport const OneDay = OneHour * 24;\n\nexport function statRateRollover(sr: StatRate, period: number): void\n{\n if ((period % OneMinute) == 0)\n {\n sr.lastMin = sr.thisMin;\n sr.thisMin = 0;\n }\n if ((period % OneHour) == 0)\n {\n sr.lastHour = sr.thisHour;\n sr.thisHour = 0;\n }\n if ((period % OneDay) == 0)\n {\n sr.lastDay = sr.thisDay;\n sr.thisDay = 0;\n }\n}\n\nexport function statEntryIndexMerge(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n\n // We just discard and replace old rate information\n Object.keys(accum).forEach((p: string) => { if (accum[p].valType == ValTypeRate) delete accum[p] });\n\n // But merge in all the other values\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = se;\n else\n {\n let sv = se as StatValue;\n accum[p] = statValueRecord(se as StatValue, sv.cur, sv.valType);\n }\n });\n return accum;\n}\n\nexport function statEntryIndexRollover(si: StatEntryIndex, period: number): void\n{\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n statRateRollover(se as StatRate, period);\n });\n}\n\nexport function statRecordMerge(accum: StatRecord, si: StatRecord): StatRecord\n{\n if (accum == null)\n accum = { id: si.id, production: si.production, time: si.time, expires: si.expires, index: {} };\n accum.expires = si.expires;\n accum.time = si.time;\n statEntryIndexMerge(accum.index, si.index);\n return accum;\n}\n\n// Accumulate a set of values together (e.g. from multiple running instances)\n// for reporting current state.\n//\n\nexport function statValueAccum(accum: StatValue, sv: StatValue): StatEntry\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sv.valType;\n }\n if (accum.min === undefined || sv.min < accum.min)\n accum.min = sv.min;\n if (accum.max === undefined || sv.max > accum.max)\n accum.max = sv.max;\n if (accum.valType === undefined)\n accum.valType = sv.valType;\n if (accum.valType == ValTypeSum)\n accum.cur = (accum.cur === undefined ? sv.cur : accum.cur+sv.cur);\n else if (accum.valType == ValTypeAvg)\n {\n accum.tot = (accum.tot === undefined ? 0 : accum.tot) + sv.cur;\n accum.cnt = (accum.cnt === undefined ? 0 : accum.cnt) + 1;\n accum.cur = accum.tot / accum.cnt;\n }\n return accum;\n}\n\nexport function statRateAccum(accum: StatRate, sr: StatRate): StatRate\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sr.valType;\n }\n accum.thisMin = accum.thisMin === undefined ? sr.thisMin : (accum.thisMin + (sr.thisMin === undefined ? 0 : sr.thisMin));\n accum.lastMin = accum.lastMin === undefined ? sr.lastMin : (accum.lastMin + (sr.lastMin === undefined ? 0 : sr.lastMin));\n accum.thisHour = accum.thisHour === undefined ? sr.thisHour : (accum.thisHour + (sr.thisHour === undefined ? 0 : sr.thisHour));\n accum.lastHour = accum.lastHour === undefined ? sr.lastHour : (accum.lastHour + (sr.lastHour === undefined ? 0 : sr.lastHour));\n accum.thisDay = accum.thisDay === undefined ? sr.thisDay : (accum.thisDay + (sr.thisDay === undefined ? 0 : sr.thisDay));\n accum.lastDay = accum.lastDay === undefined ? sr.lastDay : (accum.lastDay + (sr.lastDay === undefined ? 0 : sr.lastDay));\n return accum;\n}\n\nexport function statIndexAccum(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = statRateAccum(accum[p] as StatRate, se as StatRate);\n else\n accum[p] = statValueAccum(accum[p] as StatValue, se as StatValue);\n });\n return accum;\n}\n","// Public libraries\nimport * as Hash from 'object-hash';\n\nexport interface SplitBlock\n{\n id?: string;\n chunkKey?: string;\n chunkList?: string[];\n chunk?: string;\n state: string;\n datasource: string;\n geoid: string;\n blocks?: string[];\n bitset?: string;\n}\n\nexport interface SplitChunk\n{\n id?: string;\n recompute?: boolean;\n splits?: string[];\n}\n\nexport type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };\n\n// Canonical hashing of custom precinct\nexport function chash(o: any): string\n{\n return Hash(o, { respectType: false, unorderedArrays: true, unorderedObjects: true,\n excludeKeys: (k: string) => (k === 'id') });\n}\n\n// Is custom feature - 5 digit county id + 'cust' + hash\nlet reC = /^\\d\\d\\d\\d\\dcust.*$/;\n\nexport function isCfeature(id: string): boolean\n{\n return id && reC.test(id);\n}\n\n// Canonical hashing of splitblock data\nexport function vhash(o: any): string\n{\n return Hash(o,\n { respectType: false,\n unorderedArrays: true,\n unorderedObjects: true,\n // basically, include (state,datasource,geoid,blocks[])\n excludeKeys: (k: string) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')\n });\n}\n\n// old style \"vfeature_[geoid]_[numericchunk]_[id]\"\n// new style \"B_[geoid]_bitset\"\n\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let reNew = /^B_([^_]*)_.*/;\n let reOld = /^vfeature_([^_]*)_.*/;\n let a = reNew.exec(vgeoid);\n if (a == null || a.length != 2)\n {\n a = reOld.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n }\n return a[1];\n}\n\nexport function splitToVgeoid(s: SplitBlock): string\n{\n // Newstyle\n if (s.bitset)\n return `B_${s.geoid}_${s.bitset}`;\n\n // oldstyle\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = '0';\n return `vfeature_${s.geoid}_${s.chunk}_${s.id}`;\n}\n\nexport function splitCommitted(s: SplitBlock): boolean\n{\n return !!s.id || !!s.bitset;\n}\n\nexport function vgeoidToChunk(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n // the contents are chunked into a file of form \"vfeature_chunk_[chunkid]\"\n // So extract the chunk ID and download that.\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = `vfeature_chunk_${a[2]}`;\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function vgeoidToSplit(state: string, datasource: string, vgeoid: string): SplitBlock\n{\n let reNew = /^B_([^_]*)_(.*)$/;\n let reOld = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = reNew.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], bitset: a[2] };\n a = reOld.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], id: a[3], chunk: a[2], blocks: null };\n return null;\n}\n\nexport function vgeoidToHash(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = a[3];\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function isVfeature(geoid: string): boolean\n{\n return geoid.indexOf('B') === 0 || geoid.indexOf('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.bitset)\n return null;\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;\n}\n\nexport function cacheKeyToSplit(s: string): SplitBlock\n{\n let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/\n let a = re.exec(s);\n if (a == null) return null;\n // 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash\n return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };\n}\n\nexport function splitToChunkKey(s: SplitBlock): string\n{\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_chunk_${s.chunk}.geojson`;\n}\n\nexport function splitToPrefix(s: SplitBlock): string\n{\n if (s.blocks === undefined)\n {\n let re = /_([^_]*)_(.*)_vfeature.*\\.geojson$/;\n let a = re.exec(s.id);\n if (a && a.length == 3)\n return `_${a[1]}_${a[2]}`;\n return s.id;\n }\n return `_${s.state}_${s.datasource}`;\n}\n\nexport function cacheKeysToChunkHash(keys: string[]): string\n{\n return vhash(keys);\n}\n","export type WorkQueueFailure = 'hard' | 'soft';\n\nexport interface WorkQueueItem\n{\n id: string,\n functionName: string,\n params: any,\n priority: number,\n failType?: WorkQueueFailure,\n}\n","module.exports = require(\"@dra2020/baseclient\");","module.exports = require(\"object-hash\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./lib/all.ts\");\n",""],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"dra-types.js","mappings":"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ACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC;AAEW,0BAAkB,GAAQ;IACrC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAA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","sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/all.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/dra-types.ts","webpack://dra-types/./lib/groups.ts","webpack://dra-types/./lib/landmark.ts","webpack://dra-types/./lib/layer.ts","webpack://dra-types/./lib/packedfields.ts","webpack://dra-types/./lib/precincts.ts","webpack://dra-types/./lib/reverse.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/splittogeofeature.ts","webpack://dra-types/./lib/stateinfo.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/./lib/workqueue.ts","webpack://dra-types/external commonjs \"@dra2020/baseclient\"","webpack://dra-types/external commonjs \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/webpack/before-startup","webpack://dra-types/webpack/startup","webpack://dra-types/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dra-types\"] = factory();\n\telse\n\t\troot[\"dra-types\"] = factory();\n})(global, () => {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\nexport * from './stateinfo';\nexport * from './workqueue';\nexport * from './landmark';\nexport * from './splittogeofeature';\nexport * from './reverse';\nexport * from './groups';\nexport * from './precincts';\n","export const BucketMap: any =\n {\n 'default': 'dev-dra-us-west-2-723398989493',\n 'development': 'dev-dra-us-west-2-723398989493',\n 'production': 'dra-us-west-2-723398989493',\n 'state': 'dra-us-west-2-723398989493',\n 'state-dev': 'dev-dra-us-west-2-723398989493',\n 'logs': 'dra-uswest-logs',\n 'logs-dev': 'dra-uswest-logs',\n 'logs-archive': 'dra-uswest-logs-archive',\n 'logs-archive-dev': 'dra-uswest-logs-archive',\n 'memsqs': 'dra-uswest-memsqs',\n 'memsqs-dev': 'dra-uswest-memsqs',\n 'images': 'dra-uswest-images',\n 'images-dev': 'dra-uswest-images',\n 'layers': 'dra-uswest-layers',\n 'layers-dev': 'dra-uswest-layers',\n 'data': 'dra-us-west-datafiles',\n 'data-dev': 'dra-us-west-datafiles-dev',\n 'splits': 'dra-block-cache',\n 'splits-dev': 'dra-block-cache-dev',\n 'counties': 'dra-county-cache',\n 'counties-dev': 'dra-county-cache-dev',\n 'geojson': 'dra-uswest-geojson',\n 'geojson-dev': 'dra-uswest-geojson',\n 'transfers': 'dra-transfers',\n 'transfers-dev': 'dra-transfers-dev',\n 'downloads': 'dra-uswest-downloads',\n 'downloads-dev': 'dra-uswest-downloads',\n 'editcache': 'dra-uswest-editcache',\n 'editcache-dev': 'dra-uswest-editcache-dev',\n }\n","// Public libraries\nimport { Util, CSV, G } from '@dra2020/baseclient';\n\n// Local library\nimport * as VF from './vfeature';\n\n// Used internally to index into District Properties Array\nexport type BlockMap = { [id: string]: number };\n\n// Used more generically and allows string districtIDs\nexport type BlockMapping = { [id: string]: string };\n\nexport type RevBlockMapping = { [id: string]: string[] };\n\n// Alternate block mapping (only supports <1 std>: <Many alt>)\nexport type AltBlockMapping = { [blockid: string]: {[blockid: string]: number} }; // {stdblock: {altblock1: pop1, altblock2: pop2, ...}}\n\nlet reNumeric = /^(\\D*)(\\d*)(\\D*)$/;\nlet reDistrictNumber = /^\\d+$/;\nlet reDistrictNumeric = /^\\d/;\n\n// Normalize any numeric part to have no padded leading zeros\nexport function canonicalDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n if (a[2].length > 0)\n a[2] = String(Number(a[2]));\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\nfunction reverseSubMapping(mbm: G.MultiBlockMapping, n: number): G.ReverseBlockMapping\n{\n let rev: any = {};\n\n mbm.forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nfunction reverseBlockgroupMapping(mbm: G.MultiBlockMapping): G.ReverseBlockMapping\n{\n return reverseSubMapping(mbm, 12);\n}\n\n// Normalize any numeric part to have four digits with padded leading zeros\n// so alphabetic sorting will result in correct numeric sort for mixed alphanumber\n// district labels.\nexport function canonicalSortingDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n {\n switch (s.length)\n {\n case 1: s = `000${s}`; break;\n case 2: s = `00${s}`; break;\n case 3: s = `0${s}`; break;\n }\n a[2] = s;\n }\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\n// Return numeric part of districtID (or -1 if there is none)\nexport function canonicalNumericFromDistrictID(districtID: string): number\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n return Number(s);\n }\n return -1;\n}\n\nexport function canonicalDistrictIDFromNumber(districtID: string, n: number): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n a[2] = String(n);\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n else\n districtID = String(n);\n return districtID;\n}\n\n// Numbers start at 1\nexport type DistrictOrder = { [districtID: string]: number };\n\n// If purely numeric districtIDs and we are missing some number of IDs less than\nexport function canonicalDistrictIDGapFill(keys: string[]): string[]\n{\n if (keys == null || keys.length == 0) return keys;\n let nonNumeric = keys.find((s: string) => !reDistrictNumber.test(s)) !== undefined;\n if (nonNumeric) return keys;\n let max = Number(keys[keys.length-1]);\n if (max == keys.length || (max - keys.length) > keys.length) return keys; // no gaps or too many gaps\n\n // OK, finally going to fill some gaps\n for (let i: number = 0; i < keys.length; i++)\n {\n let here = Number(keys[i]);\n while (here > i+1)\n {\n keys.splice(i, 0, canonicalSortingDistrictID(String(i+1)));\n i++;\n }\n }\n\n return keys;\n}\n\nexport function canonicalDistrictIDOrdering(order: DistrictOrder): DistrictOrder\n{\n let keys = Object.keys(order);\n let i: number;\n let a: any = [];\n let template: string = undefined;\n\n keys = keys.map((s: string) => canonicalSortingDistrictID(s));\n\n // Let's omit this. Some official maps have odd numbering schemes and we don't\n // want to generate anomalous spurious extra districts.\n //keys = canonicalDistrictIDGapFill(keys);\n\n keys.sort();\n order = {};\n for (i = 0; i < keys.length; i++)\n order[canonicalDistrictID(keys[i])] = i+1;\n\n // Remove water districts\n if (order['ZZZ']) delete order['ZZZ'];\n if (order['ZZ']) delete order['ZZ'];\n\n return order;\n}\n\nexport interface OneCSVLine\n{\n geoid: string;\n districtID: string;\n}\n\nlet reArray = [\n // comma-delimited\n /^(\\d\\d[^\\s,']*)[\\s]*,[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s,\"]*)[\\s]*,[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n\n // pipe-delimited, new 2020 Census Bureau format\n /^(\\d\\d[^\\s\\|']*)[\\s]*\\|[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s\\|\"]*)[\\s]*\\|[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n ];\nlet reStart = 0; // last successful regex\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n\n // start at last successful parse so we don't have to\n // iterate through all the regex's for each line.\n for (let i = reStart; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n for (let i = 0; i < reStart; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n return null;\n}\n\nexport function csvLine(coder: Util.Coder, line: string): OneCSVLine\n{\n if (!coder || !line) return null;\n let parse = new CSV.ParseOne(coder, line);\n if (parse.length != 2) return null;\n let re = /^\\d\\d/;\n if (!re.exec(parse.fields[0])) return null;\n return { geoid: parse.fields[0], districtID: parse.fields[1] };\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inMbm: G.MultiBlockMapping;\n outMbm: G.MultiBlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\n nFeatures: number;\n nSplitFromFeatures: number;\n nSplitToFeatures: number;\n nBlocks: number;\n nSplitBlocks: number;\n}\n\nexport function blockmapToState(blockMap: BlockMapping): string\n{\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n return geoidToState(id);\n return null;\n}\n\nexport function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlockMapping, altBlocks: AltBlockMapping): ConvertResult\n{\n return blockmapToVTDmapCustom(blockMap, mbm, mbm, altBlocks);\n}\n\n// blockToVTD:\n// Take BlockMapping (simple map of GEOID to districtID) and a per-state map of block-level GEOID to VTD\n// and return the output mapping of VTD to districtID, as well a data structure that describes any VTD's\n// that need to be split between districtIDs. Also returns the DistrictOrder structure that defines the\n// districtIDs that were used by the file.\n//\n// The state (as specified by the first two digits of the GEOID) is also determined. If the GEOID's do\n// not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.\n//\n\nexport function blockmapToVTDmapCustom(\n blockMap: BlockMapping,\n inMbm: G.MultiBlockMapping,\n outMbm: G.MultiBlockMapping,\n altBlocks: AltBlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inMbm: inMbm,\n outMbm: outMbm,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {},\n nFeatures: 0,\n nSplitFromFeatures: 0,\n nSplitToFeatures: 0,\n nBlocks: 0,\n nSplitBlocks: 0,\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n\n let revBG: RevBlockMapping; // lazy create on demand\n\n function isBlockID(b: string): boolean { return b.length >= 15 && (!inMbm || !!inMbm.map(b)) }\n\n if (altBlocks)\n {\n // Create reverse of altBlocks if they exist {altBlockid: {stdBlockid, pop}, ...}\n let revAltBlocks: {[altBlockid: string]: {blockid: string, pop: number}} = {};\n Object.keys(altBlocks).forEach(blockid =>\n {\n Object.keys(altBlocks[blockid]).forEach(altBlockid =>\n {\n revAltBlocks[altBlockid] = {blockid: blockid, pop: altBlocks[blockid][altBlockid]}\n })\n });\n // Now walk input and build new blockMap with altBlocks replaced with stdBlocks\n let blockMapP: BlockMapping = {};\n let bestAlt: {[blockid: string]: {dist: string, pop: number}} = {};\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let n: number = id.length;\n if (isBlockID(id) && revAltBlocks[id])\n {\n if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop)\n {\n bestAlt[revAltBlocks[id].blockid] = {dist: blockMap[id], pop: revAltBlocks[id].pop};\n blockMapP[revAltBlocks[id].blockid] = blockMap[id];\n }\n }\n else\n {\n blockMapP[id] = blockMap[id];\n }\n }\n blockMap = blockMapP;\n }\n\n // First aggregate into features across all the blocks\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let state = geoidToState(id);\n if (res.outState == null)\n res.outState = state;\n else if (res.outState !== state)\n {\n res.outValid = false;\n break;\n }\n\n let districtID: string = canonicalDistrictID(blockMap[id]);\n\n // Just ignore ZZZ (water) blocks\n if (districtID === 'ZZZ')\n continue;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\n let n: number = id.length;\n let geoids: string[];\n let ids: string[];\n res.nBlocks++;\n\n // Simple test for block id (vs. voting district or block group) id\n // Also skip longer custom precinct ids\n if (isBlockID(id))\n {\n ids = [id];\n if (outMbm && outMbm.map(id) !== undefined)\n geoids = [outMbm.map(id)];\n else\n {\n geoids = [id.substr(0, 12)];\n if (outMbm && !outMbm.rev(geoids[0]))\n {\n res.outValid = false;\n break;\n }\n }\n }\n else if (n == 12)\n {\n if (!revBG) revBG = reverseBlockgroupMapping(outMbm);\n if (revBG[id])\n {\n ids = revBG[id];\n geoids = ids.map(id => outMbm.map(id));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n }\n else if (inMbm.rev(id))\n {\n // Map down to blockids and then back up to geoids to handle both custom and default geoids\n ids = inMbm.rev(id);\n geoids = ids.map(blockid => outMbm.map(blockid));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n\n ids.forEach((id: string, i: number) => {\n let geoid = geoids[i];\n let districtToBlocks: { [districtID: string]: { [blockid: string]: boolean } } = bmGather[geoid];\n if (districtToBlocks === undefined)\n bmGather[geoid] = { [districtID]: { [id]: true } };\n else\n {\n let thisDistrict: { [blockid: string]: boolean } = districtToBlocks[districtID];\n if (thisDistrict === undefined)\n {\n thisDistrict = { };\n districtToBlocks[districtID] = thisDistrict;\n }\n thisDistrict[id] = true;\n }\n });\n }\n\n // Now determine actual mapping of blocks to features, looking for split features\n for (let geoid in bmGather) if (bmGather.hasOwnProperty(geoid))\n {\n let districtToBlocks = bmGather[geoid];\n let bWhole = false;\n if (Util.countKeys(districtToBlocks) == 1)\n {\n let blocks = Object.keys(districtToBlocks[Util.nthKey(districtToBlocks)]);\n if (blocks[0] === geoid || (outMbm.rev(geoid) && blocks.length === outMbm.rev(geoid).length))\n bWhole = true;\n }\n if (bWhole)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\n res.nFeatures++;\n }\n else\n {\n for (let districtID in districtToBlocks) if (districtToBlocks.hasOwnProperty(districtID))\n {\n let split: VF.SplitBlock = { state: '', datasource: '', geoid: geoid, blocks: Object.keys(districtToBlocks[districtID]) };\n res.nSplitBlocks += split.blocks.length;\n let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n res.nFeatures++;\n res.nSplitToFeatures++;\n }\n res.nSplitFromFeatures++;\n }\n }\n\n res.outOrder = canonicalDistrictIDOrdering(res.outOrder);\n\n return res;\n}\n\nexport const StateIdToStateCode: any = {\n '01': 'AL',\n '02': 'AK',\n '04': 'AZ',\n '05': 'AR',\n '06': 'CA',\n '08': 'CO',\n '09': 'CT',\n '10': 'DE',\n '11': 'DC',\n '12': 'FL',\n '13': 'GA',\n '15': 'HI',\n '16': 'ID',\n '17': 'IL',\n '18': 'IN',\n '19': 'IA',\n '20': 'KS',\n '21': 'KY',\n '22': 'LA',\n '23': 'ME',\n '24': 'MD',\n '25': 'MA',\n '26': 'MI',\n '27': 'MN',\n '28': 'MS',\n '29': 'MO',\n '30': 'MT',\n '31': 'NE',\n '32': 'NV',\n '33': 'NH',\n '34': 'NJ',\n '35': 'NM',\n '36': 'NY',\n '37': 'NC',\n '38': 'ND',\n '39': 'OH',\n '40': 'OK',\n '41': 'OR',\n '42': 'PA',\n '44': 'RI',\n '45': 'SC',\n '46': 'SD',\n '47': 'TN',\n '48': 'TX',\n '49': 'UT',\n '50': 'VT',\n '51': 'VA',\n '53': 'WA',\n '54': 'WV',\n '55': 'WI',\n '56': 'WY',\n '72': 'PR',\n};\n\nexport const StateCodeToStateId: any = {\n 'AL': '01',\n 'AK': '02',\n 'AZ': '04',\n 'AR': '05',\n 'CA': '06',\n 'CO': '08',\n 'CT': '09',\n 'DE': '10',\n 'DC': '11',\n 'FL': '12',\n 'GA': '13',\n 'HI': '15',\n 'ID': '16',\n 'IL': '17',\n 'IN': '18',\n 'IA': '19',\n 'KS': '20',\n 'KY': '21',\n 'LA': '22',\n 'ME': '23',\n 'MD': '24',\n 'MA': '25',\n 'MI': '26',\n 'MN': '27',\n 'MS': '28',\n 'MO': '29',\n 'MT': '30',\n 'NE': '31',\n 'NV': '32',\n 'NH': '33',\n 'NJ': '34',\n 'NM': '35',\n 'NY': '36',\n 'NC': '37',\n 'ND': '38',\n 'OH': '39',\n 'OK': '40',\n 'OR': '41',\n 'PA': '42',\n 'RI': '44',\n 'SC': '45',\n 'SD': '46',\n 'TN': '47',\n 'TX': '48',\n 'UT': '49',\n 'VT': '50',\n 'VA': '51',\n 'WA': '53',\n 'WV': '54',\n 'WI': '55',\n 'WY': '56',\n 'PR': '72',\n};\n\nexport function geoidToState(geoid: string): string\n{\n let re = /^(..).*$/;\n\n let a = re.exec(geoid);\n if (a == null || a.length != 2) return null;\n return StateIdToStateCode[a[1]];\n}\n\nexport type StateUrls = (\n 'alabama' |\n 'alaska' |\n 'arizona' |\n 'arkansas' |\n 'california' |\n 'colorado' |\n 'connecticut' |\n 'delaware' |\n 'district-of-columbia' |\n 'florida' |\n 'georgia' |\n 'hawaii' |\n 'idaho' |\n 'illinois' |\n 'indiana' |\n 'iowa' |\n 'kansas' |\n 'kentucky' |\n 'louisiana' |\n 'maine' |\n 'maryland' |\n 'massachusetts' |\n 'michigan' |\n 'minnesota' |\n 'mississippi' |\n 'missouri' |\n 'montana' |\n 'nebraska' |\n 'nevada' |\n 'new-hampshire' |\n 'new-jersey' |\n 'new-mexico' |\n 'new-york' |\n 'north-carolina' |\n 'north-dakota' |\n 'ohio' |\n 'oklahoma' |\n 'oregon' |\n 'pennsylvania' |\n 'rhode-island' |\n 'south-carolina' |\n 'south-dakota' |\n 'tennessee' |\n 'texas' |\n 'utah' |\n 'vermont' |\n 'virginia' |\n 'washington' |\n 'west-virginia' |\n 'wisconsin' |\n 'wyoming' |\n 'puerto-rico'\n);\n\nexport type ValidStateNamesForUrlType =\n{\n readonly [stateUrl in StateUrls]: boolean;\n};\n\nconst ValidStateNamesForUrl: ValidStateNamesForUrlType = {\n 'alabama': true,\n 'alaska': true,\n 'arizona': true,\n 'arkansas': true,\n 'california': true,\n 'colorado': true,\n 'connecticut': true,\n 'delaware': true,\n 'district-of-columbia': true,\n 'florida': true,\n 'georgia': true,\n 'hawaii': true,\n 'idaho': true,\n 'illinois': true,\n 'indiana': true,\n 'iowa': true,\n 'kansas': true,\n 'kentucky': true,\n 'louisiana': true,\n 'maine': true,\n 'maryland': true,\n 'massachusetts': true,\n 'michigan': true,\n 'minnesota': true,\n 'mississippi': true,\n 'missouri': true,\n 'montana': true,\n 'nebraska': true,\n 'nevada': true,\n 'new-hampshire': true,\n 'new-jersey': true,\n 'new-mexico': true,\n 'new-york': true,\n 'north-carolina': true,\n 'north-dakota': true,\n 'ohio': true,\n 'oklahoma': true,\n 'oregon': true,\n 'pennsylvania': true,\n 'rhode-island': true,\n 'south-carolina': true,\n 'south-dakota': true,\n 'tennessee': true,\n 'texas': true,\n 'utah': true,\n 'vermont': true,\n 'virginia': true,\n 'washington': true,\n 'west-virginia': true,\n 'wisconsin': true,\n 'wyoming': true,\n 'puerto-rico': true,\n};\n\nexport function isValidStateNameForUrl(s: any): s is StateUrls\n{\n return (typeof s === 'string' && s in ValidStateNamesForUrl);\n}\n\n// StateCodes in state name alphabetically order\nexport const StateCodesOrdered: string[] = [\n \"AL\",\n \"AK\",\n \"AZ\",\n \"AR\",\n \"CA\",\n \"CO\",\n \"CT\",\n \"DE\",\n \"DC\",\n \"FL\",\n \"GA\",\n \"HI\",\n \"ID\",\n \"IL\",\n \"IN\",\n \"IA\",\n \"KS\",\n \"KY\",\n \"LA\",\n \"ME\",\n \"MD\",\n \"MA\",\n \"MI\",\n \"MN\",\n \"MS\",\n \"MO\",\n \"MT\",\n \"NE\",\n \"NV\",\n \"NH\",\n \"NJ\",\n \"NM\",\n \"NY\",\n \"NC\",\n \"ND\",\n \"OH\",\n \"OK\",\n \"OR\",\n \"PA\",\n \"RI\",\n \"SC\",\n \"SD\",\n \"TN\",\n \"TX\",\n \"UT\",\n \"VT\",\n \"VA\",\n \"WA\",\n \"WV\",\n \"WI\",\n \"WY\",\n \"PR\",\n];\n\nexport const StateNameMap : {[key: string] : string} = {\n \"AL\": \"Alabama\",\n \"AK\": \"Alaska\",\n \"AZ\": \"Arizona\",\n \"AR\": \"Arkansas\",\n \"CA\": \"California\",\n \"CO\": \"Colorado\",\n \"CT\": \"Connecticut\",\n \"DE\": \"Delaware\",\n \"FL\": \"Florida\",\n \"GA\": \"Georgia\",\n \"HI\": \"Hawaii\",\n \"ID\": \"Idaho\",\n \"IL\": \"Illinois\",\n \"IN\": \"Indiana\",\n \"IA\": \"Iowa\",\n \"KS\": \"Kansas\",\n \"KY\": \"Kentucky\",\n \"LA\": \"Louisiana\",\n \"ME\": \"Maine\",\n \"MD\": \"Maryland\",\n \"MA\": \"Massachusetts\",\n \"MI\": \"Michigan\",\n \"MN\": \"Minnesota\",\n \"MS\": \"Mississippi\",\n \"MO\": \"Missouri\",\n \"MT\": \"Montana\",\n \"NE\": \"Nebraska\",\n \"NV\": \"Nevada\",\n \"NH\": \"New Hampshire\",\n \"NJ\": \"New Jersey\",\n \"NM\": \"New Mexico\",\n \"NY\": \"New York\",\n \"NC\": \"North Carolina\",\n \"ND\": \"North Dakota\",\n \"OH\": \"Ohio\",\n \"OK\": \"Oklahoma\",\n \"OR\": \"Oregon\",\n \"PA\": \"Pennsylvania\",\n \"RI\": \"Rhode Island\",\n \"SC\": \"South Carolina\",\n \"SD\": \"South Dakota\",\n \"TN\": \"Tennessee\",\n \"TX\": \"Texas\",\n \"UT\": \"Utah\",\n \"VT\": \"Vermont\",\n \"VA\": \"Virginia\",\n \"WA\": \"Washington\",\n \"WV\": \"West Virginia\",\n \"WI\": \"Wisconsin\",\n \"WY\": \"Wyoming\",\n \"DC\": \"District of Columbia\",\n \"PR\": \"Puerto Rico\",\n};\n","// Type for single comment\nexport interface Comment\n{\n userid: string;\n text: string;\n date: string;\n recommend: number;\n}\n\n// Comment record associated with a map\nexport interface CommentList\n{\n id?: string;\n [commentid: string]: Comment | string; // Really just Comment but make TypeScript happy\n}\n\n// Supported like kinds\nexport type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';\n\n// Like record for an individual like\nexport interface Like\n{\n date: string;\n kind: LikeKind;\n}\n\n// Record for likes associated with a map\nexport interface LikeList\n{\n id?: string;\n [userid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Record for likes an individual user has performed\nexport interface UserLikes\n{\n id?: string;\n [aid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Type of redistricting plan (Note: 'upper' is used when there is only 1 legislative map or body)\n// congress, upper, lower and other => the plan is for entire state\n// county and city => plan is for a single county or city within a state\nexport type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';\n\n// Once we attempt to contact, they've optedin or optedout (both mean email is valid and not blocked, even if not \"validated\")\n// implicitoptedin means we contacted them successfully and they didn't optout, but also did not explicitly optin\n// invalidemail means either ill-formed, not valid domain or does not exist.\n// blockedemail means email addr is probably valid, but blocked for some reason (and implies optedout)\n// blockedoptedin means they optedin at some point, but then email got blocked (so its possibly it would get unblocked and they're still optedin)\nexport type ContactState = 'notcontacted' | 'optedin' | 'optedout' | 'implicitoptedin' | 'invalidemail' | 'blockedemail' | 'blockedoptedin';\n","export interface Group\n{\n id: string,\n name: string,\n description: string,\n}\n\nexport const GROUP_OWNER = 1;\nexport const GROUP_VERIFIED = 2;\nexport const GROUP_SEEN = 4;\nexport const GROUP_REMOVED = 8;\nexport const GROUP_BLOCKED = 16;\nexport const GROUP_ADMIN = 32;\n\nexport function hideGroup(flags: number): boolean\n{\n return (flags & (GROUP_REMOVED|GROUP_BLOCKED)) != 0;\n}\n\nexport function adminGroup(flags: number): boolean\n{\n return (flags & (GROUP_ADMIN|GROUP_OWNER)) != 0;\n}\n\nexport interface GroupUser\n{\n id: string,\n uid: string,\n flags: number,\n}\n\nexport interface GroupMap\n{\n id: string, // group id\n sid: string, // map (session) id\n permission: number, // permissions (read or readwrite)\n}\n\nexport type GroupUserIndex = { [groupid: string]: number }; // GroupUser flags\nexport type GroupMapIndex = { [groupid: string]: number }; // GroupMap permission\nexport type GroupIndex = { [groupid: string]: Group };\n","import { Util, G } from '@dra2020/baseclient';\n\nexport interface Landmark\n{\n id: string,\n name: string,\n description: string,\n coord: [number, number],\n}\n\nexport type Landmarks = { [id: string]: Landmark };\n\nexport function landmarksToCollection(landmarks: Landmarks): G.GeoFeatureCollection\n{\n if (landmarks == null) return null;\n\n let col: G.GeoFeatureCollection = { type: 'FeatureCollection', features: [] };\n Object.values(landmarks).forEach(l => {\n let f: G.GeoFeature = {\n type: 'Feature',\n properties: {\n id: l.id,\n name: l.name,\n description: l.description,\n },\n geometry: {\n type: 'Point',\n coordinates: l.coord,\n },\n };\n col.features.push(f);\n });\n return col;\n}\n\nexport function collectionToLandmarks(col: G.GeoFeatureCollection): Landmarks\n{\n let landmarks: Landmarks = {};\n if (col && col.features) col.features.forEach((f: G.GeoFeature) => {\n if (f.geometry.type === 'Point')\n {\n let c: any = f.geometry.coordinates;\n if (Array.isArray(c) && typeof c[0] === 'number' && typeof c[1] === 'number')\n {\n let landmark: Landmark = {\n id: Util.createGuid(),\n name: G.flexName(f),\n description: f.properties.description || '',\n coord: [c[0], c[1]],\n };\n landmarks[landmark.id] = landmark;\n }\n }\n });\n return landmarks;\n}\n","export interface UserLayerMeta\n{\n createdBy: string,\n id: string,\n name?: string,\n description?: string,\n state?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean\n}\n\nexport type UserLayerMetaIndex = {\n [id: string]: UserLayerMeta\n}\n\nexport type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';\n\nexport interface UserLayerRef\n{\n id: string,\n name?: string,\n layerType?: LayerType,\n geojsonName?: string,\n blockmapName?: string,\n cacheState?: string,\n cacheDatasource?: string,\n cachePlanType?: string,\n fill: boolean,\n stroke: boolean,\n label: boolean,\n landmark: boolean,\n strokeColor: string,\n strokeOpacity: number,\n fillColor: string,\n fillOpacity: number,\n lineWidth?: number,\n}\n\nexport type UserLayerRefIndex = {\n [id: string]: UserLayerRef\n}\n","export type PackedFields = Float64Array;\n\nexport function allocPackedFields(length: number): PackedFields\n{\n let ab = new ArrayBuffer(8 * length);\n let af = new Float64Array(ab);\n return af;\n}\n\n// The first entry in the PackedFields aggregate is the count of items aggregated.\n// Treat a null instance as just a single entry with no aggregates.\nlet abZero = new ArrayBuffer(8);\nlet afZero = new Float64Array(abZero);\nafZero[0] = 0;\n\nexport function zeroPackedCopy(pf: PackedFields): PackedFields\n{\n if (pf == null) return afZero;\n let af = allocPackedFields(pf.length);\n for (let i = 0; i < af.length; i++)\n af[i] = 0;\n return af;\n}\n\nexport function packedCopy(pf: PackedFields): PackedFields\n{\n if (pf == null) return null;\n let af = allocPackedFields(pf.length);\n for (let i = 0; i < pf.length; i++)\n af[i] = pf[i];\n return af;\n}\n\nexport function aggregatePackedFields(agg: PackedFields, pf: PackedFields): PackedFields\n{\n if (agg == null || pf == null) return agg;\n if (agg.length != pf.length)\n {\n return agg; // bug, but don't crash\n //throw 'aggregatePackedFields: unexpected length mismatch';\n }\n let n = agg.length;\n for (let i = 1; i < n; i++)\n agg[i] += pf[i];\n agg[0]++; // count of number of aggregates\n return agg;\n}\n","export interface Precincts\n{\n id?: string,\n state?: string,\n datasource?: string,\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n supersets?: string[],\n subsets?: string[],\n conflicts?: string[],\n}\n\nexport type PrecinctsIndex = { [id: string]: Precincts };\n","export function reverseBlockMapping(bm: any): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = bm[blockid];\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n Object.values(rev).forEach((a: string[]) => a.sort());\n return rev;\n}\n\nexport function reverseSubMapping(bm: any, n: number): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nexport function reverseBlockgroupMapping(bm: any): any\n{\n return reverseSubMapping(bm, 12);\n}\n\nexport function reverseTractMapping(bm: any): any\n{\n return reverseSubMapping(bm, 11);\n}\n","export let Schemas: any = {\n 'users':\n {\n FileOptions: { version: 5, name: 'users', map: false },\n Schema: {\n id: 'S',\n name: 'S',\n email: 'S',\n hashPW: 'S',\n verified: 'BOOL',\n admin: 'BOOL',\n roles: 'M',\n verifyGUID: 'S',\n resetGUID: 'S',\n resetTime: 'S',\n lastActive: 'S',\n modifyTime: 'S',\n resetCount: 'N',\n accessed: 'M',\n likeID: 'S',\n visitData: 'M',\n groups: 'M',\n cache: 'N',\n cached: 'N',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { email: 'HASH' },\n { verifyGUID: 'HASH' },\n { resetGUID: 'HASH' },\n ],\n },\n 'state':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n flags: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n groups: 'M',\n xid: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { xid: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'expungestate':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n },\n KeySchema: { id: 'HASH' },\n },\n 'splitblock':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { chunkKey: 'HASH', id: 'RANGE' },\n ],\n },\n 'blockset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n chunkList: 'L',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { state: 'HASH' },\n ],\n },\n 'blockchunk':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n recompute: 'BOOL',\n splits: 'L',\n },\n },\n 'access':\n {\n FileOptions: { map: true, noobject: true },\n Schema: {\n id: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'visitor':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastModified: 'S',\n /* ... others */\n },\n KeySchema: { id: 'HASH' }\n },\n 'session':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastActive: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'userlikes':\n {},\n 'likes':\n {},\n 'comments':\n {},\n 'stats':\n {},\n 'livestats':\n {},\n 'workqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { priority: 'HASH' },\n ],\n },\n 'failqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n failType: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'layer':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'groups':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'groupsusers':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n uid: 'S',\n flags: 'N',\n },\n KeySchema: { id: 'HASH', uid: 'RANGE' },\n },\n 'groupsmaps':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'notifications':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n createdBy: 'S',\n message: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n },\n 'cull':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n key: 'S',\n bucket: 'S',\n expires: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'precincts':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n}\n","import * as geojson from 'geojson';\nimport { Util, Poly, G } from '@dra2020/baseclient';\nimport * as DT from './vfeature';\nimport * as PF from './packedfields';\n\n// Given the topology for a precinct and a split, compute the feature data for the virtual feature.\n//\n\nexport function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, mbm: G.MultiBlockMapping): G.GeoFeature\n{\n let f = Poly.topoMerge(topoPrecinct, split.blocks);\n if (!f) return f;\n\n let contiguity = new Util.IndexedArray();\n let block_contiguity = new Util.IndexedArray();\n split.blocks.forEach(blockid => {\n let b = topoPrecinct.objects[blockid];\n if (b.properties.datasets)\n {\n if (! f.properties.datasets)\n f.properties.datasets = {};\n Util.deepAccum(f.properties.datasets, b.properties.datasets);\n }\n if (b.properties.packedFields)\n {\n if (! f.properties.packedFields)\n {\n f.properties.packedFields = PF.packedCopy(b.properties.packedFields);\n f.properties.getDatasetField = b.properties.getDatasetField;\n }\n else\n PF.aggregatePackedFields(f.properties.packedFields, b.properties.packedFields);\n }\n if (b.properties.contiguity)\n {\n b.properties.contiguity.forEach((id: string) => {\n if (id === 'OUT_OF_STATE')\n contiguity.set(id);\n else\n mbm.multimap(id).forEach(geoid => contiguity.set(geoid));\n });\n b.properties.contiguity.forEach((id: string) => {\n block_contiguity.set(id);\n });\n }\n });\n split.blocks.forEach(blockid => block_contiguity.clear(blockid));\n f.properties.id = DT.splitToVgeoid(split);\n f.properties.name = `Part of ${split.geoid} from ${split.blocks.length} blocks`;\n f.properties.contiguity = contiguity.asArray();\n f.properties.block_contiguity = block_contiguity.asArray();\n f.properties.blocks = split.blocks;\n f.properties.mbmstamp = mbm.stamp;\n return f;\n}\n","import * as DT from './dra-types';\n\nexport interface StateYearInfo\n{\n population: number,\n congress: {nDistricts: number}, \n upper: {nDistricts: number}, \n lower?: {nDistricts: number}, \n}\n\nexport interface StateInfo\n{\n '2010_VD': StateYearInfo,\n '2020_VD': StateYearInfo,\n}\n\nexport const StatePlanInfoMap: {[key: string]: StateInfo} = {\n \"AL\": {\"2010_VD\": {population: 4779736, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}, \"2020_VD\": { population: 0, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}},\n \"AK\": {\"2010_VD\": {population: 710231, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}},\n \"AZ\": {\"2010_VD\": {population: 6392017, congress: {nDistricts: 9}, upper: {nDistricts: 30}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 30}}},\n \"AR\": {\"2010_VD\": {population: 2915918, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}},\n \"CA\": {\"2010_VD\": {population: 37253956, congress: {nDistricts: 53}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}, \"2020_VD\": {population: 6, congress: {nDistricts: 52}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}},\n \"CO\": {\"2010_VD\": {population: 5029196, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}},\n \"CT\": {\"2010_VD\": {population: 3574097, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}},\n \"DE\": {\"2010_VD\": {population: 897934, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}},\n \"FL\": {\"2010_VD\": {population: 18801310, congress: {nDistricts: 27}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 28}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}},\n \"GA\": {\"2010_VD\": {population: 9687653, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}},\n \"HI\": {\"2010_VD\": {population: 1360301, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}},\n \"ID\": {\"2010_VD\": {population: 1567582, congress: {nDistricts: 2}, upper: {nDistricts: 35}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}}},\n \"IL\": {\"2010_VD\": {population: 12830632, congress: {nDistricts: 18}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}},\n \"IN\": {\"2010_VD\": {population: 6483802, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"IA\": {\"2010_VD\": {population: 3046355, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"KS\": {\"2010_VD\": {population: 2853118, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}},\n \"KY\": {\"2010_VD\": {population: 4339367, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}},\n \"LA\": {\"2010_VD\": {population: 4533372, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}},\n \"ME\": {\"2010_VD\": {population: 1328361, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}},\n \"MD\": {\"2010_VD\": {population: 5773552, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}},\n \"MA\": {\"2010_VD\": {population: 6547629, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}},\n \"MI\": {\"2010_VD\": {population: 9883640, congress: {nDistricts: 14}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}, \"2020_VD\": {population: 6, congress: {nDistricts: 13}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}},\n \"MN\": {\"2010_VD\": {population: 5303925, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}},\n \"MS\": {\"2010_VD\": {population: 2967297, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}},\n \"MO\": {\"2010_VD\": {population: 5988927, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}},\n \"MT\": {\"2010_VD\": {population: 989415, congress: {nDistricts: 1}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"NE\": {\"2010_VD\": {population: 1826341, congress: {nDistricts: 3}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 49}}},\n \"NV\": {\"2010_VD\": {population: 2700551, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}},\n \"NH\": {\"2010_VD\": {population: 1316470, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 161}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 164}}},\n \"NJ\": {\"2010_VD\": {population: 8791894, congress: {nDistricts: 12}, upper: {nDistricts: 40}}, \"2020_VD\": {population: 6, congress: {nDistricts: 12}, upper: {nDistricts: 40}}},\n \"NM\": {\"2010_VD\": {population: 2059179, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}},\n \"NY\": {\"2010_VD\": {population: 19378102, congress: {nDistricts: 27}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 26}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}},\n \"NC\": {\"2010_VD\": {population: 9535483, congress: {nDistricts: 13}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}},\n \"ND\": {\"2010_VD\": {population: 672591, congress: {nDistricts: 1}, upper: {nDistricts: 47}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 47}, lower: {nDistricts: 49}}},\n \"OH\": {\"2010_VD\": {population: 11536504, congress: {nDistricts: 16}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 15}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"OK\": {\"2010_VD\": {population: 3751351, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}},\n \"OR\": {\"2010_VD\": {population: 3831074, congress: {nDistricts: 5}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}},\n \"PA\": {\"2010_VD\": {population: 12702379, congress: {nDistricts: 18}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}},\n \"RI\": {\"2010_VD\": {population: 1052567, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}},\n \"SC\": {\"2010_VD\": {population: 4625364, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}, \"2020_VD\": {population: 6, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}},\n \"SD\": {\"2010_VD\": {population: 814180, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}},\n \"TN\": {\"2010_VD\": {population: 6346105, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"TX\": {\"2010_VD\": {population: 25145561, congress: {nDistricts: 36}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 38}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}},\n \"UT\": {\"2010_VD\": {population: 2763885, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}},\n \"VT\": {\"2010_VD\": {population: 625741, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}},\n \"VA\": {\"2010_VD\": {population: 8001024, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}},\n \"WA\": {\"2010_VD\": {population: 6724540, congress: {nDistricts: 10}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 10}, upper: {nDistricts: 49}}},\n \"WV\": {\"2010_VD\": {population: 1852994, congress: {nDistricts: 3}, upper: {nDistricts: 17}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 17}, lower: {nDistricts: 100}}},\n \"WI\": {\"2010_VD\": {population: 5686986, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"WY\": {\"2010_VD\": {population: 563626, congress: {nDistricts: 1}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 31}, lower: {nDistricts: 62}}},\n \"DC\": {\"2010_VD\": {population: 601723, congress: {nDistricts: 1}, upper: {nDistricts: 8}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 8}}},\n \"PR\": {\"2010_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}},\n};\n\nexport function hasPlanType(stateCode: string, planType: DT.PlanType, is2020?: boolean): boolean\n{\n // handle unicameral states (hence no lower house districts)\n if ((stateCode === 'NE' || stateCode === 'DC') && planType === 'lower')\n return false;\n\n // handle states with only 1 congressional district (hence no plan)\n if (planType === 'congress' &&\n (stateCode === 'AK' || stateCode === 'DE' || stateCode === 'ND' || stateCode === 'SD' || stateCode === 'VT' || stateCode === 'WY' || stateCode === 'DC' ||\n (stateCode === 'MT' && !is2020)))\n {\n return false;\n }\n\n if (planType === 'county' || planType === 'city')\n return false;\n\n return true;\n}\n\nexport function hasOneLegislativePlanBothHouses(stateCode: string): boolean\n{\n return stateCode === 'AZ' || stateCode === 'ID' || stateCode === 'NJ' || stateCode === 'WA';\n}\n\nexport function getPlanDistrictCount(stateCode: string, planType: DT.PlanType, datasource: string): number\n{\n if (planType === 'coi')\n return 1;\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD') || (planType !== 'congress' && planType !== 'upper' && planType !== 'lower'))\n return 0;\n \n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo && stateYearInfo[planType] ? stateYearInfo[planType]['nDistricts'] : 0;\n}\n\n// TODO: This is not currently used (3/2/21). 2020_VD population numbers are not set; update them when apportionment happens \nexport function getStateYearTotalPop(stateCode: string, datasource: string): number\n{\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD'))\n return 0;\n\n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo ? stateYearInfo['population'] : 0;\n}\n\nexport function inferPlanType(stateCode: string, datasource: string, nDistricts: number, flex?: boolean): DT.PlanType\n{\n // Intended for datasource === '2020_VD'\n const congressCount: number = getPlanDistrictCount(stateCode, 'congress', datasource);\n const upperCount: number = getPlanDistrictCount(stateCode, 'upper', datasource);\n const lowerCount: number = getPlanDistrictCount(stateCode, 'lower', datasource);\n return (\n ((flex && nDistricts <= congressCount + 2 && nDistricts >= congressCount - 3) || nDistricts == congressCount) ? 'congress' :\n (nDistricts == upperCount) ? 'upper' :\n (nDistricts == lowerCount) ? 'lower' :\n 'other');\n}\n","// In constrast to logging, the stats manager is responsible for tracking live server status.\n// The results are stored in a compact database record which can be easily queried for current\n// status. Each server instance maintains its own field in the overall \"values\" record in the\n// stats database. The reporting tool aggregates all instances to report overall server activity.\n//\n// There are basically three kinds of values:\n// Sum - we want to sum the value across all server instances (e.g. number of connnected clients)\n// Avg - we just take average across all server instances (e.g. memory heap size)\n// Rate - we want to track the rate of some activity over some time period\n//\n\nexport type ValType = number;\nexport const ValTypeSum = 0;\nexport const ValTypeAvg = 1;\nexport const ValTypeRate = 2;\n\nconst ExpiryAge = 1000 * 60 * 60 * 24; // throw away instance record after this time period\n\nexport function statExpiryTime(): string\n{\n let time = new Date();\n time.setTime(time.getTime() + ExpiryAge);\n return time.toJSON();\n}\n\nexport interface StatRecord\n{\n id: string;\n production: boolean;\n expires: string;\n time: string;\n index: StatEntryIndex;\n}\n\nexport type StatEntry = StatValue | StatRate;\n\nexport type StatEntryIndex = { [name: string]: StatEntry };\n\nexport interface StatValue\n{\n valType?: ValType;\n cur?: number;\n min?: number;\n max?: number;\n tot?: number;\n cnt?: number;\n}\n\nexport interface StatRate\n{\n valType?: ValType;\n thisMin?: number;\n lastMin?: number;\n thisHour?: number;\n lastHour?: number;\n thisDay?: number;\n lastDay?: number;\n}\n\n// Aggregate running value. This applies both in memory (logging multiple times before\n// saving to database) as well as aggregating into an instance structure in the DB.\n\nexport function statValueRecord(sv: StatValue, cur: number, valType: ValType): StatValue\n{\n if (sv === undefined) sv = {};\n if (sv.min === undefined || cur < sv.min)\n sv.min = cur;\n if (sv.max === undefined || cur > sv.max)\n sv.max = cur;\n sv.cur = cur;\n sv.valType = valType;\n return sv;\n}\n\nexport function statRateIncr(sr: StatRate, incr: number = 1): StatRate\n{\n if (sr == null) sr = {};\n sr.valType = ValTypeRate;\n sr.thisMin = sr.thisMin === undefined ? incr : sr.thisMin+incr;\n sr.thisHour = sr.thisHour === undefined ? incr : sr.thisHour+incr;\n sr.thisDay = sr.thisDay === undefined ? incr : sr.thisDay+incr;\n return sr;\n}\n\nexport const OneMinute = 1000 * 60;\nexport const OneHour = OneMinute * 60;\nexport const OneDay = OneHour * 24;\n\nexport function statRateRollover(sr: StatRate, period: number): void\n{\n if ((period % OneMinute) == 0)\n {\n sr.lastMin = sr.thisMin;\n sr.thisMin = 0;\n }\n if ((period % OneHour) == 0)\n {\n sr.lastHour = sr.thisHour;\n sr.thisHour = 0;\n }\n if ((period % OneDay) == 0)\n {\n sr.lastDay = sr.thisDay;\n sr.thisDay = 0;\n }\n}\n\nexport function statEntryIndexMerge(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n\n // We just discard and replace old rate information\n Object.keys(accum).forEach((p: string) => { if (accum[p].valType == ValTypeRate) delete accum[p] });\n\n // But merge in all the other values\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = se;\n else\n {\n let sv = se as StatValue;\n accum[p] = statValueRecord(se as StatValue, sv.cur, sv.valType);\n }\n });\n return accum;\n}\n\nexport function statEntryIndexRollover(si: StatEntryIndex, period: number): void\n{\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n statRateRollover(se as StatRate, period);\n });\n}\n\nexport function statRecordMerge(accum: StatRecord, si: StatRecord): StatRecord\n{\n if (accum == null)\n accum = { id: si.id, production: si.production, time: si.time, expires: si.expires, index: {} };\n accum.expires = si.expires;\n accum.time = si.time;\n statEntryIndexMerge(accum.index, si.index);\n return accum;\n}\n\n// Accumulate a set of values together (e.g. from multiple running instances)\n// for reporting current state.\n//\n\nexport function statValueAccum(accum: StatValue, sv: StatValue): StatEntry\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sv.valType;\n }\n if (accum.min === undefined || sv.min < accum.min)\n accum.min = sv.min;\n if (accum.max === undefined || sv.max > accum.max)\n accum.max = sv.max;\n if (accum.valType === undefined)\n accum.valType = sv.valType;\n if (accum.valType == ValTypeSum)\n accum.cur = (accum.cur === undefined ? sv.cur : accum.cur+sv.cur);\n else if (accum.valType == ValTypeAvg)\n {\n accum.tot = (accum.tot === undefined ? 0 : accum.tot) + sv.cur;\n accum.cnt = (accum.cnt === undefined ? 0 : accum.cnt) + 1;\n accum.cur = accum.tot / accum.cnt;\n }\n return accum;\n}\n\nexport function statRateAccum(accum: StatRate, sr: StatRate): StatRate\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sr.valType;\n }\n accum.thisMin = accum.thisMin === undefined ? sr.thisMin : (accum.thisMin + (sr.thisMin === undefined ? 0 : sr.thisMin));\n accum.lastMin = accum.lastMin === undefined ? sr.lastMin : (accum.lastMin + (sr.lastMin === undefined ? 0 : sr.lastMin));\n accum.thisHour = accum.thisHour === undefined ? sr.thisHour : (accum.thisHour + (sr.thisHour === undefined ? 0 : sr.thisHour));\n accum.lastHour = accum.lastHour === undefined ? sr.lastHour : (accum.lastHour + (sr.lastHour === undefined ? 0 : sr.lastHour));\n accum.thisDay = accum.thisDay === undefined ? sr.thisDay : (accum.thisDay + (sr.thisDay === undefined ? 0 : sr.thisDay));\n accum.lastDay = accum.lastDay === undefined ? sr.lastDay : (accum.lastDay + (sr.lastDay === undefined ? 0 : sr.lastDay));\n return accum;\n}\n\nexport function statIndexAccum(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = statRateAccum(accum[p] as StatRate, se as StatRate);\n else\n accum[p] = statValueAccum(accum[p] as StatValue, se as StatValue);\n });\n return accum;\n}\n","// Public libraries\nimport * as Hash from 'object-hash';\n\nexport interface SplitBlock\n{\n id?: string;\n chunkKey?: string;\n chunkList?: string[];\n chunk?: string;\n state: string;\n datasource: string;\n geoid: string;\n blocks?: string[];\n bitset?: string;\n}\n\nexport interface SplitChunk\n{\n id?: string;\n recompute?: boolean;\n splits?: string[];\n}\n\nexport type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };\n\n// Canonical hashing of custom precinct\nexport function chash(o: any): string\n{\n return Hash(o, { respectType: false, unorderedArrays: true, unorderedObjects: true,\n excludeKeys: (k: string) => (k === 'id') });\n}\n\n// Is custom feature - 5 digit county id + 'cust' + hash\nlet reC = /^\\d\\d\\d\\d\\dcust.*$/;\n\nexport function isCfeature(id: string): boolean\n{\n return id && reC.test(id);\n}\n\n// Canonical hashing of splitblock data\nexport function vhash(o: any): string\n{\n return Hash(o,\n { respectType: false,\n unorderedArrays: true,\n unorderedObjects: true,\n // basically, include (state,datasource,geoid,blocks[])\n excludeKeys: (k: string) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')\n });\n}\n\n// old style \"vfeature_[geoid]_[numericchunk]_[id]\"\n// new style \"B_[geoid]_bitset\"\n\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let reNew = /^B_([^_]*)_.*/;\n let reOld = /^vfeature_([^_]*)_.*/;\n let a = reNew.exec(vgeoid);\n if (a == null || a.length != 2)\n {\n a = reOld.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n }\n return a[1];\n}\n\nexport function splitToVgeoid(s: SplitBlock): string\n{\n // Newstyle\n if (s.bitset)\n return `B_${s.geoid}_${s.bitset}`;\n\n // oldstyle\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = '0';\n return `vfeature_${s.geoid}_${s.chunk}_${s.id}`;\n}\n\nexport function splitCommitted(s: SplitBlock): boolean\n{\n return !!s.id || !!s.bitset;\n}\n\nexport function vgeoidToChunk(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n // the contents are chunked into a file of form \"vfeature_chunk_[chunkid]\"\n // So extract the chunk ID and download that.\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = `vfeature_chunk_${a[2]}`;\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function vgeoidToSplit(state: string, datasource: string, vgeoid: string): SplitBlock\n{\n let reNew = /^B_([^_]*)_(.*)$/;\n let reOld = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = reNew.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], bitset: a[2] };\n a = reOld.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], id: a[3], chunk: a[2], blocks: null };\n return null;\n}\n\nexport function vgeoidToHash(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = a[3];\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function isVfeature(geoid: string): boolean\n{\n return geoid.indexOf('B') === 0 || geoid.indexOf('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.bitset)\n return null;\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;\n}\n\nexport function cacheKeyToSplit(s: string): SplitBlock\n{\n let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/\n let a = re.exec(s);\n if (a == null) return null;\n // 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash\n return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };\n}\n\nexport function splitToChunkKey(s: SplitBlock): string\n{\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_chunk_${s.chunk}.geojson`;\n}\n\nexport function splitToPrefix(s: SplitBlock): string\n{\n if (s.blocks === undefined)\n {\n let re = /_([^_]*)_(.*)_vfeature.*\\.geojson$/;\n let a = re.exec(s.id);\n if (a && a.length == 3)\n return `_${a[1]}_${a[2]}`;\n return s.id;\n }\n return `_${s.state}_${s.datasource}`;\n}\n\nexport function cacheKeysToChunkHash(keys: string[]): string\n{\n return vhash(keys);\n}\n","export type WorkQueueFailure = 'hard' | 'soft';\n\nexport interface WorkQueueItem\n{\n id: string,\n functionName: string,\n params: any,\n priority: number,\n failType?: WorkQueueFailure,\n}\n","module.exports = require(\"@dra2020/baseclient\");","module.exports = require(\"object-hash\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./lib/all.ts\");\n",""],"names":[],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dra2020/dra-types",
3
- "version": "1.8.86",
3
+ "version": "1.8.87",
4
4
  "description": "Shared types used between client, server and tools.",
5
5
  "main": "dist/dra-types.js",
6
6
  "types": "./dist/all.d.ts",
@@ -24,18 +24,18 @@
24
24
  "homepage": "https://github.com/dra2020/dra-types#readme",
25
25
  "devDependencies": {
26
26
  "@types/geojson": "^7946.0.10",
27
- "@types/node": "^18.11.11",
28
- "@types/object-hash": "^2.2.1",
29
- "source-map-loader": "^4.0.1",
30
- "ts-loader": "^9.4.2",
27
+ "@types/node": "^20.11.30",
28
+ "@types/object-hash": "^3.0.6",
29
+ "source-map-loader": "^5.0.0",
30
+ "ts-loader": "^9.5.1",
31
31
  "tsify": "^5.0.4",
32
- "typescript": "^4.9.3",
33
- "webpack": "^5.75.0",
34
- "webpack-cli": "^5.0.1"
32
+ "typescript": "^5.4.3",
33
+ "webpack": "^5.91.0",
34
+ "webpack-cli": "^5.1.4"
35
35
  },
36
36
  "dependencies": {
37
- "@dra2020/baseclient": "^1.0.93",
37
+ "@dra2020/baseclient": "^1.0.125",
38
38
  "geojson": "^0.5.0",
39
- "object-hash": "^2.2.0"
39
+ "object-hash": "^3.0.0"
40
40
  }
41
41
  }