eitri-cli 1.38.0-beta.9 → 1.39.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/.husky/pre-commit +0 -0
  2. package/eitri-cli-v2/eitri-cli-v2.darwin-arm64.node +0 -0
  3. package/eitri-cli-v2/eitri-cli-v2.darwin-x64.node +0 -0
  4. package/eitri-cli-v2/eitri-cli-v2.linux-x64-gnu.node +0 -0
  5. package/eitri-cli-v2/eitri-cli-v2.win32-x64-msvc.node +0 -0
  6. package/eitri-cli-v2/index.d.ts +11 -1
  7. package/index.js +4 -21
  8. package/package.json +3 -49
  9. package/src/modules/app/AppCommand.js +1 -1
  10. package/src/modules/vegvisir/VegvisirCommand.js +7 -13
  11. package/.eslintrc.json +0 -26
  12. package/.prettierrc +0 -6
  13. package/src/cmd/clean.js +0 -144
  14. package/src/cmd/create.js +0 -332
  15. package/src/cmd/credentials.js +0 -105
  16. package/src/cmd/doctor.js +0 -70
  17. package/src/cmd/invite.js +0 -87
  18. package/src/cmd/list.js +0 -36
  19. package/src/cmd/login.js +0 -70
  20. package/src/cmd/loginV2.js +0 -89
  21. package/src/cmd/manage-env.js +0 -129
  22. package/src/cmd/open-share.js +0 -6
  23. package/src/cmd/order-details.js +0 -6
  24. package/src/cmd/push-version.js +0 -260
  25. package/src/cmd/show-message-if-outdated-package.js +0 -32
  26. package/src/cmd/signup.js +0 -71
  27. package/src/cmd/start.js +0 -181
  28. package/src/cmd/tail-logs.js +0 -26
  29. package/src/cmd/test-initialization-params.js +0 -6
  30. package/src/cmd/validate.js +0 -164
  31. package/src/cmd/version.js +0 -18
  32. package/src/enum/WatcherOpts.js +0 -3
  33. package/src/enum/target.js +0 -6
  34. package/src/helpers/request-listener-helper.js +0 -55
  35. package/src/model/EitriAppType.js +0 -4
  36. package/src/model/Payload.js +0 -45
  37. package/src/model/Target.js +0 -61
  38. package/src/model/User.js +0 -11
  39. package/src/service/AuthConfig.js +0 -85
  40. package/src/service/BlindGuardian.js +0 -131
  41. package/src/service/CliLogin.js +0 -52
  42. package/src/service/ConfigService.js +0 -9
  43. package/src/service/CredentialsService.js +0 -47
  44. package/src/service/EitriAppManager.js +0 -32
  45. package/src/service/EitriAppService.js +0 -49
  46. package/src/service/Emulator/AndroidEmulatorService.js +0 -132
  47. package/src/service/Emulator/IOSEmulatorService.js +0 -71
  48. package/src/service/EmulatorService.js +0 -17
  49. package/src/service/GATrackingStrategy.js +0 -16
  50. package/src/service/HashFolder.js +0 -79
  51. package/src/service/Http.js +0 -300
  52. package/src/service/HuginService.js +0 -38
  53. package/src/service/InviteService.js +0 -45
  54. package/src/service/LibsService.js +0 -191
  55. package/src/service/ManageEnvService.js +0 -10
  56. package/src/service/MiniLog.js +0 -166
  57. package/src/service/PrerequisitesValidator.js +0 -99
  58. package/src/service/QRCodeFactory.js +0 -81
  59. package/src/service/ReleaseService.js +0 -126
  60. package/src/service/Server.js +0 -220
  61. package/src/service/StarterService.js +0 -31
  62. package/src/service/TagTree.js +0 -101
  63. package/src/service/TargetService.js +0 -97
  64. package/src/service/TrackService.js +0 -11
  65. package/src/service/TrackingEitriAnalytics.js +0 -26
  66. package/src/service/TrackingService.js +0 -183
  67. package/src/service/ValidateResult.js +0 -57
  68. package/src/service/Watcher.js +0 -118
  69. package/src/service/Workspace.js +0 -1045
  70. package/src/service/WorkspaceManager.js +0 -76
  71. package/src/service/factories/DoubtsStarterFactory.js +0 -25
  72. package/src/service/factories/MiniWebAppFactory.js +0 -44
  73. package/src/service/factories/QRCodeStarterFactory.js +0 -154
  74. package/src/service/factories/WebStarterFactory.js +0 -88
  75. package/src/service/factories/WoodCoffeeFactory.js +0 -292
  76. package/src/util/AboutTemplate.jsx +0 -14
  77. package/src/util/FileUtils.js +0 -25
  78. package/src/util/GenericUtils.js +0 -41
  79. package/src/util/LibUtil.js +0 -32
  80. package/src/util/LogUtil.js +0 -14
  81. package/src/util/UrlUtils.js +0 -12
  82. package/src/util/UserLocalCredential.js +0 -128
  83. package/src/util/convertKeysToCamelCase.js +0 -26
  84. package/src/util/error-messages/error-messages.js +0 -24
  85. package/src/util/error-messages/invite/invite-error-messages.js +0 -14
  86. package/src/util/getCliVersion.js +0 -13
  87. package/src/util/getCreateFactory.js +0 -9
  88. package/src/util/getWorkspace.js +0 -37
  89. package/src/util/ipv4.js +0 -19
  90. package/src/util/manage-env.js +0 -65
  91. package/src/util/open-docs.js +0 -7
  92. package/src/util/os.js +0 -39
  93. package/src/util/server-url.js +0 -15
  94. package/src/util/template-utils.js +0 -21
  95. package/src/view/index.html +0 -19
@@ -1,166 +0,0 @@
1
- const io = require('socket.io-client')
2
- const chalk = require('chalk')
3
-
4
- class MiniLog {
5
- constructor(config) {
6
- if (!config) {
7
- throw new Error('MiniLog config is required')
8
- }
9
- this._config = config
10
- this.verbose = false
11
- }
12
-
13
- connect(roomName, silentOnConnect) {
14
- return new Promise((resolve, reject) => {
15
- const socket = this.createSocket()
16
- socket.on('connect', () => {
17
- if (!silentOnConnect) console.log('✓ Construindo para Workspace Temporário: ', roomName)
18
- socket.emit('joinRoom', roomName)
19
- resolve()
20
- })
21
- socket.on('connect_error', (e) => {
22
- if (silentOnConnect) console.error('Não foi possível conectar ao compilador', roomName)
23
- else console.error('Não foi possível conectar ao compilador', roomName, `${this._config.url} ${this._config.path}`)
24
- reject(e)
25
- })
26
- socket.on('onLog', (data) => {
27
- this.printLog(data)
28
- })
29
- this.socket = socket
30
- })
31
- }
32
-
33
- connectGeneric({roomName, args, skipLogs}) {
34
- return new Promise((resolve, reject) => {
35
- const socket = this.createSocket()
36
- socket.on('connect', () => {
37
- if(args?.verbose) {
38
- console.log('🔗 Conectando em: ', {roomName, args})
39
- }
40
-
41
- socket.emit('joinRoom', roomName)
42
- resolve()
43
- })
44
- socket.on('connect_error', (e) => {
45
- if (args?.verbose) {
46
- console.error('Não foi possível conectar em: ', {roomName})
47
- }
48
-
49
- reject(e)
50
- })
51
- socket.on('onLog', (data) => {
52
- if(!skipLogs){
53
- const message = this._colorizeMessage(data?.msg, data.method)
54
- const consoleProp = data?.method ? data.method : "log"
55
- console[consoleProp](message);
56
- }
57
- })
58
- this.socket = socket
59
- })
60
- }
61
-
62
- awaitForPushVersion() {
63
- return new Promise((resolve, reject) => {
64
- this.socket.on('onLog', (event) => {
65
- if (!event.publish) {
66
- return
67
- }
68
- if (event.publish.ok) {
69
- resolve(event)
70
- } else {
71
- this.pushVersionErrorFriendlyMessage(event)
72
- return process.exit(1)
73
- }
74
- })
75
- })
76
- }
77
-
78
- pushVersionErrorFriendlyMessage(event) {
79
- const errorMessage = event.publish.friendlyMessage || event.publish.error
80
-
81
- const withoutOrganizationError = "Request failed with status code 403"
82
-
83
- console.log("\n\n")
84
-
85
- if (errorMessage.includes(withoutOrganizationError)) {
86
- const messages = [
87
- "Você não faz parte da organização ou não está associado a este Eitri-App",
88
- "Por favor, entre em contato com o administrador da organização."
89
- ]
90
- console.error(messages.join("\n"))
91
- } else {
92
- console.error(errorMessage)
93
- }
94
- }
95
-
96
- awaitForGenerateLoginCredentials() {
97
- return new Promise((resolve) => {
98
- this.socket.on('onLog', (event) => {
99
- if(event.eventKey === "loginCredentials"){
100
- console.log("\n\n Iniciando configuração das suas credenciais...\n\n")
101
- resolve(event.credentials)
102
- }
103
- })
104
- })
105
- }
106
-
107
- createSocket() {
108
- if (this._config.path) {
109
- return io.connect(this._config.url, { path: this._config.path, transport: 'websocket' })
110
- } else {
111
- return io(this._config.url)
112
- }
113
- }
114
-
115
- printLog(data) {
116
- if (typeof data.msg === 'undefined') {
117
- return
118
- }
119
- if (
120
- typeof data.msg === 'string' &&
121
- data.msg.includes(
122
- 'Download the React DevTools for a better development experience'
123
- )
124
- ) {
125
- return
126
- }
127
-
128
- if (this.verbose) {
129
- console.log(`\x1b[34meitri ${data.userAgent}\n\x1b[0m\x1b[90m${data.msg}\x1b[0m`);
130
- }
131
-
132
- if (/^START RequestId/.test(data.msg)) {
133
- let msg = data.msg
134
- .replace(/Version: \$LATEST/, '')
135
- .split('\n')
136
- .map((line) => line.replace(/^[0-9]+[^\t]+\t.*?\t/, ''))
137
- .join('\n')
138
- console.log(chalk.cyan(msg))
139
- } else {
140
- // A propriedade userFriendlyMessage deve ser tratada pelo Eitri-App. Logaremos da forma como o Eitri-App nos fornecer o objeto.
141
- if (!data.method) {
142
- console.log(`\x1b[34meitri:\x1b[0m\x1b[97m${data.msg}\x1b[0m`);
143
- } else {
144
- const message = this._colorizeMessage(data.msg, data.method)
145
- console[data.method](`\x1b[34meitri [${data.slug}]:\x1b[0m${message}`);
146
- }
147
- }
148
- if (data.stopCLI) {
149
- process.exit(1)
150
- }
151
- }
152
-
153
- _colorizeMessage(message, method) {
154
- const colorizedMessage = {
155
- log: chalk.hex("#95DB00")(message),
156
- warn: chalk.yellow(message),
157
- error: chalk.red(message),
158
- info: chalk.green(message),
159
- debug: chalk.blue(message),
160
- };
161
-
162
- return colorizedMessage[method] || colorizedMessage.log
163
- }
164
- }
165
-
166
- module.exports = MiniLog
@@ -1,99 +0,0 @@
1
- const configService = require('./ConfigService')
2
- const UserLocalCredential = require('../util/UserLocalCredential');
3
- const Http = require('./Http');
4
- const TrackingEitriAnalytics = require('./TrackingEitriAnalytics');
5
- const MANAGER_URL = configService.get('eitriManager')?.url
6
- const { workspace } = require('../service/Workspace')
7
- const debug = require('debug')('eitri:PrerequisitesValidator')
8
- class PrerequisitesValidator {
9
-
10
- constructor(workspace) {
11
- this.workspace = workspace
12
- this.blindGuardian = workspace.blindGuardian;
13
- this.http = new Http(workspace.blindGuardian);
14
- this.userInfo = { id: "", email: "" }
15
- this.userOrgsData = []
16
- }
17
-
18
- async checkAll(args = {}) {
19
- this.checkCredentials(args)
20
- await this.isUserInOrg()
21
- }
22
-
23
- checkCredentials(args) {
24
- try {
25
- UserLocalCredential.checkForCredentials()
26
- debug("Sucesso na checagem de credenciais")
27
- } catch (error) {
28
- this.sendErrorToAnalytics("checkCredentials.error", error)
29
-
30
- const friendlyErrorMessage = `Por favor, execute o comando 'eitri login' para configurar suas credenciais`
31
- console.log(`\n\x1b[1m\x1b[31m${friendlyErrorMessage}\x1b[0m\n`);
32
-
33
- if (args?.verbose) {
34
- debug("ERRO na checagem de credenciais", { message: error?.message, error })
35
- console.error("\nError: ", { message: error?.message, error })
36
- }
37
-
38
- process.exit(1);
39
- }
40
- }
41
-
42
- async isUserInOrg() {
43
- try {
44
- const eitriAppConf = workspace.getMiniConf();
45
-
46
- const respEitriAppData = await this.http.get(`${MANAGER_URL}/v2/eitri-apps/${eitriAppConf.id}`);
47
- const respMyOrgsData = this.userOrgsData
48
-
49
- const belongTo = respMyOrgsData?.some(org => org?.id === respEitriAppData?.organizationId)
50
- const myOrgs = respMyOrgsData?.length > 0
51
- if (myOrgs && belongTo) {
52
- return
53
- }
54
-
55
- } catch (error) {
56
- this.sendErrorToAnalytics("isUserInOrg.error", { organizations: this.userOrgsData })
57
-
58
- if (args?.verbose) {
59
- debug("ERRO na verificação de conexão", { message: error?.message, error })
60
- console.error("\nError: \n", { message: error?.message, errorData: error?.response?.data })
61
- }
62
-
63
- const friendlyErrorMessage = `Você ainda não foi registrado em nenhuma organização ou não pertence a organização deste Eitri-App. \n Por favor, entre em contato com o administrador da sua organização.`
64
- console.log(`\n\x1b[1m\x1b[31m ${friendlyErrorMessage} \x1b[0m\n`)
65
- process.exit(1)
66
- }
67
- }
68
-
69
- async getUserBasicInfo() {
70
- if (this.userInfo.id && this.userInfo.email) {
71
- return this.userInfo
72
- }
73
-
74
- const token = await this.blindGuardian.getToken().then(res => res).catch(_err => null)
75
- this.userInfo = {
76
- id: token?.id || "",
77
- email: token?.email || ""
78
- }
79
- return {
80
- id: token?.id || "",
81
- email: token?.email || ""
82
- }
83
- }
84
-
85
-
86
- sendErrorToAnalytics(eventName = "", data = {}) {
87
- TrackingEitriAnalytics.sendEvent({
88
- eventName,
89
- userId: this.userInfo.id,
90
- data: {
91
- userData: this.userInfo,
92
- ...data
93
- }
94
- }).catch(_err => null)
95
- }
96
-
97
- }
98
-
99
- module.exports = PrerequisitesValidator
@@ -1,81 +0,0 @@
1
- const tmp = require('tmp')
2
- const qrcode = require('qrcode')
3
- const GenericUtils = require('../util/GenericUtils')
4
- const open = require('open')
5
-
6
- // Fabrica de QR code :-)
7
- class QRCodeFactory {
8
-
9
- generate(args) {
10
- if (args?.qrPrinter) {
11
- console.log(`Abrindo QR-Code no ${args?.qrPrinter}`)
12
- open(args?.qrCodePath, {app: args?.qrPrinter})
13
- return
14
- }
15
-
16
- qrcode.toString(args?.fullUrl, {type:"terminal", small: true}, function(_, qrCode) {
17
- console.log(qrCode)
18
- })
19
- }
20
-
21
- async create(data, eitriAppSlug = "", args = {}) {
22
- this.displayQrCodeInstruction(args?.playground)
23
-
24
- let qrCodeTempPath = `${eitriAppSlug}::${new Date().getTime()}`
25
- if(args?.qrPrinter){
26
- qrCodeTempPath = await this.tempFile(eitriAppSlug)
27
- await this.createQRCodeImage(qrCodeTempPath, data)
28
- }
29
- return qrCodeTempPath
30
- }
31
-
32
- createQRCodeImage(qrCodeTempPath, data) {
33
- return new Promise((resolve, reject) => {
34
- qrcode.toFile(
35
- qrCodeTempPath,
36
- data,
37
- {small: true},
38
- (err) => {
39
- if (err) {
40
- return reject(err)
41
- }
42
- resolve()
43
- })
44
- })
45
- }
46
-
47
- tempFile(eitriAppSlug = "") {
48
- return new Promise((resolve, reject) => {
49
- const currentDateTime = GenericUtils.formatQrCodeCurrentDateTime()
50
- const qrCodeName = `[eitri] ${eitriAppSlug} ${currentDateTime}.png`
51
- tmp.file(
52
- { name: qrCodeName, keep: true },
53
- function (err, tempPath) {
54
- if (err) {
55
- return reject(err)
56
- }
57
- resolve(tempPath)
58
- }
59
- )
60
- })
61
- }
62
-
63
- displayQrCodeInstruction(playGroundMode = false) {
64
- const separator = "=================================================="
65
- console.log("\n" + separator)
66
-
67
- if (playGroundMode) {
68
- console.log('Para iniciar seu Eitri-App, escaneie o QR Code')
69
- console.log('exibido usando o Eitri Playground')
70
- console.log(separator)
71
- return
72
- }
73
-
74
- console.log("Para iniciar seu Eitri-App, escaneie o QR Code exibido.")
75
- console.log('Certifique-se de usar o leitor de QR Code')
76
- console.log('do aplicativo destinado ao seu Eitri-App.')
77
- console.log(separator)
78
- }
79
- }
80
-
81
- module.exports = QRCodeFactory
@@ -1,126 +0,0 @@
1
- const path = require('path')
2
- const fs = require('fs')
3
- const childProcess = require('child_process')
4
- const rimraf = require('rimraf');
5
-
6
- const TEMP_FOLDER_NAME = "temp_eitri_ci"
7
- const TEMP_CHANGELOG_FILE_NAME = "CHANGELOG_TEMP"
8
- const CHANGELOG_FILE_NAME = "CHANGELOG.md"
9
-
10
- module.exports = async function releaseService() {
11
- _printLog(`\x1b[1m\x1b[32mIniciando Geração Automática de Versão\x1b[0m`)
12
- await _factoryTempFolder()
13
- await _factoryReleaseConfig()
14
- await _downloadDependencies()
15
- await _installDependencies()
16
- await _updateChangeLog()
17
- await _clearResources()
18
- }
19
-
20
- async function _factoryTempFolder() {
21
- try {
22
- fs.mkdirSync(TEMP_FOLDER_NAME, {recursive: true})
23
- } catch (error) {
24
- _throwError("Erro ao gerar pasta temporária", error?.message)
25
- }
26
- }
27
-
28
- async function _factoryReleaseConfig() {
29
- try {
30
- const releasercContent = {
31
- "branches": [
32
- "main",
33
- "master",
34
- ],
35
- "plugins": [
36
- "@semantic-release/commit-analyzer",
37
- "@semantic-release/release-notes-generator",
38
- [
39
- "@semantic-release/changelog",
40
- {
41
- "changelogFile": `${TEMP_CHANGELOG_FILE_NAME}.md`
42
- }
43
- ],
44
- [
45
- "@semantic-release/git",
46
- {
47
- "assets": [
48
- `${CHANGELOG_FILE_NAME}`,
49
- "eitri-app.conf.js",
50
- `!${TEMP_FOLDER_NAME}`
51
- ],
52
- "message": "chore(release): ${nextRelease.version}[skip ci]\n\n${nextRelease.notes}"
53
- }
54
- ]
55
- ]
56
- };
57
-
58
- const releasercFilePath = path.join(TEMP_FOLDER_NAME, '.releaserc.json');
59
- fs.writeFileSync(releasercFilePath, JSON.stringify(releasercContent, null, 2));
60
- } catch (error) {
61
- _throwError("Erro ao criar o arquivo de configuração da release", error?.message)
62
- }
63
- }
64
-
65
- async function _downloadDependencies() {
66
- _printLog("Baixando as configurações. Este processo pode demorar alguns segundos.")
67
- childProcess.execSync(`cd ${TEMP_FOLDER_NAME}/ && npm i semantic-release @semantic-release/git @semantic-release/changelog`)
68
- }
69
-
70
- async function _installDependencies() {
71
- _printLog("Instalando configuração temporária de CI. Este processo pode demorar alguns segundos.")
72
- childProcess.execSync(`cd ${TEMP_FOLDER_NAME}/ && npx semantic-release --no-ci --no-npm-publish --no-github-publish --working-directory=${TEMP_FOLDER_NAME} --skip-verify-conditions`)
73
- _printLog("Configuração de CI instalada", TEMP_CHANGELOG_FILE_NAME)
74
- }
75
-
76
- async function _updateChangeLog() {
77
- const hasTempChangelog = fs.existsSync(`${TEMP_FOLDER_NAME}/${TEMP_CHANGELOG_FILE_NAME}.md`)
78
- if (hasTempChangelog) {
79
- _printLog(`Iniciando atualização do ${CHANGELOG_FILE_NAME}`)
80
- const contentNewChangelog = fs.readFileSync(`${TEMP_FOLDER_NAME}/${TEMP_CHANGELOG_FILE_NAME}.md`, "utf-8");
81
- const newPath = path.join(`${CHANGELOG_FILE_NAME}`)
82
-
83
- if (!fs.existsSync(newPath)) {
84
- await _createChangeLogMd()
85
- }
86
-
87
- const contentOriginalChangelog = fs.readFileSync(newPath, "utf-8")
88
- const newContent = contentNewChangelog + "\n\n" + contentOriginalChangelog
89
- fs.writeFileSync(newPath, newContent)
90
-
91
- _printLog(`Arquivo ${CHANGELOG_FILE_NAME} atualizado`)
92
- return
93
- }
94
-
95
- _throwError("Arquivo temporário de Changelog não gerado", {hasTempChangelog})
96
- }
97
-
98
- async function _clearResources() {
99
- rimraf(TEMP_FOLDER_NAME, (error) => {
100
- if (error) {
101
- _throwError(`Erro ao remover a pasta ${TEMP_FOLDER_NAME}:`, error?.message)
102
- } else {
103
- _printLog(`Limpando pasta temporária ${TEMP_FOLDER_NAME}`);
104
- }
105
- });
106
- }
107
-
108
- async function _createChangeLogMd(newPath) {
109
- _printLog(`Arquivo de ${CHANGELOG_FILE_NAME} inexistente. [Changelog: ${newPath}]`)
110
- _printLog("Criando arquivo")
111
- fs.writeFileSync(`${CHANGELOG_FILE_NAME}`, "");
112
- }
113
-
114
- function _printLog(text = "", isError = false) {
115
- if (isError) {
116
- console.error("\n" + text)
117
- } else {
118
- console.log("\n" + text)
119
- }
120
- }
121
-
122
- function _throwError(text = "", errorMessage = "") {
123
- const error = `${text} [message: ${errorMessage}]`
124
- _printLog(error, !!error)
125
- throw new Error(error)
126
- }
@@ -1,220 +0,0 @@
1
- const fs = require('fs')
2
- const open = require('open')
3
- const path = require('path')
4
- const configService = require('./ConfigService')
5
- const { URL } = require('url')
6
- const Express = require('express')
7
- const rateLimit = require('express-rate-limit')
8
- const host = 'localhost'
9
- const port = process.env.AME_APP_TOOLS_PORT || 3333
10
- const TERMINAL_PRINTER_NAME = 'terminal'
11
- let serverInstance
12
- const requestListenerHelper = require('../helpers/request-listener-helper')
13
- const CliLogin = require('./CliLogin')
14
- const cors = require("cors")
15
-
16
- const WHITE_LIST = ["https://admin.eitri.calindra.com.br", "https://admin.dev.eitri.calindra.com.br", "https://console.eitri.tech"]
17
-
18
- const expressRateLimiter = rateLimit({
19
- windowMs: 15 * 60 * 1000,
20
- max: 100,
21
- standardHeaders: true,
22
- legacyHeaders: false,
23
- })
24
- class Server {
25
- static stop(args) {
26
- try {
27
- if (serverInstance) {
28
- serverInstance.close()
29
- }
30
- } catch (e) {
31
- if (args.verbose) {
32
- console.log(`Erro ao parar servidor local: ${e.message}`)
33
- }
34
- }
35
- }
36
-
37
- static startServer(args) {
38
- Server.stop(args)
39
- const { qrCodePath, qrPrinter, verbose } = args
40
-
41
- if (!qrPrinter && !process.env.AAT_QRCODE_PRINTER) {
42
- open(qrCodePath)
43
- } else if (qrPrinter && qrPrinter !== TERMINAL_PRINTER_NAME) {
44
- open(qrCodePath, { app: qrPrinter })
45
- } else if (
46
- process.env.AAT_QRCODE_PRINTER &&
47
- process.env.AAT_QRCODE_PRINTER !== TERMINAL_PRINTER_NAME
48
- ) {
49
- open(qrCodePath, {
50
- app: process.env.AAT_QRCODE_PRINTER,
51
- })
52
- }
53
- if (verbose) {
54
- console.log(`Server is running on http://${host}:${port}`)
55
- }
56
- }
57
-
58
- static startServerMinhaContaEmulator(args) {
59
- Server.stop(args)
60
- const { browser, verbose, bootstrapUrl, slug, http: workspaceHttp } = args
61
- const ameSuperAppWebConfig = configService.get('ameSuperAppWeb')
62
-
63
- /**
64
- * Paramêtros do request listener definidos para o create server
65
- * @param {Express.Request} req
66
- * @param {Express.Response} res
67
- * @returns
68
- */
69
- const requestListener = function (req, res) {
70
- if (req.url.startsWith('/workspace')) {
71
- const url = `${configService.workspace.url}${req.url}`
72
- workspaceHttp
73
- .get(url)
74
- .then((workspaceRes) => {
75
- res.header('Content-Type', 'text/html; charset=utf-8')
76
- res.status(200).send(workspaceRes)
77
- })
78
- .catch((e) => {
79
- console.log(e)
80
- })
81
- } else {
82
- // res.header('Content-Type', 'text/html; charset=utf-8')
83
- // res.writeHead(200)
84
-
85
- let data = fs.readFileSync(
86
- path.resolve(__dirname, '../view/ame_minha_conta_emulator.html'),
87
- 'utf8'
88
- )
89
- const _url = new URL(bootstrapUrl)
90
- const finalUrl = bootstrapUrl.replace(
91
- _url.origin,
92
- `http://localhost:${port}`
93
- )
94
-
95
- data = data.replace('##ENVIRONMENT##', process.env.NODE_ENV === 'dev' ? 'dev' : 'hml' )
96
- data = data.replace(
97
- '##AME_SUPER_APP_SRC##',
98
- ameSuperAppWebConfig.url
99
- )
100
- data = data.replace('##IFRAME_SRC##', finalUrl)
101
- //TODO configurar o slug do Eitri-App corrente
102
- data = data.replace('##SLUG##', slug)
103
- return res.send(data)
104
- }
105
- }
106
- serverInstance = Express().disable('x-powered-by')
107
- serverInstance.use(expressRateLimiter)
108
- serverInstance.use(requestListener)
109
-
110
- serverInstance.listen(port, host, () => {
111
- open(`http://${host}:${port}`, { app: browser })
112
- if (verbose) {
113
- console.log(`Server is running on http://${host}:${port}`)
114
- }
115
- })
116
- }
117
-
118
- static startServerEmulator(args) {
119
- Server.stop(args)
120
- const { browser, verbose, bootstrapUrl, slug, http: workspaceHttp } = args
121
- const ameSuperAppWebConfig = configService.get('ameSuperAppWeb')
122
- console.log(bootstrapUrl)
123
-
124
- const requestListener = function (req, res) {
125
- if (req.url.startsWith('/workspace')) {
126
- const url = `${configService.workspace.url}${req.url}`
127
- return requestListenerHelper(workspaceHttp, req.url, res, url)
128
- } else {
129
- res.setHeader('Content-Type', 'text/html; charset=utf-8')
130
- res.writeHead(200)
131
-
132
- let data = fs.readFileSync(
133
- path.resolve(__dirname, '../view/emulator.html'),
134
- 'utf8'
135
- )
136
- const _url = new URL(bootstrapUrl)
137
- const finalUrl = bootstrapUrl.replace(
138
- _url.origin,
139
- `http://localhost:${port}`
140
- )
141
-
142
- data = data.replace('##ENVIRONMENT##', process.env.NODE_ENV === 'dev' ? 'dev' : 'hml' )
143
- data = data.replace('##IFRAME_SRC##', finalUrl)
144
- data = data.replace(
145
- '##AME_SUPER_APP_SRC##',
146
- ameSuperAppWebConfig.url
147
- )
148
- //TODO configurar o slug do Eitri-App corrente
149
- data = data.replace('##SLUG##', slug)
150
-
151
- res.send(data)
152
- }
153
- }
154
-
155
- serverInstance = Express().disable('x-powered-by')
156
- serverInstance.use(expressRateLimiter)
157
- serverInstance.use(requestListener)
158
-
159
- serverInstance.listen(port, host, () => {
160
- open(`http://${host}:${port}`, { app: browser })
161
- if (verbose) {
162
- console.log(`Server is running on http://${host}:${port}`)
163
- }
164
- })
165
- }
166
-
167
- static startMiniAppProxyServerAndOpenTarget(args) {
168
- Server.stop(args)
169
- const { verbose, openPath, http: workspaceHttp } = args
170
- /**
171
- * Paramêtros do request listener definidos para o create server
172
- * @param {Express.Request} req
173
- * @param {Express.Response} res
174
- * @returns
175
- */
176
- const requestListener = function (req, res) {
177
- let url = `${configService.workspace.url}${req.url}`
178
- return requestListenerHelper(workspaceHttp, req.url, res, url, verbose)
179
- }
180
-
181
- serverInstance = Express().disable('x-powered-by')
182
- serverInstance.use(expressRateLimiter)
183
- serverInstance.use(requestListener)
184
- serverInstance.listen(port, host, () => {
185
- if (verbose) {
186
- console.log(`Server is running on http://${host}:${port}`)
187
- }
188
- open(openPath)
189
- })
190
- }
191
-
192
- static startCliLogin(args) {
193
- Server.stop(args)
194
- const verbose = args?.verbose || ""
195
-
196
- serverInstance = Express().disable('x-powered-by')
197
- serverInstance.use(expressRateLimiter)
198
- serverInstance.listen(port, host, () => {
199
- if (verbose) {
200
- console.log(`Server is running on http://${host}:${port}`)
201
- }
202
- })
203
-
204
- const myRouteOptions = {
205
- origin: WHITE_LIST,
206
- }
207
- serverInstance.get('/cli-login', cors(myRouteOptions) ,async (req, res) => {
208
- const {email, credential} = req?.query || {}
209
- res.send('hello world')
210
- await new CliLogin().saveCredentials({
211
- email,
212
- credential
213
- })
214
- })
215
-
216
- return {host, port}
217
- }
218
- }
219
-
220
- module.exports = Server