@comake/skl-js-engine 1.4.0 → 1.4.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.
- package/dist/SklEngine.d.ts +1 -1
- package/dist/SklEngine.d.ts.map +1 -1
- package/dist/SklEngine.js +5 -6
- package/dist/SklEngine.js.map +1 -1
- package/dist/logger.js +1 -1
- package/dist/logger.js.map +1 -1
- package/package.json +1 -1
- package/src/SklEngine.ts +6 -7
- package/src/logger.ts +1 -1
package/dist/SklEngine.d.ts
CHANGED
|
@@ -21,10 +21,10 @@ export declare class SKLEngine implements SKLEngineInterface {
|
|
|
21
21
|
private readonly globalCallbacks?;
|
|
22
22
|
private readonly disableValidation?;
|
|
23
23
|
readonly capability: CapabilityInterface;
|
|
24
|
-
private readonly isDebugMode;
|
|
25
24
|
private codeExecutor;
|
|
26
25
|
private readonly skdsEndpointUrl;
|
|
27
26
|
private readonly scriptPath;
|
|
27
|
+
private readonly logger;
|
|
28
28
|
constructor(options: SklEngineOptions);
|
|
29
29
|
setCodeExecutor(codeExecutor: ICodeExecutor): void;
|
|
30
30
|
executeRawQuery<T extends RawQueryResult>(query: string): Promise<T[]>;
|
package/dist/SklEngine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SklEngine.d.ts","sourceRoot":"","sources":["../src/SklEngine.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAqB,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAgBhD,OAAO,EAAE,WAAW,EAAyB,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAQlF,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAIzF,OAAO,KAAK,EAEV,UAAU,EACV,gBAAgB,EAEhB,MAAM,EACN,UAAU,EACV,SAAS,EACT,OAAO,EAOP,OAAO,EAGP,kBAAkB,EAEnB,MAAM,cAAc,CAAC;AAItB,oBAAY,iBAAiB,GAAG,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,EAClF,MAAM,EAAE,UAAU,EAClB,gBAAgB,CAAC,EAAE,gBAAgB,KAChC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChB,oBAAY,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAEpE,oBAAY,qBAAqB,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC;AAEhG,oBAAY,YAAY,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAErD,qBAAa,SAAU,YAAW,kBAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA6C;IACxE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAY;IAC7C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAU;IAC7C,SAAgB,UAAU,EAAE,mBAAmB,CAAC;IAChD,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"SklEngine.d.ts","sourceRoot":"","sources":["../src/SklEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/SklEngine.js
CHANGED
|
@@ -47,8 +47,7 @@ class SKLEngine {
|
|
|
47
47
|
}
|
|
48
48
|
]));
|
|
49
49
|
}
|
|
50
|
-
this.
|
|
51
|
-
logger_1.Logger.getInstance(this.isDebugMode);
|
|
50
|
+
this.logger = logger_1.Logger.getInstance(options.debugMode);
|
|
52
51
|
// eslint-disable-next-line func-style
|
|
53
52
|
const getCapabilityHandler = (getTarget, property) => async (capabilityArgs, capabilityConfig) => this.executeCapabilityByName(property, capabilityArgs, capabilityConfig);
|
|
54
53
|
this.capability = new Proxy({}, { get: getCapabilityHandler });
|
|
@@ -447,11 +446,11 @@ class SKLEngine {
|
|
|
447
446
|
async executeCapability(capability, capabilityArgs, capabilityConfig) {
|
|
448
447
|
this.globalCallbacks?.onCapabilityStart?.(capability[constants_1.PROP_ENTITY_ID], capabilityArgs);
|
|
449
448
|
if (capabilityConfig?.callbacks?.onCapabilityStart) {
|
|
450
|
-
|
|
449
|
+
this.logger.debug('Capability arguments', capabilityArgs);
|
|
451
450
|
capabilityConfig.callbacks.onCapabilityStart(capability[constants_1.PROP_ENTITY_ID], capabilityArgs);
|
|
452
451
|
}
|
|
453
452
|
const { mapping, account } = await this.findMappingForCapabilityContextually(capability[constants_1.PROP_ENTITY_ID], capabilityArgs);
|
|
454
|
-
|
|
453
|
+
this.logger.debug('Mapping', JSON.stringify(mapping));
|
|
455
454
|
const shouldValidate = this.shouldValidate(capabilityConfig);
|
|
456
455
|
if (shouldValidate) {
|
|
457
456
|
await this.assertCapabilityParamsMatchParameterSchemas(capabilityArgs, capability);
|
|
@@ -540,7 +539,7 @@ class SKLEngine {
|
|
|
540
539
|
// returnValue = await this.executeCapabilityMapping(mapping, args, mappedArgs, capabilityConfig);
|
|
541
540
|
// } else {
|
|
542
541
|
const mappedArgs = await this.performParameterMappingOnArgsIfDefined(args, mapping, capabilityConfig);
|
|
543
|
-
|
|
542
|
+
this.logger.debug('Mapped args', mappedArgs);
|
|
544
543
|
if (constants_1.EngineConstants.prop.operationId in mapping || constants_1.EngineConstants.prop.operationMapping in mapping) {
|
|
545
544
|
returnValue = (await this.executeOperationMapping(mapping, mappedArgs, args, account, capabilityConfig));
|
|
546
545
|
}
|
|
@@ -568,7 +567,7 @@ class SKLEngine {
|
|
|
568
567
|
const operationInfo = await this.performOperationMappingWithArgs(originalArgs, mapping, capabilityConfig);
|
|
569
568
|
const response = await this.performOperation(operationInfo, mappedArgs, originalArgs, account, capabilityConfig);
|
|
570
569
|
if (!this.ifCapabilityStreaming(capabilityConfig)) {
|
|
571
|
-
|
|
570
|
+
this.logger.debug('Original response', JSON.stringify(response));
|
|
572
571
|
}
|
|
573
572
|
return response;
|
|
574
573
|
}
|
package/dist/SklEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SklEngine.js","sourceRoot":"","sources":["../src/SklEngine.ts"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,0CAA0C;;;;;;AAS1C,mFAA8E;AAC9E,uDAAmG;AAEnG,kDAA0B;AAG1B,iDAAyC;AACzC,4EAAgD;AAEhD,2CAUqB;AACrB,6DAAgE;AAChE,qDAAyE;AAGzE,qCAAkC;AAClC,6CAA0C;AAK1C,sDAAmD;AACnD,8CAA2C;AAC3C,gEAA6D;AAC7D,gDAA6C;AAC7C,oEAAiE;AACjE,kEAA+D;AAC/D,sEAAmE;AAEnE,0FAAuF;AACvF,gEAA6D;AAuB7D,sCAA2F;AAC3F,sDAAwE;AAYxE,MAAa,SAAS;IAWpB,YAAmB,OAAyB;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,uCAAkB,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,eAAe,GAAI,OAAe,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,UAAU,GAAI,OAAe,CAAC,UAAU,CAAC;QAC9C,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;gBACrD,GAAG;gBACH,CAAC,OAAqC,EAAE,EAAE,EAAE;oBAC1C,0CAA0C;oBAC1C,4DAA4D;oBAC5D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;oBAEhB,6BAA6B;oBAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;aACF,CAAC,CACH,CAAC;SACH;QACD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC9C,eAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAErC,sCAAsC;QACtC,MAAM,oBAAoB,GACxB,CAAC,SAA8B,EAAE,QAAgB,EAAqB,EAAE,CACtE,KAAK,EACH,cAA0B,EAC1B,gBAAmC,EACvB,EAAE,CACd,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,cAAc,EAAE,gBAAgB,CAAe,CAAC;QAC7F,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,EAAyB,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACxF,CAAC;IAEM,eAAe,CAAC,YAA2B;QAChD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,eAAe,CAA2B,KAAa;QAClE,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAI,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,KAAa;QACzC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,KAAa,EAAE,KAAa;QAChE,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,OAAwB;QACxC,OAAO,qCAAiB,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,IAAG,EAAE;YAChE,MAAM,OAAO,GAAG;gBACd,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,MAAM;gBACjB,mBAAmB,EAAE,EAAE,OAAO,EAAE;gBAChC,SAAS,EAAE,IAAI;aAChB,CAAC;YAEF,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEtE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,EAAE;oBACX,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;iBACpF;gBAED,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC;gBACzD,MAAM,eAAe,GAAG,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;gBAE5G,OAAO,eAAe,IAAI,MAAM,CAAC;aAClC;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5E,MAAM,KAAK,CAAC;aACb;QACH,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAuB,EAAE,oBAA6B;QACxE,OAAO,qCAAiB,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,IAAG,EAAE;YAClE,MAAM,OAAO,GAAG;gBACd,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,QAAQ;gBACnB,mBAAmB,EAAE,EAAE,KAAK,EAAE;gBAC9B,SAAS,EAAE,IAAI;aAChB,CAAC;YACF,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACrD,IAAI,MAAM,EAAE;oBACV,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC;oBACzD,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;oBACpF,OAAO,MAAM,CAAC;iBACf;gBACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,wCAAwC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aAC1G;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5E,MAAM,KAAK,CAAC;aACb;QACH,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,OAAyB;QACnD,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC;SACf;QAAC,MAAM;YACN,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,OAAwB;QAC3C,OAAO,qCAAiB,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,IAAG,EAAE;YACnE,MAAM,OAAO,GAAG;gBACd,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,SAAS;gBACpB,mBAAmB,EAAE,EAAE,OAAO,EAAE;gBAChC,SAAS,EAAE,IAAI;aAChB,CAAC;YACF,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1D,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAChD,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACtF,OAAO,QAAQ,CAAC;aACjB;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5E,MAAM,KAAK,CAAC;aACb;QACH,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,OAAuB;QAC1C,OAAO,qCAAiB,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,IAAG,EAAE;YACnE,MAAM,OAAO,GAAG;gBACd,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,SAAS;gBACpB,mBAAmB,EAAE,EAAE,OAAO,EAAE;gBAChC,SAAS,EAAE,IAAI;aAChB,CAAC;YACF,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC9C,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;gBACpF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5E,MAAM,KAAK,CAAC;aACb;QACH,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,KAAuB;QAC5C,OAAO,qCAAiB,CAAC,YAAY,CAAC,qBAAqB,EAAE,KAAK,IAAG,EAAE;YACrE,MAAM,OAAO,GAAG;gBACd,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,WAAW;gBACtB,mBAAmB,EAAE,EAAE,KAAK,EAAE;gBAC9B,SAAS,EAAE,IAAI;aAChB,CAAC;YACF,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC1D,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAChD,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACtF,OAAO,QAAQ,CAAC;aACjB;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,IAAI,EAAE,wBAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5E,MAAM,KAAK,CAAC;aACb;QACH,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAwB;QAC1C,OAAO,qCAAiB,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,IAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACvH,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,OAAwB;QACzC,OAAO,qCAAiB,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,IAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACrH,CAAC;IAIM,KAAK,CAAC,IAAI,CAAC,gBAAmC,EAAE,OAAsB;QAC3E,OAAO,qCAAiB,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,IAAG,EAAE;YAChE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC5F,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAExD,MAAM,yBAAW,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAE3G,IAAI;gBACF,MAAM,IAAI,CAAC,qCAAqC,CAAC,WAAW,CAAC,CAAC;gBAC9D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAChE,MAAM,yBAAW,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC5G,OAAO,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;aAC1D;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,yBAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC1H,MAAM,KAAK,CAAC;aACb;QACH,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAIM,KAAK,CAAC,MAAM,CAAC,OAA0B,EAAE,UAA2B,EAAE,OAAsB;QACjG,OAAO,qCAAiB,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,IAAG,EAAE;YAClE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE/C,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,MAAM,EAAE,wBAAU,CAAC,MAAM,EAAE;gBAC7D,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,QAAQ;gBACnB,mBAAmB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;gBAC5C,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,OAAO,EAAE,WAAW;aAClC,CAAC,CAAC;YAEH,IAAI;gBACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtB,MAAM,IAAI,CAAC,0DAA0D,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;iBAC5F;qBAAM;oBACL,MAAM,IAAI,CAAC,uDAAuD,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;iBAC5F;gBACD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,OAAe,EAAE,UAAU,CAAC,CAAC;gBAE3F,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,MAAM,EAAE,wBAAU,CAAC,KAAK,EAAE;oBAC5D,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,QAAQ;oBACnB,mBAAmB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;oBAC5C,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,OAAO,EAAE,WAAW;iBAClC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,MAAM,EAAE,wBAAU,CAAC,KAAK,EAAE;oBAC5D,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,QAAQ;oBACnB,mBAAmB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;oBAC5C,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,OAAO,EAAE,WAAW;iBAClC,EAAE,KAAK,CAAC,CAAC;gBACV,MAAM,KAAK,CAAC;aACb;QACH,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,qCAAqC,CAAC,QAAkB;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,IAAI,MAAM,EAAE;gBACV,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAC/D,KAAK,MAAM,aAAa,IAAI,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE;oBACtD,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC5C,MAAM,oBAAoB,GAAG;wBAC3B,GAAG,aAAa;wBAChB,CAAC,iBAAK,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,GAAG,CACpC,CAAC,MAAM,EAAuB,EAAE,CAAC,CAAC,EAAE,CAAC,0BAAc,CAAC,EAAE,MAAM,CAAC,0BAAc,CAAC,EAAE,CAAC,CAChF;qBACF,CAAC;oBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qCAAqC,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;oBACtG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACpB,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAU,EAAE,CAAC,MAAM,CAAC,0BAAc,CAAC,CAAC,CAAC;wBACjF,IAAI,CAAC,0BAA0B,CAC7B,MAAM,EACN,UAAU,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,aAAa,CAAC,0BAAc,CAAC,UAAU,CAClG,CAAC;qBACH;iBACF;aACF;SACF;IACH,CAAC;IAEO,mBAAmB,CAAC,QAAkB;QAC5C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAyC,EAAE,MAAM,EAA4B,EAAE;YACrG,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,4BAAgB,CAAC,CAAC;gBACzD,CAAC,CAAC,MAAM,CAAC,4BAAgB,CAAC;gBAC1B,CAAC,CAAC,CAAC,MAAM,CAAC,4BAAgB,CAAC,CAAC,CAAC;YAC/B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;gBAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;oBAC1B,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;iBAC5B;gBACD,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpC;YACD,OAAO,eAAe,CAAC;QACzB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,MAAc;QAClD,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,KAAe;QACpD,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAA,OAAE,EAAC,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,QAAyC;QAC1E,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;YACxB,KAAK,EAAE;gBACL,EAAE,EAAE,IAAA,yBAAW,EAAC;oBACd,OAAO,EAAE,IAAA,6BAAa,EAAC,EAAE,OAAO,EAAE,gBAAI,CAAC,UAAoB,EAAE,CAAC;oBAC9D,KAAK,EAAE,QAAQ;iBAChB,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oCAAoC,CAAC,MAAc;QAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,4BAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,4BAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,4BAAgB,CAAC,CAAC,CAAC;QAChH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAA,OAAE,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,MAAM,iBAAiB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAU,EAAE,CAAC,MAAM,CAAC,0BAAc,CAAC,CAAC,CAAC;YACxF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;YAC7E,KAAK,MAAM,aAAa,IAAI,CAAC,GAAG,aAAa,EAAE,GAAG,aAAa,CAAC,EAAE;gBAChE,MAAM,oBAAoB,GAAG;oBAC3B,GAAG,aAAa;oBAChB,CAAC,iBAAK,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,0BAAc,CAAC,EAAE,MAAM,CAAC,0BAAc,CAAC,EAAE;iBACjE,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qCAAqC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;gBAC9F,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACpB,IAAI,CAAC,0BAA0B,CAC7B,MAAM,EACN,UAAU,MAAM,CAAC,0BAAc,CAAC,4BAA4B,aAAa,CAAC,0BAAc,CAAC,UAAU,CACpG,CAAC;iBACH;aACF;SACF;IACH,CAAC;IAEO,KAAK,CAAC,0DAA0D,CACtE,GAAa,EACb,UAA2B;QAE3B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;YACpB,MAAM,IAAI,CAAC,uDAAuD,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACpF;IACH,CAAC;IAEO,KAAK,CAAC,kCAAkC,CAAC,EAAU;QACzD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC;YAC1B,EAAE,EAAE,IAAA,yBAAW,EAAC;gBACd,OAAO,EAAE,IAAA,2BAAY,EAAC;oBACpB,OAAO,EAAE,CAAC,eAAG,CAAC,IAAI,EAAE,IAAA,+BAAc,EAAC,EAAE,OAAO,EAAE,gBAAI,CAAC,UAAoB,EAAE,CAAC,CAAC;iBAC5E,CAAC;gBACF,KAAK,EAAE,EAAE;aACV,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,uDAAuD,CACnE,EAAU,EACV,UAA2B;QAE3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,aAAa,IAAI,KAAK,EAAE;YACjC,IAAI,iBAAK,CAAC,QAAQ,IAAI,aAAa,EAAE;gBACnC,MAAM,cAAc,GAAG,IAAA,kBAAW,EAAC,aAAa,CAAC,iBAAK,CAAC,QAAQ,CAAwB,CAAC,CAAC,MAAM,CAC7F,CAAC,QAAQ,EAAW,EAAE;oBACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAK,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,UAAU,EAAE;wBAClD,OAAO,IAAI,CAAC;qBACb;oBACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,0BAAc,IAAI,IAAK,IAAK,IAAI,CAAC,0BAAc,CAAY,IAAI,UAAU,EAAE;wBACzG,OAAO,IAAI,CAAC;qBACb;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CACF,CAAC;gBACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,MAAM,oBAAoB,GAAG;wBAC3B,CAAC,4BAAgB,CAAC,EAAE,iBAAK,CAAC,SAAS;wBACnC,CAAC,iBAAK,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,0BAAc,CAAC,EAAE,EAAE,EAAE;wBAC5C,CAAC,iBAAK,CAAC,QAAQ,CAAC,EAAE,cAAc;qBACjC,CAAC;oBACF,MAAM,gBAAgB,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,0BAAc,CAAC,EAAE,EAAE,EAAE,CAAC;oBACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qCAAqC,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;oBACxG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACpB,IAAI,CAAC,0BAA0B,CAC7B,MAAM,EACN,UAAU,EAAE,4BAA4B,aAAa,CAAC,0BAAc,CAAC,UAAU,CAChF,CAAC;qBACH;iBACF;aACF;SACF;IACH,CAAC;IAIM,KAAK,CAAC,MAAM,CAAC,OAA0B,EAAE,OAAsB;QACpE,OAAO,qCAAiB,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,IAAG,EAAE;YAClE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAE7D,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,MAAM,EAAE,wBAAU,CAAC,MAAM,EAAE;gBAC7D,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,QAAQ;gBACnB,mBAAmB,EAAE,EAAE,OAAO,EAAE;gBAChC,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,OAAO,EAAE,WAAW;aAClC,CAAC,CAAC;YAEH,IAAI;gBACF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAExC,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,MAAM,EAAE,wBAAU,CAAC,KAAK,EAAE;oBAC5D,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,QAAQ;oBACnB,mBAAmB,EAAE,EAAE,OAAO,EAAE;oBAChC,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,OAAO,EAAE,WAAW;iBAClC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,yBAAW,CAAC,OAAO,CAAC,uBAAS,CAAC,MAAM,EAAE,wBAAU,CAAC,KAAK,EAAE;oBAC5D,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,QAAQ;oBACnB,mBAAmB,EAAE,EAAE,OAAO,EAAE;oBAChC,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,OAAO,EAAE,WAAW;iBAClC,EAAE,KAAK,CAAC,CAAC;gBACV,MAAM,KAAK,CAAC;aACb;QACH,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAIM,KAAK,CAAC,OAAO,CAAC,gBAAmC;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACnC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;SAC1D;QACD,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,IAAe,EACf,OAA4B,EAC5B,KAA2B,EAC3B,gBAAmC,EACnC,kBAAqC;QAErC,MAAM,YAAY,GAAG,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CACpC,CAAC,WAAuB,EAAW,EAAE,CACnC,WAAW,CAAC,4BAAgB,CAAC,KAAK,2BAAe,CAAC,IAAI,CAAC,SAAS;YAChE,IAAI,CAAC,gBAAgB,CAAC,IAAA,wBAAiB,EAAC,WAAW,CAAC,2BAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,CACxF,CAAC;QACF,qEAAqE;QACrE,2EAA2E;QAC3E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;SACjF;QAED,MAAM,SAAS,GAAG;YAChB,GAAG,IAAI,CAAC,SAAS;YACjB,GAAG,gBAAgB,EAAE,SAAS;SAC/B,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACzC,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,OAAY;QAC3D,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;QACxF,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,sCAAsC,CACtE,OAAO,EACP,0BAA8F,CAC/F,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;QACtG,IAAI,YAAY,EAAE;YAChB,MAAM,gBAAgB,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAe,CAAC;YACjF,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;SAChE;IACH,CAAC;IAEO,KAAK,CAAC,4BAA4B,CAAC,WAAmB;QAC5D,MAAM,2BAA2B,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CACpD;YACE,IAAI,EAAE,2BAAe,CAAC,IAAI,CAAC,iBAAiB;YAC5C,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW;YAC9C,CAAC,2BAAe,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,2BAAe,CAAC,IAAI,CAAC,wBAAwB;SACrF,EACD,+DAA+D,WAAW,EAAE,CAC7E,CAAmB,CAAC;QACrB,IAAI,2BAA2B,EAAE;YAC/B,OAAO,2BAA2B,CAAC;SACpC;QACD,MAAM,IAAI,KAAK,CAAC,+DAA+D,WAAW,EAAE,CAAC,CAAC;IAChG,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,cAAsB,EACtB,cAA0B,EAC1B,gBAAmC;QAEnC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;QACrE,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACpF,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,cAAsB;QACzD,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CACvB,EAAE,IAAI,EAAE,2BAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,2BAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,EACvF,iCAAiC,cAAc,iBAAiB,CACjE,CAAe,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,UAAsB,EACtB,cAA0B,EAC1B,gBAAmC;QAEnC,IAAI,CAAC,eAAe,EAAE,iBAAiB,EAAE,CAAC,UAAU,CAAC,0BAAc,CAAC,EAAE,cAAc,CAAC,CAAC;QACtF,IAAI,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE;YAClD,eAAM,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;YACjE,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,0BAAc,CAAC,EAAE,cAAc,CAAC,CAAC;SAC1F;QACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,oCAAoC,CAC1E,UAAU,CAAC,0BAAc,CAAC,EAC1B,cAAc,CACf,CAAC;QACF,eAAM,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,cAAc,EAAE;YAClB,MAAM,IAAI,CAAC,2CAA2C,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;SACpF;QAED,IAAI;YACF,0DAA0D;YAC1D,4DAA4D;YAC5D,IAAI,OAAO,EAAE;gBACX,MAAM,yBAAW,CAAC,qCAAqC,CAAC,CAAC,cAAc,CAAa,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aACrH;YAED,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAEtG,IAAI,cAAc,EAAE;gBAClB,MAAM,IAAI,CAAC,kDAAkD,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;aAC5F;YAED,uDAAuD;YACvD,IAAI,OAAO,EAAE;gBACX,MAAM,yBAAW,CAAC,oCAAoC,CAAC,CAAC,cAAc,CAAa,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aACrI;YAED,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,CAAC,UAAU,CAAC,0BAAc,CAAC,EAAE,eAAe,CAAC,CAAC;YACrF,IAAI,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE;gBAChD,gBAAgB,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,0BAAc,CAAC,EAAE,eAAe,CAAC,CAAC;aACzF;YAED,OAAO,eAAe,CAAC;SACxB;QAAC,OAAO,KAAK,EAAE;YACd,uDAAuD;YACvD,IAAI,OAAO,EAAE;gBACX,MAAM,yBAAW,CAAC,oCAAoC,CAAC,CAAC,cAAc,CAAa,EAAE,OAAO,EAAE,KAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aACpI;YACD,MAAM,KAAK,CAAC;SACb;IACH,CAAC;IAEO,KAAK,CAAC,oCAAoC,CAChD,YAAoB,EACpB,IAAgB;QAEhB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,OAAiB,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,OAAiB,aAAa,CAAC,CAAC;aACjE;YACD,OAAO,EAAE,OAAO,EAAE,OAA4B,EAAE,CAAC;SAClD;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,YAAY,EAAE,IAAI,CAAC,MAAgB,CAAC,CAAC;YAC5F,IAAI,OAAO,EAAE;gBACX,OAAO,EAAE,OAAO,EAAE,CAAC;aACpB;SACF;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,OAAiB,EAAE,CAAC,CAAC;YAClE,MAAM,mBAAmB,GAAI,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAyB,CAAC,0BAAc,CAAC,CAAC;YAC/G,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;YAC/F,IAAI,OAAO,EAAE;gBACX,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;aAC7B;SACF;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YACpC,IAAI,EAAE,2BAAe,CAAC,IAAI,CAAC,iBAAiB;YAC5C,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY;YAC/C,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAA,SAAG,EAAC,IAAA,eAAM,GAAE,CAAC;YACjD,CAAC,2BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAA,SAAG,EAAC,IAAA,eAAM,GAAE,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAsB,EAAE,CAAC;SACtD;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;SAChF;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAgB,mBAAmB,YAAY,aAAa,CAAC,CAAC;SAC9G;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,OAAiB,mBAAmB,YAAY,aAAa,CAAC,CAAC;SAChH;QACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,OAAgB,EAChB,IAAgB,EAChB,gBAAmC,EACnC,OAAgB;QAEhB,IAAI,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACjF,IAAI,WAAgC,CAAC;QACrC,yGAAyG;QACzG,uGAAuG;QACvG,0EAA0E;QAC1E,iCAAiC;QACjC,oCAAoC;QACpC,uBAAuB;QACvB,OAAO;QACP,yDAAyD;QACzD,oGAAoG;QACpG,WAAW;QACX,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,sCAAsC,CAClE,IAAI,EACJ,OAA4B,EAC5B,gBAAgB,CACjB,CAAC;QACF,eAAM,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QACpD,IAAI,2BAAe,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,2BAAe,CAAC,IAAI,CAAC,gBAAgB,IAAI,OAAO,EAAE;YACnG,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAC/C,OAAO,EACP,UAAU,EACV,IAAI,EACJ,OAAQ,EACR,gBAAgB,CACjB,CAAe,CAAC;SAClB;aAAM,IAAI,2BAAe,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE;YACjD,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAA4B,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;SAC3G;aAAM,IAAI,2BAAe,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE;YACnD,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAA8B,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;SAC/G;aAAM;YACL,WAAW,GAAG,UAAU,CAAC;SAC1B;QACD,IAAI;QACJ,OAAO,MAAM,IAAI,CAAC,2CAA2C,CAC3D,WAAwB,EACxB,OAAoC,EACpC,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,gBAAmC;QACxD,OAAO,gBAAgB,EAAE,iBAAiB,KAAK,SAAS;YACtD,CAAC,CAAC,IAAI,CAAC,iBAAiB,KAAK,IAAI;YACjC,CAAC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,OAAgB,EAChB,UAAsB,EACtB,YAAwB,EACxB,OAAe,EACf,gBAAmC;QAEnC,MAAM,WAAW,GAAI,OAA6B,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,0BAAc,CAAC,CAAC;QAEvG,6FAA6F;QAC7F,IAAI,WAAW,EAAE;YACf,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,YAAY,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC1G,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACjH,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE;gBACjD,eAAM,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;aACzE;YACD,OAAO,QAAQ,CAAC;SACjB;QACD,qGAAqG;QACrG,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAClG,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,OAA0B,EAC1B,IAAgB,EAChB,gBAAmC;QAEnC,MAAM,4BAA4B,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,MAAM,CAAE,CAAC,CAAC;QAChG,MAAM,oBAAoB,GAAG;YAC3B,4BAA4B,EAAE,IAAI;YAClC,6BAA6B,EAAE,EAAE;YACjC,eAAe,EAAE,EAAE;SACpB,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;IAChH,CAAC;IAEO,cAAc,CAAC,IAAsE;QAC3F,IAAI,CAAC,CAAC,oBAAQ,IAAI,IAAI,CAAC,EAAE;YACvB,OAAO;gBACL,IAAI,CAAC,eAAG,CAAC,KAAK,CAAC;gBACf,GAAG,IAAA,2CAA4B,EAAC,IAAI,CAAC,eAAG,CAAC,IAAI,CAAwB,CAAC,KAAK,eAAG,CAAC,GAAG;oBAChF,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAG,CAAC,IAAI,CAA+B,CAAC;aACtE,CAAC;SACH;QACD,OAAO,IAAI,CAAC,oBAAQ,CAAC,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,IAAe,EACf,IAA0B,EAC1B,gBAAmC;QAEnC,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC7F,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CACrC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACb;gBACE,GAAG,IAAI;gBACP,6BAA6B,EAAE,WAAyB;gBACxD,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,EAAE,WAAyB,CAAC;aAC5E,EACD,gBAAgB,CACjB,CAAC;SACH;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,iBAA0B,EAC1B,YAAwB,EACxB,UAAsB,EACtB,gBAAmC;QAEnC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QACpH,IAAI,YAAY,EAAE;YAChB,IAAI,YAAY,KAAK,2BAAe,CAAC,UAAU,CAAC,MAAM,EAAE;gBACtD,MAAM,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;gBACtD,OAAO,EAAE,CAAC;aACX;YACD,IAAI,YAAY,KAAK,2BAAe,CAAC,UAAU,CAAC,IAAI,EAAE;gBACpD,OAAO,MAAM,IAAI,CAAC,sCAAsC,CAAC,UAAU,CAAC,CAAC;aACtE;YACD,IAAI,YAAY,KAAK,2BAAe,CAAC,UAAU,CAAC,OAAO,EAAE;gBACvD,OAAO,MAAM,IAAI,CAAC,yCAAyC,CAAC,UAAU,CAAC,CAAC;aACzE;YACD,IAAI,YAAY,KAAK,2BAAe,CAAC,UAAU,CAAC,OAAO,EAAE;gBACvD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aACvC;YACD,IAAI,YAAY,KAAK,2BAAe,CAAC,UAAU,CAAC,IAAI,EAAE;gBACpD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACpC;YACD,IAAI,YAAY,KAAK,2BAAe,CAAC,UAAU,CAAC,KAAK,EAAE;gBACrD,OAAO,MAAM,IAAI,CAAC,mCAAmC,CAAC,UAAU,CAAC,CAAC;aACnE;YACD,IAAI,YAAY,KAAK,2BAAe,CAAC,UAAU,CAAC,MAAM,EAAE;gBACtD,OAAO,MAAM,IAAI,CAAC,oCAAoC,CAAC,UAAU,CAAC,CAAC;aACpE;YACD,IAAI,YAAY,KAAK,wCAAwC,EAAE;gBAC7D,MAAM,UAAU,GAAG,IAAA,kBAAW,EAAE,iBAAiB,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CACxG,CAAC,WAAgB,EAAW,EAAE,CAC5B,WAAW,CAAC,4BAAgB,CAAC,KAAK,2BAAe,CAAC,IAAI,CAAC,SAAS;oBAChE,IAAI,CAAC,gBAAgB,CAAC,IAAA,wBAAiB,EAAC,WAAW,CAAC,2BAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC,CACxF,CAAC;gBACF,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;aACjE;YAED,gCAAgC;YAChC,IAAI,6CAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBAC9C,OAAO,MAAM,6CAAwB,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;aACjG;YAED,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;SACxF;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,KAAK,CAAC,6BAA6B,CACzC,iBAA0B,EAC1B,IAAgB,EAChB,gBAAmC;QAEnC,IAAI,2BAAe,CAAC,IAAI,CAAC,oBAAoB,IAAI,iBAAiB,EAAE;YAClE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAC9C,IAAI,EACJ,iBAAiB,CAAC,2BAAe,CAAC,IAAI,CAAC,oBAAoB,CAAe,EAC1E,IAAA,wBAAiB,EAAC,iBAAiB,CAAC,2BAAe,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,EACpF,gBAAgB,CACjB,CAAC;YACF,OAAO,EAAE,GAAG,IAAI,EAAE,sBAAsB,EAAE,cAA4B,EAAE,CAAC;SAC1E;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,gBAAgB,CAAC,MAA2B;QAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC5C;QACD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,YAAY,CAAC,2BAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC3C,YAAY,CAAC,4BAAgB,CAAC,GAAG,YAAY,CAAC,2BAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1E;QACD,IAAI,YAAY,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACjD,YAAY,CAAC,0BAAc,CAAC,GAAG,iCAAkB,GAAI,YAAY,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAY,CAAC;SAC/G;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAAC,IAAyB;QACpE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvB,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;SACb;QACD,2FAA2F;QAC3F,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,iCAAkB,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3F,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,sCAAsC,CAAC,IAAyB;QAC5E,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClD;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC1D;QACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,yCAAyC,CAAC,IAAyB;QAC/E,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAClD;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC1D;QACD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAEO,KAAK,CAAC,mCAAmC,CAAC,IAAyB;QACzE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO;YACL,CAAC,2BAAe,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;gBACxC,CAAC,6BAAiB,CAAC,EAAE,KAAK;gBAC1B,CAAC,4BAAgB,CAAC,EAAE,kBAAG,CAAC,OAAO;aAChC;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oCAAoC,CAAC,IAAyB;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO;YACL,CAAC,2BAAe,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;gBACzC,CAAC,6BAAiB,CAAC,EAAE,MAAM;gBAC3B,CAAC,4BAAgB,CAAC,EAAE,kBAAG,CAAC,OAAO;aAChC;SACF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACnC,YAAoB,EACpB,IAAyB,EACzB,gBAAmC;QAEnC,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAe,CAAC;QAC3E,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC1E,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,OAA4B,EAC5B,IAAgB,EAChB,gBAAmC;QAEnC,MAAM,0BAA0B,GAAG,IAAA,kBAAW,EAC5C,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,QAAQ,CAA0C,CAChF,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC1C,0BAA0B,CAAC,GAAG,CAC5B,CAAC,iBAAiB,EAAgC,EAAE,CAClD,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,CAAC,CACjE,CACF,CAAC;QACF,OAAO,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,gCAAgC,CAC5C,YAAoB,EACpB,mBAA2B;QAE3B,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC;YAChC,IAAI,EAAE,2BAAe,CAAC,IAAI,CAAC,iBAAiB;YAC5C,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY;YAC/C,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,mBAAmB;SACxD,CAAC,CAAsB,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,IAAe,EACf,OAAgB,EAChB,gBAAmC;QAEnC,IAAI,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC7C,OAAO,EAAE,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;SAC1F;QACD,IAAI,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC5C,OAAO,EAAE,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;SACxF;QACD,OAAO,MAAM,IAAI,CAAC,cAAc,CAC9B,IAAI,EACJ,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,gBAAgB,CAAwB,EACrE,SAAS,EACT,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,aAAyB,EACzB,aAAyB,EACzB,YAAwB,EACxB,OAAe,EACf,gBAAmC,EACnC,mBAA4B;QAE5B,IAAI,aAAa,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAClD,OAAO,MAAM,IAAI,CAAC,8CAA8C,CAC9D,aAAa,EACb,aAAa,EACb,OAAO,EACP,mBAAmB,CACpB,CAAC;SACH;QACD,IAAI,aAAa,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAClD,OAAO,MAAM,IAAI,CAAC,qBAAqB,CACrC,IAAA,2CAA4B,EAAC,aAAa,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAiC,CAAE,EAC7G,gBAAgB,CACjB,CAAC;SACH;QACD,IAAI,aAAa,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,sCAAsC,CAChE,IAAA,wBAAiB,EAAC,aAAa,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE,EACnE,aAAa,EACb,OAAO,EACP,gBAAgB,CACjB,CAAC;YACF,OAAO,IAAI,CAAC,yCAAyC,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;SAC9F;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAEO,yCAAyC,CAC/C,QAAuB,EACvB,mBAA+B,EAC/B,YAAwB;QAExB,OAAO;YACL,mBAAmB;YACnB,4BAA4B,EAAE,YAAY;YAC1C,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,MAAM,EAAE;gBACN,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;gBAChC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;gBAC9B,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG;gBACxB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;aACb;SAChB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,2CAA2C,CACvD,WAAsB,EACtB,OAAkC,EAClC,gBAAmC;QAEnC,IAAI,2BAAe,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,EAAE;YAClD,OAAO,MAAM,IAAI,CAAC,cAAc,CAC9B,WAAW,EACX,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,cAAc,CAAC,EAC5C,IAAA,wBAAiB,EAAa,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAChF,gBAAgB,CACjB,CAAC;SACH;QACD,OAAO,WAAyB,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,sCAAsC,CAClD,IAAgB,EAChB,OAAyE,EACzE,gBAAmC,EACnC,iBAAiB,GAAG,KAAK;QAEzB,IAAI,2BAAe,CAAC,IAAI,CAAC,eAAe,IAAI,OAAO,EAAE;YACnD,MAAM,SAAS,GAAG,IAAA,wBAAiB,EAAS,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAE,CAAC;YAC5F,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SACjD;QAED,IAAI,2BAAe,CAAC,IAAI,CAAC,gBAAgB,IAAI,OAAO,EAAE;YACpD,MAAM,SAAS,GAAG,IAAA,wBAAiB,EAAS,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAE,CAAC;YAC7F,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAEnE,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,KAAK,CAAC,EAAE;gBACzD,OAAO,IAAI,CAAC;aACb;YAED,0CAA0C;YAC1C,IAAI,KAAK,CAAC;YACV,IAAI,2BAAe,CAAC,IAAI,CAAC,qBAAqB,IAAI,OAAO,EAAE;gBACzD,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAS,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAE,CAAC;gBACvG,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;aACvD;iBAAM;gBACL,+BAA+B;gBAC/B,KAAK,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;aAC7E;YAED,wDAAwD;YACxD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC/F,OAAO,IAAA,aAAM,EAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;SAC9C;QAED,IAAI,2BAAe,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,EAAE;YACjD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAC1C,IAAI,EACH,OAA6B,CAAC,2BAAe,CAAC,IAAI,CAAC,aAAa,CAAE,EACnE,IAAA,wBAAiB,EAAC,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EACnE,gBAAgB,CACjB,CAAC;YACF,OAAO,IAAA,aAAM,EAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB,CAAC,SAAiB,EAAE,IAAgB;QAC5D,MAAM,OAAO,GAAG,IAAA,wBAAQ,EAAC;YACvB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QAC1E,IAAI,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,6BAAiB,IAAI,MAAM,EAAE;YACvE,MAAM,GAAG,MAAM,CAAC,6BAAiB,CAAC,CAAC;SACpC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,mBAA2B,EAC3B,eAAe,GAAG,2BAAe,CAAC,IAAI,CAAC,oBAAoB;QAE3D,IAAI,eAAe,KAAK,2BAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE;YACjE,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;gBAC7C,IAAI,EAAE,eAAe;gBACrB,CAAC,2BAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,2BAAe,CAAC,IAAI,CAAC,OAAO;gBACzD,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,mBAAmB;aACxD,CAAC,CAAC;YACH,OAAO,oBAAoB,CAAC;SAC7B;QACD,0CAA0C;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,0CAA0C,CAAC,SAAiB;QACxE,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC;YAC/B,IAAI,EAAE,2BAAe,CAAC,IAAI,CAAC,mCAAmC;YAC9D,CAAC,2BAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,SAAS;SAChD,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,qDAAqD;QACjE,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC;YAChC,IAAI,EAAE,2BAAe,CAAC,IAAI,CAAC,UAAU;YACrC,CAAC,2BAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,0CAA8B;SAC7D,CAAC,CAAe,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,4CAA4C,CACxD,mBAA2B,EAC3B,aAAqB,EACrB,2BAAkD,EAClD,aAAyB;QAEzB,MAAM,wCAAwC,GAAG,MAAM,IAAI,CAAC,qDAAqD,EAAE,CAAC;QACpH,IAAI,CAAC,wCAAwC,EAAE;YAC7C,OAAO,EAAE,CAAC;SACX;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gCAAgC,CACzD,wCAAwC,CAAC,0BAAc,CAAC,EACxD,aAAa,CACd,CAAC;QACF,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAE,CAAC;SACX;QACD,MAAM,IAAI,GAAG;YACX,mBAAmB;YACnB,oCAAoC,EAAE,2BAA2B;YACjE,aAAa;SACA,CAAC;QAChB,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sCAAsC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9G,MAAM,OAAO,GAAG,IAAA,wBAAiB,EAAa,mBAAmB,CAAC,2BAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACjG,OAAO,OAAO,IAAI,EAAE,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,sCAAsC,CAAC,kBAA2B;QAC9E,MAAM,QAAQ,GAAG,IAAI,qDAAwB,EAAE,CAAC;QAChD,MAAM,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,2BAA2B,CAAC,YAAoB,EAAE,MAAc;QAC5E,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC;YAChC,IAAI,EAAE,2BAAe,CAAC,IAAI,CAAC,iBAAiB;YAC5C,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY;YAC/C,CAAC,2BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAA,yBAAW,EAAC;gBACzC,OAAO,EAAE,IAAA,+BAAc,EAAC,EAAE,OAAO,EAAE,gBAAI,CAAC,UAAoB,EAAE,CAAC;gBAC/D,KAAK,EAAE,MAAM;aACd,CAAC;SACH,CAAC,CAAsB,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,gCAAgC,CAC5C,IAAe,EACf,OAAgB,EAChB,gBAAmC;QAEnC,IAAI,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC7C,OAAO,IAAA,wBAAiB,EAAS,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE,CAAC;SAC9E;QACD,IAAI,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC7C,OAAO,IAAA,wBAAiB,EAAS,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE,CAAC;SAC9E;QACD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,cAAc,CACpD,IAAI,EACJ,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,gBAAgB,CAAe,EAC5D,SAAS,EACT,gBAAgB,CACjB,CAAC;QACF,OAAO,IAAA,wBAAiB,EAAS,oBAAoB,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE,CAAC;IAC5F,CAAC;IAEO,KAAK,CAAC,2CAA2C,CACvD,gBAAqB,EACrB,UAAsB;QAEtB,IAAI,sBAAsB,GAAG,UAAU,CAAC,2BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,sBAAsB,EAAE,CAAC,0BAAc,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAChG,sBAAsB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,sBAAsB,CAAC,0BAAc,CAAC,EAAE,CAAC,CAAC;SAC5F;QACD,IAAI,gBAAgB,IAAI,sBAAsB,EAAE;YAC9C,MAAM,wBAAwB,GAAG;gBAC/B,UAAU,EAAE,IAAA,wBAAiB,EAAoB,UAAU,CAAC,2BAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAChG,CAAC,4BAAgB,CAAC,EAAE,2BAAe,CAAC,IAAI,CAAC,MAAM;gBAC/C,GAAG,gBAAgB;aACpB,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qCAAqC,CAAC,wBAAwB,EAAE,sBAAsB,CAAC,CAAC;YAClH,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACpB,IAAI,CAAC,0BAA0B,CAC7B,MAAM,EACN,GAAG,IAAA,wBAAiB,EAAC,UAAU,CAAC,2BAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,0CAA0C,CACvG,CAAC;aACH;SACF;IACH,CAAC;IAEO,KAAK,CAAC,sCAAsC,CAClD,WAAmB,EACnB,aAAyB,EACzB,OAAe,EACf,gBAAmC;QAEnC,MAAM,mBAAmB,GAAI,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAyB,CAAC,0BAAc,CAAC,CAAC;QAC/G,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;QACjF,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,yDAAyD,mBAAmB,EAAE,CAAC,CAAC;SACjG;QACD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,EAC1C,gBAAgB,CAAC,2BAAe,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAChE,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sCAAsC,CAAC,kBAAkB,CAAC,CAAC;QAC9F,6DAA6D;QAC7D,MAAM,2BAA2B,GAAG,MAAM,eAAe,CAAC,2CAA2C,CAAC,WAAW,CAAC,CAAC;QACnH,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,0CAA0C,CAAC,OAAO,CAAC,0BAAc,CAAC,CAAC,CAAC;QAC3G,IAAI,oBAAoB,GAAe,EAAE,CAAC;QAC1C,IAAI,mBAAmB,EAAE;YACvB,MAAM,2BAA2B,GAAG,MAAM,IAAI,CAAC,4CAA4C,CACzF,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,CACd,CAAC;YACF,IAAI,2BAA2B,IAAI,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtF,oBAAoB,GAAG,2BAA2B,CAAC;aACpD;SACF;QACD,MAAM,MAAM,GAAG;YACb,IAAA,wBAAiB,EAAS,mBAAmB,EAAE,CAAC,2BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7E,IAAI,CAAC,4CAA4C,CAAC,oBAAoB,CAAC;SACxE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChB,MAAM,aAAa,GAAG;YACpB,WAAW,EAAE,IAAA,wBAAiB,EAAS,mBAAmB,EAAE,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/F,WAAW,EAAE,IAAA,wBAAiB,EAAS,mBAAmB,EAAE,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/F,MAAM;YACN,QAAQ,EAAE,IAAA,wBAAiB,EAAS,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnF,QAAQ,EAAE,IAAA,wBAAiB,EAAS,mBAAmB,EAAE,CAAC,2BAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzF,QAAQ,EAAE,IAAA,wBAAiB,EAAS,mBAAmB,EAAE,CAAC,2BAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1F,CAAC;QACF,IAAI,QAAQ,CAAC;QACb,IAAI,uBAAuD,CAAC;QAC5D,IAAI;YACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,gCAAgC,CAAC,oBAAoB,CAAQ,CAAC;YAC7F,IACE,iBAAiB;gBACjB,OAAO,iBAAiB,KAAK,QAAQ;gBACrC,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EACzC;gBACA,uBAAuB,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;aAC1D;YACD,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE;gBAChD,uBAAuB,GAAG;oBACxB,GAAG,uBAAuB;oBAC1B,YAAY,EAAE,QAAQ;iBACvB,CAAC;aACH;iBAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE;gBACvD,uBAAuB,GAAG;oBACxB,GAAG,uBAAuB;oBAC1B,YAAY,EAAE,aAAa;iBAC5B,CAAC;aACH;YACD,QAAQ,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAC/C,WAAW,EACX,aAAa,EACb,aAAa,EACb,uBAAuB,CACxB,CAAC;SACH;QAAC,OAAO,KAAc,EAAE;YACvB,IACE,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC;gBACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC;gBAC1D,mBAAmB,EACnB;gBACA,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAClE,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,CACR,CAAC;gBACF,QAAQ,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAC/C,WAAW,EACX,sBAAsB,EACtB,aAAa,EACb,uBAAuB,CACxB,CAAC;aACH;iBAAM;gBACL,MAAM,KAAK,CAAC;aACb;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gCAAgC,CAAC,kBAA8B;QACrE,IAAI,WAAW,GAAe,EAAE,CAAC;QACjC,IACE,kBAAkB,CAAC,OAAO;YAC1B,OAAO,kBAAkB,CAAC,OAAO,KAAK,QAAQ;YAC9C,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;YAClD,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAC1C;YACA,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC;SAC1C;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,4CAA4C,CAAC,kBAA8B;QACjF,MAAM,OAAO,GAAG,IAAI,CAAC,gCAAgC,CAAC,kBAAkB,CAAC,CAAC;QAC1E,IAAI,OAAO,IAAI,eAAe,IAAI,OAAO,EAAE;YACzC,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;YAClD,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE;gBAC3C,OAAO,mBAAmB,CAAC;aAC5B;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,KAAiB,EAAE,mBAA2B;QAC9E,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;QACrF,IAAI,CAAC,oBAAoB,EAAE;YACzB,OAAO,KAAK,CAAC;SACd;QAED,MAAM,YAAY,GAAG,oBAAoB,CAAC,2BAAe,CAAC,IAAI,CAAC,wBAAwB,CAAe,CAAC;QACvG,MAAM,kBAAkB,GACtB,YAAY,IAAI,IAAA,wBAAiB,EAAS,YAAY,CAAC,2BAAe,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC/G,MAAM,iBAAiB,GACrB,YAAY;YACZ,IAAA,wBAAiB,EAAS,YAAY,CAAC,2BAAe,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAE,CAAC;QACtG,IAAI,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,kBAAkB,EAAE;YACjE,IAAI,CAAC,iBAAiB,EAAE;gBACtB,OAAO,IAAI,CAAC;aACb;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;gBACrG,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,0BAA0B,CACtC,mBAA2B,EAC3B,aAAqB,EACrB,OAAe,EACf,gBAAmC;QAEnC,MAAM,uBAAuB,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC;YACjD,IAAI,EAAE,2BAAe,CAAC,IAAI,CAAC,UAAU;YACrC,CAAC,2BAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB;SAC/C,CAAC,CAAe,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,uBAAuB,CAAC,0BAAc,CAAC,EAAE,aAAa,CAAC,CAAC;QACpH,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CACb,mCAAmC,uBAAuB,CAAC,0BAAc,CAAC,oBAAoB,aAAa,EAAE,CAC9G,CAAC;SACH;QACD,MAAM,IAAI,GAAG;YACX,YAAY,EAAE,IAAA,wBAAiB,EAAS,mBAAmB,CAAC,2BAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAE;YAChG,gBAAgB,EAAE,IAAA,wBAAiB,EAAS,mBAAmB,CAAC,2BAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAE;SACzG,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,sCAAsC,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC/G,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACtG,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAChD,mBAAmB,EACnB,aAAa,EACb,IAAI,EACJ,OAAO,EACP,gBAAgB,EAChB,mBAAmB,CACpB,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,2CAA2C,CAC9E,cAAc,EACd,OAAoC,EACpC,gBAAgB,CACjB,CAAC;QACF,MAAM,IAAI,CAAC,kDAAkD,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;QAC1G,MAAM,WAAW,GAAG,IAAA,wBAAiB,EAAS,iBAAiB,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACnG,MAAM,WAAW,GAAG,IAAA,wBAAiB,EAAS,iBAAiB,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACnG,MAAM,YAAY,GAAG,IAAA,wBAAiB,EAAS,iBAAiB,CAAC,2BAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACrG,IAAI,WAAW,EAAE;YACf,mBAAmB,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;SACrE;QACD,IAAI,WAAW,EAAE;YACf,mBAAmB,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;SACrE;QACD,IAAI,YAAY,EAAE;YAChB,mBAAmB,CAAC,2BAAe,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;SACvE;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACtC,CAAC;IAEO,4CAA4C,CAAC,yBAAiC;QACpF,MAAM,QAAQ,GAAG,IAAA,wBAAiB,EAAS,yBAAyB,CAAC,2BAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrG,MAAM,QAAQ,GAAG,IAAA,wBAAiB,EAAS,yBAAyB,CAAC,2BAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrG,MAAM,WAAW,GAAG,IAAA,wBAAiB,EAAS,yBAAyB,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3G,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,kDAAkD,CAC9D,WAAgC,EAChC,UAAsB;QAEtB,IAAI,sBAAsB,GAAG,UAAU,CAAC,2BAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtE,IAAI,sBAAsB,EAAE,CAAC,0BAAc,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAChG,sBAAsB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,sBAAsB,CAAC,0BAAc,CAAC,EAAE,CAAC,CAAC;SAC5F;QACD,IAAI,MAAoC,CAAC;QACzC,IAAI,WAAW,IAAI,sBAAsB,EAAE;YACzC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC9B,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAW,EAAE,CAAC,0BAAc,IAAI,SAAS,CAAC,EAAE;oBACzE,sBAAsB,CAAC,iBAAK,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,MAAM,CAC3D,CAAC,KAA4B,EAAE,UAAU,EAAyB,EAAE;wBAClE,IAAI,UAAU,CAAC,0BAAc,CAAC,EAAE;4BAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,0BAAc,CAAC,EAAE,UAAU,CAAC,0BAAc,CAAC,EAAE,CAAC,CAAC;yBAC9D;wBACD,OAAO,KAAK,CAAC;oBACf,CAAC,EACD,EAAE,CACH,CAAC;iBACH;qBAAM;oBACL,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CACtC,CAAC,KAA4B,EAAE,UAAU,EAAyB,EAAE;wBAClE,IAAI,UAAU,CAAC,4BAAgB,CAAC,EAAE;4BAChC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,4BAAgB,CAAC,CAAC;gCACtD,CAAC,CAAC,UAAU,CAAC,4BAAgB,CAAC,CAAC,CAAC,CAAC;gCACjC,CAAC,CAAC,UAAU,CAAC,4BAAgB,CAAC,CAAC;4BACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,0BAAc,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;gCAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,0BAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;6BACxC;yBACF;wBACD,OAAO,KAAK,CAAC;oBACf,CAAC,EACD,EAAE,CACH,CAAC;oBACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC5B,sBAAsB,CAAC,iBAAK,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC;qBAC3D;iBACF;gBACD,MAAM,GAAG,MAAM,IAAI,CAAC,qCAAqC,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;aAChG;iBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9C,IAAI,WAAW,CAAC,0BAAc,CAAC,EAAE;oBAC/B,sBAAsB,CAAC,iBAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,0BAAc,CAAC,EAAE,WAAW,CAAC,0BAAc,CAAC,EAAE,CAAC;iBAC9F;qBAAM,IAAI,WAAW,CAAC,4BAAgB,CAAC,EAAE;oBACxC,sBAAsB,CAAC,iBAAK,CAAC,WAAW,CAAC,GAAG;wBAC1C,CAAC,0BAAc,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,4BAAgB,CAAC,CAAC;4BAC5D,CAAC,CAAC,WAAW,CAAC,4BAAgB,CAAC,CAAC,CAAC,CAAC;4BAClC,CAAC,CAAC,WAAW,CAAC,4BAAgB,CAAE;qBACnC,CAAC;iBACH;gBACD,MAAM,GAAG,MAAM,IAAI,CAAC,qCAAqC,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;aAChG;SACF;QAED,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;YAC/B,MAAM,IAAI,KAAK,CACb,gBACE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,0BAAc,CACnE,iCAAiC,CAClC,CAAC;SACH;IACH,CAAC;IAEO,KAAK,CAAC,qCAAqC,CACjD,KAA0B,EAC1B,KAAiB;QAEjB,MAAM,YAAY,GAAG,MAAM,IAAA,2BAAoB,EAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,MAAM,IAAA,2BAAoB,EAAC,KAAK,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,4BAAc,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,8CAA8C,CAC1D,aAAyB,EACzB,mBAA+B,EAC/B,OAAe,EACf,mBAA4B;QAE5B,MAAM,mBAAmB,GAAI,OAAO,CAAC,2BAAe,CAAC,IAAI,CAAC,WAAW,CAAyB,CAAC,0BAAc,CAAC,CAAC;QAC/G,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;QACjF,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,yDAAyD,mBAAmB,EAAE,CAAC,CAAC;SACjG;QACD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,EAC1C,gBAAgB,CAAC,2BAAe,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAChE,CAAC;QACH,mBAAmB,KAAnB,mBAAmB,GAAK,MAAM,IAAI,CAAC,0CAA0C,CAAC,OAAO,CAAC,0BAAc,CAAC,CAAC,EAAC;QACvG,IAAI,aAAyC,CAAC;QAC9C,IAAI,mBAAmB,EAAE;YACvB,aAAa,GAAG,IAAI,CAAC,4CAA4C,CAAC,mBAAmB,CAAC,CAAC;YACvF,mBAAmB,CAAC,SAAS,GAAG,IAAA,wBAAiB,EAAS,mBAAmB,CAAC,2BAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC;SAChH;aAAM;YACL,aAAa,GAAG,EAAE,CAAC;SACpB;QACD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sCAAsC,CAAC,kBAAkB,CAAC,CAAC;QAC9F,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,0BAA0B,CAC/D,IAAA,wBAAiB,EAAC,aAAa,CAAC,2BAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAE,EAClE,IAAA,wBAAiB,EAAC,aAAa,CAAC,2BAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAE,EACjE,IAAA,wBAAiB,EAAC,aAAa,CAAC,2BAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAE,EAC7D,aAAa,EACb,mBAAmB,CACpB,CAAC;QACF,IAAI,cAAc,IAAI,QAAQ,IAAI,kBAAkB,IAAI,QAAQ,EAAE;YAChE,OAAO;gBACL,IAAI,EAAE,QAAiC;gBACvC,mBAAmB;aACpB,CAAC;SACH;QACD,OAAO,IAAI,CAAC,yCAAyC,CAAC,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAC5G,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,YAAoB,EACpB,gBAAmC;QAEnC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3D,IAAI,UAAU,CAAC,4BAAgB,CAAC,KAAK,2BAAe,CAAC,IAAI,CAAC,cAAc,EAAE;YACxE,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAC1E,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAC,CAAC;SACzC;QACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,CAAC,4BAAgB,CAAC,oBAAoB,CAAC,CAAC;IACvF,CAAC;IAEO,yBAAyB,CAAC,UAAsB,EAAE,gBAAmC;QAC3F,IAAI,UAAU,CAAC,2BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3C,MAAM,WAAW,GAAG,IAAA,wBAAiB,EAAS,UAAU,CAAC,2BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAE,CAAC;YACxF,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;SAClE;QACD,OAAO,IAAA,wBAAiB,EAAa,UAAU,CAAC,2BAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAC;IAC/E,CAAC;IAEO,qBAAqB,CAAC,MAAc,EAAE,gBAAmC;QAC/E,MAAM,UAAU,GAAG;YACjB,GAAG,IAAI,CAAC,UAAU;YAClB,GAAG,gBAAgB,EAAE,UAAU;SAChC,CAAC;QACF,IAAI,MAAM,IAAI,UAAU,EAAE;YACxB,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACzB;YACD,OAAO,IAAI,CAAC;SACb;QACD,0DAA0D;QAC1D,sCAAsC;QACtC,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAEO,0BAA0B,CAAC,MAAwB,EAAE,YAAoB;QAC/E,MAAM,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAEO,0BAA0B,CAAC,MAAwB;QACzD,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;YACnC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;YACrC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC/B,MAAM,OAAO,GAAG,GAAG,SAAS,oBAAoB,MAAM,CAAC,yBAAyB,EAAE,KAAK,EAAE,CAAC;gBAC1F,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC9B;iBAAM;gBACL,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAU,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9F,MAAM,OAAO,GAAG,GAAG,SAAS,KAAK,cAAc,EAAE,CAAC;gBAClD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC9B;SACF;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,qBAAqB,CAAC,gBAAmC;QAC/D,OAAO,OAAO,CAAC,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9F,CAAC;IAEO,qBAAqB,CAAC,gBAAmC;QAC/D,OAAO,OAAO,CAAC,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9F,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QACD,sDAAsD;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,kEAAkE;QAClE,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5E,IAAI,aAAa,EAAE;YACjB,IAAI;gBACF,0DAA0D;gBAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACpB,OAAO,KAAK,CAAC;aACd;YAAC,MAAM;gBACN,8DAA8D;gBAC9D,6BAA6B;aAC9B;SACF;QAED,oEAAoE;QACpE,MAAM,UAAU,GAAG;YACjB,kCAAkC;YAClC,0BAA0B;YAC1B,wBAAwB;YACxB,wBAAwB;YACxB,SAAS;YACT,UAAU;YACV,YAAY;YACZ,sBAAsB;YACtB,qBAAqB;YACrB,0BAA0B;YAC1B,gBAAgB,CAAC,WAAW;SAC7B,CAAC;QAEF,iDAAiD;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,gBAAgB,CAAC,MAAW;QAClC,gCAAgC;QAChC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE;YAC3C,OAAO,EAAE,CAAC;SACX;QAED,oEAAoE;QACpE,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,CAAC,MAAM,CAAC,0BAAc,CAAC,KAAK,SAAS;gBACnC,MAAM,CAAC,4BAAgB,CAAC,KAAK,SAAS;gBACtC,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS;gBAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,EACjC;YACA,OAAO,MAAoB,CAAC;SAC7B;QAED,oCAAoC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,8CAA8C;YAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;oBAC7C,yDAAyD;oBACzD,IAAI,CAAC,IAAI,CAAC,4BAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,0BAAc,CAAC,IAAI,CAAC,IAAI,CAAC,6BAAiB,CAAC,EAAE;wBAChF,OAAO,EAAE,CAAC,4BAAgB,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;qBACtD;oBACD,OAAO,IAAI,CAAC;iBACb;gBACD,4CAA4C;gBAC5C,OAAO,EAAE,CAAC,6BAAiB,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,UAAU,EAAE;oBACV,GAAG,EAAE,4BAAa;iBACnB;gBACD,QAAQ,EAAE,cAAc;aACzB,CAAC;SACH;QAED,oDAAoD;QACpD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO;gBACL,CAAC,6BAAiB,CAAC,EAAE,MAAM;aAC5B,CAAC;SACH;QAED,8CAA8C;QAC9C,iEAAiE;QACjE,OAAO;YACL,CAAC,4BAAgB,CAAC,EAAE,YAAY;YAChC,UAAU,EAAE;gBACV,GAAG,EAAE,4BAAa;aACnB;YACD,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,UAAwB,EACxB,IAAe,EACf,gBAAkC;QAElC,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,WAAW,GAAI,IAA4B,IAAI,EAAE,CAAC;QACtD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,IAAI,GAAG,IAAA,wBAAiB,EAAC,SAAS,CAAC,2BAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAE,CAAC;YAC1E,IAAI,IAAI,EAAE;gBACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,IAAc,EAAE,gBAAgB,CAAC,CAAC;gBAClG,WAAW,GAAG;oBACZ,GAAG,WAAW;oBACd,GAAG,MAAM;iBACV,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtB;SACF;QACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,IAAe,EACf,IAAY,EACZ,iBAAmC;QAEnC,IAAI;YACF,8BAA8B;YAC9B,MAAM,gBAAgB,GAAqB;gBACzC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;gBACvB,YAAY,EAAE,MAAM;gBACpB,YAAY,EAAE,IAAI;gBAClB,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;gBACf,GAAG,iBAAiB;aACrB,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;aAC9F;YAED,mBAAmB;YACnB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAA2B,EAAE,gBAAgB,CAAC,CAAC;YAE7G,0BAA0B;YAC1B,IAAI,eAAe,EAAE,KAAK,EAAE;gBAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,eAAe,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;aAC/F;YAED,iFAAiF;YACjF,8EAA8E;YAC9E,IAAI,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE;gBACtC,OAAO,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC;aAC3C;YACD,qCAAqC;YACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,IAAI,eAAe,CAAC,CAAC;SAC1E;QAAC,OAAO,KAAc,EAAE;YACvB,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClG,CAAC;SACH;IACH,CAAC;IAED,+BAA+B;IAC/B,4EAA4E;IAC5E,IAAI,KAAK;QACP,OAAO,yBAAW,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,YAAiB;QAClD,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;YACpC,SAAS,CAAC,IAAI,CACZ,MAAM,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAChD,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CACxC,CAAC;SACH;aAAM;YACL,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC9B;QACD,MAAM,OAAO,GAAwB,EAAE,CAAC;QAExC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,iBAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClD,KAAK,MAAM,QAAQ,IAAI,IAAA,kBAAW,EAAC,UAAU,CAAC,EAAE;gBAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC3C,IAAI,QAAQ,KAAK,iBAAK,CAAC,GAAG,EAAE;oBAC1B,OAAO,CAAC,IAAI,CAAC,GAAG;wBACd,OAAO,EAAE,KAAK;qBACf,CAAC;iBACH;qBAAM;oBACL,OAAO,CAAC,IAAI,CAAC,GAAG;wBACd,OAAO,EAAE,QAAQ;qBAClB,CAAC;iBACH;aACF;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAjuDD,8BAiuDC","sourcesContent":["/* eslint-disable no-div-regex */\n/* eslint-disable line-comment-position */\n\n/* eslint-disable no-inline-comments */\n/* eslint-disable require-unicode-regexp */\n \n \n \n/* eslint-disable @typescript-eslint/naming-convention */\nimport type { OpenApi, OpenApiClientConfiguration, OperationWithPathInfo } from '@comake/openapi-operation-executor';\nimport { OpenApiOperationExecutor } from '@comake/openapi-operation-executor';\nimport { getIdFromNodeObjectIfDefined, XSD, type ReferenceNodeObject } from '@comake/rmlmapper-js';\nimport type { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport axios from 'axios';\nimport type { ContextDefinition, GraphObject, NodeObject } from 'jsonld';\nimport type { Frame } from 'jsonld/jsonld-spec';\nimport { JSONPath } from 'jsonpath-plus';\nimport SHACLValidator from 'rdf-validate-shacl';\nimport type ValidationReport from 'rdf-validate-shacl/src/validation-report';\nimport {\n EngineConstants,\n OPEN_API_RUNTIME_AUTHORIZATION,\n PROP_ENTITY_ID,\n PROP_ENTITY_TYPE,\n PROP_ENTITY_VALUE,\n RDF,\n RDFS,\n RML_LIST,\n SHACL\n} from './constants';\nimport { globalCustomCapabilities } from './customCapabilities';\nimport { globalHooks, HookStages, HookTypes } from './hooks/globalHooks';\nimport type { ExecutionOptions } from './JsExecutor';\nimport type { ICodeExecutor } from './JsExecutor/types';\nimport { Logger } from './logger';\nimport { Mapper } from './mapping/Mapper';\nimport type { SklEngineOptions } from './SklEngineOptions';\nimport type { FindOperator } from './storage/FindOperator';\nimport type { FindAllOptions, FindOneOptions, FindOptionsWhere } from './storage/FindOptionsTypes';\nimport type { GroupByOptions, GroupByResponse } from './storage/GroupOptionTypes';\nimport { Exists } from './storage/operator/Exists';\nimport { In } from './storage/operator/In';\nimport { InversePath } from './storage/operator/InversePath';\nimport { Not } from './storage/operator/Not';\nimport { OneOrMorePath } from './storage/operator/OneOrMorePath';\nimport { SequencePath } from './storage/operator/SequencePath';\nimport { ZeroOrMorePath } from './storage/operator/ZeroOrMorePath';\nimport type { QueryAdapter, RawQueryResult } from './storage/query-adapter/QueryAdapter';\nimport { SparqlQueryAdapter } from './storage/query-adapter/sparql/SparqlQueryAdapter';\nimport { PerformanceLogger } from './util/PerformanceLogger';\n// Import './util/safeJsonStringify';\nimport type {\n Callbacks,\n Capability,\n CapabilityConfig,\n CapabilityMapping,\n Entity,\n JSONObject,\n JSONValue,\n Mapping,\n MappingWithInputs,\n MappingWithInputsReference,\n MappingWithOutputsMapping,\n MappingWithParallel,\n MappingWithSeries,\n OperationResponse,\n OrArray,\n RdfList,\n SeriesCapabilityArgs,\n SKLEngineInterface,\n TriggerMapping\n} from './util/Types';\nimport { convertJsonLdToQuads, ensureArray, getValueIfDefined, toJSON } from './util/Util';\nimport { SKL_DATA_NAMESPACE, SKL_NAMESPACE } from './util/Vocabularies';\n\nexport type CapabilityHandler = <T extends OrArray<NodeObject> = OrArray<NodeObject>>(\n params: JSONObject,\n capabilityConfig?: CapabilityConfig\n) => Promise<T>;\nexport type CapabilityInterface = Record<string, CapabilityHandler>;\n\nexport type MappingResponseOption<T extends boolean> = T extends true ? JSONObject : NodeObject;\n\nexport type WriteOptions = { bypassHooks?: boolean };\n\nexport class SKLEngine implements SKLEngineInterface {\n private readonly queryAdapter: QueryAdapter;\n private readonly functions?: Record<string, (args: any | any[]) => any>;\n private readonly inputFiles?: Record<string, string>;\n private readonly globalCallbacks?: Callbacks;\n private readonly disableValidation?: boolean;\n public readonly capability: CapabilityInterface;\n private readonly isDebugMode: boolean;\n private codeExecutor: ICodeExecutor | undefined;\n private readonly skdsEndpointUrl: string;\n private readonly scriptPath: string;\n public constructor(options: SklEngineOptions) {\n this.queryAdapter = new SparqlQueryAdapter(options);\n this.disableValidation = options.disableValidation;\n this.globalCallbacks = options.callbacks;\n this.inputFiles = options.inputFiles;\n this.skdsEndpointUrl = (options as any).endpointUrl;\n this.scriptPath = (options as any).scriptPath;\n if (options.functions) {\n this.functions = Object.fromEntries(\n Object.entries(options.functions).map(([key, func]) => [\n key,\n (data: Record<string | number, any> = {}) => {\n // Add the SKL instance to the data object\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n data.skl = this;\n\n // Call the original function\n return func(data);\n }\n ])\n );\n }\n this.isDebugMode = options.debugMode ?? false;\n Logger.getInstance(this.isDebugMode);\n\n // eslint-disable-next-line func-style\n const getCapabilityHandler =\n (getTarget: CapabilityInterface, property: string): CapabilityHandler =>\n async <T extends OrArray<NodeObject> = OrArray<NodeObject>>(\n capabilityArgs: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<T> =>\n this.executeCapabilityByName(property, capabilityArgs, capabilityConfig) as Promise<T>;\n this.capability = new Proxy({} as CapabilityInterface, { get: getCapabilityHandler });\n }\n\n public setCodeExecutor(codeExecutor: ICodeExecutor): void {\n this.codeExecutor = codeExecutor;\n }\n\n public async executeRawQuery<T extends RawQueryResult>(query: string): Promise<T[]> {\n return await this.queryAdapter.executeRawQuery<T>(query);\n }\n\n public async executeRawUpdate(query: string): Promise<void> {\n return await this.queryAdapter.executeRawUpdate(query);\n }\n\n public async executeRawConstructQuery(query: string, frame?: Frame): Promise<GraphObject> {\n return await this.queryAdapter.executeRawConstructQuery(query, frame);\n }\n\n public async find(options?: FindOneOptions): Promise<Entity> {\n return PerformanceLogger.withSpanRoot('SklEngine.find', async() => {\n const context = {\n entities: [],\n operation: 'find',\n operationParameters: { options },\n sklEngine: this\n };\n\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n\n try {\n const entity = await this.queryAdapter.find(options);\n if (!entity) {\n throw new Error(`No schema found with fields matching ${JSON.stringify(options)}`);\n }\n\n const updatedContext = { ...context, entities: [entity]};\n const afterHookResult = await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, entity);\n\n return afterHookResult || entity;\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { options });\n }\n\n public async findBy(where: FindOptionsWhere, notFoundErrorMessage?: string): Promise<Entity> {\n return PerformanceLogger.withSpanRoot('SklEngine.findBy', async() => {\n const context = {\n entities: [],\n operation: 'findBy',\n operationParameters: { where },\n sklEngine: this\n };\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n try {\n const entity = await this.queryAdapter.findBy(where);\n if (entity) {\n const updatedContext = { ...context, entities: [entity]};\n await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, entity);\n return entity;\n }\n throw new Error(notFoundErrorMessage ?? `No schema found with fields matching ${JSON.stringify(where)}`);\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { where });\n }\n\n public async findByIfExists(options: FindOptionsWhere): Promise<Entity | undefined> {\n try {\n const entity = await this.findBy(options);\n return entity;\n } catch {\n return undefined;\n }\n }\n\n public async findAll(options?: FindAllOptions): Promise<Entity[]> {\n return PerformanceLogger.withSpanRoot('SklEngine.findAll', async() => {\n const context = {\n entities: [],\n operation: 'findAll',\n operationParameters: { options },\n sklEngine: this\n };\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n try {\n const entities = await this.queryAdapter.findAll(options);\n const updatedContext = { ...context, entities };\n await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, entities);\n return entities;\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { options });\n }\n\n public async groupBy(options: GroupByOptions): Promise<GroupByResponse> {\n return PerformanceLogger.withSpanRoot('SklEngine.groupBy', async() => {\n const context = {\n entities: [],\n operation: 'groupBy',\n operationParameters: { options },\n sklEngine: this\n };\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n try {\n const result = await this.queryAdapter.groupBy(options);\n const updatedContext = { ...context, result };\n await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, result);\n return result;\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { options });\n }\n\n public async findAllBy(where: FindOptionsWhere): Promise<Entity[]> {\n return PerformanceLogger.withSpanRoot('SklEngine.findAllBy', async() => {\n const context = {\n entities: [],\n operation: 'findAllBy',\n operationParameters: { where },\n sklEngine: this\n };\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n try {\n const entities = await this.queryAdapter.findAllBy(where);\n const updatedContext = { ...context, entities };\n await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, entities);\n return entities;\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { where });\n }\n\n public async exists(options?: FindAllOptions): Promise<boolean> {\n return PerformanceLogger.withSpanRoot('SklEngine.exists', async() => this.queryAdapter.exists(options), { options });\n }\n\n public async count(options?: FindAllOptions): Promise<number> {\n return PerformanceLogger.withSpanRoot('SklEngine.count', async() => this.queryAdapter.count(options), { options });\n }\n\n public async save(entity: Entity, options?: WriteOptions): Promise<Entity>;\n public async save(entities: Entity[], options?: WriteOptions): Promise<Entity[]>;\n public async save(entityOrEntities: Entity | Entity[], options?: WriteOptions): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpanRoot('SklEngine.save', async() => {\n const entityArray = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const isSingleEntity = !Array.isArray(entityOrEntities);\n\n await globalHooks.executeBeforeCreate(entityArray, { sklEngine: this, bypassHooks: options?.bypassHooks });\n\n try {\n await this.validateEntitiesConformToObjectSchema(entityArray);\n const savedEntities = await this.queryAdapter.save(entityArray);\n await globalHooks.executeAfterCreate(savedEntities, { sklEngine: this, bypassHooks: options?.bypassHooks });\n return isSingleEntity ? savedEntities[0] : savedEntities;\n } catch (error) {\n await globalHooks.executeErrorCreate(entityArray, error as Error, { sklEngine: this, bypassHooks: options?.bypassHooks });\n throw error;\n }\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async update(id: string, attributes: Partial<Entity>, options?: WriteOptions): Promise<void>;\n public async update(ids: string[], attributes: Partial<Entity>, options?: WriteOptions): Promise<void>;\n public async update(idOrIds: string | string[], attributes: Partial<Entity>, options?: WriteOptions): Promise<void> {\n return PerformanceLogger.withSpanRoot('SklEngine.update', async() => {\n const idArray = Array.isArray(idOrIds) ? idOrIds : [idOrIds];\n const isSingleEntity = !Array.isArray(idOrIds);\n\n await globalHooks.execute(HookTypes.UPDATE, HookStages.BEFORE, {\n entities: [],\n operation: 'update',\n operationParameters: { idArray, attributes },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n });\n\n try {\n if (idArray.length > 1) {\n await this.validateEntitiesWithIdsConformsToObjectSchemaForAttributes(idArray, attributes);\n } else {\n await this.validateEntityWithIdConformsToObjectSchemaForAttributes(idArray[0], attributes);\n }\n await this.queryAdapter.update(isSingleEntity ? idArray[0] : (idArray as any), attributes);\n\n await globalHooks.execute(HookTypes.UPDATE, HookStages.AFTER, {\n entities: [],\n operation: 'update',\n operationParameters: { idArray, attributes },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n });\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.UPDATE, HookStages.ERROR, {\n entities: [],\n operation: 'update',\n operationParameters: { idArray, attributes },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n }, error);\n throw error;\n }\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async validateEntitiesConformToObjectSchema(entities: Entity[]): Promise<void> {\n const entitiesByType = this.groupEntitiesByType(entities);\n for (const type of Object.keys(entitiesByType)) {\n const object = await this.findByIfExists({ id: type });\n if (object) {\n const parentObjects = await this.getSuperClassesOfObject(type);\n for (const currentObject of [object, ...parentObjects]) {\n const entitiesOfType = entitiesByType[type];\n const nounSchemaWithTarget = {\n ...currentObject,\n [SHACL.targetNode]: entitiesOfType.map(\n (entity): ReferenceNodeObject => ({ [PROP_ENTITY_ID]: entity[PROP_ENTITY_ID] })\n )\n };\n const report = await this.convertToQuadsAndValidateAgainstShape(entitiesOfType, nounSchemaWithTarget);\n if (!report.conforms) {\n const entityIds = entitiesOfType.map((entity): string => entity[PROP_ENTITY_ID]);\n this.throwValidationReportError(\n report,\n `Entity ${entityIds.join(', ')} does not conform to the ${currentObject[PROP_ENTITY_ID]} schema.`\n );\n }\n }\n }\n }\n }\n\n private groupEntitiesByType(entities: Entity[]): Record<string, Entity[]> {\n return entities.reduce((groupedEntities: Record<string, Entity[]>, entity): Record<string, Entity[]> => {\n const entityTypes = Array.isArray(entity[PROP_ENTITY_TYPE])\n ? entity[PROP_ENTITY_TYPE]\n : [entity[PROP_ENTITY_TYPE]];\n for (const type of entityTypes) {\n if (!groupedEntities[type]) {\n groupedEntities[type] = [];\n }\n groupedEntities[type].push(entity);\n }\n return groupedEntities;\n }, {});\n }\n\n private async getSuperClassesOfObject(object: string): Promise<Entity[]> {\n return await this.getParentsOfSelector(object);\n }\n\n private async getSuperClassesOfObjects(nouns: string[]): Promise<Entity[]> {\n return await this.getParentsOfSelector(In(nouns));\n }\n\n private async getParentsOfSelector(selector: string | FindOperator<any, any>): Promise<Entity[]> {\n return await this.findAll({\n where: {\n id: InversePath({\n subPath: OneOrMorePath({ subPath: RDFS.subClassOf as string }),\n value: selector\n })\n }\n });\n }\n\n private async validateEntityConformsToObjectSchema(entity: Entity): Promise<void> {\n const nounIds = Array.isArray(entity[PROP_ENTITY_TYPE]) ? entity[PROP_ENTITY_TYPE] : [entity[PROP_ENTITY_TYPE]];\n const directObjects = await this.findAllBy({ id: In(nounIds) });\n if (directObjects.length > 0) {\n const existingObjectIds = directObjects.map((object): string => object[PROP_ENTITY_ID]);\n const parentObjects = await this.getSuperClassesOfObjects(existingObjectIds);\n for (const currentObject of [...directObjects, ...parentObjects]) {\n const nounSchemaWithTarget = {\n ...currentObject,\n [SHACL.targetNode]: { [PROP_ENTITY_ID]: entity[PROP_ENTITY_ID] }\n };\n const report = await this.convertToQuadsAndValidateAgainstShape(entity, nounSchemaWithTarget);\n if (!report.conforms) {\n this.throwValidationReportError(\n report,\n `Entity ${entity[PROP_ENTITY_ID]} does not conform to the ${currentObject[PROP_ENTITY_ID]} schema.`\n );\n }\n }\n }\n }\n\n private async validateEntitiesWithIdsConformsToObjectSchemaForAttributes(\n ids: string[],\n attributes: Partial<Entity>\n ): Promise<void> {\n for (const id of ids) {\n await this.validateEntityWithIdConformsToObjectSchemaForAttributes(id, attributes);\n }\n }\n\n private async getObjectsAndParentObjectsOfEntity(id: string): Promise<Entity[]> {\n return await this.findAllBy({\n id: InversePath({\n subPath: SequencePath({\n subPath: [RDF.type, ZeroOrMorePath({ subPath: RDFS.subClassOf as string })]\n }),\n value: id\n })\n });\n }\n\n private async validateEntityWithIdConformsToObjectSchemaForAttributes(\n id: string,\n attributes: Partial<Entity>\n ): Promise<void> {\n const nouns = await this.getObjectsAndParentObjectsOfEntity(id);\n for (const currentObject of nouns) {\n if (SHACL.property in currentObject) {\n const nounProperties = ensureArray(currentObject[SHACL.property] as OrArray<NodeObject>).filter(\n (property): boolean => {\n const path = property[SHACL.path];\n if (typeof path === 'string' && path in attributes) {\n return true;\n }\n if (typeof path === 'object' && PROP_ENTITY_ID in path! && (path[PROP_ENTITY_ID] as string) in attributes) {\n return true;\n }\n return false;\n }\n );\n if (nounProperties.length > 0) {\n const nounSchemaWithTarget = {\n [PROP_ENTITY_TYPE]: SHACL.NodeShape,\n [SHACL.targetNode]: { [PROP_ENTITY_ID]: id },\n [SHACL.property]: nounProperties\n };\n const attributesWithId = { ...attributes, [PROP_ENTITY_ID]: id };\n const report = await this.convertToQuadsAndValidateAgainstShape(attributesWithId, nounSchemaWithTarget);\n if (!report.conforms) {\n this.throwValidationReportError(\n report,\n `Entity ${id} does not conform to the ${currentObject[PROP_ENTITY_ID]} schema.`\n );\n }\n }\n }\n }\n }\n\n public async delete(id: string, options?: WriteOptions): Promise<void>;\n public async delete(ids: string[], options?: WriteOptions): Promise<void>;\n public async delete(idOrIds: string | string[], options?: WriteOptions): Promise<void> {\n return PerformanceLogger.withSpanRoot('SklEngine.delete', async() => {\n const idArray = Array.isArray(idOrIds) ? idOrIds : [idOrIds];\n\n await globalHooks.execute(HookTypes.DELETE, HookStages.BEFORE, {\n entities: [],\n operation: 'delete',\n operationParameters: { idArray },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n });\n\n try {\n await this.queryAdapter.delete(idArray);\n\n await globalHooks.execute(HookTypes.DELETE, HookStages.AFTER, {\n entities: [],\n operation: 'delete',\n operationParameters: { idArray },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n });\n } catch (error) {\n await globalHooks.execute(HookTypes.DELETE, HookStages.ERROR, {\n entities: [],\n operation: 'delete',\n operationParameters: { idArray },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n }, error);\n throw error;\n }\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async destroy(entity: Entity): Promise<Entity>;\n public async destroy(entities: Entity[]): Promise<Entity[]>;\n public async destroy(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n if (Array.isArray(entityOrEntities)) {\n return await this.queryAdapter.destroy(entityOrEntities);\n }\n return await this.queryAdapter.destroy(entityOrEntities);\n }\n\n public async destroyAll(): Promise<void> {\n return await this.queryAdapter.destroyAll();\n }\n\n public async performMapping(\n args: JSONValue,\n mapping: OrArray<NodeObject>,\n frame?: Record<string, any>,\n capabilityConfig?: CapabilityConfig,\n jsExecutionOptions?: ExecutionOptions\n ): Promise<NodeObject> {\n const mappingArray = ensureArray(mapping);\n const codeBlocks = mappingArray.filter(\n (mappingItem: NodeObject): boolean =>\n mappingItem[PROP_ENTITY_TYPE] === EngineConstants.spec.codeBlock &&\n this.isJavaScriptCode(getValueIfDefined(mappingItem[EngineConstants.prop.codeBody])!)\n );\n // FIXME: Handle if we can combine the codeb blocks with triples map.\n // As of now if there is any code block, triples map does not get executed.\n if (codeBlocks.length > 0) {\n return await this.executeCodeBlocks(codeBlocks, args, jsExecutionOptions ?? {});\n }\n\n const functions = {\n ...this.functions,\n ...capabilityConfig?.functions\n };\n const mapper = new Mapper({ functions });\n return await mapper.apply(args, mapping, frame ?? {});\n }\n\n public async executeTrigger(integration: string, payload: any): Promise<void> {\n const triggerToCapabilityMapping = await this.findTriggerCapabilityMapping(integration);\n const capabilityArgs = await this.performParameterMappingOnArgsIfDefined(\n payload,\n triggerToCapabilityMapping as Partial<MappingWithInputs> | Partial<MappingWithInputsReference>\n );\n const capabilityId = await this.performCapabilityMappingWithArgs(payload, triggerToCapabilityMapping);\n if (capabilityId) {\n const mappedCapability = (await this.findBy({ id: capabilityId })) as Capability;\n await this.executeCapability(mappedCapability, capabilityArgs);\n }\n }\n\n private async findTriggerCapabilityMapping(integration: string): Promise<TriggerMapping> {\n const triggerCapabilityMappingNew = (await this.findBy(\n {\n type: EngineConstants.spec.capabilityMapping,\n [EngineConstants.prop.capability]: integration,\n [EngineConstants.prop.capabilityType]: EngineConstants.spec.triggerCapabilityMapping\n },\n `Failed to find a Trigger Capability mapping for integration ${integration}`\n )) as TriggerMapping;\n if (triggerCapabilityMappingNew) {\n return triggerCapabilityMappingNew;\n }\n throw new Error(`Failed to find a Trigger Capability mapping for integration ${integration}`);\n }\n\n private async executeCapabilityByName(\n capabilityName: string,\n capabilityArgs: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const capability = await this.findCapabilityWithName(capabilityName);\n return await this.executeCapability(capability, capabilityArgs, capabilityConfig);\n }\n\n private async findCapabilityWithName(capabilityName: string): Promise<Capability> {\n return (await this.findBy(\n { type: EngineConstants.spec.capability, [EngineConstants.prop.label]: capabilityName },\n `Failed to find the capability ${capabilityName} in the schema.`\n )) as Capability;\n }\n\n public async executeCapability(\n capability: Capability,\n capabilityArgs: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n this.globalCallbacks?.onCapabilityStart?.(capability[PROP_ENTITY_ID], capabilityArgs);\n if (capabilityConfig?.callbacks?.onCapabilityStart) {\n Logger.getInstance().log('Capability arguments', capabilityArgs);\n capabilityConfig.callbacks.onCapabilityStart(capability[PROP_ENTITY_ID], capabilityArgs);\n }\n const { mapping, account } = await this.findMappingForCapabilityContextually(\n capability[PROP_ENTITY_ID],\n capabilityArgs\n );\n Logger.getInstance().log('Mapping', JSON.stringify(mapping));\n const shouldValidate = this.shouldValidate(capabilityConfig);\n if (shouldValidate) {\n await this.assertCapabilityParamsMatchParameterSchemas(capabilityArgs, capability);\n }\n\n try {\n // Execute capability mapping before hook if appropriate -\n // works for any mapping that can be used as a verb mapping\n if (mapping) {\n await globalHooks.executeBeforeExecuteCapabilityMapping([capabilityArgs] as Entity[], mapping, { sklEngine: this });\n }\n\n const verbReturnValue = await this.executeMapping(mapping, capabilityArgs, capabilityConfig, account);\n\n if (shouldValidate) {\n await this.assertCapabilityReturnValueMatchesReturnTypeSchema(verbReturnValue, capability);\n }\n\n // Execute capability mapping after hook if appropriate\n if (mapping) {\n await globalHooks.executeAfterExecuteCapabilityMapping([capabilityArgs] as Entity[], mapping, verbReturnValue, { sklEngine: this });\n }\n\n this.globalCallbacks?.onCapabilityEnd?.(capability[PROP_ENTITY_ID], verbReturnValue);\n if (capabilityConfig?.callbacks?.onCapabilityEnd) {\n capabilityConfig.callbacks.onCapabilityEnd(capability[PROP_ENTITY_ID], verbReturnValue);\n }\n\n return verbReturnValue;\n } catch (error) {\n // Execute capability mapping error hook if appropriate\n if (mapping) {\n await globalHooks.executeErrorExecuteCapabilityMapping([capabilityArgs] as Entity[], mapping, error as Error, { sklEngine: this });\n }\n throw error;\n }\n }\n\n private async findMappingForCapabilityContextually(\n capabilityId: string,\n args: JSONObject\n ): Promise<{ mapping: CapabilityMapping; account?: Entity }> {\n if (args.mapping) {\n const mapping = await this.findByIfExists({ id: args.mapping as string });\n if (!mapping) {\n throw new Error(`Mapping ${args.mapping as string} not found.`);\n }\n return { mapping: mapping as CapabilityMapping };\n }\n if (args.object) {\n const mapping = await this.findCapabilityObjectMapping(capabilityId, args.object as string);\n if (mapping) {\n return { mapping };\n }\n }\n if (args.account) {\n const account = await this.findBy({ id: args.account as string });\n const integratedProductId = (account[EngineConstants.prop.integration] as ReferenceNodeObject)[PROP_ENTITY_ID];\n const mapping = await this.findCapabilityIntegrationMapping(capabilityId, integratedProductId);\n if (mapping) {\n return { mapping, account };\n }\n }\n\n const mappings = await this.findAllBy({\n type: EngineConstants.spec.capabilityMapping,\n [EngineConstants.prop.capability]: capabilityId,\n [EngineConstants.prop.integration]: Not(Exists()),\n [EngineConstants.prop.object]: Not(Exists())\n });\n if (mappings.length === 1) {\n return { mapping: mappings[0] as CapabilityMapping };\n }\n if (mappings.length > 1) {\n throw new Error('Multiple mappings found for capability, please specify one.');\n }\n if (args.object) {\n throw new Error(`Mapping between object ${args.object as string} and capability ${capabilityId} not found.`);\n }\n if (args.account) {\n throw new Error(`Mapping between account ${args.account as string} and capability ${capabilityId} not found.`);\n }\n throw new Error(`No mapping found.`);\n }\n\n public async executeMapping(\n mapping: Mapping,\n args: JSONObject,\n capabilityConfig?: CapabilityConfig,\n account?: Entity\n ): Promise<OrArray<NodeObject>> {\n args = await this.addPreProcessingMappingToArgs(mapping, args, capabilityConfig);\n let returnValue: OrArray<NodeObject>;\n // If (EngineConstants.prop.capability in mapping || EngineConstants.prop.capabilityMapping in mapping) {\n // const capabilityId = await this.performCapabilityMappingWithArgs(args, mapping, capabilityConfig);\n // const mappedArgs = await this.performParameterMappingOnArgsIfDefined(\n // { ...args, capabilityId },\n // mapping as MappingWithInputs,\n // capabilityConfig\n // );\n // Logger.getInstance().log('Mapped args', mappedArgs);\n // returnValue = await this.executeCapabilityMapping(mapping, args, mappedArgs, capabilityConfig);\n // } else {\n const mappedArgs = await this.performParameterMappingOnArgsIfDefined(\n args,\n mapping as MappingWithInputs,\n capabilityConfig\n );\n Logger.getInstance().log('Mapped args', mappedArgs);\n if (EngineConstants.prop.operationId in mapping || EngineConstants.prop.operationMapping in mapping) {\n returnValue = (await this.executeOperationMapping(\n mapping,\n mappedArgs,\n args,\n account!,\n capabilityConfig\n )) as NodeObject;\n } else if (EngineConstants.prop.series in mapping) {\n returnValue = await this.executeSeriesMapping(mapping as MappingWithSeries, mappedArgs, capabilityConfig);\n } else if (EngineConstants.prop.parallel in mapping) {\n returnValue = await this.executeParallelMapping(mapping as MappingWithParallel, mappedArgs, capabilityConfig);\n } else {\n returnValue = mappedArgs;\n }\n // }\n return await this.performReturnValueMappingWithFrameIfDefined(\n returnValue as JSONValue,\n mapping as MappingWithOutputsMapping,\n capabilityConfig\n );\n }\n\n private shouldValidate(capabilityConfig?: CapabilityConfig): boolean {\n return capabilityConfig?.disableValidation === undefined\n ? this.disableValidation !== true\n : !capabilityConfig.disableValidation;\n }\n\n private async executeOperationMapping(\n mapping: Mapping,\n mappedArgs: JSONObject,\n originalArgs: JSONObject,\n account: Entity,\n capabilityConfig?: CapabilityConfig\n ): Promise<OperationResponse | OrArray<NodeObject>> {\n const integration = (mapping as CapabilityMapping)[EngineConstants.prop.integration]?.[PROP_ENTITY_ID];\n\n // If the mapping has an integration, it means that the operation is an integration operation\n if (integration) {\n const operationInfo = await this.performOperationMappingWithArgs(originalArgs, mapping, capabilityConfig);\n const response = await this.performOperation(operationInfo, mappedArgs, originalArgs, account, capabilityConfig);\n if (!this.ifCapabilityStreaming(capabilityConfig)) {\n Logger.getInstance().log('Original response', JSON.stringify(response));\n }\n return response;\n }\n // If the mapping does not have an integration, it means that the operation is a capability operation\n return await this.executeCapabilityMapping(mapping, originalArgs, mappedArgs, capabilityConfig);\n }\n\n private async executeSeriesMapping(\n mapping: MappingWithSeries,\n args: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const seriesCapabilityMappingsList = this.rdfListToArray(mapping[EngineConstants.prop.series]!);\n const seriesCapabilityArgs = {\n originalCapabilityParameters: args,\n previousCapabilityReturnValue: {},\n allStepsResults: []\n };\n\n return await this.executeSeriesFromList(seriesCapabilityMappingsList, seriesCapabilityArgs, capabilityConfig);\n }\n\n private rdfListToArray(list: { [RML_LIST]: CapabilityMapping[] } | RdfList<CapabilityMapping>): CapabilityMapping[] {\n if (!(RML_LIST in list)) {\n return [\n list[RDF.first],\n ...getIdFromNodeObjectIfDefined(list[RDF.rest] as ReferenceNodeObject) === RDF.nil\n ? []\n : this.rdfListToArray(list[RDF.rest] as RdfList<CapabilityMapping>)\n ];\n }\n return list[RML_LIST];\n }\n\n private async executeSeriesFromList(\n list: Mapping[],\n args: SeriesCapabilityArgs,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const nextCapabilityMapping = list[0];\n const returnValue = await this.executeMapping(nextCapabilityMapping, args, capabilityConfig);\n if (list.length > 1) {\n return await this.executeSeriesFromList(\n list.slice(1),\n {\n ...args,\n previousCapabilityReturnValue: returnValue as JSONObject,\n allStepsResults: [...args.allStepsResults ?? [], returnValue as JSONObject]\n },\n capabilityConfig\n );\n }\n return returnValue;\n }\n\n private async executeCapabilityMapping(\n capabilityMapping: Mapping,\n originalArgs: JSONObject,\n mappedArgs: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const capabilityId = await this.performCapabilityMappingWithArgs(originalArgs, capabilityMapping, capabilityConfig);\n if (capabilityId) {\n if (capabilityId === EngineConstants.dataSource.update) {\n await this.updateEntityFromcapabilityArgs(mappedArgs);\n return {};\n }\n if (capabilityId === EngineConstants.dataSource.save) {\n return await this.saveEntityOrEntitiesFromcapabilityArgs(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.destroy) {\n return await this.destroyEntityOrEntitiesFromcapabilityArgs(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.findAll) {\n return await this.findAll(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.find) {\n return await this.find(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.count) {\n return await this.countAndWrapValueFromcapabilityArgs(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.exists) {\n return await this.existsAndWrapValueFromcapabilityArgs(mappedArgs);\n }\n if (capabilityId === 'https://skl.ai/capability/execute-code') {\n const codeBlocks = ensureArray((capabilityMapping[EngineConstants.prop.codeBlocks] as any[]) ?? []).filter(\n (mappingItem: any): boolean =>\n mappingItem[PROP_ENTITY_TYPE] === EngineConstants.spec.codeBlock &&\n this.isJavaScriptCode(getValueIfDefined(mappingItem[EngineConstants.prop.codeBody])!)\n );\n return await this.executeCodeBlocks(codeBlocks, mappedArgs, {});\n }\n\n // Check for custom capabilities\n if (globalCustomCapabilities.has(capabilityId)) {\n return await globalCustomCapabilities.execute(capabilityId, mappedArgs, this, capabilityConfig);\n }\n\n return await this.findAndExecuteCapability(capabilityId, mappedArgs, capabilityConfig);\n }\n return {};\n }\n\n private async addPreProcessingMappingToArgs(\n capabilityMapping: Mapping,\n args: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<JSONObject> {\n if (EngineConstants.prop.preProcessingMapping in capabilityMapping) {\n const preMappingArgs = await this.performMapping(\n args,\n capabilityMapping[EngineConstants.prop.preProcessingMapping] as NodeObject,\n getValueIfDefined(capabilityMapping[EngineConstants.prop.preProcessingMappingFrame]),\n capabilityConfig\n );\n return { ...args, preProcessedParameters: preMappingArgs as JSONObject };\n }\n return args;\n }\n\n private replaceTypeAndId(entity: Record<string, any>): Record<string, any> {\n if (typeof entity !== 'object') {\n throw new Error('Entity is not an object');\n }\n const clonedEntity = structuredClone(entity);\n if (clonedEntity[EngineConstants.prop.type]) {\n clonedEntity[PROP_ENTITY_TYPE] = clonedEntity[EngineConstants.prop.type];\n }\n if (clonedEntity[EngineConstants.prop.identifier]) {\n clonedEntity[PROP_ENTITY_ID] = SKL_DATA_NAMESPACE + (clonedEntity[EngineConstants.prop.identifier] as string);\n }\n return clonedEntity;\n }\n\n private async updateEntityFromcapabilityArgs(args: Record<string, any>): Promise<void> {\n let ids = args.id ?? args.ids;\n if (!Array.isArray(ids)) {\n ids = [ids];\n }\n // FIX: Temporary fix for the issue where the id always getting prefixed with the namespace\n ids = ids.map((id: string) => (id.startsWith('http') ? id : `${SKL_DATA_NAMESPACE}${id}`));\n await this.update(ids, args.attributes);\n }\n\n private async saveEntityOrEntitiesFromcapabilityArgs(args: Record<string, any>): Promise<OrArray<Entity>> {\n if (args.entity && typeof args.entity === 'object') {\n args.entity = this.replaceTypeAndId(args.entity);\n }\n if (args.entities && Array.isArray(args.entities)) {\n args.entities = args.entities.map(this.replaceTypeAndId);\n }\n return await this.save(args.entity ?? args.entities);\n }\n\n private async destroyEntityOrEntitiesFromcapabilityArgs(args: Record<string, any>): Promise<OrArray<Entity>> {\n if (args.entity && typeof args.entity === 'object') {\n args.entity = this.replaceTypeAndId(args.entity);\n }\n if (args.entities && Array.isArray(args.entities)) {\n args.entities = args.entities.map(this.replaceTypeAndId);\n }\n return await this.destroy(args.entity ?? args.entities);\n }\n\n private async countAndWrapValueFromcapabilityArgs(args: Record<string, any>): Promise<NodeObject> {\n const count = await this.count(args);\n return {\n [EngineConstants.dataSource.countResult]: {\n [PROP_ENTITY_VALUE]: count,\n [PROP_ENTITY_TYPE]: XSD.integer\n }\n };\n }\n\n private async existsAndWrapValueFromcapabilityArgs(args: Record<string, any>): Promise<NodeObject> {\n const exists = await this.exists(args);\n return {\n [EngineConstants.dataSource.existsResult]: {\n [PROP_ENTITY_VALUE]: exists,\n [PROP_ENTITY_TYPE]: XSD.boolean\n }\n };\n }\n\n public async findAndExecuteCapability(\n capabilityId: string,\n args: Record<string, any>,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const capability = (await this.findBy({ id: capabilityId })) as Capability;\n return await this.executeCapability(capability, args, capabilityConfig);\n }\n\n private async executeParallelMapping(\n mapping: MappingWithParallel,\n args: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<NodeObject[]> {\n const parallelCapabilityMappings = ensureArray(\n mapping[EngineConstants.prop.parallel] as unknown as OrArray<CapabilityMapping>\n );\n const nestedReturnValues = await Promise.all<Promise<OrArray<NodeObject>>>(\n parallelCapabilityMappings.map(\n (capabilityMapping): Promise<OrArray<NodeObject>> =>\n this.executeMapping(capabilityMapping, args, capabilityConfig)\n )\n );\n return nestedReturnValues.flat();\n }\n\n private async findCapabilityIntegrationMapping(\n capabilityId: string,\n integratedProductId: string\n ): Promise<CapabilityMapping | undefined> {\n return (await this.findByIfExists({\n type: EngineConstants.spec.capabilityMapping,\n [EngineConstants.prop.capability]: capabilityId,\n [EngineConstants.prop.integration]: integratedProductId\n })) as CapabilityMapping;\n }\n\n private async performOperationMappingWithArgs(\n args: JSONValue,\n mapping: Mapping,\n capabilityConfig?: CapabilityConfig\n ): Promise<NodeObject> {\n if (mapping[EngineConstants.prop.operationId]) {\n return { [EngineConstants.prop.operationId]: mapping[EngineConstants.prop.operationId] };\n }\n if (mapping[EngineConstants.prop.dataSource]) {\n return { [EngineConstants.prop.dataSource]: mapping[EngineConstants.prop.dataSource] };\n }\n return await this.performMapping(\n args,\n mapping[EngineConstants.prop.operationMapping] as OrArray<NodeObject>,\n undefined,\n capabilityConfig\n );\n }\n\n private async performOperation(\n operationInfo: NodeObject,\n operationArgs: JSONObject,\n originalArgs: JSONObject,\n account: Entity,\n capabilityConfig?: CapabilityConfig,\n securityCredentials?: Entity\n ): Promise<OperationResponse> {\n if (operationInfo[EngineConstants.prop.schemeName]) {\n return await this.performOauthSecuritySchemeStageWithCredentials(\n operationInfo,\n operationArgs,\n account,\n securityCredentials\n );\n }\n if (operationInfo[EngineConstants.prop.dataSource]) {\n return await this.getDataFromDataSource(\n getIdFromNodeObjectIfDefined(operationInfo[EngineConstants.prop.dataSource] as string | ReferenceNodeObject)!,\n capabilityConfig\n );\n }\n if (operationInfo[EngineConstants.prop.operationId]) {\n const response = await this.performOpenapiOperationWithCredentials(\n getValueIfDefined(operationInfo[EngineConstants.prop.operationId])!,\n operationArgs,\n account,\n capabilityConfig\n );\n return this.axiosResponseAndParamsToOperationResponse(response, operationArgs, originalArgs);\n }\n throw new Error('Operation not supported.');\n }\n\n private axiosResponseAndParamsToOperationResponse(\n response: AxiosResponse,\n operationParameters: JSONObject,\n originalArgs: JSONObject\n ): OperationResponse {\n return {\n operationParameters,\n originalCapabilityParameters: originalArgs,\n data: response.data,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n config: {\n headers: response.config.headers,\n method: response.config.method,\n url: response.config.url,\n data: response.config.data\n } as JSONObject\n };\n }\n\n private async performReturnValueMappingWithFrameIfDefined(\n returnValue: JSONValue,\n mapping: MappingWithOutputsMapping,\n capabilityConfig?: CapabilityConfig\n ): Promise<NodeObject> {\n if (EngineConstants.prop.outputsMapping in mapping) {\n return await this.performMapping(\n returnValue,\n mapping[EngineConstants.prop.outputsMapping],\n getValueIfDefined<JSONObject>(mapping[EngineConstants.prop.outputsMappingFrame]),\n capabilityConfig\n );\n }\n return returnValue as NodeObject;\n }\n\n private async performParameterMappingOnArgsIfDefined(\n args: JSONObject,\n mapping: Partial<MappingWithInputs> | Partial<MappingWithInputsReference>,\n capabilityConfig?: CapabilityConfig,\n convertToJsonDeep = false\n ): Promise<Record<string, any>> {\n if (EngineConstants.prop.inputsReference in mapping) {\n const reference = getValueIfDefined<string>(mapping[EngineConstants.prop.inputsReference])!;\n return this.getDataAtReference(reference, args);\n }\n\n if (EngineConstants.prop.inputsMappingRef in mapping) {\n const reference = getValueIfDefined<string>(mapping[EngineConstants.prop.inputsMappingRef])!;\n const referencedMapping = this.getDataAtReference(reference, args);\n\n if (!referencedMapping || referencedMapping?.length === 0) {\n return args;\n }\n\n // Handle inputsMappingFrameRef if present\n let frame;\n if (EngineConstants.prop.inputsMappingFrameRef in mapping) {\n const frameReference = getValueIfDefined<string>(mapping[EngineConstants.prop.inputsMappingFrameRef])!;\n frame = this.getDataAtReference(frameReference, args);\n } else {\n // Use direct frame if provided\n frame = getValueIfDefined(mapping[EngineConstants.prop.inputsMappingFrame]);\n }\n\n // Perform mapping with the referenced mapping and frame\n const mappedData = await this.performMapping(args, referencedMapping, frame, capabilityConfig);\n return toJSON(mappedData, convertToJsonDeep);\n }\n\n if (EngineConstants.prop.inputsMapping in mapping) {\n const mappedData = await this.performMapping(\n args,\n (mapping as MappingWithInputs)[EngineConstants.prop.inputsMapping]!,\n getValueIfDefined(mapping[EngineConstants.prop.inputsMappingFrame]),\n capabilityConfig\n );\n return toJSON(mappedData, convertToJsonDeep);\n }\n return args;\n }\n\n private getDataAtReference(reference: string, data: JSONObject): any {\n const results = JSONPath({\n path: reference,\n json: data,\n resultType: 'value'\n });\n const isArrayOfLengthOne = Array.isArray(results) && results.length === 1;\n let result = isArrayOfLengthOne ? results[0] : results;\n if (result && typeof result === 'object' && PROP_ENTITY_VALUE in result) {\n result = result[PROP_ENTITY_VALUE];\n }\n return result;\n }\n\n private async getIntegrationInterface(\n integratedProductId: string,\n integrationType = EngineConstants.spec.integrationInterface\n ): Promise<Entity | null> {\n if (integrationType === EngineConstants.spec.integrationInterface) {\n const integrationInterface = await this.findBy({\n type: integrationType,\n [EngineConstants.prop.type]: EngineConstants.spec.openApi,\n [EngineConstants.prop.integration]: integratedProductId\n });\n return integrationInterface;\n }\n // Add support for other integration types\n return null;\n }\n\n private async findSecurityCredentialsForAccountIfDefined(accountId: string): Promise<Entity | undefined> {\n return await this.findByIfExists({\n type: EngineConstants.spec.integrationAuthenticationCredential,\n [EngineConstants.prop.accountOrUser]: accountId\n });\n }\n\n private async findgetOpenApiRuntimeAuthorizationCapabilityIfDefined(): Promise<Capability | undefined> {\n return (await this.findByIfExists({\n type: EngineConstants.spec.capability,\n [EngineConstants.prop.label]: OPEN_API_RUNTIME_AUTHORIZATION\n })) as Capability;\n }\n\n private async getRuntimeCredentialsWithSecurityCredentials(\n securityCredentials: Entity,\n integrationId: string,\n openApiOperationInformation: OperationWithPathInfo,\n operationArgs: JSONObject\n ): Promise<JSONObject> {\n const getOpenApiRuntimeAuthorizationCapability = await this.findgetOpenApiRuntimeAuthorizationCapabilityIfDefined();\n if (!getOpenApiRuntimeAuthorizationCapability) {\n return {};\n }\n const mapping = await this.findCapabilityIntegrationMapping(\n getOpenApiRuntimeAuthorizationCapability[PROP_ENTITY_ID],\n integrationId\n );\n if (!mapping) {\n return {};\n }\n const args = {\n securityCredentials,\n openApiExecutorOperationWithPathInfo: openApiOperationInformation,\n operationArgs\n } as JSONObject;\n const operationInfoJsonLd = await this.performParameterMappingOnArgsIfDefined(args, mapping, undefined, true);\n const headers = getValueIfDefined<JSONObject>(operationInfoJsonLd[EngineConstants.prop.headers]);\n return headers ?? {};\n }\n\n private async createOpenApiOperationExecutorWithSpec(openApiDescription: OpenApi): Promise<OpenApiOperationExecutor> {\n const executor = new OpenApiOperationExecutor();\n await executor.setOpenapiSpec(openApiDescription);\n return executor;\n }\n\n private async findCapabilityObjectMapping(capabilityId: string, object: string): Promise<CapabilityMapping> {\n return (await this.findByIfExists({\n type: EngineConstants.spec.capabilityMapping,\n [EngineConstants.prop.capability]: capabilityId,\n [EngineConstants.prop.object]: InversePath({\n subPath: ZeroOrMorePath({ subPath: RDFS.subClassOf as string }),\n value: object\n })\n })) as CapabilityMapping;\n }\n\n private async performCapabilityMappingWithArgs(\n args: JSONValue,\n mapping: Mapping,\n capabilityConfig?: CapabilityConfig\n ): Promise<string | undefined> {\n if (mapping[EngineConstants.prop.operationId]) {\n return getValueIfDefined<string>(mapping[EngineConstants.prop.operationId])!;\n }\n if (mapping[EngineConstants.prop.operationId]) {\n return getValueIfDefined<string>(mapping[EngineConstants.prop.operationId])!;\n }\n const capabilityInfoJsonLd = await this.performMapping(\n args,\n mapping[EngineConstants.prop.operationMapping] as NodeObject,\n undefined,\n capabilityConfig\n );\n return getValueIfDefined<string>(capabilityInfoJsonLd[EngineConstants.prop.operationId])!;\n }\n\n private async assertCapabilityParamsMatchParameterSchemas(\n capabilityParams: any,\n capability: Capability\n ): Promise<void> {\n let parametersSchemaObject = capability[EngineConstants.prop.inputs];\n if (parametersSchemaObject?.[PROP_ENTITY_ID] && Object.keys(parametersSchemaObject).length === 1) {\n parametersSchemaObject = await this.findBy({ id: parametersSchemaObject[PROP_ENTITY_ID] });\n }\n if (capabilityParams && parametersSchemaObject) {\n const capabilityParamsAsJsonLd = {\n '@context': getValueIfDefined<ContextDefinition>(capability[EngineConstants.prop.inputsContext]),\n [PROP_ENTITY_TYPE]: EngineConstants.spec.inputs,\n ...capabilityParams\n };\n const report = await this.convertToQuadsAndValidateAgainstShape(capabilityParamsAsJsonLd, parametersSchemaObject);\n if (!report.conforms) {\n this.throwValidationReportError(\n report,\n `${getValueIfDefined(capability[EngineConstants.prop.label])} parameters do not conform to the schema`\n );\n }\n }\n }\n\n private async performOpenapiOperationWithCredentials(\n operationId: string,\n operationArgs: JSONObject,\n account: Entity,\n capabilityConfig?: CapabilityConfig\n ): Promise<AxiosResponse> {\n const integratedProductId = (account[EngineConstants.prop.integration] as ReferenceNodeObject)[PROP_ENTITY_ID];\n const restAPIInterface = await this.getIntegrationInterface(integratedProductId);\n if (!restAPIInterface) {\n throw new Error(`No integration interface found for integrated product ${integratedProductId}`);\n }\n const openApiDescription = getValueIfDefined<OpenApi>(\n restAPIInterface[EngineConstants.prop.declarativeApiDescription]\n )!;\n const openApiExecutor = await this.createOpenApiOperationExecutorWithSpec(openApiDescription);\n // eslint-disable-next-line @typescript-eslint/await-thenable\n const openApiOperationInformation = await openApiExecutor.getOperationWithPathInfoMatchingOperationId(operationId);\n const securityCredentials = await this.findSecurityCredentialsForAccountIfDefined(account[PROP_ENTITY_ID]);\n let runtimeAuthorization: JSONObject = {};\n if (securityCredentials) {\n const generatedRuntimeCredentials = await this.getRuntimeCredentialsWithSecurityCredentials(\n securityCredentials,\n integratedProductId,\n openApiOperationInformation,\n operationArgs\n );\n if (generatedRuntimeCredentials && Object.keys(generatedRuntimeCredentials).length > 0) {\n runtimeAuthorization = generatedRuntimeCredentials;\n }\n }\n const apiKey = [\n getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.apiKey]),\n this.getAuthorizationHeaderFromRuntimeCredentials(runtimeAuthorization)\n ].find(Boolean);\n const configuration = {\n accessToken: getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.accessToken]),\n bearerToken: getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.bearerToken]),\n apiKey,\n basePath: getValueIfDefined<string>(account[EngineConstants.prop.overrideBasePath]),\n username: getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.username]),\n password: getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.password])\n };\n let response;\n let executeOperationOptions: AxiosRequestConfig | undefined;\n try {\n const additionalHeaders = this.getHeadersFromRuntimeCredentials(runtimeAuthorization) as any;\n if (\n additionalHeaders &&\n typeof additionalHeaders === 'object' &&\n !Array.isArray(additionalHeaders) &&\n Object.keys(additionalHeaders).length > 0\n ) {\n executeOperationOptions = { headers: additionalHeaders };\n }\n if (this.ifCapabilityStreaming(capabilityConfig)) {\n executeOperationOptions = {\n ...executeOperationOptions,\n responseType: 'stream'\n };\n } else if (this.ifCapabilityBuffering(capabilityConfig)) {\n executeOperationOptions = {\n ...executeOperationOptions,\n responseType: 'arraybuffer'\n };\n }\n response = await openApiExecutor.executeOperation(\n operationId,\n configuration,\n operationArgs,\n executeOperationOptions\n );\n } catch (error: unknown) {\n if (\n axios.isAxiosError(error) &&\n await this.isInvalidTokenError(error, integratedProductId) &&\n securityCredentials\n ) {\n const refreshedConfiguration = await this.refreshSecurityCredentials(\n securityCredentials,\n integratedProductId,\n account\n );\n response = await openApiExecutor.executeOperation(\n operationId,\n refreshedConfiguration,\n operationArgs,\n executeOperationOptions\n );\n } else {\n throw error;\n }\n }\n return response;\n }\n\n private getHeadersFromRuntimeCredentials(runtimeCredentials: JSONObject): JSONObject {\n let returnValue: JSONObject = {};\n if (\n runtimeCredentials.headers &&\n typeof runtimeCredentials.headers === 'object' &&\n Object.keys(runtimeCredentials.headers).length > 0 &&\n !Array.isArray(runtimeCredentials.headers)\n ) {\n returnValue = runtimeCredentials.headers;\n }\n return returnValue;\n }\n\n private getAuthorizationHeaderFromRuntimeCredentials(runtimeCredentials: JSONObject): string | undefined {\n const headers = this.getHeadersFromRuntimeCredentials(runtimeCredentials);\n if (headers && 'Authorization' in headers) {\n const authorizationHeader = headers.Authorization;\n if (typeof authorizationHeader === 'string') {\n return authorizationHeader;\n }\n }\n return undefined;\n }\n\n private async isInvalidTokenError(error: AxiosError, integratedProductId: string): Promise<boolean> {\n const integrationInterface = await this.getIntegrationInterface(integratedProductId);\n if (!integrationInterface) {\n return false;\n }\n\n const errorMatcher = integrationInterface[EngineConstants.prop.invalidTokenErrorMatcher] as NodeObject;\n const errorMatcherStatus =\n errorMatcher && getValueIfDefined<string>(errorMatcher[EngineConstants.prop.invalidTokenErrorMatcherStatus]);\n const errorMatcherRegex =\n errorMatcher &&\n getValueIfDefined<string>(errorMatcher[EngineConstants.prop.invalidTokenErrorMatcherMessageRegex])!;\n if (errorMatcher && error.response?.status === errorMatcherStatus) {\n if (!errorMatcherRegex) {\n return true;\n }\n if (error.response?.statusText && new RegExp(errorMatcherRegex, 'u').test(error.response?.statusText)) {\n return true;\n }\n }\n\n return false;\n }\n\n private async refreshSecurityCredentials(\n securityCredentials: Entity,\n integrationId: string,\n account: Entity,\n capabilityConfig?: CapabilityConfig\n ): Promise<OpenApiClientConfiguration> {\n const getOauthTokenCapability = (await this.findBy({\n type: EngineConstants.spec.capability,\n [EngineConstants.prop.label]: 'getOauthTokens'\n })) as Capability;\n const mapping = await this.findCapabilityIntegrationMapping(getOauthTokenCapability[PROP_ENTITY_ID], integrationId);\n if (!mapping) {\n throw new Error(\n `No mapping found for capability ${getOauthTokenCapability[PROP_ENTITY_ID]} and integration ${integrationId}`\n );\n }\n const args = {\n refreshToken: getValueIfDefined<string>(securityCredentials[EngineConstants.prop.refreshToken])!,\n jwtBearerOptions: getValueIfDefined<string>(securityCredentials[EngineConstants.prop.jwtBearerOptions])!\n };\n const operationArgs = await this.performParameterMappingOnArgsIfDefined(args, mapping, capabilityConfig, true);\n const operationInfoJsonLd = await this.performOperationMappingWithArgs({}, mapping, capabilityConfig);\n const rawReturnValue = await this.performOperation(\n operationInfoJsonLd,\n operationArgs,\n args,\n account,\n capabilityConfig,\n securityCredentials\n );\n const mappedReturnValue = await this.performReturnValueMappingWithFrameIfDefined(\n rawReturnValue,\n mapping as MappingWithOutputsMapping,\n capabilityConfig\n );\n await this.assertCapabilityReturnValueMatchesReturnTypeSchema(mappedReturnValue, getOauthTokenCapability);\n const bearerToken = getValueIfDefined<string>(mappedReturnValue[EngineConstants.prop.bearerToken]);\n const accessToken = getValueIfDefined<string>(mappedReturnValue[EngineConstants.prop.accessToken]);\n const refreshToken = getValueIfDefined<string>(mappedReturnValue[EngineConstants.prop.refreshToken]);\n if (bearerToken) {\n securityCredentials[EngineConstants.prop.bearerToken] = bearerToken;\n }\n if (accessToken) {\n securityCredentials[EngineConstants.prop.accessToken] = accessToken;\n }\n if (refreshToken) {\n securityCredentials[EngineConstants.prop.refreshToken] = refreshToken;\n }\n await this.save(securityCredentials);\n return { accessToken, bearerToken };\n }\n\n private getOauthConfigurationFromSecurityCredentials(securityCredentialsSchema: Entity): OpenApiClientConfiguration {\n const username = getValueIfDefined<string>(securityCredentialsSchema[EngineConstants.prop.username]);\n const password = getValueIfDefined<string>(securityCredentialsSchema[EngineConstants.prop.password]);\n const accessToken = getValueIfDefined<string>(securityCredentialsSchema[EngineConstants.prop.accessToken]);\n return { username, password, accessToken };\n }\n\n private async assertCapabilityReturnValueMatchesReturnTypeSchema(\n returnValue: OrArray<NodeObject>,\n capability: Capability\n ): Promise<void> {\n let returnTypeSchemaObject = capability[EngineConstants.prop.outputs];\n if (returnTypeSchemaObject?.[PROP_ENTITY_ID] && Object.keys(returnTypeSchemaObject).length === 1) {\n returnTypeSchemaObject = await this.findBy({ id: returnTypeSchemaObject[PROP_ENTITY_ID] });\n }\n let report: ValidationReport | undefined;\n if (returnValue && returnTypeSchemaObject) {\n if (Array.isArray(returnValue)) {\n if (returnValue.some((valueItem): boolean => PROP_ENTITY_ID in valueItem)) {\n returnTypeSchemaObject[SHACL.targetNode] = returnValue.reduce(\n (nodes: ReferenceNodeObject[], outputItem): ReferenceNodeObject[] => {\n if (outputItem[PROP_ENTITY_ID]) {\n nodes.push({ [PROP_ENTITY_ID]: outputItem[PROP_ENTITY_ID] });\n }\n return nodes;\n },\n []\n );\n } else {\n const targetClasses = returnValue.reduce(\n (nodes: ReferenceNodeObject[], outputItem): ReferenceNodeObject[] => {\n if (outputItem[PROP_ENTITY_TYPE]) {\n const type = Array.isArray(outputItem[PROP_ENTITY_TYPE])\n ? outputItem[PROP_ENTITY_TYPE][0]\n : outputItem[PROP_ENTITY_TYPE];\n if (!nodes.includes({ [PROP_ENTITY_ID]: type })) {\n nodes.push({ [PROP_ENTITY_ID]: type });\n }\n }\n return nodes;\n },\n []\n );\n if (targetClasses.length > 0) {\n returnTypeSchemaObject[SHACL.targetClass] = targetClasses;\n }\n }\n report = await this.convertToQuadsAndValidateAgainstShape(returnValue, returnTypeSchemaObject);\n } else if (Object.keys(returnValue).length > 0) {\n if (returnValue[PROP_ENTITY_ID]) {\n returnTypeSchemaObject[SHACL.targetNode] = { [PROP_ENTITY_ID]: returnValue[PROP_ENTITY_ID] };\n } else if (returnValue[PROP_ENTITY_TYPE]) {\n returnTypeSchemaObject[SHACL.targetClass] = {\n [PROP_ENTITY_ID]: Array.isArray(returnValue[PROP_ENTITY_TYPE])\n ? returnValue[PROP_ENTITY_TYPE][0]\n : returnValue[PROP_ENTITY_TYPE]!\n };\n }\n report = await this.convertToQuadsAndValidateAgainstShape(returnValue, returnTypeSchemaObject);\n }\n }\n\n if (report && !report?.conforms) {\n throw new Error(\n `Return value ${\n Array.isArray(returnValue) ? 'array' : returnValue[PROP_ENTITY_ID]\n } does not conform to the schema`\n );\n }\n }\n\n private async convertToQuadsAndValidateAgainstShape(\n value: OrArray<NodeObject>,\n shape: NodeObject\n ): Promise<ValidationReport> {\n const valueAsQuads = await convertJsonLdToQuads(Array.isArray(value) ? value : [value]);\n const shapeQuads = await convertJsonLdToQuads(shape);\n const validator = new SHACLValidator(shapeQuads);\n return validator.validate(valueAsQuads);\n }\n\n private async performOauthSecuritySchemeStageWithCredentials(\n operationInfo: NodeObject,\n operationParameters: JSONObject,\n account: Entity,\n securityCredentials?: Entity\n ): Promise<OperationResponse> {\n const integratedProductId = (account[EngineConstants.prop.integration] as ReferenceNodeObject)[PROP_ENTITY_ID];\n const restAPIInterface = await this.getIntegrationInterface(integratedProductId);\n if (!restAPIInterface) {\n throw new Error(`No integration interface found for integrated product ${integratedProductId}`);\n }\n const openApiDescription = getValueIfDefined<OpenApi>(\n restAPIInterface[EngineConstants.prop.declarativeApiDescription]\n )!;\n securityCredentials ||= await this.findSecurityCredentialsForAccountIfDefined(account[PROP_ENTITY_ID]);\n let configuration: OpenApiClientConfiguration;\n if (securityCredentials) {\n configuration = this.getOauthConfigurationFromSecurityCredentials(securityCredentials);\n operationParameters.client_id = getValueIfDefined<string>(securityCredentials[EngineConstants.prop.username])!;\n } else {\n configuration = {};\n }\n const openApiExecutor = await this.createOpenApiOperationExecutorWithSpec(openApiDescription);\n const response = await openApiExecutor.executeSecuritySchemeStage(\n getValueIfDefined(operationInfo[EngineConstants.prop.schemeName])!,\n getValueIfDefined(operationInfo[EngineConstants.prop.oauthFlow])!,\n getValueIfDefined(operationInfo[EngineConstants.prop.stage])!,\n configuration,\n operationParameters\n );\n if ('codeVerifier' in response && 'authorizationUrl' in response) {\n return {\n data: response as unknown as JSONObject,\n operationParameters\n };\n }\n return this.axiosResponseAndParamsToOperationResponse(response, operationParameters, operationParameters);\n }\n\n private async getDataFromDataSource(\n dataSourceId: string,\n capabilityConfig?: CapabilityConfig\n ): Promise<OperationResponse> {\n const dataSource = await this.findBy({ id: dataSourceId });\n if (dataSource[PROP_ENTITY_TYPE] === EngineConstants.spec.jsonDataSource) {\n const data = this.getDataFromJsonDataSource(dataSource, capabilityConfig);\n return { data, operationParameters: {}};\n }\n throw new Error(`DataSource type ${dataSource[PROP_ENTITY_TYPE]} is not supported.`);\n }\n\n private getDataFromJsonDataSource(dataSource: NodeObject, capabilityConfig?: CapabilityConfig): JSONObject {\n if (dataSource[EngineConstants.prop.source]) {\n const sourceValue = getValueIfDefined<string>(dataSource[EngineConstants.prop.source])!;\n return this.getJsonDataFromSource(sourceValue, capabilityConfig);\n }\n return getValueIfDefined<JSONObject>(dataSource[EngineConstants.prop.data])!;\n }\n\n private getJsonDataFromSource(source: string, capabilityConfig?: CapabilityConfig): JSONObject {\n const inputFiles = {\n ...this.inputFiles,\n ...capabilityConfig?.inputFiles\n };\n if (source in inputFiles) {\n const file = inputFiles[source];\n if (typeof file === 'string') {\n return JSON.parse(file);\n }\n return file;\n }\n // eslint-disable-next-line unicorn/expiring-todo-comments\n // TODO add support for remote sources\n throw new Error(`Failed to get data from source ${source}`);\n }\n\n private throwValidationReportError(report: ValidationReport, errorMessage: string): void {\n const reportMessages = this.validationReportToMessages(report);\n throw new Error(`${errorMessage}\\n\\n${reportMessages.join('\\n')}`);\n }\n\n private validationReportToMessages(report: ValidationReport): string[] {\n const reportMessages = [];\n for (const result of report.results) {\n const pathValue = result.path?.value;\n if (result.message.length === 0) {\n const message = `${pathValue}: Invalid due to ${result.sourceConstraintComponent?.value}`;\n reportMessages.push(message);\n } else {\n const resultMessages = result.message.map((message): string => `${message.value}`).join(', ');\n const message = `${pathValue}: ${resultMessages}`;\n reportMessages.push(message);\n }\n }\n return reportMessages;\n }\n\n private ifCapabilityStreaming(capabilityConfig?: CapabilityConfig): boolean {\n return Boolean(capabilityConfig && 'stream' in capabilityConfig && capabilityConfig.stream);\n }\n\n private ifCapabilityBuffering(capabilityConfig?: CapabilityConfig): boolean {\n return Boolean(capabilityConfig && 'buffer' in capabilityConfig && capabilityConfig.buffer);\n }\n\n private isJavaScriptCode(text: string): boolean {\n if (!text) {\n return false;\n }\n // Trim the text to handle leading/trailing whitespace\n const trimmed = text.trim();\n\n // First, quickly check if it looks like JSON (starts with { or [)\n const looksLikeJson = /^\\s*[[{]/.test(trimmed) && /[\\]}]\\s*$/.test(trimmed);\n\n if (looksLikeJson) {\n try {\n // If it can be parsed as JSON, it's likely an RML mapping\n JSON.parse(trimmed);\n return false;\n } catch {\n // If it looks like JSON but can't be parsed, it might be code\n // Continue with other checks\n }\n }\n\n // Check for common JavaScript patterns that wouldn't appear in JSON\n const jsPatterns = [\n /function\\s+[$A-Z_a-z][\\w$]*\\s*\\(/, // Function declaration\n /const\\s+[$A-Z_a-z][\\w$]*/, // Const declaration\n /let\\s+[$A-Z_a-z][\\w$]*/, // Let declaration\n /var\\s+[$A-Z_a-z][\\w$]*/, // Var declaration\n /if\\s*\\(/, // If statement\n /for\\s*\\(/, // For loop\n /while\\s*\\(/, // While loop\n /=>|return |console\\./, // Arrow functions, return statements, console usage\n /import\\s+|export\\s+/, // ES6 imports/exports\n /class\\s+[$A-Z_a-z][\\w$]*/, // Class declaration\n /\\/\\/|\\/\\*|\\*\\// // Comments\n ];\n\n // If it matches any JS pattern, it's likely code\n return jsPatterns.some(pattern => pattern.test(trimmed));\n }\n\n private ensureNodeObject(result: any): NodeObject {\n // Handle null/undefined results\n if (result === null || result === undefined) {\n return {};\n }\n\n // If it's already a NodeObject with proper formatting, return as is\n if (\n typeof result === 'object' &&\n !Array.isArray(result) &&\n (result[PROP_ENTITY_ID] !== undefined ||\n result[PROP_ENTITY_TYPE] !== undefined ||\n result['@context'] !== undefined ||\n result['@graph'] !== undefined)\n ) {\n return result as NodeObject;\n }\n\n // Handle arrays - convert to @graph\n if (Array.isArray(result)) {\n // Check if items in array are already objects\n const convertedItems = result.map(item => {\n if (typeof item === 'object' && item !== null) {\n // Already object, but ensure it has @type if not present\n if (!item[PROP_ENTITY_TYPE] && !item[PROP_ENTITY_ID] && !item[PROP_ENTITY_VALUE]) {\n return { [PROP_ENTITY_TYPE]: 'skl:Result', ...item };\n }\n return item;\n }\n // Convert primitives to objects with @value\n return { [PROP_ENTITY_VALUE]: item };\n });\n\n return {\n '@context': {\n skl: SKL_NAMESPACE\n },\n '@graph': convertedItems\n };\n }\n\n // Handle primitive values (string, number, boolean)\n if (typeof result !== 'object') {\n return {\n [PROP_ENTITY_VALUE]: result\n };\n }\n\n // Handle plain objects (not arrays, not null)\n // If it's a plain object but not in NodeObject format, add @type\n return {\n [PROP_ENTITY_TYPE]: 'skl:Result',\n '@context': {\n skl: SKL_NAMESPACE\n },\n ...result\n };\n }\n\n private async executeCodeBlocks(\n codeBlocks: NodeObject[],\n args: JSONValue,\n executionOptions: ExecutionOptions\n ): Promise<NodeObject> {\n const results = [];\n let updatedArgs = (args as Record<string, any>) || {};\n for (const codeBlock of codeBlocks) {\n const code = getValueIfDefined(codeBlock[EngineConstants.prop.codeBody])!;\n if (code) {\n const result = await this.executeJavaScriptMapping(updatedArgs, code as string, executionOptions);\n updatedArgs = {\n ...updatedArgs,\n ...result\n };\n results.push(result);\n }\n }\n return results.length > 0 ? results[results.length - 1] : {};\n }\n\n private async executeJavaScriptMapping(\n args: JSONValue,\n code: string,\n _executionOptions: ExecutionOptions\n ): Promise<NodeObject> {\n try {\n // Configure execution options\n const executionOptions: ExecutionOptions = {\n timeout: 60 * 60 * 1000, // 1 hour\n functionName: 'main',\n allowNetwork: true,\n allowedDomains: [],\n allowEnv: true,\n debugMode: true,\n allowRead: true,\n ..._executionOptions\n };\n\n if (!this.codeExecutor) {\n throw new Error('Code executor not set. Please set a code executor using setCodeExecutor()');\n }\n\n // Execute the code\n const executionResult = await this.codeExecutor.execute(code, args as Record<string, any>, executionOptions);\n\n // Handle execution errors\n if (executionResult?.error) {\n throw new Error(`Code execution error: ${executionResult.error?.message ?? 'Unknown error'}`);\n }\n\n // This is a patch to return the output as it is without converting to NodeObject\n // This is needed for some api inputs. We can try doing this using the frame.\n if (executionResult?.result?.rawOutput) {\n return executionResult?.result?.rawOutput;\n }\n // Convert the result to a NodeObject\n return this.ensureNodeObject(executionResult?.result ?? executionResult);\n } catch (error: unknown) {\n throw new Error(\n `Failed to execute JavaScript mapping: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n\n // Expose global hooks to users\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n get hooks(): typeof globalHooks {\n return globalHooks;\n }\n\n public async prepareContextForType(typeSpecOrId: any): Promise<Record<string, any>> {\n const typeSpecs = [];\n if (typeof typeSpecOrId === 'string') {\n typeSpecs.push(\n await this.getSuperClassesOfObject(typeSpecOrId),\n await this.findBy({ id: typeSpecOrId })\n );\n } else {\n typeSpecs.push(typeSpecOrId);\n }\n const context: Record<string, any> = {};\n\n for (const typeSpec of typeSpecs) {\n const properties = typeSpec[SHACL.property] ?? [];\n for (const property of ensureArray(properties)) {\n const dataType = property[SHACL.datatype]?.['@id'];\n const nodeKind = property[SHACL.nodeKind]?.['@id'];\n const path = property[SHACL.path]?.['@id'];\n if (nodeKind === SHACL.IRI) {\n context[path] = {\n '@type': '@id'\n };\n } else {\n context[path] = {\n '@type': dataType\n };\n }\n }\n }\n return context;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SklEngine.js","sourceRoot":"","sources":["../src/SklEngine.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-div-regex */\n/* eslint-disable line-comment-position */\n\n/* eslint-disable no-inline-comments */\n/* eslint-disable require-unicode-regexp */\n \n \n \n/* eslint-disable @typescript-eslint/naming-convention */\nimport type { OpenApi, OpenApiClientConfiguration, OperationWithPathInfo } from '@comake/openapi-operation-executor';\nimport { OpenApiOperationExecutor } from '@comake/openapi-operation-executor';\nimport { getIdFromNodeObjectIfDefined, XSD, type ReferenceNodeObject } from '@comake/rmlmapper-js';\nimport type { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport axios from 'axios';\nimport type { ContextDefinition, GraphObject, NodeObject } from 'jsonld';\nimport type { Frame } from 'jsonld/jsonld-spec';\nimport { JSONPath } from 'jsonpath-plus';\nimport SHACLValidator from 'rdf-validate-shacl';\nimport type ValidationReport from 'rdf-validate-shacl/src/validation-report';\nimport {\n EngineConstants,\n OPEN_API_RUNTIME_AUTHORIZATION,\n PROP_ENTITY_ID,\n PROP_ENTITY_TYPE,\n PROP_ENTITY_VALUE,\n RDF,\n RDFS,\n RML_LIST,\n SHACL\n} from './constants';\nimport { globalCustomCapabilities } from './customCapabilities';\nimport { globalHooks, HookStages, HookTypes } from './hooks/globalHooks';\nimport type { ExecutionOptions } from './JsExecutor';\nimport type { ICodeExecutor } from './JsExecutor/types';\nimport { Logger } from './logger';\nimport { Mapper } from './mapping/Mapper';\nimport type { SklEngineOptions } from './SklEngineOptions';\nimport type { FindOperator } from './storage/FindOperator';\nimport type { FindAllOptions, FindOneOptions, FindOptionsWhere } from './storage/FindOptionsTypes';\nimport type { GroupByOptions, GroupByResponse } from './storage/GroupOptionTypes';\nimport { Exists } from './storage/operator/Exists';\nimport { In } from './storage/operator/In';\nimport { InversePath } from './storage/operator/InversePath';\nimport { Not } from './storage/operator/Not';\nimport { OneOrMorePath } from './storage/operator/OneOrMorePath';\nimport { SequencePath } from './storage/operator/SequencePath';\nimport { ZeroOrMorePath } from './storage/operator/ZeroOrMorePath';\nimport type { QueryAdapter, RawQueryResult } from './storage/query-adapter/QueryAdapter';\nimport { SparqlQueryAdapter } from './storage/query-adapter/sparql/SparqlQueryAdapter';\nimport { PerformanceLogger } from './util/PerformanceLogger';\n// Import './util/safeJsonStringify';\nimport type {\n Callbacks,\n Capability,\n CapabilityConfig,\n CapabilityMapping,\n Entity,\n JSONObject,\n JSONValue,\n Mapping,\n MappingWithInputs,\n MappingWithInputsReference,\n MappingWithOutputsMapping,\n MappingWithParallel,\n MappingWithSeries,\n OperationResponse,\n OrArray,\n RdfList,\n SeriesCapabilityArgs,\n SKLEngineInterface,\n TriggerMapping\n} from './util/Types';\nimport { convertJsonLdToQuads, ensureArray, getValueIfDefined, toJSON } from './util/Util';\nimport { SKL_DATA_NAMESPACE, SKL_NAMESPACE } from './util/Vocabularies';\n\nexport type CapabilityHandler = <T extends OrArray<NodeObject> = OrArray<NodeObject>>(\n params: JSONObject,\n capabilityConfig?: CapabilityConfig\n) => Promise<T>;\nexport type CapabilityInterface = Record<string, CapabilityHandler>;\n\nexport type MappingResponseOption<T extends boolean> = T extends true ? JSONObject : NodeObject;\n\nexport type WriteOptions = { bypassHooks?: boolean };\n\nexport class SKLEngine implements SKLEngineInterface {\n private readonly queryAdapter: QueryAdapter;\n private readonly functions?: Record<string, (args: any | any[]) => any>;\n private readonly inputFiles?: Record<string, string>;\n private readonly globalCallbacks?: Callbacks;\n private readonly disableValidation?: boolean;\n public readonly capability: CapabilityInterface;\n private codeExecutor: ICodeExecutor | undefined;\n private readonly skdsEndpointUrl: string;\n private readonly scriptPath: string;\n private readonly logger: Logger;\n public constructor(options: SklEngineOptions) {\n this.queryAdapter = new SparqlQueryAdapter(options);\n this.disableValidation = options.disableValidation;\n this.globalCallbacks = options.callbacks;\n this.inputFiles = options.inputFiles;\n this.skdsEndpointUrl = (options as any).endpointUrl;\n this.scriptPath = (options as any).scriptPath;\n if (options.functions) {\n this.functions = Object.fromEntries(\n Object.entries(options.functions).map(([key, func]) => [\n key,\n (data: Record<string | number, any> = {}) => {\n // Add the SKL instance to the data object\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n data.skl = this;\n\n // Call the original function\n return func(data);\n }\n ])\n );\n }\n this.logger = Logger.getInstance(options.debugMode);\n\n // eslint-disable-next-line func-style\n const getCapabilityHandler =\n (getTarget: CapabilityInterface, property: string): CapabilityHandler =>\n async <T extends OrArray<NodeObject> = OrArray<NodeObject>>(\n capabilityArgs: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<T> =>\n this.executeCapabilityByName(property, capabilityArgs, capabilityConfig) as Promise<T>;\n this.capability = new Proxy({} as CapabilityInterface, { get: getCapabilityHandler });\n }\n\n public setCodeExecutor(codeExecutor: ICodeExecutor): void {\n this.codeExecutor = codeExecutor;\n }\n\n public async executeRawQuery<T extends RawQueryResult>(query: string): Promise<T[]> {\n return await this.queryAdapter.executeRawQuery<T>(query);\n }\n\n public async executeRawUpdate(query: string): Promise<void> {\n return await this.queryAdapter.executeRawUpdate(query);\n }\n\n public async executeRawConstructQuery(query: string, frame?: Frame): Promise<GraphObject> {\n return await this.queryAdapter.executeRawConstructQuery(query, frame);\n }\n\n public async find(options?: FindOneOptions): Promise<Entity> {\n return PerformanceLogger.withSpanRoot('SklEngine.find', async() => {\n const context = {\n entities: [],\n operation: 'find',\n operationParameters: { options },\n sklEngine: this\n };\n\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n\n try {\n const entity = await this.queryAdapter.find(options);\n if (!entity) {\n throw new Error(`No schema found with fields matching ${JSON.stringify(options)}`);\n }\n\n const updatedContext = { ...context, entities: [entity]};\n const afterHookResult = await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, entity);\n\n return afterHookResult || entity;\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { options });\n }\n\n public async findBy(where: FindOptionsWhere, notFoundErrorMessage?: string): Promise<Entity> {\n return PerformanceLogger.withSpanRoot('SklEngine.findBy', async() => {\n const context = {\n entities: [],\n operation: 'findBy',\n operationParameters: { where },\n sklEngine: this\n };\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n try {\n const entity = await this.queryAdapter.findBy(where);\n if (entity) {\n const updatedContext = { ...context, entities: [entity]};\n await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, entity);\n return entity;\n }\n throw new Error(notFoundErrorMessage ?? `No schema found with fields matching ${JSON.stringify(where)}`);\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { where });\n }\n\n public async findByIfExists(options: FindOptionsWhere): Promise<Entity | undefined> {\n try {\n const entity = await this.findBy(options);\n return entity;\n } catch {\n return undefined;\n }\n }\n\n public async findAll(options?: FindAllOptions): Promise<Entity[]> {\n return PerformanceLogger.withSpanRoot('SklEngine.findAll', async() => {\n const context = {\n entities: [],\n operation: 'findAll',\n operationParameters: { options },\n sklEngine: this\n };\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n try {\n const entities = await this.queryAdapter.findAll(options);\n const updatedContext = { ...context, entities };\n await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, entities);\n return entities;\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { options });\n }\n\n public async groupBy(options: GroupByOptions): Promise<GroupByResponse> {\n return PerformanceLogger.withSpanRoot('SklEngine.groupBy', async() => {\n const context = {\n entities: [],\n operation: 'groupBy',\n operationParameters: { options },\n sklEngine: this\n };\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n try {\n const result = await this.queryAdapter.groupBy(options);\n const updatedContext = { ...context, result };\n await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, result);\n return result;\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { options });\n }\n\n public async findAllBy(where: FindOptionsWhere): Promise<Entity[]> {\n return PerformanceLogger.withSpanRoot('SklEngine.findAllBy', async() => {\n const context = {\n entities: [],\n operation: 'findAllBy',\n operationParameters: { where },\n sklEngine: this\n };\n await globalHooks.execute(HookTypes.READ, HookStages.BEFORE, context);\n try {\n const entities = await this.queryAdapter.findAllBy(where);\n const updatedContext = { ...context, entities };\n await globalHooks.execute(HookTypes.READ, HookStages.AFTER, updatedContext, entities);\n return entities;\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.READ, HookStages.ERROR, context, error);\n throw error;\n }\n }, { where });\n }\n\n public async exists(options?: FindAllOptions): Promise<boolean> {\n return PerformanceLogger.withSpanRoot('SklEngine.exists', async() => this.queryAdapter.exists(options), { options });\n }\n\n public async count(options?: FindAllOptions): Promise<number> {\n return PerformanceLogger.withSpanRoot('SklEngine.count', async() => this.queryAdapter.count(options), { options });\n }\n\n public async save(entity: Entity, options?: WriteOptions): Promise<Entity>;\n public async save(entities: Entity[], options?: WriteOptions): Promise<Entity[]>;\n public async save(entityOrEntities: Entity | Entity[], options?: WriteOptions): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpanRoot('SklEngine.save', async() => {\n const entityArray = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const isSingleEntity = !Array.isArray(entityOrEntities);\n\n await globalHooks.executeBeforeCreate(entityArray, { sklEngine: this, bypassHooks: options?.bypassHooks });\n\n try {\n await this.validateEntitiesConformToObjectSchema(entityArray);\n const savedEntities = await this.queryAdapter.save(entityArray);\n await globalHooks.executeAfterCreate(savedEntities, { sklEngine: this, bypassHooks: options?.bypassHooks });\n return isSingleEntity ? savedEntities[0] : savedEntities;\n } catch (error) {\n await globalHooks.executeErrorCreate(entityArray, error as Error, { sklEngine: this, bypassHooks: options?.bypassHooks });\n throw error;\n }\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async update(id: string, attributes: Partial<Entity>, options?: WriteOptions): Promise<void>;\n public async update(ids: string[], attributes: Partial<Entity>, options?: WriteOptions): Promise<void>;\n public async update(idOrIds: string | string[], attributes: Partial<Entity>, options?: WriteOptions): Promise<void> {\n return PerformanceLogger.withSpanRoot('SklEngine.update', async() => {\n const idArray = Array.isArray(idOrIds) ? idOrIds : [idOrIds];\n const isSingleEntity = !Array.isArray(idOrIds);\n\n await globalHooks.execute(HookTypes.UPDATE, HookStages.BEFORE, {\n entities: [],\n operation: 'update',\n operationParameters: { idArray, attributes },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n });\n\n try {\n if (idArray.length > 1) {\n await this.validateEntitiesWithIdsConformsToObjectSchemaForAttributes(idArray, attributes);\n } else {\n await this.validateEntityWithIdConformsToObjectSchemaForAttributes(idArray[0], attributes);\n }\n await this.queryAdapter.update(isSingleEntity ? idArray[0] : (idArray as any), attributes);\n\n await globalHooks.execute(HookTypes.UPDATE, HookStages.AFTER, {\n entities: [],\n operation: 'update',\n operationParameters: { idArray, attributes },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n });\n } catch (error: unknown) {\n await globalHooks.execute(HookTypes.UPDATE, HookStages.ERROR, {\n entities: [],\n operation: 'update',\n operationParameters: { idArray, attributes },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n }, error);\n throw error;\n }\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async validateEntitiesConformToObjectSchema(entities: Entity[]): Promise<void> {\n const entitiesByType = this.groupEntitiesByType(entities);\n for (const type of Object.keys(entitiesByType)) {\n const object = await this.findByIfExists({ id: type });\n if (object) {\n const parentObjects = await this.getSuperClassesOfObject(type);\n for (const currentObject of [object, ...parentObjects]) {\n const entitiesOfType = entitiesByType[type];\n const nounSchemaWithTarget = {\n ...currentObject,\n [SHACL.targetNode]: entitiesOfType.map(\n (entity): ReferenceNodeObject => ({ [PROP_ENTITY_ID]: entity[PROP_ENTITY_ID] })\n )\n };\n const report = await this.convertToQuadsAndValidateAgainstShape(entitiesOfType, nounSchemaWithTarget);\n if (!report.conforms) {\n const entityIds = entitiesOfType.map((entity): string => entity[PROP_ENTITY_ID]);\n this.throwValidationReportError(\n report,\n `Entity ${entityIds.join(', ')} does not conform to the ${currentObject[PROP_ENTITY_ID]} schema.`\n );\n }\n }\n }\n }\n }\n\n private groupEntitiesByType(entities: Entity[]): Record<string, Entity[]> {\n return entities.reduce((groupedEntities: Record<string, Entity[]>, entity): Record<string, Entity[]> => {\n const entityTypes = Array.isArray(entity[PROP_ENTITY_TYPE])\n ? entity[PROP_ENTITY_TYPE]\n : [entity[PROP_ENTITY_TYPE]];\n for (const type of entityTypes) {\n if (!groupedEntities[type]) {\n groupedEntities[type] = [];\n }\n groupedEntities[type].push(entity);\n }\n return groupedEntities;\n }, {});\n }\n\n private async getSuperClassesOfObject(object: string): Promise<Entity[]> {\n return await this.getParentsOfSelector(object);\n }\n\n private async getSuperClassesOfObjects(nouns: string[]): Promise<Entity[]> {\n return await this.getParentsOfSelector(In(nouns));\n }\n\n private async getParentsOfSelector(selector: string | FindOperator<any, any>): Promise<Entity[]> {\n return await this.findAll({\n where: {\n id: InversePath({\n subPath: OneOrMorePath({ subPath: RDFS.subClassOf as string }),\n value: selector\n })\n }\n });\n }\n\n private async validateEntityConformsToObjectSchema(entity: Entity): Promise<void> {\n const nounIds = Array.isArray(entity[PROP_ENTITY_TYPE]) ? entity[PROP_ENTITY_TYPE] : [entity[PROP_ENTITY_TYPE]];\n const directObjects = await this.findAllBy({ id: In(nounIds) });\n if (directObjects.length > 0) {\n const existingObjectIds = directObjects.map((object): string => object[PROP_ENTITY_ID]);\n const parentObjects = await this.getSuperClassesOfObjects(existingObjectIds);\n for (const currentObject of [...directObjects, ...parentObjects]) {\n const nounSchemaWithTarget = {\n ...currentObject,\n [SHACL.targetNode]: { [PROP_ENTITY_ID]: entity[PROP_ENTITY_ID] }\n };\n const report = await this.convertToQuadsAndValidateAgainstShape(entity, nounSchemaWithTarget);\n if (!report.conforms) {\n this.throwValidationReportError(\n report,\n `Entity ${entity[PROP_ENTITY_ID]} does not conform to the ${currentObject[PROP_ENTITY_ID]} schema.`\n );\n }\n }\n }\n }\n\n private async validateEntitiesWithIdsConformsToObjectSchemaForAttributes(\n ids: string[],\n attributes: Partial<Entity>\n ): Promise<void> {\n for (const id of ids) {\n await this.validateEntityWithIdConformsToObjectSchemaForAttributes(id, attributes);\n }\n }\n\n private async getObjectsAndParentObjectsOfEntity(id: string): Promise<Entity[]> {\n return await this.findAllBy({\n id: InversePath({\n subPath: SequencePath({\n subPath: [RDF.type, ZeroOrMorePath({ subPath: RDFS.subClassOf as string })]\n }),\n value: id\n })\n });\n }\n\n private async validateEntityWithIdConformsToObjectSchemaForAttributes(\n id: string,\n attributes: Partial<Entity>\n ): Promise<void> {\n const nouns = await this.getObjectsAndParentObjectsOfEntity(id);\n for (const currentObject of nouns) {\n if (SHACL.property in currentObject) {\n const nounProperties = ensureArray(currentObject[SHACL.property] as OrArray<NodeObject>).filter(\n (property): boolean => {\n const path = property[SHACL.path];\n if (typeof path === 'string' && path in attributes) {\n return true;\n }\n if (typeof path === 'object' && PROP_ENTITY_ID in path! && (path[PROP_ENTITY_ID] as string) in attributes) {\n return true;\n }\n return false;\n }\n );\n if (nounProperties.length > 0) {\n const nounSchemaWithTarget = {\n [PROP_ENTITY_TYPE]: SHACL.NodeShape,\n [SHACL.targetNode]: { [PROP_ENTITY_ID]: id },\n [SHACL.property]: nounProperties\n };\n const attributesWithId = { ...attributes, [PROP_ENTITY_ID]: id };\n const report = await this.convertToQuadsAndValidateAgainstShape(attributesWithId, nounSchemaWithTarget);\n if (!report.conforms) {\n this.throwValidationReportError(\n report,\n `Entity ${id} does not conform to the ${currentObject[PROP_ENTITY_ID]} schema.`\n );\n }\n }\n }\n }\n }\n\n public async delete(id: string, options?: WriteOptions): Promise<void>;\n public async delete(ids: string[], options?: WriteOptions): Promise<void>;\n public async delete(idOrIds: string | string[], options?: WriteOptions): Promise<void> {\n return PerformanceLogger.withSpanRoot('SklEngine.delete', async() => {\n const idArray = Array.isArray(idOrIds) ? idOrIds : [idOrIds];\n\n await globalHooks.execute(HookTypes.DELETE, HookStages.BEFORE, {\n entities: [],\n operation: 'delete',\n operationParameters: { idArray },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n });\n\n try {\n await this.queryAdapter.delete(idArray);\n\n await globalHooks.execute(HookTypes.DELETE, HookStages.AFTER, {\n entities: [],\n operation: 'delete',\n operationParameters: { idArray },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n });\n } catch (error) {\n await globalHooks.execute(HookTypes.DELETE, HookStages.ERROR, {\n entities: [],\n operation: 'delete',\n operationParameters: { idArray },\n sklEngine: this,\n bypassHooks: options?.bypassHooks\n }, error);\n throw error;\n }\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async destroy(entity: Entity): Promise<Entity>;\n public async destroy(entities: Entity[]): Promise<Entity[]>;\n public async destroy(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n if (Array.isArray(entityOrEntities)) {\n return await this.queryAdapter.destroy(entityOrEntities);\n }\n return await this.queryAdapter.destroy(entityOrEntities);\n }\n\n public async destroyAll(): Promise<void> {\n return await this.queryAdapter.destroyAll();\n }\n\n public async performMapping(\n args: JSONValue,\n mapping: OrArray<NodeObject>,\n frame?: Record<string, any>,\n capabilityConfig?: CapabilityConfig,\n jsExecutionOptions?: ExecutionOptions\n ): Promise<NodeObject> {\n const mappingArray = ensureArray(mapping);\n const codeBlocks = mappingArray.filter(\n (mappingItem: NodeObject): boolean =>\n mappingItem[PROP_ENTITY_TYPE] === EngineConstants.spec.codeBlock &&\n this.isJavaScriptCode(getValueIfDefined(mappingItem[EngineConstants.prop.codeBody])!)\n );\n // FIXME: Handle if we can combine the codeb blocks with triples map.\n // As of now if there is any code block, triples map does not get executed.\n if (codeBlocks.length > 0) {\n return await this.executeCodeBlocks(codeBlocks, args, jsExecutionOptions ?? {});\n }\n\n const functions = {\n ...this.functions,\n ...capabilityConfig?.functions\n };\n const mapper = new Mapper({ functions });\n return await mapper.apply(args, mapping, frame ?? {});\n }\n\n public async executeTrigger(integration: string, payload: any): Promise<void> {\n const triggerToCapabilityMapping = await this.findTriggerCapabilityMapping(integration);\n const capabilityArgs = await this.performParameterMappingOnArgsIfDefined(\n payload,\n triggerToCapabilityMapping as Partial<MappingWithInputs> | Partial<MappingWithInputsReference>\n );\n const capabilityId = await this.performCapabilityMappingWithArgs(payload, triggerToCapabilityMapping);\n if (capabilityId) {\n const mappedCapability = (await this.findBy({ id: capabilityId })) as Capability;\n await this.executeCapability(mappedCapability, capabilityArgs);\n }\n }\n\n private async findTriggerCapabilityMapping(integration: string): Promise<TriggerMapping> {\n const triggerCapabilityMappingNew = (await this.findBy(\n {\n type: EngineConstants.spec.capabilityMapping,\n [EngineConstants.prop.capability]: integration,\n [EngineConstants.prop.capabilityType]: EngineConstants.spec.triggerCapabilityMapping\n },\n `Failed to find a Trigger Capability mapping for integration ${integration}`\n )) as TriggerMapping;\n if (triggerCapabilityMappingNew) {\n return triggerCapabilityMappingNew;\n }\n throw new Error(`Failed to find a Trigger Capability mapping for integration ${integration}`);\n }\n\n private async executeCapabilityByName(\n capabilityName: string,\n capabilityArgs: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const capability = await this.findCapabilityWithName(capabilityName);\n return await this.executeCapability(capability, capabilityArgs, capabilityConfig);\n }\n\n private async findCapabilityWithName(capabilityName: string): Promise<Capability> {\n return (await this.findBy(\n { type: EngineConstants.spec.capability, [EngineConstants.prop.label]: capabilityName },\n `Failed to find the capability ${capabilityName} in the schema.`\n )) as Capability;\n }\n\n public async executeCapability(\n capability: Capability,\n capabilityArgs: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n this.globalCallbacks?.onCapabilityStart?.(capability[PROP_ENTITY_ID], capabilityArgs);\n if (capabilityConfig?.callbacks?.onCapabilityStart) {\n this.logger.debug('Capability arguments', capabilityArgs);\n capabilityConfig.callbacks.onCapabilityStart(capability[PROP_ENTITY_ID], capabilityArgs);\n }\n const { mapping, account } = await this.findMappingForCapabilityContextually(\n capability[PROP_ENTITY_ID],\n capabilityArgs\n );\n this.logger.debug('Mapping', JSON.stringify(mapping));\n const shouldValidate = this.shouldValidate(capabilityConfig);\n if (shouldValidate) {\n await this.assertCapabilityParamsMatchParameterSchemas(capabilityArgs, capability);\n }\n\n try {\n // Execute capability mapping before hook if appropriate -\n // works for any mapping that can be used as a verb mapping\n if (mapping) {\n await globalHooks.executeBeforeExecuteCapabilityMapping([capabilityArgs] as Entity[], mapping, { sklEngine: this });\n }\n\n const verbReturnValue = await this.executeMapping(mapping, capabilityArgs, capabilityConfig, account);\n\n if (shouldValidate) {\n await this.assertCapabilityReturnValueMatchesReturnTypeSchema(verbReturnValue, capability);\n }\n\n // Execute capability mapping after hook if appropriate\n if (mapping) {\n await globalHooks.executeAfterExecuteCapabilityMapping([capabilityArgs] as Entity[], mapping, verbReturnValue, { sklEngine: this });\n }\n\n this.globalCallbacks?.onCapabilityEnd?.(capability[PROP_ENTITY_ID], verbReturnValue);\n if (capabilityConfig?.callbacks?.onCapabilityEnd) {\n capabilityConfig.callbacks.onCapabilityEnd(capability[PROP_ENTITY_ID], verbReturnValue);\n }\n\n return verbReturnValue;\n } catch (error) {\n // Execute capability mapping error hook if appropriate\n if (mapping) {\n await globalHooks.executeErrorExecuteCapabilityMapping([capabilityArgs] as Entity[], mapping, error as Error, { sklEngine: this });\n }\n throw error;\n }\n }\n\n private async findMappingForCapabilityContextually(\n capabilityId: string,\n args: JSONObject\n ): Promise<{ mapping: CapabilityMapping; account?: Entity }> {\n if (args.mapping) {\n const mapping = await this.findByIfExists({ id: args.mapping as string });\n if (!mapping) {\n throw new Error(`Mapping ${args.mapping as string} not found.`);\n }\n return { mapping: mapping as CapabilityMapping };\n }\n if (args.object) {\n const mapping = await this.findCapabilityObjectMapping(capabilityId, args.object as string);\n if (mapping) {\n return { mapping };\n }\n }\n if (args.account) {\n const account = await this.findBy({ id: args.account as string });\n const integratedProductId = (account[EngineConstants.prop.integration] as ReferenceNodeObject)[PROP_ENTITY_ID];\n const mapping = await this.findCapabilityIntegrationMapping(capabilityId, integratedProductId);\n if (mapping) {\n return { mapping, account };\n }\n }\n\n const mappings = await this.findAllBy({\n type: EngineConstants.spec.capabilityMapping,\n [EngineConstants.prop.capability]: capabilityId,\n [EngineConstants.prop.integration]: Not(Exists()),\n [EngineConstants.prop.object]: Not(Exists())\n });\n if (mappings.length === 1) {\n return { mapping: mappings[0] as CapabilityMapping };\n }\n if (mappings.length > 1) {\n throw new Error('Multiple mappings found for capability, please specify one.');\n }\n if (args.object) {\n throw new Error(`Mapping between object ${args.object as string} and capability ${capabilityId} not found.`);\n }\n if (args.account) {\n throw new Error(`Mapping between account ${args.account as string} and capability ${capabilityId} not found.`);\n }\n throw new Error(`No mapping found.`);\n }\n\n public async executeMapping(\n mapping: Mapping,\n args: JSONObject,\n capabilityConfig?: CapabilityConfig,\n account?: Entity\n ): Promise<OrArray<NodeObject>> {\n args = await this.addPreProcessingMappingToArgs(mapping, args, capabilityConfig);\n let returnValue: OrArray<NodeObject>;\n // If (EngineConstants.prop.capability in mapping || EngineConstants.prop.capabilityMapping in mapping) {\n // const capabilityId = await this.performCapabilityMappingWithArgs(args, mapping, capabilityConfig);\n // const mappedArgs = await this.performParameterMappingOnArgsIfDefined(\n // { ...args, capabilityId },\n // mapping as MappingWithInputs,\n // capabilityConfig\n // );\n // Logger.getInstance().log('Mapped args', mappedArgs);\n // returnValue = await this.executeCapabilityMapping(mapping, args, mappedArgs, capabilityConfig);\n // } else {\n const mappedArgs = await this.performParameterMappingOnArgsIfDefined(\n args,\n mapping as MappingWithInputs,\n capabilityConfig\n );\n this.logger.debug('Mapped args', mappedArgs);\n if (EngineConstants.prop.operationId in mapping || EngineConstants.prop.operationMapping in mapping) {\n returnValue = (await this.executeOperationMapping(\n mapping,\n mappedArgs,\n args,\n account!,\n capabilityConfig\n )) as NodeObject;\n } else if (EngineConstants.prop.series in mapping) {\n returnValue = await this.executeSeriesMapping(mapping as MappingWithSeries, mappedArgs, capabilityConfig);\n } else if (EngineConstants.prop.parallel in mapping) {\n returnValue = await this.executeParallelMapping(mapping as MappingWithParallel, mappedArgs, capabilityConfig);\n } else {\n returnValue = mappedArgs;\n }\n // }\n return await this.performReturnValueMappingWithFrameIfDefined(\n returnValue as JSONValue,\n mapping as MappingWithOutputsMapping,\n capabilityConfig\n );\n }\n\n private shouldValidate(capabilityConfig?: CapabilityConfig): boolean {\n return capabilityConfig?.disableValidation === undefined\n ? this.disableValidation !== true\n : !capabilityConfig.disableValidation;\n }\n\n private async executeOperationMapping(\n mapping: Mapping,\n mappedArgs: JSONObject,\n originalArgs: JSONObject,\n account: Entity,\n capabilityConfig?: CapabilityConfig\n ): Promise<OperationResponse | OrArray<NodeObject>> {\n const integration = (mapping as CapabilityMapping)[EngineConstants.prop.integration]?.[PROP_ENTITY_ID];\n\n // If the mapping has an integration, it means that the operation is an integration operation\n if (integration) {\n const operationInfo = await this.performOperationMappingWithArgs(originalArgs, mapping, capabilityConfig);\n const response = await this.performOperation(operationInfo, mappedArgs, originalArgs, account, capabilityConfig);\n if (!this.ifCapabilityStreaming(capabilityConfig)) {\n this.logger.debug('Original response', JSON.stringify(response));\n }\n return response;\n }\n // If the mapping does not have an integration, it means that the operation is a capability operation\n return await this.executeCapabilityMapping(mapping, originalArgs, mappedArgs, capabilityConfig);\n }\n\n private async executeSeriesMapping(\n mapping: MappingWithSeries,\n args: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const seriesCapabilityMappingsList = this.rdfListToArray(mapping[EngineConstants.prop.series]!);\n const seriesCapabilityArgs = {\n originalCapabilityParameters: args,\n previousCapabilityReturnValue: {},\n allStepsResults: []\n };\n\n return await this.executeSeriesFromList(seriesCapabilityMappingsList, seriesCapabilityArgs, capabilityConfig);\n }\n\n private rdfListToArray(list: { [RML_LIST]: CapabilityMapping[] } | RdfList<CapabilityMapping>): CapabilityMapping[] {\n if (!(RML_LIST in list)) {\n return [\n list[RDF.first],\n ...getIdFromNodeObjectIfDefined(list[RDF.rest] as ReferenceNodeObject) === RDF.nil\n ? []\n : this.rdfListToArray(list[RDF.rest] as RdfList<CapabilityMapping>)\n ];\n }\n return list[RML_LIST];\n }\n\n private async executeSeriesFromList(\n list: Mapping[],\n args: SeriesCapabilityArgs,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const nextCapabilityMapping = list[0];\n const returnValue = await this.executeMapping(nextCapabilityMapping, args, capabilityConfig);\n if (list.length > 1) {\n return await this.executeSeriesFromList(\n list.slice(1),\n {\n ...args,\n previousCapabilityReturnValue: returnValue as JSONObject,\n allStepsResults: [...args.allStepsResults ?? [], returnValue as JSONObject]\n },\n capabilityConfig\n );\n }\n return returnValue;\n }\n\n private async executeCapabilityMapping(\n capabilityMapping: Mapping,\n originalArgs: JSONObject,\n mappedArgs: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const capabilityId = await this.performCapabilityMappingWithArgs(originalArgs, capabilityMapping, capabilityConfig);\n if (capabilityId) {\n if (capabilityId === EngineConstants.dataSource.update) {\n await this.updateEntityFromcapabilityArgs(mappedArgs);\n return {};\n }\n if (capabilityId === EngineConstants.dataSource.save) {\n return await this.saveEntityOrEntitiesFromcapabilityArgs(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.destroy) {\n return await this.destroyEntityOrEntitiesFromcapabilityArgs(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.findAll) {\n return await this.findAll(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.find) {\n return await this.find(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.count) {\n return await this.countAndWrapValueFromcapabilityArgs(mappedArgs);\n }\n if (capabilityId === EngineConstants.dataSource.exists) {\n return await this.existsAndWrapValueFromcapabilityArgs(mappedArgs);\n }\n if (capabilityId === 'https://skl.ai/capability/execute-code') {\n const codeBlocks = ensureArray((capabilityMapping[EngineConstants.prop.codeBlocks] as any[]) ?? []).filter(\n (mappingItem: any): boolean =>\n mappingItem[PROP_ENTITY_TYPE] === EngineConstants.spec.codeBlock &&\n this.isJavaScriptCode(getValueIfDefined(mappingItem[EngineConstants.prop.codeBody])!)\n );\n return await this.executeCodeBlocks(codeBlocks, mappedArgs, {});\n }\n\n // Check for custom capabilities\n if (globalCustomCapabilities.has(capabilityId)) {\n return await globalCustomCapabilities.execute(capabilityId, mappedArgs, this, capabilityConfig);\n }\n\n return await this.findAndExecuteCapability(capabilityId, mappedArgs, capabilityConfig);\n }\n return {};\n }\n\n private async addPreProcessingMappingToArgs(\n capabilityMapping: Mapping,\n args: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<JSONObject> {\n if (EngineConstants.prop.preProcessingMapping in capabilityMapping) {\n const preMappingArgs = await this.performMapping(\n args,\n capabilityMapping[EngineConstants.prop.preProcessingMapping] as NodeObject,\n getValueIfDefined(capabilityMapping[EngineConstants.prop.preProcessingMappingFrame]),\n capabilityConfig\n );\n return { ...args, preProcessedParameters: preMappingArgs as JSONObject };\n }\n return args;\n }\n\n private replaceTypeAndId(entity: Record<string, any>): Record<string, any> {\n if (typeof entity !== 'object') {\n throw new Error('Entity is not an object');\n }\n const clonedEntity = structuredClone(entity);\n if (clonedEntity[EngineConstants.prop.type]) {\n clonedEntity[PROP_ENTITY_TYPE] = clonedEntity[EngineConstants.prop.type];\n }\n if (clonedEntity[EngineConstants.prop.identifier]) {\n clonedEntity[PROP_ENTITY_ID] = SKL_DATA_NAMESPACE + (clonedEntity[EngineConstants.prop.identifier] as string);\n }\n return clonedEntity;\n }\n\n private async updateEntityFromcapabilityArgs(args: Record<string, any>): Promise<void> {\n let ids = args.id ?? args.ids;\n if (!Array.isArray(ids)) {\n ids = [ids];\n }\n // FIX: Temporary fix for the issue where the id always getting prefixed with the namespace\n ids = ids.map((id: string) => (id.startsWith('http') ? id : `${SKL_DATA_NAMESPACE}${id}`));\n await this.update(ids, args.attributes);\n }\n\n private async saveEntityOrEntitiesFromcapabilityArgs(args: Record<string, any>): Promise<OrArray<Entity>> {\n if (args.entity && typeof args.entity === 'object') {\n args.entity = this.replaceTypeAndId(args.entity);\n }\n if (args.entities && Array.isArray(args.entities)) {\n args.entities = args.entities.map(this.replaceTypeAndId);\n }\n return await this.save(args.entity ?? args.entities);\n }\n\n private async destroyEntityOrEntitiesFromcapabilityArgs(args: Record<string, any>): Promise<OrArray<Entity>> {\n if (args.entity && typeof args.entity === 'object') {\n args.entity = this.replaceTypeAndId(args.entity);\n }\n if (args.entities && Array.isArray(args.entities)) {\n args.entities = args.entities.map(this.replaceTypeAndId);\n }\n return await this.destroy(args.entity ?? args.entities);\n }\n\n private async countAndWrapValueFromcapabilityArgs(args: Record<string, any>): Promise<NodeObject> {\n const count = await this.count(args);\n return {\n [EngineConstants.dataSource.countResult]: {\n [PROP_ENTITY_VALUE]: count,\n [PROP_ENTITY_TYPE]: XSD.integer\n }\n };\n }\n\n private async existsAndWrapValueFromcapabilityArgs(args: Record<string, any>): Promise<NodeObject> {\n const exists = await this.exists(args);\n return {\n [EngineConstants.dataSource.existsResult]: {\n [PROP_ENTITY_VALUE]: exists,\n [PROP_ENTITY_TYPE]: XSD.boolean\n }\n };\n }\n\n public async findAndExecuteCapability(\n capabilityId: string,\n args: Record<string, any>,\n capabilityConfig?: CapabilityConfig\n ): Promise<OrArray<NodeObject>> {\n const capability = (await this.findBy({ id: capabilityId })) as Capability;\n return await this.executeCapability(capability, args, capabilityConfig);\n }\n\n private async executeParallelMapping(\n mapping: MappingWithParallel,\n args: JSONObject,\n capabilityConfig?: CapabilityConfig\n ): Promise<NodeObject[]> {\n const parallelCapabilityMappings = ensureArray(\n mapping[EngineConstants.prop.parallel] as unknown as OrArray<CapabilityMapping>\n );\n const nestedReturnValues = await Promise.all<Promise<OrArray<NodeObject>>>(\n parallelCapabilityMappings.map(\n (capabilityMapping): Promise<OrArray<NodeObject>> =>\n this.executeMapping(capabilityMapping, args, capabilityConfig)\n )\n );\n return nestedReturnValues.flat();\n }\n\n private async findCapabilityIntegrationMapping(\n capabilityId: string,\n integratedProductId: string\n ): Promise<CapabilityMapping | undefined> {\n return (await this.findByIfExists({\n type: EngineConstants.spec.capabilityMapping,\n [EngineConstants.prop.capability]: capabilityId,\n [EngineConstants.prop.integration]: integratedProductId\n })) as CapabilityMapping;\n }\n\n private async performOperationMappingWithArgs(\n args: JSONValue,\n mapping: Mapping,\n capabilityConfig?: CapabilityConfig\n ): Promise<NodeObject> {\n if (mapping[EngineConstants.prop.operationId]) {\n return { [EngineConstants.prop.operationId]: mapping[EngineConstants.prop.operationId] };\n }\n if (mapping[EngineConstants.prop.dataSource]) {\n return { [EngineConstants.prop.dataSource]: mapping[EngineConstants.prop.dataSource] };\n }\n return await this.performMapping(\n args,\n mapping[EngineConstants.prop.operationMapping] as OrArray<NodeObject>,\n undefined,\n capabilityConfig\n );\n }\n\n private async performOperation(\n operationInfo: NodeObject,\n operationArgs: JSONObject,\n originalArgs: JSONObject,\n account: Entity,\n capabilityConfig?: CapabilityConfig,\n securityCredentials?: Entity\n ): Promise<OperationResponse> {\n if (operationInfo[EngineConstants.prop.schemeName]) {\n return await this.performOauthSecuritySchemeStageWithCredentials(\n operationInfo,\n operationArgs,\n account,\n securityCredentials\n );\n }\n if (operationInfo[EngineConstants.prop.dataSource]) {\n return await this.getDataFromDataSource(\n getIdFromNodeObjectIfDefined(operationInfo[EngineConstants.prop.dataSource] as string | ReferenceNodeObject)!,\n capabilityConfig\n );\n }\n if (operationInfo[EngineConstants.prop.operationId]) {\n const response = await this.performOpenapiOperationWithCredentials(\n getValueIfDefined(operationInfo[EngineConstants.prop.operationId])!,\n operationArgs,\n account,\n capabilityConfig\n );\n return this.axiosResponseAndParamsToOperationResponse(response, operationArgs, originalArgs);\n }\n throw new Error('Operation not supported.');\n }\n\n private axiosResponseAndParamsToOperationResponse(\n response: AxiosResponse,\n operationParameters: JSONObject,\n originalArgs: JSONObject\n ): OperationResponse {\n return {\n operationParameters,\n originalCapabilityParameters: originalArgs,\n data: response.data,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n config: {\n headers: response.config.headers,\n method: response.config.method,\n url: response.config.url,\n data: response.config.data\n } as JSONObject\n };\n }\n\n private async performReturnValueMappingWithFrameIfDefined(\n returnValue: JSONValue,\n mapping: MappingWithOutputsMapping,\n capabilityConfig?: CapabilityConfig\n ): Promise<NodeObject> {\n if (EngineConstants.prop.outputsMapping in mapping) {\n return await this.performMapping(\n returnValue,\n mapping[EngineConstants.prop.outputsMapping],\n getValueIfDefined<JSONObject>(mapping[EngineConstants.prop.outputsMappingFrame]),\n capabilityConfig\n );\n }\n return returnValue as NodeObject;\n }\n\n private async performParameterMappingOnArgsIfDefined(\n args: JSONObject,\n mapping: Partial<MappingWithInputs> | Partial<MappingWithInputsReference>,\n capabilityConfig?: CapabilityConfig,\n convertToJsonDeep = false\n ): Promise<Record<string, any>> {\n if (EngineConstants.prop.inputsReference in mapping) {\n const reference = getValueIfDefined<string>(mapping[EngineConstants.prop.inputsReference])!;\n return this.getDataAtReference(reference, args);\n }\n\n if (EngineConstants.prop.inputsMappingRef in mapping) {\n const reference = getValueIfDefined<string>(mapping[EngineConstants.prop.inputsMappingRef])!;\n const referencedMapping = this.getDataAtReference(reference, args);\n\n if (!referencedMapping || referencedMapping?.length === 0) {\n return args;\n }\n\n // Handle inputsMappingFrameRef if present\n let frame;\n if (EngineConstants.prop.inputsMappingFrameRef in mapping) {\n const frameReference = getValueIfDefined<string>(mapping[EngineConstants.prop.inputsMappingFrameRef])!;\n frame = this.getDataAtReference(frameReference, args);\n } else {\n // Use direct frame if provided\n frame = getValueIfDefined(mapping[EngineConstants.prop.inputsMappingFrame]);\n }\n\n // Perform mapping with the referenced mapping and frame\n const mappedData = await this.performMapping(args, referencedMapping, frame, capabilityConfig);\n return toJSON(mappedData, convertToJsonDeep);\n }\n\n if (EngineConstants.prop.inputsMapping in mapping) {\n const mappedData = await this.performMapping(\n args,\n (mapping as MappingWithInputs)[EngineConstants.prop.inputsMapping]!,\n getValueIfDefined(mapping[EngineConstants.prop.inputsMappingFrame]),\n capabilityConfig\n );\n return toJSON(mappedData, convertToJsonDeep);\n }\n return args;\n }\n\n private getDataAtReference(reference: string, data: JSONObject): any {\n const results = JSONPath({\n path: reference,\n json: data,\n resultType: 'value'\n });\n const isArrayOfLengthOne = Array.isArray(results) && results.length === 1;\n let result = isArrayOfLengthOne ? results[0] : results;\n if (result && typeof result === 'object' && PROP_ENTITY_VALUE in result) {\n result = result[PROP_ENTITY_VALUE];\n }\n return result;\n }\n\n private async getIntegrationInterface(\n integratedProductId: string,\n integrationType = EngineConstants.spec.integrationInterface\n ): Promise<Entity | null> {\n if (integrationType === EngineConstants.spec.integrationInterface) {\n const integrationInterface = await this.findBy({\n type: integrationType,\n [EngineConstants.prop.type]: EngineConstants.spec.openApi,\n [EngineConstants.prop.integration]: integratedProductId\n });\n return integrationInterface;\n }\n // Add support for other integration types\n return null;\n }\n\n private async findSecurityCredentialsForAccountIfDefined(accountId: string): Promise<Entity | undefined> {\n return await this.findByIfExists({\n type: EngineConstants.spec.integrationAuthenticationCredential,\n [EngineConstants.prop.accountOrUser]: accountId\n });\n }\n\n private async findgetOpenApiRuntimeAuthorizationCapabilityIfDefined(): Promise<Capability | undefined> {\n return (await this.findByIfExists({\n type: EngineConstants.spec.capability,\n [EngineConstants.prop.label]: OPEN_API_RUNTIME_AUTHORIZATION\n })) as Capability;\n }\n\n private async getRuntimeCredentialsWithSecurityCredentials(\n securityCredentials: Entity,\n integrationId: string,\n openApiOperationInformation: OperationWithPathInfo,\n operationArgs: JSONObject\n ): Promise<JSONObject> {\n const getOpenApiRuntimeAuthorizationCapability = await this.findgetOpenApiRuntimeAuthorizationCapabilityIfDefined();\n if (!getOpenApiRuntimeAuthorizationCapability) {\n return {};\n }\n const mapping = await this.findCapabilityIntegrationMapping(\n getOpenApiRuntimeAuthorizationCapability[PROP_ENTITY_ID],\n integrationId\n );\n if (!mapping) {\n return {};\n }\n const args = {\n securityCredentials,\n openApiExecutorOperationWithPathInfo: openApiOperationInformation,\n operationArgs\n } as JSONObject;\n const operationInfoJsonLd = await this.performParameterMappingOnArgsIfDefined(args, mapping, undefined, true);\n const headers = getValueIfDefined<JSONObject>(operationInfoJsonLd[EngineConstants.prop.headers]);\n return headers ?? {};\n }\n\n private async createOpenApiOperationExecutorWithSpec(openApiDescription: OpenApi): Promise<OpenApiOperationExecutor> {\n const executor = new OpenApiOperationExecutor();\n await executor.setOpenapiSpec(openApiDescription);\n return executor;\n }\n\n private async findCapabilityObjectMapping(capabilityId: string, object: string): Promise<CapabilityMapping> {\n return (await this.findByIfExists({\n type: EngineConstants.spec.capabilityMapping,\n [EngineConstants.prop.capability]: capabilityId,\n [EngineConstants.prop.object]: InversePath({\n subPath: ZeroOrMorePath({ subPath: RDFS.subClassOf as string }),\n value: object\n })\n })) as CapabilityMapping;\n }\n\n private async performCapabilityMappingWithArgs(\n args: JSONValue,\n mapping: Mapping,\n capabilityConfig?: CapabilityConfig\n ): Promise<string | undefined> {\n if (mapping[EngineConstants.prop.operationId]) {\n return getValueIfDefined<string>(mapping[EngineConstants.prop.operationId])!;\n }\n if (mapping[EngineConstants.prop.operationId]) {\n return getValueIfDefined<string>(mapping[EngineConstants.prop.operationId])!;\n }\n const capabilityInfoJsonLd = await this.performMapping(\n args,\n mapping[EngineConstants.prop.operationMapping] as NodeObject,\n undefined,\n capabilityConfig\n );\n return getValueIfDefined<string>(capabilityInfoJsonLd[EngineConstants.prop.operationId])!;\n }\n\n private async assertCapabilityParamsMatchParameterSchemas(\n capabilityParams: any,\n capability: Capability\n ): Promise<void> {\n let parametersSchemaObject = capability[EngineConstants.prop.inputs];\n if (parametersSchemaObject?.[PROP_ENTITY_ID] && Object.keys(parametersSchemaObject).length === 1) {\n parametersSchemaObject = await this.findBy({ id: parametersSchemaObject[PROP_ENTITY_ID] });\n }\n if (capabilityParams && parametersSchemaObject) {\n const capabilityParamsAsJsonLd = {\n '@context': getValueIfDefined<ContextDefinition>(capability[EngineConstants.prop.inputsContext]),\n [PROP_ENTITY_TYPE]: EngineConstants.spec.inputs,\n ...capabilityParams\n };\n const report = await this.convertToQuadsAndValidateAgainstShape(capabilityParamsAsJsonLd, parametersSchemaObject);\n if (!report.conforms) {\n this.throwValidationReportError(\n report,\n `${getValueIfDefined(capability[EngineConstants.prop.label])} parameters do not conform to the schema`\n );\n }\n }\n }\n\n private async performOpenapiOperationWithCredentials(\n operationId: string,\n operationArgs: JSONObject,\n account: Entity,\n capabilityConfig?: CapabilityConfig\n ): Promise<AxiosResponse> {\n const integratedProductId = (account[EngineConstants.prop.integration] as ReferenceNodeObject)[PROP_ENTITY_ID];\n const restAPIInterface = await this.getIntegrationInterface(integratedProductId);\n if (!restAPIInterface) {\n throw new Error(`No integration interface found for integrated product ${integratedProductId}`);\n }\n const openApiDescription = getValueIfDefined<OpenApi>(\n restAPIInterface[EngineConstants.prop.declarativeApiDescription]\n )!;\n const openApiExecutor = await this.createOpenApiOperationExecutorWithSpec(openApiDescription);\n // eslint-disable-next-line @typescript-eslint/await-thenable\n const openApiOperationInformation = await openApiExecutor.getOperationWithPathInfoMatchingOperationId(operationId);\n const securityCredentials = await this.findSecurityCredentialsForAccountIfDefined(account[PROP_ENTITY_ID]);\n let runtimeAuthorization: JSONObject = {};\n if (securityCredentials) {\n const generatedRuntimeCredentials = await this.getRuntimeCredentialsWithSecurityCredentials(\n securityCredentials,\n integratedProductId,\n openApiOperationInformation,\n operationArgs\n );\n if (generatedRuntimeCredentials && Object.keys(generatedRuntimeCredentials).length > 0) {\n runtimeAuthorization = generatedRuntimeCredentials;\n }\n }\n const apiKey = [\n getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.apiKey]),\n this.getAuthorizationHeaderFromRuntimeCredentials(runtimeAuthorization)\n ].find(Boolean);\n const configuration = {\n accessToken: getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.accessToken]),\n bearerToken: getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.bearerToken]),\n apiKey,\n basePath: getValueIfDefined<string>(account[EngineConstants.prop.overrideBasePath]),\n username: getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.username]),\n password: getValueIfDefined<string>(securityCredentials?.[EngineConstants.prop.password])\n };\n let response;\n let executeOperationOptions: AxiosRequestConfig | undefined;\n try {\n const additionalHeaders = this.getHeadersFromRuntimeCredentials(runtimeAuthorization) as any;\n if (\n additionalHeaders &&\n typeof additionalHeaders === 'object' &&\n !Array.isArray(additionalHeaders) &&\n Object.keys(additionalHeaders).length > 0\n ) {\n executeOperationOptions = { headers: additionalHeaders };\n }\n if (this.ifCapabilityStreaming(capabilityConfig)) {\n executeOperationOptions = {\n ...executeOperationOptions,\n responseType: 'stream'\n };\n } else if (this.ifCapabilityBuffering(capabilityConfig)) {\n executeOperationOptions = {\n ...executeOperationOptions,\n responseType: 'arraybuffer'\n };\n }\n response = await openApiExecutor.executeOperation(\n operationId,\n configuration,\n operationArgs,\n executeOperationOptions\n );\n } catch (error: unknown) {\n if (\n axios.isAxiosError(error) &&\n await this.isInvalidTokenError(error, integratedProductId) &&\n securityCredentials\n ) {\n const refreshedConfiguration = await this.refreshSecurityCredentials(\n securityCredentials,\n integratedProductId,\n account\n );\n response = await openApiExecutor.executeOperation(\n operationId,\n refreshedConfiguration,\n operationArgs,\n executeOperationOptions\n );\n } else {\n throw error;\n }\n }\n return response;\n }\n\n private getHeadersFromRuntimeCredentials(runtimeCredentials: JSONObject): JSONObject {\n let returnValue: JSONObject = {};\n if (\n runtimeCredentials.headers &&\n typeof runtimeCredentials.headers === 'object' &&\n Object.keys(runtimeCredentials.headers).length > 0 &&\n !Array.isArray(runtimeCredentials.headers)\n ) {\n returnValue = runtimeCredentials.headers;\n }\n return returnValue;\n }\n\n private getAuthorizationHeaderFromRuntimeCredentials(runtimeCredentials: JSONObject): string | undefined {\n const headers = this.getHeadersFromRuntimeCredentials(runtimeCredentials);\n if (headers && 'Authorization' in headers) {\n const authorizationHeader = headers.Authorization;\n if (typeof authorizationHeader === 'string') {\n return authorizationHeader;\n }\n }\n return undefined;\n }\n\n private async isInvalidTokenError(error: AxiosError, integratedProductId: string): Promise<boolean> {\n const integrationInterface = await this.getIntegrationInterface(integratedProductId);\n if (!integrationInterface) {\n return false;\n }\n\n const errorMatcher = integrationInterface[EngineConstants.prop.invalidTokenErrorMatcher] as NodeObject;\n const errorMatcherStatus =\n errorMatcher && getValueIfDefined<string>(errorMatcher[EngineConstants.prop.invalidTokenErrorMatcherStatus]);\n const errorMatcherRegex =\n errorMatcher &&\n getValueIfDefined<string>(errorMatcher[EngineConstants.prop.invalidTokenErrorMatcherMessageRegex])!;\n if (errorMatcher && error.response?.status === errorMatcherStatus) {\n if (!errorMatcherRegex) {\n return true;\n }\n if (error.response?.statusText && new RegExp(errorMatcherRegex, 'u').test(error.response?.statusText)) {\n return true;\n }\n }\n\n return false;\n }\n\n private async refreshSecurityCredentials(\n securityCredentials: Entity,\n integrationId: string,\n account: Entity,\n capabilityConfig?: CapabilityConfig\n ): Promise<OpenApiClientConfiguration> {\n const getOauthTokenCapability = (await this.findBy({\n type: EngineConstants.spec.capability,\n [EngineConstants.prop.label]: 'getOauthTokens'\n })) as Capability;\n const mapping = await this.findCapabilityIntegrationMapping(getOauthTokenCapability[PROP_ENTITY_ID], integrationId);\n if (!mapping) {\n throw new Error(\n `No mapping found for capability ${getOauthTokenCapability[PROP_ENTITY_ID]} and integration ${integrationId}`\n );\n }\n const args = {\n refreshToken: getValueIfDefined<string>(securityCredentials[EngineConstants.prop.refreshToken])!,\n jwtBearerOptions: getValueIfDefined<string>(securityCredentials[EngineConstants.prop.jwtBearerOptions])!\n };\n const operationArgs = await this.performParameterMappingOnArgsIfDefined(args, mapping, capabilityConfig, true);\n const operationInfoJsonLd = await this.performOperationMappingWithArgs({}, mapping, capabilityConfig);\n const rawReturnValue = await this.performOperation(\n operationInfoJsonLd,\n operationArgs,\n args,\n account,\n capabilityConfig,\n securityCredentials\n );\n const mappedReturnValue = await this.performReturnValueMappingWithFrameIfDefined(\n rawReturnValue,\n mapping as MappingWithOutputsMapping,\n capabilityConfig\n );\n await this.assertCapabilityReturnValueMatchesReturnTypeSchema(mappedReturnValue, getOauthTokenCapability);\n const bearerToken = getValueIfDefined<string>(mappedReturnValue[EngineConstants.prop.bearerToken]);\n const accessToken = getValueIfDefined<string>(mappedReturnValue[EngineConstants.prop.accessToken]);\n const refreshToken = getValueIfDefined<string>(mappedReturnValue[EngineConstants.prop.refreshToken]);\n if (bearerToken) {\n securityCredentials[EngineConstants.prop.bearerToken] = bearerToken;\n }\n if (accessToken) {\n securityCredentials[EngineConstants.prop.accessToken] = accessToken;\n }\n if (refreshToken) {\n securityCredentials[EngineConstants.prop.refreshToken] = refreshToken;\n }\n await this.save(securityCredentials);\n return { accessToken, bearerToken };\n }\n\n private getOauthConfigurationFromSecurityCredentials(securityCredentialsSchema: Entity): OpenApiClientConfiguration {\n const username = getValueIfDefined<string>(securityCredentialsSchema[EngineConstants.prop.username]);\n const password = getValueIfDefined<string>(securityCredentialsSchema[EngineConstants.prop.password]);\n const accessToken = getValueIfDefined<string>(securityCredentialsSchema[EngineConstants.prop.accessToken]);\n return { username, password, accessToken };\n }\n\n private async assertCapabilityReturnValueMatchesReturnTypeSchema(\n returnValue: OrArray<NodeObject>,\n capability: Capability\n ): Promise<void> {\n let returnTypeSchemaObject = capability[EngineConstants.prop.outputs];\n if (returnTypeSchemaObject?.[PROP_ENTITY_ID] && Object.keys(returnTypeSchemaObject).length === 1) {\n returnTypeSchemaObject = await this.findBy({ id: returnTypeSchemaObject[PROP_ENTITY_ID] });\n }\n let report: ValidationReport | undefined;\n if (returnValue && returnTypeSchemaObject) {\n if (Array.isArray(returnValue)) {\n if (returnValue.some((valueItem): boolean => PROP_ENTITY_ID in valueItem)) {\n returnTypeSchemaObject[SHACL.targetNode] = returnValue.reduce(\n (nodes: ReferenceNodeObject[], outputItem): ReferenceNodeObject[] => {\n if (outputItem[PROP_ENTITY_ID]) {\n nodes.push({ [PROP_ENTITY_ID]: outputItem[PROP_ENTITY_ID] });\n }\n return nodes;\n },\n []\n );\n } else {\n const targetClasses = returnValue.reduce(\n (nodes: ReferenceNodeObject[], outputItem): ReferenceNodeObject[] => {\n if (outputItem[PROP_ENTITY_TYPE]) {\n const type = Array.isArray(outputItem[PROP_ENTITY_TYPE])\n ? outputItem[PROP_ENTITY_TYPE][0]\n : outputItem[PROP_ENTITY_TYPE];\n if (!nodes.includes({ [PROP_ENTITY_ID]: type })) {\n nodes.push({ [PROP_ENTITY_ID]: type });\n }\n }\n return nodes;\n },\n []\n );\n if (targetClasses.length > 0) {\n returnTypeSchemaObject[SHACL.targetClass] = targetClasses;\n }\n }\n report = await this.convertToQuadsAndValidateAgainstShape(returnValue, returnTypeSchemaObject);\n } else if (Object.keys(returnValue).length > 0) {\n if (returnValue[PROP_ENTITY_ID]) {\n returnTypeSchemaObject[SHACL.targetNode] = { [PROP_ENTITY_ID]: returnValue[PROP_ENTITY_ID] };\n } else if (returnValue[PROP_ENTITY_TYPE]) {\n returnTypeSchemaObject[SHACL.targetClass] = {\n [PROP_ENTITY_ID]: Array.isArray(returnValue[PROP_ENTITY_TYPE])\n ? returnValue[PROP_ENTITY_TYPE][0]\n : returnValue[PROP_ENTITY_TYPE]!\n };\n }\n report = await this.convertToQuadsAndValidateAgainstShape(returnValue, returnTypeSchemaObject);\n }\n }\n\n if (report && !report?.conforms) {\n throw new Error(\n `Return value ${\n Array.isArray(returnValue) ? 'array' : returnValue[PROP_ENTITY_ID]\n } does not conform to the schema`\n );\n }\n }\n\n private async convertToQuadsAndValidateAgainstShape(\n value: OrArray<NodeObject>,\n shape: NodeObject\n ): Promise<ValidationReport> {\n const valueAsQuads = await convertJsonLdToQuads(Array.isArray(value) ? value : [value]);\n const shapeQuads = await convertJsonLdToQuads(shape);\n const validator = new SHACLValidator(shapeQuads);\n return validator.validate(valueAsQuads);\n }\n\n private async performOauthSecuritySchemeStageWithCredentials(\n operationInfo: NodeObject,\n operationParameters: JSONObject,\n account: Entity,\n securityCredentials?: Entity\n ): Promise<OperationResponse> {\n const integratedProductId = (account[EngineConstants.prop.integration] as ReferenceNodeObject)[PROP_ENTITY_ID];\n const restAPIInterface = await this.getIntegrationInterface(integratedProductId);\n if (!restAPIInterface) {\n throw new Error(`No integration interface found for integrated product ${integratedProductId}`);\n }\n const openApiDescription = getValueIfDefined<OpenApi>(\n restAPIInterface[EngineConstants.prop.declarativeApiDescription]\n )!;\n securityCredentials ||= await this.findSecurityCredentialsForAccountIfDefined(account[PROP_ENTITY_ID]);\n let configuration: OpenApiClientConfiguration;\n if (securityCredentials) {\n configuration = this.getOauthConfigurationFromSecurityCredentials(securityCredentials);\n operationParameters.client_id = getValueIfDefined<string>(securityCredentials[EngineConstants.prop.username])!;\n } else {\n configuration = {};\n }\n const openApiExecutor = await this.createOpenApiOperationExecutorWithSpec(openApiDescription);\n const response = await openApiExecutor.executeSecuritySchemeStage(\n getValueIfDefined(operationInfo[EngineConstants.prop.schemeName])!,\n getValueIfDefined(operationInfo[EngineConstants.prop.oauthFlow])!,\n getValueIfDefined(operationInfo[EngineConstants.prop.stage])!,\n configuration,\n operationParameters\n );\n if ('codeVerifier' in response && 'authorizationUrl' in response) {\n return {\n data: response as unknown as JSONObject,\n operationParameters\n };\n }\n return this.axiosResponseAndParamsToOperationResponse(response, operationParameters, operationParameters);\n }\n\n private async getDataFromDataSource(\n dataSourceId: string,\n capabilityConfig?: CapabilityConfig\n ): Promise<OperationResponse> {\n const dataSource = await this.findBy({ id: dataSourceId });\n if (dataSource[PROP_ENTITY_TYPE] === EngineConstants.spec.jsonDataSource) {\n const data = this.getDataFromJsonDataSource(dataSource, capabilityConfig);\n return { data, operationParameters: {}};\n }\n throw new Error(`DataSource type ${dataSource[PROP_ENTITY_TYPE]} is not supported.`);\n }\n\n private getDataFromJsonDataSource(dataSource: NodeObject, capabilityConfig?: CapabilityConfig): JSONObject {\n if (dataSource[EngineConstants.prop.source]) {\n const sourceValue = getValueIfDefined<string>(dataSource[EngineConstants.prop.source])!;\n return this.getJsonDataFromSource(sourceValue, capabilityConfig);\n }\n return getValueIfDefined<JSONObject>(dataSource[EngineConstants.prop.data])!;\n }\n\n private getJsonDataFromSource(source: string, capabilityConfig?: CapabilityConfig): JSONObject {\n const inputFiles = {\n ...this.inputFiles,\n ...capabilityConfig?.inputFiles\n };\n if (source in inputFiles) {\n const file = inputFiles[source];\n if (typeof file === 'string') {\n return JSON.parse(file);\n }\n return file;\n }\n // eslint-disable-next-line unicorn/expiring-todo-comments\n // TODO add support for remote sources\n throw new Error(`Failed to get data from source ${source}`);\n }\n\n private throwValidationReportError(report: ValidationReport, errorMessage: string): void {\n const reportMessages = this.validationReportToMessages(report);\n throw new Error(`${errorMessage}\\n\\n${reportMessages.join('\\n')}`);\n }\n\n private validationReportToMessages(report: ValidationReport): string[] {\n const reportMessages = [];\n for (const result of report.results) {\n const pathValue = result.path?.value;\n if (result.message.length === 0) {\n const message = `${pathValue}: Invalid due to ${result.sourceConstraintComponent?.value}`;\n reportMessages.push(message);\n } else {\n const resultMessages = result.message.map((message): string => `${message.value}`).join(', ');\n const message = `${pathValue}: ${resultMessages}`;\n reportMessages.push(message);\n }\n }\n return reportMessages;\n }\n\n private ifCapabilityStreaming(capabilityConfig?: CapabilityConfig): boolean {\n return Boolean(capabilityConfig && 'stream' in capabilityConfig && capabilityConfig.stream);\n }\n\n private ifCapabilityBuffering(capabilityConfig?: CapabilityConfig): boolean {\n return Boolean(capabilityConfig && 'buffer' in capabilityConfig && capabilityConfig.buffer);\n }\n\n private isJavaScriptCode(text: string): boolean {\n if (!text) {\n return false;\n }\n // Trim the text to handle leading/trailing whitespace\n const trimmed = text.trim();\n\n // First, quickly check if it looks like JSON (starts with { or [)\n const looksLikeJson = /^\\s*[[{]/.test(trimmed) && /[\\]}]\\s*$/.test(trimmed);\n\n if (looksLikeJson) {\n try {\n // If it can be parsed as JSON, it's likely an RML mapping\n JSON.parse(trimmed);\n return false;\n } catch {\n // If it looks like JSON but can't be parsed, it might be code\n // Continue with other checks\n }\n }\n\n // Check for common JavaScript patterns that wouldn't appear in JSON\n const jsPatterns = [\n /function\\s+[$A-Z_a-z][\\w$]*\\s*\\(/, // Function declaration\n /const\\s+[$A-Z_a-z][\\w$]*/, // Const declaration\n /let\\s+[$A-Z_a-z][\\w$]*/, // Let declaration\n /var\\s+[$A-Z_a-z][\\w$]*/, // Var declaration\n /if\\s*\\(/, // If statement\n /for\\s*\\(/, // For loop\n /while\\s*\\(/, // While loop\n /=>|return |console\\./, // Arrow functions, return statements, console usage\n /import\\s+|export\\s+/, // ES6 imports/exports\n /class\\s+[$A-Z_a-z][\\w$]*/, // Class declaration\n /\\/\\/|\\/\\*|\\*\\// // Comments\n ];\n\n // If it matches any JS pattern, it's likely code\n return jsPatterns.some(pattern => pattern.test(trimmed));\n }\n\n private ensureNodeObject(result: any): NodeObject {\n // Handle null/undefined results\n if (result === null || result === undefined) {\n return {};\n }\n\n // If it's already a NodeObject with proper formatting, return as is\n if (\n typeof result === 'object' &&\n !Array.isArray(result) &&\n (result[PROP_ENTITY_ID] !== undefined ||\n result[PROP_ENTITY_TYPE] !== undefined ||\n result['@context'] !== undefined ||\n result['@graph'] !== undefined)\n ) {\n return result as NodeObject;\n }\n\n // Handle arrays - convert to @graph\n if (Array.isArray(result)) {\n // Check if items in array are already objects\n const convertedItems = result.map(item => {\n if (typeof item === 'object' && item !== null) {\n // Already object, but ensure it has @type if not present\n if (!item[PROP_ENTITY_TYPE] && !item[PROP_ENTITY_ID] && !item[PROP_ENTITY_VALUE]) {\n return { [PROP_ENTITY_TYPE]: 'skl:Result', ...item };\n }\n return item;\n }\n // Convert primitives to objects with @value\n return { [PROP_ENTITY_VALUE]: item };\n });\n\n return {\n '@context': {\n skl: SKL_NAMESPACE\n },\n '@graph': convertedItems\n };\n }\n\n // Handle primitive values (string, number, boolean)\n if (typeof result !== 'object') {\n return {\n [PROP_ENTITY_VALUE]: result\n };\n }\n\n // Handle plain objects (not arrays, not null)\n // If it's a plain object but not in NodeObject format, add @type\n return {\n [PROP_ENTITY_TYPE]: 'skl:Result',\n '@context': {\n skl: SKL_NAMESPACE\n },\n ...result\n };\n }\n\n private async executeCodeBlocks(\n codeBlocks: NodeObject[],\n args: JSONValue,\n executionOptions: ExecutionOptions\n ): Promise<NodeObject> {\n const results = [];\n let updatedArgs = (args as Record<string, any>) || {};\n for (const codeBlock of codeBlocks) {\n const code = getValueIfDefined(codeBlock[EngineConstants.prop.codeBody])!;\n if (code) {\n const result = await this.executeJavaScriptMapping(updatedArgs, code as string, executionOptions);\n updatedArgs = {\n ...updatedArgs,\n ...result\n };\n results.push(result);\n }\n }\n return results.length > 0 ? results[results.length - 1] : {};\n }\n\n private async executeJavaScriptMapping(\n args: JSONValue,\n code: string,\n _executionOptions: ExecutionOptions\n ): Promise<NodeObject> {\n try {\n // Configure execution options\n const executionOptions: ExecutionOptions = {\n timeout: 60 * 60 * 1000, // 1 hour\n functionName: 'main',\n allowNetwork: true,\n allowedDomains: [],\n allowEnv: true,\n debugMode: true,\n allowRead: true,\n ..._executionOptions\n };\n\n if (!this.codeExecutor) {\n throw new Error('Code executor not set. Please set a code executor using setCodeExecutor()');\n }\n\n // Execute the code\n const executionResult = await this.codeExecutor.execute(code, args as Record<string, any>, executionOptions);\n\n // Handle execution errors\n if (executionResult?.error) {\n throw new Error(`Code execution error: ${executionResult.error?.message ?? 'Unknown error'}`);\n }\n\n // This is a patch to return the output as it is without converting to NodeObject\n // This is needed for some api inputs. We can try doing this using the frame.\n if (executionResult?.result?.rawOutput) {\n return executionResult?.result?.rawOutput;\n }\n // Convert the result to a NodeObject\n return this.ensureNodeObject(executionResult?.result ?? executionResult);\n } catch (error: unknown) {\n throw new Error(\n `Failed to execute JavaScript mapping: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n\n // Expose global hooks to users\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n get hooks(): typeof globalHooks {\n return globalHooks;\n }\n\n public async prepareContextForType(typeSpecOrId: any): Promise<Record<string, any>> {\n const typeSpecs = [];\n if (typeof typeSpecOrId === 'string') {\n typeSpecs.push(\n await this.getSuperClassesOfObject(typeSpecOrId),\n await this.findBy({ id: typeSpecOrId })\n );\n } else {\n typeSpecs.push(typeSpecOrId);\n }\n const context: Record<string, any> = {};\n\n for (const typeSpec of typeSpecs) {\n const properties = typeSpec[SHACL.property] ?? [];\n for (const property of ensureArray(properties)) {\n const dataType = property[SHACL.datatype]?.['@id'];\n const nodeKind = property[SHACL.nodeKind]?.['@id'];\n const path = property[SHACL.path]?.['@id'];\n if (nodeKind === SHACL.IRI) {\n context[path] = {\n '@type': '@id'\n };\n } else {\n context[path] = {\n '@type': dataType\n };\n }\n }\n }\n return context;\n }\n}\n"]}
|
package/dist/logger.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.Logger = void 0;
|
|
|
4
4
|
const util_1 = require("util");
|
|
5
5
|
class Logger {
|
|
6
6
|
constructor(isDebug, metadata, options) {
|
|
7
|
-
this.isDebug =
|
|
7
|
+
this.isDebug = isDebug ?? false;
|
|
8
8
|
this.metadata = metadata;
|
|
9
9
|
this.maxStringLength = options?.maxStringLength ?? 2000;
|
|
10
10
|
this.maxArrayItems = options?.maxArrayItems ?? 10;
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAO/B,MAAa,MAAM;IAUjB,YAAoB,OAAgB,EAAE,QAA6B,EAAE,OAAuB;QAC1F,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from 'util';\n\nexport interface LoggerOptions {\n maxStringLength?: number;\n maxArrayItems?: number;\n}\n\nexport class Logger {\n private static instance: Logger;\n private readonly isDebug: boolean;\n private metadata: Record<string, any>;\n\n // Maximum characters to keep for long strings\n private readonly maxStringLength: number;\n // Maximum number of items to show for long arrays\n private readonly maxArrayItems: number;\n\n private constructor(isDebug: boolean, metadata: Record<string, any>, options?: LoggerOptions) {\n this.isDebug = isDebug ?? false;\n this.metadata = metadata;\n this.maxStringLength = options?.maxStringLength ?? 2_000;\n this.maxArrayItems = options?.maxArrayItems ?? 10;\n }\n\n /**\n * Returns a singleton instance of the logger. The logger honours the DEBUG env variable unless\n * explicitly overridden via the `isDebug` parameter.\n */\n public static getInstance(isDebug?: boolean, metadata?: Record<string, any>, options?: LoggerOptions): Logger {\n if (!Logger.instance) {\n // eslint-disable-next-line no-process-env\n const debugEnabled = isDebug ?? process.env.DEBUG === 'true';\n Logger.instance = new Logger(debugEnabled, metadata ?? {}, options);\n }\n return Logger.instance;\n }\n\n /**\n * Merges the given metadata with the existing metadata attached to the logger.\n */\n public setMetadata(metadata: Record<string, any>): void {\n this.metadata = { ...this.metadata, ...metadata };\n }\n\n public getMetadataString(): string | undefined {\n if (!this.metadata || Object.keys(this.metadata).length === 0) {\n return undefined;\n }\n return JSON.stringify(this.metadata);\n }\n\n // ---------------------------------------------------------------------------\n // Public logging APIs\n // ---------------------------------------------------------------------------\n\n public log(...args: any[]): void {\n if (this.isDebug) {\n const metadataString = this.getMetadataString();\n const logArgs = metadataString ? [ ...this.formatArgs(args), metadataString ] : this.formatArgs(args);\n // eslint-disable-next-line no-console\n console.log(...logArgs);\n }\n }\n\n public error(...args: any[]): void {\n if (this.isDebug) {\n const metadataString = this.getMetadataString();\n const logArgs = metadataString ? [ ...this.formatArgs(args), metadataString ] : this.formatArgs(args);\n // eslint-disable-next-line no-console\n console.error(...logArgs);\n }\n }\n\n public debug(...args: any[]): void {\n if (this.isDebug) {\n const metadataString = this.getMetadataString();\n const logArgs = metadataString ? [ ...this.formatArgs(args), metadataString ] : this.formatArgs(args);\n // eslint-disable-next-line no-console\n console.debug(...logArgs);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Private helpers\n // ---------------------------------------------------------------------------\n\n /**\n * Applies safe formatting to every argument before it is passed to the console. Large strings are\n * truncated, large arrays/objects are abbreviated and circular references are handled gracefully\n * by `util.inspect`.\n */\n private formatArgs(args: any[]): any[] {\n return args.map((arg: any): any => this.formatValue(arg));\n }\n\n private formatValue(value: any): any {\n try {\n if (typeof value === 'string') {\n return this.truncateString(value);\n }\n\n if (Array.isArray(value)) {\n return JSON.stringify(this.truncateArray(value));\n }\n\n if (typeof value === 'object' && value !== null) {\n // For objects we rely on util.inspect which gives us fine-grained control over depth,\n // array length and string length.\n return inspect(value, {\n depth: 6,\n maxArrayLength: this.maxArrayItems,\n maxStringLength: this.maxStringLength,\n breakLength: 120,\n compact: false,\n colors: true\n });\n }\n\n // Primitives, functions, etc. are returned as-is.\n return value;\n } catch (err: unknown) {\n // In the unlikely event that formatting fails, fall back to a best-effort stringify.\n // eslint-disable-next-line no-console\n console.warn('Logger: failed to format value', err);\n return String(value);\n }\n }\n\n private truncateString(str: string): string {\n if (str.length <= this.maxStringLength) {\n return str;\n }\n return `${str.slice(0, this.maxStringLength)}...(truncated ${str.length - this.maxStringLength} chars)`;\n }\n\n private truncateArray(arr: any[]): any[] {\n if (arr.length <= this.maxArrayItems) {\n return arr.map((item: any): any => this.formatValue(item));\n }\n\n const displayedItems = arr.slice(0, this.maxArrayItems).map((item: any): any => this.formatValue(item));\n return [ ...displayedItems, `...(truncated ${arr.length - this.maxArrayItems} items)` ];\n }\n}\n"]}
|
package/package.json
CHANGED
package/src/SklEngine.ts
CHANGED
|
@@ -90,10 +90,10 @@ export class SKLEngine implements SKLEngineInterface {
|
|
|
90
90
|
private readonly globalCallbacks?: Callbacks;
|
|
91
91
|
private readonly disableValidation?: boolean;
|
|
92
92
|
public readonly capability: CapabilityInterface;
|
|
93
|
-
private readonly isDebugMode: boolean;
|
|
94
93
|
private codeExecutor: ICodeExecutor | undefined;
|
|
95
94
|
private readonly skdsEndpointUrl: string;
|
|
96
95
|
private readonly scriptPath: string;
|
|
96
|
+
private readonly logger: Logger;
|
|
97
97
|
public constructor(options: SklEngineOptions) {
|
|
98
98
|
this.queryAdapter = new SparqlQueryAdapter(options);
|
|
99
99
|
this.disableValidation = options.disableValidation;
|
|
@@ -116,8 +116,7 @@ export class SKLEngine implements SKLEngineInterface {
|
|
|
116
116
|
])
|
|
117
117
|
);
|
|
118
118
|
}
|
|
119
|
-
this.
|
|
120
|
-
Logger.getInstance(this.isDebugMode);
|
|
119
|
+
this.logger = Logger.getInstance(options.debugMode);
|
|
121
120
|
|
|
122
121
|
// eslint-disable-next-line func-style
|
|
123
122
|
const getCapabilityHandler =
|
|
@@ -611,14 +610,14 @@ export class SKLEngine implements SKLEngineInterface {
|
|
|
611
610
|
): Promise<OrArray<NodeObject>> {
|
|
612
611
|
this.globalCallbacks?.onCapabilityStart?.(capability[PROP_ENTITY_ID], capabilityArgs);
|
|
613
612
|
if (capabilityConfig?.callbacks?.onCapabilityStart) {
|
|
614
|
-
|
|
613
|
+
this.logger.debug('Capability arguments', capabilityArgs);
|
|
615
614
|
capabilityConfig.callbacks.onCapabilityStart(capability[PROP_ENTITY_ID], capabilityArgs);
|
|
616
615
|
}
|
|
617
616
|
const { mapping, account } = await this.findMappingForCapabilityContextually(
|
|
618
617
|
capability[PROP_ENTITY_ID],
|
|
619
618
|
capabilityArgs
|
|
620
619
|
);
|
|
621
|
-
|
|
620
|
+
this.logger.debug('Mapping', JSON.stringify(mapping));
|
|
622
621
|
const shouldValidate = this.shouldValidate(capabilityConfig);
|
|
623
622
|
if (shouldValidate) {
|
|
624
623
|
await this.assertCapabilityParamsMatchParameterSchemas(capabilityArgs, capability);
|
|
@@ -727,7 +726,7 @@ export class SKLEngine implements SKLEngineInterface {
|
|
|
727
726
|
mapping as MappingWithInputs,
|
|
728
727
|
capabilityConfig
|
|
729
728
|
);
|
|
730
|
-
|
|
729
|
+
this.logger.debug('Mapped args', mappedArgs);
|
|
731
730
|
if (EngineConstants.prop.operationId in mapping || EngineConstants.prop.operationMapping in mapping) {
|
|
732
731
|
returnValue = (await this.executeOperationMapping(
|
|
733
732
|
mapping,
|
|
@@ -771,7 +770,7 @@ export class SKLEngine implements SKLEngineInterface {
|
|
|
771
770
|
const operationInfo = await this.performOperationMappingWithArgs(originalArgs, mapping, capabilityConfig);
|
|
772
771
|
const response = await this.performOperation(operationInfo, mappedArgs, originalArgs, account, capabilityConfig);
|
|
773
772
|
if (!this.ifCapabilityStreaming(capabilityConfig)) {
|
|
774
|
-
|
|
773
|
+
this.logger.debug('Original response', JSON.stringify(response));
|
|
775
774
|
}
|
|
776
775
|
return response;
|
|
777
776
|
}
|
package/src/logger.ts
CHANGED
|
@@ -16,7 +16,7 @@ export class Logger {
|
|
|
16
16
|
private readonly maxArrayItems: number;
|
|
17
17
|
|
|
18
18
|
private constructor(isDebug: boolean, metadata: Record<string, any>, options?: LoggerOptions) {
|
|
19
|
-
this.isDebug =
|
|
19
|
+
this.isDebug = isDebug ?? false;
|
|
20
20
|
this.metadata = metadata;
|
|
21
21
|
this.maxStringLength = options?.maxStringLength ?? 2_000;
|
|
22
22
|
this.maxArrayItems = options?.maxArrayItems ?? 10;
|