function-tree-firebase-admin
Version:
Firebase admin execution and provider
128 lines (112 loc) • 4.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _firebaseAdmin = require('firebase-admin');
var _firebaseAdmin2 = _interopRequireDefault(_firebaseAdmin);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function FirebaseAdminProvider() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var customFirebaseInstance = arguments[1];
var cachedProvider = null;
var firebase = customFirebaseInstance || _firebaseAdmin2.default;
if (!customFirebaseInstance) {
if (!options.serviceAccount || !options.databaseURL) {
throw new Error('FIREBASE: You are not passing correct options to provider');
}
firebase.initializeApp({
credential: firebase.credential.cert(options.serviceAccount),
databaseURL: options.databaseURL
});
}
function createProvider() {
return {
verifyIdToken: function verifyIdToken(token) {
return firebase.auth().verifyIdToken(token);
},
createKey: function createKey(path) {
return firebase.database().ref(path).push().key;
},
deleteUser: function deleteUser(uid) {
return new Promise(function (resolve, reject) {
firebase.auth().deleteUser(uid).then(function () {
return resolve();
}).catch(function (error) {
return reject({ error: error });
});
});
},
remove: function remove(path) {
var ref = firebase.database().ref(path);
return new Promise(function (resolve, reject) {
ref.remove().then(function () {
return resolve();
}).catch(function (error) {
return reject({ error: error.message });
});
});
},
push: function push(path, value) {
var ref = firebase.database().ref(path).push();
return new Promise(function (resolve, reject) {
ref.set(value).then(function () {
return resolve({ key: ref.key });
}).catch(function (error) {
return reject({ error: error.message });
});
});
},
set: function set(path, value) {
return new Promise(function (resolve, reject) {
firebase.database().ref(path).set(value).then(function () {
return resolve();
}).catch(function (error) {
return reject({ error: error.message });
});
});
},
update: function update(path, value) {
return new Promise(function (resolve, reject) {
firebase.database().ref(path).update(value).then(function () {
return resolve();
}).catch(function (error) {
return reject({ error: error.message });
});
});
},
value: function value(path, options) {
options = options || {};
return new Promise(function (resolve, reject) {
Object.keys(options).reduce(function (currentRef, optionKey) {
return currentRef[optionKey](options[optionKey]);
}, firebase.database().ref(path)).once('value', function (snapshot) {
resolve({
key: path.split('/').pop(),
value: snapshot.val()
});
}, function (error) {
return reject({ error: error.message });
});
});
},
transaction: function transaction(path, cb) {
return new Promise(function (resolve, reject) {
firebase.database().ref(path).transaction(cb).then(function () {
return resolve();
}).catch(function (error) {
return reject({ error: error.message });
});
});
}
};
}
return function (context) {
context.firebase = cachedProvider = cachedProvider || createProvider();
if (context.debugger) {
context.debugger.wrapProvider('firebase');
}
return context;
};
}
exports.default = FirebaseAdminProvider;
//# sourceMappingURL=Provider.js.map