@peerbit/log 4.0.0 → 4.0.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/log",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "Append-only log CRDT",
5
5
  "author": "dao.xyz",
6
6
  "license": "MIT",
@@ -74,7 +74,7 @@
74
74
  "@peerbit/indexer-simple": "^1.0.0"
75
75
  },
76
76
  "devDependencies": {
77
- "@peerbit/test-utils": "2.0.34",
77
+ "@peerbit/test-utils": "2.0.35",
78
78
  "@types/yallist": "^4.0.4",
79
79
  "assert": "^2.0.0",
80
80
  "json-stringify-deterministic": "^1.0.7"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":""}
@@ -1,143 +0,0 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import B from "benchmark";
11
- import { field, option, serialize, variant } from "@dao-xyz/borsh";
12
- import { v4 as uuid } from "uuid";
13
- import crypto from "crypto";
14
- import { Log } from "../src/log.js";
15
- import { AnyBlockStore } from "@peerbit/blocks";
16
- import { Ed25519Keypair } from "@peerbit/crypto";
17
- import { BORSH_ENCODING } from "../src/encoding.js";
18
- import { Entry } from "../src/entry.js";
19
- // Run with "node --loader ts-node/esm ./benchmark/index.ts"
20
- let Document = class Document {
21
- id;
22
- name;
23
- number;
24
- bytes;
25
- constructor(opts) {
26
- this.id = opts.id;
27
- this.name = opts.name;
28
- this.number = opts.number;
29
- this.bytes = opts.bytes;
30
- }
31
- };
32
- __decorate([
33
- field({ type: "string" }),
34
- __metadata("design:type", String)
35
- ], Document.prototype, "id", void 0);
36
- __decorate([
37
- field({ type: option("string") }),
38
- __metadata("design:type", String)
39
- ], Document.prototype, "name", void 0);
40
- __decorate([
41
- field({ type: option("u64") }),
42
- __metadata("design:type", BigInt)
43
- ], Document.prototype, "number", void 0);
44
- __decorate([
45
- field({ type: Uint8Array }),
46
- __metadata("design:type", Uint8Array)
47
- ], Document.prototype, "bytes", void 0);
48
- Document = __decorate([
49
- variant("document"),
50
- __metadata("design:paramtypes", [Document])
51
- ], Document);
52
- let log;
53
- let store;
54
- const key = await Ed25519Keypair.create();
55
- const reset = async () => {
56
- log = new Log();
57
- store = new AnyBlockStore();
58
- await log.open(store, key, { encoding: BORSH_ENCODING(Document) });
59
- };
60
- await reset();
61
- class NestedEntry {
62
- entry;
63
- constructor(entry) {
64
- this.entry = entry;
65
- }
66
- }
67
- __decorate([
68
- field({ type: Entry }),
69
- __metadata("design:type", Entry)
70
- ], NestedEntry.prototype, "entry", void 0);
71
- const suite = new B.Suite({ delay: 100 });
72
- suite
73
- .add("1e3", {
74
- fn: async (deferred) => {
75
- const doc = new Document({
76
- id: uuid(),
77
- name: "hello",
78
- number: 1n,
79
- bytes: crypto.randomBytes(1e3)
80
- });
81
- await log.append(doc);
82
- deferred.resolve();
83
- },
84
- defer: true
85
- })
86
- .add("1e4", {
87
- fn: async (deferred) => {
88
- const doc = new Document({
89
- id: uuid(),
90
- name: "hello",
91
- number: 1n,
92
- bytes: crypto.randomBytes(1e4)
93
- });
94
- await log.append(doc);
95
- deferred.resolve();
96
- },
97
- defer: true
98
- })
99
- .add("1e5", {
100
- fn: async (deferred) => {
101
- const doc = new Document({
102
- id: uuid(),
103
- name: "hello",
104
- number: 1n,
105
- bytes: crypto.randomBytes(1e5)
106
- });
107
- const entry = await log.append(doc);
108
- serialize(new NestedEntry(entry.entry));
109
- serialize(new NestedEntry(entry.entry));
110
- serialize(new NestedEntry(entry.entry));
111
- serialize(new NestedEntry(entry.entry));
112
- serialize(new NestedEntry(entry.entry));
113
- serialize(new NestedEntry(entry.entry));
114
- serialize(new NestedEntry(entry.entry));
115
- serialize(new NestedEntry(entry.entry));
116
- serialize(new NestedEntry(entry.entry));
117
- serialize(new NestedEntry(entry.entry));
118
- deferred.resolve();
119
- },
120
- defer: true
121
- })
122
- .add("1e6", {
123
- fn: async (deferred) => {
124
- const doc = new Document({
125
- id: uuid(),
126
- name: "hello",
127
- number: 1n,
128
- bytes: crypto.randomBytes(1e5)
129
- });
130
- await log.append(doc);
131
- deferred.resolve();
132
- },
133
- defer: true
134
- })
135
- .on("cycle", async (event) => {
136
- console.log(String(event.target));
137
- await reset();
138
- })
139
- .on("error", (err) => {
140
- throw err;
141
- })
142
- .run();
143
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- import { Entry } from "./entry.js";
2
- import { type AnyStore } from "@peerbit/any-store";
3
- import { HeadsCache } from "./heads-cache.js";
4
- import { type Blocks } from "@peerbit/blocks-interface";
5
- import { type Keychain } from "@peerbit/keychain";
6
- import { type Encoding } from "./encoding.js";
7
- import { Values } from "./values.js";
8
- import { EntryIndex } from "./entry-index.js";
9
- export type CacheUpdateOptions = {
10
- cache?: {
11
- update?: false;
12
- reset?: false;
13
- } | {
14
- update: true;
15
- reset?: boolean;
16
- };
17
- };
18
- interface Log<T> {
19
- blocks: Blocks;
20
- keychain?: Keychain;
21
- memory?: AnyStore;
22
- encoding: Encoding<any>;
23
- entryIndex: EntryIndex<T>;
24
- values: Values<T>;
25
- }
26
- export declare class HeadsIndex<T> {
27
- private _id;
28
- private _index;
29
- private _gids;
30
- private _headsCache;
31
- private _config;
32
- private _onGidRemoved?;
33
- constructor(id: Uint8Array);
34
- init(log: Log<T>, options?: {
35
- entries?: Entry<T>[];
36
- onGidRemoved?: (gid: string[]) => Promise<void> | void;
37
- }): Promise<HeadsCache<T> | undefined>;
38
- load(options?: {
39
- timeout?: number;
40
- replicate?: boolean;
41
- reload?: boolean;
42
- ignoreMissing?: boolean;
43
- } & CacheUpdateOptions): Promise<Entry<T>[] | undefined>;
44
- get headsCache(): HeadsCache<T> | undefined;
45
- close(): Promise<void> | undefined;
46
- drop(): Promise<void> | undefined;
47
- get id(): Uint8Array;
48
- get index(): Set<string>;
49
- get gids(): Map<string, Map<string, Entry<T>>>;
50
- get size(): number;
51
- reset(entries: Entry<T>[], options?: CacheUpdateOptions): Promise<void>;
52
- has(cid: string): boolean;
53
- put(entry: Entry<T>, options?: CacheUpdateOptions): Promise<void>;
54
- putAll(entries: Entry<T>[], options?: CacheUpdateOptions): Promise<void>;
55
- resetHeadsCache(): Promise<void>;
56
- updateHeadsCache(change?: {
57
- added?: (Entry<T> | string)[];
58
- removed?: (Entry<T> | string)[];
59
- }, reset?: boolean): Promise<void>;
60
- private _putOne;
61
- private _putAll;
62
- del(entry: {
63
- hash: string;
64
- meta: {
65
- gid: string;
66
- };
67
- }, options?: CacheUpdateOptions): Promise<boolean>;
68
- }
69
- export {};
70
- //# sourceMappingURL=heads.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"heads.d.ts","sourceRoot":"","sources":["../../src/heads.ts"],"names":[],"mappings":"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"}
package/dist/src/heads.js DELETED
@@ -1,164 +0,0 @@
1
- import { Entry } from "./entry.js";
2
- import {} from "@peerbit/any-store";
3
- import { HeadsCache } from "./heads-cache.js";
4
- import {} from "@peerbit/blocks-interface";
5
- import {} from "@peerbit/keychain";
6
- import {} from "./encoding.js";
7
- import { Values } from "./values.js";
8
- import { logger } from "./logger.js";
9
- import { EntryIndex } from "./entry-index.js";
10
- export class HeadsIndex {
11
- _id;
12
- _index = new Set();
13
- _gids; // gid -> hash -> entry
14
- _headsCache;
15
- _config;
16
- _onGidRemoved;
17
- constructor(id) {
18
- this._gids = new Map();
19
- this._id = id;
20
- }
21
- async init(log, options = {}) {
22
- this._config = log;
23
- this._onGidRemoved = options.onGidRemoved;
24
- await this.reset(options?.entries || []);
25
- if (log.memory) {
26
- this._headsCache = new HeadsCache(this);
27
- return this._headsCache.init(await log.memory.sublevel("heads"));
28
- }
29
- }
30
- async load(options) {
31
- if (!this._headsCache || (this._headsCache.loaded && !options?.reload)) {
32
- return;
33
- }
34
- // TODO make below into a promise that concurrenct caklls can wait on?
35
- const heads = await this._headsCache?.load();
36
- if (!heads) {
37
- return;
38
- }
39
- const entries = await Promise.all(heads.map(async (x) => {
40
- const entry = await this._config.entryIndex.get(x, { load: true });
41
- if (!entry) {
42
- if (options?.ignoreMissing) {
43
- logger.error("Failed to load entry from head with hash: " + x);
44
- return;
45
- }
46
- else {
47
- throw new Error("Failed to load entry from head with hash: " + x);
48
- }
49
- }
50
- await entry.getMeta(); // TODO types,decrypt gid
51
- return entry;
52
- }));
53
- const filtered = entries.filter((x) => !!x);
54
- await this.reset(filtered);
55
- return filtered;
56
- }
57
- get headsCache() {
58
- return this._headsCache;
59
- }
60
- close() {
61
- return this._headsCache?.close();
62
- }
63
- drop() {
64
- return this._headsCache?.drop();
65
- }
66
- get id() {
67
- return this._id;
68
- }
69
- get index() {
70
- return this._index;
71
- }
72
- get gids() {
73
- return this._gids;
74
- }
75
- get size() {
76
- return this._index.size;
77
- }
78
- async reset(entries, options = { cache: { reset: true, update: true } }) {
79
- this._index.clear();
80
- const gidKeys = [...this._gids.keys()];
81
- this._gids = new Map();
82
- if (entries?.length > 0) {
83
- await this.putAll(entries, options); // reset cache = true
84
- }
85
- if (gidKeys.length > 0) {
86
- this._onGidRemoved?.(gidKeys);
87
- }
88
- }
89
- has(cid) {
90
- return this._index.has(cid);
91
- }
92
- async put(entry, options) {
93
- await this._putOne(entry);
94
- if (!options?.cache || options?.cache?.update) {
95
- await this._headsCache?.queue({ added: [entry] }, options?.cache?.reset);
96
- }
97
- }
98
- async putAll(entries, options) {
99
- await this._putAll(entries);
100
- if (!options?.cache || options?.cache?.update) {
101
- await this._headsCache?.queue({ added: entries }, options?.cache?.reset);
102
- }
103
- }
104
- async resetHeadsCache() {
105
- await this._headsCache?.queue({ added: [...this._index], removed: [] }, true);
106
- }
107
- async updateHeadsCache(change = {}, reset) {
108
- await this._headsCache?.queue(change, reset);
109
- }
110
- async _putOne(entry) {
111
- if (!entry.hash) {
112
- throw new Error("Missing hash");
113
- }
114
- if (this._index.has(entry.hash)) {
115
- return;
116
- }
117
- this._index.add(entry.hash);
118
- const map = this._gids.get(entry.meta.gid);
119
- if (!map) {
120
- const newMap = new Map();
121
- this._gids.set(entry.meta.gid, newMap);
122
- newMap.set(entry.hash, entry);
123
- }
124
- else {
125
- map.set(entry.hash, entry);
126
- }
127
- for (const next of entry.next) {
128
- const indexedEntry = this._config.entryIndex.getShallow(next);
129
- if (indexedEntry) {
130
- await this.del(indexedEntry, { cache: { update: false } }); // we dont update cache here because the put will update the cache that is calling _putOne
131
- }
132
- }
133
- }
134
- async _putAll(entries) {
135
- for (const entry of entries) {
136
- await this._putOne(entry);
137
- }
138
- }
139
- async del(entry, options) {
140
- const wasHead = this._index.delete(entry.hash);
141
- if (!wasHead) {
142
- return false;
143
- }
144
- let removedGids = undefined;
145
- const map = this._gids.get(entry.meta.gid);
146
- map.delete(entry.hash);
147
- if (map.size <= 0) {
148
- this._gids.delete(entry.meta.gid);
149
- (removedGids || (removedGids = new Set())).add(entry.meta.gid);
150
- }
151
- if (!entry.hash) {
152
- throw new Error("Missing hash");
153
- }
154
- if (removedGids) {
155
- await this._onGidRemoved?.([...removedGids]);
156
- }
157
- if (wasHead && !(options?.cache || options?.cache?.update)) {
158
- await this._headsCache?.queue({ removed: [entry.hash] }, options?.cache?.reset);
159
- }
160
- return wasHead;
161
- // this._headsCache = undefined; // TODO do smarter things here, only remove the element needed (?)
162
- }
163
- }
164
- //# sourceMappingURL=heads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"heads.js","sourceRoot":"","sources":["../../src/heads.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export declare class StringArray {
2
- arr: string[];
3
- constructor(properties: {
4
- arr: string[];
5
- });
6
- }
7
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAW;IAEvB,GAAG,EAAE,MAAM,EAAE,CAAC;gBAEF,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE;CAGzC"}
package/dist/src/types.js DELETED
@@ -1,21 +0,0 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { field, vec } from "@dao-xyz/borsh";
11
- export class StringArray {
12
- arr;
13
- constructor(properties) {
14
- this.arr = properties.arr;
15
- }
16
- }
17
- __decorate([
18
- field({ type: vec("string") }),
19
- __metadata("design:type", Array)
20
- ], StringArray.prototype, "arr", void 0);
21
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,OAAO,WAAW;IAEvB,GAAG,CAAW;IAEd,YAAY,UAA6B;QACxC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC3B,CAAC;CACD;AALA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;;wCACjB"}
@@ -1,27 +0,0 @@
1
- import { Entry } from "./entry.js";
2
- import { type ISortFunction } from "./log-sorting.js";
3
- import yallist from "yallist";
4
- import { EntryIndex } from "./entry-index.js";
5
- export type EntryNode = yallist.Node<string>;
6
- export declare class Values<T> {
7
- /**
8
- * Keep track of sorted elements in descending sort order (i.e. newest elements)
9
- */
10
- private _values;
11
- private _sortFn;
12
- private _byteLength;
13
- private _entryIndex;
14
- constructor(entryIndex: EntryIndex<T>, sortFn: ISortFunction, entries?: Entry<T>[]);
15
- toArray(): Promise<Entry<T>[]>;
16
- get head(): yallist.Node<string> | null;
17
- get tail(): yallist.Node<string> | null;
18
- get length(): number;
19
- get entryIndex(): EntryIndex<T>;
20
- put(value: Entry<T>): void;
21
- _put(value: Entry<T>): void;
22
- delete(value: Entry<T> | string): Promise<void>;
23
- deleteNode(node: EntryNode): void;
24
- pop(): string | undefined;
25
- get byteLength(): number;
26
- }
27
- //# sourceMappingURL=values.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE7C,qBAAa,MAAM,CAAC,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAgB;gBAGlC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,KAAK,CAAC,CAAC,CAAC,EAAO;IA4BzB,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAM9B,IAAI,IAAI,gCAEP;IACD,IAAI,IAAI,gCAEP;IACD,IAAI,MAAM,WAET;IAED,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAE9B;IACD,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAGnB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IA6Bd,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM;IAwBrC,UAAU,CAAC,IAAI,EAAE,SAAS;IAQ1B,GAAG;IAQH,IAAI,UAAU,WAEb;CACD"}
@@ -1,130 +0,0 @@
1
- import { Entry } from "./entry.js";
2
- import {} from "./log-sorting.js";
3
- import yallist from "yallist";
4
- import { EntryIndex } from "./entry-index.js";
5
- export class Values {
6
- /**
7
- * Keep track of sorted elements in descending sort order (i.e. newest elements)
8
- */
9
- _values;
10
- _sortFn;
11
- _byteLength;
12
- _entryIndex;
13
- constructor(entryIndex, sortFn, entries = []) {
14
- this._values = yallist.create(entries
15
- .slice()
16
- .sort(sortFn)
17
- .reverse()
18
- .map((x) => {
19
- if (!x.hash)
20
- throw new Error("Unexpected");
21
- return x.hash; /* {
22
- hash: x.hash,
23
- byteLength: x._payload.byteLength,
24
- meta: {
25
- gids: x.gids,
26
- gid: x.gid,
27
- data: x.meta.data,
28
- },
29
- }; */
30
- }));
31
- this._byteLength = 0;
32
- entries.forEach((entry) => {
33
- this._byteLength += entry._payload.byteLength;
34
- });
35
- this._sortFn = sortFn;
36
- this._entryIndex = entryIndex;
37
- }
38
- toArray() {
39
- return Promise.all(this._values.toArrayReverse().map((x) => this._entryIndex.get(x))).then((arr) => arr.filter((x) => !!x)); // we do reverse because we assume the log is only meaningful if we read it from start to end
40
- }
41
- get head() {
42
- return this._values.head;
43
- }
44
- get tail() {
45
- return this._values.tail;
46
- }
47
- get length() {
48
- return this._values.length;
49
- }
50
- get entryIndex() {
51
- return this._entryIndex;
52
- }
53
- put(value) {
54
- return this._put(value);
55
- }
56
- _put(value) {
57
- // assume we want to insert at head (or somehere close)
58
- let walker = this._values.head;
59
- let last = undefined;
60
- while (walker) {
61
- const walkerValue = this._entryIndex.getShallow(walker.value);
62
- if (!walkerValue) {
63
- throw new Error("Missing walker value");
64
- }
65
- if (walkerValue.hash === value.hash) {
66
- return; // already exist!
67
- }
68
- if (this._sortFn(walkerValue, value) < 0) {
69
- break;
70
- }
71
- last = walker;
72
- walker = walker.next;
73
- continue;
74
- }
75
- this._byteLength += value._payload.byteLength;
76
- if (!value.hash) {
77
- throw new Error("Unexpected");
78
- }
79
- _insertAfter(this._values, last, value.hash);
80
- }
81
- async delete(value) {
82
- const hash = typeof value === "string" ? value : value.hash;
83
- // Assume we want to delete at tail (or somwhere close)
84
- let walker = this._values.tail;
85
- while (walker) {
86
- const walkerValue = this._entryIndex.getShallow(walker.value);
87
- if (!walkerValue) {
88
- throw new Error("Missing walker value");
89
- }
90
- if (walkerValue.hash === hash) {
91
- this._values.removeNode(walker);
92
- this._byteLength -= walkerValue.payloadByteLength;
93
- return;
94
- }
95
- walker = walker.prev; // prev will be undefined if you do removeNode(walker)
96
- }
97
- throw new Error(`Failed to delete. Could not find value with hash ${hash} in values list`);
98
- }
99
- deleteNode(node) {
100
- this._values.removeNode(node);
101
- this._byteLength -= this._entryIndex.getShallow(node.value).payloadByteLength;
102
- return;
103
- }
104
- pop() {
105
- const value = this._values.pop();
106
- if (value) {
107
- this._byteLength -= this._entryIndex.getShallow(value).payloadByteLength;
108
- }
109
- return value;
110
- }
111
- get byteLength() {
112
- return this._byteLength;
113
- }
114
- }
115
- function _insertAfter(self, node, value) {
116
- const inserted = !node
117
- ? new yallist.Node(value, null, self.head, self)
118
- : new yallist.Node(value, node, node.next, self);
119
- // is tail
120
- if (inserted.next === null) {
121
- self.tail = inserted;
122
- }
123
- // is head
124
- if (inserted.prev === null) {
125
- self.head = inserted;
126
- }
127
- self.length++;
128
- return inserted;
129
- }
130
- //# sourceMappingURL=values.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/values.ts"],"names":[],"mappings":"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"}