Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81160 views
1
"use strict";
2
var es5 = require("./es5.js");
3
var canEvaluate = typeof navigator == "undefined";
4
var haveGetters = (function(){
5
try {
6
var o = {};
7
es5.defineProperty(o, "f", {
8
get: function () {
9
return 3;
10
}
11
});
12
return o.f === 3;
13
}
14
catch (e) {
15
return false;
16
}
17
18
})();
19
20
var errorObj = {e: {}};
21
var tryCatchTarget;
22
function tryCatcher() {
23
try {
24
return tryCatchTarget.apply(this, arguments);
25
} catch (e) {
26
errorObj.e = e;
27
return errorObj;
28
}
29
}
30
function tryCatch(fn) {
31
tryCatchTarget = fn;
32
return tryCatcher;
33
}
34
35
var inherits = function(Child, Parent) {
36
var hasProp = {}.hasOwnProperty;
37
38
function T() {
39
this.constructor = Child;
40
this.constructor$ = Parent;
41
for (var propertyName in Parent.prototype) {
42
if (hasProp.call(Parent.prototype, propertyName) &&
43
propertyName.charAt(propertyName.length-1) !== "$"
44
) {
45
this[propertyName + "$"] = Parent.prototype[propertyName];
46
}
47
}
48
}
49
T.prototype = Parent.prototype;
50
Child.prototype = new T();
51
return Child.prototype;
52
};
53
54
55
function isPrimitive(val) {
56
return val == null || val === true || val === false ||
57
typeof val === "string" || typeof val === "number";
58
59
}
60
61
function isObject(value) {
62
return !isPrimitive(value);
63
}
64
65
function maybeWrapAsError(maybeError) {
66
if (!isPrimitive(maybeError)) return maybeError;
67
68
return new Error(safeToString(maybeError));
69
}
70
71
function withAppended(target, appendee) {
72
var len = target.length;
73
var ret = new Array(len + 1);
74
var i;
75
for (i = 0; i < len; ++i) {
76
ret[i] = target[i];
77
}
78
ret[i] = appendee;
79
return ret;
80
}
81
82
function getDataPropertyOrDefault(obj, key, defaultValue) {
83
if (es5.isES5) {
84
var desc = Object.getOwnPropertyDescriptor(obj, key);
85
if (desc != null) {
86
return desc.get == null && desc.set == null
87
? desc.value
88
: defaultValue;
89
}
90
} else {
91
return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;
92
}
93
}
94
95
function notEnumerableProp(obj, name, value) {
96
if (isPrimitive(obj)) return obj;
97
var descriptor = {
98
value: value,
99
configurable: true,
100
enumerable: false,
101
writable: true
102
};
103
es5.defineProperty(obj, name, descriptor);
104
return obj;
105
}
106
107
108
var wrapsPrimitiveReceiver = (function() {
109
return this !== "string";
110
}).call("string");
111
112
function thrower(r) {
113
throw r;
114
}
115
116
var inheritedDataKeys = (function() {
117
if (es5.isES5) {
118
var oProto = Object.prototype;
119
var getKeys = Object.getOwnPropertyNames;
120
return function(obj) {
121
var ret = [];
122
var visitedKeys = Object.create(null);
123
while (obj != null && obj !== oProto) {
124
var keys;
125
try {
126
keys = getKeys(obj);
127
} catch (e) {
128
return ret;
129
}
130
for (var i = 0; i < keys.length; ++i) {
131
var key = keys[i];
132
if (visitedKeys[key]) continue;
133
visitedKeys[key] = true;
134
var desc = Object.getOwnPropertyDescriptor(obj, key);
135
if (desc != null && desc.get == null && desc.set == null) {
136
ret.push(key);
137
}
138
}
139
obj = es5.getPrototypeOf(obj);
140
}
141
return ret;
142
};
143
} else {
144
return function(obj) {
145
var ret = [];
146
/*jshint forin:false */
147
for (var key in obj) {
148
ret.push(key);
149
}
150
return ret;
151
};
152
}
153
154
})();
155
156
function isClass(fn) {
157
try {
158
if (typeof fn === "function") {
159
var keys = es5.names(fn.prototype);
160
if (es5.isES5) return keys.length > 1;
161
return keys.length > 0 &&
162
!(keys.length === 1 && keys[0] === "constructor");
163
}
164
return false;
165
} catch (e) {
166
return false;
167
}
168
}
169
170
function toFastProperties(obj) {
171
/*jshint -W027,-W055,-W031*/
172
function f() {}
173
f.prototype = obj;
174
var l = 8;
175
while (l--) new f();
176
return obj;
177
eval(obj);
178
}
179
180
var rident = /^[a-z$_][a-z$_0-9]*$/i;
181
function isIdentifier(str) {
182
return rident.test(str);
183
}
184
185
function filledRange(count, prefix, suffix) {
186
var ret = new Array(count);
187
for(var i = 0; i < count; ++i) {
188
ret[i] = prefix + i + suffix;
189
}
190
return ret;
191
}
192
193
function safeToString(obj) {
194
try {
195
return obj + "";
196
} catch (e) {
197
return "[no string representation]";
198
}
199
}
200
201
function markAsOriginatingFromRejection(e) {
202
try {
203
notEnumerableProp(e, "isOperational", true);
204
}
205
catch(ignore) {}
206
}
207
208
function originatesFromRejection(e) {
209
if (e == null) return false;
210
return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) ||
211
e["isOperational"] === true);
212
}
213
214
function canAttachTrace(obj) {
215
return obj instanceof Error && es5.propertyIsWritable(obj, "stack");
216
}
217
218
var ensureErrorObject = (function() {
219
if (!("stack" in new Error())) {
220
return function(value) {
221
if (canAttachTrace(value)) return value;
222
try {throw new Error(safeToString(value));}
223
catch(err) {return err;}
224
};
225
} else {
226
return function(value) {
227
if (canAttachTrace(value)) return value;
228
return new Error(safeToString(value));
229
};
230
}
231
})();
232
233
function classString(obj) {
234
return {}.toString.call(obj);
235
}
236
237
function copyDescriptors(from, to, filter) {
238
var keys = es5.names(from);
239
for (var i = 0; i < keys.length; ++i) {
240
var key = keys[i];
241
if (filter(key)) {
242
es5.defineProperty(to, key, es5.getDescriptor(from, key));
243
}
244
}
245
}
246
247
var ret = {
248
isClass: isClass,
249
isIdentifier: isIdentifier,
250
inheritedDataKeys: inheritedDataKeys,
251
getDataPropertyOrDefault: getDataPropertyOrDefault,
252
thrower: thrower,
253
isArray: es5.isArray,
254
haveGetters: haveGetters,
255
notEnumerableProp: notEnumerableProp,
256
isPrimitive: isPrimitive,
257
isObject: isObject,
258
canEvaluate: canEvaluate,
259
errorObj: errorObj,
260
tryCatch: tryCatch,
261
inherits: inherits,
262
withAppended: withAppended,
263
maybeWrapAsError: maybeWrapAsError,
264
wrapsPrimitiveReceiver: wrapsPrimitiveReceiver,
265
toFastProperties: toFastProperties,
266
filledRange: filledRange,
267
toString: safeToString,
268
canAttachTrace: canAttachTrace,
269
ensureErrorObject: ensureErrorObject,
270
originatesFromRejection: originatesFromRejection,
271
markAsOriginatingFromRejection: markAsOriginatingFromRejection,
272
classString: classString,
273
copyDescriptors: copyDescriptors,
274
hasDevTools: typeof chrome !== "undefined" && chrome &&
275
typeof chrome.loadTimes === "function",
276
isNode: typeof process !== "undefined" &&
277
classString(process).toLowerCase() === "[object process]"
278
};
279
ret.isRecentNode = ret.isNode && (function() {
280
var version = process.versions.node.split(".").map(Number);
281
return (version[0] === 0 && version[1] > 10) || (version[0] > 0);
282
})();
283
try {throw new Error(); } catch (e) {ret.lastLineError = e;}
284
module.exports = ret;
285
286