Skip to content

Commit

Permalink
feat: make the instance be passed directly
Browse files Browse the repository at this point in the history
  • Loading branch information
Gumball12 committed Feb 28, 2024
1 parent f175e1a commit 323a951
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 57 deletions.
19 changes: 6 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,6 @@ This library automatically generates TypeScript types (`*.d.ts`) by parsing Goog
- Generate types(`*.d.ts`) for Google Sheets at the desired location
- Customize the type and type file name

### TODO

- CLI (`npx google-spreadsheet-dts ...`)
- Private Google Sheets parser

## 📦 Install

```bash
Expand All @@ -44,6 +39,8 @@ import { generateDts } from 'google-spreadsheet-dts';
import { resolve } from 'node:path';
import { publicGoogleSheetsParser } from 'google-spreadsheet-dts/parser';

import PublicGoogleSheetsParser from 'public-google-sheets-parser';

generateDts({
name: 'GoogleSheets',
directory: resolve(__dirname, '../src'),
Expand All @@ -60,12 +57,9 @@ generateDts({

// Specify the Google Sheets to parse
parser: publicGoogleSheetsParser({
spreadSheetId: '1j23zhzHcPd_LzDQ7uPrXgMJfPoZYs289boUKoKnAjUo',
instance: new PublicGoogleSheetsParser(/* ... */),
path: ['Key', 'Property'],
typeName: 'Type',
publicGoogleSheetsParser: {
sheetName: 'ParserTest',
},
}),
});
```
Expand All @@ -86,6 +80,8 @@ const { generateDts } = require('google-spreadsheet-dts');
const { resolve } = require('node:path');
const { publicGoogleSheetsParser } = require('google-spreadsheet-dts/parser');

const PublicGoogleSheetsParser = require('public-google-sheets-parser');

generateDts({
name: 'GoogleSheets',
directory: resolve(__dirname, '../src'),
Expand All @@ -100,12 +96,9 @@ generateDts({
}

parser: publicGoogleSheetsParser({
spreadSheetId: '1j23zhzHcPd_LzDQ7uPrXgMJfPoZYs289boUKoKnAjUo',
instance: new PublicGoogleSheetsParser(/* ... */),
path: ['Key', 'Property'],
typeName: 'Type',
publicGoogleSheetsParser: {
sheetName: 'ParserTest',
},
}),
});
```
Expand Down
22 changes: 8 additions & 14 deletions src/__tests__/parser.test.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
import { describe, it, expect } from 'vitest';
import { publicGoogleSheetsParser } from '../parser';

const SPREADSHEET_ID = '1j23zhzHcPd_LzDQ7uPrXgMJfPoZYs289boUKoKnAjUo';
import PublicGoogleSheetsParser from 'public-google-sheets-parser';

// https://docs.google.com/spreadsheets/d/1j23zhzHcPd_LzDQ7uPrXgMJfPoZYs289boUKoKnAjUo/edit#gid=0
const SHEET_NAME = 'ParserTest';
const SPREADSHEET_ID = '1j23zhzHcPd_LzDQ7uPrXgMJfPoZYs289boUKoKnAjUo';

describe('publicGoogleSheetsParser', () => {
const instance = new PublicGoogleSheetsParser(SPREADSHEET_ID, {
sheetName: SHEET_NAME,
});

const expected = {
click_conversation_data: {
conversation_id: 'string',
Expand All @@ -25,29 +29,19 @@ describe('publicGoogleSheetsParser', () => {

it('Common forms', async () => {
const parsed = await publicGoogleSheetsParser({
spreadsheetId: SPREADSHEET_ID,
instance,
path: ['Key', 'Property'],
typeName: 'Type',
options: {
publicGoogleSheetsParser: {
sheetName: SHEET_NAME,
},
},
})();

expect(parsed).toEqual(expected);
});

it('With empty lines', async () => {
const parsed = await publicGoogleSheetsParser({
spreadsheetId: SPREADSHEET_ID,
instance,
path: ['Key', 'Property'],
typeName: 'Type',
options: {
publicGoogleSheetsParser: {
sheetName: `${SHEET_NAME}-EmptyLines`,
},
},
})();

expect(parsed).toEqual(expected);
Expand Down
21 changes: 7 additions & 14 deletions src/parser/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,21 @@

## public-google-sheets-parser

A parser that parses public Google Sheets. This parser uses [public-google-sheets-parser](https://github.com/fureweb-com/public-google-sheets-parser).
A parser that parses **public** Google Sheets. This parser uses [public-google-sheets-parser](https://github.com/fureweb-com/public-google-sheets-parser).

### Usage

```ts
import { generateDts } from 'google-spreadsheet-dts';
import { publicGoogleSheetsParser } from 'google-spreadsheet-dts/parser';

import PublicGoogleSheetsParser from 'public-google-sheets-parser';

const instance = new PublicGoogleSheetsParser(/* ... */);
const parser = publicGoogleSheetsParser({
spreadSheetId: '1j23zhzHcPd_LzDQ7uPrXgMJfPoZYs289boUKoKnAjUo',
instance,
path: ['Key', 'Property'],
typeName: 'Type',
publicGoogleSheetsParser: {
sheetName: 'ParserTest',
},
});

generateDts({
Expand All @@ -35,22 +35,15 @@ generateDts({

```ts
function publicGoogleSheetsParser(options: {
spreadSheetId: string;
instance: PublicGoogleSheetsParser;
path: string[];
typeName: string;
publicGoogleSheetsParser: PublicGoogleSheetsParserOptions;
}): Parser;

type PublicGoogleSheetsParserOptions = {
sheetName: string;
};
```

- `spreadSheetId`: Google Sheets ID
- `instance`: An instance of [`PublicGoogleSheetsParser`](https://github.com/fureweb-com/public-google-sheets-parser?tab=readme-ov-file#usage-example)
- `path`: List of column names where object property names exists
- `typeName`: Column name where the type name exists
- `publicGoogleSheets`
- `sheetName`: Google Sheets sheet name

For example, given the following Google Sheets:

Expand Down
20 changes: 4 additions & 16 deletions src/parser/publicGoogleSheetsParser.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,18 @@
// Parser for public-google-sheets-parser
// https://github.com/fureweb-com/public-google-sheets-parser

import PublicGoogleSheetsParser from 'public-google-sheets-parser';

type SheetName = string;
type PublicGoogleSheetsParserOptions = { sheetName: SheetName };

type Options = Partial<{
publicGoogleSheetsParser: PublicGoogleSheetsParserOptions;
}>;
import type PublicGoogleSheetsParser from 'public-google-sheets-parser';

type Params = {
spreadsheetId: string;
instance: PublicGoogleSheetsParser;
path: string[];
typeName: string;
options?: Options;
};

export const publicGoogleSheetsParser =
({ spreadsheetId, path, typeName, options }: Params) =>
({ instance, path, typeName }: Params) =>
async (): Promise<object> => {
const parser = new PublicGoogleSheetsParser(
spreadsheetId,
options?.publicGoogleSheetsParser,
);
const data = await parser.parse();
const data = await instance.parse();

const filledData = data.map((item, index, data) => {
if (index === 0) {
Expand Down

0 comments on commit 323a951

Please sign in to comment.