ntfy-reverse-proxy 0.0.0 → 2.0.0

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.
Files changed (199) hide show
  1. package/README.md +48 -0
  2. package/build/src/cli/commands/config-io.d.ts +5 -0
  3. package/build/src/cli/commands/config-io.d.ts.map +1 -0
  4. package/build/src/cli/commands/config-io.js +19 -0
  5. package/build/src/cli/commands/config-io.js.map +1 -0
  6. package/build/src/cli/commands/context.d.ts +9 -0
  7. package/build/src/cli/commands/context.d.ts.map +1 -0
  8. package/build/src/cli/commands/context.js +108 -0
  9. package/build/src/cli/commands/context.js.map +1 -0
  10. package/build/src/cli/commands/deploy.d.ts +4 -0
  11. package/build/src/cli/commands/deploy.d.ts.map +1 -0
  12. package/build/src/cli/commands/deploy.js +496 -0
  13. package/build/src/cli/commands/deploy.js.map +1 -0
  14. package/build/src/cli/commands/generate.d.ts +4 -0
  15. package/build/src/cli/commands/generate.d.ts.map +1 -0
  16. package/build/src/cli/commands/generate.js +68 -0
  17. package/build/src/cli/commands/generate.js.map +1 -0
  18. package/build/src/cli/commands/server.d.ts +7 -0
  19. package/build/src/cli/commands/server.d.ts.map +1 -0
  20. package/build/src/cli/commands/server.js +43 -0
  21. package/build/src/cli/commands/server.js.map +1 -0
  22. package/build/src/cli/commands/settings.d.ts +5 -0
  23. package/build/src/cli/commands/settings.d.ts.map +1 -0
  24. package/build/src/cli/commands/settings.js +16 -0
  25. package/build/src/cli/commands/settings.js.map +1 -0
  26. package/build/src/cli/commands/validate.d.ts +4 -0
  27. package/build/src/cli/commands/validate.d.ts.map +1 -0
  28. package/build/src/cli/commands/validate.js +45 -0
  29. package/build/src/cli/commands/validate.js.map +1 -0
  30. package/build/src/cli/index.d.ts +5 -0
  31. package/build/src/cli/index.d.ts.map +1 -0
  32. package/build/src/cli/index.js +118 -0
  33. package/build/src/cli/index.js.map +1 -0
  34. package/build/src/cli/menu/interactive.d.ts +4 -0
  35. package/build/src/cli/menu/interactive.d.ts.map +1 -0
  36. package/build/src/cli/menu/interactive.js +902 -0
  37. package/build/src/cli/menu/interactive.js.map +1 -0
  38. package/build/src/lib/item.d.ts +3 -0
  39. package/build/src/lib/item.d.ts.map +1 -0
  40. package/build/src/lib/item.js +3 -0
  41. package/build/src/lib/item.js.map +1 -0
  42. package/build/src/lib/regex.d.ts +30 -0
  43. package/build/src/lib/regex.d.ts.map +1 -0
  44. package/build/src/lib/regex.js +30 -0
  45. package/build/src/lib/regex.js.map +1 -0
  46. package/build/src/lib/schema.d.ts +167 -0
  47. package/build/src/lib/schema.d.ts.map +1 -0
  48. package/build/src/lib/schema.js +70 -0
  49. package/build/src/lib/schema.js.map +1 -0
  50. package/build/src/lib/utility.d.ts +4 -0
  51. package/build/src/lib/utility.d.ts.map +1 -0
  52. package/build/src/lib/utility.js +14 -0
  53. package/build/src/lib/utility.js.map +1 -0
  54. package/build/src/types/cli/commands/config-io.d.ts +38 -0
  55. package/build/src/types/cli/commands/context.d.ts +131 -0
  56. package/build/src/types/cli/commands/deploy.d.ts +622 -0
  57. package/build/src/types/cli/commands/generate.d.ts +51 -0
  58. package/build/src/types/cli/commands/server.d.ts +65 -0
  59. package/build/src/types/cli/commands/settings.d.ts +25 -0
  60. package/build/src/types/cli/commands/validate.d.ts +37 -0
  61. package/build/src/types/cli/index.d.ts +55 -0
  62. package/build/src/types/cli/menu/interactive.d.ts +381 -0
  63. package/build/src/types/fetch-response.d.ts +11 -0
  64. package/build/src/types/lib/schema.d.ts +134 -0
  65. package/build/src/types/lib/utility.d.ts +8 -0
  66. package/build/src/types/tests/cli/commands/context.test.d.ts +57 -0
  67. package/build/src/types/tests/cli/commands/generate.test.d.ts +12 -0
  68. package/build/src/types/tests/cli/commands/server.test.d.ts +45 -0
  69. package/build/src/types/tests/cli/commands/settings.test.d.ts +40 -0
  70. package/build/src/types/tests/cli/commands/validate.test.d.ts +19 -0
  71. package/build/src/types/tests/cli/menu/interactive.test.d.ts +6 -0
  72. package/build/src/types/tests/lib/schema.test.d.ts +10 -0
  73. package/build/src/types/tests/type-declarations.test.d.ts +173 -0
  74. package/build/src/types/tests/worker/index.test.d.ts +20 -0
  75. package/build/src/types/tests/worker/interpreters/ntfy-json.test.d.ts +19 -0
  76. package/build/src/types/tests/worker/interpreters/pfsense.test.d.ts +10 -0
  77. package/build/src/types/tests/worker/interpreters/plain-text.test.d.ts +10 -0
  78. package/build/src/types/tests/worker/interpreters/seerr.test.d.ts +8 -0
  79. package/build/src/types/tests/worker/interpreters/statuspage.test.d.ts +58 -0
  80. package/build/src/types/tests/worker/interpreters/synology.test.d.ts +8 -0
  81. package/build/src/types/tests/worker/interpreters/unifi.test.d.ts +8 -0
  82. package/build/src/types/tests/worker/landing/page.test.d.ts +55 -0
  83. package/build/src/types/tests/worker/pipeline/accumulate.test.d.ts +28 -0
  84. package/build/src/types/tests/worker/pipeline/authenticate.test.d.ts +9 -0
  85. package/build/src/types/tests/worker/pipeline/email.test.d.ts +15 -0
  86. package/build/src/types/tests/worker/pipeline/format.test.d.ts +38 -0
  87. package/build/src/types/tests/worker/pipeline/interpret.test.d.ts +43 -0
  88. package/build/src/types/tests/worker/pipeline/parse.test.d.ts +17 -0
  89. package/build/src/types/tests/worker/pipeline/receive.test.d.ts +23 -0
  90. package/build/src/types/tests/worker/pipeline/respond.test.d.ts +20 -0
  91. package/build/src/types/tests/worker/pipeline/route.test.d.ts +80 -0
  92. package/build/src/types/tests/worker/pipeline/send.test.d.ts +37 -0
  93. package/build/src/types/tests/worker/pipeline/split.test.d.ts +17 -0
  94. package/build/src/types/worker/index.d.ts +232 -0
  95. package/build/src/types/worker/interpreters/ntfy-json.d.ts +28 -0
  96. package/build/src/types/worker/interpreters/pfsense.d.ts +97 -0
  97. package/build/src/types/worker/interpreters/plain-text.d.ts +24 -0
  98. package/build/src/types/worker/interpreters/seerr.d.ts +124 -0
  99. package/build/src/types/worker/interpreters/statuspage.d.ts +239 -0
  100. package/build/src/types/worker/interpreters/synology.d.ts +99 -0
  101. package/build/src/types/worker/interpreters/unifi.d.ts +111 -0
  102. package/build/src/types/worker/landing/page.d.ts +44 -0
  103. package/build/src/types/worker/pipeline/accumulate.d.ts +79 -0
  104. package/build/src/types/worker/pipeline/authenticate.d.ts +68 -0
  105. package/build/src/types/worker/pipeline/email.d.ts +108 -0
  106. package/build/src/types/worker/pipeline/format.d.ts +47 -0
  107. package/build/src/types/worker/pipeline/interpret.d.ts +63 -0
  108. package/build/src/types/worker/pipeline/parse.d.ts +39 -0
  109. package/build/src/types/worker/pipeline/receive.d.ts +64 -0
  110. package/build/src/types/worker/pipeline/respond.d.ts +113 -0
  111. package/build/src/types/worker/pipeline/route.d.ts +34 -0
  112. package/build/src/types/worker/pipeline/send.d.ts +143 -0
  113. package/build/src/types/worker/pipeline/shared.d.ts +85 -0
  114. package/build/src/types/worker/pipeline/split.d.ts +35 -0
  115. package/build/src/worker/handlers.d.ts +5 -0
  116. package/build/src/worker/handlers.d.ts.map +1 -0
  117. package/build/src/worker/handlers.js +360 -0
  118. package/build/src/worker/handlers.js.map +1 -0
  119. package/build/src/worker/index.d.ts +4 -0
  120. package/build/src/worker/index.d.ts.map +1 -0
  121. package/build/src/worker/index.js +52 -0
  122. package/build/src/worker/index.js.map +1 -0
  123. package/build/src/worker/interpreters/ntfy-json.d.ts +4 -0
  124. package/build/src/worker/interpreters/ntfy-json.d.ts.map +1 -0
  125. package/build/src/worker/interpreters/ntfy-json.js +49 -0
  126. package/build/src/worker/interpreters/ntfy-json.js.map +1 -0
  127. package/build/src/worker/interpreters/pfsense.d.ts +4 -0
  128. package/build/src/worker/interpreters/pfsense.d.ts.map +1 -0
  129. package/build/src/worker/interpreters/pfsense.js +150 -0
  130. package/build/src/worker/interpreters/pfsense.js.map +1 -0
  131. package/build/src/worker/interpreters/plain-text.d.ts +4 -0
  132. package/build/src/worker/interpreters/plain-text.d.ts.map +1 -0
  133. package/build/src/worker/interpreters/plain-text.js +18 -0
  134. package/build/src/worker/interpreters/plain-text.js.map +1 -0
  135. package/build/src/worker/interpreters/seerr.d.ts +4 -0
  136. package/build/src/worker/interpreters/seerr.d.ts.map +1 -0
  137. package/build/src/worker/interpreters/seerr.js +173 -0
  138. package/build/src/worker/interpreters/seerr.js.map +1 -0
  139. package/build/src/worker/interpreters/statuspage.d.ts +4 -0
  140. package/build/src/worker/interpreters/statuspage.d.ts.map +1 -0
  141. package/build/src/worker/interpreters/statuspage.js +266 -0
  142. package/build/src/worker/interpreters/statuspage.js.map +1 -0
  143. package/build/src/worker/interpreters/synology.d.ts +4 -0
  144. package/build/src/worker/interpreters/synology.d.ts.map +1 -0
  145. package/build/src/worker/interpreters/synology.js +177 -0
  146. package/build/src/worker/interpreters/synology.js.map +1 -0
  147. package/build/src/worker/interpreters/unifi.d.ts +4 -0
  148. package/build/src/worker/interpreters/unifi.d.ts.map +1 -0
  149. package/build/src/worker/interpreters/unifi.js +152 -0
  150. package/build/src/worker/interpreters/unifi.js.map +1 -0
  151. package/build/src/worker/landing/page.d.ts +4 -0
  152. package/build/src/worker/landing/page.d.ts.map +1 -0
  153. package/build/src/worker/landing/page.js +260 -0
  154. package/build/src/worker/landing/page.js.map +1 -0
  155. package/build/src/worker/pipeline/accumulate.d.ts +7 -0
  156. package/build/src/worker/pipeline/accumulate.d.ts.map +1 -0
  157. package/build/src/worker/pipeline/accumulate.js +53 -0
  158. package/build/src/worker/pipeline/accumulate.js.map +1 -0
  159. package/build/src/worker/pipeline/authenticate.d.ts +4 -0
  160. package/build/src/worker/pipeline/authenticate.d.ts.map +1 -0
  161. package/build/src/worker/pipeline/authenticate.js +53 -0
  162. package/build/src/worker/pipeline/authenticate.js.map +1 -0
  163. package/build/src/worker/pipeline/email.d.ts +4 -0
  164. package/build/src/worker/pipeline/email.d.ts.map +1 -0
  165. package/build/src/worker/pipeline/email.js +149 -0
  166. package/build/src/worker/pipeline/email.js.map +1 -0
  167. package/build/src/worker/pipeline/format.d.ts +5 -0
  168. package/build/src/worker/pipeline/format.d.ts.map +1 -0
  169. package/build/src/worker/pipeline/format.js +48 -0
  170. package/build/src/worker/pipeline/format.js.map +1 -0
  171. package/build/src/worker/pipeline/interpret.d.ts +4 -0
  172. package/build/src/worker/pipeline/interpret.d.ts.map +1 -0
  173. package/build/src/worker/pipeline/interpret.js +30 -0
  174. package/build/src/worker/pipeline/interpret.js.map +1 -0
  175. package/build/src/worker/pipeline/parse.d.ts +4 -0
  176. package/build/src/worker/pipeline/parse.d.ts.map +1 -0
  177. package/build/src/worker/pipeline/parse.js +59 -0
  178. package/build/src/worker/pipeline/parse.js.map +1 -0
  179. package/build/src/worker/pipeline/receive.d.ts +4 -0
  180. package/build/src/worker/pipeline/receive.d.ts.map +1 -0
  181. package/build/src/worker/pipeline/receive.js +52 -0
  182. package/build/src/worker/pipeline/receive.js.map +1 -0
  183. package/build/src/worker/pipeline/respond.d.ts +4 -0
  184. package/build/src/worker/pipeline/respond.d.ts.map +1 -0
  185. package/build/src/worker/pipeline/respond.js +48 -0
  186. package/build/src/worker/pipeline/respond.js.map +1 -0
  187. package/build/src/worker/pipeline/route.d.ts +5 -0
  188. package/build/src/worker/pipeline/route.d.ts.map +1 -0
  189. package/build/src/worker/pipeline/route.js +23 -0
  190. package/build/src/worker/pipeline/route.js.map +1 -0
  191. package/build/src/worker/pipeline/send.d.ts +4 -0
  192. package/build/src/worker/pipeline/send.d.ts.map +1 -0
  193. package/build/src/worker/pipeline/send.js +156 -0
  194. package/build/src/worker/pipeline/send.js.map +1 -0
  195. package/build/src/worker/pipeline/split.d.ts +4 -0
  196. package/build/src/worker/pipeline/split.d.ts.map +1 -0
  197. package/build/src/worker/pipeline/split.js +40 -0
  198. package/build/src/worker/pipeline/split.js.map +1 -0
  199. package/package.json +95 -2
@@ -0,0 +1,52 @@
1
+ import { configSchema } from '../lib/schema.js';
2
+ import { handleEmail, handleRequest } from './handlers.js';
3
+ const moduleExports = {
4
+ async fetch(request, env) {
5
+ const settings = JSON.parse(env['SETTINGS']);
6
+ const servers = JSON.parse(env['SERVERS']);
7
+ const contexts = JSON.parse(env['CONTEXTS']);
8
+ const result = configSchema.safeParse({
9
+ settings, servers, contexts,
10
+ });
11
+ if (result['success'] === false) {
12
+ return new Response(JSON.stringify({
13
+ status: 'error', message: 'Invalid configuration', errors: result['error']['issues'],
14
+ }, null, 2), {
15
+ status: 500,
16
+ headers: { 'Content-Type': 'application/json' },
17
+ });
18
+ }
19
+ const kv = env['KV'];
20
+ return handleRequest(request, result['data'], kv);
21
+ },
22
+ async email(message, env) {
23
+ const settings = JSON.parse(env['SETTINGS']);
24
+ const servers = JSON.parse(env['SERVERS']);
25
+ const contexts = JSON.parse(env['CONTEXTS']);
26
+ const result = configSchema.safeParse({
27
+ settings, servers, contexts,
28
+ });
29
+ if (result['success'] === false) {
30
+ return;
31
+ }
32
+ const reader = message['raw'].getReader();
33
+ const chunks = [];
34
+ let done = false;
35
+ while (done === false) {
36
+ const readResult = await reader.read();
37
+ if (readResult['done'] === true) {
38
+ done = true;
39
+ }
40
+ else {
41
+ chunks.push(readResult['value']);
42
+ }
43
+ }
44
+ const decoder = new TextDecoder();
45
+ const rawEmail = chunks.map((chunk) => decoder.decode(chunk, { stream: true })).join('') + decoder.decode();
46
+ const kv = env['KV'];
47
+ await handleEmail(rawEmail, message['from'], result['data'], kv);
48
+ return;
49
+ },
50
+ };
51
+ export default moduleExports;
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/worker/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { WorkerInterpretersNtfyJsonInterpreter } from '../../types/worker/interpreters/ntfy-json.d.ts';
2
+ declare const ntfyJsonInterpreter: WorkerInterpretersNtfyJsonInterpreter;
3
+ export { ntfyJsonInterpreter, };
4
+ //# sourceMappingURL=ntfy-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ntfy-json.d.ts","sourceRoot":"","sources":["../../../../src/worker/interpreters/ntfy-json.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,qCAAqC,EAMtC,MAAM,gDAAgD,CAAC;AA8CxD,QAAA,MAAM,mBAAmB,EAAE,qCA2B1B,CAAC;AAEF,OAAO,EACL,mBAAmB,GACpB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ const ntfyJsonTagsItem = z.string();
3
+ const ntfyJsonSchema = z.object({
4
+ title: z.string().optional(),
5
+ body: z.string(),
6
+ priority: z.union([
7
+ z.literal(1),
8
+ z.literal(2),
9
+ z.literal(3),
10
+ z.literal(4),
11
+ z.literal(5),
12
+ ]).optional(),
13
+ tags: z.array(ntfyJsonTagsItem).optional(),
14
+ icon: z.string().optional(),
15
+ actions: z.string().optional(),
16
+ attach: z.string().optional(),
17
+ filename: z.string().optional(),
18
+ markdown: z.boolean().optional(),
19
+ });
20
+ const ntfyJsonInterpreter = (input) => {
21
+ let parsed = undefined;
22
+ if (typeof input === 'string') {
23
+ try {
24
+ parsed = JSON.parse(input);
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ else if (input instanceof ArrayBuffer) {
31
+ const decoder = new TextDecoder('utf-8');
32
+ const decodedBody = decoder.decode(input);
33
+ try {
34
+ parsed = JSON.parse(decodedBody);
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ else {
41
+ parsed = input;
42
+ }
43
+ const notification = ntfyJsonSchema.parse(parsed);
44
+ return {
45
+ notification,
46
+ };
47
+ };
48
+ export { ntfyJsonInterpreter, };
49
+ //# sourceMappingURL=ntfy-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ntfy-json.js","sourceRoot":"","sources":["../../../../src/worker/interpreters/ntfy-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAUpC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC;QAChB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KACb,CAAC,CAAC,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAUH,MAAM,mBAAmB,GAA0C,CAAC,KAAsC,EAAoC,EAAE;IAC9I,IAAI,MAAM,GAAwD,SAAS,CAAC;IAE5E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACxC,MAAM,OAAO,GAAyD,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/F,MAAM,WAAW,GAA6D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpG,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAA8D,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE7G,OAAO;QACL,YAAY;KACb,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EACL,mBAAmB,GACpB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { WorkerInterpretersPfsenseInterpreter } from '../../types/worker/interpreters/pfsense.d.ts';
2
+ declare const pfsenseInterpreter: WorkerInterpretersPfsenseInterpreter;
3
+ export { pfsenseInterpreter, };
4
+ //# sourceMappingURL=pfsense.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pfsense.d.ts","sourceRoot":"","sources":["../../../../src/worker/interpreters/pfsense.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAMV,oCAAoC,EA0BrC,MAAM,8CAA8C,CAAC;AAuLtD,QAAA,MAAM,kBAAkB,EAAE,oCAgFzB,CAAC;AAEF,OAAO,EACL,kBAAkB,GACnB,CAAC"}
@@ -0,0 +1,150 @@
1
+ const mapKeywordsToPriority = (text) => {
2
+ const lower = text.toLowerCase();
3
+ if (lower.includes('is down') === true) {
4
+ return 5;
5
+ }
6
+ if (lower.includes('error') === true
7
+ || lower.includes('bad sectors') === true) {
8
+ return 4;
9
+ }
10
+ if (lower.includes('packet loss') === true
11
+ || lower.includes('high latency') === true
12
+ || lower.includes('warning') === true) {
13
+ return 3;
14
+ }
15
+ if (lower.includes('is available') === true
16
+ || lower.includes('restored') === true) {
17
+ return 2;
18
+ }
19
+ return 3;
20
+ };
21
+ const mapPriorityToEmojiTag = (priority) => {
22
+ switch (priority) {
23
+ case 5: {
24
+ return 'rotating_light';
25
+ }
26
+ case 4: {
27
+ return 'warning';
28
+ }
29
+ case 2: {
30
+ return 'white_check_mark';
31
+ }
32
+ default: {
33
+ return 'bell';
34
+ }
35
+ }
36
+ };
37
+ const extractContentTags = (text) => {
38
+ const lower = text.toLowerCase();
39
+ const tags = [];
40
+ if (lower.includes('gateway') === true) {
41
+ tags.push('gateway');
42
+ }
43
+ if (lower.includes('certificate') === true) {
44
+ tags.push('certificate');
45
+ }
46
+ if (lower.includes('firewall') === true
47
+ || lower.includes('filter') === true) {
48
+ tags.push('firewall');
49
+ }
50
+ if (lower.includes('openvpn') === true
51
+ || lower.includes('ipsec') === true
52
+ || lower.includes('vpn') === true) {
53
+ tags.push('vpn');
54
+ }
55
+ if (lower.includes('dns') === true
56
+ || lower.includes('resolver') === true) {
57
+ tags.push('dns');
58
+ }
59
+ return tags;
60
+ };
61
+ const parseNotifications = (textBody) => {
62
+ const lines = textBody.split('\n');
63
+ const notifications = [];
64
+ let pastSeparator = false;
65
+ for (const line of lines) {
66
+ const trimmed = line.trim();
67
+ if (trimmed.startsWith('====') === true) {
68
+ pastSeparator = true;
69
+ continue;
70
+ }
71
+ if (trimmed.startsWith('Notifications in this message') === true) {
72
+ continue;
73
+ }
74
+ if (trimmed === '') {
75
+ continue;
76
+ }
77
+ if (pastSeparator === true) {
78
+ notifications.push(trimmed);
79
+ }
80
+ else {
81
+ notifications.push(trimmed);
82
+ }
83
+ }
84
+ return notifications;
85
+ };
86
+ const pfsenseInterpreter = (input) => {
87
+ if (typeof input === 'string') {
88
+ const priority = mapKeywordsToPriority(input);
89
+ const emojiTag = mapPriorityToEmojiTag(priority);
90
+ return {
91
+ notification: {
92
+ title: 'pfSense',
93
+ body: input,
94
+ priority,
95
+ tags: [
96
+ 'pfsense',
97
+ ...extractContentTags(input),
98
+ emojiTag,
99
+ ],
100
+ markdown: true,
101
+ },
102
+ };
103
+ }
104
+ if (input instanceof ArrayBuffer) {
105
+ const decoder = new TextDecoder('utf-8');
106
+ const body = decoder.decode(input);
107
+ const priority = mapKeywordsToPriority(body);
108
+ const emojiTag = mapPriorityToEmojiTag(priority);
109
+ return {
110
+ notification: {
111
+ title: 'pfSense',
112
+ body,
113
+ priority,
114
+ tags: [
115
+ 'pfsense',
116
+ ...extractContentTags(body),
117
+ emojiTag,
118
+ ],
119
+ markdown: true,
120
+ },
121
+ };
122
+ }
123
+ const data = input;
124
+ const rawSubject = data['subject'];
125
+ const subject = (typeof rawSubject === 'string') ? rawSubject : '';
126
+ const rawTextBody = data['textBody'];
127
+ const textBody = (typeof rawTextBody === 'string') ? rawTextBody : JSON.stringify(data);
128
+ const hostname = (subject.includes(' - Notification') === true) ? subject.replace(' - Notification', '').trim() : 'pfSense';
129
+ const notifications = parseNotifications(textBody);
130
+ const priority = mapKeywordsToPriority(textBody);
131
+ const contentTags = extractContentTags(textBody);
132
+ const emojiTag = mapPriorityToEmojiTag(priority);
133
+ const tags = [
134
+ 'pfsense',
135
+ ...contentTags,
136
+ emojiTag,
137
+ ];
138
+ const body = notifications.join('\n');
139
+ return {
140
+ notification: {
141
+ title: hostname,
142
+ body,
143
+ priority,
144
+ tags,
145
+ markdown: true,
146
+ },
147
+ };
148
+ };
149
+ export { pfsenseInterpreter, };
150
+ //# sourceMappingURL=pfsense.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pfsense.js","sourceRoot":"","sources":["../../../../src/worker/interpreters/pfsense.ts"],"names":[],"mappings":"AA8CA,MAAM,qBAAqB,GAAG,CAAC,IAAwD,EAAyD,EAAE;IAChJ,MAAM,KAAK,GAAwD,IAAI,CAAC,WAAW,EAAE,CAAC;IAEtF,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IACE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI;WAC7B,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,EACzC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IACE,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI;WACnC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI;WACvC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EACrC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IACE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI;WACpC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,EACtC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAcF,MAAM,qBAAqB,GAAG,CAAC,QAAgE,EAAyD,EAAE;IACxJ,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,CAAC,CAAC,CAAC,CAAC;YACP,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,KAAK,CAAC,CAAC,CAAC,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,CAAC,CAAC,CAAC;YACP,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAcF,MAAM,kBAAkB,GAAG,CAAC,IAAqD,EAAsD,EAAE;IACvI,MAAM,KAAK,GAAqD,IAAI,CAAC,WAAW,EAAE,CAAC;IACnF,MAAM,IAAI,GAAoD,EAAE,CAAC;IAEjE,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED,IACE,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI;WAChC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,EACpC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED,IACE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI;WAC/B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI;WAChC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EACjC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED,IACE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI;WAC3B,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,EACtC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAcF,MAAM,kBAAkB,GAAG,CAAC,QAA6D,EAAsD,EAAE;IAC/I,MAAM,KAAK,GAAqD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,aAAa,GAA6D,EAAE,CAAC;IACnF,IAAI,aAAa,GAA6D,KAAK,CAAC;IAEpF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAuD,IAAI,CAAC,IAAI,EAAE,CAAC;QAEhF,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,aAAa,GAAG,IAAI,CAAC;YAErB,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,CAAC,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC;YACjE,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAcF,MAAM,kBAAkB,GAAyC,CAAC,KAAqC,EAAmC,EAAE;IAC1I,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAiD,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAiD,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAE/F,OAAO;YACL,YAAY,EAAE;gBACZ,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,KAAK;gBACX,QAAQ;gBACR,IAAI,EAAE;oBACJ,SAAS;oBACT,GAAG,kBAAkB,CAAC,KAAK,CAAC;oBAC5B,QAAQ;iBACT;gBACD,QAAQ,EAAE,IAAI;aACf;SACF,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,MAAM,OAAO,GAAgD,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QACtF,MAAM,IAAI,GAA6C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAiD,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC3F,MAAM,QAAQ,GAAiD,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAE/F,OAAO;YACL,YAAY,EAAE;gBACZ,KAAK,EAAE,SAAS;gBAChB,IAAI;gBACJ,QAAQ;gBACR,IAAI,EAAE;oBACJ,SAAS;oBACT,GAAG,kBAAkB,CAAC,IAAI,CAAC;oBAC3B,QAAQ;iBACT;gBACD,QAAQ,EAAE,IAAI;aACf;SACF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAA6C,KAAiD,CAAC;IAEzG,MAAM,UAAU,GAAmD,IAAI,CAAC,SAAS,CAAC,CAAC;IACnF,MAAM,OAAO,GAAgD,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhH,MAAM,WAAW,GAAoD,IAAI,CAAC,UAAU,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAiD,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtI,MAAM,QAAQ,GAAiD,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1K,MAAM,aAAa,GAAsD,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAiD,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC/F,MAAM,WAAW,GAAoD,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAQlG,MAAM,QAAQ,GAAiD,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAE/F,MAAM,IAAI,GAA6C;QACrD,SAAS;QACT,GAAG,WAAW;QACd,QAAQ;KACT,CAAC;IAEF,MAAM,IAAI,GAA6C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhF,OAAO;QACL,YAAY,EAAE;YACZ,KAAK,EAAE,QAAQ;YACf,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,QAAQ,EAAE,IAAI;SACf;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EACL,kBAAkB,GACnB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { WorkerInterpretersPlainTextInterpreter } from '../../types/worker/interpreters/plain-text.d.ts';
2
+ declare const plainTextInterpreter: WorkerInterpretersPlainTextInterpreter;
3
+ export { plainTextInterpreter, };
4
+ //# sourceMappingURL=plain-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-text.d.ts","sourceRoot":"","sources":["../../../../src/worker/interpreters/plain-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sCAAsC,EAIvC,MAAM,iDAAiD,CAAC;AAUzD,QAAA,MAAM,oBAAoB,EAAE,sCAgB3B,CAAC;AAEF,OAAO,EACL,oBAAoB,GACrB,CAAC"}
@@ -0,0 +1,18 @@
1
+ const plainTextInterpreter = (input) => {
2
+ let body = undefined;
3
+ if (typeof input === 'string') {
4
+ body = input;
5
+ }
6
+ else if (input instanceof ArrayBuffer) {
7
+ const decoder = new TextDecoder('utf-8');
8
+ body = decoder.decode(input);
9
+ }
10
+ else {
11
+ body = JSON.stringify(input, null, 2);
12
+ }
13
+ return {
14
+ notification: { body },
15
+ };
16
+ };
17
+ export { plainTextInterpreter, };
18
+ //# sourceMappingURL=plain-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-text.js","sourceRoot":"","sources":["../../../../src/worker/interpreters/plain-text.ts"],"names":[],"mappings":"AAgBA,MAAM,oBAAoB,GAA2C,CAAC,KAAuC,EAAqC,EAAE;IAClJ,IAAI,IAAI,GAAwD,SAAS,CAAC;IAE1E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;SAAM,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACxC,MAAM,OAAO,GAA2D,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAEjG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACL,YAAY,EAAE,EAAE,IAAI,EAAE;KACvB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EACL,oBAAoB,GACrB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { WorkerInterpretersSeerrInterpreter } from '../../types/worker/interpreters/seerr.d.ts';
2
+ declare const seerrInterpreter: WorkerInterpretersSeerrInterpreter;
3
+ export { seerrInterpreter, };
4
+ //# sourceMappingURL=seerr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seerr.d.ts","sourceRoot":"","sources":["../../../../src/worker/interpreters/seerr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kCAAkC,EA8CnC,MAAM,4CAA4C,CAAC;AA6GpD,QAAA,MAAM,gBAAgB,EAAE,kCAmJvB,CAAC;AAEF,OAAO,EACL,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1,173 @@
1
+ const mapNotificationTypeToPriority = (notificationType) => {
2
+ switch (notificationType) {
3
+ case 'MEDIA_FAILED': {
4
+ return 4;
5
+ }
6
+ case 'ISSUE_CREATED':
7
+ case 'ISSUE_REOPENED':
8
+ case 'MEDIA_PENDING':
9
+ case 'MEDIA_APPROVED':
10
+ case 'MEDIA_AUTO_APPROVED':
11
+ case 'MEDIA_AUTO_REQUESTED':
12
+ case 'MEDIA_DECLINED':
13
+ case 'ISSUE_COMMENT': {
14
+ return 3;
15
+ }
16
+ case 'MEDIA_AVAILABLE':
17
+ case 'ISSUE_RESOLVED':
18
+ case 'TEST_NOTIFICATION': {
19
+ return 2;
20
+ }
21
+ default: {
22
+ return 3;
23
+ }
24
+ }
25
+ };
26
+ const mapPriorityToEmojiTag = (priority) => {
27
+ switch (priority) {
28
+ case 5: {
29
+ return 'rotating_light';
30
+ }
31
+ case 4: {
32
+ return 'warning';
33
+ }
34
+ case 2: {
35
+ return 'white_check_mark';
36
+ }
37
+ default: {
38
+ return 'movie_camera';
39
+ }
40
+ }
41
+ };
42
+ const validateUrl = (rawUrl) => {
43
+ try {
44
+ const url = new URL(rawUrl);
45
+ return url.href;
46
+ }
47
+ catch {
48
+ return undefined;
49
+ }
50
+ };
51
+ const seerrInterpreter = (input) => {
52
+ let parsed = undefined;
53
+ if (typeof input === 'string') {
54
+ try {
55
+ parsed = JSON.parse(input);
56
+ }
57
+ catch {
58
+ return {
59
+ notification: {
60
+ title: '[Seerr] Notification',
61
+ body: input,
62
+ priority: 3,
63
+ tags: [
64
+ 'seerr',
65
+ 'movie_camera',
66
+ ],
67
+ markdown: true,
68
+ },
69
+ };
70
+ }
71
+ }
72
+ else if (input instanceof ArrayBuffer) {
73
+ const decoder = new TextDecoder('utf-8');
74
+ const decodedBody = decoder.decode(input);
75
+ try {
76
+ parsed = JSON.parse(decodedBody);
77
+ }
78
+ catch {
79
+ return {
80
+ notification: {
81
+ title: '[Seerr] Notification',
82
+ body: decodedBody,
83
+ priority: 3,
84
+ tags: [
85
+ 'seerr',
86
+ 'movie_camera',
87
+ ],
88
+ markdown: true,
89
+ },
90
+ };
91
+ }
92
+ }
93
+ else {
94
+ parsed = input;
95
+ }
96
+ const data = parsed;
97
+ const notificationType = (typeof data['notification_type'] === 'string') ? data['notification_type'] : 'UNKNOWN';
98
+ const event = (typeof data['event'] === 'string') ? data['event'] : 'Notification';
99
+ const subject = (typeof data['subject'] === 'string') ? data['subject'] : '';
100
+ const message = (typeof data['message'] === 'string') ? data['message'] : '';
101
+ const image = (typeof data['image'] === 'string') ? data['image'] : undefined;
102
+ const rawMediaDefault = {};
103
+ const media = (data['media'] !== undefined) ? data['media'] : rawMediaDefault;
104
+ const mediaType = (typeof media['media_type'] === 'string') ? media['media_type'] : '';
105
+ const tmdbId = (typeof media['tmdbId'] === 'string') ? media['tmdbId'] : '';
106
+ const mediaStatus = (typeof media['status'] === 'string') ? media['status'] : '';
107
+ const rawRequestDefault = {};
108
+ const request = (data['request'] !== undefined) ? data['request'] : rawRequestDefault;
109
+ const requestedByUsername = (typeof request['requestedBy_username'] === 'string') ? request['requestedBy_username'] : '';
110
+ const rawIssueDefault = {};
111
+ const issue = (data['issue'] !== undefined) ? data['issue'] : rawIssueDefault;
112
+ const issueType = (typeof issue['issue_type'] === 'string') ? issue['issue_type'] : '';
113
+ const reportedByUsername = (typeof issue['reportedBy_username'] === 'string') ? issue['reportedBy_username'] : '';
114
+ const rawCommentDefault = {};
115
+ const comment = (data['comment'] !== undefined) ? data['comment'] : rawCommentDefault;
116
+ const commentMessage = (typeof comment['comment_message'] === 'string') ? comment['comment_message'] : '';
117
+ const commentedByUsername = (typeof comment['commentedBy_username'] === 'string') ? comment['commentedBy_username'] : '';
118
+ const title = `[Seerr] ${event}`;
119
+ const bodyLines = [];
120
+ if (subject !== '') {
121
+ bodyLines.push(`**${subject}**`);
122
+ }
123
+ if (message !== '') {
124
+ bodyLines.push(message);
125
+ }
126
+ if (mediaType !== '' || mediaStatus !== '') {
127
+ bodyLines.push(`**Type:** ${mediaType} | **Status:** ${mediaStatus}`);
128
+ }
129
+ if (requestedByUsername !== '') {
130
+ bodyLines.push(`**Requested by:** ${requestedByUsername}`);
131
+ }
132
+ if (reportedByUsername !== '' || issueType !== '') {
133
+ bodyLines.push(`**Reported by:** ${reportedByUsername} | **Type:** ${issueType}`);
134
+ }
135
+ if (commentedByUsername !== '' && commentMessage !== '') {
136
+ bodyLines.push(`**Comment by:** ${commentedByUsername}: ${commentMessage}`);
137
+ }
138
+ const body = bodyLines.join('\n');
139
+ const priority = mapNotificationTypeToPriority(notificationType);
140
+ const emojiTag = mapPriorityToEmojiTag(priority);
141
+ const tags = [
142
+ 'seerr',
143
+ emojiTag,
144
+ ];
145
+ const tmdbUrl = (tmdbId !== '' && mediaType !== '') ? `https://www.themoviedb.org/${mediaType}/${tmdbId}` : undefined;
146
+ const rawProxyConfigDefault = {};
147
+ const proxyConfig = (typeof data['ntfy-reverse-proxy'] === 'object' && data['ntfy-reverse-proxy'] !== null) ? data['ntfy-reverse-proxy'] : rawProxyConfigDefault;
148
+ const rawSeerrUrl = proxyConfig['url'];
149
+ let seerrUrl = undefined;
150
+ if (typeof rawSeerrUrl === 'string') {
151
+ seerrUrl = validateUrl(rawSeerrUrl);
152
+ }
153
+ const actions = [];
154
+ if (tmdbUrl !== undefined) {
155
+ actions.push(`view, View on TMDB, ${tmdbUrl}`);
156
+ }
157
+ if (seerrUrl !== undefined) {
158
+ actions.push(`view, Open Seerr, ${seerrUrl}`);
159
+ }
160
+ return {
161
+ notification: {
162
+ title,
163
+ body,
164
+ priority,
165
+ tags,
166
+ markdown: true,
167
+ ...(image !== undefined ? { icon: image } : {}),
168
+ ...(actions.length > 0 ? { actions: actions.join('; ') } : {}),
169
+ },
170
+ };
171
+ };
172
+ export { seerrInterpreter, };
173
+ //# sourceMappingURL=seerr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seerr.js","sourceRoot":"","sources":["../../../../src/worker/interpreters/seerr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { WorkerInterpretersStatuspageInterpreter } from '../../types/worker/interpreters/statuspage.d.ts';
2
+ declare const statuspageInterpreter: WorkerInterpretersStatuspageInterpreter;
3
+ export { statuspageInterpreter, };
4
+ //# sourceMappingURL=statuspage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statuspage.d.ts","sourceRoot":"","sources":["../../../../src/worker/interpreters/statuspage.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EA+BV,uCAAuC,EA8DxC,MAAM,iDAAiD,CAAC;AAkNzD,QAAA,MAAM,qBAAqB,EAAE,uCAyJ5B,CAAC;AAEF,OAAO,EACL,qBAAqB,GACtB,CAAC"}