mirror of
https://github.com/oceanprotocol/ocean.js.git
synced 2024-11-26 20:39:05 +01:00
commit
3d23328637
116
src/ddo/Asset.ts
Normal file
116
src/ddo/Asset.ts
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
import { DDO } from './DDO'
|
||||||
|
|
||||||
|
export interface AssetNft {
|
||||||
|
/**
|
||||||
|
* Contract address of the deployed ERC721 NFT contract.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
address: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of NFT set in contract.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
name: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Symbol of NFT set in contract.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
symbol: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ETH account address of the NFT owner.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
owner: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* State of the asset reflecting the NFT contract value.
|
||||||
|
* 0 Active.
|
||||||
|
* 1 End-of-life.
|
||||||
|
* 2 Deprecated (by another asset).
|
||||||
|
* 3 Revoked by publisher.
|
||||||
|
* 4 Ordering is temporary disabled.
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
state: 0 | 1 | 2 | 3 | 4
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains the date of NFT creation.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
created: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AssetDatatoken {
|
||||||
|
/**
|
||||||
|
* Contract address of the deployed ERC20 contract.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
address: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of NFT set in contract.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
name: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Symbol of NFT set in contract.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
symbol: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ID of the service the datatoken is attached to.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
serviceId: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AssetLastEvent {
|
||||||
|
tx: string
|
||||||
|
block: number
|
||||||
|
from: string
|
||||||
|
contract: string
|
||||||
|
datetime: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Asset extends DDO {
|
||||||
|
/**
|
||||||
|
* Contains information about the ERC721 NFT contract which represents the intellectual property of the publisher.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
nft: AssetNft
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains information about the ERC20 datatokens attached to asset services.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
datatokens: AssetDatatoken[]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains information about the last transaction that created or updated the DDO.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
event: AssetLastEvent
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The stats section contains different statistics fields.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
stats: {
|
||||||
|
/**
|
||||||
|
* How often an asset was consumed, meaning how often it was either downloaded or used as part of a compute job.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
consume: number
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If asset is listed in purgatory and reason.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
isInPurgatory: string
|
||||||
|
}
|
||||||
|
}
|
9
src/ddo/Credentials.ts
Normal file
9
src/ddo/Credentials.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
export interface Credential {
|
||||||
|
type: string
|
||||||
|
values: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Credentials {
|
||||||
|
allow: Credential[]
|
||||||
|
deny: Credential[]
|
||||||
|
}
|
54
src/ddo/DDO.ts
Normal file
54
src/ddo/DDO.ts
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import { Service } from './Service'
|
||||||
|
import { Metadata } from './Metadata'
|
||||||
|
import { Credentials } from './Credentials'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DID Descriptor Object.
|
||||||
|
* Contains metadata about the asset, and define access in at least one service.
|
||||||
|
*/
|
||||||
|
export class DDO {
|
||||||
|
/**
|
||||||
|
* Contexts used for validation.
|
||||||
|
* @type {string[]}
|
||||||
|
*/
|
||||||
|
public '@context': string[]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DID, descentralized ID.
|
||||||
|
* Computed as sha256(address of ERC721 contract + chainId)
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
public id: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Version information in SemVer notation
|
||||||
|
* referring to the DDO spec version
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
public version: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ChainId of the network the DDO was published to.
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
public chainId: number
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores an object describing the asset.
|
||||||
|
* @type {Metadata}
|
||||||
|
*/
|
||||||
|
public metadata: Metadata
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores an array of services defining access to the asset.
|
||||||
|
* @type {Service[]}
|
||||||
|
*/
|
||||||
|
public services: Service[]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describes the credentials needed to access a dataset
|
||||||
|
* in addition to the services definition.
|
||||||
|
* @type {Credentials}
|
||||||
|
*/
|
||||||
|
public credentials?: Credentials
|
||||||
|
}
|
127
src/ddo/Metadata.ts
Normal file
127
src/ddo/Metadata.ts
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
export interface MetadataAlgorithm {
|
||||||
|
/**
|
||||||
|
* Language used to implement the software.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
language?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Version of the software preferably in SemVer notation.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
version?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Object describing the Docker container image.
|
||||||
|
* @type {Object}
|
||||||
|
*/
|
||||||
|
container: {
|
||||||
|
/**
|
||||||
|
* The command to execute, or script to run inside the Docker image.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
entrypoint: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the Docker image.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
image: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tag of the Docker image.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
tag: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checksum of the Docker image.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
checksum: string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Metadata {
|
||||||
|
/**
|
||||||
|
* Contains the date of publishing in ISO Date Time
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
created: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains the the date of last update in ISO Date Time
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
updated: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Descriptive name or title of the asset.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
name: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Details of what the resource is.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
description: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asset type. Includes "dataset" (e.g. csv file), "algorithm" (e.g. Python script).
|
||||||
|
* Each type needs a different subset of metadata attributes.
|
||||||
|
* @type {'dataset' | 'algorithm'}
|
||||||
|
*/
|
||||||
|
type: 'dataset' | 'algorithm'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the entity generating this data (e.g. Tfl, Disney Corp, etc.).
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
author: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Short name referencing the license of the asset.
|
||||||
|
* If it’s not specified, the following value will be added: “No License Specified”.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
license: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mapping of URL strings for data samples, or links to find out more information.
|
||||||
|
* Links may be to either a URL or another asset.
|
||||||
|
* @type {string[]}
|
||||||
|
*/
|
||||||
|
links?: string[]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mapping of URL strings for data samples, or links to find out more information.
|
||||||
|
* Links may be to either a URL or another asset.
|
||||||
|
* @type {string[]}
|
||||||
|
*/
|
||||||
|
tags?: string[]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The party holding the legal copyright. Empty by default.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
copyrightHolder?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
*The language of the content. Use one of the language codes from the IETF BCP 47 standard
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
contentLanguage?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Information about asset of typealgorithm
|
||||||
|
* @type {MetadataAlgorithm}
|
||||||
|
*/
|
||||||
|
algorithm?: MetadataAlgorithm
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores additional information, this is customizable by publisher
|
||||||
|
* @type {any}
|
||||||
|
*/
|
||||||
|
additionalInformation?: any
|
||||||
|
}
|
145
src/ddo/Service.ts
Normal file
145
src/ddo/Service.ts
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
export interface PublisherTrustedAlgorithm {
|
||||||
|
/**
|
||||||
|
* The DID of the algorithm which is trusted by the publisher.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
did: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hash of algorithm’s files section.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
filesChecksum: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hash of algorithm’s metadata.algorithm.container section.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
containerSectionChecksum: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ServiceComputeOptions {
|
||||||
|
/**
|
||||||
|
* Namespaced used for the compute job.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
namespace: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum number of CPUs allocated for a job
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
cpu?: number
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum number of GPUs allocated for a job
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
gpu?: number
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type of GPU (if any)
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
gpuType?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum amount of memory allocated for a job.
|
||||||
|
* You can express memory as a plain integer or as a fixed-point number using one of these suffixes: E, P, T, G, M, k.
|
||||||
|
* You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
|
||||||
|
* For example, the following represent roughly the same value: 128974848, 129e6, 129M, 123Mi
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
memory?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Amount of disk space allocated.
|
||||||
|
* You can express it as a plain integer or as a fixed-point number using one of these suffixes: E, P, T, G, M, k.
|
||||||
|
* You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
volumeSize?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true, any passed raw text will be allowed to run.
|
||||||
|
* Useful for an algorithm drag & drop use case, but increases risk of data escape through malicious user input.
|
||||||
|
* Should be false by default in all implementations.
|
||||||
|
* @type {boolean}
|
||||||
|
*/
|
||||||
|
allowRawAlgorithm: boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If true, the algorithm job will have network access.
|
||||||
|
* @type {boolean}
|
||||||
|
*/
|
||||||
|
allowNetworkAccess: boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If empty, then any published algorithm is allowed.
|
||||||
|
* Otherwise, only published algorithms by some publishers are allowed
|
||||||
|
* @type {string[]}
|
||||||
|
*/
|
||||||
|
publisherTrustedAlgorithmPublishers: string[]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If empty, then any published algorithm is allowed. (see below)
|
||||||
|
* @type {PublisherTrustedAlgorithm[]}
|
||||||
|
*/
|
||||||
|
publisherTrustedAlgorithms: PublisherTrustedAlgorithm[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Service {
|
||||||
|
/**
|
||||||
|
* Unique ID
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
id: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type of service (access, compute, wss.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
type: 'access' | 'compute' | string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypted file URLs.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
files: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Datatoken address
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
datatokenAddress: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provider URL (schema + host).
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
serviceEndpoint: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describing how long the service can be used after consumption is initiated.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
timeout: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service friendly name
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
name?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service description
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
description?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If service is of typecompute, holds information about the compute-related privacy settings & resources.
|
||||||
|
* @type {ServiceComputeOptions}
|
||||||
|
*/
|
||||||
|
compute?: ServiceComputeOptions
|
||||||
|
}
|
5
src/ddo/index.ts
Normal file
5
src/ddo/index.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export * from './DDO'
|
||||||
|
export * from './Asset'
|
||||||
|
export * from './Service'
|
||||||
|
export * from './Credentials'
|
||||||
|
export * from './Metadata'
|
Loading…
x
Reference in New Issue
Block a user