@comunica/actor-query-source-identify-hypermedia 4.5.0 → 5.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comunica/actor-query-source-identify-hypermedia",
3
- "version": "4.5.0",
3
+ "version": "5.0.0",
4
4
  "description": "A hypermedia query-source-identify actor",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -41,28 +41,21 @@
41
41
  "build:components": "componentsjs-generator"
42
42
  },
43
43
  "dependencies": {
44
- "@comunica/actor-query-source-identify-rdfjs": "^4.5.0",
45
- "@comunica/bus-dereference-rdf": "^4.5.0",
46
- "@comunica/bus-merge-bindings-context": "^4.5.0",
47
- "@comunica/bus-query-source-identify": "^4.5.0",
48
- "@comunica/bus-query-source-identify-hypermedia": "^4.5.0",
49
- "@comunica/bus-rdf-metadata": "^4.5.0",
50
- "@comunica/bus-rdf-metadata-accumulate": "^4.5.0",
51
- "@comunica/bus-rdf-metadata-extract": "^4.5.0",
52
- "@comunica/bus-rdf-resolve-hypermedia-links": "^4.5.0",
53
- "@comunica/bus-rdf-resolve-hypermedia-links-queue": "^4.5.0",
54
- "@comunica/context-entries": "^4.5.0",
55
- "@comunica/core": "^4.5.0",
56
- "@comunica/types": "^4.5.0",
57
- "@comunica/utils-bindings-factory": "^4.5.0",
58
- "@comunica/utils-iterator": "^4.5.0",
59
- "@comunica/utils-metadata": "^4.5.0",
44
+ "@comunica/bus-merge-bindings-context": "^5.0.0",
45
+ "@comunica/bus-query-source-dereference-link": "^5.0.0",
46
+ "@comunica/bus-query-source-identify": "^5.0.0",
47
+ "@comunica/bus-rdf-metadata-accumulate": "^5.0.0",
48
+ "@comunica/bus-rdf-resolve-hypermedia-links": "^5.0.0",
49
+ "@comunica/bus-rdf-resolve-hypermedia-links-queue": "^5.0.0",
50
+ "@comunica/context-entries": "^5.0.0",
51
+ "@comunica/core": "^5.0.0",
52
+ "@comunica/types": "^5.0.0",
53
+ "@comunica/utils-algebra": "^5.0.0",
54
+ "@comunica/utils-bindings-factory": "^5.0.0",
55
+ "@comunica/utils-metadata": "^5.0.0",
60
56
  "@rdfjs/types": "*",
61
- "asynciterator": "^3.9.0",
62
- "lru-cache": "^10.0.0",
63
- "rdf-streaming-store": "^2.1.1",
64
- "readable-stream": "^4.5.2",
65
- "sparqlalgebrajs": "^5.0.2"
57
+ "asynciterator": "^3.10.0",
58
+ "lru-cache": "^11.2.2"
66
59
  },
67
- "gitHead": "2bcd98c387a021fc5c08d375793c205ca3d1bf0d"
60
+ "gitHead": "0b1756fdb9bef014133432489627c1bd71779bd0"
68
61
  }
@@ -1,31 +0,0 @@
1
- /// <reference types="node" />
2
- import type { EventEmitter } from 'node:events';
3
- import type { IAggregatedStore, MetadataBindings } from '@comunica/types';
4
- import type * as RDF from '@rdfjs/types';
5
- import type { AsyncIterator } from 'asynciterator';
6
- import { StreamingStore } from 'rdf-streaming-store';
7
- /**
8
- * A StreamingStore that returns an AsyncIterator with a valid MetadataQuads property.
9
- */
10
- export declare class StreamingStoreMetadata extends StreamingStore implements IAggregatedStore {
11
- started: boolean;
12
- containedSources: Set<string>;
13
- readonly runningIterators: Set<AsyncIterator<RDF.Quad>>;
14
- protected readonly iteratorCreatedListeners: Set<() => void>;
15
- protected readonly metadataAccumulator: (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise<MetadataBindings>;
16
- /**
17
- * Whether the StreamingStoreMetadata should emit updated partial cardinalities
18
- * for each matching quad. Enabling this option may impact performance due to
19
- * frequent {@link MetadataValidationState} invalidations and updates
20
- */
21
- private readonly emitPartialCardinalities;
22
- protected baseMetadata: MetadataBindings;
23
- constructor(store: RDF.Store | undefined, metadataAccumulator: (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise<MetadataBindings>, emitPartialCardinalities: boolean);
24
- import(stream: RDF.Stream): EventEmitter;
25
- hasRunningIterators(): boolean;
26
- match(subject?: RDF.Term | null, predicate?: RDF.Term | null, object?: RDF.Term | null, graph?: RDF.Term | null): AsyncIterator<RDF.Quad>;
27
- setBaseMetadata(metadata: MetadataBindings, updateStates: boolean): void;
28
- protected updateMetadataState(iterator: AsyncIterator<RDF.Quad>, count: number): void;
29
- addIteratorCreatedListener(listener: () => void): void;
30
- removeIteratorCreatedListener(listener: () => void): void;
31
- }
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StreamingStoreMetadata = void 0;
4
- const utils_iterator_1 = require("@comunica/utils-iterator");
5
- const utils_metadata_1 = require("@comunica/utils-metadata");
6
- const rdf_streaming_store_1 = require("rdf-streaming-store");
7
- /**
8
- * A StreamingStore that returns an AsyncIterator with a valid MetadataQuads property.
9
- */
10
- class StreamingStoreMetadata extends rdf_streaming_store_1.StreamingStore {
11
- constructor(store, metadataAccumulator, emitPartialCardinalities) {
12
- super(store);
13
- this.started = false;
14
- this.containedSources = new Set();
15
- this.runningIterators = new Set();
16
- this.iteratorCreatedListeners = new Set();
17
- this.baseMetadata = {
18
- state: new utils_metadata_1.MetadataValidationState(),
19
- cardinality: { type: 'exact', value: 0 },
20
- variables: [],
21
- };
22
- this.metadataAccumulator = metadataAccumulator;
23
- this.emitPartialCardinalities = emitPartialCardinalities;
24
- }
25
- import(stream) {
26
- if (!this.ended) {
27
- super.import(stream);
28
- }
29
- return stream;
30
- }
31
- hasRunningIterators() {
32
- return this.runningIterators.size > 0;
33
- }
34
- match(subject, predicate, object, graph) {
35
- // Wrap the raw stream in an AsyncIterator
36
- const rawStream = super.match(subject, predicate, object, graph);
37
- const iterator = new utils_iterator_1.ClosableTransformIterator(rawStream, {
38
- autoStart: false,
39
- onClose: () => {
40
- // Running iterators are deleted once closed or destroyed
41
- this.runningIterators.delete(iterator);
42
- },
43
- });
44
- // Expose the metadata property containing the cardinality
45
- let count = this.getStore().countQuads(subject, predicate, object, graph);
46
- const metadata = {
47
- state: new utils_metadata_1.MetadataValidationState(),
48
- cardinality: {
49
- type: 'estimate',
50
- value: count,
51
- },
52
- };
53
- iterator.setProperty('metadata', metadata);
54
- iterator.setProperty('lastCount', count);
55
- if (this.emitPartialCardinalities) {
56
- // Every time a new quad is pushed into the iterator, update the metadata
57
- rawStream.on('quad', () => {
58
- iterator.setProperty('lastCount', ++count);
59
- this.updateMetadataState(iterator, count);
60
- });
61
- }
62
- // Store all running iterators until they close or are destroyed
63
- this.runningIterators.add(iterator);
64
- // Invoke creation listeners
65
- for (const listener of this.iteratorCreatedListeners) {
66
- listener();
67
- }
68
- return iterator;
69
- }
70
- setBaseMetadata(metadata, updateStates) {
71
- this.baseMetadata = { ...metadata };
72
- this.baseMetadata.cardinality = { type: 'exact', value: 0 };
73
- if (updateStates) {
74
- for (const iterator of this.runningIterators) {
75
- const count = iterator.getProperty('lastCount');
76
- this.updateMetadataState(iterator, count);
77
- }
78
- }
79
- }
80
- updateMetadataState(iterator, count) {
81
- // Append the given cardinality to the base metadata
82
- const metadataNew = {
83
- state: new utils_metadata_1.MetadataValidationState(),
84
- cardinality: {
85
- type: 'estimate',
86
- value: count,
87
- },
88
- variables: [],
89
- };
90
- this.metadataAccumulator(this.baseMetadata, metadataNew)
91
- .then((accumulatedMetadata) => {
92
- accumulatedMetadata.state = new utils_metadata_1.MetadataValidationState();
93
- // Set the new metadata, and invalidate the previous state
94
- const metadataToInvalidate = iterator.getProperty('metadata');
95
- iterator.setProperty('metadata', accumulatedMetadata);
96
- metadataToInvalidate?.state.invalidate();
97
- })
98
- .catch(() => {
99
- // Void errors
100
- });
101
- }
102
- addIteratorCreatedListener(listener) {
103
- this.iteratorCreatedListeners.add(listener);
104
- }
105
- removeIteratorCreatedListener(listener) {
106
- this.iteratorCreatedListeners.delete(listener);
107
- }
108
- }
109
- exports.StreamingStoreMetadata = StreamingStoreMetadata;
110
- //# sourceMappingURL=StreamingStoreMetadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StreamingStoreMetadata.js","sourceRoot":"","sources":["StreamingStoreMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-nodejs-modules\nimport type { EventEmitter } from 'node:events';\nimport type { MetadataQuads, IAggregatedStore, MetadataBindings } from '@comunica/types';\nimport { ClosableTransformIterator } from '@comunica/utils-iterator';\nimport { MetadataValidationState } from '@comunica/utils-metadata';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { StreamingStore } from 'rdf-streaming-store';\n\n/**\n * A StreamingStore that returns an AsyncIterator with a valid MetadataQuads property.\n */\nexport class StreamingStoreMetadata extends StreamingStore implements IAggregatedStore {\n public started = false;\n public containedSources = new Set<string>();\n public readonly runningIterators: Set<AsyncIterator<RDF.Quad>> = new Set<AsyncIterator<RDF.Quad>>();\n protected readonly iteratorCreatedListeners: Set<() => void> = new Set();\n protected readonly metadataAccumulator:\n (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise<MetadataBindings>;\n\n /**\n * Whether the StreamingStoreMetadata should emit updated partial cardinalities\n * for each matching quad. Enabling this option may impact performance due to\n * frequent {@link MetadataValidationState} invalidations and updates\n */\n private readonly emitPartialCardinalities: boolean;\n\n protected baseMetadata: MetadataBindings = {\n state: new MetadataValidationState(),\n cardinality: { type: 'exact', value: 0 },\n variables: [],\n };\n\n public constructor(\n store: RDF.Store | undefined,\n metadataAccumulator:\n (accumulatedMetadata: MetadataBindings, appendingMetadata: MetadataBindings) => Promise<MetadataBindings>,\n emitPartialCardinalities: boolean,\n ) {\n super(store);\n this.metadataAccumulator = metadataAccumulator;\n this.emitPartialCardinalities = emitPartialCardinalities;\n }\n\n public override import(stream: RDF.Stream): EventEmitter {\n if (!this.ended) {\n super.import(stream);\n }\n return stream;\n }\n\n public hasRunningIterators(): boolean {\n return this.runningIterators.size > 0;\n }\n\n public override match(\n subject?: RDF.Term | null,\n predicate?: RDF.Term | null,\n object?: RDF.Term | null,\n graph?: RDF.Term | null,\n ): AsyncIterator<RDF.Quad> {\n // Wrap the raw stream in an AsyncIterator\n const rawStream = super.match(subject, predicate, object, graph);\n const iterator = new ClosableTransformIterator<RDF.Quad, RDF.Quad>(\n <any> rawStream,\n {\n autoStart: false,\n onClose: () => {\n // Running iterators are deleted once closed or destroyed\n this.runningIterators.delete(iterator);\n },\n },\n );\n\n // Expose the metadata property containing the cardinality\n let count = this.getStore().countQuads(subject!, predicate!, object!, graph!);\n const metadata: MetadataQuads = {\n state: new MetadataValidationState(),\n cardinality: {\n type: 'estimate',\n value: count,\n },\n };\n iterator.setProperty('metadata', metadata);\n iterator.setProperty('lastCount', count);\n\n if (this.emitPartialCardinalities) {\n // Every time a new quad is pushed into the iterator, update the metadata\n rawStream.on('quad', () => {\n iterator.setProperty('lastCount', ++count);\n this.updateMetadataState(iterator, count);\n });\n }\n\n // Store all running iterators until they close or are destroyed\n this.runningIterators.add(iterator);\n\n // Invoke creation listeners\n for (const listener of this.iteratorCreatedListeners) {\n listener();\n }\n\n return iterator;\n }\n\n public setBaseMetadata(metadata: MetadataBindings, updateStates: boolean): void {\n this.baseMetadata = { ...metadata };\n this.baseMetadata.cardinality = { type: 'exact', value: 0 };\n\n if (updateStates) {\n for (const iterator of this.runningIterators) {\n const count: number = iterator.getProperty('lastCount')!;\n this.updateMetadataState(iterator, count);\n }\n }\n }\n\n protected updateMetadataState(iterator: AsyncIterator<RDF.Quad>, count: number): void {\n // Append the given cardinality to the base metadata\n const metadataNew: MetadataBindings = {\n state: new MetadataValidationState(),\n cardinality: {\n type: 'estimate',\n value: count,\n },\n variables: [],\n };\n\n this.metadataAccumulator(this.baseMetadata, metadataNew)\n .then((accumulatedMetadata) => {\n accumulatedMetadata.state = new MetadataValidationState();\n\n // Set the new metadata, and invalidate the previous state\n const metadataToInvalidate = iterator.getProperty<MetadataQuads>('metadata');\n iterator.setProperty('metadata', accumulatedMetadata);\n metadataToInvalidate?.state.invalidate();\n })\n .catch(() => {\n // Void errors\n });\n }\n\n public addIteratorCreatedListener(listener: () => void): void {\n this.iteratorCreatedListeners.add(listener);\n }\n\n public removeIteratorCreatedListener(listener: () => void): void {\n this.iteratorCreatedListeners.delete(listener);\n }\n}\n"]}