@cargolift-cdi/lib-payload 0.1.7 → 0.1.9

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 (30) hide show
  1. package/dist/cjs/index.js +4 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/payload-condition/payload-condition.interface.js +3 -0
  4. package/dist/cjs/payload-condition/payload-condition.interface.js.map +1 -0
  5. package/dist/cjs/payload-condition/payload-condition.js +50 -0
  6. package/dist/cjs/payload-condition/payload-condition.js.map +1 -0
  7. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  8. package/dist/cjs/util/payload-comparator.util.js +65 -0
  9. package/dist/cjs/util/payload-comparator.util.js.map +1 -0
  10. package/dist/cjs/util/payload-path.util.js +25 -0
  11. package/dist/cjs/util/payload-path.util.js.map +1 -0
  12. package/dist/cjs/util/util.js.map +1 -1
  13. package/dist/esm/index.js +4 -0
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/payload-condition/payload-condition.interface.js +2 -0
  16. package/dist/esm/payload-condition/payload-condition.interface.js.map +1 -0
  17. package/dist/esm/payload-condition/payload-condition.js +46 -0
  18. package/dist/esm/payload-condition/payload-condition.js.map +1 -0
  19. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  20. package/dist/esm/util/payload-comparator.util.js +61 -0
  21. package/dist/esm/util/payload-comparator.util.js.map +1 -0
  22. package/dist/esm/util/payload-path.util.js +21 -0
  23. package/dist/esm/util/payload-path.util.js.map +1 -0
  24. package/dist/esm/util/util.js.map +1 -1
  25. package/dist/types/index.d.ts +4 -0
  26. package/dist/types/payload-condition/payload-condition.d.ts +8 -0
  27. package/dist/types/payload-condition/payload-condition.interface.d.ts +17 -0
  28. package/dist/types/util/payload-comparator.util.d.ts +6 -0
  29. package/dist/types/util/payload-path.util.d.ts +4 -0
  30. package/package.json +2 -2
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PayloadComparator = void 0;
4
+ class PayloadComparator {
5
+ static compare(left, operator, right) {
6
+ switch (operator) {
7
+ case "=":
8
+ return left === right || left == right;
9
+ case "!=":
10
+ return left !== right && left != right;
11
+ case ">":
12
+ return left > right;
13
+ case ">=":
14
+ return left >= right;
15
+ case "<":
16
+ return left < right;
17
+ case "<=":
18
+ return left <= right;
19
+ case "in":
20
+ return Array.isArray(right) && right.includes(left);
21
+ case "not_in":
22
+ return Array.isArray(right) && !right.includes(left);
23
+ case "contains":
24
+ return this.contains(left, right);
25
+ case "not_contains":
26
+ return !this.contains(left, right);
27
+ case "starts_with":
28
+ return typeof left === "string" && typeof right === "string" && left.startsWith(right);
29
+ case "ends_with":
30
+ return typeof left === "string" && typeof right === "string" && left.endsWith(right);
31
+ case "regex":
32
+ return typeof left === "string" && new RegExp(String(right)).test(left);
33
+ case "exists":
34
+ return right ? left !== undefined && left !== null : left === undefined || left === null;
35
+ case "not_exists":
36
+ return right ? left === undefined || left === null : left !== undefined && left !== null;
37
+ case "empty":
38
+ return !!right === this.isEmpty(left);
39
+ case "not_empty":
40
+ return !!right === !this.isEmpty(left);
41
+ default:
42
+ return false;
43
+ }
44
+ }
45
+ static contains(container, value) {
46
+ if (Array.isArray(container))
47
+ return container.includes(value);
48
+ if (typeof container === "string")
49
+ return container.includes(String(value));
50
+ return false;
51
+ }
52
+ static isEmpty(value) {
53
+ if (value === undefined || value === null)
54
+ return true;
55
+ if (typeof value === "string")
56
+ return value.length === 0;
57
+ if (Array.isArray(value))
58
+ return value.length === 0;
59
+ if (typeof value === "object")
60
+ return Object.keys(value).length === 0;
61
+ return false;
62
+ }
63
+ }
64
+ exports.PayloadComparator = PayloadComparator;
65
+ //# sourceMappingURL=payload-comparator.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-comparator.util.js","sourceRoot":"","sources":["../../../src/util/payload-comparator.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PayloadPath = void 0;
4
+ class PayloadPath {
5
+ static get(payload, path) {
6
+ if (!path || path === "/")
7
+ return payload;
8
+ const segments = path.split("/").filter(Boolean);
9
+ let current = payload;
10
+ for (const segment of segments) {
11
+ if (current === undefined || current === null)
12
+ return undefined;
13
+ const key = this.toKey(segment);
14
+ current = current[key];
15
+ }
16
+ return current;
17
+ }
18
+ static toKey(segment) {
19
+ if (/^\d+$/.test(segment))
20
+ return Number(segment);
21
+ return segment;
22
+ }
23
+ }
24
+ exports.PayloadPath = PayloadPath;
25
+ //# sourceMappingURL=payload-path.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-path.util.js","sourceRoot":"","sources":["../../../src/util/payload-path.util.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAW;IAKf,MAAM,CAAC,GAAG,CAAC,OAAgB,EAAE,IAAY;QAC9C,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,OAAkB,CAAC;QAErD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,OAAO,GAAQ,OAAc,CAAC;QAElC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,SAAS,CAAC;YAEhE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO,GAAG,OAAO,CAAC,GAA2B,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAe;QAClC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAzBD,kCAyBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/util/util.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAW;IACf,MAAM,CAAC,SAAS,CAAC,OAAgB;QACtC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAA0C,CAAC;QACpD,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CAGF;AAnBD,kCAmBC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/util/util.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAW;IACf,MAAM,CAAC,SAAS,CAAC,OAAgB;QACtC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAA0C,CAAC;QACpD,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAjBD,kCAiBC"}
package/dist/esm/index.js CHANGED
@@ -3,4 +3,8 @@ export * from "./payload-validation/payload-validation.interface.js";
3
3
  export * from "./payload-response-interpreter/payload-response-interpreter.js";
4
4
  export * from "./payload-transformation/payload-transformation.js";
5
5
  export * from "./util/util.js";
6
+ export * from "./payload-condition/payload-condition.js";
7
+ export * from "./payload-condition/payload-condition.interface.js";
8
+ export * from "./util/payload-path.util.js";
9
+ export * from "./util/payload-comparator.util.js";
6
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sDAAsD,CAAC;AACrE,cAAc,gEAAgE,CAAC;AAC/E,cAAc,oDAAoD,CAAC;AAEnE,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sDAAsD,CAAC;AACrE,cAAc,gEAAgE,CAAC;AAC/E,cAAc,oDAAoD,CAAC;AAEnE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0CAA0C,CAAC;AACzD,cAAc,oDAAoD,CAAC;AACnE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=payload-condition.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-condition.interface.js","sourceRoot":"","sources":["../../../src/payload-condition/payload-condition.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { PayloadUtil } from "../util/util.js";
2
+ import { PayloadPath } from "../util/payload-path.util.js";
3
+ import { PayloadComparator } from "../util/payload-comparator.util.js";
4
+ export class PayloadCondition {
5
+ static async check(conditions, payload) {
6
+ if (conditions?.conditions === undefined || conditions.conditions === null) {
7
+ return { success: true };
8
+ }
9
+ try {
10
+ const normalizedPayload = PayloadUtil.normalize(payload);
11
+ if (normalizedPayload === undefined) {
12
+ return { success: false, error: "Payload invalido para avaliacao de condicoes" };
13
+ }
14
+ const success = ConditionEvaluator.evaluate(conditions.conditions, normalizedPayload);
15
+ return { success };
16
+ }
17
+ catch (err) {
18
+ return { success: false, error: "Erro ao verificar condicoes: " + err.message };
19
+ }
20
+ }
21
+ }
22
+ class ConditionEvaluator {
23
+ static evaluate(condition, payload) {
24
+ if (Array.isArray(condition)) {
25
+ return condition.every((c) => this.evaluate(c, payload));
26
+ }
27
+ if (this.isAll(condition)) {
28
+ return condition.all.every((c) => this.evaluate(c, payload));
29
+ }
30
+ if (this.isAny(condition)) {
31
+ return condition.any.some((c) => this.evaluate(c, payload));
32
+ }
33
+ return this.evaluateBase(condition, payload);
34
+ }
35
+ static evaluateBase(condition, payload) {
36
+ const leftValue = PayloadPath.get(payload, condition.left);
37
+ return PayloadComparator.compare(leftValue, condition.operator, condition.right);
38
+ }
39
+ static isAll(condition) {
40
+ return condition.all !== undefined;
41
+ }
42
+ static isAny(condition) {
43
+ return condition.any !== undefined;
44
+ }
45
+ }
46
+ //# sourceMappingURL=payload-condition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-condition.js","sourceRoot":"","sources":["../../../src/payload-condition/payload-condition.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAOvE,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAA6B,EAAE,OAAY;QAC5D,IAAI,UAAU,EAAE,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC;YACnF,CAAC;YAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YACtF,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,GAAI,GAAa,CAAC,OAAO,EAAE,CAAC;QAC7F,CAAC;IACH,CAAC;CACF;AAED,MAAM,kBAAkB;IACtB,MAAM,CAAC,QAAQ,CAAC,SAAkC,EAAE,OAAgB;QAClE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,SAAwB,EAAE,OAAgB;QACpE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACnF,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,SAAoB;QACvC,OAAQ,SAA0B,CAAC,GAAG,KAAK,SAAS,CAAC;IACvD,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,SAAoB;QACvC,OAAQ,SAA0B,CAAC,GAAG,KAAK,SAAS,CAAC;IACvD,CAAC;CACF"}