Skip to content

Commit 91c0cb8

Browse files
committed
fix(ts/oxlint): enable tsconfig compilerOptions and oxlint rules
1 parent 76de3cb commit 91c0cb8

14 files changed

+389
-376
lines changed

.oxlintrc.json

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"suspicious": "error"
1111
},
1212
"env": {
13-
"browser": true
13+
"es2022": true,
14+
"shared-node-browser": true
1415
},
1516
"plugins": [
1617
"typescript",
@@ -30,7 +31,7 @@
3031
],
3132
"@typescript-eslint/no-explicit-any": "off",
3233
"@typescript-eslint/no-unsafe-declaration-merging": "off",
33-
"eslint/curly": "off",
34+
"eslint/curly": "error",
3435
"eslint/max-depth": "off",
3536
"eslint/max-lines": "off",
3637
"eslint/max-lines-per-function": "off",
@@ -64,22 +65,15 @@
6465
"no-optional-chaining": "off",
6566
"no-ternary": "off",
6667
"no-undefined": "off",
67-
"no-unexpected-multiline": "off",
6868
"oxc/no-barrel-file": "off",
6969
"oxc/no-rest-spread-properties": "off",
70-
"prefer-promise-reject-errors": "off",
7170
"promise/catch-or-return": "off",
72-
"promise/no-nesting": "off",
73-
"promise/no-return-wrap": "off",
74-
"promise/prefer-await-to-callbacks": "off",
75-
"promise/prefer-await-to-then": "off",
7671
"sort-imports": "off",
7772
"sort-keys": "off",
7873
"sort-vars": "off",
7974
"typescript/consistent-indexed-object-style": "error",
8075
"typescript/explicit-function-return-type": "off",
8176
"typescript/no-empty-interface": "off",
82-
"unicorn/empty-brace-spaces": "off",
8377
"unicorn/error-message": "off",
8478
"unicorn/filename-case": [
8579
"error",
@@ -102,9 +96,9 @@
10296
"withinDescribe": "test"
10397
}
10498
],
105-
"vitest/max-expects": "off",
106-
"vitest/no-hooks": "off",
107-
"vitest/prefer-lowercase-title": "off",
99+
"vitest/max-expects": "off",
100+
"vitest/no-hooks": "off",
101+
"vitest/prefer-lowercase-title": "off",
108102
"vitest/prefer-strict-equal": "off",
109103
"vitest/prefer-to-be-falsy": "off",
110104
"vitest/prefer-to-be-truthy": "off",

src/graphql/parseGraphQl.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,9 @@ export default async function parseGraphQl(
6767
type.name !== schema.subscriptionType?.name &&
6868
!type.name.startsWith("__") &&
6969
// mutation
70-
!type.name.startsWith(type.name[0].toLowerCase()) &&
70+
(!type.name[0] || !type.name.startsWith(type.name[0].toLowerCase())) &&
7171
!type.name.endsWith("Connection") &&
72-
!type.name.endsWith("Edge") &&
73-
!type.name.endsWith("PageInfo"),
72+
!type.name.endsWith("Edge"),
7473
) as IntrospectionObjectType[];
7574

7675
const resources: Resource[] = [];
@@ -84,7 +83,7 @@ export default async function parseGraphQl(
8483
range: getRangeFromGraphQlType(resourceFieldType.type),
8584
reference: getReferenceFromGraphQlType(resourceFieldType.type),
8685
required: resourceFieldType.type.kind === "NON_NULL",
87-
description: resourceFieldType.description,
86+
description: resourceFieldType.description || "",
8887
deprecated: resourceFieldType.isDeprecated,
8988
});
9089

src/hydra/fetchJsonLd.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,21 @@ export default async function fetchJsonLd(
4343
throw reason;
4444
}
4545

46-
return response.json().then((body: JsonLd) => ({
46+
const body = (await response.json()) as JsonLd;
47+
return {
4748
response,
4849
body,
4950
document: body,
5051
documentUrl: url,
51-
}));
52+
};
5253
}
5354

5455
function setHeaders(options: RequestInitExtended): RequestInit {
5556
if (!options.headers) {
5657
return { ...options, headers: {} };
5758
}
5859

59-
let headers: HeadersInit =
60+
let headers =
6061
typeof options.headers === "function" ? options.headers() : options.headers;
6162

6263
headers = new Headers(headers);

src/hydra/fetchResource.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
import type { EmptyResponseDocument, ResponseDocument } from "./fetchJsonLd.js";
21
import fetchJsonLd from "./fetchJsonLd.js";
32
import type { IriTemplateMapping, RequestInitExtended } from "./types.js";
43

5-
export default function fetchResource(
4+
export default async function fetchResource(
65
resourceUrl: string,
76
options: RequestInitExtended = {},
87
): Promise<{ parameters: IriTemplateMapping[] }> {
9-
return fetchJsonLd(
8+
const response = await fetchJsonLd(
109
resourceUrl,
1110
// oxlint-disable-next-line prefer-object-spread
1211
Object.assign({ itemsPerPage: 0 }, options),
13-
).then((d: ResponseDocument | EmptyResponseDocument) => {
14-
let hasPrefix = true;
15-
if ((d as ResponseDocument).body) {
16-
hasPrefix = "hydra:search" in (d as ResponseDocument).body;
17-
}
18-
return {
19-
parameters: (hasPrefix
20-
? (d as any)?.body?.["hydra:search"]?.["hydra:mapping"]
21-
: (d as any)?.body?.search?.mapping) as unknown as IriTemplateMapping[],
22-
};
23-
});
12+
);
13+
14+
let hasPrefix = true;
15+
if ("body" in response) {
16+
hasPrefix = "hydra:search" in response.body;
17+
}
18+
return {
19+
parameters: (hasPrefix
20+
? (response as any)?.body?.["hydra:search"]?.["hydra:mapping"]
21+
: (response as any)?.body?.search
22+
?.mapping) as unknown as IriTemplateMapping[],
23+
};
2424
}

src/hydra/getParameters.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,23 @@ import fetchResource from "./fetchResource.js";
33
import type { Resource } from "../Resource.js";
44
import type { RequestInitExtended } from "./types.js";
55

6-
export default function getParameters(
6+
export default async function getParameters(
77
resource: Resource,
88
options: RequestInitExtended = {},
99
): Promise<Parameter[]> {
10-
return fetchResource(resource.url, options).then(({ parameters = [] }) => {
11-
const resourceParameters: Parameter[] = [];
12-
for (const { property = null, required, variable } of parameters) {
13-
if (property === null) {
14-
continue;
15-
}
10+
const { parameters = [] } = await fetchResource(resource.url, options);
11+
const resourceParameters: Parameter[] = [];
12+
for (const { property = null, required, variable } of parameters) {
13+
if (property === null) {
14+
continue;
15+
}
1616

17-
const { range = null } = resource.fields
18-
? resource.fields.find(({ name }) => property === name) || {}
19-
: {};
17+
const { range = null } =
18+
resource.fields?.find(({ name }) => property === name) || {};
2019

21-
resourceParameters.push(new Parameter(variable, range, required, ""));
22-
}
23-
resource.parameters = resourceParameters;
20+
resourceParameters.push(new Parameter(variable, range, required, ""));
21+
}
22+
resource.parameters = resourceParameters;
2423

25-
return resourceParameters;
26-
});
24+
return resourceParameters;
2725
}

0 commit comments

Comments
 (0)