@comunica/actor-init-query 2.6.0 → 2.6.7

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.
@@ -106,6 +106,20 @@
106
106
  "default": "sparql",
107
107
  "comment": "The default query input format"
108
108
  },
109
+ {
110
+ "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_allowNoSources",
111
+ "range": {
112
+ "@type": "ParameterRangeUnion",
113
+ "parameterRangeElements": [
114
+ "xsd:boolean",
115
+ {
116
+ "@type": "ParameterRangeUndefined"
117
+ }
118
+ ]
119
+ },
120
+ "default": "false",
121
+ "comment": "If it should be allowed that the user passes no sources."
122
+ },
109
123
  {
110
124
  "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_context",
111
125
  "range": {
@@ -354,6 +368,12 @@
354
368
  "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_defaultQueryInputFormat"
355
369
  }
356
370
  },
371
+ {
372
+ "keyRaw": "allowNoSources",
373
+ "value": {
374
+ "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_allowNoSources"
375
+ }
376
+ },
357
377
  {
358
378
  "keyRaw": "context",
359
379
  "value": {
@@ -107,6 +107,20 @@
107
107
  "default": "sparql",
108
108
  "comment": "The default query input format"
109
109
  },
110
+ {
111
+ "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_allowNoSources",
112
+ "range": {
113
+ "@type": "ParameterRangeUnion",
114
+ "parameterRangeElements": [
115
+ "xsd:boolean",
116
+ {
117
+ "@type": "ParameterRangeUndefined"
118
+ }
119
+ ]
120
+ },
121
+ "default": "false",
122
+ "comment": "If it should be allowed that the user passes no sources."
123
+ },
110
124
  {
111
125
  "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_context",
112
126
  "range": {
@@ -331,6 +345,11 @@
331
345
  "memberFieldName": "defaultQueryInputFormat",
332
346
  "range": "xsd:string"
333
347
  },
348
+ {
349
+ "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase__member_allowNoSources",
350
+ "memberFieldName": "allowNoSources",
351
+ "range": "xsd:boolean"
352
+ },
334
353
  {
335
354
  "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase__member_context",
336
355
  "memberFieldName": "context",
@@ -452,6 +471,12 @@
452
471
  "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_defaultQueryInputFormat"
453
472
  }
454
473
  },
474
+ {
475
+ "keyRaw": "allowNoSources",
476
+ "value": {
477
+ "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_allowNoSources"
478
+ }
479
+ },
455
480
  {
456
481
  "keyRaw": "context",
457
482
  "value": {
@@ -548,6 +573,10 @@
548
573
  "@id": "caiq:components/ActorInitQueryBase.jsonld#IActorInitQueryBaseArgs__member_defaultQueryInputFormat",
549
574
  "memberFieldName": "defaultQueryInputFormat"
550
575
  },
576
+ {
577
+ "@id": "caiq:components/ActorInitQueryBase.jsonld#IActorInitQueryBaseArgs__member_allowNoSources",
578
+ "memberFieldName": "allowNoSources"
579
+ },
551
580
  {
552
581
  "@id": "caiq:components/ActorInitQueryBase.jsonld#IActorInitQueryBaseArgs__member_context",
553
582
  "memberFieldName": "context"
@@ -14,6 +14,14 @@
14
14
  {
15
15
  "@id": "caiq:components/QueryEngineBase.jsonld#QueryEngineBase__generic_QueryContext",
16
16
  "range": "ct:components/IQueryContext.jsonld#IQueryContextCommon"
17
+ },
18
+ {
19
+ "@id": "caiq:components/QueryEngineBase.jsonld#QueryEngineBase__generic_QueryStringContextInner",
20
+ "range": "urn:npm:@rdfjs/types:QueryStringContext"
21
+ },
22
+ {
23
+ "@id": "caiq:components/QueryEngineBase.jsonld#QueryEngineBase__generic_QueryAlgebraContextInner",
24
+ "range": "urn:npm:@rdfjs/types:QueryContext"
17
25
  }
18
26
  ],
19
27
  "parameters": [
@@ -49,6 +49,18 @@
49
49
  }
50
50
  ]
51
51
  }
52
+ },
53
+ {
54
+ "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery_allowNoSources",
55
+ "range": {
56
+ "@type": "ParameterRangeUnion",
57
+ "parameterRangeElements": [
58
+ "xsd:boolean",
59
+ {
60
+ "@type": "ParameterRangeUndefined"
61
+ }
62
+ ]
63
+ }
52
64
  }
53
65
  ],
54
66
  "memberFields": [
@@ -64,6 +76,10 @@
64
76
  "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery__member_context",
65
77
  "memberFieldName": "context"
66
78
  },
79
+ {
80
+ "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery__member_allowNoSources",
81
+ "memberFieldName": "allowNoSources"
82
+ },
67
83
  {
68
84
  "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery__member_constructor",
69
85
  "memberFieldName": "constructor"
@@ -86,6 +102,9 @@
86
102
  },
87
103
  {
88
104
  "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery_context"
105
+ },
106
+ {
107
+ "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery_allowNoSources"
89
108
  }
90
109
  ]
91
110
  }
@@ -50,6 +50,9 @@
50
50
  "args_defaultQueryInputFormat": {
51
51
  "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_defaultQueryInputFormat"
52
52
  },
53
+ "args_allowNoSources": {
54
+ "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_allowNoSources"
55
+ },
53
56
  "args_context": {
54
57
  "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_context"
55
58
  },
@@ -103,6 +106,9 @@
103
106
  "defaultQueryInputFormat": {
104
107
  "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_defaultQueryInputFormat"
105
108
  },
109
+ "allowNoSources": {
110
+ "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_allowNoSources"
111
+ },
106
112
  "context": {
107
113
  "@id": "caiq:components/ActorInitQueryBase.jsonld#ActorInitQueryBase_args_context"
108
114
  },
@@ -167,6 +173,9 @@
167
173
  "args_defaultQueryInputFormat": {
168
174
  "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_defaultQueryInputFormat"
169
175
  },
176
+ "args_allowNoSources": {
177
+ "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_allowNoSources"
178
+ },
170
179
  "args_context": {
171
180
  "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_context"
172
181
  },
@@ -220,6 +229,9 @@
220
229
  "defaultQueryInputFormat": {
221
230
  "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_defaultQueryInputFormat"
222
231
  },
232
+ "allowNoSources": {
233
+ "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_allowNoSources"
234
+ },
223
235
  "context": {
224
236
  "@id": "caiq:components/ActorInitQuery.jsonld#ActorInitQuery_args_context"
225
237
  },
@@ -279,11 +291,8 @@
279
291
  "context": {
280
292
  "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery_context"
281
293
  },
282
- "ueryInputFormat": {
283
- "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery_defaultQueryInputFormat"
284
- },
285
- "ing": {
286
- "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery_queryString"
294
+ "allowNoSources": {
295
+ "@id": "caiq:components/cli/CliArgsHandlerQuery.jsonld#CliArgsHandlerQuery_allowNoSources"
287
296
  }
288
297
  }
289
298
  },
@@ -22,7 +22,7 @@ class ActorInitQuery extends ActorInitQueryBase_1.ActorInitQueryBase {
22
22
  const queryEngine = new QueryEngineBase_1.QueryEngineBase(this);
23
23
  const cliArgsHandlers = [
24
24
  new CliArgsHandlerBase_1.CliArgsHandlerBase(action.context),
25
- new CliArgsHandlerQuery_1.CliArgsHandlerQuery(this.defaultQueryInputFormat, this.queryString, this.context),
25
+ new CliArgsHandlerQuery_1.CliArgsHandlerQuery(this.defaultQueryInputFormat, this.queryString, this.context, this.allowNoSources),
26
26
  // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style
27
27
  ...action.context?.get(context_entries_1.KeysInitQuery.cliArgsHandlers) || [],
28
28
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"ActorInitQuery.js","sourceRoot":"","sources":["ActorInitQuery.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-nodejs-modules */\nimport { readFileSync } from 'fs';\nimport type { IActionInit, IActorOutputInit } from '@comunica/bus-init';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { ICliArgsHandler, IQueryContextCommon } from '@comunica/types';\nimport type { Readable } from 'readable-stream';\nimport yargs from 'yargs';\nimport type { IActorInitQueryBaseArgs } from './ActorInitQueryBase';\nimport { ActorInitQueryBase } from './ActorInitQueryBase';\nimport { CliArgsHandlerBase } from './cli/CliArgsHandlerBase';\nimport { CliArgsHandlerQuery } from './cli/CliArgsHandlerQuery';\nimport { QueryEngineBase } from './QueryEngineBase';\n\nconst streamifyString = require('streamify-string');\n\n/**\n * A comunica Query Init Actor.\n */\nexport class ActorInitQuery<QueryContext extends IQueryContextCommon = IQueryContextCommon>\n extends ActorInitQueryBase<QueryContext> {\n public constructor(args: IActorInitQueryBaseArgs<QueryContext>) {\n super(args);\n }\n\n public async run(action: IActionInit): Promise<IActorOutputInit> {\n // Wrap this actor in a query engine so we can conveniently execute queries\n const queryEngine = new QueryEngineBase<QueryContext>(this);\n\n const cliArgsHandlers: ICliArgsHandler[] = [\n new CliArgsHandlerBase(action.context),\n new CliArgsHandlerQuery(\n this.defaultQueryInputFormat,\n this.queryString,\n this.context,\n ),\n // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style\n ...(<ICliArgsHandler[]> action.context?.get(KeysInitQuery.cliArgsHandlers)) || [],\n ];\n\n // Populate yargs arguments object\n let argumentsBuilder = yargs({});\n for (const cliArgsHandler of cliArgsHandlers) {\n argumentsBuilder = cliArgsHandler.populateYargs(argumentsBuilder);\n }\n\n // Extract raw argument values from parsed yargs object, so that we can handle each of them hereafter\n let args: Record<string, any>;\n try {\n args = await argumentsBuilder.parse(action.argv);\n } catch (error: unknown) {\n return {\n stderr: require('streamify-string')(`${await argumentsBuilder.getHelp()}\\n\\n${(<Error> error).message}\\n`),\n };\n }\n\n // Print supported MIME types\n if (args.listformats) {\n const mediaTypes: Record<string, number> = await queryEngine.getResultMediaTypes();\n return { stdout: require('streamify-string')(`${Object.keys(mediaTypes).join('\\n')}\\n`) };\n }\n\n // Define query\n // We need to do this before the cliArgsHandlers, as we may modify the sources array\n let query: string | undefined;\n if (args.query) {\n query = <string> args.query;\n } else if (args.file) {\n query = readFileSync(args.file, { encoding: 'utf8' });\n } else if (args.sources.length > 0) {\n query = args.sources[args.sources.length - 1];\n args.sources.pop();\n }\n\n // Invoke args handlers to process any remaining args\n const context: Record<string, any> = {};\n try {\n for (const cliArgsHandler of cliArgsHandlers) {\n await cliArgsHandler.handleArgs(args, context);\n }\n } catch (error: unknown) {\n return { stderr: require('streamify-string')((<Error> error).message) };\n }\n\n // Evaluate query\n const queryResult = await queryEngine.queryOrExplain(query!, <any> context);\n\n // Output query explanations in a different way\n if ('explain' in queryResult) {\n return {\n stdout: streamifyString(JSON.stringify(queryResult.data, null, ' ')),\n };\n }\n\n // Serialize output according to media type\n const stdout: Readable = <Readable> (await queryEngine.resultToString(\n queryResult,\n args.outputType,\n queryResult.context,\n )).data;\n\n return { stdout };\n }\n}\n/* eslint-enable import/no-nodejs-modules */\n"]}
1
+ {"version":3,"file":"ActorInitQuery.js","sourceRoot":"","sources":["ActorInitQuery.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-nodejs-modules */\nimport { readFileSync } from 'fs';\nimport type { IActionInit, IActorOutputInit } from '@comunica/bus-init';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { ICliArgsHandler, IQueryContextCommon } from '@comunica/types';\nimport type { Readable } from 'readable-stream';\nimport yargs from 'yargs';\nimport type { IActorInitQueryBaseArgs } from './ActorInitQueryBase';\nimport { ActorInitQueryBase } from './ActorInitQueryBase';\nimport { CliArgsHandlerBase } from './cli/CliArgsHandlerBase';\nimport { CliArgsHandlerQuery } from './cli/CliArgsHandlerQuery';\nimport { QueryEngineBase } from './QueryEngineBase';\n\nconst streamifyString = require('streamify-string');\n\n/**\n * A comunica Query Init Actor.\n */\nexport class ActorInitQuery<QueryContext extends IQueryContextCommon = IQueryContextCommon>\n extends ActorInitQueryBase<QueryContext> {\n public constructor(args: IActorInitQueryBaseArgs<QueryContext>) {\n super(args);\n }\n\n public async run(action: IActionInit): Promise<IActorOutputInit> {\n // Wrap this actor in a query engine so we can conveniently execute queries\n const queryEngine = new QueryEngineBase<QueryContext>(this);\n\n const cliArgsHandlers: ICliArgsHandler[] = [\n new CliArgsHandlerBase(action.context),\n new CliArgsHandlerQuery(\n this.defaultQueryInputFormat,\n this.queryString,\n this.context,\n this.allowNoSources,\n ),\n // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style\n ...(<ICliArgsHandler[]> action.context?.get(KeysInitQuery.cliArgsHandlers)) || [],\n ];\n\n // Populate yargs arguments object\n let argumentsBuilder = yargs({});\n for (const cliArgsHandler of cliArgsHandlers) {\n argumentsBuilder = cliArgsHandler.populateYargs(argumentsBuilder);\n }\n\n // Extract raw argument values from parsed yargs object, so that we can handle each of them hereafter\n let args: Record<string, any>;\n try {\n args = await argumentsBuilder.parse(action.argv);\n } catch (error: unknown) {\n return {\n stderr: require('streamify-string')(`${await argumentsBuilder.getHelp()}\\n\\n${(<Error> error).message}\\n`),\n };\n }\n\n // Print supported MIME types\n if (args.listformats) {\n const mediaTypes: Record<string, number> = await queryEngine.getResultMediaTypes();\n return { stdout: require('streamify-string')(`${Object.keys(mediaTypes).join('\\n')}\\n`) };\n }\n\n // Define query\n // We need to do this before the cliArgsHandlers, as we may modify the sources array\n let query: string | undefined;\n if (args.query) {\n query = <string> args.query;\n } else if (args.file) {\n query = readFileSync(args.file, { encoding: 'utf8' });\n } else if (args.sources.length > 0) {\n query = args.sources[args.sources.length - 1];\n args.sources.pop();\n }\n\n // Invoke args handlers to process any remaining args\n const context: Record<string, any> = {};\n try {\n for (const cliArgsHandler of cliArgsHandlers) {\n await cliArgsHandler.handleArgs(args, context);\n }\n } catch (error: unknown) {\n return { stderr: require('streamify-string')((<Error> error).message) };\n }\n\n // Evaluate query\n const queryResult = await queryEngine.queryOrExplain(query!, <any> context);\n\n // Output query explanations in a different way\n if ('explain' in queryResult) {\n return {\n stdout: streamifyString(JSON.stringify(queryResult.data, null, ' ')),\n };\n }\n\n // Serialize output according to media type\n const stdout: Readable = <Readable> (await queryEngine.resultToString(\n queryResult,\n args.outputType,\n queryResult.context,\n )).data;\n\n return { stdout };\n }\n}\n/* eslint-enable import/no-nodejs-modules */\n"]}
@@ -23,6 +23,7 @@ export declare class ActorInitQueryBase<QueryContext extends IQueryContextCommon
23
23
  readonly logger: Logger;
24
24
  readonly queryString?: string;
25
25
  readonly defaultQueryInputFormat?: string;
26
+ readonly allowNoSources?: boolean;
26
27
  readonly context?: string;
27
28
  readonly contextKeyShortcuts: Record<string, string> & Partial<Record<keyof QueryContext, string>>;
28
29
  /** Array of `contextKeyShortcuts` appended to `contextKeyShortcuts` during construction. */
@@ -85,6 +86,11 @@ export interface IActorInitQueryBaseArgs<QueryContext extends IQueryContextCommo
85
86
  * @default {sparql}
86
87
  */
87
88
  defaultQueryInputFormat?: string;
89
+ /**
90
+ * If it should be allowed that the user passes no sources.
91
+ * @default {false}
92
+ */
93
+ allowNoSources?: boolean;
88
94
  /**
89
95
  * A JSON string of a query operation context
90
96
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ActorInitQueryBase.js","sourceRoot":"","sources":["ActorInitQueryBase.ts"],"names":[],"mappings":";;;AAGA,iDAA+C;AAU/C;;GAEG;AACH,MAAa,kBACX,SAAQ,oBAAS;IAmBjB;;;;;;OAMG;IACH,YAAmB,IAA6B;QAC9C,sCAAsC;QACtC,IAAI,CAAC,6BAA6B,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE;YAC/D,oFAAoF;YACpF,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;gBACpG,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;aACvF;YACD,IAAI,CAAC,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,kBAAkB,EAAE,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAmB;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,MAAmB;QAClC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;CACF;AA9CD,gDA8CC","sourcesContent":["import type { MediatorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { MediatorHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { IActionInit, IActorInitArgs, IActorOutputInit } from '@comunica/bus-init';\nimport { ActorInit } from '@comunica/bus-init';\nimport type { MediatorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport type { MediatorQueryParse } from '@comunica/bus-query-parse';\nimport type { MediatorQueryResultSerializeHandle,\n MediatorQueryResultSerializeMediaTypes,\n MediatorQueryResultSerializeMediaTypeFormats } from '@comunica/bus-query-result-serialize';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryContextCommon, Logger } from '@comunica/types';\n\n/**\n * A browser-safe comunica Query Init Actor.\n */\nexport class ActorInitQueryBase<QueryContext extends IQueryContextCommon = IQueryContextCommon>\n extends ActorInit implements IActorInitQueryBaseArgs<QueryContext> {\n public readonly mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorQueryParse: MediatorQueryParse;\n public readonly mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n public readonly mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n public readonly mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly mediatorHttpInvalidate: MediatorHttpInvalidate;\n\n public readonly logger: Logger;\n public readonly queryString?: string;\n public readonly defaultQueryInputFormat?: string;\n public readonly context?: string;\n public readonly contextKeyShortcuts: Record<string, string> & Partial<Record<keyof QueryContext, string>>;\n /** Array of `contextKeyShortcuts` appended to `contextKeyShortcuts` during construction. */\n public readonly contextKeyShortcutsExtensions?: (Record<string, string>\n | Partial<Record<keyof Omit<QueryContext, keyof IQueryContextCommon>, string>>)[];\n\n /**\n * Create new ActorInitQueryBase object.\n * @param args.contextKeyShortcutsExtensions Array of `contextKeyShortcuts` that are merged\n * with the `contextKeyShortcuts` field. This allows adding shortcuts to the defaults.\n * @throws When duplicate keys are present in `args.contextKeyShortcuts`\n * and `args.contextKeyShortcutsExtensions`.\n */\n public constructor(args: IActorInitQueryBaseArgs) {\n // Add additional contextKeyShortcuts.\n args.contextKeyShortcutsExtensions?.forEach(extensionShortcuts => {\n // Throw, if there are duplicate keys that are to be added to `contextKeyShortcuts`.\n if (Object.keys(args.contextKeyShortcuts).some(key => Object.keys(extensionShortcuts).includes(key))) {\n throw new Error('Duplicate keys found while adding `contextKeyShortcutsExtensions`.');\n }\n args.contextKeyShortcuts = { ...args.contextKeyShortcuts, ...extensionShortcuts };\n });\n super(args);\n }\n\n public async test(action: IActionInit): Promise<IActorTest> {\n return true;\n }\n\n public async run(action: IActionInit): Promise<IActorOutputInit> {\n throw new Error('ActorInitSparql#run is not supported in the browser.');\n }\n}\n\nexport interface IActorInitQueryBaseArgs<QueryContext extends IQueryContextCommon = IQueryContextCommon>\n extends IActorInitArgs {\n /**\n * The query operation optimize mediator\n */\n mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * The query parse mediator\n */\n mediatorQueryParse: MediatorQueryParse;\n /**\n * The query serialize mediator\n */\n mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n /**\n * The query serialize media type combinator\n */\n mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n /**\n * The query serialize media type format combinator\n */\n mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n /**\n * The HTTP cache invalidation mediator\n */\n mediatorHttpInvalidate: MediatorHttpInvalidate;\n /**\n * The logger of this actor\n * @default {a <npmd:@comunica/logger-void/^2.0.0/components/LoggerVoid.jsonld#LoggerVoid>}\n */\n logger: Logger;\n /**\n * A SPARQL query string\n */\n queryString?: string;\n /**\n * The default query input format\n * @default {sparql}\n */\n defaultQueryInputFormat?: string;\n /**\n * A JSON string of a query operation context\n */\n context?: string;\n /**\n * A record of context shortcuts to full context keys (as defined in @comunica/context-entries).\n * @range {json}\n * @default {{\n * \"source\": \"@comunica/bus-rdf-resolve-quad-pattern:source\",\n * \"sources\": \"@comunica/bus-rdf-resolve-quad-pattern:sources\",\n * \"destination\": \"@comunica/bus-rdf-update-quads:destination\",\n * \"initialBindings\": \"@comunica/actor-init-query:initialBindings\",\n * \"queryFormat\": \"@comunica/actor-init-query:queryFormat\",\n * \"baseIRI\": \"@comunica/actor-init-query:baseIRI\",\n * \"log\": \"@comunica/core:log\",\n * \"datetime\": \"@comunica/actor-http-memento:datetime\",\n * \"queryTimestamp\": \"@comunica/actor-init-query:queryTimestamp\",\n * \"httpProxyHandler\": \"@comunica/actor-http-proxy:httpProxyHandler\",\n * \"lenient\": \"@comunica/actor-init-query:lenient\",\n * \"httpIncludeCredentials\": \"@comunica/bus-http:include-credentials\",\n * \"httpAuth\": \"@comunica/bus-http:auth\",\n * \"httpTimeout\": \"@comunica/bus-http:http-timeout\",\n * \"httpBodyTimeout\": \"@comunica/bus-http:http-body-timeout\",\n * \"httpRetryCount\": \"@comunica/bus-http:http-retry-count\",\n * \"httpRetryDelay\": \"@comunica/bus-http:http-retry-delay\",\n * \"httpRetryOnServerError\": \"@comunica/bus-http:http-retry-on-server-error\",\n * \"fetch\": \"@comunica/bus-http:fetch\",\n * \"recoverBrokenLinks\": \"@comunica/bus-http-wayback:recover-broken-links\",\n * \"readOnly\": \"@comunica/bus-query-operation:readOnly\",\n * \"extensionFunctions\": \"@comunica/actor-init-query:extensionFunctions\",\n * \"extensionFunctionCreator\": \"@comunica/actor-init-query:extensionFunctionCreator\",\n * \"functionArgumentsCache\": \"@comunica/actor-init-query:functionArgumentsCache\",\n * \"explain\": \"@comunica/actor-init-query:explain\",\n * \"unionDefaultGraph\": \"@comunica/bus-query-operation:unionDefaultGraph\",\n * \"localizeBlankNodes\": \"@comunica/actor-query-operation:localizeBlankNodes\"\n * }}\n */\n contextKeyShortcuts: Record<string, string> | Partial<Record<keyof QueryContext, string>>;\n /**\n * An array of `contextKeyShortcuts` that are to be appended to the (default) `contextKeyShortcuts`\n * (which are by default injected by component.js).\n *\n * The appending happens in the constructor call. Conflicting keys will cause an error.\n * If you extend `ActorInitQueryBase` and want to add custom shortcuts, do so as follows:\n * ```\n * public constructor(args: IActorInitQueryBaseArgs<QueryContext>) {\n * if (!args.contextKeyShortcutsExtensions) {\n * args.contextKeyShortcutsExtensions = [];\n * }\n * args.contextKeyShortcutsExtensions.push(addedShortcuts);\n *\n * super(args);\n * }\n * ```\n */\n contextKeyShortcutsExtensions?: (Record<string, string>\n | Partial<Record<keyof Omit<QueryContext, keyof IQueryContextCommon>, string>>)[];\n}\n"]}
1
+ {"version":3,"file":"ActorInitQueryBase.js","sourceRoot":"","sources":["ActorInitQueryBase.ts"],"names":[],"mappings":";;;AAGA,iDAA+C;AAU/C;;GAEG;AACH,MAAa,kBACX,SAAQ,oBAAS;IAoBjB;;;;;;OAMG;IACH,YAAmB,IAA6B;QAC9C,sCAAsC;QACtC,IAAI,CAAC,6BAA6B,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE;YAC/D,oFAAoF;YACpF,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;gBACpG,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;aACvF;YACD,IAAI,CAAC,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,kBAAkB,EAAE,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAmB;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,MAAmB;QAClC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;CACF;AA/CD,gDA+CC","sourcesContent":["import type { MediatorContextPreprocess } from '@comunica/bus-context-preprocess';\nimport type { MediatorHttpInvalidate } from '@comunica/bus-http-invalidate';\nimport type { IActionInit, IActorInitArgs, IActorOutputInit } from '@comunica/bus-init';\nimport { ActorInit } from '@comunica/bus-init';\nimport type { MediatorOptimizeQueryOperation } from '@comunica/bus-optimize-query-operation';\nimport type { MediatorQueryOperation } from '@comunica/bus-query-operation';\nimport type { MediatorQueryParse } from '@comunica/bus-query-parse';\nimport type { MediatorQueryResultSerializeHandle,\n MediatorQueryResultSerializeMediaTypes,\n MediatorQueryResultSerializeMediaTypeFormats } from '@comunica/bus-query-result-serialize';\nimport type { IActorTest } from '@comunica/core';\nimport type { IQueryContextCommon, Logger } from '@comunica/types';\n\n/**\n * A browser-safe comunica Query Init Actor.\n */\nexport class ActorInitQueryBase<QueryContext extends IQueryContextCommon = IQueryContextCommon>\n extends ActorInit implements IActorInitQueryBaseArgs<QueryContext> {\n public readonly mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n public readonly mediatorQueryOperation: MediatorQueryOperation;\n public readonly mediatorQueryParse: MediatorQueryParse;\n public readonly mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n public readonly mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n public readonly mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n public readonly mediatorContextPreprocess: MediatorContextPreprocess;\n public readonly mediatorHttpInvalidate: MediatorHttpInvalidate;\n\n public readonly logger: Logger;\n public readonly queryString?: string;\n public readonly defaultQueryInputFormat?: string;\n public readonly allowNoSources?: boolean;\n public readonly context?: string;\n public readonly contextKeyShortcuts: Record<string, string> & Partial<Record<keyof QueryContext, string>>;\n /** Array of `contextKeyShortcuts` appended to `contextKeyShortcuts` during construction. */\n public readonly contextKeyShortcutsExtensions?: (Record<string, string>\n | Partial<Record<keyof Omit<QueryContext, keyof IQueryContextCommon>, string>>)[];\n\n /**\n * Create new ActorInitQueryBase object.\n * @param args.contextKeyShortcutsExtensions Array of `contextKeyShortcuts` that are merged\n * with the `contextKeyShortcuts` field. This allows adding shortcuts to the defaults.\n * @throws When duplicate keys are present in `args.contextKeyShortcuts`\n * and `args.contextKeyShortcutsExtensions`.\n */\n public constructor(args: IActorInitQueryBaseArgs) {\n // Add additional contextKeyShortcuts.\n args.contextKeyShortcutsExtensions?.forEach(extensionShortcuts => {\n // Throw, if there are duplicate keys that are to be added to `contextKeyShortcuts`.\n if (Object.keys(args.contextKeyShortcuts).some(key => Object.keys(extensionShortcuts).includes(key))) {\n throw new Error('Duplicate keys found while adding `contextKeyShortcutsExtensions`.');\n }\n args.contextKeyShortcuts = { ...args.contextKeyShortcuts, ...extensionShortcuts };\n });\n super(args);\n }\n\n public async test(action: IActionInit): Promise<IActorTest> {\n return true;\n }\n\n public async run(action: IActionInit): Promise<IActorOutputInit> {\n throw new Error('ActorInitSparql#run is not supported in the browser.');\n }\n}\n\nexport interface IActorInitQueryBaseArgs<QueryContext extends IQueryContextCommon = IQueryContextCommon>\n extends IActorInitArgs {\n /**\n * The query operation optimize mediator\n */\n mediatorOptimizeQueryOperation: MediatorOptimizeQueryOperation;\n /**\n * The query operation mediator\n */\n mediatorQueryOperation: MediatorQueryOperation;\n /**\n * The query parse mediator\n */\n mediatorQueryParse: MediatorQueryParse;\n /**\n * The query serialize mediator\n */\n mediatorQueryResultSerialize: MediatorQueryResultSerializeHandle;\n /**\n * The query serialize media type combinator\n */\n mediatorQueryResultSerializeMediaTypeCombiner: MediatorQueryResultSerializeMediaTypes;\n /**\n * The query serialize media type format combinator\n */\n mediatorQueryResultSerializeMediaTypeFormatCombiner: MediatorQueryResultSerializeMediaTypeFormats;\n /**\n * The context processing combinator\n */\n mediatorContextPreprocess: MediatorContextPreprocess;\n /**\n * The HTTP cache invalidation mediator\n */\n mediatorHttpInvalidate: MediatorHttpInvalidate;\n /**\n * The logger of this actor\n * @default {a <npmd:@comunica/logger-void/^2.0.0/components/LoggerVoid.jsonld#LoggerVoid>}\n */\n logger: Logger;\n /**\n * A SPARQL query string\n */\n queryString?: string;\n /**\n * The default query input format\n * @default {sparql}\n */\n defaultQueryInputFormat?: string;\n /**\n * If it should be allowed that the user passes no sources.\n * @default {false}\n */\n allowNoSources?: boolean;\n /**\n * A JSON string of a query operation context\n */\n context?: string;\n /**\n * A record of context shortcuts to full context keys (as defined in @comunica/context-entries).\n * @range {json}\n * @default {{\n * \"source\": \"@comunica/bus-rdf-resolve-quad-pattern:source\",\n * \"sources\": \"@comunica/bus-rdf-resolve-quad-pattern:sources\",\n * \"destination\": \"@comunica/bus-rdf-update-quads:destination\",\n * \"initialBindings\": \"@comunica/actor-init-query:initialBindings\",\n * \"queryFormat\": \"@comunica/actor-init-query:queryFormat\",\n * \"baseIRI\": \"@comunica/actor-init-query:baseIRI\",\n * \"log\": \"@comunica/core:log\",\n * \"datetime\": \"@comunica/actor-http-memento:datetime\",\n * \"queryTimestamp\": \"@comunica/actor-init-query:queryTimestamp\",\n * \"httpProxyHandler\": \"@comunica/actor-http-proxy:httpProxyHandler\",\n * \"lenient\": \"@comunica/actor-init-query:lenient\",\n * \"httpIncludeCredentials\": \"@comunica/bus-http:include-credentials\",\n * \"httpAuth\": \"@comunica/bus-http:auth\",\n * \"httpTimeout\": \"@comunica/bus-http:http-timeout\",\n * \"httpBodyTimeout\": \"@comunica/bus-http:http-body-timeout\",\n * \"httpRetryCount\": \"@comunica/bus-http:http-retry-count\",\n * \"httpRetryDelay\": \"@comunica/bus-http:http-retry-delay\",\n * \"httpRetryOnServerError\": \"@comunica/bus-http:http-retry-on-server-error\",\n * \"fetch\": \"@comunica/bus-http:fetch\",\n * \"recoverBrokenLinks\": \"@comunica/bus-http-wayback:recover-broken-links\",\n * \"readOnly\": \"@comunica/bus-query-operation:readOnly\",\n * \"extensionFunctions\": \"@comunica/actor-init-query:extensionFunctions\",\n * \"extensionFunctionCreator\": \"@comunica/actor-init-query:extensionFunctionCreator\",\n * \"functionArgumentsCache\": \"@comunica/actor-init-query:functionArgumentsCache\",\n * \"explain\": \"@comunica/actor-init-query:explain\",\n * \"unionDefaultGraph\": \"@comunica/bus-query-operation:unionDefaultGraph\",\n * \"localizeBlankNodes\": \"@comunica/actor-query-operation:localizeBlankNodes\"\n * }}\n */\n contextKeyShortcuts: Record<string, string> | Partial<Record<keyof QueryContext, string>>;\n /**\n * An array of `contextKeyShortcuts` that are to be appended to the (default) `contextKeyShortcuts`\n * (which are by default injected by component.js).\n *\n * The appending happens in the constructor call. Conflicting keys will cause an error.\n * If you extend `ActorInitQueryBase` and want to add custom shortcuts, do so as follows:\n * ```\n * public constructor(args: IActorInitQueryBaseArgs<QueryContext>) {\n * if (!args.contextKeyShortcutsExtensions) {\n * args.contextKeyShortcutsExtensions = [];\n * }\n * args.contextKeyShortcutsExtensions.push(addedShortcuts);\n *\n * super(args);\n * }\n * ```\n */\n contextKeyShortcutsExtensions?: (Record<string, string>\n | Partial<Record<keyof Omit<QueryContext, keyof IQueryContextCommon>, string>>)[];\n}\n"]}
@@ -6,22 +6,22 @@ import type { ActorInitQueryBase } from './ActorInitQueryBase';
6
6
  /**
7
7
  * Base implementation of a Comunica query engine.
8
8
  */
9
- export declare class QueryEngineBase<QueryContext extends IQueryContextCommon = IQueryContextCommon> implements IQueryEngine<QueryContext> {
9
+ export declare class QueryEngineBase<QueryContext extends IQueryContextCommon = IQueryContextCommon, QueryStringContextInner extends RDF.QueryStringContext = QueryStringContext, QueryAlgebraContextInner extends RDF.QueryAlgebraContext = QueryAlgebraContext> implements IQueryEngine<QueryContext, QueryStringContextInner, QueryAlgebraContextInner> {
10
10
  private readonly actorInitQuery;
11
11
  private readonly defaultFunctionArgumentsCache;
12
12
  constructor(actorInitQuery: ActorInitQueryBase<QueryContext>);
13
- queryBindings<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext): Promise<BindingsStream>;
14
- queryQuads<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext): Promise<AsyncIterator<RDF.Quad> & RDF.ResultStream<RDF.Quad>>;
15
- queryBoolean<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext): Promise<boolean>;
16
- queryVoid<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext): Promise<void>;
17
- protected queryOfType<QueryFormatTypeInner extends QueryFormatType, QueryTypeOut extends QueryEnhanced>(query: QueryFormatTypeInner, context: undefined | (QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext), expectedType: QueryTypeOut['resultType']): Promise<ReturnType<QueryTypeOut['execute']>>;
13
+ queryBindings<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner): Promise<BindingsStream>;
14
+ queryQuads<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner): Promise<AsyncIterator<RDF.Quad> & RDF.ResultStream<RDF.Quad>>;
15
+ queryBoolean<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner): Promise<boolean>;
16
+ queryVoid<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner): Promise<void>;
17
+ protected queryOfType<QueryFormatTypeInner extends QueryFormatType, QueryTypeOut extends QueryEnhanced>(query: QueryFormatTypeInner, context: undefined | (QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner), expectedType: QueryTypeOut['resultType']): Promise<ReturnType<QueryTypeOut['execute']>>;
18
18
  /**
19
19
  * Evaluate the given query
20
20
  * @param query A query string or algebra.
21
21
  * @param context An optional query context.
22
22
  * @return {Promise<QueryType>} A promise that resolves to the query output.
23
23
  */
24
- query<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext): Promise<QueryType>;
24
+ query<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner): Promise<QueryType>;
25
25
  /**
26
26
  * Explain the given query
27
27
  * @param {string | Algebra.Operation} query A query string or algebra.
@@ -30,7 +30,7 @@ export declare class QueryEngineBase<QueryContext extends IQueryContextCommon =
30
30
  * @return {Promise<QueryType | IQueryExplained>} A promise that resolves to
31
31
  * the query output or explanation.
32
32
  */
33
- explain<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext, explainMode: QueryExplainMode): Promise<IQueryExplained>;
33
+ explain<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner, explainMode: QueryExplainMode): Promise<IQueryExplained>;
34
34
  /**
35
35
  * Evaluate or explain the given query
36
36
  * @param {string | Algebra.Operation} query A query string or algebra.
@@ -38,7 +38,7 @@ export declare class QueryEngineBase<QueryContext extends IQueryContextCommon =
38
38
  * @return {Promise<QueryType | IQueryExplained>} A promise that resolves to
39
39
  * the query output or explanation.
40
40
  */
41
- queryOrExplain<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext): Promise<QueryType | IQueryExplained>;
41
+ queryOrExplain<QueryFormatTypeInner extends QueryFormatType>(query: QueryFormatTypeInner, context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner): Promise<QueryType | IQueryExplained>;
42
42
  /**
43
43
  * @param context An optional context.
44
44
  * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.
@@ -1 +1 @@
1
- {"version":3,"file":"QueryEngineBase.js","sourceRoot":"","sources":["QueryEngineBase.ts"],"names":[],"mappings":"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","sourcesContent":["import { materializeOperation } from '@comunica/bus-query-operation';\nimport type { IActionSparqlSerialize, IActorQueryResultSerializeOutput } from '@comunica/bus-query-result-serialize';\nimport { KeysCore, KeysInitQuery, KeysRdfResolveQuadPattern } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type {\n IActionContext, IPhysicalQueryPlanLogger,\n IQueryOperationResult,\n IQueryEngine, IQueryExplained,\n QueryFormatType,\n QueryType, QueryExplainMode, BindingsStream,\n QueryAlgebraContext, QueryStringContext, IQueryBindingsEnhanced,\n IQueryQuadsEnhanced, QueryEnhanced, IQueryContextCommon, FunctionArgumentsCache,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { ActorInitQueryBase } from './ActorInitQueryBase';\nimport { MemoryPhysicalQueryPlanLogger } from './MemoryPhysicalQueryPlanLogger';\n\n/**\n * Base implementation of a Comunica query engine.\n */\nexport class QueryEngineBase<QueryContext extends IQueryContextCommon = IQueryContextCommon>\nimplements IQueryEngine<QueryContext> {\n private readonly actorInitQuery: ActorInitQueryBase;\n private readonly defaultFunctionArgumentsCache: FunctionArgumentsCache;\n\n public constructor(actorInitQuery: ActorInitQueryBase<QueryContext>) {\n this.actorInitQuery = actorInitQuery;\n this.defaultFunctionArgumentsCache = {};\n }\n\n public async queryBindings<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext,\n ): Promise<BindingsStream> {\n return this.queryOfType<QueryFormatTypeInner, IQueryBindingsEnhanced>(query, context, 'bindings');\n }\n\n public async queryQuads<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext,\n ): Promise<AsyncIterator<RDF.Quad> & RDF.ResultStream<RDF.Quad>> {\n return this.queryOfType<QueryFormatTypeInner, IQueryQuadsEnhanced>(query, context, 'quads');\n }\n\n public async queryBoolean<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext,\n ): Promise<boolean> {\n return this.queryOfType<QueryFormatTypeInner, RDF.QueryBoolean>(query, context, 'boolean');\n }\n\n public async queryVoid<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext,\n ): Promise<void> {\n return this.queryOfType<QueryFormatTypeInner, RDF.QueryVoid>(query, context, 'void');\n }\n\n protected async queryOfType<QueryFormatTypeInner extends QueryFormatType, QueryTypeOut extends QueryEnhanced>(\n query: QueryFormatTypeInner,\n context: undefined | (QueryContext & QueryFormatTypeInner extends string ?\n QueryStringContext : QueryAlgebraContext),\n expectedType: QueryTypeOut['resultType'],\n ): Promise<ReturnType<QueryTypeOut['execute']>> {\n const result = await this.query<QueryFormatTypeInner>(query, context);\n if (result.resultType === expectedType) {\n return result.execute();\n }\n throw new Error(`Query result type '${expectedType}' was expected, while '${result.resultType}' was found.`);\n }\n\n /**\n * Evaluate the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise<QueryType>} A promise that resolves to the query output.\n */\n public async query<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext,\n ): Promise<QueryType> {\n const output = await this.queryOrExplain(query, context);\n if ('explain' in output) {\n throw new Error(`Tried to explain a query when in query-only mode`);\n }\n return output;\n }\n\n /**\n * Explain the given query\n * @param {string | Algebra.Operation} query A query string or algebra.\n * @param context An optional query context.\n * @param explainMode The explain mode.\n * @return {Promise<QueryType | IQueryExplained>} A promise that resolves to\n * the query output or explanation.\n */\n public async explain<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext,\n explainMode: QueryExplainMode,\n ): Promise<IQueryExplained> {\n context.explain = explainMode;\n const output = await this.queryOrExplain(query, context);\n return <IQueryExplained> output;\n }\n\n /**\n * Evaluate or explain the given query\n * @param {string | Algebra.Operation} query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise<QueryType | IQueryExplained>} A promise that resolves to\n * the query output or explanation.\n */\n public async queryOrExplain<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryContext & QueryFormatTypeInner extends string ? QueryStringContext : QueryAlgebraContext,\n ): Promise<QueryType | IQueryExplained> {\n context = context || <any>{};\n\n // Expand shortcuts\n for (const key in context) {\n if (this.actorInitQuery.contextKeyShortcuts[key]) {\n context[this.actorInitQuery.contextKeyShortcuts[key]] = context[key];\n delete context[key];\n }\n }\n\n // Prepare context\n let actionContext: IActionContext = new ActionContext(context);\n let queryFormat: RDF.QueryFormat = { language: 'sparql', version: '1.1' };\n if (actionContext.has(KeysInitQuery.queryFormat)) {\n queryFormat = actionContext.get(KeysInitQuery.queryFormat)!;\n actionContext = actionContext.delete(KeysInitQuery.queryFormat);\n if (queryFormat.language === 'graphql') {\n actionContext = actionContext.setDefault(KeysInitQuery.graphqlSingularizeVariables, {});\n }\n }\n const baseIRI: string | undefined = actionContext.get(KeysInitQuery.baseIRI);\n\n actionContext = actionContext\n .setDefault(KeysInitQuery.queryTimestamp, new Date())\n .setDefault(KeysRdfResolveQuadPattern.sourceIds, new Map())\n // Set the default logger if none is provided\n .setDefault(KeysCore.log, this.actorInitQuery.logger)\n .setDefault(KeysInitQuery.functionArgumentsCache, this.defaultFunctionArgumentsCache);\n\n // Pre-processing the context\n actionContext = (await this.actorInitQuery.mediatorContextPreprocess.mediate({ context: actionContext })).context;\n\n // Determine explain mode\n const explainMode: QueryExplainMode = actionContext.get(KeysInitQuery.explain)!;\n\n // Parse query\n let operation: Algebra.Operation;\n if (typeof query === 'string') {\n // Save the original query string in the context\n actionContext = actionContext.set(KeysInitQuery.queryString, query);\n\n const queryParseOutput = await this.actorInitQuery.mediatorQueryParse\n .mediate({ context: actionContext, query, queryFormat, baseIRI });\n operation = queryParseOutput.operation;\n // Update the baseIRI in the context if the query modified it.\n if (queryParseOutput.baseIRI) {\n actionContext = actionContext.set(KeysInitQuery.baseIRI, queryParseOutput.baseIRI);\n }\n } else {\n operation = query;\n }\n\n // Print parsed query\n if (explainMode === 'parsed') {\n return {\n explain: true,\n type: explainMode,\n data: operation,\n };\n }\n\n // Apply initial bindings in context\n if (actionContext.has(KeysInitQuery.initialBindings)) {\n operation = materializeOperation(operation, actionContext.get(KeysInitQuery.initialBindings)!);\n\n // Delete the query string from the context, since our initial query might have changed\n actionContext = actionContext.delete(KeysInitQuery.queryString);\n }\n\n // Optimize the query operation\n const mediatorResult = await this.actorInitQuery.mediatorOptimizeQueryOperation\n .mediate({ context: actionContext, operation });\n operation = mediatorResult.operation;\n actionContext = mediatorResult.context || actionContext;\n\n // Print logical query plan\n if (explainMode === 'logical') {\n return {\n explain: true,\n type: explainMode,\n data: operation,\n };\n }\n\n // Save original query in context\n actionContext = actionContext.set(KeysInitQuery.query, operation);\n\n // If we need a physical query plan, store a physical query plan logger in the context, and collect it after exec\n let physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined;\n if (explainMode === 'physical') {\n physicalQueryPlanLogger = new MemoryPhysicalQueryPlanLogger();\n actionContext = actionContext.set(KeysInitQuery.physicalQueryPlanLogger, physicalQueryPlanLogger);\n }\n\n // Execute query\n const output = await this.actorInitQuery.mediatorQueryOperation.mediate({\n context: actionContext,\n operation,\n });\n output.context = actionContext;\n\n const finalOutput = QueryEngineBase.internalToFinalResult(output);\n\n // Output physical query plan after query exec if needed\n if (physicalQueryPlanLogger) {\n // Make sure the whole result is produced\n switch (finalOutput.resultType) {\n case 'bindings':\n await (await finalOutput.execute()).toArray();\n break;\n case 'quads':\n await (await finalOutput.execute()).toArray();\n break;\n case 'boolean':\n await finalOutput.execute();\n break;\n case 'void':\n await finalOutput.execute();\n break;\n }\n\n return {\n explain: true,\n type: explainMode,\n data: physicalQueryPlanLogger.toJson(),\n };\n }\n\n return finalOutput;\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.\n */\n public async getResultMediaTypes(context?: any): Promise<Record<string, number>> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner\n .mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL result media type formats.\n */\n public async getResultMediaTypeFormats(context?: any): Promise<Record<string, string>> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner\n .mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n\n /**\n * Convert a query result to a string stream based on a certain media type.\n * @param {IQueryOperationResult} queryResult A query result.\n * @param {string} mediaType A media type.\n * @param {ActionContext} context An optional context.\n * @return {Promise<IActorQueryResultSerializeOutput>} A text stream.\n */\n public async resultToString(queryResult: RDF.Query<any>, mediaType?: string, context?: any):\n Promise<IActorQueryResultSerializeOutput> {\n context = ActionContext.ensureActionContext(context);\n if (!mediaType) {\n switch (queryResult.resultType) {\n case 'bindings':\n mediaType = 'application/json';\n break;\n case 'quads':\n mediaType = 'application/trig';\n break;\n default:\n mediaType = 'simple';\n break;\n }\n }\n const handle: IActionSparqlSerialize = { ...await QueryEngineBase.finalToInternalResult(queryResult), context };\n return (await this.actorInitQuery.mediatorQueryResultSerialize\n .mediate({ context, handle, handleMediaType: mediaType })).handle;\n }\n\n /**\n * Invalidate all internal caches related to the given page URL.\n * If no page URL is given, then all pages will be invalidated.\n * @param {string} url The page URL to invalidate.\n * @param context An optional ActionContext to pass to the actors.\n * @return {Promise<any>} A promise resolving when the caches have been invalidated.\n */\n public invalidateHttpCache(url?: string, context?: any): Promise<any> {\n context = ActionContext.ensureActionContext(context);\n return this.actorInitQuery.mediatorHttpInvalidate.mediate({ url, context });\n }\n\n /**\n * Convert an internal query result to a final one.\n * @param internalResult An intermediary query result.\n */\n public static internalToFinalResult(internalResult: IQueryOperationResult): QueryType {\n switch (internalResult.type) {\n case 'bindings':\n return {\n resultType: 'bindings',\n execute: async() => internalResult.bindingsStream,\n metadata: async() => <any> await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'quads':\n return {\n resultType: 'quads',\n execute: async() => internalResult.quadStream,\n metadata: async() => <any> await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'boolean':\n return {\n resultType: 'boolean',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n case 'void':\n return {\n resultType: 'void',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n }\n }\n\n /**\n * Convert a final query result to an internal one.\n * @param finalResult A final query result.\n */\n public static async finalToInternalResult(finalResult: RDF.Query<any>): Promise<IQueryOperationResult> {\n switch (finalResult.resultType) {\n case 'bindings':\n return {\n type: 'bindings',\n bindingsStream: <BindingsStream> await finalResult.execute(),\n metadata: async() => <any> await finalResult.metadata(),\n };\n case 'quads':\n return {\n type: 'quads',\n quadStream: <AsyncIterator<RDF.Quad>> await finalResult.execute(),\n metadata: async() => <any> await finalResult.metadata(),\n };\n case 'boolean':\n return {\n type: 'boolean',\n execute: () => finalResult.execute(),\n };\n case 'void':\n return {\n type: 'void',\n execute: () => finalResult.execute(),\n };\n }\n }\n}\n"]}
1
+ {"version":3,"file":"QueryEngineBase.js","sourceRoot":"","sources":["QueryEngineBase.ts"],"names":[],"mappings":"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","sourcesContent":["import { materializeOperation } from '@comunica/bus-query-operation';\nimport type { IActionSparqlSerialize, IActorQueryResultSerializeOutput } from '@comunica/bus-query-result-serialize';\nimport { KeysCore, KeysInitQuery, KeysRdfResolveQuadPattern } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type {\n IActionContext, IPhysicalQueryPlanLogger,\n IQueryOperationResult,\n IQueryEngine, IQueryExplained,\n QueryFormatType,\n QueryType, QueryExplainMode, BindingsStream,\n QueryAlgebraContext, QueryStringContext, IQueryBindingsEnhanced,\n IQueryQuadsEnhanced, QueryEnhanced, IQueryContextCommon, FunctionArgumentsCache,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport type { ActorInitQueryBase } from './ActorInitQueryBase';\nimport { MemoryPhysicalQueryPlanLogger } from './MemoryPhysicalQueryPlanLogger';\n\n/**\n * Base implementation of a Comunica query engine.\n */\nexport class QueryEngineBase<\n QueryContext extends IQueryContextCommon = IQueryContextCommon,\n QueryStringContextInner extends RDF.QueryStringContext = QueryStringContext,\n QueryAlgebraContextInner extends RDF.QueryAlgebraContext = QueryAlgebraContext>\nimplements IQueryEngine<QueryContext, QueryStringContextInner, QueryAlgebraContextInner> {\n private readonly actorInitQuery: ActorInitQueryBase;\n private readonly defaultFunctionArgumentsCache: FunctionArgumentsCache;\n\n public constructor(actorInitQuery: ActorInitQueryBase<QueryContext>) {\n this.actorInitQuery = actorInitQuery;\n this.defaultFunctionArgumentsCache = {};\n }\n\n public async queryBindings<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise<BindingsStream> {\n return this.queryOfType<QueryFormatTypeInner, IQueryBindingsEnhanced>(query, context, 'bindings');\n }\n\n public async queryQuads<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise<AsyncIterator<RDF.Quad> & RDF.ResultStream<RDF.Quad>> {\n return this.queryOfType<QueryFormatTypeInner, IQueryQuadsEnhanced>(query, context, 'quads');\n }\n\n public async queryBoolean<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise<boolean> {\n return this.queryOfType<QueryFormatTypeInner, RDF.QueryBoolean>(query, context, 'boolean');\n }\n\n public async queryVoid<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise<void> {\n return this.queryOfType<QueryFormatTypeInner, RDF.QueryVoid>(query, context, 'void');\n }\n\n protected async queryOfType<QueryFormatTypeInner extends QueryFormatType, QueryTypeOut extends QueryEnhanced>(\n query: QueryFormatTypeInner,\n context: undefined | (QueryFormatTypeInner extends string ?\n QueryStringContextInner : QueryAlgebraContextInner),\n expectedType: QueryTypeOut['resultType'],\n ): Promise<ReturnType<QueryTypeOut['execute']>> {\n const result = await this.query<QueryFormatTypeInner>(query, context);\n if (result.resultType === expectedType) {\n return result.execute();\n }\n throw new Error(`Query result type '${expectedType}' was expected, while '${result.resultType}' was found.`);\n }\n\n /**\n * Evaluate the given query\n * @param query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise<QueryType>} A promise that resolves to the query output.\n */\n public async query<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise<QueryType> {\n const output = await this.queryOrExplain(query, context);\n if ('explain' in output) {\n throw new Error(`Tried to explain a query when in query-only mode`);\n }\n return output;\n }\n\n /**\n * Explain the given query\n * @param {string | Algebra.Operation} query A query string or algebra.\n * @param context An optional query context.\n * @param explainMode The explain mode.\n * @return {Promise<QueryType | IQueryExplained>} A promise that resolves to\n * the query output or explanation.\n */\n public async explain<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n explainMode: QueryExplainMode,\n ): Promise<IQueryExplained> {\n context.explain = explainMode;\n const output = await this.queryOrExplain(query, context);\n return <IQueryExplained> output;\n }\n\n /**\n * Evaluate or explain the given query\n * @param {string | Algebra.Operation} query A query string or algebra.\n * @param context An optional query context.\n * @return {Promise<QueryType | IQueryExplained>} A promise that resolves to\n * the query output or explanation.\n */\n public async queryOrExplain<QueryFormatTypeInner extends QueryFormatType>(\n query: QueryFormatTypeInner,\n context?: QueryFormatTypeInner extends string ? QueryStringContextInner : QueryAlgebraContextInner,\n ): Promise<QueryType | IQueryExplained> {\n context = context || <any>{};\n\n // Expand shortcuts\n for (const key in context) {\n if (this.actorInitQuery.contextKeyShortcuts[key]) {\n context[this.actorInitQuery.contextKeyShortcuts[key]] = context[key];\n delete context[key];\n }\n }\n\n // Prepare context\n let actionContext: IActionContext = new ActionContext(context);\n let queryFormat: RDF.QueryFormat = { language: 'sparql', version: '1.1' };\n if (actionContext.has(KeysInitQuery.queryFormat)) {\n queryFormat = actionContext.get(KeysInitQuery.queryFormat)!;\n actionContext = actionContext.delete(KeysInitQuery.queryFormat);\n if (queryFormat.language === 'graphql') {\n actionContext = actionContext.setDefault(KeysInitQuery.graphqlSingularizeVariables, {});\n }\n }\n const baseIRI: string | undefined = actionContext.get(KeysInitQuery.baseIRI);\n\n actionContext = actionContext\n .setDefault(KeysInitQuery.queryTimestamp, new Date())\n .setDefault(KeysRdfResolveQuadPattern.sourceIds, new Map())\n // Set the default logger if none is provided\n .setDefault(KeysCore.log, this.actorInitQuery.logger)\n .setDefault(KeysInitQuery.functionArgumentsCache, this.defaultFunctionArgumentsCache);\n\n // Pre-processing the context\n actionContext = (await this.actorInitQuery.mediatorContextPreprocess.mediate({ context: actionContext })).context;\n\n // Determine explain mode\n const explainMode: QueryExplainMode = actionContext.get(KeysInitQuery.explain)!;\n\n // Parse query\n let operation: Algebra.Operation;\n if (typeof query === 'string') {\n // Save the original query string in the context\n actionContext = actionContext.set(KeysInitQuery.queryString, query);\n\n const queryParseOutput = await this.actorInitQuery.mediatorQueryParse\n .mediate({ context: actionContext, query, queryFormat, baseIRI });\n operation = queryParseOutput.operation;\n // Update the baseIRI in the context if the query modified it.\n if (queryParseOutput.baseIRI) {\n actionContext = actionContext.set(KeysInitQuery.baseIRI, queryParseOutput.baseIRI);\n }\n } else {\n operation = query;\n }\n\n // Print parsed query\n if (explainMode === 'parsed') {\n return {\n explain: true,\n type: explainMode,\n data: operation,\n };\n }\n\n // Apply initial bindings in context\n if (actionContext.has(KeysInitQuery.initialBindings)) {\n operation = materializeOperation(operation, actionContext.get(KeysInitQuery.initialBindings)!);\n\n // Delete the query string from the context, since our initial query might have changed\n actionContext = actionContext.delete(KeysInitQuery.queryString);\n }\n\n // Optimize the query operation\n const mediatorResult = await this.actorInitQuery.mediatorOptimizeQueryOperation\n .mediate({ context: actionContext, operation });\n operation = mediatorResult.operation;\n actionContext = mediatorResult.context || actionContext;\n\n // Print logical query plan\n if (explainMode === 'logical') {\n return {\n explain: true,\n type: explainMode,\n data: operation,\n };\n }\n\n // Save original query in context\n actionContext = actionContext.set(KeysInitQuery.query, operation);\n\n // If we need a physical query plan, store a physical query plan logger in the context, and collect it after exec\n let physicalQueryPlanLogger: IPhysicalQueryPlanLogger | undefined;\n if (explainMode === 'physical') {\n physicalQueryPlanLogger = new MemoryPhysicalQueryPlanLogger();\n actionContext = actionContext.set(KeysInitQuery.physicalQueryPlanLogger, physicalQueryPlanLogger);\n }\n\n // Execute query\n const output = await this.actorInitQuery.mediatorQueryOperation.mediate({\n context: actionContext,\n operation,\n });\n output.context = actionContext;\n\n const finalOutput = QueryEngineBase.internalToFinalResult(output);\n\n // Output physical query plan after query exec if needed\n if (physicalQueryPlanLogger) {\n // Make sure the whole result is produced\n switch (finalOutput.resultType) {\n case 'bindings':\n await (await finalOutput.execute()).toArray();\n break;\n case 'quads':\n await (await finalOutput.execute()).toArray();\n break;\n case 'boolean':\n await finalOutput.execute();\n break;\n case 'void':\n await finalOutput.execute();\n break;\n }\n\n return {\n explain: true,\n type: explainMode,\n data: physicalQueryPlanLogger.toJson(),\n };\n }\n\n return finalOutput;\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL (weighted) result media types.\n */\n public async getResultMediaTypes(context?: any): Promise<Record<string, number>> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeCombiner\n .mediate({ context, mediaTypes: true })).mediaTypes;\n }\n\n /**\n * @param context An optional context.\n * @return {Promise<{[p: string]: number}>} All available SPARQL result media type formats.\n */\n public async getResultMediaTypeFormats(context?: any): Promise<Record<string, string>> {\n context = ActionContext.ensureActionContext(context);\n return (await this.actorInitQuery.mediatorQueryResultSerializeMediaTypeFormatCombiner\n .mediate({ context, mediaTypeFormats: true })).mediaTypeFormats;\n }\n\n /**\n * Convert a query result to a string stream based on a certain media type.\n * @param {IQueryOperationResult} queryResult A query result.\n * @param {string} mediaType A media type.\n * @param {ActionContext} context An optional context.\n * @return {Promise<IActorQueryResultSerializeOutput>} A text stream.\n */\n public async resultToString(queryResult: RDF.Query<any>, mediaType?: string, context?: any):\n Promise<IActorQueryResultSerializeOutput> {\n context = ActionContext.ensureActionContext(context);\n if (!mediaType) {\n switch (queryResult.resultType) {\n case 'bindings':\n mediaType = 'application/json';\n break;\n case 'quads':\n mediaType = 'application/trig';\n break;\n default:\n mediaType = 'simple';\n break;\n }\n }\n const handle: IActionSparqlSerialize = { ...await QueryEngineBase.finalToInternalResult(queryResult), context };\n return (await this.actorInitQuery.mediatorQueryResultSerialize\n .mediate({ context, handle, handleMediaType: mediaType })).handle;\n }\n\n /**\n * Invalidate all internal caches related to the given page URL.\n * If no page URL is given, then all pages will be invalidated.\n * @param {string} url The page URL to invalidate.\n * @param context An optional ActionContext to pass to the actors.\n * @return {Promise<any>} A promise resolving when the caches have been invalidated.\n */\n public invalidateHttpCache(url?: string, context?: any): Promise<any> {\n context = ActionContext.ensureActionContext(context);\n return this.actorInitQuery.mediatorHttpInvalidate.mediate({ url, context });\n }\n\n /**\n * Convert an internal query result to a final one.\n * @param internalResult An intermediary query result.\n */\n public static internalToFinalResult(internalResult: IQueryOperationResult): QueryType {\n switch (internalResult.type) {\n case 'bindings':\n return {\n resultType: 'bindings',\n execute: async() => internalResult.bindingsStream,\n metadata: async() => <any> await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'quads':\n return {\n resultType: 'quads',\n execute: async() => internalResult.quadStream,\n metadata: async() => <any> await internalResult.metadata(),\n context: internalResult.context,\n };\n case 'boolean':\n return {\n resultType: 'boolean',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n case 'void':\n return {\n resultType: 'void',\n execute: async() => internalResult.execute(),\n context: internalResult.context,\n };\n }\n }\n\n /**\n * Convert a final query result to an internal one.\n * @param finalResult A final query result.\n */\n public static async finalToInternalResult(finalResult: RDF.Query<any>): Promise<IQueryOperationResult> {\n switch (finalResult.resultType) {\n case 'bindings':\n return {\n type: 'bindings',\n bindingsStream: <BindingsStream> await finalResult.execute(),\n metadata: async() => <any> await finalResult.metadata(),\n };\n case 'quads':\n return {\n type: 'quads',\n quadStream: <AsyncIterator<RDF.Quad>> await finalResult.execute(),\n metadata: async() => <any> await finalResult.metadata(),\n };\n case 'boolean':\n return {\n type: 'boolean',\n execute: () => finalResult.execute(),\n };\n case 'void':\n return {\n type: 'void',\n execute: () => finalResult.execute(),\n };\n }\n }\n}\n"]}
@@ -7,7 +7,8 @@ export declare class CliArgsHandlerQuery implements ICliArgsHandler {
7
7
  private readonly defaultQueryInputFormat;
8
8
  private readonly queryString;
9
9
  private readonly context;
10
- constructor(defaultQueryInputFormat: string | undefined, queryString: string | undefined, context: string | undefined);
10
+ private readonly allowNoSources;
11
+ constructor(defaultQueryInputFormat: string | undefined, queryString: string | undefined, context: string | undefined, allowNoSources: boolean | undefined);
11
12
  populateYargs(argumentsBuilder: Argv<any>): Argv<any>;
12
13
  handleArgs(args: Record<string, any>, context: Record<string, any>): Promise<void>;
13
14
  }
@@ -7,10 +7,11 @@ const context_entries_1 = require("@comunica/context-entries");
7
7
  * CLI arguments handler that handles options for query execution.
8
8
  */
9
9
  class CliArgsHandlerQuery {
10
- constructor(defaultQueryInputFormat, queryString, context) {
10
+ constructor(defaultQueryInputFormat, queryString, context, allowNoSources) {
11
11
  this.defaultQueryInputFormat = defaultQueryInputFormat;
12
12
  this.queryString = queryString;
13
13
  this.context = context;
14
+ this.allowNoSources = allowNoSources;
14
15
  }
15
16
  populateYargs(argumentsBuilder) {
16
17
  return argumentsBuilder
@@ -86,7 +87,12 @@ class CliArgsHandlerQuery {
86
87
  if (args.version || args.listformats) {
87
88
  return true;
88
89
  }
89
- if (!this.queryString ?
90
+ if (this.allowNoSources) {
91
+ if (!this.queryString && !(args.query || args.file) && args.sources.length === 0) {
92
+ throw new Error('A query must be provided');
93
+ }
94
+ }
95
+ else if (!this.queryString ?
90
96
  !(args.query || args.file) && args.sources.length < (args.context ? 1 : 2) :
91
97
  args.sources.length < (args.context ? 0 : 1)) {
92
98
  throw new Error('At least one source and query must be provided');
@@ -1 +1 @@
1
- {"version":3,"file":"CliArgsHandlerQuery.js","sourceRoot":"","sources":["CliArgsHandlerQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { ProxyHandlerStatic } from '@comunica/actor-http-proxy';\nimport {\n KeysHttpMemento,\n KeysHttpProxy,\n KeysHttpWayback,\n KeysInitQuery,\n KeysQueryOperation,\n} from '@comunica/context-entries';\nimport type { ICliArgsHandler } from '@comunica/types';\nimport type { Argv } from 'yargs';\n\n/**\n * CLI arguments handler that handles options for query execution.\n */\nexport class CliArgsHandlerQuery implements ICliArgsHandler {\n private readonly defaultQueryInputFormat: string | undefined;\n private readonly queryString: string | undefined;\n private readonly context: string | undefined;\n\n public constructor(\n defaultQueryInputFormat: string | undefined,\n queryString: string | undefined,\n context: string | undefined,\n ) {\n this.defaultQueryInputFormat = defaultQueryInputFormat;\n this.queryString = queryString;\n this.context = context;\n }\n\n public populateYargs(argumentsBuilder: Argv<any>): Argv<any> {\n return argumentsBuilder\n .usage('$0 evaluates SPARQL queries')\n .example([\n [ `$0 https://fragments.dbpedia.org/2016-04/en -q 'SELECT * { ?s ?p ?o }'`, '' ],\n [ `$0 https://fragments.dbpedia.org/2016-04/en -f query.sparql`, '' ],\n [ `$0 https://fragments.dbpedia.org/2016-04/en https://query.wikidata.org/sparql ...`, '' ],\n [ `$0 hypermedia@https://fragments.dbpedia.org/2016-04/en sparql@https://query.wikidata.org/sparql ...`, '' ],\n ])\n .options({\n query: {\n alias: 'q',\n type: 'string',\n describe: 'Evaluate the given SPARQL query string',\n default: this.queryString,\n group: 'Recommended options:',\n },\n file: {\n alias: 'f',\n type: 'string',\n describe: 'Evaluate the SPARQL query in the given file',\n group: 'Recommended options:',\n },\n inputType: {\n alias: 'i',\n type: 'string',\n describe: 'Query input format (e.g., graphql, sparql)',\n default: this.defaultQueryInputFormat,\n group: 'Recommended options:',\n },\n outputType: {\n alias: 't',\n type: 'string',\n describe: 'MIME type of the output (e.g., application/json)',\n group: 'Recommended options:',\n },\n proxy: {\n alias: 'p',\n type: 'string',\n describe: 'Delegates all HTTP traffic through the given proxy (e.g. http://myproxy.org/?uri=)',\n },\n listformats: {\n type: 'boolean',\n describe: 'Prints the supported MIME types',\n },\n context: {\n type: 'string',\n describe: 'Use the given JSON context string or file (e.g., config.json)',\n default: this.context,\n },\n explain: {\n type: 'string',\n describe: 'Print the query plan',\n choices: [\n 'parsed',\n 'logical',\n 'physical',\n ],\n },\n localizeBlankNodes: {\n type: 'boolean',\n describe: 'If blank nodes should be localized per bindings entry',\n },\n recoverBrokenLinks: {\n alias: 'r',\n type: 'boolean',\n describe: 'Use the WayBack machine to recover broken links',\n default: false,\n },\n })\n .check(args => {\n if (args.version || args.listformats) {\n return true;\n }\n if (!this.queryString ?\n !(args.query || args.file) && args.sources.length < (args.context ? 1 : 2) :\n args.sources.length < (args.context ? 0 : 1)) {\n throw new Error('At least one source and query must be provided');\n }\n return true;\n });\n }\n\n public async handleArgs(args: Record<string, any>, context: Record<string, any>): Promise<void> {\n // Define the query format\n context[KeysInitQuery.queryFormat.name] = { language: args.inputType, version: '1.1' };\n\n // Define the datetime\n if (args.dateTime) {\n context[KeysHttpMemento.datetime.name] = new Date(args.dateTime);\n }\n\n // Set the proxy\n if (args.proxy) {\n context[KeysHttpProxy.httpProxyHandler.name] = new ProxyHandlerStatic(args.proxy);\n }\n\n // Mark explain output\n if (args.explain) {\n context[KeysInitQuery.explain.name] = args.explain;\n }\n\n // Set the blank node localization\n if (args.localizeBlankNodes) {\n context[KeysQueryOperation.localizeBlankNodes.name] = args.localizeBlankNodes;\n }\n\n // Set recover broken links flag\n if (args.recoverBrokenLinks) {\n context[KeysHttpWayback.recoverBrokenLinks.name] = args.recoverBrokenLinks;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"CliArgsHandlerQuery.js","sourceRoot":"","sources":["CliArgsHandlerQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { ProxyHandlerStatic } from '@comunica/actor-http-proxy';\nimport {\n KeysHttpMemento,\n KeysHttpProxy,\n KeysHttpWayback,\n KeysInitQuery,\n KeysQueryOperation,\n} from '@comunica/context-entries';\nimport type { ICliArgsHandler } from '@comunica/types';\nimport type { Argv } from 'yargs';\n\n/**\n * CLI arguments handler that handles options for query execution.\n */\nexport class CliArgsHandlerQuery implements ICliArgsHandler {\n private readonly defaultQueryInputFormat: string | undefined;\n private readonly queryString: string | undefined;\n private readonly context: string | undefined;\n private readonly allowNoSources: boolean | undefined;\n\n public constructor(\n defaultQueryInputFormat: string | undefined,\n queryString: string | undefined,\n context: string | undefined,\n allowNoSources: boolean | undefined,\n ) {\n this.defaultQueryInputFormat = defaultQueryInputFormat;\n this.queryString = queryString;\n this.context = context;\n this.allowNoSources = allowNoSources;\n }\n\n public populateYargs(argumentsBuilder: Argv<any>): Argv<any> {\n return argumentsBuilder\n .usage('$0 evaluates SPARQL queries')\n .example([\n [ `$0 https://fragments.dbpedia.org/2016-04/en -q 'SELECT * { ?s ?p ?o }'`, '' ],\n [ `$0 https://fragments.dbpedia.org/2016-04/en -f query.sparql`, '' ],\n [ `$0 https://fragments.dbpedia.org/2016-04/en https://query.wikidata.org/sparql ...`, '' ],\n [ `$0 hypermedia@https://fragments.dbpedia.org/2016-04/en sparql@https://query.wikidata.org/sparql ...`, '' ],\n ])\n .options({\n query: {\n alias: 'q',\n type: 'string',\n describe: 'Evaluate the given SPARQL query string',\n default: this.queryString,\n group: 'Recommended options:',\n },\n file: {\n alias: 'f',\n type: 'string',\n describe: 'Evaluate the SPARQL query in the given file',\n group: 'Recommended options:',\n },\n inputType: {\n alias: 'i',\n type: 'string',\n describe: 'Query input format (e.g., graphql, sparql)',\n default: this.defaultQueryInputFormat,\n group: 'Recommended options:',\n },\n outputType: {\n alias: 't',\n type: 'string',\n describe: 'MIME type of the output (e.g., application/json)',\n group: 'Recommended options:',\n },\n proxy: {\n alias: 'p',\n type: 'string',\n describe: 'Delegates all HTTP traffic through the given proxy (e.g. http://myproxy.org/?uri=)',\n },\n listformats: {\n type: 'boolean',\n describe: 'Prints the supported MIME types',\n },\n context: {\n type: 'string',\n describe: 'Use the given JSON context string or file (e.g., config.json)',\n default: this.context,\n },\n explain: {\n type: 'string',\n describe: 'Print the query plan',\n choices: [\n 'parsed',\n 'logical',\n 'physical',\n ],\n },\n localizeBlankNodes: {\n type: 'boolean',\n describe: 'If blank nodes should be localized per bindings entry',\n },\n recoverBrokenLinks: {\n alias: 'r',\n type: 'boolean',\n describe: 'Use the WayBack machine to recover broken links',\n default: false,\n },\n })\n .check(args => {\n if (args.version || args.listformats) {\n return true;\n }\n if (this.allowNoSources) {\n if (!this.queryString && !(args.query || args.file) && args.sources.length === 0) {\n throw new Error('A query must be provided');\n }\n } else if (!this.queryString ?\n !(args.query || args.file) && args.sources.length < (args.context ? 1 : 2) :\n args.sources.length < (args.context ? 0 : 1)) {\n throw new Error('At least one source and query must be provided');\n }\n return true;\n });\n }\n\n public async handleArgs(args: Record<string, any>, context: Record<string, any>): Promise<void> {\n // Define the query format\n context[KeysInitQuery.queryFormat.name] = { language: args.inputType, version: '1.1' };\n\n // Define the datetime\n if (args.dateTime) {\n context[KeysHttpMemento.datetime.name] = new Date(args.dateTime);\n }\n\n // Set the proxy\n if (args.proxy) {\n context[KeysHttpProxy.httpProxyHandler.name] = new ProxyHandlerStatic(args.proxy);\n }\n\n // Mark explain output\n if (args.explain) {\n context[KeysInitQuery.explain.name] = args.explain;\n }\n\n // Set the blank node localization\n if (args.localizeBlankNodes) {\n context[KeysQueryOperation.localizeBlankNodes.name] = args.localizeBlankNodes;\n }\n\n // Set recover broken links flag\n if (args.recoverBrokenLinks) {\n context[KeysHttpWayback.recoverBrokenLinks.name] = args.recoverBrokenLinks;\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comunica/actor-init-query",
3
- "version": "2.6.0",
3
+ "version": "2.6.7",
4
4
  "description": "A query init actor",
5
5
  "lsd:module": true,
6
6
  "main": "lib/index.js",
@@ -32,19 +32,19 @@
32
32
  "lib/**/*.js.map"
33
33
  ],
34
34
  "dependencies": {
35
- "@comunica/actor-http-proxy": "^2.6.0",
36
- "@comunica/bus-context-preprocess": "^2.6.0",
37
- "@comunica/bus-http-invalidate": "^2.6.0",
38
- "@comunica/bus-init": "^2.6.0",
39
- "@comunica/bus-optimize-query-operation": "^2.6.0",
40
- "@comunica/bus-query-operation": "^2.6.0",
41
- "@comunica/bus-query-parse": "^2.6.0",
42
- "@comunica/bus-query-result-serialize": "^2.6.0",
43
- "@comunica/context-entries": "^2.6.0",
44
- "@comunica/core": "^2.6.0",
45
- "@comunica/logger-pretty": "^2.6.0",
46
- "@comunica/runner": "^2.6.0",
47
- "@comunica/types": "^2.6.0",
35
+ "@comunica/actor-http-proxy": "^2.6.7",
36
+ "@comunica/bus-context-preprocess": "^2.6.7",
37
+ "@comunica/bus-http-invalidate": "^2.6.7",
38
+ "@comunica/bus-init": "^2.6.7",
39
+ "@comunica/bus-optimize-query-operation": "^2.6.7",
40
+ "@comunica/bus-query-operation": "^2.6.7",
41
+ "@comunica/bus-query-parse": "^2.6.7",
42
+ "@comunica/bus-query-result-serialize": "^2.6.7",
43
+ "@comunica/context-entries": "^2.6.7",
44
+ "@comunica/core": "^2.6.7",
45
+ "@comunica/logger-pretty": "^2.6.7",
46
+ "@comunica/runner": "^2.6.7",
47
+ "@comunica/types": "^2.6.7",
48
48
  "@rdfjs/types": "*",
49
49
  "@types/yargs": "^17.0.13",
50
50
  "asynciterator": "^3.8.0",
@@ -66,5 +66,5 @@
66
66
  "browser": {
67
67
  "./lib/index.js": "./lib/index-browser.js"
68
68
  },
69
- "gitHead": "1cc3270abf77562357ed2feb0e738fa25f75d01f"
69
+ "gitHead": "00ce278b46196e7c5e65241501d8e122cd4e4fd5"
70
70
  }