@duplojs/data-parser-tools 0.2.2 → 0.2.3
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/dist/toJsonSchema/index.cjs +1 -0
- package/dist/toJsonSchema/index.mjs +1 -1
- package/dist/toJsonSchema/render.cjs +14 -25
- package/dist/toJsonSchema/render.d.ts +32 -14
- package/dist/toJsonSchema/render.mjs +16 -27
- package/dist/toJsonSchema/transformer/create.d.ts +2 -2
- package/dist/toJsonSchema/transformer/index.cjs +1 -0
- package/dist/toJsonSchema/transformer/index.mjs +1 -1
- package/dist/toJsonSchema/transformer/transformer.cjs +8 -6
- package/dist/toJsonSchema/transformer/transformer.d.ts +8 -2
- package/dist/toJsonSchema/transformer/transformer.mjs +8 -7
- package/package.json +1 -1
|
@@ -38,6 +38,7 @@ exports.createToJsonSchemaKind = kind.createToJsonSchemaKind;
|
|
|
38
38
|
exports.defaultTransformers = index.defaultTransformers;
|
|
39
39
|
exports.createTransformer = create.createTransformer;
|
|
40
40
|
exports.supportedVersions = create.supportedVersions;
|
|
41
|
+
exports.buildRef = transformer.buildRef;
|
|
41
42
|
exports.transformer = transformer.transformer;
|
|
42
43
|
exports.arrayTransformer = array.arrayTransformer;
|
|
43
44
|
exports.bigIntTransformer = bigint.bigIntTransformer;
|
|
@@ -4,7 +4,7 @@ export { DataParserToJsonSchemaRenderError, render } from './render.mjs';
|
|
|
4
4
|
export { createToJsonSchemaKind } from './kind.mjs';
|
|
5
5
|
export { defaultTransformers } from './transformer/defaults/index.mjs';
|
|
6
6
|
export { createTransformer, supportedVersions } from './transformer/create.mjs';
|
|
7
|
-
export { transformer } from './transformer/transformer.mjs';
|
|
7
|
+
export { buildRef, transformer } from './transformer/transformer.mjs';
|
|
8
8
|
export { arrayTransformer } from './transformer/defaults/array.mjs';
|
|
9
9
|
export { bigIntTransformer } from './transformer/defaults/bigint.mjs';
|
|
10
10
|
export { booleanTransformer } from './transformer/defaults/boolean.mjs';
|
|
@@ -16,21 +16,6 @@ class DataParserToJsonSchemaRenderError extends utils.kindHeritage("data-parser-
|
|
|
16
16
|
this.error = error;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
function buildRef(name, version) {
|
|
20
|
-
if (version === create.supportedVersions.openApi3 || version === create.supportedVersions.openApi31) {
|
|
21
|
-
return { $ref: `#/components/schemas/${name}` };
|
|
22
|
-
}
|
|
23
|
-
if (version === create.supportedVersions.jsonSchema202012) {
|
|
24
|
-
return { $ref: `#/$defs/${name}` };
|
|
25
|
-
}
|
|
26
|
-
return { $ref: `#/definitions/${name}` };
|
|
27
|
-
}
|
|
28
|
-
function getDefinitionKey(version) {
|
|
29
|
-
if (version === create.supportedVersions.jsonSchema202012 || version === create.supportedVersions.openApi31) {
|
|
30
|
-
return "$defs";
|
|
31
|
-
}
|
|
32
|
-
return "definitions";
|
|
33
|
-
}
|
|
34
19
|
function render(schema, params) {
|
|
35
20
|
const context = new Map(params.context);
|
|
36
21
|
const version = create.supportedVersions[params.version];
|
|
@@ -58,23 +43,27 @@ function render(schema, params) {
|
|
|
58
43
|
...definitions,
|
|
59
44
|
[params.identifier]: built.schema,
|
|
60
45
|
};
|
|
61
|
-
if (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return JSON.stringify({
|
|
46
|
+
if (version === create.supportedVersions.openApi3
|
|
47
|
+
|| version === create.supportedVersions.openApi31) {
|
|
48
|
+
return {
|
|
49
|
+
$ref: transformer.buildRef(params.identifier, version),
|
|
66
50
|
openapi: version,
|
|
67
51
|
components: {
|
|
68
52
|
schemas: definitionsWithIdentifier,
|
|
69
53
|
},
|
|
70
|
-
|
|
71
|
-
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (version === create.supportedVersions.jsonSchema202012) {
|
|
57
|
+
return {
|
|
58
|
+
$ref: transformer.buildRef(params.identifier, version),
|
|
59
|
+
$schema: version,
|
|
60
|
+
$defs: definitionsWithIdentifier,
|
|
61
|
+
};
|
|
72
62
|
}
|
|
73
|
-
const definitionKey = getDefinitionKey(version);
|
|
74
63
|
return {
|
|
64
|
+
$ref: transformer.buildRef(params.identifier, version),
|
|
75
65
|
$schema: version,
|
|
76
|
-
|
|
77
|
-
[definitionKey]: definitionsWithIdentifier,
|
|
66
|
+
definitions: definitionsWithIdentifier,
|
|
78
67
|
};
|
|
79
68
|
}
|
|
80
69
|
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
import { type DP } from "@duplojs/utils";
|
|
2
|
-
import { type DataParserErrorEither, type DataParserNotSupportedEither, type MapContext, type TransformerMode, type TransformerHook, type createTransformer, type SupportedVersions } from "./transformer";
|
|
3
|
-
export interface RenderParams {
|
|
4
|
-
readonly identifier: string;
|
|
5
|
-
readonly transformers: readonly ReturnType<typeof createTransformer>[];
|
|
6
|
-
readonly context?: MapContext;
|
|
7
|
-
readonly mode?: TransformerMode;
|
|
8
|
-
readonly hooks?: readonly TransformerHook[];
|
|
9
|
-
readonly version: SupportedVersions;
|
|
10
|
-
}
|
|
1
|
+
import { type DP, type Or, type IsEqual } from "@duplojs/utils";
|
|
2
|
+
import { type DataParserErrorEither, type DataParserNotSupportedEither, type MapContext, type TransformerMode, type TransformerHook, type createTransformer, type SupportedVersions, type JsonSchema } from "./transformer";
|
|
11
3
|
declare const DataParserToJsonSchemaRenderError_base: new (params: {
|
|
12
4
|
"@DuplojsDataParserToolsToJsonSchema/data-parser-to-json-schema-render-error"?: unknown;
|
|
13
5
|
}, parentParams: [message?: string | undefined, options?: ErrorOptions | undefined]) => Error & import("@duplojs/utils").Kind<import("@duplojs/utils").KindDefinition<"@DuplojsDataParserToolsToJsonSchema/data-parser-to-json-schema-render-error", unknown>, unknown> & import("@duplojs/utils").Kind<import("@duplojs/utils").KindDefinition<"data-parser-to-json-schema-render-error", unknown>, unknown>;
|
|
@@ -16,8 +8,34 @@ export declare class DataParserToJsonSchemaRenderError extends DataParserToJsonS
|
|
|
16
8
|
error: DataParserNotSupportedEither | DataParserErrorEither;
|
|
17
9
|
constructor(schema: DP.DataParsers, error: DataParserNotSupportedEither | DataParserErrorEither);
|
|
18
10
|
}
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
export interface RenderParams<GenericVersion extends unknown> {
|
|
12
|
+
readonly identifier: string;
|
|
13
|
+
readonly transformers: readonly ReturnType<typeof createTransformer>[];
|
|
14
|
+
readonly context?: MapContext;
|
|
15
|
+
readonly mode?: TransformerMode;
|
|
16
|
+
readonly hooks?: readonly TransformerHook[];
|
|
17
|
+
readonly version: GenericVersion;
|
|
18
|
+
}
|
|
19
|
+
type RenderResult<GenericVersion extends keyof SupportedVersions> = Or<[
|
|
20
|
+
IsEqual<GenericVersion, "openApi3">,
|
|
21
|
+
IsEqual<GenericVersion, "openApi31">
|
|
22
|
+
]> extends true ? {
|
|
23
|
+
$ref: `#/components/schemas/${string}`;
|
|
24
|
+
openapi: SupportedVersions[GenericVersion];
|
|
25
|
+
components: {
|
|
26
|
+
schemas: Record<string, JsonSchema>;
|
|
27
|
+
};
|
|
28
|
+
} : Or<[
|
|
29
|
+
IsEqual<GenericVersion, "jsonSchema7">,
|
|
30
|
+
IsEqual<GenericVersion, "jsonSchema4">
|
|
31
|
+
]> extends true ? {
|
|
32
|
+
$ref: `#/$defs/${string}`;
|
|
33
|
+
$schema: SupportedVersions[GenericVersion];
|
|
34
|
+
definitions: Record<string, JsonSchema>;
|
|
35
|
+
} : IsEqual<GenericVersion, "jsonSchema202012"> extends true ? {
|
|
36
|
+
$ref: `#/definitions/${string}`;
|
|
37
|
+
$schema: SupportedVersions[GenericVersion];
|
|
38
|
+
$defs: Record<string, JsonSchema>;
|
|
39
|
+
} : never;
|
|
40
|
+
export declare function render<GenericVersion extends keyof SupportedVersions>(schema: DP.DataParsers, params: RenderParams<GenericVersion>): RenderResult<GenericVersion>;
|
|
23
41
|
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { kindHeritage, E, unwrap, G
|
|
1
|
+
import { kindHeritage, E, unwrap, G } from '@duplojs/utils';
|
|
2
2
|
import './transformer/index.mjs';
|
|
3
3
|
import { createToJsonSchemaKind } from './kind.mjs';
|
|
4
4
|
import { getRecursiveDataParser } from '../utils/getRecursiveDataParser.mjs';
|
|
5
5
|
import { supportedVersions } from './transformer/create.mjs';
|
|
6
|
-
import { transformer } from './transformer/transformer.mjs';
|
|
6
|
+
import { transformer, buildRef } from './transformer/transformer.mjs';
|
|
7
7
|
|
|
8
8
|
class DataParserToJsonSchemaRenderError extends kindHeritage("data-parser-to-json-schema-render-error", createToJsonSchemaKind("data-parser-to-json-schema-render-error"), Error) {
|
|
9
9
|
schema;
|
|
@@ -14,21 +14,6 @@ class DataParserToJsonSchemaRenderError extends kindHeritage("data-parser-to-jso
|
|
|
14
14
|
this.error = error;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
function buildRef(name, version) {
|
|
18
|
-
if (version === supportedVersions.openApi3 || version === supportedVersions.openApi31) {
|
|
19
|
-
return { $ref: `#/components/schemas/${name}` };
|
|
20
|
-
}
|
|
21
|
-
if (version === supportedVersions.jsonSchema202012) {
|
|
22
|
-
return { $ref: `#/$defs/${name}` };
|
|
23
|
-
}
|
|
24
|
-
return { $ref: `#/definitions/${name}` };
|
|
25
|
-
}
|
|
26
|
-
function getDefinitionKey(version) {
|
|
27
|
-
if (version === supportedVersions.jsonSchema202012 || version === supportedVersions.openApi31) {
|
|
28
|
-
return "$defs";
|
|
29
|
-
}
|
|
30
|
-
return "definitions";
|
|
31
|
-
}
|
|
32
17
|
function render(schema, params) {
|
|
33
18
|
const context = new Map(params.context);
|
|
34
19
|
const version = supportedVersions[params.version];
|
|
@@ -56,23 +41,27 @@ function render(schema, params) {
|
|
|
56
41
|
...definitions,
|
|
57
42
|
[params.identifier]: built.schema,
|
|
58
43
|
};
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return JSON.stringify({
|
|
44
|
+
if (version === supportedVersions.openApi3
|
|
45
|
+
|| version === supportedVersions.openApi31) {
|
|
46
|
+
return {
|
|
47
|
+
$ref: buildRef(params.identifier, version),
|
|
64
48
|
openapi: version,
|
|
65
49
|
components: {
|
|
66
50
|
schemas: definitionsWithIdentifier,
|
|
67
51
|
},
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (version === supportedVersions.jsonSchema202012) {
|
|
55
|
+
return {
|
|
56
|
+
$ref: buildRef(params.identifier, version),
|
|
57
|
+
$schema: version,
|
|
58
|
+
$defs: definitionsWithIdentifier,
|
|
59
|
+
};
|
|
70
60
|
}
|
|
71
|
-
const definitionKey = getDefinitionKey(version);
|
|
72
61
|
return {
|
|
62
|
+
$ref: buildRef(params.identifier, version),
|
|
73
63
|
$schema: version,
|
|
74
|
-
|
|
75
|
-
[definitionKey]: definitionsWithIdentifier,
|
|
64
|
+
definitions: definitionsWithIdentifier,
|
|
76
65
|
};
|
|
77
66
|
}
|
|
78
67
|
|
|
@@ -29,8 +29,8 @@ export declare const supportedVersions: {
|
|
|
29
29
|
readonly openApi3: "https://spec.openapis.org/oas/3.0.3";
|
|
30
30
|
readonly openApi31: "https://spec.openapis.org/oas/3.1.0";
|
|
31
31
|
};
|
|
32
|
-
export type SupportedVersions =
|
|
33
|
-
export type SupportedVersionsUrl = typeof supportedVersions[SupportedVersions];
|
|
32
|
+
export type SupportedVersions = typeof supportedVersions;
|
|
33
|
+
export type SupportedVersionsUrl = typeof supportedVersions[keyof SupportedVersions];
|
|
34
34
|
export interface TransformerParams {
|
|
35
35
|
readonly mode: TransformerMode;
|
|
36
36
|
readonly context: MapContext;
|
|
@@ -9,5 +9,6 @@ var index = require('./defaults/index.cjs');
|
|
|
9
9
|
|
|
10
10
|
exports.createTransformer = create.createTransformer;
|
|
11
11
|
exports.supportedVersions = create.supportedVersions;
|
|
12
|
+
exports.buildRef = transformer.buildRef;
|
|
12
13
|
exports.transformer = transformer.transformer;
|
|
13
14
|
exports.defaultTransformers = index.defaultTransformers;
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
var utils = require('@duplojs/utils');
|
|
4
4
|
|
|
5
5
|
function buildRef(name, version) {
|
|
6
|
-
if (version === "https://spec.openapis.org/oas/3.0.3"
|
|
7
|
-
|
|
6
|
+
if (version === "https://spec.openapis.org/oas/3.0.3"
|
|
7
|
+
|| version === "https://spec.openapis.org/oas/3.1.0") {
|
|
8
|
+
return `#/components/schemas/${name}`;
|
|
8
9
|
}
|
|
9
10
|
if (version === "https://json-schema.org/draft/2020-12/schema") {
|
|
10
|
-
return
|
|
11
|
+
return `#/$defs/${name}`;
|
|
11
12
|
}
|
|
12
|
-
return
|
|
13
|
+
return `#/definitions/${name}`;
|
|
13
14
|
}
|
|
14
15
|
function transformer(schema, params) {
|
|
15
16
|
const currentSchema = utils.A.reduce(params.hooks, utils.A.reduceFrom(schema), ({ element: hook, lastValue, next, exit }) => {
|
|
@@ -31,7 +32,7 @@ function transformer(schema, params) {
|
|
|
31
32
|
const currentDeclaration = params.context.get(currentSchema);
|
|
32
33
|
if (currentDeclaration) {
|
|
33
34
|
return utils.E.right("buildSuccess", {
|
|
34
|
-
schema: buildRef(currentDeclaration.name, params.version),
|
|
35
|
+
schema: { $ref: buildRef(currentDeclaration.name, params.version) },
|
|
35
36
|
canBeUndefined: currentDeclaration.canBeUndefined,
|
|
36
37
|
});
|
|
37
38
|
}
|
|
@@ -80,9 +81,10 @@ function transformer(schema, params) {
|
|
|
80
81
|
schema: builtSchema,
|
|
81
82
|
canBeUndefined,
|
|
82
83
|
});
|
|
83
|
-
return functionParams.success(buildRef(currentIdentifier, params.version), canBeUndefined);
|
|
84
|
+
return functionParams.success({ $ref: buildRef(currentIdentifier, params.version) }, canBeUndefined);
|
|
84
85
|
}
|
|
85
86
|
return result;
|
|
86
87
|
}
|
|
87
88
|
|
|
89
|
+
exports.buildRef = buildRef;
|
|
88
90
|
exports.transformer = transformer;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DP } from "@duplojs/utils";
|
|
1
|
+
import { E, type DP } from "@duplojs/utils";
|
|
2
2
|
import { type MapContext, type DataParserNotSupportedEither, type createTransformer, type TransformerMode, type SupportedVersionsUrl, type DataParserErrorEither } from "./create";
|
|
3
3
|
import { type TransformerHook } from "./hook";
|
|
4
4
|
export interface TransformerFunctionParams {
|
|
@@ -9,4 +9,10 @@ export interface TransformerFunctionParams {
|
|
|
9
9
|
readonly hooks: readonly TransformerHook[];
|
|
10
10
|
readonly recursiveDataParsers: DP.DataParser[];
|
|
11
11
|
}
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function buildRef(name: string, version: SupportedVersionsUrl): string;
|
|
13
|
+
export declare function transformer(schema: DP.DataParser, params: TransformerFunctionParams): import("./create").TransformerSuccessEither | DataParserNotSupportedEither | DataParserErrorEither | E.EitherRight<"buildSuccess", {
|
|
14
|
+
readonly schema: {
|
|
15
|
+
readonly $ref: string;
|
|
16
|
+
};
|
|
17
|
+
readonly canBeUndefined: boolean;
|
|
18
|
+
}>;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { A, E, whenElse, justReturn, unwrap } from '@duplojs/utils';
|
|
2
2
|
|
|
3
3
|
function buildRef(name, version) {
|
|
4
|
-
if (version === "https://spec.openapis.org/oas/3.0.3"
|
|
5
|
-
|
|
4
|
+
if (version === "https://spec.openapis.org/oas/3.0.3"
|
|
5
|
+
|| version === "https://spec.openapis.org/oas/3.1.0") {
|
|
6
|
+
return `#/components/schemas/${name}`;
|
|
6
7
|
}
|
|
7
8
|
if (version === "https://json-schema.org/draft/2020-12/schema") {
|
|
8
|
-
return
|
|
9
|
+
return `#/$defs/${name}`;
|
|
9
10
|
}
|
|
10
|
-
return
|
|
11
|
+
return `#/definitions/${name}`;
|
|
11
12
|
}
|
|
12
13
|
function transformer(schema, params) {
|
|
13
14
|
const currentSchema = A.reduce(params.hooks, A.reduceFrom(schema), ({ element: hook, lastValue, next, exit }) => {
|
|
@@ -29,7 +30,7 @@ function transformer(schema, params) {
|
|
|
29
30
|
const currentDeclaration = params.context.get(currentSchema);
|
|
30
31
|
if (currentDeclaration) {
|
|
31
32
|
return E.right("buildSuccess", {
|
|
32
|
-
schema: buildRef(currentDeclaration.name, params.version),
|
|
33
|
+
schema: { $ref: buildRef(currentDeclaration.name, params.version) },
|
|
33
34
|
canBeUndefined: currentDeclaration.canBeUndefined,
|
|
34
35
|
});
|
|
35
36
|
}
|
|
@@ -78,9 +79,9 @@ function transformer(schema, params) {
|
|
|
78
79
|
schema: builtSchema,
|
|
79
80
|
canBeUndefined,
|
|
80
81
|
});
|
|
81
|
-
return functionParams.success(buildRef(currentIdentifier, params.version), canBeUndefined);
|
|
82
|
+
return functionParams.success({ $ref: buildRef(currentIdentifier, params.version) }, canBeUndefined);
|
|
82
83
|
}
|
|
83
84
|
return result;
|
|
84
85
|
}
|
|
85
86
|
|
|
86
|
-
export { transformer };
|
|
87
|
+
export { buildRef, transformer };
|