UNPKG

function-tree-firebase-admin

Version:
128 lines (112 loc) 4.06 kB
'use strict'; 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