diff --git a/html/src/repository/shared.js b/html/src/repository/shared.js
new file mode 100644
index 00000000..4d5f78fb
--- /dev/null
+++ b/html/src/repository/shared.js
@@ -0,0 +1,110 @@
+// requires binding of SharedVariable
+
+function transformKey(key) {
+ return String(key).toLowerCase();
+}
+
+function get(key, defaultValue = null) {
+ key = transformKey(key);
+ var value = SharedVariable.Get(key);
+ if (value === undefined) {
+ return defaultValue;
+ }
+ return value;
+}
+
+function set(key, value) {
+ key = transformKey(key);
+ value = String(value);
+ SharedVariable.Set(key, value);
+}
+
+function getBool(key, defaultValue = null) {
+ var value = get(key, null);
+ if (value === null) {
+ return defaultValue;
+ }
+ return value === 'true';
+}
+
+function setBool(key, value) {
+ set(key, value ? 'true' : 'false');
+}
+
+function getInt(key, defaultValue = null) {
+ var value = get(key, null);
+ if (value === null) {
+ return defaultValue;
+ }
+ value = parseInt(value, 10);
+ if (isNaN(value) === true) {
+ return defaultValue;
+ }
+ return value;
+}
+
+function setInt(key, value) {
+ set(key, value);
+}
+
+function getFloat(key, defaultValue = null) {
+ var value = get(key, null);
+ if (value === null) {
+ return defaultValue;
+ }
+ value = parseFloat(value);
+ if (isNaN(value) === true) {
+ return defaultValue;
+ }
+ return value;
+}
+
+function setFloat(key, value) {
+ set(key, value);
+}
+
+function getObject(key, defaultValue = null) {
+ var value = get(key, null);
+ if (value === null) {
+ return defaultValue;
+ }
+ try {
+ value = JSON.parse(value);
+ } catch (err) {
+ }
+ if (value !== Object(value)) {
+ return defaultValue;
+ }
+ return value;
+}
+
+function setObject(key, value) {
+ set(key, JSON.stringify(value));
+}
+
+function getArray(key, defaultValue = null) {
+ var value = getObject(key, null);
+ if (Array.isArray(value) === false) {
+ return defaultValue;
+ }
+ return value;
+}
+
+function setArray(key, value) {
+ setObject(key, value);
+}
+
+export default {
+ get,
+ set,
+ getBool,
+ setBool,
+ getInt,
+ setInt,
+ getFloat,
+ setFloat,
+ getObject,
+ setObject,
+ getArray,
+ setArray
+};