{"version":3,"sources":["jsdelivr-header.js","/npm/google-cloud-bigquery@1.0.0/index.js"],"names":[],"mappings":"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","file":"/npm/google-cloud-bigquery@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/google-cloud-bigquery@1.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Copyright (c) 2018, Neap Pty Ltd.\n * All rights reserved.\n * \n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree.\n*/\n\nconst { GoogleAuth } = require('google-auth-library')\nconst bigQuery = require('./src')\nconst { fitToSchema, fieldsToSchema } = require('./src/format')\nconst { obj, promise: { retry } } = require('./utils')\n\nconst TWO_MB = 2*1024*1024\nconst TEN_MB = 10*1024*1024\nconst DEFAULT_MAX_ROW_INSERT = 500\n\nconst _retryFn = (fn, options={}) => retry(\n\tfn, \n\t() => true, \n\terr => ((err || {}).message || '').indexOf('BigQuery streaming insert quotas exceeded') < 0,\n\t{ ignoreFailure: true, retryInterval: [500, 2000], timeOut: options.timeout || 10000 })\n\nconst _throwHttpErrorIfBadStatus = res => Promise.resolve(null).then(() => {\n\tif (res && res.status && res.status >= 400) {\n\t\tconst errorMsg = `Failed with error ${res.status}.${res.data ? ` Details:\\n${JSON.stringify(res.data, null, ' ')}` : ''}`\n\t\tthrow new Error(errorMsg)\n\t}\n\treturn res \n}) \n\n/**\n * Creates a BigQuery client. \n * \n * @param  {String} \tconfig.jsonKeyFile    \t\t\t\tPath to the service account JSON file.\n * @param  {String} \tconfig.credentials.project_id    \t\t\t\t\n * @param  {String} \tconfig.credentials.client_email    \t\t\t\t\n * @param  {String} \tconfig.credentials.private_key\n * @param  {String} \tconfig.credentials.location_id   \t\t\t\t\n * @param  {Function} \tconfig.getToken       \t\t\t\tOptional. Only used for unit test mocking\n * @return {String}\n */\nconst createClient = config => {\n\tconst { jsonKeyFile, credentials, getToken } = config || {}\n\tlet { project_id:projectId, location_id, client_email, private_key } = credentials ? credentials : jsonKeyFile ? require(jsonKeyFile) : {}\n\t\n\tprojectId = projectId || process.env.GOOGLE_CLOUD_BIGQUERY_PROJECT_ID || process.env.GOOGLE_CLOUD_PROJECT_ID\n\tlocation_id = location_id || process.env.GOOGLE_CLOUD_BIGQUERY_LOCATION_ID || process.env.GOOGLE_CLOUD_LOCATION_ID\n\tclient_email = client_email || process.env.GOOGLE_CLOUD_BIGQUERY_CLIENT_EMAIL || process.env.GOOGLE_CLOUD_CLIENT_EMAIL\n\tprivate_key = private_key || process.env.GOOGLE_CLOUD_BIGQUERY_PRIVATE_KEY || process.env.GOOGLE_CLOUD_PRIVATE_KEY\n\n\tconst authConfig = {\n\t\tscopes: ['https://www.googleapis.com/auth/cloud-platform']\n\t}\n\n\tif (client_email && private_key)\n\t\tauthConfig.credentials = { client_email, private_key }\n\n\tconst auth = new GoogleAuth(authConfig)\n\n\tconst getProjectId = () => Promise.resolve(null)\n\t\t.then(() => projectId ? projectId : auth.getProjectId())\n\t\t.then(id => {\n\t\t\tif (!id)\n\t\t\t\tthrow new Error('Missing required \\'projectId\\'. The \\'projectId\\' was not defined explicitly nor was it found in the application default credentials.')\n\t\t\tif (!projectId)\n\t\t\t\tprojectId = id \n\n\t\t\treturn id\n\t\t})\n\n\tlet __getToken\n\tif (getToken)\n\t\t__getToken = getToken\n\telse\n\t\t__getToken = () => auth.getAccessToken()\n\n\t/**\n\t * [description]\n\t * @param  {[type]}  projectId \t\t\t\t[description]\n\t * @param  {[type]}  db        \t\t\t\t[description]\n\t * @param  {[type]}  table     \t\t\t\t[description]\n\t * @param  {[type]}  data      \t\t\t\t[description]\n\t * @param  {[type]}  token     \t\t\t\t[description]\n\t * @param  {Boolean} options.safeMode   \t[description]\n\t * @param  {Number}  options.batchSize   \t[description]\n\t * @param  {Number}  options.batchCount \t[description]\n\t * @return {[type]}           [description]\n\t */\n\tconst _retryInsert = (projectId, db, table, data, token, options={}) => {\n\t\tif (options.safeMode) {\n\t\t\tdata = data || []\n\t\t\tlet batchSize = (options || {}).batchSize || TWO_MB\n\t\t\tif (batchSize > TEN_MB)\n\t\t\t\tbatchSize = TEN_MB\n\t\t\tconst batchCount = (options || {}).batchCount || DEFAULT_MAX_ROW_INSERT\n\n\t\t\tconst { batchRows, currentBatch } = data.filter(x => x).reduce((acc,d) => {\n\t\t\t\tconst byteSize = JSON.stringify(d).length\n\t\t\t\tconst newByteSize = acc.currentBatchByteSize + byteSize\n\t\t\t\tconst newSize = acc.currentBatchSize + 1\n\n\t\t\t\tif (newByteSize >= batchSize || newSize >= batchCount) {\n\t\t\t\t\tif (acc.currentBatch.length > 0)\n\t\t\t\t\t\tacc.batchRows.push(acc.currentBatch)\n\t\t\t\t\tacc.currentBatchByteSize = byteSize\n\t\t\t\t\tacc.currentBatchSize = 1\n\t\t\t\t\tacc.currentBatch = [d]\n\t\t\t\t} else {\n\t\t\t\t\tacc.currentBatchByteSize = newByteSize\n\t\t\t\t\tacc.currentBatchSize = newSize\n\t\t\t\t\tacc.currentBatch.push(d)\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn acc\n\t\t\t}, { currentBatchByteSize:0, currentBatchSize:0, currentBatch:[], batchRows:[] })\n\n\t\t\tif (currentBatch.length > 0)\n\t\t\t\tbatchRows.push(currentBatch)\n\n\t\t\treturn batchRows\n\t\t\t\t.reduce((job, dataBatch) => \n\t\t\t\t\tjob.then(() => _retryInsert(projectId, db, table, dataBatch, token, obj.merge(options, { safeMode: false }))), \n\t\t\t\tPromise.resolve(null))\n\t\t} else\n\t\t\treturn _retryFn(() => bigQuery.table.insert(projectId, db, table, data, token, options), options)\n\t}\n\n\treturn {\n\t\tdb: {\n\t\t\t'get': db => {\n\t\t\t\tif (!db)\n\t\t\t\t\tthrow new Error('Missing required argument \\'db\\'')\n\t\t\t\treturn { \n\t\t\t\t\tname: db,\n\t\t\t\t\ttable: (table) => ({\n\t\t\t\t\t\tname: table,\n\t\t\t\t\t\t'get': () => __getToken().then(token => getProjectId().then(_projectId => bigQuery.table.get(_projectId, db, table, token))).then(({ data }) => data),\n\t\t\t\t\t\t'exists': () => __getToken().then(token => getProjectId().then(_projectId => bigQuery.table.get(_projectId, db, table, token))).then(({ status, data }) =>{\n\t\t\t\t\t\t\tif (status >= 200 && status < 300)\n\t\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t\telse if (status == 404)\n\t\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet e  = new Error('Unknown error')\n\t\t\t\t\t\t\t\te.code = status\n\t\t\t\t\t\t\t\te.data = data \n\t\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\tfromStorage: ({ sources=[] }) => __getToken().then(token => getProjectId().then(_projectId => bigQuery.table.loadData(_projectId, db, table, sources, token))),\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * [description]\n\t\t\t\t\t\t\t * @param  {[type]}  data            \t\t\t[description]\n\t\t\t\t\t\t\t * @param  {[type]}  options.templateSuffix  \t[description]\n\t\t\t\t\t\t\t * @param  {Boolean} options.skipInvalidRows \t[description]\n\t\t\t\t\t\t\t * @param  {[type]}  options.forcedSchema    \t[description]\n\t\t\t\t\t\t\t * @param  {[type]}  options.insert          \t[description]\n\t\t\t\t\t\t\t * @param  {Boolean} options.safeMode        \t[description]\n\t\t\t\t\t\t\t * @param  {Number}  options.batchSize   \t\t[description]\n\t\t\t\t\t\t\t * @param  {Number}  options.batchCount \t\t[description]\n\t\t\t\t\t\t\t * @param  {[type]}  options.timeout         \t[description]\n\t\t\t\t\t\t\t * @return {[type]}                          \t[description]\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tvalues: ({ data, templateSuffix, skipInvalidRows=false, forcedSchema, insert, safeMode=false, batchSize, batchCount, timeout }) => __getToken().then(token => {\n\t\t\t\t\t\t\t\tconst d = Array.isArray(data) ? data : [data]\n\t\t\t\t\t\t\t\tconst dd = forcedSchema ? d.map(x => fitToSchema(x,forcedSchema)) : d\n\t\t\t\t\t\t\t\tconst _insert = insert || _retryInsert\n\t\t\t\t\t\t\t\treturn getProjectId().then(_projectId => _insert(_projectId, db, table, dd, token, { templateSuffix, skipInvalidRows, safeMode, timeout, batchSize, batchCount })).then(res => {\n\t\t\t\t\t\t\t\t\tres = res || {}\n\t\t\t\t\t\t\t\t\tres.payload = dd\n\t\t\t\t\t\t\t\t\treturn res\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}).then(_throwHttpErrorIfBadStatus)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcreate: {\n\t\t\t\t\t\t\tnew: ({ schema={} }) => __getToken().then(token => getProjectId().then(_projectId => bigQuery.table.create(_projectId, db, table, schema, token))).then(({ data }) => data),\n\t\t\t\t\t\t\tfromStorage: ({ sources=[] }) => __getToken().then(token => getProjectId().then(_projectId => bigQuery.table.createFromStorage(_projectId, db, table, sources, token))).then(({ data }) => data)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\tisDiff: (schema) => __getToken().then(token => getProjectId().then(_projectId => bigQuery.table.get(_projectId, db, table, token))).then(({ data }) => {\n\t\t\t\t\t\t\t\tif (!schema)\n\t\t\t\t\t\t\t\t\tthrow new Error('Missing required \\'schema\\' argument.')\n\t\t\t\t\t\t\t\tif (Object.keys(schema).length == 0)\n\t\t\t\t\t\t\t\t\tthrow new Error('Wrong argument \\'schema\\'. This object must at least contain one property.')\n\n\t\t\t\t\t\t\t\tif (!data.schema || !(data.schema.fields || []).some(x => x))\n\t\t\t\t\t\t\t\t\treturn true\n\n\t\t\t\t\t\t\t\tconst currentSchema = fieldsToSchema(data.schema.fields)\n\t\t\t\t\t\t\t\treturn !obj.same(schema, currentSchema)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdate: (schema) => __getToken().then(token => getProjectId().then(_projectId => bigQuery.table.update(_projectId, db, table, schema, token))).then(({ data }) => data)\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tquery: {\n\t\t\t\t\t\texecute: ({ sql, params, pageSize=1000, timeout=10000, useLegacySql=false }) => __getToken()\n\t\t\t\t\t\t\t.then(token => _retryFn(\n\t\t\t\t\t\t\t\t() => getProjectId().then(_projectId => bigQuery.query.execute(_projectId, location_id, sql, params, token, { pageSize, timeout, useLegacySql })),\n\t\t\t\t\t\t\t\t{ timeout }))\n\t\t\t\t\t\t\t.then(_throwHttpErrorIfBadStatus)\n\t\t\t\t\t\t\t.then(({ data }) => data)\n\t\t\t\t\t},\n\t\t\t\t\texists: () => __getToken().then(token => getProjectId().then(_projectId => bigQuery.db.get(_projectId, db, token))).then(({ status, data }) =>{\n\t\t\t\t\t\tif (status >= 200 && status < 300)\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\telse if (status == 404)\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet e  = new Error('Unknown error')\n\t\t\t\t\t\t\te.code = status\n\t\t\t\t\t\t\te.data = data \n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tjob: {\n\t\t\t'get': ({ jobId }) => __getToken().then(token => getProjectId().then(_projectId => bigQuery.job.get(_projectId, location_id, jobId, token)))\n\t\t}\n\t}\n}\n\nmodule.exports = {\n\tformat: require('./src/format'),\n\tclient: {\n\t\tnew: createClient\n\t}\n}\n\n\n\n"]}