@tairu/json-handler
Tairu JSON handler, handling HTTP requests to serve JSON tiles only.
Installation
npm install @tairu/json-handler
Classes
Tairu<ResultType, Context>
Type Parameters
• ResultType = Tile
• Context = TileRequestContext
Constructors
new Tairu()
new Tairu<
ResultType,Context>(options):Tairu<ResultType,Context>
Parameters
options
TairuOptions = {}
Returns
Tairu<ResultType, Context>
Accessors
app
Get Signature
get app():
App
Returns
App
Defined in
handler
Get Signature
get handler():
TairuHandler
Returns
Defined in
nodeListener
Get Signature
get nodeListener():
NodeListener
Returns
Defined in
plainHandler
Get Signature
get plainHandler():
PlainHandler
Returns
PlainHandler
Defined in
urlPrefix
Get Signature
get urlPrefix():
string
Returns
string
Defined in
Methods
addHandler()
addHandler<
PathParams,SearchParams>(path,handler):void
Type Parameters
• PathParams extends ParamsRecord = ParamsRecord
• SearchParams extends ParamsRecord = ParamsRecord
Parameters
path
string
handler
TileHandler<PathParams, SearchParams, ResultType, Context>
Returns
void
executeHandler()
executeHandler<
PathParams,SearchParams>(handler,event):Promise<ResultType>
Type Parameters
• PathParams extends ParamsRecord = ParamsRecord
• SearchParams extends ParamsRecord = ParamsRecord
Parameters
handler
TileHandler<PathParams, SearchParams, ResultType, Context>
event
Returns
Promise<ResultType>
parseHandlerResult()
parseHandlerResult(
result):object
Parameters
result
ResultType
Returns
object
props
props:
object
props.actions?
optionalprops.actions: ({label:string;type:"tairu:uri/open";uri:string; } | {label:string;payload:object;state:object;type:"tairu:did/sign"; } | {label:string;state:object;type:"tairu:did/submit"; })[]
props.children?
optionalprops.children: ({props:object;type:"Box"|"Image"|"Text"; } |object[])[]
props.description?
optionalprops.description:string
props.input?
optionalprops.input: {multiple:boolean;options:object[];type:"options"; } | {defaultValue:string;label:string;placeholder:string;secure:boolean;type:"text"; }
props.key?
optionalprops.key:string
props.style?
optionalprops.style:object
props.style.alignItems?
optionalprops.style.alignItems:"flex-start"|"center"|"flex-end"
props.style.alignSelf?
optionalprops.style.alignSelf:"flex-start"|"center"|"flex-end"|"auto"
props.style.backgroundClip?
optionalprops.style.backgroundClip:"border-box"|"text"
props.style.backgroundColor?
optionalprops.style.backgroundColor:string
props.style.backgroundImage?
optionalprops.style.backgroundImage:string
props.style.backgroundPosition?
optionalprops.style.backgroundPosition:string
props.style.backgroundRepeat?
optionalprops.style.backgroundRepeat:"repeat"|"repeat-x"|"repeat-y"|"no-repeat"
props.style.backgroundSize?
optionalprops.style.backgroundSize:string
props.style.borderBottomColor?
optionalprops.style.borderBottomColor:string
props.style.borderBottomLeftRadius?
optionalprops.style.borderBottomLeftRadius:number
props.style.borderBottomRightRadius?
optionalprops.style.borderBottomRightRadius:number
props.style.borderBottomStyle?
optionalprops.style.borderBottomStyle:"solid"|"dashed"
props.style.borderBottomWidth?
optionalprops.style.borderBottomWidth:number
props.style.borderColor?
optionalprops.style.borderColor:string
props.style.borderLeftColor?
optionalprops.style.borderLeftColor:string
props.style.borderLeftStyle?
optionalprops.style.borderLeftStyle:"solid"|"dashed"
props.style.borderLeftWidth?
optionalprops.style.borderLeftWidth:number
props.style.borderRadius?
optionalprops.style.borderRadius:number
props.style.borderRightColor?
optionalprops.style.borderRightColor:string
props.style.borderRightStyle?
optionalprops.style.borderRightStyle:"solid"|"dashed"
props.style.borderRightWidth?
optionalprops.style.borderRightWidth:number
props.style.borderStyle?
optionalprops.style.borderStyle:"solid"|"dashed"
props.style.borderTopColor?
optionalprops.style.borderTopColor:string
props.style.borderTopLeftRadius?
optionalprops.style.borderTopLeftRadius:number
props.style.borderTopRightRadius?
optionalprops.style.borderTopRightRadius:number
props.style.borderTopStyle?
optionalprops.style.borderTopStyle:"solid"|"dashed"
props.style.borderTopWidth?
optionalprops.style.borderTopWidth:number
props.style.borderWidth?
optionalprops.style.borderWidth:number
props.style.bottom?
optionalprops.style.bottom:number
props.style.boxShadow?
optionalprops.style.boxShadow:string
props.style.display?
optionalprops.style.display:"none"|"flex"
props.style.flexBasis?
optionalprops.style.flexBasis:number
props.style.flexDirection?
optionalprops.style.flexDirection:"row"|"row-reverse"|"column"|"column-reverse"
props.style.flexGrow?
optionalprops.style.flexGrow:number
props.style.flexShrink?
optionalprops.style.flexShrink:number
props.style.flexWrap?
optionalprops.style.flexWrap:"nowrap"|"wrap"|"wrap-reverse"
props.style.gap?
optionalprops.style.gap:number
props.style.height?
optionalprops.style.height:number
props.style.justifyContent?
optionalprops.style.justifyContent:"flex-start"|"center"|"flex-end"|"space-between"|"space-around"
props.style.left?
optionalprops.style.left:number
props.style.margin?
optionalprops.style.margin:number
props.style.marginBottom?
optionalprops.style.marginBottom:number
props.style.marginLeft?
optionalprops.style.marginLeft:number
props.style.marginRight?
optionalprops.style.marginRight:number
props.style.marginTop?
optionalprops.style.marginTop:number
props.style.maxHeight?
optionalprops.style.maxHeight:number
props.style.maxWidth?
optionalprops.style.maxWidth:number
props.style.minHeight?
optionalprops.style.minHeight:number
props.style.minWidth?
optionalprops.style.minWidth:number
props.style.objectFit?
optionalprops.style.objectFit:"none"|"contain"|"cover"
props.style.opacity?
optionalprops.style.opacity:number
props.style.overflow?
optionalprops.style.overflow:"visible"|"hidden"
props.style.padding?
optionalprops.style.padding:number
props.style.paddingBottom?
optionalprops.style.paddingBottom:number
props.style.paddingLeft?
optionalprops.style.paddingLeft:number
props.style.paddingRight?
optionalprops.style.paddingRight:number
props.style.paddingTop?
optionalprops.style.paddingTop:number
props.style.position?
optionalprops.style.position:"relative"|"absolute"
props.style.right?
optionalprops.style.right:number
props.style.top?
optionalprops.style.top:number
props.style.width?
optionalprops.style.width:number
props.title
props.title:
string
type
type:
"Tile"
version
version:
"0.1"
render()
render(
event,tile):Response|Promise<Response>
Parameters
event
tile
tile.props
object
tile.props.actions
({label: string;type: "tairu:uri/open";uri: string; } | {label: string;payload: object;state: object;type: "tairu:did/sign"; } | {label: string;state: object;type: "tairu:did/submit"; })[]
tile.props.children
({props: object;type: "Box" | "Image" | "Text"; } | object[])[]
tile.props.description
string
tile.props.input
{multiple: boolean;options: object[];type: "options"; } | {defaultValue: string;label: string;placeholder: string;secure: boolean;type: "text"; }
tile.props.key
string
tile.props.style
object
tile.props.style.alignItems
"flex-start" | "center" | "flex-end"
tile.props.style.alignSelf
"flex-start" | "center" | "flex-end" | "auto"
tile.props.style.backgroundClip
"border-box" | "text"
tile.props.style.backgroundColor
string
tile.props.style.backgroundImage
string
tile.props.style.backgroundPosition
string
tile.props.style.backgroundRepeat
"repeat" | "repeat-x" | "repeat-y" | "no-repeat"
tile.props.style.backgroundSize
string
tile.props.style.borderBottomColor
string
tile.props.style.borderBottomLeftRadius
number
tile.props.style.borderBottomRightRadius
number
tile.props.style.borderBottomStyle
"solid" | "dashed"
tile.props.style.borderBottomWidth
number
tile.props.style.borderColor
string
tile.props.style.borderLeftColor
string
tile.props.style.borderLeftStyle
"solid" | "dashed"
tile.props.style.borderLeftWidth
number
tile.props.style.borderRadius
number
tile.props.style.borderRightColor
string
tile.props.style.borderRightStyle
"solid" | "dashed"
tile.props.style.borderRightWidth
number
tile.props.style.borderStyle
"solid" | "dashed"
tile.props.style.borderTopColor
string
tile.props.style.borderTopLeftRadius
number
tile.props.style.borderTopRightRadius
number
tile.props.style.borderTopStyle
"solid" | "dashed"
tile.props.style.borderTopWidth
number
tile.props.style.borderWidth
number
tile.props.style.bottom
number
tile.props.style.boxShadow
string
tile.props.style.display
"none" | "flex"
tile.props.style.flexBasis
number
tile.props.style.flexDirection
"row" | "row-reverse" | "column" | "column-reverse"
tile.props.style.flexGrow
number
tile.props.style.flexShrink
number
tile.props.style.flexWrap
"nowrap" | "wrap" | "wrap-reverse"
tile.props.style.gap
number
tile.props.style.height
number
tile.props.style.justifyContent
"flex-start" | "center" | "flex-end" | "space-between" | "space-around"
tile.props.style.left
number
tile.props.style.margin
number
tile.props.style.marginBottom
number
tile.props.style.marginLeft
number
tile.props.style.marginRight
number
tile.props.style.marginTop
number
tile.props.style.maxHeight
number
tile.props.style.maxWidth
number
tile.props.style.minHeight
number
tile.props.style.minWidth
number
tile.props.style.objectFit
"none" | "contain" | "cover"
tile.props.style.opacity
number
tile.props.style.overflow
"visible" | "hidden"
tile.props.style.padding
number
tile.props.style.paddingBottom
number
tile.props.style.paddingLeft
number
tile.props.style.paddingRight
number
tile.props.style.paddingTop
number
tile.props.style.position
"relative" | "absolute"
tile.props.style.right
number
tile.props.style.top
number
tile.props.style.width
number
tile.props.title
string
tile.type
"Tile"
tile.version
"0.1"
Returns
Response | Promise<Response>
Type Aliases
NodeListener()
NodeListener: (
req,res) =>void
Parameters
req
IncomingMessage
res
ServerResponse
Returns
void
ParamsRecord
ParamsRecord:
Record<string,string>
TairuEvent
TairuEvent:
H3Event
TairuHandler
TairuHandler:
EventHandler
TairuOptions
TairuOptions:
object
Type declaration
urlPrefix?
optionalurlPrefix:string
TileHandler()<PathParams, SearchParams, ResultType, Context>
TileHandler<
PathParams,SearchParams,ResultType,Context>: (request) =>ResultType|Promise<ResultType>
Type Parameters
• PathParams extends ParamsRecord = ParamsRecord
• SearchParams extends ParamsRecord = ParamsRecord
• ResultType = Tile
• Context = TileRequestContext
Parameters
request
TileRequest<PathParams, SearchParams, Context>
Returns
ResultType | Promise<ResultType>
TileHandlers
TileHandlers:
TileHandler<any,any> |Record<string,TileHandler<any,any>>
TileRequest<PathParams, SearchParams, Context>
TileRequest<
PathParams,SearchParams,Context>:object
Type Parameters
• PathParams extends ParamsRecord = ParamsRecord
• SearchParams extends ParamsRecord = ParamsRecord
• Context = TileRequestContext
Type declaration
action
action:
VerifiedAction|null
context
context:
Context
pathParams
pathParams:
PathParams
searchParams
searchParams:
SearchParams
urlPrefix
urlPrefix:
string
TileRequestContext
TileRequestContext:
H3EventContext
VerifiedAction<Action>
VerifiedAction<
Action>:Action&object
Type declaration
did
did:
string
Type Parameters
• Action extends PostActionV0 = PostActionV0
Variables
JSON_MIME_TYPE
constJSON_MIME_TYPE:"application/json"='application/json'
URL_PREFIX
constURL_PREFIX:string
Functions
handle()
handle<
Handlers>(handlers,options?):TairuHandler
Type Parameters
• Handlers extends TileHandlers
Parameters
handlers
Handlers
options?
Returns
parseAction()
parseAction(
event):Promise<VerifiedAction|null>
Parameters
event
Returns
Promise<VerifiedAction | null>
tairu()
tairu<
Handlers>(handlers,options?):Tairu
Type Parameters
• Handlers extends TileHandlers
Parameters
handlers
Handlers