Demo for query storing
Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/es-abstract/2017/StringGetOwnProperty.js b/node_modules/es-abstract/2017/StringGetOwnProperty.js
new file mode 100644
index 0000000..b6f904e
--- /dev/null
+++ b/node_modules/es-abstract/2017/StringGetOwnProperty.js
@@ -0,0 +1,48 @@
+'use strict';
+
+var GetIntrinsic = require('get-intrinsic');
+
+var $TypeError = GetIntrinsic('%TypeError%');
+
+var callBound = require('call-bind/callBound');
+var $charAt = callBound('String.prototype.charAt');
+var $stringToString = callBound('String.prototype.toString');
+
+var CanonicalNumericIndexString = require('./CanonicalNumericIndexString');
+var IsInteger = require('./IsInteger');
+var IsPropertyKey = require('./IsPropertyKey');
+var Type = require('./Type');
+
+var isNegativeZero = require('is-negative-zero');
+
+// https://262.ecma-international.org/8.0/#sec-stringgetownproperty
+
+module.exports = function StringGetOwnProperty(S, P) {
+ var str;
+ if (Type(S) === 'Object') {
+ try {
+ str = $stringToString(S);
+ } catch (e) { /**/ }
+ }
+ if (Type(str) !== 'String') {
+ throw new $TypeError('Assertion failed: `S` must be a boxed string object');
+ }
+ if (!IsPropertyKey(P)) {
+ throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true');
+ }
+ if (Type(P) !== 'String') {
+ return void undefined;
+ }
+ var index = CanonicalNumericIndexString(P);
+ var len = str.length;
+ if (typeof index === 'undefined' || !IsInteger(index) || isNegativeZero(index) || index < 0 || len <= index) {
+ return void undefined;
+ }
+ var resultStr = $charAt(S, index);
+ return {
+ '[[Configurable]]': false,
+ '[[Enumerable]]': true,
+ '[[Value]]': resultStr,
+ '[[Writable]]': false
+ };
+};