Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/object.getownpropertydescriptors/implementation.js b/node_modules/object.getownpropertydescriptors/implementation.js
new file mode 100644
index 0000000..9a39c8d
--- /dev/null
+++ b/node_modules/object.getownpropertydescriptors/implementation.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var CreateDataProperty = require('es-abstract/2020/CreateDataProperty');
+var IsCallable = require('es-abstract/2020/IsCallable');
+var RequireObjectCoercible = require('es-abstract/2020/RequireObjectCoercible');
+var ToObject = require('es-abstract/2020/ToObject');
+var callBound = require('call-bind/callBound');
+
+var $gOPD = Object.getOwnPropertyDescriptor;
+var $getOwnNames = Object.getOwnPropertyNames;
+var $getSymbols = Object.getOwnPropertySymbols;
+var $concat = callBound('Array.prototype.concat');
+var $reduce = callBound('Array.prototype.reduce');
+var getAll = $getSymbols ? function (obj) {
+	return $concat($getOwnNames(obj), $getSymbols(obj));
+} : $getOwnNames;
+
+var isES5 = IsCallable($gOPD) && IsCallable($getOwnNames);
+
+module.exports = function getOwnPropertyDescriptors(value) {
+	RequireObjectCoercible(value);
+	if (!isES5) {
+		throw new TypeError('getOwnPropertyDescriptors requires Object.getOwnPropertyDescriptor');
+	}
+
+	var O = ToObject(value);
+	return $reduce(
+		getAll(O),
+		function (acc, key) {
+			var descriptor = $gOPD(O, key);
+			if (typeof descriptor !== 'undefined') {
+				CreateDataProperty(acc, key, descriptor);
+			}
+			return acc;
+		},
+		{}
+	);
+};