@duplojs/data-parser-tools 0.2.6 → 0.2.7
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/index.cjs +3 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +2 -0
- package/dist/toJsonSchema/override.cjs +11 -9
- package/dist/toJsonSchema/override.d.ts +5 -6
- package/dist/toJsonSchema/override.mjs +11 -9
- package/dist/toJsonSchema/render.cjs +2 -1
- package/dist/toJsonSchema/render.mjs +2 -1
- package/dist/toJsonSchema/transformer/create.d.ts +2 -1
- package/dist/toJsonSchema/transformer/transformer.cjs +11 -12
- package/dist/toJsonSchema/transformer/transformer.mjs +12 -13
- package/dist/toTypescript/override.cjs +11 -9
- package/dist/toTypescript/override.d.ts +5 -6
- package/dist/toTypescript/override.mjs +11 -9
- package/dist/toTypescript/render.cjs +2 -1
- package/dist/toTypescript/render.d.ts +5 -4
- package/dist/toTypescript/render.mjs +2 -1
- package/dist/toTypescript/transformer/create.d.ts +3 -4
- package/dist/toTypescript/transformer/defaults/array.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/bigint.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/boolean.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/date.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/empty.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/file.d.ts +1 -1
- package/dist/toTypescript/transformer/defaults/index.d.ts +1 -1
- package/dist/toTypescript/transformer/defaults/lazy.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/literal.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/nil.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/nullable.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/number.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/object.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/optional.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/pipe.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/record.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/recover.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/string.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/templateLiteral.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/time.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/transform.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/tuple.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/union.d.ts +2 -1
- package/dist/toTypescript/transformer/defaults/unknown.d.ts +2 -1
- package/dist/toTypescript/transformer/transformer.cjs +11 -12
- package/dist/toTypescript/transformer/transformer.d.ts +3 -3
- package/dist/toTypescript/transformer/transformer.mjs +12 -13
- package/dist/utils/index.cjs +7 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.mjs +1 -0
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var index = require('./toTypescript/index.cjs');
|
|
4
4
|
var index$1 = require('./toJsonSchema/index.cjs');
|
|
5
|
+
require('./utils/index.cjs');
|
|
6
|
+
var getRecursiveDataParser = require('./utils/getRecursiveDataParser.cjs');
|
|
5
7
|
|
|
6
8
|
|
|
7
9
|
|
|
8
10
|
exports.DataParserToTypescript = index;
|
|
9
11
|
exports.DataParserToJsonSchema = index$1;
|
|
12
|
+
exports.getRecursiveDataParser = getRecursiveDataParser.getRecursiveDataParser;
|
package/dist/index.d.ts
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -2,3 +2,5 @@ import * as index from './toTypescript/index.mjs';
|
|
|
2
2
|
export { index as DataParserToTypescript };
|
|
3
3
|
import * as index$1 from './toJsonSchema/index.mjs';
|
|
4
4
|
export { index$1 as DataParserToJsonSchema };
|
|
5
|
+
import './utils/index.mjs';
|
|
6
|
+
export { getRecursiveDataParser } from './utils/getRecursiveDataParser.mjs';
|
|
@@ -11,17 +11,19 @@ dataParser.dataParserInit.overrideHandler.setMethod("addIdentifier", (schema, id
|
|
|
11
11
|
newSchema.setIdentifier(identifier);
|
|
12
12
|
return newSchema;
|
|
13
13
|
});
|
|
14
|
-
dataParser.dataParserInit.overrideHandler.setMethod("
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
dataParser.dataParserInit.overrideHandler.setMethod("setOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
|
|
15
|
+
if (overrideTransformer) {
|
|
16
|
+
schema.definition.overrideJsonSchemaTransformer = typeof overrideTransformer === "function"
|
|
17
|
+
? overrideTransformer
|
|
18
|
+
: (__, { success }) => success(overrideTransformer.schema, overrideTransformer.isOptional);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
schema.definition.overrideJsonSchemaTransformer = undefined;
|
|
22
|
+
}
|
|
21
23
|
return schema;
|
|
22
24
|
});
|
|
23
|
-
dataParser.dataParserInit.overrideHandler.setMethod("
|
|
25
|
+
dataParser.dataParserInit.overrideHandler.setMethod("addOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
|
|
24
26
|
const newSchema = schema.clone();
|
|
25
|
-
newSchema.
|
|
27
|
+
newSchema.setOverrideJsonSchemaTransformer(overrideTransformer);
|
|
26
28
|
return newSchema;
|
|
27
29
|
});
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export type OverrideJsonSchemaDataParser = Partial<Record<TransformerMode, TransformerSuccess>>;
|
|
1
|
+
import { type TransformerBuildFunction, type TransformerSuccess } from "./transformer/create";
|
|
3
2
|
declare module "@duplojs/utils/dataParser" {
|
|
4
3
|
interface DataParser {
|
|
5
4
|
/**
|
|
@@ -8,13 +7,13 @@ declare module "@duplojs/utils/dataParser" {
|
|
|
8
7
|
setIdentifier(input: string): this;
|
|
9
8
|
addIdentifier(input: string): this;
|
|
10
9
|
/**
|
|
11
|
-
* @deprecated this method mutated the dataParser by adding an override
|
|
10
|
+
* @deprecated this method mutated the dataParser by adding an override transformer
|
|
12
11
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
setOverrideJsonSchemaTransformer(transformer: TransformerSuccess | TransformerBuildFunction<this> | null): this;
|
|
13
|
+
addOverrideJsonSchemaTransformer(transformer: TransformerSuccess | TransformerBuildFunction<this> | null): this;
|
|
15
14
|
}
|
|
16
15
|
interface DataParserDefinition {
|
|
17
16
|
identifier?: string;
|
|
18
|
-
|
|
17
|
+
overrideJsonSchemaTransformer?: TransformerBuildFunction;
|
|
19
18
|
}
|
|
20
19
|
}
|
|
@@ -9,17 +9,19 @@ dataParserInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) =
|
|
|
9
9
|
newSchema.setIdentifier(identifier);
|
|
10
10
|
return newSchema;
|
|
11
11
|
});
|
|
12
|
-
dataParserInit.overrideHandler.setMethod("
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
dataParserInit.overrideHandler.setMethod("setOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
|
|
13
|
+
if (overrideTransformer) {
|
|
14
|
+
schema.definition.overrideJsonSchemaTransformer = typeof overrideTransformer === "function"
|
|
15
|
+
? overrideTransformer
|
|
16
|
+
: (__, { success }) => success(overrideTransformer.schema, overrideTransformer.isOptional);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
schema.definition.overrideJsonSchemaTransformer = undefined;
|
|
20
|
+
}
|
|
19
21
|
return schema;
|
|
20
22
|
});
|
|
21
|
-
dataParserInit.overrideHandler.setMethod("
|
|
23
|
+
dataParserInit.overrideHandler.setMethod("addOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
|
|
22
24
|
const newSchema = schema.clone();
|
|
23
|
-
newSchema.
|
|
25
|
+
newSchema.setOverrideJsonSchemaTransformer(overrideTransformer);
|
|
24
26
|
return newSchema;
|
|
25
27
|
});
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
var utils = require('@duplojs/utils');
|
|
4
4
|
require('./transformer/index.cjs');
|
|
5
5
|
var kind = require('./kind.cjs');
|
|
6
|
-
|
|
6
|
+
require('../utils/index.cjs');
|
|
7
7
|
var transformer = require('./transformer/transformer.cjs');
|
|
8
|
+
var getRecursiveDataParser = require('../utils/getRecursiveDataParser.cjs');
|
|
8
9
|
var create = require('./transformer/create.cjs');
|
|
9
10
|
|
|
10
11
|
class DataParserToJsonSchemaRenderError extends utils.kindHeritage("data-parser-to-json-schema-render-error", kind.createToJsonSchemaKind("data-parser-to-json-schema-render-error"), Error) {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { kindHeritage, E, unwrap, G } from '@duplojs/utils';
|
|
2
2
|
import './transformer/index.mjs';
|
|
3
3
|
import { createToJsonSchemaKind } from './kind.mjs';
|
|
4
|
-
import
|
|
4
|
+
import '../utils/index.mjs';
|
|
5
5
|
import { transformer, buildRef } from './transformer/transformer.mjs';
|
|
6
|
+
import { getRecursiveDataParser } from '../utils/getRecursiveDataParser.mjs';
|
|
6
7
|
import { supportedVersions } from './transformer/create.mjs';
|
|
7
8
|
|
|
8
9
|
class DataParserToJsonSchemaRenderError extends kindHeritage("data-parser-to-json-schema-render-error", createToJsonSchemaKind("data-parser-to-json-schema-render-error"), Error) {
|
|
@@ -41,4 +41,5 @@ export interface TransformerParams {
|
|
|
41
41
|
success(result: JsonSchema, isOptional?: boolean): TransformerSuccessEither;
|
|
42
42
|
buildError(): DataParserErrorEither;
|
|
43
43
|
}
|
|
44
|
-
export
|
|
44
|
+
export type TransformerBuildFunction<GenericDataParser extends DP.DataParsers = DP.DataParsers> = (schema: GenericDataParser, params: TransformerParams) => MaybeTransformerEither;
|
|
45
|
+
export declare function createTransformer<GenericDataParser extends DP.DataParsers>(support: (schema: DP.DataParsers) => schema is GenericDataParser, builder: TransformerBuildFunction<GenericDataParser>): (schema: DP.DataParsers, params: TransformerParams) => MaybeTransformerEither;
|
|
@@ -13,9 +13,6 @@ function buildRef(name, version) {
|
|
|
13
13
|
return `#/definitions/${name}`;
|
|
14
14
|
}
|
|
15
15
|
function transformer(schema, params) {
|
|
16
|
-
if (schema.definition.overrideJsonSchema?.[params.mode]) {
|
|
17
|
-
return utils.E.right("buildSuccess", schema.definition.overrideJsonSchema[params.mode]);
|
|
18
|
-
}
|
|
19
16
|
const currentSchema = utils.A.reduce(params.hooks, utils.A.reduceFrom(schema), ({ element: hook, lastValue, next, exit }) => {
|
|
20
17
|
const result = hook({
|
|
21
18
|
schema: lastValue,
|
|
@@ -64,16 +61,18 @@ function transformer(schema, params) {
|
|
|
64
61
|
return utils.E.left("buildDataParserError", currentSchema);
|
|
65
62
|
},
|
|
66
63
|
};
|
|
67
|
-
const result =
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
const result = currentSchema.definition.overrideJsonSchemaTransformer
|
|
65
|
+
? currentSchema.definition.overrideJsonSchemaTransformer(currentSchema.addOverrideJsonSchemaTransformer(null), functionParams)
|
|
66
|
+
: utils.A.reduce(params.transformers, utils.A.reduceFrom(utils.E.left("dataParserNotSupport", currentSchema)), ({ element: functionBuilder, lastValue, next, exit, }) => {
|
|
67
|
+
const result = functionBuilder(currentSchema, functionParams);
|
|
68
|
+
if (utils.E.isLeft(result)) {
|
|
69
|
+
if (utils.unwrap(result) !== currentSchema) {
|
|
70
|
+
return exit(result);
|
|
71
|
+
}
|
|
72
|
+
return next(lastValue);
|
|
72
73
|
}
|
|
73
|
-
return
|
|
74
|
-
}
|
|
75
|
-
return exit(result);
|
|
76
|
-
});
|
|
74
|
+
return exit(result);
|
|
75
|
+
});
|
|
77
76
|
if (utils.E.isLeft(result)) {
|
|
78
77
|
return result;
|
|
79
78
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { A, E, whenElse, justReturn, unwrap } from '@duplojs/utils';
|
|
2
2
|
|
|
3
3
|
function buildRef(name, version) {
|
|
4
4
|
if (version === "openApi3"
|
|
@@ -11,9 +11,6 @@ function buildRef(name, version) {
|
|
|
11
11
|
return `#/definitions/${name}`;
|
|
12
12
|
}
|
|
13
13
|
function transformer(schema, params) {
|
|
14
|
-
if (schema.definition.overrideJsonSchema?.[params.mode]) {
|
|
15
|
-
return E.right("buildSuccess", schema.definition.overrideJsonSchema[params.mode]);
|
|
16
|
-
}
|
|
17
14
|
const currentSchema = A.reduce(params.hooks, A.reduceFrom(schema), ({ element: hook, lastValue, next, exit }) => {
|
|
18
15
|
const result = hook({
|
|
19
16
|
schema: lastValue,
|
|
@@ -62,16 +59,18 @@ function transformer(schema, params) {
|
|
|
62
59
|
return E.left("buildDataParserError", currentSchema);
|
|
63
60
|
},
|
|
64
61
|
};
|
|
65
|
-
const result =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
const result = currentSchema.definition.overrideJsonSchemaTransformer
|
|
63
|
+
? currentSchema.definition.overrideJsonSchemaTransformer(currentSchema.addOverrideJsonSchemaTransformer(null), functionParams)
|
|
64
|
+
: A.reduce(params.transformers, A.reduceFrom(E.left("dataParserNotSupport", currentSchema)), ({ element: functionBuilder, lastValue, next, exit, }) => {
|
|
65
|
+
const result = functionBuilder(currentSchema, functionParams);
|
|
66
|
+
if (E.isLeft(result)) {
|
|
67
|
+
if (unwrap(result) !== currentSchema) {
|
|
68
|
+
return exit(result);
|
|
69
|
+
}
|
|
70
|
+
return next(lastValue);
|
|
70
71
|
}
|
|
71
|
-
return
|
|
72
|
-
}
|
|
73
|
-
return exit(result);
|
|
74
|
-
});
|
|
72
|
+
return exit(result);
|
|
73
|
+
});
|
|
75
74
|
if (E.isLeft(result)) {
|
|
76
75
|
return result;
|
|
77
76
|
}
|
|
@@ -11,17 +11,19 @@ dataParser.dataParserInit.overrideHandler.setMethod("addIdentifier", (schema, id
|
|
|
11
11
|
newSchema.setIdentifier(identifier);
|
|
12
12
|
return newSchema;
|
|
13
13
|
});
|
|
14
|
-
dataParser.dataParserInit.overrideHandler.setMethod("
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
dataParser.dataParserInit.overrideHandler.setMethod("setOverrideTypescriptTransformer", (schema, overrideTransformer) => {
|
|
15
|
+
if (overrideTransformer) {
|
|
16
|
+
schema.definition.overrideTypescriptTransformer = typeof overrideTransformer === "function"
|
|
17
|
+
? overrideTransformer
|
|
18
|
+
: (__, { success }) => success(overrideTransformer);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
schema.definition.overrideTypescriptTransformer = undefined;
|
|
22
|
+
}
|
|
21
23
|
return schema;
|
|
22
24
|
});
|
|
23
|
-
dataParser.dataParserInit.overrideHandler.setMethod("
|
|
25
|
+
dataParser.dataParserInit.overrideHandler.setMethod("addOverrideTypescriptTransformer", (schema, overrideTypeNode) => {
|
|
24
26
|
const newSchema = schema.clone();
|
|
25
|
-
newSchema.
|
|
27
|
+
newSchema.setOverrideTypescriptTransformer(overrideTypeNode);
|
|
26
28
|
return newSchema;
|
|
27
29
|
});
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type TypeNode } from "typescript";
|
|
2
|
-
import { type
|
|
3
|
-
export type OverrideTypeNodeDataParser = Partial<Record<TransformerMode, TypeNode>>;
|
|
2
|
+
import { type TransformerBuildFunction } from "./transformer";
|
|
4
3
|
declare module "@duplojs/utils/dataParser" {
|
|
5
4
|
interface DataParser {
|
|
6
5
|
/**
|
|
@@ -9,13 +8,13 @@ declare module "@duplojs/utils/dataParser" {
|
|
|
9
8
|
setIdentifier(input: string): this;
|
|
10
9
|
addIdentifier(input: string): this;
|
|
11
10
|
/**
|
|
12
|
-
* @deprecated this method mutated the dataParser by adding an override
|
|
11
|
+
* @deprecated this method mutated the dataParser by adding an override transformer
|
|
13
12
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
setOverrideTypescriptTransformer(typeNode: TypeNode | TransformerBuildFunction<this> | null): this;
|
|
14
|
+
addOverrideTypescriptTransformer(typeNode: TypeNode | TransformerBuildFunction<this> | null): this;
|
|
16
15
|
}
|
|
17
16
|
interface DataParserDefinition {
|
|
18
17
|
identifier?: string;
|
|
19
|
-
|
|
18
|
+
overrideTypescriptTransformer?: TransformerBuildFunction;
|
|
20
19
|
}
|
|
21
20
|
}
|
|
@@ -9,17 +9,19 @@ dataParserInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) =
|
|
|
9
9
|
newSchema.setIdentifier(identifier);
|
|
10
10
|
return newSchema;
|
|
11
11
|
});
|
|
12
|
-
dataParserInit.overrideHandler.setMethod("
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
dataParserInit.overrideHandler.setMethod("setOverrideTypescriptTransformer", (schema, overrideTransformer) => {
|
|
13
|
+
if (overrideTransformer) {
|
|
14
|
+
schema.definition.overrideTypescriptTransformer = typeof overrideTransformer === "function"
|
|
15
|
+
? overrideTransformer
|
|
16
|
+
: (__, { success }) => success(overrideTransformer);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
schema.definition.overrideTypescriptTransformer = undefined;
|
|
20
|
+
}
|
|
19
21
|
return schema;
|
|
20
22
|
});
|
|
21
|
-
dataParserInit.overrideHandler.setMethod("
|
|
23
|
+
dataParserInit.overrideHandler.setMethod("addOverrideTypescriptTransformer", (schema, overrideTypeNode) => {
|
|
22
24
|
const newSchema = schema.clone();
|
|
23
|
-
newSchema.
|
|
25
|
+
newSchema.setOverrideTypescriptTransformer(overrideTypeNode);
|
|
24
26
|
return newSchema;
|
|
25
27
|
});
|
|
@@ -4,9 +4,10 @@ var utils = require('@duplojs/utils');
|
|
|
4
4
|
require('./transformer/index.cjs');
|
|
5
5
|
var typescript = require('typescript');
|
|
6
6
|
var kind = require('./kind.cjs');
|
|
7
|
-
|
|
7
|
+
require('../utils/index.cjs');
|
|
8
8
|
var importTypesTransformer = require('./transformer/importTypesTransformer.cjs');
|
|
9
9
|
var transformer = require('./transformer/transformer.cjs');
|
|
10
|
+
var getRecursiveDataParser = require('../utils/getRecursiveDataParser.cjs');
|
|
10
11
|
|
|
11
12
|
class DataParserToTypescriptRenderError extends utils.kindHeritage("data-parser-to-typescript-render-error", kind.createToTypescriptKind("data-parser-to-typescript-render-error"), Error) {
|
|
12
13
|
schema;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
import { type DataParserErrorEither, type DataParserNotSupportedEither, type MapContext, type TransformerMode, type TransformerHook, type createTransformer, type MapImportType } from "./transformer";
|
|
2
3
|
export interface RenderParams {
|
|
3
4
|
readonly identifier: string;
|
|
4
5
|
readonly transformers: readonly ReturnType<typeof createTransformer>[];
|
|
@@ -11,9 +12,9 @@ declare const DataParserToTypescriptRenderError_base: new (params: {
|
|
|
11
12
|
"@DuplojsDataParserToolsToTypescript/data-parser-to-typescript-render-error"?: unknown;
|
|
12
13
|
}, parentParams: readonly [message?: string | undefined, options?: ErrorOptions | undefined]) => import("@duplojs/utils").Kind<import("@duplojs/utils").KindDefinition<"@DuplojsDataParserToolsToTypescript/data-parser-to-typescript-render-error", unknown>, unknown> & import("@duplojs/utils").Kind<import("@duplojs/utils").KindDefinition<"data-parser-to-typescript-render-error", unknown>, unknown> & Error;
|
|
13
14
|
export declare class DataParserToTypescriptRenderError extends DataParserToTypescriptRenderError_base {
|
|
14
|
-
schema:
|
|
15
|
+
schema: DP.DataParser;
|
|
15
16
|
error: DataParserNotSupportedEither | DataParserErrorEither;
|
|
16
|
-
constructor(schema:
|
|
17
|
+
constructor(schema: DP.DataParser, error: DataParserNotSupportedEither | DataParserErrorEither);
|
|
17
18
|
}
|
|
18
|
-
export declare function render(schema:
|
|
19
|
+
export declare function render(schema: DP.DataParser, params: RenderParams): string;
|
|
19
20
|
export {};
|
|
@@ -2,9 +2,10 @@ import { kindHeritage, E, DP, unwrap, pipe, G, A, S } from '@duplojs/utils';
|
|
|
2
2
|
import './transformer/index.mjs';
|
|
3
3
|
import { factory, SyntaxKind, createSourceFile, ScriptTarget, ScriptKind, createPrinter, EmitHint } from 'typescript';
|
|
4
4
|
import { createToTypescriptKind } from './kind.mjs';
|
|
5
|
-
import
|
|
5
|
+
import '../utils/index.mjs';
|
|
6
6
|
import { importTypesTransformer } from './transformer/importTypesTransformer.mjs';
|
|
7
7
|
import { transformer } from './transformer/transformer.mjs';
|
|
8
|
+
import { getRecursiveDataParser } from '../utils/getRecursiveDataParser.mjs';
|
|
8
9
|
|
|
9
10
|
class DataParserToTypescriptRenderError extends kindHeritage("data-parser-to-typescript-render-error", createToTypescriptKind("data-parser-to-typescript-render-error"), Error) {
|
|
10
11
|
schema;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { type TypeAliasDeclaration, type TypeNode } from "typescript";
|
|
2
2
|
import { type DP, E } from "@duplojs/utils";
|
|
3
|
-
import { type SDP } from "@duplojs/server-utils";
|
|
4
3
|
export type TransformerSuccessEither = E.Right<"buildSuccess", TypeNode>;
|
|
5
4
|
export type DataParserNotSupportedEither = E.Left<"dataParserNotSupport", DP.DataParser>;
|
|
6
5
|
export type DataParserErrorEither = E.Left<"buildDataParserError", DP.DataParser>;
|
|
7
|
-
export type
|
|
8
|
-
export type MapContext = Map<SupportedDataParsers, TypeAliasDeclaration>;
|
|
6
|
+
export type MapContext = Map<DP.DataParsers, TypeAliasDeclaration>;
|
|
9
7
|
export type MapImportType = Map<string, string[]>;
|
|
10
8
|
export type MaybeTransformerEither = TransformerSuccessEither | DataParserNotSupportedEither | DataParserErrorEither;
|
|
11
9
|
export type TransformerMode = "in" | "out";
|
|
@@ -18,4 +16,5 @@ export interface TransformerParams {
|
|
|
18
16
|
buildError(): DataParserErrorEither;
|
|
19
17
|
addImport(path: string, typeName: string): void;
|
|
20
18
|
}
|
|
21
|
-
export
|
|
19
|
+
export type TransformerBuildFunction<GenericDataParser extends DP.DataParsers = DP.DataParsers> = (schema: GenericDataParser, params: TransformerParams) => MaybeTransformerEither;
|
|
20
|
+
export declare function createTransformer<GenericDataParser extends DP.DataParsers>(support: (schema: DP.DataParsers) => schema is GenericDataParser, builder: TransformerBuildFunction<GenericDataParser>): (schema: DP.DataParsers, params: TransformerParams) => MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const arrayTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const bigIntTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const booleanTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const dateTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const emptyTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const fileTransformer: (schema: import("
|
|
1
|
+
export declare const fileTransformer: (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -20,4 +20,4 @@ export * from "./union";
|
|
|
20
20
|
export * from "./unknown";
|
|
21
21
|
export * from "./date";
|
|
22
22
|
export * from "./time";
|
|
23
|
-
export declare const defaultTransformers: readonly [(schema: import("
|
|
23
|
+
export declare const defaultTransformers: readonly [(schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("@duplojs/utils/dataParser").DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither];
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const lazyTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const literalTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const nilTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const nullableTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const numberTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const objectTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const optionalTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const pipeTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const recordTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const recoverTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const stringTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const templateLiteralTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const timeTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const transformTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const tupleTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const unionTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DP } from "@duplojs/utils";
|
|
2
|
+
export declare const unknownTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -4,9 +4,6 @@ var utils = require('@duplojs/utils');
|
|
|
4
4
|
var typescript = require('typescript');
|
|
5
5
|
|
|
6
6
|
function transformer(schema, params) {
|
|
7
|
-
if (schema.definition.overrideTypeNode?.[params.mode]) {
|
|
8
|
-
return utils.E.right("buildSuccess", schema.definition.overrideTypeNode[params.mode]);
|
|
9
|
-
}
|
|
10
7
|
const currentSchema = utils.A.reduce(params.hooks, utils.A.reduceFrom(schema), ({ element: hook, lastValue, next, exit }) => {
|
|
11
8
|
const result = hook({
|
|
12
9
|
schema: lastValue,
|
|
@@ -53,16 +50,18 @@ function transformer(schema, params) {
|
|
|
53
50
|
}
|
|
54
51
|
},
|
|
55
52
|
};
|
|
56
|
-
const result =
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
53
|
+
const result = currentSchema.definition.overrideTypescriptTransformer
|
|
54
|
+
? currentSchema.definition.overrideTypescriptTransformer(currentSchema.addOverrideTypescriptTransformer(null), functionParams)
|
|
55
|
+
: utils.A.reduce(params.transformers, utils.A.reduceFrom(utils.E.left("dataParserNotSupport", currentSchema)), ({ element: functionBuilder, lastValue, next, exit, }) => {
|
|
56
|
+
const result = functionBuilder(currentSchema, functionParams);
|
|
57
|
+
if (utils.E.isLeft(result)) {
|
|
58
|
+
if (utils.unwrap(result) !== currentSchema) {
|
|
59
|
+
return exit(result);
|
|
60
|
+
}
|
|
61
|
+
return next(lastValue);
|
|
61
62
|
}
|
|
62
|
-
return
|
|
63
|
-
}
|
|
64
|
-
return exit(result);
|
|
65
|
-
});
|
|
63
|
+
return exit(result);
|
|
64
|
+
});
|
|
66
65
|
if (utils.E.isLeft(result)) {
|
|
67
66
|
return result;
|
|
68
67
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { type DP } from "@duplojs/utils";
|
|
2
|
-
import type { MapContext, DataParserNotSupportedEither, createTransformer, TransformerMode, DataParserErrorEither, MapImportType
|
|
1
|
+
import { type DDataParser, type DP } from "@duplojs/utils";
|
|
2
|
+
import type { MapContext, DataParserNotSupportedEither, createTransformer, TransformerMode, DataParserErrorEither, MapImportType } from "./create";
|
|
3
3
|
import type { TransformerHook } from "./hook";
|
|
4
4
|
export interface TransformerFunctionParams {
|
|
5
5
|
readonly transformers: readonly ReturnType<typeof createTransformer>[];
|
|
6
6
|
readonly context: MapContext;
|
|
7
7
|
readonly mode: TransformerMode;
|
|
8
8
|
readonly hooks: readonly TransformerHook[];
|
|
9
|
-
readonly recursiveDataParsers:
|
|
9
|
+
readonly recursiveDataParsers: DDataParser.DataParser[];
|
|
10
10
|
readonly importType: MapImportType;
|
|
11
11
|
}
|
|
12
12
|
export declare function transformer(schema: DP.DataParser, params: TransformerFunctionParams): import("./create").TransformerSuccessEither | DataParserNotSupportedEither | DataParserErrorEither;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { A, E, whenElse, justReturn, unwrap } from '@duplojs/utils';
|
|
2
2
|
import { factory, SyntaxKind } from 'typescript';
|
|
3
3
|
|
|
4
4
|
function transformer(schema, params) {
|
|
5
|
-
if (schema.definition.overrideTypeNode?.[params.mode]) {
|
|
6
|
-
return E.right("buildSuccess", schema.definition.overrideTypeNode[params.mode]);
|
|
7
|
-
}
|
|
8
5
|
const currentSchema = A.reduce(params.hooks, A.reduceFrom(schema), ({ element: hook, lastValue, next, exit }) => {
|
|
9
6
|
const result = hook({
|
|
10
7
|
schema: lastValue,
|
|
@@ -51,16 +48,18 @@ function transformer(schema, params) {
|
|
|
51
48
|
}
|
|
52
49
|
},
|
|
53
50
|
};
|
|
54
|
-
const result =
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
const result = currentSchema.definition.overrideTypescriptTransformer
|
|
52
|
+
? currentSchema.definition.overrideTypescriptTransformer(currentSchema.addOverrideTypescriptTransformer(null), functionParams)
|
|
53
|
+
: A.reduce(params.transformers, A.reduceFrom(E.left("dataParserNotSupport", currentSchema)), ({ element: functionBuilder, lastValue, next, exit, }) => {
|
|
54
|
+
const result = functionBuilder(currentSchema, functionParams);
|
|
55
|
+
if (E.isLeft(result)) {
|
|
56
|
+
if (unwrap(result) !== currentSchema) {
|
|
57
|
+
return exit(result);
|
|
58
|
+
}
|
|
59
|
+
return next(lastValue);
|
|
59
60
|
}
|
|
60
|
-
return
|
|
61
|
-
}
|
|
62
|
-
return exit(result);
|
|
63
|
-
});
|
|
61
|
+
return exit(result);
|
|
62
|
+
});
|
|
64
63
|
if (E.isLeft(result)) {
|
|
65
64
|
return result;
|
|
66
65
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./getRecursiveDataParser";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getRecursiveDataParser } from './getRecursiveDataParser.mjs';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duplojs/data-parser-tools",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "duplojs",
|
|
6
6
|
"contributors": [
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"test:tu:bench": "vitest bench",
|
|
25
25
|
"test:tu:watch": "vitest --coverage --watch",
|
|
26
26
|
"test:tu:update": "vitest --coverage --update",
|
|
27
|
-
"test:types": "tsc -p tsconfig.test.json",
|
|
27
|
+
"test:types": "tsc -p tsconfig.test.json && npm -w integration run test:types",
|
|
28
28
|
"test:lint": "eslint",
|
|
29
29
|
"test:lint:fix": "eslint --fix",
|
|
30
30
|
"prepare": "husky"
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"vitest": "3.2.4"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
|
-
"@duplojs/utils": ">=1.5.
|
|
74
|
+
"@duplojs/utils": ">=1.5.3 <2.0.0",
|
|
75
75
|
"@duplojs/server-utils": ">=0.1.4 < 1.0.0"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|