@fireproof/core 0.7.2 → 0.7.3-dev.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.2",
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
  }
@@ -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()