ceramicnetwork / js-ceramic Goto Github PK
View Code? Open in Web Editor NEWTypescript implementation of the Ceramic protocol
Home Page: http://ceramic.network
License: Other
Typescript implementation of the Ceramic protocol
Home Page: http://ceramic.network
License: Other
Pseudo code:
// const prevRecordA = await this.dispatcher.retrieveRecord(record.prev)
// const prevRecordB = await this.dispatcher.retrieveRecord(record.proof + '/root' + record.path)
// assert A == B
Support both ceramic://<CID>
and /ceramic/<CID>
in ceramic core, http-client, and cli.
The 3ID Account Module should be a package in the js-ceramic repo. The result of this story should be a spec for the api of this package. The module should be able to use both a ceramic-core
instance and a ceramic-http-client
instance to interact with ceramic.
Maybe needs an async method for constructing?
The api above describes the high level interface. For this sprint we should focus on building out the way to interact with the DID Document and AccountLinks primarily (and account tile in the background). All of the classes for the different tiles needs their own api.
Make sure to coordinate with @zachferland on the functionality that the IdentityWallet provides though the 3idProvider interface.
We should make an issue for creating a separate package for the types that are shared across multiple repos.
Similar to how walletconnect does it:
Create a package which holds types shared by other packages in the js-ceramic repo.
Create a package which holds utils shared by other packages in the js-ceramic repo.
Does it make sense to have this in one or two separate packages? Maybe we can just have one @ceramicnetwork/utils
which includes the types?
Let's research existing types for IPFS/IPLD libraries and propose altogether to the IPFS community.
Some of the well defined types can be found in textile repo.
We should create a few more packages:
Dependabot can't resolve your JavaScript dependency files.
As a result, Dependabot couldn't update your dependencies.
The error Dependabot encountered was:
Error whilst updating typestub-multihashes in /packages/ceramic-core/package-lock.json:
404 Not Found - GET https://registry.npmjs.org/@ceramicnetwork/ceramic-common - Not found
If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.
It should be possible to request and view a specific version of a document. See spec for more info: https://github.com/ceramicnetwork/specs#document-identifiers
The cli already have some designs for the interface implemented.
This will allow the 3ID Account module to use the didProvider directly to sign updates to documents. It can then pass signed updates to a ceramic document directly. This could look something like this: doc.applyRecord(record)
.
This will effectively remove any need for the ceramic-core/http-client to have access to a didProvider as external libraries (such as 3ID Account) can pass already signed records.
Also add to http client and CLI.
Create a module that keeps track of the latest valid heads of any given document. Could possibly use: https://github.com/ipfs/js-datastore-level
level-state-store
For the ceramic-core package
This would allow a Ceramic node operator to specify which persistence system they want to use for the Ceramic documents their node is pinning/persisting. This would be, for example, Filecoin, Arweave, S3, etc, etc.
If a document is pinned and has a schema the schema should also be pinned.
Should include creation of 3ID document, account tile, and account links tile (+ account links).
We should take care to make sure that the 3ID document is backwards compatible with the current system.
It should use the didProvider to sign document updates and use #44 to apply these signed records to the correct ceramic document.
Should be used to store auth data etc related to the 3ID account.
For added clarity let's rename the next
property to prev
.
Also update in the specs repo.
This method essentially verifies that an anchor record + proof is correct.
Let's normalize the URL concatenation in order to avoid multiple slashes if the apiUrl
already ends with /
. Maybe a separate utility function.
Originally posted by @simonovic86 in #6
Should still be configurable from api and cli.
Dependabot can't resolve your JavaScript dependency files.
As a result, Dependabot couldn't update your dependencies.
The error Dependabot encountered was:
Error whilst updating identity-wallet in /packages/ceramic-cli/package-lock.json:
404 Not Found - GET https://registry.npmjs.org/@ceramicnetwork/ceramic-common - Not found
If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.
Dependabot couldn't fetch one or more of your project's path-based JavaScript dependencies. The affected dependencies were identity-wallet
.
To use path-based dependencies with Dependabot the paths must be relative and resolve to a directory in this project's source code.
There is a minor issue with emitting the anchor status state in ceramic core when the anchor is being processed - state PROCESSING
.
Task list:
Dockerfile
for CASdocker-compose
README.md
with different CAS modes: anchor
, service
and bundled
cas
terraform module in stack
docker-compose
and troubleshootethereumRpcUrl
optionaljs-ceramic
Dependabot can't resolve your JavaScript dependency files.
As a result, Dependabot couldn't update your dependencies.
The error Dependabot encountered was:
Error whilst updating p-queue in /packages/ceramic-core/package-lock.json:
404 Not Found - GET https://registry.npmjs.org/@ceramicnetwork/ceramic-common - Not found
If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.
Dependabot couldn't fetch one or more of your project's path-based JavaScript dependencies. The affected dependencies were identity-wallet
.
To use path-based dependencies with Dependabot the paths must be relative and resolve to a directory in this project's source code.
The id
property should include the CID of the genesis record.
Also needs to be added in the specs.
Dependabot can't resolve your JavaScript dependency files.
As a result, Dependabot couldn't update your dependencies.
The error Dependabot encountered was:
Error whilst updating identity-wallet in /packages/ceramic-cli/package-lock.json:
404 Not Found - GET https://registry.npmjs.org/@ceramicnetwork/ceramic-doctype-tile - Not found
If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.
Dependabot can't resolve your JavaScript dependency files.
As a result, Dependabot couldn't update your dependencies.
The error Dependabot encountered was:
Error whilst updating identity-wallet in /packages/ceramic-cli/package-lock.json:
404 Not Found - GET https://registry.npmjs.org/@ceramicnetwork/ceramic-doctype-tile - Not found
If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.
simonovic86
We can introduce a specific logger (e.g. winston) instead of directly using console.log
Also investigate which tool is best to use.
There is currently a mock anchor service module. We should probably keep that around for now, but the goal of this ticket is to implement a version of the module that talks to a real anchor service.
The anchor service used should be configurable.
The DocState
interface needs to be updated to something like this:
enum AnchorStatus {
NOT_REQUESTED,
PENDING,
ANCHORED
}
interface DocState {
doctype: string;
owners: Array<string>;
content: any;
nextContent?: any;
signature: SignatureStatus;
anchorStatus: AnchorStatus;
scheduledFor?: number; // only present when anchor status is pending
anchorProof?: AnchorProof; // the anchor proof of the latest anchor, only present when anchor status is anchored
log: Array<CID>;
}
The AnchorProof interface likely also needs an update.
Also make sure there are tests for the module and update existing tests to work accoring to needed changes.
To ceramic-core and ceramic-http-client. Could looks something like:
ceramic.pin.add(docId)
ceramic.pin.rm(docId)
ceramic.pin.ls(docId)
Also need to implement additional apis in the ceramic-daemon so that the http-client can talk to it to pin docs.
Allow did documents created with js-ipfs-did-document
to be used as genesis records for 3id ceramic docs
Needs to be able to detect changes to documents and update the head that is stored for that document.
When loading a document that is pinned we should load it with the persisted head.
When a document is pinned, we should also pin the individual records in ipfs.
When a document is unpinned we should remove the pins of the records from ipfs.
Other considerations?
Should be documented in ceramic-cli readme already.
Using 3id-blockchain-utils (will need type defs)
when running the command $ ceramic state <docId>
we should include the anchor status in the output. I think this will happen automatically, but we should make sure that dates are converted correctly and that the output looks ok.
The core api should not need to include any specific doctype, instead any doctype should be possible to register in the node using an method. (the three current doctypes should probably be included for convenience).
Doctypes should include a handler
which has all the needed state transition logic. It should also include a class which can be used to manipulate the doctype (more info on how this will look like in the js-ceramic api CIP).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.