@comake/skl-js-engine 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/LICENSE.md +4 -0
  2. package/README.md +46 -0
  3. package/dist/Skql.d.ts +68 -0
  4. package/dist/Skql.js +351 -0
  5. package/dist/Skql.js.map +1 -0
  6. package/dist/index.d.ts +22 -0
  7. package/dist/index.js +44 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/mapping/Mapper.d.ts +14 -0
  10. package/dist/mapping/Mapper.js +64 -0
  11. package/dist/mapping/Mapper.js.map +1 -0
  12. package/dist/sklEngine.d.ts +68 -0
  13. package/dist/sklEngine.js +351 -0
  14. package/dist/sklEngine.js.map +1 -0
  15. package/dist/storage/AggregateOperator.d.ts +12 -0
  16. package/dist/storage/AggregateOperator.js +17 -0
  17. package/dist/storage/AggregateOperator.js.map +1 -0
  18. package/dist/storage/BaseQueryAdapterOptions.d.ts +19 -0
  19. package/dist/storage/BaseQueryAdapterOptions.js +3 -0
  20. package/dist/storage/BaseQueryAdapterOptions.js.map +1 -0
  21. package/dist/storage/FindOperator.d.ts +12 -0
  22. package/dist/storage/FindOperator.js +17 -0
  23. package/dist/storage/FindOperator.js.map +1 -0
  24. package/dist/storage/FindOptionsTypes.d.ts +45 -0
  25. package/dist/storage/FindOptionsTypes.js +3 -0
  26. package/dist/storage/FindOptionsTypes.js.map +1 -0
  27. package/dist/storage/MemoryQueryAdapter.d.ts +28 -0
  28. package/dist/storage/MemoryQueryAdapter.js +215 -0
  29. package/dist/storage/MemoryQueryAdapter.js.map +1 -0
  30. package/dist/storage/QueryAdapter.d.ts +74 -0
  31. package/dist/storage/QueryAdapter.js +3 -0
  32. package/dist/storage/QueryAdapter.js.map +1 -0
  33. package/dist/storage/SparqlQueryAdapter.d.ts +34 -0
  34. package/dist/storage/SparqlQueryAdapter.js +229 -0
  35. package/dist/storage/SparqlQueryAdapter.js.map +1 -0
  36. package/dist/storage/aggregate/Max.d.ts +2 -0
  37. package/dist/storage/aggregate/Max.js +13 -0
  38. package/dist/storage/aggregate/Max.js.map +1 -0
  39. package/dist/storage/memory/MemoryQueryAdapter.d.ts +36 -0
  40. package/dist/storage/memory/MemoryQueryAdapter.js +246 -0
  41. package/dist/storage/memory/MemoryQueryAdapter.js.map +1 -0
  42. package/dist/storage/memory/MemoryQueryAdapterOptions.d.ts +12 -0
  43. package/dist/storage/memory/MemoryQueryAdapterOptions.js +3 -0
  44. package/dist/storage/memory/MemoryQueryAdapterOptions.js.map +1 -0
  45. package/dist/storage/operator/Equal.d.ts +2 -0
  46. package/dist/storage/operator/Equal.js +13 -0
  47. package/dist/storage/operator/Equal.js.map +1 -0
  48. package/dist/storage/operator/GreaterThan.d.ts +2 -0
  49. package/dist/storage/operator/GreaterThan.js +13 -0
  50. package/dist/storage/operator/GreaterThan.js.map +1 -0
  51. package/dist/storage/operator/GreaterThanOrEqual.d.ts +2 -0
  52. package/dist/storage/operator/GreaterThanOrEqual.js +13 -0
  53. package/dist/storage/operator/GreaterThanOrEqual.js.map +1 -0
  54. package/dist/storage/operator/In.d.ts +2 -0
  55. package/dist/storage/operator/In.js +13 -0
  56. package/dist/storage/operator/In.js.map +1 -0
  57. package/dist/storage/operator/Inverse.d.ts +2 -0
  58. package/dist/storage/operator/Inverse.js +13 -0
  59. package/dist/storage/operator/Inverse.js.map +1 -0
  60. package/dist/storage/operator/LessThan.d.ts +2 -0
  61. package/dist/storage/operator/LessThan.js +13 -0
  62. package/dist/storage/operator/LessThan.js.map +1 -0
  63. package/dist/storage/operator/LessThanOrEqual.d.ts +2 -0
  64. package/dist/storage/operator/LessThanOrEqual.js +13 -0
  65. package/dist/storage/operator/LessThanOrEqual.js.map +1 -0
  66. package/dist/storage/operator/Not.d.ts +2 -0
  67. package/dist/storage/operator/Not.js +13 -0
  68. package/dist/storage/operator/Not.js.map +1 -0
  69. package/dist/storage/sparql/SparqlQueryAdapter.d.ts +40 -0
  70. package/dist/storage/sparql/SparqlQueryAdapter.js +235 -0
  71. package/dist/storage/sparql/SparqlQueryAdapter.js.map +1 -0
  72. package/dist/storage/sparql/SparqlQueryAdapterOptions.d.ts +15 -0
  73. package/dist/storage/sparql/SparqlQueryAdapterOptions.js +3 -0
  74. package/dist/storage/sparql/SparqlQueryAdapterOptions.js.map +1 -0
  75. package/dist/storage/sparql/SparqlQueryBuilder.d.ts +81 -0
  76. package/dist/storage/sparql/SparqlQueryBuilder.js +553 -0
  77. package/dist/storage/sparql/SparqlQueryBuilder.js.map +1 -0
  78. package/dist/storage/sparql/SparqlUpdateBuilder.d.ts +31 -0
  79. package/dist/storage/sparql/SparqlUpdateBuilder.js +190 -0
  80. package/dist/storage/sparql/SparqlUpdateBuilder.js.map +1 -0
  81. package/dist/storage/sparql/VariableGenerator.d.ts +4 -0
  82. package/dist/storage/sparql/VariableGenerator.js +14 -0
  83. package/dist/storage/sparql/VariableGenerator.js.map +1 -0
  84. package/dist/util/TripleUtil.d.ts +21 -0
  85. package/dist/util/TripleUtil.js +221 -0
  86. package/dist/util/TripleUtil.js.map +1 -0
  87. package/dist/util/Types.d.ts +10 -0
  88. package/dist/util/Types.js +3 -0
  89. package/dist/util/Types.js.map +1 -0
  90. package/dist/util/Util.d.ts +15 -0
  91. package/dist/util/Util.js +94 -0
  92. package/dist/util/Util.js.map +1 -0
  93. package/dist/util/VariableGenerator.d.ts +5 -0
  94. package/dist/util/VariableGenerator.js +29 -0
  95. package/dist/util/VariableGenerator.js.map +1 -0
  96. package/dist/util/Vocabularies.d.ts +12 -0
  97. package/dist/util/Vocabularies.js +118 -0
  98. package/dist/util/Vocabularies.js.map +1 -0
  99. package/package.json +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mapper.js","sourceRoot":"","sources":["../../src/mapping/Mapper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAyD;AACzD,gEAAkD;AAElD,oDAA4B;AAQ5B,MAAa,MAAM;IAGjB,YAAmB,IAAiB;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,KAAK,CAChB,IAAgB,EAChB,OAA4B,EAC5B,KAA0B;QAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAgB,EAAE,OAA4B;QACpE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9C,OAAO,MAAM,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAiB,CAAC;IACjF,CAAC;IAEO,KAAK,CAAC,KAAK,CACjB,SAAgB,EAChB,aAAkC;QAElC,IAAI,KAAK,GAAwB;YAC/B,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,SAAS;SACpB,CAAC;QACF,KAAK,GAAG;YACN,GAAG,KAAK;YACR,GAAG,aAAa;YAChB,UAAU,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,UAAU,CAAC,EAAE;SACrE,CAAC;QACF,OAAO,MAAM,gBAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,SAA8B;QACxD,OAAO,CAAC,MAAM,gBAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAsB,CAAC;IACjG,CAAC;CACF;AA1CD,wBA0CC"}
@@ -0,0 +1,68 @@
1
+ import type { GraphObject, NodeObject } from 'jsonld';
2
+ import type { Frame } from 'jsonld/jsonld-spec';
3
+ import type { FindAllOptions, FindOneOptions, FindOptionsWhere } from './storage/FindOptionsTypes';
4
+ import type { MemoryQueryAdapterOptions } from './storage/memory/MemoryQueryAdapterOptions';
5
+ import type { RawQueryResult } from './storage/QueryAdapter';
6
+ import type { SparqlQueryAdapterOptions } from './storage/sparql/SparqlQueryAdapterOptions';
7
+ import type { OrArray, Entity } from './util/Types';
8
+ import type { JSONObject } from './util/Util';
9
+ export declare type VerbHandler = (args: JSONObject) => Promise<NodeObject>;
10
+ export declare type VerbInterface = Record<string, VerbHandler>;
11
+ export declare type MappingResponseOption<T extends boolean> = T extends true ? JSONObject : NodeObject;
12
+ export declare type SKLEngineOptions = MemoryQueryAdapterOptions | SparqlQueryAdapterOptions;
13
+ export interface ErrorMatcher {
14
+ status: number;
15
+ messageRegex: string;
16
+ }
17
+ export interface OperationResponse {
18
+ data: JSONObject;
19
+ }
20
+ export declare class SKLEngine {
21
+ private readonly mapper;
22
+ private readonly adapter;
23
+ private readonly inputFiles?;
24
+ readonly verb: VerbInterface;
25
+ constructor(options: SKLEngineOptions);
26
+ executeRawQuery<T extends RawQueryResult>(query: string): Promise<T[]>;
27
+ executeRawEntityQuery(query: string, frame?: Frame): Promise<GraphObject>;
28
+ find(options?: FindOneOptions): Promise<Entity>;
29
+ findBy(where: FindOptionsWhere): Promise<Entity>;
30
+ findAll(options?: FindAllOptions): Promise<Entity[]>;
31
+ findAllBy(where: FindOptionsWhere): Promise<Entity[]>;
32
+ exists(where: FindOptionsWhere): Promise<boolean>;
33
+ count(where?: FindOptionsWhere): Promise<number>;
34
+ save(entity: Entity): Promise<Entity>;
35
+ save(entities: Entity[]): Promise<Entity[]>;
36
+ destroy(entity: Entity): Promise<Entity>;
37
+ destroy(entities: Entity[]): Promise<Entity[]>;
38
+ destroyAll(): Promise<void>;
39
+ performMapping(args: JSONObject, mapping: OrArray<NodeObject>, frame?: Record<string, any>): Promise<NodeObject>;
40
+ performMappingAndConvertToJSON(args: JSONObject, mapping: OrArray<NodeObject>, frame?: Record<string, any>, convertToJsonDeep?: boolean): Promise<JSONObject>;
41
+ private handleVerb;
42
+ private findVerbWithName;
43
+ private handleIntegrationVerb;
44
+ private findVerbIntegrationMapping;
45
+ private performOperationMappingWithArgs;
46
+ private performOperation;
47
+ private performReturnValueMappingWithFrame;
48
+ private resolveMappingReferences;
49
+ private performParameterMappingOnArgsIfDefined;
50
+ private getOpenApiDescriptionForIntegration;
51
+ private findSecurityCredentialsForAccount;
52
+ private findSecurityCredentialsForAccountIfDefined;
53
+ private createOpenApiOperationExecutorWithSpec;
54
+ private handleNounMappingVerb;
55
+ private findVerbNounMapping;
56
+ private performVerbMappingWithArgs;
57
+ private assertVerbParamsMatchParameterSchemas;
58
+ private performOpenapiOperationWithCredentials;
59
+ private isInvalidTokenError;
60
+ private refreshOpenApiToken;
61
+ private getConfigurationFromSecurityCredentials;
62
+ private assertVerbReturnValueMatchesReturnTypeSchema;
63
+ private convertToQuadsAndValidateAgainstShape;
64
+ private performSecuritySchemeStageWithCredentials;
65
+ private getDataFromDataSource;
66
+ private getDataFromJsonDataSource;
67
+ private getJsonDataFromSource;
68
+ }
@@ -0,0 +1,351 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SKLEngine = void 0;
7
+ const openapi_operation_executor_1 = require("@comake/openapi-operation-executor");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ const rdf_validate_shacl_1 = __importDefault(require("rdf-validate-shacl"));
10
+ const Mapper_1 = require("./mapping/Mapper");
11
+ const MemoryQueryAdapter_1 = require("./storage/memory/MemoryQueryAdapter");
12
+ const SparqlQueryAdapter_1 = require("./storage/sparql/SparqlQueryAdapter");
13
+ const Util_1 = require("./util/Util");
14
+ const Vocabularies_1 = require("./util/Vocabularies");
15
+ class SKLEngine {
16
+ constructor(options) {
17
+ switch (options.type) {
18
+ case 'memory':
19
+ this.adapter = new MemoryQueryAdapter_1.MemoryQueryAdapter(options);
20
+ break;
21
+ case 'sparql':
22
+ this.adapter = new SparqlQueryAdapter_1.SparqlQueryAdapter(options);
23
+ break;
24
+ default:
25
+ throw new Error('No schema source found in setSchema args.');
26
+ }
27
+ this.inputFiles = options.inputFiles;
28
+ this.mapper = new Mapper_1.Mapper({ functions: options.functions });
29
+ // eslint-disable-next-line func-style
30
+ const getVerbHandler = (getTarget, property) => async (verbArgs) => this.handleVerb(property, verbArgs);
31
+ this.verb = new Proxy({}, { get: getVerbHandler });
32
+ }
33
+ async executeRawQuery(query) {
34
+ return await this.adapter.executeRawQuery(query);
35
+ }
36
+ async executeRawEntityQuery(query, frame) {
37
+ return await this.adapter.executeRawEntityQuery(query, frame);
38
+ }
39
+ async find(options) {
40
+ const entity = await this.adapter.find(options);
41
+ if (entity) {
42
+ return entity;
43
+ }
44
+ throw new Error(`No schema found with fields matching ${JSON.stringify(options)}`);
45
+ }
46
+ async findBy(where) {
47
+ const entity = await this.adapter.findBy(where);
48
+ if (entity) {
49
+ return entity;
50
+ }
51
+ throw new Error(`No schema found with fields matching ${JSON.stringify(where)}`);
52
+ }
53
+ async findAll(options) {
54
+ return await this.adapter.findAll(options);
55
+ }
56
+ async findAllBy(where) {
57
+ return await this.adapter.findAllBy(where);
58
+ }
59
+ async exists(where) {
60
+ return await this.adapter.exists(where);
61
+ }
62
+ async count(where) {
63
+ return await this.adapter.count(where);
64
+ }
65
+ async save(entityOrEntities) {
66
+ if (Array.isArray(entityOrEntities)) {
67
+ return await this.adapter.save(entityOrEntities);
68
+ }
69
+ return await this.adapter.save(entityOrEntities);
70
+ }
71
+ async destroy(entityOrEntities) {
72
+ if (Array.isArray(entityOrEntities)) {
73
+ return await this.adapter.destroy(entityOrEntities);
74
+ }
75
+ return await this.adapter.destroy(entityOrEntities);
76
+ }
77
+ async destroyAll() {
78
+ return await this.adapter.destroyAll();
79
+ }
80
+ async performMapping(args, mapping, frame) {
81
+ const nonReferenceMappings = await this.resolveMappingReferences(mapping);
82
+ return await this.mapper.apply(args, nonReferenceMappings, frame ?? {});
83
+ }
84
+ async performMappingAndConvertToJSON(args, mapping, frame, convertToJsonDeep = true) {
85
+ const nonReferenceMappings = await this.resolveMappingReferences(mapping);
86
+ const jsonLd = await this.mapper.apply(args, nonReferenceMappings, frame ?? {});
87
+ return (0, Util_1.toJSON)(jsonLd, convertToJsonDeep);
88
+ }
89
+ async handleVerb(verbName, verbArgs) {
90
+ const verb = await this.findVerbWithName(verbName);
91
+ if (verbArgs.noun) {
92
+ return this.handleNounMappingVerb(verb, verbArgs);
93
+ }
94
+ if (verbArgs.account) {
95
+ return this.handleIntegrationVerb(verb, verbArgs);
96
+ }
97
+ throw new Error(`Verb parameters must include either a noun or an account.`);
98
+ }
99
+ async findVerbWithName(verbName) {
100
+ try {
101
+ return await this.findBy({ type: Vocabularies_1.SKL.Verb, [Vocabularies_1.RDFS.label]: verbName });
102
+ }
103
+ catch {
104
+ throw new Error(`Failed to find the verb ${verbName} in the schema.`);
105
+ }
106
+ }
107
+ async handleIntegrationVerb(verb, args) {
108
+ await this.assertVerbParamsMatchParameterSchemas(args, verb);
109
+ const account = await this.findBy({ id: args.account });
110
+ const integrationId = account[Vocabularies_1.SKL.integration]['@id'];
111
+ const mapping = await this.findVerbIntegrationMapping(verb['@id'], integrationId);
112
+ const operationArgs = await this.performParameterMappingOnArgsIfDefined(args, mapping);
113
+ const operationInfo = await this.performOperationMappingWithArgs(args, mapping);
114
+ const rawReturnValue = await this.performOperation(operationInfo, operationArgs, account);
115
+ if (operationInfo[Vocabularies_1.SKL.schemeName] && rawReturnValue.authorizationUrl) {
116
+ return {
117
+ '@type': '@json',
118
+ '@value': rawReturnValue,
119
+ };
120
+ }
121
+ if (mapping[Vocabularies_1.SKL.returnValueMapping]) {
122
+ const mappedReturnValue = await this.performReturnValueMappingWithFrame(rawReturnValue.data, mapping, verb);
123
+ await this.assertVerbReturnValueMatchesReturnTypeSchema(mappedReturnValue, verb);
124
+ return mappedReturnValue;
125
+ }
126
+ return rawReturnValue;
127
+ }
128
+ async findVerbIntegrationMapping(verbId, integrationId) {
129
+ return await this.findBy({
130
+ type: Vocabularies_1.SKL.VerbIntegrationMapping,
131
+ [Vocabularies_1.SKL.verb]: verbId,
132
+ [Vocabularies_1.SKL.integration]: integrationId,
133
+ });
134
+ }
135
+ async performOperationMappingWithArgs(args, mapping) {
136
+ return await this.performMapping(args, mapping[Vocabularies_1.SKL.operationMapping]);
137
+ }
138
+ async performOperation(operationInfo, operationArgs, account) {
139
+ if (operationInfo[Vocabularies_1.SKL.schemeName]) {
140
+ return await this.performSecuritySchemeStageWithCredentials(operationInfo, operationArgs, account);
141
+ }
142
+ if (operationInfo[Vocabularies_1.SKL.dataSource]) {
143
+ return await this.getDataFromDataSource((0, Util_1.getValueIfDefined)(operationInfo[Vocabularies_1.SKL.dataSource]));
144
+ }
145
+ if (operationInfo[Vocabularies_1.SKL.operationId]) {
146
+ return await this.performOpenapiOperationWithCredentials((0, Util_1.getValueIfDefined)(operationInfo[Vocabularies_1.SKL.operationId]), operationArgs, account);
147
+ }
148
+ throw new Error('Operation not supported.');
149
+ }
150
+ async performReturnValueMappingWithFrame(data, mapping, verb) {
151
+ return await this.performMapping(data, mapping[Vocabularies_1.SKL.returnValueMapping], {
152
+ ...(0, Util_1.getValueIfDefined)(verb[Vocabularies_1.SKL.returnValueFrame]),
153
+ ...(0, Util_1.getValueIfDefined)(mapping[Vocabularies_1.SKL.returnValueFrame]),
154
+ });
155
+ }
156
+ async resolveMappingReferences(mapping) {
157
+ if (Array.isArray(mapping)) {
158
+ return await Promise.all(mapping.map(async (subMapping) => await this.resolveMappingReferences(subMapping)));
159
+ }
160
+ return mapping;
161
+ }
162
+ async performParameterMappingOnArgsIfDefined(args, mapping, convertToJsonDeep = true) {
163
+ if (mapping[Vocabularies_1.SKL.parameterMapping]) {
164
+ return await this.performMappingAndConvertToJSON(args, mapping[Vocabularies_1.SKL.parameterMapping], (0, Util_1.getValueIfDefined)(mapping[Vocabularies_1.SKL.parameterMappingFrame]), convertToJsonDeep);
165
+ }
166
+ return args;
167
+ }
168
+ async getOpenApiDescriptionForIntegration(integrationId) {
169
+ const openApiDescriptionSchema = await this.findBy({
170
+ type: Vocabularies_1.SKL.OpenApiDescription,
171
+ [Vocabularies_1.SKL.integration]: integrationId,
172
+ });
173
+ return (0, Util_1.getValueIfDefined)(openApiDescriptionSchema[Vocabularies_1.SKL.openApiDescription]);
174
+ }
175
+ async findSecurityCredentialsForAccount(accountId) {
176
+ return await this.findBy({
177
+ type: Vocabularies_1.SKL.SecurityCredentials,
178
+ [Vocabularies_1.SKL.account]: accountId,
179
+ });
180
+ }
181
+ async findSecurityCredentialsForAccountIfDefined(accountId) {
182
+ try {
183
+ return await this.findSecurityCredentialsForAccount(accountId);
184
+ }
185
+ catch {
186
+ return undefined;
187
+ }
188
+ }
189
+ async createOpenApiOperationExecutorWithSpec(openApiDescription) {
190
+ const executor = new openapi_operation_executor_1.OpenApiOperationExecutor();
191
+ await executor.setOpenapiSpec(openApiDescription);
192
+ return executor;
193
+ }
194
+ async handleNounMappingVerb(verb, args) {
195
+ const mapping = await this.findVerbNounMapping(verb['@id'], args.noun);
196
+ if (mapping[Vocabularies_1.SKL.returnValueMapping]) {
197
+ return await this.performMapping(args, mapping[Vocabularies_1.SKL.returnValueMapping], {
198
+ ...(0, Util_1.getValueIfDefined)(verb[Vocabularies_1.SKL.returnValueFrame]),
199
+ ...(0, Util_1.getValueIfDefined)(mapping[Vocabularies_1.SKL.returnValueFrame]),
200
+ });
201
+ }
202
+ const verbArgs = await this.performParameterMappingOnArgsIfDefined(args, mapping, false);
203
+ const verbInfoJsonLd = await this.performVerbMappingWithArgs(args, mapping);
204
+ const mappedVerb = await this.findBy({
205
+ id: (0, Util_1.getValueIfDefined)(verbInfoJsonLd[Vocabularies_1.SKL.verb]),
206
+ });
207
+ return this.handleIntegrationVerb(mappedVerb, verbArgs);
208
+ }
209
+ async findVerbNounMapping(verbId, noun) {
210
+ return await this.findBy({
211
+ type: Vocabularies_1.SKL.VerbNounMapping,
212
+ [Vocabularies_1.SKL.verb]: verbId,
213
+ [Vocabularies_1.SKL.noun]: noun,
214
+ });
215
+ }
216
+ async performVerbMappingWithArgs(args, mapping) {
217
+ return await this.performMapping(args, mapping[Vocabularies_1.SKL.verbMapping]);
218
+ }
219
+ async assertVerbParamsMatchParameterSchemas(verbParams, verb) {
220
+ const verbParamsAsJsonLd = {
221
+ '@context': (0, Util_1.getValueIfDefined)(verb[Vocabularies_1.SKL.parametersContext]),
222
+ '@type': Vocabularies_1.SKL.Parameters,
223
+ ...verbParams,
224
+ };
225
+ const parametersSchema = verb[Vocabularies_1.SKL.parameters];
226
+ const report = await this.convertToQuadsAndValidateAgainstShape(verbParamsAsJsonLd, parametersSchema);
227
+ if (!report.conforms) {
228
+ throw new Error(`${verb[Vocabularies_1.RDFS.label]} parameters do not conform to the schema`);
229
+ }
230
+ }
231
+ async performOpenapiOperationWithCredentials(operationId, operationArgs, account) {
232
+ const integrationId = account[Vocabularies_1.SKL.integration]['@id'];
233
+ const openApiDescription = await this.getOpenApiDescriptionForIntegration(integrationId);
234
+ const openApiExecutor = await this.createOpenApiOperationExecutorWithSpec(openApiDescription);
235
+ const securityCredentials = await this.findSecurityCredentialsForAccountIfDefined(account['@id']);
236
+ const configuration = {
237
+ accessToken: securityCredentials
238
+ ? (0, Util_1.getValueIfDefined)(securityCredentials[Vocabularies_1.SKL.accessToken])
239
+ : undefined,
240
+ apiKey: securityCredentials
241
+ ? (0, Util_1.getValueIfDefined)(securityCredentials[Vocabularies_1.SKL.apiKey])
242
+ : undefined,
243
+ basePath: (0, Util_1.getValueIfDefined)(account[Vocabularies_1.SKL.overrideBasePath]),
244
+ };
245
+ return await openApiExecutor.executeOperation(operationId, configuration, operationArgs)
246
+ .catch(async (error) => {
247
+ if (axios_1.default.isAxiosError(error) && await this.isInvalidTokenError(error, integrationId) && securityCredentials) {
248
+ const refreshedConfiguration = await this.refreshOpenApiToken(securityCredentials, openApiExecutor, integrationId);
249
+ return await openApiExecutor.executeOperation(operationId, refreshedConfiguration, operationArgs);
250
+ }
251
+ throw error;
252
+ });
253
+ }
254
+ async isInvalidTokenError(error, integrationId) {
255
+ const integration = await this.findBy({ id: integrationId });
256
+ const errorMatcher = (0, Util_1.getValueIfDefined)(integration[Vocabularies_1.SKL.invalidTokenErrorMatcher]);
257
+ if (errorMatcher && (error.response?.status === errorMatcher.status)) {
258
+ if (!errorMatcher.messageRegex) {
259
+ return true;
260
+ }
261
+ if (error.response?.statusText &&
262
+ new RegExp(errorMatcher.messageRegex, 'u').test(error.response?.statusText)) {
263
+ return true;
264
+ }
265
+ }
266
+ return false;
267
+ }
268
+ async refreshOpenApiToken(securityCredentialsSchema, openApiExecutor, integrationId) {
269
+ const getOauthTokenVerb = await this.findBy({ type: Vocabularies_1.SKL.Verb, [Vocabularies_1.RDFS.label]: 'getOauthTokens' });
270
+ const mapping = await this.findVerbIntegrationMapping(getOauthTokenVerb['@id'], integrationId);
271
+ const operationArgs = await this.performParameterMappingOnArgsIfDefined({ refreshToken: (0, Util_1.getValueIfDefined)(securityCredentialsSchema[Vocabularies_1.SKL.refreshToken]) }, mapping);
272
+ const operationInfoJsonLd = await this.performOperationMappingWithArgs({}, mapping);
273
+ const configuration = this.getConfigurationFromSecurityCredentials(securityCredentialsSchema);
274
+ const rawReturnValue = await openApiExecutor.executeSecuritySchemeStage((0, Util_1.getValueIfDefined)(operationInfoJsonLd[Vocabularies_1.SKL.schemeName]), (0, Util_1.getValueIfDefined)(operationInfoJsonLd[Vocabularies_1.SKL.oauthFlow]), (0, Util_1.getValueIfDefined)(operationInfoJsonLd[Vocabularies_1.SKL.stage]), configuration, operationArgs);
275
+ const mappedReturnValue = await this.performReturnValueMappingWithFrame(rawReturnValue.data, mapping, getOauthTokenVerb);
276
+ await this.assertVerbReturnValueMatchesReturnTypeSchema(mappedReturnValue, getOauthTokenVerb);
277
+ securityCredentialsSchema[Vocabularies_1.SKL.accessToken] = (0, Util_1.getValueIfDefined)(mappedReturnValue[Vocabularies_1.SKL.accessToken]);
278
+ securityCredentialsSchema[Vocabularies_1.SKL.refreshToken] = (0, Util_1.getValueIfDefined)(mappedReturnValue[Vocabularies_1.SKL.refreshToken]);
279
+ await this.save(securityCredentialsSchema);
280
+ return { accessToken: (0, Util_1.getValueIfDefined)(securityCredentialsSchema[Vocabularies_1.SKL.accessToken]) };
281
+ }
282
+ getConfigurationFromSecurityCredentials(securityCredentialsSchema) {
283
+ const username = (0, Util_1.getValueIfDefined)(securityCredentialsSchema[Vocabularies_1.SKL.clientId]);
284
+ const password = (0, Util_1.getValueIfDefined)(securityCredentialsSchema[Vocabularies_1.SKL.clientSecret]);
285
+ const accessToken = (0, Util_1.getValueIfDefined)(securityCredentialsSchema[Vocabularies_1.SKL.accessToken]);
286
+ return { username, password, accessToken };
287
+ }
288
+ async assertVerbReturnValueMatchesReturnTypeSchema(returnValue, verb) {
289
+ const returnTypeSchemaObject = verb[Vocabularies_1.SKL.returnValue];
290
+ let report;
291
+ if (returnValue && Object.keys(returnValue).length > 0 && returnTypeSchemaObject) {
292
+ if (returnValue['@id']) {
293
+ returnTypeSchemaObject[Vocabularies_1.SHACL.targetNode] = { '@id': returnValue['@id'] };
294
+ }
295
+ else {
296
+ returnTypeSchemaObject[Vocabularies_1.SHACL.targetClass] = { '@id': returnValue['@type'] };
297
+ }
298
+ report = await this.convertToQuadsAndValidateAgainstShape(returnValue, returnTypeSchemaObject);
299
+ }
300
+ if (report && !report?.conforms) {
301
+ throw new Error(`Return value ${returnValue['@id']} does not conform to the schema`);
302
+ }
303
+ }
304
+ async convertToQuadsAndValidateAgainstShape(value, shape) {
305
+ const valueAsQuads = await (0, Util_1.convertJsonLdToQuads)([value]);
306
+ const shapeQuads = await (0, Util_1.convertJsonLdToQuads)(shape);
307
+ const validator = new rdf_validate_shacl_1.default(shapeQuads);
308
+ return validator.validate(valueAsQuads);
309
+ }
310
+ async performSecuritySchemeStageWithCredentials(operationInfo, operationArgs, account) {
311
+ const integrationId = account[Vocabularies_1.SKL.integration]['@id'];
312
+ const openApiDescription = await this.getOpenApiDescriptionForIntegration(integrationId);
313
+ const securityCredentialsSchema = await this.findSecurityCredentialsForAccountIfDefined(account['@id']);
314
+ let configuration;
315
+ if (securityCredentialsSchema) {
316
+ configuration = this.getConfigurationFromSecurityCredentials(securityCredentialsSchema);
317
+ operationArgs.client_id = (0, Util_1.getValueIfDefined)(securityCredentialsSchema[Vocabularies_1.SKL.clientId]);
318
+ }
319
+ else {
320
+ configuration = {};
321
+ }
322
+ const openApiExecutor = await this.createOpenApiOperationExecutorWithSpec(openApiDescription);
323
+ return await openApiExecutor.executeSecuritySchemeStage((0, Util_1.getValueIfDefined)(operationInfo[Vocabularies_1.SKL.schemeName]), (0, Util_1.getValueIfDefined)(operationInfo[Vocabularies_1.SKL.oauthFlow]), (0, Util_1.getValueIfDefined)(operationInfo[Vocabularies_1.SKL.stage]), configuration, operationArgs);
324
+ }
325
+ async getDataFromDataSource(dataSourceId) {
326
+ const dataSource = await this.findBy({ id: dataSourceId });
327
+ if (dataSource['@type'] === Vocabularies_1.SKL.JsonDataSource) {
328
+ const data = this.getDataFromJsonDataSource(dataSource);
329
+ return { data };
330
+ }
331
+ throw new Error(`DataSource type ${dataSource['@type']} is not supported.`);
332
+ }
333
+ getDataFromJsonDataSource(dataSource) {
334
+ if (dataSource[Vocabularies_1.SKL.source]) {
335
+ const sourceValue = (0, Util_1.getValueIfDefined)(dataSource[Vocabularies_1.SKL.source]);
336
+ return this.getJsonDataFromSource(sourceValue);
337
+ }
338
+ return (0, Util_1.getValueIfDefined)(dataSource[Vocabularies_1.SKL.data]);
339
+ }
340
+ getJsonDataFromSource(source) {
341
+ if (this.inputFiles && source in this.inputFiles) {
342
+ const file = this.inputFiles[source];
343
+ return JSON.parse(file);
344
+ }
345
+ // eslint-disable-next-line unicorn/expiring-todo-comments
346
+ // TODO add support for remote sources
347
+ throw new Error(`Failed to get data from source ${source}`);
348
+ }
349
+ }
350
+ exports.SKLEngine = SKLEngine;
351
+ //# sourceMappingURL=sklEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sklEngine.js","sourceRoot":"","sources":["../src/sklEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare type AggregateOperatorType = 'max';
2
+ export interface AggregateOperatorArgs<T> {
3
+ operator: AggregateOperatorType;
4
+ value: T;
5
+ }
6
+ export declare class AggregateOperator<T> {
7
+ readonly type = "aggregate";
8
+ readonly operator: AggregateOperatorType;
9
+ readonly value: T;
10
+ constructor(args: AggregateOperatorArgs<T>);
11
+ static isAggregateOperator(value: any): boolean;
12
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AggregateOperator = void 0;
4
+ class AggregateOperator {
5
+ constructor(args) {
6
+ this.type = 'aggregate';
7
+ this.operator = args.operator;
8
+ this.value = args.value;
9
+ }
10
+ static isAggregateOperator(value) {
11
+ return typeof value === 'object' &&
12
+ 'type' in value &&
13
+ value.type === 'aggregate';
14
+ }
15
+ }
16
+ exports.AggregateOperator = AggregateOperator;
17
+ //# sourceMappingURL=AggregateOperator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AggregateOperator.js","sourceRoot":"","sources":["../../src/storage/AggregateOperator.ts"],"names":[],"mappings":";;;AAOA,MAAa,iBAAiB;IAK5B,YAAmB,IAA8B;QAJjC,SAAI,GAAG,WAAW,CAAC;QAKjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,KAAU;QAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ;YAC9B,MAAM,IAAI,KAAK;YACf,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;IAC/B,CAAC;CACF;AAfD,8CAeC"}
@@ -0,0 +1,19 @@
1
+ export declare type QueryAdapterType = 'memory' | 'sparql';
2
+ export interface BaseQueryAdapterOptions {
3
+ /**
4
+ * Query Adapter type. This value is required.
5
+ */
6
+ readonly type: QueryAdapterType;
7
+ /**
8
+ * Manually defined functions which can be used in mappings.
9
+ */
10
+ readonly functions?: Record<string, (args: any | any[]) => any>;
11
+ /**
12
+ * An object containing files keyed on their title that can be used in mappings.
13
+ */
14
+ readonly inputFiles?: Record<string, string>;
15
+ /**
16
+ * Whether to set Dublic Core created and modified timestamps on saved entities. Defaults to false.
17
+ */
18
+ readonly setTimestamps?: boolean;
19
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=BaseQueryAdapterOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseQueryAdapterOptions.js","sourceRoot":"","sources":["../../src/storage/BaseQueryAdapterOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ export declare type FindOperatorType = 'in' | 'not' | 'equal' | 'gt' | 'gte' | 'lt' | 'lte' | 'inverse';
2
+ export interface FindOperatorArgs<T> {
3
+ operator: FindOperatorType;
4
+ value: T | FindOperator<T>;
5
+ }
6
+ export declare class FindOperator<T> {
7
+ readonly type = "operator";
8
+ readonly operator: FindOperatorType;
9
+ readonly value: T | FindOperator<T>;
10
+ constructor(args: FindOperatorArgs<T>);
11
+ static isFindOperator(value: any): boolean;
12
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FindOperator = void 0;
4
+ class FindOperator {
5
+ constructor(args) {
6
+ this.type = 'operator';
7
+ this.operator = args.operator;
8
+ this.value = args.value;
9
+ }
10
+ static isFindOperator(value) {
11
+ return typeof value === 'object' &&
12
+ 'type' in value &&
13
+ value.type === 'operator';
14
+ }
15
+ }
16
+ exports.FindOperator = FindOperator;
17
+ //# sourceMappingURL=FindOperator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindOperator.js","sourceRoot":"","sources":["../../src/storage/FindOperator.ts"],"names":[],"mappings":";;;AAOA,MAAa,YAAY;IAKvB,YAAmB,IAAyB;QAJ5B,SAAI,GAAG,UAAU,CAAC;QAKhC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,KAAU;QACrC,OAAO,OAAO,KAAK,KAAK,QAAQ;YAC9B,MAAM,IAAI,KAAK;YACf,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;IAC9B,CAAC;CACF;AAfD,oCAeC"}
@@ -0,0 +1,45 @@
1
+ import type { OrArray } from '../util/Types';
2
+ import type { JSONArray, JSONObject } from '../util/Util';
3
+ import type { FindOperator } from './FindOperator';
4
+ export declare type FindOptionsSelectByString = string[];
5
+ export declare type FindOptionsRelationsByString = string[];
6
+ export declare type FindOptionsSelect = FindOptionsSelectByString | {
7
+ [key: string]: boolean | FindOptionsSelect;
8
+ };
9
+ export interface FindOneOptions {
10
+ select?: FindOptionsSelect;
11
+ where?: FindOptionsWhere;
12
+ relations?: FindOptionsRelations;
13
+ order?: FindOptionsOrder;
14
+ }
15
+ export interface FindOptionsRelations {
16
+ [k: string]: boolean | FindOptionsRelations;
17
+ }
18
+ export declare type FindOptionsOrderValue = 'ASC' | 'DESC' | 'asc' | 'desc' | 1 | -1;
19
+ export declare type FindOptionsOrder = Record<string, FindOptionsOrderValue>;
20
+ export declare type FieldPrimitiveValue = boolean | number | string | Date;
21
+ export declare type JsonValueObject = {
22
+ '@value': FieldPrimitiveValue | JSONObject | JSONArray;
23
+ '@type': '@json';
24
+ };
25
+ export declare type LanguageValueObject = {
26
+ '@value': string;
27
+ '@language': string;
28
+ '@direction': string;
29
+ };
30
+ export declare type NonJsonValueObject = {
31
+ '@value': FieldPrimitiveValue;
32
+ '@type': string;
33
+ };
34
+ export declare type ValueObject = JsonValueObject | LanguageValueObject | NonJsonValueObject;
35
+ export declare type FindOptionsWhereField = OrArray<FieldPrimitiveValue> | ValueObject | FindOptionsWhere | FindOperator<any>;
36
+ export declare type IdOrTypeFindOptionsWhereField = string | FindOperator<string> | FindOperator<string[]>;
37
+ export interface FindOptionsWhere {
38
+ type?: IdOrTypeFindOptionsWhereField;
39
+ id?: IdOrTypeFindOptionsWhereField;
40
+ [k: string]: FindOptionsWhereField | undefined;
41
+ }
42
+ export interface FindAllOptions extends FindOneOptions {
43
+ offset?: number;
44
+ limit?: number;
45
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=FindOptionsTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FindOptionsTypes.js","sourceRoot":"","sources":["../../src/storage/FindOptionsTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import type { Entity } from '../util/Types';
2
+ import type { FindOneOptions, FindAllOptions, FindOptionsWhere } from './FindOptionsTypes';
3
+ import type { QueryAdapter } from './QueryAdapter';
4
+ /**
5
+ * A {@link QueryAdapter} that stores data in memory.
6
+ */
7
+ export declare class MemoryQueryAdapter implements QueryAdapter {
8
+ private readonly schemas;
9
+ constructor(schemas: Entity[]);
10
+ find(options?: FindOneOptions): Promise<Entity | null>;
11
+ findBy(where: FindOptionsWhere): Promise<Entity | null>;
12
+ findAll(options?: FindAllOptions): Promise<Entity[]>;
13
+ findAllBy(where: FindOptionsWhere): Promise<Entity[]>;
14
+ private entityMatchesQuery;
15
+ private entityMatchesField;
16
+ private fieldValueMatchesField;
17
+ private findOptionWhereMatchesNodeObject;
18
+ private handleOperator;
19
+ private isInstanceOf;
20
+ private getSubClassesOf;
21
+ exists(where: FindOptionsWhere): Promise<boolean>;
22
+ save(entity: Entity): Promise<Entity>;
23
+ save(entities: Entity[]): Promise<Entity[]>;
24
+ private saveEntity;
25
+ destroy(entity: Entity): Promise<Entity>;
26
+ destroy(entities: Entity[]): Promise<Entity[]>;
27
+ private destroyEntity;
28
+ }