segundo commit

This commit is contained in:
root 2025-11-06 19:19:45 +00:00
parent 6b8b75863a
commit d2e79d63a5
13601 changed files with 1117197 additions and 0 deletions

239
node_modules/ssb-server/lib/validators.js generated vendored Normal file
View file

@ -0,0 +1,239 @@
var valid = require('muxrpc-validation')
var zerr = require('zerr')
var ref = require('ssb-ref')
// errors
var MissingAttr = zerr('Usage', 'Param % must have a .% of type "%"')
var AttrType = zerr('Usage', '.% of param % must be of type "%"')
function isFilter (v) {
return (v == '@' || v == '%' || v == '&')
}
module.exports = valid({
msgId: function (v) {
if (!ref.isMsg(v))
return 'type'
},
msgLink: function (v) {
if (!ref.isMsgLink(v))
return 'type'
},
feedId: function (v) {
if (!ref.isFeed(v))
return 'type'
},
blobId: function (v) {
if (!ref.isBlob(v))
return 'type'
},
msgContent: function (v, n) {
var err = this.get('object')(v, n)
if (err) return err
if (!v.type || typeof v.type != 'string')
return MissingAttr(n, 'type', 'string')
},
msg: function (v, n) {
var err = this.get('object')(v, n)
if (err)
return err
//allow content to be string. (i.e. for encrypted messages)
//or object with type string
if(!v.content)
return MissingAttr(n, 'content', 'object|string')
else if(typeof v.content === 'string')
; //check if it's base64?
else if('object' === typeof v.content) {
if(!v.content.type || typeof v.content.type != 'string')
return MissingAttr(n, 'content.type', 'string')
}
else
return MissingAttr(n, 'content', 'object|string')
// .author
if (!ref.isFeed(v.author))
return MissingAttr(n, 'author', 'feedId')
// .sequence
if (typeof v.sequence != 'number')
return MissingAttr(n, 'sequence', 'number')
// .previous
if (v.sequence > 1 && !ref.isMsg(v.previous))
return MissingAttr(n, 'previous', 'msgId')
else if(v.sequence == 1 && v.previous != null)
return MissingAttr(n, 'previous', 'null')
// .timestamp
if (typeof v.timestamp != 'number')
return MissingAttr(n, 'timestamp', 'number')
// .hash
if (v.hash != 'sha256')
return zerr('Usage', 'Param % must have .hash set to "sha256"')(n)
// .signature
if (typeof v.signature != 'string')
return MissingAttr(n, 'signature', 'string')
},
readStreamOpts: function (v, n) {
var err = this.get('object')(v, n)
if (err)
return err
// .live
if (v.live && typeof v.live != 'boolean' && typeof v.live != 'number')
return AttrType(n, 'live', 'boolean')
// .reverse
if (v.reverse && typeof v.reverse != 'boolean' && typeof v.reverse != 'number')
return AttrType(n, 'reverse', 'boolean')
// .keys
if (v.keys && typeof v.keys != 'boolean' && typeof v.keys != 'number')
return AttrType(n, 'keys', 'boolean')
// .values
if (v.values && typeof v.values != 'boolean' && typeof v.values != 'number')
return AttrType(n, 'values', 'boolean')
// .limit
if (v.limit && typeof v.limit != 'number')
return AttrType(n, 'limit', 'number')
// .fillCache
if (v.fillCache && typeof v.fillCache != 'boolean' && typeof v.fillCache != 'number')
return AttrType(n, 'fillCache', 'boolean')
},
createHistoryStreamOpts: function (v, n) {
// .id
if (!ref.isFeed(v.id))
return MissingAttr(n, 'id', 'feedId')
// .seq
if (v.seq && typeof v.seq != 'number')
return AttrType(n, 'seq', 'number')
// .live
if (v.live && typeof v.live != 'boolean' && typeof v.live != 'number')
return AttrType(n, 'live', 'boolean')
// .limit
if (v.limit && typeof v.limit != 'number')
return AttrType(n, 'limit', 'number')
// .keys
if (v.keys && typeof v.keys != 'boolean' && typeof v.keys != 'number')
return AttrType(n, 'keys', 'boolean')
// .values
if (v.values && typeof v.values != 'boolean' && typeof v.values != 'number')
return AttrType(n, 'values', 'boolean')
},
createUserStreamOpts: function (v, n) {
var err = this.get('readStreamOpts')(v, n)
if (err)
return err
// .id
if (!ref.isFeed(v.id))
return MissingAttr(n, 'id', 'feedId')
},
messagesByTypeOpts: function (v, n) {
var err = this.get('readStreamOpts')(v, n)
if (err)
return err
// .type
if (typeof v.type != 'string')
return MissingAttr(n, 'type', 'string')
},
linksOpts: function (v, n) {
var err = this.get('object')(v, n)
if (err)
return err
// .source
if (v.source && !ref.isLink(v.source) && !isFilter(v.source))
return AttrType(n, 'source', 'id|filter')
// .dest
if (v.dest && !ref.isLink(v.dest) && !isFilter(v.dest))
return AttrType(n, 'dest', 'id|filter')
// .rel
if (v.rel && typeof v.rel != 'string')
return AttrType(n, 'rel', 'string')
// .live
if (v.live && typeof v.live != 'boolean' && typeof v.live != 'number')
return AttrType(n, 'live', 'boolean')
// .reverse
if (v.reverse && typeof v.reverse != 'boolean' && typeof v.reverse != 'number')
return AttrType(n, 'reverse', 'boolean')
// .keys
if (v.keys && typeof v.keys != 'boolean' && typeof v.keys != 'number')
return AttrType(n, 'keys', 'boolean')
// .values
if (v.values && typeof v.values != 'boolean' && typeof v.values != 'number')
return AttrType(n, 'values', 'boolean')
},
isBlockedOpts: function (v, n) {
var err = this.get('object')(v, n)
if (err)
return err
// .source
if (v.source && !ref.isFeed(v.source))
return AttrType(n, 'source', 'feedId')
// .dest
if (v.dest && !ref.isFeed(v.dest))
return AttrType(n, 'dest', 'feedId')
},
createFriendStreamOpts: function (v, n) {
var err = this.get('object')(v, n)
if (err)
return err
// .start
if (v.start && !ref.isFeed(v.start))
return AttrType(n, 'start', 'feedId')
// .graph
if (v.graph && typeof v.graph != 'string')
return AttrType(n, 'graph', 'string')
// .dunbar
if (v.dunbar && typeof v.dunbar != 'number')
return AttrType(n, 'dunbar', 'number')
// .hops
if (v.hops && typeof v.hops != 'number')
return AttrType(n, 'hops', 'number')
}
})