0.12.1 • Published 9 months ago

@canvas-js/interfaces v0.12.1

Weekly downloads
-
License
-
Repository
-
Last release
9 months ago

@canvas-js/interfaces

This package exports TypeScript types for Canvas messages and other interfaces.

Table of Contents

Installation

npm i @canvas-js/chain-interfaces

API

Signatures

import type { CID } from "multiformats"

export type Signature = {
  publicKey: string
  signature: Uint8Array
  cid: CID
}

Signers

import type { Signature } from "./Signature.js"

export interface Signer<T = any> {
  sign(value: T): Signature
}

Messages

export type Message<Payload = unknown> = {
  topic: string
  clock: number
  parents: string[]
  payload: Payload
}

Actions

export type Action = {
  type: "action"

  /** DID of the user that authorized the session (e.g. "did:pkh:eip155:1:0xb94d27...") */
  address: string

  name: string
  args: any

  context: {
    timestamp: number
    blockhash?: string
  }
}

Sessions

export type Session<AuthorizationData = any> = {
  type: "session"

  /** DID of the user that authorized the session (e.g. "did:pkh:eip155:1:0xb94d27...") */
  address: string

  /** did:key URI of the ephemeral session key used to sign subsequent actions */
  publicKey: string

  /** chain-specific session payload, e.g. a SIWE message & signature */
  authorizationData: AuthorizationData

  context: {
    blockhash?: string
    duration?: number
    timestamp: number
  }
}

Session signers

import type { Signer } from "./Signer.js"
import type { Message } from "./Message.js"
import type { Session } from "./Session.js"
import type { Action } from "./Action.js"
import type { Awaitable } from "./Awaitable.js"

export interface SessionSigner extends Signer<Action | Session> {
  match: (chain: string) => boolean

  /**
   * Produce an signed Session object, which authorizes `session.publicKey`
   * to represent the user `${session.chain}:${session.address}`.
   *
   * The signature is stored in `session.data`, and the entire Session
   * object is then signed using the session-key, and appended to our message log.
   */
  getSession: (topic: string, options?: { chain?: string; timestamp?: number }) => Awaitable<Session>

  /**
   * Verify that `session.data` authorizes `session.publicKey`
   * to take actions on behalf of the user `${session.chain}:${session.address}`
   */
  verifySession: (session: Session) => Awaitable<void>
}

Utility types

Awaitable

export type Awaitable<T> = T | Promise<T>
0.13.0-next.16

9 months ago

0.13.0-next.15

9 months ago

0.13.0-next.14

9 months ago

0.13.0-next.13

9 months ago

0.12.1

9 months ago

0.13.0-next.12

9 months ago

0.13.0-next.11

9 months ago

0.13.0-next.10

9 months ago

0.13.0-next.9

9 months ago

0.13.0-next.8

9 months ago

0.13.0-next.1

10 months ago

0.13.0-next.3

10 months ago

0.13.0-next.2

10 months ago

0.13.0-next.5

10 months ago

0.13.0-next.4

10 months ago

0.13.0-next.7

10 months ago

0.13.0-next.6

10 months ago

0.11.0

10 months ago

0.12.0

10 months ago

0.10.10

11 months ago

0.10.9

11 months ago

0.10.1

1 year ago

0.10.2

1 year ago

0.10.3

1 year ago

0.10.4

12 months ago

0.10.5

12 months ago

0.10.6

11 months ago

0.10.7

11 months ago

0.10.8

11 months ago

0.10.0

1 year ago

0.10.0-alpha.1

1 year ago

0.8.29

1 year ago

0.10.0-beta.2

1 year ago

0.10.0-beta.3

1 year ago

0.10.0-beta.1

1 year ago

0.10.0-beta.4

1 year ago

0.8.28

1 year ago

0.8.27-patch.21

1 year ago

0.8.27-patch.14

1 year ago

0.8.27-patch.13

1 year ago

0.8.27-patch.16

1 year ago

0.8.27-patch.15

1 year ago

0.8.27-patch.10

1 year ago

0.8.27-patch.6

1 year ago

0.8.27-patch.7

1 year ago

0.8.27-patch.12

1 year ago

0.8.27-patch.8

1 year ago

0.8.27-patch.11

1 year ago

0.8.27-patch.9

1 year ago

0.8.27-patch.20

1 year ago

0.9.1

1 year ago

0.8.27-patch.18

1 year ago

0.8.27-patch.17

1 year ago

0.8.27-patch.19

1 year ago

0.8.27-patch.2

1 year ago

0.8.27-patch.3

1 year ago

0.8.27-patch.4

1 year ago

0.8.27-patch.5

1 year ago

0.8.27-patch.1

1 year ago

0.9.0

1 year ago

0.9.0-next.1

1 year ago

0.8.26-alpha.4

2 years ago

0.8.26-alpha.3

2 years ago

0.8.26-alpha.2

2 years ago

0.8.26

2 years ago

0.8.26-alpha.1

2 years ago

0.8.25

2 years ago

0.8.24

2 years ago

0.8.23

2 years ago

0.8.22

2 years ago

0.8.21

2 years ago

0.8.20

2 years ago

0.8.19

2 years ago

0.8.18

2 years ago

0.8.17

2 years ago

0.8.16

2 years ago

0.8.15

2 years ago

0.8.14-alpha.1

2 years ago

0.8.14

2 years ago

0.8.13

2 years ago

0.8.12

2 years ago

0.8.11

2 years ago

0.8.10

2 years ago

0.8.9

2 years ago

0.8.8

2 years ago

0.8.5

2 years ago

0.8.4

2 years ago

0.8.7

2 years ago

0.8.6

2 years ago

0.8.2-alpha.1

2 years ago

0.8.3

2 years ago

0.8.2

2 years ago

0.8.2-patch.1

2 years ago

0.7.2-alpha.1

2 years ago

0.7.2-alpha.2

2 years ago

0.7.2-alpha.3

2 years ago

0.7.2-alpha.4

2 years ago

0.7.2-alpha.5

2 years ago

0.7.2-alpha.6

2 years ago

0.7.2-alpha.7

2 years ago

0.7.2

2 years ago

0.7.1

2 years ago

0.7.3

2 years ago

0.7.0

2 years ago

0.8.1

2 years ago

0.8.0

2 years ago

0.5.0

2 years ago

0.5.1

2 years ago

0.6.0-alpha2

2 years ago

0.6.0-alpha1

2 years ago

0.6.0-alpha4

2 years ago

0.6.0-alpha3

2 years ago

0.6.0-alpha6

2 years ago

0.6.0-alpha5

2 years ago

0.6.0-alpha7

2 years ago

0.6.1

2 years ago

0.6.0

2 years ago

0.4.9

2 years ago

0.5.0-alpha

2 years ago

0.5.0-alpha4

2 years ago

0.5.0-alpha3

2 years ago

0.5.0-alpha2

2 years ago

0.4.10

2 years ago

0.4.11

2 years ago

0.4.8

2 years ago

0.4.5

2 years ago

0.4.4

2 years ago

0.4.7

2 years ago

0.4.6

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.4.3

2 years ago

0.4.2

2 years ago

0.3.0

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.3

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.2.2

2 years ago

0.1.2

2 years ago

0.1.3

2 years ago

0.1.0

2 years ago

0.1.1

2 years ago

0.0.53

2 years ago

0.0.52

2 years ago

0.0.40

3 years ago

0.0.41

3 years ago

0.0.42

3 years ago

0.0.43

3 years ago

0.0.44

3 years ago

0.0.45

3 years ago

0.0.46

3 years ago

0.0.47

3 years ago

0.0.37

3 years ago

0.0.38

3 years ago

0.0.39

3 years ago

0.0.48-pre

3 years ago

0.0.50-pre4

2 years ago

0.0.50-pre3

2 years ago

0.0.50-pre2

2 years ago

0.0.50-pre

2 years ago

0.0.51

2 years ago

0.0.50

2 years ago

0.0.48

3 years ago

0.0.49

2 years ago

0.0.20

3 years ago

0.0.22

3 years ago

0.0.23

3 years ago

0.0.24

3 years ago

0.0.25

3 years ago

0.0.18

3 years ago

0.0.19

3 years ago

0.0.30

3 years ago

0.0.31

3 years ago

0.0.34-alpha6

3 years ago

0.0.32

3 years ago

0.0.33

3 years ago

0.0.34

3 years ago

0.0.35

3 years ago

0.0.36

3 years ago

0.0.34-alpha5

3 years ago

0.0.34-alpha4

3 years ago

0.0.34-alpha3

3 years ago

0.0.34-alpha2

3 years ago

0.0.26

3 years ago

0.0.27

3 years ago

0.0.28

3 years ago

0.0.29

3 years ago

0.0.34-alpha

3 years ago

0.0.17-alpha

3 years ago

0.0.17

3 years ago

0.0.17-alpha2

3 years ago

0.0.10

3 years ago

0.0.11

3 years ago

0.0.16

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.6

3 years ago

0.0.5-alpha

3 years ago