mirror of
https://github.com/supabase/supabase.git
synced 2026-10-14 13:49:09 +03:00
* Update QueryOptions.ts * Create UnifiedLogs_InspectionPanel_Architecture.md * init new queries * Create UnifiedLogs_ServiceFlow_Implementation_Plan.md * Add service flow blocks to UnifiedLogs panel Introduces ServiceFlowBlocks components to visually represent the service flow in UnifiedLogs, including Origin, Network, PostgREST, Postgres, and Response steps. Adds utility formatters and updates ServiceFlowPanel to render the new blocks with enriched data and loading/error states. * Enable filterable fields in ServiceFlow blocks Refactored ServiceFlow blocks to support filterable fields by passing filterFields and table props, updating BlockField to render filterable values as clickable actions, and aligning field configs with filterable IDs. Updated ServiceFlowPanel to use new block names and pass required props. This enhances interactivity and consistency in the UnifiedLogs service flow UI. * Update ServiceFlowBlocks.tsx * Enhance Service Flow with enriched fields and filtering Expanded the Service Flow SQL query to extract 35+ flattened, meaningful fields including request, response, client location, network, headers, and JWT data. Updated the implementation plan to reflect new block architecture, filtering integration, and future enhancements. Added debug logging for enriched and raw log data in ServiceFlowPanel. * Start adding inspection panel * Moar logs * Add Postgres service flow support to Unified Logs Introduces Postgres as a first-class service flow type in Unified Logs, including SQL query, type definitions, UI blocks, and filtering. Updates ServiceFlow queries, types, and UI components to display enriched Postgres log details and event messages. Also refines filter fields, log type ordering, and minor UI adjustments for clarity and consistency. * Lots of tidying up, moving blocks into their own files. * Remove UnifiedLogs architecture and service flow docs Deleted documentation files related to UnifiedLogs inspection panel architecture, service flow field mapping, implementation plan, and integration example. This cleans up outdated or redundant design and implementation reference materials. * Refactor service flow blocks to use unified config system Replaces individual service block components with a generic, config-driven system. Introduces a shared Block component and centralizes block configuration in blockConfigs.ts, reducing duplication and improving maintainability. Updates imports and removes now-unnecessary block files. Also refactors ServiceFlowPanel to use the new block structure and simplifies layer icon logic. * Refactor ServiceFlow blocks and utilities structure Consolidates edge service flow SQL queries to reduce duplication, removes ServiceFlowBlocks.tsx in favor of more modular block/component structure, and moves storage-specific utilities to a new utils/storageUtils.ts file. Updates imports in config files and ServiceFlowPanel to reflect the new structure. Type definitions are clarified and extended in types.ts. * Update ServiceFlow.sql.ts * Refactor ServiceFlow types for stronger type safety Replaces generic 'any' types with specific types such as ColumnSchema, QuerySearchParamsType, and SearchParamsType in ServiceFlow components and ServiceFlowPanel. This improves type safety and code clarity, and removes unused metadata and workaround variables from ServiceFlowPanel. * Remove debug flags and console logs from ServiceFlow components Eliminated unused DEBUG_SERVICE_FLOW flags and related console logging from ServiceFlow.sql.ts and ServiceFlowPanel.tsx to clean up the codebase and reduce unnecessary output. * Remove unused log query and filtering functions Deleted unused functions related to log level filtering, base condition building, and the edge/supavisor logs queries. This cleanup simplifies the UnifiedLogs.queries.ts file by removing legacy or currently unused code. * revert * Remove ServiceFlow panel and types, update DataTableToolbar Deleted the ServiceFlowPanel component and its associated types from the UnifiedLogs interface. Updated DataTableToolbar to toggle between PanelLeftClose and PanelLeftOpen icons based on the open state. * Remove unused totalRows prop from DataTable Eliminates the totalRows prop from UnifiedLogs and its context interface, as it is no longer used. This helps clean up the component API and related type definitions. * Refactor log field configs and unify event message component Replaces specialized PostgresEventMessage with a generic EventMessage component and updates references accordingly. Consolidates all log field configuration files into serviceFlowFields.ts, removing separate config files for each service. Cleans up unused types and utility imports, and deletes redundant formatters. * Enhance UnifiedLogs filters and facets handling Added PATCH to allowed HTTP methods and improved status code rendering in filters. Changed Host, Pathname, and Auth User filters to use dynamic checkbox options populated from facets. Updated SQL queries to provide global facets for hardcoded fields and filtered facets for dynamic fields, and fixed field naming for path/pathname consistency. Improved UI to show an empty state when no filter options are available. * Fix method options mapping and add debug logs Corrects the mapping variable name in UnifiedLogs.fields.tsx from 'region' to 'method' for clarity. Adds debug console logs in unified-logs-count-query.ts to inspect count query responses and help diagnose missing data. * Show empty state for Postgres block with no data Added logic to display an empty state in the Postgres block when no Postgres data is available in non-Postgres logs. Also updated ServiceFlowPanel to render both PostgREST and Postgres blocks, ensuring the empty state is shown when appropriate. * Remove Log Details tab from ServiceFlowPanel The Log Details tab and its associated content have been removed from the ServiceFlowPanel component. This simplifies the UI by focusing on the Overview and Raw JSON tabs. * Enhance UnifiedLogs filters with status code labels and facet logic Added human-readable labels for HTTP and Postgres status codes and improved the UnifiedLogs filter UI to display these labels. Refactored the logs count query to avoid self-filtering for facet counts, ensuring accurate facet behavior. Improved filter option rendering for better usability and consistency, and updated input styling for filter search. * Update UnifiedLogs.queries.ts * Update UnifiedLogs.queries.ts * Update apps/studio/components/interfaces/UnifiedLogs/ServiceFlow/components/shared/BlockField.tsx * Refactor UnifiedLogs layout and improve service type formatting Refactored UnifiedLogs.tsx to use a more flexible ResizablePanelGroup layout, replaced inline function logs panel with a new LogsListPanel component, and removed unused imports and code. Updated ServiceFlow.sql.ts to simplify JWT payload extraction and added a dedicated query for edge function service flow. Added a utility to format service type strings for display in UnifiedLogs.utils.ts. * Refactor logs UI and improve service flow handling Renamed FunctionLogsTab to LogsList and added a new LogsListPanel for displaying function logs in a side panel. Improved ServiceFlowPanel with better panel sizing, conditional query enabling, and UI adjustments. Enhanced EventMessage with badge styling and service type formatting. Updated CollapsibleSection for cleaner layout. Enabled debug mode in unified-log-inspection-query. Updated FilterSideBar to use ResizablePanel for improved layout flexibility. * Refactor UnifiedLogs UI and ServiceFlow query fields Removes unused skeletonClassName from BlockFieldConfig and related UI, simplifies ServiceFlow SQL query by returning null for unused JWT fields, and updates UnifiedLogs and LogsListPanel for improved layout and collapsible logs panel. Also adjusts table and log list row heights for better visual consistency. * Update ServiceFlowHeader.tsx * Update ServiceFlowHeader.tsx * Refactor ServiceFlowPanel and header tooltip logic Replaces custom tooltip implementation in ServiceFlowHeader with ButtonTooltip for navigation buttons. Simplifies serviceFlowType logic in ServiceFlowPanel by removing the getServiceFlowType helper and using direct mapping, reducing code complexity. * Update UnifiedLogs.constants.tsx * Remove commented code and add doc comment in UnifiedLogs Removed an unused commented-out span in UnifiedLogs.fields.tsx and added a documentation comment for the Supabase storage logs query fragment in UnifiedLogs.queries.ts. * Update UnifiedLogs.tsx * Remove 'live' level from DataTable components Eliminated the 'live' level from LEVELS constant and related color utility logic. Also removed commented code and references to 'live' in DataTableFilterControls and LiveRow, streamlining the DataTable component's status handling. * Update UnifiedLogs.constants.tsx * cleanup * remove console logs * Update status filter parsing to use string arrays Changed the status filter in UnifiedLogs to parse and validate as arrays of strings instead of numbers. This affects both the search params parser and the column filter schema, aligning the status filter handling with other string-based filters. --------- Co-authored-by: Alaister Young <a@alaisteryoung.com>
381 lines
13 KiB
TypeScript
381 lines
13 KiB
TypeScript
import {
|
|
createParser,
|
|
parseAsArrayOf,
|
|
parseAsBoolean,
|
|
parseAsInteger,
|
|
parseAsString,
|
|
parseAsStringLiteral,
|
|
parseAsTimestamp,
|
|
} from 'nuqs'
|
|
|
|
import {
|
|
ARRAY_DELIMITER,
|
|
LEVELS,
|
|
RANGE_DELIMITER,
|
|
SLIDER_DELIMITER,
|
|
SORT_DELIMITER,
|
|
} from 'components/ui/DataTable/DataTable.constants'
|
|
import { ChartConfig } from 'ui'
|
|
import { TooltipLabel } from './components/TooltipLabel'
|
|
|
|
export const CHART_CONFIG = {
|
|
success: {
|
|
label: <TooltipLabel level="success" />,
|
|
color: 'hsl(var(--foreground-muted))',
|
|
},
|
|
warning: {
|
|
label: <TooltipLabel level="warning" />,
|
|
color: 'hsl(var(--warning-default))',
|
|
},
|
|
error: {
|
|
label: <TooltipLabel level="error" />,
|
|
color: 'hsl(var(--destructive-default))',
|
|
},
|
|
} satisfies ChartConfig
|
|
|
|
export const REGIONS = ['ams', 'fra', 'gru', 'hkg', 'iad', 'syd'] as const
|
|
export const METHODS = ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'] as const
|
|
export const LOG_TYPES = ['postgres', 'postgrest', 'auth', 'storage', 'edge function'] as const
|
|
|
|
const parseAsSort = createParser({
|
|
parse(queryValue: string) {
|
|
const [id, desc] = queryValue.split(SORT_DELIMITER)
|
|
if (!id && !desc) return null
|
|
return { id, desc: desc === 'desc' }
|
|
},
|
|
serialize(value: { id: string; desc: boolean }) {
|
|
return `${value.id}.${value.desc ? 'desc' : 'asc'}`
|
|
},
|
|
})
|
|
|
|
export const SEARCH_PARAMS_PARSER = {
|
|
// CUSTOM FILTERS
|
|
level: parseAsArrayOf(parseAsStringLiteral(LEVELS), ARRAY_DELIMITER),
|
|
log_type: parseAsArrayOf(parseAsString, ARRAY_DELIMITER),
|
|
latency: parseAsArrayOf(parseAsInteger, SLIDER_DELIMITER),
|
|
'timing.dns': parseAsArrayOf(parseAsInteger, SLIDER_DELIMITER),
|
|
'timing.connection': parseAsArrayOf(parseAsInteger, SLIDER_DELIMITER),
|
|
'timing.tls': parseAsArrayOf(parseAsInteger, SLIDER_DELIMITER),
|
|
'timing.ttfb': parseAsArrayOf(parseAsInteger, SLIDER_DELIMITER),
|
|
'timing.transfer': parseAsArrayOf(parseAsInteger, SLIDER_DELIMITER),
|
|
status: parseAsArrayOf(parseAsString, ARRAY_DELIMITER),
|
|
regions: parseAsArrayOf(parseAsStringLiteral(REGIONS), ARRAY_DELIMITER),
|
|
method: parseAsArrayOf(parseAsStringLiteral(METHODS), ARRAY_DELIMITER),
|
|
host: parseAsString,
|
|
pathname: parseAsString,
|
|
date: parseAsArrayOf(parseAsTimestamp, RANGE_DELIMITER),
|
|
|
|
// REQUIRED FOR SORTING & PAGINATION
|
|
sort: parseAsSort,
|
|
size: parseAsInteger.withDefault(40),
|
|
start: parseAsInteger.withDefault(0),
|
|
|
|
// REQUIRED FOR INFINITE SCROLLING (Live Mode and Load More)
|
|
direction: parseAsStringLiteral(['prev', 'next']).withDefault('next'),
|
|
cursor: parseAsTimestamp.withDefault(new Date()),
|
|
live: parseAsBoolean.withDefault(false),
|
|
|
|
uuid: parseAsString,
|
|
id: parseAsString,
|
|
}
|
|
|
|
const POSTGRES_STATUS_CODE_LABELS = {
|
|
'00000': 'Successful Completion',
|
|
'01000': 'Warning',
|
|
'0100C': 'Dynamic Result Sets Returned',
|
|
'01008': 'Implicit Zero Bit Padding',
|
|
'01003': 'Null Value Eliminated In Set Function',
|
|
'01007': 'Privilege Not Granted',
|
|
'01006': 'Privilege Not Revoked',
|
|
'01004': 'String Data Right Truncation',
|
|
'01P01': 'Deprecated Feature',
|
|
'02000': 'No Data',
|
|
'02001': 'No Additional Dynamic Result Sets Returned',
|
|
'03000': 'SQL Statement Not Yet Complete',
|
|
'08000': 'Connection Exception',
|
|
'08003': 'Connection Does Not Exist',
|
|
'08006': 'Connection Failure',
|
|
'08001': 'SQL Client Unable To Establish SQL Connection',
|
|
'08004': 'SQL Server Rejected Establishment Of SQL Connection',
|
|
'08007': 'Transaction Resolution Unknown',
|
|
'08P01': 'Protocol Violation',
|
|
'09000': 'Triggered Action Exception',
|
|
'0A000': 'Feature Not Supported',
|
|
'0B000': 'Invalid Transaction Initiation',
|
|
'0F000': 'Locator Exception',
|
|
'0F001': 'Invalid Locator Specification',
|
|
'0L000': 'Invalid Grantor',
|
|
'0LP01': 'Invalid Grant Operation',
|
|
'0P000': 'Invalid Role Specification',
|
|
'0Z000': 'Diagnostics Exception',
|
|
'0Z002': 'Stacked Diagnostics Accessed Without Active Handler',
|
|
'20000': 'Case Not Found',
|
|
'21000': 'Cardinality Violation',
|
|
'22000': 'Data Exception',
|
|
'2202E': 'Array Subscript Error',
|
|
'22021': 'Character Not In Repertoire',
|
|
'22008': 'Datetime Field Overflow',
|
|
'22012': 'Division By Zero',
|
|
'22005': 'Error In Assignment',
|
|
'2200B': 'Escape Character Conflict',
|
|
'22022': 'Indicator Overflow',
|
|
'22015': 'Interval Field Overflow',
|
|
'2201E': 'Invalid Argument For Logarithm',
|
|
'22014': 'Invalid Argument For Ntile Function',
|
|
'22016': 'Invalid Argument For Nth Value Function',
|
|
'2201F': 'Invalid Argument For Power Function',
|
|
'2201G': 'Invalid Argument For Width Bucket Function',
|
|
'22018': 'Invalid Character Value For Cast',
|
|
'22007': 'Invalid Datetime Format',
|
|
'22019': 'Invalid Escape Character',
|
|
'2200D': 'Invalid Escape Octet',
|
|
'22025': 'Invalid Escape Sequence',
|
|
'22P06': 'Nonstandard Use Of Escape Character',
|
|
'22010': 'Invalid Indicator Parameter Value',
|
|
'22023': 'Invalid Parameter Value',
|
|
'2201B': 'Invalid Regular Expression',
|
|
'2201W': 'Invalid Row Count In Limit Clause',
|
|
'2201X': 'Invalid Row Count In Result Offset Clause',
|
|
'22009': 'Invalid Time Zone Displacement Value',
|
|
'2200C': 'Invalid Use Of Escape Character',
|
|
'2200G': 'Most Specific Type Mismatch',
|
|
'22004': 'Null Value Not Allowed',
|
|
'22002': 'Null Value No Indicator Parameter',
|
|
'22003': 'Numeric Value Out Of Range',
|
|
'22026': 'String Data Length Mismatch',
|
|
'22001': 'String Data Right Truncation',
|
|
'22011': 'Substring Error',
|
|
'22027': 'Trim Error',
|
|
'22024': 'Unterminated C String',
|
|
'2200F': 'Zero Length Character String',
|
|
'22P01': 'Floating Point Exception',
|
|
'22P02': 'Invalid Text Representation',
|
|
'22P03': 'Invalid Binary Representation',
|
|
'22P04': 'Bad Copy File Format',
|
|
'22P05': 'Untranslatable Character',
|
|
'2200L': 'Not An XML Document',
|
|
'2200M': 'Invalid XML Document',
|
|
'2200N': 'Invalid XML Content',
|
|
'2200S': 'Invalid XML Comment',
|
|
'2200T': 'Invalid XML Processing Instruction',
|
|
'23000': 'Integrity Constraint Violation',
|
|
'23001': 'Restrict Violation',
|
|
'23502': 'Not Null Violation',
|
|
'23503': 'Foreign Key Violation',
|
|
'23505': 'Unique Violation',
|
|
'23514': 'Check Violation',
|
|
'23P01': 'Exclusion Violation',
|
|
'24000': 'Invalid Cursor State',
|
|
'25000': 'Invalid Transaction State',
|
|
'25001': 'Active SQL Transaction',
|
|
'25002': 'Branch Transaction Already Active',
|
|
'25008': 'Held Cursor Requires Same Isolation Level',
|
|
'25003': 'Inappropriate Access Mode For Branch Transaction',
|
|
'25004': 'Inappropriate Isolation Level For Branch Transaction',
|
|
'25005': 'No Active SQL Transaction For Branch Transaction',
|
|
'25006': 'Read Only SQL Transaction',
|
|
'25007': 'Schema And Data Statement Mixing Not Supported',
|
|
'25P01': 'No Active SQL Transaction',
|
|
'25P02': 'In Failed SQL Transaction',
|
|
'25P03': 'Idle In Transaction Session Timeout',
|
|
'26000': 'Invalid SQL Statement Name',
|
|
'27000': 'Triggered Data Change Violation',
|
|
'28000': 'Invalid Authorization Specification',
|
|
'28P01': 'Invalid Password',
|
|
'2B000': 'Dependent Privilege Descriptors Still Exist',
|
|
'2BP01': 'Dependent Objects Still Exist',
|
|
'2D000': 'Invalid Transaction Termination',
|
|
'2F000': 'SQL Routine Exception',
|
|
'2F005': 'Function Executed No Return Statement',
|
|
'2F002': 'Modifying SQL Data Not Permitted',
|
|
'2F003': 'Prohibited SQL Statement Attempted',
|
|
'2F004': 'Reading SQL Data Not Permitted',
|
|
'34000': 'Invalid Cursor Name',
|
|
'38000': 'External Routine Exception',
|
|
'38001': 'Containing SQL Not Permitted',
|
|
'38002': 'Modifying SQL Data Not Permitted',
|
|
'38003': 'Prohibited SQL Statement Attempted',
|
|
'38004': 'Reading SQL Data Not Permitted',
|
|
'39000': 'External Routine Invocation Exception',
|
|
'39001': 'Invalid SQLSTATE Returned',
|
|
'39004': 'Null Value Not Allowed',
|
|
'39P01': 'Trigger Protocol Violated',
|
|
'39P02': 'SRF Protocol Violated',
|
|
'39P03': 'Event Trigger Protocol Violated',
|
|
'3B000': 'Savepoint Exception',
|
|
'3B001': 'Invalid Savepoint Specification',
|
|
'3D000': 'Invalid Catalog Name',
|
|
'3F000': 'Invalid Schema Name',
|
|
'40000': 'Transaction Rollback',
|
|
'40002': 'Transaction Integrity Constraint Violation',
|
|
'40001': 'Serialization Failure',
|
|
'40003': 'Statement Completion Unknown',
|
|
'40P01': 'Deadlock Detected',
|
|
'42000': 'Syntax Error Or Access Rule Violation',
|
|
'42601': 'Syntax Error',
|
|
'42501': 'Insufficient Privilege',
|
|
'42846': 'Cannot Coerce',
|
|
'42803': 'Grouping Error',
|
|
'42P20': 'Windowing Error',
|
|
'42P19': 'Invalid Recursion',
|
|
'42830': 'Invalid Foreign Key',
|
|
'42602': 'Invalid Name',
|
|
'42622': 'Name Too Long',
|
|
'42939': 'Reserved Name',
|
|
'42804': 'Datatype Mismatch',
|
|
'42P18': 'Indeterminate Datatype',
|
|
'42809': 'Wrong Object Type',
|
|
'428C9': 'Generated Always',
|
|
'42703': 'Undefined Column',
|
|
'42883': 'Undefined Function',
|
|
'42P01': 'Undefined Table',
|
|
'42P02': 'Undefined Parameter',
|
|
'42704': 'Undefined Object',
|
|
'42701': 'Duplicate Column',
|
|
'42P03': 'Duplicate Cursor',
|
|
'42P04': 'Duplicate Database',
|
|
'42723': 'Duplicate Function',
|
|
'42P05': 'Duplicate Prepared Statement',
|
|
'42P06': 'Duplicate Schema',
|
|
'42P07': 'Duplicate Table',
|
|
'42712': 'Duplicate Alias',
|
|
'42710': 'Duplicate Object',
|
|
'42702': 'Ambiguous Column',
|
|
'42725': 'Ambiguous Function',
|
|
'42P08': 'Ambiguous Parameter',
|
|
'42P09': 'Ambiguous Alias',
|
|
'42P10': 'Invalid Column Reference',
|
|
'42611': 'Invalid Column Definition',
|
|
'42P11': 'Invalid Cursor Definition',
|
|
'42P12': 'Invalid Database Definition',
|
|
'42P13': 'Invalid Function Definition',
|
|
'42P14': 'Invalid Prepared Statement Definition',
|
|
'42P15': 'Invalid Schema Definition',
|
|
'42P16': 'Invalid Table Definition',
|
|
'42P17': 'Invalid Object Definition',
|
|
'44000': 'With Check Option Violation',
|
|
'53000': 'Insufficient Resources',
|
|
'53100': 'Disk Full',
|
|
'53200': 'Out Of Memory',
|
|
'53300': 'Too Many Connections',
|
|
'53400': 'Configuration Limit Exceeded',
|
|
'54000': 'Program Limit Exceeded',
|
|
'54001': 'Statement Too Complex',
|
|
'54011': 'Too Many Columns',
|
|
'54023': 'Too Many Arguments',
|
|
'55000': 'Object Not In Prerequisite State',
|
|
'55006': 'Object In Use',
|
|
'55P02': "Can't Change Runtime Param",
|
|
'55P03': 'Lock Not Available',
|
|
'55P04': 'Unsafe New Enum Value Usage',
|
|
'57000': 'Operator Intervention',
|
|
'57014': 'Query Canceled',
|
|
'57P01': 'Admin Shutdown',
|
|
'57P02': 'Crash Shutdown',
|
|
'57P03': 'Cannot Connect Now',
|
|
'57P04': 'Database Dropped',
|
|
'58000': 'System Error',
|
|
'58030': 'IO Error',
|
|
'58P01': 'Undefined File',
|
|
'58P02': 'Duplicate File',
|
|
F0000: 'Config File Error',
|
|
F0001: 'Lock File Exists',
|
|
HV000: 'FDW Error',
|
|
HV005: 'FDW Column Name Not Found',
|
|
HV002: 'FDW Dynamic Parameter Value Needed',
|
|
HV010: 'FDW Function Sequence Error',
|
|
HV021: 'FDW Inconsistent Data',
|
|
HV024: 'FDW Invalid Attribute Value',
|
|
HV007: 'FDW Invalid Column Name',
|
|
HV008: 'FDW Invalid Column Number',
|
|
HV004: 'FDW Invalid Data Type',
|
|
HV006: 'FDW Invalid Data Type Descriptors',
|
|
HV091: 'FDW Invalid Handle',
|
|
HV00B: 'FDW Invalid Option Index',
|
|
HV00C: 'FDW Invalid Option Name',
|
|
HV00D: 'FDW Invalid String Length Or Buffer Length',
|
|
HV090: 'FDW Invalid String Format',
|
|
HV00A: 'FDW Invalid Use Of Null Pointer',
|
|
HV009: 'FDW Too Many Handles',
|
|
HV014: 'FDW Out Of Memory',
|
|
HV001: 'FDW Unsupported Function',
|
|
P0000: 'PL/pgSQL Error',
|
|
P0001: 'Raise Exception',
|
|
P0002: 'No Data Found',
|
|
P0003: 'Too Many Rows',
|
|
P0004: 'Assert Failure',
|
|
XX000: 'Internal Error',
|
|
XX001: 'Data Corrupted',
|
|
XX002: 'Index Corrupted',
|
|
}
|
|
|
|
const HTTP_STATUS_CODE_LABELS = {
|
|
'100': 'Continue',
|
|
'101': 'Switching Protocols',
|
|
'102': 'Processing',
|
|
'103': 'Early Hints',
|
|
'200': 'OK',
|
|
'201': 'Created',
|
|
'202': 'Accepted',
|
|
'203': 'Non-Authoritative Information',
|
|
'204': 'No Content',
|
|
'205': 'Reset Content',
|
|
'206': 'Partial Content',
|
|
'207': 'Multi-Status',
|
|
'208': 'Already Reported',
|
|
'226': 'IM Used',
|
|
'300': 'Multiple Choices',
|
|
'301': 'Moved Permanently',
|
|
'302': 'Found',
|
|
'303': 'See Other',
|
|
'304': 'Not Modified',
|
|
'305': 'Use Proxy',
|
|
'307': 'Temporary Redirect',
|
|
'308': 'Permanent Redirect',
|
|
'400': 'Bad Request',
|
|
'401': 'Unauthorized',
|
|
'402': 'Payment Required',
|
|
'403': 'Forbidden',
|
|
'404': 'Not Found',
|
|
'405': 'Method Not Allowed',
|
|
'406': 'Not Acceptable',
|
|
'407': 'Proxy Authentication Required',
|
|
'408': 'Request Timeout',
|
|
'409': 'Conflict',
|
|
'410': 'Gone',
|
|
'411': 'Length Required',
|
|
'412': 'Precondition Failed',
|
|
'413': 'Payload Too Large',
|
|
'414': 'URI Too Long',
|
|
'415': 'Unsupported Media Type',
|
|
'416': 'Range Not Satisfiable',
|
|
'417': 'Expectation Failed',
|
|
'418': "I'm a teapot",
|
|
'421': 'Misdirected Request',
|
|
'422': 'Unprocessable Entity',
|
|
'423': 'Locked',
|
|
'424': 'Failed Dependency',
|
|
'425': 'Too Early',
|
|
'426': 'Upgrade Required',
|
|
'428': 'Precondition Required',
|
|
'429': 'Too Many Requests',
|
|
'431': 'Request Header Fields Too Large',
|
|
'451': 'Unavailable For Legal Reasons',
|
|
'500': 'Internal Server Error',
|
|
'501': 'Not Implemented',
|
|
'502': 'Bad Gateway',
|
|
'503': 'Service Unavailable',
|
|
'504': 'Gateway Timeout',
|
|
'505': 'HTTP Version Not Supported',
|
|
'506': 'Variant Also Negotiates',
|
|
'507': 'Insufficient Storage',
|
|
'508': 'Loop Detected',
|
|
'510': 'Not Extended',
|
|
'511': 'Network Authentication Required',
|
|
}
|
|
|
|
export const STATUS_CODE_LABELS = {
|
|
...HTTP_STATUS_CODE_LABELS,
|
|
...POSTGRES_STATUS_CODE_LABELS,
|
|
}
|