google-sheets-mapper 2.0.0 → 2.1.1

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.esm.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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,IAAMA,cAAc,GAAG,+CAAvB;;AAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,UAAD;MAACA;IAAAA,aAAuB;;;;EAExC,OAAOA,UAAU,CAACC,GAAX,CAAe,UAACC,SAAD;IAAA,mBAAyBA,SAAzB;GAAf,EAAqDC,IAArD,CAA0D,GAA1D,CAAP;AACD,CAHD;;AAKA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,OAAD,EAAkBC,MAAlB;EACxB,OAAUR,cAAV,SAA4BO,OAA5B,gDAA8EC,MAA9E;AACD,CAFD;;AAIA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAClBF,OADkB,EAElBG,MAFkB,EAGlBF,MAHkB;EAKlB,IAAMG,iBAAiB,GAAGV,SAAS,CAACS,MAAD,CAAnC;EAEA,OAAUV,cAAV,SAA4BO,OAA5B,yBAAuDI,iBAAvD,aAAgFH,MAAhF;AACD,CARD;;IAUMI;;;EACJ,0BAAYC,OAAZ,EAA6CC,QAA7C;;;IACE,0BAAMD,OAAN;IAD2C,cAAA,GAAAC,QAAA;IAE3CC,MAAM,CAACC,cAAP,gCAA4BJ,gBAAgB,CAACK,SAA7C;IACA,MAAKH,QAAL,GAAgBA,QAAhB;IACAI,KAAK,CAACC,iBAAN,gCAA8BP,gBAA9B;;;;;iCAL2BM;;AAS/B,IAAME,SAAS;EAAA,mFAAG,iBAAOC,GAAP,EAAoBC,MAApB;IAAA;IAAA;MAAA;QAAA;UAAA;YAAA,IAAoBA,MAApB;cAAoBA,MAApB,GAA6B,EAA7B;;;YAAA;YAAA;YAAA,OAESC,KAAK,CAACF,GAAD,EAAMC,MAAN,CAFd;;UAAA;YAERR,QAFQ;;YAAA,IAITA,QAAQ,CAACU,EAJA;cAAA;cAAA;;;YAAA,MAKN,IAAIZ,gBAAJ,kBACWS,GADX,sBAC+BP,QAAQ,CAACW,MADxC,IAEFX,QAAQ,CAACY,UAAT,UAA2BZ,QAAQ,CAACY,UAApC,GAAmD,EAFjD,GAIJ;cACED,MAAM,EAAEX,QAAQ,CAACW,MADnB;cAEEC,UAAU,EAAEZ,QAAQ,CAACY,UAFvB;cAGEL,GAAG,EAAEP,QAAQ,CAACO;aAPZ,CALM;;UAAA;YAAA;YAAA,OAiBDP,QAAQ,CAACa,IAAT,EAjBC;;UAAA;YAAA;;UAAA;YAAA;YAAA;YAmBdC,OAAO,CAACC,KAAR;YAnBc;;UAAA;UAAA;YAAA;;;;GAAH;;EAAA,gBAATT,SAAS;IAAA;;AAAA,GAAf;;AAwBA,IAAMU,UAAU,GAAG,SAAbA,UAAa,CAACC,OAAD,EAAgCC,UAAhC;EACjB,OAAOD,OAAO,CACXE,MADI,CACG,UAACC,MAAD;IAAA,OAAsBA,MAAM,CAACC,MAAP,GAAgB,CAAtC;GADH,EAEJhC,GAFI,CAEA,UAAC+B,MAAD;IAAA,OACHA,MAAM,CAACE,MAAP,CACE,UAACC,GAAD,EAAkCC,IAAlC,EAAgDC,KAAhD;MACEF,GAAG,CAACL,UAAU,CAACO,KAAD,CAAX,CAAH,GAAyBD,IAAzB;MACA,OAAOD,GAAP;KAHJ,EAKE,EALF,CADG;GAFA,CAAP;AAWD,CAZD;;AAcO,IAAMG,OAAO,GAAG,SAAVA,OAAU;MACrBC,eAAAA;kCACAC;MAAAA,iDAAgB;EAKhB,OAAOD,MAAM,CAACtC,GAAP,CAAW,UAACwC,KAAD;IAChB,IAAMC,EAAE,GAAGD,KAAK,CAACE,KAAN,CAAYC,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,EAA0BC,OAA1B,CAAkC,IAAlC,EAAwC,EAAxC,CAAX;IACA,IAAMC,IAAI,GAAGL,KAAK,CAACM,MAAN,IAAgB,EAA7B;;IAEA,IAAID,IAAI,CAACb,MAAL,GAAc,CAAlB,EAAqB;MAAA;;MACnB,IAAMe,kBAAkB,GAAGR,aAAa,CAACS,IAAd,CACzB,UAACR,KAAD;QAAA,OAAyBA,KAAK,CAACC,EAAN,KAAaA,EAAtC;OADyB,CAA3B;MAGA,IAAMQ,cAAc,4BAAGF,kBAAH,oBAAGA,kBAAkB,CAAEE,cAAvB,oCAAyC,CAA7D;MACA,IAAMC,MAAM,GAAGL,IAAI,CAACI,cAAD,CAAnB;MACA,IAAMrB,OAAO,GAAGiB,IAAI,CAACf,MAAL,CAAY,UAACqB,CAAD,EAAIf,KAAJ;QAAA,OAAsBA,KAAK,GAAGa,cAA9B;OAAZ,CAAhB;MACA,IAAMG,WAAW,GAAGzB,UAAU,CAACC,OAAD,EAAUsB,MAAV,CAA9B;MAEA,OAAO;QACLT,EAAE,EAAFA,EADK;QAELY,IAAI,EAAED;OAFR;;;IAMF,OAAO;MACLX,EAAE,EAAFA,EADK;MAELY,IAAI,EAAE;KAFR;GAnBK,CAAP;AAwBD,CA/BM;AAiCA,IAAMC,cAAc;EAAA,oFAAG;IAAA;;IAAA;MAAA;QAAA;UAAA;YAC5BjD,MAD4B,SAC5BA,MAD4B,EAE5BD,OAF4B,SAE5BA,OAF4B,8BAG5BmC,aAH4B,EAG5BA,aAH4B,oCAGZ,EAHY;YAKtBgB,WALsB,GAKRhB,aAAa,CAACvC,GAAd,CAAkB,UAACwD,MAAD;cAAA,OAA0BA,MAAM,CAACf,EAAjC;aAAlB,CALQ;YAMtBvB,GANsB,GAMhBZ,WAAW,CAACF,OAAD,EAAUmD,WAAV,EAAuBlD,MAAvB,CANK;YAAA;YAAA,OAQfY,SAAS,CAACC,GAAD,CARM;;UAAA;YAAA;;UAAA;UAAA;YAAA;;;;GAAH;;EAAA,gBAAdoC,cAAc;IAAA;;AAAA,GAApB;AAWA,IAAMG,kBAAkB;EAAA,oFAAG;IAAA;;IAAA;MAAA;QAAA;UAAA;YAChCpD,MADgC,SAChCA,MADgC,EAEhCD,OAFgC,SAEhCA,OAFgC;YAI1BsD,SAJ0B,GAIdvD,iBAAiB,CAACC,OAAD,EAAUC,MAAV,CAJH;YAAA;YAAA,OAKSY,SAAS,CAACyC,SAAD,CALlB;;UAAA;YAAA;YAKxBpB,MALwB,oBAKxBA,MALwB;YAM1BC,aAN0B,GAMVD,MAAM,CAACtC,GAAP,CAAW,UAACwC,KAAD;cAAA,OAA+B;gBAC9DC,EAAE,EAAED,KAAK,CAACmB,UAAN,CAAiBC;eADU;aAAX,CANU;YAAA;YAAA,OAUnBN,cAAc,CAAC;cAAEjD,MAAM,EAANA,MAAF;cAAUD,OAAO,EAAPA,OAAV;cAAmBmC,aAAa,EAAbA;aAApB,CAVK;;UAAA;YAAA;;UAAA;UAAA;YAAA;;;;GAAH;;EAAA,gBAAlBkB,kBAAkB;IAAA;;AAAA,GAAxB;;ACxHP,IAAMI,kBAAkB,GAAG;EACnBC,qBADmB;;;;;;;;cAEvBzD,cAAAA,QACAD,eAAAA,mCACAmC,eAAAA,gDAAgB;;;oBAIZA,aAAa,CAACP,MAAd,KAAyB;;;;;;qBACfyB,kBAAkB,CAAC;gBAAEpD,MAAM,EAANA,MAAF;gBAAUD,OAAO,EAAPA;eAAX;;;;;;;;;qBAClBkD,cAAc,CAAC;gBAAEjD,MAAM,EAANA,MAAF;gBAAUD,OAAO,EAAPA,OAAV;gBAAmBmC,aAAa,EAAbA;eAApB;;;;;;cAHpB5B;+CAKC0B,OAAO,CAAC;gBAAEC,MAAM,EAAE3B,QAAQ,CAACoD,WAAnB;gBAAgCxB,aAAa,EAAbA;eAAjC;;;;;;;;;;;;;;;AAZO,CAA3B;AAmBA,IACauB,qBAAqB,GAAGD,kBAAkB,CAACC,qBAAjD;;;;;"}
package/dist/types.d.ts DELETED
@@ -1,39 +0,0 @@
1
- export interface SheetsOption {
2
- id: string;
3
- headerRowIndex?: number;
4
- }
5
- export interface MapperOptions {
6
- apiKey: string;
7
- sheetId: string;
8
- sheetsOptions?: SheetsOption[];
9
- }
10
- export interface ValueRange {
11
- majorDimensions: string;
12
- range: string;
13
- values: string[][];
14
- }
15
- export interface ValueRangesResponse {
16
- spreadsheetId: string;
17
- valueRanges: ValueRange[];
18
- }
19
- export interface PropertiesFromResponse {
20
- title: string;
21
- }
22
- export interface SheetFromResponse {
23
- properties: PropertiesFromResponse;
24
- }
25
- export interface SheetsResponse {
26
- sheets: SheetFromResponse[];
27
- }
28
- export interface MapperState {
29
- id: string;
30
- data: object[];
31
- }
32
- export interface ApiResponse {
33
- url: string;
34
- status: number;
35
- statusText: string;
36
- }
37
- export interface ErrorResponse {
38
- response: ApiResponse;
39
- }
package/dist/utils.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import { MapperOptions, MapperState, ValueRange, ValueRangesResponse, SheetsOption } from './types';
2
- export declare const mapData: ({ sheets, sheetsOptions, }: {
3
- sheets: ValueRange[];
4
- sheetsOptions?: SheetsOption[] | undefined;
5
- }) => MapperState[];
6
- export declare const fetchBatchData: ({ apiKey, sheetId, sheetsOptions, }: MapperOptions) => Promise<ValueRangesResponse>;
7
- export declare const fetchAllSheetsData: ({ apiKey, sheetId, }: MapperOptions) => Promise<ValueRangesResponse>;