@peerbit/please-lib 0.0.7 → 0.0.8

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.
@@ -1,8 +1,6 @@
1
1
  import { Program } from "@peerbit/program";
2
- import { Documents, Role } from "@peerbit/document";
3
- import { SyncFilter } from "@peerbit/shared-log";
2
+ import { Documents, RoleOptions } from "@peerbit/document";
4
3
  import { PublicSignKey } from "@peerbit/crypto";
5
- import { ProgramClient } from "@peerbit/program";
6
4
  import { TrustedNetwork } from "@peerbit/trusted-network";
7
5
  export declare abstract class AbstractFile {
8
6
  abstract id: string;
@@ -23,6 +21,7 @@ export declare class TinyFile extends AbstractFile {
23
21
  parentId?: string;
24
22
  get size(): number;
25
23
  constructor(properties: {
24
+ id?: string;
26
25
  name: string;
27
26
  file: Uint8Array;
28
27
  parentId?: string;
@@ -33,26 +32,6 @@ export declare class TinyFile extends AbstractFile {
33
32
  }): Promise<Output>;
34
33
  delete(): Promise<void>;
35
34
  }
36
- export declare class SmallFile extends AbstractFile {
37
- id: string;
38
- name: string;
39
- cid: string;
40
- size: number;
41
- parentId?: string;
42
- constructor(properties: {
43
- name: string;
44
- cid: string;
45
- size: number;
46
- parentId?: string;
47
- });
48
- static create(node: ProgramClient, name: string, file: Uint8Array, parentId?: string): Promise<SmallFile>;
49
- getFile<OutputType extends "chunks" | "joined" = "joined", Output = OutputType extends "chunks" ? Uint8Array[] : Uint8Array>(files: Files, properties?: {
50
- as: OutputType;
51
- timeout?: number;
52
- progress?: (progress: number) => any;
53
- }): Promise<Output>;
54
- delete(files: Files): Promise<void>;
55
- }
56
35
  export declare class LargeFile extends AbstractFile {
57
36
  id: string;
58
37
  name: string;
@@ -64,7 +43,7 @@ export declare class LargeFile extends AbstractFile {
64
43
  fileIds: string[];
65
44
  size: number;
66
45
  });
67
- static create(name: string, file: Uint8Array, files: Files): Promise<LargeFile>;
46
+ static create(name: string, file: Uint8Array, files: Files, progress?: (progress: number) => void): Promise<LargeFile>;
68
47
  get parentId(): undefined;
69
48
  fetchChunks(files: Files): Promise<AbstractFile[]>;
70
49
  delete(files: Files): Promise<void>;
@@ -75,8 +54,7 @@ export declare class LargeFile extends AbstractFile {
75
54
  }): Promise<Output>;
76
55
  }
77
56
  type Args = {
78
- role: Role;
79
- sync?: SyncFilter | undefined;
57
+ role: RoleOptions;
80
58
  };
81
59
  export declare class Files extends Program<Args> {
82
60
  id: Uint8Array;
@@ -88,10 +66,11 @@ export declare class Files extends Program<Args> {
88
66
  name?: string;
89
67
  rootKey?: PublicSignKey;
90
68
  });
91
- add(name: string, file: Uint8Array, parentId?: string): Promise<string>;
69
+ add(name: string, file: Uint8Array, parentId?: string, progress?: (progress: number) => void): Promise<string>;
92
70
  removeById(id: string): Promise<void>;
93
71
  removeByName(name: string): Promise<void>;
94
72
  list(): Promise<AbstractFile[]>;
73
+ listLocalChunks(parent: LargeFile): Promise<AbstractFile[]>;
95
74
  /**
96
75
  * Get by name
97
76
  * @param id
package/lib/esm/index.js CHANGED
@@ -7,10 +7,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- var SmallFile_1, LargeFile_1;
10
+ var LargeFile_1;
11
11
  import { field, variant, vec, option } from "@dao-xyz/borsh";
12
12
  import { Program } from "@peerbit/program";
13
- import { Documents, SearchRequest, StringMatch, StringMatchMethod, Or, } from "@peerbit/document";
13
+ import { Documents, SearchRequest, StringMatch, StringMatchMethod, Or, MissingField, } from "@peerbit/document";
14
14
  import { sha256Base64Sync, randomBytes } from "@peerbit/crypto";
15
15
  import { concat } from "uint8arrays";
16
16
  import { sha256Sync } from "@peerbit/crypto";
@@ -18,7 +18,7 @@ import { TrustedNetwork } from "@peerbit/trusted-network";
18
18
  import PQueue from "p-queue";
19
19
  export class AbstractFile {
20
20
  }
21
- const TINY_FILE_SIZE_LIMIT = 1e3;
21
+ const TINY_FILE_SIZE_LIMIT = 5 * 1e6; // 6mb
22
22
  let TinyFile = class TinyFile extends AbstractFile {
23
23
  id;
24
24
  name;
@@ -29,7 +29,7 @@ let TinyFile = class TinyFile extends AbstractFile {
29
29
  }
30
30
  constructor(properties) {
31
31
  super();
32
- this.id = sha256Base64Sync(properties.file);
32
+ this.id = properties.id || sha256Base64Sync(properties.file);
33
33
  this.name = properties.name;
34
34
  this.file = properties.file;
35
35
  this.parentId = properties.parentId;
@@ -67,68 +67,6 @@ TinyFile = __decorate([
67
67
  __metadata("design:paramtypes", [Object])
68
68
  ], TinyFile);
69
69
  export { TinyFile };
70
- const SMALL_FILE_SIZE_LIMIT = 1e6 * 9;
71
- // TODO Do we really need this if we have TinyFile and LargeFile?
72
- let SmallFile = SmallFile_1 = class SmallFile extends AbstractFile {
73
- id; // cid
74
- name;
75
- cid; // store file separately in a block store, like IPFS
76
- size;
77
- parentId;
78
- constructor(properties) {
79
- super();
80
- this.id = properties.cid;
81
- this.name = properties.name;
82
- this.cid = properties.cid;
83
- this.size = properties.size;
84
- this.parentId = properties.parentId;
85
- }
86
- static async create(node, name, file, parentId) {
87
- if (file.length > SMALL_FILE_SIZE_LIMIT) {
88
- throw new Error("To large file for SmallFile");
89
- }
90
- const cid = await node.services.blocks.put(file);
91
- return new SmallFile_1({ name, cid, size: file.byteLength, parentId });
92
- }
93
- async getFile(files, properties) {
94
- properties?.progress?.(0);
95
- // Load the file from the block store
96
- const block = await files.node.services.blocks.get(this.id, {
97
- timeout: properties?.timeout,
98
- });
99
- properties?.progress?.(1);
100
- return (properties?.as == "chunks" ? [block] : block);
101
- }
102
- async delete(files) {
103
- return await files.node.services.blocks.rm(this.id);
104
- }
105
- };
106
- __decorate([
107
- field({ type: "string" }),
108
- __metadata("design:type", String)
109
- ], SmallFile.prototype, "id", void 0);
110
- __decorate([
111
- field({ type: "string" }),
112
- __metadata("design:type", String)
113
- ], SmallFile.prototype, "name", void 0);
114
- __decorate([
115
- field({ type: "string" }),
116
- __metadata("design:type", String)
117
- ], SmallFile.prototype, "cid", void 0);
118
- __decorate([
119
- field({ type: "u32" }),
120
- __metadata("design:type", Number)
121
- ], SmallFile.prototype, "size", void 0);
122
- __decorate([
123
- field({ type: option("string") }),
124
- __metadata("design:type", String)
125
- ], SmallFile.prototype, "parentId", void 0);
126
- SmallFile = SmallFile_1 = __decorate([
127
- variant(1) // for versioning purposes
128
- ,
129
- __metadata("design:paramtypes", [Object])
130
- ], SmallFile);
131
- export { SmallFile };
132
70
  let LargeFile = LargeFile_1 = class LargeFile extends AbstractFile {
133
71
  id; // hash
134
72
  name;
@@ -141,15 +79,19 @@ let LargeFile = LargeFile_1 = class LargeFile extends AbstractFile {
141
79
  this.fileIds = properties.fileIds;
142
80
  this.size = properties.size;
143
81
  }
144
- static async create(name, file, files) {
145
- const segmetSize = SMALL_FILE_SIZE_LIMIT / 10; // 10% of the small size limit
82
+ static async create(name, file, files, progress) {
83
+ const segmetSize = TINY_FILE_SIZE_LIMIT / 10; // 10% of the small size limit
146
84
  const fileIds = [];
147
85
  const id = sha256Base64Sync(file);
148
86
  const fileSize = file.byteLength;
149
- for (let i = 0; i < Math.ceil(file.byteLength / segmetSize); i++) {
87
+ progress?.(0);
88
+ const end = Math.ceil(file.byteLength / segmetSize);
89
+ for (let i = 0; i < end; i++) {
90
+ progress?.((i + 1) / end);
150
91
  fileIds.push(await files.add(name + "/" + i, file.subarray(i * segmetSize, Math.min((i + 1) * segmetSize, file.byteLength)), id));
151
92
  }
152
- return new LargeFile_1({ id, name, fileIds, size: fileSize });
93
+ progress?.(1);
94
+ return new LargeFile_1({ id, name, fileIds: fileIds, size: fileSize });
153
95
  }
154
96
  get parentId() {
155
97
  // Large file can never have a parent
@@ -172,7 +114,7 @@ let LargeFile = LargeFile_1 = class LargeFile extends AbstractFile {
172
114
  properties?.progress?.(0);
173
115
  console.log("LISTS CHUNKS!");
174
116
  const allChunks = await this.fetchChunks(files);
175
- console.log("RECEIVED CHUNKS: " + allChunks.length);
117
+ console.log("RECEIVED CHUNKS: " + allChunks);
176
118
  console.log("FETCH CHUNKS");
177
119
  const fetchQueue = new PQueue({ concurrency: 10 });
178
120
  let fetchError = undefined;
@@ -253,7 +195,7 @@ __decorate([
253
195
  __metadata("design:type", Number)
254
196
  ], LargeFile.prototype, "size", void 0);
255
197
  LargeFile = LargeFile_1 = __decorate([
256
- variant(2) // for versioning purposes
198
+ variant(1) // for versioning purposes
257
199
  ,
258
200
  __metadata("design:paramtypes", [Object])
259
201
  ], LargeFile);
@@ -278,22 +220,20 @@ let Files = class Files extends Program {
278
220
  ])),
279
221
  });
280
222
  }
281
- async add(name, file, parentId) {
223
+ async add(name, file, parentId, progress) {
282
224
  let toPut;
225
+ progress?.(0);
283
226
  if (file.byteLength <= TINY_FILE_SIZE_LIMIT) {
284
227
  toPut = new TinyFile({ name, file, parentId });
285
228
  }
286
- else if (file.byteLength > TINY_FILE_SIZE_LIMIT &&
287
- file.byteLength <= SMALL_FILE_SIZE_LIMIT) {
288
- toPut = await SmallFile.create(this.node, name, file, parentId);
289
- }
290
229
  else {
291
230
  if (parentId) {
292
231
  throw new Error("Unexpected that a LargeFile to have a parent");
293
232
  }
294
- toPut = await LargeFile.create(name, file, this);
233
+ toPut = await LargeFile.create(name, file, this, progress);
295
234
  }
296
235
  await this.files.put(toPut);
236
+ progress?.(1);
297
237
  return toPut.id;
298
238
  }
299
239
  async removeById(id) {
@@ -318,9 +258,22 @@ let Files = class Files extends Program {
318
258
  }
319
259
  }
320
260
  async list() {
321
- const files = await this.files.index.search(new SearchRequest(), {
261
+ // only root files (don't fetch fetch chunks here)
262
+ const files = await this.files.index.search(new SearchRequest({ query: new MissingField({ key: "parentId" }) }), {
263
+ local: true,
264
+ remote: {
265
+ throwOnMissing: true,
266
+ sync: true, // sync here because this, because we might want to access it offline, even though we are not replicators
267
+ },
268
+ });
269
+ return files;
270
+ }
271
+ async listLocalChunks(parent) {
272
+ const files = await this.files.index.search(new SearchRequest({
273
+ query: new StringMatch({ key: "parentId", value: parent.id }),
274
+ }), {
322
275
  local: true,
323
- remote: true,
276
+ remote: false,
324
277
  });
325
278
  return files;
326
279
  }
@@ -383,7 +336,6 @@ let Files = class Files extends Program {
383
336
  type: AbstractFile,
384
337
  // TODO add ACL
385
338
  role: args?.role,
386
- sync: args?.sync,
387
339
  replicas: { min: 3 },
388
340
  canPerform: async (operation, context) => {
389
341
  if (!this.trustGraph) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/please-lib",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "author": "dao.xyz",
5
5
  "repository": "https://github.com/@dao-xyz/peerbit-examples",
6
6
  "license": "Apache-2.0",
@@ -34,14 +34,14 @@
34
34
  "test:integration": "node ../../../node_modules/.bin/jest test -c ../../../jest.config.integration.ts --runInBand --forceExit"
35
35
  },
36
36
  "devDependencies": {
37
- "@peerbit/test-utils": "^1",
38
- "typescript": "^5.1.3"
37
+ "@peerbit/test-utils": "^2",
38
+ "typescript": "^5.3.3"
39
39
  },
40
40
  "dependencies": {
41
- "@peerbit/document": "^3",
42
- "@peerbit/trusted-network": "^2",
43
- "peerbit": "^2",
41
+ "@peerbit/document": "^6",
42
+ "@peerbit/trusted-network": "^3",
43
+ "peerbit": "^4",
44
44
  "uuid": "^9.0.0"
45
45
  },
46
- "gitHead": "00c275554aa08e6a70bceaee3e3377936ca0e8d9"
46
+ "gitHead": "158537c6f6818e35e766329a6b4a5ccf7ae57ea0"
47
47
  }
package/src/index.ts CHANGED
@@ -4,11 +4,11 @@ import {
4
4
  Documents,
5
5
  SearchRequest,
6
6
  StringMatch,
7
- Role,
8
7
  StringMatchMethod,
9
8
  Or,
9
+ RoleOptions,
10
+ MissingField,
10
11
  } from "@peerbit/document";
11
- import { SyncFilter } from "@peerbit/shared-log";
12
12
  import { PublicSignKey, sha256Base64Sync, randomBytes } from "@peerbit/crypto";
13
13
  import { ProgramClient } from "@peerbit/program";
14
14
  import { concat } from "uint8arrays";
@@ -35,7 +35,7 @@ export abstract class AbstractFile {
35
35
  abstract delete(files: Files): Promise<void>;
36
36
  }
37
37
 
38
- const TINY_FILE_SIZE_LIMIT = 1e3;
38
+ const TINY_FILE_SIZE_LIMIT = 5 * 1e6; // 6mb
39
39
 
40
40
  @variant(0) // for versioning purposes
41
41
  export class TinyFile extends AbstractFile {
@@ -56,12 +56,13 @@ export class TinyFile extends AbstractFile {
56
56
  }
57
57
 
58
58
  constructor(properties: {
59
+ id?: string;
59
60
  name: string;
60
61
  file: Uint8Array;
61
62
  parentId?: string;
62
63
  }) {
63
64
  super();
64
- this.id = sha256Base64Sync(properties.file);
65
+ this.id = properties.id || sha256Base64Sync(properties.file);
65
66
  this.name = properties.name;
66
67
  this.file = properties.file;
67
68
  this.parentId = properties.parentId;
@@ -88,80 +89,7 @@ export class TinyFile extends AbstractFile {
88
89
  }
89
90
  }
90
91
 
91
- const SMALL_FILE_SIZE_LIMIT = 1e6 * 9;
92
-
93
- // TODO Do we really need this if we have TinyFile and LargeFile?
94
92
  @variant(1) // for versioning purposes
95
- export class SmallFile extends AbstractFile {
96
- @field({ type: "string" })
97
- id: string; // cid
98
-
99
- @field({ type: "string" })
100
- name: string;
101
-
102
- @field({ type: "string" })
103
- cid: string; // store file separately in a block store, like IPFS
104
-
105
- @field({ type: "u32" })
106
- size: number;
107
-
108
- @field({ type: option("string") })
109
- parentId?: string;
110
-
111
- constructor(properties: {
112
- name: string;
113
- cid: string;
114
- size: number;
115
- parentId?: string;
116
- }) {
117
- super();
118
- this.id = properties.cid;
119
- this.name = properties.name;
120
- this.cid = properties.cid;
121
- this.size = properties.size;
122
- this.parentId = properties.parentId;
123
- }
124
-
125
- static async create(
126
- node: ProgramClient,
127
- name: string,
128
- file: Uint8Array,
129
- parentId?: string
130
- ) {
131
- if (file.length > SMALL_FILE_SIZE_LIMIT) {
132
- throw new Error("To large file for SmallFile");
133
- }
134
- const cid = await node.services.blocks.put(file);
135
- return new SmallFile({ name, cid, size: file.byteLength, parentId });
136
- }
137
-
138
- async getFile<
139
- OutputType extends "chunks" | "joined" = "joined",
140
- Output = OutputType extends "chunks" ? Uint8Array[] : Uint8Array
141
- >(
142
- files: Files,
143
- properties?: {
144
- as: OutputType;
145
- timeout?: number;
146
- progress?: (progress: number) => any;
147
- }
148
- ): Promise<Output> {
149
- properties?.progress?.(0);
150
-
151
- // Load the file from the block store
152
- const block = await files.node.services.blocks.get(this.id, {
153
- timeout: properties?.timeout,
154
- });
155
- properties?.progress?.(1);
156
- return (properties?.as == "chunks" ? [block] : block) as Output;
157
- }
158
-
159
- async delete(files: Files): Promise<void> {
160
- return await files.node.services.blocks.rm(this.id);
161
- }
162
- }
163
-
164
- @variant(2) // for versioning purposes
165
93
  export class LargeFile extends AbstractFile {
166
94
  @field({ type: "string" })
167
95
  id: string; // hash
@@ -188,12 +116,20 @@ export class LargeFile extends AbstractFile {
188
116
  this.size = properties.size;
189
117
  }
190
118
 
191
- static async create(name: string, file: Uint8Array, files: Files) {
192
- const segmetSize = SMALL_FILE_SIZE_LIMIT / 10; // 10% of the small size limit
119
+ static async create(
120
+ name: string,
121
+ file: Uint8Array,
122
+ files: Files,
123
+ progress?: (progress: number) => void
124
+ ) {
125
+ const segmetSize = TINY_FILE_SIZE_LIMIT / 10; // 10% of the small size limit
193
126
  const fileIds: string[] = [];
194
127
  const id = sha256Base64Sync(file);
195
128
  const fileSize = file.byteLength;
196
- for (let i = 0; i < Math.ceil(file.byteLength / segmetSize); i++) {
129
+ progress?.(0);
130
+ const end = Math.ceil(file.byteLength / segmetSize);
131
+ for (let i = 0; i < end; i++) {
132
+ progress?.((i + 1) / end);
197
133
  fileIds.push(
198
134
  await files.add(
199
135
  name + "/" + i,
@@ -205,8 +141,8 @@ export class LargeFile extends AbstractFile {
205
141
  )
206
142
  );
207
143
  }
208
-
209
- return new LargeFile({ id, name, fileIds, size: fileSize });
144
+ progress?.(1);
145
+ return new LargeFile({ id, name, fileIds: fileIds, size: fileSize });
210
146
  }
211
147
 
212
148
  get parentId() {
@@ -252,7 +188,7 @@ export class LargeFile extends AbstractFile {
252
188
 
253
189
  console.log("LISTS CHUNKS!");
254
190
  const allChunks = await this.fetchChunks(files);
255
- console.log("RECEIVED CHUNKS: " + allChunks.length);
191
+ console.log("RECEIVED CHUNKS: " + allChunks);
256
192
  console.log("FETCH CHUNKS");
257
193
 
258
194
  const fetchQueue = new PQueue({ concurrency: 10 });
@@ -327,7 +263,7 @@ export class LargeFile extends AbstractFile {
327
263
  }
328
264
  }
329
265
 
330
- type Args = { role: Role; sync?: SyncFilter | undefined };
266
+ type Args = { role: RoleOptions };
331
267
 
332
268
  @variant("files")
333
269
  export class Files extends Program<Args> {
@@ -367,22 +303,24 @@ export class Files extends Program<Args> {
367
303
  });
368
304
  }
369
305
 
370
- async add(name: string, file: Uint8Array, parentId?: string) {
306
+ async add(
307
+ name: string,
308
+ file: Uint8Array,
309
+ parentId?: string,
310
+ progress?: (progress: number) => void
311
+ ) {
371
312
  let toPut: AbstractFile;
313
+ progress?.(0);
372
314
  if (file.byteLength <= TINY_FILE_SIZE_LIMIT) {
373
315
  toPut = new TinyFile({ name, file, parentId });
374
- } else if (
375
- file.byteLength > TINY_FILE_SIZE_LIMIT &&
376
- file.byteLength <= SMALL_FILE_SIZE_LIMIT
377
- ) {
378
- toPut = await SmallFile.create(this.node, name, file, parentId);
379
316
  } else {
380
317
  if (parentId) {
381
318
  throw new Error("Unexpected that a LargeFile to have a parent");
382
319
  }
383
- toPut = await LargeFile.create(name, file, this);
320
+ toPut = await LargeFile.create(name, file, this, progress);
384
321
  }
385
322
  await this.files.put(toPut);
323
+ progress?.(1);
386
324
  return toPut.id;
387
325
  }
388
326
 
@@ -412,12 +350,33 @@ export class Files extends Program<Args> {
412
350
  }
413
351
 
414
352
  async list() {
415
- const files = await this.files.index.search(new SearchRequest(), {
416
- local: true,
417
- remote: true,
418
- });
353
+ // only root files (don't fetch fetch chunks here)
354
+ const files = await this.files.index.search(
355
+ new SearchRequest({ query: new MissingField({ key: "parentId" }) }),
356
+ {
357
+ local: true,
358
+ remote: {
359
+ throwOnMissing: true,
360
+ sync: true, // sync here because this, because we might want to access it offline, even though we are not replicators
361
+ },
362
+ }
363
+ );
364
+ return files;
365
+ }
366
+
367
+ async listLocalChunks(parent: LargeFile) {
368
+ const files = await this.files.index.search(
369
+ new SearchRequest({
370
+ query: new StringMatch({ key: "parentId", value: parent.id }),
371
+ }),
372
+ {
373
+ local: true,
374
+ remote: false,
375
+ }
376
+ );
419
377
  return files;
420
378
  }
379
+
421
380
  /**
422
381
  * Get by name
423
382
  * @param id
@@ -500,7 +459,6 @@ export class Files extends Program<Args> {
500
459
  type: AbstractFile,
501
460
  // TODO add ACL
502
461
  role: args?.role,
503
- sync: args?.sync,
504
462
  replicas: { min: 3 },
505
463
  canPerform: async (operation, context) => {
506
464
  if (!this.trustGraph) {