parseReferenceType() — supabase Function Reference
Architecture documentation for the parseReferenceType() function in Reference.typeSpec.ts from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9["parseReferenceType()"] ba4cce53_051e_d69f_25a4_55d567b053b3["parseType()"] ba4cce53_051e_d69f_25a4_55d567b053b3 -->|calls| fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 a332c905_4ed4_b6ac_e01a_4884e6eb498f["delegateParsing()"] fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 -->|calls| a332c905_4ed4_b6ac_e01a_4884e6eb498f 631d0381_6b79_8c3d_38e4_afc9293b54b3["parseRecordType()"] fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 -->|calls| 631d0381_6b79_8c3d_38e4_afc9293b54b3 c156f968_9bbd_a682_ae7b_67b0fd9615bc["parsePromiseType()"] fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 -->|calls| c156f968_9bbd_a682_ae7b_67b0fd9615bc 45153684_fe4c_47f8_72c2_8f51b69d530e["parseExtractType()"] fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 -->|calls| 45153684_fe4c_47f8_72c2_8f51b69d530e 66cf9bd2_2d9e_7ce9_7394_95c0d7b0ec67["parsePickType()"] fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 -->|calls| 66cf9bd2_2d9e_7ce9_7394_95c0d7b0ec67 bb35b968_1ae9_db1c_a12e_e55dad7ed403["isNewTypedoc()"] fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 -->|calls| bb35b968_1ae9_db1c_a12e_e55dad7ed403 d105b729_ca48_607f_7baa_fa9d3ca5ec8f["parseInterface()"] fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 -->|calls| d105b729_ca48_607f_7baa_fa9d3ca5ec8f ba4cce53_051e_d69f_25a4_55d567b053b3["parseType()"] fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 -->|calls| ba4cce53_051e_d69f_25a4_55d567b053b3 style fb700c5e_f2ad_0d4a_eeb3_3a30e4641ed9 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/docs/features/docs/Reference.typeSpec.ts lines 694–783
function parseReferenceType(type: any, map: Map<number, any>, typeArguments?: any, debug = false) {
if (type.dereferenced?.type) {
return delegateParsing(type, type.dereferenced.type, map)
}
if (type.dereferenced?.kindString) {
return delegateParsing(type, type.dereferenced, map)
}
if (type.refersToTypeParameter === true && typeArguments?.[0]) {
return delegateParsing(type, typeArguments?.[0], map)
}
if (
type.package === 'typescript' &&
(type.name === 'Record' || type.qualifiedName === 'Record')
) {
return parseRecordType(type, map)
}
if (
type.package === 'typescript' &&
(type.name === 'Promise' || type.qualifiedName === 'Promise')
) {
return parsePromiseType(type, map)
}
if (
type.package === 'typescript' &&
(type.name === 'Extract' || type.qualifiedName === 'Extract')
) {
return parseExtractType(type, map)
}
if (type.package === 'typescript' && (type.name === 'Pick' || type.qualifiedName === 'Pick')) {
return parsePickType(type, map)
}
// If we still haven't produced a meaningful type, try looking up the reference
const referenced = map.get(type.id ?? type.target) // became target in newer versions of tsdoc
if (referenced) {
const maybeType =
typeof referenced.type === 'object' && 'type' in referenced.type
? /* need to go down a level */ delegateParsing(
type,
referenced.type,
map,
typeArguments ?? type.typeArguments
)
: delegateParsing(type, referenced, map, typeArguments ?? type.typeArguments)
if (maybeType) {
return maybeType
} else if (isNewTypedoc(referenced) && referenced.kind === KIND_INTERFACE) {
return parseInterface(referenced, map, typeArguments ?? type.typeArguments)
} else if (isNewTypedoc(referenced) && referenced.kind === KIND_CLASS) {
// Class is too complicated to display here, just return its name
return {
type: 'nameOnly',
name: referenced.name,
}
}
}
// We produced nothing, let's just return some strings in case they're in any
// way meaningful.
if (type.package && type.qualifiedName) {
return {
type: 'nameOnly',
name:
type.package === 'typescript'
? type.qualifiedName
: `${type.package}.${type.qualifiedName}`,
}
}
if (type.name === 'default' && type.typeArguments?.[0]) {
return parseType(type.typeArguments[0], map)
}
// Final fallback
if (type.name && type.name !== 'default' /* Not particularly meaningful */) {
return {
type: 'nameOnly',
name: type.name,
}
}
return undefined
}
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does parseReferenceType() do?
parseReferenceType() is a function in the supabase codebase.
What does parseReferenceType() call?
parseReferenceType() calls 8 function(s): delegateParsing, isNewTypedoc, parseExtractType, parseInterface, parsePickType, parsePromiseType, parseRecordType, parseType.
What calls parseReferenceType()?
parseReferenceType() is called by 1 function(s): parseType.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free