@comake/skl-js-engine 1.3.9 → 1.3.10

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 (296) hide show
  1. package/dist/JsExecutor/PermissionBuilder.d.ts +1 -0
  2. package/dist/JsExecutor/PermissionBuilder.d.ts.map +1 -0
  3. package/dist/JsExecutor/PermissionBuilder.js.map +1 -1
  4. package/dist/JsExecutor/constants.d.ts +1 -0
  5. package/dist/JsExecutor/constants.d.ts.map +1 -0
  6. package/dist/JsExecutor/constants.js.map +1 -1
  7. package/dist/JsExecutor/denoUtils.d.ts +1 -0
  8. package/dist/JsExecutor/denoUtils.d.ts.map +1 -0
  9. package/dist/JsExecutor/denoUtils.js.map +1 -1
  10. package/dist/JsExecutor/errors.d.ts +1 -0
  11. package/dist/JsExecutor/errors.d.ts.map +1 -0
  12. package/dist/JsExecutor/errors.js.map +1 -1
  13. package/dist/JsExecutor/examples/basic/index.d.ts +1 -0
  14. package/dist/JsExecutor/examples/basic/index.d.ts.map +1 -0
  15. package/dist/JsExecutor/examples/basic/index.js.map +1 -1
  16. package/dist/JsExecutor/examples/basic/process.d.ts +1 -0
  17. package/dist/JsExecutor/examples/basic/process.d.ts.map +1 -0
  18. package/dist/JsExecutor/examples/basic/process.js.map +1 -1
  19. package/dist/JsExecutor/examples/jsExecutor/index.d.ts +1 -0
  20. package/dist/JsExecutor/examples/jsExecutor/index.d.ts.map +1 -0
  21. package/dist/JsExecutor/examples/jsExecutor/index.js.map +1 -1
  22. package/dist/JsExecutor/examples/jsExecutor/process.d.ts +1 -0
  23. package/dist/JsExecutor/examples/jsExecutor/process.d.ts.map +1 -0
  24. package/dist/JsExecutor/examples/jsExecutor/process.js.map +1 -1
  25. package/dist/JsExecutor/index.d.ts +1 -0
  26. package/dist/JsExecutor/index.d.ts.map +1 -0
  27. package/dist/JsExecutor/index.js.map +1 -1
  28. package/dist/JsExecutor/jsExecutor.d.ts +1 -0
  29. package/dist/JsExecutor/jsExecutor.d.ts.map +1 -0
  30. package/dist/JsExecutor/jsExecutor.js.map +1 -1
  31. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts +1 -0
  32. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts.map +1 -0
  33. package/dist/JsExecutor/jsonRpc/JsonRpcClient.js.map +1 -1
  34. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts +1 -0
  35. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts.map +1 -0
  36. package/dist/JsExecutor/jsonRpc/JsonRpcServer.js.map +1 -1
  37. package/dist/JsExecutor/jsonRpc/index.d.ts +1 -0
  38. package/dist/JsExecutor/jsonRpc/index.d.ts.map +1 -0
  39. package/dist/JsExecutor/jsonRpc/index.js.map +1 -1
  40. package/dist/JsExecutor/jsonRpc/types.d.ts +1 -0
  41. package/dist/JsExecutor/jsonRpc/types.d.ts.map +1 -0
  42. package/dist/JsExecutor/jsonRpc/types.js.map +1 -1
  43. package/dist/JsExecutor/transport/Transport.d.ts +1 -0
  44. package/dist/JsExecutor/transport/Transport.d.ts.map +1 -0
  45. package/dist/JsExecutor/transport/Transport.js.map +1 -1
  46. package/dist/JsExecutor/transport/base/BaseTransport.d.ts +1 -0
  47. package/dist/JsExecutor/transport/base/BaseTransport.d.ts.map +1 -0
  48. package/dist/JsExecutor/transport/base/BaseTransport.js.map +1 -1
  49. package/dist/JsExecutor/transport/index.d.ts +1 -0
  50. package/dist/JsExecutor/transport/index.d.ts.map +1 -0
  51. package/dist/JsExecutor/transport/index.js.map +1 -1
  52. package/dist/JsExecutor/transport/process/ProcessManager.d.ts +1 -0
  53. package/dist/JsExecutor/transport/process/ProcessManager.d.ts.map +1 -0
  54. package/dist/JsExecutor/transport/process/ProcessManager.js.map +1 -1
  55. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts +1 -0
  56. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts.map +1 -0
  57. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js.map +1 -1
  58. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts +1 -0
  59. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts.map +1 -0
  60. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js.map +1 -1
  61. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts +1 -0
  62. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts.map +1 -0
  63. package/dist/JsExecutor/transport/utils/MessageUtils.js.map +1 -1
  64. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts +1 -0
  65. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts.map +1 -0
  66. package/dist/JsExecutor/transport/utils/PollingUtils.js.map +1 -1
  67. package/dist/JsExecutor/types.d.ts +1 -0
  68. package/dist/JsExecutor/types.d.ts.map +1 -0
  69. package/dist/JsExecutor/types.js.map +1 -1
  70. package/dist/SklEngine.d.ts +1 -0
  71. package/dist/SklEngine.d.ts.map +1 -0
  72. package/dist/SklEngine.js.map +1 -1
  73. package/dist/SklEngineOptions.d.ts +1 -0
  74. package/dist/SklEngineOptions.d.ts.map +1 -0
  75. package/dist/SklEngineOptions.js.map +1 -1
  76. package/dist/constants.d.ts +1 -0
  77. package/dist/constants.d.ts.map +1 -0
  78. package/dist/constants.js.map +1 -1
  79. package/dist/customCapabilities.d.ts +1 -0
  80. package/dist/customCapabilities.d.ts.map +1 -0
  81. package/dist/customCapabilities.js.map +1 -1
  82. package/dist/examples/customCapabilitiesExample.d.ts +1 -0
  83. package/dist/examples/customCapabilitiesExample.d.ts.map +1 -0
  84. package/dist/examples/customCapabilitiesExample.js.map +1 -1
  85. package/dist/hooks/globalHooks.d.ts +1 -0
  86. package/dist/hooks/globalHooks.d.ts.map +1 -0
  87. package/dist/hooks/globalHooks.js.map +1 -1
  88. package/dist/hooks/types.d.ts +1 -0
  89. package/dist/hooks/types.d.ts.map +1 -0
  90. package/dist/hooks/types.js.map +1 -1
  91. package/dist/index.d.ts +1 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js.map +1 -1
  94. package/dist/logger.d.ts +1 -0
  95. package/dist/logger.d.ts.map +1 -0
  96. package/dist/logger.js.map +1 -1
  97. package/dist/mapping/Mapper.d.ts +1 -0
  98. package/dist/mapping/Mapper.d.ts.map +1 -0
  99. package/dist/mapping/Mapper.js.map +1 -1
  100. package/dist/storage/FindOperator.d.ts +1 -0
  101. package/dist/storage/FindOperator.d.ts.map +1 -0
  102. package/dist/storage/FindOperator.js.map +1 -1
  103. package/dist/storage/FindOptionsTypes.d.ts +1 -0
  104. package/dist/storage/FindOptionsTypes.d.ts.map +1 -0
  105. package/dist/storage/FindOptionsTypes.js.map +1 -1
  106. package/dist/storage/GroupOptionTypes.d.ts +1 -0
  107. package/dist/storage/GroupOptionTypes.d.ts.map +1 -0
  108. package/dist/storage/GroupOptionTypes.js.map +1 -1
  109. package/dist/storage/operator/And.d.ts +1 -0
  110. package/dist/storage/operator/And.d.ts.map +1 -0
  111. package/dist/storage/operator/And.js.map +1 -1
  112. package/dist/storage/operator/Contains.d.ts +1 -0
  113. package/dist/storage/operator/Contains.d.ts.map +1 -0
  114. package/dist/storage/operator/Contains.js.map +1 -1
  115. package/dist/storage/operator/Equal.d.ts +1 -0
  116. package/dist/storage/operator/Equal.d.ts.map +1 -0
  117. package/dist/storage/operator/Equal.js.map +1 -1
  118. package/dist/storage/operator/Exists.d.ts +1 -0
  119. package/dist/storage/operator/Exists.d.ts.map +1 -0
  120. package/dist/storage/operator/Exists.js.map +1 -1
  121. package/dist/storage/operator/GreaterThan.d.ts +1 -0
  122. package/dist/storage/operator/GreaterThan.d.ts.map +1 -0
  123. package/dist/storage/operator/GreaterThan.js.map +1 -1
  124. package/dist/storage/operator/GreaterThanOrEqual.d.ts +1 -0
  125. package/dist/storage/operator/GreaterThanOrEqual.d.ts.map +1 -0
  126. package/dist/storage/operator/GreaterThanOrEqual.js.map +1 -1
  127. package/dist/storage/operator/In.d.ts +1 -0
  128. package/dist/storage/operator/In.d.ts.map +1 -0
  129. package/dist/storage/operator/In.js.map +1 -1
  130. package/dist/storage/operator/Inverse.d.ts +1 -0
  131. package/dist/storage/operator/Inverse.d.ts.map +1 -0
  132. package/dist/storage/operator/Inverse.js.map +1 -1
  133. package/dist/storage/operator/InversePath.d.ts +1 -0
  134. package/dist/storage/operator/InversePath.d.ts.map +1 -0
  135. package/dist/storage/operator/InversePath.js.map +1 -1
  136. package/dist/storage/operator/InverseRelation.d.ts +1 -0
  137. package/dist/storage/operator/InverseRelation.d.ts.map +1 -0
  138. package/dist/storage/operator/InverseRelation.js.map +1 -1
  139. package/dist/storage/operator/InverseRelationOrder.d.ts +1 -0
  140. package/dist/storage/operator/InverseRelationOrder.d.ts.map +1 -0
  141. package/dist/storage/operator/InverseRelationOrder.js.map +1 -1
  142. package/dist/storage/operator/LessThan.d.ts +1 -0
  143. package/dist/storage/operator/LessThan.d.ts.map +1 -0
  144. package/dist/storage/operator/LessThan.js.map +1 -1
  145. package/dist/storage/operator/LessThanOrEqual.d.ts +1 -0
  146. package/dist/storage/operator/LessThanOrEqual.d.ts.map +1 -0
  147. package/dist/storage/operator/LessThanOrEqual.js.map +1 -1
  148. package/dist/storage/operator/Not.d.ts +1 -0
  149. package/dist/storage/operator/Not.d.ts.map +1 -0
  150. package/dist/storage/operator/Not.js.map +1 -1
  151. package/dist/storage/operator/OneOrMorePath.d.ts +1 -0
  152. package/dist/storage/operator/OneOrMorePath.d.ts.map +1 -0
  153. package/dist/storage/operator/OneOrMorePath.js.map +1 -1
  154. package/dist/storage/operator/Sequence.d.ts +1 -0
  155. package/dist/storage/operator/Sequence.d.ts.map +1 -0
  156. package/dist/storage/operator/Sequence.js.map +1 -1
  157. package/dist/storage/operator/SequencePath.d.ts +1 -0
  158. package/dist/storage/operator/SequencePath.d.ts.map +1 -0
  159. package/dist/storage/operator/SequencePath.js.map +1 -1
  160. package/dist/storage/operator/ZeroOrMorePath.d.ts +1 -0
  161. package/dist/storage/operator/ZeroOrMorePath.d.ts.map +1 -0
  162. package/dist/storage/operator/ZeroOrMorePath.js.map +1 -1
  163. package/dist/storage/query-adapter/QueryAdapter.d.ts +1 -0
  164. package/dist/storage/query-adapter/QueryAdapter.d.ts.map +1 -0
  165. package/dist/storage/query-adapter/QueryAdapter.js.map +1 -1
  166. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts +1 -0
  167. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts.map +1 -0
  168. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js +16 -3
  169. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js.map +1 -1
  170. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts +1 -0
  171. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts.map +1 -0
  172. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js.map +1 -1
  173. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts +1 -0
  174. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts.map +1 -0
  175. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js +7 -22
  176. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js.map +1 -1
  177. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts +1 -0
  178. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts.map +1 -0
  179. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js.map +1 -1
  180. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts +1 -0
  181. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts.map +1 -0
  182. package/dist/storage/query-adapter/sparql/VariableGenerator.js.map +1 -1
  183. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts +1 -0
  184. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts.map +1 -0
  185. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js.map +1 -1
  186. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts +1 -0
  187. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts.map +1 -0
  188. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js.map +1 -1
  189. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts +1 -0
  190. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts.map +1 -0
  191. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js.map +1 -1
  192. package/dist/util/PerformanceLogger.d.ts +1 -0
  193. package/dist/util/PerformanceLogger.d.ts.map +1 -0
  194. package/dist/util/PerformanceLogger.js.map +1 -1
  195. package/dist/util/SparqlUtil.d.ts +1 -0
  196. package/dist/util/SparqlUtil.d.ts.map +1 -0
  197. package/dist/util/SparqlUtil.js.map +1 -1
  198. package/dist/util/TripleUtil.d.ts +1 -0
  199. package/dist/util/TripleUtil.d.ts.map +1 -0
  200. package/dist/util/TripleUtil.js.map +1 -1
  201. package/dist/util/Types.d.ts +1 -0
  202. package/dist/util/Types.d.ts.map +1 -0
  203. package/dist/util/Types.js.map +1 -1
  204. package/dist/util/Util.d.ts +1 -0
  205. package/dist/util/Util.d.ts.map +1 -0
  206. package/dist/util/Util.js.map +1 -1
  207. package/dist/util/Vocabularies/Shared.d.ts +1 -0
  208. package/dist/util/Vocabularies/Shared.d.ts.map +1 -0
  209. package/dist/util/Vocabularies/Shared.js.map +1 -1
  210. package/dist/util/Vocabularies/helper.d.ts +1 -0
  211. package/dist/util/Vocabularies/helper.d.ts.map +1 -0
  212. package/dist/util/Vocabularies/helper.js.map +1 -1
  213. package/dist/util/Vocabularies/index.d.ts +1 -0
  214. package/dist/util/Vocabularies/index.d.ts.map +1 -0
  215. package/dist/util/Vocabularies/index.js.map +1 -1
  216. package/dist/util/safeJsonStringify.d.ts +1 -0
  217. package/dist/util/safeJsonStringify.d.ts.map +1 -0
  218. package/dist/util/safeJsonStringify.js.map +1 -1
  219. package/package.json +6 -3
  220. package/src/JsExecutor/PermissionBuilder.ts +60 -0
  221. package/src/JsExecutor/constants.ts +27 -0
  222. package/src/JsExecutor/denoUtils.ts +20 -0
  223. package/src/JsExecutor/errors.ts +63 -0
  224. package/src/JsExecutor/examples/basic/index.ts +54 -0
  225. package/src/JsExecutor/examples/basic/process.ts +39 -0
  226. package/src/JsExecutor/examples/jsExecutor/README.md +3 -0
  227. package/src/JsExecutor/examples/jsExecutor/index.ts +50 -0
  228. package/src/JsExecutor/examples/jsExecutor/process.ts +79 -0
  229. package/src/JsExecutor/index.ts +19 -0
  230. package/src/JsExecutor/jsExecutor.ts +194 -0
  231. package/src/JsExecutor/jsonRpc/JsonRpcClient.ts +422 -0
  232. package/src/JsExecutor/jsonRpc/JsonRpcServer.ts +454 -0
  233. package/src/JsExecutor/jsonRpc/index.ts +4 -0
  234. package/src/JsExecutor/jsonRpc/types.ts +231 -0
  235. package/src/JsExecutor/transport/README.md +67 -0
  236. package/src/JsExecutor/transport/Transport.ts +106 -0
  237. package/src/JsExecutor/transport/base/BaseTransport.ts +83 -0
  238. package/src/JsExecutor/transport/index.ts +56 -0
  239. package/src/JsExecutor/transport/process/ProcessManager.ts +281 -0
  240. package/src/JsExecutor/transport/stdio/ChildStdioTransport.ts +251 -0
  241. package/src/JsExecutor/transport/stdio/ParentStdioTransport.ts +308 -0
  242. package/src/JsExecutor/transport/utils/MessageUtils.ts +139 -0
  243. package/src/JsExecutor/transport/utils/PollingUtils.ts +114 -0
  244. package/src/JsExecutor/types.ts +130 -0
  245. package/src/SklEngine.ts +1828 -0
  246. package/src/SklEngineOptions.ts +28 -0
  247. package/src/constants.ts +120 -0
  248. package/src/customCapabilities.ts +65 -0
  249. package/src/examples/customCapabilitiesExample.ts +77 -0
  250. package/src/hooks/globalHooks.ts +238 -0
  251. package/src/hooks/types.ts +7 -0
  252. package/src/index.ts +45 -0
  253. package/src/logger.ts +144 -0
  254. package/src/mapping/Mapper.ts +52 -0
  255. package/src/storage/FindOperator.ts +55 -0
  256. package/src/storage/FindOptionsTypes.ts +107 -0
  257. package/src/storage/GroupOptionTypes.ts +32 -0
  258. package/src/storage/operator/And.ts +10 -0
  259. package/src/storage/operator/Contains.ts +9 -0
  260. package/src/storage/operator/Equal.ts +13 -0
  261. package/src/storage/operator/Exists.ts +6 -0
  262. package/src/storage/operator/GreaterThan.ts +12 -0
  263. package/src/storage/operator/GreaterThanOrEqual.ts +12 -0
  264. package/src/storage/operator/In.ts +12 -0
  265. package/src/storage/operator/Inverse.ts +11 -0
  266. package/src/storage/operator/InversePath.ts +17 -0
  267. package/src/storage/operator/InverseRelation.ts +18 -0
  268. package/src/storage/operator/InverseRelationOrder.ts +17 -0
  269. package/src/storage/operator/LessThan.ts +12 -0
  270. package/src/storage/operator/LessThanOrEqual.ts +12 -0
  271. package/src/storage/operator/Not.ts +11 -0
  272. package/src/storage/operator/OneOrMorePath.ts +17 -0
  273. package/src/storage/operator/Sequence.ts +11 -0
  274. package/src/storage/operator/SequencePath.ts +17 -0
  275. package/src/storage/operator/ZeroOrMorePath.ts +17 -0
  276. package/src/storage/query-adapter/QueryAdapter.ts +110 -0
  277. package/src/storage/query-adapter/sparql/SparqlQueryAdapter.ts +400 -0
  278. package/src/storage/query-adapter/sparql/SparqlQueryAdapterOptions.ts +38 -0
  279. package/src/storage/query-adapter/sparql/SparqlQueryBuilder.ts +1524 -0
  280. package/src/storage/query-adapter/sparql/SparqlUpdateBuilder.ts +347 -0
  281. package/src/storage/query-adapter/sparql/VariableGenerator.ts +8 -0
  282. package/src/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.ts +135 -0
  283. package/src/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.ts +146 -0
  284. package/src/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.ts +51 -0
  285. package/src/util/PerformanceLogger.ts +286 -0
  286. package/src/util/SparqlUtil.ts +516 -0
  287. package/src/util/TripleUtil.ts +412 -0
  288. package/src/util/Types.ts +399 -0
  289. package/src/util/Util.ts +116 -0
  290. package/src/util/Vocabularies/Shared.ts +99 -0
  291. package/src/util/Vocabularies/helper.ts +14 -0
  292. package/src/util/Vocabularies/index.ts +108 -0
  293. package/src/util/safeJsonStringify.ts +19 -0
  294. package/dist/JsExecutor/transport/StdioTransport.d.ts +0 -0
  295. package/dist/JsExecutor/transport/StdioTransport.js +0 -641
  296. package/dist/JsExecutor/transport/StdioTransport.js.map +0 -1
package/src/logger.ts ADDED
@@ -0,0 +1,144 @@
1
+ import { inspect } from 'util';
2
+
3
+ export interface LoggerOptions {
4
+ maxStringLength?: number;
5
+ maxArrayItems?: number;
6
+ }
7
+
8
+ export class Logger {
9
+ private static instance: Logger;
10
+ private readonly isDebug: boolean;
11
+ private metadata: Record<string, any>;
12
+
13
+ // Maximum characters to keep for long strings
14
+ private readonly maxStringLength: number;
15
+ // Maximum number of items to show for long arrays
16
+ private readonly maxArrayItems: number;
17
+
18
+ private constructor(isDebug: boolean, metadata: Record<string, any>, options?: LoggerOptions) {
19
+ this.isDebug = true;
20
+ this.metadata = metadata;
21
+ this.maxStringLength = options?.maxStringLength ?? 2_000;
22
+ this.maxArrayItems = options?.maxArrayItems ?? 10;
23
+ }
24
+
25
+ /**
26
+ * Returns a singleton instance of the logger. The logger honours the DEBUG env variable unless
27
+ * explicitly overridden via the `isDebug` parameter.
28
+ */
29
+ public static getInstance(isDebug?: boolean, metadata?: Record<string, any>, options?: LoggerOptions): Logger {
30
+ if (!Logger.instance) {
31
+ // eslint-disable-next-line no-process-env
32
+ const debugEnabled = isDebug ?? process.env.DEBUG === 'true';
33
+ Logger.instance = new Logger(debugEnabled, metadata ?? {}, options);
34
+ }
35
+ return Logger.instance;
36
+ }
37
+
38
+ /**
39
+ * Merges the given metadata with the existing metadata attached to the logger.
40
+ */
41
+ public setMetadata(metadata: Record<string, any>): void {
42
+ this.metadata = { ...this.metadata, ...metadata };
43
+ }
44
+
45
+ public getMetadataString(): string | undefined {
46
+ if (!this.metadata || Object.keys(this.metadata).length === 0) {
47
+ return undefined;
48
+ }
49
+ return JSON.stringify(this.metadata);
50
+ }
51
+
52
+ // ---------------------------------------------------------------------------
53
+ // Public logging APIs
54
+ // ---------------------------------------------------------------------------
55
+
56
+ public log(...args: any[]): void {
57
+ if (this.isDebug) {
58
+ const metadataString = this.getMetadataString();
59
+ const logArgs = metadataString ? [ ...this.formatArgs(args), metadataString ] : this.formatArgs(args);
60
+ // eslint-disable-next-line no-console
61
+ console.log(...logArgs);
62
+ }
63
+ }
64
+
65
+ public error(...args: any[]): void {
66
+ if (this.isDebug) {
67
+ const metadataString = this.getMetadataString();
68
+ const logArgs = metadataString ? [ ...this.formatArgs(args), metadataString ] : this.formatArgs(args);
69
+ // eslint-disable-next-line no-console
70
+ console.error(...logArgs);
71
+ }
72
+ }
73
+
74
+ public debug(...args: any[]): void {
75
+ if (this.isDebug) {
76
+ const metadataString = this.getMetadataString();
77
+ const logArgs = metadataString ? [ ...this.formatArgs(args), metadataString ] : this.formatArgs(args);
78
+ // eslint-disable-next-line no-console
79
+ console.debug(...logArgs);
80
+ }
81
+ }
82
+
83
+ // ---------------------------------------------------------------------------
84
+ // Private helpers
85
+ // ---------------------------------------------------------------------------
86
+
87
+ /**
88
+ * Applies safe formatting to every argument before it is passed to the console. Large strings are
89
+ * truncated, large arrays/objects are abbreviated and circular references are handled gracefully
90
+ * by `util.inspect`.
91
+ */
92
+ private formatArgs(args: any[]): any[] {
93
+ return args.map((arg: any): any => this.formatValue(arg));
94
+ }
95
+
96
+ private formatValue(value: any): any {
97
+ try {
98
+ if (typeof value === 'string') {
99
+ return this.truncateString(value);
100
+ }
101
+
102
+ if (Array.isArray(value)) {
103
+ return JSON.stringify(this.truncateArray(value));
104
+ }
105
+
106
+ if (typeof value === 'object' && value !== null) {
107
+ // For objects we rely on util.inspect which gives us fine-grained control over depth,
108
+ // array length and string length.
109
+ return inspect(value, {
110
+ depth: 6,
111
+ maxArrayLength: this.maxArrayItems,
112
+ maxStringLength: this.maxStringLength,
113
+ breakLength: 120,
114
+ compact: false,
115
+ colors: true
116
+ });
117
+ }
118
+
119
+ // Primitives, functions, etc. are returned as-is.
120
+ return value;
121
+ } catch (err: unknown) {
122
+ // In the unlikely event that formatting fails, fall back to a best-effort stringify.
123
+ // eslint-disable-next-line no-console
124
+ console.warn('Logger: failed to format value', err);
125
+ return String(value);
126
+ }
127
+ }
128
+
129
+ private truncateString(str: string): string {
130
+ if (str.length <= this.maxStringLength) {
131
+ return str;
132
+ }
133
+ return `${str.slice(0, this.maxStringLength)}...(truncated ${str.length - this.maxStringLength} chars)`;
134
+ }
135
+
136
+ private truncateArray(arr: any[]): any[] {
137
+ if (arr.length <= this.maxArrayItems) {
138
+ return arr.map((item: any): any => this.formatValue(item));
139
+ }
140
+
141
+ const displayedItems = arr.slice(0, this.maxArrayItems).map((item: any): any => this.formatValue(item));
142
+ return [ ...displayedItems, `...(truncated ${arr.length - this.maxArrayItems} items)` ];
143
+ }
144
+ }
@@ -0,0 +1,52 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import * as RmlParser from '@comake/rmlmapper-js';
3
+ import type { NodeObject } from 'jsonld';
4
+ import jsonld from 'jsonld';
5
+ import type { JSONValue, OrArray } from '../util/Types';
6
+
7
+ export interface MapperArgs {
8
+ functions?: Record<string, (args: any | any[]) => any>;
9
+ }
10
+
11
+ export class Mapper {
12
+ private readonly functions?: Record<string, (args: any | any[]) => any>;
13
+
14
+ public constructor(args?: MapperArgs) {
15
+ this.functions = args?.functions;
16
+ }
17
+
18
+ public async apply(
19
+ data: JSONValue,
20
+ mapping: OrArray<NodeObject>,
21
+ frame: Record<string, any>
22
+ ): Promise<NodeObject> {
23
+ const result = await this.doMapping(data, mapping);
24
+ const frameResult = await this.frame(result, frame);
25
+ return frameResult;
26
+ }
27
+
28
+ private async doMapping(data: JSONValue, mapping: OrArray<NodeObject>): Promise<NodeObject[]> {
29
+ const sources = { 'input.json': JSON.stringify(data) };
30
+ const options = { functions: this.functions };
31
+ const mappingNodeObject = Array.isArray(mapping)
32
+ ? { '@graph': mapping }
33
+ : mapping;
34
+ return await RmlParser.parseJsonLd(mappingNodeObject, sources, options) as NodeObject[];
35
+ }
36
+
37
+ private async frame(
38
+ jsonldDoc: any[],
39
+ overrideFrame: Record<string, any>
40
+ ): Promise<NodeObject> {
41
+ let frame: Record<string, any> = {
42
+ '@context': {},
43
+ '@embed': '@always'
44
+ };
45
+ frame = {
46
+ ...frame,
47
+ ...overrideFrame,
48
+ '@context': { ...frame['@context'], ...overrideFrame?.['@context'] }
49
+ };
50
+ return await jsonld.frame(jsonldDoc, frame);
51
+ }
52
+ }
@@ -0,0 +1,55 @@
1
+ import type { Variable } from 'rdf-data-factory';
2
+
3
+ export type FindOperatorType =
4
+ | 'in'
5
+ | 'not'
6
+ | 'and'
7
+ | 'equal'
8
+ | 'exists'
9
+ | 'gt'
10
+ | 'gte'
11
+ | 'lt'
12
+ | 'lte'
13
+ | 'inverse'
14
+ | 'inverseRelation'
15
+ | 'inverseRelationOrder'
16
+ | 'sequencePath'
17
+ | 'zeroOrMorePath'
18
+ | 'inversePath'
19
+ | 'oneOrMorePath'
20
+ | 'contains'
21
+ | 'sequence';
22
+
23
+ export interface FindOperatorArgs<T, TType> {
24
+ operator: TType;
25
+ value?: T | FindOperator<T, any>;
26
+ subject?: Variable;
27
+ isOptional?: boolean;
28
+ }
29
+
30
+ export class FindOperator<T, TType extends FindOperatorType> {
31
+ public readonly type = 'operator';
32
+ public readonly operator: TType;
33
+ public readonly subject?: Variable;
34
+ public readonly value?: T | FindOperator<T, any>;
35
+ public readonly isOptional?: boolean;
36
+ public constructor(args: FindOperatorArgs<T, TType>) {
37
+ this.operator = args.operator;
38
+ this.value = args.value;
39
+ this.subject = args.subject;
40
+ this.isOptional = args.isOptional;
41
+ }
42
+
43
+ public static isFindOperator(value: any): boolean {
44
+ return typeof value === 'object' && 'type' in value && value.type === 'operator';
45
+ }
46
+
47
+ public static isPathOperator(operator: FindOperator<any, any>): boolean {
48
+ return (
49
+ operator.operator === 'inversePath' ||
50
+ operator.operator === 'zeroOrMorePath' ||
51
+ operator.operator === 'sequencePath' ||
52
+ operator.operator === 'zeroOrMorePath'
53
+ );
54
+ }
55
+ }
@@ -0,0 +1,107 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import type { Expression, Variable } from 'sparqljs';
3
+ import type { OrArray, JSONArray, JSONObject } from '../util/Types';
4
+ import type { FindOperator } from './FindOperator';
5
+ import type { InverseRelationOperatorValue } from './operator/InverseRelation';
6
+ import type { InverseRelationOrderValue } from './operator/InverseRelationOrder';
7
+
8
+ export type FindOptionsSelect = string[] | {[key: string]: boolean | FindOptionsSelect };
9
+
10
+ export interface FindOneOptions {
11
+ select?: FindOptionsSelect;
12
+ where?: FindOptionsWhere;
13
+ relations?: FindOptionsRelations;
14
+ order?: FindOptionsOrder;
15
+ skipFraming?: boolean;
16
+ group?: Variable;
17
+ entitySelectVariable?: Variable;
18
+ }
19
+
20
+ export type FindOptionsRelationsValue =
21
+ | boolean
22
+ | FindOptionsRelations
23
+ | FindOperator<InverseRelationOperatorValue, 'inverseRelation'>;
24
+
25
+ // eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style
26
+ export type FindOptionsRelations = {
27
+ [k: string]: FindOptionsRelationsValue;
28
+ };
29
+
30
+ export type FindOptionsOrderValue = 'ASC' | 'DESC' | 'asc' | 'desc' | 1 | -1;
31
+
32
+ export type FindOptionsOrder = Record<
33
+ string,
34
+ FindOptionsOrderValue | FindOperator<InverseRelationOrderValue, 'inverseRelationOrder'>
35
+ >;
36
+
37
+ export type FieldPrimitiveValue = boolean | number | string | Date;
38
+
39
+ export type JsonValueObject = {
40
+ '@value': FieldPrimitiveValue | JSONObject | JSONArray;
41
+ '@type': '@json';
42
+ };
43
+
44
+ export type LanguageValueObject = {
45
+ '@value': string;
46
+ '@language': string;
47
+ '@direction': string;
48
+ };
49
+
50
+ export type NonJsonValueObject = {
51
+ '@value': FieldPrimitiveValue;
52
+ '@type': string;
53
+ };
54
+
55
+ export type ValueWhereFieldObject = JsonValueObject | LanguageValueObject | NonJsonValueObject;
56
+
57
+ export type FindOptionsWhereField =
58
+ | OrArray<FieldPrimitiveValue>
59
+ | ValueWhereFieldObject
60
+ | FindOptionsWhere
61
+ | OrArray<FindOperator<any, any>>
62
+ | BindPattern[];
63
+
64
+ export type IdFindOptionsWhereField = string | FindOperator<any, 'in' | 'not' | 'equal' | 'inversePath' | 'contains'>;
65
+
66
+ export type TypeFindOptionsWhereField =
67
+ | string
68
+ | FindOperator<string | string[] | FindOptionsWhere, 'in' | 'not' | 'equal' | 'inverse' | 'contains'>;
69
+
70
+ export interface BindPattern {
71
+ expression: Expression;
72
+ variable: Variable;
73
+ }
74
+
75
+ export interface FindOptionsWhere {
76
+ type?: TypeFindOptionsWhereField;
77
+ id?: IdFindOptionsWhereField;
78
+ binds?: BindPattern[];
79
+ [k: string]: FindOptionsWhereField | BindPattern[] | undefined;
80
+ }
81
+
82
+ // Add these new types
83
+ export interface SubQuery {
84
+ select: Variable[];
85
+ where: FindOptionsWhere;
86
+ groupBy?: string[];
87
+ having?: FindOptionsWhere;
88
+ }
89
+
90
+ export interface FindAllOptions extends FindOneOptions {
91
+ offset?: number;
92
+ limit?: number;
93
+ skipHook?: boolean;
94
+ subQueries?: SubQuery[];
95
+ }
96
+
97
+ export interface FindExistsOptions {
98
+ where?: FindOptionsWhere;
99
+ relations?: FindOptionsRelations;
100
+ }
101
+
102
+ export interface FindCountOptions {
103
+ where?: FindOptionsWhere;
104
+ relations?: FindOptionsRelations;
105
+ order?: FindOptionsOrder;
106
+ offset?: number;
107
+ }
@@ -0,0 +1,32 @@
1
+ import type { FindOptionsWhere } from './FindOptionsTypes';
2
+
3
+ // Add these types at the top of the file
4
+ export interface GroupByOptions {
5
+ where?: FindOptionsWhere;
6
+ groupBy?: string[];
7
+ dateRange?: {
8
+ start: string;
9
+ end: string;
10
+ };
11
+ dateGrouping?: 'month' | 'day';
12
+ limit?: number;
13
+ offset?: number;
14
+ }
15
+
16
+ export interface GroupResult {
17
+ group: Record<string, string | number>;
18
+ count: number;
19
+ entityIds: string[];
20
+ }
21
+
22
+ export interface GroupByResponse {
23
+ results: GroupResult[];
24
+ meta: {
25
+ totalCount: number;
26
+ dateRange?: {
27
+ start: string;
28
+ end: string;
29
+ };
30
+ groupings: string[];
31
+ };
32
+ }
@@ -0,0 +1,10 @@
1
+ import type { ValueObject } from 'jsonld';
2
+ import { FindOperator } from '../FindOperator';
3
+
4
+ // eslint-disable-next-line @typescript-eslint/naming-convention
5
+ export function And<T extends number | Date | string | boolean | ValueObject>(value: T[]): FindOperator<T[], 'and'> {
6
+ return new FindOperator({
7
+ operator: 'and',
8
+ value
9
+ });
10
+ }
@@ -0,0 +1,9 @@
1
+ import { FindOperator } from '../FindOperator';
2
+
3
+ // eslint-disable-next-line @typescript-eslint/naming-convention
4
+ export function Contains(value: string): FindOperator<string, 'contains'> {
5
+ return new FindOperator({
6
+ operator: 'contains',
7
+ value
8
+ });
9
+ }
@@ -0,0 +1,13 @@
1
+ import type { ValueObject } from 'jsonld';
2
+ import type { OrArray } from '../../util/Types';
3
+ import { FindOperator } from '../FindOperator';
4
+
5
+ // eslint-disable-next-line @typescript-eslint/naming-convention
6
+ export function Equal<T extends OrArray<number | Date | string | boolean | ValueObject>>(
7
+ value: T
8
+ ): FindOperator<T, 'equal'> {
9
+ return new FindOperator({
10
+ operator: 'equal',
11
+ value
12
+ });
13
+ }
@@ -0,0 +1,6 @@
1
+ import { FindOperator } from '../FindOperator';
2
+
3
+ // eslint-disable-next-line @typescript-eslint/naming-convention
4
+ export function Exists(): FindOperator<undefined, 'exists'> {
5
+ return new FindOperator({ operator: 'exists' });
6
+ }
@@ -0,0 +1,12 @@
1
+ import type { ValueObject } from 'jsonld';
2
+ import { FindOperator } from '../FindOperator';
3
+
4
+ // eslint-disable-next-line @typescript-eslint/naming-convention
5
+ export function GreaterThan<T extends number | Date | string | ValueObject>(
6
+ value: T
7
+ ): FindOperator<T, 'gt'> {
8
+ return new FindOperator({
9
+ operator: 'gt',
10
+ value
11
+ });
12
+ }
@@ -0,0 +1,12 @@
1
+ import type { ValueObject } from 'jsonld';
2
+ import { FindOperator } from '../FindOperator';
3
+
4
+ // eslint-disable-next-line @typescript-eslint/naming-convention
5
+ export function GreaterThanOrEqual<T extends number | Date | string | ValueObject>(
6
+ value: T
7
+ ): FindOperator<T, 'gte'> {
8
+ return new FindOperator({
9
+ operator: 'gte',
10
+ value
11
+ });
12
+ }
@@ -0,0 +1,12 @@
1
+ import type { ValueObject } from 'jsonld';
2
+ import { FindOperator } from '../FindOperator';
3
+
4
+ // eslint-disable-next-line @typescript-eslint/naming-convention
5
+ export function In<T extends number | Date | string | boolean | ValueObject>(
6
+ value: T[]
7
+ ): FindOperator<T[], 'in'> {
8
+ return new FindOperator({
9
+ operator: 'in',
10
+ value
11
+ });
12
+ }
@@ -0,0 +1,11 @@
1
+ import { FindOperator } from '../FindOperator';
2
+
3
+ // eslint-disable-next-line @typescript-eslint/naming-convention
4
+ export function Inverse<T>(
5
+ value: T | FindOperator<T, any>
6
+ ): FindOperator<T, 'inverse'> {
7
+ return new FindOperator({
8
+ operator: 'inverse',
9
+ value
10
+ });
11
+ }
@@ -0,0 +1,17 @@
1
+ import { FindOperator } from '../FindOperator';
2
+
3
+ export interface InversePathValue<T> {
4
+ subPath: string | FindOperator<any, 'sequencePath' | 'zeroOrMorePath' | 'oneOrMorePath'>;
5
+ value?: T | FindOperator<T, any>;
6
+ }
7
+
8
+ // eslint-disable-next-line @typescript-eslint/naming-convention
9
+ export function InversePath<
10
+ T,
11
+ TI extends InversePathValue<T>
12
+ >(value: TI): FindOperator<TI, 'inversePath'> {
13
+ return new FindOperator({
14
+ operator: 'inversePath',
15
+ value
16
+ });
17
+ }
@@ -0,0 +1,18 @@
1
+ import { FindOperator } from '../FindOperator';
2
+ import type { FindOptionsRelations } from '../FindOptionsTypes';
3
+
4
+ export interface InverseRelationOperatorValue {
5
+ resolvedName: string;
6
+ relations?: FindOptionsRelations;
7
+ [key: string]: any;
8
+ }
9
+
10
+ // eslint-disable-next-line @typescript-eslint/naming-convention
11
+ export function InverseRelation(
12
+ value: InverseRelationOperatorValue
13
+ ): FindOperator<InverseRelationOperatorValue, 'inverseRelation'> {
14
+ return new FindOperator({
15
+ operator: 'inverseRelation',
16
+ value
17
+ });
18
+ }
@@ -0,0 +1,17 @@
1
+ import { FindOperator } from '../FindOperator';
2
+ import type { FindOptionsOrder, FindOptionsWhere } from '../FindOptionsTypes';
3
+
4
+ export interface InverseRelationOrderValue {
5
+ order: FindOptionsOrder;
6
+ where?: FindOptionsWhere;
7
+ }
8
+
9
+ // eslint-disable-next-line @typescript-eslint/naming-convention
10
+ export function InverseRelationOrder(
11
+ value: InverseRelationOrderValue
12
+ ): FindOperator<InverseRelationOrderValue, 'inverseRelationOrder'> {
13
+ return new FindOperator({
14
+ operator: 'inverseRelationOrder',
15
+ value
16
+ });
17
+ }
@@ -0,0 +1,12 @@
1
+ import type { ValueObject } from 'jsonld';
2
+ import { FindOperator } from '../FindOperator';
3
+
4
+ // eslint-disable-next-line @typescript-eslint/naming-convention
5
+ export function LessThan<T extends number | Date | string | ValueObject>(
6
+ value: T
7
+ ): FindOperator<T, 'lt'> {
8
+ return new FindOperator({
9
+ operator: 'lt',
10
+ value
11
+ });
12
+ }
@@ -0,0 +1,12 @@
1
+ import type { ValueObject } from 'jsonld';
2
+ import { FindOperator } from '../FindOperator';
3
+
4
+ // eslint-disable-next-line @typescript-eslint/naming-convention
5
+ export function LessThanOrEqual<T extends number | Date | string | ValueObject>(
6
+ value: T
7
+ ): FindOperator<T, 'lte'> {
8
+ return new FindOperator({
9
+ operator: 'lte',
10
+ value
11
+ });
12
+ }
@@ -0,0 +1,11 @@
1
+ import { FindOperator } from '../FindOperator';
2
+
3
+ // eslint-disable-next-line @typescript-eslint/naming-convention
4
+ export function Not<T>(
5
+ value: T | FindOperator<T, any>
6
+ ): FindOperator<T, 'not'> {
7
+ return new FindOperator({
8
+ operator: 'not',
9
+ value
10
+ });
11
+ }
@@ -0,0 +1,17 @@
1
+ import { FindOperator } from '../FindOperator';
2
+
3
+ export interface OneOrMorePathValue<T> {
4
+ subPath: string | FindOperator<any, 'sequencePath' | 'inversePath'>;
5
+ value?: string | FindOperator<T, any>;
6
+ }
7
+
8
+ // eslint-disable-next-line @typescript-eslint/naming-convention
9
+ export function OneOrMorePath<
10
+ T,
11
+ TI extends OneOrMorePathValue<T>
12
+ >(value: TI): FindOperator<TI, 'oneOrMorePath'> {
13
+ return new FindOperator({
14
+ operator: 'oneOrMorePath',
15
+ value
16
+ });
17
+ }
@@ -0,0 +1,11 @@
1
+ import { FindOperator } from '../FindOperator';
2
+
3
+ // eslint-disable-next-line @typescript-eslint/naming-convention
4
+ export function Sequence<T>(
5
+ value: T | FindOperator<T, any>
6
+ ): FindOperator<T, 'sequence'> {
7
+ return new FindOperator({
8
+ operator: 'sequence',
9
+ value
10
+ });
11
+ }
@@ -0,0 +1,17 @@
1
+ import { FindOperator } from '../FindOperator';
2
+
3
+ export interface SequencePathValue<T> {
4
+ subPath: (string | FindOperator<any, 'zeroOrMorePath' | 'inversePath' | 'oneOrMorePath'>)[];
5
+ value?: string | FindOperator<T, any>;
6
+ }
7
+
8
+ // eslint-disable-next-line @typescript-eslint/naming-convention
9
+ export function SequencePath<
10
+ T,
11
+ TI extends SequencePathValue<T>
12
+ >(value: TI): FindOperator<TI, 'sequencePath'> {
13
+ return new FindOperator({
14
+ operator: 'sequencePath',
15
+ value
16
+ });
17
+ }
@@ -0,0 +1,17 @@
1
+ import { FindOperator } from '../FindOperator';
2
+
3
+ export interface ZeroOrMorePathValue<T> {
4
+ subPath: string | FindOperator<any, 'sequencePath' | 'inversePath'>;
5
+ value?: string | FindOperator<T, any>;
6
+ }
7
+
8
+ // eslint-disable-next-line @typescript-eslint/naming-convention
9
+ export function ZeroOrMorePath<
10
+ T,
11
+ TI extends ZeroOrMorePathValue<T>
12
+ >(value: TI): FindOperator<TI, 'zeroOrMorePath'> {
13
+ return new FindOperator({
14
+ operator: 'zeroOrMorePath',
15
+ value
16
+ });
17
+ }