google-sheets-mapper 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-sheets-mapper.cjs.development.js","sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import {\n MapperOptions,\n MapperState,\n ApiResponse,\n ValueRange,\n SheetsResponse,\n SheetFromResponse,\n ValueRangesResponse,\n SheetsOption,\n} from './types';\n\nconst GOOGLE_API_URL = 'https://sheets.googleapis.com/v4/spreadsheets';\n\nconst getRanges = (sheetNames: string[] = []): string => {\n // ranges=Sheet1&ranges=Sheet2\n return sheetNames.map((sheetName) => `ranges=${sheetName}`).join('&');\n};\n\nconst getSheetsTitleUrl = (sheetId: string, apiKey: string): string => {\n return `${GOOGLE_API_URL}/${sheetId}?fields=sheets%2Fproperties%2Ftitle&key=${apiKey}`;\n};\n\nconst getBatchUrl = (\n sheetId: string,\n ranges: Array<string>,\n apiKey: string,\n): string => {\n const rangesQueryString = getRanges(ranges);\n\n return `${GOOGLE_API_URL}/${sheetId}/values:batchGet?${rangesQueryString}&key=${apiKey}`;\n};\n\nclass ApiResponseError extends Error {\n constructor(message: string, public readonly response: ApiResponse) {\n super(message);\n Object.setPrototypeOf(this, ApiResponseError.prototype);\n this.response = response;\n Error.captureStackTrace(this, ApiResponseError);\n }\n}\n\nconst makeFetch = async (url: string, config = {}): Promise<any> => {\n try {\n const response = await fetch(url, config);\n\n if (!response.ok) {\n throw new ApiResponseError(\n `Request to '${url}' failed with ${response.status}${\n response.statusText ? `: ${response.statusText}` : ''\n }`,\n {\n status: response.status,\n statusText: response.statusText,\n url: response.url,\n },\n );\n }\n\n return await response.json();\n } catch (error) {\n console.error(error);\n throw error;\n }\n};\n\nconst mapRecords = (records: ValueRange['values'], headerData: string[]) => {\n return records\n .filter((record: string[]) => record.length > 0)\n .map((record: string[]) =>\n record.reduce(\n (obj: { [key: string]: unknown }, item: string, index: number) => {\n obj[headerData[index]] = item;\n return obj;\n },\n {},\n ),\n );\n};\n\nexport const mapData = ({\n sheets,\n sheetsOptions = [],\n}: {\n sheets: ValueRange[];\n sheetsOptions?: SheetsOption[];\n}): MapperState[] => {\n return sheets.map((sheet: ValueRange) => {\n const id = sheet.range.split('!')[0].replace(/'/g, '');\n const rows = sheet.values || [];\n\n if (rows.length > 0) {\n const sheetsOptionsSheet = sheetsOptions.find(\n (sheet: SheetsOption) => sheet.id === id,\n );\n const headerRowIndex = sheetsOptionsSheet?.headerRowIndex ?? 0;\n const header = rows[headerRowIndex];\n const records = rows.filter((_, index: number) => index > headerRowIndex);\n const recordsData = mapRecords(records, header);\n\n return {\n id,\n data: recordsData,\n };\n }\n\n return {\n id,\n data: [],\n };\n });\n};\n\nexport const fetchBatchData = async ({\n apiKey,\n sheetId,\n sheetsOptions = [],\n}: MapperOptions): Promise<ValueRangesResponse> => {\n const sheetsNames = sheetsOptions.map((option: SheetsOption) => option.id);\n const url = getBatchUrl(sheetId, sheetsNames, apiKey);\n\n return await makeFetch(url);\n};\n\nexport const fetchAllSheetsData = async ({\n apiKey,\n sheetId,\n}: MapperOptions): Promise<ValueRangesResponse> => {\n const urlTitles = getSheetsTitleUrl(sheetId, apiKey);\n const { sheets }: SheetsResponse = await makeFetch(urlTitles);\n const sheetsOptions = sheets.map((sheet: SheetFromResponse) => ({\n id: sheet.properties.title,\n }));\n\n return await fetchBatchData({ apiKey, sheetId, sheetsOptions });\n};\n","import { MapperOptions, MapperState, ValueRangesResponse } from './types';\nimport { fetchBatchData, fetchAllSheetsData, mapData } from './utils';\n\nconst GoogleSheetsMapper = {\n async fetchGoogleSheetsData({\n apiKey,\n sheetId,\n sheetsOptions = [],\n }: MapperOptions): Promise<MapperState[]> {\n try {\n const response: ValueRangesResponse =\n sheetsOptions.length === 0\n ? await fetchAllSheetsData({ apiKey, sheetId })\n : await fetchBatchData({ apiKey, sheetId, sheetsOptions });\n\n return mapData({ sheets: response.valueRanges, sheetsOptions });\n } catch (error) {\n throw error;\n }\n },\n};\n\nexport default GoogleSheetsMapper;\nexport const fetchGoogleSheetsData = GoogleSheetsMapper.fetchGoogleSheetsData;\n"],"names":["GOOGLE_API_URL","getRanges","sheetNames","map","sheetName","join","getSheetsTitleUrl","sheetId","apiKey","getBatchUrl","ranges","rangesQueryString","ApiResponseError","message","response","Object","setPrototypeOf","prototype","Error","captureStackTrace","makeFetch","url","config","fetch","ok","status","statusText","json","console","error","mapRecords","records","headerData","filter","record","length","reduce","obj","item","index","mapData","sheets","sheetsOptions","sheet","id","range","split","replace","rows","values","sheetsOptionsSheet","find","headerRowIndex","header","_","recordsData","data","fetchBatchData","sheetsNames","option","fetchAllSheetsData","urlTitles","properties","title","GoogleSheetsMapper","fetchGoogleSheetsData","valueRanges"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";function t(){t=function(){return e};var e={},r=Object.prototype,n=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var o=Object.create((e&&e.prototype instanceof l?e:l).prototype),i=new E(n||[]);return o._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=b(a,r);if(u){if(u===h)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=f(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===h)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(t,r,i),o}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=s;var h={};function l(){}function p(){}function v(){}var d={};c(d,i,(function(){return this}));var y=Object.getPrototypeOf,g=y&&y(y(_([])));g&&g!==r&&n.call(g,i)&&(d=g);var w=v.prototype=l.prototype=Object.create(d);function m(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){var r;this._invoke=function(o,i){function a(){return new e((function(r,a){!function r(o,i,a,u){var c=f(t[o],t,i);if("throw"!==c.type){var s=c.arg,h=s.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,a,u)}),(function(t){r("throw",t,a,u)})):e.resolve(h).then((function(t){s.value=t,a(s)}),(function(t){return r("throw",t,a,u)}))}u(c.arg)}(o,i,r,a)}))}return r=r?r.then(a,a):a()}}function b(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,b(t,e),"throw"===e.method))return h;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var n=f(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,h;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,h):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,h)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function _(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:j}}function j(){return{value:void 0,done:!0}}return p.prototype=v,c(w,"constructor",v),c(v,"constructor",p),p.displayName=c(v,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,c(t,u,"GeneratorFunction")),t.prototype=Object.create(w),t},e.awrap=function(t){return{__await:t}},m(x.prototype),c(x.prototype,a,(function(){return this})),e.AsyncIterator=x,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new x(s(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},m(w),c(w,u,"Generator"),c(w,i,(function(){return this})),c(w,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=_,E.prototype={constructor:E,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(L),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,h):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),h},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),L(r),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;L(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:_(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},e}function e(t,e,r,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}function r(t){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=t.apply(r,n);function u(t){e(a,o,i,u,c,"next",t)}function c(t){e(a,o,i,u,c,"throw",t)}u(void 0)}))}}function n(t){return(n=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function i(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function a(t,e,r){return(a=i()?Reflect.construct.bind():function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i}).apply(null,arguments)}function u(t){var e="function"==typeof Map?new Map:void 0;return(u=function(t){if(null===t||-1===Function.toString.call(t).indexOf("[native code]"))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return a(t,arguments,n(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),o(r,t)})(t)}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}Object.defineProperty(exports,"__esModule",{value:!0});var s="https://sheets.googleapis.com/v4/spreadsheets",f=function(t,e){return s+"/"+t+"?fields=sheets%2Fproperties%2Ftitle&key="+e},h=function(t,e,r){var n,o=(void 0===(n=e)&&(n=[]),n.map((function(t){return"ranges="+t})).join("&"));return s+"/"+t+"/values:batchGet?"+o+"&key="+r},l=function(t){var e,r;function n(e,r){var o;return(o=t.call(this,e)||this).response=r,Object.setPrototypeOf(c(o),n.prototype),o.response=r,Error.captureStackTrace(c(o),n),o}return r=t,(e=n).prototype=Object.create(r.prototype),e.prototype.constructor=e,o(e,r),n}(u(Error)),p=function(){var e=r(t().mark((function e(r,n){var o;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return void 0===n&&(n={}),t.prev=1,t.next=4,fetch(r,n);case 4:if((o=t.sent).ok){t.next=7;break}throw new l("Request to '"+r+"' failed with "+o.status+(o.statusText?": "+o.statusText:""),{status:o.status,statusText:o.statusText,url:o.url});case 7:return t.next=9,o.json();case 9:return t.abrupt("return",t.sent);case 12:throw t.prev=12,t.t0=t.catch(1),console.error(t.t0),t.t0;case 16:case"end":return t.stop()}}),e,null,[[1,12]])})));return function(t,r){return e.apply(this,arguments)}}(),v=function(t){var e=t.sheetsOptions,r=void 0===e?[]:e;return t.sheets.map((function(t){var e,n,o=t.range.split("!")[0].replace(/'/g,""),i=t.values||[];if(i.length>0){var a,u=r.find((function(t){return t.id===o})),c=null!=(a=null==u?void 0:u.headerRowIndex)?a:0,s=i[c],f=(e=i.filter((function(t,e){return e>c})),n=s,e.filter((function(t){return t.length>0})).map((function(t){return t.reduce((function(t,e,r){return t[n[r]]=e,t}),{})})));return{id:o,data:f}}return{id:o,data:[]}}))},d=function(){var e=r(t().mark((function e(r){var n,o,i,a,u;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=r.apiKey,o=r.sheetId,a=(void 0===(i=r.sheetsOptions)?[]:i).map((function(t){return t.id})),u=h(o,a,n),t.next=5,p(u);case 5:return t.abrupt("return",t.sent);case 6:case"end":return t.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),y=function(){var e=r(t().mark((function e(r){var n,o,i,a;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=f(o=r.sheetId,n=r.apiKey),t.next=4,p(i);case 4:return a=t.sent.sheets.map((function(t){return{id:t.properties.title}})),t.next=9,d({apiKey:n,sheetId:o,sheetsOptions:a});case 9:return t.abrupt("return",t.sent);case 10:case"end":return t.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),g={fetchGoogleSheetsData:function(e){return r(t().mark((function r(){var n,o,i,a;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.apiKey,o=e.sheetId,a=void 0===(i=e.sheetsOptions)?[]:i,t.prev=1,0!==a.length){t.next=8;break}return t.next=5,y({apiKey:n,sheetId:o});case 5:t.t0=t.sent,t.next=11;break;case 8:return t.next=10,d({apiKey:n,sheetId:o,sheetsOptions:a});case 10:t.t0=t.sent;case 11:return t.abrupt("return",v({sheets:t.t0.valueRanges,sheetsOptions:a}));case 15:throw t.prev=15,t.t1=t.catch(1),t.t1;case 18:case"end":return t.stop()}}),r,null,[[1,15]])})))()}},w=g.fetchGoogleSheetsData;exports.default=g,exports.fetchGoogleSheetsData=w;
2
- //# sourceMappingURL=google-sheets-mapper.cjs.production.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-sheets-mapper.cjs.production.min.js","sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import {\n MapperOptions,\n MapperState,\n ApiResponse,\n ValueRange,\n SheetsResponse,\n SheetFromResponse,\n ValueRangesResponse,\n SheetsOption,\n} from './types';\n\nconst GOOGLE_API_URL = 'https://sheets.googleapis.com/v4/spreadsheets';\n\nconst getRanges = (sheetNames: string[] = []): string => {\n // ranges=Sheet1&ranges=Sheet2\n return sheetNames.map((sheetName) => `ranges=${sheetName}`).join('&');\n};\n\nconst getSheetsTitleUrl = (sheetId: string, apiKey: string): string => {\n return `${GOOGLE_API_URL}/${sheetId}?fields=sheets%2Fproperties%2Ftitle&key=${apiKey}`;\n};\n\nconst getBatchUrl = (\n sheetId: string,\n ranges: Array<string>,\n apiKey: string,\n): string => {\n const rangesQueryString = getRanges(ranges);\n\n return `${GOOGLE_API_URL}/${sheetId}/values:batchGet?${rangesQueryString}&key=${apiKey}`;\n};\n\nclass ApiResponseError extends Error {\n constructor(message: string, public readonly response: ApiResponse) {\n super(message);\n Object.setPrototypeOf(this, ApiResponseError.prototype);\n this.response = response;\n Error.captureStackTrace(this, ApiResponseError);\n }\n}\n\nconst makeFetch = async (url: string, config = {}): Promise<any> => {\n try {\n const response = await fetch(url, config);\n\n if (!response.ok) {\n throw new ApiResponseError(\n `Request to '${url}' failed with ${response.status}${\n response.statusText ? `: ${response.statusText}` : ''\n }`,\n {\n status: response.status,\n statusText: response.statusText,\n url: response.url,\n },\n );\n }\n\n return await response.json();\n } catch (error) {\n console.error(error);\n throw error;\n }\n};\n\nconst mapRecords = (records: ValueRange['values'], headerData: string[]) => {\n return records\n .filter((record: string[]) => record.length > 0)\n .map((record: string[]) =>\n record.reduce(\n (obj: { [key: string]: unknown }, item: string, index: number) => {\n obj[headerData[index]] = item;\n return obj;\n },\n {},\n ),\n );\n};\n\nexport const mapData = ({\n sheets,\n sheetsOptions = [],\n}: {\n sheets: ValueRange[];\n sheetsOptions?: SheetsOption[];\n}): MapperState[] => {\n return sheets.map((sheet: ValueRange) => {\n const id = sheet.range.split('!')[0].replace(/'/g, '');\n const rows = sheet.values || [];\n\n if (rows.length > 0) {\n const sheetsOptionsSheet = sheetsOptions.find(\n (sheet: SheetsOption) => sheet.id === id,\n );\n const headerRowIndex = sheetsOptionsSheet?.headerRowIndex ?? 0;\n const header = rows[headerRowIndex];\n const records = rows.filter((_, index: number) => index > headerRowIndex);\n const recordsData = mapRecords(records, header);\n\n return {\n id,\n data: recordsData,\n };\n }\n\n return {\n id,\n data: [],\n };\n });\n};\n\nexport const fetchBatchData = async ({\n apiKey,\n sheetId,\n sheetsOptions = [],\n}: MapperOptions): Promise<ValueRangesResponse> => {\n const sheetsNames = sheetsOptions.map((option: SheetsOption) => option.id);\n const url = getBatchUrl(sheetId, sheetsNames, apiKey);\n\n return await makeFetch(url);\n};\n\nexport const fetchAllSheetsData = async ({\n apiKey,\n sheetId,\n}: MapperOptions): Promise<ValueRangesResponse> => {\n const urlTitles = getSheetsTitleUrl(sheetId, apiKey);\n const { sheets }: SheetsResponse = await makeFetch(urlTitles);\n const sheetsOptions = sheets.map((sheet: SheetFromResponse) => ({\n id: sheet.properties.title,\n }));\n\n return await fetchBatchData({ apiKey, sheetId, sheetsOptions });\n};\n","import { MapperOptions, MapperState, ValueRangesResponse } from './types';\nimport { fetchBatchData, fetchAllSheetsData, mapData } from './utils';\n\nconst GoogleSheetsMapper = {\n async fetchGoogleSheetsData({\n apiKey,\n sheetId,\n sheetsOptions = [],\n }: MapperOptions): Promise<MapperState[]> {\n try {\n const response: ValueRangesResponse =\n sheetsOptions.length === 0\n ? await fetchAllSheetsData({ apiKey, sheetId })\n : await fetchBatchData({ apiKey, sheetId, sheetsOptions });\n\n return mapData({ sheets: response.valueRanges, sheetsOptions });\n } catch (error) {\n throw error;\n }\n },\n};\n\nexport default GoogleSheetsMapper;\nexport const fetchGoogleSheetsData = GoogleSheetsMapper.fetchGoogleSheetsData;\n"],"names":["GOOGLE_API_URL","getSheetsTitleUrl","sheetId","apiKey","getBatchUrl","ranges","sheetNames","rangesQueryString","map","sheetName","join","ApiResponseError","message","response","_this","Object","setPrototypeOf","prototype","Error","captureStackTrace","makeFetch","url","config","_context","fetch","ok","status","statusText","json","console","error","mapData","sheetsOptions","sheets","sheet","records","headerData","id","range","split","replace","rows","values","length","sheetsOptionsSheet","find","headerRowIndex","header","recordsData","filter","_","index","record","reduce","obj","item","data","fetchBatchData","sheetsNames","option","_context2","fetchAllSheetsData","urlTitles","_context3","properties","title","GoogleSheetsMapper","fetchGoogleSheetsData","valueRanges"],"mappings":"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"}