@zenfs/core 2.2.3 → 2.3.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/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 +2 -2
- package/dist/backends/single_buffer.js +165 -198
- 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.js +144 -187
- 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.js +44 -68
- 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 +2 -2
- package/scripts/test.js +16 -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,9 +176,8 @@ 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
|
-
let _classDecorators = [struct(packed)];
|
|
180
|
+
let _classDecorators = [struct(packed, { name: 'MetadataBlock' })];
|
|
203
181
|
let _classDescriptor;
|
|
204
182
|
let _classExtraInitializers = [];
|
|
205
183
|
let _classThis;
|
|
@@ -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
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
218
|
+
}
|
|
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,28 @@ 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
|
}
|
|
312
307
|
};
|
|
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
308
|
return MetadataBlock = _classThis;
|
|
338
309
|
})();
|
|
339
310
|
export { MetadataBlock };
|
|
340
311
|
const sb_magic = 0x62732e7a; // 'z.sb'
|
|
312
|
+
/**
|
|
313
|
+
* Shortcut for minor perf. bump
|
|
314
|
+
* @internal
|
|
315
|
+
*/
|
|
316
|
+
const usedBytes = 2;
|
|
341
317
|
/**
|
|
342
318
|
* The super block structure for a single-buffer file system
|
|
343
319
|
*/
|
|
344
320
|
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
321
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
347
|
-
let _classDecorators = [struct(packed)];
|
|
322
|
+
let _classDecorators = [struct(packed, { name: 'SuperBlock' })];
|
|
348
323
|
let _classDescriptor;
|
|
349
324
|
let _classExtraInitializers = [];
|
|
350
325
|
let _classThis;
|
|
351
|
-
let _classSuper =
|
|
326
|
+
let _classSuper = BigUint64Array;
|
|
352
327
|
let _checksum_decorators;
|
|
353
328
|
let _checksum_initializers = [];
|
|
354
329
|
let _checksum_extraInitializers = [];
|
|
@@ -388,23 +363,43 @@ let SuperBlock = (() => {
|
|
|
388
363
|
let __padding_decorators;
|
|
389
364
|
let __padding_initializers = [];
|
|
390
365
|
let __padding_extraInitializers = [];
|
|
391
|
-
var SuperBlock =
|
|
366
|
+
var SuperBlock = class extends _classSuper {
|
|
367
|
+
static { _classThis = this; }
|
|
368
|
+
static {
|
|
369
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
370
|
+
_checksum_decorators = [(_a = t).uint32.bind(_a)];
|
|
371
|
+
_magic_decorators = [(_b = t).uint32.bind(_b)];
|
|
372
|
+
_version_decorators = [(_c = t).uint16.bind(_c)];
|
|
373
|
+
_inode_format_decorators = [(_d = t).uint16.bind(_d)];
|
|
374
|
+
_flags_decorators = [(_e = t).uint32.bind(_e)];
|
|
375
|
+
_used_bytes_decorators = [(_f = t).uint64.bind(_f)];
|
|
376
|
+
_total_bytes_decorators = [(_g = t).uint64.bind(_g)];
|
|
377
|
+
_uuid_decorators = [t.uint8(16)];
|
|
378
|
+
_metadata_block_size_decorators = [(_h = t).uint32.bind(_h)];
|
|
379
|
+
_metadata_offset__decorators = [(_j = t).uint32.bind(_j)];
|
|
380
|
+
_metadata_offset_decorators = [(_k = t).uint32.bind(_k)];
|
|
381
|
+
_label_decorators = [t.char(64)];
|
|
382
|
+
__padding_decorators = [t.char(132)];
|
|
383
|
+
__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);
|
|
384
|
+
__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);
|
|
385
|
+
__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);
|
|
386
|
+
__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);
|
|
387
|
+
__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);
|
|
388
|
+
__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);
|
|
389
|
+
__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);
|
|
390
|
+
__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);
|
|
391
|
+
__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);
|
|
392
|
+
__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);
|
|
393
|
+
__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);
|
|
394
|
+
__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);
|
|
395
|
+
__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);
|
|
396
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
397
|
+
SuperBlock = _classThis = _classDescriptor.value;
|
|
398
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
399
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
400
|
+
}
|
|
392
401
|
constructor(...args) {
|
|
393
402
|
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
403
|
__runInitializers(this, __padding_extraInitializers);
|
|
409
404
|
if (this.magic != sb_magic) {
|
|
410
405
|
warn('sbfs: Invalid magic value, assuming this is a fresh super block');
|
|
@@ -434,51 +429,65 @@ let SuperBlock = (() => {
|
|
|
434
429
|
if (this.metadata_block_size != sizeof(MetadataBlock))
|
|
435
430
|
throw crit(withErrno('EIO', 'sbfs: metadata block size mismatch'));
|
|
436
431
|
}
|
|
432
|
+
#checksum_accessor_storage = __runInitializers(this, _checksum_initializers, void 0);
|
|
437
433
|
/**
|
|
438
434
|
* The crc32c checksum for the super block.
|
|
439
435
|
* @privateRemarks Keep this first!
|
|
440
436
|
*/
|
|
441
|
-
get checksum() { return
|
|
442
|
-
set checksum(value) {
|
|
437
|
+
get checksum() { return this.#checksum_accessor_storage; }
|
|
438
|
+
set checksum(value) { this.#checksum_accessor_storage = value; }
|
|
439
|
+
#magic_accessor_storage = (__runInitializers(this, _checksum_extraInitializers), __runInitializers(this, _magic_initializers, void 0));
|
|
443
440
|
/** Signature for the superblock. */
|
|
444
|
-
get magic() { return
|
|
445
|
-
set magic(value) {
|
|
441
|
+
get magic() { return this.#magic_accessor_storage; }
|
|
442
|
+
set magic(value) { this.#magic_accessor_storage = value; }
|
|
443
|
+
#version_accessor_storage = (__runInitializers(this, _magic_extraInitializers), __runInitializers(this, _version_initializers, void 0));
|
|
446
444
|
/** The version of the on-disk format */
|
|
447
|
-
get version() { return
|
|
448
|
-
set version(value) {
|
|
445
|
+
get version() { return this.#version_accessor_storage; }
|
|
446
|
+
set version(value) { this.#version_accessor_storage = value; }
|
|
447
|
+
#inode_format_accessor_storage = (__runInitializers(this, _version_extraInitializers), __runInitializers(this, _inode_format_initializers, void 0));
|
|
449
448
|
/** Which format of `Inode` is used */
|
|
450
|
-
get inode_format() { return
|
|
451
|
-
set inode_format(value) {
|
|
449
|
+
get inode_format() { return this.#inode_format_accessor_storage; }
|
|
450
|
+
set inode_format(value) { this.#inode_format_accessor_storage = value; }
|
|
451
|
+
#flags_accessor_storage = (__runInitializers(this, _inode_format_extraInitializers), __runInitializers(this, _flags_initializers, void 0));
|
|
452
452
|
/** Flags for the file system. Currently unused */
|
|
453
|
-
get flags() { return
|
|
454
|
-
set flags(value) {
|
|
453
|
+
get flags() { return this.#flags_accessor_storage; }
|
|
454
|
+
set flags(value) { this.#flags_accessor_storage = value; }
|
|
455
|
+
#used_bytes_accessor_storage = (__runInitializers(this, _flags_extraInitializers), __runInitializers(this, _used_bytes_initializers, void 0));
|
|
455
456
|
/** The number of used bytes, including the super block and metadata */
|
|
456
|
-
get used_bytes() { return
|
|
457
|
-
set used_bytes(value) {
|
|
457
|
+
get used_bytes() { return this.#used_bytes_accessor_storage; }
|
|
458
|
+
set used_bytes(value) { this.#used_bytes_accessor_storage = value; }
|
|
459
|
+
#total_bytes_accessor_storage = (__runInitializers(this, _used_bytes_extraInitializers), __runInitializers(this, _total_bytes_initializers, void 0));
|
|
458
460
|
/** The total size of the entire file system, including the super block and metadata */
|
|
459
|
-
get total_bytes() { return
|
|
460
|
-
set total_bytes(value) {
|
|
461
|
+
get total_bytes() { return this.#total_bytes_accessor_storage; }
|
|
462
|
+
set total_bytes(value) { this.#total_bytes_accessor_storage = value; }
|
|
463
|
+
#uuid_accessor_storage = (__runInitializers(this, _total_bytes_extraInitializers), __runInitializers(this, _uuid_initializers, void 0));
|
|
461
464
|
/** A UUID for this file system */
|
|
462
|
-
get uuid() { return
|
|
463
|
-
set uuid(value) {
|
|
465
|
+
get uuid() { return this.#uuid_accessor_storage; }
|
|
466
|
+
set uuid(value) { this.#uuid_accessor_storage = value; }
|
|
467
|
+
#metadata_block_size_accessor_storage = (__runInitializers(this, _uuid_extraInitializers), __runInitializers(this, _metadata_block_size_initializers, void 0));
|
|
464
468
|
/**
|
|
465
469
|
* The size in bytes of a metadata block.
|
|
466
470
|
* Not currently configurable.
|
|
467
471
|
*/
|
|
468
|
-
get metadata_block_size() { return
|
|
469
|
-
set metadata_block_size(value) {
|
|
472
|
+
get metadata_block_size() { return this.#metadata_block_size_accessor_storage; }
|
|
473
|
+
set metadata_block_size(value) { this.#metadata_block_size_accessor_storage = value; }
|
|
474
|
+
#metadata_offset__accessor_storage = (__runInitializers(this, _metadata_block_size_extraInitializers), __runInitializers(this, _metadata_offset__initializers, void 0));
|
|
470
475
|
/** Reserved for 64-bit offset expansion */
|
|
471
|
-
get metadata_offset_() { return
|
|
472
|
-
set metadata_offset_(value) {
|
|
476
|
+
get metadata_offset_() { return this.#metadata_offset__accessor_storage; }
|
|
477
|
+
set metadata_offset_(value) { this.#metadata_offset__accessor_storage = value; }
|
|
478
|
+
#metadata_offset_accessor_storage = (__runInitializers(this, _metadata_offset__extraInitializers), __runInitializers(this, _metadata_offset_initializers, void 0));
|
|
473
479
|
/** Offset of the current metadata block */
|
|
474
|
-
get metadata_offset() { return
|
|
475
|
-
set metadata_offset(value) {
|
|
480
|
+
get metadata_offset() { return this.#metadata_offset_accessor_storage; }
|
|
481
|
+
set metadata_offset(value) { this.#metadata_offset_accessor_storage = value; }
|
|
482
|
+
metadata = __runInitializers(this, _metadata_offset_extraInitializers);
|
|
483
|
+
#label_accessor_storage = __runInitializers(this, _label_initializers, void 0);
|
|
476
484
|
/** An optional label for the file system */
|
|
477
|
-
get label() { return
|
|
478
|
-
set label(value) {
|
|
485
|
+
get label() { return this.#label_accessor_storage; }
|
|
486
|
+
set label(value) { this.#label_accessor_storage = value; }
|
|
487
|
+
#_padding_accessor_storage = (__runInitializers(this, _label_extraInitializers), __runInitializers(this, __padding_initializers, void 0));
|
|
479
488
|
/** Padded to 256 bytes */
|
|
480
|
-
get _padding() { return
|
|
481
|
-
set _padding(value) {
|
|
489
|
+
get _padding() { return this.#_padding_accessor_storage; }
|
|
490
|
+
set _padding(value) { this.#_padding_accessor_storage = value; }
|
|
482
491
|
/**
|
|
483
492
|
* Rotate out the current metadata block.
|
|
484
493
|
* Allocates a new metadata block, moves the current one to backup,
|
|
@@ -486,13 +495,14 @@ let SuperBlock = (() => {
|
|
|
486
495
|
* @returns the new metadata block
|
|
487
496
|
*/
|
|
488
497
|
rotateMetadata() {
|
|
489
|
-
|
|
490
|
-
|
|
498
|
+
const padding = this.used_bytes % BigInt(4);
|
|
499
|
+
Atomics.add(this, usedBytes, padding);
|
|
500
|
+
const offset = Number(Atomics.add(this, usedBytes, BigInt(sizeof(MetadataBlock))));
|
|
501
|
+
const metadata = new MetadataBlock(this.buffer, offset);
|
|
491
502
|
metadata.previous_offset = this.metadata_offset;
|
|
492
503
|
this.metadata = metadata;
|
|
493
504
|
this.metadata_offset = metadata.byteOffset;
|
|
494
505
|
_update(metadata);
|
|
495
|
-
this.used_bytes += BigInt(sizeof(MetadataBlock));
|
|
496
506
|
_update(this);
|
|
497
507
|
return metadata;
|
|
498
508
|
}
|
|
@@ -521,54 +531,6 @@ let SuperBlock = (() => {
|
|
|
521
531
|
return true;
|
|
522
532
|
}
|
|
523
533
|
};
|
|
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
534
|
return SuperBlock = _classThis;
|
|
573
535
|
})();
|
|
574
536
|
export { SuperBlock };
|
|
@@ -593,14 +555,20 @@ function _update(value) {
|
|
|
593
555
|
* @category Stores and Transactions
|
|
594
556
|
*/
|
|
595
557
|
export class SingleBufferStore extends BufferView {
|
|
558
|
+
flags = [];
|
|
559
|
+
name = 'sbfs';
|
|
560
|
+
type = 0x73626673; // 'sbfs'
|
|
596
561
|
get uuid() {
|
|
597
562
|
return decodeUUID(this.superblock.uuid);
|
|
598
563
|
}
|
|
564
|
+
superblock;
|
|
565
|
+
/**
|
|
566
|
+
* @internal @hidden
|
|
567
|
+
*/
|
|
568
|
+
_view;
|
|
569
|
+
_u8;
|
|
599
570
|
constructor(...args) {
|
|
600
571
|
super(...args);
|
|
601
|
-
this.flags = [];
|
|
602
|
-
this.name = 'sbfs';
|
|
603
|
-
this.type = 0x73626673; // 'sbfs'
|
|
604
572
|
if (this.byteLength < sizeof(SuperBlock) + sizeof(MetadataBlock))
|
|
605
573
|
throw crit(withErrno('EINVAL', 'sbfs: Buffer is too small for a file system'));
|
|
606
574
|
this._view = new DataView(this.buffer, this.byteOffset, this.byteLength);
|
|
@@ -653,11 +621,10 @@ export class SingleBufferStore extends BufferView {
|
|
|
653
621
|
_update(block);
|
|
654
622
|
return;
|
|
655
623
|
}
|
|
656
|
-
entry.offset = Number(this.superblock.
|
|
624
|
+
entry.offset = Number(Atomics.add(this.superblock, usedBytes, BigInt(data.length)));
|
|
657
625
|
entry.size = data.length;
|
|
658
626
|
this._u8.set(data, entry.offset);
|
|
659
627
|
_update(block);
|
|
660
|
-
this.superblock.used_bytes += BigInt(data.length);
|
|
661
628
|
_update(this.superblock);
|
|
662
629
|
return;
|
|
663
630
|
}
|
|
@@ -676,12 +643,11 @@ export class SingleBufferStore extends BufferView {
|
|
|
676
643
|
entry = this.superblock.metadata.items[0];
|
|
677
644
|
}
|
|
678
645
|
const lock = __addDisposableResource(env_1, this.superblock.metadata.lock(), false);
|
|
679
|
-
const offset = Number(this.superblock.
|
|
646
|
+
const offset = Number(Atomics.add(this.superblock, usedBytes, BigInt(data.length)));
|
|
680
647
|
entry.id = id;
|
|
681
648
|
entry.offset = offset;
|
|
682
649
|
entry.size = data.length;
|
|
683
650
|
this._u8.set(data, offset);
|
|
684
|
-
this.superblock.used_bytes += BigInt(data.length);
|
|
685
651
|
_update(this.superblock.metadata);
|
|
686
652
|
_update(this.superblock);
|
|
687
653
|
}
|
|
@@ -707,12 +673,13 @@ export class SingleBufferStore extends BufferView {
|
|
|
707
673
|
}
|
|
708
674
|
}
|
|
709
675
|
}
|
|
676
|
+
_fs;
|
|
710
677
|
get fs() {
|
|
711
678
|
return this._fs;
|
|
712
679
|
}
|
|
713
680
|
set fs(fs) {
|
|
714
681
|
if (this.buffer.constructor.name === 'SharedArrayBuffer')
|
|
715
|
-
fs
|
|
682
|
+
fs?.attributes.set('no_id_tables', true);
|
|
716
683
|
this._fs = fs;
|
|
717
684
|
}
|
|
718
685
|
sync() {
|