@ceramicnetwork/stream-model 0.0.2-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -0
- package/lib/model.d.ts +28 -0
- package/lib/model.d.ts.map +1 -0
- package/lib/model.js +197 -0
- package/lib/model.js.map +1 -0
- package/package.json +41 -0
package/README.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Ceramic Model stream type
|
|
2
|
+

|
|
3
|
+
[](https://lbesson.mit-license.org/)
|
|
4
|
+
[](https://discord.gg/6VRZpGP)
|
|
5
|
+
[](https://twitter.com/ceramicnetwork)
|
|
6
|
+
|
|
7
|
+
> This package contains Model stream implementation.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
```shell
|
|
11
|
+
npm install @ceramicnetwork/stream-model
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
See the [ceramic developer site](https://developers.ceramic.network/) for more details about how to use this package.
|
|
17
|
+
|
|
18
|
+
## Contributing
|
|
19
|
+
We are happy to accept small and large contributions. Make sure to check out the [Ceramic specifications](https://github.com/ceramicnetwork/specs) for details of how the protocol works.
|
|
20
|
+
|
|
21
|
+
## License
|
|
22
|
+
|
|
23
|
+
Apache-2.0 or MIT
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
|
package/lib/index.js
ADDED
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
|
package/lib/model.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Operation } from 'fast-json-patch';
|
|
2
|
+
import { CreateOpts, LoadOpts, UpdateOpts, Stream, CeramicCommit, GenesisCommit, CeramicApi, CeramicSigner } from '@ceramicnetwork/common';
|
|
3
|
+
import { CommitID, StreamID } from '@ceramicnetwork/streamid';
|
|
4
|
+
export interface ModelMetadataArgs {
|
|
5
|
+
controllers?: Array<string>;
|
|
6
|
+
family?: string;
|
|
7
|
+
tags?: Array<string>;
|
|
8
|
+
schema?: CommitID | string;
|
|
9
|
+
deterministic?: boolean;
|
|
10
|
+
forbidControllerChange?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class Model<T = Record<string, any>> extends Stream {
|
|
13
|
+
static STREAM_TYPE_NAME: string;
|
|
14
|
+
static STREAM_TYPE_ID: number;
|
|
15
|
+
private _isReadOnly;
|
|
16
|
+
get content(): T;
|
|
17
|
+
static create<T>(ceramic: CeramicApi, content: T | null | undefined, metadata?: ModelMetadataArgs, opts?: CreateOpts): Promise<Model<T>>;
|
|
18
|
+
static createFromGenesis<T>(ceramic: CeramicApi, genesisCommit: GenesisCommit, opts?: CreateOpts): Promise<Model<T>>;
|
|
19
|
+
static deterministic<T>(ceramic: CeramicApi, metadata: ModelMetadataArgs, opts?: CreateOpts): Promise<Model<T>>;
|
|
20
|
+
static load<T>(ceramic: CeramicApi, streamId: StreamID | CommitID | string, opts?: LoadOpts): Promise<Model<T>>;
|
|
21
|
+
update(content: T | null | undefined, metadata?: ModelMetadataArgs, opts?: UpdateOpts): Promise<void>;
|
|
22
|
+
patch(jsonPatch: Operation[], opts?: UpdateOpts): Promise<void>;
|
|
23
|
+
makeReadOnly(): void;
|
|
24
|
+
get isReadOnly(): boolean;
|
|
25
|
+
makeCommit(signer: CeramicSigner, newContent: T | null | undefined, newMetadata?: ModelMetadataArgs): Promise<CeramicCommit>;
|
|
26
|
+
static makeGenesis<T>(signer: CeramicSigner, content: T | null | undefined, metadata?: ModelMetadataArgs): Promise<CeramicCommit>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,OAAO,EACL,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,EAIN,aAAa,EAEb,aAAa,EAEb,UAAU,EAGV,aAAa,EAEd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAa,MAAM,0BAA0B,CAAA;AAKxE,MAAM,WAAW,iBAAiB;IAIhC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAK3B,MAAM,CAAC,EAAE,MAAM,CAAA;IAKf,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAMpB,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IAQ1B,aAAa,CAAC,EAAE,OAAO,CAAA;IAUvB,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAgGD,qBACa,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,MAAM;IACxD,MAAM,CAAC,gBAAgB,SAAU;IACjC,MAAM,CAAC,cAAc,SAAI;IAEzB,OAAO,CAAC,WAAW,CAAQ;IAE3B,IAAI,OAAO,IAAI,CAAC,CAEf;WASY,MAAM,CAAC,CAAC,EACnB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC7B,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;WAkBP,iBAAiB,CAAC,CAAC,EAC9B,OAAO,EAAE,UAAU,EACnB,aAAa,EAAE,aAAa,EAC5B,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;WAiBP,aAAa,CAAC,CAAC,EAC1B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;WAmBP,IAAI,CAAC,CAAC,EACjB,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,EACtC,IAAI,GAAE,QAAa,GAClB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAoBd,MAAM,CACV,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC7B,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,IAAI,CAAC;IAcV,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBzE,YAAY;IAOZ,IAAI,UAAU,IAAI,OAAO,CAExB;IAQK,UAAU,CACd,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAChC,WAAW,CAAC,EAAE,iBAAiB,GAC9B,OAAO,CAAC,aAAa,CAAC;WA2BZ,WAAW,CAAC,CAAC,EACxB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC7B,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,OAAO,CAAC,aAAa,CAAC;CAiC1B"}
|
package/lib/model.js
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var Model_1;
|
|
8
|
+
import jsonpatch from 'fast-json-patch';
|
|
9
|
+
import * as dagCbor from '@ipld/dag-cbor';
|
|
10
|
+
import * as uint8arrays from 'uint8arrays';
|
|
11
|
+
import { randomBytes } from '@stablelib/random';
|
|
12
|
+
import { Stream, StreamStatic, SyncOptions, } from '@ceramicnetwork/common';
|
|
13
|
+
import { CommitID, StreamRef } from '@ceramicnetwork/streamid';
|
|
14
|
+
const DEFAULT_CREATE_OPTS = {
|
|
15
|
+
anchor: true,
|
|
16
|
+
publish: true,
|
|
17
|
+
pin: true,
|
|
18
|
+
sync: SyncOptions.PREFER_CACHE,
|
|
19
|
+
};
|
|
20
|
+
const DEFAULT_LOAD_OPTS = { sync: SyncOptions.PREFER_CACHE };
|
|
21
|
+
const DEFAULT_UPDATE_OPTS = { anchor: true, publish: true, throwOnInvalidCommit: true };
|
|
22
|
+
function headerFromMetadata(metadata, genesis) {
|
|
23
|
+
if (typeof metadata?.schema === 'string') {
|
|
24
|
+
try {
|
|
25
|
+
CommitID.fromString(metadata.schema);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
throw new Error('Schema must be a CommitID');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const header = {
|
|
32
|
+
controllers: metadata?.controllers,
|
|
33
|
+
family: metadata?.family,
|
|
34
|
+
schema: metadata?.schema?.toString(),
|
|
35
|
+
tags: metadata?.tags,
|
|
36
|
+
};
|
|
37
|
+
if (genesis) {
|
|
38
|
+
if (!metadata?.deterministic) {
|
|
39
|
+
header.unique = uint8arrays.toString(randomBytes(12), 'base64');
|
|
40
|
+
}
|
|
41
|
+
if (metadata?.forbidControllerChange) {
|
|
42
|
+
header.forbidControllerChange = true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
if (metadata?.deterministic !== undefined || metadata?.unique !== undefined) {
|
|
47
|
+
throw new Error("Cannot change 'deterministic' or 'unique' properties on existing Streams");
|
|
48
|
+
}
|
|
49
|
+
if (metadata?.forbidControllerChange !== undefined) {
|
|
50
|
+
throw new Error("Cannot change 'forbidControllerChange' property on existing Streams");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
Object.keys(header).forEach((key) => header[key] === undefined && delete header[key]);
|
|
54
|
+
return header;
|
|
55
|
+
}
|
|
56
|
+
async function _ensureAuthenticated(signer) {
|
|
57
|
+
if (signer.did == null) {
|
|
58
|
+
throw new Error('No DID provided');
|
|
59
|
+
}
|
|
60
|
+
if (!signer.did.authenticated) {
|
|
61
|
+
await signer.did.authenticate();
|
|
62
|
+
if (signer.loggerProvider) {
|
|
63
|
+
signer.loggerProvider.getDiagnosticsLogger().imp(`Now authenticated as DID ${signer.did.id}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function _signDagJWS(signer, commit) {
|
|
68
|
+
await _ensureAuthenticated(signer);
|
|
69
|
+
return signer.did.createDagJWS(commit);
|
|
70
|
+
}
|
|
71
|
+
async function throwReadOnlyError() {
|
|
72
|
+
throw new Error('Historical stream commits cannot be modified. Load the stream without specifying a commit to make updates.');
|
|
73
|
+
}
|
|
74
|
+
let Model = Model_1 = class Model extends Stream {
|
|
75
|
+
constructor() {
|
|
76
|
+
super(...arguments);
|
|
77
|
+
this._isReadOnly = false;
|
|
78
|
+
}
|
|
79
|
+
get content() {
|
|
80
|
+
return super.content;
|
|
81
|
+
}
|
|
82
|
+
static async create(ceramic, content, metadata, opts = {}) {
|
|
83
|
+
opts = { ...DEFAULT_CREATE_OPTS, ...opts };
|
|
84
|
+
if (!metadata?.deterministic && opts.syncTimeoutSeconds == undefined) {
|
|
85
|
+
opts.syncTimeoutSeconds = 0;
|
|
86
|
+
}
|
|
87
|
+
const signer = opts.asDID ? { did: opts.asDID } : ceramic;
|
|
88
|
+
const commit = await Model_1.makeGenesis(signer, content, metadata);
|
|
89
|
+
return ceramic.createStreamFromGenesis(Model_1.STREAM_TYPE_ID, commit, opts);
|
|
90
|
+
}
|
|
91
|
+
static async createFromGenesis(ceramic, genesisCommit, opts = {}) {
|
|
92
|
+
opts = { ...DEFAULT_CREATE_OPTS, ...opts };
|
|
93
|
+
if (genesisCommit.header?.unique && opts.syncTimeoutSeconds == undefined) {
|
|
94
|
+
opts.syncTimeoutSeconds = 0;
|
|
95
|
+
}
|
|
96
|
+
const commit = genesisCommit.data ? await _signDagJWS(ceramic, genesisCommit) : genesisCommit;
|
|
97
|
+
return ceramic.createStreamFromGenesis(Model_1.STREAM_TYPE_ID, commit, opts);
|
|
98
|
+
}
|
|
99
|
+
static async deterministic(ceramic, metadata, opts = {}) {
|
|
100
|
+
opts = { ...DEFAULT_CREATE_OPTS, ...opts };
|
|
101
|
+
metadata = { ...metadata, deterministic: true };
|
|
102
|
+
if (metadata.family == null && metadata.tags == null) {
|
|
103
|
+
throw new Error('Family and/or tags are required when creating a deterministic model document');
|
|
104
|
+
}
|
|
105
|
+
const commit = await Model_1.makeGenesis(ceramic, null, metadata);
|
|
106
|
+
return ceramic.createStreamFromGenesis(Model_1.STREAM_TYPE_ID, commit, opts);
|
|
107
|
+
}
|
|
108
|
+
static async load(ceramic, streamId, opts = {}) {
|
|
109
|
+
opts = { ...DEFAULT_LOAD_OPTS, ...opts };
|
|
110
|
+
const streamRef = StreamRef.from(streamId);
|
|
111
|
+
if (streamRef.type != Model_1.STREAM_TYPE_ID) {
|
|
112
|
+
throw new Error(`StreamID ${streamRef.toString()} does not refer to a '${Model_1.STREAM_TYPE_NAME}' stream, but to a ${streamRef.typeName}`);
|
|
113
|
+
}
|
|
114
|
+
return ceramic.loadStream(streamRef, opts);
|
|
115
|
+
}
|
|
116
|
+
async update(content, metadata, opts = {}) {
|
|
117
|
+
opts = { ...DEFAULT_UPDATE_OPTS, ...opts };
|
|
118
|
+
const signer = opts.asDID ? { did: opts.asDID } : this.api;
|
|
119
|
+
const updateCommit = await this.makeCommit(signer, content, metadata);
|
|
120
|
+
const updated = await this.api.applyCommit(this.id, updateCommit, opts);
|
|
121
|
+
this.state$.next(updated.state);
|
|
122
|
+
}
|
|
123
|
+
async patch(jsonPatch, opts = {}) {
|
|
124
|
+
opts = { ...DEFAULT_UPDATE_OPTS, ...opts };
|
|
125
|
+
const header = headerFromMetadata(this.metadata, false);
|
|
126
|
+
const rawCommit = {
|
|
127
|
+
header,
|
|
128
|
+
data: jsonPatch,
|
|
129
|
+
prev: this.tip,
|
|
130
|
+
id: this.state$.id.cid,
|
|
131
|
+
};
|
|
132
|
+
const commit = await _signDagJWS(this.api, rawCommit);
|
|
133
|
+
const updated = await this.api.applyCommit(this.id, commit, opts);
|
|
134
|
+
this.state$.next(updated.state);
|
|
135
|
+
}
|
|
136
|
+
makeReadOnly() {
|
|
137
|
+
this.update = throwReadOnlyError;
|
|
138
|
+
this.patch = throwReadOnlyError;
|
|
139
|
+
this.sync = throwReadOnlyError;
|
|
140
|
+
this._isReadOnly = true;
|
|
141
|
+
}
|
|
142
|
+
get isReadOnly() {
|
|
143
|
+
return this._isReadOnly;
|
|
144
|
+
}
|
|
145
|
+
async makeCommit(signer, newContent, newMetadata) {
|
|
146
|
+
const header = headerFromMetadata(newMetadata, false);
|
|
147
|
+
if (newContent == null) {
|
|
148
|
+
newContent = this.content;
|
|
149
|
+
}
|
|
150
|
+
if (header.controllers && header.controllers?.length !== 1) {
|
|
151
|
+
throw new Error('Exactly one controller must be specified');
|
|
152
|
+
}
|
|
153
|
+
const patch = jsonpatch.compare(this.content, newContent);
|
|
154
|
+
const commit = {
|
|
155
|
+
header,
|
|
156
|
+
data: patch,
|
|
157
|
+
prev: this.tip,
|
|
158
|
+
id: this.state.log[0].cid,
|
|
159
|
+
};
|
|
160
|
+
return _signDagJWS(signer, commit);
|
|
161
|
+
}
|
|
162
|
+
static async makeGenesis(signer, content, metadata) {
|
|
163
|
+
if (!metadata) {
|
|
164
|
+
metadata = {};
|
|
165
|
+
}
|
|
166
|
+
if (!metadata.controllers || metadata.controllers.length === 0) {
|
|
167
|
+
if (signer.did) {
|
|
168
|
+
await _ensureAuthenticated(signer);
|
|
169
|
+
metadata.controllers = [signer.did.hasParent ? signer.did.parent : signer.did.id];
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
throw new Error('No controllers specified');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (metadata.controllers?.length !== 1) {
|
|
176
|
+
throw new Error('Exactly one controller must be specified');
|
|
177
|
+
}
|
|
178
|
+
const header = headerFromMetadata(metadata, true);
|
|
179
|
+
if (metadata?.deterministic && content) {
|
|
180
|
+
throw new Error('Initial content must be null when creating a deterministic Model');
|
|
181
|
+
}
|
|
182
|
+
if (content == null) {
|
|
183
|
+
const result = { header };
|
|
184
|
+
dagCbor.encode(result);
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
const commit = { data: content, header };
|
|
188
|
+
return _signDagJWS(signer, commit);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
Model.STREAM_TYPE_NAME = 'model';
|
|
192
|
+
Model.STREAM_TYPE_ID = 2;
|
|
193
|
+
Model = Model_1 = __decorate([
|
|
194
|
+
StreamStatic()
|
|
195
|
+
], Model);
|
|
196
|
+
export { Model };
|
|
197
|
+
//# sourceMappingURL=model.js.map
|
package/lib/model.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ceramicnetwork/stream-model",
|
|
3
|
+
"version": "0.0.2-rc.3",
|
|
4
|
+
"description": "Ceramic Model stream type",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ceramic",
|
|
7
|
+
"model"
|
|
8
|
+
],
|
|
9
|
+
"homepage": "",
|
|
10
|
+
"license": "(Apache-2.0 OR MIT)",
|
|
11
|
+
"directories": {
|
|
12
|
+
"lib": "./lib"
|
|
13
|
+
},
|
|
14
|
+
"main": "./lib/index.js",
|
|
15
|
+
"types": "./lib/index.d.ts",
|
|
16
|
+
"type": "module",
|
|
17
|
+
"files": [
|
|
18
|
+
"lib"
|
|
19
|
+
],
|
|
20
|
+
"exports": {
|
|
21
|
+
".": "./lib/index.js"
|
|
22
|
+
},
|
|
23
|
+
"sideEffects": false,
|
|
24
|
+
"scripts": {
|
|
25
|
+
"test": "exit 0",
|
|
26
|
+
"build": "npx tsc --project tsconfig.json",
|
|
27
|
+
"prepublishOnly": "npm run build",
|
|
28
|
+
"prebuild": "npm run clean",
|
|
29
|
+
"lint": "npx eslint ./src --ext .js,.jsx,.ts,.tsx",
|
|
30
|
+
"clean": "npx rimraf ./lib"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@ceramicnetwork/common": "^2.0.2",
|
|
34
|
+
"@ceramicnetwork/streamid": "^2.0.2",
|
|
35
|
+
"@ipld/dag-cbor": "^7.0.0",
|
|
36
|
+
"@stablelib/random": "^1.0.1",
|
|
37
|
+
"fast-json-patch": "^3.1.0",
|
|
38
|
+
"uint8arrays": "^3.0.0"
|
|
39
|
+
},
|
|
40
|
+
"gitHead": "6cf408c94a890011b5a5f0af3aa7558c62f7a95b"
|
|
41
|
+
}
|