Skip to content

Commit f10dc14

Browse files
committed
feat(oas): working to get strict mode enabled
1 parent f3e4f2a commit f10dc14

File tree

8 files changed

+27
-20
lines changed

8 files changed

+27
-20
lines changed

packages/oas/src/analyzer/queries/readme.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export function codeSampleLanguages(definition: OASDocument): string[] {
2323
new Set(
2424
query(["$..['x-readme']['samples-languages']", "$..['x-samples-languages']"], definition)
2525
.map(res => res.value as string)
26-
.reduce((prev, next) => prev.concat(next), []),
26+
.reduce<string[]>((prev, next) => prev.concat(next), []),
2727
),
2828
);
2929

packages/oas/src/extensions.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -265,10 +265,10 @@ export interface Extensions {
265265
}
266266

267267
export const extensionDefaults: Extensions = {
268-
[CODE_SAMPLES]: undefined,
268+
[CODE_SAMPLES]: [],
269269
[DISABLE_TAG_SORTING]: false,
270270
[EXPLORER_ENABLED]: true,
271-
[HEADERS]: undefined,
271+
[HEADERS]: [],
272272
[METRICS_ENABLED]: true,
273273
[OAUTH_OPTIONS]: {},
274274
[PARAMETER_ORDERING]: ['path', 'query', 'body', 'cookie', 'form', 'header'],
@@ -342,6 +342,10 @@ export function validateParameterOrdering(
342342
ordering: (typeof extensionDefaults)[typeof PARAMETER_ORDERING] | undefined,
343343
extension: string,
344344
): void {
345+
if (!ordering) {
346+
return;
347+
}
348+
345349
const defaultValue = extensionDefaults[PARAMETER_ORDERING];
346350
const requiredLength = defaultValue.length;
347351
const defaultsHuman = `${defaultValue.slice(0, -1).join(', ')}, and ${defaultValue.slice(-1)}`;

packages/oas/src/lib/clone-object.ts

-8
This file was deleted.

packages/oas/src/lib/get-auth.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ type authKey = unknown | { password: number | string; user: number | string } |
77
* @param user User to retrieve retrieve an auth key for.
88
* @param scheme The type of security scheme that we want a key for.
99
*/
10-
function getKey(user: RMOAS.User, scheme: RMOAS.KeyedSecuritySchemeObject): authKey {
10+
function getKey(user: RMOAS.User | undefined, scheme: RMOAS.KeyedSecuritySchemeObject): authKey {
11+
if (!user) {
12+
return null;
13+
}
14+
1115
switch (scheme.type) {
1216
case 'oauth2':
1317
case 'apiKey':
@@ -82,12 +86,12 @@ export function getAuth(
8286
{
8387
// This sucks but since we dereference we'll never have a `$ref` pointer here with a
8488
// `ReferenceObject` type.
85-
...(api.components.securitySchemes[scheme] as RMOAS.SecuritySchemeObject),
89+
...(api.components?.securitySchemes?.[scheme] as RMOAS.SecuritySchemeObject),
8690
_key: scheme,
8791
},
8892
selectedApp,
8993
),
9094
};
9195
})
92-
.reduce((prev, next) => Object.assign(prev, next), {});
96+
.reduce<RMOAS.AuthForHAR>((prev, next) => Object.assign(prev, next), {});
9397
}

packages/oas/src/lib/get-user-variable.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type * as RMOAS from '../types.js';
99
* @param selectedApp The user app to retrieve an auth key for.
1010
*/
1111
export default function getUserVariable(user: RMOAS.User, property: string, selectedApp?: number | string): unknown {
12-
let key = user;
12+
let key: RMOAS.User | undefined = user;
1313

1414
if ('keys' in user && Array.isArray(user.keys) && user.keys.length) {
1515
if (selectedApp) {
@@ -19,5 +19,5 @@ export default function getUserVariable(user: RMOAS.User, property: string, sele
1919
}
2020
}
2121

22-
return key[property] || user[property] || null;
22+
return key?.[property] || user[property] || null;
2323
}

packages/oas/src/operation/lib/get-callback-examples.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@ export type CallbackExamples = {
1919
export function getCallbackExamples(operation: RMOAS.OperationObject): CallbackExamples {
2020
const ret: CallbackExamples = [];
2121

22+
if (!operation.callbacks) {
23+
return ret;
24+
}
25+
2226
// spreads the contents of the map for each callback so there's not nested arrays returned
2327
return ret.concat(
24-
...Object.keys(operation.callbacks || {}).map(identifier => {
25-
const callback = operation.callbacks[identifier] as RMOAS.CallbackObject;
28+
...Object.keys(operation.callbacks).map(identifier => {
29+
const callback = operation.callbacks![identifier] as RMOAS.CallbackObject;
2630

2731
// spreads the contents again so there's not nested arrays returned
2832
return []

packages/oas/src/operation/lib/get-mediatype-examples.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export function getMediaTypeExamples(
5050

5151
let example = examples[key];
5252
if (example !== null && typeof example === 'object') {
53-
if ('summary' in example) {
53+
if ('summary' in example && example.summary) {
5454
summary = example.summary;
5555
}
5656

packages/oas/tsconfig.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
{
22
"extends": "../../tsconfig.base.json",
33
"include": ["./src/**/*"],
4-
"exclude": ["dist"]
4+
"exclude": ["dist"],
5+
"compilerOptions": {
6+
"strict": true
7+
}
58
}

0 commit comments

Comments
 (0)