@loopstack/core 0.2.0 → 0.3.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.
Files changed (141) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/modules/common/common.module.js +10 -15
  3. package/dist/modules/common/common.module.js.map +1 -1
  4. package/dist/modules/common/errors/object-expression.error.d.ts +4 -0
  5. package/dist/modules/common/errors/object-expression.error.js +13 -0
  6. package/dist/modules/common/errors/object-expression.error.js.map +1 -0
  7. package/dist/modules/common/errors/template-expression.error.d.ts +4 -0
  8. package/dist/modules/common/errors/template-expression.error.js +13 -0
  9. package/dist/modules/common/errors/template-expression.error.js.map +1 -0
  10. package/dist/modules/common/services/context.service.d.ts +1 -0
  11. package/dist/modules/common/services/context.service.js +4 -0
  12. package/dist/modules/common/services/context.service.js.map +1 -1
  13. package/dist/modules/common/services/expression-handler/object-expression.handler.d.ts +20 -0
  14. package/dist/modules/common/services/expression-handler/object-expression.handler.js +125 -0
  15. package/dist/modules/common/services/expression-handler/object-expression.handler.js.map +1 -0
  16. package/dist/modules/common/services/expression-handler/template-expression.handler.d.ts +12 -0
  17. package/dist/modules/common/services/expression-handler/template-expression.handler.js +63 -0
  18. package/dist/modules/common/services/expression-handler/template-expression.handler.js.map +1 -0
  19. package/dist/modules/common/services/handlebars-helpers/comparison-handlebars-helper.service.d.ts +41 -0
  20. package/dist/modules/common/services/handlebars-helpers/comparison-handlebars-helper.service.js +416 -0
  21. package/dist/modules/common/services/handlebars-helpers/comparison-handlebars-helper.service.js.map +1 -0
  22. package/dist/modules/common/services/handlebars-helpers/date-formatter-handlebars-helper.service.d.ts +9 -0
  23. package/dist/modules/common/services/handlebars-helpers/date-formatter-handlebars-helper.service.js +124 -0
  24. package/dist/modules/common/services/handlebars-helpers/date-formatter-handlebars-helper.service.js.map +1 -0
  25. package/dist/modules/common/services/handlebars-helpers/date-formatter-helper.service.d.ts +9 -0
  26. package/dist/modules/common/services/handlebars-helpers/date-formatter-helper.service.js +124 -0
  27. package/dist/modules/common/services/handlebars-helpers/date-formatter-helper.service.js.map +1 -0
  28. package/dist/modules/common/services/handlebars-helpers/index.d.ts +2 -0
  29. package/dist/modules/common/services/handlebars-helpers/index.js +19 -0
  30. package/dist/modules/common/services/handlebars-helpers/index.js.map +1 -0
  31. package/dist/modules/common/services/handlebars-helpers/operators-helper.service.d.ts +41 -0
  32. package/dist/modules/common/services/handlebars-helpers/operators-helper.service.js +416 -0
  33. package/dist/modules/common/services/handlebars-helpers/operators-helper.service.js.map +1 -0
  34. package/dist/modules/common/services/handlebars-processor.service.d.ts +13 -0
  35. package/dist/modules/common/services/handlebars-processor.service.js +138 -0
  36. package/dist/modules/common/services/handlebars-processor.service.js.map +1 -0
  37. package/dist/modules/common/services/index.d.ts +6 -5
  38. package/dist/modules/common/services/index.js +6 -5
  39. package/dist/modules/common/services/index.js.map +1 -1
  40. package/dist/modules/common/services/template.service.d.ts +16 -0
  41. package/dist/modules/common/services/template.service.js +64 -0
  42. package/dist/modules/common/services/template.service.js.map +1 -0
  43. package/dist/modules/common/services/variable-sanitizer.service.d.ts +9 -0
  44. package/dist/modules/common/services/variable-sanitizer.service.js +84 -0
  45. package/dist/modules/common/services/variable-sanitizer.service.js.map +1 -0
  46. package/dist/modules/configuration/configuration.module.js +2 -1
  47. package/dist/modules/configuration/configuration.module.js.map +1 -1
  48. package/dist/modules/configuration/services/configuration.service.d.ts +15 -13
  49. package/dist/modules/configuration/services/configuration.service.js +97 -96
  50. package/dist/modules/configuration/services/configuration.service.js.map +1 -1
  51. package/dist/modules/configuration/services/index.d.ts +1 -0
  52. package/dist/modules/configuration/services/index.js +1 -0
  53. package/dist/modules/configuration/services/index.js.map +1 -1
  54. package/dist/modules/configuration/services/schema-registry.service.d.ts +9 -0
  55. package/dist/modules/configuration/services/schema-registry.service.js +41 -0
  56. package/dist/modules/configuration/services/schema-registry.service.js.map +1 -0
  57. package/dist/modules/persistence/services/document.service.d.ts +5 -1
  58. package/dist/modules/persistence/services/document.service.js +27 -15
  59. package/dist/modules/persistence/services/document.service.js.map +1 -1
  60. package/dist/modules/workflow-processor/services/index.d.ts +2 -1
  61. package/dist/modules/workflow-processor/services/index.js +2 -1
  62. package/dist/modules/workflow-processor/services/index.js.map +1 -1
  63. package/dist/modules/workflow-processor/services/pipeline-processor.service.d.ts +9 -8
  64. package/dist/modules/workflow-processor/services/pipeline-processor.service.js +92 -52
  65. package/dist/modules/workflow-processor/services/pipeline-processor.service.js.map +1 -1
  66. package/dist/modules/workflow-processor/services/root-processor.service.d.ts +2 -2
  67. package/dist/modules/workflow-processor/services/root-processor.service.js +1 -0
  68. package/dist/modules/workflow-processor/services/root-processor.service.js.map +1 -1
  69. package/dist/modules/workflow-processor/services/service-execution.service.d.ts +12 -0
  70. package/dist/modules/workflow-processor/services/service-execution.service.js +53 -0
  71. package/dist/modules/workflow-processor/services/service-execution.service.js.map +1 -0
  72. package/dist/modules/workflow-processor/services/state-machine-config.service.d.ts +2 -17
  73. package/dist/modules/workflow-processor/services/state-machine-config.service.js +33 -17
  74. package/dist/modules/workflow-processor/services/state-machine-config.service.js.map +1 -1
  75. package/dist/modules/workflow-processor/services/state-machine-processor.service.d.ts +11 -7
  76. package/dist/modules/workflow-processor/services/state-machine-processor.service.js +90 -24
  77. package/dist/modules/workflow-processor/services/state-machine-processor.service.js.map +1 -1
  78. package/dist/modules/workflow-processor/services/template-expression-evaluator.service.d.ts +24 -4
  79. package/dist/modules/workflow-processor/services/template-expression-evaluator.service.js +90 -21
  80. package/dist/modules/workflow-processor/services/template-expression-evaluator.service.js.map +1 -1
  81. package/dist/modules/workflow-processor/services/tool-execution.service.d.ts +8 -20
  82. package/dist/modules/workflow-processor/services/tool-execution.service.js +31 -55
  83. package/dist/modules/workflow-processor/services/tool-execution.service.js.map +1 -1
  84. package/dist/modules/workflow-processor/services/workflow-context.service.d.ts +4 -0
  85. package/dist/modules/{common/services/template-engine.service.js → workflow-processor/services/workflow-context.service.js} +12 -15
  86. package/dist/modules/workflow-processor/services/workflow-context.service.js.map +1 -0
  87. package/dist/modules/workflow-processor/services/workflow-processor.service.d.ts +2 -2
  88. package/dist/modules/workflow-processor/services/workflow-processor.service.js +12 -8
  89. package/dist/modules/workflow-processor/services/workflow-processor.service.js.map +1 -1
  90. package/dist/modules/workflow-processor/services/workflow-state.service.d.ts +2 -2
  91. package/dist/modules/workflow-processor/services/workflow-state.service.js +5 -5
  92. package/dist/modules/workflow-processor/services/workflow-state.service.js.map +1 -1
  93. package/dist/modules/workflow-processor/tool-services/add-namespace.service.js +4 -4
  94. package/dist/modules/workflow-processor/tool-services/add-namespace.service.js.map +1 -1
  95. package/dist/modules/workflow-processor/tool-services/batch-create-documents.service.d.ts +4 -8
  96. package/dist/modules/workflow-processor/tool-services/batch-create-documents.service.js +38 -26
  97. package/dist/modules/workflow-processor/tool-services/batch-create-documents.service.js.map +1 -1
  98. package/dist/modules/workflow-processor/tool-services/create-document.service.d.ts +17 -138
  99. package/dist/modules/workflow-processor/tool-services/create-document.service.js +83 -31
  100. package/dist/modules/workflow-processor/tool-services/create-document.service.js.map +1 -1
  101. package/dist/modules/workflow-processor/tool-services/load-document.service.d.ts +61 -51
  102. package/dist/modules/workflow-processor/tool-services/load-document.service.js +57 -79
  103. package/dist/modules/workflow-processor/tool-services/load-document.service.js.map +1 -1
  104. package/dist/modules/workflow-processor/tool-services/mock.service.d.ts +11 -8
  105. package/dist/modules/workflow-processor/tool-services/mock.service.js +41 -9
  106. package/dist/modules/workflow-processor/tool-services/mock.service.js.map +1 -1
  107. package/dist/modules/workflow-processor/tool-services/set-context.service.d.ts +3 -0
  108. package/dist/modules/workflow-processor/tool-services/set-context.service.js +11 -5
  109. package/dist/modules/workflow-processor/tool-services/set-context.service.js.map +1 -1
  110. package/dist/modules/workflow-processor/tool-services/set-target-place.service.js +7 -6
  111. package/dist/modules/workflow-processor/tool-services/set-target-place.service.js.map +1 -1
  112. package/dist/modules/workflow-processor/tool-services/transition-selector.service.js +2 -2
  113. package/dist/modules/workflow-processor/tool-services/transition-selector.service.js.map +1 -1
  114. package/dist/modules/workflow-processor/tool-services/update-document.service.d.ts +32 -55
  115. package/dist/modules/workflow-processor/tool-services/update-document.service.js +92 -7
  116. package/dist/modules/workflow-processor/tool-services/update-document.service.js.map +1 -1
  117. package/dist/modules/workflow-processor/validators/workflow-option.validator.d.ts +1 -1
  118. package/dist/modules/workflow-processor/validators/workflow-option.validator.js +3 -3
  119. package/dist/modules/workflow-processor/validators/workflow-option.validator.js.map +1 -1
  120. package/dist/modules/workflow-processor/workflow-processor.module.js +2 -1
  121. package/dist/modules/workflow-processor/workflow-processor.module.js.map +1 -1
  122. package/dist/utils/load-configuration.js +5 -3
  123. package/dist/utils/load-configuration.js.map +1 -1
  124. package/package.json +5 -3
  125. package/dist/modules/common/services/document-helper.service.d.ts +0 -198
  126. package/dist/modules/common/services/document-helper.service.js +0 -53
  127. package/dist/modules/common/services/document-helper.service.js.map +0 -1
  128. package/dist/modules/common/services/expression-evaluator.service.d.ts +0 -5
  129. package/dist/modules/common/services/expression-evaluator.service.js +0 -44
  130. package/dist/modules/common/services/expression-evaluator.service.js.map +0 -1
  131. package/dist/modules/common/services/schema-validator.service.d.ts +0 -7
  132. package/dist/modules/common/services/schema-validator.service.js +0 -41
  133. package/dist/modules/common/services/schema-validator.service.js.map +0 -1
  134. package/dist/modules/common/services/template-engine.service.d.ts +0 -5
  135. package/dist/modules/common/services/template-engine.service.js.map +0 -1
  136. package/dist/modules/common/services/value-parser.service.d.ts +0 -19
  137. package/dist/modules/common/services/value-parser.service.js +0 -68
  138. package/dist/modules/common/services/value-parser.service.js.map +0 -1
  139. package/dist/modules/workflow-processor/services/tool-schema-validator.service.d.ts +0 -5
  140. package/dist/modules/workflow-processor/services/tool-schema-validator.service.js +0 -41
  141. package/dist/modules/workflow-processor/services/tool-schema-validator.service.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @loopstack/core
2
2
 
3
+ ## 0.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Bugfixes, Added Template Expression Helpers
8
+ - Updated dependencies
9
+ - @loopstack/shared@0.3.1
10
+
11
+ ## 0.3.0
12
+
13
+ ### Minor Changes
14
+
15
+ - Improved Document Handling, Template Expressions and added Config Includes
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+ - @loopstack/shared@0.3.0
21
+
3
22
  ## 0.2.0
4
23
 
5
24
  ### Minor Changes
@@ -11,30 +11,25 @@ const common_1 = require("@nestjs/common");
11
11
  const event_emitter_1 = require("@nestjs/event-emitter");
12
12
  const services_1 = require("./services");
13
13
  const client_message_service_1 = require("./services/client-message.service");
14
+ const configuration_1 = require("../configuration");
14
15
  let CommonModule = class CommonModule {
15
16
  };
16
17
  exports.CommonModule = CommonModule;
17
18
  exports.CommonModule = CommonModule = __decorate([
18
19
  (0, common_1.Module)({
19
- imports: [event_emitter_1.EventEmitterModule.forRoot()],
20
+ imports: [configuration_1.ConfigurationModule, event_emitter_1.EventEmitterModule.forRoot()],
20
21
  providers: [
21
22
  client_message_service_1.ClientMessageService,
22
- services_1.ExpressionEvaluatorService,
23
- services_1.SchemaValidatorService,
24
- services_1.TemplateEngineService,
25
- services_1.DocumentHelperService,
26
- services_1.ValueParserService,
27
- services_1.ContextService,
28
- ],
29
- exports: [
30
- client_message_service_1.ClientMessageService,
31
- services_1.ExpressionEvaluatorService,
32
- services_1.SchemaValidatorService,
33
- services_1.TemplateEngineService,
34
- services_1.DocumentHelperService,
35
- services_1.ValueParserService,
36
23
  services_1.ContextService,
24
+ services_1.TemplateService,
25
+ services_1.ObjectExpressionHandler,
26
+ services_1.TemplateExpressionHandler,
27
+ services_1.HandlebarsProcessor,
28
+ services_1.DateFormatterHelperService,
29
+ services_1.OperatorsHelperService,
30
+ services_1.VariableSanitizerService,
37
31
  ],
32
+ exports: [client_message_service_1.ClientMessageService, services_1.ContextService, services_1.TemplateService],
38
33
  })
39
34
  ], CommonModule);
40
35
  //# sourceMappingURL=common.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.module.js","sourceRoot":"","sources":["../../../src/modules/common/common.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yDAA2D;AAC3D,yCAOoB;AACpB,8EAAyE;AAuBlE,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IArBxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,kCAAkB,CAAC,OAAO,EAAE,CAAC;QACvC,SAAS,EAAE;YACT,6CAAoB;YACpB,qCAA0B;YAC1B,iCAAsB;YACtB,gCAAqB;YACrB,gCAAqB;YACrB,6BAAkB;YAClB,yBAAc;SACf;QACD,OAAO,EAAE;YACP,6CAAoB;YACpB,qCAA0B;YAC1B,iCAAsB;YACtB,gCAAqB;YACrB,gCAAqB;YACrB,6BAAkB;YAClB,yBAAc;SACf;KACF,CAAC;GACW,YAAY,CAAG"}
1
+ {"version":3,"file":"common.module.js","sourceRoot":"","sources":["../../../src/modules/common/common.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yDAA2D;AAC3D,yCAQoB;AACpB,8EAAyE;AACzE,oDAAuD;AAiBhD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IAfxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,mCAAmB,EAAE,kCAAkB,CAAC,OAAO,EAAE,CAAC;QAC5D,SAAS,EAAE;YACT,6CAAoB;YACpB,yBAAc;YACd,0BAAe;YACf,kCAAuB;YACvB,oCAAyB;YACzB,8BAAmB;YACnB,qCAA0B;YAC1B,iCAAsB;YACtB,mCAAwB;SACzB;QACD,OAAO,EAAE,CAAC,6CAAoB,EAAE,yBAAc,EAAE,0BAAe,CAAC;KACjE,CAAC;GACW,YAAY,CAAG"}
@@ -0,0 +1,4 @@
1
+ export declare class ObjectExpressionError extends Error {
2
+ readonly code: string;
3
+ constructor(message: string, code: string);
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectExpressionError = void 0;
4
+ class ObjectExpressionError extends Error {
5
+ code;
6
+ constructor(message, code) {
7
+ super(message);
8
+ this.code = code;
9
+ this.name = 'ObjectExpressionError';
10
+ }
11
+ }
12
+ exports.ObjectExpressionError = ObjectExpressionError;
13
+ //# sourceMappingURL=object-expression.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-expression.error.js","sourceRoot":"","sources":["../../../../src/modules/common/errors/object-expression.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,qBAAsB,SAAQ,KAAK;IAG5B;IAFlB,YACE,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AARD,sDAQC"}
@@ -0,0 +1,4 @@
1
+ export declare class TemplateExpressionError extends Error {
2
+ readonly code: string;
3
+ constructor(message: string, code: string);
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemplateExpressionError = void 0;
4
+ class TemplateExpressionError extends Error {
5
+ code;
6
+ constructor(message, code) {
7
+ super(message);
8
+ this.code = code;
9
+ this.name = 'ObjectExpressionError';
10
+ }
11
+ }
12
+ exports.TemplateExpressionError = TemplateExpressionError;
13
+ //# sourceMappingURL=template-expression.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-expression.error.js","sourceRoot":"","sources":["../../../../src/modules/common/errors/template-expression.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,uBAAwB,SAAQ,KAAK;IAG9B;IAFlB,YACE,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AARD,0DAQC"}
@@ -2,4 +2,5 @@ import { ContextInterface, ProcessRunInterface, PipelineEntity } from '@loopstac
2
2
  export declare class ContextService {
3
3
  createRootContext(pipeline: PipelineEntity, additional: Partial<ContextInterface>): ContextInterface;
4
4
  create(payload: ProcessRunInterface | ContextInterface): ContextInterface;
5
+ addIncludes(context: ContextInterface, includes: Map<string, string>): void;
5
6
  }
@@ -21,12 +21,16 @@ let ContextService = class ContextService {
21
21
  workspaceId: pipeline.workspaceId,
22
22
  labels: pipeline.labels,
23
23
  index: pipeline.index,
24
+ includes: new Map(),
24
25
  ...additional,
25
26
  };
26
27
  }
27
28
  create(payload) {
28
29
  return lodash_1.default.cloneDeep(payload);
29
30
  }
31
+ addIncludes(context, includes) {
32
+ context.includes = new Map([...context.includes, ...includes]);
33
+ }
30
34
  };
31
35
  exports.ContextService = ContextService;
32
36
  exports.ContextService = ContextService = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"context.service.js","sourceRoot":"","sources":["../../../../src/modules/common/services/context.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,oDAAuB;AAQhB,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,iBAAiB,CACf,QAAwB,EACxB,UAAqC;QAErC,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,SAAS;YAC1B,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,GAAG,UAAU;SACM,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,OAA+C;QACpD,OAAO,gBAAC,CAAC,SAAS,CAAC,OAAO,CAAqB,CAAC;IAClD,CAAC;CACF,CAAA;AAnBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;GACA,cAAc,CAmB1B"}
1
+ {"version":3,"file":"context.service.js","sourceRoot":"","sources":["../../../../src/modules/common/services/context.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,oDAAuB;AAQhB,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,iBAAiB,CACf,QAAwB,EACxB,UAAqC;QAErC,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,SAAS;YAC1B,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,GAAG,UAAU;SACM,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,OAA+C;QACpD,OAAO,gBAAC,CAAC,SAAS,CAAC,OAAO,CAAqB,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,OAAyB,EAAE,QAA6B;QAClE,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;CACF,CAAA;AAxBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;GACA,cAAc,CAwB1B"}
@@ -0,0 +1,20 @@
1
+ import { TemplateDetector, TemplateProcessor } from '../template.service';
2
+ import { VariableSanitizerService } from '../variable-sanitizer.service';
3
+ export declare class ObjectExpressionHandler implements TemplateDetector, TemplateProcessor {
4
+ private readonly variableSanitizerService;
5
+ private readonly logger;
6
+ private readonly DEFAULT_MAX_DEPTH;
7
+ private readonly DEFAULT_MAX_LENGTH;
8
+ private readonly EXPRESSION_PATTERN;
9
+ private readonly DANGEROUS_PATTERNS;
10
+ private readonly VALID_SEGMENT_PATTERN;
11
+ constructor(variableSanitizerService: VariableSanitizerService);
12
+ canHandle(value: any): boolean;
13
+ process(content: string, variables: Record<string, any>): any;
14
+ private processExpression;
15
+ private extractExpression;
16
+ private validateExpression;
17
+ private parseExpressionSegments;
18
+ private validateSegmentsSecurity;
19
+ private evaluateExpression;
20
+ }
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var ObjectExpressionHandler_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ObjectExpressionHandler = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const lodash_1 = require("lodash");
16
+ const variable_sanitizer_service_1 = require("../variable-sanitizer.service");
17
+ const object_expression_error_1 = require("../../errors/object-expression.error");
18
+ let ObjectExpressionHandler = ObjectExpressionHandler_1 = class ObjectExpressionHandler {
19
+ variableSanitizerService;
20
+ logger = new common_1.Logger(ObjectExpressionHandler_1.name);
21
+ DEFAULT_MAX_DEPTH = 10;
22
+ DEFAULT_MAX_LENGTH = 1000;
23
+ EXPRESSION_PATTERN = /^\$\{(.+)\}$/;
24
+ DANGEROUS_PATTERNS = [
25
+ /^__/,
26
+ /\b__proto__\b/i,
27
+ /\bprototype\b$/i,
28
+ /\bconstructor\b$/i,
29
+ /\beval\b$/i,
30
+ /\bfunction\b$/i,
31
+ /\brequire\b$/i,
32
+ /\bimport\b$/i,
33
+ /\bprocess\b$/i,
34
+ /\bprocess\.env\b/i,
35
+ /\bglobal\b$/i,
36
+ /\bwindow\b$/i,
37
+ /\bBuffer\b$/i,
38
+ /\bconsole\b$/i,
39
+ ];
40
+ VALID_SEGMENT_PATTERN = /^[a-zA-Z0-9_-]+(\[\d+\])?$/;
41
+ constructor(variableSanitizerService) {
42
+ this.variableSanitizerService = variableSanitizerService;
43
+ }
44
+ canHandle(value) {
45
+ if (typeof value !== 'string') {
46
+ return false;
47
+ }
48
+ const trimmed = value.trim();
49
+ return this.EXPRESSION_PATTERN.test(trimmed);
50
+ }
51
+ process(content, variables) {
52
+ try {
53
+ const context = {
54
+ variables,
55
+ depth: 0,
56
+ };
57
+ return this.processExpression(content, context);
58
+ }
59
+ catch (error) {
60
+ this.logger.error(`Failed to process object expression (${content}): ${error.message}`, {
61
+ expression: content,
62
+ });
63
+ if (error instanceof object_expression_error_1.ObjectExpressionError) {
64
+ throw error;
65
+ }
66
+ throw new object_expression_error_1.ObjectExpressionError('Object expression evaluation failed', 'EVALUATION_ERROR');
67
+ }
68
+ }
69
+ processExpression(content, context) {
70
+ const expression = this.extractExpression(content);
71
+ this.validateExpression(expression);
72
+ const sanitizedVariables = this.variableSanitizerService.sanitizeVariables(context.variables);
73
+ return this.evaluateExpression(expression, sanitizedVariables);
74
+ }
75
+ extractExpression(content) {
76
+ const trimmed = content.trim();
77
+ const match = trimmed.match(this.EXPRESSION_PATTERN);
78
+ if (!match || !match[1]) {
79
+ throw new object_expression_error_1.ObjectExpressionError('Invalid expression format', 'INVALID_FORMAT');
80
+ }
81
+ const expression = match[1].trim();
82
+ if (!expression) {
83
+ throw new object_expression_error_1.ObjectExpressionError('Empty expression not allowed', 'EMPTY_EXPRESSION');
84
+ }
85
+ return expression;
86
+ }
87
+ validateExpression(expression, options = {}) {
88
+ const { maxDepth = this.DEFAULT_MAX_DEPTH, maxLength = this.DEFAULT_MAX_LENGTH, } = options;
89
+ if (expression.length > maxLength) {
90
+ throw new object_expression_error_1.ObjectExpressionError(`Expression too long (max: ${maxLength} characters)`, 'EXPRESSION_TOO_LONG');
91
+ }
92
+ const segments = this.parseExpressionSegments(expression);
93
+ if (segments.length > maxDepth) {
94
+ throw new object_expression_error_1.ObjectExpressionError(`Expression depth too high (max: ${maxDepth} levels)`, 'DEPTH_EXCEEDED');
95
+ }
96
+ this.validateSegmentsSecurity(segments);
97
+ }
98
+ parseExpressionSegments(expression) {
99
+ return expression.split('.').filter((segment) => segment.length > 0);
100
+ }
101
+ validateSegmentsSecurity(segments) {
102
+ for (const segment of segments) {
103
+ if (this.DANGEROUS_PATTERNS.some((pattern) => pattern.test(segment))) {
104
+ throw new object_expression_error_1.ObjectExpressionError('Expression contains prohibited patterns', 'SECURITY_VIOLATION');
105
+ }
106
+ if (!this.VALID_SEGMENT_PATTERN.test(segment)) {
107
+ throw new object_expression_error_1.ObjectExpressionError('Expression contains invalid characters or format', 'INVALID_SEGMENT');
108
+ }
109
+ }
110
+ }
111
+ evaluateExpression(expression, variables) {
112
+ try {
113
+ return (0, lodash_1.get)(variables, expression);
114
+ }
115
+ catch (error) {
116
+ throw new object_expression_error_1.ObjectExpressionError('Failed to evaluate expression path', 'EVALUATION_FAILED');
117
+ }
118
+ }
119
+ };
120
+ exports.ObjectExpressionHandler = ObjectExpressionHandler;
121
+ exports.ObjectExpressionHandler = ObjectExpressionHandler = ObjectExpressionHandler_1 = __decorate([
122
+ (0, common_1.Injectable)(),
123
+ __metadata("design:paramtypes", [variable_sanitizer_service_1.VariableSanitizerService])
124
+ ], ObjectExpressionHandler);
125
+ //# sourceMappingURL=object-expression.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-expression.handler.js","sourceRoot":"","sources":["../../../../../src/modules/common/services/expression-handler/object-expression.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { TemplateDetector, TemplateProcessor } from '../template.service';
2
+ import { HandlebarsProcessor } from '../handlebars-processor.service';
3
+ import { VariableSanitizerService } from '../variable-sanitizer.service';
4
+ export declare class TemplateExpressionHandler implements TemplateDetector, TemplateProcessor {
5
+ private readonly handlebarsProcessor;
6
+ private readonly variableSanitizerService;
7
+ private readonly logger;
8
+ private static readonly MAX_TEMPLATE_SIZE;
9
+ constructor(handlebarsProcessor: HandlebarsProcessor, variableSanitizerService: VariableSanitizerService);
10
+ canHandle(value: any): boolean;
11
+ process(content: string, variables: Record<string, any>): any;
12
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var TemplateExpressionHandler_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.TemplateExpressionHandler = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const handlebars_processor_service_1 = require("../handlebars-processor.service");
16
+ const variable_sanitizer_service_1 = require("../variable-sanitizer.service");
17
+ const template_expression_error_1 = require("../../errors/template-expression.error");
18
+ let TemplateExpressionHandler = class TemplateExpressionHandler {
19
+ static { TemplateExpressionHandler_1 = this; }
20
+ handlebarsProcessor;
21
+ variableSanitizerService;
22
+ logger = new common_1.Logger(TemplateExpressionHandler_1.name);
23
+ static MAX_TEMPLATE_SIZE = 50000;
24
+ constructor(handlebarsProcessor, variableSanitizerService) {
25
+ this.handlebarsProcessor = handlebarsProcessor;
26
+ this.variableSanitizerService = variableSanitizerService;
27
+ }
28
+ canHandle(value) {
29
+ return (typeof value === 'string' &&
30
+ value.includes('{{') &&
31
+ value.includes('}}') &&
32
+ !value.trim().startsWith('${{'));
33
+ }
34
+ process(content, variables) {
35
+ try {
36
+ const context = {
37
+ variables,
38
+ depth: 0,
39
+ };
40
+ if (content.length > TemplateExpressionHandler_1.MAX_TEMPLATE_SIZE) {
41
+ throw new template_expression_error_1.TemplateExpressionError('Template too large', 'EVALUATION_ERROR');
42
+ }
43
+ const sanitizedVariables = this.variableSanitizerService.sanitizeVariables(context.variables);
44
+ return this.handlebarsProcessor.render(content, sanitizedVariables);
45
+ }
46
+ catch (error) {
47
+ this.logger.error(`Failed to process template expression: ${error.message}`, {
48
+ expression: content,
49
+ });
50
+ if (error instanceof template_expression_error_1.TemplateExpressionError) {
51
+ throw error;
52
+ }
53
+ throw new template_expression_error_1.TemplateExpressionError('Template expression evaluation failed', 'EVALUATION_ERROR');
54
+ }
55
+ }
56
+ };
57
+ exports.TemplateExpressionHandler = TemplateExpressionHandler;
58
+ exports.TemplateExpressionHandler = TemplateExpressionHandler = TemplateExpressionHandler_1 = __decorate([
59
+ (0, common_1.Injectable)(),
60
+ __metadata("design:paramtypes", [handlebars_processor_service_1.HandlebarsProcessor,
61
+ variable_sanitizer_service_1.VariableSanitizerService])
62
+ ], TemplateExpressionHandler);
63
+ //# sourceMappingURL=template-expression.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-expression.handler.js","sourceRoot":"","sources":["../../../../../src/modules/common/services/expression-handler/template-expression.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AAEpD,kFAAsE;AACtE,8EAAyE;AACzE,sFAAiF;AAQ1E,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;;IAQjB;IACA;IANF,MAAM,GAAG,IAAI,eAAM,CAAC,2BAAyB,CAAC,IAAI,CAAC,CAAC;IAE7D,MAAM,CAAU,iBAAiB,GAAG,KAAK,CAAC;IAElD,YACmB,mBAAwC,EACxC,wBAAkD;QADlD,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,6BAAwB,GAAxB,wBAAwB,CAA0B;IAClE,CAAC;IAEJ,SAAS,CAAC,KAAU;QAClB,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAChC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAe,EAAE,SAA8B;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,GAAsB;gBACjC,SAAS;gBACT,KAAK,EAAE,CAAC;aACT,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,GAAG,2BAAyB,CAAC,iBAAiB,EAAE,CAAC;gBACjE,MAAM,IAAI,mDAAuB,CAC/B,oBAAoB,EACpB,kBAAkB,CACnB,CAAC;YACJ,CAAC;YAED,MAAM,kBAAkB,GACtB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,0CAA0C,KAAK,CAAC,OAAO,EAAE,EACzD;gBACE,UAAU,EAAE,OAAO;aACpB,CACF,CAAC;YAEF,IAAI,KAAK,YAAY,mDAAuB,EAAE,CAAC;gBAC7C,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,mDAAuB,CAC/B,uCAAuC,EACvC,kBAAkB,CACnB,CAAC;QACJ,CAAC;IACH,CAAC;;AAvDU,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;qCAS6B,kDAAmB;QACd,qDAAwB;GAT1D,yBAAyB,CAwDrC"}
@@ -0,0 +1,41 @@
1
+ export declare class ComparisonHandlebarsHelperService {
2
+ getEqualsHelper(): (...args: any[]) => boolean;
3
+ getNotEqualsHelper(): (...args: any[]) => boolean;
4
+ getLooseEqualsHelper(): (...args: any[]) => boolean;
5
+ getLooseNotEqualsHelper(): (...args: any[]) => boolean;
6
+ getGreaterThanHelper(): (...args: any[]) => boolean;
7
+ getGreaterThanOrEqualHelper(): (...args: any[]) => boolean;
8
+ getLessThanHelper(): (...args: any[]) => boolean;
9
+ getLessThanOrEqualHelper(): (...args: any[]) => boolean;
10
+ getAndHelper(): (...args: any[]) => boolean;
11
+ getOrHelper(): (...args: any[]) => boolean;
12
+ getNotHelper(): (...args: any[]) => boolean;
13
+ getContainsHelper(): (...args: any[]) => boolean;
14
+ getStartsWithHelper(): (...args: any[]) => boolean;
15
+ getEndsWithHelper(): (...args: any[]) => boolean;
16
+ getRegexTestHelper(): (...args: any[]) => boolean;
17
+ getInHelper(): (...args: any[]) => boolean;
18
+ getLengthHelper(): (...args: any[]) => number;
19
+ getIsEmptyHelper(): (...args: any[]) => boolean;
20
+ getTypeOfHelper(): (...args: any[]) => string;
21
+ getIsNullHelper(): (...args: any[]) => boolean;
22
+ getIsUndefinedHelper(): (...args: any[]) => boolean;
23
+ getIsNumberHelper(): (...args: any[]) => boolean;
24
+ getIsStringHelper(): (...args: any[]) => boolean;
25
+ getIsBooleanHelper(): (...args: any[]) => boolean;
26
+ getIsArrayHelper(): (...args: any[]) => boolean;
27
+ getIsObjectHelper(): (...args: any[]) => boolean;
28
+ getAddHelper(): (...args: any[]) => number;
29
+ getSubtractHelper(): (...args: any[]) => number;
30
+ getMultiplyHelper(): (...args: any[]) => number;
31
+ getDivideHelper(): (...args: any[]) => number;
32
+ getModuloHelper(): (...args: any[]) => number;
33
+ getDefaultHelper(): (...args: any[]) => any;
34
+ private safeCompare;
35
+ private safeNumericCompare;
36
+ private safeStringOperation;
37
+ private sanitizeValue;
38
+ private sanitizeString;
39
+ private safeNumber;
40
+ private safeTruthy;
41
+ }