@flink-app/firebase-messaging-plugin 0.11.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- // Generated Tue Jun 18 2024 09:50:53 GMT+0200 (Central European Summer Time)
1
+ // Generated Wed Aug 07 2024 10:39:19 GMT+0200 (Central European Summer Time)
2
2
  import { autoRegisteredHandlers, HttpMethod } from "@flink-app/flink";
3
3
  import * as PostMessage_0 from "../src/handlers/PostMessage";
4
4
 
@@ -1,4 +1,4 @@
1
- // Generated Tue Jun 18 2024 09:50:53 GMT+0200 (Central European Summer Time)
1
+ // Generated Wed Aug 07 2024 10:39:19 GMT+0200 (Central European Summer Time)
2
2
  import { autoRegisteredJobs } from "@flink-app/flink";
3
3
  export const jobs = [];
4
4
  autoRegisteredJobs.push(...jobs);
@@ -1,4 +1,4 @@
1
- // Generated Tue Jun 18 2024 09:50:53 GMT+0200 (Central European Summer Time)
1
+ // Generated Wed Aug 07 2024 10:39:19 GMT+0200 (Central European Summer Time)
2
2
  import { autoRegisteredRepos } from "@flink-app/flink";
3
3
  export const repos = [];
4
4
  autoRegisteredRepos.push(...repos);
@@ -1,7 +1,7 @@
1
1
  import Message from "../../src/schemas/Message";
2
2
  import SendResult from "../../src/schemas/SendResult";
3
3
 
4
- // Generated Tue Jun 18 2024 09:50:53 GMT+0200 (Central European Summer Time)
4
+ // Generated Wed Aug 07 2024 10:39:20 GMT+0200 (Central European Summer Time)
5
5
  export interface PostMessage_12_ReqSchema extends Message {}
6
6
 
7
7
  export interface PostMessage_12_ResSchema extends SendResult {}
package/.flink/start.ts CHANGED
@@ -1,4 +1,4 @@
1
- // Generated Tue Jun 18 2024 09:50:53 GMT+0200 (Central European Summer Time)
1
+ // Generated Wed Aug 07 2024 10:39:19 GMT+0200 (Central European Summer Time)
2
2
  import "./generatedHandlers";
3
3
  import "./generatedRepos";
4
4
  import "./generatedJobs";
@@ -20,7 +20,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
22
  exports.handlers = void 0;
23
- // Generated Tue Jun 18 2024 09:50:53 GMT+0200 (Central European Summer Time)
23
+ // Generated Wed Aug 07 2024 10:39:19 GMT+0200 (Central European Summer Time)
24
24
  var flink_1 = require("@flink-app/flink");
25
25
  var PostMessage_0 = __importStar(require("../src/handlers/PostMessage"));
26
26
  exports.handlers = [{ handler: PostMessage_0, assumedHttpMethod: flink_1.HttpMethod.post }];
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.jobs = void 0;
4
- // Generated Tue Jun 18 2024 09:50:53 GMT+0200 (Central European Summer Time)
4
+ // Generated Wed Aug 07 2024 10:39:19 GMT+0200 (Central European Summer Time)
5
5
  var flink_1 = require("@flink-app/flink");
6
6
  exports.jobs = [];
7
7
  flink_1.autoRegisteredJobs.push.apply(flink_1.autoRegisteredJobs, exports.jobs);
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.repos = void 0;
4
- // Generated Tue Jun 18 2024 09:50:53 GMT+0200 (Central European Summer Time)
4
+ // Generated Wed Aug 07 2024 10:39:19 GMT+0200 (Central European Summer Time)
5
5
  var flink_1 = require("@flink-app/flink");
6
6
  exports.repos = [];
7
7
  flink_1.autoRegisteredRepos.push.apply(flink_1.autoRegisteredRepos, exports.repos);
@@ -0,0 +1,57 @@
1
+ {
2
+ "Message": {
3
+ "type": "object",
4
+ "properties": {
5
+ "to": {
6
+ "description": "Devices to send to",
7
+ "type": "array",
8
+ "items": {
9
+ "type": "string"
10
+ }
11
+ },
12
+ "notification": {
13
+ "description": "Use `notification` if sending a standard push notification\nhttps://firebase.google.com/docs/cloud-messaging/concept-options#notifications",
14
+ "type": "object",
15
+ "properties": {
16
+ "title": {
17
+ "description": "Optional push notification title",
18
+ "type": "string"
19
+ },
20
+ "body": {
21
+ "description": "Optional body",
22
+ "type": "string"
23
+ }
24
+ },
25
+ "additionalProperties": false
26
+ },
27
+ "data": {
28
+ "description": "Use `data` to send data messages.\nhttps://firebase.google.com/docs/cloud-messaging/concept-options#data_messages",
29
+ "type": "object",
30
+ "additionalProperties": {
31
+ "type": "string"
32
+ }
33
+ }
34
+ },
35
+ "additionalProperties": false,
36
+ "required": [
37
+ "data",
38
+ "to"
39
+ ]
40
+ },
41
+ "SendResult": {
42
+ "type": "object",
43
+ "properties": {
44
+ "failedDevices": {
45
+ "description": "Devices to which delivery failed",
46
+ "type": "array",
47
+ "items": {
48
+ "type": "string"
49
+ }
50
+ }
51
+ },
52
+ "additionalProperties": false,
53
+ "required": [
54
+ "failedDevices"
55
+ ]
56
+ }
57
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // Generated Tue Jun 18 2024 09:50:53 GMT+0200 (Central European Summer Time)
3
+ // Generated Wed Aug 07 2024 10:39:19 GMT+0200 (Central European Summer Time)
4
4
  require("./generatedHandlers");
5
5
  require("./generatedRepos");
6
6
  require("./generatedJobs");
@@ -87,7 +87,7 @@ var firebase_admin_1 = __importDefault(require("firebase-admin"));
87
87
  var firebaseMessagingPlugin = function (options) {
88
88
  var decodedKey = Buffer.from(options.serviceAccountKey, "base64").toString("utf-8");
89
89
  var adminAdpp = firebase_admin_1.default.initializeApp({
90
- credential: firebase_admin_1.default.credential.cert(JSON.parse(decodedKey))
90
+ credential: firebase_admin_1.default.credential.cert(JSON.parse(decodedKey)),
91
91
  });
92
92
  return {
93
93
  id: "firebaseMessaging",
@@ -110,15 +110,36 @@ exports.firebaseMessagingPlugin = firebaseMessagingPlugin;
110
110
  * Send push notification.
111
111
  */
112
112
  function send(message, adminApp) {
113
- var messages = message.to.map(function (to) {
114
- var toArray = message.to, rest = __rest(message, ["to"]);
115
- return __assign(__assign({}, rest), { token: to });
116
- });
117
- return Promise.all(messages.map(function (m) {
118
- adminApp
119
- .messaging().send(m)
120
- .catch(function (err) {
121
- return flink_1.log.debug("[firebaseMessaging] Failed sending to device " + m.token + ": " + err);
113
+ return __awaiter(this, void 0, void 0, function () {
114
+ var messages, _i, messages_1, message_1, err_1;
115
+ return __generator(this, function (_a) {
116
+ switch (_a.label) {
117
+ case 0:
118
+ messages = message.to.map(function (to) {
119
+ var toArray = message.to, rest = __rest(message, ["to"]);
120
+ return __assign(__assign({}, rest), { token: to });
121
+ });
122
+ _i = 0, messages_1 = messages;
123
+ _a.label = 1;
124
+ case 1:
125
+ if (!(_i < messages_1.length)) return [3 /*break*/, 6];
126
+ message_1 = messages_1[_i];
127
+ _a.label = 2;
128
+ case 2:
129
+ _a.trys.push([2, 4, , 5]);
130
+ return [4 /*yield*/, adminApp.messaging().send(message_1)];
131
+ case 3:
132
+ _a.sent();
133
+ return [3 /*break*/, 5];
134
+ case 4:
135
+ err_1 = _a.sent();
136
+ flink_1.log.debug("[firebaseMessaging] Failed sending to device " + message_1.token + ": " + err_1);
137
+ return [3 /*break*/, 5];
138
+ case 5:
139
+ _i++;
140
+ return [3 /*break*/, 1];
141
+ case 6: return [2 /*return*/];
142
+ }
122
143
  });
123
- }));
144
+ });
124
145
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flink-app/firebase-messaging-plugin",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "Flink plugin to send Firebase cloud messages",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\"",
@@ -28,5 +28,5 @@
28
28
  "tsc-watch": "^4.2.9",
29
29
  "typescript": "^4.2.4"
30
30
  },
31
- "gitHead": "3869def3e7e7e7105373ad31bc23a8ed68108015"
31
+ "gitHead": "4d356de156b5f55e8206b17d6ad97875dee559e6"
32
32
  }
@@ -2,72 +2,59 @@ import { FlinkPlugin, log } from "@flink-app/flink";
2
2
 
3
3
  import * as PostMessage from "./handlers/PostMessage";
4
4
  import Message from "./schemas/Message";
5
- import admin from "firebase-admin"
5
+ import admin from "firebase-admin";
6
6
 
7
7
  export type FirebaseMessagingPluginOptions = {
8
- /**
9
- * Firebase server key
10
- */
8
+ /**
9
+ * Firebase server key
10
+ */
11
11
 
12
- serviceAccountKey: string
12
+ serviceAccountKey: string;
13
13
 
14
- /**
15
- * If to expose endpoints for sending push notification.
16
- */
17
- exposeEndpoints?: boolean;
14
+ /**
15
+ * If to expose endpoints for sending push notification.
16
+ */
17
+ exposeEndpoints?: boolean;
18
18
 
19
- permissions?: {
20
- send: string;
21
- };
19
+ permissions?: {
20
+ send: string;
21
+ };
22
22
  };
23
23
 
24
- export const firebaseMessagingPlugin = (
25
- options: FirebaseMessagingPluginOptions
26
- ): FlinkPlugin => {
27
-
28
- const decodedKey = Buffer.from(options.serviceAccountKey, "base64").toString("utf-8");
29
-
30
- const adminAdpp = admin.initializeApp({
31
- credential: admin.credential.cert(JSON.parse(decodedKey))
32
- });
33
-
34
-
35
- return {
36
- id: "firebaseMessaging",
37
- ctx: {
38
- send: (message: Message) => send(message, adminAdpp),
39
- },
40
- init: async (app) => {
41
- app.addHandler(PostMessage, {
42
- permissions: [options.permissions?.send || "firebase-messaging:send"],
43
- });
44
- },
45
- };
24
+ export const firebaseMessagingPlugin = (options: FirebaseMessagingPluginOptions): FlinkPlugin => {
25
+ const decodedKey = Buffer.from(options.serviceAccountKey, "base64").toString("utf-8");
26
+
27
+ const adminAdpp = admin.initializeApp({
28
+ credential: admin.credential.cert(JSON.parse(decodedKey)),
29
+ });
30
+
31
+ return {
32
+ id: "firebaseMessaging",
33
+ ctx: {
34
+ send: (message: Message) => send(message, adminAdpp),
35
+ },
36
+ init: async (app) => {
37
+ app.addHandler(PostMessage, {
38
+ permissions: [options.permissions?.send || "firebase-messaging:send"],
39
+ });
40
+ },
41
+ };
46
42
  };
47
43
 
48
44
  /**
49
45
  * Send push notification.
50
46
  */
51
- function send(message: Message, adminApp: admin.app.App) {
52
- const messages = message.to.map((to) => {
53
- const { to : toArray, ...rest} = message;
54
- return { ...rest, token : to };
55
- });
56
-
57
- return Promise.all(
58
- messages.map((m) => {
59
-
60
- adminApp
61
- .messaging().send(m)
62
- .catch((err: any) =>
63
- log.debug(
64
- `[firebaseMessaging] Failed sending to device ${m.token}: ${err}`
65
- )
66
- )
67
-
68
-
69
-
70
- })
71
-
72
- );
47
+ async function send(message: Message, adminApp: admin.app.App) {
48
+ const messages = message.to.map((to) => {
49
+ const { to: toArray, ...rest } = message;
50
+ return { ...rest, token: to };
51
+ });
52
+
53
+ for (const message of messages) {
54
+ try {
55
+ await adminApp.messaging().send(message);
56
+ } catch (err: any) {
57
+ log.debug(`[firebaseMessaging] Failed sending to device ${message.token}: ${err}`);
58
+ }
59
+ }
73
60
  }