blockstack-storage
Version:
The Blockstack Javascript library for storage.
280 lines (266 loc) • 7.76 kB
JavaScript
'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']
};