1.0.24 • Published 3 months ago

create-app-core v1.0.24

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

use lib

import env from 'dotenv' env.config()

import { system } from 'create-app-core' #start

await system.start({ events: [] })

Event Redis

//npm i redis //## .env /* REDIS_PASSWORD="" REDIS_HOST="" REDIS_PORT=

*/

await system.start({ events: 'redis' })

Event Rabbitmq

//npm i amqplib //## .env /* RABBITMQ_URL=

*/ { await system.start({ events: 'rabbitmq' })

}

//system.factories //const { }=system.factories

{

#service

// register service

createCoreService('test', ({ system }) => ({
    async create(input) {
        return input
    },

}))

// call service
await system.service('test.create').execute({})

}

{ #events

// register

createCoreEvent('test', ({ system }) => ({
    "create": {
        type: 'service',//[service,redis,rabbitmq,socket]
        ops: {
            rabbitmq: {
                queue: '',
                exchangeName: '',
                pattern = '',
                exchangeType: ''
            },
            socket: {
                client: '',
                eventName: '',
                rooms: []

            }
        },
        handler: (data) => {  //
            console.log(data, '...')
        }
    }
}))

}

{ // use redis typeEvent = 'redis' system.event(typeEvent).publish(topic, data) // use rabbitmq typeEvent = 'rabbitmq' system.event(typeEvent).publish(topic, data) // use rabbitmq > publish typeEvent = 'rabbitmq' topic = { routingKey = '', exchangeName = 'my-topic', exchangeType = 'topic' } system.event(typeEvent).publish(topic, data) // use rabbitmq > send typeEvent = 'rabbitmq' system.event(typeEvent).send(topic, data)

// use service
typeEvent = 'service'
system.event(typeEvent).publish(topic, data)

} { #Cron

// register
//npm i node-cron
await createCoreCron('test', ({ system }) => ({

    "create": {
        time: '* * * * * *',
        active: false,//true||false
        "fn": () => {
            console.log('_test_')
        }

    }

}))

//system.cron('test.create').start()
//system.cron('test.create').stop()

}

{ #Job //npm i bullmq // register await createCoreQueue('test', ({ system }) => ({

    "nameQueue": {
        fn: (job) => {
            console.log(job.data)
        }
    }

}))

// use job
//'job::queue'
const data = {}
await system.module('job::queue').queue('nameQueue').add('optional', data)

}

{ #JobTask //npm i bullmq

await createCoreTask('task', ({ system }) => ({

    "nameQueue": {

        completed: (job, res) => {
            console.log(`${job.id} has completed!`, res);
        },
        progress: (job, progress) => {
            console.log(`${job.id} has progress `, progress);
        },
        failed: (job, err) => {
            console.log(`${job.id} has failed with ${err.message}`);
        },
        steps: [{
            input: 'input',// job.data
            do: (data) => {
                console.log(data)
                return {}

            },
            undo() {

            }
        },
        {
            input: '0',//output of step[0].output
            do: (data) => {
                console.log(data)
                return {}
            },
            undo() {

            }
        }
        ]

    }

}))
// use jobTask
//'task::task'
const dataTask = {}
await system.module('job::task').task('nameQueue').add('optional', dataTask)

} {

##Seneca //Register

await createCoreSeneca({
    server: {
        port: process.env.GATEWAY_PORT,
        host: process.env.GATEWAY_HOST
    },
    services: [{
        auth: [],
        name: 'user.*'
    },
    {
        auth: [],
        name: 'client.*'
    }
    ],
    clients: [{
        jwt: 'ddddd',
        name: 'test',
        port: process.env.GATEWAY_PORT,
        host: process.env.GATEWAY_HOST
    }, {
        jwt: 'ddddd',
        name: 'config',
        port: process.env.GATEWAY_CONFIG_PORT,
        host: process.env.GATEWAY_CONFIG_HOST
    }, {
        jwt: 'ddddd',
        name: 'auth',
        port: process.env.GATEWAY_AUTH_PORT,
        host: process.env.GATEWAY_AUTH_HOST
    }]
})


await system.module('seneca::client.test').cmd('user.index', { name: 'd' })

}

{

## createCorePath
//register

const pathService = '/src/services'
await createCorePath(pathService, {
    name: 'user',
    mode: 'createCoreService',
})
//src/services
//file:user.js
export default ({ system }) => ({
    async index(data) {
        console.log(data)
    }
})

}

{ const pathJob = '/src/jobs' await createCorePath(pathService, { name: 'user', mode: 'createCoreJob', }) //src/jobs //file:user.js export default ({ system }) => ({ "teste": { fn: (job) => { console.log(job.data) } } }) }

{ const pathTask = '/src/tasks' await createCorePath(pathService, { name: 'user', mode: 'createCoreTask', }) //src/task //file:user.js export default ({ system }) => ({ "nameQueue": {

        completed: (job, res) => {
            console.log(`${job.id} has completed!`, res);
        },
        progress: (job, progress) => {
            console.log(`${job.id} has progress `, progress);
        },
        failed: (job, err) => {
            console.log(`${job.id} has failed with ${err.message}`);
        },
        steps: [{
            input: 'input',// job.data
            do: (data) => {
                console.log(data)
                return {}

            },
            undo() {

            }
        },
        {
            input: '0',//output of step[0].output
            do: (data) => {
                console.log(data)
                return {}
            },
            undo() {

            }
        }
        ]

    }
})

}

{ const pathCron = '/src/cron' await createCorePath(pathService, { name: 'user', mode: 'createCoreCron', }) //src/jobs //file:user.js export default ({ system }) => ({ "create": { time: '* * * * * *', active: false,//true||false "fn": () => { console.log('test') }

    }
})

}

{ const pathRouter = '/src/cron' await createCorePath(pathService, { name: 'user', mode: 'createCoreRouter', }) //src/routers //file:user.js export default ({ system }) => ({ prefix: '', routers: [{ path: '/', auth: [], middleware: [], handler: (req, res) => {

        }
    }]
})

}

{ const pathEvent = '/src/events' await createCorePath(pathService, { name: 'user', mode: 'createCoreEvent', }) //src/events //file:user.js export default ({ system }) => ({ "index": { type: 'redis', handler: (data) => { console.log(data, '...') } } }) }

{ const pathSocket = '/src/server/sockets' await createCorePath(pathService, { name: 'user', mode: 'createCoreSocket', }) //src/server/sockets //file:index.js export default ({ system }) => ({

})

}

{ const fileServer = '/src/server/server.js' await createCoreServer(pathService, { name: 'user', mode: 'createCoreSocket', })

///
export default ({ routers, sockets }) => {

    console.log(routers)



    return {
        start() {

        },
        close() {

        }
    }

}

}

1.0.19

3 months ago

1.0.18

3 months ago

1.0.17

3 months ago

1.0.22

3 months ago

1.0.21

3 months ago

1.0.20

3 months ago

1.0.24

3 months ago

1.0.23

3 months ago

1.0.16

4 months ago

1.0.15

4 months ago

1.0.14

4 months ago

1.0.13

4 months ago

1.0.12

4 months ago

1.0.11

4 months ago

1.0.10

4 months ago

1.0.9

4 months ago

1.0.8

4 months ago

1.0.7

4 months ago

1.0.6

4 months ago

1.0.5

4 months ago

1.0.4

4 months ago

1.0.3

4 months ago

1.0.2

4 months ago

1.0.1

4 months ago

1.0.0

4 months ago