dwnpm
Version:
Decentralized Registry Package Manager (DRPM) helps developers publish, install, find and manage Decentralized Packages (DPKs) published to Decentralized Web Nodes (DWNs). DRPM does this by looking up a Decentralized Identifier (DID) to find its DID docum
224 lines (219 loc) • 5.92 kB
text/typescript
import { DwnInterface, DwnMessageDescriptor, DwnResponseStatus } from '@web5/agent';
import { DrlBuilder } from './dwn/drl-builder.js';
import { Request } from 'express';
import { PortableDid } from '@web5/dids';
import { Web5UserAgent } from '@web5/user-agent';
import { Web5 } from '@web5/api';
// DWN & HTTP Request/Response Types
export type ResponseInfo = {
ok: boolean;
code: number;
status: string;
data?: any;
error?: string;
};
export type DwnResponseInfo = {
code: number;
status?: string;
detail: string;
};
export type DwnResponseEntry = DwnRecordDescriptor & {
recordId: string;
contextId: string;
encodedData: string;
descriptor: DpkDwnDescriptor;
authorization: Authorization;
};
export type DpkDwnDescriptor = {
tags: {
name: string;
version: string;
integrity: string;
[key: string]: any;
},
method: string;
schema: string;
dataCid: string;
dataSize: number;
protocol: string;
interface: string;
published: true,
dataFormat: string;
dateCreated: string;
protocolPath: string;
datePublished: string;
messageTimestamp: string;
};
export type Signature = {
protected: string;
signature: string
};
export type Authorization = {
signature: {
payload: string;
signatures: Signature[]
}
};
export type DpkDwnResponse = DwnResponseStatus & { entries: DwnResponseEntry[] };
export type DwnRecordDescriptor =
| DwnMessageDescriptor[DwnInterface.RecordsWrite]
| DwnMessageDescriptor[DwnInterface.RecordsDelete];
// DRL Types
export type BaseDrl = {
did: string;
endpoint?: string;
};
export type DrlQueryFilter = { subKey?: string; value: string };
export type DrlAddQueryFilterParams = { key: string } & DrlQueryFilter;
export type DrlFiltersParams = {
filters: Record<string, string | Array<DrlQueryFilter> | DrlQueryFilter>;
};
export type DrlReadParams = { [key: string]: any; } & DrlFiltersParams;
// Registry Types
export type RegistrySaveDpkData = {
name: string;
version: string;
data: any
};
export type RegistryGetDpkPath = {
name: string;
version: string
};
export interface RegistryResponse {
ok: true | false;
code: number;
status: string;
error?: string;
data?: any;
};
export type ReadPackageParams = {
builder: DrlBuilder;
name: string
};
export type ReadReleaseParams = ReadPackageParams & { version: string };
export type CreatePackageParams = { metadata: DpkMetadata; };
export type CreateReleaseParams = {
parentId: string;
name: string;
version: string;
integrity: string;
release: any
};
export type DependencyParam = { dependency: string };
export type PrefixResponse = {
prefix: string;
version: string
};
export type RouteSuccessParams = {
code?: number;
status?: string;
data: any
};
export type RouteFailureParams = {
code?: number;
status?: string;
error: any
};
// Dpk Types
export type DIntegrityFormat = 'stream' | 'file';
export type DIntegrityData = ReadableStream<Uint8Array> | string;
export type DIntegrityParams = {
format: DIntegrityFormat;
data: DIntegrityData
};
export type Dpk = {
name: string;
version?: string;
path: string;
};
export type DpkRequest = {
did: string;
dpk: Dpk;
};
export type DpkRequestParams = Dpk & {
builder: DrlBuilder;
did?: string;
endpoint?: string;
};
export type DpkMetadata = { [key: string]: any };
export type DpkTarball = ReadableStream<Uint8Array>;
export type DpkData = {
'package'?: DpkMetadata;
'package/release'?: DpkTarball;
[key: string]: any;
};
export type ProfileContext = {
did: string;
password: string;
dwnEndpoints: string[];
web5DataPath: string;
recoveryPhrase: string;
};
export type ProfileContextWeb = ProfileContext & { portableDid?: PortableDid; };
export type SupportedMethods = 'web' | 'dht' | 'btc';
export type ProfileJson = {
name: string;
dht: ProfileContext;
web: ProfileContext;
btc: ProfileContext;
[key: string]: any;
};
export type PartialProfileJson = Partial<ProfileJson>;
export type ContextOptions = {
did?: string;
password?: string;
recoveryPhrase?: string;
dwnEndpoints?: string;
web5DataPath?: string
};
export type ProfileJsonCreateBase = {
dwnEndpoints: string;
password?: string;
recoveryPhrase?: string;
web5DataPath?: string;
};
export type DhtProfileCreate = ProfileJsonCreateBase & { method: 'dht'; did?: string; };
export type WebProfileCreate = ProfileJsonCreateBase & { method: 'web'; did: string; };
export type BtcProfileCreate = ProfileJsonCreateBase & { method: 'btc'; did?: string; };
export type RequestParams = Request['params'];
export type CreatePackageDidWebParams = {
did: string;
metadata: DpkMetadata;
};
export type DidWebConnectOptions = {
did: string;
password: string;
dwnEndpoints: string[];
web5DataPath: string;
};
export type DidDhtConnectOptions = {
data: Partial<ProfileContext>;
agent?: Web5UserAgent;
sync?: string;
};
export type DidDhtCreateParams = {
dwnEndpoints: string;
password?: string;
recoveryPhrase?: string;
web5DataPath?: string;
did?: string;
};
export type DhtProfileConnectParams = {
did: string;
password: string;
dwnEndpoints: string[];
recoveryPhrase: string;
web5DataPath: string;
};
export type DidWebCreateParams = {
did: string;
dwnEndpoints: string;
password?: string;
recoveryPhrase?: string;
web5DataPath?: string;
};
export type DWeb5Params = { web5: Web5; did: string };
export type DhtAgentConst = { agent: Web5UserAgent };
export type DhtAgentPassword = { password: string };
export type DhtAgentDataPath = { dataPath: string };
export type DhtAgentIdentity = { dwnEndpoints: string[]; recoveryPhrase: string };