@comunica/actor-init-query 3.0.1-alpha.46.0 → 3.0.1

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.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.QueryEngineBase = void 0;
4
+ const context_entries_1 = require("@comunica/context-entries");
4
5
  const core_1 = require("@comunica/core");
5
6
  /**
6
7
  * Base implementation of a Comunica query engine.
@@ -62,8 +63,12 @@ class QueryEngineBase {
62
63
  * the query output or explanation.
63
64
  */
64
65
  async queryOrExplain(query, context) {
65
- // Invoke query process
66
66
  const actionContext = core_1.ActionContext.ensureActionContext(context);
67
+ // Invalidate caches if cache argument is set to false
68
+ if (actionContext.get(context_entries_1.KeysInitQuery.noCache)) {
69
+ await this.invalidateHttpCache();
70
+ }
71
+ // Invoke query process
67
72
  const { result } = await this.actorInitQuery.mediatorQueryProcess.mediate({ query, context: actionContext });
68
73
  if ('explain' in result) {
69
74
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"QueryEngineBase.js","sourceRoot":"","sources":["QueryEngineBase.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IActionSparqlSerialize, IActorQueryResultSerializeOutput } from '@comunica/bus-query-result-serialize';\nimport { ActionContext } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryEngine,\n IQueryExplained,\n QueryFormatType,\n QueryType,\n QueryExplainMode,\n BindingsStream,\n QueryAlgebraContext,\n QueryStringContext,\n IQueryBindingsEnhanced,\n IQueryQuadsEnhanced,\n QueryEnhanced,\n IQueryContextCommon,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/**\n * Base implementation of a Comunica query engine.\n */\nexport class QueryEngineBase<\n // eslint-disable-next-line unused-imports/no-unused-vars\n QueryContext extends IQueryContextCommon = IQueryContextCommon,\n QueryStringContextInner extends RDF.QueryStringContext = QueryStringContext,\n QueryAlgebraContextInner extends RDF.QueryAlgebraContext = QueryAlgebraContext,\n>\nimplements IQueryEngine<QueryStringContextInner, QueryAlgebraContextInner> {\n private readonly actorInitQuery: ActorInitQueryBase;\n\n public constructor(actorInitQuery: ActorInitQueryBase) {\n this.actorInitQuery = actorInitQuery;\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 <ReturnType<QueryTypeOut['execute']>> await 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 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 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 // Invoke query process\n const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n const { result } = await this.actorInitQuery.mediatorQueryProcess.mediate({ query, context: actionContext });\n if ('explain' in result) {\n return result;\n }\n return QueryEngineBase.internalToFinalResult(result);\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 type { IActionSparqlSerialize, IActorQueryResultSerializeOutput } from '@comunica/bus-query-result-serialize';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport type {\n IActionContext,\n IQueryOperationResult,\n IQueryEngine,\n IQueryExplained,\n QueryFormatType,\n QueryType,\n QueryExplainMode,\n BindingsStream,\n QueryAlgebraContext,\n QueryStringContext,\n IQueryBindingsEnhanced,\n IQueryQuadsEnhanced,\n QueryEnhanced,\n IQueryContextCommon,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport type { ActorInitQueryBase } from './ActorInitQueryBase';\n\n/**\n * Base implementation of a Comunica query engine.\n */\nexport class QueryEngineBase<\n // eslint-disable-next-line unused-imports/no-unused-vars\n QueryContext extends IQueryContextCommon = IQueryContextCommon,\n QueryStringContextInner extends RDF.QueryStringContext = QueryStringContext,\n QueryAlgebraContextInner extends RDF.QueryAlgebraContext = QueryAlgebraContext,\n>\nimplements IQueryEngine<QueryStringContextInner, QueryAlgebraContextInner> {\n private readonly actorInitQuery: ActorInitQueryBase;\n\n public constructor(actorInitQuery: ActorInitQueryBase) {\n this.actorInitQuery = actorInitQuery;\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 <ReturnType<QueryTypeOut['execute']>> await 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 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 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 const actionContext: IActionContext = ActionContext.ensureActionContext(context);\n\n // Invalidate caches if cache argument is set to false\n if (actionContext.get(KeysInitQuery.noCache)) {\n await this.invalidateHttpCache();\n }\n\n // Invoke query process\n const { result } = await this.actorInitQuery.mediatorQueryProcess.mediate({ query, context: actionContext });\n if ('explain' in result) {\n return result;\n }\n return QueryEngineBase.internalToFinalResult(result);\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"]}
@@ -130,6 +130,10 @@ class CliArgsHandlerBase {
130
130
  type: 'boolean',
131
131
  describe: 'If the default graph should also contain the union of all named graphs',
132
132
  },
133
+ noCache: {
134
+ type: 'boolean',
135
+ describe: 'If the cache should be disabled',
136
+ },
133
137
  })
134
138
  .exitProcess(false)
135
139
  .fail(false)
@@ -226,6 +230,10 @@ class CliArgsHandlerBase {
226
230
  if (args.unionDefaultGraph) {
227
231
  context[context_entries_1.KeysQueryOperation.unionDefaultGraph.name] = true;
228
232
  }
233
+ // Define if cache should be disabled
234
+ if (args.noCache) {
235
+ context[context_entries_1.KeysInitQuery.noCache.name] = true;
236
+ }
229
237
  }
230
238
  }
231
239
  exports.CliArgsHandlerBase = CliArgsHandlerBase;
@@ -1 +1 @@
1
- {"version":3,"file":"CliArgsHandlerBase.js","sourceRoot":"","sources":["CliArgsHandlerBase.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-nodejs-modules */\nimport { exec } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport * as OS from 'node:os';\nimport * as Path from 'node:path';\nimport { KeysHttp, KeysInitQuery, KeysQueryOperation, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport { LoggerPretty } from '@comunica/logger-pretty';\nimport type { IActionContext, ICliArgsHandler } from '@comunica/types';\nimport type { Argv } from 'yargs';\n\nconst process: NodeJS.Process = require('process/');\n\n/**\n * Basic CLI arguments handler that handles common options.\n */\nexport class CliArgsHandlerBase implements ICliArgsHandler {\n private readonly initialContext?: IActionContext;\n\n public constructor(initialContext?: IActionContext) {\n this.initialContext = initialContext;\n }\n\n public static getScriptOutput(command: string, fallback: string): Promise<string> {\n return new Promise((resolve) => {\n exec(command, (error, stdout, stderr) => {\n if (error) {\n resolve(fallback);\n }\n resolve((stdout || stderr).trimEnd());\n });\n });\n }\n\n public static isDevelopmentEnvironment(): boolean {\n return existsSync(Path.join(__dirname, `../../test`));\n }\n\n /**\n * Converts an URL like 'hypermedia@http://user:passwd@example.com to an IDataSource\n * @param {string} sourceString An url with possibly a type and authorization.\n * @return {[id: string]: any} An IDataSource which represents the sourceString.\n */\n public static getSourceObjectFromString(sourceString: string): Record<string, any> {\n const source: Record<string, any> = {};\n const mediaTypeRegex = /^([^:]*)@/u;\n const mediaTypeMatches = mediaTypeRegex.exec(sourceString);\n if (mediaTypeMatches) {\n source.type = mediaTypeMatches[1];\n sourceString = sourceString.slice((<number> source.type.length) + 1);\n }\n const authRegex = /\\/\\/(.*:.*)@/u;\n const authMatches = authRegex.exec(sourceString);\n if (authMatches) {\n const credentials = authMatches[1];\n source.context = new ActionContext({\n [KeysHttp.auth.name]: decodeURIComponent(credentials),\n });\n sourceString = sourceString.slice(0, authMatches.index + 2) +\n sourceString.slice(authMatches.index + credentials.length + 3);\n }\n source.value = sourceString;\n return source;\n }\n\n public populateYargs(argumentsBuilder: Argv<any>): Argv<any> {\n return argumentsBuilder\n .command(\n '$0 [sources...]',\n 'evaluates SPARQL queries',\n () => {\n // Do nothing\n },\n () => {\n // Do nothing\n },\n )\n .default('sources', [])\n .hide('sources')\n .wrap(160)\n .version(false)\n .options({\n context: {\n alias: 'c',\n type: 'string',\n describe: 'Use the given JSON context string or file (e.g., config.json)',\n },\n to: {\n type: 'string',\n describe: 'Destination for update queries',\n },\n baseIRI: {\n alias: 'b',\n type: 'string',\n describe: 'base IRI for the query (e.g., http://example.org/)',\n },\n dateTime: {\n alias: 'd',\n type: 'string',\n describe: 'Sets a datetime for querying Memento-enabled archives',\n },\n logLevel: {\n alias: 'l',\n type: 'string',\n describe: 'Sets the log level (e.g., debug, info, warn, ...)',\n default: 'warn',\n },\n lenient: {\n type: 'boolean',\n describe: 'If failing requests and parsing errors should be logged instead of causing a hard crash',\n },\n version: {\n alias: 'v',\n type: 'boolean',\n describe: 'Prints version information',\n },\n showStackTrace: {\n type: 'boolean',\n describe: 'Prints the full stacktrace when errors are thrown',\n },\n httpTimeout: {\n type: 'number',\n describe: 'HTTP requests timeout in milliseconds',\n },\n httpBodyTimeout: {\n type: 'boolean',\n describe: 'Makes the HTTP timeout take into account the response body stream read',\n },\n httpRetryCount: {\n type: 'number',\n describe: 'The number of retries to perform on failed fetch requests',\n },\n httpRetryDelay: {\n type: 'number',\n describe: 'The number of milliseconds to wait between fetch retries',\n },\n httpRetryOnServerError: {\n type: 'boolean',\n describe: 'If fetch should be retried on 5xx server error responses, instead of being resolved.',\n },\n unionDefaultGraph: {\n type: 'boolean',\n describe: 'If the default graph should also contain the union of all named graphs',\n },\n })\n .exitProcess(false)\n .fail(false)\n .help(false);\n }\n\n public async handleArgs(args: Record<string, any>, context: Record<string, any>): Promise<void> {\n // Print version information\n if (args.version) {\n // eslint-disable-next-line ts/no-require-imports,ts/no-var-requires,import/extensions\n const comunicaVersion: string = require('../../package.json').version;\n const dev: string = CliArgsHandlerBase.isDevelopmentEnvironment() ? '(dev)' : '';\n const nodeVersion: string = process.version;\n const npmVersion: string = await CliArgsHandlerBase.getScriptOutput('npm -v', '_NPM is unavailable_');\n const yarnVersion: string = await CliArgsHandlerBase.getScriptOutput('yarn -v', '_Yarn is unavailable_');\n const os = `${OS.platform()} (${OS.type()} ${OS.release()})`;\n\n const message = `| software | version\n| ---------------- | -------\n| Comunica Engine | ${comunicaVersion} ${dev}\n| node | ${nodeVersion}\n| npm | ${npmVersion}\n| yarn | ${yarnVersion}\n| Operating System | ${os}\n`;\n\n throw new Error(message);\n }\n\n // Inherit default context options\n if (this.initialContext) {\n Object.assign(context, this.initialContext.toJS());\n }\n\n // Define context\n if (args.context) {\n Object.assign(context, JSON.parse(existsSync(args.context) ? readFileSync(args.c, 'utf8') : args.context));\n } else if (args.sources[0]?.startsWith('{')) {\n // For backwards compatibility inline JSON\n Object.assign(context, JSON.parse(args.sources[0]));\n args.sources.shift();\n }\n\n // Add sources to context\n if (args.sources.length > 0) {\n context.sources = context.sources || [];\n // eslint-disable-next-line unicorn/no-array-for-each\n args.sources.forEach((sourceValue: string) => {\n const source = CliArgsHandlerBase.getSourceObjectFromString(sourceValue);\n context.sources.push(source);\n });\n }\n\n // Add destination to context\n if (args.to) {\n context[KeysRdfUpdateQuads.destination.name] = args.to;\n }\n\n // Set the logger\n if (!context.log) {\n context.log = new LoggerPretty({ level: args.logLevel });\n }\n\n // Define the base IRI\n if (args.baseIRI) {\n context[KeysInitQuery.baseIRI.name] = args.baseIRI;\n }\n\n // Define lenient-mode\n if (args.lenient) {\n context[KeysInitQuery.lenient.name] = true;\n }\n\n // Define HTTP timeout\n if (args.httpTimeout) {\n context[KeysHttp.httpTimeout.name] = args.httpTimeout;\n }\n\n // Define HTTP body timeout\n if (args.httpBodyTimeout) {\n if (!args.httpTimeout) {\n throw new Error('The --httpBodyTimeout option requires the --httpTimeout option to be set');\n }\n context[KeysHttp.httpBodyTimeout.name] = args.httpBodyTimeout;\n }\n\n // Define HTTP retry count\n if (args.httpRetryCount) {\n context[KeysHttp.httpRetryCount.name] = args.httpRetryCount;\n }\n\n // Define HTTP delay between retries\n if (args.httpRetryDelay) {\n if (!args.httpRetryCount) {\n throw new Error('The --httpRetryDelay option requires the --httpRetryCount option to be set');\n }\n context[KeysHttp.httpRetryDelay.name] = args.httpRetryDelay;\n }\n\n // Define HTTP retry on server error response\n if (args.httpRetryOnServerError) {\n if (!args.httpRetryCount) {\n throw new Error('The --httpRetryOnServerError option requires the --httpRetryCount option to be set');\n }\n context[KeysHttp.httpRetryOnServerError.name] = args.httpRetryOnServerError;\n }\n\n // Define union default graph\n if (args.unionDefaultGraph) {\n context[KeysQueryOperation.unionDefaultGraph.name] = true;\n }\n }\n}\n/* eslint-enable import/no-nodejs-modules */\n"]}
1
+ {"version":3,"file":"CliArgsHandlerBase.js","sourceRoot":"","sources":["CliArgsHandlerBase.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-nodejs-modules */\nimport { exec } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport * as OS from 'node:os';\nimport * as Path from 'node:path';\nimport { KeysHttp, KeysInitQuery, KeysQueryOperation, KeysRdfUpdateQuads } from '@comunica/context-entries';\nimport { ActionContext } from '@comunica/core';\nimport { LoggerPretty } from '@comunica/logger-pretty';\nimport type { IActionContext, ICliArgsHandler } from '@comunica/types';\nimport type { Argv } from 'yargs';\n\nconst process: NodeJS.Process = require('process/');\n\n/**\n * Basic CLI arguments handler that handles common options.\n */\nexport class CliArgsHandlerBase implements ICliArgsHandler {\n private readonly initialContext?: IActionContext;\n\n public constructor(initialContext?: IActionContext) {\n this.initialContext = initialContext;\n }\n\n public static getScriptOutput(command: string, fallback: string): Promise<string> {\n return new Promise((resolve) => {\n exec(command, (error, stdout, stderr) => {\n if (error) {\n resolve(fallback);\n }\n resolve((stdout || stderr).trimEnd());\n });\n });\n }\n\n public static isDevelopmentEnvironment(): boolean {\n return existsSync(Path.join(__dirname, `../../test`));\n }\n\n /**\n * Converts an URL like 'hypermedia@http://user:passwd@example.com to an IDataSource\n * @param {string} sourceString An url with possibly a type and authorization.\n * @return {[id: string]: any} An IDataSource which represents the sourceString.\n */\n public static getSourceObjectFromString(sourceString: string): Record<string, any> {\n const source: Record<string, any> = {};\n const mediaTypeRegex = /^([^:]*)@/u;\n const mediaTypeMatches = mediaTypeRegex.exec(sourceString);\n if (mediaTypeMatches) {\n source.type = mediaTypeMatches[1];\n sourceString = sourceString.slice((<number> source.type.length) + 1);\n }\n const authRegex = /\\/\\/(.*:.*)@/u;\n const authMatches = authRegex.exec(sourceString);\n if (authMatches) {\n const credentials = authMatches[1];\n source.context = new ActionContext({\n [KeysHttp.auth.name]: decodeURIComponent(credentials),\n });\n sourceString = sourceString.slice(0, authMatches.index + 2) +\n sourceString.slice(authMatches.index + credentials.length + 3);\n }\n source.value = sourceString;\n return source;\n }\n\n public populateYargs(argumentsBuilder: Argv<any>): Argv<any> {\n return argumentsBuilder\n .command(\n '$0 [sources...]',\n 'evaluates SPARQL queries',\n () => {\n // Do nothing\n },\n () => {\n // Do nothing\n },\n )\n .default('sources', [])\n .hide('sources')\n .wrap(160)\n .version(false)\n .options({\n context: {\n alias: 'c',\n type: 'string',\n describe: 'Use the given JSON context string or file (e.g., config.json)',\n },\n to: {\n type: 'string',\n describe: 'Destination for update queries',\n },\n baseIRI: {\n alias: 'b',\n type: 'string',\n describe: 'base IRI for the query (e.g., http://example.org/)',\n },\n dateTime: {\n alias: 'd',\n type: 'string',\n describe: 'Sets a datetime for querying Memento-enabled archives',\n },\n logLevel: {\n alias: 'l',\n type: 'string',\n describe: 'Sets the log level (e.g., debug, info, warn, ...)',\n default: 'warn',\n },\n lenient: {\n type: 'boolean',\n describe: 'If failing requests and parsing errors should be logged instead of causing a hard crash',\n },\n version: {\n alias: 'v',\n type: 'boolean',\n describe: 'Prints version information',\n },\n showStackTrace: {\n type: 'boolean',\n describe: 'Prints the full stacktrace when errors are thrown',\n },\n httpTimeout: {\n type: 'number',\n describe: 'HTTP requests timeout in milliseconds',\n },\n httpBodyTimeout: {\n type: 'boolean',\n describe: 'Makes the HTTP timeout take into account the response body stream read',\n },\n httpRetryCount: {\n type: 'number',\n describe: 'The number of retries to perform on failed fetch requests',\n },\n httpRetryDelay: {\n type: 'number',\n describe: 'The number of milliseconds to wait between fetch retries',\n },\n httpRetryOnServerError: {\n type: 'boolean',\n describe: 'If fetch should be retried on 5xx server error responses, instead of being resolved.',\n },\n unionDefaultGraph: {\n type: 'boolean',\n describe: 'If the default graph should also contain the union of all named graphs',\n },\n noCache: {\n type: 'boolean',\n describe: 'If the cache should be disabled',\n },\n })\n .exitProcess(false)\n .fail(false)\n .help(false);\n }\n\n public async handleArgs(args: Record<string, any>, context: Record<string, any>): Promise<void> {\n // Print version information\n if (args.version) {\n // eslint-disable-next-line ts/no-require-imports,ts/no-var-requires,import/extensions\n const comunicaVersion: string = require('../../package.json').version;\n const dev: string = CliArgsHandlerBase.isDevelopmentEnvironment() ? '(dev)' : '';\n const nodeVersion: string = process.version;\n const npmVersion: string = await CliArgsHandlerBase.getScriptOutput('npm -v', '_NPM is unavailable_');\n const yarnVersion: string = await CliArgsHandlerBase.getScriptOutput('yarn -v', '_Yarn is unavailable_');\n const os = `${OS.platform()} (${OS.type()} ${OS.release()})`;\n\n const message = `| software | version\n| ---------------- | -------\n| Comunica Engine | ${comunicaVersion} ${dev}\n| node | ${nodeVersion}\n| npm | ${npmVersion}\n| yarn | ${yarnVersion}\n| Operating System | ${os}\n`;\n\n throw new Error(message);\n }\n\n // Inherit default context options\n if (this.initialContext) {\n Object.assign(context, this.initialContext.toJS());\n }\n\n // Define context\n if (args.context) {\n Object.assign(context, JSON.parse(existsSync(args.context) ? readFileSync(args.c, 'utf8') : args.context));\n } else if (args.sources[0]?.startsWith('{')) {\n // For backwards compatibility inline JSON\n Object.assign(context, JSON.parse(args.sources[0]));\n args.sources.shift();\n }\n\n // Add sources to context\n if (args.sources.length > 0) {\n context.sources = context.sources || [];\n // eslint-disable-next-line unicorn/no-array-for-each\n args.sources.forEach((sourceValue: string) => {\n const source = CliArgsHandlerBase.getSourceObjectFromString(sourceValue);\n context.sources.push(source);\n });\n }\n\n // Add destination to context\n if (args.to) {\n context[KeysRdfUpdateQuads.destination.name] = args.to;\n }\n\n // Set the logger\n if (!context.log) {\n context.log = new LoggerPretty({ level: args.logLevel });\n }\n\n // Define the base IRI\n if (args.baseIRI) {\n context[KeysInitQuery.baseIRI.name] = args.baseIRI;\n }\n\n // Define lenient-mode\n if (args.lenient) {\n context[KeysInitQuery.lenient.name] = true;\n }\n\n // Define HTTP timeout\n if (args.httpTimeout) {\n context[KeysHttp.httpTimeout.name] = args.httpTimeout;\n }\n\n // Define HTTP body timeout\n if (args.httpBodyTimeout) {\n if (!args.httpTimeout) {\n throw new Error('The --httpBodyTimeout option requires the --httpTimeout option to be set');\n }\n context[KeysHttp.httpBodyTimeout.name] = args.httpBodyTimeout;\n }\n\n // Define HTTP retry count\n if (args.httpRetryCount) {\n context[KeysHttp.httpRetryCount.name] = args.httpRetryCount;\n }\n\n // Define HTTP delay between retries\n if (args.httpRetryDelay) {\n if (!args.httpRetryCount) {\n throw new Error('The --httpRetryDelay option requires the --httpRetryCount option to be set');\n }\n context[KeysHttp.httpRetryDelay.name] = args.httpRetryDelay;\n }\n\n // Define HTTP retry on server error response\n if (args.httpRetryOnServerError) {\n if (!args.httpRetryCount) {\n throw new Error('The --httpRetryOnServerError option requires the --httpRetryCount option to be set');\n }\n context[KeysHttp.httpRetryOnServerError.name] = args.httpRetryOnServerError;\n }\n\n // Define union default graph\n if (args.unionDefaultGraph) {\n context[KeysQueryOperation.unionDefaultGraph.name] = true;\n }\n\n // Define if cache should be disabled\n if (args.noCache) {\n context[KeysInitQuery.noCache.name] = true;\n }\n }\n}\n/* eslint-enable import/no-nodejs-modules */\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comunica/actor-init-query",
3
- "version": "3.0.1-alpha.46.0",
3
+ "version": "3.0.1",
4
4
  "description": "A query init actor",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -37,19 +37,19 @@
37
37
  "build:components": "componentsjs-generator"
38
38
  },
39
39
  "dependencies": {
40
- "@comunica/actor-http-proxy": "3.0.1-alpha.46.0",
41
- "@comunica/bus-http-invalidate": "3.0.1-alpha.46.0",
42
- "@comunica/bus-init": "3.0.1-alpha.46.0",
43
- "@comunica/bus-query-process": "3.0.1-alpha.46.0",
44
- "@comunica/bus-query-result-serialize": "3.0.1-alpha.46.0",
45
- "@comunica/context-entries": "3.0.1-alpha.46.0",
46
- "@comunica/core": "3.0.1-alpha.46.0",
47
- "@comunica/logger-pretty": "3.0.1-alpha.46.0",
48
- "@comunica/runner": "3.0.1-alpha.46.0",
49
- "@comunica/types": "3.0.1-alpha.46.0",
40
+ "@comunica/actor-http-proxy": "^3.0.1",
41
+ "@comunica/bus-http-invalidate": "^3.0.1",
42
+ "@comunica/bus-init": "^3.0.1",
43
+ "@comunica/bus-query-process": "^3.0.1",
44
+ "@comunica/bus-query-result-serialize": "^3.0.1",
45
+ "@comunica/context-entries": "^3.0.1",
46
+ "@comunica/core": "^3.0.1",
47
+ "@comunica/logger-pretty": "^3.0.1",
48
+ "@comunica/runner": "^3.0.1",
49
+ "@comunica/types": "^3.0.1",
50
50
  "@rdfjs/types": "*",
51
51
  "@types/yargs": "^17.0.24",
52
- "asynciterator": "^3.8.1",
52
+ "asynciterator": "^3.9.0",
53
53
  "negotiate": "^1.0.1",
54
54
  "process": "^0.11.10",
55
55
  "rdf-quad": "^1.5.0",
@@ -62,5 +62,5 @@
62
62
  "browser": {
63
63
  "./lib/index.js": "./lib/index-browser.js"
64
64
  },
65
- "gitHead": "c115712ec55d79c83712e7046a387d5e3a177023"
65
+ "gitHead": "9c0b537cd927d29590c287fe882185d88a65461b"
66
66
  }