@fireproof/core 0.7.2-dev.8 → 0.7.3-dev.1
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/loader.js +4 -0
- package/dist/src/fireproof.js +263 -183
- package/dist/src/fireproof.js.map +1 -1
- package/dist/src/fireproof.mjs +263 -183
- package/dist/src/fireproof.mjs.map +1 -1
- package/dist/storage/ucan.js +39 -0
- package/package.json +5 -1
- package/src/loader.js +5 -0
- package/src/storage/ucan.js +44 -0
package/dist/storage/ucan.js
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
import fetch from 'cross-fetch';
|
2
|
+
import { Base } from './base.js';
|
3
|
+
const defaultConfig = {
|
4
|
+
upload: () => { },
|
5
|
+
url: (cid) => `https://${cid}.ipfs.w3s.link/`
|
6
|
+
};
|
7
|
+
export class UCAN extends Base {
|
8
|
+
constructor(name, config = {}) {
|
9
|
+
super(name, Object.assign({}, defaultConfig, config));
|
10
|
+
}
|
11
|
+
async writeCars(cars) {
|
12
|
+
if (this.config.readonly)
|
13
|
+
return;
|
14
|
+
for (const { cid, bytes } of cars) {
|
15
|
+
const upCid = await this.config.upload(bytes);
|
16
|
+
console.log('writeCar UCAN', cid, upCid);
|
17
|
+
// if (!response.ok) throw new Error(`An error occurred: ${response.statusText}`)
|
18
|
+
}
|
19
|
+
}
|
20
|
+
async readCar(carCid) {
|
21
|
+
const carURL = this.config.url(carCid);
|
22
|
+
const response = await fetch(carURL);
|
23
|
+
if (!response.ok)
|
24
|
+
throw new Error(`An error occurred: ${response.statusText}`);
|
25
|
+
const got = await response.arrayBuffer();
|
26
|
+
return new Uint8Array(got);
|
27
|
+
}
|
28
|
+
async loadHeader(branch = 'main') {
|
29
|
+
return headerMock.get(branch);
|
30
|
+
}
|
31
|
+
async writeHeader(branch, header) {
|
32
|
+
if (this.config.readonly)
|
33
|
+
return;
|
34
|
+
const pHeader = this.prepareHeader(header);
|
35
|
+
// console.log('writeHeader rt', branch, pHeader)
|
36
|
+
headerMock.set(branch, pHeader);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
const headerMock = new Map();
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@fireproof/core",
|
3
|
-
"version": "0.7.
|
3
|
+
"version": "0.7.3-dev.1",
|
4
4
|
"description": "Live data for React, accelerated by proofs, powered by IPFS",
|
5
5
|
"main": "dist/src/fireproof.js",
|
6
6
|
"module": "dist/src/fireproof.mjs",
|
@@ -42,6 +42,10 @@
|
|
42
42
|
"@ipld/car": "^5.1.0",
|
43
43
|
"@ipld/dag-cbor": "^9.0.0",
|
44
44
|
"@jsonlines/core": "^1.0.2",
|
45
|
+
"@ucanto/principal": "^8.0.0",
|
46
|
+
"@ucanto/server": "^8.0.1",
|
47
|
+
"@ucanto/transport": "^8.0.0",
|
48
|
+
"@ucanto/validator": "^8.0.0",
|
45
49
|
"async": "^3.2.4",
|
46
50
|
"charwise": "^3.0.1",
|
47
51
|
"cross-fetch": "^3.1.6",
|
package/src/loader.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import { Browser } from './storage/browser.js'
|
2
2
|
import { Rest } from './storage/rest.js'
|
3
|
+
import { UCAN } from './storage/ucan.js'
|
3
4
|
|
4
5
|
export const Loader = {
|
5
6
|
appropriate: (name, config = {}) => {
|
@@ -11,6 +12,10 @@ export const Loader = {
|
|
11
12
|
return new Rest(name, config)
|
12
13
|
}
|
13
14
|
|
15
|
+
if (config.type === 'ucan') {
|
16
|
+
return new UCAN(name, config)
|
17
|
+
}
|
18
|
+
|
14
19
|
return new Browser(name, config)
|
15
20
|
}
|
16
21
|
}
|
package/src/storage/ucan.js
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
import fetch from 'cross-fetch'
|
2
|
+
import { Base } from './base.js'
|
3
|
+
|
4
|
+
const defaultConfig = {
|
5
|
+
upload: () => {},
|
6
|
+
url: (cid) => `https://${cid}.ipfs.w3s.link/`
|
7
|
+
}
|
8
|
+
|
9
|
+
export class UCAN extends Base {
|
10
|
+
constructor (name, config = {}) {
|
11
|
+
super(name, Object.assign({}, defaultConfig, config))
|
12
|
+
}
|
13
|
+
|
14
|
+
async writeCars (cars) {
|
15
|
+
if (this.config.readonly) return
|
16
|
+
for (const { cid, bytes } of cars) {
|
17
|
+
const upCid = await this.config.upload(bytes)
|
18
|
+
console.log('writeCar UCAN', cid, upCid)
|
19
|
+
// if (!response.ok) throw new Error(`An error occurred: ${response.statusText}`)
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
async readCar (carCid) {
|
24
|
+
const carURL = this.config.url(carCid)
|
25
|
+
const response = await fetch(carURL)
|
26
|
+
if (!response.ok) throw new Error(`An error occurred: ${response.statusText}`)
|
27
|
+
const got = await response.arrayBuffer()
|
28
|
+
return new Uint8Array(got)
|
29
|
+
}
|
30
|
+
|
31
|
+
async loadHeader (branch = 'main') {
|
32
|
+
return headerMock.get(branch)
|
33
|
+
}
|
34
|
+
|
35
|
+
async writeHeader (branch, header) {
|
36
|
+
if (this.config.readonly) return
|
37
|
+
const pHeader = this.prepareHeader(header)
|
38
|
+
// console.log('writeHeader rt', branch, pHeader)
|
39
|
+
|
40
|
+
headerMock.set(branch, pHeader)
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
const headerMock = new Map()
|