n3 1.17.5 → 1.18.0

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.
package/lib/N3Store.js CHANGED
@@ -13,6 +13,9 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
13
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
14
  // **N3Store** objects store N3 quads by graph in memory.
15
15
 
16
+ const ITERATOR = Symbol('iter');
17
+
18
+ // ## Constructor
16
19
  class N3EntityIndex {
17
20
  constructor(options = {}) {
18
21
  this._id = 1;
@@ -382,9 +385,19 @@ class N3Store {
382
385
  const stream = new _readableStream.Readable({
383
386
  objectMode: true
384
387
  });
385
- stream._read = () => {
386
- for (const quad of this.readQuads(subject, predicate, object, graph)) stream.push(quad);
387
- stream.push(null);
388
+ const iterable = this.readQuads(subject, predicate, object, graph);
389
+ stream._read = size => {
390
+ while (size-- > 0) {
391
+ const {
392
+ done,
393
+ value
394
+ } = iterable.next();
395
+ if (done) {
396
+ stream.push(null);
397
+ return;
398
+ }
399
+ stream.push(value);
400
+ }
388
401
  };
389
402
  return this.remove(stream);
390
403
  }
@@ -400,8 +413,11 @@ class N3Store {
400
413
  return [...this.readQuads(subject, predicate, object, graph)];
401
414
  }
402
415
 
403
- // ### `readQuads` returns an generator of quads matching a pattern.
404
- // Setting any field to `undefined` or `null` indicates a wildcard.
416
+ /**
417
+ * `readQuads` returns a generator of quads matching a pattern.
418
+ * Setting any field to `undefined` or `null` indicates a wildcard.
419
+ * @deprecated Use `match` instead.
420
+ */
405
421
  *readQuads(subject, predicate, object, graph) {
406
422
  const graphs = this._getGraphs(graph);
407
423
  let content, subjectId, predicateId, objectId;
@@ -773,9 +789,20 @@ class DatasetCoreAndReadableStream extends _readableStream.Readable {
773
789
  get size() {
774
790
  return this.filtered.size;
775
791
  }
776
- _read() {
777
- for (const quad of this) this.push(quad);
778
- this.push(null);
792
+ _read(size) {
793
+ if (size > 0 && !this[ITERATOR]) this[ITERATOR] = this[Symbol.iterator]();
794
+ const iterable = this[ITERATOR];
795
+ while (size-- > 0) {
796
+ const {
797
+ done,
798
+ value
799
+ } = iterable.next();
800
+ if (done) {
801
+ this.push(null);
802
+ return;
803
+ }
804
+ this.push(value);
805
+ }
779
806
  }
780
807
  add(quad) {
781
808
  return this.filtered.add(quad);
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _N3Store = _interopRequireDefault(require("./N3Store"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ class N3DatasetCoreFactory {
10
+ dataset(quads) {
11
+ return new _N3Store.default(quads);
12
+ }
13
+ }
14
+ exports.default = N3DatasetCoreFactory;
package/lib/index.js CHANGED
@@ -63,6 +63,12 @@ Object.defineProperty(exports, "Store", {
63
63
  return _N3Store.default;
64
64
  }
65
65
  });
66
+ Object.defineProperty(exports, "StoreFactory", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _N3StoreFactory.default;
70
+ }
71
+ });
66
72
  Object.defineProperty(exports, "StreamParser", {
67
73
  enumerable: true,
68
74
  get: function () {
@@ -117,6 +123,7 @@ var _N3Lexer = _interopRequireDefault(require("./N3Lexer"));
117
123
  var _N3Parser = _interopRequireDefault(require("./N3Parser"));
118
124
  var _N3Writer = _interopRequireDefault(require("./N3Writer"));
119
125
  var _N3Store = _interopRequireWildcard(require("./N3Store"));
126
+ var _N3StoreFactory = _interopRequireDefault(require("./N3StoreFactory"));
120
127
  var _N3StreamParser = _interopRequireDefault(require("./N3StreamParser"));
121
128
  var _N3StreamWriter = _interopRequireDefault(require("./N3StreamWriter"));
122
129
  var Util = _interopRequireWildcard(require("./N3Util"));
@@ -132,6 +139,8 @@ var _default = exports.default = {
132
139
  Parser: _N3Parser.default,
133
140
  Writer: _N3Writer.default,
134
141
  Store: _N3Store.default,
142
+ StoreFactory: _N3StoreFactory.default,
143
+ EntityIndex: _N3Store.N3EntityIndex,
135
144
  StreamParser: _N3StreamParser.default,
136
145
  StreamWriter: _N3StreamWriter.default,
137
146
  Util,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n3",
3
- "version": "1.17.5",
3
+ "version": "1.18.0",
4
4
  "description": "Lightning fast, asynchronous, streaming Turtle / N3 / RDF library.",
5
5
  "author": "Ruben Verborgh <ruben.verborgh@gmail.com>",
6
6
  "keywords": [
package/src/N3Store.js CHANGED
@@ -4,6 +4,9 @@ import { default as N3DataFactory, termToId, termFromId } from './N3DataFactory'
4
4
  import namespaces from './IRIs';
5
5
  import { isDefaultGraph } from './N3Util';
6
6
 
7
+ const ITERATOR = Symbol('iter');
8
+
9
+ // ## Constructor
7
10
  export class N3EntityIndex {
8
11
  constructor(options = {}) {
9
12
  this._id = 1;
@@ -386,10 +389,16 @@ export default class N3Store {
386
389
  removeMatches(subject, predicate, object, graph) {
387
390
  const stream = new Readable({ objectMode: true });
388
391
 
389
- stream._read = () => {
390
- for (const quad of this.readQuads(subject, predicate, object, graph))
391
- stream.push(quad);
392
- stream.push(null);
392
+ const iterable = this.readQuads(subject, predicate, object, graph);
393
+ stream._read = size => {
394
+ while (size-- > 0) {
395
+ const { done, value } = iterable.next();
396
+ if (done) {
397
+ stream.push(null);
398
+ return;
399
+ }
400
+ stream.push(value);
401
+ }
393
402
  };
394
403
 
395
404
  return this.remove(stream);
@@ -406,8 +415,11 @@ export default class N3Store {
406
415
  return [...this.readQuads(subject, predicate, object, graph)];
407
416
  }
408
417
 
409
- // ### `readQuads` returns an generator of quads matching a pattern.
410
- // Setting any field to `undefined` or `null` indicates a wildcard.
418
+ /**
419
+ * `readQuads` returns a generator of quads matching a pattern.
420
+ * Setting any field to `undefined` or `null` indicates a wildcard.
421
+ * @deprecated Use `match` instead.
422
+ */
411
423
  *readQuads(subject, predicate, object, graph) {
412
424
  const graphs = this._getGraphs(graph);
413
425
  let content, subjectId, predicateId, objectId;
@@ -805,10 +817,18 @@ class DatasetCoreAndReadableStream extends Readable {
805
817
  return this.filtered.size;
806
818
  }
807
819
 
808
- _read() {
809
- for (const quad of this)
810
- this.push(quad);
811
- this.push(null);
820
+ _read(size) {
821
+ if (size > 0 && !this[ITERATOR])
822
+ this[ITERATOR] = this[Symbol.iterator]();
823
+ const iterable = this[ITERATOR];
824
+ while (size-- > 0) {
825
+ const { done, value } = iterable.next();
826
+ if (done) {
827
+ this.push(null);
828
+ return;
829
+ }
830
+ this.push(value);
831
+ }
812
832
  }
813
833
 
814
834
  add(quad) {
@@ -0,0 +1,7 @@
1
+ import N3Store from './N3Store';
2
+
3
+ export default class N3DatasetCoreFactory {
4
+ dataset(quads) {
5
+ return new N3Store(quads);
6
+ }
7
+ }
package/src/index.js CHANGED
@@ -2,6 +2,7 @@ import Lexer from './N3Lexer';
2
2
  import Parser from './N3Parser';
3
3
  import Writer from './N3Writer';
4
4
  import Store, { N3EntityIndex as EntityIndex } from './N3Store';
5
+ import StoreFactory from './N3StoreFactory';
5
6
  import StreamParser from './N3StreamParser';
6
7
  import StreamWriter from './N3StreamWriter';
7
8
  import * as Util from './N3Util';
@@ -28,6 +29,7 @@ export {
28
29
  Parser,
29
30
  Writer,
30
31
  Store,
32
+ StoreFactory,
31
33
  EntityIndex,
32
34
  StreamParser,
33
35
  StreamWriter,
@@ -54,6 +56,8 @@ export default {
54
56
  Parser,
55
57
  Writer,
56
58
  Store,
59
+ StoreFactory,
60
+ EntityIndex,
57
61
  StreamParser,
58
62
  StreamWriter,
59
63
  Util,