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.
- package/README.md +48 -0
- package/build/src/cli/commands/config-io.d.ts +5 -0
- package/build/src/cli/commands/config-io.d.ts.map +1 -0
- package/build/src/cli/commands/config-io.js +19 -0
- package/build/src/cli/commands/config-io.js.map +1 -0
- package/build/src/cli/commands/context.d.ts +9 -0
- package/build/src/cli/commands/context.d.ts.map +1 -0
- package/build/src/cli/commands/context.js +108 -0
- package/build/src/cli/commands/context.js.map +1 -0
- package/build/src/cli/commands/deploy.d.ts +4 -0
- package/build/src/cli/commands/deploy.d.ts.map +1 -0
- package/build/src/cli/commands/deploy.js +496 -0
- package/build/src/cli/commands/deploy.js.map +1 -0
- package/build/src/cli/commands/generate.d.ts +4 -0
- package/build/src/cli/commands/generate.d.ts.map +1 -0
- package/build/src/cli/commands/generate.js +68 -0
- package/build/src/cli/commands/generate.js.map +1 -0
- package/build/src/cli/commands/server.d.ts +7 -0
- package/build/src/cli/commands/server.d.ts.map +1 -0
- package/build/src/cli/commands/server.js +43 -0
- package/build/src/cli/commands/server.js.map +1 -0
- package/build/src/cli/commands/settings.d.ts +5 -0
- package/build/src/cli/commands/settings.d.ts.map +1 -0
- package/build/src/cli/commands/settings.js +16 -0
- package/build/src/cli/commands/settings.js.map +1 -0
- package/build/src/cli/commands/validate.d.ts +4 -0
- package/build/src/cli/commands/validate.d.ts.map +1 -0
- package/build/src/cli/commands/validate.js +45 -0
- package/build/src/cli/commands/validate.js.map +1 -0
- package/build/src/cli/index.d.ts +5 -0
- package/build/src/cli/index.d.ts.map +1 -0
- package/build/src/cli/index.js +118 -0
- package/build/src/cli/index.js.map +1 -0
- package/build/src/cli/menu/interactive.d.ts +4 -0
- package/build/src/cli/menu/interactive.d.ts.map +1 -0
- package/build/src/cli/menu/interactive.js +902 -0
- package/build/src/cli/menu/interactive.js.map +1 -0
- package/build/src/lib/item.d.ts +3 -0
- package/build/src/lib/item.d.ts.map +1 -0
- package/build/src/lib/item.js +3 -0
- package/build/src/lib/item.js.map +1 -0
- package/build/src/lib/regex.d.ts +30 -0
- package/build/src/lib/regex.d.ts.map +1 -0
- package/build/src/lib/regex.js +30 -0
- package/build/src/lib/regex.js.map +1 -0
- package/build/src/lib/schema.d.ts +167 -0
- package/build/src/lib/schema.d.ts.map +1 -0
- package/build/src/lib/schema.js +70 -0
- package/build/src/lib/schema.js.map +1 -0
- package/build/src/lib/utility.d.ts +4 -0
- package/build/src/lib/utility.d.ts.map +1 -0
- package/build/src/lib/utility.js +14 -0
- package/build/src/lib/utility.js.map +1 -0
- package/build/src/types/cli/commands/config-io.d.ts +38 -0
- package/build/src/types/cli/commands/context.d.ts +131 -0
- package/build/src/types/cli/commands/deploy.d.ts +622 -0
- package/build/src/types/cli/commands/generate.d.ts +51 -0
- package/build/src/types/cli/commands/server.d.ts +65 -0
- package/build/src/types/cli/commands/settings.d.ts +25 -0
- package/build/src/types/cli/commands/validate.d.ts +37 -0
- package/build/src/types/cli/index.d.ts +55 -0
- package/build/src/types/cli/menu/interactive.d.ts +381 -0
- package/build/src/types/fetch-response.d.ts +11 -0
- package/build/src/types/lib/schema.d.ts +134 -0
- package/build/src/types/lib/utility.d.ts +8 -0
- package/build/src/types/tests/cli/commands/context.test.d.ts +57 -0
- package/build/src/types/tests/cli/commands/generate.test.d.ts +12 -0
- package/build/src/types/tests/cli/commands/server.test.d.ts +45 -0
- package/build/src/types/tests/cli/commands/settings.test.d.ts +40 -0
- package/build/src/types/tests/cli/commands/validate.test.d.ts +19 -0
- package/build/src/types/tests/cli/menu/interactive.test.d.ts +6 -0
- package/build/src/types/tests/lib/schema.test.d.ts +10 -0
- package/build/src/types/tests/type-declarations.test.d.ts +173 -0
- package/build/src/types/tests/worker/index.test.d.ts +20 -0
- package/build/src/types/tests/worker/interpreters/ntfy-json.test.d.ts +19 -0
- package/build/src/types/tests/worker/interpreters/pfsense.test.d.ts +10 -0
- package/build/src/types/tests/worker/interpreters/plain-text.test.d.ts +10 -0
- package/build/src/types/tests/worker/interpreters/seerr.test.d.ts +8 -0
- package/build/src/types/tests/worker/interpreters/statuspage.test.d.ts +58 -0
- package/build/src/types/tests/worker/interpreters/synology.test.d.ts +8 -0
- package/build/src/types/tests/worker/interpreters/unifi.test.d.ts +8 -0
- package/build/src/types/tests/worker/landing/page.test.d.ts +55 -0
- package/build/src/types/tests/worker/pipeline/accumulate.test.d.ts +28 -0
- package/build/src/types/tests/worker/pipeline/authenticate.test.d.ts +9 -0
- package/build/src/types/tests/worker/pipeline/email.test.d.ts +15 -0
- package/build/src/types/tests/worker/pipeline/format.test.d.ts +38 -0
- package/build/src/types/tests/worker/pipeline/interpret.test.d.ts +43 -0
- package/build/src/types/tests/worker/pipeline/parse.test.d.ts +17 -0
- package/build/src/types/tests/worker/pipeline/receive.test.d.ts +23 -0
- package/build/src/types/tests/worker/pipeline/respond.test.d.ts +20 -0
- package/build/src/types/tests/worker/pipeline/route.test.d.ts +80 -0
- package/build/src/types/tests/worker/pipeline/send.test.d.ts +37 -0
- package/build/src/types/tests/worker/pipeline/split.test.d.ts +17 -0
- package/build/src/types/worker/index.d.ts +232 -0
- package/build/src/types/worker/interpreters/ntfy-json.d.ts +28 -0
- package/build/src/types/worker/interpreters/pfsense.d.ts +97 -0
- package/build/src/types/worker/interpreters/plain-text.d.ts +24 -0
- package/build/src/types/worker/interpreters/seerr.d.ts +124 -0
- package/build/src/types/worker/interpreters/statuspage.d.ts +239 -0
- package/build/src/types/worker/interpreters/synology.d.ts +99 -0
- package/build/src/types/worker/interpreters/unifi.d.ts +111 -0
- package/build/src/types/worker/landing/page.d.ts +44 -0
- package/build/src/types/worker/pipeline/accumulate.d.ts +79 -0
- package/build/src/types/worker/pipeline/authenticate.d.ts +68 -0
- package/build/src/types/worker/pipeline/email.d.ts +108 -0
- package/build/src/types/worker/pipeline/format.d.ts +47 -0
- package/build/src/types/worker/pipeline/interpret.d.ts +63 -0
- package/build/src/types/worker/pipeline/parse.d.ts +39 -0
- package/build/src/types/worker/pipeline/receive.d.ts +64 -0
- package/build/src/types/worker/pipeline/respond.d.ts +113 -0
- package/build/src/types/worker/pipeline/route.d.ts +34 -0
- package/build/src/types/worker/pipeline/send.d.ts +143 -0
- package/build/src/types/worker/pipeline/shared.d.ts +85 -0
- package/build/src/types/worker/pipeline/split.d.ts +35 -0
- package/build/src/worker/handlers.d.ts +5 -0
- package/build/src/worker/handlers.d.ts.map +1 -0
- package/build/src/worker/handlers.js +360 -0
- package/build/src/worker/handlers.js.map +1 -0
- package/build/src/worker/index.d.ts +4 -0
- package/build/src/worker/index.d.ts.map +1 -0
- package/build/src/worker/index.js +52 -0
- package/build/src/worker/index.js.map +1 -0
- package/build/src/worker/interpreters/ntfy-json.d.ts +4 -0
- package/build/src/worker/interpreters/ntfy-json.d.ts.map +1 -0
- package/build/src/worker/interpreters/ntfy-json.js +49 -0
- package/build/src/worker/interpreters/ntfy-json.js.map +1 -0
- package/build/src/worker/interpreters/pfsense.d.ts +4 -0
- package/build/src/worker/interpreters/pfsense.d.ts.map +1 -0
- package/build/src/worker/interpreters/pfsense.js +150 -0
- package/build/src/worker/interpreters/pfsense.js.map +1 -0
- package/build/src/worker/interpreters/plain-text.d.ts +4 -0
- package/build/src/worker/interpreters/plain-text.d.ts.map +1 -0
- package/build/src/worker/interpreters/plain-text.js +18 -0
- package/build/src/worker/interpreters/plain-text.js.map +1 -0
- package/build/src/worker/interpreters/seerr.d.ts +4 -0
- package/build/src/worker/interpreters/seerr.d.ts.map +1 -0
- package/build/src/worker/interpreters/seerr.js +173 -0
- package/build/src/worker/interpreters/seerr.js.map +1 -0
- package/build/src/worker/interpreters/statuspage.d.ts +4 -0
- package/build/src/worker/interpreters/statuspage.d.ts.map +1 -0
- package/build/src/worker/interpreters/statuspage.js +266 -0
- package/build/src/worker/interpreters/statuspage.js.map +1 -0
- package/build/src/worker/interpreters/synology.d.ts +4 -0
- package/build/src/worker/interpreters/synology.d.ts.map +1 -0
- package/build/src/worker/interpreters/synology.js +177 -0
- package/build/src/worker/interpreters/synology.js.map +1 -0
- package/build/src/worker/interpreters/unifi.d.ts +4 -0
- package/build/src/worker/interpreters/unifi.d.ts.map +1 -0
- package/build/src/worker/interpreters/unifi.js +152 -0
- package/build/src/worker/interpreters/unifi.js.map +1 -0
- package/build/src/worker/landing/page.d.ts +4 -0
- package/build/src/worker/landing/page.d.ts.map +1 -0
- package/build/src/worker/landing/page.js +260 -0
- package/build/src/worker/landing/page.js.map +1 -0
- package/build/src/worker/pipeline/accumulate.d.ts +7 -0
- package/build/src/worker/pipeline/accumulate.d.ts.map +1 -0
- package/build/src/worker/pipeline/accumulate.js +53 -0
- package/build/src/worker/pipeline/accumulate.js.map +1 -0
- package/build/src/worker/pipeline/authenticate.d.ts +4 -0
- package/build/src/worker/pipeline/authenticate.d.ts.map +1 -0
- package/build/src/worker/pipeline/authenticate.js +53 -0
- package/build/src/worker/pipeline/authenticate.js.map +1 -0
- package/build/src/worker/pipeline/email.d.ts +4 -0
- package/build/src/worker/pipeline/email.d.ts.map +1 -0
- package/build/src/worker/pipeline/email.js +149 -0
- package/build/src/worker/pipeline/email.js.map +1 -0
- package/build/src/worker/pipeline/format.d.ts +5 -0
- package/build/src/worker/pipeline/format.d.ts.map +1 -0
- package/build/src/worker/pipeline/format.js +48 -0
- package/build/src/worker/pipeline/format.js.map +1 -0
- package/build/src/worker/pipeline/interpret.d.ts +4 -0
- package/build/src/worker/pipeline/interpret.d.ts.map +1 -0
- package/build/src/worker/pipeline/interpret.js +30 -0
- package/build/src/worker/pipeline/interpret.js.map +1 -0
- package/build/src/worker/pipeline/parse.d.ts +4 -0
- package/build/src/worker/pipeline/parse.d.ts.map +1 -0
- package/build/src/worker/pipeline/parse.js +59 -0
- package/build/src/worker/pipeline/parse.js.map +1 -0
- package/build/src/worker/pipeline/receive.d.ts +4 -0
- package/build/src/worker/pipeline/receive.d.ts.map +1 -0
- package/build/src/worker/pipeline/receive.js +52 -0
- package/build/src/worker/pipeline/receive.js.map +1 -0
- package/build/src/worker/pipeline/respond.d.ts +4 -0
- package/build/src/worker/pipeline/respond.d.ts.map +1 -0
- package/build/src/worker/pipeline/respond.js +48 -0
- package/build/src/worker/pipeline/respond.js.map +1 -0
- package/build/src/worker/pipeline/route.d.ts +5 -0
- package/build/src/worker/pipeline/route.d.ts.map +1 -0
- package/build/src/worker/pipeline/route.js +23 -0
- package/build/src/worker/pipeline/route.js.map +1 -0
- package/build/src/worker/pipeline/send.d.ts +4 -0
- package/build/src/worker/pipeline/send.d.ts.map +1 -0
- package/build/src/worker/pipeline/send.js +156 -0
- package/build/src/worker/pipeline/send.js.map +1 -0
- package/build/src/worker/pipeline/split.d.ts +4 -0
- package/build/src/worker/pipeline/split.d.ts.map +1 -0
- package/build/src/worker/pipeline/split.js +40 -0
- package/build/src/worker/pipeline/split.js.map +1 -0
- package/package.json +95 -2
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
function format(notification, options) {
|
|
2
|
+
let body = notification['body'];
|
|
3
|
+
if (options['showVisitorInfo'] === true && options['cfProperties'] !== undefined) {
|
|
4
|
+
const cf = options['cfProperties'];
|
|
5
|
+
const ip = options['visitorIp'] ?? 'unknown';
|
|
6
|
+
const separator = (notification['markdown'] === true) ? '\n\n---\n\n' : '\n\n';
|
|
7
|
+
const isMarkdown = notification['markdown'] === true;
|
|
8
|
+
const bold = (text) => (isMarkdown === true) ? `**${text}**` : text;
|
|
9
|
+
const lines = [
|
|
10
|
+
bold('« Incoming Request Details »'),
|
|
11
|
+
`${bold('IP address')}: ${ip}`,
|
|
12
|
+
`${bold('Location')}: ${cf['region'] ?? 'Unknown'} (country: ${cf['country'] ?? 'Unknown'}, colo: ${cf['colo'] ?? 'Unknown'})`,
|
|
13
|
+
`${bold('Coordinates')}: ${cf['latitude'] ?? 'Unknown'}, ${cf['longitude'] ?? 'Unknown'}`,
|
|
14
|
+
`${bold('Provider')}: ${cf['asOrganization'] ?? 'Unknown'} (asn: ${String(cf['asn'] ?? 'Unknown')})`,
|
|
15
|
+
];
|
|
16
|
+
body = `${body}${separator}${lines.join('\n')}`;
|
|
17
|
+
}
|
|
18
|
+
const headers = {};
|
|
19
|
+
if (notification['title'] !== undefined) {
|
|
20
|
+
Reflect.set(headers, 'X-Title', notification['title']);
|
|
21
|
+
}
|
|
22
|
+
if (notification['priority'] !== undefined) {
|
|
23
|
+
Reflect.set(headers, 'X-Priority', String(notification['priority']));
|
|
24
|
+
}
|
|
25
|
+
if (notification['tags'] !== undefined) {
|
|
26
|
+
Reflect.set(headers, 'X-Tags', notification['tags'].join(','));
|
|
27
|
+
}
|
|
28
|
+
if (notification['markdown'] !== undefined) {
|
|
29
|
+
Reflect.set(headers, 'X-Markdown', String(notification['markdown']));
|
|
30
|
+
}
|
|
31
|
+
if (notification['icon'] !== undefined) {
|
|
32
|
+
Reflect.set(headers, 'X-Icon', notification['icon']);
|
|
33
|
+
}
|
|
34
|
+
if (notification['actions'] !== undefined) {
|
|
35
|
+
Reflect.set(headers, 'X-Actions', notification['actions']);
|
|
36
|
+
}
|
|
37
|
+
if (notification['attach'] !== undefined) {
|
|
38
|
+
Reflect.set(headers, 'X-Attach', notification['attach']);
|
|
39
|
+
}
|
|
40
|
+
if (notification['filename'] !== undefined) {
|
|
41
|
+
Reflect.set(headers, 'X-Filename', notification['filename']);
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
body, headers,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export { format, };
|
|
48
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../src/worker/pipeline/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WorkerPipelineInterpretContext, WorkerPipelineInterpretInput, WorkerPipelineInterpretInterpreterName, WorkerPipelineInterpretReturns } from '../../types/worker/pipeline/interpret.d.ts';
|
|
2
|
+
declare function interpret(interpreterName: WorkerPipelineInterpretInterpreterName, input: WorkerPipelineInterpretInput, context?: WorkerPipelineInterpretContext): WorkerPipelineInterpretReturns;
|
|
3
|
+
export { interpret, };
|
|
4
|
+
//# sourceMappingURL=interpret.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpret.d.ts","sourceRoot":"","sources":["../../../../src/worker/pipeline/interpret.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,8BAA8B,EAC9B,4BAA4B,EAE5B,sCAAsC,EAEtC,8BAA8B,EAE/B,MAAM,4CAA4C,CAAC;AA4BpD,iBAAe,SAAS,CAAC,eAAe,EAAE,sCAAsC,EAAE,KAAK,EAAE,4BAA4B,EAAE,OAAO,CAAC,EAAE,8BAA8B,GAAG,8BAA8B,CAc/L;AAED,OAAO,EACL,SAAS,GACV,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { stripHtml } from '../../lib/utility.js';
|
|
2
|
+
import { ntfyJsonInterpreter } from '../interpreters/ntfy-json.js';
|
|
3
|
+
import { pfsenseInterpreter } from '../interpreters/pfsense.js';
|
|
4
|
+
import { plainTextInterpreter } from '../interpreters/plain-text.js';
|
|
5
|
+
import { seerrInterpreter } from '../interpreters/seerr.js';
|
|
6
|
+
import { statuspageInterpreter } from '../interpreters/statuspage.js';
|
|
7
|
+
import { synologyInterpreter } from '../interpreters/synology.js';
|
|
8
|
+
import { unifiInterpreter } from '../interpreters/unifi.js';
|
|
9
|
+
const interpreterMap = {
|
|
10
|
+
'plain-text': plainTextInterpreter,
|
|
11
|
+
'ntfy-json': ntfyJsonInterpreter,
|
|
12
|
+
'seerr': seerrInterpreter,
|
|
13
|
+
'pfsense': pfsenseInterpreter,
|
|
14
|
+
'synology': synologyInterpreter,
|
|
15
|
+
'statuspage': statuspageInterpreter,
|
|
16
|
+
'unifi': unifiInterpreter,
|
|
17
|
+
};
|
|
18
|
+
async function interpret(interpreterName, input, context) {
|
|
19
|
+
const interpreter = interpreterMap[interpreterName];
|
|
20
|
+
if (interpreter === undefined) {
|
|
21
|
+
throw new Error(`Unknown interpreter: ${interpreterName}`);
|
|
22
|
+
}
|
|
23
|
+
const result = await interpreter(input, context);
|
|
24
|
+
if (result !== null) {
|
|
25
|
+
Reflect.set(result['notification'], 'body', stripHtml(result['notification']['body']));
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
export { interpret, };
|
|
30
|
+
//# sourceMappingURL=interpret.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpret.js","sourceRoot":"","sources":["../../../../src/worker/pipeline/interpret.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAoB5D,MAAM,cAAc,GAA0C;IAC5D,YAAY,EAAE,oBAAoB;IAClC,WAAW,EAAE,mBAAmB;IAChC,OAAO,EAAE,gBAAgB;IACzB,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,YAAY,EAAE,qBAAqB;IACnC,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAUF,KAAK,UAAU,SAAS,CAAC,eAAuD,EAAE,KAAmC,EAAE,OAAwC;IAC7J,MAAM,WAAW,GAA+C,cAAc,CAAC,eAAe,CAAC,CAAC;IAEhG,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,eAAe,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAA6C,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE3F,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,OAAO,EACL,SAAS,GACV,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/worker/pipeline/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAUV,yBAAyB,EAE1B,MAAM,wCAAwC,CAAC;AAUhD,iBAAS,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,yBAAyB,CA6EhF;AAED,OAAO,EACL,KAAK,GACN,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
function parse(rawBody, headers) {
|
|
2
|
+
if (rawBody.byteLength === 0) {
|
|
3
|
+
return { type: 'unknown' };
|
|
4
|
+
}
|
|
5
|
+
const contentType = headers.get('content-type') ?? '';
|
|
6
|
+
const contentTypePart = contentType.split(';')[0];
|
|
7
|
+
const baseContentType = (contentTypePart !== undefined) ? contentTypePart.trim() : '';
|
|
8
|
+
const isBinaryContentType = (baseContentType === 'application/octet-stream'
|
|
9
|
+
|| baseContentType.startsWith('image/')
|
|
10
|
+
|| baseContentType.startsWith('audio/')
|
|
11
|
+
|| baseContentType.startsWith('video/'));
|
|
12
|
+
if (isBinaryContentType === true) {
|
|
13
|
+
return {
|
|
14
|
+
type: 'binary', binary: rawBody,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const bytes = new Uint8Array(rawBody);
|
|
18
|
+
for (let i = 0; i < bytes.length; i += 1) {
|
|
19
|
+
if (bytes[i] === 0) {
|
|
20
|
+
return {
|
|
21
|
+
type: 'binary', binary: rawBody,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
let text = undefined;
|
|
26
|
+
try {
|
|
27
|
+
const decoder = new TextDecoder('utf-8', {
|
|
28
|
+
fatal: true, ignoreBOM: false,
|
|
29
|
+
});
|
|
30
|
+
text = decoder.decode(rawBody);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return {
|
|
34
|
+
type: 'binary', binary: rawBody,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (text.includes('\u0000') === true) {
|
|
38
|
+
return {
|
|
39
|
+
type: 'binary', binary: rawBody,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const isJsonContentType = baseContentType === 'application/json';
|
|
43
|
+
const looksLikeJson = text.trimStart().startsWith('{') === true || text.trimStart().startsWith('[') === true;
|
|
44
|
+
if (isJsonContentType === true || looksLikeJson === true) {
|
|
45
|
+
try {
|
|
46
|
+
const json = JSON.parse(text);
|
|
47
|
+
return {
|
|
48
|
+
type: 'json', json,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
type: 'text', text,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export { parse, };
|
|
59
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../src/worker/pipeline/parse.ts"],"names":[],"mappings":"AAsBA,SAAS,KAAK,CAAC,OAAoB,EAAE,OAAgB;IAEnD,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,WAAW,GAAmC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACtF,MAAM,eAAe,GAAuC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,eAAe,GAAuC,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAG1H,MAAM,mBAAmB,GAA2C,CAClE,eAAe,KAAK,0BAA0B;WAC3C,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC;WACpC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC;WACpC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CACxC,CAAC;IAEF,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;QACjC,OAAO;YACL,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;SAChC,CAAC;IACJ,CAAC;IAGD,MAAM,KAAK,GAA6B,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAEhE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO;gBACL,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;aAChC,CAAC;QACJ,CAAC;IACH,CAAC;IAGD,IAAI,IAAI,GAA4B,SAAS,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,OAAO,GAA+B,IAAI,WAAW,CAAC,OAAO,EAAE;YACnE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK;SAC9B,CAAC,CAAC;QAEH,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;SAChC,CAAC;IACJ,CAAC;IAGD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;SAChC,CAAC;IACJ,CAAC;IAGD,MAAM,iBAAiB,GAAyC,eAAe,KAAK,kBAAkB,CAAC;IACvG,MAAM,aAAa,GAAqC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IAE/I,IAAI,iBAAiB,KAAK,IAAI,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEvD,OAAO;gBACL,IAAI,EAAE,MAAM,EAAE,IAAI;aACnB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IAGD,OAAO;QACL,IAAI,EAAE,MAAM,EAAE,IAAI;KACnB,CAAC;AACJ,CAAC;AAED,OAAO,EACL,KAAK,GACN,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WorkerPipelineReceiveBaseDomain, WorkerPipelineReceiveRequest, WorkerPipelineReceiveReturns } from '../../types/worker/pipeline/receive.d.ts';
|
|
2
|
+
declare function receive(request: WorkerPipelineReceiveRequest, baseDomain: WorkerPipelineReceiveBaseDomain): WorkerPipelineReceiveReturns;
|
|
3
|
+
export { receive, };
|
|
4
|
+
//# sourceMappingURL=receive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receive.d.ts","sourceRoot":"","sources":["../../../../src/worker/pipeline/receive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAY/B,4BAA4B,EAC5B,4BAA4B,EAE7B,MAAM,0CAA0C,CAAC;AAUlD,iBAAe,OAAO,CAAC,OAAO,EAAE,4BAA4B,EAAE,UAAU,EAAE,+BAA+B,GAAG,4BAA4B,CA8DvI;AAED,OAAO,EACL,OAAO,GACR,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
async function receive(request, baseDomain) {
|
|
2
|
+
const method = request.method;
|
|
3
|
+
const parsedUrl = new URL(request.url);
|
|
4
|
+
const hostname = parsedUrl.hostname;
|
|
5
|
+
const protocol = parsedUrl.protocol;
|
|
6
|
+
const url = request.url;
|
|
7
|
+
const headers = request.headers;
|
|
8
|
+
const includesBaseDomain = hostname.includes(baseDomain);
|
|
9
|
+
if (protocol === 'http:'
|
|
10
|
+
&& hostname !== 'localhost'
|
|
11
|
+
&& includesBaseDomain === true) {
|
|
12
|
+
const redirect = request.url.replace('http://', 'https://');
|
|
13
|
+
return {
|
|
14
|
+
method,
|
|
15
|
+
hostname,
|
|
16
|
+
url,
|
|
17
|
+
headers,
|
|
18
|
+
rawBody: new ArrayBuffer(0),
|
|
19
|
+
isGet: method === 'GET',
|
|
20
|
+
redirect,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if (method !== 'GET'
|
|
24
|
+
&& method !== 'POST'
|
|
25
|
+
&& method !== 'PUT') {
|
|
26
|
+
return {
|
|
27
|
+
method,
|
|
28
|
+
hostname,
|
|
29
|
+
url,
|
|
30
|
+
headers,
|
|
31
|
+
rawBody: new ArrayBuffer(0),
|
|
32
|
+
isGet: false,
|
|
33
|
+
error: `Method not allowed: ${method}`,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const rawBody = (method === 'POST' || method === 'PUT') ? await request.arrayBuffer() : new ArrayBuffer(0);
|
|
37
|
+
const isGet = method === 'GET';
|
|
38
|
+
const cfRequestUnknown = request;
|
|
39
|
+
const cfRequestRecord = cfRequestUnknown;
|
|
40
|
+
const cfProperties = cfRequestRecord['cf'];
|
|
41
|
+
return {
|
|
42
|
+
method,
|
|
43
|
+
hostname,
|
|
44
|
+
url,
|
|
45
|
+
headers,
|
|
46
|
+
rawBody,
|
|
47
|
+
isGet,
|
|
48
|
+
...(cfProperties !== undefined ? { cfProperties } : {}),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export { receive, };
|
|
52
|
+
//# sourceMappingURL=receive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receive.js","sourceRoot":"","sources":["../../../../src/worker/pipeline/receive.ts"],"names":[],"mappings":"AA0BA,KAAK,UAAU,OAAO,CAAC,OAAqC,EAAE,UAA2C;IACvG,MAAM,MAAM,GAAgC,OAAO,CAAC,MAAM,CAAC;IAC3D,MAAM,SAAS,GAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAkC,SAAS,CAAC,QAAQ,CAAC;IACnE,MAAM,QAAQ,GAAkC,SAAS,CAAC,QAAQ,CAAC;IACnE,MAAM,GAAG,GAA6B,OAAO,CAAC,GAAG,CAAC;IAClD,MAAM,OAAO,GAAiC,OAAO,CAAC,OAAO,CAAC;IAG9D,MAAM,kBAAkB,GAA4C,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAElG,IACE,QAAQ,KAAK,OAAO;WACjB,QAAQ,KAAK,WAAW;WACxB,kBAAkB,KAAK,IAAI,EAC9B,CAAC;QACD,MAAM,QAAQ,GAAkC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE3F,OAAO;YACL,MAAM;YACN,QAAQ;YACR,GAAG;YACH,OAAO;YACP,OAAO,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC;YAC3B,KAAK,EAAE,MAAM,KAAK,KAAK;YACvB,QAAQ;SACT,CAAC;IACJ,CAAC;IAGD,IACE,MAAM,KAAK,KAAK;WACb,MAAM,KAAK,MAAM;WACjB,MAAM,KAAK,KAAK,EACnB,CAAC;QACD,OAAO;YACL,MAAM;YACN,QAAQ;YACR,GAAG;YACH,OAAO;YACP,OAAO,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC;YAC3B,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,uBAAuB,MAAM,EAAE;SACvC,CAAC;IACJ,CAAC;IAGD,MAAM,OAAO,GAAiC,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACzI,MAAM,KAAK,GAA+B,MAAM,KAAK,KAAK,CAAC;IAC3D,MAAM,gBAAgB,GAA0C,OAAO,CAAC;IACxE,MAAM,eAAe,GAAyC,gBAAwD,CAAC;IACvH,MAAM,YAAY,GAAsC,eAAe,CAAC,IAAI,CAAsC,CAAC;IAEnH,OAAO;QACL,MAAM;QACN,QAAQ;QACR,GAAG;QACH,OAAO;QACP,OAAO;QACP,KAAK;QACL,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,OAAO,EACL,OAAO,GACR,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WorkerPipelineRespondOptions, WorkerPipelineRespondReturn, WorkerPipelineRespondSendResult } from '../../types/worker/pipeline/respond.d.ts';
|
|
2
|
+
declare function respond(sendResult: WorkerPipelineRespondSendResult, options: WorkerPipelineRespondOptions): WorkerPipelineRespondReturn;
|
|
3
|
+
export { respond, };
|
|
4
|
+
//# sourceMappingURL=respond.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../../src/worker/pipeline/respond.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAaV,4BAA4B,EAG5B,2BAA2B,EAC3B,+BAA+B,EAGhC,MAAM,0CAA0C,CAAC;AAUlD,iBAAS,OAAO,CAAC,UAAU,EAAE,+BAA+B,EAAE,OAAO,EAAE,4BAA4B,GAAG,2BAA2B,CAwDhI;AAED,OAAO,EACL,OAAO,GACR,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
function respond(sendResult, options) {
|
|
2
|
+
const results = sendResult['results'];
|
|
3
|
+
const fallbackNote = sendResult['fallbackNote'];
|
|
4
|
+
const showResponseOutput = options['showResponseOutput'];
|
|
5
|
+
const contextName = options['contextName'];
|
|
6
|
+
const interpreterName = options['interpreterName'];
|
|
7
|
+
const messageTitle = options['messageTitle'];
|
|
8
|
+
const bodySize = options['bodySize'];
|
|
9
|
+
const parts = options['parts'];
|
|
10
|
+
const hasAttachment = options['hasAttachment'];
|
|
11
|
+
const anySuccess = results.some((result) => result['success'] === true);
|
|
12
|
+
const allSuccess = results.every((result) => result['success'] === true);
|
|
13
|
+
const partialStatus = (anySuccess === true) ? 'partial' : 'failed';
|
|
14
|
+
const status = (allSuccess === true) ? 'success' : partialStatus;
|
|
15
|
+
const httpStatus = (anySuccess === true) ? 200 : 502;
|
|
16
|
+
const body = {
|
|
17
|
+
status,
|
|
18
|
+
};
|
|
19
|
+
if (fallbackNote !== undefined) {
|
|
20
|
+
Reflect.set(body, 'fallback_note', fallbackNote);
|
|
21
|
+
}
|
|
22
|
+
if (showResponseOutput === true) {
|
|
23
|
+
Reflect.set(body, 'context', contextName);
|
|
24
|
+
Reflect.set(body, 'interpreter', interpreterName);
|
|
25
|
+
const servers = results.map((result) => ({
|
|
26
|
+
name: result['name'],
|
|
27
|
+
status: result['status'],
|
|
28
|
+
success: result['success'],
|
|
29
|
+
stages: result['stages'],
|
|
30
|
+
}));
|
|
31
|
+
Reflect.set(body, 'servers', servers);
|
|
32
|
+
const message = {
|
|
33
|
+
title: messageTitle,
|
|
34
|
+
body_size: bodySize,
|
|
35
|
+
parts,
|
|
36
|
+
has_attachment: hasAttachment,
|
|
37
|
+
};
|
|
38
|
+
Reflect.set(body, 'message', message);
|
|
39
|
+
}
|
|
40
|
+
return new Response(JSON.stringify(body, null, 2), {
|
|
41
|
+
status: httpStatus,
|
|
42
|
+
headers: {
|
|
43
|
+
'Content-Type': 'application/json',
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
export { respond, };
|
|
48
|
+
//# sourceMappingURL=respond.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"respond.js","sourceRoot":"","sources":["../../../../src/worker/pipeline/respond.ts"],"names":[],"mappings":"AA8BA,SAAS,OAAO,CAAC,UAA2C,EAAE,OAAqC;IACjG,MAAM,OAAO,GAAiC,UAAU,CAAC,SAAS,CAAC,CAAC;IACpE,MAAM,YAAY,GAAsC,UAAU,CAAC,cAAc,CAAC,CAAC;IACnF,MAAM,kBAAkB,GAA4C,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClG,MAAM,WAAW,GAAqC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAyC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzF,MAAM,YAAY,GAAsC,OAAO,CAAC,cAAc,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAkC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,KAAK,GAA+B,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAuC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEnF,MAAM,UAAU,GAAoC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;IACzG,MAAM,UAAU,GAAoC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;IAE1G,MAAM,aAAa,GAAgC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChG,MAAM,MAAM,GAAgC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;IAE9F,MAAM,UAAU,GAAoC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAEtF,MAAM,IAAI,GAA8B;QACtC,MAAM;KACP,CAAC;IAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAElD,MAAM,OAAO,GAAqC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACzE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;YACxB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;YAC1B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;SACzB,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAqC;YAChD,KAAK,EAAE,YAAY;YACnB,SAAS,EAAE,QAAQ;YACnB,KAAK;YACL,cAAc,EAAE,aAAa;SAC9B,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACjD,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EACL,OAAO,GACR,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { LibSchemaConfigSchema } from '../../types/lib/schema.d.ts';
|
|
2
|
+
import type { WorkerPipelineRouteIdentifier, WorkerPipelineRouteResult, WorkerPipelineRouteType } from '../../types/worker/pipeline/route.d.ts';
|
|
3
|
+
declare function route(routeType: WorkerPipelineRouteType, identifier: WorkerPipelineRouteIdentifier, config: LibSchemaConfigSchema): WorkerPipelineRouteResult;
|
|
4
|
+
export { route, };
|
|
5
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/worker/pipeline/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAyB,MAAM,6BAA6B,CAAC;AAChG,OAAO,KAAK,EAEV,6BAA6B,EAG7B,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,wCAAwC,CAAC;AAUhD,iBAAS,KAAK,CAAC,SAAS,EAAE,uBAAuB,EAAE,UAAU,EAAE,6BAA6B,EAAE,MAAM,EAAE,qBAAqB,GAAG,yBAAyB,CA0BtJ;AAED,OAAO,EACL,KAAK,GACN,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
function route(routeType, identifier, config) {
|
|
2
|
+
const context = config['contexts'].find((ctx) => ctx['type'] === routeType && ctx['id'] === identifier);
|
|
3
|
+
if (context === undefined) {
|
|
4
|
+
return {
|
|
5
|
+
context: undefined,
|
|
6
|
+
resolvedServers: undefined,
|
|
7
|
+
primaryServer: undefined,
|
|
8
|
+
error: `No context found for ${routeType} identifier: ${identifier}`,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
const resolvedServers = context['servers']
|
|
12
|
+
.map((serverName) => config['servers'].find((server) => server['name'] === serverName))
|
|
13
|
+
.filter((server) => server !== undefined);
|
|
14
|
+
const primaryServer = config['servers'].find((server) => server['name'] === context['primary_server']);
|
|
15
|
+
return {
|
|
16
|
+
context,
|
|
17
|
+
resolvedServers,
|
|
18
|
+
primaryServer,
|
|
19
|
+
error: undefined,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export { route, };
|
|
23
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../src/worker/pipeline/route.ts"],"names":[],"mappings":"AAkBA,SAAS,KAAK,CAAC,SAAkC,EAAE,UAAyC,EAAE,MAA6B;IACzH,MAAM,OAAO,GAA+B,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC;IAEpI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,eAAe,EAAE,SAAS;YAC1B,aAAa,EAAE,SAAS;YACxB,KAAK,EAAE,wBAAwB,SAAS,gBAAgB,UAAU,EAAE;SACrE,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAuC,OAAO,CAAC,SAAS,CAAC;SAC3E,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;SACtF,MAAM,CAAC,CAAC,MAAM,EAAmC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAE7E,MAAM,aAAa,GAAqC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAC5E,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,gBAAgB,CAAC,CACzD,CAAC;IAEF,OAAO;QACL,OAAO;QACP,eAAe;QACf,aAAa;QACb,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AAED,OAAO,EACL,KAAK,GACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../src/worker/pipeline/send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAcV,yBAAyB,EAOzB,yBAAyB,EAkB1B,MAAM,uCAAuC,CAAC;AA0J/C,iBAAe,IAAI,CAAC,OAAO,EAAE,yBAAyB,GAAG,yBAAyB,CA+DjF;AAED,OAAO,EACL,IAAI,GACL,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
async function sendToServer(server, messages, topic, visitorIp, attachment, filename, attachmentHeaders) {
|
|
2
|
+
const stages = [];
|
|
3
|
+
const url = `${server['server']}/${topic}`;
|
|
4
|
+
let lastStatus = 0;
|
|
5
|
+
const totalParts = messages.length;
|
|
6
|
+
let partIndex = 0;
|
|
7
|
+
for (const message of messages) {
|
|
8
|
+
const partLabel = (totalParts > 1) ? `stage-1 (${String(partIndex + 1)}/${String(totalParts)})` : 'stage-1';
|
|
9
|
+
const headers = {
|
|
10
|
+
...message['headers'],
|
|
11
|
+
Authorization: `Bearer ${server['token']}`,
|
|
12
|
+
};
|
|
13
|
+
if (visitorIp !== undefined) {
|
|
14
|
+
Reflect.set(headers, 'X-Forwarded-For', visitorIp);
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const response = await fetch(url, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
headers,
|
|
20
|
+
body: message['body'],
|
|
21
|
+
});
|
|
22
|
+
lastStatus = response.status;
|
|
23
|
+
if (response.ok === false) {
|
|
24
|
+
const stage = `${partLabel}: failed (HTTP ${String(response.status)})`;
|
|
25
|
+
stages.push(stage);
|
|
26
|
+
return {
|
|
27
|
+
name: server['name'],
|
|
28
|
+
success: false,
|
|
29
|
+
status: response.status,
|
|
30
|
+
stages,
|
|
31
|
+
error: `HTTP ${String(response.status)}`,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const okStage = `${partLabel}: ok`;
|
|
35
|
+
stages.push(okStage);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
const errorMessage = (err instanceof Error) ? err.message : 'Unknown error';
|
|
39
|
+
const stage = `${partLabel}: failed (${errorMessage})`;
|
|
40
|
+
stages.push(stage);
|
|
41
|
+
return {
|
|
42
|
+
name: server['name'],
|
|
43
|
+
success: false,
|
|
44
|
+
status: 0,
|
|
45
|
+
stages,
|
|
46
|
+
error: errorMessage,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
partIndex += 1;
|
|
50
|
+
}
|
|
51
|
+
if (attachment !== undefined) {
|
|
52
|
+
const headers = {
|
|
53
|
+
Authorization: `Bearer ${server['token']}`,
|
|
54
|
+
...attachmentHeaders,
|
|
55
|
+
};
|
|
56
|
+
if (visitorIp !== undefined) {
|
|
57
|
+
Reflect.set(headers, 'X-Forwarded-For', visitorIp);
|
|
58
|
+
}
|
|
59
|
+
if (filename !== undefined) {
|
|
60
|
+
Reflect.set(headers, 'X-Filename', filename);
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const response = await fetch(url, {
|
|
64
|
+
method: 'PUT',
|
|
65
|
+
headers,
|
|
66
|
+
body: attachment,
|
|
67
|
+
});
|
|
68
|
+
lastStatus = response.status;
|
|
69
|
+
if (response.ok === false) {
|
|
70
|
+
const stage = `stage-2: failed (HTTP ${String(response.status)})`;
|
|
71
|
+
stages.push(stage);
|
|
72
|
+
return {
|
|
73
|
+
name: server['name'],
|
|
74
|
+
success: false,
|
|
75
|
+
status: response.status,
|
|
76
|
+
stages,
|
|
77
|
+
error: `HTTP ${String(response.status)}`,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const okStage = 'stage-2: ok';
|
|
81
|
+
stages.push(okStage);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
const errorMessage = (err instanceof Error) ? err.message : 'Unknown error';
|
|
85
|
+
const stage = `stage-2: failed (${errorMessage})`;
|
|
86
|
+
stages.push(stage);
|
|
87
|
+
return {
|
|
88
|
+
name: server['name'],
|
|
89
|
+
success: false,
|
|
90
|
+
status: 0,
|
|
91
|
+
stages,
|
|
92
|
+
error: errorMessage,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
name: server['name'],
|
|
98
|
+
success: true,
|
|
99
|
+
status: lastStatus,
|
|
100
|
+
stages,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
async function send(options) {
|
|
104
|
+
const messages = options['messages'];
|
|
105
|
+
const servers = options['servers'];
|
|
106
|
+
const primaryServer = options['primaryServer'];
|
|
107
|
+
const topic = options['topic'];
|
|
108
|
+
const mode = options['mode'];
|
|
109
|
+
const visitorIp = options['visitorIp'];
|
|
110
|
+
const attachment = options['attachment'];
|
|
111
|
+
const filename = options['filename'];
|
|
112
|
+
const attachmentHeaders = options['attachmentHeaders'];
|
|
113
|
+
if (mode === 'send-all') {
|
|
114
|
+
const results = await Promise.all(servers.map((server) => sendToServer(server, messages, topic, visitorIp, attachment, filename, attachmentHeaders)));
|
|
115
|
+
return {
|
|
116
|
+
results,
|
|
117
|
+
fallbackUsed: false,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const orderedServers = [
|
|
121
|
+
primaryServer,
|
|
122
|
+
...servers.filter((server) => server['name'] !== primaryServer['name']),
|
|
123
|
+
];
|
|
124
|
+
const results = [];
|
|
125
|
+
for (const server of orderedServers) {
|
|
126
|
+
const isFallback = server['name'] !== primaryServer['name'];
|
|
127
|
+
let messagesToSend = messages;
|
|
128
|
+
if (isFallback === true && messages.length > 0) {
|
|
129
|
+
const fallbackNote = `\u26A0\uFE0F Primary server "${primaryServer['name']}" was unreachable. This notification was delivered via "${server['name']}".\n\n`;
|
|
130
|
+
const firstMessage = messages[0];
|
|
131
|
+
const modifiedMessages = [
|
|
132
|
+
{
|
|
133
|
+
body: `${fallbackNote}${firstMessage['body']}`, headers: firstMessage['headers'],
|
|
134
|
+
},
|
|
135
|
+
...messages.slice(1),
|
|
136
|
+
];
|
|
137
|
+
messagesToSend = modifiedMessages;
|
|
138
|
+
}
|
|
139
|
+
const result = await sendToServer(server, messagesToSend, topic, visitorIp, attachment, filename, attachmentHeaders);
|
|
140
|
+
results.push(result);
|
|
141
|
+
if (result['success'] === true) {
|
|
142
|
+
const fallbackDeliveryNote = `Delivered via fallback server "${server['name']}"`;
|
|
143
|
+
return {
|
|
144
|
+
results,
|
|
145
|
+
fallbackUsed: isFallback,
|
|
146
|
+
fallbackNote: (isFallback === true) ? fallbackDeliveryNote : undefined,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
results,
|
|
152
|
+
fallbackUsed: false,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export { send, };
|
|
156
|
+
//# sourceMappingURL=send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../../../src/worker/pipeline/send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WorkerPipelineSplitBody, WorkerPipelineSplitMessagePartHeaders, WorkerPipelineSplitReturns } from '../../types/worker/pipeline/split.d.ts';
|
|
2
|
+
declare function split(body: WorkerPipelineSplitBody, headers: WorkerPipelineSplitMessagePartHeaders): WorkerPipelineSplitReturns;
|
|
3
|
+
export { split, };
|
|
4
|
+
//# sourceMappingURL=split.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../../../../src/worker/pipeline/split.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,uBAAuB,EAMvB,qCAAqC,EACrC,0BAA0B,EAE3B,MAAM,wCAAwC,CAAC;AAYhD,iBAAS,KAAK,CAAC,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,qCAAqC,GAAG,0BAA0B,CA2CxH;AAED,OAAO,EACL,KAAK,GACN,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const MAX_BYTES = 4000;
|
|
2
|
+
function split(body, headers) {
|
|
3
|
+
const encoder = new TextEncoder();
|
|
4
|
+
if (encoder.encode(body).length <= MAX_BYTES) {
|
|
5
|
+
return [{
|
|
6
|
+
body, headers,
|
|
7
|
+
}];
|
|
8
|
+
}
|
|
9
|
+
const chunks = [];
|
|
10
|
+
let currentChunk = '';
|
|
11
|
+
let currentBytes = 0;
|
|
12
|
+
for (const char of body) {
|
|
13
|
+
const charBytes = encoder.encode(char).length;
|
|
14
|
+
if (currentBytes + charBytes > MAX_BYTES) {
|
|
15
|
+
chunks.push(currentChunk);
|
|
16
|
+
currentChunk = char;
|
|
17
|
+
currentBytes = charBytes;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
currentChunk += char;
|
|
21
|
+
currentBytes += charBytes;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (currentChunk.length > 0) {
|
|
25
|
+
chunks.push(currentChunk);
|
|
26
|
+
}
|
|
27
|
+
const total = chunks.length;
|
|
28
|
+
const baseTitle = headers['X-Title'] ?? 'Message';
|
|
29
|
+
return chunks.map((chunkBody, index) => {
|
|
30
|
+
const partHeaders = {
|
|
31
|
+
...headers,
|
|
32
|
+
'X-Title': `${baseTitle} (${index + 1}/${total})`,
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
body: chunkBody, headers: partHeaders,
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export { split, };
|
|
40
|
+
//# sourceMappingURL=split.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split.js","sourceRoot":"","sources":["../../../../src/worker/pipeline/split.ts"],"names":[],"mappings":"AAaA,MAAM,SAAS,GAAG,IAAI,CAAC;AAUvB,SAAS,KAAK,CAAC,IAA6B,EAAE,OAA8C;IAC1F,MAAM,OAAO,GAA+B,IAAI,WAAW,EAAE,CAAC;IAE9D,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7C,OAAO,CAAC;gBACN,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,IAAI,YAAY,GAAoC,EAAE,CAAC;IACvD,IAAI,YAAY,GAAoC,CAAC,CAAC;IAEtD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,SAAS,GAAiC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAE5E,IAAI,YAAY,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1B,YAAY,GAAG,IAAI,CAAC;YACpB,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,YAAY,IAAI,IAAI,CAAC;YACrB,YAAY,IAAI,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAA6B,MAAM,CAAC,MAAM,CAAC;IACtD,MAAM,SAAS,GAAiC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;IAEhF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,WAAW,GAA0C;YACzD,GAAG,OAAO;YACV,SAAS,EAAE,GAAG,SAAS,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG;SAClD,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW;SACtC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EACL,KAAK,GACN,CAAC"}
|