@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.
- package/.flink/generatedHandlers.ts +1 -1
- package/.flink/generatedJobs.ts +1 -1
- package/.flink/generatedRepos.ts +1 -1
- package/.flink/schemas/schemas.ts +1 -1
- package/.flink/start.ts +1 -1
- package/dist/.flink/generatedHandlers.js +1 -1
- package/dist/.flink/generatedJobs.js +1 -1
- package/dist/.flink/generatedRepos.js +1 -1
- package/dist/.flink/schemas.json +57 -0
- package/dist/.flink/start.js +1 -1
- package/dist/src/firebaseMessagingPlugin.js +32 -11
- package/package.json +2 -2
- package/src/firebaseMessagingPlugin.ts +43 -56
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated
|
|
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
|
|
package/.flink/generatedJobs.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated
|
|
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);
|
package/.flink/generatedRepos.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated
|
|
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
|
|
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
|
@@ -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
|
|
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
|
|
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
|
|
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
|
+
}
|
package/dist/.flink/start.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// Generated
|
|
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
|
-
|
|
114
|
-
var
|
|
115
|
-
return
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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.
|
|
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": "
|
|
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
|
-
|
|
10
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Firebase server key
|
|
10
|
+
*/
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
serviceAccountKey: string;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
/**
|
|
15
|
+
* If to expose endpoints for sending push notification.
|
|
16
|
+
*/
|
|
17
|
+
exposeEndpoints?: boolean;
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
permissions?: {
|
|
20
|
+
send: string;
|
|
21
|
+
};
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
export const firebaseMessagingPlugin = (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
}
|