@redocly/reunite-integration 2.54.0 → 2.54.2
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/api/api-client.d.ts +85 -0
- package/lib/api/api-client.d.ts.map +1 -0
- package/lib/api/api-client.js +254 -0
- package/lib/api/api-client.js.map +1 -0
- package/lib/api/api-keys.d.ts +2 -0
- package/lib/api/api-keys.d.ts.map +1 -0
- package/lib/api/api-keys.js +7 -0
- package/lib/api/api-keys.js.map +1 -0
- package/lib/api/domains.d.ts +12 -0
- package/lib/api/domains.d.ts.map +1 -0
- package/lib/api/domains.js +52 -0
- package/lib/api/domains.js.map +1 -0
- package/lib/api/index.d.ts +4 -0
- package/lib/api/index.d.ts.map +1 -0
- package/lib/api/index.js +4 -0
- package/lib/api/index.js.map +1 -0
- package/lib/api/types.d.ts +103 -0
- package/lib/api/types.d.ts.map +1 -0
- package/lib/api/types.js +2 -0
- package/lib/api/types.js.map +1 -0
- package/lib/auth/device-flow.d.ts +29 -0
- package/lib/auth/device-flow.d.ts.map +1 -0
- package/lib/auth/device-flow.js +140 -0
- package/lib/auth/device-flow.js.map +1 -0
- package/lib/auth/oauth-client.d.ts +20 -0
- package/lib/auth/oauth-client.d.ts.map +1 -0
- package/lib/auth/oauth-client.js +118 -0
- package/lib/auth/oauth-client.js.map +1 -0
- package/lib/index.d.ts +15 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +13 -0
- package/lib/index.js.map +1 -0
- package/lib/push-status.d.ts +22 -0
- package/lib/push-status.d.ts.map +1 -0
- package/lib/push-status.js +44 -0
- package/lib/push-status.js.map +1 -0
- package/lib/push.d.ts +37 -0
- package/lib/push.d.ts.map +1 -0
- package/lib/push.js +68 -0
- package/lib/push.js.map +1 -0
- package/lib/scorecard-classic/remote/fetch-scorecard.d.ts +9 -0
- package/lib/scorecard-classic/remote/fetch-scorecard.d.ts.map +1 -0
- package/lib/scorecard-classic/remote/fetch-scorecard.js +77 -0
- package/lib/scorecard-classic/remote/fetch-scorecard.js.map +1 -0
- package/lib/scorecard-classic/targets-handler/targets-handler.d.ts +13 -0
- package/lib/scorecard-classic/targets-handler/targets-handler.d.ts.map +1 -0
- package/lib/scorecard-classic/targets-handler/targets-handler.js +54 -0
- package/lib/scorecard-classic/targets-handler/targets-handler.js.map +1 -0
- package/lib/scorecard-classic/types.d.ts +19 -0
- package/lib/scorecard-classic/types.d.ts.map +1 -0
- package/lib/scorecard-classic/types.js +2 -0
- package/lib/scorecard-classic/types.js.map +1 -0
- package/lib/scorecard-classic/validation/plugin-evaluator.d.ts +3 -0
- package/lib/scorecard-classic/validation/plugin-evaluator.d.ts.map +1 -0
- package/lib/scorecard-classic/validation/plugin-evaluator.js +12 -0
- package/lib/scorecard-classic/validation/plugin-evaluator.js.map +1 -0
- package/lib/scorecard-classic/validation/project-url.d.ts +2 -0
- package/lib/scorecard-classic/validation/project-url.d.ts.map +1 -0
- package/lib/scorecard-classic/validation/project-url.js +11 -0
- package/lib/scorecard-classic/validation/project-url.js.map +1 -0
- package/lib/scorecard-classic/validation/validate-scorecard.d.ts +21 -0
- package/lib/scorecard-classic/validation/validate-scorecard.d.ts.map +1 -0
- package/lib/scorecard-classic/validation/validate-scorecard.js +55 -0
- package/lib/scorecard-classic/validation/validate-scorecard.js.map +1 -0
- package/lib/utils/constants.d.ts +3 -0
- package/lib/utils/constants.d.ts.map +1 -0
- package/lib/utils/constants.js +5 -0
- package/lib/utils/constants.js.map +1 -0
- package/lib/utils/fetch-with-timeout.d.ts +6 -0
- package/lib/utils/fetch-with-timeout.d.ts.map +1 -0
- package/lib/utils/fetch-with-timeout.js +25 -0
- package/lib/utils/fetch-with-timeout.js.map +1 -0
- package/lib/utils/proxy-env.d.ts +3 -0
- package/lib/utils/proxy-env.d.ts.map +1 -0
- package/lib/utils/proxy-env.js +37 -0
- package/lib/utils/proxy-env.js.map +1 -0
- package/lib/utils/retry-until-condition-met.d.ts +19 -0
- package/lib/utils/retry-until-condition-met.d.ts.map +1 -0
- package/lib/utils/retry-until-condition-met.js +28 -0
- package/lib/utils/retry-until-condition-met.js.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ScorecardConfig } from '@redocly/config';
|
|
2
|
+
import { type Config, type Plugin } from '@redocly/openapi-core';
|
|
3
|
+
export declare function resolveConfigForTarget(apiPath: string, targetRules: Record<string, unknown> | undefined, scorecardLevels: ScorecardConfig['levels'], plugins: Array<string | Plugin> | undefined, configPath: string): Promise<Record<string, Config>>;
|
|
4
|
+
export declare function getTarget<T extends object>(targets: Array<{
|
|
5
|
+
where: {
|
|
6
|
+
metadata: Record<string, string>;
|
|
7
|
+
};
|
|
8
|
+
} & T> | undefined, metadata: Record<string, unknown>): ({
|
|
9
|
+
where: {
|
|
10
|
+
metadata: Record<string, string>;
|
|
11
|
+
};
|
|
12
|
+
} & T) | undefined;
|
|
13
|
+
//# sourceMappingURL=targets-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets-handler.d.ts","sourceRoot":"","sources":["../../../src/scorecard-classic/targets-handler/targets-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,MAAM,EAIZ,MAAM,uBAAuB,CAAC;AAE/B,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAChD,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAM,EAC/C,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,YAAK,EACpC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkBjC;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EACxC,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,CAAC,GAAG,SAAS,EAC/E,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;WADT;QAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;mBAkB7D"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { createConfig, HandledError, regexFromString, } from '@redocly/openapi-core';
|
|
2
|
+
export async function resolveConfigForTarget(apiPath, targetRules, scorecardLevels = [], plugins = [], configPath) {
|
|
3
|
+
const result = {};
|
|
4
|
+
for (const level of scorecardLevels) {
|
|
5
|
+
const apis = {
|
|
6
|
+
[level.name]: {
|
|
7
|
+
root: apiPath,
|
|
8
|
+
rules: targetRules,
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
const config = await createConfig({ apis, ...level, plugins }, {
|
|
12
|
+
configPath,
|
|
13
|
+
});
|
|
14
|
+
result[level.name] = config.forAlias(level.name);
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
export function getTarget(targets, metadata) {
|
|
19
|
+
if (!targets) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
for (const target of targets) {
|
|
23
|
+
const matches = Object.entries(target.where?.metadata || {}).every(([key, value]) => isTargetMatch(key, value, metadata));
|
|
24
|
+
if (matches) {
|
|
25
|
+
return target;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
function isTargetMatch(key, value, metadata) {
|
|
31
|
+
// support for ISO 8601 date ranges
|
|
32
|
+
if (value.match(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?\/(\d{4}-\d{2}-\d{2})?$/)) {
|
|
33
|
+
if (!metadata[key]) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
const [from, to] = value.split('/');
|
|
37
|
+
const date = new Date(metadata[key]);
|
|
38
|
+
return !(date < new Date(from) || (to && date > new Date(to)));
|
|
39
|
+
}
|
|
40
|
+
else if (value.match(/^\/.*\//)) {
|
|
41
|
+
if (!metadata[key]) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const regex = regexFromString(value);
|
|
46
|
+
return regex.test(metadata[key]);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
throw new HandledError(`Invalid regex in scorecard target "${key}": ${value}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return metadata[key] === value;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=targets-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets-handler.js","sourceRoot":"","sources":["../../../src/scorecard-classic/targets-handler/targets-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,YAAY,EACZ,YAAY,EACZ,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,WAAgD,EAChD,kBAA6C,EAAE,EAC/C,UAAkC,EAAE,EACpC,UAAkB;IAElB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG;YACX,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACZ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,WAAW;aACnB;SACF,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,OAAO,EAAwB,EAAE;YACnF,UAAU;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,OAA+E,EAC/E,QAAiC;IAEjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAChE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAmB,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CACxE,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,KAAa,EAAE,QAAiC;IAClF,mCAAmC;IACnC,IAAI,KAAK,CAAC,KAAK,CAAC,iEAAiE,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAW,CAAC,CAAC;QAE/C,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAW,CAAC;YAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAW,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,YAAY,CAAC,sCAAsC,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ScorecardConfig } from '@redocly/config';
|
|
2
|
+
import type { NormalizedProblem, ResolvedConfig } from '@redocly/openapi-core';
|
|
3
|
+
export type ScorecardProblem = NormalizedProblem & {
|
|
4
|
+
scorecardLevel?: string;
|
|
5
|
+
};
|
|
6
|
+
export type RemoteScorecardAndPlugins = {
|
|
7
|
+
scorecard: ScorecardConfig;
|
|
8
|
+
plugins: string | undefined;
|
|
9
|
+
pluginsUrl: string | undefined;
|
|
10
|
+
};
|
|
11
|
+
export type Project = {
|
|
12
|
+
id: `prj_${string}`;
|
|
13
|
+
slug: string;
|
|
14
|
+
config: ResolvedConfig & {
|
|
15
|
+
pluginsUrl?: string;
|
|
16
|
+
scorecardClassic?: ScorecardConfig;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scorecard-classic/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,OAAO,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,eAAe,CAAA;KAAE,CAAC;CACtF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scorecard-classic/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-evaluator.d.ts","sourceRoot":"","sources":["../../../src/scorecard-classic/validation/plugin-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AASpD,wBAAsB,uBAAuB,CAC3C,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { pathToFileURL } from 'node:url';
|
|
2
|
+
export async function evaluatePluginsFromCode(pluginsCode, basePath) {
|
|
3
|
+
if (!pluginsCode) {
|
|
4
|
+
return [];
|
|
5
|
+
}
|
|
6
|
+
const dirname = pathToFileURL(basePath ?? process.cwd()).href + '/';
|
|
7
|
+
const pluginsCodeWithDirname = pluginsCode.replaceAll('__redocly_dirname', `"${dirname}"`);
|
|
8
|
+
const dataUri = `data:text/javascript;base64,${btoa(pluginsCodeWithDirname)}`;
|
|
9
|
+
const module = await import(dataUri);
|
|
10
|
+
return module.default.map((pluginFunction) => pluginFunction());
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=plugin-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-evaluator.js","sourceRoot":"","sources":["../../../src/scorecard-classic/validation/plugin-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAQzC,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAoB,EACpB,QAAiB;IAEjB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;IACpE,MAAM,sBAAsB,GAAG,WAAW,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC;IAC3F,MAAM,OAAO,GAAG,+BAA+B,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;IAE9E,MAAM,MAAM,GAAkB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-url.d.ts","sourceRoot":"","sources":["../../../src/scorecard-classic/validation/project-url.ts"],"names":[],"mappings":"AAEA,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAOvE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const ALLOWED_DOMAIN_SUFFIX = '.redocly.com';
|
|
2
|
+
export function isAllowedScorecardProjectUrl(urlString) {
|
|
3
|
+
try {
|
|
4
|
+
const hostname = new URL(urlString).hostname.toLowerCase();
|
|
5
|
+
return hostname.endsWith(ALLOWED_DOMAIN_SUFFIX);
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=project-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-url.js","sourceRoot":"","sources":["../../../src/scorecard-classic/validation/project-url.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAE7C,MAAM,UAAU,4BAA4B,CAAC,SAAiB;IAC5D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC3D,OAAO,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ScorecardConfig } from '@redocly/config';
|
|
2
|
+
import { type Document, type Plugin, type BaseResolver } from '@redocly/openapi-core';
|
|
3
|
+
import type { ScorecardProblem } from '../types.js';
|
|
4
|
+
export type ScorecardValidationResult = {
|
|
5
|
+
problems: ScorecardProblem[];
|
|
6
|
+
achievedLevel: string;
|
|
7
|
+
targetLevelAchieved: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type ValidateScorecardParams = {
|
|
10
|
+
apiPath: string;
|
|
11
|
+
document: Document;
|
|
12
|
+
externalRefResolver: BaseResolver;
|
|
13
|
+
scorecardConfig: ScorecardConfig;
|
|
14
|
+
configPath?: string;
|
|
15
|
+
plugins?: Plugin[];
|
|
16
|
+
targetLevel?: string;
|
|
17
|
+
metadata?: Record<string, unknown>;
|
|
18
|
+
onDebug?: (message: string) => void;
|
|
19
|
+
};
|
|
20
|
+
export declare function validateScorecard({ apiPath, document, externalRefResolver, scorecardConfig, configPath, plugins, targetLevel, metadata, onDebug, }: ValidateScorecardParams): Promise<ScorecardValidationResult>;
|
|
21
|
+
//# sourceMappingURL=validate-scorecard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-scorecard.d.ts","sourceRoot":"","sources":["../../../src/scorecard-classic/validation/validate-scorecard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,mBAAmB,EAAE,YAAY,CAAC;IAClC,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,OAAY,EACZ,WAAW,EACX,QAAa,EACb,OAAO,GACR,EAAE,uBAAuB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA0D9D"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { HandledError, lintDocument, pluralize, } from '@redocly/openapi-core';
|
|
2
|
+
import { getTarget, resolveConfigForTarget } from '../targets-handler/targets-handler.js';
|
|
3
|
+
export async function validateScorecard({ apiPath, document, externalRefResolver, scorecardConfig, configPath, plugins = [], targetLevel, metadata = {}, onDebug, }) {
|
|
4
|
+
const problems = [];
|
|
5
|
+
const levelResults = new Map();
|
|
6
|
+
const levels = scorecardConfig.levels || [];
|
|
7
|
+
if (targetLevel && !levels.some((level) => level.name === targetLevel)) {
|
|
8
|
+
throw new HandledError(`Target level "${targetLevel}" not found in the scorecard configuration levels.\n`);
|
|
9
|
+
}
|
|
10
|
+
const targetRules = getTarget(scorecardConfig.targets, metadata)?.rules;
|
|
11
|
+
const levelConfigs = await resolveConfigForTarget(apiPath, targetRules, levels, plugins, configPath || '');
|
|
12
|
+
for (const level of levels) {
|
|
13
|
+
onDebug?.(`\nValidating level: "${level.name}"`);
|
|
14
|
+
if (plugins.length > 0) {
|
|
15
|
+
onDebug?.(`Using ${plugins.length} ${pluralize('plugin', plugins.length)} for this level.`);
|
|
16
|
+
}
|
|
17
|
+
onDebug?.('Linting document against level rules...');
|
|
18
|
+
const levelProblems = await lintDocument({
|
|
19
|
+
document,
|
|
20
|
+
externalRefResolver,
|
|
21
|
+
config: levelConfigs[level.name],
|
|
22
|
+
});
|
|
23
|
+
const filteredProblems = levelProblems
|
|
24
|
+
.filter(({ ignored }) => !ignored)
|
|
25
|
+
.map((problem) => ({
|
|
26
|
+
...problem,
|
|
27
|
+
scorecardLevel: level.name,
|
|
28
|
+
}));
|
|
29
|
+
onDebug?.(`Found ${filteredProblems.length} ${pluralize('problem', filteredProblems.length)} for level "${level.name}".`);
|
|
30
|
+
levelResults.set(level.name, filteredProblems);
|
|
31
|
+
problems.push(...filteredProblems);
|
|
32
|
+
}
|
|
33
|
+
const achievedLevel = determineAchievedLevel(levelResults, levels, targetLevel);
|
|
34
|
+
return {
|
|
35
|
+
problems,
|
|
36
|
+
achievedLevel,
|
|
37
|
+
targetLevelAchieved: targetLevel ? achievedLevel === targetLevel : true,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function determineAchievedLevel(levelResults, levels, targetLevel) {
|
|
41
|
+
let lastPassedLevel = null;
|
|
42
|
+
for (const level of levels) {
|
|
43
|
+
const levelProblems = levelResults.get(level.name) || [];
|
|
44
|
+
const hasErrors = levelProblems.some((p) => p.severity === 'error');
|
|
45
|
+
if (hasErrors) {
|
|
46
|
+
return lastPassedLevel || 'Non Conformant';
|
|
47
|
+
}
|
|
48
|
+
lastPassedLevel = level.name;
|
|
49
|
+
if (targetLevel && level.name === targetLevel) {
|
|
50
|
+
return level.name;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return lastPassedLevel || 'Non Conformant';
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=validate-scorecard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-scorecard.js","sourceRoot":"","sources":["../../../src/scorecard-classic/validation/validate-scorecard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,eAAO,MAAM,mBAAmB,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,8FAA8F;AAC9F,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-with-timeout.d.ts","sourceRoot":"","sources":["../../src/utils/fetch-with-timeout.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;yBAEoB,KAAK,MAAM,EAAE,0BAAyB,uBAA4B;AAAxF,wBAuBE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copied from @redocly/cli.
|
|
2
|
+
import { Agent, ProxyAgent } from 'undici';
|
|
3
|
+
import { getProxyUrl, shouldBypassProxy } from './proxy-env.js';
|
|
4
|
+
export default async (url, { timeout, ...options } = {}) => {
|
|
5
|
+
const proxyUrl = getProxyUrl();
|
|
6
|
+
const useProxy = proxyUrl && !shouldBypassProxy(url);
|
|
7
|
+
let dispatcher;
|
|
8
|
+
const connectOptions = timeout ? { connect: { timeout } } : {};
|
|
9
|
+
if (useProxy) {
|
|
10
|
+
dispatcher = new ProxyAgent({
|
|
11
|
+
uri: proxyUrl,
|
|
12
|
+
...connectOptions,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
else if (timeout) {
|
|
16
|
+
dispatcher = new Agent(connectOptions);
|
|
17
|
+
}
|
|
18
|
+
const res = await fetch(url, {
|
|
19
|
+
signal: timeout ? AbortSignal.timeout(timeout) : undefined,
|
|
20
|
+
...options,
|
|
21
|
+
dispatcher,
|
|
22
|
+
});
|
|
23
|
+
return res;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=fetch-with-timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-with-timeout.js","sourceRoot":"","sources":["../../src/utils/fetch-with-timeout.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMhE,eAAe,KAAK,EAAE,GAAW,EAAE,EAAE,OAAO,EAAE,GAAG,OAAO,KAA8B,EAAE,EAAE,EAAE;IAC1F,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,UAA0C,CAAC;IAE/C,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/D,IAAI,QAAQ,EAAE,CAAC;QACb,UAAU,GAAG,IAAI,UAAU,CAAC;YAC1B,GAAG,EAAE,QAAQ;YACb,GAAG,cAAc;SAClB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,UAAU,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1D,GAAG,OAAO;QACV,UAAU;KACI,CAAC,CAAC;IAElB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-env.d.ts","sourceRoot":"","sources":["../../src/utils/proxy-env.ts"],"names":[],"mappings":"AACA,wBAAgB,WAAW,IAAI,MAAM,GAAG,SAAS,CAOhD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAwBtD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Copied from @redocly/cli.
|
|
2
|
+
export function getProxyUrl() {
|
|
3
|
+
return (process.env.HTTPS_PROXY ||
|
|
4
|
+
process.env.HTTP_PROXY ||
|
|
5
|
+
process.env.http_proxy ||
|
|
6
|
+
process.env.https_proxy);
|
|
7
|
+
}
|
|
8
|
+
export function shouldBypassProxy(url) {
|
|
9
|
+
const noProxy = process.env.NO_PROXY || process.env.no_proxy;
|
|
10
|
+
if (!noProxy)
|
|
11
|
+
return false;
|
|
12
|
+
const entries = noProxy
|
|
13
|
+
.split(',')
|
|
14
|
+
.map((entry) => entry.trim().toLowerCase())
|
|
15
|
+
.filter(Boolean);
|
|
16
|
+
if (entries.length === 0)
|
|
17
|
+
return false;
|
|
18
|
+
let hostname;
|
|
19
|
+
try {
|
|
20
|
+
hostname = new URL(url).hostname.toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return entries.some((entry) => {
|
|
26
|
+
if (entry === '*')
|
|
27
|
+
return true;
|
|
28
|
+
if (hostname === entry)
|
|
29
|
+
return true;
|
|
30
|
+
if (entry.startsWith('.') && hostname.endsWith(entry))
|
|
31
|
+
return true;
|
|
32
|
+
if (!entry.startsWith('.') && hostname.endsWith('.' + entry))
|
|
33
|
+
return true;
|
|
34
|
+
return false;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=proxy-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-env.js","sourceRoot":"","sources":["../../src/utils/proxy-env.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,MAAM,UAAU,WAAW;IACzB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,OAAO,CAAC,GAAG,CAAC,WAAW,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC7D,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,OAAO,GAAG,OAAO;SACpB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAC1C,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,QAAQ,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retries an operation until a condition is met or a timeout is exceeded.
|
|
3
|
+
* @param operation The operation to retry.
|
|
4
|
+
* @param condition Checked after each result. Return false to keep retrying, true to stop.
|
|
5
|
+
* @param onConditionNotMet Called with the last result before pausing and retrying.
|
|
6
|
+
* @param startTime The start time of the operation. Default is the current time.
|
|
7
|
+
* @param retryTimeoutMs The maximum time to retry the operation. Default is 10 minutes.
|
|
8
|
+
* @param retryIntervalMs The interval between retries. Default is 5 seconds.
|
|
9
|
+
*/
|
|
10
|
+
export declare function retryUntilConditionMet<T>({ operation, condition, onConditionNotMet, startTime, retryTimeoutMs, // 10 min
|
|
11
|
+
retryIntervalMs, }: {
|
|
12
|
+
operation: () => Promise<T>;
|
|
13
|
+
condition: (result: T) => boolean;
|
|
14
|
+
onConditionNotMet?: (lastResult: T) => void | Promise<void>;
|
|
15
|
+
startTime?: number;
|
|
16
|
+
retryTimeoutMs?: number;
|
|
17
|
+
retryIntervalMs?: number;
|
|
18
|
+
}): Promise<T>;
|
|
19
|
+
//# sourceMappingURL=retry-until-condition-met.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-until-condition-met.d.ts","sourceRoot":"","sources":["../../src/utils/retry-until-condition-met.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,EAC9C,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,SAAsB,EACtB,cAAuB,EAAE,SAAS;AAClC,eAAsB,GACvB,EAAE;IACD,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,CAAC,CAAC,CAmBb"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { pause } from '@redocly/openapi-core';
|
|
2
|
+
/**
|
|
3
|
+
* Retries an operation until a condition is met or a timeout is exceeded.
|
|
4
|
+
* @param operation The operation to retry.
|
|
5
|
+
* @param condition Checked after each result. Return false to keep retrying, true to stop.
|
|
6
|
+
* @param onConditionNotMet Called with the last result before pausing and retrying.
|
|
7
|
+
* @param startTime The start time of the operation. Default is the current time.
|
|
8
|
+
* @param retryTimeoutMs The maximum time to retry the operation. Default is 10 minutes.
|
|
9
|
+
* @param retryIntervalMs The interval between retries. Default is 5 seconds.
|
|
10
|
+
*/
|
|
11
|
+
export async function retryUntilConditionMet({ operation, condition, onConditionNotMet, startTime = Date.now(), retryTimeoutMs = 600000, // 10 min
|
|
12
|
+
retryIntervalMs = 5000, // 5 sec
|
|
13
|
+
}) {
|
|
14
|
+
async function attempt() {
|
|
15
|
+
const result = await operation();
|
|
16
|
+
if (condition(result)) {
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
if (Date.now() - startTime > retryTimeoutMs) {
|
|
20
|
+
throw new Error('Timeout exceeded.');
|
|
21
|
+
}
|
|
22
|
+
await onConditionNotMet?.(result);
|
|
23
|
+
await pause(retryIntervalMs);
|
|
24
|
+
return attempt();
|
|
25
|
+
}
|
|
26
|
+
return attempt();
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=retry-until-condition-met.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-until-condition-met.js","sourceRoot":"","sources":["../../src/utils/retry-until-condition-met.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAI,EAC9C,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EACtB,cAAc,GAAG,MAAM,EAAE,SAAS;AAClC,eAAe,GAAG,IAAI,EAAE,QAAQ;EAQjC;IACC,KAAK,UAAU,OAAO;QACpB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,cAAc,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;QAE7B,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,OAAO,OAAO,EAAE,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/reunite-integration",
|
|
3
|
-
"version": "2.54.
|
|
3
|
+
"version": "2.54.2",
|
|
4
4
|
"description": "Programmatic access to the Redocly Reunite platform capabilities",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -27,11 +27,13 @@
|
|
|
27
27
|
"Reunite"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@redocly/
|
|
31
|
-
"@redocly/openapi-core": "2.54.0",
|
|
30
|
+
"@redocly/openapi-core": "2.54.2",
|
|
32
31
|
"undici": "^6.28.0"
|
|
33
32
|
},
|
|
34
33
|
"files": [
|
|
35
34
|
"lib"
|
|
36
|
-
]
|
|
35
|
+
],
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@redocly/config": "^0.57.0"
|
|
38
|
+
}
|
|
37
39
|
}
|