@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
77 lines (75 loc) • 6.43 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
// src/cbor/_memory.ts
import {
CborMemoryBlockConflictError,
CborMemoryBlockInUseError,
CborUndefinedMemoryBlockError
} from "../errors/index.mjs";
var _Memory = class _Memory {
constructor() {
this.blocks = /* @__PURE__ */ new Map();
}
define(address, size) {
const b = this.blocks.get(address);
if (b) {
if (b.size !== size) {
throw new CborMemoryBlockConflictError(address, b.size, size);
}
} else {
this.blocks.set(address, {
busy: false,
data: null,
size
});
}
}
remove(address) {
const b = this.blocks.get(address);
if (b) {
if (b.busy) {
throw new CborMemoryBlockInUseError(
`Cannot remove memory block at address ${address} because it is currently in use.`
);
}
this.blocks.delete(address);
}
}
alloc(address) {
let b = this.blocks.get(address);
if (!b) {
throw new CborUndefinedMemoryBlockError(address);
}
if (b.busy) {
throw new CborMemoryBlockInUseError(
`Memory block at address ${address} is currently in use and cannot be modified.`
);
}
if (b.data === null) {
const data = new Uint8Array(b.size);
this.blocks.set(
address,
b = {
busy: false,
data,
view: new DataView(data.buffer, 0, b.size),
size: b.size
}
);
}
b.busy = true;
return b;
}
free(address) {
const b = this.blocks.get(address);
if (b) {
b.busy = false;
}
}
};
__name(_Memory, "Memory");
var Memory = _Memory;
export {
Memory
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2Nib3IvX21lbW9yeS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtcbiAgQ2Jvck1lbW9yeUJsb2NrQ29uZmxpY3RFcnJvcixcbiAgQ2Jvck1lbW9yeUJsb2NrSW5Vc2VFcnJvcixcbiAgQ2JvclVuZGVmaW5lZE1lbW9yeUJsb2NrRXJyb3IsXG59IGZyb20gXCJAdGFpLWt1bi9zdXJyZWFsZGIvZXJyb3JzXCI7XG5cbmV4cG9ydCB0eXBlIE1lbW9yeUFkZHJlc3MgPSBzdHJpbmcgfCBudW1iZXI7XG5cbmV4cG9ydCB0eXBlIERlZmluZWRNZW1vcnlCbG9jayA9IHtcbiAgYnVzeTogZmFsc2U7XG4gIHJlYWRvbmx5IGRhdGE6IG51bGw7XG4gIHJlYWRvbmx5IHNpemU6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFsbG9jYXRlZE1lbW9yeUJsb2NrID0ge1xuICBidXN5OiBib29sZWFuO1xuICByZWFkb25seSBkYXRhOiBVaW50OEFycmF5O1xuICByZWFkb25seSB2aWV3OiBEYXRhVmlldztcbiAgcmVhZG9ubHkgc2l6ZTogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTWVtb3J5QmxvY2sgPSBEZWZpbmVkTWVtb3J5QmxvY2sgfCBBbGxvY2F0ZWRNZW1vcnlCbG9jaztcblxuZXhwb3J0IGNsYXNzIE1lbW9yeSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBibG9ja3M6IE1hcDxNZW1vcnlBZGRyZXNzLCBNZW1vcnlCbG9jaz4gPSBuZXcgTWFwKCk7XG5cbiAgZGVmaW5lKGFkZHJlc3M6IE1lbW9yeUFkZHJlc3MsIHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGIgPSB0aGlzLmJsb2Nrcy5nZXQoYWRkcmVzcyk7XG5cbiAgICBpZiAoYikge1xuICAgICAgaWYgKGIuc2l6ZSAhPT0gc2l6ZSkge1xuICAgICAgICB0aHJvdyBuZXcgQ2Jvck1lbW9yeUJsb2NrQ29uZmxpY3RFcnJvcihhZGRyZXNzLCBiLnNpemUsIHNpemUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJsb2Nrcy5zZXQoYWRkcmVzcywge1xuICAgICAgICBidXN5OiBmYWxzZSxcbiAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgc2l6ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZShhZGRyZXNzOiBNZW1vcnlBZGRyZXNzKTogdm9pZCB7XG4gICAgY29uc3QgYiA9IHRoaXMuYmxvY2tzLmdldChhZGRyZXNzKTtcblxuICAgIGlmIChiKSB7XG4gICAgICBpZiAoYi5idXN5KSB7XG4gICAgICAgIHRocm93IG5ldyBDYm9yTWVtb3J5QmxvY2tJblVzZUVycm9yKFxuICAgICAgICAgIGBDYW5ub3QgcmVtb3ZlIG1lbW9yeSBibG9jayBhdCBhZGRyZXNzICR7YWRkcmVzc30gYmVjYXVzZSBpdCBpcyBgXG4gICAgICAgICAgICArIFwiY3VycmVudGx5IGluIHVzZS5cIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ibG9ja3MuZGVsZXRlKGFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIGFsbG9jKGFkZHJlc3M6IE1lbW9yeUFkZHJlc3MpOiBBbGxvY2F0ZWRNZW1vcnlCbG9jayB7XG4gICAgbGV0IGIgPSB0aGlzLmJsb2Nrcy5nZXQoYWRkcmVzcyk7XG5cbiAgICBpZiAoIWIpIHtcbiAgICAgIHRocm93IG5ldyBDYm9yVW5kZWZpbmVkTWVtb3J5QmxvY2tFcnJvcihhZGRyZXNzKTtcbiAgICB9XG5cbiAgICBpZiAoYi5idXN5KSB7XG4gICAgICB0aHJvdyBuZXcgQ2Jvck1lbW9yeUJsb2NrSW5Vc2VFcnJvcihcbiAgICAgICAgYE1lbW9yeSBibG9jayBhdCBhZGRyZXNzICR7YWRkcmVzc30gaXMgY3VycmVudGx5IGluIHVzZSBhbmQgY2Fubm90IGJlIGBcbiAgICAgICAgICArIFwibW9kaWZpZWQuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChiLmRhdGEgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBuZXcgVWludDhBcnJheShiLnNpemUpO1xuICAgICAgdGhpcy5ibG9ja3Muc2V0KFxuICAgICAgICBhZGRyZXNzLFxuICAgICAgICBiID0ge1xuICAgICAgICAgIGJ1c3k6IGZhbHNlLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgdmlldzogbmV3IERhdGFWaWV3KGRhdGEuYnVmZmVyLCAwLCBiLnNpemUpLFxuICAgICAgICAgIHNpemU6IGIuc2l6ZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYi5idXN5ID0gdHJ1ZTtcblxuICAgIHJldHVybiBiO1xuICB9XG5cbiAgZnJlZShhZGRyZXNzOiBNZW1vcnlBZGRyZXNzKTogdm9pZCB7XG4gICAgY29uc3QgYiA9IHRoaXMuYmxvY2tzLmdldChhZGRyZXNzKTtcblxuICAgIGlmIChiKSB7XG4gICAgICBiLmJ1c3kgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7QUFBQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFtQkEsSUFBTSxVQUFOLE1BQU0sUUFBTztBQUFBLEVBQWI7QUFDTCxTQUFtQixTQUEwQyxvQkFBSSxJQUFJO0FBQUE7QUFBQSxFQUVyRSxPQUFPLFNBQXdCLE1BQW9CO0FBQ2pELFVBQU0sSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPO0FBRWpDLFFBQUksR0FBRztBQUNMLFVBQUksRUFBRSxTQUFTLE1BQU07QUFDbkIsY0FBTSxJQUFJLDZCQUE2QixTQUFTLEVBQUUsTUFBTSxJQUFJO0FBQUEsTUFDOUQ7QUFBQSxJQUNGLE9BQU87QUFDTCxXQUFLLE9BQU8sSUFBSSxTQUFTO0FBQUEsUUFDdkIsTUFBTTtBQUFBLFFBQ04sTUFBTTtBQUFBLFFBQ047QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUFBLEVBRUEsT0FBTyxTQUE4QjtBQUNuQyxVQUFNLElBQUksS0FBSyxPQUFPLElBQUksT0FBTztBQUVqQyxRQUFJLEdBQUc7QUFDTCxVQUFJLEVBQUUsTUFBTTtBQUNWLGNBQU0sSUFBSTtBQUFBLFVBQ1IseUNBQXlDLE9BQU87QUFBQSxRQUVsRDtBQUFBLE1BQ0Y7QUFFQSxXQUFLLE9BQU8sT0FBTyxPQUFPO0FBQUEsSUFDNUI7QUFBQSxFQUNGO0FBQUEsRUFFQSxNQUFNLFNBQThDO0FBQ2xELFFBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPO0FBRS9CLFFBQUksQ0FBQyxHQUFHO0FBQ04sWUFBTSxJQUFJLDhCQUE4QixPQUFPO0FBQUEsSUFDakQ7QUFFQSxRQUFJLEVBQUUsTUFBTTtBQUNWLFlBQU0sSUFBSTtBQUFBLFFBQ1IsMkJBQTJCLE9BQU87QUFBQSxNQUVwQztBQUFBLElBQ0Y7QUFFQSxRQUFJLEVBQUUsU0FBUyxNQUFNO0FBQ25CLFlBQU0sT0FBTyxJQUFJLFdBQVcsRUFBRSxJQUFJO0FBQ2xDLFdBQUssT0FBTztBQUFBLFFBQ1Y7QUFBQSxRQUNBLElBQUk7QUFBQSxVQUNGLE1BQU07QUFBQSxVQUNOO0FBQUEsVUFDQSxNQUFNLElBQUksU0FBUyxLQUFLLFFBQVEsR0FBRyxFQUFFLElBQUk7QUFBQSxVQUN6QyxNQUFNLEVBQUU7QUFBQSxRQUNWO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxNQUFFLE9BQU87QUFFVCxXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRUEsS0FBSyxTQUE4QjtBQUNqQyxVQUFNLElBQUksS0FBSyxPQUFPLElBQUksT0FBTztBQUVqQyxRQUFJLEdBQUc7QUFDTCxRQUFFLE9BQU87QUFBQSxJQUNYO0FBQUEsRUFDRjtBQUNGO0FBekVvQjtBQUFiLElBQU0sU0FBTjsiLAogICJuYW1lcyI6IFtdCn0K