MCPcopy Create free account
hub / github.com/DeepNotesApp/DeepNotes / wrapSlim

Function wrapSlim

apps/client/src/code/pages/slim.ts:41–139  ·  view source on GitHub ↗
(
  root: T,
  defaults: any,
  aux: WrapSlimAux = { value: root },
)

Source from the content-addressed store, hash-verified

39};
40
41export function wrapSlim<T extends object>(
42 root: T,
43 defaults: any,
44 aux: WrapSlimAux = { value: root },
45): T {
46 const computedDict = createComputedDict<keyof T>({
47 get: (key) => {
48 const value = root[key] ?? defaults?.[key];
49
50 if (!_isSlimmableObject(key, value, defaults)) {
51 return value;
52 }
53
54 return wrapSlim(value ?? {}, defaults[key], {
55 prev: aux,
56 key: key as string,
57 value: root[key],
58 });
59 },
60 set: (key: keyof T, value: any) => {
61 if (value === defaults?.[key]) {
62 if (aux.value == null) {
63 return true;
64 }
65
66 if (!(key in aux.value)) {
67 return true;
68 }
69
70 delete aux.value[key];
71
72 let curr: WrapSlimAux = aux;
73
74 while (curr.prev != null && Object.keys(curr.value).length === 0) {
75 curr.value = null;
76
77 delete curr.prev.value[curr.key!];
78
79 curr = curr.prev;
80 }
81 } else {
82 if (aux.value == null) {
83 // Backward loop
84
85 const path = [aux];
86
87 let curr: WrapSlimAux = aux!;
88
89 while (true) {
90 const prev = curr?.prev;
91
92 if (
93 prev == null ||
94 (prev.value != null && curr.key! in prev.value)
95 ) {
96 break;
97 }
98

Callers 1

constructorMethod · 0.90

Calls 2

createComputedDictFunction · 0.90
_isSlimmableObjectFunction · 0.85

Tested by

no test coverage detected