@enc-protocol/timeline

0.2.1

ENC Timeline SDK — TimelineClient

npm i @enc-protocol/timeline

@enc-protocol/timeline

Timeline SDK — pure, in-memory Node, real crypto.

Install

npm install @enc-protocol/timeline --registry https://npm-registry.ocrybit.workers.dev/

Usage

import { TimelineClient, createIdentity } from "@enc-protocol/timeline"

// Create identity and enclave
const owner = createIdentity("alice")
const client = TimelineClient.create(owner)

// Submit event
const result = client.public({ content: "..." })
console.log(result.ok) // true

// Query events
const events = client.query("public")

// Grant role to another identity
const bob = createIdentity("bob")
client.grant(bob, "Member")

// Use as different identity
const bobClient = client.as(bob)

Event Schemas

public

FieldTypeKeyRef
contentstring

private [ecdh]

FieldTypeKeyRef
contentstring

API

TimelineClient

Extends AppClient from @enc-protocol/app.

MethodParamsReturnsDescription
public(content)content{ ok, error? }Submit public event
private(content)content{ ok, error? }Submit private event [ecdh]
query(type?)stringEvent[]Query events
grant(target, role)Identity, string{ ok, error? }Grant role
as(identity)IdentityTimelineClientSwitch identity
static create(owner)IdentityTimelineClientCreate enclave

RBAC Rules

EventRoleOps
*OWNERR
Grant(dataview)OWNERC
Revoke(dataview)OWNERC
Shared(profile)OWNERC, U, D
Shared(profile)dataviewP
TerminateOWNERC
publicOWNERC, U, D
publicdataviewP
privateOWNERC, U, D

Audit

All properties proven by Lean native_decide:

  • valid: (validate config).allPass = true := by native_decide
  • owner_crud_public: config.permits "public" "OWNER" "C" = true ∧ ... := by native_decide
  • owner_crud_private: config.permits "private" "OWNER" "C" = true ∧ ... := by native_decide
  • owner_reads_all: config.canRead "public" "OWNER" = true ∧ ... := by native_decide
  • dataview_push_public: config.permits "public" "dataview" "P" = true := by native_decide
  • owner_manages_profile: config.permits "Shared(profile)" "OWNER" "C" = true ∧ ... := by native_decide
  • owner_terminates: config.permits "Terminate" "OWNER" "C" = true := by native_decide
  • private_encrypted: config.eventEncrypt "private" = .ecdh := by native_decide
  • public_unencrypted: config.eventEncrypt "public" = .none := by native_decide
  • all_tests_pass: verifyTestSuite config tests = true := by native_decide
  • all_stateful_tests_pass: verifyStatefulSuite config statefulTests = true := by native_decide

Dependencies

  • @enc-protocol/app