connect-concierge

0.16.47 • Public • Published

connect-concierge Build Status

Coleção de middlewares usados na aplicação de backoffice Concierge. É compatível com connect e grunt-connect (para poder ser usado em desenvolvimento).

Ao desenvolver um admin, deve ser usado com o grunt-vtex

Instalação

$ npm install --save-dev connect-concierge

Pré-requisitos

  1. O index do admin deve ser um .dust. Se ele é um .html, basta alterar a extensão.
  2. O package.json do admin deve conter a chave paths. Exemplo:
"paths": [
  "/admin/checkout"
],

Integrando com um admin

No Gruntfile do admin desejado:

GruntVTEX = require 'grunt-vtex'
Concierge = require 'connect-concierge'
 
module.exports = (grunt) ->
  pkg = grunt.file.readJSON('package.json')
 
  concierge = new Concierge({grunt: gruntverbose: grunt.option('verbose')})
  middlewares = concierge.getMiddlewares()
 
  defaultConfig = GruntVTEX.generateConfig(gruntpkg{
    relativePath: 'admin/checkout'
    replaceGlob: "build/**/{index.html,index.dust,app.js,app.min.js}"
    proxyTarget: 'https://portal.vtexcommercebeta.com.br:443'
    additionalMiddlewares: middlewares
  })

Detalhes importantes:

  • A opção relativePath deve seguir o modelo 'admin/nome-do-admin'. Barras extras quebrarão sua aplicação
  • Certifique-se que a opção replaceGlob inclui o index.dust

Também é necessário incluir a task getTags do grunt-vtex no inicio da task default:

tasks = {
  default: ['getTags''build''connect''watch']
}

Configure o NODE_ENV para usar somente as opções de desenvolvimento:

GruntVTEX = require 'grunt-vtex'
Concierge = require 'connect-concierge'
process.env.NODE_ENV = 'development'

Ignorando middlewares

options = {
  exclude: ['licenseManagerCall''renderTemplate']
}
 
concierge = new Concierge(grunt: gruntverbose: grunt.option('verbose'))
middlewares = concierge.getMiddlewares(options)

Helpers

Diversos helpers podem ser usados no seu index.dust para tornar sua vida mais fácil!

topbarData

Busca informações da Topbar do License Manager

<script>vtex.topbar.topbar = new vtex.topbar.Topbar({@topbarData /})</script> 
version

Resolve versão mais recenente de um app no major especificado.

<script src='//io.vtex.com.br/alfredo-ui/{@version app="alfredo-ui" major="2" /}/alfredo-tpls.js'></script>

O helper version também recebe um parâmetro opcional env. Default: stable

aclData

Busca dados de ACL para um determinado app

<script>window.vtex.acl = {@aclData app="OMS" /}</script> 
conciergeData

Expôe informações de usuário (userId e email), accountName, e environment

<script>window.vtex.conciergeData = {@conciergeData /}</script> 
featuresData

Expôe as feature flags disponíveis

<script>window.vtex.features = {@featuresData /}</script> 

Middlewares

O método getMiddlewares() devolve um array com os middlewares para desenvolvimento já na ordem correta.

Alguns middlewares são usados apenas em ambiente de desenvolvimento, outros apenas em produção:

  • prepareReq (dev): Prepara dados da requisição
    • Parse de cookies
  • checkHosts: Verifica se o host é VTEX
  • replaceHost (dev): Altera o host .vtexlocal.com.brpara .vtexcommercebeta.com.br
  • redirectToKnownHost (prod): Se o host não estiver na lista de hosts conhecidos, consulta o License Manager para saber o accountName e redireciona para .vtexcommercestable. Hosts conhecidos:
    • vtexcommerce
    • vtexcommercebeta
    • vtexcommercealfa
    • vtexcommercestable
    • vtexlocal
    • vtexpayments
    • vtexlab
    • myvtex
  • connectVtexid (dev): Utiliza o módulo connect-vtexid para resolver autenticação
  • getAccountName: Resolve accountName, respeitando a ordem de prioridade:
    1. Header X-VTEX-AccountName
    2. Cookie concierge-account
    3. Querystring an
    4. Host
  • getEnvironment: Resolve environment, respeitando a ordem de prioridade:
    1. Header X-VTEX-Environment
    2. Cookie concierge-env
    3. Querystring environment
    4. Host
  • resolveTags (dev): Verifica existencia do tags.json baixado pelo grunt
  • resolveTemplate (dev): Procura o arquivo index.dust no filesystem
  • licenseManagerCall: Busca informações da Topbar e faz cache por 5 minutos
  • featureToggleCall: Busca informações das feature flags disponiveis para esse admin. Faz cache por 8 minutos
  • renderTemplate: Devolve resposta com html renderizado

Readme

Keywords

none

Package Sidebar

Install

npm i connect-concierge

Weekly Downloads

28

Version

0.16.47

License

none

Unpacked Size

64.7 kB

Total Files

46

Last publish

Collaborators

  • mateuspontes
  • alexalves2501
  • brunojdo
  • carolinerpessoa
  • evertonataide
  • gtkatakura
  • vtexlab-user
  • afonsopraca
  • breno
  • gugiserman
  • oriente
  • firstdoit
  • rdmuniz
  • vmattos
  • fredppm