diff --git a/package.json b/package.json index 2e67431..52b0f54 100644 --- a/package.json +++ b/package.json @@ -25,15 +25,21 @@ "types" ], "type": "module", - "types": "src/index.d.ts", + "types": "types/index.d.ts", "exports": { ".": { - "import": "./src/index.js", - "types": "./types/index.d.ts" + "node": { + "types": "./types/node.d.ts", + "import": "./src/node.js" + }, + "default": { + "types": "./types/index.d.ts", + "import": "./src/index.js" + } }, "./src/*.js": { - "import": "./src/*.js", - "types": "./types/*.d.ts" + "types": "./types/*.d.ts", + "import": "./src/*.js" } }, "scripts": { diff --git a/src/index.js b/src/index.js index 8dc88e4..b12757e 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,3 @@ -export { parquetWrite, parquetWriteBuffer, parquetWriteFile } from './write.js' +export { parquetWrite, parquetWriteBuffer } from './write.js' export { ByteWriter } from './bytewriter.js' -export { fileWriter } from './filewriter.js' export { ParquetWriter } from './parquet-writer.js' diff --git a/src/node.js b/src/node.js new file mode 100644 index 0000000..90722d6 --- /dev/null +++ b/src/node.js @@ -0,0 +1,19 @@ +import { fileWriter } from './filewriter.js' +import { parquetWrite } from './write.js' + +export { parquetWrite, parquetWriteBuffer } from './write.js' +export { ByteWriter } from './bytewriter.js' +export { ParquetWriter } from './parquet-writer.js' +export { fileWriter } + +/** + * Write data as parquet to a local file. + * + * @import {ParquetWriteOptions} from '../src/types.js' + * @param {Omit & {filename: string}} options + */ +export function parquetWriteFile(options) { + const { filename, ...rest } = options + const writer = fileWriter(filename) + parquetWrite({ ...rest, writer }) +} diff --git a/src/write.js b/src/write.js index 663fd69..528e410 100644 --- a/src/write.js +++ b/src/write.js @@ -1,5 +1,4 @@ import { ByteWriter } from './bytewriter.js' -import { fileWriter } from './filewriter.js' import { ParquetWriter } from './parquet-writer.js' import { schemaFromColumnData } from './schema.js' @@ -43,14 +42,3 @@ export function parquetWriteBuffer(options) { parquetWrite({ ...options, writer }) return writer.getBuffer() } - -/** - * Write data as parquet to an ArrayBuffer. - * - * @param {Omit & {filename: string}} options - */ -export function parquetWriteFile(options) { - const { filename, ...rest } = options - const writer = fileWriter(filename) - parquetWrite({ ...rest, writer }) -} diff --git a/test/package.test.js b/test/package.test.js index a68612a..77ca349 100644 --- a/test/package.test.js +++ b/test/package.test.js @@ -5,12 +5,15 @@ describe('package.json', () => { it('should have the correct name', () => { expect(packageJson.name).toBe('hyparquet-writer') }) + it('should have a valid version', () => { expect(packageJson.version).toMatch(/^\d+\.\d+\.\d+$/) }) + it('should have MIT license', () => { expect(packageJson.license).toBe('MIT') }) + it('should have precise dev dependency versions', () => { const { dependencies, devDependencies } = packageJson const allDependencies = { ...dependencies, ...devDependencies } @@ -18,7 +21,19 @@ describe('package.json', () => { expect(version).toMatch(/^\d+\.\d+\.\d+$/) }) }) + it('should have no peer dependencies', () => { expect('peerDependencies' in packageJson).toBe(false) }) + + it('should have exports with types first', () => { + const { exports } = packageJson + expect(Object.keys(exports)).toEqual(['.', './src/*.js']) + // node vs default (browser) + expect(Object.keys(exports['.'])).toEqual(['node', 'default']) + expect(Object.keys(exports['.'].node)).toEqual(['types', 'import']) + expect(Object.keys(exports['.'].default)).toEqual(['types', 'import']) + // deep imports + expect(Object.keys(exports['./src/*.js'])).toEqual(['types', 'import']) + }) }) diff --git a/test/write.file.test.js b/test/write.file.test.js index fcc5966..8f2008e 100644 --- a/test/write.file.test.js +++ b/test/write.file.test.js @@ -1,7 +1,7 @@ import fs from 'fs' import { asyncBufferFromFile, parquetMetadataAsync, parquetReadObjects } from 'hyparquet' import { afterEach, beforeEach, describe, expect, it } from 'vitest' -import { parquetWriteFile } from '../src/index.js' +import { parquetWriteFile } from '../src/node.js' import { exampleData, exampleMetadata } from './example.js' const filedir = 'data/'