UNPKG

@tai-kun/surrealdb

Version:

The SurrealDB SDK for JavaScript

123 lines (121 loc) 13.5 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // src/errors/cbor.ts import { SurrealError } from "./general.mjs"; var _CborError = class _CborError extends SurrealError { }; __name(_CborError, "CborError"); _CborError.prototype.name = "CborError"; var CborError = _CborError; var _CborWellFormednessError = class _CborWellFormednessError extends CborError { }; __name(_CborWellFormednessError, "CborWellFormednessError"); _CborWellFormednessError.prototype.name = "CborWellFormednessError"; var CborWellFormednessError = _CborWellFormednessError; var _CborTooMuchDataError = class _CborTooMuchDataError extends CborWellFormednessError { constructor(options) { super("Unconsumed input bytes remain after decoding.", options); } }; __name(_CborTooMuchDataError, "CborTooMuchDataError"); _CborTooMuchDataError.prototype.name = "CborTooMuchDataError"; var CborTooMuchDataError = _CborTooMuchDataError; var _CborTooLittleDataError = class _CborTooLittleDataError extends CborWellFormednessError { constructor(options) { super( "Input data appears truncated or incomplete for CBOR decoding.", options ); } }; __name(_CborTooLittleDataError, "CborTooLittleDataError"); _CborTooLittleDataError.prototype.name = "CborTooLittleDataError"; var CborTooLittleDataError = _CborTooLittleDataError; var _CborSyntaxError = class _CborSyntaxError extends CborWellFormednessError { }; __name(_CborSyntaxError, "CborSyntaxError"); _CborSyntaxError.prototype.name = "CborSyntaxError"; var CborSyntaxError = _CborSyntaxError; var _CborMaxDepthReachedError = class _CborMaxDepthReachedError extends CborError { constructor(maxDepth, options) { super(`Maximum depth of ${maxDepth} has been reached.`, options); this.maxDepth = maxDepth; } }; __name(_CborMaxDepthReachedError, "CborMaxDepthReachedError"); _CborMaxDepthReachedError.prototype.name = "CborMaxDepthReachedError"; var CborMaxDepthReachedError = _CborMaxDepthReachedError; var _CborUnsafeMapKeyError = class _CborUnsafeMapKeyError extends CborError { constructor(key, options) { super( `Invalid key for CBOR map: ${String(key)}. The key must be a valid CBOR data type that is safe to use in a JavaScript map or object.`, options ); this.key = key; } }; __name(_CborUnsafeMapKeyError, "CborUnsafeMapKeyError"); _CborUnsafeMapKeyError.prototype.name = "CborUnsafeMapKeyError"; var CborUnsafeMapKeyError = _CborUnsafeMapKeyError; var _CborDecodeStreamAbortFailedError = class _CborDecodeStreamAbortFailedError extends CborError { constructor(errors, options) { super("Failed to abort decode-stream", options); this.cause = errors.slice(); } }; __name(_CborDecodeStreamAbortFailedError, "CborDecodeStreamAbortFailedError"); _CborDecodeStreamAbortFailedError.prototype.name = "CborStreamAbortFailedError"; var CborDecodeStreamAbortFailedError = _CborDecodeStreamAbortFailedError; var _CborMemoryError = class _CborMemoryError extends CborError { }; __name(_CborMemoryError, "CborMemoryError"); _CborMemoryError.prototype.name = "CborMemoryError"; var CborMemoryError = _CborMemoryError; var _CborMemoryBlockError = class _CborMemoryBlockError extends CborError { }; __name(_CborMemoryBlockError, "CborMemoryBlockError"); _CborMemoryBlockError.prototype.name = "CborMemoryBlockError"; var CborMemoryBlockError = _CborMemoryBlockError; var _CborMemoryBlockConflictError = class _CborMemoryBlockConflictError extends CborMemoryBlockError { constructor(address, expectedSize, actualSize) { super( `Memory conflict at address ${address}: Expected size ${expectedSize}, but found ${actualSize}.` ); this.address = address; this.expectedSize = expectedSize; this.actualSize = actualSize; } }; __name(_CborMemoryBlockConflictError, "CborMemoryBlockConflictError"); _CborMemoryBlockConflictError.prototype.name = "CborMemoryBlockConflictError"; var CborMemoryBlockConflictError = _CborMemoryBlockConflictError; var _CborMemoryBlockInUseError = class _CborMemoryBlockInUseError extends CborMemoryBlockError { }; __name(_CborMemoryBlockInUseError, "CborMemoryBlockInUseError"); _CborMemoryBlockInUseError.prototype.name = "CborMemoryBlockInUseError"; var CborMemoryBlockInUseError = _CborMemoryBlockInUseError; var _CborUndefinedMemoryBlockError = class _CborUndefinedMemoryBlockError extends CborMemoryBlockError { constructor(address) { super(`Memory block at address ${address} is not defined.`); this.address = address; } }; __name(_CborUndefinedMemoryBlockError, "CborUndefinedMemoryBlockError"); _CborUndefinedMemoryBlockError.prototype.name = "CborUndefinedMemoryBlockError"; var CborUndefinedMemoryBlockError = _CborUndefinedMemoryBlockError; export { CborDecodeStreamAbortFailedError, CborError, CborMaxDepthReachedError, CborMemoryBlockConflictError, CborMemoryBlockError, CborMemoryBlockInUseError, CborMemoryError, CborSyntaxError, CborTooLittleDataError, CborTooMuchDataError, CborUndefinedMemoryBlockError, CborUnsafeMapKeyError, CborWellFormednessError }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2Vycm9ycy9jYm9yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBTdXJyZWFsRXJyb3IsIHR5cGUgU3VycmVhbEVycm9yT3B0aW9ucyB9IGZyb20gXCIuL2dlbmVyYWxcIjtcblxuLyoqXG4gKiBbQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly90YWkta3VuLmdpdGh1Yi5pby9zdXJyZWFsZGIuanMvdjIvZ3VpZGVzL2Vycm9ycy8jY2JvcmVycm9yKVxuICovXG5leHBvcnQgY2xhc3MgQ2JvckVycm9yIGV4dGVuZHMgU3VycmVhbEVycm9yIHtcbiAgc3RhdGljIHtcbiAgICB0aGlzLnByb3RvdHlwZS5uYW1lID0gXCJDYm9yRXJyb3JcIjtcbiAgfVxufVxuXG4vLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzg5NDkjbmFtZS13ZWxsLWZvcm1lZG5lc3MtZXJyb3JzLWFuZC1cbi8qKlxuICogW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vdGFpLWt1bi5naXRodWIuaW8vc3VycmVhbGRiLmpzL3YyL2d1aWRlcy9lcnJvcnMvI2Nib3J3ZWxsZm9ybWVkbmVzc2Vycm9yKVxuICovXG5leHBvcnQgY2xhc3MgQ2JvcldlbGxGb3JtZWRuZXNzRXJyb3IgZXh0ZW5kcyBDYm9yRXJyb3Ige1xuICBzdGF0aWMge1xuICAgIHRoaXMucHJvdG90eXBlLm5hbWUgPSBcIkNib3JXZWxsRm9ybWVkbmVzc0Vycm9yXCI7XG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM4OTQ5I3NlY3Rpb24tYXBwZW5kaXguZi0yLjJcbi8qKlxuICogW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vdGFpLWt1bi5naXRodWIuaW8vc3VycmVhbGRiLmpzL3YyL2d1aWRlcy9lcnJvcnMvI2Nib3J0b29tdWNoZGF0YWVycm9yKVxuICovXG5leHBvcnQgY2xhc3MgQ2JvclRvb011Y2hEYXRhRXJyb3IgZXh0ZW5kcyBDYm9yV2VsbEZvcm1lZG5lc3NFcnJvciB7XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5wcm90b3R5cGUubmFtZSA9IFwiQ2JvclRvb011Y2hEYXRhRXJyb3JcIjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBTdXJyZWFsRXJyb3JPcHRpb25zIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIoXCJVbmNvbnN1bWVkIGlucHV0IGJ5dGVzIHJlbWFpbiBhZnRlciBkZWNvZGluZy5cIiwgb3B0aW9ucyk7XG4gIH1cbn1cblxuLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM4OTQ5I3NlY3Rpb24tYXBwZW5kaXguZi0yLjRcbi8qKlxuICogW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vdGFpLWt1bi5naXRodWIuaW8vc3VycmVhbGRiLmpzL3YyL2d1aWRlcy9lcnJvcnMvI2Nib3J0b29saXR0bGVkYXRhZXJyb3IpXG4gKi9cbmV4cG9ydCBjbGFzcyBDYm9yVG9vTGl0dGxlRGF0YUVycm9yIGV4dGVuZHMgQ2JvcldlbGxGb3JtZWRuZXNzRXJyb3Ige1xuICBzdGF0aWMge1xuICAgIHRoaXMucHJvdG90eXBlLm5hbWUgPSBcIkNib3JUb29MaXR0bGVEYXRhRXJyb3JcIjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBTdXJyZWFsRXJyb3JPcHRpb25zIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIoXG4gICAgICBcIklucHV0IGRhdGEgYXBwZWFycyB0cnVuY2F0ZWQgb3IgaW5jb21wbGV0ZSBmb3IgQ0JPUiBkZWNvZGluZy5cIixcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzg5NDkjc2VjdGlvbi1hcHBlbmRpeC5mLTIuNlxuLyoqXG4gKiBbQVBJIFJlZmVyZW5jZV0oaHR0cHM6Ly90YWkta3VuLmdpdGh1Yi5pby9zdXJyZWFsZGIuanMvdjIvZ3VpZGVzL2Vycm9ycy8jY2JvcnN5bnRheGVycm9yKVxuICovXG5leHBvcnQgY2xhc3MgQ2JvclN5bnRheEVycm9yIGV4dGVuZHMgQ2JvcldlbGxGb3JtZWRuZXNzRXJyb3Ige1xuICBzdGF0aWMge1xuICAgIHRoaXMucHJvdG90eXBlLm5hbWUgPSBcIkNib3JTeW50YXhFcnJvclwiO1xuICB9XG59XG5cbi8qKlxuICogW0FQSSBSZWZlcmVuY2VdKGh0dHBzOi8vdGFpLWt1bi5naXRodWIuaW8vc3VycmVhbGRiLmpzL3YyL2d1aWRlcy9lcnJvcnMvI2Nib3JtYXhkZXB0aHJlYWNoZWRlcnJvcilcbiAqL1xuZXhwb3J0IGNsYXNzIENib3JNYXhEZXB0aFJlYWNoZWRFcnJvciBleHRlbmRzIENib3JFcnJvciB7XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5wcm90b3R5cGUubmFtZSA9IFwiQ2Jvck1heERlcHRoUmVhY2hlZEVycm9yXCI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbWF4RGVwdGg6IG51bWJlcixcbiAgICBvcHRpb25zPzogU3VycmVhbEVycm9yT3B0aW9ucyB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgc3VwZXIoYE1heGltdW0gZGVwdGggb2YgJHttYXhEZXB0aH0gaGFzIGJlZW4gcmVhY2hlZC5gLCBvcHRpb25zKTtcbiAgfVxufVxuXG4vKipcbiAqIFtBUEkgUmVmZXJlbmNlXShodHRwczovL3RhaS1rdW4uZ2l0aHViLmlvL3N1cnJlYWxkYi5qcy92Mi9ndWlkZXMvZXJyb3JzLyNjYm9ydW5zYWZlbWFwa2V5ZXJyb3IpXG4gKi9cbmV4cG9ydCBjbGFzcyBDYm9yVW5zYWZlTWFwS2V5RXJyb3IgZXh0ZW5kcyBDYm9yRXJyb3Ige1xuICBzdGF0aWMge1xuICAgIHRoaXMucHJvdG90eXBlLm5hbWUgPSBcIkNib3JVbnNhZmVNYXBLZXlFcnJvclwiO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGtleTogdW5rbm93bixcbiAgICBvcHRpb25zPzogU3VycmVhbEVycm9yT3B0aW9ucyB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBgSW52YWxpZCBrZXkgZm9yIENCT1IgbWFwOiAke1N0cmluZyhrZXkpfS4gVGhlIGtleSBtdXN0IGJlIGEgdmFsaWQgQ0JPUmBcbiAgICAgICAgKyBcIiBkYXRhIHR5cGUgdGhhdCBpcyBzYWZlIHRvIHVzZSBpbiBhIEphdmFTY3JpcHQgbWFwIG9yIG9iamVjdC5cIixcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2JvckRlY29kZVN0cmVhbUFib3J0RmFpbGVkRXJyb3IgZXh0ZW5kcyBDYm9yRXJyb3Ige1xuICBzdGF0aWMge1xuICAgIHRoaXMucHJvdG90eXBlLm5hbWUgPSBcIkNib3JTdHJlYW1BYm9ydEZhaWxlZEVycm9yXCI7XG4gIH1cblxuICBvdmVycmlkZSBjYXVzZTogdW5rbm93bltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVycm9yczogcmVhZG9ubHkgdW5rbm93bltdLFxuICAgIG9wdGlvbnM/OiBPbWl0PFN1cnJlYWxFcnJvck9wdGlvbnMsIFwiY2F1c2VcIj4gfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHN1cGVyKFwiRmFpbGVkIHRvIGFib3J0IGRlY29kZS1zdHJlYW1cIiwgb3B0aW9ucyk7XG4gICAgdGhpcy5jYXVzZSA9IGVycm9ycy5zbGljZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYm9yTWVtb3J5RXJyb3IgZXh0ZW5kcyBDYm9yRXJyb3Ige1xuICBzdGF0aWMge1xuICAgIHRoaXMucHJvdG90eXBlLm5hbWUgPSBcIkNib3JNZW1vcnlFcnJvclwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYm9yTWVtb3J5QmxvY2tFcnJvciBleHRlbmRzIENib3JFcnJvciB7XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5wcm90b3R5cGUubmFtZSA9IFwiQ2Jvck1lbW9yeUJsb2NrRXJyb3JcIjtcbiAgfVxufVxuXG50eXBlIE1lbW9yeUFkZHJlc3MgPSBzdHJpbmcgfCBudW1iZXI7XG5cbmV4cG9ydCBjbGFzcyBDYm9yTWVtb3J5QmxvY2tDb25mbGljdEVycm9yIGV4dGVuZHMgQ2Jvck1lbW9yeUJsb2NrRXJyb3Ige1xuICBzdGF0aWMge1xuICAgIHRoaXMucHJvdG90eXBlLm5hbWUgPSBcIkNib3JNZW1vcnlCbG9ja0NvbmZsaWN0RXJyb3JcIjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhZGRyZXNzOiBNZW1vcnlBZGRyZXNzLFxuICAgIHB1YmxpYyBleHBlY3RlZFNpemU6IG51bWJlcixcbiAgICBwdWJsaWMgYWN0dWFsU2l6ZTogbnVtYmVyLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGBNZW1vcnkgY29uZmxpY3QgYXQgYWRkcmVzcyAke2FkZHJlc3N9OiBgXG4gICAgICAgICsgYEV4cGVjdGVkIHNpemUgJHtleHBlY3RlZFNpemV9LCBidXQgZm91bmQgJHthY3R1YWxTaXplfS5gLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENib3JNZW1vcnlCbG9ja0luVXNlRXJyb3IgZXh0ZW5kcyBDYm9yTWVtb3J5QmxvY2tFcnJvciB7XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5wcm90b3R5cGUubmFtZSA9IFwiQ2Jvck1lbW9yeUJsb2NrSW5Vc2VFcnJvclwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYm9yVW5kZWZpbmVkTWVtb3J5QmxvY2tFcnJvciBleHRlbmRzIENib3JNZW1vcnlCbG9ja0Vycm9yIHtcbiAgc3RhdGljIHtcbiAgICB0aGlzLnByb3RvdHlwZS5uYW1lID0gXCJDYm9yVW5kZWZpbmVkTWVtb3J5QmxvY2tFcnJvclwiO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGFkZHJlc3M6IE1lbW9yeUFkZHJlc3MpIHtcbiAgICBzdXBlcihgTWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgJHthZGRyZXNzfSBpcyBub3QgZGVmaW5lZC5gKTtcbiAgfVxufVxuIl0s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