@zenfs/core 2.2.3 → 2.3.0
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/dist/backends/backend.js +6 -9
- package/dist/backends/cow.js +4 -4
- package/dist/backends/fetch.js +8 -6
- package/dist/backends/memory.js +4 -2
- package/dist/backends/passthrough.js +2 -0
- package/dist/backends/port.d.ts +16 -89
- package/dist/backends/port.js +35 -171
- package/dist/backends/single_buffer.d.ts +4 -2
- package/dist/backends/single_buffer.js +169 -196
- package/dist/backends/store/fs.js +50 -73
- package/dist/backends/store/map.js +1 -2
- package/dist/backends/store/store.js +23 -27
- package/dist/config.js +2 -3
- package/dist/context.js +2 -2
- package/dist/internal/devices.js +7 -10
- package/dist/internal/file_index.js +3 -8
- package/dist/internal/filesystem.js +19 -12
- package/dist/internal/index_fs.js +3 -4
- package/dist/internal/inode.d.ts +2 -0
- package/dist/internal/inode.js +148 -185
- package/dist/internal/rpc.d.ts +143 -0
- package/dist/internal/rpc.js +251 -0
- package/dist/mixins/async.js +5 -6
- package/dist/mixins/mutexed.js +16 -10
- package/dist/path.js +3 -4
- package/dist/polyfills.js +51 -22
- package/dist/readline.js +32 -30
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +11 -5
- package/dist/vfs/acl.d.ts +2 -0
- package/dist/vfs/acl.js +48 -66
- package/dist/vfs/async.js +4 -4
- package/dist/vfs/dir.js +12 -8
- package/dist/vfs/file.js +22 -18
- package/dist/vfs/ioctl.js +39 -62
- package/dist/vfs/promises.js +48 -39
- package/dist/vfs/shared.js +4 -5
- package/dist/vfs/stats.js +104 -77
- package/dist/vfs/streams.js +11 -8
- package/dist/vfs/sync.js +23 -26
- package/dist/vfs/watchers.js +9 -3
- package/dist/vfs/xattr.js +6 -12
- package/package.json +1 -1
- package/scripts/test.js +14 -7
- package/tests/backend/fetch.test.ts +14 -14
- package/tests/backend/port.test.ts +25 -17
- package/tests/common/handle.test.ts +5 -3
- package/tests/fetch/run.sh +2 -1
- package/tests/fs/scaling.test.ts +32 -0
- package/tests/fs/watch.test.ts +2 -5
- package/tests/setup/single-buffer.ts +1 -1
- package/tests/tsconfig.json +3 -2
- package/types/uint8array.d.ts +64 -0
|
@@ -84,21 +84,6 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
84
84
|
var e = new Error(message);
|
|
85
85
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
86
86
|
});
|
|
87
|
-
var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
|
|
88
|
-
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
|
|
89
|
-
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
|
|
90
|
-
};
|
|
91
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
92
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
93
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
94
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
95
|
-
};
|
|
96
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
97
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
98
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
99
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
100
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
101
|
-
};
|
|
102
87
|
import { withErrno } from 'kerium';
|
|
103
88
|
import { alert, crit, err, warn } from 'kerium/log';
|
|
104
89
|
import { field, offsetof, packed, sizeof, struct, types as t } from 'memium';
|
|
@@ -116,7 +101,6 @@ const { format } = new Intl.NumberFormat('en-US', {
|
|
|
116
101
|
unitDisplay: 'narrow',
|
|
117
102
|
});
|
|
118
103
|
let MetadataEntry = (() => {
|
|
119
|
-
var _MetadataEntry_id_accessor_storage, _MetadataEntry_offset__accessor_storage, _MetadataEntry_offset_accessor_storage, _MetadataEntry_size_accessor_storage;
|
|
120
104
|
var _a, _b, _c, _d;
|
|
121
105
|
let _classDecorators = [struct(packed)];
|
|
122
106
|
let _classDescriptor;
|
|
@@ -135,52 +119,47 @@ let MetadataEntry = (() => {
|
|
|
135
119
|
let _size_decorators;
|
|
136
120
|
let _size_initializers = [];
|
|
137
121
|
let _size_extraInitializers = [];
|
|
138
|
-
var MetadataEntry =
|
|
122
|
+
var MetadataEntry = class extends _classSuper {
|
|
123
|
+
static { _classThis = this; }
|
|
124
|
+
static {
|
|
125
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
126
|
+
_id_decorators = [(_a = t).uint32.bind(_a)];
|
|
127
|
+
_offset__decorators = [(_b = t).uint32.bind(_b)];
|
|
128
|
+
_offset_decorators = [(_c = t).uint32.bind(_c)];
|
|
129
|
+
_size_decorators = [(_d = t).uint32.bind(_d)];
|
|
130
|
+
__esDecorate(this, null, _id_decorators, { kind: "accessor", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
|
|
131
|
+
__esDecorate(this, null, _offset__decorators, { kind: "accessor", name: "offset_", static: false, private: false, access: { has: obj => "offset_" in obj, get: obj => obj.offset_, set: (obj, value) => { obj.offset_ = value; } }, metadata: _metadata }, _offset__initializers, _offset__extraInitializers);
|
|
132
|
+
__esDecorate(this, null, _offset_decorators, { kind: "accessor", name: "offset", static: false, private: false, access: { has: obj => "offset" in obj, get: obj => obj.offset, set: (obj, value) => { obj.offset = value; } }, metadata: _metadata }, _offset_initializers, _offset_extraInitializers);
|
|
133
|
+
__esDecorate(this, null, _size_decorators, { kind: "accessor", name: "size", static: false, private: false, access: { has: obj => "size" in obj, get: obj => obj.size, set: (obj, value) => { obj.size = value; } }, metadata: _metadata }, _size_initializers, _size_extraInitializers);
|
|
134
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
135
|
+
MetadataEntry = _classThis = _classDescriptor.value;
|
|
136
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
137
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
138
|
+
}
|
|
139
|
+
#id_accessor_storage = __runInitializers(this, _id_initializers, void 0);
|
|
139
140
|
/** Inode or data ID */
|
|
140
|
-
get id() { return
|
|
141
|
-
set id(value) {
|
|
141
|
+
get id() { return this.#id_accessor_storage; }
|
|
142
|
+
set id(value) { this.#id_accessor_storage = value; }
|
|
143
|
+
#offset__accessor_storage = (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _offset__initializers, void 0));
|
|
142
144
|
/** Reserved for 64-bit offset expansion */
|
|
143
|
-
get offset_() { return
|
|
144
|
-
set offset_(value) {
|
|
145
|
+
get offset_() { return this.#offset__accessor_storage; }
|
|
146
|
+
set offset_(value) { this.#offset__accessor_storage = value; }
|
|
147
|
+
#offset_accessor_storage = (__runInitializers(this, _offset__extraInitializers), __runInitializers(this, _offset_initializers, void 0));
|
|
145
148
|
/** Offset into the buffer the data is stored at. */
|
|
146
|
-
get offset() { return
|
|
147
|
-
set offset(value) {
|
|
149
|
+
get offset() { return this.#offset_accessor_storage; }
|
|
150
|
+
set offset(value) { this.#offset_accessor_storage = value; }
|
|
151
|
+
#size_accessor_storage = (__runInitializers(this, _offset_extraInitializers), __runInitializers(this, _size_initializers, void 0));
|
|
148
152
|
/** The size of the data */
|
|
149
|
-
get size() { return
|
|
150
|
-
set size(value) {
|
|
153
|
+
get size() { return this.#size_accessor_storage; }
|
|
154
|
+
set size(value) { this.#size_accessor_storage = value; }
|
|
151
155
|
toString() {
|
|
152
156
|
return `<MetadataEntry @ 0x${this.byteOffset.toString(16).padStart(8, '0')}>`;
|
|
153
157
|
}
|
|
154
158
|
constructor() {
|
|
155
159
|
super(...arguments);
|
|
156
|
-
_MetadataEntry_id_accessor_storage.set(this, __runInitializers(this, _id_initializers, void 0));
|
|
157
|
-
_MetadataEntry_offset__accessor_storage.set(this, (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _offset__initializers, void 0)));
|
|
158
|
-
_MetadataEntry_offset_accessor_storage.set(this, (__runInitializers(this, _offset__extraInitializers), __runInitializers(this, _offset_initializers, void 0)));
|
|
159
|
-
_MetadataEntry_size_accessor_storage.set(this, (__runInitializers(this, _offset_extraInitializers), __runInitializers(this, _size_initializers, void 0)));
|
|
160
160
|
__runInitializers(this, _size_extraInitializers);
|
|
161
161
|
}
|
|
162
162
|
};
|
|
163
|
-
_MetadataEntry_id_accessor_storage = new WeakMap();
|
|
164
|
-
_MetadataEntry_offset__accessor_storage = new WeakMap();
|
|
165
|
-
_MetadataEntry_offset_accessor_storage = new WeakMap();
|
|
166
|
-
_MetadataEntry_size_accessor_storage = new WeakMap();
|
|
167
|
-
__setFunctionName(_classThis, "MetadataEntry");
|
|
168
|
-
(() => {
|
|
169
|
-
var _a;
|
|
170
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create((_a = _classSuper[Symbol.metadata]) !== null && _a !== void 0 ? _a : null) : void 0;
|
|
171
|
-
_id_decorators = [(_a = t).uint32.bind(_a)];
|
|
172
|
-
_offset__decorators = [(_b = t).uint32.bind(_b)];
|
|
173
|
-
_offset_decorators = [(_c = t).uint32.bind(_c)];
|
|
174
|
-
_size_decorators = [(_d = t).uint32.bind(_d)];
|
|
175
|
-
__esDecorate(_classThis, null, _id_decorators, { kind: "accessor", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
|
|
176
|
-
__esDecorate(_classThis, null, _offset__decorators, { kind: "accessor", name: "offset_", static: false, private: false, access: { has: obj => "offset_" in obj, get: obj => obj.offset_, set: (obj, value) => { obj.offset_ = value; } }, metadata: _metadata }, _offset__initializers, _offset__extraInitializers);
|
|
177
|
-
__esDecorate(_classThis, null, _offset_decorators, { kind: "accessor", name: "offset", static: false, private: false, access: { has: obj => "offset" in obj, get: obj => obj.offset, set: (obj, value) => { obj.offset = value; } }, metadata: _metadata }, _offset_initializers, _offset_extraInitializers);
|
|
178
|
-
__esDecorate(_classThis, null, _size_decorators, { kind: "accessor", name: "size", static: false, private: false, access: { has: obj => "size" in obj, get: obj => obj.size, set: (obj, value) => { obj.size = value; } }, metadata: _metadata }, _size_initializers, _size_extraInitializers);
|
|
179
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
180
|
-
MetadataEntry = _classThis = _classDescriptor.value;
|
|
181
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
182
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
183
|
-
})();
|
|
184
163
|
return MetadataEntry = _classThis;
|
|
185
164
|
})();
|
|
186
165
|
/**
|
|
@@ -197,7 +176,6 @@ const max_lock_attempts = 5;
|
|
|
197
176
|
* This is done since IDs are not guaranteed to be sequential.
|
|
198
177
|
*/
|
|
199
178
|
let MetadataBlock = (() => {
|
|
200
|
-
var _MetadataBlock_checksum_accessor_storage, _MetadataBlock_timestamp_accessor_storage, _MetadataBlock_previous_offset_accessor_storage, _MetadataBlock_items_accessor_storage, _MetadataBlock_locked_accessor_storage;
|
|
201
179
|
var _a, _b, _c, _d;
|
|
202
180
|
let _classDecorators = [struct(packed)];
|
|
203
181
|
let _classDescriptor;
|
|
@@ -219,32 +197,54 @@ let MetadataBlock = (() => {
|
|
|
219
197
|
let _locked_decorators;
|
|
220
198
|
let _locked_initializers = [];
|
|
221
199
|
let _locked_extraInitializers = [];
|
|
222
|
-
var MetadataBlock =
|
|
200
|
+
var MetadataBlock = class extends _classSuper {
|
|
201
|
+
static { _classThis = this; }
|
|
202
|
+
static {
|
|
203
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
204
|
+
_checksum_decorators = [(_a = t).uint32.bind(_a)];
|
|
205
|
+
_timestamp_decorators = [(_b = t).uint64.bind(_b)];
|
|
206
|
+
_previous_offset_decorators = [(_c = t).uint32.bind(_c)];
|
|
207
|
+
_items_decorators = [field(MetadataEntry, { length: entries_per_block })];
|
|
208
|
+
_locked_decorators = [(_d = t).int32.bind(_d)];
|
|
209
|
+
__esDecorate(this, null, _checksum_decorators, { kind: "accessor", name: "checksum", static: false, private: false, access: { has: obj => "checksum" in obj, get: obj => obj.checksum, set: (obj, value) => { obj.checksum = value; } }, metadata: _metadata }, _checksum_initializers, _checksum_extraInitializers);
|
|
210
|
+
__esDecorate(this, null, _timestamp_decorators, { kind: "accessor", name: "timestamp", static: false, private: false, access: { has: obj => "timestamp" in obj, get: obj => obj.timestamp, set: (obj, value) => { obj.timestamp = value; } }, metadata: _metadata }, _timestamp_initializers, _timestamp_extraInitializers);
|
|
211
|
+
__esDecorate(this, null, _previous_offset_decorators, { kind: "accessor", name: "previous_offset", static: false, private: false, access: { has: obj => "previous_offset" in obj, get: obj => obj.previous_offset, set: (obj, value) => { obj.previous_offset = value; } }, metadata: _metadata }, _previous_offset_initializers, _previous_offset_extraInitializers);
|
|
212
|
+
__esDecorate(this, null, _items_decorators, { kind: "accessor", name: "items", static: false, private: false, access: { has: obj => "items" in obj, get: obj => obj.items, set: (obj, value) => { obj.items = value; } }, metadata: _metadata }, _items_initializers, _items_extraInitializers);
|
|
213
|
+
__esDecorate(this, null, _locked_decorators, { kind: "accessor", name: "locked", static: false, private: false, access: { has: obj => "locked" in obj, get: obj => obj.locked, set: (obj, value) => { obj.locked = value; } }, metadata: _metadata }, _locked_initializers, _locked_extraInitializers);
|
|
214
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
215
|
+
MetadataBlock = _classThis = _classDescriptor.value;
|
|
216
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
217
|
+
}
|
|
218
|
+
static name = 'MetadataBlock';
|
|
219
|
+
#checksum_accessor_storage = __runInitializers(this, _checksum_initializers, void 0);
|
|
223
220
|
/**
|
|
224
221
|
* The crc32c checksum for the metadata block.
|
|
225
222
|
* @privateRemarks Keep this first!
|
|
226
223
|
*/
|
|
227
|
-
get checksum() { return
|
|
228
|
-
set checksum(value) {
|
|
224
|
+
get checksum() { return this.#checksum_accessor_storage; }
|
|
225
|
+
set checksum(value) { this.#checksum_accessor_storage = value; }
|
|
226
|
+
#timestamp_accessor_storage = (__runInitializers(this, _checksum_extraInitializers), __runInitializers(this, _timestamp_initializers, BigInt(Date.now())));
|
|
229
227
|
/** The (last) time this metadata block was updated */
|
|
230
|
-
get timestamp() { return
|
|
231
|
-
set timestamp(value) {
|
|
228
|
+
get timestamp() { return this.#timestamp_accessor_storage; }
|
|
229
|
+
set timestamp(value) { this.#timestamp_accessor_storage = value; }
|
|
230
|
+
#previous_offset_accessor_storage = (__runInitializers(this, _timestamp_extraInitializers), __runInitializers(this, _previous_offset_initializers, void 0));
|
|
232
231
|
/** Offset to the previous metadata block */
|
|
233
|
-
get previous_offset() { return
|
|
234
|
-
set previous_offset(value) {
|
|
232
|
+
get previous_offset() { return this.#previous_offset_accessor_storage; }
|
|
233
|
+
set previous_offset(value) { this.#previous_offset_accessor_storage = value; }
|
|
234
|
+
_previous = __runInitializers(this, _previous_offset_extraInitializers);
|
|
235
235
|
get previous() {
|
|
236
|
-
var _a;
|
|
237
236
|
if (!this.previous_offset)
|
|
238
237
|
return;
|
|
239
|
-
|
|
238
|
+
this._previous ??= new MetadataBlock(this.buffer, this.previous_offset);
|
|
240
239
|
return this._previous;
|
|
241
240
|
}
|
|
242
241
|
get offsetHex() {
|
|
243
242
|
return '0x' + this.byteOffset.toString(16).padStart(8, '0');
|
|
244
243
|
}
|
|
244
|
+
#items_accessor_storage = __runInitializers(this, _items_initializers, void 0);
|
|
245
245
|
/** Metadata entries. */
|
|
246
|
-
get items() { return
|
|
247
|
-
set items(value) {
|
|
246
|
+
get items() { return this.#items_accessor_storage; }
|
|
247
|
+
set items(value) { this.#items_accessor_storage = value; }
|
|
248
248
|
toString(long = false) {
|
|
249
249
|
if (!long)
|
|
250
250
|
return `<MetadataBlock @ ${this.offsetHex}>`;
|
|
@@ -262,12 +262,13 @@ let MetadataBlock = (() => {
|
|
|
262
262
|
}
|
|
263
263
|
return text;
|
|
264
264
|
}
|
|
265
|
+
#locked_accessor_storage = (__runInitializers(this, _items_extraInitializers), __runInitializers(this, _locked_initializers, void 0));
|
|
265
266
|
/**
|
|
266
267
|
* If non-zero, this block is locked for writing.
|
|
267
268
|
* Note a int32 is used for `Atomics.wait`
|
|
268
269
|
*/
|
|
269
|
-
get locked() { return
|
|
270
|
-
set locked(value) {
|
|
270
|
+
get locked() { return this.#locked_accessor_storage; }
|
|
271
|
+
set locked(value) { this.#locked_accessor_storage = value; }
|
|
271
272
|
/**
|
|
272
273
|
* Wait for the block to be unlocked.
|
|
273
274
|
*/
|
|
@@ -301,54 +302,31 @@ let MetadataBlock = (() => {
|
|
|
301
302
|
}
|
|
302
303
|
constructor() {
|
|
303
304
|
super(...arguments);
|
|
304
|
-
_MetadataBlock_checksum_accessor_storage.set(this, __runInitializers(this, _checksum_initializers, void 0));
|
|
305
|
-
_MetadataBlock_timestamp_accessor_storage.set(this, (__runInitializers(this, _checksum_extraInitializers), __runInitializers(this, _timestamp_initializers, BigInt(Date.now()))));
|
|
306
|
-
_MetadataBlock_previous_offset_accessor_storage.set(this, (__runInitializers(this, _timestamp_extraInitializers), __runInitializers(this, _previous_offset_initializers, void 0)));
|
|
307
|
-
this._previous = __runInitializers(this, _previous_offset_extraInitializers);
|
|
308
|
-
_MetadataBlock_items_accessor_storage.set(this, __runInitializers(this, _items_initializers, void 0));
|
|
309
|
-
_MetadataBlock_locked_accessor_storage.set(this, (__runInitializers(this, _items_extraInitializers), __runInitializers(this, _locked_initializers, void 0)));
|
|
310
305
|
__runInitializers(this, _locked_extraInitializers);
|
|
311
306
|
}
|
|
307
|
+
static {
|
|
308
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
309
|
+
}
|
|
312
310
|
};
|
|
313
|
-
_MetadataBlock_checksum_accessor_storage = new WeakMap();
|
|
314
|
-
_MetadataBlock_timestamp_accessor_storage = new WeakMap();
|
|
315
|
-
_MetadataBlock_previous_offset_accessor_storage = new WeakMap();
|
|
316
|
-
_MetadataBlock_items_accessor_storage = new WeakMap();
|
|
317
|
-
_MetadataBlock_locked_accessor_storage = new WeakMap();
|
|
318
|
-
__setFunctionName(_classThis, "MetadataBlock");
|
|
319
|
-
(() => {
|
|
320
|
-
var _a;
|
|
321
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create((_a = _classSuper[Symbol.metadata]) !== null && _a !== void 0 ? _a : null) : void 0;
|
|
322
|
-
_checksum_decorators = [(_a = t).uint32.bind(_a)];
|
|
323
|
-
_timestamp_decorators = [(_b = t).uint64.bind(_b)];
|
|
324
|
-
_previous_offset_decorators = [(_c = t).uint32.bind(_c)];
|
|
325
|
-
_items_decorators = [field(MetadataEntry, { length: entries_per_block })];
|
|
326
|
-
_locked_decorators = [(_d = t).int32.bind(_d)];
|
|
327
|
-
__esDecorate(_classThis, null, _checksum_decorators, { kind: "accessor", name: "checksum", static: false, private: false, access: { has: obj => "checksum" in obj, get: obj => obj.checksum, set: (obj, value) => { obj.checksum = value; } }, metadata: _metadata }, _checksum_initializers, _checksum_extraInitializers);
|
|
328
|
-
__esDecorate(_classThis, null, _timestamp_decorators, { kind: "accessor", name: "timestamp", static: false, private: false, access: { has: obj => "timestamp" in obj, get: obj => obj.timestamp, set: (obj, value) => { obj.timestamp = value; } }, metadata: _metadata }, _timestamp_initializers, _timestamp_extraInitializers);
|
|
329
|
-
__esDecorate(_classThis, null, _previous_offset_decorators, { kind: "accessor", name: "previous_offset", static: false, private: false, access: { has: obj => "previous_offset" in obj, get: obj => obj.previous_offset, set: (obj, value) => { obj.previous_offset = value; } }, metadata: _metadata }, _previous_offset_initializers, _previous_offset_extraInitializers);
|
|
330
|
-
__esDecorate(_classThis, null, _items_decorators, { kind: "accessor", name: "items", static: false, private: false, access: { has: obj => "items" in obj, get: obj => obj.items, set: (obj, value) => { obj.items = value; } }, metadata: _metadata }, _items_initializers, _items_extraInitializers);
|
|
331
|
-
__esDecorate(_classThis, null, _locked_decorators, { kind: "accessor", name: "locked", static: false, private: false, access: { has: obj => "locked" in obj, get: obj => obj.locked, set: (obj, value) => { obj.locked = value; } }, metadata: _metadata }, _locked_initializers, _locked_extraInitializers);
|
|
332
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
333
|
-
MetadataBlock = _classThis = _classDescriptor.value;
|
|
334
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
335
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
336
|
-
})();
|
|
337
311
|
return MetadataBlock = _classThis;
|
|
338
312
|
})();
|
|
339
313
|
export { MetadataBlock };
|
|
340
314
|
const sb_magic = 0x62732e7a; // 'z.sb'
|
|
315
|
+
/**
|
|
316
|
+
* Shortcut for minor perf. bump
|
|
317
|
+
* @internal
|
|
318
|
+
*/
|
|
319
|
+
const usedBytes = 2;
|
|
341
320
|
/**
|
|
342
321
|
* The super block structure for a single-buffer file system
|
|
343
322
|
*/
|
|
344
323
|
let SuperBlock = (() => {
|
|
345
|
-
var _SuperBlock_checksum_accessor_storage, _SuperBlock_magic_accessor_storage, _SuperBlock_version_accessor_storage, _SuperBlock_inode_format_accessor_storage, _SuperBlock_flags_accessor_storage, _SuperBlock_used_bytes_accessor_storage, _SuperBlock_total_bytes_accessor_storage, _SuperBlock_uuid_accessor_storage, _SuperBlock_metadata_block_size_accessor_storage, _SuperBlock_metadata_offset__accessor_storage, _SuperBlock_metadata_offset_accessor_storage, _SuperBlock_label_accessor_storage, _SuperBlock__padding_accessor_storage;
|
|
346
324
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
347
325
|
let _classDecorators = [struct(packed)];
|
|
348
326
|
let _classDescriptor;
|
|
349
327
|
let _classExtraInitializers = [];
|
|
350
328
|
let _classThis;
|
|
351
|
-
let _classSuper =
|
|
329
|
+
let _classSuper = BigUint64Array;
|
|
352
330
|
let _checksum_decorators;
|
|
353
331
|
let _checksum_initializers = [];
|
|
354
332
|
let _checksum_extraInitializers = [];
|
|
@@ -388,23 +366,43 @@ let SuperBlock = (() => {
|
|
|
388
366
|
let __padding_decorators;
|
|
389
367
|
let __padding_initializers = [];
|
|
390
368
|
let __padding_extraInitializers = [];
|
|
391
|
-
var SuperBlock =
|
|
369
|
+
var SuperBlock = class extends _classSuper {
|
|
370
|
+
static { _classThis = this; }
|
|
371
|
+
static {
|
|
372
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
373
|
+
_checksum_decorators = [(_a = t).uint32.bind(_a)];
|
|
374
|
+
_magic_decorators = [(_b = t).uint32.bind(_b)];
|
|
375
|
+
_version_decorators = [(_c = t).uint16.bind(_c)];
|
|
376
|
+
_inode_format_decorators = [(_d = t).uint16.bind(_d)];
|
|
377
|
+
_flags_decorators = [(_e = t).uint32.bind(_e)];
|
|
378
|
+
_used_bytes_decorators = [(_f = t).uint64.bind(_f)];
|
|
379
|
+
_total_bytes_decorators = [(_g = t).uint64.bind(_g)];
|
|
380
|
+
_uuid_decorators = [t.uint8(16)];
|
|
381
|
+
_metadata_block_size_decorators = [(_h = t).uint32.bind(_h)];
|
|
382
|
+
_metadata_offset__decorators = [(_j = t).uint32.bind(_j)];
|
|
383
|
+
_metadata_offset_decorators = [(_k = t).uint32.bind(_k)];
|
|
384
|
+
_label_decorators = [t.char(64)];
|
|
385
|
+
__padding_decorators = [t.char(132)];
|
|
386
|
+
__esDecorate(this, null, _checksum_decorators, { kind: "accessor", name: "checksum", static: false, private: false, access: { has: obj => "checksum" in obj, get: obj => obj.checksum, set: (obj, value) => { obj.checksum = value; } }, metadata: _metadata }, _checksum_initializers, _checksum_extraInitializers);
|
|
387
|
+
__esDecorate(this, null, _magic_decorators, { kind: "accessor", name: "magic", static: false, private: false, access: { has: obj => "magic" in obj, get: obj => obj.magic, set: (obj, value) => { obj.magic = value; } }, metadata: _metadata }, _magic_initializers, _magic_extraInitializers);
|
|
388
|
+
__esDecorate(this, null, _version_decorators, { kind: "accessor", name: "version", static: false, private: false, access: { has: obj => "version" in obj, get: obj => obj.version, set: (obj, value) => { obj.version = value; } }, metadata: _metadata }, _version_initializers, _version_extraInitializers);
|
|
389
|
+
__esDecorate(this, null, _inode_format_decorators, { kind: "accessor", name: "inode_format", static: false, private: false, access: { has: obj => "inode_format" in obj, get: obj => obj.inode_format, set: (obj, value) => { obj.inode_format = value; } }, metadata: _metadata }, _inode_format_initializers, _inode_format_extraInitializers);
|
|
390
|
+
__esDecorate(this, null, _flags_decorators, { kind: "accessor", name: "flags", static: false, private: false, access: { has: obj => "flags" in obj, get: obj => obj.flags, set: (obj, value) => { obj.flags = value; } }, metadata: _metadata }, _flags_initializers, _flags_extraInitializers);
|
|
391
|
+
__esDecorate(this, null, _used_bytes_decorators, { kind: "accessor", name: "used_bytes", static: false, private: false, access: { has: obj => "used_bytes" in obj, get: obj => obj.used_bytes, set: (obj, value) => { obj.used_bytes = value; } }, metadata: _metadata }, _used_bytes_initializers, _used_bytes_extraInitializers);
|
|
392
|
+
__esDecorate(this, null, _total_bytes_decorators, { kind: "accessor", name: "total_bytes", static: false, private: false, access: { has: obj => "total_bytes" in obj, get: obj => obj.total_bytes, set: (obj, value) => { obj.total_bytes = value; } }, metadata: _metadata }, _total_bytes_initializers, _total_bytes_extraInitializers);
|
|
393
|
+
__esDecorate(this, null, _uuid_decorators, { kind: "accessor", name: "uuid", static: false, private: false, access: { has: obj => "uuid" in obj, get: obj => obj.uuid, set: (obj, value) => { obj.uuid = value; } }, metadata: _metadata }, _uuid_initializers, _uuid_extraInitializers);
|
|
394
|
+
__esDecorate(this, null, _metadata_block_size_decorators, { kind: "accessor", name: "metadata_block_size", static: false, private: false, access: { has: obj => "metadata_block_size" in obj, get: obj => obj.metadata_block_size, set: (obj, value) => { obj.metadata_block_size = value; } }, metadata: _metadata }, _metadata_block_size_initializers, _metadata_block_size_extraInitializers);
|
|
395
|
+
__esDecorate(this, null, _metadata_offset__decorators, { kind: "accessor", name: "metadata_offset_", static: false, private: false, access: { has: obj => "metadata_offset_" in obj, get: obj => obj.metadata_offset_, set: (obj, value) => { obj.metadata_offset_ = value; } }, metadata: _metadata }, _metadata_offset__initializers, _metadata_offset__extraInitializers);
|
|
396
|
+
__esDecorate(this, null, _metadata_offset_decorators, { kind: "accessor", name: "metadata_offset", static: false, private: false, access: { has: obj => "metadata_offset" in obj, get: obj => obj.metadata_offset, set: (obj, value) => { obj.metadata_offset = value; } }, metadata: _metadata }, _metadata_offset_initializers, _metadata_offset_extraInitializers);
|
|
397
|
+
__esDecorate(this, null, _label_decorators, { kind: "accessor", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
|
|
398
|
+
__esDecorate(this, null, __padding_decorators, { kind: "accessor", name: "_padding", static: false, private: false, access: { has: obj => "_padding" in obj, get: obj => obj._padding, set: (obj, value) => { obj._padding = value; } }, metadata: _metadata }, __padding_initializers, __padding_extraInitializers);
|
|
399
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
400
|
+
SuperBlock = _classThis = _classDescriptor.value;
|
|
401
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
402
|
+
}
|
|
403
|
+
static name = 'SuperBlock';
|
|
392
404
|
constructor(...args) {
|
|
393
405
|
super(...args);
|
|
394
|
-
_SuperBlock_checksum_accessor_storage.set(this, __runInitializers(this, _checksum_initializers, void 0));
|
|
395
|
-
_SuperBlock_magic_accessor_storage.set(this, (__runInitializers(this, _checksum_extraInitializers), __runInitializers(this, _magic_initializers, void 0)));
|
|
396
|
-
_SuperBlock_version_accessor_storage.set(this, (__runInitializers(this, _magic_extraInitializers), __runInitializers(this, _version_initializers, void 0)));
|
|
397
|
-
_SuperBlock_inode_format_accessor_storage.set(this, (__runInitializers(this, _version_extraInitializers), __runInitializers(this, _inode_format_initializers, void 0)));
|
|
398
|
-
_SuperBlock_flags_accessor_storage.set(this, (__runInitializers(this, _inode_format_extraInitializers), __runInitializers(this, _flags_initializers, void 0)));
|
|
399
|
-
_SuperBlock_used_bytes_accessor_storage.set(this, (__runInitializers(this, _flags_extraInitializers), __runInitializers(this, _used_bytes_initializers, void 0)));
|
|
400
|
-
_SuperBlock_total_bytes_accessor_storage.set(this, (__runInitializers(this, _used_bytes_extraInitializers), __runInitializers(this, _total_bytes_initializers, void 0)));
|
|
401
|
-
_SuperBlock_uuid_accessor_storage.set(this, (__runInitializers(this, _total_bytes_extraInitializers), __runInitializers(this, _uuid_initializers, void 0)));
|
|
402
|
-
_SuperBlock_metadata_block_size_accessor_storage.set(this, (__runInitializers(this, _uuid_extraInitializers), __runInitializers(this, _metadata_block_size_initializers, void 0)));
|
|
403
|
-
_SuperBlock_metadata_offset__accessor_storage.set(this, (__runInitializers(this, _metadata_block_size_extraInitializers), __runInitializers(this, _metadata_offset__initializers, void 0)));
|
|
404
|
-
_SuperBlock_metadata_offset_accessor_storage.set(this, (__runInitializers(this, _metadata_offset__extraInitializers), __runInitializers(this, _metadata_offset_initializers, void 0)));
|
|
405
|
-
this.metadata = __runInitializers(this, _metadata_offset_extraInitializers);
|
|
406
|
-
_SuperBlock_label_accessor_storage.set(this, __runInitializers(this, _label_initializers, void 0));
|
|
407
|
-
_SuperBlock__padding_accessor_storage.set(this, (__runInitializers(this, _label_extraInitializers), __runInitializers(this, __padding_initializers, void 0)));
|
|
408
406
|
__runInitializers(this, __padding_extraInitializers);
|
|
409
407
|
if (this.magic != sb_magic) {
|
|
410
408
|
warn('sbfs: Invalid magic value, assuming this is a fresh super block');
|
|
@@ -434,51 +432,65 @@ let SuperBlock = (() => {
|
|
|
434
432
|
if (this.metadata_block_size != sizeof(MetadataBlock))
|
|
435
433
|
throw crit(withErrno('EIO', 'sbfs: metadata block size mismatch'));
|
|
436
434
|
}
|
|
435
|
+
#checksum_accessor_storage = __runInitializers(this, _checksum_initializers, void 0);
|
|
437
436
|
/**
|
|
438
437
|
* The crc32c checksum for the super block.
|
|
439
438
|
* @privateRemarks Keep this first!
|
|
440
439
|
*/
|
|
441
|
-
get checksum() { return
|
|
442
|
-
set checksum(value) {
|
|
440
|
+
get checksum() { return this.#checksum_accessor_storage; }
|
|
441
|
+
set checksum(value) { this.#checksum_accessor_storage = value; }
|
|
442
|
+
#magic_accessor_storage = (__runInitializers(this, _checksum_extraInitializers), __runInitializers(this, _magic_initializers, void 0));
|
|
443
443
|
/** Signature for the superblock. */
|
|
444
|
-
get magic() { return
|
|
445
|
-
set magic(value) {
|
|
444
|
+
get magic() { return this.#magic_accessor_storage; }
|
|
445
|
+
set magic(value) { this.#magic_accessor_storage = value; }
|
|
446
|
+
#version_accessor_storage = (__runInitializers(this, _magic_extraInitializers), __runInitializers(this, _version_initializers, void 0));
|
|
446
447
|
/** The version of the on-disk format */
|
|
447
|
-
get version() { return
|
|
448
|
-
set version(value) {
|
|
448
|
+
get version() { return this.#version_accessor_storage; }
|
|
449
|
+
set version(value) { this.#version_accessor_storage = value; }
|
|
450
|
+
#inode_format_accessor_storage = (__runInitializers(this, _version_extraInitializers), __runInitializers(this, _inode_format_initializers, void 0));
|
|
449
451
|
/** Which format of `Inode` is used */
|
|
450
|
-
get inode_format() { return
|
|
451
|
-
set inode_format(value) {
|
|
452
|
+
get inode_format() { return this.#inode_format_accessor_storage; }
|
|
453
|
+
set inode_format(value) { this.#inode_format_accessor_storage = value; }
|
|
454
|
+
#flags_accessor_storage = (__runInitializers(this, _inode_format_extraInitializers), __runInitializers(this, _flags_initializers, void 0));
|
|
452
455
|
/** Flags for the file system. Currently unused */
|
|
453
|
-
get flags() { return
|
|
454
|
-
set flags(value) {
|
|
456
|
+
get flags() { return this.#flags_accessor_storage; }
|
|
457
|
+
set flags(value) { this.#flags_accessor_storage = value; }
|
|
458
|
+
#used_bytes_accessor_storage = (__runInitializers(this, _flags_extraInitializers), __runInitializers(this, _used_bytes_initializers, void 0));
|
|
455
459
|
/** The number of used bytes, including the super block and metadata */
|
|
456
|
-
get used_bytes() { return
|
|
457
|
-
set used_bytes(value) {
|
|
460
|
+
get used_bytes() { return this.#used_bytes_accessor_storage; }
|
|
461
|
+
set used_bytes(value) { this.#used_bytes_accessor_storage = value; }
|
|
462
|
+
#total_bytes_accessor_storage = (__runInitializers(this, _used_bytes_extraInitializers), __runInitializers(this, _total_bytes_initializers, void 0));
|
|
458
463
|
/** The total size of the entire file system, including the super block and metadata */
|
|
459
|
-
get total_bytes() { return
|
|
460
|
-
set total_bytes(value) {
|
|
464
|
+
get total_bytes() { return this.#total_bytes_accessor_storage; }
|
|
465
|
+
set total_bytes(value) { this.#total_bytes_accessor_storage = value; }
|
|
466
|
+
#uuid_accessor_storage = (__runInitializers(this, _total_bytes_extraInitializers), __runInitializers(this, _uuid_initializers, void 0));
|
|
461
467
|
/** A UUID for this file system */
|
|
462
|
-
get uuid() { return
|
|
463
|
-
set uuid(value) {
|
|
468
|
+
get uuid() { return this.#uuid_accessor_storage; }
|
|
469
|
+
set uuid(value) { this.#uuid_accessor_storage = value; }
|
|
470
|
+
#metadata_block_size_accessor_storage = (__runInitializers(this, _uuid_extraInitializers), __runInitializers(this, _metadata_block_size_initializers, void 0));
|
|
464
471
|
/**
|
|
465
472
|
* The size in bytes of a metadata block.
|
|
466
473
|
* Not currently configurable.
|
|
467
474
|
*/
|
|
468
|
-
get metadata_block_size() { return
|
|
469
|
-
set metadata_block_size(value) {
|
|
475
|
+
get metadata_block_size() { return this.#metadata_block_size_accessor_storage; }
|
|
476
|
+
set metadata_block_size(value) { this.#metadata_block_size_accessor_storage = value; }
|
|
477
|
+
#metadata_offset__accessor_storage = (__runInitializers(this, _metadata_block_size_extraInitializers), __runInitializers(this, _metadata_offset__initializers, void 0));
|
|
470
478
|
/** Reserved for 64-bit offset expansion */
|
|
471
|
-
get metadata_offset_() { return
|
|
472
|
-
set metadata_offset_(value) {
|
|
479
|
+
get metadata_offset_() { return this.#metadata_offset__accessor_storage; }
|
|
480
|
+
set metadata_offset_(value) { this.#metadata_offset__accessor_storage = value; }
|
|
481
|
+
#metadata_offset_accessor_storage = (__runInitializers(this, _metadata_offset__extraInitializers), __runInitializers(this, _metadata_offset_initializers, void 0));
|
|
473
482
|
/** Offset of the current metadata block */
|
|
474
|
-
get metadata_offset() { return
|
|
475
|
-
set metadata_offset(value) {
|
|
483
|
+
get metadata_offset() { return this.#metadata_offset_accessor_storage; }
|
|
484
|
+
set metadata_offset(value) { this.#metadata_offset_accessor_storage = value; }
|
|
485
|
+
metadata = __runInitializers(this, _metadata_offset_extraInitializers);
|
|
486
|
+
#label_accessor_storage = __runInitializers(this, _label_initializers, void 0);
|
|
476
487
|
/** An optional label for the file system */
|
|
477
|
-
get label() { return
|
|
478
|
-
set label(value) {
|
|
488
|
+
get label() { return this.#label_accessor_storage; }
|
|
489
|
+
set label(value) { this.#label_accessor_storage = value; }
|
|
490
|
+
#_padding_accessor_storage = (__runInitializers(this, _label_extraInitializers), __runInitializers(this, __padding_initializers, void 0));
|
|
479
491
|
/** Padded to 256 bytes */
|
|
480
|
-
get _padding() { return
|
|
481
|
-
set _padding(value) {
|
|
492
|
+
get _padding() { return this.#_padding_accessor_storage; }
|
|
493
|
+
set _padding(value) { this.#_padding_accessor_storage = value; }
|
|
482
494
|
/**
|
|
483
495
|
* Rotate out the current metadata block.
|
|
484
496
|
* Allocates a new metadata block, moves the current one to backup,
|
|
@@ -486,13 +498,14 @@ let SuperBlock = (() => {
|
|
|
486
498
|
* @returns the new metadata block
|
|
487
499
|
*/
|
|
488
500
|
rotateMetadata() {
|
|
489
|
-
|
|
490
|
-
|
|
501
|
+
const padding = this.used_bytes % BigInt(4);
|
|
502
|
+
Atomics.add(this, usedBytes, padding);
|
|
503
|
+
const offset = Number(Atomics.add(this, usedBytes, BigInt(sizeof(MetadataBlock))));
|
|
504
|
+
const metadata = new MetadataBlock(this.buffer, offset);
|
|
491
505
|
metadata.previous_offset = this.metadata_offset;
|
|
492
506
|
this.metadata = metadata;
|
|
493
507
|
this.metadata_offset = metadata.byteOffset;
|
|
494
508
|
_update(metadata);
|
|
495
|
-
this.used_bytes += BigInt(sizeof(MetadataBlock));
|
|
496
509
|
_update(this);
|
|
497
510
|
return metadata;
|
|
498
511
|
}
|
|
@@ -520,55 +533,10 @@ let SuperBlock = (() => {
|
|
|
520
533
|
}
|
|
521
534
|
return true;
|
|
522
535
|
}
|
|
536
|
+
static {
|
|
537
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
538
|
+
}
|
|
523
539
|
};
|
|
524
|
-
_SuperBlock_checksum_accessor_storage = new WeakMap();
|
|
525
|
-
_SuperBlock_magic_accessor_storage = new WeakMap();
|
|
526
|
-
_SuperBlock_version_accessor_storage = new WeakMap();
|
|
527
|
-
_SuperBlock_inode_format_accessor_storage = new WeakMap();
|
|
528
|
-
_SuperBlock_flags_accessor_storage = new WeakMap();
|
|
529
|
-
_SuperBlock_used_bytes_accessor_storage = new WeakMap();
|
|
530
|
-
_SuperBlock_total_bytes_accessor_storage = new WeakMap();
|
|
531
|
-
_SuperBlock_uuid_accessor_storage = new WeakMap();
|
|
532
|
-
_SuperBlock_metadata_block_size_accessor_storage = new WeakMap();
|
|
533
|
-
_SuperBlock_metadata_offset__accessor_storage = new WeakMap();
|
|
534
|
-
_SuperBlock_metadata_offset_accessor_storage = new WeakMap();
|
|
535
|
-
_SuperBlock_label_accessor_storage = new WeakMap();
|
|
536
|
-
_SuperBlock__padding_accessor_storage = new WeakMap();
|
|
537
|
-
__setFunctionName(_classThis, "SuperBlock");
|
|
538
|
-
(() => {
|
|
539
|
-
var _a;
|
|
540
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create((_a = _classSuper[Symbol.metadata]) !== null && _a !== void 0 ? _a : null) : void 0;
|
|
541
|
-
_checksum_decorators = [(_a = t).uint32.bind(_a)];
|
|
542
|
-
_magic_decorators = [(_b = t).uint32.bind(_b)];
|
|
543
|
-
_version_decorators = [(_c = t).uint16.bind(_c)];
|
|
544
|
-
_inode_format_decorators = [(_d = t).uint16.bind(_d)];
|
|
545
|
-
_flags_decorators = [(_e = t).uint32.bind(_e)];
|
|
546
|
-
_used_bytes_decorators = [(_f = t).uint64.bind(_f)];
|
|
547
|
-
_total_bytes_decorators = [(_g = t).uint64.bind(_g)];
|
|
548
|
-
_uuid_decorators = [t.uint8(16)];
|
|
549
|
-
_metadata_block_size_decorators = [(_h = t).uint32.bind(_h)];
|
|
550
|
-
_metadata_offset__decorators = [(_j = t).uint32.bind(_j)];
|
|
551
|
-
_metadata_offset_decorators = [(_k = t).uint32.bind(_k)];
|
|
552
|
-
_label_decorators = [t.char(64)];
|
|
553
|
-
__padding_decorators = [t.char(132)];
|
|
554
|
-
__esDecorate(_classThis, null, _checksum_decorators, { kind: "accessor", name: "checksum", static: false, private: false, access: { has: obj => "checksum" in obj, get: obj => obj.checksum, set: (obj, value) => { obj.checksum = value; } }, metadata: _metadata }, _checksum_initializers, _checksum_extraInitializers);
|
|
555
|
-
__esDecorate(_classThis, null, _magic_decorators, { kind: "accessor", name: "magic", static: false, private: false, access: { has: obj => "magic" in obj, get: obj => obj.magic, set: (obj, value) => { obj.magic = value; } }, metadata: _metadata }, _magic_initializers, _magic_extraInitializers);
|
|
556
|
-
__esDecorate(_classThis, null, _version_decorators, { kind: "accessor", name: "version", static: false, private: false, access: { has: obj => "version" in obj, get: obj => obj.version, set: (obj, value) => { obj.version = value; } }, metadata: _metadata }, _version_initializers, _version_extraInitializers);
|
|
557
|
-
__esDecorate(_classThis, null, _inode_format_decorators, { kind: "accessor", name: "inode_format", static: false, private: false, access: { has: obj => "inode_format" in obj, get: obj => obj.inode_format, set: (obj, value) => { obj.inode_format = value; } }, metadata: _metadata }, _inode_format_initializers, _inode_format_extraInitializers);
|
|
558
|
-
__esDecorate(_classThis, null, _flags_decorators, { kind: "accessor", name: "flags", static: false, private: false, access: { has: obj => "flags" in obj, get: obj => obj.flags, set: (obj, value) => { obj.flags = value; } }, metadata: _metadata }, _flags_initializers, _flags_extraInitializers);
|
|
559
|
-
__esDecorate(_classThis, null, _used_bytes_decorators, { kind: "accessor", name: "used_bytes", static: false, private: false, access: { has: obj => "used_bytes" in obj, get: obj => obj.used_bytes, set: (obj, value) => { obj.used_bytes = value; } }, metadata: _metadata }, _used_bytes_initializers, _used_bytes_extraInitializers);
|
|
560
|
-
__esDecorate(_classThis, null, _total_bytes_decorators, { kind: "accessor", name: "total_bytes", static: false, private: false, access: { has: obj => "total_bytes" in obj, get: obj => obj.total_bytes, set: (obj, value) => { obj.total_bytes = value; } }, metadata: _metadata }, _total_bytes_initializers, _total_bytes_extraInitializers);
|
|
561
|
-
__esDecorate(_classThis, null, _uuid_decorators, { kind: "accessor", name: "uuid", static: false, private: false, access: { has: obj => "uuid" in obj, get: obj => obj.uuid, set: (obj, value) => { obj.uuid = value; } }, metadata: _metadata }, _uuid_initializers, _uuid_extraInitializers);
|
|
562
|
-
__esDecorate(_classThis, null, _metadata_block_size_decorators, { kind: "accessor", name: "metadata_block_size", static: false, private: false, access: { has: obj => "metadata_block_size" in obj, get: obj => obj.metadata_block_size, set: (obj, value) => { obj.metadata_block_size = value; } }, metadata: _metadata }, _metadata_block_size_initializers, _metadata_block_size_extraInitializers);
|
|
563
|
-
__esDecorate(_classThis, null, _metadata_offset__decorators, { kind: "accessor", name: "metadata_offset_", static: false, private: false, access: { has: obj => "metadata_offset_" in obj, get: obj => obj.metadata_offset_, set: (obj, value) => { obj.metadata_offset_ = value; } }, metadata: _metadata }, _metadata_offset__initializers, _metadata_offset__extraInitializers);
|
|
564
|
-
__esDecorate(_classThis, null, _metadata_offset_decorators, { kind: "accessor", name: "metadata_offset", static: false, private: false, access: { has: obj => "metadata_offset" in obj, get: obj => obj.metadata_offset, set: (obj, value) => { obj.metadata_offset = value; } }, metadata: _metadata }, _metadata_offset_initializers, _metadata_offset_extraInitializers);
|
|
565
|
-
__esDecorate(_classThis, null, _label_decorators, { kind: "accessor", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
|
|
566
|
-
__esDecorate(_classThis, null, __padding_decorators, { kind: "accessor", name: "_padding", static: false, private: false, access: { has: obj => "_padding" in obj, get: obj => obj._padding, set: (obj, value) => { obj._padding = value; } }, metadata: _metadata }, __padding_initializers, __padding_extraInitializers);
|
|
567
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
568
|
-
SuperBlock = _classThis = _classDescriptor.value;
|
|
569
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
570
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
571
|
-
})();
|
|
572
540
|
return SuperBlock = _classThis;
|
|
573
541
|
})();
|
|
574
542
|
export { SuperBlock };
|
|
@@ -593,14 +561,20 @@ function _update(value) {
|
|
|
593
561
|
* @category Stores and Transactions
|
|
594
562
|
*/
|
|
595
563
|
export class SingleBufferStore extends BufferView {
|
|
564
|
+
flags = [];
|
|
565
|
+
name = 'sbfs';
|
|
566
|
+
type = 0x73626673; // 'sbfs'
|
|
596
567
|
get uuid() {
|
|
597
568
|
return decodeUUID(this.superblock.uuid);
|
|
598
569
|
}
|
|
570
|
+
superblock;
|
|
571
|
+
/**
|
|
572
|
+
* @internal @hidden
|
|
573
|
+
*/
|
|
574
|
+
_view;
|
|
575
|
+
_u8;
|
|
599
576
|
constructor(...args) {
|
|
600
577
|
super(...args);
|
|
601
|
-
this.flags = [];
|
|
602
|
-
this.name = 'sbfs';
|
|
603
|
-
this.type = 0x73626673; // 'sbfs'
|
|
604
578
|
if (this.byteLength < sizeof(SuperBlock) + sizeof(MetadataBlock))
|
|
605
579
|
throw crit(withErrno('EINVAL', 'sbfs: Buffer is too small for a file system'));
|
|
606
580
|
this._view = new DataView(this.buffer, this.byteOffset, this.byteLength);
|
|
@@ -653,11 +627,10 @@ export class SingleBufferStore extends BufferView {
|
|
|
653
627
|
_update(block);
|
|
654
628
|
return;
|
|
655
629
|
}
|
|
656
|
-
entry.offset = Number(this.superblock.
|
|
630
|
+
entry.offset = Number(Atomics.add(this.superblock, usedBytes, BigInt(data.length)));
|
|
657
631
|
entry.size = data.length;
|
|
658
632
|
this._u8.set(data, entry.offset);
|
|
659
633
|
_update(block);
|
|
660
|
-
this.superblock.used_bytes += BigInt(data.length);
|
|
661
634
|
_update(this.superblock);
|
|
662
635
|
return;
|
|
663
636
|
}
|
|
@@ -676,12 +649,11 @@ export class SingleBufferStore extends BufferView {
|
|
|
676
649
|
entry = this.superblock.metadata.items[0];
|
|
677
650
|
}
|
|
678
651
|
const lock = __addDisposableResource(env_1, this.superblock.metadata.lock(), false);
|
|
679
|
-
const offset = Number(this.superblock.
|
|
652
|
+
const offset = Number(Atomics.add(this.superblock, usedBytes, BigInt(data.length)));
|
|
680
653
|
entry.id = id;
|
|
681
654
|
entry.offset = offset;
|
|
682
655
|
entry.size = data.length;
|
|
683
656
|
this._u8.set(data, offset);
|
|
684
|
-
this.superblock.used_bytes += BigInt(data.length);
|
|
685
657
|
_update(this.superblock.metadata);
|
|
686
658
|
_update(this.superblock);
|
|
687
659
|
}
|
|
@@ -707,12 +679,13 @@ export class SingleBufferStore extends BufferView {
|
|
|
707
679
|
}
|
|
708
680
|
}
|
|
709
681
|
}
|
|
682
|
+
_fs;
|
|
710
683
|
get fs() {
|
|
711
684
|
return this._fs;
|
|
712
685
|
}
|
|
713
686
|
set fs(fs) {
|
|
714
687
|
if (this.buffer.constructor.name === 'SharedArrayBuffer')
|
|
715
|
-
fs
|
|
688
|
+
fs?.attributes.set('no_id_tables', true);
|
|
716
689
|
this._fs = fs;
|
|
717
690
|
}
|
|
718
691
|
sync() {
|