[
  {
    "__docId__": 0,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "libs/config/index.js",
    "memberof": null,
    "longname": "libs/config/index.js",
    "access": null,
    "description": null,
    "lineNumber": 3,
    "content": "#!/usr/bin/env node\n\nconst Config = require( 'merge-config' );\nconst hash = require( 'object-hash' );\nconst path = require( 'path' );\nconst urljoin = require( 'url-join' );\nconst utils = require( '../utils' );\n\n// Build up a configuration object from a spec file and/or spec object.\nmodule.exports.build_config = function( spec_file, spec_obj ) {\n  // Get the global defaults then override with the specified specification.\n  const built_config = new Config();\n  built_config.file( path.join( __dirname, '..', '..', 'defaults.yaml' ) );\n  if ( spec_file ) {\n    built_config.file( spec_file );\n  }\n  if ( spec_obj ) {\n    built_config.merge( spec_obj );\n  }\n\n  // Set up derived config values:\n  // - Download dirs and shapefile name\n  const shape_data = built_config.get( 'shape_data' );\n  const file_base = shape_data.filename.substr( 0, shape_data.filename.lastIndexOf( '.' ) ) || shape_data.filename;\n  const shape_dir = path.join( 'data', shape_data.repo, shape_data.base, file_base );\n  built_config.set( 'derived:shape_dir', shape_dir );\n  built_config.set( 'derived:shape_file', path.join( shape_dir, `${file_base}.shp` ) );\n\n  // - Info for the current repo\n  const repo_info = built_config.get( 'repos' )[ shape_data.repo ];\n  built_config.set( 'derived:repo_info', repo_info );\n\n  // - Download target\n  built_config.set( 'derived:download_url', urljoin( repo_info.base_url, shape_data.base, shape_data.filename ) );\n\n  // - SHA of the spec file, and output file.\n  const sha = hash( built_config.get() );\n  built_config.set( 'derived:spec_sha1', sha );\n  built_config.set( 'derived:output_svg', path.join( 'output', `${sha}.svg` ) );\n\n  // Store off the config as a 'normal' object.\n  const config = built_config.get();\n  utils.log.debug( 'Full Config', config );\n  return config;\n};\n\n// Validate that the supplied filter makes sense for the given data.\nmodule.exports.validate_filter = function validate_filter( config, data ) {\n  // @@@ TODO\n  return config !== data;\n};\n"
  },
  {
    "__docId__": 1,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "Config",
    "memberof": "libs/config/index.js",
    "longname": "libs/config/index.js~Config",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/config/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 2,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "hash",
    "memberof": "libs/config/index.js",
    "longname": "libs/config/index.js~hash",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/config/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 3,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "path",
    "memberof": "libs/config/index.js",
    "longname": "libs/config/index.js~path",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/config/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 4,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "urljoin",
    "memberof": "libs/config/index.js",
    "longname": "libs/config/index.js~urljoin",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/config/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 5,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "utils",
    "memberof": "libs/config/index.js",
    "longname": "libs/config/index.js~utils",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/config/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 6,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "build_config",
    "memberof": "libs/config/index.js",
    "longname": "libs/config/index.js~build_config",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/config/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "params": [
      {
        "name": "spec_file",
        "types": [
          "*"
        ]
      },
      {
        "name": "spec_obj",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 7,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "validate_filter",
    "memberof": "libs/config/index.js",
    "longname": "libs/config/index.js~validate_filter",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/config/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 48,
    "undocument": true,
    "params": [
      {
        "name": "config",
        "types": [
          "*"
        ]
      },
      {
        "name": "data",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 8,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "libs/map-builder/index.js",
    "memberof": null,
    "longname": "libs/map-builder/index.js",
    "access": null,
    "description": null,
    "lineNumber": 3,
    "content": "#!/usr/bin/env node\n\nconst async = require( 'async' );\nconst css = require( 'node-css' );\nconst d3 = require( 'd3' );\nconst download = require( 'download' );\nconst fs = require( 'fs' );\nconst jsdom = require( 'jsdom' );\nconst ogr2ogr = require( 'ogr2ogr' );\nconst config = require( '../config' );\nconst projections = require( '../projections' );\nconst utils = require( '../utils' );\n\n/**\n * Class for encapsulating a map building operation.\n * @example\n * new MapBuilder()\n *   .specFile('examples/france.yaml')\n *   .onError((err) => {\n *     console.log(err);\n *   })\n *   .onSuccess((data) => {\n *     console.log(\"Success\");\n *     do_something_with_svg_data(data);\n *   })\n *   .build_map();\n */\nclass MapBuilder {\n  constructor() {\n    const self = this;\n    self.config = {};\n    self.data = {};\n    self.spec_obj = {};\n    self.spec_file = '';\n    self.output_exists = false;\n    self.css_string = '';\n    self.svg_text = 'Failed to build SVG';\n  }\n\n  /**\n   * Specify an error callback for this {@link MapBuilder}.\n   *\n   * @param {function(err: string)} err_cb - the error callback.\n   */\n  onError( err_cb ) {\n    this.err_cb = err_cb;\n    return this;\n  }\n\n  /**\n   * Specify a success callback for this {@link MapBuilder}.\n   *\n   * @param {function(data: string)} ok_cb - the success callback, passed the\n   *                                         generated SVG as a string.\n   */\n  onSuccess( ok_cb ) {\n    this.ok_cb = ok_cb;\n    return this;\n  }\n\n  /**\n   * Specify the configuration to use.\n   *\n   * May be used in conjunction with {@link specFile}.  They will be merged with the\n   * spec_obj taking precedence in case of clashes.\n   *\n   * @param {!Object} spec_obj - object describing the configuration to use.\n   * @example\n   * var spec_obj = {\n   *   \"parameters\": {\n   *     \"projection\": {\n   *       \"type\": \"mercator\",\n   *       \"width\": 960,\n   *       \"height\": 1120,\n   *       \"scale\": 1600,\n   *       \"center\": [2, 50]\n   *     }\n   *   }\n   * }\n   * new MapBuilder()\n   *   .spec(spec_obj)\n   *   // (Register .onError and .onSuccess callbacks.)\n   *   .build_map();\n   */\n  spec( spec_obj ) {\n    this.spec_obj = spec_obj;\n    return this;\n  }\n\n  /**\n   * Specify the configuration to use.\n   *\n   * May be used in conjunction with {@link spec}.  They will be merged with the\n   * spec_obj taking precedence in case of clashes.\n   *\n   * @param {string} spec_file - configuration file to use.\n   */\n  specFile( spec_file ) {\n    this.spec_file = spec_file;\n    return this;\n  }\n\n  /**\n   * Specify whether to force a rebuild.\n   *\n   * Normally maps are cached based on the specification, but if you update\n   * this module you may want to use this option to force the map to be\n   * re-created.\n   *\n   * @param {boolean} force - whether to force map re-creation.\n   */\n  force( force ) {\n    this.force = force;\n    return this;\n  }\n\n  /**\n   * Asynchronously build the map.\n   *\n   * Requires {@link onError} and {@link onSuccess} specified to handle the\n   * results.\n   */\n  build_map() {\n    const self = this;\n    try {\n      async.series( {\n        build_config: ( callback ) => {\n          utils.log.progress( 'Building config...' );\n          self.config = config.build_config( self.spec_file, self.spec_obj );\n          callback( null );\n        },\n        check_for_existing_output: ( callback ) => {\n          fs.readFile( self.config.derived.output_svg, ( err, data ) => {\n            if ( !err && !self.force ) {\n              utils.log.info( 'Output already generated', self.config.derived.output_svg );\n              self.output_exists = true;\n              self.svg_text = data;\n            }\n            return callback( null );\n          } );\n        },\n        get_data_files: ( callback ) => {\n          if ( !self.output_exists ) {\n            utils.log.progress( 'Checking data sources...' );\n            self.get_data_files( callback );\n          } else {\n            callback( null );\n          }\n        },\n        filter_data: ( callback ) => {\n          if ( !self.output_exists ) {\n            utils.log.progress( 'Filtering data...' );\n            self.filter_data( callback );\n          } else {\n            callback( null );\n          }\n        },\n        build_css: ( callback ) => {\n          if ( !self.output_exists ) {\n            utils.log.progress( 'Generating CSS...' );\n            self.build_css( callback );\n          } else {\n            callback( null );\n          }\n        },\n        create_svg: ( callback ) => {\n          if ( !self.output_exists ) {\n            utils.log.progress( 'Creating SVG...' );\n            self.create_svg( callback );\n          } else {\n            callback( null );\n          }\n        },\n      }, ( err ) => {\n        if ( err ) {\n          utils.log.error( 'Failed!' );\n          utils.log.error( err );\n          if ( self.err_cb ) {\n            self.err_cb( err );\n          }\n        } else {\n          utils.log.success( 'Map Building Complete!' );\n          if ( self.ok_cb ) {\n            self.ok_cb( self.svg_text );\n          }\n        }\n      } );\n    } catch ( e ) {\n      // Catch all exceptions, throw only if no err_cb.\n      utils.log.error( 'Failed!' );\n      utils.log.error( e );\n      if ( self.err_cb ) {\n        self.err_cb( e );\n      } else {\n        throw e;\n      }\n    }\n  }\n\n  /**\n   * Print information from the shape file specified in the config.\n   *\n   * Requires {@link onError} and {@link onSuccess} specified to handle the\n   * results.\n   */\n  get_shape_info() {\n    const self = this;\n    try {\n      async.series( {\n        build_config: ( callback ) => {\n          utils.log.progress( 'Building config...' );\n          self.config = config.build_config( self.spec_file, self.spec_obj );\n          callback( null );\n        },\n        get_data_files: ( callback ) => {\n          utils.log.progress( 'Checking data sources...' );\n          self.get_data_files( callback );\n        },\n        get_shape_info: ( callback ) => {\n          utils.log.progress( 'Getting shape info...' );\n          // @@@ Option to apply filter first.\n          // @@@ Get format from repo config?\n          ogr2ogr( self.config.derived.shape_file )\n          .format( 'GeoJSON' )\n          .exec( ( err, geo_data ) => {\n            if ( err ) {\n              return callback( err );\n            }\n            self.data = geo_data;\n            return callback( null );\n          } );\n        },\n      }, ( err ) => {\n        if ( err ) {\n          utils.log.error( 'Failed!' );\n          utils.log.error( err );\n          if ( self.err_cb ) {\n            self.err_cb( err );\n          }\n        } else {\n          utils.log.success( 'Parsed shape info!' );\n          if ( self.ok_cb ) {\n            self.ok_cb( self.data );\n          }\n        }\n      } );\n    } catch ( e ) {\n      // Catch all exceptions, throw only if no err_cb.\n      utils.log.error( 'Failed!' );\n      utils.log.error( e );\n      if ( self.err_cb ) {\n        self.err_cb( e );\n      } else {\n        throw e;\n      }\n    }\n  }\n\n  /**\n   * Ensure raw data is available.\n   * @access private\n   */\n  get_data_files( callback ) {\n    const self = this;\n\n    // Get the destination and check for existing data.\n    fs.access( self.config.derived.shape_dir, ( err ) => {\n      if ( !err ) {\n        utils.log.info( 'Data already available', self.config.derived.shape_dir );\n        callback( null );\n      } else {\n        // Directory doesn't exist, proceed with download.\n        utils.log.progress( 'Downloading data', self.config.derived.download_url );\n        // @@@ Get extract value from spec file...\n        download( self.config.derived.download_url, self.config.derived.shape_dir, {\n          extract: true,\n        } ).then( () => callback( null ), dl_err => callback( dl_err ) );\n      }\n    } );\n  }\n\n  /**\n   * Filter data using ogr2ogr.\n   * @access private\n   */\n  filter_data( callback ) {\n    const self = this;\n    let options = [];\n    let values;\n    utils.log.debug( 'Countries config', self.config.parameters.countries );\n    utils.log.debug( 'Filter', self.config.parameters.filter );\n    const filter = self.config.parameters.filter;\n    if ( filter ) {\n      switch ( filter.type ) {\n      case 'countries':\n        if ( !self.config.parameters.countries ) {\n          return callback( 'Cannot filter on countries with no countries specified - use \"type: all\"' );\n        }\n        values = Object.keys( self.config.parameters.countries ).join( '\\', \\'' );\n        options = options.concat( [ '-where', `${filter.key} IN ('${values}')` ] );\n        break;\n      case 'array':\n        if ( !filter.array ) {\n          return callback( 'Cannot filter on array with no elements specified' );\n        }\n        values = filter.array.join( '\\', \\'' );\n        options = options.concat( [ '-where', `${filter.key} IN ('${values}')` ] );\n        break;\n      case 'all':\n          // Include all countries - no filter\n        break;\n      default:\n        return callback( `Unknown value for \"filter\": ${filter.type}` );\n      }\n    }\n    // @@@ Get format from repo config?\n    utils.log.debug( 'ogr2ogr options', options );\n    ogr2ogr( self.config.derived.shape_file )\n      .format( 'GeoJSON' )\n      .options( options )\n      .exec( ( err, geo_data ) => {\n        if ( err ) {\n          return callback( err );\n        }\n        self.data = geo_data;\n        return callback( null );\n      } );\n  }\n\n  /**\n   * Generate the CSS.\n   * @access private\n   */\n  build_css( callback ) {\n    const self = this;\n    const base_style = self.config.style;\n    Object.keys( base_style ).forEach( ( key ) => {\n      const data = base_style[ key ];\n      if ( data ) {\n        self.css_string += css( key, data );\n      }\n    } );\n\n    // Per-country CSS.\n    const countries = self.config.parameters.countries;\n    if ( countries ) {\n      Object.keys( countries ).forEach( ( key ) => {\n        const data = countries[ key ];\n        if ( data ) {\n          self.css_string += css( `.ADM0_A3-${key}`, data );\n        }\n      } );\n    }\n    utils.log.debug( 'Generated CSS', self.css_string );\n    return callback( null );\n  }\n\n  /**\n   * Create the SVG file.\n   * @access private\n   */\n  create_svg( callback ) {\n    const self = this;\n    // Use jsdom to create a fake DOM to work in.\n    jsdom.env( '<body />',\n      ( err, window ) => {\n        if ( err ) {\n          return callback( err );\n        }\n\n        // Create an SVG element for the map.\n        const body = d3.select( window.document ).select( 'body' );\n        const svg = body.append( 'svg' )\n          .attr( 'width', self.config.parameters.projection.width )\n          .attr( 'height', self.config.parameters.projection.height );\n\n        const {\n          proj_err,\n          projection,\n        } = projections.get_projection( self.config );\n        if ( proj_err ) {\n          return callback( proj_err );\n        }\n        const path = d3.geoPath()\n          .projection( projection );\n\n        // Add an appropriate class to each country.\n        svg.selectAll( '.country' )\n          .data( self.data.features )\n          .enter().append( 'path' )\n          .attr( 'class', d => [\n            `ADM0_A3-${d.properties.ADM0_A3}`,\n            `SU_A3-${d.properties.SU_A3}`,\n            `GU_A3-${d.properties.GU_A3}`,\n          ].join( ' ' ) )\n          .attr( 'd', path );\n\n        // Add in the CSS style.\n        svg.append( 'style' ).text( self.css_string );\n\n        // Write SVG to the output directory.\n        // Write body.html() to the SVG file as this is effectively svg.outerHTML.\n        if ( !fs.existsSync( 'output' ) ) {\n          fs.mkdirSync( 'output' );\n        }\n        self.svg_text = body.html();\n        fs.writeFile( self.config.derived.output_svg, self.svg_text, ( write_err ) => {\n          if ( write_err ) {\n            utils.log.error( write_err );\n            return callback( write_err );\n          }\n\n          utils.log.info( `Saved to ${self.config.derived.output_svg}` );\n          return callback( null );\n        } );\n      }\n    );\n  }\n}\n\n// Export the MapBuilder class.\nmodule.exports = MapBuilder;\n"
  },
  {
    "__docId__": 9,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "async",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~async",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 10,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "css",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~css",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 11,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "d3",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~d3",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 12,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "download",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~download",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 13,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "fs",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~fs",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 14,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "jsdom",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~jsdom",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 15,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "ogr2ogr",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~ogr2ogr",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 16,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "config",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~config",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 17,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "projections",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~projections",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 18,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "utils",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~utils",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 19,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "MapBuilder",
    "memberof": "libs/map-builder/index.js",
    "longname": "libs/map-builder/index.js~MapBuilder",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/map-builder/index.js",
    "importStyle": null,
    "description": "Class for encapsulating a map building operation.",
    "examples": [
      "new MapBuilder()\n  .specFile('examples/france.yaml')\n  .onError((err) => {\n    console.log(err);\n  })\n  .onSuccess((data) => {\n    console.log(\"Success\");\n    do_something_with_svg_data(data);\n  })\n  .build_map();"
    ],
    "lineNumber": 28,
    "interface": false
  },
  {
    "__docId__": 20,
    "kind": "constructor",
    "static": false,
    "variation": null,
    "name": "constructor",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#constructor",
    "access": null,
    "description": null,
    "lineNumber": 29,
    "undocument": true,
    "params": [],
    "generator": false
  },
  {
    "__docId__": 21,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "onError",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#onError",
    "access": null,
    "description": "Specify an error callback for this {@link MapBuilder}.",
    "lineNumber": 45,
    "params": [
      {
        "nullable": null,
        "types": [
          "function(err: string)"
        ],
        "spread": false,
        "optional": false,
        "name": "err_cb",
        "description": "the error callback."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 22,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "err_cb",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#err_cb",
    "access": null,
    "description": null,
    "lineNumber": 46,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 23,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "onSuccess",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#onSuccess",
    "access": null,
    "description": "Specify a success callback for this {@link MapBuilder}.",
    "lineNumber": 56,
    "params": [
      {
        "nullable": null,
        "types": [
          "function(data: string)"
        ],
        "spread": false,
        "optional": false,
        "name": "ok_cb",
        "description": "the success callback, passed the\n                                        generated SVG as a string."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 24,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "ok_cb",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#ok_cb",
    "access": null,
    "description": null,
    "lineNumber": 57,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 25,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "spec",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#spec",
    "access": null,
    "description": "Specify the configuration to use.\n\nMay be used in conjunction with {@link specFile}.  They will be merged with the\nspec_obj taking precedence in case of clashes.",
    "examples": [
      "var spec_obj = {\n  \"parameters\": {\n    \"projection\": {\n      \"type\": \"mercator\",\n      \"width\": 960,\n      \"height\": 1120,\n      \"scale\": 1600,\n      \"center\": [2, 50]\n    }\n  }\n}\nnew MapBuilder()\n  .spec(spec_obj)\n  // (Register .onError and .onSuccess callbacks.)\n  .build_map();"
    ],
    "lineNumber": 85,
    "params": [
      {
        "nullable": false,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "spec_obj",
        "description": "object describing the configuration to use."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 26,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "spec_obj",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#spec_obj",
    "access": null,
    "description": null,
    "lineNumber": 86,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 27,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "specFile",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#specFile",
    "access": null,
    "description": "Specify the configuration to use.\n\nMay be used in conjunction with {@link spec}.  They will be merged with the\nspec_obj taking precedence in case of clashes.",
    "lineNumber": 98,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "spec_file",
        "description": "configuration file to use."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 28,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "spec_file",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#spec_file",
    "access": null,
    "description": null,
    "lineNumber": 99,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 29,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "force",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#force",
    "access": null,
    "description": "Specify whether to force a rebuild.\n\nNormally maps are cached based on the specification, but if you update\nthis module you may want to use this option to force the map to be\nre-created.",
    "lineNumber": 112,
    "params": [
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "force",
        "description": "whether to force map re-creation."
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 30,
    "kind": "member",
    "static": false,
    "variation": null,
    "name": "force",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#force",
    "access": null,
    "description": null,
    "lineNumber": 113,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 31,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "build_map",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#build_map",
    "access": null,
    "description": "Asynchronously build the map.\n\nRequires {@link onError} and {@link onSuccess} specified to handle the\nresults.",
    "lineNumber": 123,
    "params": [],
    "generator": false
  },
  {
    "__docId__": 32,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "get_shape_info",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#get_shape_info",
    "access": null,
    "description": "Print information from the shape file specified in the config.\n\nRequires {@link onError} and {@link onSuccess} specified to handle the\nresults.",
    "lineNumber": 206,
    "params": [],
    "generator": false
  },
  {
    "__docId__": 33,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "get_data_files",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#get_data_files",
    "access": "private",
    "description": "Ensure raw data is available.",
    "lineNumber": 263,
    "params": [
      {
        "name": "callback",
        "types": [
          "*"
        ]
      }
    ],
    "generator": false
  },
  {
    "__docId__": 34,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "filter_data",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#filter_data",
    "access": "private",
    "description": "Filter data using ogr2ogr.",
    "lineNumber": 286,
    "params": [
      {
        "name": "callback",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 35,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "build_css",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#build_css",
    "access": "private",
    "description": "Generate the CSS.",
    "lineNumber": 334,
    "params": [
      {
        "name": "callback",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 36,
    "kind": "method",
    "static": false,
    "variation": null,
    "name": "create_svg",
    "memberof": "libs/map-builder/index.js~MapBuilder",
    "longname": "libs/map-builder/index.js~MapBuilder#create_svg",
    "access": "private",
    "description": "Create the SVG file.",
    "lineNumber": 362,
    "params": [
      {
        "name": "callback",
        "types": [
          "*"
        ]
      }
    ],
    "generator": false
  },
  {
    "__docId__": 37,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "libs/projections/index.js",
    "memberof": null,
    "longname": "libs/projections/index.js",
    "access": null,
    "description": null,
    "lineNumber": 3,
    "content": "#!/usr/bin/env node\n\nconst d3 = require( 'd3' );\n\n// Get the projection object from the specified config.\nmodule.exports.get_projection = function get_projection( config ) {\n  const proj_type = config.parameters.projection.type.toLowerCase();\n  let proj_err = null;\n  let projection = null;\n\n  switch ( proj_type ) {\n  case 'mercator':\n    projection = d3.geoMercator();\n    break;\n  case 'albers':\n      // @@@ Get parallels from config?\n    projection = d3.geoAlbers()\n        .parallels( [ 50, 60 ] );\n    break;\n  default:\n    proj_err = `Unrecognized projection \"${proj_type}\"\"`;\n  }\n  if ( !proj_err ) {\n    projection = projection\n      .center( config.parameters.projection.center )\n      .scale( config.parameters.projection.scale )\n      .translate( [\n        config.parameters.projection.width / 2,\n        config.parameters.projection.width / 2,\n      ] )\n      .rotate( config.parameters.projection.rotation );\n  }\n  return {\n    proj_err,\n    projection,\n  };\n};\n"
  },
  {
    "__docId__": 38,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "d3",
    "memberof": "libs/projections/index.js",
    "longname": "libs/projections/index.js~d3",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/projections/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 39,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "get_projection",
    "memberof": "libs/projections/index.js",
    "longname": "libs/projections/index.js~get_projection",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/projections/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "params": [
      {
        "name": "config",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 40,
    "kind": "file",
    "static": true,
    "variation": null,
    "name": "libs/utils/index.js",
    "memberof": null,
    "longname": "libs/utils/index.js",
    "access": null,
    "description": null,
    "lineNumber": 3,
    "content": "#!/usr/bin/env node\n\nconst chalk = require( 'chalk' );\n\nconst LOG_LEVEL = {\n  NONE: 0,\n  ERROR: 1,\n  INFO: 2,\n  DEBUG: 3,\n};\n\n// Export Log levels\nmodule.exports.LOG_LEVEL = LOG_LEVEL;\n\n// Static Logger class\nclass Logger {\n\n  // Always displayed.\n  static output( str ) {\n    console.log( chalk.bold( str ) );\n  }\n\n  // Error level.\n  static error( str ) {\n    if ( process.env.LOG_LEVEL >= LOG_LEVEL.ERROR ) {\n      console.log( chalk.bold.red( str ) );\n    }\n  }\n\n  // INFO level logs.\n  static success( str ) {\n    if ( process.env.LOG_LEVEL >= LOG_LEVEL.INFO ) {\n      console.log( chalk.bold.green( str ) );\n    }\n  }\n  static progress( tag, str ) {\n    if ( process.env.LOG_LEVEL >= LOG_LEVEL.INFO ) {\n      if ( !str ) {\n        console.log( chalk.bold.cyan( tag ) );\n      } else {\n        console.log( `${chalk.bold.cyan( tag )} : ${str}` );\n      }\n    }\n  }\n  static info( tag, str ) {\n    if ( process.env.LOG_LEVEL >= LOG_LEVEL.INFO ) {\n      if ( !str ) {\n        console.log( chalk.bold.yellow( tag ) );\n      } else {\n        console.log( `${chalk.bold.yellow( tag )} ${str}` );\n      }\n    }\n  }\n  static content( str ) {\n    if ( process.env.LOG_LEVEL >= LOG_LEVEL.INFO ) {\n      console.log( str );\n    }\n  }\n\n  // Debug log\n  static debug( tag_parm, obj_parm ) {\n    let str;\n    let obj = obj_parm;\n    let tag = tag_parm;\n    if ( process.env.LOG_LEVEL >= LOG_LEVEL.DEBUG ) {\n      if ( !obj ) {\n        obj = tag;\n        tag = 'Debug:';\n      }\n      str = chalk.bold.magenta( tag );\n      str += ': ';\n      if ( typeof obj === 'string' ) {\n        str += chalk.dim.gray( obj );\n      } else {\n        str += chalk.dim.gray( JSON.stringify( obj, undefined, 2 ) );\n      }\n      console.log( str );\n    }\n  }\n}\n\n// Export logger\nmodule.exports.log = Logger;\n\n// Split a comma-separated list\nmodule.exports.listSplit = function listSplit( val ) {\n  return val.split( ',' );\n};\n"
  },
  {
    "__docId__": 41,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "chalk",
    "memberof": "libs/utils/index.js",
    "longname": "libs/utils/index.js~chalk",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/utils/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 42,
    "kind": "variable",
    "static": true,
    "variation": null,
    "name": "LOG_LEVEL",
    "memberof": "libs/utils/index.js",
    "longname": "libs/utils/index.js~LOG_LEVEL",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/utils/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 43,
    "kind": "class",
    "static": true,
    "variation": null,
    "name": "Logger",
    "memberof": "libs/utils/index.js",
    "longname": "libs/utils/index.js~Logger",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/utils/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 16,
    "undocument": true,
    "interface": false
  },
  {
    "__docId__": 44,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "output",
    "memberof": "libs/utils/index.js~Logger",
    "longname": "libs/utils/index.js~Logger.output",
    "access": null,
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "params": [
      {
        "name": "str",
        "types": [
          "*"
        ]
      }
    ],
    "generator": false
  },
  {
    "__docId__": 45,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "error",
    "memberof": "libs/utils/index.js~Logger",
    "longname": "libs/utils/index.js~Logger.error",
    "access": null,
    "description": null,
    "lineNumber": 24,
    "undocument": true,
    "params": [
      {
        "name": "str",
        "types": [
          "*"
        ]
      }
    ],
    "generator": false
  },
  {
    "__docId__": 46,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "success",
    "memberof": "libs/utils/index.js~Logger",
    "longname": "libs/utils/index.js~Logger.success",
    "access": null,
    "description": null,
    "lineNumber": 31,
    "undocument": true,
    "params": [
      {
        "name": "str",
        "types": [
          "*"
        ]
      }
    ],
    "generator": false
  },
  {
    "__docId__": 47,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "progress",
    "memberof": "libs/utils/index.js~Logger",
    "longname": "libs/utils/index.js~Logger.progress",
    "access": null,
    "description": null,
    "lineNumber": 36,
    "undocument": true,
    "params": [
      {
        "name": "tag",
        "types": [
          "*"
        ]
      },
      {
        "name": "str",
        "types": [
          "*"
        ]
      }
    ],
    "generator": false
  },
  {
    "__docId__": 48,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "info",
    "memberof": "libs/utils/index.js~Logger",
    "longname": "libs/utils/index.js~Logger.info",
    "access": null,
    "description": null,
    "lineNumber": 45,
    "undocument": true,
    "params": [
      {
        "name": "tag",
        "types": [
          "*"
        ]
      },
      {
        "name": "str",
        "types": [
          "*"
        ]
      }
    ],
    "generator": false
  },
  {
    "__docId__": 49,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "content",
    "memberof": "libs/utils/index.js~Logger",
    "longname": "libs/utils/index.js~Logger.content",
    "access": null,
    "description": null,
    "lineNumber": 54,
    "undocument": true,
    "params": [
      {
        "name": "str",
        "types": [
          "*"
        ]
      }
    ],
    "generator": false
  },
  {
    "__docId__": 50,
    "kind": "method",
    "static": true,
    "variation": null,
    "name": "debug",
    "memberof": "libs/utils/index.js~Logger",
    "longname": "libs/utils/index.js~Logger.debug",
    "access": null,
    "description": null,
    "lineNumber": 61,
    "undocument": true,
    "params": [
      {
        "name": "tag_parm",
        "types": [
          "*"
        ]
      },
      {
        "name": "obj_parm",
        "types": [
          "*"
        ]
      }
    ],
    "generator": false
  },
  {
    "__docId__": 51,
    "kind": "function",
    "static": true,
    "variation": null,
    "name": "listSplit",
    "memberof": "libs/utils/index.js",
    "longname": "libs/utils/index.js~listSplit",
    "access": null,
    "export": false,
    "importPath": "map-maker/libs/utils/index.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 86,
    "undocument": true,
    "params": [
      {
        "name": "val",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    },
    "generator": false
  },
  {
    "__docId__": 53,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Infinity",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Infinity",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 54,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "NaN",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~NaN",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 55,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "undefined",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~undefined",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 56,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "null",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~null",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 57,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Object",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 58,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~object",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 59,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Function",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 60,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~function",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 61,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Boolean",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 62,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~boolean",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 63,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Symbol",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Symbol",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 64,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Error",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Error",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 65,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "EvalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~EvalError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 66,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "InternalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~InternalError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 67,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "RangeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~RangeError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 68,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "ReferenceError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~ReferenceError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 69,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "SyntaxError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~SyntaxError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 70,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "TypeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~TypeError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 71,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "URIError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~URIError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 72,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Number",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 73,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~number",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 74,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Date",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Date",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 75,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "String",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~String",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 76,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "string",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~string",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 77,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "RegExp",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~RegExp",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 78,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 79,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Int8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Int8Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 80,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Uint8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 81,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Uint8ClampedArray",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8ClampedArray",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 82,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Int16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Int16Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 83,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Uint16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint16Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 84,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Int32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Int32Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 85,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Uint32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint32Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 86,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Float32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Float32Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 87,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Float64Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Float64Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 88,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Map",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Map",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 89,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Set",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Set",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 90,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "WeakMap",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~WeakMap",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 91,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "WeakSet",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~WeakSet",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 92,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "ArrayBuffer",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~ArrayBuffer",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 93,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "DataView",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~DataView",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 94,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "JSON",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~JSON",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 95,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Promise",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Promise",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 96,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Generator",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Generator",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 97,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "GeneratorFunction",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~GeneratorFunction",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 98,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Reflect",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Reflect",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 99,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Proxy",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Proxy",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 101,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "CanvasRenderingContext2D",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~CanvasRenderingContext2D",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 102,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "DocumentFragment",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~DocumentFragment",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 103,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Element",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Element",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~Element",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 104,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Event",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Event",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~Event",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 105,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "Node",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Node",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~Node",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 106,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "NodeList",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/NodeList",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~NodeList",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 107,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "XMLHttpRequest",
    "externalLink": "https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~XMLHttpRequest",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 108,
    "kind": "external",
    "static": true,
    "variation": null,
    "name": "AudioContext",
    "externalLink": "https://developer.mozilla.org/en/docs/Web/API/AudioContext",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "longname": "BuiltinExternal/WebAPIExternal.js~AudioContext",
    "access": null,
    "description": "",
    "builtinExternal": true
  }
]