read-excel-file 9.0.6 → 9.0.7

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +31 -13
  3. package/browser/index.d.ts +53 -30
  4. package/bundle/read-excel-file.min.js.map +1 -1
  5. package/commonjs/export/parseSheet.js +14 -1
  6. package/commonjs/export/parseSheet.js.map +1 -1
  7. package/commonjs/export/readXlsxFileBrowser.js +1 -1
  8. package/commonjs/export/readXlsxFileBrowser.js.map +1 -1
  9. package/commonjs/export/readXlsxFileNode.js +1 -1
  10. package/commonjs/export/readXlsxFileNode.js.map +1 -1
  11. package/commonjs/export/readXlsxFileUniversal.js +1 -1
  12. package/commonjs/export/readXlsxFileUniversal.js.map +1 -1
  13. package/commonjs/export/readXlsxFileWebWorker.js +1 -1
  14. package/commonjs/export/readXlsxFileWebWorker.js.map +1 -1
  15. package/commonjs/parseSheetData/parseSheetData.js +4 -1
  16. package/commonjs/parseSheetData/parseSheetData.js.map +1 -1
  17. package/commonjs/parseSheetData/parseSheetData.test.js.map +1 -1
  18. package/commonjs/xlsx/parseSpreadsheetContents.js +1 -1
  19. package/commonjs/xlsx/parseSpreadsheetContents.js.map +1 -1
  20. package/modules/export/parseSheet.js +15 -1
  21. package/modules/export/parseSheet.js.map +1 -1
  22. package/modules/export/readXlsxFileBrowser.js +1 -1
  23. package/modules/export/readXlsxFileBrowser.js.map +1 -1
  24. package/modules/export/readXlsxFileNode.js +1 -1
  25. package/modules/export/readXlsxFileNode.js.map +1 -1
  26. package/modules/export/readXlsxFileUniversal.js +1 -1
  27. package/modules/export/readXlsxFileUniversal.js.map +1 -1
  28. package/modules/export/readXlsxFileWebWorker.js +1 -1
  29. package/modules/export/readXlsxFileWebWorker.js.map +1 -1
  30. package/modules/parseSheetData/parseSheetData.js +4 -1
  31. package/modules/parseSheetData/parseSheetData.js.map +1 -1
  32. package/modules/parseSheetData/parseSheetData.test.js.map +1 -1
  33. package/modules/xlsx/parseSpreadsheetContents.js +1 -1
  34. package/modules/xlsx/parseSpreadsheetContents.js.map +1 -1
  35. package/node/index.d.ts +53 -30
  36. package/node/input.d.ts +2 -2
  37. package/package.json +1 -1
  38. package/types/Options.d.ts +5 -0
  39. package/types/OptionsWithSchema.d.ts +10 -0
  40. package/types/Sheet.d.ts +6 -0
  41. package/types/SheetData.d.ts +9 -0
  42. package/types/parseSheetData/parseSheetData.d.ts +4 -3
  43. package/types/parseSheetData/parseSheetDataError.d.ts +2 -2
  44. package/types/parseSheetData/parseSheetDataSchema.d.ts +14 -12
  45. package/types/parseSheetData/parseSheetDataValueType.d.ts +1 -1
  46. package/universal/index.d.ts +53 -30
  47. package/web-worker/index.d.ts +53 -30
  48. package/types/types.d.ts +0 -22
@@ -1 +1 @@
1
- {"version":3,"file":"parseSpreadsheetContents.js","names":["parseSpreadsheetInfo","parseFilePaths","parseStyles","parseSharedStrings","parseSheet","parseSpreadsheetContents","contents","xml","options","arguments","length","undefined","getFileContent","filePath","Error","concat","filePaths","sharedStrings","styles","_parseSpreadsheetInfo","sheets","epoch1904","sheetIdsToRead","map","sheet","getSheetId","sheetsData","_i","_Object$keys","Object","keys","sheetId","includes","push","getSheetNameById","data","_iterator","_createForOfIteratorHelperLoose","_step","done","_sheet","value","name","relationId","_ref","join","_iterator2","_step2"],"sources":["../../source/xlsx/parseSpreadsheetContents.js"],"sourcesContent":["import parseSpreadsheetInfo from './parseSpreadsheetInfo.js'\r\nimport parseFilePaths from './parseFilePaths.js'\r\nimport parseStyles from './parseStyles.js'\r\nimport parseSharedStrings from './parseSharedStrings.js'\r\nimport parseSheet from './parseSheet.js'\r\n\r\n// For an introduction in reading `.xlsx` files see \"The minimum viable XLSX reader\":\r\n// https://www.brendanlong.com/the-minimum-viable-xlsx-reader.html\r\n\r\n/**\r\n * Reads data from an `.xlsx` file.\r\n * @param {Record<string,string>} contents - A map of `.xml` files inside the `.xlsx` file (which itself is just a zipped directory).\r\n * @param {object} xml — An object having a single property — `createDocument(string)` function.\r\n * @param {object} [options]\r\n * @return {ReadFileResult}\r\n */\r\nexport default function parseSpreadsheetContents(contents, xml, options = {}) {\r\n const getFileContent = (filePath) => {\r\n if (!contents[filePath]) {\r\n throw new Error(`\"${filePath}\" file not found inside the *.xlsx file zip archive`)\r\n }\r\n return contents[filePath]\r\n }\r\n\r\n // Read the paths to certain files inside the `.xlsx` file, which is itself just a `.zip` archive.\r\n // These paths aren't standardized between different spreadsheet editors.\r\n // https://github.com/tidyverse/readxl/issues/104\r\n const filePaths = parseFilePaths(getFileContent('xl/_rels/workbook.xml.rels'), xml)\r\n\r\n // The usual file path for \"shared strings\" is \"xl/sharedStrings.xml\".\r\n const sharedStrings = filePaths.sharedStrings\r\n ? parseSharedStrings(getFileContent(filePaths.sharedStrings), xml)\r\n : []\r\n\r\n // The usual file path for \"styles\" is \"xl/styles.xml\".\r\n const styles = filePaths.styles\r\n ? parseStyles(getFileContent(filePaths.styles), xml)\r\n : {}\r\n\r\n const { sheets, epoch1904 } = parseSpreadsheetInfo(getFileContent('xl/workbook.xml'), xml)\r\n\r\n const sheetIdsToRead = options.sheets && options.sheets.map(sheet => getSheetId(sheet, sheets))\r\n\r\n // Parse sheets data.\r\n\r\n const sheetsData = []\r\n\r\n for (const sheetId of Object.keys(filePaths.sheets)) {\r\n if (sheetIdsToRead && !sheetIdsToRead.includes(sheetId)) {\r\n continue\r\n }\r\n\r\n sheetsData.push({\r\n sheet: getSheetNameById(sheetId, sheets),\r\n data: parseSheet(\r\n getFileContent(filePaths.sheets[sheetId]),\r\n xml,\r\n sharedStrings,\r\n styles,\r\n epoch1904,\r\n options\r\n )\r\n })\r\n }\r\n\r\n // Return spreadsheet data.\r\n return sheetsData\r\n}\r\n\r\nfunction getSheetId(sheet, sheets) {\r\n if (typeof sheet === 'string') {\r\n for (const _sheet of sheets) {\r\n if (_sheet.name === sheet) {\r\n return _sheet.relationId\r\n }\r\n }\r\n\t\tthrow new Error(`Sheet \"${sheet}\" not found. Available sheets: ${sheets.map(({ name }) => `\"${name}\"`).join(', ')}`)\r\n } else {\r\n\t\tif (sheet <= sheets.length) {\r\n return sheets[sheet - 1].relationId\r\n }\r\n throw new Error(`Sheet number out of bounds: ${sheet}. Available sheets count: ${sheets.length}`)\r\n }\r\n}\r\n\r\nfunction getSheetNameById(sheetId, sheets) {\r\n for (const sheet of sheets) {\r\n if (sheet.relationId === sheetId) {\r\n return sheet.name\r\n }\r\n }\r\n throw new Error(`Sheet ID not found: ${sheetId}`)\r\n}"],"mappings":"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"}
1
+ {"version":3,"file":"parseSpreadsheetContents.js","names":["parseSpreadsheetInfo","parseFilePaths","parseStyles","parseSharedStrings","parseSheet","parseSpreadsheetContents","contents","xml","options","arguments","length","undefined","getFileContent","filePath","Error","concat","filePaths","sharedStrings","styles","_parseSpreadsheetInfo","sheets","epoch1904","sheetIdsToRead","map","sheet","getSheetId","sheetsData","_i","_Object$keys","Object","keys","sheetId","includes","push","getSheetNameById","data","_iterator","_createForOfIteratorHelperLoose","_step","done","_sheet","value","name","relationId","_ref","join","_iterator2","_step2"],"sources":["../../source/xlsx/parseSpreadsheetContents.js"],"sourcesContent":["import parseSpreadsheetInfo from './parseSpreadsheetInfo.js'\r\nimport parseFilePaths from './parseFilePaths.js'\r\nimport parseStyles from './parseStyles.js'\r\nimport parseSharedStrings from './parseSharedStrings.js'\r\nimport parseSheet from './parseSheet.js'\r\n\r\n// For an introduction in reading `.xlsx` files see \"The minimum viable XLSX reader\":\r\n// https://www.brendanlong.com/the-minimum-viable-xlsx-reader.html\r\n\r\n/**\r\n * Reads data from an `.xlsx` file.\r\n * @param {Record<string,string>} contents - A map of `.xml` files inside the `.xlsx` file (which itself is just a zipped directory).\r\n * @param {object} xml — An object having a single property — `createDocument(string)` function.\r\n * @param {object} [options]\r\n * @return {Sheet[]}\r\n */\r\nexport default function parseSpreadsheetContents(contents, xml, options = {}) {\r\n const getFileContent = (filePath) => {\r\n if (!contents[filePath]) {\r\n throw new Error(`\"${filePath}\" file not found inside the *.xlsx file zip archive`)\r\n }\r\n return contents[filePath]\r\n }\r\n\r\n // Read the paths to certain files inside the `.xlsx` file, which is itself just a `.zip` archive.\r\n // These paths aren't standardized between different spreadsheet editors.\r\n // https://github.com/tidyverse/readxl/issues/104\r\n const filePaths = parseFilePaths(getFileContent('xl/_rels/workbook.xml.rels'), xml)\r\n\r\n // The usual file path for \"shared strings\" is \"xl/sharedStrings.xml\".\r\n const sharedStrings = filePaths.sharedStrings\r\n ? parseSharedStrings(getFileContent(filePaths.sharedStrings), xml)\r\n : []\r\n\r\n // The usual file path for \"styles\" is \"xl/styles.xml\".\r\n const styles = filePaths.styles\r\n ? parseStyles(getFileContent(filePaths.styles), xml)\r\n : {}\r\n\r\n const { sheets, epoch1904 } = parseSpreadsheetInfo(getFileContent('xl/workbook.xml'), xml)\r\n\r\n const sheetIdsToRead = options.sheets && options.sheets.map(sheet => getSheetId(sheet, sheets))\r\n\r\n // Parse sheets data.\r\n\r\n const sheetsData = []\r\n\r\n for (const sheetId of Object.keys(filePaths.sheets)) {\r\n if (sheetIdsToRead && !sheetIdsToRead.includes(sheetId)) {\r\n continue\r\n }\r\n\r\n sheetsData.push({\r\n sheet: getSheetNameById(sheetId, sheets),\r\n data: parseSheet(\r\n getFileContent(filePaths.sheets[sheetId]),\r\n xml,\r\n sharedStrings,\r\n styles,\r\n epoch1904,\r\n options\r\n )\r\n })\r\n }\r\n\r\n // Return spreadsheet data.\r\n return sheetsData\r\n}\r\n\r\nfunction getSheetId(sheet, sheets) {\r\n if (typeof sheet === 'string') {\r\n for (const _sheet of sheets) {\r\n if (_sheet.name === sheet) {\r\n return _sheet.relationId\r\n }\r\n }\r\n\t\tthrow new Error(`Sheet \"${sheet}\" not found. Available sheets: ${sheets.map(({ name }) => `\"${name}\"`).join(', ')}`)\r\n } else {\r\n\t\tif (sheet <= sheets.length) {\r\n return sheets[sheet - 1].relationId\r\n }\r\n throw new Error(`Sheet number out of bounds: ${sheet}. Available sheets count: ${sheets.length}`)\r\n }\r\n}\r\n\r\nfunction getSheetNameById(sheetId, sheets) {\r\n for (const sheet of sheets) {\r\n if (sheet.relationId === sheetId) {\r\n return sheet.name\r\n }\r\n }\r\n throw new Error(`Sheet ID not found: ${sheetId}`)\r\n}"],"mappings":"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"}
package/node/index.d.ts CHANGED
@@ -1,35 +1,48 @@
1
1
  // The contents of this file is identical between the different exports:
2
2
  // `/node`, `/browser`, etc.
3
3
 
4
- import { Input } from './input.d.js'
4
+ import type { Input } from './input.d.js'
5
5
 
6
- import {
7
- SheetData,
8
- ReadOptions,
9
- ReadFileResult
10
- } from '../types/types.d.js';
6
+ import type {
7
+ SheetData
8
+ } from '../types/SheetData.d.js'
11
9
 
12
- import {
10
+ import type {
11
+ Sheet
12
+ } from '../types/Sheet.d.js'
13
+
14
+ import type {
15
+ Options
16
+ } from '../types/Options.d.js'
17
+
18
+ import type {
19
+ OptionsWithSchema
20
+ } from '../types/OptionsWithSchema.d.js'
21
+
22
+ import type {
13
23
  ParseSheetDataOptions,
14
24
  ParseSheetDataResult
15
- } from '../types/parseSheetData/parseSheetData.d.js';
25
+ } from '../types/parseSheetData/parseSheetData.d.js'
16
26
 
17
- import {
27
+ import type {
18
28
  Schema
19
- } from '../types/parseSheetData/parseSheetDataSchema.d.js';
29
+ } from '../types/parseSheetData/parseSheetDataSchema.d.js'
20
30
 
21
- import {
31
+ import type {
22
32
  ParseSheetDataError
23
- } from '../types/parseSheetData/parseSheetDataError.d.js';
33
+ } from '../types/parseSheetData/parseSheetDataError.d.js'
24
34
 
25
- export {
35
+ export type {
26
36
  CellValue,
27
37
  Row,
28
- SheetData,
38
+ SheetData
39
+ } from '../types/SheetData.d.js'
40
+
41
+ export type {
29
42
  Sheet
30
- } from '../types/types.d.js';
43
+ } from '../types/Sheet.d.js'
31
44
 
32
- export {
45
+ export type {
33
46
  ParseSheetDataCustomType,
34
47
  // Base `type`s when parsing data.
35
48
  StringType as String,
@@ -40,45 +53,55 @@ export {
40
53
  Integer,
41
54
  Email,
42
55
  URL
43
- } from '../types/parseSheetData/parseSheetDataValueType.d.js';
56
+ } from '../types/parseSheetData/parseSheetDataValueType.d.js'
44
57
 
45
- export {
58
+ export type {
46
59
  ParseSheetDataCustomTypeErrorMessage,
47
60
  ParseSheetDataCustomTypeErrorReason,
48
61
  ParseSheetDataError,
49
62
  ParseSheetDataValueRequiredError
50
- } from '../types/parseSheetData/parseSheetDataError.d.js';
63
+ } from '../types/parseSheetData/parseSheetDataError.d.js'
51
64
 
52
- export {
65
+ export type {
53
66
  ParseSheetDataResult
54
- } from '../types/parseSheetData/parseSheetData.d.js';
67
+ } from '../types/parseSheetData/parseSheetData.d.js'
55
68
 
56
- export {
69
+ export type {
57
70
  Schema
58
- } from '../types/parseSheetData/parseSheetDataSchema.d.js';
71
+ } from '../types/parseSheetData/parseSheetDataSchema.d.js'
59
72
 
60
73
  export default function readXlsxFile<ParsedNumber = number>(
61
74
  input: Input,
62
- options?: ReadOptions<ParsedNumber>
63
- ): Promise<ReadFileResult<ParsedNumber>>;
75
+ options?: Options<ParsedNumber>
76
+ ): Promise<Sheet<ParsedNumber>[]>;
64
77
 
65
78
  export function readSheet<ParsedNumber = number>(
66
79
  input: Input,
67
80
  sheet?: number | string,
68
- options?: ReadOptions<ParsedNumber>
81
+ options?: Options<ParsedNumber>
69
82
  ): Promise<SheetData<ParsedNumber>>;
70
83
 
71
84
  export function readSheet<ParsedNumber = number>(
72
85
  input: Input,
73
- options?: ReadOptions<ParsedNumber>
86
+ options?: Options<ParsedNumber>
74
87
  ): Promise<SheetData<ParsedNumber>>;
75
88
 
89
+ export function readSheet<
90
+ Object extends object,
91
+ ColumnTitle extends string = string,
92
+ Error extends ParseSheetDataError = ParseSheetDataError<ColumnTitle>,
93
+ ParsedNumber = number
94
+ >(
95
+ input: Input,
96
+ options: OptionsWithSchema<Object, ColumnTitle, ParsedNumber>
97
+ ): Promise<ParseSheetDataResult<Object, ColumnTitle, Error>>;
98
+
76
99
  export function parseSheetData<
77
100
  Object extends object,
78
- ColumnTitle extends string,
79
- Error extends ParseSheetDataError
101
+ ColumnTitle extends string = string,
102
+ Error extends ParseSheetDataError = ParseSheetDataError<ColumnTitle>
80
103
  >(
81
104
  data: SheetData,
82
105
  schema: Schema<Object, ColumnTitle>,
83
106
  options?: ParseSheetDataOptions
84
- ): ParseSheetDataResult<Object, Error>;
107
+ ): ParseSheetDataResult<Object, ColumnTitle, Error>;
package/node/input.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Stream } from 'stream';
2
- import { Blob } from 'buffer';
1
+ import type { Stream } from 'stream';
2
+ import type { Blob } from 'buffer';
3
3
 
4
4
  // FYI: `Buffer` is also an `ArrayBuffer`.
5
5
  export type Input = string | Stream | Blob | Buffer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "read-excel-file",
3
- "version": "9.0.6",
3
+ "version": "9.0.7",
4
4
  "description": "Read `.xlsx` files in a web browser or in Node.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -0,0 +1,5 @@
1
+ export interface Options<ParsedNumber = number> {
2
+ trim?: boolean;
3
+ parseNumber?: (string: string) => ParsedNumber;
4
+ dateFormat?: string;
5
+ }
@@ -0,0 +1,10 @@
1
+ import type { Options } from './Options.d.js'
2
+ import type { Schema } from './parseSheetData/parseSheetDataSchema.d.js'
3
+
4
+ export interface OptionsWithSchema<
5
+ Object extends object,
6
+ ColumnTitle extends string = string,
7
+ ParsedNumber = number
8
+ > extends Options<ParsedNumber> {
9
+ schema: Schema<Object, ColumnTitle>;
10
+ }
@@ -0,0 +1,6 @@
1
+ import type { SheetData } from './SheetData.d.js'
2
+
3
+ export type Sheet<ParsedNumber = number> = {
4
+ sheet: string;
5
+ data: SheetData<ParsedNumber>;
6
+ }
@@ -0,0 +1,9 @@
1
+ export type CellValue<ParsedNumber = number> =
2
+ | string
3
+ | ParsedNumber
4
+ | boolean
5
+ | typeof Date
6
+
7
+ export type Row<ParsedNumber = number> = (CellValue<ParsedNumber> | null)[]
8
+
9
+ export type SheetData<ParsedNumber = number> = Row<ParsedNumber>[]
@@ -1,4 +1,4 @@
1
- import { ParseSheetDataError } from './parseSheetDataError.d.js'
1
+ import type { ParseSheetDataError } from './parseSheetDataError.d.js'
2
2
 
3
3
  interface ParseSheetDataResultSuccess<Object> {
4
4
  objects: Object[];
@@ -13,8 +13,9 @@ interface ParseSheetDataResultError<
13
13
  }
14
14
 
15
15
  export type ParseSheetDataResult<
16
- Object,
17
- Error extends ParseSheetDataError = ParseSheetDataError
16
+ Object extends object,
17
+ ColumnTitle extends string,
18
+ Error extends ParseSheetDataError = ParseSheetDataError<ColumnTitle>
18
19
  > =
19
20
  | ParseSheetDataResultSuccess<Object>
20
21
  | ParseSheetDataResultError<Error>
@@ -1,6 +1,6 @@
1
- import { CellValue } from '../types.d.js'
1
+ import type { CellValue } from '../SheetData.d.js'
2
2
 
3
- import {
3
+ import type {
4
4
  StringType,
5
5
  DateType,
6
6
  NumberType,
@@ -1,11 +1,11 @@
1
- import { ParseSheetDataValueType, ParseSheetDataCustomType } from './parseSheetDataValueType.d.js'
1
+ import type { ParseSheetDataValueType, ParseSheetDataCustomType } from './parseSheetDataValueType.d.js'
2
2
 
3
3
  type SchemaEntryRequiredOrNot<Object> = boolean | ((row: Object) => boolean);
4
4
 
5
5
  interface SchemaEntryForValue<
6
6
  Key extends keyof Object,
7
- Object,
8
- TopLevelObject,
7
+ Object extends object,
8
+ TopLevelObject extends object,
9
9
  ColumnTitle extends string
10
10
  > {
11
11
  column: ColumnTitle;
@@ -19,28 +19,30 @@ interface SchemaEntryForValue<
19
19
  // https://dev.to/busypeoples/notes-on-typescript-recursive-types-and-immutability-5ck1
20
20
  interface SchemaEntryRecursive<
21
21
  Key extends keyof Object,
22
- Object,
23
- TopLevelObject,
22
+ Object extends object,
23
+ TopLevelObject extends object,
24
24
  ColumnTitle extends string
25
25
  > {
26
- schema: Record<
27
- keyof Object[Key],
28
- SchemaEntry<keyof Object[Key], Object[Key], TopLevelObject, ColumnTitle>
29
- >;
26
+ schema: Object[Key] extends object
27
+ ? Record<
28
+ keyof Object[Key],
29
+ SchemaEntry<keyof Object[Key], Object[Key], TopLevelObject, ColumnTitle>
30
+ >
31
+ : never;
30
32
  required?: SchemaEntryRequiredOrNot<TopLevelObject>;
31
33
  }
32
34
 
33
35
  type SchemaEntry<
34
36
  Key extends keyof Object,
35
- Object,
36
- TopLevelObject,
37
+ Object extends object,
38
+ TopLevelObject extends object,
37
39
  ColumnTitle extends string
38
40
  > =
39
41
  | SchemaEntryForValue<Key, Object, TopLevelObject, ColumnTitle>
40
42
  | SchemaEntryRecursive<Key, Object, TopLevelObject, ColumnTitle>;
41
43
 
42
44
  export type Schema<
43
- Object = Record<string, any>,
45
+ Object extends object,
44
46
  ColumnTitle extends string = string
45
47
  > = Record<
46
48
  keyof Object,
@@ -1,4 +1,4 @@
1
- import { CellValue } from '../types.d.js';
1
+ import type { CellValue } from '../SheetData.d.js';
2
2
 
3
3
  // A way to define a `type = String` or `type = Number` variable in TypeScript
4
4
  // is by defining it as `type: StringConstructor` or `type: NumberConstructor`.
@@ -1,35 +1,48 @@
1
1
  // The contents of this file is identical between the different exports:
2
2
  // `/node`, `/browser`, etc.
3
3
 
4
- import { Input } from './input.d.js'
4
+ import type { Input } from './input.d.js'
5
5
 
6
- import {
7
- SheetData,
8
- ReadOptions,
9
- ReadFileResult
10
- } from '../types/types.d.js';
6
+ import type {
7
+ SheetData
8
+ } from '../types/SheetData.d.js'
11
9
 
12
- import {
10
+ import type {
11
+ Sheet
12
+ } from '../types/Sheet.d.js'
13
+
14
+ import type {
15
+ Options
16
+ } from '../types/Options.d.js'
17
+
18
+ import type {
19
+ OptionsWithSchema
20
+ } from '../types/OptionsWithSchema.d.js'
21
+
22
+ import type {
13
23
  ParseSheetDataOptions,
14
24
  ParseSheetDataResult
15
- } from '../types/parseSheetData/parseSheetData.d.js';
25
+ } from '../types/parseSheetData/parseSheetData.d.js'
16
26
 
17
- import {
27
+ import type {
18
28
  Schema
19
- } from '../types/parseSheetData/parseSheetDataSchema.d.js';
29
+ } from '../types/parseSheetData/parseSheetDataSchema.d.js'
20
30
 
21
- import {
31
+ import type {
22
32
  ParseSheetDataError
23
- } from '../types/parseSheetData/parseSheetDataError.d.js';
33
+ } from '../types/parseSheetData/parseSheetDataError.d.js'
24
34
 
25
- export {
35
+ export type {
26
36
  CellValue,
27
37
  Row,
28
- SheetData,
38
+ SheetData
39
+ } from '../types/SheetData.d.js'
40
+
41
+ export type {
29
42
  Sheet
30
- } from '../types/types.d.js';
43
+ } from '../types/Sheet.d.js'
31
44
 
32
- export {
45
+ export type {
33
46
  ParseSheetDataCustomType,
34
47
  // Base `type`s when parsing data.
35
48
  StringType as String,
@@ -40,45 +53,55 @@ export {
40
53
  Integer,
41
54
  Email,
42
55
  URL
43
- } from '../types/parseSheetData/parseSheetDataValueType.d.js';
56
+ } from '../types/parseSheetData/parseSheetDataValueType.d.js'
44
57
 
45
- export {
58
+ export type {
46
59
  ParseSheetDataCustomTypeErrorMessage,
47
60
  ParseSheetDataCustomTypeErrorReason,
48
61
  ParseSheetDataError,
49
62
  ParseSheetDataValueRequiredError
50
- } from '../types/parseSheetData/parseSheetDataError.d.js';
63
+ } from '../types/parseSheetData/parseSheetDataError.d.js'
51
64
 
52
- export {
65
+ export type {
53
66
  ParseSheetDataResult
54
- } from '../types/parseSheetData/parseSheetData.d.js';
67
+ } from '../types/parseSheetData/parseSheetData.d.js'
55
68
 
56
- export {
69
+ export type {
57
70
  Schema
58
- } from '../types/parseSheetData/parseSheetDataSchema.d.js';
71
+ } from '../types/parseSheetData/parseSheetDataSchema.d.js'
59
72
 
60
73
  export default function readXlsxFile<ParsedNumber = number>(
61
74
  input: Input,
62
- options?: ReadOptions<ParsedNumber>
63
- ): Promise<ReadFileResult<ParsedNumber>>;
75
+ options?: Options<ParsedNumber>
76
+ ): Promise<Sheet<ParsedNumber>[]>;
64
77
 
65
78
  export function readSheet<ParsedNumber = number>(
66
79
  input: Input,
67
80
  sheet?: number | string,
68
- options?: ReadOptions<ParsedNumber>
81
+ options?: Options<ParsedNumber>
69
82
  ): Promise<SheetData<ParsedNumber>>;
70
83
 
71
84
  export function readSheet<ParsedNumber = number>(
72
85
  input: Input,
73
- options?: ReadOptions<ParsedNumber>
86
+ options?: Options<ParsedNumber>
74
87
  ): Promise<SheetData<ParsedNumber>>;
75
88
 
89
+ export function readSheet<
90
+ Object extends object,
91
+ ColumnTitle extends string = string,
92
+ Error extends ParseSheetDataError = ParseSheetDataError<ColumnTitle>,
93
+ ParsedNumber = number
94
+ >(
95
+ input: Input,
96
+ options: OptionsWithSchema<Object, ColumnTitle, ParsedNumber>
97
+ ): Promise<ParseSheetDataResult<Object, ColumnTitle, Error>>;
98
+
76
99
  export function parseSheetData<
77
100
  Object extends object,
78
- ColumnTitle extends string,
79
- Error extends ParseSheetDataError
101
+ ColumnTitle extends string = string,
102
+ Error extends ParseSheetDataError = ParseSheetDataError<ColumnTitle>
80
103
  >(
81
104
  data: SheetData,
82
105
  schema: Schema<Object, ColumnTitle>,
83
106
  options?: ParseSheetDataOptions
84
- ): ParseSheetDataResult<Object, Error>;
107
+ ): ParseSheetDataResult<Object, ColumnTitle, Error>;
@@ -1,35 +1,48 @@
1
1
  // The contents of this file is identical between the different exports:
2
2
  // `/node`, `/browser`, etc.
3
3
 
4
- import { Input } from './input.d.js'
4
+ import type { Input } from './input.d.js'
5
5
 
6
- import {
7
- SheetData,
8
- ReadOptions,
9
- ReadFileResult
10
- } from '../types/types.d.js';
6
+ import type {
7
+ SheetData
8
+ } from '../types/SheetData.d.js'
11
9
 
12
- import {
10
+ import type {
11
+ Sheet
12
+ } from '../types/Sheet.d.js'
13
+
14
+ import type {
15
+ Options
16
+ } from '../types/Options.d.js'
17
+
18
+ import type {
19
+ OptionsWithSchema
20
+ } from '../types/OptionsWithSchema.d.js'
21
+
22
+ import type {
13
23
  ParseSheetDataOptions,
14
24
  ParseSheetDataResult
15
- } from '../types/parseSheetData/parseSheetData.d.js';
25
+ } from '../types/parseSheetData/parseSheetData.d.js'
16
26
 
17
- import {
27
+ import type {
18
28
  Schema
19
- } from '../types/parseSheetData/parseSheetDataSchema.d.js';
29
+ } from '../types/parseSheetData/parseSheetDataSchema.d.js'
20
30
 
21
- import {
31
+ import type {
22
32
  ParseSheetDataError
23
- } from '../types/parseSheetData/parseSheetDataError.d.js';
33
+ } from '../types/parseSheetData/parseSheetDataError.d.js'
24
34
 
25
- export {
35
+ export type {
26
36
  CellValue,
27
37
  Row,
28
- SheetData,
38
+ SheetData
39
+ } from '../types/SheetData.d.js'
40
+
41
+ export type {
29
42
  Sheet
30
- } from '../types/types.d.js';
43
+ } from '../types/Sheet.d.js'
31
44
 
32
- export {
45
+ export type {
33
46
  ParseSheetDataCustomType,
34
47
  // Base `type`s when parsing data.
35
48
  StringType as String,
@@ -40,45 +53,55 @@ export {
40
53
  Integer,
41
54
  Email,
42
55
  URL
43
- } from '../types/parseSheetData/parseSheetDataValueType.d.js';
56
+ } from '../types/parseSheetData/parseSheetDataValueType.d.js'
44
57
 
45
- export {
58
+ export type {
46
59
  ParseSheetDataCustomTypeErrorMessage,
47
60
  ParseSheetDataCustomTypeErrorReason,
48
61
  ParseSheetDataError,
49
62
  ParseSheetDataValueRequiredError
50
- } from '../types/parseSheetData/parseSheetDataError.d.js';
63
+ } from '../types/parseSheetData/parseSheetDataError.d.js'
51
64
 
52
- export {
65
+ export type {
53
66
  ParseSheetDataResult
54
- } from '../types/parseSheetData/parseSheetData.d.js';
67
+ } from '../types/parseSheetData/parseSheetData.d.js'
55
68
 
56
- export {
69
+ export type {
57
70
  Schema
58
- } from '../types/parseSheetData/parseSheetDataSchema.d.js';
71
+ } from '../types/parseSheetData/parseSheetDataSchema.d.js'
59
72
 
60
73
  export default function readXlsxFile<ParsedNumber = number>(
61
74
  input: Input,
62
- options?: ReadOptions<ParsedNumber>
63
- ): Promise<ReadFileResult<ParsedNumber>>;
75
+ options?: Options<ParsedNumber>
76
+ ): Promise<Sheet<ParsedNumber>[]>;
64
77
 
65
78
  export function readSheet<ParsedNumber = number>(
66
79
  input: Input,
67
80
  sheet?: number | string,
68
- options?: ReadOptions<ParsedNumber>
81
+ options?: Options<ParsedNumber>
69
82
  ): Promise<SheetData<ParsedNumber>>;
70
83
 
71
84
  export function readSheet<ParsedNumber = number>(
72
85
  input: Input,
73
- options?: ReadOptions<ParsedNumber>
86
+ options?: Options<ParsedNumber>
74
87
  ): Promise<SheetData<ParsedNumber>>;
75
88
 
89
+ export function readSheet<
90
+ Object extends object,
91
+ ColumnTitle extends string = string,
92
+ Error extends ParseSheetDataError = ParseSheetDataError<ColumnTitle>,
93
+ ParsedNumber = number
94
+ >(
95
+ input: Input,
96
+ options: OptionsWithSchema<Object, ColumnTitle, ParsedNumber>
97
+ ): Promise<ParseSheetDataResult<Object, ColumnTitle, Error>>;
98
+
76
99
  export function parseSheetData<
77
100
  Object extends object,
78
- ColumnTitle extends string,
79
- Error extends ParseSheetDataError
101
+ ColumnTitle extends string = string,
102
+ Error extends ParseSheetDataError = ParseSheetDataError<ColumnTitle>
80
103
  >(
81
104
  data: SheetData,
82
105
  schema: Schema<Object, ColumnTitle>,
83
106
  options?: ParseSheetDataOptions
84
- ): ParseSheetDataResult<Object, Error>;
107
+ ): ParseSheetDataResult<Object, ColumnTitle, Error>;
package/types/types.d.ts DELETED
@@ -1,22 +0,0 @@
1
- export type CellValue<ParsedNumber = number> =
2
- | string
3
- | ParsedNumber
4
- | boolean
5
- | typeof Date
6
-
7
- export type Row<ParsedNumber = number> = (CellValue<ParsedNumber> | null)[]
8
-
9
- export type SheetData<ParsedNumber = number> = Row<ParsedNumber>[]
10
-
11
- export type Sheet<ParsedNumber = number> = {
12
- sheet: string;
13
- data: SheetData<ParsedNumber>;
14
- }
15
-
16
- export type ReadFileResult<ParsedNumber = number> = Sheet<ParsedNumber>[]
17
-
18
- export interface ReadOptions<ParsedNumber = number> {
19
- trim?: boolean;
20
- parseNumber?: (string: string) => ParsedNumber;
21
- dateFormat?: string;
22
- }