cyb/src/services/ipfs/types.ts

/* eslint-disable import/no-unused-modules */
import { Option } from 'src/types';

// Local type definitions (previously from ipfs-core-types)
export type PinType = 'direct' | 'indirect' | 'recursive' | 'all';

export type LsResult = {
  cid: { toString(): string; toV0(): { toString(): string } };
  type: string;
  metadata?: Uint8Array;
};

export type CallBackFuncStatus = (a: string) => void;

export enum IPFSNodes {
  EXTERNAL = 'external',
}

export type IpfsNodeType = 'external';

export type IpfsFileStats = {
  type: 'file' | 'directory' | 'raw';
  size?: number | bigint;
  sizeLocal?: number | bigint;
  blocks?: number;
  // mtime?: number;
};

export interface AbortOptions {
  signal?: AbortSignal;
}

export interface CatOptions extends AbortOptions {
  length?: number;
  offset?: number;
}

export type InitOptions = { url: string; userGateway?: string };

export interface IpfsNodeFeatures {
  tcp: boolean;
  webRTC: boolean;
}

export interface IpfsNodeInfo {
  id: string;
  agentVersion: string;
  repoSize: number | bigint;
}

export interface IpfsNodePrperties {
  gatewayUrl?: string;
}

// export interface ExtendedIpfsNode<T extends IpfsNode> {
//   node: T;
//   isConnectedToSwarm: () => Promise<boolean>;
//   reconnectToSwarm: (lastConnectedTimestamp?: number) => Promise<void>;
// }

export type getIpfsUserGatewanAndNodeType = {
  ipfsNodeType: IpfsNodeType | undefined;
  userGateway: string | undefined;
};

export type Uint8ArrayWithMime = {
  mime: string;
  rawData: Uint8Array;
};

export type Uint8ArrayLike = Uint8Array | AsyncIterator<Uint8Array>; // | ReadableStream<Uint8Array>

export type IpfsContentSource = 'db' | 'node' | 'gateway';

export type IpfsGatewayContentType = 'video' | 'audio' | 'epub';
export type MimeBasedContentType = 'image' | 'pdf' | 'text' | 'other';
export type IpfsBaseContentType = IpfsGatewayContentType | 'image' | 'pdf' | 'text' | 'other';

export type IpfsContentType = IpfsBaseContentType | 'link' | 'html' | 'cid';

export type IPFSContentMeta = IpfsFileStats & {
  blockSizes?: never[]; // ???
  data?: string; // ???
  mime?: string;
  local?: boolean;
  statsTime?: number;
  catTime?: number;
  pinTime?: number;
  contentType?: IpfsContentType;
};

export type IPFSContentDetails = {
  text?: string;
  type?: IpfsContentType;
  content?: string;
  link?: string;
  gateway: boolean;
  cid: string;
};

export type IPFSContentDetailsMutated = IPFSContentDetails & {
  mutation?: 'hidden' | 'modified' | 'error'; // rune pipeline result
  cidBefore?: string;
};

export type IPFSContent = {
  availableDownload?: boolean;
  result?: Uint8ArrayLike;
  cid: string;
  meta: IPFSContentMeta;
  source: IpfsContentSource;
  contentUrl?: string;
  textPreview?: string;
  contentType?: IpfsContentType;
};

export type FetchWithDetailsFunc = (
  cid: string,
  type?: IpfsContentType,
  controller?: AbortController
) => Promise<IPFSContentDetails>;

export interface IpfsNode {
  readonly nodeType: IpfsNodeType;
  readonly config: IpfsNodePrperties;
  readonly isStarted: boolean;
  init: (options?: InitOptions) => Promise<void>;
  stop: () => Promise<void>;
  start: () => Promise<void>;
  cat: (cid: string, options?: CatOptions) => AsyncIterable<Uint8Array>;
  stat: (cid: string, options?: AbortOptions) => Promise<IpfsFileStats>;
  add: (content: File | string, options?: AbortOptions) => Promise<string>;
  pin: (cid: string, options?: AbortOptions) => Promise<string | undefined>;
  ls: () => AsyncIterable<LsResult> | AsyncGenerator<LsResult>;
  getPeers: () => Promise<string[]>;
  connectPeer: (address: string) => Promise<boolean>;
  info: () => Promise<IpfsNodeInfo>;
}

export interface CybIpfsNode extends IpfsNode {
  isConnectedToSwarm(): Promise<boolean>;
  reconnectToSwarm(forced: Option<boolean>): Promise<void>;
  fetchWithDetails: FetchWithDetailsFunc;
  addContent(content: File | string): Promise<string | undefined>;
}

export type IpfsOptsType = {
  ipfsNodeType: IpfsNodeType;
  urlOpts: string;
  userGateway: string;
};

Synonyms

soft3.js/src/types.ts
pussy-ts/src/soft.js/types.ts
cyb/src/services/soft.js/types.ts
cyber-ts/packages/cyber-ts/src/types.ts
cyb/src/pages/Keys/types.ts
cyb/src/services/scripting/types.ts
pussy-ts/src/utils/logging/types.ts
pussy-ts/src/services/QueueManager/types.ts
cyb/src/containers/mint/types.ts
cyb/src/utils/logging/types.ts
pussy-ts/src/components/containerGradient/types.ts
cyb/src/containers/Search/types.ts
pussy-ts/src/containers/Search/types.ts
cyb/src/features/cybernet/types.ts
cyb/src/services/QueueManager/types.ts
cyb/src/components/containerGradient/types.ts
bostrom.network/src/integrations/supabase/types.ts
pussy-ts/src/features/sense/ui/types.ts
cyb/src/features/ibc-history/tx/types.ts
cyb/src/services/CozoDb/types/types.ts
cyb/src/pages/Keys/ActionBar/types.ts
pussy-ts/src/services/ibc-history/tx/types.ts
pussy-landing/src/components/xp/containerGradient/types.ts
cyb/src/features/sense/ui/types.ts
pussy-ts/src/services/CozoDb/types/types.ts
soft3.js/src/codec/cyber/resources/v1beta1/types.ts
cyb/src/services/backend/workers/db/types.ts
soft3.js/src/codec/cyber/graph/v1beta1/types.ts
pussy-ts/src/services/backend/services/lcd/types.ts
pussy-ts/src/services/backend/services/sync/types.ts
pussy-ts/src/services/backend/services/indexer/types.ts
cyb/src/services/backend/services/indexer/types.ts
pussy-ts/src/services/backend/workers/db/types.ts
soft3.js/src/codec/cyber/bandwidth/v1beta1/types.ts
soft3.js/src/codec/cyber/grid/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/p2p/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/version/types.ts
cyb/src/services/backend/services/sync/types.ts
cyb/src/services/backend/channels/BackendQueueChannel/types.ts
soft3.js/src/codec/cyber/rank/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/abci/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/types/types.ts
cyber-ts/packages/cyber-ts/src/tendermint/libs/bits/types.ts
cyber-ts/packages/cyber-ts/src/cyber/dmn/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/cyber/bandwidth/v1beta1/types.ts
pussy-ts/src/services/backend/services/sync/services/types.ts
cyber-ts/packages/cyber-ts/src/cosmwasm/wasm/v1/types.ts
cyber-ts/packages/cyber-ts/src/cyber/rank/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/cyber/resources/v1beta1/types.ts
cyber-ts/packages/cyber-ts/src/cyber/graph/v1beta1/types.ts
cyb/src/services/backend/services/sync/services/types.ts
cyber-ts/packages/cyber-ts/src/cyber/grid/v1beta1/types.ts
pussy-ts/src/services/backend/services/sync/services/ParticlesResolverQueue/types.ts
cyb/src/services/backend/services/sync/services/ParticlesResolverQueue/types.ts

Neighbours