npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

orki-core-consumer

v0.0.103

Published

## Como instalar o módulo

Downloads

273

Readme

orki-core-consumer

Como instalar o módulo

    npm install orki-core-consumer

Apos instalar, você precisa apontar para a spec e gerar o skeleton

Configurando:

    npx orki-core-consumer configure

Informe o host do ambiente orki. Exemplo: https://api.orki.example

Gerando o skeleton:

    npx orki-core-consumer generate -w <workspace> -f <folder>

Inofrme o workspace e a pasta onde o skeleton será gerado.

|O Workspace é o nome dados ao conjunto de APIs no ORKI.|

Como usar

Para usar esse módulo, você precisa configurar o host e token

orkiSetConfig({
    baseUrl: 'https://api.orki.example',
    token: '<token>',
})

|A configuração acima deve ficar no topo da execução. Exemplo, na entrada de uma rota|

Executando scripts

Simples, passando o nome do script, por padrão é usado o metodo GET

OrkiScript.execute<any>('welcome').then((data) => {
    console.log(data.result)
}).catch((err) => {
    console.log(err)
})

Para modificar a requisicao, basta passar o segundo parametro

OrkiScript.execute<any>({
    script: 'welcome',
    body: {
        name: 'Teste'
    },
    method: 'POST',
    query: {
        id: '5ce5919009fbfb0025132016'
    }
}).then((data) => {
    console.log(data.result)
}).catch((err) => {
    console.log(err)
})

Como user as variáveis suspend para scripts ?

Nesse caso, a variavel é true quando quanquer um script é chamado

Para usar, basta importar a classe OrkiScript e usar a variavel suspend.

class AppComponent {
    get suspend(): boolean { 
        return OrkiScript.suspend['<scriptName>']
    }
}

Interagindo com o CRUD

Para interagir com o CRUD, siga os exemplos abaixo:

Listando

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        name: 'teste'
    },
    invertedFilter: {
        organization: '5ce5919009fbfb0025132016'
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Ouvindo eventos

Ouvindo os eventos de created

public async ngOnInit(): Promise<void> {
    await ProgramAppService.listen({ event: 'created', }, async (error?: any, message?: OrkiEventMessage<Program>) => {      
        // message.data typeof Program
        console.log('event', message, error)
    })
}

Fechando a conexão

public async ngOnDestroy(): Promise<void> {
    await ProgramAppService.closeListen()
}

Listando com exemplos de filtro

Filtro de datas

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        created_at: {
            start: '2019-05-22T00:00:00.000Z',
            end: '2019-05-22T23:59:59.999Z'
        }
    },
    invertedFilter: {
        created_at: {
            start: '2019-05-22T00:00:00.000Z',
            end: '2019-05-22T23:59:59.999Z'
        }
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Filtro de números

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        age: {
            start: "18",
            end: "25"
        }
    },
    invertedFilter: {
        age: {
            start: "18",
            end: "25"
        }
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Filtro de booleanos

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        active: true
    },
    invertedFilter: {
        active: true
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Filtro com contém

ProgramAppService.list({
    page: 1,
    maxPerPage: 10,
    filter: {
        organization: ['5ce5919009fbfb0025132016']
    },
    invertedFilter: {
        organization: ['5ce5919009fbfb0025132016']
    },
    sort: {
        _id: 1
    },
}).then((res) => {
    console.log(res.data)
    console.log(res.pages)
    console.log(res.total)
}).catch((err) => {
    console.log(err)
})

Recuperando um registro por ID

ProgramAppService.getById('5ce5919009fbfb0025132019')
.then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Criando um registro

ProgramAppService.create({
    name: 'Teste',
    organization: '5ce5919009fbfb0025132016'
}).then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Criando um registro com upload

<input type="file" id="file" />
ProgramAppService.create({
    attachment: {
        file: document.querySelector('#file'),
        isPublic: true,
        progress: (progress: number) => {
            console.log('Progresso:', progress)
        }            
    }
}).then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Atualizando um registro

ProgramAppService.updateById('5ce5919009fbfb0025132019', {
    name: 'Teste',
    organization: '5ce5919009fbfb0025132016'
}).then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Removendo um registro

ProgramAppService.deleteById('5ce5919009fbfb0025132019')
.then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Como user as variáveis suspend das classes ?

Nesse caso, a variavel é true quando quanquer ação do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspend
    }
}

Nesse caso, a variavel é true quando a ação list do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendList
    }
}

Nesse caso, a variavel é true quando a ação getById do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendGet
    }
}

Nesse caso, a variavel é true quando a ação create do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendCreate
    }
}

Nesse caso, a variavel é true quando a ação updateById do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendUpdate
    }
}

Nesse caso, a variavel é true quando a ação deleteById do CRUD ProgramAppService é chamado

class AppComponent {
    get suspend(): boolean { 
        return ProgramAppService.suspendDelete
    }
}

Interagindo com os Actions

Para interagir com os Actions, siga os exemplos abaixo:

Chamada assincrona, retorna um executionId para verificação de status

NameAction.execute({
    name: 'Teste'
}).then((executionId) => {
    console.log(executionId)
}).catch((err) => {
    console.log(err)
})

Verificando o status de uma chamada assincrona, retorna o resultado da execução

NameAction.status('<executionId>')
.then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Chamada sincrona, retorna o resultado da execução após o término

NameAction.executeSync({
    name: 'Teste'
}).then((res) => {
    console.log(res)
}).catch((err) => {
    console.log(err)
})

Como user as variáveis suspend das classes ?

Nesse caso, a variavel é true quando quanquer ação do Action executeSync é chamado

class AppComponent {
    get suspend(): boolean { 
        return NameAction.suspendExecuteSync
    }
}

Core Storage, como usar ?

O modulo permite fazer upload, remoção e download de arquivos.

Fazendo upload de um arquivo

await OrkiStorage.upload('mode_name', 'bucket', [{
    file: document.querySelector('#file'), // Referencia ao input file
    isPublic: false,
    progress: (p) => console.log(p)
}])

Removendo um arquivo

await OrkiStorage.remove({
    "key": "path/to/file.txt",
    "bucketId": "65271722ac4580823b739d18"
})

Baixando um arquivo

await OrkiStorage.download({
    "key": "path/to/file.txt",
    "bucketId": "65271722ac4580823b739d18"
}).then((blob) => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement("a");
    a.href = url;
    a.download = 'file.txt';
    document.body.appendChild(a);
    a.click();
    a.remove();
})

Core LLM, como usar ?

O identifier é o identificador do contexto, o client precisa gerar um identificador único para cada contexto. É recomandado usar o uuid para gerar o identificador.

O llmbotIdentifier é o identificador do Bot configurado no servidor.

Recuperando os contextos

console.log(await OrkiLLM.getContexts())
[
    {
        "isActive": true,
        "_id": "657df2ac561ce65e5f71903e",
        "identifier": "uxk4xx",
        "authentication": "657cb9f67ef62aeebbcb992e",
        "llmbot": "657cefae80a801b4f37d233e",
        "createdAt": "2023-12-16T18:55:40.725Z",
        "updatedAt": "2023-12-16T18:55:40.725Z",
        "__v": 0
    },
    {
        "isActive": true,
        "_id": "657defeedbc83e0f0d8a0331",
        "identifier": "93b03640-b4a6-44be-ae8a-dc25520a5f19",
        "authentication": "657cb9f67ef62aeebbcb992e",
        "llmbot": "657cefae80a801b4f37d233e",
        "createdAt": "2023-12-16T18:43:58.915Z",
        "updatedAt": "2023-12-16T18:43:58.915Z",
        "__v": 0
    },
    {
        "isActive": true,
        "_id": "657def0adbc83e0f0d89ffe5",
        "identifier": "8e9a73ca-9b39-4488-ba61-c1d43cb5155a",
        "authentication": "657cb9f67ef62aeebbcb992e",
        "llmbot": "657cefae80a801b4f37d233e",
        "createdAt": "2023-12-16T18:40:10.832Z",
        "updatedAt": "2023-12-16T18:40:10.832Z",
        "__v": 0
    }
]

Criando um contexto

console.log(await OrkiLLM.createContext({
    identifier,
    llmbotIdentifier: 'MyBot'
}))

Se inscrevendo para ouvir os eventos

await OrkiLLM.events(indentifier, async (error, event) => {
    if(!error) return
    console.log(`Event:` event.event)
})
{
    "event": "writing",
    "identifier": "7qd5ii",
    "data": {}
}

Recuperando as mensagens

console.log(await OrkiLLM.getMessages(indentifier))
{
    "data": [
        {
            "_id": "657df492561ce65e5f719767",
            "role": "user",
            "content": "Qual a rua do cep 01001000 ?",
            "createdAt": "2023-12-16T19:03:46.762Z"
        },
        {
            "_id": "657df492561ce65e5f71976d",
            "role": "assistant",
            "content": "A rua do CEP 01001000 é a Praça da Sé.",
            "createdAt": "2023-12-16T19:03:46.790Z"
        }
    ],
    "total": 2
}

Enviando uma mensagem

console.log(await OrkiLLM.sendMessage(indentifier, 'Qual a rua do cep 01001000 ?'))
{
    "request": {
        "_id": "657df492561ce65e5f719767",
        "content": "Qual a rua do cep 01001000 ?",
        "role": "user",
        "createdAt": "2023-12-16T19:03:46.762Z"
    },
    "response": {
        "_id": "657df492561ce65e5f71976d",
        "content": "A rua do CEP 01001000 é a Praça da Sé.",
        "role": "assistant",
        "createdAt": "2023-12-16T19:03:46.790Z"
    },
    "functions": [
        {
            "_id": "657df492561ce65e5f71976b",
            "detail": {
                "function_call": {
                    "name": "viacep",
                    "arguments": {
                        "cep": "01001000"
                    }
                },
                "function_result": {
                    "success": true,
                    "endereco": {
                        "cep": "01001-000",
                        "logradouro": "Praça da Sé",
                        "complemento": "lado ímpar",
                        "bairro": "Sé",
                        "localidade": "São Paulo",
                        "uf": "SP",
                        "ibge": "3550308",
                        "gia": "1004",
                        "ddd": "11",
                        "siafi": "7107"
                    }
                }
            },
            "createdAt": "2023-12-16T19:03:46.780Z"
        }
    ]
}

Desativando um contexto

console.log(await OrkiLLM.disableContext(indentifier))