Split out node.js exports

This commit is contained in:
Kenny Daniel 2025-04-17 00:38:17 -07:00
parent 02448b8fdc
commit b92886bf16
No known key found for this signature in database
GPG Key ID: FDF16101AF5AFD3A
6 changed files with 47 additions and 20 deletions

@ -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": {

@ -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'

19
src/node.js Normal file

@ -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<ParquetWriteOptions, 'writer'> & {filename: string}} options
*/
export function parquetWriteFile(options) {
const { filename, ...rest } = options
const writer = fileWriter(filename)
parquetWrite({ ...rest, writer })
}

@ -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<ParquetWriteOptions, 'writer'> & {filename: string}} options
*/
export function parquetWriteFile(options) {
const { filename, ...rest } = options
const writer = fileWriter(filename)
parquetWrite({ ...rest, writer })
}

@ -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'])
})
})

@ -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/'