@node9/proxy 2.36.0 → 2.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +954 -233
- package/dist/cli.mjs +954 -233
- package/dist/dashboard.mjs +305 -2
- package/dist/index.js +298 -1
- package/dist/index.mjs +298 -1
- package/dist/scan-ink.mjs +303 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -7713,7 +7713,7 @@ function* stringValues(obj, depth = 0) {
|
|
|
7713
7713
|
}
|
|
7714
7714
|
for (const v of Object.values(obj)) yield* stringValues(v, depth + 1);
|
|
7715
7715
|
}
|
|
7716
|
-
var import_picomatch, import_safe_regex2, import_picomatch2, import_mvdan_sh, import_safe_regex22, import_mvdan_sh2, import_safe_regex23, import_crypto2, import_crypto3, import_mvdan_sh3, import_crypto4, import_mvdan_sh4, import_crypto5, aws_default, bash_safe_default, docker_default, filesystem_default, github_default, k8s_default, mongodb_default, postgres_default, project_jail_default, redis_default, BUILTIN_SHIELDS, SSRF_MAX_HOST, METADATA_ADDRESSES, STRICT_TIERS, METADATA_HOSTNAMES, v4Octets, TIER_REASON, CHECK_TEXT, VERDICTS, CHECK_VERDICT_RANK, CHECK_GROUPS, ALL, BUILTIN_DANGEROUS_WORDS, PRODUCT_CHECKS, SHIELD_RULE_NAME, SHIELD_RULES_FOLDED_INTO_PRODUCT, CHECKS, CHECK_BY_ID, LEGACY_TO_ID, PROJECT_JAIL_BLOCK_READ, OVERRIDE_PREFIX, LABEL_WRAPPERS, LEGACY_READERS, INVISIBLE_RE, INVISIBLE_ONE, HOMOGLYPHS, HOMOGLYPH_RE, MAX_BLOBS, MIN_DECODED, BASE64_RUN_RE, HEX_RUN_RE, HEX_ESCAPE_RUN_RE, syntax, sharedParser, MESSAGE_FLAGS, SHELL_INTERPRETERS, DOWNLOAD_CMDS, NORMALIZE_CACHE_MAX, normalizeCache, AST_CACHE_MAX, astCache, PARSE_FAIL, MAX_READING_PAYLOADS, defaultExpansionOps, VARIABLE_READERS, FS_READ_TOOLS, GREP_SHAPE, PATTERN_VERBS, PATTERN_VERB_NAMES, GREP_FILE_OPERANDS, READER_VALUE_LETTERS, FILE_OPERAND_FLAGS, SCP_VALUE_FLAGS, CURL_SOURCE_FLAGS, CURL_VALUE_LETTERS, WGET_VALUE_LETTERS, TAR_VALUE_LETTERS, ZIP_VALUE_LETTERS, RSYNC_VALUE_LETTERS, RSYNC_SKIP, CP_VALUE_LETTERS, INSTALL_VALUE_LETTERS, COPY_VERBS, TAR_MODE_WORD, COPY_VERB_HEADS, FS_OP_PRESCREEN_RE, HOME_CACHE_ALLOWLIST, SENSITIVE_PATH_RULES, AST_FS_REGEX_RULES, SQL_DB_CLIS, SQL_DDL_RE, CHMOD_OPEN_PERM_TOKENS, COMMAND_WRAPPERS, INLINE_INTERPRETER, RUNNER_WRAPPERS, _redirStdinOps, _listOps, WRAPPER_TAKES_TARGET, FIND_EXEC_FLAGS, FS_MUTATION_TOOLS, INTERP_LEADING_TARGET, MAX_PAYLOAD_NESTING, payloadNesting, SCRIPT_RUNNERS, SCRIPT_RUNNER_VALUE_FLAGS, MAX_SCRIPT_OPERANDS, NET_BINARIES, VALUE_FLAGS, HOME_VARIABLES, assignmentTable, currentStmtOffset, PAYLOAD_BUDGET, payloadBudget, seenPayloads, UNANALYSABLE_NESTING, ASSIGNMENT_HEADS, AND_OP, OR_OP, AND_OR_OPS, MAX_CALL_DEPTH, MAX_CALL_WALKS, callDepth, callWalks, FS_OP_CACHE_MAX, fsOpCache, stripDotSlash, REDIR_TRUNCATE_OPS, REDIR_FILE_IN_OPS, REDIR_HEREDOC_OPS, FIND_OPTIONS, COPY_RULE_OF, isReaderWord, positionalAfter, NONE, UNKNOWN, MAX_REGEX_LENGTH, REGEX_CACHE_MAX, regexCache, FORBIDDEN_PATH_SEGMENTS, BASH_TOOL_NAMES, MCP_EXECUTORS, BUILTIN_FIELDS, ARGV_FIELDS, BARE_WORD, MAX_ARGV_CHARACTERS, syntax2, MAX_ALTERNATIVES, MAX_CALL_DEPTH2, MAX_CALL_WALKS2, POSITIONAL, MAX_DEPTH, MAX_PAYLOAD_DEPTH, unique, clone, SENDING_STDIN, DOWNLOAD_SHORT_VALUE, DOWNLOAD_LONG_VALUE, DOWNLOAD_OUTPUT_FLAGS, DOWNLOAD_DIR_FLAGS, base, quoteGlob, asWord, WRITES, READS, DUP_OUT, HERE_STRING, AND, OR, DEFAULT_OPS, SYSTEM_AUTH_FILES, SYSTEM_AUTH_DIRS, PASSWORD_HASH_FILES, STARTUP_NAMES, SYSTEM_DIRS, SYSTEM_DIRS_EXEMPT, UPLOAD_SYSTEM_DIRS, AGENT_INSTRUCTION_FILES, AGENT_INSTRUCTION_DIRS, LEGACY_SYSTEM_PATH_RE, exempt, RANK, BIP39_ENGLISH, BIP39_PUBLIC_VECTORS, indices, lengths, hash, MAX_MNEMONIC_HASHES, SECRET_VIEW_LIMITS, IBAN_LENGTH, IBAN_BBAN_SHAPE, B58, B58_INDEX, XPRV_VERSIONS, B62, CRC32_TABLE, GITHUB_TOKEN_RE, B64URL, B64URL_INDEX, CASK_TWO_ZERO_SUFFIX, CASK_FOUR_ZERO_SUFFIX, CF_ODD, CF_EVEN, SPANISH_LETTERS, HETU_CHARS, MAX, UNTRUSTED_TOOLS, SIGNALS, MENTION_QUOTE_RE, MENTION_WORD_RE, ASSIGNMENT_CONTEXT_RE, DLP_STOPWORDS, REFERENCE_VALUE_RE, IDENTIFIER_VALUE_RE, PATH_VALUE_RE, DOTTED_REFERENCE_RE, CONCATENATION_RE, EMAIL_VALUE_RE, FIXTURE_NAME_RE, DERIVATIVE_NAME_RE, QUERY_CREDENTIAL_VALUE_RE, OTP_SECRET_RE, OTP_DOC_SECRETS, ASSIGNED_SECRET_VALUE_RE, ASSIGNED_SECRET_NAME_RE, NAME_KEYWORD_RE, ARN_CONTEXT_RE, CIPHER_KEY_NAME_RE, CIPHER_NAME_PARTS, CIPHER_KEY_VALUE_RE, LARAVEL_KEY_VALUE_RE, SQL_PASSWORD_VALUE_RE, GRAFANA_KEY_VALUE_RE, BASIC_VALUE_RE, BASIC_PAIR_RE, OTP_CAPTURE_RE, DB_URL_PASSWORD_RE, DLP_PATTERNS, DLP_PATTERNS_GLOBAL, SENSITIVE_PATH_PATTERNS, SENSITIVE_PATH_REGEXES, MAX_DEPTH2, MAX_STRING_BYTES, MAX_JSON_PARSE_BYTES, DLP_SCAN_LIMITS, BATCH_SEPARATOR, ENCODED_RUN_RE, syntax3, NPM_INSTALL_VERBS, NPM_EXEC_VERBS, PNPM_INSTALL_VERBS, YARN_INSTALL_VERBS, BUN_INSTALL_VERBS, DLX_VERBS, NON_REGISTRY_RE, NPM_NAME_RE, EXACT_SEMVER_RE, NPM_VALUE_FLAGS, PNPM_VALUE_FLAGS, YARN_VALUE_FLAGS, BUN_VALUE_FLAGS, PIP_VALUE_FLAGS, UV_VALUE_FLAGS, POETRY_VALUE_FLAGS, PIPENV_VALUE_FLAGS, PIPX_VALUE_FLAGS, PY_SPEC_RE, PY_EXACT_RE, EXACT_VERSION_RE, GEM_NAME_RE, GEM_VALUE_FLAGS, BUNDLE_VALUE_FLAGS, CRATE_NAME_RE, CARGO_ADD_VALUE_FLAGS, CARGO_INSTALL_VALUE_FLAGS, GO_VALUE_FLAGS, GO_PATH_RE, NUGET_NAME_RE, DOTNET_ADD_VALUE_FLAGS, DOTNET_TOOL_VALUE_FLAGS, NUGET_VALUE_FLAGS, MAVEN_COORD_RE, COMPOSER_NAME_RE, COMPOSER_VALUE_FLAGS, EDITOR_HEADS, EXTENSION_ID_RE, MANAGER_HEADS, SHELLS, MAX_NESTING, SHELL_VALUE_FLAGS, TUNING_FIELDS, MAP_GOVERNED, KNOB_GOVERNED, CONFIGURABLE_CHECK_IDS, DEFAULT_EGRESS_ALLOWLIST, PRIVATE_HOST_SUFFIXES, SOURCE_COMMANDS, SINK_COMMANDS, OBFUSCATORS, SENSITIVE_PATTERNS, FLAGS_WITH_VALUES, DESTINATION_ARGS, MCP_DESTINATION_KEYS, ARGUMENT_SCAN_LIMITS, RUN_CHAR, runChar, VERDICT_RANK, SQL_DML_KEYWORDS, MAX_DESTINATIONS, MAX_SCAN_CHARS, EMAIL_RE, URL_RE, IBAN_RE, RECIPIENT_KEYS, DESTRUCTIVE_VERB_RE, PII_EMAIL_RE, PII_SSN_RE, PII_PHONE_RE, PII_CC16_RE, PII_CC15_RE, PII_CC14_RE, PII_CC13_RE, PII_CC19_RE, CARD_PATTERNS, PII_ROUTING_RE, ROUTING_LABEL_RE, ROUTING_LABEL_WINDOW, NATIONAL_ID_SHAPES, NATIONAL_ID_LABEL_RE, NATIONAL_ID_LABEL_WINDOW, NATIONAL_ID_GUARD_RE, PII_IBAN_RE, REALTIME_PII_PATTERNS, MAX_PII_SCAN_BYTES, IBAN_DESTINATION_KEYS, WHOLE_IBAN_RE, JSON_ESCAPE_RE, JSON_ESCAPES, MASKED_KINDS, ENTRY_RE, IBAN_TEXT_RE, EMAIL_TEXT_RE, ACCOUNT_KEY_RE, ACCOUNT_VALUE_RE, MAX_MASK_DEPTH, syntax4, EMPTY, CURL_SEND_FLAGS, WGET_SEND_FLAGS, IWR_SEND_FLAGS, WRITE_METHODS, GH_READ, GH_WRITE, GH_HOSTNAME_FLAGS, GH_REPO_VALUE_FLAGS, GH_API_VALUE_FLAGS, GIT_FETCH, PUBLISH, SHELLS2, OWN_HEADS, MAX_DEPTH3, CWD_CHANGERS, TERMINAL_ESCAPE_RE, CONTROL_CHAR_RE, LOOP_MAX_RECORDS, FINDING_TO_SIGNAL, SCAN_SIGNAL_WEIGHTS, LOOP_THRESHOLD_FOR_WASTE, MAX_BLAST_PATH, DESTRUCTIVE_OP_RE, SENSITIVE_PATH_RE, FILE_TOOLS, CANARY_MIN_LENGTH, MAX_TEXT, MAX_DEPTH4, MAX_JSON_PARSE, URL_DEPTH, B64_DEPTH, MIN_SEGMENT, SEPARATORS, stripSeparators, looksText, CANARY_DECODERS, VIEWS, LONG_OUTPUT_THRESHOLD_BYTES, CANONICAL_EXTRACTOR_VERSION, DEDUPE_PREVIEW_LEN, ENGINE_VERSION;
|
|
7716
|
+
var import_picomatch, import_safe_regex2, import_picomatch2, import_mvdan_sh, import_safe_regex22, import_mvdan_sh2, import_safe_regex23, import_crypto2, import_crypto3, import_mvdan_sh3, import_crypto4, import_mvdan_sh4, import_crypto5, aws_default, bash_safe_default, docker_default, filesystem_default, finance_default, github_default, identity_default, k8s_default, mongodb_default, postgres_default, project_jail_default, publishing_default, redis_default, BUILTIN_SHIELDS, ACTION_SHIELD_NAMES, SSRF_MAX_HOST, METADATA_ADDRESSES, STRICT_TIERS, METADATA_HOSTNAMES, v4Octets, TIER_REASON, CHECK_TEXT, VERDICTS, CHECK_VERDICT_RANK, CHECK_GROUPS, ALL, BUILTIN_DANGEROUS_WORDS, PRODUCT_CHECKS, SHIELD_RULE_NAME, SHIELD_RULES_FOLDED_INTO_PRODUCT, CHECKS, CHECK_BY_ID, LEGACY_TO_ID, PROJECT_JAIL_BLOCK_READ, OVERRIDE_PREFIX, LABEL_WRAPPERS, LEGACY_READERS, INVISIBLE_RE, INVISIBLE_ONE, HOMOGLYPHS, HOMOGLYPH_RE, MAX_BLOBS, MIN_DECODED, BASE64_RUN_RE, HEX_RUN_RE, HEX_ESCAPE_RUN_RE, syntax, sharedParser, MESSAGE_FLAGS, SHELL_INTERPRETERS, DOWNLOAD_CMDS, NORMALIZE_CACHE_MAX, normalizeCache, AST_CACHE_MAX, astCache, PARSE_FAIL, MAX_READING_PAYLOADS, defaultExpansionOps, VARIABLE_READERS, FS_READ_TOOLS, GREP_SHAPE, PATTERN_VERBS, PATTERN_VERB_NAMES, GREP_FILE_OPERANDS, READER_VALUE_LETTERS, FILE_OPERAND_FLAGS, SCP_VALUE_FLAGS, CURL_SOURCE_FLAGS, CURL_VALUE_LETTERS, WGET_VALUE_LETTERS, TAR_VALUE_LETTERS, ZIP_VALUE_LETTERS, RSYNC_VALUE_LETTERS, RSYNC_SKIP, CP_VALUE_LETTERS, INSTALL_VALUE_LETTERS, COPY_VERBS, TAR_MODE_WORD, COPY_VERB_HEADS, FS_OP_PRESCREEN_RE, HOME_CACHE_ALLOWLIST, SENSITIVE_PATH_RULES, AST_FS_REGEX_RULES, SQL_DB_CLIS, SQL_DDL_RE, CHMOD_OPEN_PERM_TOKENS, COMMAND_WRAPPERS, INLINE_INTERPRETER, RUNNER_WRAPPERS, _redirStdinOps, _listOps, WRAPPER_TAKES_TARGET, FIND_EXEC_FLAGS, FS_MUTATION_TOOLS, INTERP_LEADING_TARGET, MAX_PAYLOAD_NESTING, payloadNesting, SCRIPT_RUNNERS, SCRIPT_RUNNER_VALUE_FLAGS, MAX_SCRIPT_OPERANDS, NET_BINARIES, VALUE_FLAGS, HOME_VARIABLES, assignmentTable, currentStmtOffset, PAYLOAD_BUDGET, payloadBudget, seenPayloads, UNANALYSABLE_NESTING, ASSIGNMENT_HEADS, AND_OP, OR_OP, AND_OR_OPS, MAX_CALL_DEPTH, MAX_CALL_WALKS, callDepth, callWalks, FS_OP_CACHE_MAX, fsOpCache, stripDotSlash, REDIR_TRUNCATE_OPS, REDIR_FILE_IN_OPS, REDIR_HEREDOC_OPS, FIND_OPTIONS, COPY_RULE_OF, isReaderWord, positionalAfter, NONE, UNKNOWN, MAX_REGEX_LENGTH, REGEX_CACHE_MAX, regexCache, FORBIDDEN_PATH_SEGMENTS, BASH_TOOL_NAMES, MCP_EXECUTORS, BUILTIN_FIELDS, ARGV_FIELDS, BARE_WORD, MAX_ARGV_CHARACTERS, syntax2, MAX_ALTERNATIVES, MAX_CALL_DEPTH2, MAX_CALL_WALKS2, POSITIONAL, MAX_DEPTH, MAX_PAYLOAD_DEPTH, unique, clone, SENDING_STDIN, DOWNLOAD_SHORT_VALUE, DOWNLOAD_LONG_VALUE, DOWNLOAD_OUTPUT_FLAGS, DOWNLOAD_DIR_FLAGS, base, quoteGlob, asWord, WRITES, READS, DUP_OUT, HERE_STRING, AND, OR, DEFAULT_OPS, SYSTEM_AUTH_FILES, SYSTEM_AUTH_DIRS, PASSWORD_HASH_FILES, STARTUP_NAMES, SYSTEM_DIRS, SYSTEM_DIRS_EXEMPT, UPLOAD_SYSTEM_DIRS, AGENT_INSTRUCTION_FILES, AGENT_INSTRUCTION_DIRS, LEGACY_SYSTEM_PATH_RE, exempt, RANK, BIP39_ENGLISH, BIP39_PUBLIC_VECTORS, indices, lengths, hash, MAX_MNEMONIC_HASHES, SECRET_VIEW_LIMITS, IBAN_LENGTH, IBAN_BBAN_SHAPE, B58, B58_INDEX, XPRV_VERSIONS, B62, CRC32_TABLE, GITHUB_TOKEN_RE, B64URL, B64URL_INDEX, CASK_TWO_ZERO_SUFFIX, CASK_FOUR_ZERO_SUFFIX, CF_ODD, CF_EVEN, SPANISH_LETTERS, HETU_CHARS, MAX, UNTRUSTED_TOOLS, SIGNALS, MENTION_QUOTE_RE, MENTION_WORD_RE, ASSIGNMENT_CONTEXT_RE, DLP_STOPWORDS, REFERENCE_VALUE_RE, IDENTIFIER_VALUE_RE, PATH_VALUE_RE, DOTTED_REFERENCE_RE, CONCATENATION_RE, EMAIL_VALUE_RE, FIXTURE_NAME_RE, DERIVATIVE_NAME_RE, QUERY_CREDENTIAL_VALUE_RE, OTP_SECRET_RE, OTP_DOC_SECRETS, ASSIGNED_SECRET_VALUE_RE, ASSIGNED_SECRET_NAME_RE, NAME_KEYWORD_RE, ARN_CONTEXT_RE, CIPHER_KEY_NAME_RE, CIPHER_NAME_PARTS, CIPHER_KEY_VALUE_RE, LARAVEL_KEY_VALUE_RE, SQL_PASSWORD_VALUE_RE, GRAFANA_KEY_VALUE_RE, BASIC_VALUE_RE, BASIC_PAIR_RE, OTP_CAPTURE_RE, DB_URL_PASSWORD_RE, DLP_PATTERNS, DLP_PATTERNS_GLOBAL, SENSITIVE_PATH_PATTERNS, SENSITIVE_PATH_REGEXES, MAX_DEPTH2, MAX_STRING_BYTES, MAX_JSON_PARSE_BYTES, DLP_SCAN_LIMITS, BATCH_SEPARATOR, ENCODED_RUN_RE, syntax3, NPM_INSTALL_VERBS, NPM_EXEC_VERBS, PNPM_INSTALL_VERBS, YARN_INSTALL_VERBS, BUN_INSTALL_VERBS, DLX_VERBS, NON_REGISTRY_RE, NPM_NAME_RE, EXACT_SEMVER_RE, NPM_VALUE_FLAGS, PNPM_VALUE_FLAGS, YARN_VALUE_FLAGS, BUN_VALUE_FLAGS, PIP_VALUE_FLAGS, UV_VALUE_FLAGS, POETRY_VALUE_FLAGS, PIPENV_VALUE_FLAGS, PIPX_VALUE_FLAGS, PY_SPEC_RE, PY_EXACT_RE, EXACT_VERSION_RE, GEM_NAME_RE, GEM_VALUE_FLAGS, BUNDLE_VALUE_FLAGS, CRATE_NAME_RE, CARGO_ADD_VALUE_FLAGS, CARGO_INSTALL_VALUE_FLAGS, GO_VALUE_FLAGS, GO_PATH_RE, NUGET_NAME_RE, DOTNET_ADD_VALUE_FLAGS, DOTNET_TOOL_VALUE_FLAGS, NUGET_VALUE_FLAGS, MAVEN_COORD_RE, COMPOSER_NAME_RE, COMPOSER_VALUE_FLAGS, EDITOR_HEADS, EXTENSION_ID_RE, MANAGER_HEADS, SHELLS, MAX_NESTING, SHELL_VALUE_FLAGS, TUNING_FIELDS, MAP_GOVERNED, KNOB_GOVERNED, CONFIGURABLE_CHECK_IDS, DEFAULT_EGRESS_ALLOWLIST, PRIVATE_HOST_SUFFIXES, SOURCE_COMMANDS, SINK_COMMANDS, OBFUSCATORS, SENSITIVE_PATTERNS, FLAGS_WITH_VALUES, DESTINATION_ARGS, MCP_DESTINATION_KEYS, ARGUMENT_SCAN_LIMITS, RUN_CHAR, runChar, VERDICT_RANK, SQL_DML_KEYWORDS, MAX_DESTINATIONS, MAX_SCAN_CHARS, EMAIL_RE, URL_RE, IBAN_RE, RECIPIENT_KEYS, DESTRUCTIVE_VERB_RE, PII_EMAIL_RE, PII_SSN_RE, PII_PHONE_RE, PII_CC16_RE, PII_CC15_RE, PII_CC14_RE, PII_CC13_RE, PII_CC19_RE, CARD_PATTERNS, PII_ROUTING_RE, ROUTING_LABEL_RE, ROUTING_LABEL_WINDOW, NATIONAL_ID_SHAPES, NATIONAL_ID_LABEL_RE, NATIONAL_ID_LABEL_WINDOW, NATIONAL_ID_GUARD_RE, PII_IBAN_RE, REALTIME_PII_PATTERNS, MAX_PII_SCAN_BYTES, IBAN_DESTINATION_KEYS, WHOLE_IBAN_RE, JSON_ESCAPE_RE, JSON_ESCAPES, MASKED_KINDS, ENTRY_RE, IBAN_TEXT_RE, EMAIL_TEXT_RE, ACCOUNT_KEY_RE, ACCOUNT_VALUE_RE, MAX_MASK_DEPTH, syntax4, EMPTY, CURL_SEND_FLAGS, WGET_SEND_FLAGS, IWR_SEND_FLAGS, WRITE_METHODS, GH_READ, GH_WRITE, GH_HOSTNAME_FLAGS, GH_REPO_VALUE_FLAGS, GH_API_VALUE_FLAGS, GIT_FETCH, PUBLISH, SHELLS2, OWN_HEADS, MAX_DEPTH3, CWD_CHANGERS, TERMINAL_ESCAPE_RE, CONTROL_CHAR_RE, LOOP_MAX_RECORDS, FINDING_TO_SIGNAL, SCAN_SIGNAL_WEIGHTS, LOOP_THRESHOLD_FOR_WASTE, MAX_BLAST_PATH, DESTRUCTIVE_OP_RE, SENSITIVE_PATH_RE, FILE_TOOLS, CANARY_MIN_LENGTH, MAX_TEXT, MAX_DEPTH4, MAX_JSON_PARSE, URL_DEPTH, B64_DEPTH, MIN_SEGMENT, SEPARATORS, stripSeparators, looksText, CANARY_DECODERS, VIEWS, LONG_OUTPUT_THRESHOLD_BYTES, CANONICAL_EXTRACTOR_VERSION, DEDUPE_PREVIEW_LEN, ENGINE_VERSION;
|
|
7717
7717
|
var init_dist = __esm({
|
|
7718
7718
|
"packages/policy-engine/dist/index.mjs"() {
|
|
7719
7719
|
"use strict";
|
|
@@ -8031,6 +8031,77 @@ var init_dist = __esm({
|
|
|
8031
8031
|
],
|
|
8032
8032
|
dangerousWords: ["wipefs"]
|
|
8033
8033
|
};
|
|
8034
|
+
finance_default = {
|
|
8035
|
+
name: "finance",
|
|
8036
|
+
description: "Asks before money moves through a payment or banking app (refunds, payouts, transfers, charges, invoices), whatever the request said. Reads are never asked about.",
|
|
8037
|
+
aliases: ["payments", "money"],
|
|
8038
|
+
smartRules: [
|
|
8039
|
+
{
|
|
8040
|
+
name: "shield:finance:review-refund",
|
|
8041
|
+
tool: "{,mcp__*__}{create_refund,refund_payment,refund_charge,refund_order,issue_refund}",
|
|
8042
|
+
conditions: [],
|
|
8043
|
+
verdict: "review",
|
|
8044
|
+
reason: "A refund returns money to a customer. node9 asks before money moves, whatever the request said (Finance shield)."
|
|
8045
|
+
},
|
|
8046
|
+
{
|
|
8047
|
+
name: "shield:finance:review-payout",
|
|
8048
|
+
tool: "{,mcp__*__}{create_payout,send_payout,payout,create_payouts_batch}",
|
|
8049
|
+
conditions: [],
|
|
8050
|
+
verdict: "review",
|
|
8051
|
+
reason: "A payout moves the balance to a bank account. node9 asks before money moves (Finance shield)."
|
|
8052
|
+
},
|
|
8053
|
+
{
|
|
8054
|
+
name: "shield:finance:review-transfer",
|
|
8055
|
+
tool: "{,mcp__*__}{transfer_create,transfer_authorization_create,create_transfer,transfer_money,transfer_funds,send_money,wire_transfer,create_wire,schedule_transaction,update_scheduled_transaction,create_transaction}",
|
|
8056
|
+
conditions: [],
|
|
8057
|
+
verdict: "review",
|
|
8058
|
+
reason: "A transfer moves money between accounts. node9 asks before money moves (Finance shield)."
|
|
8059
|
+
},
|
|
8060
|
+
{
|
|
8061
|
+
name: "shield:finance:review-charge",
|
|
8062
|
+
tool: "{,mcp__*__}{create_payment_intent,confirm_payment_intent,capture_payment_intent,create_charge,create_payment,capture_payment,capture_order,create_order,authorize_order,create_checkout_session}",
|
|
8063
|
+
conditions: [],
|
|
8064
|
+
verdict: "review",
|
|
8065
|
+
reason: "This charges a card or captures a payment. node9 asks before money moves (Finance shield)."
|
|
8066
|
+
},
|
|
8067
|
+
{
|
|
8068
|
+
name: "shield:finance:review-payment-link",
|
|
8069
|
+
tool: "{,mcp__*__}{create_payment_link,create_invoice,finalize_invoice,send_invoice,pay_invoice,create_invoice_item}",
|
|
8070
|
+
conditions: [],
|
|
8071
|
+
verdict: "review",
|
|
8072
|
+
reason: "This bills someone or creates a link that charges a card. node9 asks before money moves (Finance shield)."
|
|
8073
|
+
},
|
|
8074
|
+
{
|
|
8075
|
+
name: "shield:finance:review-subscription",
|
|
8076
|
+
tool: "{,mcp__*__}{create_subscription,cancel_subscription,update_subscription,pause_subscription,resume_subscription}",
|
|
8077
|
+
conditions: [],
|
|
8078
|
+
verdict: "review",
|
|
8079
|
+
reason: "A subscription starts or stops recurring charges. node9 asks before money moves (Finance shield)."
|
|
8080
|
+
},
|
|
8081
|
+
{
|
|
8082
|
+
name: "shield:finance:review-dispute",
|
|
8083
|
+
tool: "{,mcp__*__}{update_dispute,accept_dispute,close_dispute}",
|
|
8084
|
+
conditions: [],
|
|
8085
|
+
verdict: "review",
|
|
8086
|
+
reason: "This answers or concedes a chargeback. node9 asks before money moves (Finance shield)."
|
|
8087
|
+
},
|
|
8088
|
+
{
|
|
8089
|
+
name: "shield:finance:review-card",
|
|
8090
|
+
tool: "{,mcp__*__}{issue_card,create_virtual_card,create_issuing_card,update_card_limit}",
|
|
8091
|
+
conditions: [],
|
|
8092
|
+
verdict: "review",
|
|
8093
|
+
reason: "This issues a card or changes its limit. node9 asks before money moves (Finance shield)."
|
|
8094
|
+
},
|
|
8095
|
+
{
|
|
8096
|
+
name: "shield:finance:review-withdraw",
|
|
8097
|
+
tool: "{,mcp__*__}{withdraw,withdraw_funds,create_withdrawal,request_withdrawal}",
|
|
8098
|
+
conditions: [],
|
|
8099
|
+
verdict: "review",
|
|
8100
|
+
reason: "A withdrawal moves money out. node9 asks before money moves (Finance shield)."
|
|
8101
|
+
}
|
|
8102
|
+
],
|
|
8103
|
+
dangerousWords: []
|
|
8104
|
+
};
|
|
8034
8105
|
github_default = {
|
|
8035
8106
|
name: "github",
|
|
8036
8107
|
description: "Protects GitHub repositories from destructive AI operations",
|
|
@@ -8057,6 +8128,56 @@ var init_dist = __esm({
|
|
|
8057
8128
|
],
|
|
8058
8129
|
dangerousWords: []
|
|
8059
8130
|
};
|
|
8131
|
+
identity_default = {
|
|
8132
|
+
name: "identity",
|
|
8133
|
+
description: "Asks before a password, a key, a token, a role or a user changes in an identity or admin app, whatever the request said. Reads are never asked about.",
|
|
8134
|
+
aliases: ["access", "iam"],
|
|
8135
|
+
smartRules: [
|
|
8136
|
+
{
|
|
8137
|
+
name: "shield:identity:review-password",
|
|
8138
|
+
tool: "{,mcp__*__}{change_password,update_password,reset_password,set_password,expire_password,force_password_reset}",
|
|
8139
|
+
conditions: [],
|
|
8140
|
+
verdict: "review",
|
|
8141
|
+
reason: "This changes or resets a password. node9 asks before credentials change, whatever the request said (Identity shield)."
|
|
8142
|
+
},
|
|
8143
|
+
{
|
|
8144
|
+
name: "shield:identity:review-key",
|
|
8145
|
+
tool: "{,mcp__*__}{rotate_key,rotate_api_key,create_api_key,create_token,create_access_token,create_personal_access_token,regenerate_secret,rotate_secret,create_service_account_key,create_credential}",
|
|
8146
|
+
conditions: [],
|
|
8147
|
+
verdict: "review",
|
|
8148
|
+
reason: "This creates or rotates a key, token or secret. node9 asks before credentials change (Identity shield)."
|
|
8149
|
+
},
|
|
8150
|
+
{
|
|
8151
|
+
name: "shield:identity:review-access",
|
|
8152
|
+
tool: "{,mcp__*__}{grant_access,grant_permission,grant_role,revoke_access,revoke_permission,revoke_role,revoke_token,set_permission,set_permissions,set_role,assign_role,update_role,add_permission,remove_permission,attach_policy,detach_policy}",
|
|
8153
|
+
conditions: [],
|
|
8154
|
+
verdict: "review",
|
|
8155
|
+
reason: "This grants or revokes access. node9 asks before access changes (Identity shield)."
|
|
8156
|
+
},
|
|
8157
|
+
{
|
|
8158
|
+
name: "shield:identity:review-membership",
|
|
8159
|
+
tool: "{,mcp__*__}{add_member,remove_member,add_user_to_group,remove_user_from_group,add_collaborator,remove_collaborator,invite_user,invite_member,invite_user_to_slack,invite_users,add_org_member,remove_org_member,add_team_member,remove_team_member}",
|
|
8160
|
+
conditions: [],
|
|
8161
|
+
verdict: "review",
|
|
8162
|
+
reason: "This changes who belongs where. node9 asks before membership changes (Identity shield)."
|
|
8163
|
+
},
|
|
8164
|
+
{
|
|
8165
|
+
name: "shield:identity:review-user",
|
|
8166
|
+
tool: "{,mcp__*__}{create_user,delete_user,deactivate_user,suspend_user,activate_user,unlock_user,make_admin,promote_user,demote_user,update_user_role}",
|
|
8167
|
+
conditions: [],
|
|
8168
|
+
verdict: "review",
|
|
8169
|
+
reason: "This creates, removes or promotes an account. node9 asks before accounts change (Identity shield)."
|
|
8170
|
+
},
|
|
8171
|
+
{
|
|
8172
|
+
name: "shield:identity:review-mfa",
|
|
8173
|
+
tool: "{,mcp__*__}{reset_mfa,reset_factors,disable_mfa,enroll_factor,deactivate_factor}",
|
|
8174
|
+
conditions: [],
|
|
8175
|
+
verdict: "review",
|
|
8176
|
+
reason: "This changes a second factor. node9 asks before credentials change (Identity shield)."
|
|
8177
|
+
}
|
|
8178
|
+
],
|
|
8179
|
+
dangerousWords: []
|
|
8180
|
+
};
|
|
8060
8181
|
k8s_default = {
|
|
8061
8182
|
name: "k8s",
|
|
8062
8183
|
description: "Protects Kubernetes clusters from destructive AI operations",
|
|
@@ -8389,6 +8510,175 @@ var init_dist = __esm({
|
|
|
8389
8510
|
],
|
|
8390
8511
|
dangerousWords: []
|
|
8391
8512
|
};
|
|
8513
|
+
publishing_default = {
|
|
8514
|
+
name: "publishing",
|
|
8515
|
+
description: "Asks before something goes public or ships outside the organisation (a release, a package, a deploy, a post), whatever the request said. The same switch covers the shell commands that publish.",
|
|
8516
|
+
aliases: ["release", "deploy"],
|
|
8517
|
+
smartRules: [
|
|
8518
|
+
{
|
|
8519
|
+
name: "shield:publishing:review-release",
|
|
8520
|
+
tool: "{,mcp__*__}{create_release,publish_release,create_tag_release,update_release,promote_release}",
|
|
8521
|
+
conditions: [],
|
|
8522
|
+
verdict: "review",
|
|
8523
|
+
reason: "A release ships code to everyone who installs it. node9 asks before publishing, whatever the request said (Publishing shield)."
|
|
8524
|
+
},
|
|
8525
|
+
{
|
|
8526
|
+
name: "shield:publishing:review-package",
|
|
8527
|
+
tool: "{,mcp__*__}{publish_package,npm_publish,pypi_upload,publish_version,publish_extension}",
|
|
8528
|
+
conditions: [],
|
|
8529
|
+
verdict: "review",
|
|
8530
|
+
reason: "This publishes a package. node9 asks before publishing (Publishing shield)."
|
|
8531
|
+
},
|
|
8532
|
+
{
|
|
8533
|
+
name: "shield:publishing:review-deploy",
|
|
8534
|
+
tool: "{,mcp__*__}{deploy,create_deployment,deploy_site,promote_deployment,trigger_deploy,deploy_to_production,rollout}",
|
|
8535
|
+
conditions: [],
|
|
8536
|
+
verdict: "review",
|
|
8537
|
+
reason: "This deploys to an environment other people use. node9 asks before publishing (Publishing shield)."
|
|
8538
|
+
},
|
|
8539
|
+
{
|
|
8540
|
+
name: "shield:publishing:review-post",
|
|
8541
|
+
tool: "{,mcp__*__}{post_tweet,create_tweet,post_webpage,publish_post,create_post,publish_page,send_announcement,post_announcement,create_linkedin_post,schedule_post}",
|
|
8542
|
+
conditions: [],
|
|
8543
|
+
verdict: "review",
|
|
8544
|
+
reason: "This posts outside the organisation. node9 asks before publishing (Publishing shield)."
|
|
8545
|
+
},
|
|
8546
|
+
{
|
|
8547
|
+
name: "shield:publishing:review-visibility",
|
|
8548
|
+
tool: "{,mcp__*__}{set_visibility,make_public,set_public,publish_repository,change_visibility,update_visibility}",
|
|
8549
|
+
conditions: [],
|
|
8550
|
+
verdict: "review",
|
|
8551
|
+
reason: "This makes something public. node9 asks before publishing (Publishing shield)."
|
|
8552
|
+
},
|
|
8553
|
+
{
|
|
8554
|
+
name: "shield:publishing:review-npm-publish",
|
|
8555
|
+
tool: "bash",
|
|
8556
|
+
conditions: [
|
|
8557
|
+
{
|
|
8558
|
+
field: "command",
|
|
8559
|
+
op: "matches",
|
|
8560
|
+
value: "(?:^|[^\\w-])(?:npm|pnpm)(?![\\w-])[^;&|]{0,200}?\\s(?:publish)(?![\\w-])",
|
|
8561
|
+
flags: "i"
|
|
8562
|
+
}
|
|
8563
|
+
],
|
|
8564
|
+
verdict: "review",
|
|
8565
|
+
reason: "npm publish ships the package to everyone who installs it. node9 asks before publishing (Publishing shield)."
|
|
8566
|
+
},
|
|
8567
|
+
{
|
|
8568
|
+
name: "shield:publishing:review-yarn-publish",
|
|
8569
|
+
tool: "bash",
|
|
8570
|
+
conditions: [
|
|
8571
|
+
{
|
|
8572
|
+
field: "command",
|
|
8573
|
+
op: "matches",
|
|
8574
|
+
value: "(?:^|[^\\w-])(?:yarn)(?![\\w-])[^;&|]{0,200}?\\s(?:publish)(?![\\w-])",
|
|
8575
|
+
flags: "i"
|
|
8576
|
+
}
|
|
8577
|
+
],
|
|
8578
|
+
verdict: "review",
|
|
8579
|
+
reason: "yarn publish ships the package to everyone who installs it. node9 asks before publishing (Publishing shield)."
|
|
8580
|
+
},
|
|
8581
|
+
{
|
|
8582
|
+
name: "shield:publishing:review-twine-upload",
|
|
8583
|
+
tool: "bash",
|
|
8584
|
+
conditions: [
|
|
8585
|
+
{
|
|
8586
|
+
field: "command",
|
|
8587
|
+
op: "matches",
|
|
8588
|
+
value: "(?:^|[^\\w-])(?:twine)(?![\\w-])[^;&|]{0,200}?\\s(?:upload)(?![\\w-])",
|
|
8589
|
+
flags: "i"
|
|
8590
|
+
}
|
|
8591
|
+
],
|
|
8592
|
+
verdict: "review",
|
|
8593
|
+
reason: "twine upload publishes to PyPI. node9 asks before publishing (Publishing shield)."
|
|
8594
|
+
},
|
|
8595
|
+
{
|
|
8596
|
+
name: "shield:publishing:review-python-publish",
|
|
8597
|
+
tool: "bash",
|
|
8598
|
+
conditions: [
|
|
8599
|
+
{
|
|
8600
|
+
field: "command",
|
|
8601
|
+
op: "matches",
|
|
8602
|
+
value: "(?:^|[^\\w-])(?:poetry|uv|hatch|flit)(?![\\w-])[^;&|]{0,200}?\\s(?:publish)(?![\\w-])",
|
|
8603
|
+
flags: "i"
|
|
8604
|
+
}
|
|
8605
|
+
],
|
|
8606
|
+
verdict: "review",
|
|
8607
|
+
reason: "This publishes the Python package to PyPI. node9 asks before publishing (Publishing shield)."
|
|
8608
|
+
},
|
|
8609
|
+
{
|
|
8610
|
+
name: "shield:publishing:review-release-tool-publish",
|
|
8611
|
+
tool: "bash",
|
|
8612
|
+
conditions: [
|
|
8613
|
+
{
|
|
8614
|
+
field: "command",
|
|
8615
|
+
op: "matches",
|
|
8616
|
+
value: "(?:^|[^\\w-])(?:lerna|changeset|vsce|ovsx)(?![\\w-])[^;&|]{0,200}?\\s(?:publish)(?![\\w-])",
|
|
8617
|
+
flags: "i"
|
|
8618
|
+
}
|
|
8619
|
+
],
|
|
8620
|
+
verdict: "review",
|
|
8621
|
+
reason: "This publishes packages or an editor extension through a release tool. node9 asks before publishing (Publishing shield)."
|
|
8622
|
+
},
|
|
8623
|
+
{
|
|
8624
|
+
name: "shield:publishing:review-cargo-publish",
|
|
8625
|
+
tool: "bash",
|
|
8626
|
+
conditions: [
|
|
8627
|
+
{
|
|
8628
|
+
field: "command",
|
|
8629
|
+
op: "matches",
|
|
8630
|
+
value: "(?:^|[^\\w-])(?:cargo)(?![\\w-])[^;&|]{0,200}?\\s(?:publish)(?![\\w-])",
|
|
8631
|
+
flags: "i"
|
|
8632
|
+
}
|
|
8633
|
+
],
|
|
8634
|
+
verdict: "review",
|
|
8635
|
+
reason: "cargo publish ships the crate. node9 asks before publishing (Publishing shield)."
|
|
8636
|
+
},
|
|
8637
|
+
{
|
|
8638
|
+
name: "shield:publishing:review-gem-push",
|
|
8639
|
+
tool: "bash",
|
|
8640
|
+
conditions: [
|
|
8641
|
+
{
|
|
8642
|
+
field: "command",
|
|
8643
|
+
op: "matches",
|
|
8644
|
+
value: "(?:^|[^\\w-])(?:gem)(?![\\w-])[^;&|]{0,200}?\\s(?:push)(?![\\w-])",
|
|
8645
|
+
flags: "i"
|
|
8646
|
+
}
|
|
8647
|
+
],
|
|
8648
|
+
verdict: "review",
|
|
8649
|
+
reason: "gem push publishes to RubyGems. node9 asks before publishing (Publishing shield)."
|
|
8650
|
+
},
|
|
8651
|
+
{
|
|
8652
|
+
name: "shield:publishing:review-docker-push",
|
|
8653
|
+
tool: "bash",
|
|
8654
|
+
conditions: [
|
|
8655
|
+
{
|
|
8656
|
+
field: "command",
|
|
8657
|
+
op: "matches",
|
|
8658
|
+
value: "(?:^|[^\\w-])(?:docker|podman)(?![\\w-])[^;&|]{0,200}?\\s(?:push|--push)(?![\\w-])",
|
|
8659
|
+
flags: "i"
|
|
8660
|
+
}
|
|
8661
|
+
],
|
|
8662
|
+
verdict: "review",
|
|
8663
|
+
reason: "docker push publishes the image to a registry. node9 asks before publishing (Publishing shield)."
|
|
8664
|
+
},
|
|
8665
|
+
{
|
|
8666
|
+
name: "shield:publishing:review-gh-release",
|
|
8667
|
+
tool: "bash",
|
|
8668
|
+
conditions: [
|
|
8669
|
+
{
|
|
8670
|
+
field: "command",
|
|
8671
|
+
op: "matches",
|
|
8672
|
+
value: "(?:^|[^\\w-])(?:gh)(?![\\w-])[^;&|]{0,200}?\\srelease\\s+(?:create|upload|edit)(?![\\w-])",
|
|
8673
|
+
flags: "i"
|
|
8674
|
+
}
|
|
8675
|
+
],
|
|
8676
|
+
verdict: "review",
|
|
8677
|
+
reason: "gh release ships a release on GitHub. node9 asks before publishing (Publishing shield)."
|
|
8678
|
+
}
|
|
8679
|
+
],
|
|
8680
|
+
dangerousWords: []
|
|
8681
|
+
};
|
|
8392
8682
|
redis_default = {
|
|
8393
8683
|
name: "redis",
|
|
8394
8684
|
description: "Protects Redis instances from destructive AI operations",
|
|
@@ -8473,13 +8763,25 @@ var init_dist = __esm({
|
|
|
8473
8763
|
[bash_safe_default.name]: bash_safe_default,
|
|
8474
8764
|
[docker_default.name]: docker_default,
|
|
8475
8765
|
[filesystem_default.name]: filesystem_default,
|
|
8766
|
+
// Dangerous actions as category shields (node9Firewall#385): an MCP app's
|
|
8767
|
+
// money, credential and publishing tools, asked about whatever the request
|
|
8768
|
+
// said. One glob per rule covers the bare name the gateway sends and the
|
|
8769
|
+
// mcp__<server>__ name the agent hook sends.
|
|
8770
|
+
[finance_default.name]: finance_default,
|
|
8476
8771
|
[github_default.name]: github_default,
|
|
8772
|
+
[identity_default.name]: identity_default,
|
|
8477
8773
|
[k8s_default.name]: k8s_default,
|
|
8478
8774
|
[mongodb_default.name]: mongodb_default,
|
|
8479
8775
|
[postgres_default.name]: postgres_default,
|
|
8480
8776
|
[project_jail_default.name]: project_jail_default,
|
|
8777
|
+
[publishing_default.name]: publishing_default,
|
|
8481
8778
|
[redis_default.name]: redis_default
|
|
8482
8779
|
};
|
|
8780
|
+
ACTION_SHIELD_NAMES = /* @__PURE__ */ new Set([
|
|
8781
|
+
"finance",
|
|
8782
|
+
"identity",
|
|
8783
|
+
"publishing"
|
|
8784
|
+
]);
|
|
8483
8785
|
assertBuiltinShieldRegexesAreSafe();
|
|
8484
8786
|
SSRF_MAX_HOST = 253;
|
|
8485
8787
|
METADATA_ADDRESSES = /* @__PURE__ */ new Set([
|
|
@@ -30962,7 +31264,7 @@ function renderPanelScorecard(input, now = /* @__PURE__ */ new Date()) {
|
|
|
30962
31264
|
const hitShieldSet = new Set(
|
|
30963
31265
|
shieldImpacts.filter((i) => i.totalCatches > 0).map((i) => i.shieldName)
|
|
30964
31266
|
);
|
|
30965
|
-
const zeroHitAll = Object.keys(BUILTIN_SHIELDS).filter((name) => !hitShieldSet.has(name)).sort();
|
|
31267
|
+
const zeroHitAll = Object.keys(BUILTIN_SHIELDS).filter((name) => !hitShieldSet.has(name) && !ACTION_SHIELD_NAMES.has(name)).sort();
|
|
30966
31268
|
const zeroHitBuiltins = zeroHitAll.filter((name) => !enabledSet.has(name));
|
|
30967
31269
|
const zeroHitEnabled = zeroHitAll.filter((name) => enabledSet.has(name));
|
|
30968
31270
|
if (zeroHitEnabled.length > 0) {
|
|
@@ -31454,7 +31756,7 @@ function registerScanCommand(program2) {
|
|
|
31454
31756
|
const hitShieldIds = new Set(
|
|
31455
31757
|
summary.sections.filter((s) => s.sourceType === "shield" && s.shieldKey).map((s) => s.shieldKey)
|
|
31456
31758
|
);
|
|
31457
|
-
const noHitShields = Object.keys(SHIELDS).filter((n) => !hitShieldIds.has(n)).sort();
|
|
31759
|
+
const noHitShields = Object.keys(SHIELDS).filter((n) => !hitShieldIds.has(n) && !ACTION_SHIELD_NAMES.has(n)).sort();
|
|
31458
31760
|
const quietEnabled = noHitShields.filter((n) => enabledShieldSet.has(n));
|
|
31459
31761
|
const emptyShields = noHitShields.filter((n) => !enabledShieldSet.has(n));
|
|
31460
31762
|
if (quietEnabled.length > 0) {
|
|
@@ -39318,6 +39620,7 @@ var require_symbols = __commonJS({
|
|
|
39318
39620
|
kDestroy: /* @__PURE__ */ Symbol("destroy"),
|
|
39319
39621
|
kDispatch: /* @__PURE__ */ Symbol("dispatch"),
|
|
39320
39622
|
kUrl: /* @__PURE__ */ Symbol("url"),
|
|
39623
|
+
kRedirectCacheControl: /* @__PURE__ */ Symbol("redirect cache control"),
|
|
39321
39624
|
kWriting: /* @__PURE__ */ Symbol("writing"),
|
|
39322
39625
|
kResuming: /* @__PURE__ */ Symbol("resuming"),
|
|
39323
39626
|
kQueue: /* @__PURE__ */ Symbol("queue"),
|
|
@@ -41612,10 +41915,27 @@ var require_request = __commonJS({
|
|
|
41612
41915
|
return false;
|
|
41613
41916
|
}
|
|
41614
41917
|
}
|
|
41615
|
-
|
|
41918
|
+
/**
|
|
41919
|
+
* @param {number} statusCode
|
|
41920
|
+
* @param {Buffer[]|string[]} headers
|
|
41921
|
+
* @param {import('node:stream').Duplex} socket
|
|
41922
|
+
* @param {string} [statusText]
|
|
41923
|
+
*/
|
|
41924
|
+
onUpgrade(statusCode, headers, socket, statusText = "") {
|
|
41925
|
+
this.onFinally();
|
|
41616
41926
|
assert(!this.aborted);
|
|
41617
41927
|
assert(!this.completed);
|
|
41618
|
-
|
|
41928
|
+
if (channels.headers.hasSubscribers) {
|
|
41929
|
+
channels.headers.publish({ request: this, response: { statusCode, headers, statusText } });
|
|
41930
|
+
}
|
|
41931
|
+
const result = this[kHandler].onUpgrade(statusCode, headers, socket);
|
|
41932
|
+
if (!this.aborted) {
|
|
41933
|
+
this.completed = true;
|
|
41934
|
+
if (channels.trailers.hasSubscribers) {
|
|
41935
|
+
channels.trailers.publish({ request: this, trailers: [] });
|
|
41936
|
+
}
|
|
41937
|
+
}
|
|
41938
|
+
return result;
|
|
41619
41939
|
}
|
|
41620
41940
|
onComplete(trailers) {
|
|
41621
41941
|
this.onFinally();
|
|
@@ -41965,6 +42285,7 @@ var require_unwrap_handler = __commonJS({
|
|
|
41965
42285
|
var require_dispatcher_base = __commonJS({
|
|
41966
42286
|
"node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports2, module2) {
|
|
41967
42287
|
"use strict";
|
|
42288
|
+
var buffer = require("buffer");
|
|
41968
42289
|
var Dispatcher = require_dispatcher();
|
|
41969
42290
|
var UnwrapHandler = require_unwrap_handler();
|
|
41970
42291
|
var {
|
|
@@ -41976,6 +42297,7 @@ var require_dispatcher_base = __commonJS({
|
|
|
41976
42297
|
var kOnDestroyed = /* @__PURE__ */ Symbol("onDestroyed");
|
|
41977
42298
|
var kOnClosed = /* @__PURE__ */ Symbol("onClosed");
|
|
41978
42299
|
var kWebSocketOptions = /* @__PURE__ */ Symbol("webSocketOptions");
|
|
42300
|
+
var kEventSourceOptions = /* @__PURE__ */ Symbol("eventSourceOptions");
|
|
41979
42301
|
var DispatcherBase = class extends Dispatcher {
|
|
41980
42302
|
/** @type {boolean} */
|
|
41981
42303
|
[kDestroyed] = false;
|
|
@@ -41991,6 +42313,7 @@ var require_dispatcher_base = __commonJS({
|
|
|
41991
42313
|
constructor(opts) {
|
|
41992
42314
|
super();
|
|
41993
42315
|
this[kWebSocketOptions] = opts?.webSocket ?? {};
|
|
42316
|
+
this[kEventSourceOptions] = opts?.eventSource ?? {};
|
|
41994
42317
|
}
|
|
41995
42318
|
/**
|
|
41996
42319
|
* @returns {import('../../types/dispatcher').WebSocketOptions}
|
|
@@ -42002,6 +42325,14 @@ var require_dispatcher_base = __commonJS({
|
|
|
42002
42325
|
// 128 MB default
|
|
42003
42326
|
};
|
|
42004
42327
|
}
|
|
42328
|
+
/**
|
|
42329
|
+
* @returns {import('../../types/client').Client.EventSourceOptions}
|
|
42330
|
+
*/
|
|
42331
|
+
get eventSourceOptions() {
|
|
42332
|
+
return {
|
|
42333
|
+
maxEventSize: this[kEventSourceOptions].maxEventSize ?? buffer.kStringMaxLength
|
|
42334
|
+
};
|
|
42335
|
+
}
|
|
42005
42336
|
/** @returns {boolean} */
|
|
42006
42337
|
get destroyed() {
|
|
42007
42338
|
return this[kDestroyed];
|
|
@@ -42147,15 +42478,19 @@ var require_connect = __commonJS({
|
|
|
42147
42478
|
if (this._sessionCache.has(sessionKey)) {
|
|
42148
42479
|
this._sessionCache.delete(sessionKey);
|
|
42149
42480
|
} else if (this._sessionCache.size >= this._maxCachedSessions) {
|
|
42481
|
+
let evicted = false;
|
|
42150
42482
|
for (const [key, ref] of this._sessionCache) {
|
|
42151
42483
|
if (ref.deref() === void 0) {
|
|
42152
42484
|
this._sessionCache.delete(key);
|
|
42153
|
-
|
|
42485
|
+
evicted = true;
|
|
42486
|
+
break;
|
|
42154
42487
|
}
|
|
42155
42488
|
}
|
|
42156
|
-
|
|
42157
|
-
|
|
42158
|
-
|
|
42489
|
+
if (!evicted) {
|
|
42490
|
+
const oldest = this._sessionCache.keys().next();
|
|
42491
|
+
if (!oldest.done) {
|
|
42492
|
+
this._sessionCache.delete(oldest.value);
|
|
42493
|
+
}
|
|
42159
42494
|
}
|
|
42160
42495
|
}
|
|
42161
42496
|
this._sessionCache.set(sessionKey, new WeakRef(session));
|
|
@@ -43214,6 +43549,10 @@ var require_infra = __commonJS({
|
|
|
43214
43549
|
return input.slice(start, position.position);
|
|
43215
43550
|
}
|
|
43216
43551
|
var ASCII_WHITESPACE_REPLACE_REGEX = /[\u0009\u000A\u000C\u000D\u0020]/g;
|
|
43552
|
+
var nonASCIIRegex = /[^\x00-\x7F]/;
|
|
43553
|
+
function asciiLowercase(str2) {
|
|
43554
|
+
return nonASCIIRegex.test(str2) ? str2.replace(/[A-Z]+/g, (upper) => upper.toLowerCase()) : str2.toLowerCase();
|
|
43555
|
+
}
|
|
43217
43556
|
function forgivingBase64(data) {
|
|
43218
43557
|
data = data.replace(ASCII_WHITESPACE_REPLACE_REGEX, "");
|
|
43219
43558
|
let dataLength = data.length;
|
|
@@ -43288,6 +43627,7 @@ var require_infra = __commonJS({
|
|
|
43288
43627
|
return result;
|
|
43289
43628
|
}
|
|
43290
43629
|
module2.exports = {
|
|
43630
|
+
asciiLowercase,
|
|
43291
43631
|
collectASequenceOfCodePoints,
|
|
43292
43632
|
collectASequenceOfCodePointsFast,
|
|
43293
43633
|
forgivingBase64,
|
|
@@ -45912,7 +46252,13 @@ var require_client_h1 = __commonJS({
|
|
|
45912
46252
|
function lazyllhttp() {
|
|
45913
46253
|
const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : void 0;
|
|
45914
46254
|
let mod;
|
|
45915
|
-
let useWasmSIMD =
|
|
46255
|
+
let useWasmSIMD = true;
|
|
46256
|
+
if (process.arch === "ppc64") {
|
|
46257
|
+
const [major, minor] = process.versions.node.split(".").map((n) => parseInt(n, 10));
|
|
46258
|
+
if (major < 24 || major === 24 && minor < 12) {
|
|
46259
|
+
useWasmSIMD = false;
|
|
46260
|
+
}
|
|
46261
|
+
}
|
|
45916
46262
|
if (process.env.UNDICI_NO_WASM_SIMD === "1") {
|
|
45917
46263
|
useWasmSIMD = false;
|
|
45918
46264
|
} else if (process.env.UNDICI_NO_WASM_SIMD === "0") {
|
|
@@ -46266,7 +46612,7 @@ var require_client_h1 = __commonJS({
|
|
|
46266
46612
|
* @param {Buffer} head
|
|
46267
46613
|
*/
|
|
46268
46614
|
onUpgrade(head) {
|
|
46269
|
-
const { upgrade, client, socket, headers, statusCode } = this;
|
|
46615
|
+
const { upgrade, client, socket, headers, statusCode, statusText } = this;
|
|
46270
46616
|
assert(upgrade);
|
|
46271
46617
|
assert(client[kSocket] === socket);
|
|
46272
46618
|
assert(!socket.destroyed);
|
|
@@ -46291,8 +46637,9 @@ var require_client_h1 = __commonJS({
|
|
|
46291
46637
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
46292
46638
|
client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade"));
|
|
46293
46639
|
try {
|
|
46294
|
-
request2.onUpgrade(statusCode, headers, socket);
|
|
46640
|
+
request2.onUpgrade(statusCode, headers, socket, statusText);
|
|
46295
46641
|
} catch (err2) {
|
|
46642
|
+
util.errorRequest(client, request2, err2);
|
|
46296
46643
|
util.destroy(socket, err2);
|
|
46297
46644
|
}
|
|
46298
46645
|
client[kResume]();
|
|
@@ -46560,7 +46907,6 @@ var require_client_h1 = __commonJS({
|
|
|
46560
46907
|
};
|
|
46561
46908
|
}
|
|
46562
46909
|
function onHttpSocketError(err2) {
|
|
46563
|
-
assert(err2.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
|
|
46564
46910
|
const parser = this[kParser];
|
|
46565
46911
|
if (err2.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) {
|
|
46566
46912
|
const parserErr = parser.finish();
|
|
@@ -47340,7 +47686,6 @@ var require_client_h2 = __commonJS({
|
|
|
47340
47686
|
}
|
|
47341
47687
|
}
|
|
47342
47688
|
function onHttp2SessionError(err2) {
|
|
47343
|
-
assert(err2.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
|
|
47344
47689
|
this[kSocket][kError] = err2;
|
|
47345
47690
|
this[kClient][kOnError](err2);
|
|
47346
47691
|
}
|
|
@@ -47430,7 +47775,6 @@ var require_client_h2 = __commonJS({
|
|
|
47430
47775
|
client[kResume]();
|
|
47431
47776
|
}
|
|
47432
47777
|
function onHttp2SocketError(err2) {
|
|
47433
|
-
assert(err2.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
|
|
47434
47778
|
this[kError] = err2;
|
|
47435
47779
|
this[kClient][kOnError](err2);
|
|
47436
47780
|
}
|
|
@@ -47524,10 +47868,15 @@ var require_client_h2 = __commonJS({
|
|
|
47524
47868
|
}
|
|
47525
47869
|
stream = session.request(headers, { endStream: false, signal });
|
|
47526
47870
|
stream[kHTTP2Stream] = true;
|
|
47871
|
+
++session[kOpenStreams];
|
|
47527
47872
|
stream.once("response", (headers2, _flags) => {
|
|
47528
47873
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
|
|
47529
|
-
|
|
47530
|
-
|
|
47874
|
+
try {
|
|
47875
|
+
request2.onUpgrade(statusCode, parseH2Headers(realHeaders), stream);
|
|
47876
|
+
} catch (err2) {
|
|
47877
|
+
abort(err2);
|
|
47878
|
+
return;
|
|
47879
|
+
}
|
|
47531
47880
|
completeRequest(client, request2);
|
|
47532
47881
|
});
|
|
47533
47882
|
stream.on("error", () => {
|
|
@@ -47544,10 +47893,15 @@ var require_client_h2 = __commonJS({
|
|
|
47544
47893
|
}
|
|
47545
47894
|
stream = session.request(headers, { endStream: false, signal });
|
|
47546
47895
|
stream[kHTTP2Stream] = true;
|
|
47896
|
+
++session[kOpenStreams];
|
|
47547
47897
|
stream.on("response", (headers2) => {
|
|
47548
47898
|
const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers2;
|
|
47549
|
-
|
|
47550
|
-
|
|
47899
|
+
try {
|
|
47900
|
+
request2.onUpgrade(statusCode, parseH2Headers(realHeaders), stream);
|
|
47901
|
+
} catch (err2) {
|
|
47902
|
+
abort(err2);
|
|
47903
|
+
return;
|
|
47904
|
+
}
|
|
47551
47905
|
completeRequest(client, request2);
|
|
47552
47906
|
});
|
|
47553
47907
|
stream.on("error", abort);
|
|
@@ -47981,7 +48335,8 @@ var require_client = __commonJS({
|
|
|
47981
48335
|
initialWindowSize,
|
|
47982
48336
|
connectionWindowSize,
|
|
47983
48337
|
pingInterval,
|
|
47984
|
-
webSocket
|
|
48338
|
+
webSocket,
|
|
48339
|
+
eventSource
|
|
47985
48340
|
} = {}) {
|
|
47986
48341
|
if (keepAlive !== void 0) {
|
|
47987
48342
|
throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead");
|
|
@@ -48059,7 +48414,7 @@ var require_client = __commonJS({
|
|
|
48059
48414
|
if (pingInterval != null && (typeof pingInterval !== "number" || !Number.isInteger(pingInterval) || pingInterval < 0)) {
|
|
48060
48415
|
throw new InvalidArgumentError("pingInterval must be a positive integer, greater or equal to 0");
|
|
48061
48416
|
}
|
|
48062
|
-
super({ webSocket });
|
|
48417
|
+
super({ webSocket, eventSource });
|
|
48063
48418
|
if (typeof connect2 !== "function") {
|
|
48064
48419
|
connect2 = buildConnector({
|
|
48065
48420
|
...tls,
|
|
@@ -49040,7 +49395,7 @@ var require_agent = __commonJS({
|
|
|
49040
49395
|
return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts);
|
|
49041
49396
|
}
|
|
49042
49397
|
var Agent = class extends DispatcherBase {
|
|
49043
|
-
constructor({ factory = defaultFactory, maxOrigins = Infinity, connect, ...options } = {}) {
|
|
49398
|
+
constructor({ factory = defaultFactory, maxOrigins = Infinity, connect, tls, ...options } = {}) {
|
|
49044
49399
|
if (typeof factory !== "function") {
|
|
49045
49400
|
throw new InvalidArgumentError("factory must be a function.");
|
|
49046
49401
|
}
|
|
@@ -49054,7 +49409,10 @@ var require_agent = __commonJS({
|
|
|
49054
49409
|
if (connect && typeof connect !== "function") {
|
|
49055
49410
|
connect = { ...connect };
|
|
49056
49411
|
}
|
|
49057
|
-
|
|
49412
|
+
if (tls && typeof tls !== "function") {
|
|
49413
|
+
tls = { ...tls };
|
|
49414
|
+
}
|
|
49415
|
+
this[kOptions] = { ...util.deepClone(options), maxOrigins, connect, tls };
|
|
49058
49416
|
this[kFactory] = factory;
|
|
49059
49417
|
this[kClients] = /* @__PURE__ */ new Map();
|
|
49060
49418
|
this[kOrigins] = /* @__PURE__ */ new Set();
|
|
@@ -50263,6 +50621,55 @@ var require_retry_handler = __commonJS({
|
|
|
50263
50621
|
});
|
|
50264
50622
|
}
|
|
50265
50623
|
}
|
|
50624
|
+
var RetryController = class {
|
|
50625
|
+
#paused = false;
|
|
50626
|
+
#target = null;
|
|
50627
|
+
set target(target) {
|
|
50628
|
+
this.#target = target;
|
|
50629
|
+
if (this.#paused) {
|
|
50630
|
+
target?.pause();
|
|
50631
|
+
}
|
|
50632
|
+
}
|
|
50633
|
+
get target() {
|
|
50634
|
+
return this.#target;
|
|
50635
|
+
}
|
|
50636
|
+
pause() {
|
|
50637
|
+
this.#paused = true;
|
|
50638
|
+
this.#target?.pause();
|
|
50639
|
+
}
|
|
50640
|
+
resume() {
|
|
50641
|
+
this.#paused = false;
|
|
50642
|
+
this.#target?.resume();
|
|
50643
|
+
}
|
|
50644
|
+
abort(reason) {
|
|
50645
|
+
this.#target?.abort(reason);
|
|
50646
|
+
}
|
|
50647
|
+
get paused() {
|
|
50648
|
+
return this.#paused || (this.#target?.paused ?? false);
|
|
50649
|
+
}
|
|
50650
|
+
get aborted() {
|
|
50651
|
+
return this.#target?.aborted ?? false;
|
|
50652
|
+
}
|
|
50653
|
+
get reason() {
|
|
50654
|
+
return this.#target?.reason ?? null;
|
|
50655
|
+
}
|
|
50656
|
+
get rawHeaders() {
|
|
50657
|
+
return this.#target?.rawHeaders ?? null;
|
|
50658
|
+
}
|
|
50659
|
+
set rawHeaders(value) {
|
|
50660
|
+
if (this.#target) {
|
|
50661
|
+
this.#target.rawHeaders = value;
|
|
50662
|
+
}
|
|
50663
|
+
}
|
|
50664
|
+
get rawTrailers() {
|
|
50665
|
+
return this.#target?.rawTrailers ?? null;
|
|
50666
|
+
}
|
|
50667
|
+
set rawTrailers(value) {
|
|
50668
|
+
if (this.#target) {
|
|
50669
|
+
this.#target.rawTrailers = value;
|
|
50670
|
+
}
|
|
50671
|
+
}
|
|
50672
|
+
};
|
|
50266
50673
|
var RetryHandler = class _RetryHandler {
|
|
50267
50674
|
constructor(opts, { dispatch, handler }) {
|
|
50268
50675
|
const { retryOptions, ...dispatchOpts } = opts;
|
|
@@ -50317,16 +50724,17 @@ var require_retry_handler = __commonJS({
|
|
|
50317
50724
|
this.start = 0;
|
|
50318
50725
|
this.end = null;
|
|
50319
50726
|
this.etag = null;
|
|
50727
|
+
this.controllerProxy = new RetryController();
|
|
50320
50728
|
}
|
|
50321
50729
|
onResponseStartWithRetry(controller, statusCode, headers, statusMessage, err2) {
|
|
50322
50730
|
if (this.retryOpts.throwOnError) {
|
|
50323
50731
|
if (this.retryOpts.statusCodes.includes(statusCode) === false) {
|
|
50324
50732
|
if (this.headersSent) {
|
|
50325
|
-
this.handler.onResponseError?.(
|
|
50733
|
+
this.handler.onResponseError?.(this.controllerProxy, err2);
|
|
50326
50734
|
} else {
|
|
50327
50735
|
this.headersSent = true;
|
|
50328
50736
|
this.checkpointResponseEnd(headers);
|
|
50329
|
-
this.handler.onResponseStart?.(
|
|
50737
|
+
this.handler.onResponseStart?.(this.controllerProxy, statusCode, headers, statusMessage);
|
|
50330
50738
|
}
|
|
50331
50739
|
} else {
|
|
50332
50740
|
this.error = err2;
|
|
@@ -50336,17 +50744,17 @@ var require_retry_handler = __commonJS({
|
|
|
50336
50744
|
if (isDisturbed(this.opts.body)) {
|
|
50337
50745
|
this.headersSent = true;
|
|
50338
50746
|
this.checkpointResponseEnd(headers);
|
|
50339
|
-
this.handler.onResponseStart?.(
|
|
50747
|
+
this.handler.onResponseStart?.(this.controllerProxy, statusCode, headers, statusMessage);
|
|
50340
50748
|
return;
|
|
50341
50749
|
}
|
|
50342
50750
|
function shouldRetry(passedErr) {
|
|
50343
50751
|
if (passedErr) {
|
|
50344
50752
|
if (this.headersSent) {
|
|
50345
|
-
this.handler.onResponseError?.(
|
|
50753
|
+
this.handler.onResponseError?.(this.controllerProxy, passedErr);
|
|
50346
50754
|
} else {
|
|
50347
50755
|
this.headersSent = true;
|
|
50348
50756
|
this.checkpointResponseEnd(headers);
|
|
50349
|
-
this.handler.onResponseStart?.(
|
|
50757
|
+
this.handler.onResponseStart?.(this.controllerProxy, statusCode, headers, statusMessage);
|
|
50350
50758
|
}
|
|
50351
50759
|
controller.resume();
|
|
50352
50760
|
return;
|
|
@@ -50376,12 +50784,13 @@ var require_retry_handler = __commonJS({
|
|
|
50376
50784
|
}
|
|
50377
50785
|
}
|
|
50378
50786
|
onRequestStart(controller, context) {
|
|
50787
|
+
this.controllerProxy.target = controller;
|
|
50379
50788
|
if (!this.headersSent) {
|
|
50380
|
-
this.handler.onRequestStart?.(
|
|
50789
|
+
this.handler.onRequestStart?.(this.controllerProxy, context);
|
|
50381
50790
|
}
|
|
50382
50791
|
}
|
|
50383
|
-
onRequestUpgrade(
|
|
50384
|
-
this.handler.onRequestUpgrade?.(
|
|
50792
|
+
onRequestUpgrade(_controller, statusCode, headers, socket) {
|
|
50793
|
+
this.handler.onRequestUpgrade?.(this.controllerProxy, statusCode, headers, socket);
|
|
50385
50794
|
}
|
|
50386
50795
|
static [kRetryHandlerDefaultRetry](err2, { state, opts }, cb) {
|
|
50387
50796
|
const { statusCode, code: code2, headers } = err2;
|
|
@@ -50469,7 +50878,7 @@ var require_retry_handler = __commonJS({
|
|
|
50469
50878
|
if (range == null) {
|
|
50470
50879
|
this.headersSent = true;
|
|
50471
50880
|
this.handler.onResponseStart?.(
|
|
50472
|
-
|
|
50881
|
+
this.controllerProxy,
|
|
50473
50882
|
statusCode,
|
|
50474
50883
|
headers,
|
|
50475
50884
|
statusMessage
|
|
@@ -50502,7 +50911,7 @@ var require_retry_handler = __commonJS({
|
|
|
50502
50911
|
}
|
|
50503
50912
|
this.headersSent = true;
|
|
50504
50913
|
this.handler.onResponseStart?.(
|
|
50505
|
-
|
|
50914
|
+
this.controllerProxy,
|
|
50506
50915
|
statusCode,
|
|
50507
50916
|
headers,
|
|
50508
50917
|
statusMessage
|
|
@@ -50514,24 +50923,24 @@ var require_retry_handler = __commonJS({
|
|
|
50514
50923
|
});
|
|
50515
50924
|
}
|
|
50516
50925
|
}
|
|
50517
|
-
onResponseData(
|
|
50926
|
+
onResponseData(_controller, chunk2) {
|
|
50518
50927
|
if (this.error) {
|
|
50519
50928
|
return;
|
|
50520
50929
|
}
|
|
50521
50930
|
this.start += chunk2.length;
|
|
50522
|
-
this.handler.onResponseData?.(
|
|
50931
|
+
this.handler.onResponseData?.(this.controllerProxy, chunk2);
|
|
50523
50932
|
}
|
|
50524
|
-
onResponseEnd(
|
|
50933
|
+
onResponseEnd(_controller, trailers) {
|
|
50525
50934
|
if (this.error && this.retryOpts.throwOnError) {
|
|
50526
50935
|
throw this.error;
|
|
50527
50936
|
}
|
|
50528
50937
|
if (!this.error) {
|
|
50529
50938
|
this.retryCount = 0;
|
|
50530
|
-
return this.handler.onResponseEnd?.(
|
|
50939
|
+
return this.handler.onResponseEnd?.(this.controllerProxy, trailers);
|
|
50531
50940
|
}
|
|
50532
|
-
this.retry(
|
|
50941
|
+
this.retry();
|
|
50533
50942
|
}
|
|
50534
|
-
retry(
|
|
50943
|
+
retry() {
|
|
50535
50944
|
if (this.start !== 0) {
|
|
50536
50945
|
const headers = { range: `bytes=${this.start}-${this.end ?? ""}` };
|
|
50537
50946
|
if (this.etag != null) {
|
|
@@ -50549,20 +50958,20 @@ var require_retry_handler = __commonJS({
|
|
|
50549
50958
|
this.retryCountCheckpoint = this.retryCount;
|
|
50550
50959
|
this.dispatch(this.opts, this);
|
|
50551
50960
|
} catch (err2) {
|
|
50552
|
-
this.handler.onResponseError?.(
|
|
50961
|
+
this.handler.onResponseError?.(this.controllerProxy, err2);
|
|
50553
50962
|
}
|
|
50554
50963
|
}
|
|
50555
50964
|
onResponseError(controller, err2) {
|
|
50556
50965
|
if (controller?.aborted || isDisturbed(this.opts.body) || this.headersSent && !this.resume) {
|
|
50557
|
-
this.handler.onResponseError?.(
|
|
50966
|
+
this.handler.onResponseError?.(this.controllerProxy, err2);
|
|
50558
50967
|
return;
|
|
50559
50968
|
}
|
|
50560
50969
|
function shouldRetry(returnedErr) {
|
|
50561
50970
|
if (!returnedErr) {
|
|
50562
|
-
this.retry(
|
|
50971
|
+
this.retry();
|
|
50563
50972
|
return;
|
|
50564
50973
|
}
|
|
50565
|
-
this.handler?.onResponseError?.(
|
|
50974
|
+
this.handler?.onResponseError?.(this.controllerProxy, returnedErr);
|
|
50566
50975
|
}
|
|
50567
50976
|
if (this.retryCount - this.retryCountCheckpoint > 0) {
|
|
50568
50977
|
this.retryCount = this.retryCountCheckpoint + (this.retryCount - this.retryCountCheckpoint);
|
|
@@ -53867,7 +54276,7 @@ var require_redirect_handler = __commonJS({
|
|
|
53867
54276
|
"node_modules/undici/lib/handler/redirect-handler.js"(exports2, module2) {
|
|
53868
54277
|
"use strict";
|
|
53869
54278
|
var util = require_util();
|
|
53870
|
-
var { kBodyUsed } = require_symbols();
|
|
54279
|
+
var { kBodyUsed, kRedirectCacheControl } = require_symbols();
|
|
53871
54280
|
var assert = require("assert");
|
|
53872
54281
|
var { InvalidArgumentError } = require_errors();
|
|
53873
54282
|
var EE = require("events");
|
|
@@ -53905,6 +54314,10 @@ var require_redirect_handler = __commonJS({
|
|
|
53905
54314
|
this.maxRedirections = maxRedirections;
|
|
53906
54315
|
this.handler = handler;
|
|
53907
54316
|
this.history = [];
|
|
54317
|
+
Object.defineProperty(this.history, kRedirectCacheControl, {
|
|
54318
|
+
value: [],
|
|
54319
|
+
enumerable: false
|
|
54320
|
+
});
|
|
53908
54321
|
if (util.isStream(this.opts.body)) {
|
|
53909
54322
|
if (util.bodyLength(this.opts.body) === 0) {
|
|
53910
54323
|
this.opts.body.on("data", function() {
|
|
@@ -53955,6 +54368,7 @@ var require_redirect_handler = __commonJS({
|
|
|
53955
54368
|
this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage);
|
|
53956
54369
|
return;
|
|
53957
54370
|
}
|
|
54371
|
+
this.history[kRedirectCacheControl].push(headers["cache-control"]);
|
|
53958
54372
|
const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)));
|
|
53959
54373
|
const path99 = search ? `${pathname}${search}` : pathname;
|
|
53960
54374
|
const redirectUrlString = `${origin}${path99}`;
|
|
@@ -55656,6 +56070,7 @@ var require_cache_handler = __commonJS({
|
|
|
55656
56070
|
"node_modules/undici/lib/handler/cache-handler.js"(exports2, module2) {
|
|
55657
56071
|
"use strict";
|
|
55658
56072
|
var util = require_util();
|
|
56073
|
+
var { kRedirectCacheControl } = require_symbols();
|
|
55659
56074
|
var {
|
|
55660
56075
|
parseCacheControlHeader,
|
|
55661
56076
|
hasInvalidCacheControlDirective,
|
|
@@ -55667,6 +56082,13 @@ var require_cache_handler = __commonJS({
|
|
|
55667
56082
|
var { parseHttpDate } = require_date();
|
|
55668
56083
|
function noop() {
|
|
55669
56084
|
}
|
|
56085
|
+
function sameOrigin(a, b) {
|
|
56086
|
+
try {
|
|
56087
|
+
return new URL(String(a)).origin === new URL(String(b)).origin;
|
|
56088
|
+
} catch {
|
|
56089
|
+
return String(a) === String(b);
|
|
56090
|
+
}
|
|
56091
|
+
}
|
|
55670
56092
|
var HEURISTICALLY_CACHEABLE_STATUS_CODES = [
|
|
55671
56093
|
200,
|
|
55672
56094
|
203,
|
|
@@ -55782,6 +56204,13 @@ var require_cache_handler = __commonJS({
|
|
|
55782
56204
|
* @type {import('node:stream').Writable | undefined}
|
|
55783
56205
|
*/
|
|
55784
56206
|
#writeStream;
|
|
56207
|
+
/**
|
|
56208
|
+
* The URLs visited while following redirects, shared by reference from the
|
|
56209
|
+
* redirect handler through the request context. Carries the suppressed hops'
|
|
56210
|
+
* cache-control under {@link kRedirectCacheControl}.
|
|
56211
|
+
* @type {URL[] | undefined}
|
|
56212
|
+
*/
|
|
56213
|
+
#history;
|
|
55785
56214
|
/**
|
|
55786
56215
|
* @param {import('../../types/cache-interceptor.d.ts').default.CacheHandlerOptions} opts
|
|
55787
56216
|
* @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} cacheKey
|
|
@@ -55797,6 +56226,7 @@ var require_cache_handler = __commonJS({
|
|
|
55797
56226
|
onRequestStart(controller, context) {
|
|
55798
56227
|
this.#writeStream?.destroy();
|
|
55799
56228
|
this.#writeStream = void 0;
|
|
56229
|
+
this.#history = context?.history;
|
|
55800
56230
|
this.#handler.onRequestStart?.(controller, context);
|
|
55801
56231
|
}
|
|
55802
56232
|
onRequestUpgrade(controller, statusCode, headers, socket) {
|
|
@@ -55820,6 +56250,21 @@ var require_cache_handler = __commonJS({
|
|
|
55820
56250
|
invalidateUnsafeRequest(this.#store, this.#cacheKey, resHeaders);
|
|
55821
56251
|
return downstreamOnHeaders();
|
|
55822
56252
|
}
|
|
56253
|
+
if (this.#history && this.#history.length > 0) {
|
|
56254
|
+
const finalUrl = this.#history[this.#history.length - 1];
|
|
56255
|
+
if (!sameOrigin(finalUrl.origin, this.#cacheKey.origin)) {
|
|
56256
|
+
return downstreamOnHeaders();
|
|
56257
|
+
}
|
|
56258
|
+
}
|
|
56259
|
+
const redirectCacheControl = this.#history?.[kRedirectCacheControl];
|
|
56260
|
+
if (redirectCacheControl) {
|
|
56261
|
+
for (const hopCacheControl of redirectCacheControl) {
|
|
56262
|
+
const hopDirectives = hopCacheControl ? parseCacheControlHeader(hopCacheControl) : {};
|
|
56263
|
+
if (hopDirectives["no-store"] === true || this.#cacheType === "shared" && hopDirectives.private === true) {
|
|
56264
|
+
return downstreamOnHeaders();
|
|
56265
|
+
}
|
|
56266
|
+
}
|
|
56267
|
+
}
|
|
55823
56268
|
const cacheControlHeader = resHeaders["cache-control"];
|
|
55824
56269
|
const cacheControlDirectives = cacheControlHeader ? parseCacheControlHeader(cacheControlHeader) : {};
|
|
55825
56270
|
if (revalidationResponseDisallowsCachedReuse(this.#cacheType, resHeaders, cacheControlDirectives)) {
|
|
@@ -56896,6 +57341,61 @@ var require_decompress = __commonJS({
|
|
|
56896
57341
|
var { InvalidArgumentError, ResponseExceededMaxSizeError } = require_errors();
|
|
56897
57342
|
var DecoratorHandler = require_decorator_handler();
|
|
56898
57343
|
var { runtimeFeatures } = require_runtime_features();
|
|
57344
|
+
var DecompressController = class {
|
|
57345
|
+
#onPause;
|
|
57346
|
+
#onResume;
|
|
57347
|
+
#onAbort;
|
|
57348
|
+
#paused = false;
|
|
57349
|
+
constructor(onPause, onResume, onAbort) {
|
|
57350
|
+
this.#onPause = onPause;
|
|
57351
|
+
this.#onResume = onResume;
|
|
57352
|
+
this.#onAbort = onAbort;
|
|
57353
|
+
this.target = null;
|
|
57354
|
+
}
|
|
57355
|
+
pause() {
|
|
57356
|
+
if (this.#paused) {
|
|
57357
|
+
return;
|
|
57358
|
+
}
|
|
57359
|
+
this.#paused = true;
|
|
57360
|
+
this.#onPause();
|
|
57361
|
+
}
|
|
57362
|
+
resume() {
|
|
57363
|
+
if (!this.#paused) {
|
|
57364
|
+
return;
|
|
57365
|
+
}
|
|
57366
|
+
this.#paused = false;
|
|
57367
|
+
this.#onResume();
|
|
57368
|
+
}
|
|
57369
|
+
abort(reason) {
|
|
57370
|
+
this.target?.abort(reason);
|
|
57371
|
+
this.#onAbort(reason);
|
|
57372
|
+
}
|
|
57373
|
+
get paused() {
|
|
57374
|
+
return this.#paused;
|
|
57375
|
+
}
|
|
57376
|
+
get aborted() {
|
|
57377
|
+
return this.target?.aborted ?? false;
|
|
57378
|
+
}
|
|
57379
|
+
get reason() {
|
|
57380
|
+
return this.target?.reason ?? null;
|
|
57381
|
+
}
|
|
57382
|
+
get rawHeaders() {
|
|
57383
|
+
return this.target?.rawHeaders ?? null;
|
|
57384
|
+
}
|
|
57385
|
+
set rawHeaders(value) {
|
|
57386
|
+
if (this.target) {
|
|
57387
|
+
this.target.rawHeaders = value;
|
|
57388
|
+
}
|
|
57389
|
+
}
|
|
57390
|
+
get rawTrailers() {
|
|
57391
|
+
return this.target?.rawTrailers ?? null;
|
|
57392
|
+
}
|
|
57393
|
+
set rawTrailers(value) {
|
|
57394
|
+
if (this.target) {
|
|
57395
|
+
this.target.rawTrailers = value;
|
|
57396
|
+
}
|
|
57397
|
+
}
|
|
57398
|
+
};
|
|
56899
57399
|
var supportedEncodings = {
|
|
56900
57400
|
gzip: createGunzip,
|
|
56901
57401
|
"x-gzip": createGunzip,
|
|
@@ -56909,7 +57409,7 @@ var require_decompress = __commonJS({
|
|
|
56909
57409
|
/** @type {const} */
|
|
56910
57410
|
[204, 304]
|
|
56911
57411
|
);
|
|
56912
|
-
var defaultMaxSize =
|
|
57412
|
+
var defaultMaxSize = 0;
|
|
56913
57413
|
function createMaxSizeLimiter(maxSize) {
|
|
56914
57414
|
let size = 0;
|
|
56915
57415
|
return new TransformStream2({
|
|
@@ -56947,14 +57447,124 @@ var require_decompress = __commonJS({
|
|
|
56947
57447
|
#terminated = false;
|
|
56948
57448
|
/** @type {boolean} */
|
|
56949
57449
|
#inputEnded = false;
|
|
57450
|
+
/** @type {boolean} */
|
|
57451
|
+
#inputBackpressured = false;
|
|
57452
|
+
/** @type {boolean} */
|
|
57453
|
+
#upstreamPaused = false;
|
|
57454
|
+
/** @type {boolean} */
|
|
57455
|
+
#draining = false;
|
|
57456
|
+
/** @type {boolean} */
|
|
57457
|
+
#drainRequested = false;
|
|
57458
|
+
/** @type {boolean} */
|
|
57459
|
+
#completionPending = false;
|
|
57460
|
+
/** @type {DecompressorStream | undefined} */
|
|
57461
|
+
#finalDecompressor;
|
|
57462
|
+
/** @type {DecompressController} */
|
|
57463
|
+
#controller;
|
|
56950
57464
|
constructor(handler, { skipStatusCodes = defaultSkipStatusCodes, skipErrorResponses = true, maxSize = defaultMaxSize } = {}) {
|
|
56951
|
-
if (!Number.isSafeInteger(maxSize) || maxSize <
|
|
56952
|
-
throw new InvalidArgumentError("maxSize must be a
|
|
57465
|
+
if (!Number.isSafeInteger(maxSize) || maxSize < 0) {
|
|
57466
|
+
throw new InvalidArgumentError("maxSize must be a non-negative integer");
|
|
56953
57467
|
}
|
|
56954
57468
|
super(handler);
|
|
56955
57469
|
this.#skipStatusCodes = skipStatusCodes;
|
|
56956
57470
|
this.#skipErrorResponses = skipErrorResponses;
|
|
56957
57471
|
this.#maxSize = maxSize;
|
|
57472
|
+
this.#controller = new DecompressController(
|
|
57473
|
+
() => this.#onDownstreamPause(),
|
|
57474
|
+
() => this.#onDownstreamResume(),
|
|
57475
|
+
(reason) => {
|
|
57476
|
+
if (this.#inputEnded && !this.#terminated) {
|
|
57477
|
+
this.onResponseError(this.#controller, reason);
|
|
57478
|
+
}
|
|
57479
|
+
}
|
|
57480
|
+
);
|
|
57481
|
+
}
|
|
57482
|
+
#onDownstreamPause() {
|
|
57483
|
+
this.#pauseUpstream();
|
|
57484
|
+
}
|
|
57485
|
+
#onDownstreamResume() {
|
|
57486
|
+
const drainWasDeferred = this.#draining;
|
|
57487
|
+
this.#drainOutput();
|
|
57488
|
+
if (!drainWasDeferred) {
|
|
57489
|
+
this.#resumeUpstreamIfNeeded();
|
|
57490
|
+
this.#finishIfReady();
|
|
57491
|
+
}
|
|
57492
|
+
}
|
|
57493
|
+
#pauseUpstream() {
|
|
57494
|
+
if (!this.#upstreamPaused && !this.#terminated) {
|
|
57495
|
+
this.#upstreamPaused = true;
|
|
57496
|
+
this.#controller.target?.pause();
|
|
57497
|
+
}
|
|
57498
|
+
}
|
|
57499
|
+
#resumeUpstreamIfNeeded() {
|
|
57500
|
+
if (this.#upstreamPaused && !this.#controller.paused && !this.#inputBackpressured) {
|
|
57501
|
+
this.#upstreamPaused = false;
|
|
57502
|
+
if (!this.#inputEnded) {
|
|
57503
|
+
this.#controller.target?.resume();
|
|
57504
|
+
}
|
|
57505
|
+
}
|
|
57506
|
+
}
|
|
57507
|
+
#drainOutput() {
|
|
57508
|
+
if (this.#terminated || this.#controller.paused || !this.#finalDecompressor) {
|
|
57509
|
+
return;
|
|
57510
|
+
}
|
|
57511
|
+
if (this.#draining) {
|
|
57512
|
+
this.#drainRequested = true;
|
|
57513
|
+
return;
|
|
57514
|
+
}
|
|
57515
|
+
this.#draining = true;
|
|
57516
|
+
try {
|
|
57517
|
+
do {
|
|
57518
|
+
this.#drainRequested = false;
|
|
57519
|
+
let chunk2;
|
|
57520
|
+
while (!this.#terminated && !this.#controller.paused && (chunk2 = this.#finalDecompressor.read()) !== null) {
|
|
57521
|
+
if (this.#maxSize > 0) {
|
|
57522
|
+
const decompressedSize = this.#decompressedSize + chunk2.length;
|
|
57523
|
+
if (decompressedSize > this.#maxSize) {
|
|
57524
|
+
this.#fail(new ResponseExceededMaxSizeError(
|
|
57525
|
+
`Decompressed response size (${decompressedSize}) exceeded maxSize (${this.#maxSize})`
|
|
57526
|
+
));
|
|
57527
|
+
return;
|
|
57528
|
+
}
|
|
57529
|
+
this.#decompressedSize = decompressedSize;
|
|
57530
|
+
}
|
|
57531
|
+
try {
|
|
57532
|
+
const result = super.onResponseData(this.#controller, chunk2);
|
|
57533
|
+
if (result === false && !this.#controller.paused) {
|
|
57534
|
+
this.#controller.pause();
|
|
57535
|
+
}
|
|
57536
|
+
} catch (err2) {
|
|
57537
|
+
this.#fail(err2);
|
|
57538
|
+
return;
|
|
57539
|
+
}
|
|
57540
|
+
}
|
|
57541
|
+
} while (this.#drainRequested && !this.#terminated && !this.#controller.paused);
|
|
57542
|
+
} finally {
|
|
57543
|
+
this.#draining = false;
|
|
57544
|
+
}
|
|
57545
|
+
this.#resumeUpstreamIfNeeded();
|
|
57546
|
+
this.#finishIfReady();
|
|
57547
|
+
}
|
|
57548
|
+
#finishIfReady() {
|
|
57549
|
+
if (this.#terminated || !this.#completionPending || this.#controller.paused || this.#draining) {
|
|
57550
|
+
return;
|
|
57551
|
+
}
|
|
57552
|
+
this.#cleanupDecompressors();
|
|
57553
|
+
try {
|
|
57554
|
+
super.onResponseEnd(this.#controller, this.#trailers);
|
|
57555
|
+
} catch (err2) {
|
|
57556
|
+
this.#fail(err2);
|
|
57557
|
+
return;
|
|
57558
|
+
}
|
|
57559
|
+
this.#terminated = true;
|
|
57560
|
+
}
|
|
57561
|
+
#onDecompressionEnd() {
|
|
57562
|
+
if (this.#terminated) {
|
|
57563
|
+
return;
|
|
57564
|
+
}
|
|
57565
|
+
this.#completionPending = true;
|
|
57566
|
+
this.#drainOutput();
|
|
57567
|
+
this.#finishIfReady();
|
|
56958
57568
|
}
|
|
56959
57569
|
/**
|
|
56960
57570
|
* Determines if decompression should be skipped based on encoding and status code
|
|
@@ -56997,7 +57607,7 @@ var require_decompress = __commonJS({
|
|
|
56997
57607
|
const streams = [];
|
|
56998
57608
|
for (let i = 0; i < decompressors.length; i++) {
|
|
56999
57609
|
streams.push(decompressors[i]);
|
|
57000
|
-
if (i < decompressors.length - 1) {
|
|
57610
|
+
if (i < decompressors.length - 1 && this.#maxSize > 0) {
|
|
57001
57611
|
streams.push(createMaxSizeLimiter(this.#maxSize));
|
|
57002
57612
|
}
|
|
57003
57613
|
}
|
|
@@ -57005,87 +57615,67 @@ var require_decompress = __commonJS({
|
|
|
57005
57615
|
}
|
|
57006
57616
|
/**
|
|
57007
57617
|
* Stops decompression and reports an error.
|
|
57008
|
-
* @param {Controller} controller - The controller to coordinate with
|
|
57009
57618
|
* @param {Error} error - The decompression error
|
|
57010
57619
|
* @returns {void}
|
|
57011
57620
|
*/
|
|
57012
|
-
#fail(
|
|
57621
|
+
#fail(error) {
|
|
57013
57622
|
if (this.#terminated) {
|
|
57014
57623
|
return;
|
|
57015
57624
|
}
|
|
57016
57625
|
if (this.#inputEnded) {
|
|
57017
|
-
this.onResponseError(controller, error);
|
|
57626
|
+
this.onResponseError(this.#controller, error);
|
|
57018
57627
|
} else {
|
|
57019
|
-
controller.abort(error);
|
|
57628
|
+
this.#controller.abort(error);
|
|
57020
57629
|
}
|
|
57021
57630
|
}
|
|
57022
57631
|
/**
|
|
57023
|
-
* Sets up event handlers for
|
|
57632
|
+
* Sets up event handlers for the final decompressor stream.
|
|
57024
57633
|
* @param {DecompressorStream} decompressor - The decompressor stream
|
|
57025
|
-
* @param {Controller} controller - The controller to coordinate with
|
|
57026
57634
|
* @returns {void}
|
|
57027
57635
|
*/
|
|
57028
|
-
#setupDecompressorEvents(decompressor
|
|
57029
|
-
|
|
57030
|
-
|
|
57031
|
-
|
|
57032
|
-
}
|
|
57033
|
-
let chunk2;
|
|
57034
|
-
while ((chunk2 = decompressor.read()) !== null) {
|
|
57035
|
-
const decompressedSize = this.#decompressedSize + chunk2.length;
|
|
57036
|
-
if (decompressedSize > this.#maxSize) {
|
|
57037
|
-
this.#fail(controller, new ResponseExceededMaxSizeError(
|
|
57038
|
-
`Decompressed response size (${decompressedSize}) exceeded maxSize (${this.#maxSize})`
|
|
57039
|
-
));
|
|
57040
|
-
return;
|
|
57041
|
-
}
|
|
57042
|
-
this.#decompressedSize = decompressedSize;
|
|
57043
|
-
const result = super.onResponseData(controller, chunk2);
|
|
57044
|
-
if (result === false) {
|
|
57045
|
-
break;
|
|
57046
|
-
}
|
|
57047
|
-
}
|
|
57048
|
-
});
|
|
57049
|
-
decompressor.on("error", (error) => {
|
|
57050
|
-
this.#fail(controller, error);
|
|
57051
|
-
});
|
|
57636
|
+
#setupDecompressorEvents(decompressor) {
|
|
57637
|
+
this.#finalDecompressor = decompressor;
|
|
57638
|
+
decompressor.on("readable", () => this.#drainOutput());
|
|
57639
|
+
decompressor.on("error", (error) => this.#fail(error));
|
|
57052
57640
|
}
|
|
57053
57641
|
/**
|
|
57054
57642
|
* Sets up event handling for a single decompressor
|
|
57055
|
-
* @param {Controller} controller - The controller to handle events
|
|
57056
57643
|
* @returns {void}
|
|
57057
57644
|
*/
|
|
57058
|
-
#setupSingleDecompressor(
|
|
57645
|
+
#setupSingleDecompressor() {
|
|
57059
57646
|
const decompressor = this.#decompressors[0];
|
|
57060
|
-
this.#setupDecompressorEvents(decompressor
|
|
57061
|
-
decompressor.on("end", () =>
|
|
57062
|
-
if (this.#terminated) {
|
|
57063
|
-
return;
|
|
57064
|
-
}
|
|
57065
|
-
this.#terminated = true;
|
|
57066
|
-
this.#cleanupDecompressors();
|
|
57067
|
-
super.onResponseEnd(controller, this.#trailers);
|
|
57068
|
-
});
|
|
57647
|
+
this.#setupDecompressorEvents(decompressor);
|
|
57648
|
+
decompressor.on("end", () => this.#onDecompressionEnd());
|
|
57069
57649
|
}
|
|
57070
57650
|
/**
|
|
57071
57651
|
* Sets up event handling for multiple chained decompressors using pipeline
|
|
57072
|
-
* @param {Controller} controller - The controller to handle events
|
|
57073
57652
|
* @returns {void}
|
|
57074
57653
|
*/
|
|
57075
|
-
#setupMultipleDecompressors(
|
|
57654
|
+
#setupMultipleDecompressors() {
|
|
57076
57655
|
const lastDecompressor = this.#decompressors[this.#decompressors.length - 1];
|
|
57077
|
-
this.#setupDecompressorEvents(lastDecompressor
|
|
57656
|
+
this.#setupDecompressorEvents(lastDecompressor);
|
|
57078
57657
|
pipeline2(this.#decompressors, (err2) => {
|
|
57079
57658
|
if (this.#terminated) {
|
|
57080
57659
|
return;
|
|
57081
57660
|
}
|
|
57082
57661
|
if (err2) {
|
|
57083
|
-
this.#fail(
|
|
57662
|
+
this.#fail(err2);
|
|
57084
57663
|
return;
|
|
57085
57664
|
}
|
|
57086
|
-
this.#
|
|
57087
|
-
|
|
57088
|
-
|
|
57665
|
+
this.#onDecompressionEnd();
|
|
57666
|
+
});
|
|
57667
|
+
}
|
|
57668
|
+
#setupInputBackpressure() {
|
|
57669
|
+
const decompressor = this.#decompressors[0];
|
|
57670
|
+
decompressor.on("drain", () => {
|
|
57671
|
+
if (this.#terminated) {
|
|
57672
|
+
return;
|
|
57673
|
+
}
|
|
57674
|
+
this.#inputBackpressured = false;
|
|
57675
|
+
if (!this.#controller.paused) {
|
|
57676
|
+
this.#drainOutput();
|
|
57677
|
+
this.#resumeUpstreamIfNeeded();
|
|
57678
|
+
}
|
|
57089
57679
|
});
|
|
57090
57680
|
}
|
|
57091
57681
|
/**
|
|
@@ -57094,6 +57684,14 @@ var require_decompress = __commonJS({
|
|
|
57094
57684
|
*/
|
|
57095
57685
|
#cleanupDecompressors() {
|
|
57096
57686
|
this.#decompressors.length = 0;
|
|
57687
|
+
this.#finalDecompressor = void 0;
|
|
57688
|
+
}
|
|
57689
|
+
onRequestStart(controller, context) {
|
|
57690
|
+
this.#controller.target = controller;
|
|
57691
|
+
return super.onRequestStart(this.#controller, context);
|
|
57692
|
+
}
|
|
57693
|
+
onRequestUpgrade(controller, statusCode, headers, socket) {
|
|
57694
|
+
return super.onRequestUpgrade(this.#controller, statusCode, headers, socket);
|
|
57097
57695
|
}
|
|
57098
57696
|
/**
|
|
57099
57697
|
* @param {Controller} controller
|
|
@@ -57105,17 +57703,17 @@ var require_decompress = __commonJS({
|
|
|
57105
57703
|
onResponseStart(controller, statusCode, headers, statusMessage) {
|
|
57106
57704
|
const contentEncoding = headers["content-encoding"];
|
|
57107
57705
|
if (this.#shouldSkipDecompression(contentEncoding, statusCode)) {
|
|
57108
|
-
return super.onResponseStart(controller, statusCode, headers, statusMessage);
|
|
57706
|
+
return super.onResponseStart(this.#controller, statusCode, headers, statusMessage);
|
|
57109
57707
|
}
|
|
57110
57708
|
const decompressors = this.#createDecompressionChain(contentEncoding.toLowerCase());
|
|
57111
57709
|
if (decompressors.length === 0) {
|
|
57112
57710
|
this.#cleanupDecompressors();
|
|
57113
|
-
return super.onResponseStart(controller, statusCode, headers, statusMessage);
|
|
57711
|
+
return super.onResponseStart(this.#controller, statusCode, headers, statusMessage);
|
|
57114
57712
|
}
|
|
57115
57713
|
this.#decompressors = decompressors;
|
|
57116
57714
|
const { "content-encoding": _, "content-length": __, ...newHeaders } = headers;
|
|
57117
|
-
if (controller
|
|
57118
|
-
const rawHeaders = controller.rawHeaders;
|
|
57715
|
+
if (this.#controller.rawHeaders) {
|
|
57716
|
+
const rawHeaders = this.#controller.rawHeaders;
|
|
57119
57717
|
if (Array.isArray(rawHeaders)) {
|
|
57120
57718
|
const filteredHeaders = [];
|
|
57121
57719
|
for (let i = 0; i < rawHeaders.length; i += 2) {
|
|
@@ -57137,12 +57735,13 @@ var require_decompress = __commonJS({
|
|
|
57137
57735
|
}
|
|
57138
57736
|
}
|
|
57139
57737
|
}
|
|
57738
|
+
this.#setupInputBackpressure();
|
|
57140
57739
|
if (this.#decompressors.length === 1) {
|
|
57141
|
-
this.#setupSingleDecompressor(
|
|
57740
|
+
this.#setupSingleDecompressor();
|
|
57142
57741
|
} else {
|
|
57143
|
-
this.#setupMultipleDecompressors(
|
|
57742
|
+
this.#setupMultipleDecompressors();
|
|
57144
57743
|
}
|
|
57145
|
-
return super.onResponseStart(controller, statusCode, newHeaders, statusMessage);
|
|
57744
|
+
return super.onResponseStart(this.#controller, statusCode, newHeaders, statusMessage);
|
|
57146
57745
|
}
|
|
57147
57746
|
/**
|
|
57148
57747
|
* @param {Controller} controller
|
|
@@ -57151,10 +57750,13 @@ var require_decompress = __commonJS({
|
|
|
57151
57750
|
*/
|
|
57152
57751
|
onResponseData(controller, chunk2) {
|
|
57153
57752
|
if (this.#decompressors.length > 0) {
|
|
57154
|
-
this.#decompressors[0].write(chunk2)
|
|
57753
|
+
if (!this.#decompressors[0].write(chunk2)) {
|
|
57754
|
+
this.#inputBackpressured = true;
|
|
57755
|
+
this.#pauseUpstream();
|
|
57756
|
+
}
|
|
57155
57757
|
return;
|
|
57156
57758
|
}
|
|
57157
|
-
super.onResponseData(controller, chunk2);
|
|
57759
|
+
return super.onResponseData(this.#controller, chunk2);
|
|
57158
57760
|
}
|
|
57159
57761
|
/**
|
|
57160
57762
|
* @param {Controller} controller
|
|
@@ -57168,7 +57770,7 @@ var require_decompress = __commonJS({
|
|
|
57168
57770
|
this.#decompressors[0].end();
|
|
57169
57771
|
return;
|
|
57170
57772
|
}
|
|
57171
|
-
super.onResponseEnd(controller, trailers);
|
|
57773
|
+
return super.onResponseEnd(this.#controller, trailers);
|
|
57172
57774
|
}
|
|
57173
57775
|
/**
|
|
57174
57776
|
* @param {Controller} controller
|
|
@@ -57184,7 +57786,7 @@ var require_decompress = __commonJS({
|
|
|
57184
57786
|
decompressor.destroy();
|
|
57185
57787
|
}
|
|
57186
57788
|
this.#cleanupDecompressors();
|
|
57187
|
-
super.onResponseError(controller, err2);
|
|
57789
|
+
super.onResponseError(this.#controller, err2);
|
|
57188
57790
|
}
|
|
57189
57791
|
};
|
|
57190
57792
|
function createDecompressInterceptor(options = {}) {
|
|
@@ -57217,6 +57819,18 @@ var require_deduplication_handler = __commonJS({
|
|
|
57217
57819
|
* @type {DispatchHandler}
|
|
57218
57820
|
*/
|
|
57219
57821
|
#primaryHandler;
|
|
57822
|
+
/**
|
|
57823
|
+
* Whether the primary request has started (onRequestStart received). Until
|
|
57824
|
+
* then the request context is unknown and cannot be given to waiting handlers.
|
|
57825
|
+
* @type {boolean}
|
|
57826
|
+
*/
|
|
57827
|
+
#requestStarted = false;
|
|
57828
|
+
/**
|
|
57829
|
+
* The primary request context, replayed to waiting handlers so they observe
|
|
57830
|
+
* the same redirect history as the primary.
|
|
57831
|
+
* @type {any}
|
|
57832
|
+
*/
|
|
57833
|
+
#context = null;
|
|
57220
57834
|
/**
|
|
57221
57835
|
* @type {WaitingHandler[]}
|
|
57222
57836
|
*/
|
|
@@ -57285,18 +57899,22 @@ var require_deduplication_handler = __commonJS({
|
|
|
57285
57899
|
const waitingHandler = this.#createWaitingHandler(handler);
|
|
57286
57900
|
const waitingController = waitingHandler.controller;
|
|
57287
57901
|
try {
|
|
57288
|
-
|
|
57289
|
-
|
|
57290
|
-
|
|
57291
|
-
|
|
57292
|
-
|
|
57293
|
-
|
|
57294
|
-
|
|
57295
|
-
|
|
57296
|
-
|
|
57297
|
-
|
|
57298
|
-
|
|
57299
|
-
|
|
57902
|
+
if (this.#requestStarted) {
|
|
57903
|
+
handler.onRequestStart?.(waitingController, this.#context);
|
|
57904
|
+
if (waitingController.aborted) {
|
|
57905
|
+
waitingHandler.done = true;
|
|
57906
|
+
return true;
|
|
57907
|
+
}
|
|
57908
|
+
if (this.#responseStarted) {
|
|
57909
|
+
handler.onResponseStart?.(
|
|
57910
|
+
waitingController,
|
|
57911
|
+
this.#statusCode,
|
|
57912
|
+
this.#headers,
|
|
57913
|
+
this.#statusMessage
|
|
57914
|
+
);
|
|
57915
|
+
}
|
|
57916
|
+
} else {
|
|
57917
|
+
waitingHandler.pendingStart = true;
|
|
57300
57918
|
}
|
|
57301
57919
|
} catch {
|
|
57302
57920
|
waitingHandler.done = true;
|
|
@@ -57313,6 +57931,21 @@ var require_deduplication_handler = __commonJS({
|
|
|
57313
57931
|
*/
|
|
57314
57932
|
onRequestStart(controller, context) {
|
|
57315
57933
|
this.#controller = controller;
|
|
57934
|
+
if (!this.#requestStarted) {
|
|
57935
|
+
this.#requestStarted = true;
|
|
57936
|
+
this.#context = context;
|
|
57937
|
+
for (const waitingHandler of this.#waitingHandlers) {
|
|
57938
|
+
if (waitingHandler.pendingStart && !waitingHandler.done && !waitingHandler.controller.aborted) {
|
|
57939
|
+
waitingHandler.pendingStart = false;
|
|
57940
|
+
try {
|
|
57941
|
+
waitingHandler.handler.onRequestStart?.(waitingHandler.controller, context);
|
|
57942
|
+
} catch {
|
|
57943
|
+
waitingHandler.done = true;
|
|
57944
|
+
}
|
|
57945
|
+
}
|
|
57946
|
+
}
|
|
57947
|
+
this.#pruneDoneWaitingHandlers();
|
|
57948
|
+
}
|
|
57316
57949
|
this.#primaryHandler.onRequestStart?.(controller, context);
|
|
57317
57950
|
}
|
|
57318
57951
|
/**
|
|
@@ -57450,7 +58083,8 @@ var require_deduplication_handler = __commonJS({
|
|
|
57450
58083
|
bufferedChunks: [],
|
|
57451
58084
|
bufferedBytes: 0,
|
|
57452
58085
|
pendingTrailers: null,
|
|
57453
|
-
done: false
|
|
58086
|
+
done: false,
|
|
58087
|
+
pendingStart: false
|
|
57454
58088
|
};
|
|
57455
58089
|
const state = {
|
|
57456
58090
|
aborted: false,
|
|
@@ -59659,6 +60293,7 @@ var require_subresource_integrity = __commonJS({
|
|
|
59659
60293
|
"use strict";
|
|
59660
60294
|
var assert = require("assert");
|
|
59661
60295
|
var { runtimeFeatures } = require_runtime_features();
|
|
60296
|
+
var { asciiLowercase } = require_infra();
|
|
59662
60297
|
var validSRIHashAlgorithmTokenSet = /* @__PURE__ */ new Map([["sha256", 0], ["sha384", 1], ["sha512", 2]]);
|
|
59663
60298
|
var crypto12;
|
|
59664
60299
|
if (runtimeFeatures.has("crypto")) {
|
|
@@ -59681,10 +60316,7 @@ var require_subresource_integrity = __commonJS({
|
|
|
59681
60316
|
validSRIHashAlgorithmTokenSet
|
|
59682
60317
|
)
|
|
59683
60318
|
);
|
|
59684
|
-
var isValidSRIHashAlgorithm = (
|
|
59685
|
-
/** @type {IsValidSRIHashAlgorithm} */
|
|
59686
|
-
Map.prototype.has.bind(validSRIHashAlgorithmTokenSet)
|
|
59687
|
-
);
|
|
60319
|
+
var isValidSRIHashAlgorithm = (algorithm) => validSRIHashAlgorithmTokenSet.has(asciiLowercase(algorithm));
|
|
59688
60320
|
var bytesMatch = runtimeFeatures.has("crypto") === false || validSRIHashAlgorithmTokenSet.size === 0 ? () => true : (bytes, metadataList) => {
|
|
59689
60321
|
const parsedMetadata = parseMetadata(metadataList);
|
|
59690
60322
|
if (parsedMetadata.length === 0) {
|
|
@@ -59745,7 +60377,8 @@ var require_subresource_integrity = __commonJS({
|
|
|
59745
60377
|
base64Value = algorithmAndValue[1];
|
|
59746
60378
|
}
|
|
59747
60379
|
const metadata2 = {
|
|
59748
|
-
|
|
60380
|
+
// Possible spec bug?
|
|
60381
|
+
alg: asciiLowercase(algorithm),
|
|
59749
60382
|
val: base64Value
|
|
59750
60383
|
};
|
|
59751
60384
|
result.push(metadata2);
|
|
@@ -60794,7 +61427,6 @@ var require_fetch = __commonJS({
|
|
|
60794
61427
|
}
|
|
60795
61428
|
}
|
|
60796
61429
|
const location = headersList.get("location", true);
|
|
60797
|
-
this.body = new Readable2({ read: resume });
|
|
60798
61430
|
const willFollow = location && request2.redirect === "follow" && redirectStatusSet.has(status);
|
|
60799
61431
|
const decoders = [];
|
|
60800
61432
|
if (request2.method !== "HEAD" && request2.method !== "CONNECT" && !nullBodyStatus.includes(status) && !willFollow) {
|
|
@@ -60802,7 +61434,7 @@ var require_fetch = __commonJS({
|
|
|
60802
61434
|
const codings = contentEncoding ? contentEncoding.toLowerCase().split(",") : [];
|
|
60803
61435
|
const maxContentEncodings = 5;
|
|
60804
61436
|
if (codings.length > maxContentEncodings) {
|
|
60805
|
-
|
|
61437
|
+
this.abort(new Error(`too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}`));
|
|
60806
61438
|
return true;
|
|
60807
61439
|
}
|
|
60808
61440
|
for (let i = codings.length - 1; i >= 0; --i) {
|
|
@@ -60837,6 +61469,7 @@ var require_fetch = __commonJS({
|
|
|
60837
61469
|
}
|
|
60838
61470
|
}
|
|
60839
61471
|
}
|
|
61472
|
+
this.body = new Readable2({ read: resume });
|
|
60840
61473
|
const onError = this.onError.bind(this);
|
|
60841
61474
|
resolve2({
|
|
60842
61475
|
status,
|
|
@@ -61816,8 +62449,12 @@ var require_util4 = __commonJS({
|
|
|
61816
62449
|
validateCookiePath(cookie.path);
|
|
61817
62450
|
out.push(`Path=${cookie.path}`);
|
|
61818
62451
|
}
|
|
61819
|
-
if (cookie.expires
|
|
61820
|
-
|
|
62452
|
+
if (cookie.expires != null) {
|
|
62453
|
+
const expiresMs = cookie.expires instanceof Date ? cookie.expires.getTime() : cookie.expires;
|
|
62454
|
+
const maxTimeValue = 864e13;
|
|
62455
|
+
if (typeof expiresMs === "number" && Number.isFinite(expiresMs) && Math.abs(expiresMs) <= maxTimeValue) {
|
|
62456
|
+
out.push(`Expires=${toIMFDate(cookie.expires)}`);
|
|
62457
|
+
}
|
|
61821
62458
|
}
|
|
61822
62459
|
if (cookie.sameSite) {
|
|
61823
62460
|
out.push(`SameSite=${cookie.sameSite}`);
|
|
@@ -61892,88 +62529,89 @@ var require_parse = __commonJS({
|
|
|
61892
62529
|
};
|
|
61893
62530
|
}
|
|
61894
62531
|
function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) {
|
|
61895
|
-
|
|
61896
|
-
|
|
61897
|
-
|
|
61898
|
-
|
|
61899
|
-
|
|
61900
|
-
|
|
61901
|
-
|
|
61902
|
-
|
|
61903
|
-
|
|
61904
|
-
|
|
61905
|
-
|
|
61906
|
-
|
|
61907
|
-
|
|
61908
|
-
|
|
61909
|
-
cookieAv = unparsedAttributes;
|
|
61910
|
-
unparsedAttributes = "";
|
|
61911
|
-
}
|
|
61912
|
-
let attributeName = "";
|
|
61913
|
-
let attributeValue = "";
|
|
61914
|
-
if (cookieAv.includes("=")) {
|
|
61915
|
-
const position = { position: 0 };
|
|
61916
|
-
attributeName = collectASequenceOfCodePointsFast(
|
|
61917
|
-
"=",
|
|
61918
|
-
cookieAv,
|
|
61919
|
-
position
|
|
61920
|
-
);
|
|
61921
|
-
attributeValue = cookieAv.slice(position.position + 1);
|
|
61922
|
-
} else {
|
|
61923
|
-
attributeName = cookieAv;
|
|
61924
|
-
}
|
|
61925
|
-
attributeName = attributeName.trim();
|
|
61926
|
-
attributeValue = attributeValue.trim();
|
|
61927
|
-
if (attributeValue.length > maxAttributeValueSize) {
|
|
61928
|
-
return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList);
|
|
61929
|
-
}
|
|
61930
|
-
const attributeNameLowercase = attributeName.toLowerCase();
|
|
61931
|
-
if (attributeNameLowercase === "expires") {
|
|
61932
|
-
const expiryTime = new Date(attributeValue);
|
|
61933
|
-
cookieAttributeList.expires = expiryTime;
|
|
61934
|
-
} else if (attributeNameLowercase === "max-age") {
|
|
61935
|
-
const charCode = attributeValue.charCodeAt(0);
|
|
61936
|
-
if ((charCode < 48 || charCode > 57) && attributeValue[0] !== "-") {
|
|
61937
|
-
return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList);
|
|
61938
|
-
}
|
|
61939
|
-
if (!/^\d+$/.test(attributeValue)) {
|
|
61940
|
-
return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList);
|
|
61941
|
-
}
|
|
61942
|
-
const deltaSeconds = Number(attributeValue);
|
|
61943
|
-
cookieAttributeList.maxAge = deltaSeconds;
|
|
61944
|
-
} else if (attributeNameLowercase === "domain") {
|
|
61945
|
-
let cookieDomain = attributeValue;
|
|
61946
|
-
if (cookieDomain[0] === ".") {
|
|
61947
|
-
cookieDomain = cookieDomain.slice(1);
|
|
61948
|
-
}
|
|
61949
|
-
cookieDomain = cookieDomain.toLowerCase();
|
|
61950
|
-
cookieAttributeList.domain = cookieDomain;
|
|
61951
|
-
} else if (attributeNameLowercase === "path") {
|
|
61952
|
-
let cookiePath = "";
|
|
61953
|
-
if (attributeValue.length === 0 || attributeValue[0] !== "/") {
|
|
61954
|
-
cookiePath = "/";
|
|
62532
|
+
while (true) {
|
|
62533
|
+
if (unparsedAttributes.length === 0) {
|
|
62534
|
+
return cookieAttributeList;
|
|
62535
|
+
}
|
|
62536
|
+
assert(unparsedAttributes[0] === ";");
|
|
62537
|
+
unparsedAttributes = unparsedAttributes.slice(1);
|
|
62538
|
+
let cookieAv = "";
|
|
62539
|
+
if (unparsedAttributes.includes(";")) {
|
|
62540
|
+
cookieAv = collectASequenceOfCodePointsFast(
|
|
62541
|
+
";",
|
|
62542
|
+
unparsedAttributes,
|
|
62543
|
+
{ position: 0 }
|
|
62544
|
+
);
|
|
62545
|
+
unparsedAttributes = unparsedAttributes.slice(cookieAv.length);
|
|
61955
62546
|
} else {
|
|
61956
|
-
|
|
61957
|
-
|
|
61958
|
-
|
|
61959
|
-
|
|
61960
|
-
|
|
61961
|
-
|
|
61962
|
-
|
|
61963
|
-
|
|
61964
|
-
|
|
61965
|
-
|
|
61966
|
-
|
|
61967
|
-
|
|
61968
|
-
|
|
61969
|
-
} else
|
|
61970
|
-
|
|
62547
|
+
cookieAv = unparsedAttributes;
|
|
62548
|
+
unparsedAttributes = "";
|
|
62549
|
+
}
|
|
62550
|
+
let attributeName = "";
|
|
62551
|
+
let attributeValue = "";
|
|
62552
|
+
if (cookieAv.includes("=")) {
|
|
62553
|
+
const position = { position: 0 };
|
|
62554
|
+
attributeName = collectASequenceOfCodePointsFast(
|
|
62555
|
+
"=",
|
|
62556
|
+
cookieAv,
|
|
62557
|
+
position
|
|
62558
|
+
);
|
|
62559
|
+
attributeValue = cookieAv.slice(position.position + 1);
|
|
62560
|
+
} else {
|
|
62561
|
+
attributeName = cookieAv;
|
|
62562
|
+
}
|
|
62563
|
+
attributeName = attributeName.trim();
|
|
62564
|
+
attributeValue = attributeValue.trim();
|
|
62565
|
+
if (attributeValue.length > maxAttributeValueSize) {
|
|
62566
|
+
continue;
|
|
62567
|
+
}
|
|
62568
|
+
const attributeNameLowercase = attributeName.toLowerCase();
|
|
62569
|
+
if (attributeNameLowercase === "expires") {
|
|
62570
|
+
const expiryTime = new Date(attributeValue);
|
|
62571
|
+
cookieAttributeList.expires = expiryTime;
|
|
62572
|
+
} else if (attributeNameLowercase === "max-age") {
|
|
62573
|
+
const charCode = attributeValue.charCodeAt(0);
|
|
62574
|
+
if ((charCode < 48 || charCode > 57) && attributeValue[0] !== "-") {
|
|
62575
|
+
continue;
|
|
62576
|
+
}
|
|
62577
|
+
if (!/^\d+$/.test(attributeValue)) {
|
|
62578
|
+
continue;
|
|
62579
|
+
}
|
|
62580
|
+
const deltaSeconds = Number(attributeValue);
|
|
62581
|
+
cookieAttributeList.maxAge = deltaSeconds;
|
|
62582
|
+
} else if (attributeNameLowercase === "domain") {
|
|
62583
|
+
let cookieDomain = attributeValue;
|
|
62584
|
+
if (cookieDomain[0] === ".") {
|
|
62585
|
+
cookieDomain = cookieDomain.slice(1);
|
|
62586
|
+
}
|
|
62587
|
+
cookieDomain = cookieDomain.toLowerCase();
|
|
62588
|
+
cookieAttributeList.domain = cookieDomain;
|
|
62589
|
+
} else if (attributeNameLowercase === "path") {
|
|
62590
|
+
let cookiePath = "";
|
|
62591
|
+
if (attributeValue.length === 0 || attributeValue[0] !== "/") {
|
|
62592
|
+
cookiePath = "/";
|
|
62593
|
+
} else {
|
|
62594
|
+
cookiePath = attributeValue;
|
|
62595
|
+
}
|
|
62596
|
+
cookieAttributeList.path = cookiePath;
|
|
62597
|
+
} else if (attributeNameLowercase === "secure") {
|
|
62598
|
+
cookieAttributeList.secure = true;
|
|
62599
|
+
} else if (attributeNameLowercase === "httponly") {
|
|
62600
|
+
cookieAttributeList.httpOnly = true;
|
|
62601
|
+
} else if (attributeNameLowercase === "samesite") {
|
|
62602
|
+
const attributeValueLowercase = attributeValue.toLowerCase();
|
|
62603
|
+
if (attributeValueLowercase === "none") {
|
|
62604
|
+
cookieAttributeList.sameSite = "None";
|
|
62605
|
+
} else if (attributeValueLowercase === "strict") {
|
|
62606
|
+
cookieAttributeList.sameSite = "Strict";
|
|
62607
|
+
} else if (attributeValueLowercase === "lax") {
|
|
62608
|
+
cookieAttributeList.sameSite = "Lax";
|
|
62609
|
+
}
|
|
62610
|
+
} else {
|
|
62611
|
+
cookieAttributeList.unparsed ??= [];
|
|
62612
|
+
cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`);
|
|
61971
62613
|
}
|
|
61972
|
-
} else {
|
|
61973
|
-
cookieAttributeList.unparsed ??= [];
|
|
61974
|
-
cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`);
|
|
61975
62614
|
}
|
|
61976
|
-
return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList);
|
|
61977
62615
|
}
|
|
61978
62616
|
module2.exports = {
|
|
61979
62617
|
parseSetCookie,
|
|
@@ -61995,7 +62633,7 @@ var require_cookies = __commonJS({
|
|
|
61995
62633
|
webidl.argumentLengthCheck(arguments, 1, "getCookies");
|
|
61996
62634
|
brandChecks(headers);
|
|
61997
62635
|
const cookie = headers.get("cookie");
|
|
61998
|
-
const out = {};
|
|
62636
|
+
const out = { __proto__: null };
|
|
61999
62637
|
if (!cookie) {
|
|
62000
62638
|
return out;
|
|
62001
62639
|
}
|
|
@@ -62771,11 +63409,11 @@ var require_connection = __commonJS({
|
|
|
62771
63409
|
processResponse(response) {
|
|
62772
63410
|
if (response.type === "error" || response.status !== 101) {
|
|
62773
63411
|
if (response.socket?.session == null) {
|
|
62774
|
-
|
|
63412
|
+
failHandshake(handler, response, 1002, "Received network error or non-101 status code.", response.error);
|
|
62775
63413
|
return;
|
|
62776
63414
|
}
|
|
62777
63415
|
if (response.status !== 200) {
|
|
62778
|
-
|
|
63416
|
+
failHandshake(handler, response, 1002, "Received network error or non-200 status code.", response.error);
|
|
62779
63417
|
return;
|
|
62780
63418
|
}
|
|
62781
63419
|
}
|
|
@@ -62784,21 +63422,21 @@ var require_connection = __commonJS({
|
|
|
62784
63422
|
warningEmitted = true;
|
|
62785
63423
|
}
|
|
62786
63424
|
if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) {
|
|
62787
|
-
|
|
63425
|
+
failHandshake(handler, response, 1002, "Server did not respond with sent protocols.");
|
|
62788
63426
|
return;
|
|
62789
63427
|
}
|
|
62790
63428
|
if (response.socket.session == null && response.headersList.get("Upgrade")?.toLowerCase() !== "websocket") {
|
|
62791
|
-
|
|
63429
|
+
failHandshake(handler, response, 1002, 'Server did not set Upgrade header to "websocket".');
|
|
62792
63430
|
return;
|
|
62793
63431
|
}
|
|
62794
63432
|
if (response.socket.session == null && response.headersList.get("Connection")?.toLowerCase() !== "upgrade") {
|
|
62795
|
-
|
|
63433
|
+
failHandshake(handler, response, 1002, 'Server did not set Connection header to "upgrade".');
|
|
62796
63434
|
return;
|
|
62797
63435
|
}
|
|
62798
63436
|
const secWSAccept = response.headersList.get("Sec-WebSocket-Accept");
|
|
62799
63437
|
const digest = crypto12.hash("sha1", keyValue + uid, "base64");
|
|
62800
63438
|
if (secWSAccept !== digest) {
|
|
62801
|
-
|
|
63439
|
+
failHandshake(handler, response, 1002, "Incorrect hash received in Sec-WebSocket-Accept header.");
|
|
62802
63440
|
return;
|
|
62803
63441
|
}
|
|
62804
63442
|
const secExtension = response.headersList.get("Sec-WebSocket-Extensions");
|
|
@@ -62806,7 +63444,7 @@ var require_connection = __commonJS({
|
|
|
62806
63444
|
if (secExtension !== null) {
|
|
62807
63445
|
extensions = parseExtensions(secExtension);
|
|
62808
63446
|
if (!extensions.has("permessage-deflate")) {
|
|
62809
|
-
|
|
63447
|
+
failHandshake(handler, response, 1002, "Sec-WebSocket-Extensions header does not match.");
|
|
62810
63448
|
return;
|
|
62811
63449
|
}
|
|
62812
63450
|
}
|
|
@@ -62814,7 +63452,7 @@ var require_connection = __commonJS({
|
|
|
62814
63452
|
if (secProtocol !== null) {
|
|
62815
63453
|
const requestProtocols = getDecodeSplit("sec-websocket-protocol", request2.headersList);
|
|
62816
63454
|
if (requestProtocols === null || !requestProtocols.includes(secProtocol)) {
|
|
62817
|
-
|
|
63455
|
+
failHandshake(handler, response, 1002, "Protocol was not set in the opening handshake.");
|
|
62818
63456
|
return;
|
|
62819
63457
|
}
|
|
62820
63458
|
}
|
|
@@ -62860,6 +63498,12 @@ var require_connection = __commonJS({
|
|
|
62860
63498
|
object.readyState = states.CLOSING;
|
|
62861
63499
|
}
|
|
62862
63500
|
}
|
|
63501
|
+
function failHandshake(handler, response, code2, reason, cause) {
|
|
63502
|
+
if (response.socket?.session != null && !response.socket.destroyed) {
|
|
63503
|
+
response.socket.destroy();
|
|
63504
|
+
}
|
|
63505
|
+
failWebsocketConnection(handler, code2, reason, cause);
|
|
63506
|
+
}
|
|
62863
63507
|
function failWebsocketConnection(handler, code2, reason, cause) {
|
|
62864
63508
|
if (isEstablished(handler.readyState)) {
|
|
62865
63509
|
closeWebSocketConnection(handler, code2, reason, false);
|
|
@@ -63138,6 +63782,15 @@ var require_receiver = __commonJS({
|
|
|
63138
63782
|
if (isControlFrame(this.#info.opcode)) {
|
|
63139
63783
|
this.#loop = this.parseControlFrame(body);
|
|
63140
63784
|
this.#state = parserStates.INFO;
|
|
63785
|
+
if (this.#loop && this.#handler.socket.writableNeedDrain) {
|
|
63786
|
+
this.#loop = false;
|
|
63787
|
+
this.#handler.socket.once("drain", () => {
|
|
63788
|
+
if (this.destroyed) return;
|
|
63789
|
+
this.#loop = true;
|
|
63790
|
+
this.run(callback);
|
|
63791
|
+
});
|
|
63792
|
+
return;
|
|
63793
|
+
}
|
|
63141
63794
|
} else {
|
|
63142
63795
|
if (!this.#info.compressed) {
|
|
63143
63796
|
if (!this.writeFragments(body)) {
|
|
@@ -64313,6 +64966,7 @@ var require_util6 = __commonJS({
|
|
|
64313
64966
|
var require_eventsource_stream = __commonJS({
|
|
64314
64967
|
"node_modules/undici/lib/web/eventsource/eventsource-stream.js"(exports2, module2) {
|
|
64315
64968
|
"use strict";
|
|
64969
|
+
var buffer = require("buffer");
|
|
64316
64970
|
var { Transform } = require("stream");
|
|
64317
64971
|
var { isASCIINumber, isValidLastEventId } = require_util6();
|
|
64318
64972
|
var BOM = [239, 187, 191];
|
|
@@ -64320,24 +64974,28 @@ var require_eventsource_stream = __commonJS({
|
|
|
64320
64974
|
var CR = 13;
|
|
64321
64975
|
var COLON = 58;
|
|
64322
64976
|
var SPACE = 32;
|
|
64977
|
+
var defaultMaxEventSize = buffer.kStringMaxLength;
|
|
64323
64978
|
var DATA = Buffer.from("data");
|
|
64324
64979
|
var EVENT = Buffer.from("event");
|
|
64325
64980
|
var ID = Buffer.from("id");
|
|
64326
64981
|
var RETRY = Buffer.from("retry");
|
|
64327
|
-
|
|
64328
|
-
|
|
64982
|
+
var minParserItems = 1024;
|
|
64983
|
+
var maxParserItems = 131072;
|
|
64984
|
+
var bytesPerParserItem = 128;
|
|
64985
|
+
function isASCIINumberBytes(buffer2, start) {
|
|
64986
|
+
if (start >= buffer2.length) {
|
|
64329
64987
|
return false;
|
|
64330
64988
|
}
|
|
64331
|
-
for (let i = start; i <
|
|
64332
|
-
if (
|
|
64989
|
+
for (let i = start; i < buffer2.length; i++) {
|
|
64990
|
+
if (buffer2[i] < 48 || buffer2[i] > 57) {
|
|
64333
64991
|
return false;
|
|
64334
64992
|
}
|
|
64335
64993
|
}
|
|
64336
64994
|
return true;
|
|
64337
64995
|
}
|
|
64338
|
-
function isValidLastEventIdBytes(
|
|
64339
|
-
for (let i = start; i <
|
|
64340
|
-
if (
|
|
64996
|
+
function isValidLastEventIdBytes(buffer2, start) {
|
|
64997
|
+
for (let i = start; i < buffer2.length; i++) {
|
|
64998
|
+
if (buffer2[i] === 0) {
|
|
64341
64999
|
return false;
|
|
64342
65000
|
}
|
|
64343
65001
|
}
|
|
@@ -64354,6 +65012,11 @@ var require_eventsource_stream = __commonJS({
|
|
|
64354
65012
|
}
|
|
64355
65013
|
return true;
|
|
64356
65014
|
}
|
|
65015
|
+
function createMaxEventSizeExceededError() {
|
|
65016
|
+
const error = new Error("EventSource message size exceeded");
|
|
65017
|
+
error.aborted = false;
|
|
65018
|
+
return error;
|
|
65019
|
+
}
|
|
64357
65020
|
var EventSourceStream = class extends Transform {
|
|
64358
65021
|
/**
|
|
64359
65022
|
* @type {eventSourceSettings}
|
|
@@ -64380,6 +65043,13 @@ var require_eventsource_stream = __commonJS({
|
|
|
64380
65043
|
pos = 0;
|
|
64381
65044
|
lineChunkIndex = 0;
|
|
64382
65045
|
linePos = 0;
|
|
65046
|
+
lineLength = 0;
|
|
65047
|
+
eventSize = 0;
|
|
65048
|
+
eventFieldSizes = { data: 0, event: 0, id: 0, retry: 0 };
|
|
65049
|
+
dataLineCount = 0;
|
|
65050
|
+
maxEventSize;
|
|
65051
|
+
maxDataLines;
|
|
65052
|
+
maxBufferedChunks;
|
|
64383
65053
|
event = {
|
|
64384
65054
|
data: void 0,
|
|
64385
65055
|
event: void 0,
|
|
@@ -64389,6 +65059,7 @@ var require_eventsource_stream = __commonJS({
|
|
|
64389
65059
|
/**
|
|
64390
65060
|
* @param {object} options
|
|
64391
65061
|
* @param {boolean} [options.readableObjectMode]
|
|
65062
|
+
* @param {number} [options.maxEventSize]
|
|
64392
65063
|
* @param {eventSourceSettings} [options.eventSourceSettings]
|
|
64393
65064
|
* @param {(chunk: any, encoding?: BufferEncoding | undefined) => boolean} [options.push]
|
|
64394
65065
|
*/
|
|
@@ -64396,6 +65067,10 @@ var require_eventsource_stream = __commonJS({
|
|
|
64396
65067
|
options.readableObjectMode = true;
|
|
64397
65068
|
super(options);
|
|
64398
65069
|
this.state = options.eventSourceSettings || {};
|
|
65070
|
+
this.maxEventSize = options.maxEventSize ?? defaultMaxEventSize;
|
|
65071
|
+
const parserItemLimit = this.maxEventSize > 0 ? Math.min(maxParserItems, Math.max(minParserItems, Math.floor(this.maxEventSize / bytesPerParserItem))) : 0;
|
|
65072
|
+
this.maxDataLines = parserItemLimit;
|
|
65073
|
+
this.maxBufferedChunks = parserItemLimit;
|
|
64399
65074
|
if (options.push) {
|
|
64400
65075
|
this.push = options.push;
|
|
64401
65076
|
}
|
|
@@ -64411,6 +65086,10 @@ var require_eventsource_stream = __commonJS({
|
|
|
64411
65086
|
callback();
|
|
64412
65087
|
return;
|
|
64413
65088
|
}
|
|
65089
|
+
if (this.maxEventSize > 0 && this.chunks.length >= this.maxBufferedChunks && chunk2[0] !== LF && chunk2[0] !== CR) {
|
|
65090
|
+
callback(createMaxEventSizeExceededError());
|
|
65091
|
+
return;
|
|
65092
|
+
}
|
|
64414
65093
|
this.chunks.push(chunk2);
|
|
64415
65094
|
if (this.checkBOM) {
|
|
64416
65095
|
if (this.handleBOM()) {
|
|
@@ -64447,15 +65126,29 @@ var require_eventsource_stream = __commonJS({
|
|
|
64447
65126
|
if (byte === CR) {
|
|
64448
65127
|
this.crlfCheck = true;
|
|
64449
65128
|
}
|
|
64450
|
-
|
|
65129
|
+
try {
|
|
65130
|
+
this.parseLine(this.readLine(), this.event);
|
|
65131
|
+
} catch (error) {
|
|
65132
|
+
callback(error);
|
|
65133
|
+
return;
|
|
65134
|
+
}
|
|
64451
65135
|
this.consumeCurrentByte();
|
|
64452
65136
|
this.eventEndCheck = true;
|
|
64453
65137
|
continue;
|
|
64454
65138
|
}
|
|
65139
|
+
if (this.maxEventSize > 0 && ++this.lineLength > this.maxEventSize + 7) {
|
|
65140
|
+
callback(createMaxEventSizeExceededError());
|
|
65141
|
+
return;
|
|
65142
|
+
}
|
|
64455
65143
|
this.advanceCursor();
|
|
64456
65144
|
}
|
|
64457
65145
|
callback();
|
|
64458
65146
|
}
|
|
65147
|
+
_destroy(error, callback) {
|
|
65148
|
+
this.chunks.length = 0;
|
|
65149
|
+
this.clearEvent();
|
|
65150
|
+
super._destroy(error, callback);
|
|
65151
|
+
}
|
|
64459
65152
|
/**
|
|
64460
65153
|
* @param {Buffer} line
|
|
64461
65154
|
* @param {EventSourceStreamEvent} event
|
|
@@ -64478,6 +65171,12 @@ var require_eventsource_stream = __commonJS({
|
|
|
64478
65171
|
}
|
|
64479
65172
|
}
|
|
64480
65173
|
if (isFieldName(line, fieldLength, DATA)) {
|
|
65174
|
+
if (this.maxEventSize > 0 && this.dataLineCount >= this.maxDataLines) {
|
|
65175
|
+
throw createMaxEventSizeExceededError();
|
|
65176
|
+
}
|
|
65177
|
+
const valueBytes = line.length - valueStart;
|
|
65178
|
+
const dataSize = this.eventFieldSizes.data + (event.data === void 0 ? 0 : 1) + valueBytes;
|
|
65179
|
+
this.setEventFieldSize("data", dataSize);
|
|
64481
65180
|
const value = line.toString("utf8", valueStart);
|
|
64482
65181
|
if (event.data === void 0) {
|
|
64483
65182
|
event.data = value;
|
|
@@ -64485,27 +65184,38 @@ var require_eventsource_stream = __commonJS({
|
|
|
64485
65184
|
event.data += `
|
|
64486
65185
|
${value}`;
|
|
64487
65186
|
}
|
|
65187
|
+
this.dataLineCount++;
|
|
64488
65188
|
return;
|
|
64489
65189
|
}
|
|
64490
65190
|
if (isFieldName(line, fieldLength, RETRY)) {
|
|
64491
65191
|
if (isASCIINumberBytes(line, valueStart)) {
|
|
65192
|
+
this.setEventFieldSize("retry", line.length - valueStart);
|
|
64492
65193
|
event.retry = line.toString("utf8", valueStart);
|
|
64493
65194
|
}
|
|
64494
65195
|
return;
|
|
64495
65196
|
}
|
|
64496
65197
|
if (isFieldName(line, fieldLength, ID)) {
|
|
64497
65198
|
if (isValidLastEventIdBytes(line, valueStart)) {
|
|
65199
|
+
this.setEventFieldSize("id", line.length - valueStart);
|
|
64498
65200
|
event.id = line.toString("utf8", valueStart);
|
|
64499
65201
|
}
|
|
64500
65202
|
return;
|
|
64501
65203
|
}
|
|
64502
65204
|
if (isFieldName(line, fieldLength, EVENT)) {
|
|
64503
|
-
|
|
64504
|
-
|
|
64505
|
-
event.event =
|
|
65205
|
+
if (valueStart < line.length) {
|
|
65206
|
+
this.setEventFieldSize("event", line.length - valueStart);
|
|
65207
|
+
event.event = line.toString("utf8", valueStart);
|
|
64506
65208
|
}
|
|
64507
65209
|
}
|
|
64508
65210
|
}
|
|
65211
|
+
setEventFieldSize(field, size) {
|
|
65212
|
+
const eventSize = this.eventSize - this.eventFieldSizes[field] + size;
|
|
65213
|
+
if (this.maxEventSize > 0 && eventSize > this.maxEventSize) {
|
|
65214
|
+
throw createMaxEventSizeExceededError();
|
|
65215
|
+
}
|
|
65216
|
+
this.eventSize = eventSize;
|
|
65217
|
+
this.eventFieldSizes[field] = size;
|
|
65218
|
+
}
|
|
64509
65219
|
/**
|
|
64510
65220
|
* @param {EventSourceStreamEvent} event
|
|
64511
65221
|
*/
|
|
@@ -64532,6 +65242,12 @@ ${value}`;
|
|
|
64532
65242
|
this.event.event = void 0;
|
|
64533
65243
|
this.event.id = void 0;
|
|
64534
65244
|
this.event.retry = void 0;
|
|
65245
|
+
this.eventSize = 0;
|
|
65246
|
+
this.dataLineCount = 0;
|
|
65247
|
+
this.eventFieldSizes.data = 0;
|
|
65248
|
+
this.eventFieldSizes.event = 0;
|
|
65249
|
+
this.eventFieldSizes.id = 0;
|
|
65250
|
+
this.eventFieldSizes.retry = 0;
|
|
64535
65251
|
}
|
|
64536
65252
|
hasPendingEvent() {
|
|
64537
65253
|
return this.event.data !== void 0 || this.event.event !== void 0 || this.event.id !== void 0 || this.event.retry !== void 0;
|
|
@@ -64556,13 +65272,15 @@ ${value}`;
|
|
|
64556
65272
|
syncLineStartToCursor() {
|
|
64557
65273
|
this.lineChunkIndex = this.chunkIndex;
|
|
64558
65274
|
this.linePos = this.pos;
|
|
65275
|
+
this.lineLength = 0;
|
|
64559
65276
|
this.dropConsumedChunks();
|
|
64560
65277
|
}
|
|
64561
65278
|
dropConsumedChunks() {
|
|
64562
|
-
|
|
64563
|
-
this.
|
|
64564
|
-
this.
|
|
64565
|
-
this.
|
|
65279
|
+
if (this.lineChunkIndex > 0) {
|
|
65280
|
+
const consumed = this.lineChunkIndex;
|
|
65281
|
+
this.chunks.splice(0, consumed);
|
|
65282
|
+
this.lineChunkIndex = 0;
|
|
65283
|
+
this.chunkIndex -= consumed;
|
|
64566
65284
|
}
|
|
64567
65285
|
if (this.chunkIndex === this.chunks.length) {
|
|
64568
65286
|
this.chunks.length = 0;
|
|
@@ -64664,6 +65382,7 @@ var require_eventsource = __commonJS({
|
|
|
64664
65382
|
var { isNetworkError } = require_response();
|
|
64665
65383
|
var { kEnumerableProperty } = require_util();
|
|
64666
65384
|
var { environmentSettingsObject } = require_util2();
|
|
65385
|
+
var { getGlobalDispatcher } = require_global2();
|
|
64667
65386
|
var experimentalWarned = false;
|
|
64668
65387
|
var defaultReconnectionTime = 3e3;
|
|
64669
65388
|
var CONNECTING = 0;
|
|
@@ -64805,6 +65524,7 @@ var require_eventsource = __commonJS({
|
|
|
64805
65524
|
this.#state.origin = response.urlList[response.urlList.length - 1].origin;
|
|
64806
65525
|
const eventSourceStream = new EventSourceStream({
|
|
64807
65526
|
eventSourceSettings: this.#state,
|
|
65527
|
+
maxEventSize: this.#dispatcher.eventSourceOptions?.maxEventSize,
|
|
64808
65528
|
push: (event) => {
|
|
64809
65529
|
this.dispatchEvent(createFastMessageEvent(
|
|
64810
65530
|
event.type,
|
|
@@ -64941,7 +65661,8 @@ var require_eventsource = __commonJS({
|
|
|
64941
65661
|
{
|
|
64942
65662
|
key: "dispatcher",
|
|
64943
65663
|
// undici only
|
|
64944
|
-
converter: webidl.converters.any
|
|
65664
|
+
converter: webidl.converters.any,
|
|
65665
|
+
defaultValue: () => getGlobalDispatcher()
|
|
64945
65666
|
},
|
|
64946
65667
|
{
|
|
64947
65668
|
key: "node",
|