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.
- package/.husky/pre-commit +0 -0
- package/eitri-cli-v2/eitri-cli-v2.darwin-arm64.node +0 -0
- package/eitri-cli-v2/eitri-cli-v2.darwin-x64.node +0 -0
- package/eitri-cli-v2/eitri-cli-v2.linux-x64-gnu.node +0 -0
- package/eitri-cli-v2/eitri-cli-v2.win32-x64-msvc.node +0 -0
- package/eitri-cli-v2/index.d.ts +11 -1
- package/index.js +4 -21
- package/package.json +3 -49
- package/src/modules/app/AppCommand.js +1 -1
- package/src/modules/vegvisir/VegvisirCommand.js +7 -13
- package/.eslintrc.json +0 -26
- package/.prettierrc +0 -6
- package/src/cmd/clean.js +0 -144
- package/src/cmd/create.js +0 -332
- package/src/cmd/credentials.js +0 -105
- package/src/cmd/doctor.js +0 -70
- package/src/cmd/invite.js +0 -87
- package/src/cmd/list.js +0 -36
- package/src/cmd/login.js +0 -70
- package/src/cmd/loginV2.js +0 -89
- package/src/cmd/manage-env.js +0 -129
- package/src/cmd/open-share.js +0 -6
- package/src/cmd/order-details.js +0 -6
- package/src/cmd/push-version.js +0 -260
- package/src/cmd/show-message-if-outdated-package.js +0 -32
- package/src/cmd/signup.js +0 -71
- package/src/cmd/start.js +0 -181
- package/src/cmd/tail-logs.js +0 -26
- package/src/cmd/test-initialization-params.js +0 -6
- package/src/cmd/validate.js +0 -164
- package/src/cmd/version.js +0 -18
- package/src/enum/WatcherOpts.js +0 -3
- package/src/enum/target.js +0 -6
- package/src/helpers/request-listener-helper.js +0 -55
- package/src/model/EitriAppType.js +0 -4
- package/src/model/Payload.js +0 -45
- package/src/model/Target.js +0 -61
- package/src/model/User.js +0 -11
- package/src/service/AuthConfig.js +0 -85
- package/src/service/BlindGuardian.js +0 -131
- package/src/service/CliLogin.js +0 -52
- package/src/service/ConfigService.js +0 -9
- package/src/service/CredentialsService.js +0 -47
- package/src/service/EitriAppManager.js +0 -32
- package/src/service/EitriAppService.js +0 -49
- package/src/service/Emulator/AndroidEmulatorService.js +0 -132
- package/src/service/Emulator/IOSEmulatorService.js +0 -71
- package/src/service/EmulatorService.js +0 -17
- package/src/service/GATrackingStrategy.js +0 -16
- package/src/service/HashFolder.js +0 -79
- package/src/service/Http.js +0 -300
- package/src/service/HuginService.js +0 -38
- package/src/service/InviteService.js +0 -45
- package/src/service/LibsService.js +0 -191
- package/src/service/ManageEnvService.js +0 -10
- package/src/service/MiniLog.js +0 -166
- package/src/service/PrerequisitesValidator.js +0 -99
- package/src/service/QRCodeFactory.js +0 -81
- package/src/service/ReleaseService.js +0 -126
- package/src/service/Server.js +0 -220
- package/src/service/StarterService.js +0 -31
- package/src/service/TagTree.js +0 -101
- package/src/service/TargetService.js +0 -97
- package/src/service/TrackService.js +0 -11
- package/src/service/TrackingEitriAnalytics.js +0 -26
- package/src/service/TrackingService.js +0 -183
- package/src/service/ValidateResult.js +0 -57
- package/src/service/Watcher.js +0 -118
- package/src/service/Workspace.js +0 -1045
- package/src/service/WorkspaceManager.js +0 -76
- package/src/service/factories/DoubtsStarterFactory.js +0 -25
- package/src/service/factories/MiniWebAppFactory.js +0 -44
- package/src/service/factories/QRCodeStarterFactory.js +0 -154
- package/src/service/factories/WebStarterFactory.js +0 -88
- package/src/service/factories/WoodCoffeeFactory.js +0 -292
- package/src/util/AboutTemplate.jsx +0 -14
- package/src/util/FileUtils.js +0 -25
- package/src/util/GenericUtils.js +0 -41
- package/src/util/LibUtil.js +0 -32
- package/src/util/LogUtil.js +0 -14
- package/src/util/UrlUtils.js +0 -12
- package/src/util/UserLocalCredential.js +0 -128
- package/src/util/convertKeysToCamelCase.js +0 -26
- package/src/util/error-messages/error-messages.js +0 -24
- package/src/util/error-messages/invite/invite-error-messages.js +0 -14
- package/src/util/getCliVersion.js +0 -13
- package/src/util/getCreateFactory.js +0 -9
- package/src/util/getWorkspace.js +0 -37
- package/src/util/ipv4.js +0 -19
- package/src/util/manage-env.js +0 -65
- package/src/util/open-docs.js +0 -7
- package/src/util/os.js +0 -39
- package/src/util/server-url.js +0 -15
- package/src/util/template-utils.js +0 -21
- package/src/view/index.html +0 -19
package/src/service/Http.js
DELETED
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
const axiosCookieJarSupport = require("axios-cookiejar-support").wrapper
|
|
2
|
-
const FileCookieStore = require("tough-cookie-file-store").FileCookieStore
|
|
3
|
-
const CookieJar = require("tough-cookie").CookieJar
|
|
4
|
-
|
|
5
|
-
const os = require("os")
|
|
6
|
-
const path = require("path")
|
|
7
|
-
const getCliVersion = require("../util/getCliVersion")
|
|
8
|
-
const { randomUUID } = require("crypto")
|
|
9
|
-
const getWorkspace = require("../util/getWorkspace")
|
|
10
|
-
|
|
11
|
-
const filePath = path.join(os.homedir(), "./.eitri.cookie.json")
|
|
12
|
-
const jar = new CookieJar(new FileCookieStore(filePath))
|
|
13
|
-
const axios = axiosCookieJarSupport(require("axios").create({ withCredentials: true, jar }))
|
|
14
|
-
const debug = require("debug")("eitri:http")
|
|
15
|
-
|
|
16
|
-
let canShowLog = true
|
|
17
|
-
|
|
18
|
-
axios.interceptors.response.use(function (response) {
|
|
19
|
-
const YELLOW_COLOR = "\x1b[33m"
|
|
20
|
-
const BLUE_COLOR = "\x1b[94m"
|
|
21
|
-
const RESET_COLORS = "\x1b[0m"
|
|
22
|
-
const { warning } = response.data
|
|
23
|
-
const { greeting } = response.data
|
|
24
|
-
if (canShowLog) {
|
|
25
|
-
if (warning) {
|
|
26
|
-
console.warn(`${YELLOW_COLOR}\nAtenção: ${warning.message}${YELLOW_COLOR}${RESET_COLORS}\n`)
|
|
27
|
-
}
|
|
28
|
-
if (greeting) {
|
|
29
|
-
console.log(`${BLUE_COLOR}\n${greeting.message}${BLUE_COLOR}${RESET_COLORS}\n`)
|
|
30
|
-
}
|
|
31
|
-
canShowLog = warning || greeting ? false : true
|
|
32
|
-
}
|
|
33
|
-
return response
|
|
34
|
-
})
|
|
35
|
-
class Http {
|
|
36
|
-
constructor(tokenFactory) {
|
|
37
|
-
this.tokenFactory = tokenFactory
|
|
38
|
-
this.newTokenAttempt = 0
|
|
39
|
-
this.workspaceId = ""
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
setTokenFactory(tokenFactory) {
|
|
43
|
-
this.tokenFactory = tokenFactory
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
setToken(token) {
|
|
47
|
-
this.token = token
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
setWorkspaceId(id) {
|
|
51
|
-
this.workspaceId = id
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
getCookieSession(url) {
|
|
55
|
-
return new Promise((resolve, reject) => {
|
|
56
|
-
const contextPath = process.env.FOUNDRY_CONTEXT_PATH || "foundry"
|
|
57
|
-
jar.getCookies(url, { allPaths: true }, function (err, cookies) {
|
|
58
|
-
if (err) return reject(err)
|
|
59
|
-
const cookie = cookies.find((c) => c.path === `/${contextPath}`)
|
|
60
|
-
resolve(cookie)
|
|
61
|
-
})
|
|
62
|
-
})
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
async post(url, data, headers) {
|
|
66
|
-
try {
|
|
67
|
-
if (!this.token) {
|
|
68
|
-
this.token = await this.tokenFactory.getToken()
|
|
69
|
-
}
|
|
70
|
-
const mergedHeaders = {
|
|
71
|
-
...(await this._getHeader(url)),
|
|
72
|
-
...headers,
|
|
73
|
-
}
|
|
74
|
-
return await axios.post(url, data, { headers: mergedHeaders })
|
|
75
|
-
} catch (e) {
|
|
76
|
-
debug(`Error: url ${url}`)
|
|
77
|
-
throw e
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
async postForm(url, formData, additionalHeaders = {}) {
|
|
82
|
-
if (!this.token) {
|
|
83
|
-
this.token = await this.tokenFactory.getToken()
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const headers = {
|
|
87
|
-
...(await this._getHeader(url)),
|
|
88
|
-
"Content-Type": `multipart/form-data; boundary=${formData.getBoundary()}`,
|
|
89
|
-
...additionalHeaders,
|
|
90
|
-
}
|
|
91
|
-
return await this._postForm(url, formData, headers)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
async _getHeader(url) {
|
|
95
|
-
const tid = randomUUID()
|
|
96
|
-
const headers = {
|
|
97
|
-
Authorization: `Bearer ${this.token.accessToken}`,
|
|
98
|
-
"X-Transaction-Id": tid,
|
|
99
|
-
"App-Tools-Version": getCliVersion(),
|
|
100
|
-
}
|
|
101
|
-
if (url.includes("foundry") || url.includes("runes-foundry")) {
|
|
102
|
-
headers["Workspace-Id"] = this.workspaceId ? this.workspaceId : (await getWorkspace()).id
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return headers
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
__postForm(url, formData, headers, resolve, reject) {
|
|
109
|
-
axios
|
|
110
|
-
.post(url, formData, { headers: headers })
|
|
111
|
-
.then((resp) => resolve(resp.data))
|
|
112
|
-
.catch((err) => this.rejectErrorPolitely({ err, methodName: "__postForm", url, formData, headers, resolve, reject }))
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
_postForm(url, formData, headers) {
|
|
116
|
-
return new Promise((resolve, reject) => {
|
|
117
|
-
this.__postForm(url, formData, headers, resolve, reject)
|
|
118
|
-
})
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
async delete(url, options, additionalHeaders = {}) {
|
|
122
|
-
if (!this.token) {
|
|
123
|
-
this.token = await this.tokenFactory.getToken()
|
|
124
|
-
}
|
|
125
|
-
const headers = {
|
|
126
|
-
...(await this._getHeader(url)),
|
|
127
|
-
...additionalHeaders,
|
|
128
|
-
}
|
|
129
|
-
return await this._delete(url, options, headers)
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
__delete(url, data, headers, resolve, reject) {
|
|
133
|
-
axios
|
|
134
|
-
.delete(url, { headers: headers, params: data.params })
|
|
135
|
-
.then((resp) => resolve(resp.data))
|
|
136
|
-
.catch((err) => this.rejectErrorPolitely({ err, methodName: "__delete", url, data, headers, resolve, reject }))
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
_delete(url, options, headers) {
|
|
140
|
-
return new Promise((resolve, reject) => {
|
|
141
|
-
this.__delete(url, options || {}, headers, resolve, reject)
|
|
142
|
-
})
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
async get(url, options) {
|
|
146
|
-
options = options || {}
|
|
147
|
-
if (!this.token) {
|
|
148
|
-
this.token = await this.tokenFactory.getToken()
|
|
149
|
-
}
|
|
150
|
-
const headers = await this._getHeader(url)
|
|
151
|
-
return await this._get({ url, options, headers })
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
_get(args) {
|
|
155
|
-
return new Promise((resolve, reject) => {
|
|
156
|
-
this.__get(args, resolve, reject)
|
|
157
|
-
})
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
__get(args, resolve, reject) {
|
|
161
|
-
const mergedHeaders = { ...args.headers, ...args.options.headers }
|
|
162
|
-
args.options.headers = mergedHeaders
|
|
163
|
-
axios
|
|
164
|
-
.get(args.url, args.options)
|
|
165
|
-
.then((result) => {
|
|
166
|
-
resolve(result.data)
|
|
167
|
-
})
|
|
168
|
-
.catch((err) => {
|
|
169
|
-
if (err.isAxiosError) {
|
|
170
|
-
this.newTokenAttempt++
|
|
171
|
-
if (err.response && err.response.status === 401 && this.newTokenAttempt < 3) {
|
|
172
|
-
this.tokenFactory
|
|
173
|
-
.getToken()
|
|
174
|
-
.then((token) => {
|
|
175
|
-
this.token = token
|
|
176
|
-
args.headers = this._getHeader(args.url)
|
|
177
|
-
this.__get(args, resolve, reject)
|
|
178
|
-
})
|
|
179
|
-
.catch(reject)
|
|
180
|
-
return
|
|
181
|
-
}
|
|
182
|
-
if (this.isError4xxWithMessage(err) || this.isError5xxWithMessage(err)) {
|
|
183
|
-
let error = new Error(`\n${err.response.data.error}`)
|
|
184
|
-
error.httpStatus = err.response.status
|
|
185
|
-
return reject(error)
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
reject(err)
|
|
189
|
-
})
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
async put(url, data, headers) {
|
|
193
|
-
data = data || {}
|
|
194
|
-
if (!this.token) {
|
|
195
|
-
this.token = await this.tokenFactory.getToken()
|
|
196
|
-
}
|
|
197
|
-
const mergedHeaders = { ...(await this._getHeader(url)), ...headers }
|
|
198
|
-
return await this._put(url, data, mergedHeaders)
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
_put(url, data, headers) {
|
|
202
|
-
return new Promise((resolve, reject) => {
|
|
203
|
-
this.__put(url, data, headers, resolve, reject)
|
|
204
|
-
})
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
__put(url, data, headers, resolve, reject) {
|
|
208
|
-
axios
|
|
209
|
-
.put(url, data, { headers })
|
|
210
|
-
.then((result) => resolve(result.data))
|
|
211
|
-
.catch((err) => this.rejectErrorPolitely({ err, methodName: "__put", url, data, headers, resolve, reject }))
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
rejectErrorPolitely(args) {
|
|
215
|
-
const { err, methodName, url, data, headers, resolve, reject } = args
|
|
216
|
-
|
|
217
|
-
if (process.env.LOG_LEVEL === "full") console.error("Http.js:rejectErrorPolitely", err)
|
|
218
|
-
|
|
219
|
-
if (err.isAxiosError) {
|
|
220
|
-
this.newTokenAttempt++
|
|
221
|
-
if (err.response && err.response.status === 401 && this.newTokenAttempt < 3) {
|
|
222
|
-
this.tokenFactory
|
|
223
|
-
.getToken()
|
|
224
|
-
.then((token) => {
|
|
225
|
-
const newHeaders = this.updateToken(token.accessToken, headers)
|
|
226
|
-
this[methodName](url, data, newHeaders, resolve, reject)
|
|
227
|
-
})
|
|
228
|
-
.catch(reject)
|
|
229
|
-
return
|
|
230
|
-
}
|
|
231
|
-
if (this.isError4xxWithMessage(err) || this.isError5xxWithMessage(err)) {
|
|
232
|
-
let error = new Error(err.response.data.error)
|
|
233
|
-
error.httpStatus = err.response.status
|
|
234
|
-
error.response = { data: err.response.data }
|
|
235
|
-
|
|
236
|
-
return reject(error)
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
reject(err)
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
isError5xxWithMessage(err) {
|
|
243
|
-
return (
|
|
244
|
-
err.response &&
|
|
245
|
-
500 <= err.response.status &&
|
|
246
|
-
err.response.status < 600 &&
|
|
247
|
-
err.response.data &&
|
|
248
|
-
typeof err.response.data.error === "string"
|
|
249
|
-
)
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
isError4xxWithMessage(err) {
|
|
253
|
-
return (
|
|
254
|
-
err.response &&
|
|
255
|
-
400 <= err.response.status &&
|
|
256
|
-
err.response.status < 500 &&
|
|
257
|
-
err.response.data &&
|
|
258
|
-
typeof err.response.data.error === "string"
|
|
259
|
-
)
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
updateToken(token, headers) {
|
|
263
|
-
let headersCopy = { ...headers }
|
|
264
|
-
headersCopy["Authorization"] = `Bearer ${token}`
|
|
265
|
-
return headersCopy
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
static printLeanLogAxiosError(e) {
|
|
269
|
-
const axios = require("axios")
|
|
270
|
-
if (axios.isAxiosError(e)) {
|
|
271
|
-
console.log(
|
|
272
|
-
`AxiosError: ${JSON.stringify(
|
|
273
|
-
{
|
|
274
|
-
status: e.status,
|
|
275
|
-
config: {
|
|
276
|
-
headers: e.config?.headers,
|
|
277
|
-
method: e.config?.method,
|
|
278
|
-
url: e.config?.url,
|
|
279
|
-
data: Http.parseJson(e.config?.data),
|
|
280
|
-
},
|
|
281
|
-
responseData: e.response?.data,
|
|
282
|
-
},
|
|
283
|
-
null,
|
|
284
|
-
4,
|
|
285
|
-
)}`,
|
|
286
|
-
)
|
|
287
|
-
} else {
|
|
288
|
-
console.log(e)
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
static parseJson(data) {
|
|
292
|
-
try {
|
|
293
|
-
return JSON.parse(data ?? "{}")
|
|
294
|
-
} catch (e) {
|
|
295
|
-
return {}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
module.exports = Http
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const BlindGuardian = require("./BlindGuardian");
|
|
2
|
-
const Http = require("./Http");
|
|
3
|
-
const configService = require("./ConfigService");
|
|
4
|
-
const VegvisirService = require("../modules/vegvisir/VegvisirService");
|
|
5
|
-
const FormData = require("form-data");
|
|
6
|
-
const fs = require('fs')
|
|
7
|
-
|
|
8
|
-
module.exports = class HuginService {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.config = configService.get("workspace");
|
|
11
|
-
this.blindGuardian = new BlindGuardian();
|
|
12
|
-
this.http = new Http(this.blindGuardian);
|
|
13
|
-
this.vegvisirService = new VegvisirService()
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
async postServerless(data, eitriConf) {
|
|
18
|
-
const { filePath, relativePath, isDevMode } = data
|
|
19
|
-
const formData = new FormData();
|
|
20
|
-
const workspace = await this.vegvisirService.getWorkspace();
|
|
21
|
-
formData.append("file", fs.createReadStream(filePath));
|
|
22
|
-
formData.append("organizationId", eitriConf.organizationId);
|
|
23
|
-
formData.append("version", eitriConf.version);
|
|
24
|
-
formData.append("filepath", relativePath);
|
|
25
|
-
formData.append("isDevMode", String(isDevMode));
|
|
26
|
-
formData.append("eitriAppId", eitriConf.id);
|
|
27
|
-
formData.append("applicationId", eitriConf.applicationId);
|
|
28
|
-
formData.append("workspaceId", workspace.id);
|
|
29
|
-
let url = this.getServerlessUploadUrl(filePath);
|
|
30
|
-
await this.http.postForm(url, formData);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
getServerlessUploadUrl(filePath) {
|
|
34
|
-
if (filePath.includes(".zip"))
|
|
35
|
-
return `${this.config.hugin.url}${this.config.hugin.uploadZip}`;
|
|
36
|
-
return `${this.config.hugin.url}${this.config.hugin.uploadFile}`;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
const configService = require('./ConfigService')
|
|
2
|
-
|
|
3
|
-
class InviteService {
|
|
4
|
-
|
|
5
|
-
constructor(workspace) {
|
|
6
|
-
this.workspace = workspace
|
|
7
|
-
this.conf = configService.get('managerApi')
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
async findAllPending() {
|
|
11
|
-
let url = `${this.conf.url}${this.conf.invites.my}`
|
|
12
|
-
let invites = await this.workspace.http.get(url)
|
|
13
|
-
return invites.filter(inv => inv.status === 'ACTIVE')
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async accept(inviteToAccept) {
|
|
17
|
-
if (!inviteToAccept) {
|
|
18
|
-
throw new Error('Convite indefinido')
|
|
19
|
-
}
|
|
20
|
-
let url = `${this.conf.url}${this.conf.invites.accept}`
|
|
21
|
-
await this.workspace.http.put(url, inviteToAccept)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
async sendInvite(slug, email) {
|
|
25
|
-
let url = `${this.conf.url}${this.conf.invites.send}`
|
|
26
|
-
await this.workspace.http.post(url, { email, slug })
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async findAllBySlug(slug) {
|
|
30
|
-
let url = `${this.conf.url}${this.conf.invites.slug}`.replace(':slug', slug)
|
|
31
|
-
let invites = await this.workspace.http.get(url)
|
|
32
|
-
return invites
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async remove(invite) {
|
|
36
|
-
if (!invite) {
|
|
37
|
-
throw new Error('Convite indefinido')
|
|
38
|
-
}
|
|
39
|
-
let url = `${this.conf.url}${this.conf.invites.remove}`.replace(':inviteToken', invite.token)
|
|
40
|
-
await this.workspace.http.delete(url, {})
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
module.exports = InviteService
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
const axios = require("axios")
|
|
2
|
-
const configService = require("./ConfigService")
|
|
3
|
-
const CDN_83io_LIBRARY = configService.get("cdn")?.library
|
|
4
|
-
const TrackingEitriAnalytics = require("./TrackingEitriAnalytics")
|
|
5
|
-
const { validateUUID } = require("../util/GenericUtils")
|
|
6
|
-
|
|
7
|
-
class LibsService {
|
|
8
|
-
static async validateLibsVersions({ libs = [], eitriAppConf = {} }) {
|
|
9
|
-
const libsList = libs
|
|
10
|
-
|
|
11
|
-
if (eitriAppConf["eitri-commons"]) {
|
|
12
|
-
libsList.push({
|
|
13
|
-
name: "eitri-commons",
|
|
14
|
-
version: eitriAppConf["eitri-commons"],
|
|
15
|
-
})
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const { luminusUiVersion, bifrostVersion, commonsVersion } = this.getEitriConfLibsVersions(libsList)
|
|
19
|
-
|
|
20
|
-
if (commonsVersion) {
|
|
21
|
-
const validCommonsVersion = await this.validCommonsVersion(commonsVersion)
|
|
22
|
-
if (!validCommonsVersion) {
|
|
23
|
-
throw new Error(`A versão [${commonsVersion}] do [eitri-commons] definida em seu eitri-app.conf é inválida.`)
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (!luminusUiVersion) {
|
|
28
|
-
throw new Error("Nenhuma versão do [luminus-ui/eitri-app-components] encontrada em seu eitri-app.conf")
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (!bifrostVersion) {
|
|
32
|
-
throw new Error("Nenhuma versão do [bifrost/eitri-app-client] encontrada em seu eitri-app.conf")
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const { luminusUiVersions, bifrostVersions } = await this.simultaneousRequestAndHandleData()
|
|
36
|
-
const allBifrostVersions = bifrostVersions?.versions?.concat(
|
|
37
|
-
bifrostVersions?.betaVersions,
|
|
38
|
-
bifrostVersions?.alphaVersions,
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
if (!luminusUiVersion.includes("@") && !validateUUID(luminusUiVersion)) {
|
|
42
|
-
const existsLuminus = luminusUiVersions?.versions?.some((version) => version === luminusUiVersion)
|
|
43
|
-
if (!existsLuminus) {
|
|
44
|
-
this.throwNonExistentLibError({
|
|
45
|
-
libName: "luminus-ui/eitri-app-components",
|
|
46
|
-
eitriConfLibVersion: luminusUiVersion,
|
|
47
|
-
availableVersions: luminusUiVersions,
|
|
48
|
-
eitriAppConf,
|
|
49
|
-
})
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (!bifrostVersion.includes("@")) {
|
|
54
|
-
const existsBifrost = allBifrostVersions.some((version) => version === bifrostVersion)
|
|
55
|
-
if (!existsBifrost) {
|
|
56
|
-
this.throwNonExistentLibError({
|
|
57
|
-
libName: "bifrost/eitri-app-client",
|
|
58
|
-
eitriConfLibVersion: bifrostVersion,
|
|
59
|
-
availableVersions: allBifrostVersions,
|
|
60
|
-
eitriAppConf,
|
|
61
|
-
})
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
static async validCommonsVersion(commonsVersion) {
|
|
67
|
-
try {
|
|
68
|
-
const fullUrl = `${CDN_83io_LIBRARY.url}${CDN_83io_LIBRARY.commons.versions}`
|
|
69
|
-
const response = await axios.get(fullUrl)
|
|
70
|
-
const data = response.data;
|
|
71
|
-
return data.versions.includes(commonsVersion)
|
|
72
|
-
} catch (error) {
|
|
73
|
-
const errorMessage = error?.message || "Erro na obtenção de versões do Bifrost"
|
|
74
|
-
this.sendErrorToAnalytics("getBifrostVersions", errorMessage)
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return false
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
static getEitriConfLibsVersions(libs = []) {
|
|
81
|
-
const luminusUiNames = ["eitri-app-components", "eitri-luminus"]
|
|
82
|
-
const biFrostNames = ["eitri-app-client", "eitri-bifrost"]
|
|
83
|
-
const commonsNames = ["eitri-commons"]
|
|
84
|
-
const bifrostVersion = libs.find((lib) => biFrostNames?.includes(lib.name))?.version
|
|
85
|
-
const luminusUiVersion = libs.find((lib) => luminusUiNames?.includes(lib.name))?.version
|
|
86
|
-
const commonsVersion = libs.find((lib) => commonsNames?.includes(lib.name))?.version
|
|
87
|
-
|
|
88
|
-
return {
|
|
89
|
-
luminusUiVersion,
|
|
90
|
-
bifrostVersion,
|
|
91
|
-
commonsVersion,
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
static async simultaneousRequestAndHandleData() {
|
|
96
|
-
const promises = await Promise.allSettled([this.getBifrostVersions(), this.getLuminusUiVersions()])
|
|
97
|
-
.then((res) => res)
|
|
98
|
-
.catch((err) => err)
|
|
99
|
-
|
|
100
|
-
const [bifrost, luminus] = promises
|
|
101
|
-
|
|
102
|
-
let allBifrostVersions = {}
|
|
103
|
-
if (bifrost?.status === "fulfilled") {
|
|
104
|
-
allBifrostVersions = bifrost.value
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
let allLuminusVersions = {}
|
|
108
|
-
if (luminus?.status === "fulfilled") {
|
|
109
|
-
allLuminusVersions = luminus.value
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return {
|
|
113
|
-
luminusUiVersions: allLuminusVersions,
|
|
114
|
-
bifrostVersions: allBifrostVersions,
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
static handleRawDatas(promises = []) {
|
|
119
|
-
const [bifrost, luminus] = promises
|
|
120
|
-
|
|
121
|
-
const allBifrostVersions = []
|
|
122
|
-
if (bifrost?.status === "fulfilled") {
|
|
123
|
-
const versions = bifrost?.value?.versions?.concat(bifrost?.value?.betaVersions, bifrost?.value?.alphaVersions)
|
|
124
|
-
allBifrostVersions.push(...versions)
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const allLuminusVersions = []
|
|
128
|
-
if (luminus?.status === "fulfilled") {
|
|
129
|
-
allLuminusVersions.push(...luminus.value.versions)
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return {
|
|
133
|
-
luminusUiVersions: allLuminusVersions,
|
|
134
|
-
bifrostVersions: allBifrostVersions,
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
static async getBifrostVersions() {
|
|
139
|
-
const fullUrl = `${CDN_83io_LIBRARY.url}${CDN_83io_LIBRARY.bifrost.versions}`
|
|
140
|
-
try {
|
|
141
|
-
const response = await axios.get(fullUrl)
|
|
142
|
-
return response.data
|
|
143
|
-
} catch (error) {
|
|
144
|
-
const errorMessage = error?.message || "Erro na obtenção de versões do Bifrost"
|
|
145
|
-
this.sendErrorToAnalytics("getBifrostVersions", errorMessage)
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
static async getLuminusUiVersions() {
|
|
150
|
-
const fullUrl = `${CDN_83io_LIBRARY.url}${CDN_83io_LIBRARY.luminusUi.versions}`
|
|
151
|
-
try {
|
|
152
|
-
const response = await axios.get(fullUrl)
|
|
153
|
-
return response.data
|
|
154
|
-
} catch (error) {
|
|
155
|
-
const errorMessage = error?.message || "Erro na obtenção de versões do LuminusUI"
|
|
156
|
-
this.sendErrorToAnalytics("getLuminusUiVersions", errorMessage)
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
static sendErrorToAnalytics(method = "", errorMessage = "") {
|
|
161
|
-
TrackingEitriAnalytics.sendEvent({
|
|
162
|
-
eventName: `${method}.error`,
|
|
163
|
-
userId: "",
|
|
164
|
-
data: { errorMessage },
|
|
165
|
-
})
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
static throwNonExistentLibError(input = { libName: "", eitriConfLibVersion: "", availableVersions: [], eitriAppConf: {} }) {
|
|
169
|
-
const { libName, eitriConfLibVersion, availableVersions, eitriAppConf } = input
|
|
170
|
-
|
|
171
|
-
const friendlyErrorMessage = `Versão da biblioteca [${libName}] não encontrada`
|
|
172
|
-
console.log(`\n\x1b[1m\x1b[31m${friendlyErrorMessage}\x1b[0m\n`)
|
|
173
|
-
console.log("Veja as versões disponíveis abaixo e atualize o arquivo eitri-app.conf\n")
|
|
174
|
-
console.log(availableVersions)
|
|
175
|
-
|
|
176
|
-
TrackingEitriAnalytics.sendEvent({
|
|
177
|
-
eventName: "version.eitri-libs.not.found",
|
|
178
|
-
userId: "",
|
|
179
|
-
data: {
|
|
180
|
-
errorMessage: `Versão da biblioteca ${libName} não encontrada`,
|
|
181
|
-
eitriConfLibVersion,
|
|
182
|
-
availableVersions,
|
|
183
|
-
eitriAppConf,
|
|
184
|
-
},
|
|
185
|
-
})
|
|
186
|
-
|
|
187
|
-
process.exit(1)
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
module.exports = LibsService
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
class ManageEnvService {
|
|
2
|
-
async getEnvVariables(workspace, url, miniConf, env, email, fileName) {
|
|
3
|
-
const { slug, version } = miniConf
|
|
4
|
-
const mountedQuery = `env=${env}&slug=${slug}&miniAppVersion=${version}&fileName=${fileName}&email=${email}`
|
|
5
|
-
const result = await workspace.http.get(`${url}/env?${mountedQuery}`)
|
|
6
|
-
return result
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
module.exports = ManageEnvService
|