@comunica/actor-query-result-serialize-stats 3.0.3 → 3.1.2
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.
|
@@ -163,12 +163,12 @@
|
|
|
163
163
|
"memberFieldName": "pushHeader"
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
|
-
"@id": "caqrsst:components/ActorQueryResultSerializeStats.jsonld#
|
|
167
|
-
"memberFieldName": "
|
|
166
|
+
"@id": "caqrsst:components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats__member_createStat",
|
|
167
|
+
"memberFieldName": "createStat"
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
|
-
"@id": "caqrsst:components/ActorQueryResultSerializeStats.jsonld#
|
|
171
|
-
"memberFieldName": "
|
|
170
|
+
"@id": "caqrsst:components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats__member_createFooter",
|
|
171
|
+
"memberFieldName": "createFooter"
|
|
172
172
|
},
|
|
173
173
|
{
|
|
174
174
|
"@id": "caqrsst:components/ActorQueryResultSerializeStats.jsonld#ActorQueryResultSerializeStats__member_runHandle",
|
|
@@ -17,8 +17,8 @@ export declare class ActorQueryResultSerializeStats extends ActorQueryResultSeri
|
|
|
17
17
|
constructor(args: IActorQueryResultSerializeStatsArgs);
|
|
18
18
|
testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise<boolean>;
|
|
19
19
|
pushHeader(data: Readable): void;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
createStat(startTime: number, result: number): string;
|
|
21
|
+
createFooter(startTime: number): string;
|
|
22
22
|
runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext): Promise<IActorQueryResultSerializeOutput>;
|
|
23
23
|
now(): number;
|
|
24
24
|
delay(startTime: number): number;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ActorQueryResultSerializeStats = void 0;
|
|
4
4
|
const bus_query_result_serialize_1 = require("@comunica/bus-query-result-serialize");
|
|
5
|
+
const asynciterator_1 = require("asynciterator");
|
|
5
6
|
const readable_stream_1 = require("readable-stream");
|
|
6
7
|
const process = require('process/');
|
|
7
8
|
/**
|
|
@@ -30,31 +31,31 @@ class ActorQueryResultSerializeStats extends bus_query_result_serialize_1.ActorQ
|
|
|
30
31
|
].join(',');
|
|
31
32
|
data.push(`${header}\n`);
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
+
createStat(startTime, result) {
|
|
34
35
|
const row = [result, this.delay(startTime), this.httpObserver.requests,
|
|
35
36
|
].join(',');
|
|
36
|
-
|
|
37
|
+
return `${row}\n`;
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
+
createFooter(startTime) {
|
|
39
40
|
const footer = ['TOTAL', this.delay(startTime), this.httpObserver.requests,
|
|
40
41
|
].join(',');
|
|
41
|
-
|
|
42
|
-
data.push(null);
|
|
42
|
+
return `${footer}\n`;
|
|
43
43
|
}
|
|
44
44
|
async runHandle(action, _mediaType, _context) {
|
|
45
45
|
const data = new readable_stream_1.Readable();
|
|
46
|
-
data._read = () => {
|
|
47
|
-
// Do nothing
|
|
48
|
-
};
|
|
49
46
|
const resultStream = action.type === 'bindings' ?
|
|
50
47
|
action.bindingsStream :
|
|
51
48
|
action.quadStream;
|
|
52
49
|
const startTime = this.now();
|
|
53
50
|
let result = 1;
|
|
51
|
+
function* end(cb) {
|
|
52
|
+
yield cb();
|
|
53
|
+
}
|
|
54
|
+
const stream = (0, asynciterator_1.wrap)(resultStream)
|
|
55
|
+
.map(() => this.createStat(startTime, result++))
|
|
56
|
+
.append((0, asynciterator_1.wrap)(end(() => this.createFooter(startTime))));
|
|
54
57
|
this.pushHeader(data);
|
|
55
|
-
|
|
56
|
-
resultStream.on('data', () => this.pushStat(data, startTime, result++));
|
|
57
|
-
resultStream.on('end', () => this.pushFooter(data, startTime));
|
|
58
|
+
data.wrap(stream);
|
|
58
59
|
return { data };
|
|
59
60
|
}
|
|
60
61
|
/* istanbul ignore next */
|
|
@@ -62,7 +63,7 @@ class ActorQueryResultSerializeStats extends bus_query_result_serialize_1.ActorQ
|
|
|
62
63
|
// TODO: remove when we will drop support of Node 14
|
|
63
64
|
if (typeof performance === 'undefined') {
|
|
64
65
|
const time = process.hrtime();
|
|
65
|
-
return time[0] *
|
|
66
|
+
return time[0] * 1_000 + (time[1] / 1_000_000);
|
|
66
67
|
}
|
|
67
68
|
return performance.now();
|
|
68
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActorQueryResultSerializeStats.js","sourceRoot":"","sources":["ActorQueryResultSerializeStats.ts"],"names":[],"mappings":";;;AAKA,qFAAgG;AAMhG,qDAA2C;AAG3C,MAAM,OAAO,GAAmB,OAAO,CAAC,UAAU,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAa,8BAA+B,SAAQ,qEAAwC;IAG1F,4BAA4B;IAC5B;;;;;OAKG;IACH,YAAmB,IAAyC;QAC1D,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IACD,2BAA2B;IAEX,KAAK,CAAC,iBAAiB,CAAC,MAA8B,EAAE,QAAwB;QAC9F,IAAI,CAAC,CAAE,UAAU,EAAE,OAAO,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,UAAU,CAAC,IAAc;QAC9B,MAAM,MAAM,GAAW,CAAE,QAAQ,EAAE,YAAY,EAAE,eAAe;SAC/D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"ActorQueryResultSerializeStats.js","sourceRoot":"","sources":["ActorQueryResultSerializeStats.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IActionSparqlSerialize,\n IActorQueryResultSerializeFixedMediaTypesArgs,\n IActorQueryResultSerializeOutput,\n} from '@comunica/bus-query-result-serialize';\nimport { ActorQueryResultSerializeFixedMediaTypes } from '@comunica/bus-query-result-serialize';\nimport type {\n IActionContext,\n IQueryOperationResultBindings,\n IQueryOperationResultQuads,\n} from '@comunica/types';\nimport { wrap } from 'asynciterator';\nimport { Readable } from 'readable-stream';\nimport type { ActionObserverHttp } from './ActionObserverHttp';\n\nconst process: NodeJS.Process = require('process/');\n\n/**\n * Serializes SPARQL results for testing and debugging.\n */\nexport class ActorQueryResultSerializeStats extends ActorQueryResultSerializeFixedMediaTypes {\n public readonly httpObserver: ActionObserverHttp;\n\n /* eslint-disable max-len */\n /**\n * @param args -\n * \\ @defaultNested {{ \"stats\": 0.5 }} mediaTypePriorities\n * \\ @defaultNested {{ \"stats\": \"https://comunica.linkeddatafragments.org/#results_stats\" }} mediaTypeFormats\n * \\ @defaultNested {<default_observer> a <caqrsst:components/ActionObserverHttp.jsonld#ActionObserverHttp>} httpObserver\n */\n public constructor(args: IActorQueryResultSerializeStatsArgs) {\n super(args);\n }\n /* eslint-enable max-len */\n\n public override async testHandleChecked(action: IActionSparqlSerialize, _context: IActionContext): Promise<boolean> {\n if (![ 'bindings', 'quads' ].includes(action.type)) {\n throw new Error('This actor can only handle bindings streams or quad streams.');\n }\n return true;\n }\n\n public pushHeader(data: Readable): void {\n const header: string = [ 'Result', 'Delay (ms)', 'HTTP requests',\n ].join(',');\n data.push(`${header}\\n`);\n }\n\n public createStat(startTime: number, result: number): string {\n const row: string = [ result, this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n return `${row}\\n`;\n }\n\n public createFooter(startTime: number): string {\n const footer: string = [ 'TOTAL', this.delay(startTime), this.httpObserver.requests,\n ].join(',');\n return `${footer}\\n`;\n }\n\n public async runHandle(action: IActionSparqlSerialize, _mediaType: string, _context: IActionContext):\n Promise<IActorQueryResultSerializeOutput> {\n const data = new Readable();\n\n const resultStream = action.type === 'bindings' ?\n (<IQueryOperationResultBindings> action).bindingsStream :\n (<IQueryOperationResultQuads> action).quadStream;\n\n const startTime = this.now();\n let result = 1;\n\n function* end(cb: () => string): Generator<string> {\n yield cb();\n }\n const stream = wrap(resultStream)\n .map(() => this.createStat(startTime, result++))\n .append(wrap(end(() => this.createFooter(startTime))));\n\n this.pushHeader(data);\n data.wrap(<any> stream);\n\n return { data };\n }\n\n /* istanbul ignore next */\n public now(): number {\n // TODO: remove when we will drop support of Node 14\n if (typeof performance === 'undefined') {\n const time: [number, number] = process.hrtime();\n return time[0] * 1_000 + (time[1] / 1_000_000);\n }\n return performance.now();\n }\n\n public delay(startTime: number): number {\n return this.now() - startTime;\n }\n}\n\nexport interface IActorQueryResultSerializeStatsArgs extends IActorQueryResultSerializeFixedMediaTypesArgs {\n httpObserver: ActionObserverHttp;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comunica/actor-query-result-serialize-stats",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.2",
|
|
4
4
|
"description": "A stats query-result-serialize actor",
|
|
5
5
|
"lsd:module": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,18 +32,19 @@
|
|
|
32
32
|
"lib/**/*.js.map"
|
|
33
33
|
],
|
|
34
34
|
"scripts": {
|
|
35
|
-
"build": "
|
|
35
|
+
"build": "yarn run build:ts && yarn run build:components",
|
|
36
36
|
"build:ts": "node \"../../node_modules/typescript/bin/tsc\"",
|
|
37
37
|
"build:components": "componentsjs-generator"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@comunica/bus-http": "^3.0
|
|
41
|
-
"@comunica/bus-http-invalidate": "^3.0
|
|
42
|
-
"@comunica/bus-query-result-serialize": "^3.0
|
|
43
|
-
"@comunica/core": "^3.0
|
|
44
|
-
"@comunica/types": "^3.0
|
|
40
|
+
"@comunica/bus-http": "^3.1.0",
|
|
41
|
+
"@comunica/bus-http-invalidate": "^3.1.0",
|
|
42
|
+
"@comunica/bus-query-result-serialize": "^3.1.0",
|
|
43
|
+
"@comunica/core": "^3.1.0",
|
|
44
|
+
"@comunica/types": "^3.1.0",
|
|
45
|
+
"asynciterator": "^3.9.0",
|
|
45
46
|
"process": "^0.11.10",
|
|
46
47
|
"readable-stream": "^4.4.2"
|
|
47
48
|
},
|
|
48
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "db31677bdef5400194783048840c147e04b793e5"
|
|
49
50
|
}
|