Skip to content

Commit

Permalink
fix: stream was not objectMode
Browse files Browse the repository at this point in the history
  • Loading branch information
tpluscode committed Jan 8, 2025
1 parent 97ecc58 commit b0f7a85
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 18 deletions.
5 changes: 5 additions & 0 deletions .changeset/chilled-sloths-exercise.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@zazuko/env": patch
---

`renameBlankNodes` cause a stream chunk issue
4 changes: 2 additions & 2 deletions packages/env/lib/DatasetExt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ export function createConstructor(env: Environment<FormatsFactory | DataFactory
return toStream(this)
}

async serialize({ format, prefixes = [] }: SerializeArgs): Promise<string> {
return serialize(env, this, { format, prefixes })
async serialize(args: SerializeArgs): Promise<string> {
return serialize(env, this, args)
}
}
}
4 changes: 0 additions & 4 deletions packages/env/lib/DatasetFactoryExt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,3 @@ export default <D extends DatasetCore>(createConstructor: (env: Environment<Form
this.dataset.serialize = serialize.bind(null, this)
}
}

function isDatasetExt(dataset: DatasetCore): dataset is Dataset {
return typeof (dataset as Dataset).serialize === 'function'
}
2 changes: 1 addition & 1 deletion packages/env/lib/serialize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class RenameBlankNodes extends Transform {
private readonly blankNodes: Map<BlankNode, BlankNode>

constructor(private readonly env: Environment<DataFactory | TermMapFactory>) {
super()
super({ objectMode: true })

this.blankNodes = env.termMap()
}
Expand Down
28 changes: 17 additions & 11 deletions packages/env/test/lib/DatasetExt.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@ import { expect } from 'chai'
import DataFactory from '@rdfjs/data-model/Factory.js'
import { rdf, rdfs } from '@tpluscode/rdf-ns-builders'
import TermMapFactory from '@rdfjs/term-map/Factory.js'
import formats from '@rdfjs-elements/formats-pretty'
import { createConstructor } from '../../lib/DatasetExt.js'
import Environment from '../../Environment.js'
import type { Dataset } from '../../lib/Dataset.js'

describe('DatasetExt', () => {
const env = new Environment([FormatsFactory, DataFactory, TermMapFactory])
env.formats.import(formats)

const Dataset = createConstructor(env)

describe('.filter', () => {
Expand Down Expand Up @@ -63,18 +66,21 @@ describe('DatasetExt', () => {
})
})

describe('.serialize', async () => {
// given
const dataset = new Dataset()
dataset.add(env.quad(env.blankNode(), rdf.type, rdfs.Resource))
describe('.serialize', () => {
it('can rename blank nodes', async () => {
// given
const dataset = new Dataset()
dataset.add(env.quad(env.blankNode(), rdf.type, rdfs.Resource))

// when
const turtle = await dataset.serialize({
format: 'text/turtle',
renameBlankNodes: true,
})
// when
const turtle = await dataset.serialize({
format: 'text/turtle',
prefixes: ['rdf', 'rdfs'],
renameBlankNodes: true,
})

// then
expect(turtle).to.include('_:t1 a rdfs:Resource .')
// then
expect(turtle).to.include('_:t0 a rdfs:Resource .')
})
})
})

0 comments on commit b0f7a85

Please sign in to comment.