UNPKG

24.7 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('firebase/app'), require('rxjs'), require('rxjs/operators'), require('@angular/fire'), require('@angular/common')) :
3 typeof define === 'function' && define.amd ? define('@angular/fire/messaging', ['exports', '@angular/core', 'firebase/app', 'rxjs', 'rxjs/operators', '@angular/fire', '@angular/common'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.angular = global.angular || {}, global.angular.fire = global.angular.fire || {}, global.angular.fire.messaging = {}), global.ng.core, global.firebase, global.rxjs, global.rxjs.operators, global.angular.fire, global.ng.common));
5}(this, (function (exports, i0, firebase, rxjs, operators, i1, common) { 'use strict';
6
7 function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
9 function _interopNamespace(e) {
10 if (e && e.__esModule) return e;
11 var n = Object.create(null);
12 if (e) {
13 Object.keys(e).forEach(function (k) {
14 if (k !== 'default') {
15 var d = Object.getOwnPropertyDescriptor(e, k);
16 Object.defineProperty(n, k, d.get ? d : {
17 enumerable: true,
18 get: function () {
19 return e[k];
20 }
21 });
22 }
23 });
24 }
25 n['default'] = e;
26 return Object.freeze(n);
27 }
28
29 var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
30 var firebase__default = /*#__PURE__*/_interopDefaultLegacy(firebase);
31 var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
32
33 /*! *****************************************************************************
34 Copyright (c) Microsoft Corporation.
35
36 Permission to use, copy, modify, and/or distribute this software for any
37 purpose with or without fee is hereby granted.
38
39 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
40 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
41 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
42 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
43 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
44 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
45 PERFORMANCE OF THIS SOFTWARE.
46 ***************************************************************************** */
47 /* global Reflect, Promise */
48 var extendStatics = function (d, b) {
49 extendStatics = Object.setPrototypeOf ||
50 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51 function (d, b) { for (var p in b)
52 if (Object.prototype.hasOwnProperty.call(b, p))
53 d[p] = b[p]; };
54 return extendStatics(d, b);
55 };
56 function __extends(d, b) {
57 if (typeof b !== "function" && b !== null)
58 throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
59 extendStatics(d, b);
60 function __() { this.constructor = d; }
61 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
62 }
63 var __assign = function () {
64 __assign = Object.assign || function __assign(t) {
65 for (var s, i = 1, n = arguments.length; i < n; i++) {
66 s = arguments[i];
67 for (var p in s)
68 if (Object.prototype.hasOwnProperty.call(s, p))
69 t[p] = s[p];
70 }
71 return t;
72 };
73 return __assign.apply(this, arguments);
74 };
75 function __rest(s, e) {
76 var t = {};
77 for (var p in s)
78 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
79 t[p] = s[p];
80 if (s != null && typeof Object.getOwnPropertySymbols === "function")
81 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
82 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
83 t[p[i]] = s[p[i]];
84 }
85 return t;
86 }
87 function __decorate(decorators, target, key, desc) {
88 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
89 if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
90 r = Reflect.decorate(decorators, target, key, desc);
91 else
92 for (var i = decorators.length - 1; i >= 0; i--)
93 if (d = decorators[i])
94 r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
95 return c > 3 && r && Object.defineProperty(target, key, r), r;
96 }
97 function __param(paramIndex, decorator) {
98 return function (target, key) { decorator(target, key, paramIndex); };
99 }
100 function __metadata(metadataKey, metadataValue) {
101 if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
102 return Reflect.metadata(metadataKey, metadataValue);
103 }
104 function __awaiter(thisArg, _arguments, P, generator) {
105 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
106 return new (P || (P = Promise))(function (resolve, reject) {
107 function fulfilled(value) { try {
108 step(generator.next(value));
109 }
110 catch (e) {
111 reject(e);
112 } }
113 function rejected(value) { try {
114 step(generator["throw"](value));
115 }
116 catch (e) {
117 reject(e);
118 } }
119 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
120 step((generator = generator.apply(thisArg, _arguments || [])).next());
121 });
122 }
123 function __generator(thisArg, body) {
124 var _ = { label: 0, sent: function () { if (t[0] & 1)
125 throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
126 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
127 function verb(n) { return function (v) { return step([n, v]); }; }
128 function step(op) {
129 if (f)
130 throw new TypeError("Generator is already executing.");
131 while (_)
132 try {
133 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
134 return t;
135 if (y = 0, t)
136 op = [op[0] & 2, t.value];
137 switch (op[0]) {
138 case 0:
139 case 1:
140 t = op;
141 break;
142 case 4:
143 _.label++;
144 return { value: op[1], done: false };
145 case 5:
146 _.label++;
147 y = op[1];
148 op = [0];
149 continue;
150 case 7:
151 op = _.ops.pop();
152 _.trys.pop();
153 continue;
154 default:
155 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
156 _ = 0;
157 continue;
158 }
159 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
160 _.label = op[1];
161 break;
162 }
163 if (op[0] === 6 && _.label < t[1]) {
164 _.label = t[1];
165 t = op;
166 break;
167 }
168 if (t && _.label < t[2]) {
169 _.label = t[2];
170 _.ops.push(op);
171 break;
172 }
173 if (t[2])
174 _.ops.pop();
175 _.trys.pop();
176 continue;
177 }
178 op = body.call(thisArg, _);
179 }
180 catch (e) {
181 op = [6, e];
182 y = 0;
183 }
184 finally {
185 f = t = 0;
186 }
187 if (op[0] & 5)
188 throw op[1];
189 return { value: op[0] ? op[1] : void 0, done: true };
190 }
191 }
192 var __createBinding = Object.create ? (function (o, m, k, k2) {
193 if (k2 === undefined)
194 k2 = k;
195 Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
196 }) : (function (o, m, k, k2) {
197 if (k2 === undefined)
198 k2 = k;
199 o[k2] = m[k];
200 });
201 function __exportStar(m, o) {
202 for (var p in m)
203 if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
204 __createBinding(o, m, p);
205 }
206 function __values(o) {
207 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
208 if (m)
209 return m.call(o);
210 if (o && typeof o.length === "number")
211 return {
212 next: function () {
213 if (o && i >= o.length)
214 o = void 0;
215 return { value: o && o[i++], done: !o };
216 }
217 };
218 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
219 }
220 function __read(o, n) {
221 var m = typeof Symbol === "function" && o[Symbol.iterator];
222 if (!m)
223 return o;
224 var i = m.call(o), r, ar = [], e;
225 try {
226 while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
227 ar.push(r.value);
228 }
229 catch (error) {
230 e = { error: error };
231 }
232 finally {
233 try {
234 if (r && !r.done && (m = i["return"]))
235 m.call(i);
236 }
237 finally {
238 if (e)
239 throw e.error;
240 }
241 }
242 return ar;
243 }
244 /** @deprecated */
245 function __spread() {
246 for (var ar = [], i = 0; i < arguments.length; i++)
247 ar = ar.concat(__read(arguments[i]));
248 return ar;
249 }
250 /** @deprecated */
251 function __spreadArrays() {
252 for (var s = 0, i = 0, il = arguments.length; i < il; i++)
253 s += arguments[i].length;
254 for (var r = Array(s), k = 0, i = 0; i < il; i++)
255 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
256 r[k] = a[j];
257 return r;
258 }
259 function __spreadArray(to, from) {
260 for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
261 to[j] = from[i];
262 return to;
263 }
264 function __await(v) {
265 return this instanceof __await ? (this.v = v, this) : new __await(v);
266 }
267 function __asyncGenerator(thisArg, _arguments, generator) {
268 if (!Symbol.asyncIterator)
269 throw new TypeError("Symbol.asyncIterator is not defined.");
270 var g = generator.apply(thisArg, _arguments || []), i, q = [];
271 return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
272 function verb(n) { if (g[n])
273 i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
274 function resume(n, v) { try {
275 step(g[n](v));
276 }
277 catch (e) {
278 settle(q[0][3], e);
279 } }
280 function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
281 function fulfill(value) { resume("next", value); }
282 function reject(value) { resume("throw", value); }
283 function settle(f, v) { if (f(v), q.shift(), q.length)
284 resume(q[0][0], q[0][1]); }
285 }
286 function __asyncDelegator(o) {
287 var i, p;
288 return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
289 function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
290 }
291 function __asyncValues(o) {
292 if (!Symbol.asyncIterator)
293 throw new TypeError("Symbol.asyncIterator is not defined.");
294 var m = o[Symbol.asyncIterator], i;
295 return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
296 function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
297 function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
298 }
299 function __makeTemplateObject(cooked, raw) {
300 if (Object.defineProperty) {
301 Object.defineProperty(cooked, "raw", { value: raw });
302 }
303 else {
304 cooked.raw = raw;
305 }
306 return cooked;
307 }
308 ;
309 var __setModuleDefault = Object.create ? (function (o, v) {
310 Object.defineProperty(o, "default", { enumerable: true, value: v });
311 }) : function (o, v) {
312 o["default"] = v;
313 };
314 function __importStar(mod) {
315 if (mod && mod.__esModule)
316 return mod;
317 var result = {};
318 if (mod != null)
319 for (var k in mod)
320 if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
321 __createBinding(result, mod, k);
322 __setModuleDefault(result, mod);
323 return result;
324 }
325 function __importDefault(mod) {
326 return (mod && mod.__esModule) ? mod : { default: mod };
327 }
328 function __classPrivateFieldGet(receiver, state, kind, f) {
329 if (kind === "a" && !f)
330 throw new TypeError("Private accessor was defined without a getter");
331 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
332 throw new TypeError("Cannot read private member from an object whose class did not declare it");
333 return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
334 }
335 function __classPrivateFieldSet(receiver, state, value, kind, f) {
336 if (kind === "m")
337 throw new TypeError("Private method is not writable");
338 if (kind === "a" && !f)
339 throw new TypeError("Private accessor was defined without a setter");
340 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
341 throw new TypeError("Cannot write private member to an object whose class did not declare it");
342 return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
343 }
344
345 var proxyPolyfillCompat = {
346 deleteToken: null,
347 getToken: null,
348 onMessage: null,
349 onBackgroundMessage: null,
350 onTokenRefresh: null,
351 requestPermission: null,
352 setBackgroundMessageHandler: null,
353 useServiceWorker: null,
354 usePublicVapidKey: null,
355 };
356
357 var VAPID_KEY = new i0.InjectionToken('angularfire2.messaging.vapid-key');
358 var SERVICE_WORKER = new i0.InjectionToken('angularfire2.messaging.service-worker-registeration');
359 // SEMVER(7): drop
360 var firebaseLTv8 = parseInt(firebase__default['default'].SDK_VERSION, 10) < 8;
361 var AngularFireMessaging = /** @class */ (function () {
362 function AngularFireMessaging(options, nameOrConfig,
363 // tslint:disable-next-line:ban-types
364 platformId, zone, vapidKey, _serviceWorker) {
365 var _this = this;
366 var schedulers = new i1.ɵAngularFireSchedulers(zone);
367 var serviceWorker = _serviceWorker;
368 var messaging = rxjs.of(undefined).pipe(operators.subscribeOn(schedulers.outsideAngular), operators.observeOn(schedulers.insideAngular), operators.switchMap(function () { return common.isPlatformServer(platformId) ? rxjs.EMPTY : rxjs.of(undefined); }), operators.map(function () { return i1.ɵfirebaseAppFactory(options, zone, nameOrConfig); }), operators.switchMap(function (app) { return i1.ɵfetchInstance(app.name + ".messaging", 'AngularFireMessaging', app, function () { return __awaiter(_this, void 0, void 0, function () {
369 var messaging, _a, _b;
370 return __generator(this, function (_c) {
371 switch (_c.label) {
372 case 0:
373 messaging = app.messaging();
374 if (!firebaseLTv8) return [3 /*break*/, 2];
375 if (vapidKey) {
376 messaging.usePublicVapidKey(vapidKey);
377 }
378 if (!serviceWorker) return [3 /*break*/, 2];
379 _b = (_a = messaging).useServiceWorker;
380 return [4 /*yield*/, serviceWorker];
381 case 1:
382 _b.apply(_a, [_c.sent()]);
383 _c.label = 2;
384 case 2: return [2 /*return*/, messaging];
385 }
386 });
387 }); }, [vapidKey, serviceWorker]); }), operators.shareReplay({ bufferSize: 1, refCount: false }));
388 this.requestPermission = messaging.pipe(operators.subscribeOn(schedulers.outsideAngular), operators.observeOn(schedulers.insideAngular),
389 // tslint:disable-next-line
390 operators.switchMap(function (messaging) { return firebase__default['default'].messaging.isSupported() ? messaging.requestPermission() : rxjs.throwError('Not supported.'); }));
391 this.getToken = messaging.pipe(operators.subscribeOn(schedulers.outsideAngular), operators.observeOn(schedulers.insideAngular), operators.switchMap(function (messaging) { return __awaiter(_this, void 0, void 0, function () {
392 var serviceWorkerRegistration, _a;
393 return __generator(this, function (_b) {
394 switch (_b.label) {
395 case 0:
396 if (!(firebase__default['default'].messaging.isSupported() && Notification.permission === 'granted')) return [3 /*break*/, 8];
397 if (!firebaseLTv8) return [3 /*break*/, 2];
398 return [4 /*yield*/, messaging.getToken()];
399 case 1: return [2 /*return*/, _b.sent()];
400 case 2:
401 if (!serviceWorker) return [3 /*break*/, 4];
402 return [4 /*yield*/, serviceWorker];
403 case 3:
404 _a = _b.sent();
405 return [3 /*break*/, 5];
406 case 4:
407 _a = null;
408 _b.label = 5;
409 case 5:
410 serviceWorkerRegistration = _a;
411 return [4 /*yield*/, messaging.getToken({ vapidKey: vapidKey, serviceWorkerRegistration: serviceWorkerRegistration })];
412 case 6: return [2 /*return*/, _b.sent()];
413 case 7: return [3 /*break*/, 9];
414 case 8: return [2 /*return*/, null];
415 case 9: return [2 /*return*/];
416 }
417 });
418 }); }));
419 var notificationPermission$ = new rxjs.Observable(function (emitter) {
420 navigator.permissions.query({ name: 'notifications' }).then(function (notificationPerm) {
421 notificationPerm.onchange = function () { return emitter.next(); };
422 });
423 });
424 var tokenChange$ = messaging.pipe(operators.subscribeOn(schedulers.outsideAngular), operators.observeOn(schedulers.insideAngular), operators.switchMapTo(notificationPermission$), operators.switchMapTo(this.getToken));
425 this.tokenChanges = messaging.pipe(operators.subscribeOn(schedulers.outsideAngular), operators.observeOn(schedulers.insideAngular), operators.switchMap(function () { return firebase__default['default'].messaging.isSupported() ? rxjs.concat(_this.getToken, tokenChange$) : rxjs.EMPTY; }));
426 this.messages = messaging.pipe(operators.subscribeOn(schedulers.outsideAngular), operators.observeOn(schedulers.insideAngular), operators.switchMap(function (messaging) { return firebase__default['default'].messaging.isSupported() ? new rxjs.Observable(function (emitter) { return messaging.onMessage(function (next) { return emitter.next(next); }, function (err) { return emitter.error(err); }, function () { return emitter.complete(); }); }) : rxjs.EMPTY; }));
427 this.requestToken = rxjs.of(undefined).pipe(operators.subscribeOn(schedulers.outsideAngular), operators.observeOn(schedulers.insideAngular), operators.switchMap(function () { return _this.requestPermission; }), operators.catchError(function () { return rxjs.of(null); }), operators.mergeMap(function () { return _this.tokenChanges; }));
428 // SEMVER(7): drop token
429 this.deleteToken = function (token) { return messaging.pipe(operators.subscribeOn(schedulers.outsideAngular), operators.observeOn(schedulers.insideAngular), operators.switchMap(function (messaging) { return messaging.deleteToken(token || undefined); }), operators.defaultIfEmpty(false)); };
430 return i1.ɵlazySDKProxy(this, messaging, zone);
431 }
432 return AngularFireMessaging;
433 }());
434 /** @nocollapse */ AngularFireMessaging.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AngularFireMessaging_Factory() { return new AngularFireMessaging(i0__namespace.ɵɵinject(i1__namespace.FIREBASE_OPTIONS), i0__namespace.ɵɵinject(i1__namespace.FIREBASE_APP_NAME, 8), i0__namespace.ɵɵinject(i0__namespace.PLATFORM_ID), i0__namespace.ɵɵinject(i0__namespace.NgZone), i0__namespace.ɵɵinject(VAPID_KEY, 8), i0__namespace.ɵɵinject(SERVICE_WORKER, 8)); }, token: AngularFireMessaging, providedIn: "any" });
435 AngularFireMessaging.decorators = [
436 { type: i0.Injectable, args: [{
437 providedIn: 'any'
438 },] }
439 ];
440 /** @nocollapse */
441 AngularFireMessaging.ctorParameters = function () { return [
442 { type: undefined, decorators: [{ type: i0.Inject, args: [i1.FIREBASE_OPTIONS,] }] },
443 { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [i1.FIREBASE_APP_NAME,] }] },
444 { type: Object, decorators: [{ type: i0.Inject, args: [i0.PLATFORM_ID,] }] },
445 { type: i0.NgZone },
446 { type: String, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [VAPID_KEY,] }] },
447 { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [SERVICE_WORKER,] }] }
448 ]; };
449 i1.ɵapplyMixins(AngularFireMessaging, [proxyPolyfillCompat]);
450
451 var AngularFireMessagingModule = /** @class */ (function () {
452 function AngularFireMessagingModule() {
453 }
454 return AngularFireMessagingModule;
455 }());
456 AngularFireMessagingModule.decorators = [
457 { type: i0.NgModule, args: [{
458 providers: [AngularFireMessaging]
459 },] }
460 ];
461
462 /**
463 * Generated bundle index. Do not edit.
464 */
465
466 exports.AngularFireMessaging = AngularFireMessaging;
467 exports.AngularFireMessagingModule = AngularFireMessagingModule;
468 exports.SERVICE_WORKER = SERVICE_WORKER;
469 exports.VAPID_KEY = VAPID_KEY;
470
471 Object.defineProperty(exports, '__esModule', { value: true });
472
473})));
474//# sourceMappingURL=angular-fire-messaging.umd.js.map