MCPcopy
hub / github.com/Flotype/now / wrapRoot

Function wrapRoot

lib/nodeclient/now.js:20–84  ·  view source on GitHub ↗
(path, proto)

Source from the content-addressed store, hash-verified

18 };
19 var wrap = function (entity) {
20 function wrapRoot(path, proto) {
21 return Proxy.create({
22 get : function (receiver, name) {
23 if (entity.arrays[path] !== undefined && name === 'length') {
24 return entity.arrays[path];
25 }
26 var fqn = path + '.' + name;
27 if (fqn === "now.core") {
28 return core;
29 }
30 if (fqn === "now.ready") {
31 return ready;
32 }
33 var returnObj = entity.get(fqn);
34 if (returnObj && typeof returnObj === 'object') {
35 if (entity.proxies[fqn]) {
36 return entity.proxies[fqn];
37 }
38 return (entity.proxies[fqn] = wrapRoot(
39 fqn,
40 (returnObj.filter && returnObj.filter(isNaN).length ?
41 Object : Array).prototype
42 ));
43 }
44 if (returnObj === undefined && proto[name]) {
45 return proto[name];
46 }
47 return returnObj;
48 },
49 set : function (receiver, name, val) {
50 var fqn = path + '.' + name;
51 var len = entity.arrays[path];
52 if (len) {
53 if (name === 'length') {
54 entity.arrays[path] = val;
55 return val;
56 }
57 while (len < name) {
58 receiver[len++] = undefined;
59 }
60 entity.arrays[path] = name + 1;
61 }
62 entity.set(fqn, val);
63 if (!val || typeof val !== 'object') {
64 return val;
65 }
66 if (Array.isArray(val)) {
67 entity.flagAsArray(fqn, val.length);
68 }
69 return (entity.proxies[fqn] = wrapRoot(fqn, val.constructor.prototype));
70 },
71 enumerate : function () {
72 return entity.get(path);
73 },
74 hasOwn : function (name) {
75 return entity.get(path + '.' + name) !== undefined;
76 },
77 delete : function (name) {

Callers 1

wrapFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected