UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

1 lines 16.8 kB
import{toTxObject,toTxString,isValidName,isValidLongName,PackageAddress,MAX_LONG_NAME_LENGTH,MAX_NAME_LENGTH,GetObjectExisted}from'../common.js';import{W_ERROR,WErrors}from'../exception.js';import{GetManyAccountOrMark_Address}from'../local/index.js';import{LocalMark}from'../local/local.js';import{ObjectType,query_objects,queryTableItem_MachineNode}from'../query/object.js';import{validObjects}from'../util.js';import{CallBase}from'./base.js';export class CallProgress extends CallBase{['data'];['object_address']=undefined;['machine']=undefined;constructor(a){super(),this['data']=a;}async['prepare'](a){await super['prepare'](a);!this['object_address']&&(this['object_address']=await GetObjectExisted(this['data']?.['object']));if(this['object_address']){this['content']=undefined,await this['update_content'](a,ObjectType['Progress'],this['object_address']);!this['content']&&W_ERROR(WErrors['InvalidParam'],'CallProgress_Data.data.object:'+this['object_address']);const b=await query_objects({'objects':[this['content']['machine']],'no_cache':a['no_cache'],'network':a['network']});(!b['objects']||b['objects']['length']!==0x1||b['objects'][0x0]['type']!==ObjectType['Machine'])&&W_ERROR(WErrors['InvalidParam'],'fetch\x20machine\x20'+this['content']['machine']+'\x20failed'),this['machine']=b['objects'][0x0];}else W_ERROR(WErrors['InvalidParam'],'CallProgress_Data.data.object:'+this['data']?.['object']);}async['call'](a){await this['prepare'](a);const b=[],c=this['content'],d=e=>{!b['includes'](e)&&b['push'](e);};if(this['data']?.['operate']!=null){const e=await getMachineNodeForward(a,this['machine']?.['object'],c['current'],this['data']['operate']['operation']['next_node_name'],this['data']['operate']['operation']['forward']);e['error']&&W_ERROR(WErrors['InvalidParam'],'CallProgress_Data.data.operate.operation.forward:'+this['data']?.['operate']['operation']['forward']+'\x20validation\x20failed.\x20'+e['error']),e['forward']?.['guard']?.['guard']&&d(e['forward']['guard']['guard']);}if(b['length']>0x0)return await this['check_guard_and_call'](a,b);return await this['exec'](a);}async['operate'](a,b,c,d){const e=this['content'];if(this['data']?.['task']){e['task']&&W_ERROR(WErrors['InvalidParam'],'CallProgress_Data.data.task:'+this['data']?.['task']+'\x20is\x20set;\x20and\x20once\x20set,\x20it\x20can\x20not\x20be\x20changed');const f=await LocalMark['Instance']()['get_address'](this['data']?.['task']);f?task_set(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],f,c):W_ERROR(WErrors['InvalidParam'],'CallProgress_Data.data.task:'+this['data']?.['task']+'\x20invalid');}if(this['data']?.['repository'])switch(this['data']['repository']['op']){case'add':case'set':{this['data']['repository']['objects']['length']>MAX_CONTEXT_REPOSITORY_COUNT-(e?.['context_repositories']?.['length']??0x0)&&W_ERROR(WErrors['InvalidParam'],'CallProgress_Data.data.repository.objects\x20exceeds\x20max\x20count:'+this['data']['repository']['objects']);this['data']['repository']['op']==='set'&&context_repository_clear(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission']);const g=await LocalMark['Instance']()['get_many_address_availables'](this['data']['repository']['objects']);g['forEach'](h=>{context_repository_add(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],h,c);});break;}case'remove':{this['data']['repository']['objects']['length']>(e?.['context_repositories']?.['length']??0x0)&&W_ERROR(WErrors['InvalidParam'],'CallProgress_Data.data.repository.objects\x20exceeds\x20max\x20count:'+this['data']['repository']['objects']);const h=await LocalMark['Instance']()['get_many_address_availables'](this['data']['repository']['objects']);context_repository_remove(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],h,c);break;}case'clear':context_repository_clear(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],c);break;}if(this['data']?.['progress_namedOperator'])switch(this['data']['progress_namedOperator']['op']){case'add':{const i=await GetManyAccountOrMark_Address(this['data']['progress_namedOperator']['operators']);namedOperator_add(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],this['data']['progress_namedOperator']['name'],i,c);break;}case'set':{const j=await GetManyAccountOrMark_Address(this['data']['progress_namedOperator']['operators']);namedOperator_set(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],this['data']['progress_namedOperator']['name'],j,c);break;}case'remove':{const k=await GetManyAccountOrMark_Address(this['data']['progress_namedOperator']['operators']);namedOperator_remove(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],this['data']['progress_namedOperator']['name'],k,c);break;}}if(this['data']['operate']!=null){if(this['data']['operate']['hold']===!![]){if(this['data']['operate']['adminUnhold'])adminUnhold(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],this['data']['operate']['operation']['next_node_name'],this['data']['operate']['operation']['forward'],this['data']['operate']['message']??'',c);else{let l=undefined;if(e['task']){const m=await query_objects({'objects':[e['task']],'no_cache':a['no_cache'],'network':a['network']});m['objects']&&m['objects']['length']===0x1&&m['objects'][0x0]['type']===ObjectType['Order']&&(l=m['objects'][0x0]['object']);}hold(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],this['data']['operate']['operation']['next_node_name'],this['data']['operate']['operation']['forward'],this['data']['operate']['message']??'',this['data']['operate']['hold'],l,c);}}else{let n=undefined;if(e['task']){const o=await query_objects({'objects':[e['task']],'no_cache':a['no_cache'],'network':a['network']});o['objects']&&o['objects']['length']===0x1&&o['objects'][0x0]['type']===ObjectType['Order']&&(n=o['objects'][0x0]['object']);}accomplish(b,this['object_address'],this['machine']?.['object'],this['machine']?.['permission'],this['data']['operate']['operation']['next_node_name'],this['data']['operate']['operation']['forward'],this['data']['operate']['message']??'',n,c);}}}}export function progressFn(a){return PackageAddress+'::progress::'+a;}export const MAX_CONTEXT_REPOSITORY_COUNT=0x1e;export const MAX_NAMED_OPERATOR_COUNT=0x3c;export const MAX_NAMED_OPERATOR_ADDRESS_COUNT=0x50;export function newProgress(a,b,c,d,e){return validObjects([b,c,d,e]),e?a['moveCall']({'target':progressFn('new_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),e,a['pure']['option']('address',d),a['object']['mutRegistrar'](),a['object']['clock']()]}):a['moveCall']({'target':progressFn('new'),'arguments':[toTxObject(a,b),toTxObject(a,c),a['pure']['option']('address',d),a['object']['mutRegistrar'](),a['object']['clock']()]});}export function create(a,b){return validObjects([b]),a['moveCall']({'target':progressFn('create'),'arguments':[toTxObject(a,b)]});}export function namedOperator_add(a,b,c,d,e,f,g){if(f['length']===0x0)return;f['length']>MAX_NAMED_OPERATOR_ADDRESS_COUNT&&W_ERROR(WErrors['InvalidParam'],'Named\x20operator\x20address\x20count\x20'+f['length']+'\x20is\x20not\x20valid'),validObjects([b,c,d,g,...f]),!isValidName(e)&&W_ERROR(WErrors['InvalidParam'],'Named\x20operator\x20name\x20'+e+'\x20is\x20not\x20valid'),g?a['moveCall']({'target':progressFn('namedOperator_add_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,g),toTxString(a,e),a['pure']['vector']('address',f)]}):a['moveCall']({'target':progressFn('namedOperator_add'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxString(a,e),a['pure']['vector']('address',f)]});}export function namedOperator_remove(a,b,c,d,e,f,g){if(f['length']===0x0)return;f['length']>MAX_NAMED_OPERATOR_ADDRESS_COUNT&&W_ERROR(WErrors['InvalidParam'],'Named\x20operator\x20address\x20count\x20'+f['length']+'\x20is\x20not\x20valid'),validObjects([b,c,d,g,...f]),!isValidName(e)&&W_ERROR(WErrors['InvalidParam'],'Named\x20operator\x20name\x20'+e+'\x20is\x20not\x20valid'),g?a['moveCall']({'target':progressFn('namedOperator_remove_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,g),toTxString(a,e),a['pure']['vector']('address',f)]}):a['moveCall']({'target':progressFn('namedOperator_remove'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxString(a,e),a['pure']['vector']('address',f)]});}export function namedOperator_set(a,b,c,d,e,f,g){validObjects([b,c,d,g,...f]),f['length']>MAX_NAMED_OPERATOR_ADDRESS_COUNT&&W_ERROR(WErrors['InvalidParam'],'Named\x20operator\x20address\x20count\x20'+f['length']+'\x20is\x20not\x20valid'),!isValidName(e)&&W_ERROR(WErrors['InvalidParam'],'Named\x20operator\x20name\x20'+e+'\x20is\x20not\x20valid'),g?a['moveCall']({'target':progressFn('namedOperator_set_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,g),toTxString(a,e),a['pure']['vector']('address',f)]}):a['moveCall']({'target':progressFn('namedOperator_set'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxString(a,e),a['pure']['vector']('address',f)]});}export function task_set(a,b,c,d,e,f){validObjects([b,c,d,f,e]),f?a['moveCall']({'target':progressFn('task_set_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,f),a['pure']['address'](e)]}):a['moveCall']({'target':progressFn('task_set'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),a['pure']['address'](e)]});}export function context_repository_add(a,b,c,d,e,f){validObjects([b,c,d,f,e]),f?a['moveCall']({'target':progressFn('context_repository_add_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,f),toTxObject(a,e),a['object']['mutRegistrar'](),a['object']['clock']()]}):a['moveCall']({'target':progressFn('context_repository_add'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,e),a['object']['mutRegistrar'](),a['object']['clock']()]});}export function context_repository_remove(a,b,c,d,e,f){validObjects([b,c,d,f,...e]),f?a['moveCall']({'target':progressFn('context_repository_remove_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,f),a['pure']['vector']('address',e),a['object']['mutRegistrar']()]}):a['moveCall']({'target':progressFn('context_repository_remove'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),a['pure']['vector']('address',e),a['object']['mutRegistrar']()]});}export function context_repository_clear(a,b,c,d,e){validObjects([b,c,d,e]),e?a['moveCall']({'target':progressFn('context_repository_clear_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,e),a['object']['mutRegistrar']()]}):a['moveCall']({'target':progressFn('context_repository_clear'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),a['object']['mutRegistrar']()]});}export function hold(a,b,c,d,e,f,g,h,i,j){validObjects([b,c,d,j,i]),(!e||!isValidName(e))&&W_ERROR(WErrors['InvalidParam'],'Next\x20node\x20'+e+'\x20is\x20exceeds\x20maximum\x20length\x20'+MAX_NAME_LENGTH),f&&!isValidName(f)&&W_ERROR(WErrors['InvalidParam'],'Forward\x20'+f+'\x20is\x20exceeds\x20maximum\x20length\x20'+MAX_NAME_LENGTH),!isValidLongName(g)&&W_ERROR(WErrors['InvalidParam'],'Message\x20'+g+'\x20is\x20exceeds\x20maximum\x20length\x20'+MAX_LONG_NAME_LENGTH),j?i?a['moveCall']({'target':progressFn('order_hold_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),j,toTxObject(a,i),toTxString(a,e),toTxString(a,f),a['pure']['bool'](h),toTxString(a,g),a['object']['clock']()]}):a['moveCall']({'target':progressFn('hold_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),j,toTxString(a,e),toTxString(a,f),a['pure']['bool'](h),toTxString(a,g),a['object']['clock']()]}):i?a['moveCall']({'target':progressFn('order_hold'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,i),toTxString(a,e),toTxString(a,f),a['pure']['bool'](h),toTxString(a,g),a['object']['clock']()]}):a['moveCall']({'target':progressFn('hold'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxString(a,e),toTxString(a,f),a['pure']['bool'](h),toTxString(a,g),a['object']['clock']()]});}export function adminUnhold(a,b,c,d,e,f,g,h){validObjects([b,c,d,h]),(!e||!isValidName(e))&&W_ERROR(WErrors['InvalidParam'],'Next\x20node\x20'+e+'\x20is\x20exceeds\x20maximum\x20length\x20'+MAX_NAME_LENGTH),f&&!isValidName(f)&&W_ERROR(WErrors['InvalidParam'],'Forward\x20'+f+'\x20is\x20exceeds\x20maximum\x20length\x20'+MAX_NAME_LENGTH),!isValidLongName(g)&&W_ERROR(WErrors['InvalidParam'],'Message\x20'+g+'\x20is\x20exceeds\x20maximum\x20length\x20'+MAX_LONG_NAME_LENGTH),h?a['moveCall']({'target':progressFn('unhold_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,h),toTxObject(a,c),toTxObject(a,d),h,toTxString(a,e),toTxString(a,f),toTxString(a,g),a['object']['clock']()]}):a['moveCall']({'target':progressFn('unhold'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxString(a,e),toTxString(a,f),toTxString(a,g),a['object']['clock']()]});}export function accomplish(a,b,c,d,e,f,g,h,i){validObjects([b,c,d,i,h]),!isValidName(e)&&W_ERROR(WErrors['InvalidParam'],'Next\x20node\x20'+e+'\x20is\x20exceeds\x20maximum\x20length\x20'+MAX_NAME_LENGTH),f&&!isValidName(f)&&W_ERROR(WErrors['InvalidParam'],'Forward\x20'+f+'\x20is\x20exceeds\x20maximum\x20length\x20'+MAX_NAME_LENGTH),!isValidLongName(g)&&W_ERROR(WErrors['InvalidParam'],'Message\x20'+g+'\x20is\x20exceeds\x20maximum\x20length\x20'+MAX_LONG_NAME_LENGTH),i?h?a['moveCall']({'target':progressFn('order_next_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,i),toTxObject(a,h),toTxString(a,e),toTxString(a,f),toTxString(a,g),a['object']['clock']()]}):a['moveCall']({'target':progressFn('next_with_passport'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,i),toTxString(a,e),toTxString(a,f),toTxString(a,g),a['object']['clock']()]}):h?a['moveCall']({'target':progressFn('order_next'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxObject(a,h),toTxString(a,e),toTxString(a,f),toTxString(a,g),a['object']['clock']()]}):a['moveCall']({'target':progressFn('next'),'arguments':[toTxObject(a,b),toTxObject(a,c),toTxObject(a,d),toTxString(a,e),toTxString(a,f),toTxString(a,g),a['object']['clock']()]});}export async function getMachineNodeForward(a,b,c,d,e){try{const g=await queryTableItem_MachineNode({'parent':b,'key':d,'no_cache':a['no_cache'],'network':a['network']});if(!g)return{'error':'Target\x20node\x20\x22'+d+'\x22\x20does\x20not\x20exist\x20in\x20Machine('+b+').\x20Please\x20check:\x201)\x20If\x20the\x20node\x20name\x20is\x20spelled\x20correctly;\x202)\x20If\x20the\x20Machine\x20is\x20properly\x20published;\x203)\x20If\x20the\x20correct\x20Machine\x20object\x20is\x20being\x20used.'};if(g['type']!==ObjectType['TableItem_MachineNode'])return{'error':'Query\x20returned\x20incorrect\x20type.\x20Expected:\x20'+ObjectType['TableItem_MachineNode']+',\x20Actual:\x20'+g['type']};const h=g,i=h['value']['find'](k=>k['prev_node']===c);if(!i){const k=h['value']['map'](m=>m['prev_node']),l=h['value']['flatMap'](m=>m['forwards']['map'](o=>m['prev_node']+'.'+o['name']));return{'error':'Connection\x20from\x20current\x20node\x20\x22'+c+'\x22\x20to\x20target\x20node\x20\x22'+d+'\x22\x20does\x20not\x20exist.\x20'+('Available\x20previous\x20nodes:\x20['+(k['join'](',\x20')||'none')+'].\x20')+('Available\x20forward\x20paths:\x20['+(l['join'](',\x20')||'none')+'].\x20')+'Please\x20check:\x201)\x20If\x20the\x20current\x20node\x20is\x20correct;\x202)\x20If\x20the\x20target\x20node\x20is\x20correct;\x203)\x20If\x20this\x20path\x20is\x20defined\x20in\x20the\x20Machine.'};}const j=i['forwards']['find'](m=>m['name']===e);if(!j){const m=i['forwards']['map'](o=>o['name']);return{'error':'Forward\x20\x22'+e+'\x22\x20does\x20not\x20exist.\x20'+('Available\x20forwards\x20from\x20\x22'+c+'\x22\x20to\x20\x22'+d+'\x22:\x20['+(m['join'](',\x20')||'none')+'].\x20')+'Please\x20check\x20if\x20the\x20forward\x20name\x20is\x20spelled\x20correctly.'};}return{'forward':j};}catch(o){if(o?.['message']?.['includes']('dynamicFieldNotFound'))return{'error':'Target\x20node\x20\x22'+d+'\x22\x20does\x20not\x20exist\x20in\x20Machine('+b+').\x20Please\x20check:\x201)\x20If\x20the\x20node\x20name\x20is\x20spelled\x20correctly;\x202)\x20If\x20the\x20Machine\x20is\x20properly\x20published;\x203)\x20If\x20the\x20correct\x20Machine\x20object\x20is\x20being\x20used.'};throw o;}}