@cargolift-cdi/lib-payload 0.1.10 → 0.1.11

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.
@@ -0,0 +1,105 @@
1
+ function decodeSegment(seg) {
2
+ return seg.replace(/~1/g, "/").replace(/~0/g, "~");
3
+ }
4
+ export function encodeSegment(seg) {
5
+ return seg.replace(/~/g, "~0").replace(/\//g, "~1");
6
+ }
7
+ export function parsePointer(pointer) {
8
+ if (!pointer || pointer === "/")
9
+ return [];
10
+ if (pointer[0] !== "/")
11
+ throw new Error(`Invalid JSON Pointer: ${pointer}`);
12
+ return pointer.substring(1).split("/").map(decodeSegment);
13
+ }
14
+ export function existsPathPayload(obj, pointer) {
15
+ try {
16
+ const { exists } = find(obj, parsePointer(pointer));
17
+ return exists;
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ export function getValuePayload(obj, pointer) {
24
+ const segs = parsePointer(pointer);
25
+ let cur = obj;
26
+ for (let i = 0; i < segs.length; i++) {
27
+ if (cur == null)
28
+ return undefined;
29
+ cur = cur[segs[i]];
30
+ }
31
+ return cur;
32
+ }
33
+ export function removePathPayload(obj, pointer) {
34
+ const segs = parsePointer(pointer);
35
+ if (segs.length === 0)
36
+ return false;
37
+ let cur = obj;
38
+ for (let i = 0; i < segs.length - 1; i++) {
39
+ if (cur == null)
40
+ return false;
41
+ cur = cur[segs[i]];
42
+ }
43
+ const last = segs[segs.length - 1];
44
+ if (cur == null || !(last in cur))
45
+ return false;
46
+ if (Array.isArray(cur)) {
47
+ const idx = typeof last === "string" ? parseInt(last, 10) : last;
48
+ if (!Number.isNaN(idx)) {
49
+ cur.splice(idx, 1);
50
+ return true;
51
+ }
52
+ }
53
+ delete cur[last];
54
+ return true;
55
+ }
56
+ export function setValuePayload(obj, pointer, value, createIfMissing = false) {
57
+ const segs = parsePointer(pointer);
58
+ if (segs.length === 0)
59
+ throw new Error("Cannot overwrite root with setValuePayload");
60
+ let cur = obj;
61
+ for (let i = 0; i < segs.length - 1; i++) {
62
+ const seg = segs[i];
63
+ let next = cur[seg];
64
+ if (next == null) {
65
+ if (!createIfMissing)
66
+ throw new Error(`Missing path: ${pointer}`);
67
+ const nextSeg = segs[i + 1];
68
+ const asIndex = parseArrayIndex(nextSeg);
69
+ next = Number.isInteger(asIndex) ? [] : {};
70
+ cur[seg] = next;
71
+ }
72
+ cur = next;
73
+ }
74
+ const last = segs[segs.length - 1];
75
+ if (Array.isArray(cur)) {
76
+ const idx = parseArrayIndex(last);
77
+ if (!Number.isInteger(idx))
78
+ throw new Error(`Invalid array index: ${String(last)}`);
79
+ ensureArraySize(cur, idx);
80
+ cur[idx] = value;
81
+ return;
82
+ }
83
+ cur[last] = value;
84
+ }
85
+ function ensureArraySize(arr, index) {
86
+ while (arr.length <= index)
87
+ arr.push(undefined);
88
+ }
89
+ function parseArrayIndex(seg) {
90
+ const s = String(seg);
91
+ if (s === "-")
92
+ return NaN;
93
+ const n = Number(s);
94
+ return Number.isInteger(n) && n >= 0 ? n : NaN;
95
+ }
96
+ function find(obj, segs) {
97
+ let cur = obj;
98
+ for (let i = 0; i < segs.length; i++) {
99
+ if (cur == null || !(segs[i] in cur))
100
+ return { exists: false };
101
+ cur = cur[segs[i]];
102
+ }
103
+ return { exists: true };
104
+ }
105
+ //# sourceMappingURL=payload-pointer.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-pointer.util.js","sourceRoot":"","sources":["../../../src/util/payload-pointer.util.ts"],"names":[],"mappings":"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"}
@@ -7,3 +7,4 @@ export * from "./payload-condition/payload-condition.js";
7
7
  export * from "./payload-condition/payload-condition.interface.js";
8
8
  export * from "./util/payload-path.util.js";
9
9
  export * from "./util/payload-comparator.util.js";
10
+ export * from "./util/payload-pointer.util.js";
@@ -0,0 +1,7 @@
1
+ export type PointerSegment = string | number;
2
+ export declare function encodeSegment(seg: string): string;
3
+ export declare function parsePointer(pointer: string): string[];
4
+ export declare function existsPathPayload(obj: any, pointer: string): boolean;
5
+ export declare function getValuePayload<T = any>(obj: any, pointer: string): T | undefined;
6
+ export declare function removePathPayload(obj: any, pointer: string): boolean;
7
+ export declare function setValuePayload(obj: any, pointer: string, value: any, createIfMissing?: boolean): void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cargolift-cdi/lib-payload",
3
3
  "private": false,
4
- "version": "0.1.10",
4
+ "version": "0.1.11",
5
5
  "description": "Lib de tratamento e validação de payloads para serviços do middleware da Cargolift CDI",
6
6
  "license": "MIT",
7
7
  "type": "module",