@bazariodev/docket 0.0.0-stage → 1.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/CHANGELOG.md +37 -0
- package/LICENSE +21 -0
- package/README.md +985 -2
- package/dist/browser/constants.d.cts +14 -0
- package/dist/browser/constants.d.ts +14 -0
- package/dist/browser/index.cjs +192 -0
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.cts +29 -0
- package/dist/browser/index.d.ts +29 -0
- package/dist/browser/index.js +187 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/chunk-7ld72rnl.js +376 -0
- package/dist/chunk-7ld72rnl.js.map +1 -0
- package/dist/chunk-BLf-eCDO.cjs +53 -0
- package/dist/chunk-BLf-eCDO.cjs.map +1 -0
- package/dist/chunk-CEhpwtwJ.cjs +379 -0
- package/dist/chunk-CEhpwtwJ.cjs.map +1 -0
- package/dist/chunk-CSS3f4_M.js +46 -0
- package/dist/chunk-CSS3f4_M.js.map +1 -0
- package/dist/chunk-CXZYNALm.cjs +124 -0
- package/dist/chunk-CXZYNALm.cjs.map +1 -0
- package/dist/chunk-DYcNnkOV.js +50 -0
- package/dist/chunk-DYcNnkOV.js.map +1 -0
- package/dist/chunk-DkvWLziD.js +437 -0
- package/dist/chunk-DkvWLziD.js.map +1 -0
- package/dist/chunk-DqK_3eFr.cjs +53 -0
- package/dist/chunk-DqK_3eFr.cjs.map +1 -0
- package/dist/chunk-LRCHwVuE.js +110 -0
- package/dist/chunk-LRCHwVuE.js.map +1 -0
- package/dist/chunk-ieB8yTEn.cjs +439 -0
- package/dist/chunk-ieB8yTEn.cjs.map +1 -0
- package/dist/client/index.cjs +167 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +40 -0
- package/dist/client/index.d.ts +40 -0
- package/dist/client/index.js +165 -0
- package/dist/client/index.js.map +1 -0
- package/dist/constants.d.cts +4 -0
- package/dist/constants.d.ts +4 -0
- package/dist/core/constants.d.cts +43 -0
- package/dist/core/constants.d.ts +43 -0
- package/dist/devtools/index.cjs +37 -0
- package/dist/devtools/index.cjs.map +1 -0
- package/dist/devtools/index.d.cts +11 -0
- package/dist/devtools/index.d.ts +11 -0
- package/dist/devtools/index.js +35 -0
- package/dist/devtools/index.js.map +1 -0
- package/dist/export/index.cjs +139 -0
- package/dist/export/index.cjs.map +1 -0
- package/dist/export/index.d.cts +49 -0
- package/dist/export/index.d.ts +49 -0
- package/dist/export/index.js +137 -0
- package/dist/export/index.js.map +1 -0
- package/dist/history/index.cjs +30 -0
- package/dist/history/index.cjs.map +1 -0
- package/dist/history/index.d.cts +11 -0
- package/dist/history/index.d.ts +11 -0
- package/dist/history/index.js +28 -0
- package/dist/history/index.js.map +1 -0
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +159 -0
- package/dist/index.d.ts +159 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/indexeddb/index.cjs +26 -0
- package/dist/indexeddb/index.cjs.map +1 -0
- package/dist/indexeddb/index.d.cts +61 -0
- package/dist/indexeddb/index.d.ts +61 -0
- package/dist/indexeddb/index.js +23 -0
- package/dist/indexeddb/index.js.map +1 -0
- package/dist/redaction/index.cjs +154 -0
- package/dist/redaction/index.cjs.map +1 -0
- package/dist/redaction/index.d.cts +70 -0
- package/dist/redaction/index.d.ts +70 -0
- package/dist/redaction/index.js +152 -0
- package/dist/redaction/index.js.map +1 -0
- package/dist/sip/index.cjs +336 -0
- package/dist/sip/index.cjs.map +1 -0
- package/dist/sip/index.d.cts +34 -0
- package/dist/sip/index.d.ts +34 -0
- package/dist/sip/index.js +333 -0
- package/dist/sip/index.js.map +1 -0
- package/dist/storage/constants.d.cts +11 -0
- package/dist/storage/constants.d.ts +11 -0
- package/dist/storage/contracts.d.cts +31 -0
- package/dist/storage/contracts.d.ts +31 -0
- package/dist/upload/constants.d.cts +17 -0
- package/dist/upload/constants.d.ts +17 -0
- package/dist/upload/index.cjs +246 -0
- package/dist/upload/index.cjs.map +1 -0
- package/dist/upload/index.d.cts +51 -0
- package/dist/upload/index.d.ts +51 -0
- package/dist/upload/index.js +244 -0
- package/dist/upload/index.js.map +1 -0
- package/package.json +150 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/sip/constants.js","../../src/sip/index.js"],"sourcesContent":["export const SIP_ERRORS = /* @__PURE__ */ Object.freeze({\n CALLBACK: 'SIP display-name callback must return a string without controls',\n RESULT_LIMIT: 'SIP display name exceeds maxStringLength',\n OUTPUT_LIMIT: 'SIP output exceeds its size limit',\n});\n","import { MARKERS } from '../core/constants.js';\nimport { SIP_ERRORS } from './constants.js';\n\nconst sdpRule = (name, pattern, replace) =>\n Object.freeze({ name, pattern, replace });\n\nfunction hasUnclosedQuote(text) {\n let quoted = false;\n let escaped = false;\n for (const character of text) {\n if (escaped) {\n escaped = false;\n continue;\n }\n if (character === '\\\\') {\n escaped = true;\n continue;\n }\n if (character === '\"') quoted = !quoted;\n }\n return quoted;\n}\n\nfunction resize(budget, change) {\n budget.size += change;\n if (budget.size > budget.limit) throw new RangeError(SIP_ERRORS.OUTPUT_LIMIT);\n}\n\nfunction readDisplayName(value) {\n const name = value.trim();\n for (const character of name) {\n const code = character.charCodeAt(0);\n if ((code < 32 && code !== 9) || (code >= 127 && code <= 159)) return null;\n }\n if (name.startsWith('\"')) {\n if (!/^\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"$/.test(name)) return null;\n return name.slice(1, -1).replace(/\\\\([\\s\\S])/g, '$1');\n }\n return /[\"\\\\]/.test(name) ? null : name;\n}\n\nfunction hasValidParameters(value) {\n return /^(?:[ \\t]*;[ \\t]*[\\w.!%*+`'~-]+(?:[ \\t]*=[ \\t]*(?:[\\w.!%*+`'~-]+|\\[[\\da-f:.]+\\]|\"(?:[^\"\\\\\\r\\n]|\\\\[^\\r\\n])*\"))?)*[ \\t]*$/i.test(\n value,\n );\n}\n\nfunction isBareIdentity(value) {\n if (/^\\s*(?:(?:sips?:|tel:)[^\\s<>\"\\\\]+|\\*)\\s*$/i.test(value)) return true;\n const address = /^[ \\t]*(?:sips?:|tel:)[^\\s<>;?\"\\\\]+/i.exec(value);\n return Boolean(address) && hasValidParameters(value.slice(address[0].length));\n}\n\nfunction parseIdentity(value) {\n const parts = [];\n let start = 0;\n let angle = -1;\n let close = -1;\n let inAddress = false;\n let quoted = false;\n let escaped = false;\n const append = (end) => {\n const segment = value.slice(start, end);\n let name = null;\n if (angle < 0) {\n if (!isBareIdentity(segment)) return false;\n } else {\n if (!hasValidParameters(value.slice(close + 1, end))) return false;\n name = readDisplayName(value.slice(start, angle));\n if (name === null) return false;\n }\n parts.push({ start, end, angle, name });\n return true;\n };\n for (let index = 0; index < value.length; index++) {\n const character = value[index];\n if (escaped) {\n escaped = false;\n continue;\n }\n if (quoted && character === '\\\\') {\n escaped = true;\n continue;\n }\n if (character === '\"') quoted = !quoted;\n if (quoted) continue;\n if (character === '<') {\n if (\n angle >= 0 ||\n !/^(?:sips?:|tel:)/i.test(value.slice(index + 1, index + 6))\n )\n return null;\n angle = index;\n inAddress = true;\n } else if (character === '>') {\n if (\n !inAddress ||\n !/^(?:sips?:|tel:)[^\\s<>\"\\\\]+$/i.test(value.slice(angle + 1, index))\n )\n return null;\n inAddress = false;\n close = index;\n } else if (character === ',' && !inAddress) {\n if (!append(index)) return null;\n start = index + 1;\n angle = -1;\n close = -1;\n }\n }\n return quoted || inAddress || !append(value.length) ? null : parts;\n}\n\nfunction redactIdentity(value, redactor, redactDisplayName, budget) {\n const segments = parseIdentity(value);\n if (!segments) {\n const replacement = ` ${MARKERS.MASK}`;\n resize(budget, replacement.length - value.length);\n return replacement;\n }\n const parts = [];\n for (const { start, end, angle, name } of segments) {\n if (name === null) {\n parts.push(value.slice(start, end));\n continue;\n }\n let result = '';\n if (name)\n result = redactDisplayName ? redactDisplayName(name) : MARKERS.MASK;\n if (typeof result !== 'string') throw new TypeError(SIP_ERRORS.CALLBACK);\n if (result.length > redactor.limits.maxStringLength)\n throw new RangeError(SIP_ERRORS.RESULT_LIMIT);\n let length = result ? 4 + result.length : 1;\n for (const character of result) {\n const code = character.charCodeAt(0);\n if (code < 32 || (code >= 127 && code <= 159))\n throw new TypeError(SIP_ERRORS.CALLBACK);\n if (character === '\"' || character === '\\\\') length++;\n }\n resize(budget, length - (angle - start));\n const prefix = result ? ` \"${result.replace(/[\"\\\\]/g, '\\\\$&')}\" ` : ' ';\n parts.push(`${prefix}${value.slice(angle, end)}`);\n }\n return parts.join(',');\n}\nfunction createSdpTextRules(TEXT_RULES) {\n return Object.freeze([\n sdpRule(\n 'ice',\n /a=ice-(?:pwd|ufrag):[^\\r\\n\\\\\"]*/gi,\n (match) => `${match.slice(0, match.indexOf(':') + 1)}[redacted]`,\n ),\n sdpRule('sdes', /a=crypto:[^\\r\\n\\\\\"]*/gi, () => 'a=crypto:[redacted]'),\n sdpRule(\n 'fingerprint',\n /a=fingerprint:[^\\r\\n\\\\\"]*/gi,\n () => 'a=fingerprint:[redacted]',\n ),\n sdpRule(\n 'origin',\n /(?:^|[\\r\\n]|\\\\[rn])o=[^\\s]+/g,\n (match) => `${match.slice(0, match.indexOf('o=') + 2)}[redacted]`,\n ),\n sdpRule(\n 'mediaIdentity',\n /a=(?:msid|identity):[^\\r\\n\\\\\"]*/gi,\n (match) => `${match.slice(0, match.indexOf(':') + 1)}[redacted]`,\n ),\n sdpRule(\n 'sourceIdentity',\n /(?:^|[\\r\\n])a=ssrc:\\d+[ \\t]+(?:cname|msid|mslabel|label):[^\\r\\n]*/gi,\n (match) =>\n `${match.slice(0, match.indexOf(':', match.indexOf(':') + 1) + 1)}[redacted]`,\n ),\n sdpRule(\n 'serializedSourceIdentity',\n /(?:\\\\[rn]|(?<=\"))a=ssrc:\\d+[ \\t]+(?:cname|msid|mslabel|label):(?:\\\\(?![rn])[^\\r\\n]|[^\\r\\n\\\\\"])*/gi,\n (match) =>\n `${match.slice(0, match.indexOf(':', match.indexOf(':') + 1) + 1)}[redacted]`,\n ),\n sdpRule(\n 'localAddress',\n /(?<![\\w-])[\\w-]+\\.local\\b/gi,\n () => '[local-address]',\n ),\n sdpRule(\n 'turn',\n /(?:\"(?:credential|password|username)\"\\s*:\\s*(?:\"(?:\\\\.|[^\"\\\\])*\"|[^,}\\s]+)|(?:credential|password|username)\\s*=\\s*(?:\"(?:\\\\.|[^\"\\\\])*\"|[^,}\\s]+))/gi,\n (match) => `${match.slice(0, match.search(/[:=]/) + 1)}\"[redacted]\"`,\n ),\n TEXT_RULES.ipv4,\n TEXT_RULES.ipv6,\n TEXT_RULES.urlCredentials,\n TEXT_RULES.sipUri,\n TEXT_RULES.telUri,\n sdpRule('dtmf', /Signal\\s*=\\s*[^\\r\\n]+/gi, () => 'Signal=*'),\n ]);\n}\n\nexport function describeSipMessage(text) {\n const first = text.split(/\\r?\\n/, 1)[0];\n const result = {};\n if (/^SIP\\/2\\.0\\s+\\d{3}/i.test(first))\n result.status = Number(first.split(/\\s+/)[1]);\n else {\n const match = /^([A-Z]+)\\s+\\S+\\s+SIP\\/2\\.0/i.exec(first);\n if (match) result.method = match[1];\n }\n const callId = /^(?:Call-ID|i)\\s*:\\s*([^\\r\\n]+)/im.exec(text);\n const cseq = /^CSeq\\s*:\\s*([^\\r\\n]+)/im.exec(text);\n if (callId) result.callId = callId[1].trim();\n if (cseq) result.cseq = cseq[1].trim();\n return Object.freeze(result);\n}\n\nfunction redactSipMessage(\n text,\n { redactor, redactDisplayName },\n TEXT_RULES,\n SDP_TEXT_RULES,\n) {\n if (\n redactDisplayName !== undefined &&\n typeof redactDisplayName !== 'function'\n )\n throw new TypeError(SIP_ERRORS.CALLBACK);\n const limit = redactor.limits.maxStringLength * 4;\n if (text.length > limit) return MARKERS.LIMIT;\n const unfolded = text.replace(/\\r?\\n[ \\t]+/g, ' ');\n const separator = /\\r?\\n\\r?\\n/.exec(unfolded);\n let headers = separator ? unfolded.slice(0, separator.index) : unfolded;\n let body = separator\n ? unfolded.slice(separator.index + separator[0].length)\n : '';\n headers = headers.split(/\\r?\\n/).join('\\r\\n');\n const budget = {\n size: headers.length + body.length + (separator ? 4 : 0),\n limit,\n };\n resize(budget, 0);\n const replace = (value, pattern, render) =>\n value.replace(pattern, (match) => {\n const replacement = render(match);\n resize(budget, replacement.length - match.length);\n return replacement;\n });\n const contentType =\n /^(?:Content-Type|c)\\s*:\\s*([^;\\r\\n]+)/im\n .exec(headers)?.[1]\n .trim()\n .toLowerCase() ?? 'unknown';\n headers = replace(\n headers,\n /^(?:(?:Proxy-)?Authorization|WWW-Authenticate|Proxy-Authenticate)\\s*:[^\\r\\n]*/gim,\n (header) =>\n hasUnclosedQuote(header)\n ? `${header.slice(0, header.indexOf(':'))}: [redacted]`\n : header.replace(\n /\\b(username|response|nonce|cnonce|opaque)\\s*=\\s*(?:\"(?:\\\\.|[^\"\\\\])*\"|[^,\\s]+)/gi,\n (_, key) => `${key}=\"[redacted]\"`,\n ),\n );\n headers = headers\n .split(/\\r?\\n/)\n .map((line) => {\n const header =\n /^((?:From|To|Contact|P-Asserted-Identity|P-Preferred-Identity|Refer-To|Referred-By|Diversion|History-Info|Remote-Party-ID|P-Called-Party-ID|Reply-To|f|t|m|r|b)\\s*:)(.*)$/i.exec(\n line,\n );\n if (!header) return line;\n const value = redactIdentity(\n header[2],\n redactor,\n redactDisplayName,\n budget,\n );\n return `${header[1]}${value}`;\n })\n .join('\\r\\n');\n for (const rule of [\n TEXT_RULES.urlCredentials,\n TEXT_RULES.sipUri,\n TEXT_RULES.telUri,\n ])\n headers = replace(headers, rule.pattern, (match) => rule.replace(match));\n if (body) {\n if (\n contentType === 'application/sdp' ||\n contentType === 'application/dtmf-relay'\n ) {\n for (const rule of SDP_TEXT_RULES)\n body = replace(body, rule.pattern, (match) => rule.replace(match));\n } else {\n const replacement = `[${contentType} ${new TextEncoder().encode(body).length} bytes]`;\n resize(budget, replacement.length - body.length);\n body = replacement;\n }\n }\n const addresses = (value) => {\n const ipv4 = replace(value, TEXT_RULES.ipv4.pattern, (match) =>\n TEXT_RULES.ipv4.replace(match),\n );\n return replace(ipv4, TEXT_RULES.ipv6.pattern, (match) =>\n TEXT_RULES.ipv6.replace(match),\n );\n };\n return `${addresses(headers)}${separator ? `\\r\\n\\r\\n${body}` : ''}`;\n}\n\nexport function createSipTools(textRules) {\n if (\n !textRules?.ipv4 ||\n !textRules.ipv6 ||\n !textRules.urlCredentials ||\n !textRules.sipUri ||\n !textRules.telUri\n )\n throw new TypeError('SIP text rules are required');\n const SDP_TEXT_RULES = createSdpTextRules(textRules);\n return Object.freeze({\n SDP_TEXT_RULES,\n redactSipMessage: (text, options) =>\n redactSipMessage(text, options, textRules, SDP_TEXT_RULES),\n describeSipMessage,\n });\n}\n"],"names":["MARKERS"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Redactor } from "../index.cjs";
|
|
2
|
+
|
|
3
|
+
export type SipTextRule = Readonly<{
|
|
4
|
+
name: string;
|
|
5
|
+
pattern: RegExp;
|
|
6
|
+
requiresHash?: boolean;
|
|
7
|
+
replace: (match: string, ...unused: never[]) => string;
|
|
8
|
+
}>;
|
|
9
|
+
export type SipTextRules = Readonly<{
|
|
10
|
+
ipv4: SipTextRule;
|
|
11
|
+
ipv6: SipTextRule;
|
|
12
|
+
urlCredentials: SipTextRule;
|
|
13
|
+
sipUri: SipTextRule;
|
|
14
|
+
telUri: SipTextRule;
|
|
15
|
+
}>;
|
|
16
|
+
|
|
17
|
+
export type SipTools = Readonly<{
|
|
18
|
+
SDP_TEXT_RULES: readonly SipTextRule[];
|
|
19
|
+
redactSipMessage: (
|
|
20
|
+
text: string,
|
|
21
|
+
options: Readonly<{
|
|
22
|
+
redactor: Redactor;
|
|
23
|
+
redactDisplayName?: (value: string) => string;
|
|
24
|
+
}>,
|
|
25
|
+
) => string;
|
|
26
|
+
describeSipMessage: typeof describeSipMessage;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function createSipTools(textRules: SipTextRules): SipTools;
|
|
29
|
+
export declare function describeSipMessage(text: string): Readonly<{
|
|
30
|
+
method?: string;
|
|
31
|
+
status?: number;
|
|
32
|
+
callId?: string;
|
|
33
|
+
cseq?: string;
|
|
34
|
+
}>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Redactor } from '../index.js';
|
|
2
|
+
|
|
3
|
+
export type SipTextRule = Readonly<{
|
|
4
|
+
name: string;
|
|
5
|
+
pattern: RegExp;
|
|
6
|
+
requiresHash?: boolean;
|
|
7
|
+
replace: (match: string, ...unused: never[]) => string;
|
|
8
|
+
}>;
|
|
9
|
+
export type SipTextRules = Readonly<{
|
|
10
|
+
ipv4: SipTextRule;
|
|
11
|
+
ipv6: SipTextRule;
|
|
12
|
+
urlCredentials: SipTextRule;
|
|
13
|
+
sipUri: SipTextRule;
|
|
14
|
+
telUri: SipTextRule;
|
|
15
|
+
}>;
|
|
16
|
+
|
|
17
|
+
export type SipTools = Readonly<{
|
|
18
|
+
SDP_TEXT_RULES: readonly SipTextRule[];
|
|
19
|
+
redactSipMessage: (
|
|
20
|
+
text: string,
|
|
21
|
+
options: Readonly<{
|
|
22
|
+
redactor: Redactor;
|
|
23
|
+
redactDisplayName?: (value: string) => string;
|
|
24
|
+
}>,
|
|
25
|
+
) => string;
|
|
26
|
+
describeSipMessage: typeof describeSipMessage;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function createSipTools(textRules: SipTextRules): SipTools;
|
|
29
|
+
export declare function describeSipMessage(text: string): Readonly<{
|
|
30
|
+
method?: string;
|
|
31
|
+
status?: number;
|
|
32
|
+
callId?: string;
|
|
33
|
+
cseq?: string;
|
|
34
|
+
}>;
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import { M as MARKERS } from '../chunk-CSS3f4_M.js';
|
|
2
|
+
|
|
3
|
+
const SIP_ERRORS = /* @__PURE__ */ Object.freeze({
|
|
4
|
+
CALLBACK: 'SIP display-name callback must return a string without controls',
|
|
5
|
+
RESULT_LIMIT: 'SIP display name exceeds maxStringLength',
|
|
6
|
+
OUTPUT_LIMIT: 'SIP output exceeds its size limit',
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
const sdpRule = (name, pattern, replace) =>
|
|
10
|
+
Object.freeze({ name, pattern, replace });
|
|
11
|
+
|
|
12
|
+
function hasUnclosedQuote(text) {
|
|
13
|
+
let quoted = false;
|
|
14
|
+
let escaped = false;
|
|
15
|
+
for (const character of text) {
|
|
16
|
+
if (escaped) {
|
|
17
|
+
escaped = false;
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (character === '\\') {
|
|
21
|
+
escaped = true;
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (character === '"') quoted = !quoted;
|
|
25
|
+
}
|
|
26
|
+
return quoted;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function resize(budget, change) {
|
|
30
|
+
budget.size += change;
|
|
31
|
+
if (budget.size > budget.limit) throw new RangeError(SIP_ERRORS.OUTPUT_LIMIT);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function readDisplayName(value) {
|
|
35
|
+
const name = value.trim();
|
|
36
|
+
for (const character of name) {
|
|
37
|
+
const code = character.charCodeAt(0);
|
|
38
|
+
if ((code < 32 && code !== 9) || (code >= 127 && code <= 159)) return null;
|
|
39
|
+
}
|
|
40
|
+
if (name.startsWith('"')) {
|
|
41
|
+
if (!/^"(?:\\[\s\S]|[^"\\])*"$/.test(name)) return null;
|
|
42
|
+
return name.slice(1, -1).replace(/\\([\s\S])/g, '$1');
|
|
43
|
+
}
|
|
44
|
+
return /["\\]/.test(name) ? null : name;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function hasValidParameters(value) {
|
|
48
|
+
return /^(?:[ \t]*;[ \t]*[\w.!%*+`'~-]+(?:[ \t]*=[ \t]*(?:[\w.!%*+`'~-]+|\[[\da-f:.]+\]|"(?:[^"\\\r\n]|\\[^\r\n])*"))?)*[ \t]*$/i.test(
|
|
49
|
+
value,
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function isBareIdentity(value) {
|
|
54
|
+
if (/^\s*(?:(?:sips?:|tel:)[^\s<>"\\]+|\*)\s*$/i.test(value)) return true;
|
|
55
|
+
const address = /^[ \t]*(?:sips?:|tel:)[^\s<>;?"\\]+/i.exec(value);
|
|
56
|
+
return Boolean(address) && hasValidParameters(value.slice(address[0].length));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function parseIdentity(value) {
|
|
60
|
+
const parts = [];
|
|
61
|
+
let start = 0;
|
|
62
|
+
let angle = -1;
|
|
63
|
+
let close = -1;
|
|
64
|
+
let inAddress = false;
|
|
65
|
+
let quoted = false;
|
|
66
|
+
let escaped = false;
|
|
67
|
+
const append = (end) => {
|
|
68
|
+
const segment = value.slice(start, end);
|
|
69
|
+
let name = null;
|
|
70
|
+
if (angle < 0) {
|
|
71
|
+
if (!isBareIdentity(segment)) return false;
|
|
72
|
+
} else {
|
|
73
|
+
if (!hasValidParameters(value.slice(close + 1, end))) return false;
|
|
74
|
+
name = readDisplayName(value.slice(start, angle));
|
|
75
|
+
if (name === null) return false;
|
|
76
|
+
}
|
|
77
|
+
parts.push({ start, end, angle, name });
|
|
78
|
+
return true;
|
|
79
|
+
};
|
|
80
|
+
for (let index = 0; index < value.length; index++) {
|
|
81
|
+
const character = value[index];
|
|
82
|
+
if (escaped) {
|
|
83
|
+
escaped = false;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (quoted && character === '\\') {
|
|
87
|
+
escaped = true;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (character === '"') quoted = !quoted;
|
|
91
|
+
if (quoted) continue;
|
|
92
|
+
if (character === '<') {
|
|
93
|
+
if (
|
|
94
|
+
angle >= 0 ||
|
|
95
|
+
!/^(?:sips?:|tel:)/i.test(value.slice(index + 1, index + 6))
|
|
96
|
+
)
|
|
97
|
+
return null;
|
|
98
|
+
angle = index;
|
|
99
|
+
inAddress = true;
|
|
100
|
+
} else if (character === '>') {
|
|
101
|
+
if (
|
|
102
|
+
!inAddress ||
|
|
103
|
+
!/^(?:sips?:|tel:)[^\s<>"\\]+$/i.test(value.slice(angle + 1, index))
|
|
104
|
+
)
|
|
105
|
+
return null;
|
|
106
|
+
inAddress = false;
|
|
107
|
+
close = index;
|
|
108
|
+
} else if (character === ',' && !inAddress) {
|
|
109
|
+
if (!append(index)) return null;
|
|
110
|
+
start = index + 1;
|
|
111
|
+
angle = -1;
|
|
112
|
+
close = -1;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return quoted || inAddress || !append(value.length) ? null : parts;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function redactIdentity(value, redactor, redactDisplayName, budget) {
|
|
119
|
+
const segments = parseIdentity(value);
|
|
120
|
+
if (!segments) {
|
|
121
|
+
const replacement = ` ${MARKERS.MASK}`;
|
|
122
|
+
resize(budget, replacement.length - value.length);
|
|
123
|
+
return replacement;
|
|
124
|
+
}
|
|
125
|
+
const parts = [];
|
|
126
|
+
for (const { start, end, angle, name } of segments) {
|
|
127
|
+
if (name === null) {
|
|
128
|
+
parts.push(value.slice(start, end));
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
let result = '';
|
|
132
|
+
if (name)
|
|
133
|
+
result = redactDisplayName ? redactDisplayName(name) : MARKERS.MASK;
|
|
134
|
+
if (typeof result !== 'string') throw new TypeError(SIP_ERRORS.CALLBACK);
|
|
135
|
+
if (result.length > redactor.limits.maxStringLength)
|
|
136
|
+
throw new RangeError(SIP_ERRORS.RESULT_LIMIT);
|
|
137
|
+
let length = result ? 4 + result.length : 1;
|
|
138
|
+
for (const character of result) {
|
|
139
|
+
const code = character.charCodeAt(0);
|
|
140
|
+
if (code < 32 || (code >= 127 && code <= 159))
|
|
141
|
+
throw new TypeError(SIP_ERRORS.CALLBACK);
|
|
142
|
+
if (character === '"' || character === '\\') length++;
|
|
143
|
+
}
|
|
144
|
+
resize(budget, length - (angle - start));
|
|
145
|
+
const prefix = result ? ` "${result.replace(/["\\]/g, '\\$&')}" ` : ' ';
|
|
146
|
+
parts.push(`${prefix}${value.slice(angle, end)}`);
|
|
147
|
+
}
|
|
148
|
+
return parts.join(',');
|
|
149
|
+
}
|
|
150
|
+
function createSdpTextRules(TEXT_RULES) {
|
|
151
|
+
return Object.freeze([
|
|
152
|
+
sdpRule(
|
|
153
|
+
'ice',
|
|
154
|
+
/a=ice-(?:pwd|ufrag):[^\r\n\\"]*/gi,
|
|
155
|
+
(match) => `${match.slice(0, match.indexOf(':') + 1)}[redacted]`,
|
|
156
|
+
),
|
|
157
|
+
sdpRule('sdes', /a=crypto:[^\r\n\\"]*/gi, () => 'a=crypto:[redacted]'),
|
|
158
|
+
sdpRule(
|
|
159
|
+
'fingerprint',
|
|
160
|
+
/a=fingerprint:[^\r\n\\"]*/gi,
|
|
161
|
+
() => 'a=fingerprint:[redacted]',
|
|
162
|
+
),
|
|
163
|
+
sdpRule(
|
|
164
|
+
'origin',
|
|
165
|
+
/(?:^|[\r\n]|\\[rn])o=[^\s]+/g,
|
|
166
|
+
(match) => `${match.slice(0, match.indexOf('o=') + 2)}[redacted]`,
|
|
167
|
+
),
|
|
168
|
+
sdpRule(
|
|
169
|
+
'mediaIdentity',
|
|
170
|
+
/a=(?:msid|identity):[^\r\n\\"]*/gi,
|
|
171
|
+
(match) => `${match.slice(0, match.indexOf(':') + 1)}[redacted]`,
|
|
172
|
+
),
|
|
173
|
+
sdpRule(
|
|
174
|
+
'sourceIdentity',
|
|
175
|
+
/(?:^|[\r\n])a=ssrc:\d+[ \t]+(?:cname|msid|mslabel|label):[^\r\n]*/gi,
|
|
176
|
+
(match) =>
|
|
177
|
+
`${match.slice(0, match.indexOf(':', match.indexOf(':') + 1) + 1)}[redacted]`,
|
|
178
|
+
),
|
|
179
|
+
sdpRule(
|
|
180
|
+
'serializedSourceIdentity',
|
|
181
|
+
/(?:\\[rn]|(?<="))a=ssrc:\d+[ \t]+(?:cname|msid|mslabel|label):(?:\\(?![rn])[^\r\n]|[^\r\n\\"])*/gi,
|
|
182
|
+
(match) =>
|
|
183
|
+
`${match.slice(0, match.indexOf(':', match.indexOf(':') + 1) + 1)}[redacted]`,
|
|
184
|
+
),
|
|
185
|
+
sdpRule(
|
|
186
|
+
'localAddress',
|
|
187
|
+
/(?<![\w-])[\w-]+\.local\b/gi,
|
|
188
|
+
() => '[local-address]',
|
|
189
|
+
),
|
|
190
|
+
sdpRule(
|
|
191
|
+
'turn',
|
|
192
|
+
/(?:"(?:credential|password|username)"\s*:\s*(?:"(?:\\.|[^"\\])*"|[^,}\s]+)|(?:credential|password|username)\s*=\s*(?:"(?:\\.|[^"\\])*"|[^,}\s]+))/gi,
|
|
193
|
+
(match) => `${match.slice(0, match.search(/[:=]/) + 1)}"[redacted]"`,
|
|
194
|
+
),
|
|
195
|
+
TEXT_RULES.ipv4,
|
|
196
|
+
TEXT_RULES.ipv6,
|
|
197
|
+
TEXT_RULES.urlCredentials,
|
|
198
|
+
TEXT_RULES.sipUri,
|
|
199
|
+
TEXT_RULES.telUri,
|
|
200
|
+
sdpRule('dtmf', /Signal\s*=\s*[^\r\n]+/gi, () => 'Signal=*'),
|
|
201
|
+
]);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function describeSipMessage(text) {
|
|
205
|
+
const first = text.split(/\r?\n/, 1)[0];
|
|
206
|
+
const result = {};
|
|
207
|
+
if (/^SIP\/2\.0\s+\d{3}/i.test(first))
|
|
208
|
+
result.status = Number(first.split(/\s+/)[1]);
|
|
209
|
+
else {
|
|
210
|
+
const match = /^([A-Z]+)\s+\S+\s+SIP\/2\.0/i.exec(first);
|
|
211
|
+
if (match) result.method = match[1];
|
|
212
|
+
}
|
|
213
|
+
const callId = /^(?:Call-ID|i)\s*:\s*([^\r\n]+)/im.exec(text);
|
|
214
|
+
const cseq = /^CSeq\s*:\s*([^\r\n]+)/im.exec(text);
|
|
215
|
+
if (callId) result.callId = callId[1].trim();
|
|
216
|
+
if (cseq) result.cseq = cseq[1].trim();
|
|
217
|
+
return Object.freeze(result);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function redactSipMessage(
|
|
221
|
+
text,
|
|
222
|
+
{ redactor, redactDisplayName },
|
|
223
|
+
TEXT_RULES,
|
|
224
|
+
SDP_TEXT_RULES,
|
|
225
|
+
) {
|
|
226
|
+
if (
|
|
227
|
+
redactDisplayName !== undefined &&
|
|
228
|
+
typeof redactDisplayName !== 'function'
|
|
229
|
+
)
|
|
230
|
+
throw new TypeError(SIP_ERRORS.CALLBACK);
|
|
231
|
+
const limit = redactor.limits.maxStringLength * 4;
|
|
232
|
+
if (text.length > limit) return MARKERS.LIMIT;
|
|
233
|
+
const unfolded = text.replace(/\r?\n[ \t]+/g, ' ');
|
|
234
|
+
const separator = /\r?\n\r?\n/.exec(unfolded);
|
|
235
|
+
let headers = separator ? unfolded.slice(0, separator.index) : unfolded;
|
|
236
|
+
let body = separator
|
|
237
|
+
? unfolded.slice(separator.index + separator[0].length)
|
|
238
|
+
: '';
|
|
239
|
+
headers = headers.split(/\r?\n/).join('\r\n');
|
|
240
|
+
const budget = {
|
|
241
|
+
size: headers.length + body.length + (separator ? 4 : 0),
|
|
242
|
+
limit,
|
|
243
|
+
};
|
|
244
|
+
resize(budget, 0);
|
|
245
|
+
const replace = (value, pattern, render) =>
|
|
246
|
+
value.replace(pattern, (match) => {
|
|
247
|
+
const replacement = render(match);
|
|
248
|
+
resize(budget, replacement.length - match.length);
|
|
249
|
+
return replacement;
|
|
250
|
+
});
|
|
251
|
+
const contentType =
|
|
252
|
+
/^(?:Content-Type|c)\s*:\s*([^;\r\n]+)/im
|
|
253
|
+
.exec(headers)?.[1]
|
|
254
|
+
.trim()
|
|
255
|
+
.toLowerCase() ?? 'unknown';
|
|
256
|
+
headers = replace(
|
|
257
|
+
headers,
|
|
258
|
+
/^(?:(?:Proxy-)?Authorization|WWW-Authenticate|Proxy-Authenticate)\s*:[^\r\n]*/gim,
|
|
259
|
+
(header) =>
|
|
260
|
+
hasUnclosedQuote(header)
|
|
261
|
+
? `${header.slice(0, header.indexOf(':'))}: [redacted]`
|
|
262
|
+
: header.replace(
|
|
263
|
+
/\b(username|response|nonce|cnonce|opaque)\s*=\s*(?:"(?:\\.|[^"\\])*"|[^,\s]+)/gi,
|
|
264
|
+
(_, key) => `${key}="[redacted]"`,
|
|
265
|
+
),
|
|
266
|
+
);
|
|
267
|
+
headers = headers
|
|
268
|
+
.split(/\r?\n/)
|
|
269
|
+
.map((line) => {
|
|
270
|
+
const header =
|
|
271
|
+
/^((?:From|To|Contact|P-Asserted-Identity|P-Preferred-Identity|Refer-To|Referred-By|Diversion|History-Info|Remote-Party-ID|P-Called-Party-ID|Reply-To|f|t|m|r|b)\s*:)(.*)$/i.exec(
|
|
272
|
+
line,
|
|
273
|
+
);
|
|
274
|
+
if (!header) return line;
|
|
275
|
+
const value = redactIdentity(
|
|
276
|
+
header[2],
|
|
277
|
+
redactor,
|
|
278
|
+
redactDisplayName,
|
|
279
|
+
budget,
|
|
280
|
+
);
|
|
281
|
+
return `${header[1]}${value}`;
|
|
282
|
+
})
|
|
283
|
+
.join('\r\n');
|
|
284
|
+
for (const rule of [
|
|
285
|
+
TEXT_RULES.urlCredentials,
|
|
286
|
+
TEXT_RULES.sipUri,
|
|
287
|
+
TEXT_RULES.telUri,
|
|
288
|
+
])
|
|
289
|
+
headers = replace(headers, rule.pattern, (match) => rule.replace(match));
|
|
290
|
+
if (body) {
|
|
291
|
+
if (
|
|
292
|
+
contentType === 'application/sdp' ||
|
|
293
|
+
contentType === 'application/dtmf-relay'
|
|
294
|
+
) {
|
|
295
|
+
for (const rule of SDP_TEXT_RULES)
|
|
296
|
+
body = replace(body, rule.pattern, (match) => rule.replace(match));
|
|
297
|
+
} else {
|
|
298
|
+
const replacement = `[${contentType} ${new TextEncoder().encode(body).length} bytes]`;
|
|
299
|
+
resize(budget, replacement.length - body.length);
|
|
300
|
+
body = replacement;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
const addresses = (value) => {
|
|
304
|
+
const ipv4 = replace(value, TEXT_RULES.ipv4.pattern, (match) =>
|
|
305
|
+
TEXT_RULES.ipv4.replace(match),
|
|
306
|
+
);
|
|
307
|
+
return replace(ipv4, TEXT_RULES.ipv6.pattern, (match) =>
|
|
308
|
+
TEXT_RULES.ipv6.replace(match),
|
|
309
|
+
);
|
|
310
|
+
};
|
|
311
|
+
return `${addresses(headers)}${separator ? `\r\n\r\n${body}` : ''}`;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
function createSipTools(textRules) {
|
|
315
|
+
if (
|
|
316
|
+
!textRules?.ipv4 ||
|
|
317
|
+
!textRules.ipv6 ||
|
|
318
|
+
!textRules.urlCredentials ||
|
|
319
|
+
!textRules.sipUri ||
|
|
320
|
+
!textRules.telUri
|
|
321
|
+
)
|
|
322
|
+
throw new TypeError('SIP text rules are required');
|
|
323
|
+
const SDP_TEXT_RULES = createSdpTextRules(textRules);
|
|
324
|
+
return Object.freeze({
|
|
325
|
+
SDP_TEXT_RULES,
|
|
326
|
+
redactSipMessage: (text, options) =>
|
|
327
|
+
redactSipMessage(text, options, textRules, SDP_TEXT_RULES),
|
|
328
|
+
describeSipMessage,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export { createSipTools, describeSipMessage };
|
|
333
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/sip/constants.js","../../src/sip/index.js"],"sourcesContent":["export const SIP_ERRORS = /* @__PURE__ */ Object.freeze({\n CALLBACK: 'SIP display-name callback must return a string without controls',\n RESULT_LIMIT: 'SIP display name exceeds maxStringLength',\n OUTPUT_LIMIT: 'SIP output exceeds its size limit',\n});\n","import { MARKERS } from '../core/constants.js';\nimport { SIP_ERRORS } from './constants.js';\n\nconst sdpRule = (name, pattern, replace) =>\n Object.freeze({ name, pattern, replace });\n\nfunction hasUnclosedQuote(text) {\n let quoted = false;\n let escaped = false;\n for (const character of text) {\n if (escaped) {\n escaped = false;\n continue;\n }\n if (character === '\\\\') {\n escaped = true;\n continue;\n }\n if (character === '\"') quoted = !quoted;\n }\n return quoted;\n}\n\nfunction resize(budget, change) {\n budget.size += change;\n if (budget.size > budget.limit) throw new RangeError(SIP_ERRORS.OUTPUT_LIMIT);\n}\n\nfunction readDisplayName(value) {\n const name = value.trim();\n for (const character of name) {\n const code = character.charCodeAt(0);\n if ((code < 32 && code !== 9) || (code >= 127 && code <= 159)) return null;\n }\n if (name.startsWith('\"')) {\n if (!/^\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"$/.test(name)) return null;\n return name.slice(1, -1).replace(/\\\\([\\s\\S])/g, '$1');\n }\n return /[\"\\\\]/.test(name) ? null : name;\n}\n\nfunction hasValidParameters(value) {\n return /^(?:[ \\t]*;[ \\t]*[\\w.!%*+`'~-]+(?:[ \\t]*=[ \\t]*(?:[\\w.!%*+`'~-]+|\\[[\\da-f:.]+\\]|\"(?:[^\"\\\\\\r\\n]|\\\\[^\\r\\n])*\"))?)*[ \\t]*$/i.test(\n value,\n );\n}\n\nfunction isBareIdentity(value) {\n if (/^\\s*(?:(?:sips?:|tel:)[^\\s<>\"\\\\]+|\\*)\\s*$/i.test(value)) return true;\n const address = /^[ \\t]*(?:sips?:|tel:)[^\\s<>;?\"\\\\]+/i.exec(value);\n return Boolean(address) && hasValidParameters(value.slice(address[0].length));\n}\n\nfunction parseIdentity(value) {\n const parts = [];\n let start = 0;\n let angle = -1;\n let close = -1;\n let inAddress = false;\n let quoted = false;\n let escaped = false;\n const append = (end) => {\n const segment = value.slice(start, end);\n let name = null;\n if (angle < 0) {\n if (!isBareIdentity(segment)) return false;\n } else {\n if (!hasValidParameters(value.slice(close + 1, end))) return false;\n name = readDisplayName(value.slice(start, angle));\n if (name === null) return false;\n }\n parts.push({ start, end, angle, name });\n return true;\n };\n for (let index = 0; index < value.length; index++) {\n const character = value[index];\n if (escaped) {\n escaped = false;\n continue;\n }\n if (quoted && character === '\\\\') {\n escaped = true;\n continue;\n }\n if (character === '\"') quoted = !quoted;\n if (quoted) continue;\n if (character === '<') {\n if (\n angle >= 0 ||\n !/^(?:sips?:|tel:)/i.test(value.slice(index + 1, index + 6))\n )\n return null;\n angle = index;\n inAddress = true;\n } else if (character === '>') {\n if (\n !inAddress ||\n !/^(?:sips?:|tel:)[^\\s<>\"\\\\]+$/i.test(value.slice(angle + 1, index))\n )\n return null;\n inAddress = false;\n close = index;\n } else if (character === ',' && !inAddress) {\n if (!append(index)) return null;\n start = index + 1;\n angle = -1;\n close = -1;\n }\n }\n return quoted || inAddress || !append(value.length) ? null : parts;\n}\n\nfunction redactIdentity(value, redactor, redactDisplayName, budget) {\n const segments = parseIdentity(value);\n if (!segments) {\n const replacement = ` ${MARKERS.MASK}`;\n resize(budget, replacement.length - value.length);\n return replacement;\n }\n const parts = [];\n for (const { start, end, angle, name } of segments) {\n if (name === null) {\n parts.push(value.slice(start, end));\n continue;\n }\n let result = '';\n if (name)\n result = redactDisplayName ? redactDisplayName(name) : MARKERS.MASK;\n if (typeof result !== 'string') throw new TypeError(SIP_ERRORS.CALLBACK);\n if (result.length > redactor.limits.maxStringLength)\n throw new RangeError(SIP_ERRORS.RESULT_LIMIT);\n let length = result ? 4 + result.length : 1;\n for (const character of result) {\n const code = character.charCodeAt(0);\n if (code < 32 || (code >= 127 && code <= 159))\n throw new TypeError(SIP_ERRORS.CALLBACK);\n if (character === '\"' || character === '\\\\') length++;\n }\n resize(budget, length - (angle - start));\n const prefix = result ? ` \"${result.replace(/[\"\\\\]/g, '\\\\$&')}\" ` : ' ';\n parts.push(`${prefix}${value.slice(angle, end)}`);\n }\n return parts.join(',');\n}\nfunction createSdpTextRules(TEXT_RULES) {\n return Object.freeze([\n sdpRule(\n 'ice',\n /a=ice-(?:pwd|ufrag):[^\\r\\n\\\\\"]*/gi,\n (match) => `${match.slice(0, match.indexOf(':') + 1)}[redacted]`,\n ),\n sdpRule('sdes', /a=crypto:[^\\r\\n\\\\\"]*/gi, () => 'a=crypto:[redacted]'),\n sdpRule(\n 'fingerprint',\n /a=fingerprint:[^\\r\\n\\\\\"]*/gi,\n () => 'a=fingerprint:[redacted]',\n ),\n sdpRule(\n 'origin',\n /(?:^|[\\r\\n]|\\\\[rn])o=[^\\s]+/g,\n (match) => `${match.slice(0, match.indexOf('o=') + 2)}[redacted]`,\n ),\n sdpRule(\n 'mediaIdentity',\n /a=(?:msid|identity):[^\\r\\n\\\\\"]*/gi,\n (match) => `${match.slice(0, match.indexOf(':') + 1)}[redacted]`,\n ),\n sdpRule(\n 'sourceIdentity',\n /(?:^|[\\r\\n])a=ssrc:\\d+[ \\t]+(?:cname|msid|mslabel|label):[^\\r\\n]*/gi,\n (match) =>\n `${match.slice(0, match.indexOf(':', match.indexOf(':') + 1) + 1)}[redacted]`,\n ),\n sdpRule(\n 'serializedSourceIdentity',\n /(?:\\\\[rn]|(?<=\"))a=ssrc:\\d+[ \\t]+(?:cname|msid|mslabel|label):(?:\\\\(?![rn])[^\\r\\n]|[^\\r\\n\\\\\"])*/gi,\n (match) =>\n `${match.slice(0, match.indexOf(':', match.indexOf(':') + 1) + 1)}[redacted]`,\n ),\n sdpRule(\n 'localAddress',\n /(?<![\\w-])[\\w-]+\\.local\\b/gi,\n () => '[local-address]',\n ),\n sdpRule(\n 'turn',\n /(?:\"(?:credential|password|username)\"\\s*:\\s*(?:\"(?:\\\\.|[^\"\\\\])*\"|[^,}\\s]+)|(?:credential|password|username)\\s*=\\s*(?:\"(?:\\\\.|[^\"\\\\])*\"|[^,}\\s]+))/gi,\n (match) => `${match.slice(0, match.search(/[:=]/) + 1)}\"[redacted]\"`,\n ),\n TEXT_RULES.ipv4,\n TEXT_RULES.ipv6,\n TEXT_RULES.urlCredentials,\n TEXT_RULES.sipUri,\n TEXT_RULES.telUri,\n sdpRule('dtmf', /Signal\\s*=\\s*[^\\r\\n]+/gi, () => 'Signal=*'),\n ]);\n}\n\nexport function describeSipMessage(text) {\n const first = text.split(/\\r?\\n/, 1)[0];\n const result = {};\n if (/^SIP\\/2\\.0\\s+\\d{3}/i.test(first))\n result.status = Number(first.split(/\\s+/)[1]);\n else {\n const match = /^([A-Z]+)\\s+\\S+\\s+SIP\\/2\\.0/i.exec(first);\n if (match) result.method = match[1];\n }\n const callId = /^(?:Call-ID|i)\\s*:\\s*([^\\r\\n]+)/im.exec(text);\n const cseq = /^CSeq\\s*:\\s*([^\\r\\n]+)/im.exec(text);\n if (callId) result.callId = callId[1].trim();\n if (cseq) result.cseq = cseq[1].trim();\n return Object.freeze(result);\n}\n\nfunction redactSipMessage(\n text,\n { redactor, redactDisplayName },\n TEXT_RULES,\n SDP_TEXT_RULES,\n) {\n if (\n redactDisplayName !== undefined &&\n typeof redactDisplayName !== 'function'\n )\n throw new TypeError(SIP_ERRORS.CALLBACK);\n const limit = redactor.limits.maxStringLength * 4;\n if (text.length > limit) return MARKERS.LIMIT;\n const unfolded = text.replace(/\\r?\\n[ \\t]+/g, ' ');\n const separator = /\\r?\\n\\r?\\n/.exec(unfolded);\n let headers = separator ? unfolded.slice(0, separator.index) : unfolded;\n let body = separator\n ? unfolded.slice(separator.index + separator[0].length)\n : '';\n headers = headers.split(/\\r?\\n/).join('\\r\\n');\n const budget = {\n size: headers.length + body.length + (separator ? 4 : 0),\n limit,\n };\n resize(budget, 0);\n const replace = (value, pattern, render) =>\n value.replace(pattern, (match) => {\n const replacement = render(match);\n resize(budget, replacement.length - match.length);\n return replacement;\n });\n const contentType =\n /^(?:Content-Type|c)\\s*:\\s*([^;\\r\\n]+)/im\n .exec(headers)?.[1]\n .trim()\n .toLowerCase() ?? 'unknown';\n headers = replace(\n headers,\n /^(?:(?:Proxy-)?Authorization|WWW-Authenticate|Proxy-Authenticate)\\s*:[^\\r\\n]*/gim,\n (header) =>\n hasUnclosedQuote(header)\n ? `${header.slice(0, header.indexOf(':'))}: [redacted]`\n : header.replace(\n /\\b(username|response|nonce|cnonce|opaque)\\s*=\\s*(?:\"(?:\\\\.|[^\"\\\\])*\"|[^,\\s]+)/gi,\n (_, key) => `${key}=\"[redacted]\"`,\n ),\n );\n headers = headers\n .split(/\\r?\\n/)\n .map((line) => {\n const header =\n /^((?:From|To|Contact|P-Asserted-Identity|P-Preferred-Identity|Refer-To|Referred-By|Diversion|History-Info|Remote-Party-ID|P-Called-Party-ID|Reply-To|f|t|m|r|b)\\s*:)(.*)$/i.exec(\n line,\n );\n if (!header) return line;\n const value = redactIdentity(\n header[2],\n redactor,\n redactDisplayName,\n budget,\n );\n return `${header[1]}${value}`;\n })\n .join('\\r\\n');\n for (const rule of [\n TEXT_RULES.urlCredentials,\n TEXT_RULES.sipUri,\n TEXT_RULES.telUri,\n ])\n headers = replace(headers, rule.pattern, (match) => rule.replace(match));\n if (body) {\n if (\n contentType === 'application/sdp' ||\n contentType === 'application/dtmf-relay'\n ) {\n for (const rule of SDP_TEXT_RULES)\n body = replace(body, rule.pattern, (match) => rule.replace(match));\n } else {\n const replacement = `[${contentType} ${new TextEncoder().encode(body).length} bytes]`;\n resize(budget, replacement.length - body.length);\n body = replacement;\n }\n }\n const addresses = (value) => {\n const ipv4 = replace(value, TEXT_RULES.ipv4.pattern, (match) =>\n TEXT_RULES.ipv4.replace(match),\n );\n return replace(ipv4, TEXT_RULES.ipv6.pattern, (match) =>\n TEXT_RULES.ipv6.replace(match),\n );\n };\n return `${addresses(headers)}${separator ? `\\r\\n\\r\\n${body}` : ''}`;\n}\n\nexport function createSipTools(textRules) {\n if (\n !textRules?.ipv4 ||\n !textRules.ipv6 ||\n !textRules.urlCredentials ||\n !textRules.sipUri ||\n !textRules.telUri\n )\n throw new TypeError('SIP text rules are required');\n const SDP_TEXT_RULES = createSdpTextRules(textRules);\n return Object.freeze({\n SDP_TEXT_RULES,\n redactSipMessage: (text, options) =>\n redactSipMessage(text, options, textRules, SDP_TEXT_RULES),\n describeSipMessage,\n });\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
LoggingScheduler,
|
|
3
|
+
LogQuery,
|
|
4
|
+
LogRecord,
|
|
5
|
+
LogStoreStatus,
|
|
6
|
+
} from "../index.cjs";
|
|
7
|
+
import type { OVERFLOW_STRATEGIES } from "./constants.cjs";
|
|
8
|
+
|
|
9
|
+
type ValueOf<Values> = Values[keyof Values];
|
|
10
|
+
|
|
11
|
+
export type LogStoreError = Error & Readonly<{ code: string }>;
|
|
12
|
+
export type LogOverflowStrategy = ValueOf<typeof OVERFLOW_STRATEGIES>;
|
|
13
|
+
export type MemoryLogStoreOptions = Readonly<{
|
|
14
|
+
maxSizePerArea?: Readonly<Record<string, number>>;
|
|
15
|
+
defaultMaxSizePerArea?: number;
|
|
16
|
+
maxTotalSize?: number;
|
|
17
|
+
maxAgeMs?: number;
|
|
18
|
+
maxRecordsPerArea?: Readonly<Record<string, number>>;
|
|
19
|
+
defaultMaxRecordsPerArea?: number;
|
|
20
|
+
now?: () => number;
|
|
21
|
+
overflowStrategy?: LogOverflowStrategy;
|
|
22
|
+
onRotate?: (
|
|
23
|
+
source: Readonly<{
|
|
24
|
+
query: (query: LogQuery) => Promise<readonly LogRecord[]>;
|
|
25
|
+
getStatus: () => LogStoreStatus;
|
|
26
|
+
}>,
|
|
27
|
+
) => void | Promise<void>;
|
|
28
|
+
isRotationEnabled?: () => boolean;
|
|
29
|
+
scheduler?: LoggingScheduler;
|
|
30
|
+
onError?: (error: LogStoreError) => void;
|
|
31
|
+
}>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
LoggingScheduler,
|
|
3
|
+
LogQuery,
|
|
4
|
+
LogRecord,
|
|
5
|
+
LogStoreStatus,
|
|
6
|
+
} from '../index.js';
|
|
7
|
+
import type { OVERFLOW_STRATEGIES } from './constants.js';
|
|
8
|
+
|
|
9
|
+
type ValueOf<Values> = Values[keyof Values];
|
|
10
|
+
|
|
11
|
+
export type LogStoreError = Error & Readonly<{ code: string }>;
|
|
12
|
+
export type LogOverflowStrategy = ValueOf<typeof OVERFLOW_STRATEGIES>;
|
|
13
|
+
export type MemoryLogStoreOptions = Readonly<{
|
|
14
|
+
maxSizePerArea?: Readonly<Record<string, number>>;
|
|
15
|
+
defaultMaxSizePerArea?: number;
|
|
16
|
+
maxTotalSize?: number;
|
|
17
|
+
maxAgeMs?: number;
|
|
18
|
+
maxRecordsPerArea?: Readonly<Record<string, number>>;
|
|
19
|
+
defaultMaxRecordsPerArea?: number;
|
|
20
|
+
now?: () => number;
|
|
21
|
+
overflowStrategy?: LogOverflowStrategy;
|
|
22
|
+
onRotate?: (
|
|
23
|
+
source: Readonly<{
|
|
24
|
+
query: (query: LogQuery) => Promise<readonly LogRecord[]>;
|
|
25
|
+
getStatus: () => LogStoreStatus;
|
|
26
|
+
}>,
|
|
27
|
+
) => void | Promise<void>;
|
|
28
|
+
isRotationEnabled?: () => boolean;
|
|
29
|
+
scheduler?: LoggingScheduler;
|
|
30
|
+
onError?: (error: LogStoreError) => void;
|
|
31
|
+
}>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const UPLOAD_LIMITS: Readonly<{
|
|
2
|
+
MAX_INTERVAL_MS: 2147483647;
|
|
3
|
+
}>;
|
|
4
|
+
export const UPLOAD_OUTBOX_METHODS: Readonly<{
|
|
5
|
+
WRITE: "write";
|
|
6
|
+
CAPTURE: "capture";
|
|
7
|
+
FLUSH: "flush";
|
|
8
|
+
NEXT_BATCH: "nextBatch";
|
|
9
|
+
ACKNOWLEDGE: "acknowledge";
|
|
10
|
+
GET_STATUS: "getStatus";
|
|
11
|
+
}>;
|
|
12
|
+
export const UPLOAD_STORAGE_MODES: Readonly<{
|
|
13
|
+
MEMORY: "memory";
|
|
14
|
+
PERSISTENT: "persistent";
|
|
15
|
+
FAILED: "failed";
|
|
16
|
+
STOPPED: "stopped";
|
|
17
|
+
}>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const UPLOAD_LIMITS: Readonly<{
|
|
2
|
+
MAX_INTERVAL_MS: 2147483647;
|
|
3
|
+
}>;
|
|
4
|
+
export const UPLOAD_OUTBOX_METHODS: Readonly<{
|
|
5
|
+
WRITE: "write";
|
|
6
|
+
CAPTURE: "capture";
|
|
7
|
+
FLUSH: "flush";
|
|
8
|
+
NEXT_BATCH: "nextBatch";
|
|
9
|
+
ACKNOWLEDGE: "acknowledge";
|
|
10
|
+
GET_STATUS: "getStatus";
|
|
11
|
+
}>;
|
|
12
|
+
export const UPLOAD_STORAGE_MODES: Readonly<{
|
|
13
|
+
MEMORY: "memory";
|
|
14
|
+
PERSISTENT: "persistent";
|
|
15
|
+
FAILED: "failed";
|
|
16
|
+
STOPPED: "stopped";
|
|
17
|
+
}>;
|