A progressive Node.js RPA framework for building efficient and scalable web services automation applications.
Proxtractor cloud for running automated web services
The CLI works with schematics, and provides built in support from the schematics collection at @proxtractor/proxtractor-schematics.
Read more here.
$ npm install -g @proxtractor/core
<!> : take care about project architecture if you want to install as /cli
@PrxPipe({
// required for task xml selector
selector:"my-pipe",
})
export class MyPipe extends BaseDataPipe<IDataSchemaNode>{
accumulate(value:IDataSchemaNode):void{
}
@Accumulator({name:"email",required:boolean})
accumulateEmail(value:TextSchemaNode):void{
//accumulate your nodeValue data fields/items.
this.value = value;
}
}
@PrxAction({
// required for task xml template
selector:"my-action",
})
export class MyAction /* implement Action lifecycle like OnInit , OnDestroy , OnSuccess , OnDataRecived .... */{
@Option({name:string,required:boolean})
constructor(){private driver:MyDriver /* other dependecies*/}
start(context:ActionContext):ActionObservable<ActionContext>{
return new ActionObservable((async subscriber=>{
// this.driver.agent. ...
await subscriber.next(context);
subscriber.complete()
}))
}
}
NB : - Action can have pipe class as a injected dependency - Action should have driver agent type generic type.
@PrxInjectable({
// Injectable params coming soon
})
export class ChromiumAgent{
// configuration values injected from PrxConfigService for environment variables
@Config({name:string,required:boolean})
constructor(){}
}
@PrxTask({
template:"robot.xml"
})
/*
** Task lifecylces **
OnInit : Task initialized lifecycle
OnSuccess : Task finished with success
OnDataRecived : Data recived and beeing to pass to pipe .
OnError : Task finish with error
*/
export MyTask implements OnInit , OnSuccess , OnDataRecived , OnError{
}
<?xml version="1.0" encoding="UTF-8" ?>
<task>
<metadata>
<meta type="title">
<!-- Task title here -->
</meta>
<meta type="description">
<!-- Task description here -->
</meta>
<meta type="version">1.0</meta>
</metadata>
<input>
<schema>
</schema>
</input>
<playbook>
<pipe-selector>
<!--
The engine will affect each action return data to each pipe accumulator in key order.
If you do not give a pipe accumulator key , the engine will use default pipe accumulator.
If the key is not found , it will use argumented pipe accumulator.
-->
<action-selector pipe-option-key="value" for="parent-pipe-accumulator">
</action-selector>
<action-selector>
</action-selector>
</pipe-selector>
</playbook>
</task>
src
pipes
main.pipe.ts
tasks
main.task.ts
main.task.xml
modules
app.module.ts
main.ts
.gitingore
.env
package.json
tsconig.json
readme.md
#Proxtarctor modules design
@PrxModule({
// deprecated option
declarations:[],
imports:[],
exports:[],
// providers in this module
providers:[]
})
export class MyModule {
}
to be listed
- Task Option Multi-selection value options ( example : button type in click puppeteer action .)
- Task Option Multi-selection value options ( example : button type in click puppeteer action ).
- Modules initialization .
- Pre- Parsing & building tasks.
- Data store / file store services.
- Data accumlations in data pipes engine task worker.
- Routing and server.
- Confgiuration service.
- Cli create , build run and manage projects .
- Tasks , modules and actions lifecycles