@dra2020/dra-types 1.6.7 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dra-types.js +43 -10
- package/dist/dra-types.js.map +1 -1
- package/dist/vfeature.d.ts +7 -0
- package/lib/csv.ts +1 -1
- package/lib/schemas.ts +24 -0
- package/lib/vfeature.ts +19 -1
- package/package.json +2 -2
package/dist/dra-types.js
CHANGED
|
@@ -413,7 +413,7 @@ lum.forEach((n) => { exports.IntensityBackgroundColor.push(`rgba(${n}, ${n}, ${n
|
|
|
413
413
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
414
414
|
exports.isValidStateNameForUrl = exports.geoidToState = exports.StateCodeToStateId = exports.StateIdToStateCode = exports.blockmapToVTDmap = exports.blockmapToState = exports.parseCSVLine = exports.canonicalDistrictIDOrdering = exports.canonicalDistrictIDGapFill = exports.canonicalDistrictIDFromNumber = exports.canonicalNumericFromDistrictID = exports.canonicalSortingDistrictID = exports.canonicalDistrictID = void 0;
|
|
415
415
|
// Public libraries
|
|
416
|
-
const
|
|
416
|
+
const baseclient_1 = __webpack_require__(/*! @dra2020/baseclient */ "@dra2020/baseclient");
|
|
417
417
|
let reNumeric = /^(\D*)(\d*)(\D*)$/;
|
|
418
418
|
let reDistrictNumber = /^\d+$/;
|
|
419
419
|
let reDistrictNumeric = /^\d/;
|
|
@@ -614,8 +614,8 @@ function blockmapToVTDmap(blockMap, stateMap) {
|
|
|
614
614
|
for (let geoid in bmGather)
|
|
615
615
|
if (bmGather.hasOwnProperty(geoid)) {
|
|
616
616
|
let districtToBlocks = bmGather[geoid];
|
|
617
|
-
if (Util.countKeys(districtToBlocks) == 1) {
|
|
618
|
-
res.outMap[geoid] = Util.nthKey(districtToBlocks);
|
|
617
|
+
if (baseclient_1.Util.countKeys(districtToBlocks) == 1) {
|
|
618
|
+
res.outMap[geoid] = baseclient_1.Util.nthKey(districtToBlocks);
|
|
619
619
|
}
|
|
620
620
|
else {
|
|
621
621
|
for (let districtID in districtToBlocks)
|
|
@@ -951,6 +951,28 @@ exports.Schemas = {
|
|
|
951
951
|
{ chunkKey: 'HASH', id: 'RANGE' },
|
|
952
952
|
],
|
|
953
953
|
},
|
|
954
|
+
'blockset': {
|
|
955
|
+
FileOptions: { map: true },
|
|
956
|
+
Schema: {
|
|
957
|
+
id: 'S',
|
|
958
|
+
chunk: 'S',
|
|
959
|
+
chunkKey: 'S',
|
|
960
|
+
chunkList: 'L',
|
|
961
|
+
state: 'S',
|
|
962
|
+
datasource: 'S',
|
|
963
|
+
geoid: 'S',
|
|
964
|
+
blocks: 'L'
|
|
965
|
+
},
|
|
966
|
+
KeySchema: { id: 'HASH' },
|
|
967
|
+
},
|
|
968
|
+
'blockchunk': {
|
|
969
|
+
FileOptions: { map: true },
|
|
970
|
+
Schema: {
|
|
971
|
+
id: 'S',
|
|
972
|
+
recompute: 'BOOL',
|
|
973
|
+
splits: 'L',
|
|
974
|
+
},
|
|
975
|
+
},
|
|
954
976
|
'access': {
|
|
955
977
|
FileOptions: { map: true, noobject: true },
|
|
956
978
|
Schema: {
|
|
@@ -1177,14 +1199,16 @@ exports.statIndexAccum = statIndexAccum;
|
|
|
1177
1199
|
|
|
1178
1200
|
|
|
1179
1201
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
1180
|
-
exports.cacheKeysToChunkHash = exports.splitToPrefix = exports.splitToChunkKey = exports.splitToCacheKey = exports.isVfeature = exports.vgeoidToHash = exports.vgeoidToChunk = exports.vgeoidToGeoid = void 0;
|
|
1202
|
+
exports.cacheKeysToChunkHash = exports.splitToPrefix = exports.splitToChunkKey = exports.cacheKeyToSplit = exports.splitToCacheKey = exports.isVfeature = exports.vgeoidToHash = exports.vgeoidToChunk = exports.vgeoidToGeoid = void 0;
|
|
1181
1203
|
// Public libraries
|
|
1182
1204
|
const Hash = __webpack_require__(/*! object-hash */ "object-hash");
|
|
1183
1205
|
// Canonical hashing of splitblock data
|
|
1184
1206
|
function hash(o) {
|
|
1185
1207
|
return Hash(o, { respectType: false,
|
|
1186
1208
|
unorderedArrays: true,
|
|
1187
|
-
unorderedObjects: true,
|
|
1209
|
+
unorderedObjects: true,
|
|
1210
|
+
// basically, include (state,datasource,geoid,blocks[])
|
|
1211
|
+
excludeKeys: (k) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')
|
|
1188
1212
|
});
|
|
1189
1213
|
}
|
|
1190
1214
|
function vgeoidToGeoid(vgeoid) {
|
|
@@ -1232,6 +1256,15 @@ function splitToCacheKey(s) {
|
|
|
1232
1256
|
return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;
|
|
1233
1257
|
}
|
|
1234
1258
|
exports.splitToCacheKey = splitToCacheKey;
|
|
1259
|
+
function cacheKeyToSplit(s) {
|
|
1260
|
+
let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/;
|
|
1261
|
+
let a = re.exec(s);
|
|
1262
|
+
if (a == null)
|
|
1263
|
+
return null;
|
|
1264
|
+
// 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash
|
|
1265
|
+
return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };
|
|
1266
|
+
}
|
|
1267
|
+
exports.cacheKeyToSplit = cacheKeyToSplit;
|
|
1235
1268
|
function splitToChunkKey(s) {
|
|
1236
1269
|
if (s.chunk === undefined)
|
|
1237
1270
|
s.chunk = "0";
|
|
@@ -1257,13 +1290,13 @@ exports.cacheKeysToChunkHash = cacheKeysToChunkHash;
|
|
|
1257
1290
|
|
|
1258
1291
|
/***/ }),
|
|
1259
1292
|
|
|
1260
|
-
/***/ "@dra2020/
|
|
1261
|
-
|
|
1262
|
-
!*** external "@dra2020/
|
|
1263
|
-
|
|
1293
|
+
/***/ "@dra2020/baseclient":
|
|
1294
|
+
/*!**************************************!*\
|
|
1295
|
+
!*** external "@dra2020/baseclient" ***!
|
|
1296
|
+
\**************************************/
|
|
1264
1297
|
/***/ ((module) => {
|
|
1265
1298
|
|
|
1266
|
-
module.exports = require("@dra2020/
|
|
1299
|
+
module.exports = require("@dra2020/baseclient");;
|
|
1267
1300
|
|
|
1268
1301
|
/***/ }),
|
|
1269
1302
|
|
package/dist/dra-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/all.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/colordata.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/gencolor.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/external \"@dra2020/util\"","webpack://dra-types/external \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/webpack/startup"],"names":[],"mappings":"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","file":"dra-types.js","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, function() {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './colordata';\nexport * from './gencolor';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\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 '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 }\n","export const DefaultColorNames: string[] = \r\n[\r\n'GhostWhite',\r\n'Blue',\r\n'Green',\r\n'DarkMagenta',\r\n'Red',\r\n'Gold',\r\n'Teal',\r\n'Chocolate', //'DarkGray', // \r\n'SlateBlue',\r\n'Cyan',\r\n'DeepPink',\r\n'Chartreuse',\r\n'CornflowerBlue',\r\n'DarkSalmon',\r\n'Olive',\r\n'DarkOrange',\r\n'Lime',\r\n'DarkSlateBlue',\r\n'Yellow',\r\n'YellowGreen',\r\n'Pink',\r\n'Maroon',\r\n'Sienna',\r\n'Aquamarine',\r\n'Indigo',\r\n'PaleVioletRed',\r\n'Navy', // 'Gray', // \r\n'SpringGreen',\r\n'Plum',\r\n'DarkSeaGreen',\r\n'LightCoral',\r\n'Khaki',\r\n'OrangeRed',\r\n'RoyalBlue',\r\n'LimeGreen',\r\n'DarkOrchid',\r\n'Orange',\r\n'DodgerBlue',\r\n'MediumAquamarine',\r\n'Moccasin',\r\n'Firebrick',\r\n'LightSteelBlue',\r\n'LawnGreen',\r\n'Magenta',\r\n'MediumVioletRed',\r\n'Turquoise',\r\n'Tomato',\r\n'Thistle',\r\n'SandyBrown',\r\n'IndianRed',\r\n'PowderBlue',\r\n'SaddleBrown',\r\n'OliveDrab',\r\n'Fuchsia', // 'Gainsboro', //\r\n'PeachPuff',\r\n'RosyBrown',\r\n];\r\n\r\nexport interface ColorLookup\r\n{\r\n [key: string]: string;\r\n}\r\n\r\nexport const ColorValues: ColorLookup =\r\n{\r\n 'AliceBlue': '#F0F8FF',\r\n 'AntiqueWhite': '#FAEBD7',\r\n 'Aqua': '#00FFFF',\r\n 'Aquamarine': '#7FFFD4',\r\n 'Azure': '#F0FFFF',\r\n 'Beige': '#F5F5DC',\r\n 'Bisque': '#FFE4C4',\r\n 'Black': '#000000',\r\n 'BlanchedAlmond': '#FFEBCD',\r\n 'Blue': '#0000FF',\r\n 'BlueViolet': '#8A2BE2',\r\n 'Brown': '#A52A2A',\r\n 'BurlyWood': '#DEB887',\r\n 'CadetBlue': '#5F9EA0',\r\n 'Chartreuse': '#7FFF00',\r\n 'Chocolate': '#D2691E',\r\n 'Coral': '#FF7F50',\r\n 'CornflowerBlue': '#6495ED',\r\n 'Cornsilk': '#FFF8DC',\r\n 'Crimson': '#DC143C',\r\n 'Cyan': '#00FFFF',\r\n 'DarkBlue': '#00008B',\r\n 'DarkCyan': '#008B8B',\r\n 'DarkGoldenrod': '#B8860B',\r\n 'DarkGray': '#A9A9A9',\r\n 'DarkGreen': '#006400',\r\n 'DarkKhaki': '#BDB76B',\r\n 'DarkMagenta': '#8B008B',\r\n 'DarkOliveGreen': '#556B2F',\r\n 'DarkOrange': '#FF8C00',\r\n 'DarkOrchid': '#9932CC',\r\n 'DarkRed': '#8B0000',\r\n 'DarkSalmon': '#E9967A',\r\n 'DarkSeaGreen': '#8FBC8F',\r\n 'DarkSlateBlue': '#483D8B',\r\n 'DarkSlateGray': '#2F4F4F',\r\n 'DarkTurquoise': '#00CED1',\r\n 'DarkViolet': '#9400D3',\r\n 'DeepPink': '#FF1493',\r\n 'DeepSkyBlue': '#00BFFF',\r\n 'DimGray': '#696969',\r\n 'DodgerBlue': '#1E90FF',\r\n 'Firebrick': '#B22222',\r\n 'FloralWhite': '#FFFAF0',\r\n 'ForestGreen': '#228B22',\r\n 'Fuchsia': '#FF00FF',\r\n 'Gainsboro': '#DCDCDC',\r\n 'GhostWhite': '#F8F8FF',\r\n 'Gold': '#FFD700',\r\n 'Goldenrod': '#DAA520',\r\n 'Gray': '#808080',\r\n 'Green': '#008000',\r\n 'GreenYellow': '#ADFF2F',\r\n 'Honeydew': '#F0FFF0',\r\n 'HotPink': '#FF69B4',\r\n 'IndianRed': '#CD5C5C',\r\n 'Indigo': '#4B0082',\r\n 'Ivory': '#FFFFF0',\r\n 'Khaki': '#F0E68C',\r\n 'Lavender': '#E6E6FA',\r\n 'LavenderBlush': '#FFF0F5',\r\n 'LawnGreen': '#7CFC00',\r\n 'LemonChiffon': '#FFFACD',\r\n 'LightBlue': '#ADD8E6',\r\n 'LightCoral': '#F08080',\r\n 'LightCyan': '#E0FFFF',\r\n 'LightGoldenrodYellow': '#FAFAD2',\r\n 'LightGray': '#D3D3D3',\r\n 'LightGreen': '#90EE90',\r\n 'LightPink': '#FFB6C1',\r\n 'LightSalmon': '#FFA07A',\r\n 'LightSeaGreen': '#20B2AA',\r\n 'LightSkyBlue': '#87CEFA',\r\n 'LightSlateGray': '#778899',\r\n 'LightSteelBlue': '#B0C4DE',\r\n 'LightYellow': '#FFFFE0',\r\n 'Lime': '#00FF00',\r\n 'LimeGreen': '#32CD32',\r\n 'Linen': '#FAF0E6',\r\n 'Magenta': '#FF00FF',\r\n 'Maroon': '#800000',\r\n 'MediumAquamarine': '#66CDAA',\r\n 'MediumBlue': '#0000CD',\r\n 'MediumOrchid': '#BA55D3',\r\n 'MediumPurple': '#9370DB',\r\n 'MediumSeaGreen': '#3CB371',\r\n 'MediumSlateBlue': '#7B68EE',\r\n 'MediumSpringGreen': '#00FA9A',\r\n 'MediumTurquoise': '#48D1CC',\r\n 'MediumVioletRed': '#C71585',\r\n 'MidnightBlue': '#191970',\r\n 'MintCream': '#F5FFFA',\r\n 'MistyRose': '#FFE4E1',\r\n 'Moccasin': '#FFE4B5',\r\n 'NavajoWhite': '#FFDEAD',\r\n 'Navy': '#000080',\r\n 'OldLace': '#FDF5E6',\r\n 'Olive': '#808000',\r\n 'OliveDrab': '#6B8E23',\r\n 'Orange': '#FFA500',\r\n 'OrangeRed': '#FF4500',\r\n 'Orchid': '#DA70D6',\r\n 'PaleGoldenrod': '#EEE8AA',\r\n 'PaleGreen': '#98FB98',\r\n 'PaleTurquoise': '#AFEEEE',\r\n 'PaleVioletRed': '#DB7093',\r\n 'PapayaWhip': '#FFEFD5',\r\n 'PeachPuff': '#FFDAB9',\r\n 'Peru': '#CD853F',\r\n 'Pink': '#FFC0CB',\r\n 'Plum': '#DDA0DD',\r\n 'PowderBlue': '#B0E0E6',\r\n 'Purple': '#800080',\r\n 'Red': '#FF0000',\r\n 'RosyBrown': '#BC8F8F',\r\n 'RoyalBlue': '#4169E1',\r\n 'SaddleBrown': '#8B4513',\r\n 'Salmon': '#FA8072',\r\n 'SandyBrown': '#F4A460',\r\n 'SeaGreen': '#2E8B57',\r\n 'SeaShell': '#FFF5EE',\r\n 'Sienna': '#A0522D',\r\n 'Silver': '#C0C0C0',\r\n 'SkyBlue': '#87CEEB',\r\n 'SlateBlue': '#6A5ACD',\r\n 'SlateGray': '#708090',\r\n 'Snow': '#FFFAFA',\r\n 'SpringGreen': '#00FF7F',\r\n 'SteelBlue': '#4682B4',\r\n 'Tan': '#D2B48C',\r\n 'Teal': '#008080',\r\n 'Thistle': '#D8BFD8',\r\n 'Tomato': '#FF6347',\r\n 'Turquoise': '#40E0D0',\r\n 'Violet': '#EE82EE',\r\n 'Wheat': '#F5DEB3',\r\n 'White': '#FFFFFF',\r\n 'WhiteSmoke': '#F5F5F5',\r\n 'Yellow': '#FFFF00',\r\n 'YellowGreen': '#9ACD32',\r\n};\r\n\r\nexport const ColorBySolidWhite = 0;\r\nexport const ColorBySolidBlack = 1;\r\nexport const ColorBySolidHispanic = 2;\r\nexport const ColorBySolidAsian = 3;\r\nexport const ColorByMostlyWhite = 4;\r\nexport const ColorByMostlyBlack = 5;\r\nexport const ColorByMostlyHispanic = 6;\r\nexport const ColorByMostlyAsian = 7;\r\nexport const ColorByMostlyNative = 8;\r\nexport const ColorByMix = 9;\r\nexport const ColorByHispanicWhite = 10;\r\nexport const ColorByBlackWhite = 11;\r\nexport const ColorByHispanicBlack = 12;\r\nexport const ColorByAsianWhite = 13;\r\nexport const ColorByAsianHispanic = 14;\r\nexport const ColorByBlackAsian = 15;\r\n\r\nexport const EthnicBackgroundColor: string[] = [\r\n '#c0392b', // solid white\r\n '#3498db', // solid black\r\n '#2ecc71', // solid hispanic\r\n '#9b59b6', // solid asian\r\n '#d98880', // mostly white\r\n '#aed6f1', // mostly black\r\n '#abebc6', // mostly hispanic\r\n '#bb8fce', // mostly asian\r\n '#f1c40f', // mostly native\r\n '#aab7b8', // mix\r\n '#d5f5e3', // hispanic / white\r\n '#d6eaf8', // black / white\r\n '#186a3b', // hispanic / black\r\n '#e8daef', // asian / white\r\n '#45b39d', // asian / hispanic\r\n '#4a235a', // black / asian\r\n ];\r\nexport const EthnicTextColor: string[] = [\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n ];\r\nexport const EthnicLabel: string[] = [\r\n 'Solid White',\r\n 'Solid Black',\r\n 'Solid Hispanic',\r\n 'Solid Asian',\r\n 'Mostly White',\r\n 'Mostly Black',\r\n 'Mostly Hispanic',\r\n 'Mostly Asian',\r\n 'Mostly Native',\r\n 'Mixed',\r\n 'Hispanic / White Mix',\r\n 'Black / White Mix',\r\n 'Hispanic / Black Mix',\r\n 'Asian / White Mix',\r\n 'Asian / Hispanic Mix',\r\n 'Black / Asian Mix'\r\n ];\r\n\r\nexport const ColorByGreatR = 0;\r\nexport const ColorByGoodR = 1;\r\nexport const ColorByFairR = 2;\r\nexport const ColorByEven = 3;\r\nexport const ColorByFairD = 4;\r\nexport const ColorByGoodD = 5;\r\nexport const ColorByGreatD = 6;\r\n\r\nexport const ElectionBackgroundColor: string[] = [\r\n '#CF0000', // greatR\r\n '#FF4555', // goodR\r\n '#FFB0CB', // fairR\r\n '#9932CC', // even\r\n '#87CEEB', // fairD\r\n '#1E90FF', // goodD\r\n '#0000CF', // greatD\r\n];\r\n\r\nexport const ElectionTextColor: string[] = [\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n];\r\nexport const ElectionLabel: string[] = [\r\n 'Great Republican',\r\n 'Good Republican',\r\n 'Fair Republican',\r\n 'Even',\r\n 'Fair Democrat',\r\n 'Good Democrat',\r\n 'Great Democrat'\r\n ];\r\n\r\nconst lum: number[] = [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255];\r\nexport let IntensityBackgroundColor: string[] = [];\r\nlum.forEach((n: number) => { IntensityBackgroundColor.push(`rgba(${n}, ${n}, ${n}, 1.0)`) } );\r\n","// Public libraries\nimport * as Util from '@dra2020/util';\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\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\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 keys = canonicalDistrictIDGapFill(keys);\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 /^(\\d\\d[^\\s,\"']*)[\\s]*,[\\s]*([^\\s'\"]+)[\\s]*$/,\n /^[\"'](\\d\\d[^\"']*)[\"'][\\s]*,[\\s]*[\"']([^\"']*)[\"'][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"']([^\"']*)[\"'][\\s]*$/,\n /^[\"'](\\d\\d[^\"']*)[\"'][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n ];\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n for (let i: number = 0; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n return { geoid: a[1], districtID: a[2] };\n }\n return null;\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inStateMap: BlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\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\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 blockmapToVTDmap(blockMap: BlockMapping, stateMap: BlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inStateMap: stateMap,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {}\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n let revMap: BlockMapping = {};\n let id: string;\n\n if (stateMap)\n for (id in stateMap) if (stateMap.hasOwnProperty(id))\n revMap[stateMap[id]] = null;\n\n // First aggregate into features across all the blocks\n for (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 let n: number = id.length;\n let geoid: string;\n\n // Simple test for block id (vs. voting district or block group) id\n if (n >= 15)\n {\n if (stateMap && stateMap[id] !== undefined)\n geoid = stateMap[id];\n else\n {\n geoid = id.substr(0, 12); // heuristic for mapping blockID to blockgroupID\n if (stateMap && revMap[geoid] === undefined)\n {\n res.outValid = false;\n break;\n }\n }\n }\n else\n geoid = id;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\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 // 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 if (Util.countKeys(districtToBlocks) == 1)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\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 let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n }\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","import * as ColorData from \"./colordata\";\n\nlet ColorTable: string[] = null;\nconst MaxColors: number = 100;\n\nexport function genColor(i: number, useFirstColor: boolean): string\n{\n // i is district number, 0 => District[0] (unassigned), so subtract 1 to access ColorTable\n function gen_table(): void\n {\n ColorTable = [];\n for (let i: number = 0; i < MaxColors; i++)\n {\n // A little funky math below to skip the first (white) color\n let j = (i % (ColorData.DefaultColorNames.length - 1)) + 1;\n ColorTable.push(ColorData.ColorValues[ColorData.DefaultColorNames[j]]);\n }\n }\n\n if (ColorTable == null)\n gen_table();\n \n if (i == 0)\n return ColorData.ColorValues[ColorData.DefaultColorNames[0]];\n return ColorTable[((i - 1) + (useFirstColor ? 0 : 1)) % MaxColors];\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 },\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 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: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\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 '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 '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}\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 chunk?: string;\n state: string;\n datasource: string;\n geoid: string;\n blocks: string[];\n}\n\nexport type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };\n\n// Canonical hashing of splitblock data\nfunction hash(o: any): string\n{\n return Hash(o,\n { respectType: false,\n unorderedArrays: true,\n unorderedObjects: true,\n excludeKeys: (k: string) => (k === 'id' || k === 'chunk')\n });\n}\n\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let re = /vfeature_([^_]*)_.*/;\n let a = re.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n else\n return a[1];\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 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('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.id === undefined)\n s.id = hash(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 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 hash(keys);\n}\n","module.exports = require(\"@dra2020/util\");;","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\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].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","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(\"./lib/all.ts\");\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/all.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/colordata.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/gencolor.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/external \"@dra2020/baseclient\"","webpack://dra-types/external \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/webpack/startup"],"names":[],"mappings":"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","file":"dra-types.js","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, function() {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './colordata';\nexport * from './gencolor';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\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 '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 }\n","export const DefaultColorNames: string[] = \r\n[\r\n'GhostWhite',\r\n'Blue',\r\n'Green',\r\n'DarkMagenta',\r\n'Red',\r\n'Gold',\r\n'Teal',\r\n'Chocolate', //'DarkGray', // \r\n'SlateBlue',\r\n'Cyan',\r\n'DeepPink',\r\n'Chartreuse',\r\n'CornflowerBlue',\r\n'DarkSalmon',\r\n'Olive',\r\n'DarkOrange',\r\n'Lime',\r\n'DarkSlateBlue',\r\n'Yellow',\r\n'YellowGreen',\r\n'Pink',\r\n'Maroon',\r\n'Sienna',\r\n'Aquamarine',\r\n'Indigo',\r\n'PaleVioletRed',\r\n'Navy', // 'Gray', // \r\n'SpringGreen',\r\n'Plum',\r\n'DarkSeaGreen',\r\n'LightCoral',\r\n'Khaki',\r\n'OrangeRed',\r\n'RoyalBlue',\r\n'LimeGreen',\r\n'DarkOrchid',\r\n'Orange',\r\n'DodgerBlue',\r\n'MediumAquamarine',\r\n'Moccasin',\r\n'Firebrick',\r\n'LightSteelBlue',\r\n'LawnGreen',\r\n'Magenta',\r\n'MediumVioletRed',\r\n'Turquoise',\r\n'Tomato',\r\n'Thistle',\r\n'SandyBrown',\r\n'IndianRed',\r\n'PowderBlue',\r\n'SaddleBrown',\r\n'OliveDrab',\r\n'Fuchsia', // 'Gainsboro', //\r\n'PeachPuff',\r\n'RosyBrown',\r\n];\r\n\r\nexport interface ColorLookup\r\n{\r\n [key: string]: string;\r\n}\r\n\r\nexport const ColorValues: ColorLookup =\r\n{\r\n 'AliceBlue': '#F0F8FF',\r\n 'AntiqueWhite': '#FAEBD7',\r\n 'Aqua': '#00FFFF',\r\n 'Aquamarine': '#7FFFD4',\r\n 'Azure': '#F0FFFF',\r\n 'Beige': '#F5F5DC',\r\n 'Bisque': '#FFE4C4',\r\n 'Black': '#000000',\r\n 'BlanchedAlmond': '#FFEBCD',\r\n 'Blue': '#0000FF',\r\n 'BlueViolet': '#8A2BE2',\r\n 'Brown': '#A52A2A',\r\n 'BurlyWood': '#DEB887',\r\n 'CadetBlue': '#5F9EA0',\r\n 'Chartreuse': '#7FFF00',\r\n 'Chocolate': '#D2691E',\r\n 'Coral': '#FF7F50',\r\n 'CornflowerBlue': '#6495ED',\r\n 'Cornsilk': '#FFF8DC',\r\n 'Crimson': '#DC143C',\r\n 'Cyan': '#00FFFF',\r\n 'DarkBlue': '#00008B',\r\n 'DarkCyan': '#008B8B',\r\n 'DarkGoldenrod': '#B8860B',\r\n 'DarkGray': '#A9A9A9',\r\n 'DarkGreen': '#006400',\r\n 'DarkKhaki': '#BDB76B',\r\n 'DarkMagenta': '#8B008B',\r\n 'DarkOliveGreen': '#556B2F',\r\n 'DarkOrange': '#FF8C00',\r\n 'DarkOrchid': '#9932CC',\r\n 'DarkRed': '#8B0000',\r\n 'DarkSalmon': '#E9967A',\r\n 'DarkSeaGreen': '#8FBC8F',\r\n 'DarkSlateBlue': '#483D8B',\r\n 'DarkSlateGray': '#2F4F4F',\r\n 'DarkTurquoise': '#00CED1',\r\n 'DarkViolet': '#9400D3',\r\n 'DeepPink': '#FF1493',\r\n 'DeepSkyBlue': '#00BFFF',\r\n 'DimGray': '#696969',\r\n 'DodgerBlue': '#1E90FF',\r\n 'Firebrick': '#B22222',\r\n 'FloralWhite': '#FFFAF0',\r\n 'ForestGreen': '#228B22',\r\n 'Fuchsia': '#FF00FF',\r\n 'Gainsboro': '#DCDCDC',\r\n 'GhostWhite': '#F8F8FF',\r\n 'Gold': '#FFD700',\r\n 'Goldenrod': '#DAA520',\r\n 'Gray': '#808080',\r\n 'Green': '#008000',\r\n 'GreenYellow': '#ADFF2F',\r\n 'Honeydew': '#F0FFF0',\r\n 'HotPink': '#FF69B4',\r\n 'IndianRed': '#CD5C5C',\r\n 'Indigo': '#4B0082',\r\n 'Ivory': '#FFFFF0',\r\n 'Khaki': '#F0E68C',\r\n 'Lavender': '#E6E6FA',\r\n 'LavenderBlush': '#FFF0F5',\r\n 'LawnGreen': '#7CFC00',\r\n 'LemonChiffon': '#FFFACD',\r\n 'LightBlue': '#ADD8E6',\r\n 'LightCoral': '#F08080',\r\n 'LightCyan': '#E0FFFF',\r\n 'LightGoldenrodYellow': '#FAFAD2',\r\n 'LightGray': '#D3D3D3',\r\n 'LightGreen': '#90EE90',\r\n 'LightPink': '#FFB6C1',\r\n 'LightSalmon': '#FFA07A',\r\n 'LightSeaGreen': '#20B2AA',\r\n 'LightSkyBlue': '#87CEFA',\r\n 'LightSlateGray': '#778899',\r\n 'LightSteelBlue': '#B0C4DE',\r\n 'LightYellow': '#FFFFE0',\r\n 'Lime': '#00FF00',\r\n 'LimeGreen': '#32CD32',\r\n 'Linen': '#FAF0E6',\r\n 'Magenta': '#FF00FF',\r\n 'Maroon': '#800000',\r\n 'MediumAquamarine': '#66CDAA',\r\n 'MediumBlue': '#0000CD',\r\n 'MediumOrchid': '#BA55D3',\r\n 'MediumPurple': '#9370DB',\r\n 'MediumSeaGreen': '#3CB371',\r\n 'MediumSlateBlue': '#7B68EE',\r\n 'MediumSpringGreen': '#00FA9A',\r\n 'MediumTurquoise': '#48D1CC',\r\n 'MediumVioletRed': '#C71585',\r\n 'MidnightBlue': '#191970',\r\n 'MintCream': '#F5FFFA',\r\n 'MistyRose': '#FFE4E1',\r\n 'Moccasin': '#FFE4B5',\r\n 'NavajoWhite': '#FFDEAD',\r\n 'Navy': '#000080',\r\n 'OldLace': '#FDF5E6',\r\n 'Olive': '#808000',\r\n 'OliveDrab': '#6B8E23',\r\n 'Orange': '#FFA500',\r\n 'OrangeRed': '#FF4500',\r\n 'Orchid': '#DA70D6',\r\n 'PaleGoldenrod': '#EEE8AA',\r\n 'PaleGreen': '#98FB98',\r\n 'PaleTurquoise': '#AFEEEE',\r\n 'PaleVioletRed': '#DB7093',\r\n 'PapayaWhip': '#FFEFD5',\r\n 'PeachPuff': '#FFDAB9',\r\n 'Peru': '#CD853F',\r\n 'Pink': '#FFC0CB',\r\n 'Plum': '#DDA0DD',\r\n 'PowderBlue': '#B0E0E6',\r\n 'Purple': '#800080',\r\n 'Red': '#FF0000',\r\n 'RosyBrown': '#BC8F8F',\r\n 'RoyalBlue': '#4169E1',\r\n 'SaddleBrown': '#8B4513',\r\n 'Salmon': '#FA8072',\r\n 'SandyBrown': '#F4A460',\r\n 'SeaGreen': '#2E8B57',\r\n 'SeaShell': '#FFF5EE',\r\n 'Sienna': '#A0522D',\r\n 'Silver': '#C0C0C0',\r\n 'SkyBlue': '#87CEEB',\r\n 'SlateBlue': '#6A5ACD',\r\n 'SlateGray': '#708090',\r\n 'Snow': '#FFFAFA',\r\n 'SpringGreen': '#00FF7F',\r\n 'SteelBlue': '#4682B4',\r\n 'Tan': '#D2B48C',\r\n 'Teal': '#008080',\r\n 'Thistle': '#D8BFD8',\r\n 'Tomato': '#FF6347',\r\n 'Turquoise': '#40E0D0',\r\n 'Violet': '#EE82EE',\r\n 'Wheat': '#F5DEB3',\r\n 'White': '#FFFFFF',\r\n 'WhiteSmoke': '#F5F5F5',\r\n 'Yellow': '#FFFF00',\r\n 'YellowGreen': '#9ACD32',\r\n};\r\n\r\nexport const ColorBySolidWhite = 0;\r\nexport const ColorBySolidBlack = 1;\r\nexport const ColorBySolidHispanic = 2;\r\nexport const ColorBySolidAsian = 3;\r\nexport const ColorByMostlyWhite = 4;\r\nexport const ColorByMostlyBlack = 5;\r\nexport const ColorByMostlyHispanic = 6;\r\nexport const ColorByMostlyAsian = 7;\r\nexport const ColorByMostlyNative = 8;\r\nexport const ColorByMix = 9;\r\nexport const ColorByHispanicWhite = 10;\r\nexport const ColorByBlackWhite = 11;\r\nexport const ColorByHispanicBlack = 12;\r\nexport const ColorByAsianWhite = 13;\r\nexport const ColorByAsianHispanic = 14;\r\nexport const ColorByBlackAsian = 15;\r\n\r\nexport const EthnicBackgroundColor: string[] = [\r\n '#c0392b', // solid white\r\n '#3498db', // solid black\r\n '#2ecc71', // solid hispanic\r\n '#9b59b6', // solid asian\r\n '#d98880', // mostly white\r\n '#aed6f1', // mostly black\r\n '#abebc6', // mostly hispanic\r\n '#bb8fce', // mostly asian\r\n '#f1c40f', // mostly native\r\n '#aab7b8', // mix\r\n '#d5f5e3', // hispanic / white\r\n '#d6eaf8', // black / white\r\n '#186a3b', // hispanic / black\r\n '#e8daef', // asian / white\r\n '#45b39d', // asian / hispanic\r\n '#4a235a', // black / asian\r\n ];\r\nexport const EthnicTextColor: string[] = [\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n ];\r\nexport const EthnicLabel: string[] = [\r\n 'Solid White',\r\n 'Solid Black',\r\n 'Solid Hispanic',\r\n 'Solid Asian',\r\n 'Mostly White',\r\n 'Mostly Black',\r\n 'Mostly Hispanic',\r\n 'Mostly Asian',\r\n 'Mostly Native',\r\n 'Mixed',\r\n 'Hispanic / White Mix',\r\n 'Black / White Mix',\r\n 'Hispanic / Black Mix',\r\n 'Asian / White Mix',\r\n 'Asian / Hispanic Mix',\r\n 'Black / Asian Mix'\r\n ];\r\n\r\nexport const ColorByGreatR = 0;\r\nexport const ColorByGoodR = 1;\r\nexport const ColorByFairR = 2;\r\nexport const ColorByEven = 3;\r\nexport const ColorByFairD = 4;\r\nexport const ColorByGoodD = 5;\r\nexport const ColorByGreatD = 6;\r\n\r\nexport const ElectionBackgroundColor: string[] = [\r\n '#CF0000', // greatR\r\n '#FF4555', // goodR\r\n '#FFB0CB', // fairR\r\n '#9932CC', // even\r\n '#87CEEB', // fairD\r\n '#1E90FF', // goodD\r\n '#0000CF', // greatD\r\n];\r\n\r\nexport const ElectionTextColor: string[] = [\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n];\r\nexport const ElectionLabel: string[] = [\r\n 'Great Republican',\r\n 'Good Republican',\r\n 'Fair Republican',\r\n 'Even',\r\n 'Fair Democrat',\r\n 'Good Democrat',\r\n 'Great Democrat'\r\n ];\r\n\r\nconst lum: number[] = [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255];\r\nexport let IntensityBackgroundColor: string[] = [];\r\nlum.forEach((n: number) => { IntensityBackgroundColor.push(`rgba(${n}, ${n}, ${n}, 1.0)`) } );\r\n","// Public libraries\nimport { Util } 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\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\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 keys = canonicalDistrictIDGapFill(keys);\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 /^(\\d\\d[^\\s,\"']*)[\\s]*,[\\s]*([^\\s'\"]+)[\\s]*$/,\n /^[\"'](\\d\\d[^\"']*)[\"'][\\s]*,[\\s]*[\"']([^\"']*)[\"'][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"']([^\"']*)[\"'][\\s]*$/,\n /^[\"'](\\d\\d[^\"']*)[\"'][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n ];\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n for (let i: number = 0; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n return { geoid: a[1], districtID: a[2] };\n }\n return null;\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inStateMap: BlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\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\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 blockmapToVTDmap(blockMap: BlockMapping, stateMap: BlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inStateMap: stateMap,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {}\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n let revMap: BlockMapping = {};\n let id: string;\n\n if (stateMap)\n for (id in stateMap) if (stateMap.hasOwnProperty(id))\n revMap[stateMap[id]] = null;\n\n // First aggregate into features across all the blocks\n for (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 let n: number = id.length;\n let geoid: string;\n\n // Simple test for block id (vs. voting district or block group) id\n if (n >= 15)\n {\n if (stateMap && stateMap[id] !== undefined)\n geoid = stateMap[id];\n else\n {\n geoid = id.substr(0, 12); // heuristic for mapping blockID to blockgroupID\n if (stateMap && revMap[geoid] === undefined)\n {\n res.outValid = false;\n break;\n }\n }\n }\n else\n geoid = id;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\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 // 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 if (Util.countKeys(districtToBlocks) == 1)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\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 let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n }\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","import * as ColorData from \"./colordata\";\n\nlet ColorTable: string[] = null;\nconst MaxColors: number = 100;\n\nexport function genColor(i: number, useFirstColor: boolean): string\n{\n // i is district number, 0 => District[0] (unassigned), so subtract 1 to access ColorTable\n function gen_table(): void\n {\n ColorTable = [];\n for (let i: number = 0; i < MaxColors; i++)\n {\n // A little funky math below to skip the first (white) color\n let j = (i % (ColorData.DefaultColorNames.length - 1)) + 1;\n ColorTable.push(ColorData.ColorValues[ColorData.DefaultColorNames[j]]);\n }\n }\n\n if (ColorTable == null)\n gen_table();\n \n if (i == 0)\n return ColorData.ColorValues[ColorData.DefaultColorNames[0]];\n return ColorTable[((i - 1) + (useFirstColor ? 0 : 1)) % MaxColors];\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 },\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 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: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\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 },\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 '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}\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}\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 splitblock data\nfunction hash(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\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let re = /vfeature_([^_]*)_.*/;\n let a = re.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n else\n return a[1];\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 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('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.id === undefined)\n s.id = hash(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 hash(keys);\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\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].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","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(\"./lib/all.ts\");\n"],"sourceRoot":""}
|
package/dist/vfeature.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
export interface SplitBlock {
|
|
2
2
|
id?: string;
|
|
3
3
|
chunkKey?: string;
|
|
4
|
+
chunkList?: string[];
|
|
4
5
|
chunk?: string;
|
|
5
6
|
state: string;
|
|
6
7
|
datasource: string;
|
|
7
8
|
geoid: string;
|
|
8
9
|
blocks: string[];
|
|
9
10
|
}
|
|
11
|
+
export interface SplitChunk {
|
|
12
|
+
id?: string;
|
|
13
|
+
recompute?: boolean;
|
|
14
|
+
splits?: string[];
|
|
15
|
+
}
|
|
10
16
|
export declare type DistrictToSplitBlock = {
|
|
11
17
|
[districtID: string]: SplitBlock[];
|
|
12
18
|
};
|
|
@@ -15,6 +21,7 @@ export declare function vgeoidToChunk(vgeoid: string): string;
|
|
|
15
21
|
export declare function vgeoidToHash(vgeoid: string): string;
|
|
16
22
|
export declare function isVfeature(geoid: string): boolean;
|
|
17
23
|
export declare function splitToCacheKey(s: SplitBlock): string;
|
|
24
|
+
export declare function cacheKeyToSplit(s: string): SplitBlock;
|
|
18
25
|
export declare function splitToChunkKey(s: SplitBlock): string;
|
|
19
26
|
export declare function splitToPrefix(s: SplitBlock): string;
|
|
20
27
|
export declare function cacheKeysToChunkHash(keys: string[]): string;
|
package/lib/csv.ts
CHANGED
package/lib/schemas.ts
CHANGED
|
@@ -74,6 +74,30 @@ export let Schemas: any = {
|
|
|
74
74
|
{ chunkKey: 'HASH', id: 'RANGE' },
|
|
75
75
|
],
|
|
76
76
|
},
|
|
77
|
+
'blockset':
|
|
78
|
+
{
|
|
79
|
+
FileOptions: { map: true },
|
|
80
|
+
Schema: {
|
|
81
|
+
id: 'S',
|
|
82
|
+
chunk: 'S',
|
|
83
|
+
chunkKey: 'S',
|
|
84
|
+
chunkList: 'L',
|
|
85
|
+
state: 'S',
|
|
86
|
+
datasource: 'S',
|
|
87
|
+
geoid: 'S',
|
|
88
|
+
blocks: 'L'
|
|
89
|
+
},
|
|
90
|
+
KeySchema: { id: 'HASH' },
|
|
91
|
+
},
|
|
92
|
+
'blockchunk':
|
|
93
|
+
{
|
|
94
|
+
FileOptions: { map: true },
|
|
95
|
+
Schema: {
|
|
96
|
+
id: 'S',
|
|
97
|
+
recompute: 'BOOL',
|
|
98
|
+
splits: 'L',
|
|
99
|
+
},
|
|
100
|
+
},
|
|
77
101
|
'access':
|
|
78
102
|
{
|
|
79
103
|
FileOptions: { map: true, noobject: true },
|
package/lib/vfeature.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface SplitBlock
|
|
|
5
5
|
{
|
|
6
6
|
id?: string;
|
|
7
7
|
chunkKey?: string;
|
|
8
|
+
chunkList?: string[];
|
|
8
9
|
chunk?: string;
|
|
9
10
|
state: string;
|
|
10
11
|
datasource: string;
|
|
@@ -12,6 +13,13 @@ export interface SplitBlock
|
|
|
12
13
|
blocks: string[];
|
|
13
14
|
}
|
|
14
15
|
|
|
16
|
+
export interface SplitChunk
|
|
17
|
+
{
|
|
18
|
+
id?: string;
|
|
19
|
+
recompute?: boolean;
|
|
20
|
+
splits?: string[];
|
|
21
|
+
}
|
|
22
|
+
|
|
15
23
|
export type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };
|
|
16
24
|
|
|
17
25
|
// Canonical hashing of splitblock data
|
|
@@ -21,7 +29,8 @@ function hash(o: any): string
|
|
|
21
29
|
{ respectType: false,
|
|
22
30
|
unorderedArrays: true,
|
|
23
31
|
unorderedObjects: true,
|
|
24
|
-
|
|
32
|
+
// basically, include (state,datasource,geoid,blocks[])
|
|
33
|
+
excludeKeys: (k: string) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')
|
|
25
34
|
});
|
|
26
35
|
}
|
|
27
36
|
|
|
@@ -78,6 +87,15 @@ export function splitToCacheKey(s: SplitBlock): string
|
|
|
78
87
|
return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;
|
|
79
88
|
}
|
|
80
89
|
|
|
90
|
+
export function cacheKeyToSplit(s: string): SplitBlock
|
|
91
|
+
{
|
|
92
|
+
let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/
|
|
93
|
+
let a = re.exec(s);
|
|
94
|
+
if (a == null) return null;
|
|
95
|
+
// 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash
|
|
96
|
+
return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };
|
|
97
|
+
}
|
|
98
|
+
|
|
81
99
|
export function splitToChunkKey(s: SplitBlock): string
|
|
82
100
|
{
|
|
83
101
|
if (s.chunk === undefined)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dra2020/dra-types",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.2",
|
|
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",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"webpack-cli": "^4.3.1"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@dra2020/
|
|
36
|
+
"@dra2020/baseclient": "^1.0.0",
|
|
37
37
|
"object-hash": "^2.1.1"
|
|
38
38
|
}
|
|
39
39
|
}
|