@redocly/cli 2.1.2 → 2.1.4
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/lib/auth/device-flow.d.ts +3 -5
- package/lib/auth/device-flow.d.ts.map +1 -1
- package/lib/auth/device-flow.js +9 -3
- package/lib/auth/device-flow.js.map +1 -1
- package/lib/auth/oauth-client.d.ts +3 -3
- package/lib/auth/oauth-client.d.ts.map +1 -1
- package/lib/auth/oauth-client.js +16 -15
- package/lib/auth/oauth-client.js.map +1 -1
- package/lib/reunite/api/domains.d.ts +5 -1
- package/lib/reunite/api/domains.d.ts.map +1 -1
- package/lib/reunite/api/domains.js +27 -4
- package/lib/reunite/api/domains.js.map +1 -1
- package/package.json +4 -4
|
@@ -2,6 +2,7 @@ export type Credentials = {
|
|
|
2
2
|
access_token: string;
|
|
3
3
|
refresh_token: string;
|
|
4
4
|
expires_in: number;
|
|
5
|
+
residency?: string;
|
|
5
6
|
token_type?: string;
|
|
6
7
|
};
|
|
7
8
|
export declare class RedoclyOAuthDeviceFlow {
|
|
@@ -13,14 +14,11 @@ export declare class RedoclyOAuthDeviceFlow {
|
|
|
13
14
|
private openBrowser;
|
|
14
15
|
verifyToken(accessToken: string): Promise<boolean>;
|
|
15
16
|
verifyApiKey(apiKey: string): Promise<boolean>;
|
|
16
|
-
refreshToken(refreshToken?: string): Promise<
|
|
17
|
-
access_token: any;
|
|
18
|
-
refresh_token: any;
|
|
19
|
-
expires_in: any;
|
|
20
|
-
}>;
|
|
17
|
+
refreshToken(refreshToken?: string): Promise<Credentials>;
|
|
21
18
|
private pollingAccessToken;
|
|
22
19
|
private getAccessToken;
|
|
23
20
|
private getDeviceCode;
|
|
24
21
|
private sendRequest;
|
|
22
|
+
private withResidency;
|
|
25
23
|
}
|
|
26
24
|
//# sourceMappingURL=device-flow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-flow.d.ts","sourceRoot":"","sources":["../../src/auth/device-flow.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,sBAAsB;IAIrB,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,UAAU,CAAiB;gBAEf,OAAO,EAAE,MAAM;IAI7B,GAAG;IA0BT,OAAO,CAAC,WAAW;IAeb,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD,YAAY,CAAC,MAAM,EAAE,MAAM;IAW3B,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"device-flow.d.ts","sourceRoot":"","sources":["../../src/auth/device-flow.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,sBAAsB;IAIrB,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,UAAU,CAAiB;gBAEf,OAAO,EAAE,MAAM;IAI7B,GAAG;IA0BT,OAAO,CAAC,WAAW;IAeb,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD,YAAY,CAAC,MAAM,EAAE,MAAM;IAW3B,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM;YAkB1B,kBAAkB;YA4BlB,cAAc;YAQd,aAAa;YAsBb,WAAW;IAmBzB,OAAO,CAAC,aAAa;CAMtB"}
|
package/lib/auth/device-flow.js
CHANGED
|
@@ -21,7 +21,7 @@ export class RedoclyOAuthDeviceFlow {
|
|
|
21
21
|
this.openBrowser(code.verificationUriComplete);
|
|
22
22
|
const accessToken = await this.pollingAccessToken(code.deviceCode, code.interval, code.expiresIn);
|
|
23
23
|
logger.output(green('✅ Logged in\n\n'));
|
|
24
|
-
return accessToken;
|
|
24
|
+
return this.withResidency(accessToken);
|
|
25
25
|
}
|
|
26
26
|
openBrowser(url) {
|
|
27
27
|
try {
|
|
@@ -67,11 +67,11 @@ export class RedoclyOAuthDeviceFlow {
|
|
|
67
67
|
if (!response.access_token) {
|
|
68
68
|
throw new Error('Failed to refresh token');
|
|
69
69
|
}
|
|
70
|
-
return {
|
|
70
|
+
return this.withResidency({
|
|
71
71
|
access_token: response.access_token,
|
|
72
72
|
refresh_token: response.refresh_token,
|
|
73
73
|
expires_in: response.expires_in,
|
|
74
|
-
};
|
|
74
|
+
});
|
|
75
75
|
}
|
|
76
76
|
async pollingAccessToken(deviceCode, interval, expiresIn) {
|
|
77
77
|
return new Promise((resolve, reject) => {
|
|
@@ -128,5 +128,11 @@ export class RedoclyOAuthDeviceFlow {
|
|
|
128
128
|
}
|
|
129
129
|
return await response.json();
|
|
130
130
|
}
|
|
131
|
+
withResidency(credentials) {
|
|
132
|
+
return {
|
|
133
|
+
...credentials,
|
|
134
|
+
residency: this.baseUrl,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
131
137
|
}
|
|
132
138
|
//# sourceMappingURL=device-flow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../../src/auth/device-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../../src/auth/device-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare class RedoclyOAuthClient {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
readonly credentialsFolderPath: string;
|
|
3
|
+
readonly credentialsFilePath: string;
|
|
4
|
+
readonly credentialsFileName: string;
|
|
4
5
|
private readonly key;
|
|
5
6
|
private readonly iv;
|
|
6
7
|
constructor();
|
|
@@ -8,7 +9,6 @@ export declare class RedoclyOAuthClient {
|
|
|
8
9
|
logout(): Promise<void>;
|
|
9
10
|
isAuthorized(reuniteUrl: string, apiKey?: string): Promise<boolean>;
|
|
10
11
|
getAccessToken: (reuniteUrl: string) => Promise<string | null>;
|
|
11
|
-
private get credentialsPath();
|
|
12
12
|
private saveCredentials;
|
|
13
13
|
private readCredentials;
|
|
14
14
|
private removeCredentials;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-client.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-client.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-client.ts"],"names":[],"mappings":"AAYA,qBAAa,kBAAkB;IAC7B,SAAgB,qBAAqB,EAAE,MAAM,CAAC;IAC9C,SAAgB,mBAAmB,EAAE,MAAM,CAAC;IAC5C,SAAgB,mBAAmB,EAAE,MAAM,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;;IAef,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrC,MAAM;IAQN,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWzE,cAAc,eAAsB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BxE;YAEY,eAAe;YASf,eAAe;YAaf,iBAAiB;IAM/B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,kBAAkB;CAS3B"}
|
package/lib/auth/oauth-client.js
CHANGED
|
@@ -5,14 +5,17 @@ import crypto from 'node:crypto';
|
|
|
5
5
|
import { Buffer } from 'node:buffer';
|
|
6
6
|
import { logger } from '@redocly/openapi-core';
|
|
7
7
|
import { RedoclyOAuthDeviceFlow } from './device-flow.js';
|
|
8
|
-
|
|
8
|
+
import { isValidReuniteUrl } from '../reunite/api/domains.js';
|
|
9
|
+
const CREDENTIALS_SALT = '4618dbc9-8aed-4e27-aaf0-225f4603e5a4';
|
|
9
10
|
const CRYPTO_ALGORITHM = 'aes-256-cbc';
|
|
10
11
|
export class RedoclyOAuthClient {
|
|
11
12
|
constructor() {
|
|
12
13
|
this.getAccessToken = async (reuniteUrl) => {
|
|
13
14
|
const deviceFlow = new RedoclyOAuthDeviceFlow(reuniteUrl);
|
|
14
15
|
const credentials = await this.readCredentials();
|
|
15
|
-
if (!credentials
|
|
16
|
+
if (!credentials ||
|
|
17
|
+
!isValidReuniteUrl(reuniteUrl) ||
|
|
18
|
+
(credentials.residency && credentials.residency !== reuniteUrl)) {
|
|
16
19
|
return null;
|
|
17
20
|
}
|
|
18
21
|
const isValid = await deviceFlow.verifyToken(credentials.access_token);
|
|
@@ -29,10 +32,12 @@ export class RedoclyOAuthClient {
|
|
|
29
32
|
}
|
|
30
33
|
};
|
|
31
34
|
const homeDirPath = homedir();
|
|
32
|
-
this.
|
|
33
|
-
|
|
34
|
-
this.
|
|
35
|
-
this.
|
|
35
|
+
this.credentialsFolderPath = path.join(homeDirPath, '.redocly');
|
|
36
|
+
this.credentialsFileName = 'credentials';
|
|
37
|
+
this.credentialsFilePath = path.join(this.credentialsFolderPath, this.credentialsFileName);
|
|
38
|
+
this.key = crypto.createHash('sha256').update(`${homeDirPath}${CREDENTIALS_SALT}`).digest();
|
|
39
|
+
this.iv = crypto.createHash('md5').update(homeDirPath).digest();
|
|
40
|
+
mkdirSync(this.credentialsFolderPath, { recursive: true });
|
|
36
41
|
}
|
|
37
42
|
async login(baseUrl) {
|
|
38
43
|
const deviceFlow = new RedoclyOAuthDeviceFlow(baseUrl);
|
|
@@ -58,24 +63,21 @@ export class RedoclyOAuthClient {
|
|
|
58
63
|
const accessToken = await this.getAccessToken(reuniteUrl);
|
|
59
64
|
return Boolean(accessToken);
|
|
60
65
|
}
|
|
61
|
-
get credentialsPath() {
|
|
62
|
-
return path.join(this.dir, RedoclyOAuthClient.CREDENTIALS_FILE);
|
|
63
|
-
}
|
|
64
66
|
async saveCredentials(credentials) {
|
|
65
67
|
try {
|
|
66
68
|
const encryptedCredentials = this.encryptCredentials(credentials);
|
|
67
|
-
writeFileSync(this.
|
|
69
|
+
writeFileSync(this.credentialsFilePath, encryptedCredentials, 'utf8');
|
|
68
70
|
}
|
|
69
71
|
catch (error) {
|
|
70
72
|
logger.error(`Failed to save credentials: ${error.message}`);
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
async readCredentials() {
|
|
74
|
-
if (!existsSync(this.
|
|
76
|
+
if (!existsSync(this.credentialsFilePath)) {
|
|
75
77
|
return null;
|
|
76
78
|
}
|
|
77
79
|
try {
|
|
78
|
-
const encryptedCredentials = readFileSync(this.
|
|
80
|
+
const encryptedCredentials = readFileSync(this.credentialsFilePath, 'utf8');
|
|
79
81
|
return this.decryptCredentials(encryptedCredentials);
|
|
80
82
|
}
|
|
81
83
|
catch {
|
|
@@ -83,8 +85,8 @@ export class RedoclyOAuthClient {
|
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
async removeCredentials() {
|
|
86
|
-
if (existsSync(this.
|
|
87
|
-
rmSync(this.
|
|
88
|
+
if (existsSync(this.credentialsFilePath)) {
|
|
89
|
+
rmSync(this.credentialsFilePath);
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
92
|
encryptCredentials(credentials) {
|
|
@@ -104,5 +106,4 @@ export class RedoclyOAuthClient {
|
|
|
104
106
|
return JSON.parse(decrypted.toString('utf8'));
|
|
105
107
|
}
|
|
106
108
|
}
|
|
107
|
-
RedoclyOAuthClient.CREDENTIALS_FILE = 'credentials';
|
|
108
109
|
//# sourceMappingURL=oauth-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../src/auth/oauth-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAoB,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../src/auth/oauth-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,9 @@ export declare const REUNITE_URLS: {
|
|
|
4
4
|
readonly eu: "https://app.cloud.eu.redocly.com";
|
|
5
5
|
};
|
|
6
6
|
export declare function getDomain(): string;
|
|
7
|
-
export declare
|
|
7
|
+
export declare const getReuniteUrl: (config: Config | undefined, residencyOption?: string | undefined) => string;
|
|
8
|
+
export declare function isValidReuniteUrl(reuniteUrl: string): boolean;
|
|
9
|
+
export declare class InvalidReuniteUrlError extends Error {
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
8
12
|
//# sourceMappingURL=domains.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../../src/reunite/api/domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,
|
|
1
|
+
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../../src/reunite/api/domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,eAAO,MAAM,aAAa,8EAsBzB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAcD,qBAAa,sBAAuB,SAAQ,KAAK;;CAIhD"}
|
|
@@ -5,7 +5,7 @@ export const REUNITE_URLS = {
|
|
|
5
5
|
export function getDomain() {
|
|
6
6
|
return process.env.REDOCLY_DOMAIN || REUNITE_URLS.us;
|
|
7
7
|
}
|
|
8
|
-
export
|
|
8
|
+
export const getReuniteUrl = withHttpsValidation((config, residencyOption) => {
|
|
9
9
|
try {
|
|
10
10
|
const residency = residencyOption || config?.resolvedConfig.residency;
|
|
11
11
|
if (isLegacyResidency(residency)) {
|
|
@@ -14,13 +14,36 @@ export function getReuniteUrl(config, residencyOption) {
|
|
|
14
14
|
if (residency) {
|
|
15
15
|
return new URL(residency).origin;
|
|
16
16
|
}
|
|
17
|
-
if (config?.resolvedConfig.
|
|
18
|
-
return new URL(config.resolvedConfig.
|
|
17
|
+
if (config?.resolvedConfig.scorecard?.fromProjectUrl) {
|
|
18
|
+
return new URL(config.resolvedConfig.scorecard.fromProjectUrl).origin;
|
|
19
19
|
}
|
|
20
20
|
return REUNITE_URLS.us;
|
|
21
21
|
}
|
|
22
22
|
catch {
|
|
23
|
-
throw new
|
|
23
|
+
throw new InvalidReuniteUrlError();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
export function isValidReuniteUrl(reuniteUrl) {
|
|
27
|
+
try {
|
|
28
|
+
getReuniteUrl(undefined, reuniteUrl);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
function withHttpsValidation(fn) {
|
|
36
|
+
return (...args) => {
|
|
37
|
+
const url = fn(...args);
|
|
38
|
+
if (!url.startsWith('https://')) {
|
|
39
|
+
throw new InvalidReuniteUrlError();
|
|
40
|
+
}
|
|
41
|
+
return url;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export class InvalidReuniteUrlError extends Error {
|
|
45
|
+
constructor() {
|
|
46
|
+
super('Invalid Reunite URL');
|
|
24
47
|
}
|
|
25
48
|
}
|
|
26
49
|
function isLegacyResidency(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../../src/reunite/api/domains.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,+BAA+B;IACnC,EAAE,EAAE,kCAAkC;CAC9B,CAAC;AAEX,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,YAAY,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../../src/reunite/api/domains.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,+BAA+B;IACnC,EAAE,EAAE,kCAAkC;CAC9B,CAAC;AAEX,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,YAAY,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAC9C,CAAC,MAA0B,EAAE,eAAwB,EAAU,EAAE;IAC/D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,eAAe,IAAI,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC;QAEtE,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QACnC,CAAC;QAED,IAAI,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC;YACrD,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;QACxE,CAAC;QAED,OAAO,YAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,sBAAsB,EAAE,CAAC;IACrC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,IAAI,CAAC;QACH,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAwC,EAAM;IACxE,OAAO,CAAC,GAAG,IAAoB,EAAE,EAAE;QACjC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAExB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,sBAAsB,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/B,CAAC;CACF;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,YAAY,CAAC;AAC5D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/cli",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"@opentelemetry/resources": "2.0.1",
|
|
43
43
|
"@opentelemetry/sdk-trace-node": "2.0.1",
|
|
44
44
|
"@opentelemetry/semantic-conventions": "1.34.0",
|
|
45
|
-
"@redocly/openapi-core": "2.1.
|
|
46
|
-
"@redocly/respect-core": "2.1.
|
|
45
|
+
"@redocly/openapi-core": "2.1.4",
|
|
46
|
+
"@redocly/respect-core": "2.1.4",
|
|
47
47
|
"abort-controller": "^3.0.0",
|
|
48
48
|
"chokidar": "^3.5.1",
|
|
49
49
|
"colorette": "^1.2.0",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"set-cookie-parser": "^2.3.5",
|
|
63
63
|
"simple-websocket": "^9.0.0",
|
|
64
64
|
"styled-components": "^6.0.7",
|
|
65
|
-
"undici": "^6.21.
|
|
65
|
+
"undici": "^6.21.3",
|
|
66
66
|
"yargs": "17.0.1"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|