UNPKG

blockstack-storage

Version:

The Blockstack Javascript library for storage.

280 lines (266 loc) 7.76 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var OP_BASE58CHECK_PATTERN = exports.OP_BASE58CHECK_PATTERN = "^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$"; var OP_ADDRESS_PATTERN = exports.OP_ADDRESS_PATTERN = OP_BASE58CHECK_PATTERN; var OP_UUID_PATTERN = exports.OP_UUID_PATTERN = "^([0-9a-fA-F\-]+)$"; var OP_HEX_PATTERN = exports.OP_HEX_PATTERN = "^([0-9a-fA-F]+)$"; var OP_URLENCODED_NOSLASH_PATTERN = exports.OP_URLENCODED_NOSLASH_PATTERN = "^([a-zA-Z0-9\-_.~%]+)$"; var OP_URLENCODED_PATTERN = exports.OP_URLENCODED_PATTERN = "^([a-zA-Z0-9\-_.~%/]+)$"; var OP_URLENCODED_NOSLASH_OR_EMPTY_PATTERN = exports.OP_URLENCODED_NOSLASH_OR_EMPTY_PATTERN = "^([a-zA-Z0-9\-_.~%]*)$"; var OP_URLENCODED_OR_EMPTY_PATTERN = exports.OP_URLENCODED_OR_EMPTY_PATTERN = "^([a-zA-Z0-9\-_.~%/]*)$"; var OP_PUBKEY_PATTERN = exports.OP_PUBKEY_PATTERN = OP_HEX_PATTERN; var OP_BASE64_PATTERN_SECTION = exports.OP_BASE64_PATTERN_SECTION = "(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})"; var OP_BASE64_PATTERN = exports.OP_BASE64_PATTERN = "^(" + OP_BASE64_PATTERN_SECTION + ")$"; var OP_TOMBSTONE_PATTERN = exports.OP_TOMBSTONE_PATTERN = '^delete-([0-9]+):([a-zA-Z0-9\-_.~%#?&\\:/=]+)$'; var OP_SIGNED_TOMBSTONE_PATTERN = exports.OP_SIGNED_TOMBSTONE_PATTERN = '^delete-([0-9]+):([a-zA-Z0-9\-_.~%#?&\\:/=]+):(' + OP_BASE64_PATTERN_SECTION + ')$'; var OP_DATASTORE_ID_CLASS = exports.OP_DATASTORE_ID_CLASS = '[a-zA-Z0-9\-_.~%]'; var OP_DATASTORE_ID_PATTERN = exports.OP_DATASTORE_ID_PATTERN = '^(' + OP_DATASTORE_ID_CLASS + '+)$'; var OP_URI_TARGET_PATTERN = exports.OP_URI_TARGET_PATTERN = '^([a-z0-9+]+)://([a-zA-Z0-9\\-_.~%#?&\\\:/=]+)$'; var SUCCESS_FAIL_SCHEMA = exports.SUCCESS_FAIL_SCHEMA = { anyOf: [{ type: 'object', properties: { status: { type: 'boolean' } } }, { type: 'object', properties: { error: { type: 'string' } } }] }; var ROOT_DIRECTORY_LEAF = exports.ROOT_DIRECTORY_LEAF = 1; var ROOT_DIRECTORY_PARENT = exports.ROOT_DIRECTORY_PARENT = 2; var ROOT_DIRECTORY_ENTRY_SCHEMA = exports.ROOT_DIRECTORY_ENTRY_SCHEMA = { type: 'object', properties: { proto_version: { type: 'integer', minimum: 1 }, urls: { type: 'array', values: { type: 'string', pattern: OP_URI_TARGET_PATTERN } }, data_hash: { type: 'string', pattern: OP_HEX_PATTERN }, timestamp: { type: 'integer', minimum: 1 } }, additionalProperties: false, required: ['proto_version', 'urls', 'data_hash'] }; var ROOT_DIRECTORY_SCHEMA = exports.ROOT_DIRECTORY_SCHEMA = { type: 'object', properties: { proto_version: { type: 'integer', minimum: 2 }, type: { type: 'integer', minimum: ROOT_DIRECTORY_LEAF, maximum: ROOT_DIRECTORY_PARENT }, owner: { type: 'string', pattern: OP_ADDRESS_PATTERN }, readers: { type: 'array', items: { type: 'string', pattern: OP_ADDRESS_PATTERN } }, timestamp: { type: 'integer', minimum: 1 }, files: { type: 'object', patternProperties: { OP_URLENCODED_PATTERN: ROOT_DIRECTORY_ENTRY_SCHEMA } }, tombstones: { type: 'object', patternProperties: { OP_URLENCODED_PATTERN: { type: 'string', pattern: OP_TOMBSTONE_PATTERN } } } }, required: ['type', 'owner', 'readers', 'timestamp', 'proto_version', 'files', 'tombstones'] }; var FILE_LOOKUP_RESPONSE = exports.FILE_LOOKUP_RESPONSE = { type: 'object', properties: { status: { type: 'boolean' }, file_info: ROOT_DIRECTORY_ENTRY_SCHEMA }, required: ['status', 'file_info'] }; var GET_DEVICE_ROOT_RESPONSE = exports.GET_DEVICE_ROOT_RESPONSE = { type: 'object', properties: { status: { type: 'boolean' }, device_root_page: ROOT_DIRECTORY_SCHEMA }, required: ['status', 'device_root_page'] }; var GET_ROOT_RESPONSE = exports.GET_ROOT_RESPONSE = { type: 'object', properties: { status: { type: 'boolean' }, root: { type: 'object', patternProperties: { OP_URLENCODED_PATTERN: ROOT_DIRECTORY_ENTRY_SCHEMA } } }, required: ['status', 'root'] }; var PUT_DATASTORE_RESPONSE = exports.PUT_DATASTORE_RESPONSE = { type: 'object', properties: { status: { type: 'boolean' }, datastore_urls: { type: 'array', items: { type: 'string', pattern: OP_URI_TARGET_PATTERN } }, root_urls: { type: 'array', items: { type: 'string', pattern: OP_URI_TARGET_PATTERN } } }, required: ['status', 'datastore_urls', 'root_urls'] }; var PUT_DATA_RESPONSE = exports.PUT_DATA_RESPONSE = { type: 'object', properties: { status: { type: 'boolean' }, urls: { anyOf: [{ type: 'array', items: { type: 'string', pattern: OP_URI_TARGET_PATTERN } }, { type: 'null' }] } }, required: ['status', 'urls'] }; var DATASTORE_SCHEMA = exports.DATASTORE_SCHEMA = { type: 'object', properties: { type: { type: 'string', pattern: "([a-zA-Z0-9_]+)$" }, pubkey: { type: 'string', pattern: OP_PUBKEY_PATTERN }, drivers: { type: 'array', items: { type: 'string' } }, device_ids: { type: 'array', items: { type: 'string' } }, root_uuid: { type: 'string', pattern: OP_UUID_PATTERN } }, additionalProperties: false, required: ['type', 'pubkey', 'drivers', 'device_ids', 'root_uuid'] }; var DATASTORE_RESPONSE_SCHEMA = exports.DATASTORE_RESPONSE_SCHEMA = { type: 'object', properties: { datastore: DATASTORE_SCHEMA }, additionalProperties: false, required: ['datastore'] }; var CORE_ERROR_SCHEMA = exports.CORE_ERROR_SCHEMA = { type: 'object', properties: { error: { type: 'string' }, errno: { type: 'integer' } }, additionalProperties: false, required: ['errno', 'error'] }; var GET_PROFILE_RESPONSE = exports.GET_PROFILE_RESPONSE = { type: 'object', properties: { status: { type: 'boolean' }, profile: { anyOf: [{ type: 'string' }, { type: 'object' }] }, zonefile: { type: 'string' }, zonefile_b64: { type: 'string', pattern: OP_BASE64_PATTERN }, name_record: { type: 'object' } }, required: ['status', 'profile', 'name_record'] };