@eluvio/elv-utils-js
Version:
Utilities for the Eluvio Content Fabric
62 lines (44 loc) • 1.78 kB
JavaScript
// template for scripts that work with an existing fabric object
const pick = require('@eluvio/elv-js-helpers/Functional/pick')
const mergeRight = require('@eluvio/elv-js-helpers/Functional/mergeRight')
const {ModOpt} = require('../../options')
const ArgObjectId = require('../args/ArgObjectId')
const FabricObject = require('../libs/FabricObject')
const blueprint = {
name: 'ExistObj',
concerns: [ArgObjectId, FabricObject],
options: [
ModOpt('objectId', {demand: true})
]
}
const New = context => {
// fill in any implied missing args
const argsProc = async () => await context.concerns.ArgObjectId.argsProc()
const del = async () => await context.concerns.FabricObject.del(await relevantArgs())
const info = async() => await context.concerns.FabricObject.info(await relevantArgs())
const libraryId = async () => await relevantArgs().libraryId
const metadata = async ({subtree} = {}) => await context.concerns.FabricObject.metadata(
mergeRight({subtree}, await relevantArgs())
)
const partList = async () => await context.concerns.FabricObject.partList(await relevantArgs())
const permission = async () => await context.concerns.FabricObject.permission(await relevantArgs())
// extract out just the (processed) args needed to specify object in ElvClient calls
const relevantArgs = async () => (pick(['libraryId', 'objectId'], await argsProc()))
const typeHash = async () => await context.concerns.FabricObject.typeHash(await relevantArgs())
const versionList = async () => await context.concerns.FabricObject.versionList(await relevantArgs())
return {
argsProc,
del,
info,
libraryId,
metadata,
partList,
permission,
typeHash,
versionList
}
}
module.exports = {
blueprint,
New
}