ewm
Version:
小程序原生插件
42 lines • 1.38 kB
JavaScript
const wrapData = (data, relatedPathValues, basePath) => {
if (typeof data !== "object" || data === null)
return data;
const handler = {
get(obj, key) {
if (key === "__rawObject__")
return obj;
let keyWrapper = null;
const keyPath = basePath.concat(key);
const value = obj[key];
relatedPathValues.push({
path: keyPath,
value,
});
keyWrapper = wrapData(value, relatedPathValues, keyPath);
return keyWrapper;
},
};
return new Proxy(data, handler);
};
export function create(data, relatedPathValues) {
return wrapData(data, relatedPathValues, []);
}
export function unwrap(wrapped) {
if (wrapped !== null && typeof wrapped === "object" && typeof wrapped.__rawObject__ !== "object") {
if (Array.isArray(wrapped)) {
return wrapped.map((i) => unwrap(i));
}
const ret = {};
Object.keys(wrapped).forEach(k => {
ret[k] = unwrap(wrapped[k]);
});
return ret;
}
if (typeof wrapped !== "object"
|| wrapped === null
|| typeof wrapped.__rawObject__ !== "object") {
return wrapped;
}
return wrapped.__rawObject__;
}
//# sourceMappingURL=data-tracer.js.map