Skip to content

Commit 9d6d07a

Browse files
committed
Additional refactoring and expose functions for extension
1 parent 50f0ca3 commit 9d6d07a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+524
-564
lines changed

eslint.config.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import importPlugin from "eslint-plugin-import";
55
export default tseslint.config(
66
...tseslint.configs.recommendedTypeChecked,
77
...tseslint.configs.stylisticTypeChecked,
8-
importPlugin.flatConfigs.recommended, // eslint-disable-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
9-
importPlugin.flatConfigs.typescript, // eslint-disable-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
8+
importPlugin.flatConfigs.recommended,
9+
importPlugin.flatConfigs.typescript,
1010
stylistic.configs.customize({
1111
arrowParens: true,
1212
braceStyle: "1tbs",
@@ -36,6 +36,7 @@ export default tseslint.config(
3636
}],
3737
"@typescript-eslint/no-empty-function": "off",
3838
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
39+
"@typescript-eslint/consistent-indexed-object-style": "off",
3940
"no-console": "error",
4041

4142
// Imports

src/errorHandlers/additionalProperties.js renamed to src/error-handlers/additionalProperties.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
import * as Instance from "@hyperjump/json-schema/instance/experimental";
2-
import { Localization } from "../localization.js";
32

43
/**
5-
* @import {ErrorObject } from "../index.d.ts"
6-
* @import {ErrorHandler} from "../utilis.js"
4+
* @import { ErrorHandler, ErrorObject } from "../index.d.ts"
75
*/
6+
87
/** @type ErrorHandler */
9-
const additionalProperties = async (normalizedErrors, instance, language) => {
8+
// eslint-disable-next-line @typescript-eslint/require-await
9+
const additionalProperties = async (normalizedErrors, instance, localization) => {
1010
/** @type ErrorObject[] */
1111
const errors = [];
1212
if (normalizedErrors["https://json-schema.org/validation"]) {
1313
for (const schemaLocation in normalizedErrors["https://json-schema.org/validation"]) {
1414
if (!normalizedErrors["https://json-schema.org/validation"][schemaLocation] && schemaLocation.endsWith("/additionalProperties")) {
15-
const notAllowedValue = /** @type string */(Instance.uri(instance).split("/").pop());
16-
const localization = await Localization.forLocale(language);
15+
const notAllowedValue = /** @type string */ (Instance.uri(instance).split("/").pop());
1716
errors.push({
1817
message: localization.getAdditionalPropertiesErrorMessage(notAllowedValue),
1918
instanceLocation: Instance.uri(instance),

src/errorHandlers/anyOf.js renamed to src/error-handlers/anyOf.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
import { getSchema } from "@hyperjump/json-schema/experimental";
22
import * as Schema from "@hyperjump/browser";
33
import * as Instance from "@hyperjump/json-schema/instance/experimental";
4-
import { getErrors } from "../utilis.js";
5-
import { Localization } from "../localization.js";
4+
import { getErrors } from "../error-handling.js";
65

76
/**
8-
* @import {ErrorObject } from "../index.d.ts"
9-
* @import { NormalizedOutput } from "../normalizeOutputFormat/normalizeOutput.js"
10-
* @import {ErrorHandler} from "../utilis.js"
7+
* @import { ErrorHandler, ErrorObject, NormalizedOutput } from "../index.d.ts"
118
*/
129

1310
/** @type ErrorHandler */
14-
const anyOf = async (normalizedErrors, instance, language) => {
11+
const anyOf = async (normalizedErrors, instance, localization) => {
1512
/** @type ErrorObject[] */
1613
const errors = [];
1714

@@ -29,7 +26,6 @@ const anyOf = async (normalizedErrors, instance, language) => {
2926
if (alternatives.length === 0) {
3027
/** @type Set<string> */
3128
const expectedTypes = new Set();
32-
const localization = await Localization.forLocale(language);
3329
for (const alternative of allAlternatives) {
3430
for (const instanceLocation in alternative) {
3531
if (instanceLocation === Instance.uri(instance)) {
@@ -47,14 +43,14 @@ const anyOf = async (normalizedErrors, instance, language) => {
4743
schemaLocation: schemaLocation
4844
});
4945
} else if (alternatives.length === 1) { // case 2 when only one type match
50-
return getErrors(alternatives[0], instance, language);
46+
return getErrors(alternatives[0], instance, localization);
5147
} else if (instance.type === "object") {
5248
let targetAlternativeIndex = -1;
5349
for (const alternative of alternatives) {
5450
targetAlternativeIndex++;
5551
for (const instanceLocation in alternative) {
5652
if (instanceLocation !== "#") {
57-
return getErrors(alternatives[targetAlternativeIndex], instance, language);
53+
return getErrors(alternatives[targetAlternativeIndex], instance, localization);
5854
}
5955
}
6056
}

src/errorHandlers/const.js renamed to src/error-handlers/const.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
import { getSchema } from "@hyperjump/json-schema/experimental";
22
import * as Schema from "@hyperjump/browser";
33
import * as Instance from "@hyperjump/json-schema/instance/experimental";
4-
import { Localization } from "../localization.js";
54

65
/**
7-
* @import {ErrorObject } from "../index.d.ts"
8-
* @import {ErrorHandler} from "../utilis.js"
6+
* @import { ErrorHandler, ErrorObject } from "../index.d.ts"
97
*/
108

119
/** @type ErrorHandler */
12-
const const_ = async (normalizedErrors, instance, language) => {
10+
const const_ = async (normalizedErrors, instance, localization) => {
1311
/** @type ErrorObject[] */
1412
const errors = [];
1513

1614
if (normalizedErrors["https://json-schema.org/keyword/const"]) {
1715
for (const schemaLocation in normalizedErrors["https://json-schema.org/keyword/const"]) {
1816
if (!normalizedErrors["https://json-schema.org/keyword/const"][schemaLocation]) {
1917
const keyword = await getSchema(schemaLocation);
20-
const localization = await Localization.forLocale(language);
2118
errors.push({
2219
message: localization.getConstErrorMessage(Schema.value(keyword)),
2320
instanceLocation: Instance.uri(instance),

src/errorHandlers/contains.js renamed to src/error-handlers/contains.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,24 @@
11
import * as Instance from "@hyperjump/json-schema/instance/experimental";
2-
import { getErrors } from "../utilis.js";
3-
import { Localization } from "../localization.js";
2+
import { getErrors } from "../error-handling.js";
43

54
/**
6-
* @import {ErrorObject } from "../index.d.ts"
7-
* @import { NormalizedOutput } from "../normalizeOutputFormat/normalizeOutput.js"
8-
* @import {ErrorHandler} from "../utilis.js"
5+
* @import { ErrorHandler, ErrorObject, NormalizedOutput } from "../index.d.ts"
96
*/
7+
108
/** @type ErrorHandler */
11-
const contains = async (normalizedErrors, instance, language) => {
9+
const contains = async (normalizedErrors, instance, localization) => {
1210
/** @type ErrorObject[] */
1311
const errors = [];
1412
if (normalizedErrors["https://json-schema.org/keyword/contains"]) {
1513
for (const schemaLocation in normalizedErrors["https://json-schema.org/keyword/contains"]) {
16-
const localization = await Localization.forLocale(language);
1714
errors.push({
1815
message: localization.getContainsErrorMessage(),
1916
instanceLocation: Instance.uri(instance),
2017
schemaLocation: schemaLocation
2118
});
2219
const containsNodes = /** @type NormalizedOutput[] */(normalizedErrors["https://json-schema.org/keyword/contains"][schemaLocation]);
2320
for (const errorOutput of containsNodes) {
24-
const containsSubErrors = await getErrors(errorOutput, instance, language);
21+
const containsSubErrors = await getErrors(errorOutput, instance, localization);
2522
errors.push(...containsSubErrors);
2623
}
2724
}

src/errorHandlers/dependentRequired.js renamed to src/error-handlers/dependentRequired.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import { getSchema } from "@hyperjump/json-schema/experimental";
22
import * as Schema from "@hyperjump/browser";
33
import * as Instance from "@hyperjump/json-schema/instance/experimental";
4-
import { Localization } from "../localization.js";
54

65
/**
7-
* @import {ErrorObject } from "../index.d.ts"
8-
* @import {ErrorHandler} from "../utilis.js"
6+
* @import { ErrorHandler, ErrorObject } from "../index.d.ts"
97
*/
108

119
/** @type ErrorHandler */
12-
const dependentRequired = async (normalizedErrors, instance, language) => {
10+
const dependentRequired = async (normalizedErrors, instance, localization) => {
1311
/** @type ErrorObject[] */
1412
const errors = [];
1513

@@ -18,7 +16,6 @@ const dependentRequired = async (normalizedErrors, instance, language) => {
1816
if (!normalizedErrors["https://json-schema.org/keyword/dependentRequired"][schemaLocation]) {
1917
const keyword = await getSchema(schemaLocation);
2018
const dependentRequired = /** @type {Record<string, string[]>} */(Schema.value(keyword));
21-
const localization = await Localization.forLocale(language);
2219
for (const propertyName in dependentRequired) {
2320
if (Instance.has(propertyName, instance)) {
2421
const required = dependentRequired[propertyName];

src/errorHandlers/enum.js renamed to src/error-handlers/enum.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,20 @@ import { getSchema } from "@hyperjump/json-schema/experimental";
22
import * as Schema from "@hyperjump/browser";
33
import * as Instance from "@hyperjump/json-schema/instance/experimental";
44
import leven from "leven";
5-
import { Localization } from "../localization.js";
65

76
/**
8-
* @import {ErrorObject } from "../index.d.ts"
9-
* @import {ErrorHandler} from "../utilis.js"
7+
* @import { ErrorHandler, ErrorObject } from "../index.d.ts"
108
*/
119

1210
/** @type ErrorHandler */
13-
const enum_ = async (normalizedErrors, instance, language) => {
11+
const enum_ = async (normalizedErrors, instance, localization) => {
1412
/** @type ErrorObject[] */
1513
const errors = [];
1614

1715
if (normalizedErrors["https://json-schema.org/keyword/enum"]) {
1816
for (const schemaLocation in normalizedErrors["https://json-schema.org/keyword/enum"]) {
1917
if (!normalizedErrors["https://json-schema.org/keyword/enum"][schemaLocation]) {
2018
const keyword = await getSchema(schemaLocation);
21-
const localization = await Localization.forLocale(language);
2219

2320
/** @type {Array<string>} */
2421
const allowedValues = Schema.value(keyword);

src/errorHandlers/exclusiveMaximum.js renamed to src/error-handlers/exclusiveMaximum.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
11
import { getSchema } from "@hyperjump/json-schema/experimental";
22
import * as Schema from "@hyperjump/browser";
33
import * as Instance from "@hyperjump/json-schema/instance/experimental";
4-
import { Localization } from "../localization.js";
54

65
/**
7-
* @import {ErrorObject } from "../index.d.ts"
8-
* @import {ErrorHandler} from "../utilis.js"
6+
* @import { ErrorHandler, ErrorObject } from "../index.d.ts"
97
*/
8+
109
/** @type ErrorHandler */
11-
const exclusiveMaximum = async (normalizedErrors, instance, language) => {
10+
const exclusiveMaximum = async (normalizedErrors, instance, localization) => {
1211
/** @type ErrorObject[] */
1312
const errors = [];
1413

1514
if (normalizedErrors["https://json-schema.org/keyword/exclusiveMaximum"]) {
1615
for (const schemaLocation in normalizedErrors["https://json-schema.org/keyword/exclusiveMaximum"]) {
1716
if (!normalizedErrors["https://json-schema.org/keyword/exclusiveMaximum"][schemaLocation]) {
1817
const keyword = await getSchema(schemaLocation);
19-
const localization = await Localization.forLocale(language);
2018
errors.push({
2119
message: localization.getExclusiveMaximumErrorMessage(Schema.value(keyword)),
2220
instanceLocation: Instance.uri(instance),

src/errorHandlers/exclusiveMinimum.js renamed to src/error-handlers/exclusiveMinimum.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
import { getSchema } from "@hyperjump/json-schema/experimental";
22
import * as Schema from "@hyperjump/browser";
33
import * as Instance from "@hyperjump/json-schema/instance/experimental";
4-
import { Localization } from "../localization.js";
54

65
/**
7-
* @import {ErrorObject } from "../index.d.ts"
8-
* @import {ErrorHandler} from "../utilis.js"
6+
* @import { ErrorHandler, ErrorObject } from "../index.d.ts"
97
*/
108

119
/** @type ErrorHandler */
12-
const exclusiveMinimum = async (normalizedErrors, instance, language) => {
10+
const exclusiveMinimum = async (normalizedErrors, instance, localization) => {
1311
/** @type ErrorObject[] */
1412
const errors = [];
1513

1614
if (normalizedErrors["https://json-schema.org/keyword/exclusiveMinimum"]) {
1715
for (const schemaLocation in normalizedErrors["https://json-schema.org/keyword/exclusiveMinimum"]) {
1816
if (!normalizedErrors["https://json-schema.org/keyword/exclusiveMinimum"][schemaLocation]) {
1917
const keyword = await getSchema(schemaLocation);
20-
const localization = await Localization.forLocale(language);
2118
errors.push({
2219
message: localization.getExclusiveMinimumErrorMessage(Schema.value(keyword)),
2320
instanceLocation: Instance.uri(instance),

src/errorHandlers/format.js renamed to src/error-handlers/format.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
import { getSchema } from "@hyperjump/json-schema/experimental";
22
import * as Schema from "@hyperjump/browser";
33
import * as Instance from "@hyperjump/json-schema/instance/experimental";
4-
import { Localization } from "../localization.js";
54

65
/**
7-
* @import {ErrorObject } from "../index.d.ts"
8-
* @import {ErrorHandler} from "../utilis.js"
6+
* @import { ErrorHandler, ErrorObject } from "../index.d.ts"
97
*/
108

119
/** @type ErrorHandler */
12-
const format = async (normalizedErrors, instance, language) => {
10+
const format = async (normalizedErrors, instance, localization) => {
1311
/** @type ErrorObject[] */
1412
const errors = [];
1513

1614
if (normalizedErrors["https://json-schema.org/keyword/format"]) {
1715
for (const schemaLocation in normalizedErrors["https://json-schema.org/keyword/format"]) {
1816
if (!normalizedErrors["https://json-schema.org/keyword/format"][schemaLocation]) {
1917
const keyword = await getSchema(schemaLocation);
20-
const localization = await Localization.forLocale(language);
2118
errors.push({
2219
message: localization.getFormatErrorMessage(Schema.value(keyword)),
2320
instanceLocation: Instance.uri(instance),

0 commit comments

Comments
 (0)