source: trip-planner-front/node_modules/get-intrinsic/index.js@ ceaed42

Last change on this file since ceaed42 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 12.2 KB
Line 
1'use strict';
2
3var undefined;
4
5var $SyntaxError = SyntaxError;
6var $Function = Function;
7var $TypeError = TypeError;
8
9// eslint-disable-next-line consistent-return
10var getEvalledConstructor = function (expressionSyntax) {
11 try {
12 return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')();
13 } catch (e) {}
14};
15
16var $gOPD = Object.getOwnPropertyDescriptor;
17if ($gOPD) {
18 try {
19 $gOPD({}, '');
20 } catch (e) {
21 $gOPD = null; // this is IE 8, which has a broken gOPD
22 }
23}
24
25var throwTypeError = function () {
26 throw new $TypeError();
27};
28var ThrowTypeError = $gOPD
29 ? (function () {
30 try {
31 // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
32 arguments.callee; // IE 8 does not throw here
33 return throwTypeError;
34 } catch (calleeThrows) {
35 try {
36 // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
37 return $gOPD(arguments, 'callee').get;
38 } catch (gOPDthrows) {
39 return throwTypeError;
40 }
41 }
42 }())
43 : throwTypeError;
44
45var hasSymbols = require('has-symbols')();
46
47var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto
48
49var needsEval = {};
50
51var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);
52
53var INTRINSICS = {
54 '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
55 '%Array%': Array,
56 '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
57 '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,
58 '%AsyncFromSyncIteratorPrototype%': undefined,
59 '%AsyncFunction%': needsEval,
60 '%AsyncGenerator%': needsEval,
61 '%AsyncGeneratorFunction%': needsEval,
62 '%AsyncIteratorPrototype%': needsEval,
63 '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
64 '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
65 '%Boolean%': Boolean,
66 '%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
67 '%Date%': Date,
68 '%decodeURI%': decodeURI,
69 '%decodeURIComponent%': decodeURIComponent,
70 '%encodeURI%': encodeURI,
71 '%encodeURIComponent%': encodeURIComponent,
72 '%Error%': Error,
73 '%eval%': eval, // eslint-disable-line no-eval
74 '%EvalError%': EvalError,
75 '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
76 '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
77 '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,
78 '%Function%': $Function,
79 '%GeneratorFunction%': needsEval,
80 '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,
81 '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,
82 '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
83 '%isFinite%': isFinite,
84 '%isNaN%': isNaN,
85 '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,
86 '%JSON%': typeof JSON === 'object' ? JSON : undefined,
87 '%Map%': typeof Map === 'undefined' ? undefined : Map,
88 '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),
89 '%Math%': Math,
90 '%Number%': Number,
91 '%Object%': Object,
92 '%parseFloat%': parseFloat,
93 '%parseInt%': parseInt,
94 '%Promise%': typeof Promise === 'undefined' ? undefined : Promise,
95 '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,
96 '%RangeError%': RangeError,
97 '%ReferenceError%': ReferenceError,
98 '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
99 '%RegExp%': RegExp,
100 '%Set%': typeof Set === 'undefined' ? undefined : Set,
101 '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),
102 '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
103 '%String%': String,
104 '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,
105 '%Symbol%': hasSymbols ? Symbol : undefined,
106 '%SyntaxError%': $SyntaxError,
107 '%ThrowTypeError%': ThrowTypeError,
108 '%TypedArray%': TypedArray,
109 '%TypeError%': $TypeError,
110 '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
111 '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
112 '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,
113 '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,
114 '%URIError%': URIError,
115 '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,
116 '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,
117 '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
118};
119
120var doEval = function doEval(name) {
121 var value;
122 if (name === '%AsyncFunction%') {
123 value = getEvalledConstructor('async function () {}');
124 } else if (name === '%GeneratorFunction%') {
125 value = getEvalledConstructor('function* () {}');
126 } else if (name === '%AsyncGeneratorFunction%') {
127 value = getEvalledConstructor('async function* () {}');
128 } else if (name === '%AsyncGenerator%') {
129 var fn = doEval('%AsyncGeneratorFunction%');
130 if (fn) {
131 value = fn.prototype;
132 }
133 } else if (name === '%AsyncIteratorPrototype%') {
134 var gen = doEval('%AsyncGenerator%');
135 if (gen) {
136 value = getProto(gen.prototype);
137 }
138 }
139
140 INTRINSICS[name] = value;
141
142 return value;
143};
144
145var LEGACY_ALIASES = {
146 '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],
147 '%ArrayPrototype%': ['Array', 'prototype'],
148 '%ArrayProto_entries%': ['Array', 'prototype', 'entries'],
149 '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],
150 '%ArrayProto_keys%': ['Array', 'prototype', 'keys'],
151 '%ArrayProto_values%': ['Array', 'prototype', 'values'],
152 '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],
153 '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],
154 '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],
155 '%BooleanPrototype%': ['Boolean', 'prototype'],
156 '%DataViewPrototype%': ['DataView', 'prototype'],
157 '%DatePrototype%': ['Date', 'prototype'],
158 '%ErrorPrototype%': ['Error', 'prototype'],
159 '%EvalErrorPrototype%': ['EvalError', 'prototype'],
160 '%Float32ArrayPrototype%': ['Float32Array', 'prototype'],
161 '%Float64ArrayPrototype%': ['Float64Array', 'prototype'],
162 '%FunctionPrototype%': ['Function', 'prototype'],
163 '%Generator%': ['GeneratorFunction', 'prototype'],
164 '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],
165 '%Int8ArrayPrototype%': ['Int8Array', 'prototype'],
166 '%Int16ArrayPrototype%': ['Int16Array', 'prototype'],
167 '%Int32ArrayPrototype%': ['Int32Array', 'prototype'],
168 '%JSONParse%': ['JSON', 'parse'],
169 '%JSONStringify%': ['JSON', 'stringify'],
170 '%MapPrototype%': ['Map', 'prototype'],
171 '%NumberPrototype%': ['Number', 'prototype'],
172 '%ObjectPrototype%': ['Object', 'prototype'],
173 '%ObjProto_toString%': ['Object', 'prototype', 'toString'],
174 '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],
175 '%PromisePrototype%': ['Promise', 'prototype'],
176 '%PromiseProto_then%': ['Promise', 'prototype', 'then'],
177 '%Promise_all%': ['Promise', 'all'],
178 '%Promise_reject%': ['Promise', 'reject'],
179 '%Promise_resolve%': ['Promise', 'resolve'],
180 '%RangeErrorPrototype%': ['RangeError', 'prototype'],
181 '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],
182 '%RegExpPrototype%': ['RegExp', 'prototype'],
183 '%SetPrototype%': ['Set', 'prototype'],
184 '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],
185 '%StringPrototype%': ['String', 'prototype'],
186 '%SymbolPrototype%': ['Symbol', 'prototype'],
187 '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],
188 '%TypedArrayPrototype%': ['TypedArray', 'prototype'],
189 '%TypeErrorPrototype%': ['TypeError', 'prototype'],
190 '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],
191 '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],
192 '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],
193 '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],
194 '%URIErrorPrototype%': ['URIError', 'prototype'],
195 '%WeakMapPrototype%': ['WeakMap', 'prototype'],
196 '%WeakSetPrototype%': ['WeakSet', 'prototype']
197};
198
199var bind = require('function-bind');
200var hasOwn = require('has');
201var $concat = bind.call(Function.call, Array.prototype.concat);
202var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
203var $replace = bind.call(Function.call, String.prototype.replace);
204var $strSlice = bind.call(Function.call, String.prototype.slice);
205
206/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */
207var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
208var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */
209var stringToPath = function stringToPath(string) {
210 var first = $strSlice(string, 0, 1);
211 var last = $strSlice(string, -1);
212 if (first === '%' && last !== '%') {
213 throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');
214 } else if (last === '%' && first !== '%') {
215 throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');
216 }
217 var result = [];
218 $replace(string, rePropName, function (match, number, quote, subString) {
219 result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;
220 });
221 return result;
222};
223/* end adaptation */
224
225var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
226 var intrinsicName = name;
227 var alias;
228 if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
229 alias = LEGACY_ALIASES[intrinsicName];
230 intrinsicName = '%' + alias[0] + '%';
231 }
232
233 if (hasOwn(INTRINSICS, intrinsicName)) {
234 var value = INTRINSICS[intrinsicName];
235 if (value === needsEval) {
236 value = doEval(intrinsicName);
237 }
238 if (typeof value === 'undefined' && !allowMissing) {
239 throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
240 }
241
242 return {
243 alias: alias,
244 name: intrinsicName,
245 value: value
246 };
247 }
248
249 throw new $SyntaxError('intrinsic ' + name + ' does not exist!');
250};
251
252module.exports = function GetIntrinsic(name, allowMissing) {
253 if (typeof name !== 'string' || name.length === 0) {
254 throw new $TypeError('intrinsic name must be a non-empty string');
255 }
256 if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
257 throw new $TypeError('"allowMissing" argument must be a boolean');
258 }
259
260 var parts = stringToPath(name);
261 var intrinsicBaseName = parts.length > 0 ? parts[0] : '';
262
263 var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);
264 var intrinsicRealName = intrinsic.name;
265 var value = intrinsic.value;
266 var skipFurtherCaching = false;
267
268 var alias = intrinsic.alias;
269 if (alias) {
270 intrinsicBaseName = alias[0];
271 $spliceApply(parts, $concat([0, 1], alias));
272 }
273
274 for (var i = 1, isOwn = true; i < parts.length; i += 1) {
275 var part = parts[i];
276 var first = $strSlice(part, 0, 1);
277 var last = $strSlice(part, -1);
278 if (
279 (
280 (first === '"' || first === "'" || first === '`')
281 || (last === '"' || last === "'" || last === '`')
282 )
283 && first !== last
284 ) {
285 throw new $SyntaxError('property names with quotes must have matching quotes');
286 }
287 if (part === 'constructor' || !isOwn) {
288 skipFurtherCaching = true;
289 }
290
291 intrinsicBaseName += '.' + part;
292 intrinsicRealName = '%' + intrinsicBaseName + '%';
293
294 if (hasOwn(INTRINSICS, intrinsicRealName)) {
295 value = INTRINSICS[intrinsicRealName];
296 } else if (value != null) {
297 if (!(part in value)) {
298 if (!allowMissing) {
299 throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');
300 }
301 return void undefined;
302 }
303 if ($gOPD && (i + 1) >= parts.length) {
304 var desc = $gOPD(value, part);
305 isOwn = !!desc;
306
307 // By convention, when a data property is converted to an accessor
308 // property to emulate a data property that does not suffer from
309 // the override mistake, that accessor's getter is marked with
310 // an `originalValue` property. Here, when we detect this, we
311 // uphold the illusion by pretending to see that original data
312 // property, i.e., returning the value rather than the getter
313 // itself.
314 if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {
315 value = desc.get;
316 } else {
317 value = value[part];
318 }
319 } else {
320 isOwn = hasOwn(value, part);
321 value = value[part];
322 }
323
324 if (isOwn && !skipFurtherCaching) {
325 INTRINSICS[intrinsicRealName] = value;
326 }
327 }
328 }
329 return value;
330};
Note: See TracBrowser for help on using the repository browser.