{
  "version": 3,
  "sources": ["index.js", "lib/parse-geopackage.js", "geopackage-loader.js"],
  "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nexport { GeoPackageLoader } from \"./geopackage-loader.js\";\n", "/* eslint-disable camelcase, @typescript-eslint/no-use-before-define */\nimport { isBrowser } from '@loaders.gl/loader-utils';\nimport { WKBLoader } from '@loaders.gl/wkt';\nimport { binaryToGeometry, transformGeoJsonCoords } from '@loaders.gl/gis';\nimport { Proj4Projection } from '@math.gl/proj4';\nimport initSqlJs from 'sql.js';\nconst SQL_JS_VERSION = '1.8.0';\n/**\n * We pin to the same version as sql.js that we use.\n * As of March 2022, versions 1.6.0, 1.6.1, and 1.6.2 of sql.js appeared not to work.\n */\nexport const DEFAULT_SQLJS_CDN = isBrowser\n    ? `https://cdnjs.cloudflare.com/ajax/libs/sql.js/${SQL_JS_VERSION}/`\n    : null;\n// https://www.geopackage.org/spec121/#flags_layout\nconst ENVELOPE_BYTE_LENGTHS = {\n    0: 0,\n    1: 32,\n    2: 48,\n    3: 48,\n    4: 64,\n    // values 5-7 are invalid and _should_ never show up\n    5: 0,\n    6: 0,\n    7: 0\n};\n// Documentation: https://www.geopackage.org/spec130/index.html#table_column_data_types\nconst SQL_TYPE_MAPPING = {\n    BOOLEAN: 'bool',\n    TINYINT: 'int8',\n    SMALLINT: 'int16',\n    MEDIUMINT: 'int32',\n    INT: 'int32',\n    INTEGER: 'int32',\n    FLOAT: 'float32',\n    DOUBLE: 'float64',\n    REAL: 'float64',\n    TEXT: 'utf8',\n    BLOB: 'binary',\n    DATE: 'utf8',\n    DATETIME: 'utf8',\n    GEOMETRY: 'binary',\n    POINT: 'binary',\n    LINESTRING: 'binary',\n    POLYGON: 'binary',\n    MULTIPOINT: 'binary',\n    MULTILINESTRING: 'binary',\n    MULTIPOLYGON: 'binary',\n    GEOMETRYCOLLECTION: 'binary'\n};\nexport async function parseGeoPackage(arrayBuffer, options) {\n    const { sqlJsCDN = DEFAULT_SQLJS_CDN } = options?.geopackage || {};\n    const { reproject = false, _targetCrs = 'WGS84' } = options?.gis || {};\n    const db = await loadDatabase(arrayBuffer, sqlJsCDN);\n    const tables = listVectorTables(db);\n    const projections = getProjections(db);\n    const selectedTable = tables.find((table) => table.table_name === options?.geopackage?.table);\n    const tableName = selectedTable ? selectedTable.table_name : tables[0].table_name;\n    const shape = options?.geopackage?.shape;\n    switch (shape) {\n        case 'geojson-table':\n            return getVectorTable(db, tableName, projections, {\n                reproject,\n                _targetCrs\n            });\n        case 'tables':\n            // Mapping from tableName to geojson feature collection\n            const outputTables = {\n                shape: 'tables',\n                tables: []\n            };\n            for (const table of tables) {\n                const { table_name: tableName } = table;\n                outputTables.tables.push({\n                    name: tableName,\n                    table: getVectorTable(db, tableName, projections, {\n                        reproject,\n                        _targetCrs\n                    })\n                });\n            }\n            return outputTables;\n        default:\n            throw new Error(shape);\n    }\n}\n/**\n * Initialize SQL.js and create database\n *\n * @param arrayBuffer input bytes\n * @return SQL.js database object\n */\nasync function loadDatabase(arrayBuffer, sqlJsCDN) {\n    // In Node, `locateFile` must not be passed\n    let SQL;\n    if (sqlJsCDN) {\n        SQL = await initSqlJs({\n            locateFile: (file) => `${sqlJsCDN}${file}`\n        });\n    }\n    else {\n        SQL = await initSqlJs();\n    }\n    return new SQL.Database(new Uint8Array(arrayBuffer));\n}\n/**\n * Find all vector tables in GeoPackage\n * This queries the `gpkg_contents` table to find a list of vector tables\n *\n * @param db GeoPackage to query\n * @return list of table references\n */\nfunction listVectorTables(db) {\n    // The gpkg_contents table can have at least three categorical values for\n    // data_type.\n    // - 'features' refers to a vector geometry table\n    // (https://www.geopackage.org/spec121/#_contents_2)\n    // - 'tiles' refers to a raster table\n    // (https://www.geopackage.org/spec121/#_contents_3)\n    // - 'attributes' refers to a data table with no geometry\n    // (https://www.geopackage.org/spec121/#_contents_4).\n    // We hard code 'features' because for now we don't support raster data or pure attribute data\n    // eslint-disable-next-line quotes\n    const stmt = db.prepare(\"SELECT * FROM gpkg_contents WHERE data_type='features';\");\n    const vectorTablesInfo = [];\n    while (stmt.step()) {\n        const vectorTableInfo = stmt.getAsObject();\n        vectorTablesInfo.push(vectorTableInfo);\n    }\n    return vectorTablesInfo;\n}\n/**\n * Load geometries from vector table\n *\n * @param db GeoPackage object\n * @param tableName name of vector table to query\n * @param projections keys are srs_id values, values are WKT strings\n * @returns Array of GeoJSON Feature objects\n */\nfunction getVectorTable(db, tableName, projections, { reproject, _targetCrs }) {\n    const dataColumns = getDataColumns(db, tableName);\n    const geomColumn = getGeometryColumn(db, tableName);\n    const featureIdColumn = getFeatureIdName(db, tableName);\n    // Get vector features from table\n    // Don't think it's possible to parameterize the table name in SQLite?\n    const { columns, values } = db.exec(`SELECT * FROM \\`${tableName}\\`;`)[0];\n    let projection;\n    if (reproject) {\n        const geomColumnProjStr = projections[geomColumn.srs_id];\n        projection = new Proj4Projection({\n            from: geomColumnProjStr,\n            to: _targetCrs\n        });\n    }\n    const geojsonFeatures = [];\n    for (const row of values) {\n        const geojsonFeature = constructGeoJsonFeature(columns, row, geomColumn, \n        // @ts-ignore\n        dataColumns, featureIdColumn);\n        geojsonFeatures.push(geojsonFeature);\n    }\n    const schema = getSchema(db, tableName);\n    if (projection) {\n        return {\n            shape: 'geojson-table',\n            type: 'FeatureCollection',\n            // @ts-expect-error TODO - null geometries causing problems...\n            features: transformGeoJsonCoords(geojsonFeatures, projection.project),\n            schema\n        };\n    }\n    return {\n        shape: 'geojson-table',\n        schema,\n        type: 'FeatureCollection',\n        // @ts-expect-error TODO - null features\n        features: geojsonFeatures\n    };\n}\n/**\n * Find all projections defined in GeoPackage\n * This queries the gpkg_spatial_ref_sys table\n * @param db GeoPackage object\n * @returns mapping from srid to WKT projection string\n */\nfunction getProjections(db) {\n    // Query gpkg_spatial_ref_sys to get srid: srtext mappings\n    const stmt = db.prepare('SELECT * FROM gpkg_spatial_ref_sys;');\n    const projectionMapping = {};\n    while (stmt.step()) {\n        const srsInfo = stmt.getAsObject();\n        const { srs_id, definition } = srsInfo;\n        projectionMapping[srs_id] = definition;\n    }\n    return projectionMapping;\n}\n/**\n * Construct single GeoJSON feature given row's data\n * @param columns array of ordered column identifiers\n * @param row array of ordered values representing row's data\n * @param geomColumn geometry column metadata\n * @param dataColumns mapping from table column names to property name\n * @returns GeoJSON Feature object\n */\nfunction constructGeoJsonFeature(columns, row, geomColumn, dataColumns, featureIdColumn) {\n    // Find feature id\n    const idIdx = columns.indexOf(featureIdColumn);\n    const id = row[idIdx];\n    // Parse geometry columns to geojson\n    const geomColumnIdx = columns.indexOf(geomColumn.column_name);\n    const geometry = parseGeometry(row[geomColumnIdx].buffer);\n    const properties = {};\n    if (dataColumns) {\n        for (const [key, value] of Object.entries(dataColumns)) {\n            const idx = columns.indexOf(key);\n            // @ts-ignore TODO - Check what happens if null?\n            properties[value] = row[idx];\n        }\n    }\n    else {\n        // Put all columns except for the feature id and geometry in properties\n        for (let i = 0; i < columns.length; i++) {\n            if (i === idIdx || i === geomColumnIdx) {\n                // eslint-disable-next-line no-continue\n                continue;\n            }\n            const columnName = columns[i];\n            properties[columnName] = row[i];\n        }\n    }\n    return {\n        id,\n        type: 'Feature',\n        geometry,\n        properties\n    };\n}\n/**\n * Get GeoPackage version from database\n * @param db database\n * @returns version string. One of '1.0', '1.1', '1.2'\n */\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction getGeopackageVersion(db) {\n    const textDecoder = new TextDecoder();\n    // Read application id from SQLite metadata\n    const applicationIdQuery = db.exec('PRAGMA application_id;')[0];\n    const applicationId = applicationIdQuery.values[0][0];\n    // Convert 4-byte signed int32 application id to text\n    const buffer = new ArrayBuffer(4);\n    const view = new DataView(buffer);\n    view.setInt32(0, Number(applicationId));\n    const versionString = textDecoder.decode(buffer);\n    if (versionString === 'GP10') {\n        return '1.0';\n    }\n    if (versionString === 'GP11') {\n        return '1.1';\n    }\n    // If versionString is GPKG, then read user_version\n    const userVersionQuery = db.exec('PRAGMA user_version;')[0];\n    const userVersionInt = userVersionQuery.values[0][0];\n    if (userVersionInt && typeof userVersionInt === 'number' && userVersionInt < 10300) {\n        return '1.2';\n    }\n    return null;\n}\n/**\n * Find name of feature id column in table\n * The feature ID is the primary key of the table.\n * http://www.geopackage.org/spec121/#feature_user_tables\n *\n * @param db database\n * @param tableName name of table\n * @return name of feature id column\n */\nfunction getFeatureIdName(db, tableName) {\n    // Again, not possible to parameterize table name?\n    const stmt = db.prepare(`PRAGMA table_info(\\`${tableName}\\`)`);\n    while (stmt.step()) {\n        const pragmaTableInfo = stmt.getAsObject();\n        const { name, pk } = pragmaTableInfo;\n        if (pk) {\n            return name;\n        }\n    }\n    // Is it guaranteed for there always to be at least one primary key column in the table?\n    return null;\n}\n/**\n * Parse geometry buffer\n * GeoPackage vector geometries are slightly extended past the WKB standard\n * See: https://www.geopackage.org/spec121/#gpb_format\n *\n * @param arrayBuffer geometry buffer\n * @return GeoJSON geometry (in original CRS)\n */\nfunction parseGeometry(arrayBuffer) {\n    const view = new DataView(arrayBuffer);\n    const { envelopeLength, emptyGeometry } = parseGeometryBitFlags(view.getUint8(3));\n    // A Feature object has a member with the name \"geometry\".  The value of the\n    // geometry member SHALL be either a Geometry object as defined above or, in\n    // the case that the Feature is unlocated, a JSON null value.\n    /** @see https://tools.ietf.org/html/rfc7946#section-3.2 */\n    if (emptyGeometry) {\n        return null;\n    }\n    // Do I need to find the srid here? Is it necessarily the same for every\n    // geometry in a table?\n    // const srid = view.getInt32(4, littleEndian);\n    // 2 byte magic, 1 byte version, 1 byte flags, 4 byte int32 srid\n    const wkbOffset = 8 + envelopeLength;\n    // Loaders should not depend on `core` and the context passed to the main loader doesn't include a\n    // `parseSync` option, so instead we call parseSync directly on WKBLoader\n    const binaryGeometry = WKBLoader.parseSync?.(arrayBuffer.slice(wkbOffset));\n    // @ts-expect-error\n    return binaryToGeometry(binaryGeometry);\n}\n/**\n * Parse geometry header flags\n * https://www.geopackage.org/spec121/#flags_layout\n *\n * @param byte uint8 number representing flags\n * @return object representing information from bit flags\n */\nfunction parseGeometryBitFlags(byte) {\n    // Are header values little endian?\n    const envelopeValue = (byte & 0b00001110) / 2;\n    // TODO: Not sure the best way to handle this. Throw an error if envelopeValue outside 0-7?\n    const envelopeLength = ENVELOPE_BYTE_LENGTHS[envelopeValue];\n    return {\n        littleEndian: Boolean(byte & 0b00000001),\n        envelopeLength,\n        emptyGeometry: Boolean(byte & 0b00010000),\n        extendedGeometryType: Boolean(byte & 0b00100000)\n    };\n}\n/**\n * Find geometry column in given vector table\n *\n * @param db GeoPackage object\n * @param tableName Name of vector table\n * @returns Array of geometry column definitions\n */\nfunction getGeometryColumn(db, tableName) {\n    const stmt = db.prepare('SELECT * FROM gpkg_geometry_columns WHERE table_name=:tableName;');\n    stmt.bind({ ':tableName': tableName });\n    // > Requirement 30\n    // > A feature table SHALL have only one geometry column.\n    // https://www.geopackage.org/spec121/#feature_user_tables\n    // So we should need one and only one step, given that we use the WHERE clause in the SQL query\n    // above\n    stmt.step();\n    const geometryColumn = stmt.getAsObject();\n    return geometryColumn;\n}\n/**\n * Find property columns in given vector table\n * @param db GeoPackage object\n * @param tableName Name of vector table\n * @returns Mapping from table column names to property name\n */\nfunction getDataColumns(db, tableName) {\n    // gpkg_data_columns is not required to exist\n    // https://www.geopackage.org/spec121/#extension_schema\n    let stmt;\n    try {\n        stmt = db.prepare('SELECT * FROM gpkg_data_columns WHERE table_name=:tableName;');\n    }\n    catch (error) {\n        if (error.message.includes('no such table')) {\n            return null;\n        }\n        throw error;\n    }\n    stmt.bind({ ':tableName': tableName });\n    // Convert DataColumnsRow object this to a key-value {column_name: name}\n    const result = {};\n    while (stmt.step()) {\n        const column = stmt.getAsObject();\n        const { column_name, name } = column;\n        result[column_name] = name || null;\n    }\n    return result;\n}\n/**\n * Get arrow schema\n * @param db GeoPackage object\n * @param tableName  table name\n * @returns Arrow-like Schema\n */\nfunction getSchema(db, tableName) {\n    const stmt = db.prepare(`PRAGMA table_info(\\`${tableName}\\`)`);\n    const fields = [];\n    while (stmt.step()) {\n        const pragmaTableInfo = stmt.getAsObject();\n        const { name, type: sqlType, notnull } = pragmaTableInfo;\n        const type = SQL_TYPE_MAPPING[sqlType];\n        const field = { name, type, nullable: !notnull };\n        fields.push(field);\n    }\n    return { fields, metadata: {} };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { parseGeoPackage, DEFAULT_SQLJS_CDN } from \"./lib/parse-geopackage.js\";\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n// const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst VERSION = 'latest';\nexport const GeoPackageLoader = {\n    dataType: null,\n    batchType: null,\n    id: 'geopackage',\n    name: 'GeoPackage',\n    module: 'geopackage',\n    version: VERSION,\n    extensions: ['gpkg'],\n    mimeTypes: ['application/geopackage+sqlite3'],\n    category: 'geometry',\n    parse: parseGeoPackage,\n    options: {\n        geopackage: {\n            sqlJsCDN: DEFAULT_SQLJS_CDN,\n            shape: 'tables'\n        },\n        gis: {}\n    }\n};\n"],
  "mappings": "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",
  "names": ["_a", "tableName", "initSqlJs"]
}
