UNPKG

@comake/skl-js-engine

Version:

Standard Knowledge Language Javascript Engine

271 lines 12.4 kB
import type { ReferenceNodeObject, TriplesMap } from '@comake/rmlmapper-js'; import type { GraphObject, IdMap, IncludedBlock, IndexMap, LanguageMap, ListObject, NodeObject, SetObject, TypeMap } from 'jsonld'; import type { Frame } from 'jsonld/jsonld-spec'; import type { EngineConstants } from '../constants'; import type { FindAllOptions, FindOneOptions, FindOptionsWhere } from '../storage/FindOptionsTypes'; import type { GroupByOptions, GroupByResponse } from '../storage/GroupOptionTypes'; import type { RawQueryResult } from '../storage/query-adapter/QueryAdapter'; import type { RDF, SHACL } from './Vocabularies'; export declare type JSONPrimitive = string | number | boolean | null; export interface JSONObject { [key: string]: JSONValue | undefined; } export interface JSONArray extends Array<JSONValue> { } export declare type JSONValue = JSONPrimitive | JSONObject | JSONValue[]; export interface RdfList<T> { [RDF.first]: T; [RDF.rest]?: RdfList<T> | typeof RDF.nil | ReferenceNodeObject; } export interface ValueObject<T extends string | boolean | number | JSONObject | JSONArray> { ['@type']: string; ['@value']: T; ['@language']?: string; ['@direction']?: string; } export declare type IRIObject<T extends string = string> = { '@id': T; }; export declare type ShaclIRI = string | IRIObject; export declare type ShaclIRIOrLiteral = ShaclIRI | ValueObject<any>; export declare type NodeKindValues = typeof SHACL.Literal | typeof SHACL.IRI | typeof SHACL.BlankNode | typeof SHACL.BlankNodeOrIRI | typeof SHACL.BlankNodeOrLiteral | typeof SHACL.IRIOrLiteral; export declare type BaseShape = NodeObject & { [SHACL.targetNode]?: ShaclIRIOrLiteral; [SHACL.targetClass]?: ShaclIRI; [SHACL.targetSubjectsOf]?: ShaclIRI; [SHACL.targetObjectOf]?: ShaclIRI; [SHACL.severity]?: ShaclIRI; [SHACL.message]?: OrArray<ValueObject<string>>; [SHACL.deactivated]?: ValueObject<boolean>; [SHACL.and]?: ShapesListShape; [SHACL.class]?: OrArray<ShaclIRI>; [SHACL.closed]?: ValueObject<boolean>; [SHACL.ignoredProperties]?: ShaclIRI[]; [SHACL.disjoint]?: OrArray<ShaclIRI>; [SHACL.equals]?: OrArray<ShaclIRI>; [SHACL.in]?: ListObject; [SHACL.languageIn]?: string[]; [SHACL.maxExclusive]?: ValueObject<number>; [SHACL.maxInclusive]?: ValueObject<number>; [SHACL.maxLength]?: ValueObject<number>; [SHACL.minExclusive]?: ValueObject<number>; [SHACL.minInclusive]?: ValueObject<number>; [SHACL.minLength]?: ValueObject<number>; [SHACL.nodeKind]?: IRIObject<NodeKindValues>; [SHACL.or]?: ShapesListShape; [SHACL.pattern]?: ValueObject<string>; [SHACL.flags]?: ValueObject<string>; [SHACL.xone]?: ShapesListShape; }; export declare type ShapesListShape = (PropertyShape | NodeShape)[]; export interface PropertyShape extends BaseShape { [SHACL.path]: PathTypes; [SHACL.datatype]?: ShaclIRI; [SHACL.node]?: OrArray<NodeShape>; [SHACL.name]?: ValueObject<string>; [SHACL.description]?: ValueObject<string>; [SHACL.minCount]?: ValueObject<number>; [SHACL.maxCount]?: ValueObject<number>; [SHACL.lessThanOrEquals]?: OrArray<ShaclIRI>; [SHACL.lessThan]?: OrArray<ShaclIRI>; [SHACL.qualifiedValueShape]?: OrArray<BaseShape>; [SHACL.qualifiedMaxCount]?: ValueObject<number>; [SHACL.qualifiedMinCount]?: ValueObject<number>; [SHACL.qualifiedValueShapesDisjoint]?: ValueObject<boolean>; [SHACL.uniqueLang]?: ValueObject<boolean>; } export interface NodeShape extends BaseShape { '@type': typeof SHACL.NodeShape; [EngineConstants.prop.label]?: ValueObject<string>; [SHACL.property]: OrArray<PropertyShape>; } export interface InverseShaclPath extends NodeObject { [SHACL.inversePath]: PathShape; } export interface ZeroOrMoreShaclPath extends NodeObject { [SHACL.zeroOrMorePath]: PathShape; } export interface OneOrMoreShaclPath extends NodeObject { [SHACL.oneOrMorePath]: PathShape; } export interface ZeroOrOneShaclPath extends NodeObject { [SHACL.zeroOrOnePath]: PathShape; } export interface AlternativeShaclPath extends NodeObject { [SHACL.alternativePath]: PathTypes[]; } export declare type PathTypes = ShaclIRI | AlternativeShaclPath | ZeroOrMoreShaclPath | OneOrMoreShaclPath | ZeroOrOneShaclPath | InverseShaclPath; export declare type PathShape = OrArray<PathTypes>; export declare type Mapping = NodeObject & { [EngineConstants.prop.preProcessingMapping]?: OrArray<TriplesMap>; [EngineConstants.prop.preProcessingMappingFrame]?: ValueObject<JSONObject>; [EngineConstants.prop.inputsMapping]?: OrArray<TriplesMap>; [EngineConstants.prop.inputsMappingFrame]?: ValueObject<JSONObject>; [EngineConstants.prop.inputsMappingRef]?: string | ValueObject<string>; [EngineConstants.prop.operationId]?: ValueObject<string>; [EngineConstants.prop.operationMapping]?: TriplesMap; [EngineConstants.prop.capability]?: ReferenceNodeObject; [EngineConstants.prop.outputsMapping]?: OrArray<TriplesMap>; [EngineConstants.prop.outputsMappingFrame]?: ValueObject<JSONObject>; [EngineConstants.prop.series]?: { '@list': CapabilityMapping[]; } | (RdfList<CapabilityMapping> & NodeObject); [EngineConstants.prop.parallel]?: OrArray<CapabilityMapping>; }; export declare type Capability = NodeObject & { '@id': string; '@type': typeof EngineConstants.spec.capability; [EngineConstants.prop.label]?: ValueObject<string>; [EngineConstants.prop.inputsContext]?: ValueObject<JSONObject>; [EngineConstants.prop.inputs]?: NodeShape | ReferenceNodeObject; [EngineConstants.prop.outputsContext]?: ValueObject<JSONObject>; [EngineConstants.prop.outputs]?: NodeShape | ReferenceNodeObject; }; export declare type CapabilityMapping = Mapping & { [EngineConstants.prop.capability]: ReferenceNodeObject; [EngineConstants.prop.object]?: ReferenceNodeObject; [EngineConstants.prop.integration]?: ReferenceNodeObject; }; export declare type MappingWithInputs = CapabilityMapping & Required<Pick<CapabilityMapping, typeof EngineConstants.prop.inputs | typeof EngineConstants.prop.inputsMapping>>; export declare type MappingWithInputsReference = CapabilityMapping & Required<Pick<CapabilityMapping, typeof EngineConstants.prop.inputsReference>>; export declare type MappingWithOutputsMapping = CapabilityMapping & Required<Pick<CapabilityMapping, typeof EngineConstants.prop.outputsMapping | typeof EngineConstants.prop.outputsMappingFrame>>; export declare type MappingWithSeries = CapabilityMapping & Required<Pick<CapabilityMapping, typeof EngineConstants.prop.series>>; export declare type MappingWithParallel = CapabilityMapping & Required<Pick<CapabilityMapping, typeof EngineConstants.prop.parallel>>; export interface SeriesCapabilityArgs extends JSONObject { originalCapabilityParameters: JSONObject; previousCapabilityReturnValue: JSONObject; allStepsResults: JSONObject[]; } export declare type TriggerMapping = Mapping & { [EngineConstants.prop.integration]: ReferenceNodeObject; }; export declare type PossibleArrayFieldValues = boolean | number | string | NodeObject | GraphObject | ValueObject<any> | ListObject | SetObject; export declare type EntityFieldSingularValue = boolean | number | string | NodeObject | GraphObject | ValueObject<any> | ListObject | SetObject; export declare type EntityFieldValue = OrArray<EntityFieldSingularValue> | LanguageMap | IndexMap | IncludedBlock | IdMap | TypeMap | NodeObject[keyof NodeObject]; export interface Entity { '@id': string; '@type': OrArray<string>; [key: string]: EntityFieldValue; } export declare type OrArray<T> = T | T[]; export interface OperationResponse extends JSONObject { data: JSONObject; operationParameters: JSONObject; } export interface CapabilityConfig { /** * Callbacks to execute upon events. * If global callbacks are provided, both are executed. */ callbacks?: Callbacks; /** * When true, disables validation of capability parameters and * return values according to schemas. Overrides the global setting. */ readonly disableValidation?: boolean; /** * An object containing files keyed on their title that can be used in mappings. * Merged with the global setting. The capability config taking prededence in the case of overlapping names. */ readonly inputFiles?: Record<string, string>; /** * Manually defined functions which can be used in mappings. * Merged with the global setting. The capability config taking prededence in the case of overlapping names. */ readonly functions?: Record<string, (args: any | any[]) => any>; /** * When true, the operation will be streamed. */ readonly stream?: boolean; /** * When true, the operation will be buffered. */ readonly buffer?: boolean; } export interface Callbacks { /** * Callback run when a Capability starts being executed */ onCapabilityStart?: (capability: string, args: Record<string, any>) => void; /** * Callback run when a Capability is finished being executed */ onCapabilityEnd?: (capability: string, returnValue: Record<string, any>) => void; } export interface SKLEngineInterface { /** * Finds the first entity by the given find options */ find: (options?: FindOneOptions) => Promise<Entity>; /** * Finds the first entity that matches the given where condition */ findBy: (where: FindOptionsWhere, notFoundErrorMessage?: string) => Promise<Entity>; /** * Finds the first entity that matches the given where condition, or undefined if not found */ findByIfExists: (options: FindOptionsWhere) => Promise<Entity | undefined>; /** * Finds entities that match the given find options */ findAll: (options?: FindAllOptions) => Promise<Entity[]>; /** * Groups entities by the given options */ groupBy: (options: GroupByOptions) => Promise<GroupByResponse>; /** * Finds entities that match the given where condition */ findAllBy: (where: FindOptionsWhere) => Promise<Entity[]>; /** * Determines if an entity matching the given options exists */ exists: (options?: FindAllOptions) => Promise<boolean>; /** * Returns a count of entities matching the given options */ count: (options?: FindAllOptions) => Promise<number>; /** * Saves a given entity or entities */ save: ((entity: Entity) => Promise<Entity>) & ((entities: Entity[]) => Promise<Entity[]>); /** * Updates an entity or entities partially */ update: ((id: string, attributes: Partial<Entity>) => Promise<void>) & ((ids: string[], attributes: Partial<Entity>) => Promise<void>); /** * Removes an entity or entities from the database by id */ delete: ((id: string) => Promise<void>) & ((ids: string[]) => Promise<void>); /** * Removes a given entity or entities from the database */ destroy: ((entity: Entity) => Promise<Entity>) & ((entities: Entity[]) => Promise<Entity[]>); /** * Performs a mapping operation */ performMapping: (args: JSONValue, mapping: OrArray<NodeObject>, frame?: Record<string, any>, capabilityConfig?: CapabilityConfig) => Promise<NodeObject>; /** * Executes a raw query */ executeRawQuery: <T extends RawQueryResult>(query: string) => Promise<T[]>; /** * Executes a raw update query */ executeRawUpdate: (query: string) => Promise<void>; /** * Executes a raw construct query */ executeRawConstructQuery: (query: string, frame?: Frame) => Promise<GraphObject>; /** * Record of capability handlers by name */ capability: Record<string, (params: JSONObject, capabilityConfig?: CapabilityConfig) => Promise<any>>; /** * Finds and executes a capability */ findAndExecuteCapability: (capabilityId: string, args: JSONObject, capabilityConfig?: CapabilityConfig) => Promise<OrArray<NodeObject>>; executeCapability: (capability: Capability, capabilityArgs: JSONObject, capabilityConfig?: CapabilityConfig) => Promise<OrArray<NodeObject>>; executeMapping: (mapping: Mapping, args: JSONObject, capabilityConfig?: CapabilityConfig, account?: Entity) => Promise<OrArray<NodeObject>>; } //# sourceMappingURL=Types.d.ts.map