iobroker.gotify-ws 0.1.1 → 0.1.3
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/README.md +9 -0
- package/admin/i18n/en/translations.json +1 -0
- package/admin/jsonConfig.json +19 -4
- package/io-package.json +46 -12
- package/main.js +34 -16
- package/package.json +15 -11
package/README.md
CHANGED
|
@@ -41,6 +41,7 @@ Spotify-WS currently supports the following notification services
|
|
|
41
41
|
|
|
42
42
|
* e-mail
|
|
43
43
|
* Matrix
|
|
44
|
+
* Notification-Manager
|
|
44
45
|
* Pushover
|
|
45
46
|
* Discord
|
|
46
47
|
* Signal
|
|
@@ -64,6 +65,14 @@ You can then configure a notification service of your choice for forwarding.
|
|
|
64
65
|
---
|
|
65
66
|
<!-- ### **WORK IN PROGRESS** -->
|
|
66
67
|
## Changelog
|
|
68
|
+
### 0.1.3 (2024-07-17)
|
|
69
|
+
* (simatec) Fix Test & Release
|
|
70
|
+
* (simatec) Fix Timeout
|
|
71
|
+
|
|
72
|
+
### 0.1.2 (2024-06-26)
|
|
73
|
+
* (simatec) Fix io-package
|
|
74
|
+
* (simatec) Notification-Manager added
|
|
75
|
+
|
|
67
76
|
### 0.1.1 (2024-06-19)
|
|
68
77
|
* (simatec) Fix Branch
|
|
69
78
|
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"If you like this project and would like to support its development, you are welcome to leave a donation.": "If you like this project and would like to support its development, you are welcome to leave a donation.",
|
|
14
14
|
"Matrix Instance": "Matrix Instance",
|
|
15
15
|
"Notification Settings": "Notification Settings",
|
|
16
|
+
"Notification-Manager Instance": "Notification-Manager Instance",
|
|
16
17
|
"Notification type": "Notification type",
|
|
17
18
|
"Pushover Instance": "Pushover Instance",
|
|
18
19
|
"Signal Instance": "Signal Instance",
|
package/admin/jsonConfig.json
CHANGED
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"label": "Gotify Port"
|
|
43
43
|
},
|
|
44
44
|
"token": {
|
|
45
|
-
"type": "
|
|
45
|
+
"type": "password",
|
|
46
|
+
"visible": true,
|
|
46
47
|
"label": "Gotify Token",
|
|
47
48
|
"sm": 12,
|
|
48
49
|
"md": 8,
|
|
49
50
|
"lg": 4,
|
|
50
51
|
"validator": "data.token",
|
|
51
52
|
"validatorNoSaveOnError": true,
|
|
52
|
-
"placeholder": "XXXxxXXXxxxXXXX",
|
|
53
53
|
"help": "Gotify Token"
|
|
54
54
|
},
|
|
55
55
|
"notificationSettings": {
|
|
@@ -74,6 +74,10 @@
|
|
|
74
74
|
"label": "Matrix",
|
|
75
75
|
"value": "matrix-org"
|
|
76
76
|
},
|
|
77
|
+
{
|
|
78
|
+
"label": "Notification-Manager",
|
|
79
|
+
"value": "notification-manager"
|
|
80
|
+
},
|
|
77
81
|
{
|
|
78
82
|
"label": "Pushover",
|
|
79
83
|
"value": "pushover"
|
|
@@ -136,14 +140,25 @@
|
|
|
136
140
|
"matrixInstance": {
|
|
137
141
|
"type": "selectSendTo",
|
|
138
142
|
"command": "sendToInstance",
|
|
139
|
-
"jsonData": "{ \"type\": \"matrix\" }",
|
|
140
|
-
"hidden": "data.notificationType !== 'matrix'",
|
|
143
|
+
"jsonData": "{ \"type\": \"matrix-org\" }",
|
|
144
|
+
"hidden": "data.notificationType !== 'matrix-org'",
|
|
141
145
|
"label": "Matrix Instance",
|
|
142
146
|
"sm": 12,
|
|
143
147
|
"md": 8,
|
|
144
148
|
"lg": 4,
|
|
145
149
|
"help": "Matrix Instance"
|
|
146
150
|
},
|
|
151
|
+
"notificationManagerInstance": {
|
|
152
|
+
"type": "selectSendTo",
|
|
153
|
+
"command": "sendToInstance",
|
|
154
|
+
"jsonData": "{ \"type\": \"notification-manager\" }",
|
|
155
|
+
"hidden": "data.notificationType !== 'notification-manager'",
|
|
156
|
+
"label": "Notification-Manager Instance",
|
|
157
|
+
"sm": 12,
|
|
158
|
+
"md": 8,
|
|
159
|
+
"lg": 4,
|
|
160
|
+
"help": "Notification-Manager Instance"
|
|
161
|
+
},
|
|
147
162
|
"pushoverInstance": {
|
|
148
163
|
"type": "selectSendTo",
|
|
149
164
|
"command": "sendToInstance",
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "gotify-ws",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.3",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.1.3": {
|
|
7
|
+
"en": "Fix Test & Release\nFix Timeout",
|
|
8
|
+
"de": "Test und Release\nTimeout reparieren",
|
|
9
|
+
"ru": "Fix Test & Release\nВремя ожидания",
|
|
10
|
+
"pt": "Teste de Fix & Release\nFix Timeout",
|
|
11
|
+
"nl": "Repareren Test & Release\nTijdslimiet herstellen",
|
|
12
|
+
"fr": "Correction du test et de la libération\nCorrection du délai",
|
|
13
|
+
"it": "Prova di correzione e rilascio\nRisolto il timeout",
|
|
14
|
+
"es": "Reparación de prueba\nCorrección de tiempo",
|
|
15
|
+
"pl": "Napraw test i wydaj\nPopraw czas",
|
|
16
|
+
"uk": "Тестування та реліз\nВиправлення часу",
|
|
17
|
+
"zh-cn": "修复测试和释放\n修正超时"
|
|
18
|
+
},
|
|
19
|
+
"0.1.2": {
|
|
20
|
+
"en": "(simatec) Fix io-package\n(simatec) Notification-Manager added",
|
|
21
|
+
"de": "(simatec)\n(simatec) Notification-Manager hinzugefügt",
|
|
22
|
+
"ru": "Fix io-package\n(simatec)",
|
|
23
|
+
"pt": "(simatec) Fix io-package\n(simatec) Notificação-Manager adicionado",
|
|
24
|
+
"nl": "Fix io-package\n(simatec) Notification-Manager toegevoegd",
|
|
25
|
+
"fr": "(simatec) Correction de l'emballage\n(simatec) Avis-Gestionnaire ajouté",
|
|
26
|
+
"it": "(simatec) Fissare io-package\n(simatec) Notificazione-Manager aggiunto",
|
|
27
|
+
"es": "(simatec) Fija io-paquete\n(simatec) Notification-Manager añadido",
|
|
28
|
+
"pl": "(simatec) Napraw pakiet jo-\n(simatec) Notification-Manager dodany",
|
|
29
|
+
"uk": "(simatec) Фіксація io-package\n(simatec) Notification-Manager додано",
|
|
30
|
+
"zh-cn": "(静电)\n(simatec) 通知管理器添加"
|
|
31
|
+
},
|
|
6
32
|
"0.1.1": {
|
|
7
33
|
"en": "(simatec) Fix Branch",
|
|
8
34
|
"de": "(simatec)",
|
|
@@ -79,14 +105,15 @@
|
|
|
79
105
|
"Whatsapp",
|
|
80
106
|
"Discord",
|
|
81
107
|
"Mail",
|
|
82
|
-
"Pushover"
|
|
108
|
+
"Pushover",
|
|
109
|
+
"Notification-Manager",
|
|
110
|
+
"Signal"
|
|
83
111
|
],
|
|
84
112
|
"licenseInformation": {
|
|
85
113
|
"license": "MIT",
|
|
86
114
|
"type": "free"
|
|
87
115
|
},
|
|
88
116
|
"platform": "Javascript/Node.js",
|
|
89
|
-
"main": "main.js",
|
|
90
117
|
"icon": "gotify-ws.png",
|
|
91
118
|
"enabled": true,
|
|
92
119
|
"messagebox": true,
|
|
@@ -98,6 +125,7 @@
|
|
|
98
125
|
"compact": true,
|
|
99
126
|
"connectionType": "local",
|
|
100
127
|
"dataSource": "poll",
|
|
128
|
+
"tier": 2,
|
|
101
129
|
"adminUI": {
|
|
102
130
|
"config": "json"
|
|
103
131
|
},
|
|
@@ -115,22 +143,28 @@
|
|
|
115
143
|
"native": {
|
|
116
144
|
"ip": "",
|
|
117
145
|
"port": 8080,
|
|
118
|
-
"
|
|
119
|
-
"
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"pushoverInstance": "
|
|
123
|
-
"discordInstance": "
|
|
124
|
-
"signalInstance": "
|
|
125
|
-
"telegramInstance": "
|
|
146
|
+
"notificationType": "notification-manager",
|
|
147
|
+
"emailInstance": "",
|
|
148
|
+
"matrixInstance": "",
|
|
149
|
+
"notificationManagerInstance": "",
|
|
150
|
+
"pushoverInstance": "",
|
|
151
|
+
"discordInstance": "",
|
|
152
|
+
"signalInstance": "",
|
|
153
|
+
"telegramInstance": "",
|
|
126
154
|
"telegramUser": "allTelegramUsers",
|
|
127
|
-
"whatsappInstance": "
|
|
155
|
+
"whatsappInstance": "",
|
|
128
156
|
"emailReceiver": "xxx@xxx.com",
|
|
129
157
|
"emailSender": "xxx@xxx.com",
|
|
130
158
|
"pushoverDeviceID": "",
|
|
131
159
|
"pushoverSilentNotice": false,
|
|
132
160
|
"discordTarget": "none"
|
|
133
161
|
},
|
|
162
|
+
"encryptedNative": [
|
|
163
|
+
"token"
|
|
164
|
+
],
|
|
165
|
+
"protectedNative": [
|
|
166
|
+
"token"
|
|
167
|
+
],
|
|
134
168
|
"objects": [],
|
|
135
169
|
"instanceObjects": [
|
|
136
170
|
{
|
package/main.js
CHANGED
|
@@ -21,6 +21,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
21
21
|
name: adapterName,
|
|
22
22
|
});
|
|
23
23
|
this.on('ready', this.onReady.bind(this));
|
|
24
|
+
// @ts-ignore
|
|
24
25
|
this.on('message', this.onMessage.bind(this));
|
|
25
26
|
this.on('unload', this.onUnload.bind(this));
|
|
26
27
|
}
|
|
@@ -32,22 +33,22 @@ class GotifyWs extends utils.Adapter {
|
|
|
32
33
|
systemLang = sysLang.common.language;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
this.
|
|
36
|
+
await this.setStateAsync('info.connection', false, true);
|
|
36
37
|
this.connectWebSocket();
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
/**
|
|
40
41
|
* @param {() => void} callback
|
|
41
42
|
*/
|
|
42
|
-
onUnload(callback) {
|
|
43
|
-
this.
|
|
43
|
+
async onUnload(callback) {
|
|
44
|
+
await this.setStateAsync('info.connection', false, true);
|
|
44
45
|
|
|
45
46
|
try {
|
|
46
47
|
if (ws) {
|
|
47
48
|
stop = true;
|
|
48
49
|
ws.close();
|
|
49
50
|
ws.terminate();
|
|
50
|
-
clearTimeout(timer);
|
|
51
|
+
this.clearTimeout(timer);
|
|
51
52
|
timer = null;
|
|
52
53
|
}
|
|
53
54
|
callback();
|
|
@@ -171,6 +172,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
171
172
|
|
|
172
173
|
ws = new WebSocket(uri, {
|
|
173
174
|
headers: {
|
|
175
|
+
// @ts-ignore
|
|
174
176
|
'X-Gotify-Key': this.config.token,
|
|
175
177
|
},
|
|
176
178
|
});
|
|
@@ -189,7 +191,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
189
191
|
this.setState('info.connection', false, true);
|
|
190
192
|
this.log.info('WebSocket closed');
|
|
191
193
|
if (stop === false) {
|
|
192
|
-
timer = setTimeout(this.connectWebSocket, 5000);
|
|
194
|
+
timer = this.setTimeout(this.connectWebSocket, 5000);
|
|
193
195
|
}
|
|
194
196
|
});
|
|
195
197
|
|
|
@@ -218,7 +220,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
218
220
|
line.title != '' ? `<b>${line.title.replace(/[`]/g, '')}</b>` : '<b>Gotifi WS Message</b>';
|
|
219
221
|
|
|
220
222
|
try {
|
|
221
|
-
this.
|
|
223
|
+
await this.sendToAsync(this.config.telegramInstance, 'send', {
|
|
222
224
|
parse_mode: 'HTML',
|
|
223
225
|
text: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
|
224
226
|
});
|
|
@@ -236,7 +238,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
236
238
|
line.title != '' ? `<b>${line.title.replace(/[`]/g, '')}</b>` : '<b>Gotifi WS Message</b>';
|
|
237
239
|
|
|
238
240
|
try {
|
|
239
|
-
this.
|
|
241
|
+
await this.sendToAsync(this.config.telegramInstance, 'send', {
|
|
240
242
|
user: this.config.telegramUser,
|
|
241
243
|
parse_mode: 'HTML',
|
|
242
244
|
text: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
|
@@ -253,7 +255,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
253
255
|
const title = line.title != '' ? line.title.replace(/[`]/g, '') : 'Gotifi WS Message';
|
|
254
256
|
|
|
255
257
|
try {
|
|
256
|
-
this.
|
|
258
|
+
await this.sendToAsync(this.config.emailInstance, 'send', {
|
|
257
259
|
text: formatMessage,
|
|
258
260
|
to: this.config.emailReceiver,
|
|
259
261
|
subject: title,
|
|
@@ -276,7 +278,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
276
278
|
line.title != '' ? `<b>${line.title.replace(/[`]/g, '')}</b>` : '<b>Gotifi WS Message</b>';
|
|
277
279
|
|
|
278
280
|
try {
|
|
279
|
-
this.
|
|
281
|
+
await this.sendToAsync(this.config.pushoverInstance, 'send', {
|
|
280
282
|
message: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
|
281
283
|
sound: '',
|
|
282
284
|
priority: -1,
|
|
@@ -294,7 +296,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
294
296
|
line.title != '' ? `<b>${line.title.replace(/[`]/g, '')}</b>` : '<b>Gotifi WS Message</b>';
|
|
295
297
|
|
|
296
298
|
try {
|
|
297
|
-
this.
|
|
299
|
+
await this.sendToAsync(this.config.pushoverInstance, 'send', {
|
|
298
300
|
message: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
|
299
301
|
sound: '',
|
|
300
302
|
title: title,
|
|
@@ -313,7 +315,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
313
315
|
const title = line.title != '' ? `*${line.title.replace(/[`]/g, '')}*` : '*Gotifi WS Message*';
|
|
314
316
|
|
|
315
317
|
try {
|
|
316
|
-
this.
|
|
318
|
+
await this.sendToAsync(this.config.whatsappInstance, 'send', {
|
|
317
319
|
text: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
|
318
320
|
});
|
|
319
321
|
} catch (err) {
|
|
@@ -321,6 +323,22 @@ class GotifyWs extends utils.Adapter {
|
|
|
321
323
|
}
|
|
322
324
|
}
|
|
323
325
|
break;
|
|
326
|
+
case 'notification-manager':
|
|
327
|
+
if (this.config.notificationManagerInstance) {
|
|
328
|
+
const message = line.message.replace(/[`]/g, '');
|
|
329
|
+
const formatMessage = message.replace(/[']/g, '"');
|
|
330
|
+
const title = line.title != '' ? `<b>${line.title.replace(/[`]/g, '')}</b>` : '<b>Gotifi WS Message</b>';
|
|
331
|
+
|
|
332
|
+
try {
|
|
333
|
+
await this.sendToAsync(this.config.notificationManagerInstance, 'registerUserNotification', {
|
|
334
|
+
category: 'notify',
|
|
335
|
+
message: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
|
336
|
+
});
|
|
337
|
+
} catch (err) {
|
|
338
|
+
this.log.warn(`Error sending Notification-Manager message: ${err}`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
break;
|
|
324
342
|
case 'signal-cmb':
|
|
325
343
|
if (this.config.signalInstance) {
|
|
326
344
|
const message = line.message.replace(/[`]/g, '');
|
|
@@ -328,7 +346,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
328
346
|
const title = line.title != '' ? line.title.replace(/[`]/g, '') : 'Gotifi WS Message';
|
|
329
347
|
|
|
330
348
|
try {
|
|
331
|
-
this.
|
|
349
|
+
await this.sendToAsync(this.config.signalInstance, 'send', {
|
|
332
350
|
text: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
|
333
351
|
});
|
|
334
352
|
} catch (err) {
|
|
@@ -336,7 +354,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
336
354
|
}
|
|
337
355
|
}
|
|
338
356
|
break;
|
|
339
|
-
case 'matrix':
|
|
357
|
+
case 'matrix-org':
|
|
340
358
|
if (this.config.matrixInstance) {
|
|
341
359
|
const message = line.message.replace(/[`]/g, '');
|
|
342
360
|
const formatMessage = message.replace(/[']/g, '"');
|
|
@@ -344,7 +362,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
344
362
|
line.title != '' ? `<b>${line.title.replace(/[`]/g, '')}</b>` : '<b>Gotifi WS Message</b>';
|
|
345
363
|
|
|
346
364
|
try {
|
|
347
|
-
this.
|
|
365
|
+
await this.sendToAsync(this.config.matrixInstance, {
|
|
348
366
|
html: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
|
349
367
|
});
|
|
350
368
|
} catch (err) {
|
|
@@ -362,7 +380,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
362
380
|
if (this.config.discordTarget.match(/^\d+$/)) {
|
|
363
381
|
// send to a single user
|
|
364
382
|
try {
|
|
365
|
-
this.
|
|
383
|
+
await this.sendToAsync(this.config.discordInstance, 'sendMessage', {
|
|
366
384
|
userId: this.config.discordTarget,
|
|
367
385
|
content: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
|
368
386
|
});
|
|
@@ -373,7 +391,7 @@ class GotifyWs extends utils.Adapter {
|
|
|
373
391
|
// send to a server channel
|
|
374
392
|
const [serverId, channelId] = this.config.discordTarget.split('/');
|
|
375
393
|
try {
|
|
376
|
-
this.
|
|
394
|
+
await this.sendToAsync(this.config.discordInstance, 'sendMessage', {
|
|
377
395
|
serverId,
|
|
378
396
|
channelId,
|
|
379
397
|
content: `${title != '' ? `${title}\n` : ''}${formatMessage}`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.gotify-ws",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Gotify web socket for connection to various notification systems",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "simatec",
|
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
"Whatsapp",
|
|
16
16
|
"Discord",
|
|
17
17
|
"Mail",
|
|
18
|
-
"Pushover"
|
|
18
|
+
"Pushover",
|
|
19
|
+
"Notification-Manager",
|
|
20
|
+
"Signal"
|
|
19
21
|
],
|
|
20
22
|
"repository": {
|
|
21
23
|
"type": "git",
|
|
@@ -26,12 +28,12 @@
|
|
|
26
28
|
},
|
|
27
29
|
"dependencies": {
|
|
28
30
|
"@iobroker/adapter-core": "^3.1.6",
|
|
29
|
-
"ws": "^8.
|
|
31
|
+
"ws": "^8.18.0",
|
|
30
32
|
"axios": "^1.7.2"
|
|
31
33
|
},
|
|
32
34
|
"devDependencies": {
|
|
33
|
-
"@alcalzone/release-script": "^3.7.
|
|
34
|
-
"@alcalzone/release-script-plugin-iobroker": "^3.7.
|
|
35
|
+
"@alcalzone/release-script": "^3.7.3",
|
|
36
|
+
"@alcalzone/release-script-plugin-iobroker": "^3.7.2",
|
|
35
37
|
"@alcalzone/release-script-plugin-license": "^3.7.0",
|
|
36
38
|
"@alcalzone/release-script-plugin-manual-review": "^3.7.0",
|
|
37
39
|
"@iobroker/adapter-dev": "^1.3.0",
|
|
@@ -39,19 +41,19 @@
|
|
|
39
41
|
"@tsconfig/node20": "^20.1.4",
|
|
40
42
|
"@types/chai": "^4.3.16",
|
|
41
43
|
"@types/chai-as-promised": "^7.1.8",
|
|
42
|
-
"@types/mocha": "^10.0.
|
|
43
|
-
"@types/node": "^20.14.
|
|
44
|
+
"@types/mocha": "^10.0.7",
|
|
45
|
+
"@types/node": "^20.14.11",
|
|
44
46
|
"@types/proxyquire": "^1.3.31",
|
|
45
47
|
"@types/sinon": "^17.0.3",
|
|
46
48
|
"@types/sinon-chai": "^3.2.12",
|
|
47
49
|
"chai": "^4.3.10",
|
|
48
50
|
"chai-as-promised": "^7.1.2",
|
|
49
|
-
"eslint": "^9.
|
|
50
|
-
"mocha": "^10.
|
|
51
|
+
"eslint": "^9.7.0",
|
|
52
|
+
"mocha": "^10.6.0",
|
|
51
53
|
"proxyquire": "^2.1.3",
|
|
52
54
|
"sinon": "^18.0.0",
|
|
53
55
|
"sinon-chai": "^3.7.0",
|
|
54
|
-
"typescript": "~5.
|
|
56
|
+
"typescript": "~5.5.3"
|
|
55
57
|
},
|
|
56
58
|
"main": "main.js",
|
|
57
59
|
"files": [
|
|
@@ -72,7 +74,9 @@
|
|
|
72
74
|
"release-patch": "release-script patch --yes",
|
|
73
75
|
"release-minor": "release-script minor --yes",
|
|
74
76
|
"release-major": "release-script major --yes",
|
|
75
|
-
"translate": "translate-adapter"
|
|
77
|
+
"translate": "translate-adapter",
|
|
78
|
+
"dev-server-run": "dev-server run gotify-ws",
|
|
79
|
+
"dev-server-watch": "dev-server watch gotify-ws"
|
|
76
80
|
},
|
|
77
81
|
"bugs": {
|
|
78
82
|
"url": "https://github.com/simatec/ioBroker.gotify-ws/issues"
|