@duplojs/data-parser-tools 0.2.3 → 0.2.5
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/README.md +167 -2
- package/dist/toJsonSchema/override.cjs +5 -4
- package/dist/toJsonSchema/override.mjs +5 -4
- package/dist/toJsonSchema/render.cjs +11 -12
- package/dist/toJsonSchema/render.d.ts +8 -8
- package/dist/toJsonSchema/render.mjs +11 -12
- package/dist/toJsonSchema/transformer/create.d.ts +9 -7
- package/dist/toJsonSchema/transformer/defaults/date.cjs +1 -2
- package/dist/toJsonSchema/transformer/defaults/date.mjs +1 -2
- package/dist/toJsonSchema/transformer/defaults/file.cjs +17 -0
- package/dist/toJsonSchema/transformer/defaults/file.d.ts +5 -0
- package/dist/toJsonSchema/transformer/defaults/file.mjs +15 -0
- package/dist/toJsonSchema/transformer/defaults/index.cjs +2 -0
- package/dist/toJsonSchema/transformer/defaults/index.d.ts +1 -1
- package/dist/toJsonSchema/transformer/defaults/index.mjs +2 -0
- package/dist/toJsonSchema/transformer/defaults/literal.cjs +59 -23
- package/dist/toJsonSchema/transformer/defaults/literal.d.ts +12 -4
- package/dist/toJsonSchema/transformer/defaults/literal.mjs +60 -24
- package/dist/toJsonSchema/transformer/defaults/nullable.cjs +11 -2
- package/dist/toJsonSchema/transformer/defaults/nullable.mjs +11 -2
- package/dist/toJsonSchema/transformer/defaults/object.cjs +1 -1
- package/dist/toJsonSchema/transformer/defaults/object.mjs +1 -1
- package/dist/toJsonSchema/transformer/defaults/optional.cjs +10 -1
- package/dist/toJsonSchema/transformer/defaults/optional.mjs +10 -1
- package/dist/toJsonSchema/transformer/defaults/time.cjs +1 -1
- package/dist/toJsonSchema/transformer/defaults/time.mjs +1 -1
- package/dist/toJsonSchema/transformer/defaults/union.cjs +3 -3
- package/dist/toJsonSchema/transformer/defaults/union.mjs +3 -3
- package/dist/toJsonSchema/transformer/transformer.cjs +10 -10
- package/dist/toJsonSchema/transformer/transformer.d.ts +5 -5
- package/dist/toJsonSchema/transformer/transformer.mjs +10 -10
- package/dist/toTypescript/index.cjs +2 -0
- package/dist/toTypescript/index.mjs +1 -0
- package/dist/toTypescript/override.cjs +5 -7
- package/dist/toTypescript/override.mjs +5 -7
- package/dist/toTypescript/render.cjs +7 -1
- package/dist/toTypescript/render.d.ts +6 -6
- package/dist/toTypescript/render.mjs +7 -1
- package/dist/toTypescript/transformer/create.d.ts +10 -5
- package/dist/toTypescript/transformer/defaults/array.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/bigint.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/boolean.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/date.cjs +17 -7
- package/dist/toTypescript/transformer/defaults/date.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/date.mjs +19 -9
- package/dist/toTypescript/transformer/defaults/empty.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/file.cjs +13 -0
- package/dist/toTypescript/transformer/defaults/file.d.ts +1 -0
- package/dist/toTypescript/transformer/defaults/file.mjs +11 -0
- package/dist/toTypescript/transformer/defaults/index.cjs +2 -0
- package/dist/toTypescript/transformer/defaults/index.d.ts +1 -1
- package/dist/toTypescript/transformer/defaults/index.mjs +2 -0
- package/dist/toTypescript/transformer/defaults/lazy.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/literal.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/nil.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/nullable.cjs +11 -2
- package/dist/toTypescript/transformer/defaults/nullable.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/nullable.mjs +11 -2
- package/dist/toTypescript/transformer/defaults/number.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/object.cjs +2 -10
- package/dist/toTypescript/transformer/defaults/object.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/object.mjs +2 -10
- package/dist/toTypescript/transformer/defaults/optional.cjs +11 -2
- package/dist/toTypescript/transformer/defaults/optional.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/optional.mjs +11 -2
- package/dist/toTypescript/transformer/defaults/pipe.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/record.cjs +2 -1
- package/dist/toTypescript/transformer/defaults/record.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/record.mjs +3 -2
- package/dist/toTypescript/transformer/defaults/recover.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/string.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/templateLiteral.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/time.cjs +17 -7
- package/dist/toTypescript/transformer/defaults/time.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/time.mjs +18 -8
- package/dist/toTypescript/transformer/defaults/transform.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/tuple.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/union.d.ts +1 -2
- package/dist/toTypescript/transformer/defaults/unknown.d.ts +1 -2
- package/dist/toTypescript/transformer/hook.d.ts +3 -2
- package/dist/toTypescript/transformer/importTypesTransformer.cjs +10 -0
- package/dist/toTypescript/transformer/importTypesTransformer.d.ts +2 -0
- package/dist/toTypescript/transformer/importTypesTransformer.mjs +8 -0
- package/dist/toTypescript/transformer/includesUndefinedTypeNode.cjs +16 -0
- package/dist/toTypescript/transformer/includesUndefinedTypeNode.d.ts +2 -0
- package/dist/toTypescript/transformer/includesUndefinedTypeNode.mjs +14 -0
- package/dist/toTypescript/transformer/index.cjs +2 -0
- package/dist/toTypescript/transformer/index.d.ts +1 -0
- package/dist/toTypescript/transformer/index.mjs +1 -0
- package/dist/toTypescript/transformer/transformer.cjs +8 -0
- package/dist/toTypescript/transformer/transformer.d.ts +4 -3
- package/dist/toTypescript/transformer/transformer.mjs +8 -0
- package/package.json +3 -2
|
@@ -4,12 +4,22 @@ var utils = require('@duplojs/utils');
|
|
|
4
4
|
var typescript = require('typescript');
|
|
5
5
|
var create = require('../create.cjs');
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
const theDate = typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("TheDate"));
|
|
8
|
+
const serializedTheDate = typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("SerializedTheDate"));
|
|
9
|
+
const nativeDate = typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("Date"), undefined);
|
|
10
|
+
const dateTransformer = create.createTransformer(utils.DP.dateKind.has, (__schema, { mode, success, addImport, }) => {
|
|
11
|
+
addImport("@duplojs/utils/date", "TheDate");
|
|
12
|
+
return utils.P.match(mode)
|
|
13
|
+
.with("out", () => success(theDate))
|
|
14
|
+
.with("in", () => {
|
|
15
|
+
addImport("@duplojs/utils/date", "SerializedTheDate");
|
|
16
|
+
return success(typescript.factory.createUnionTypeNode([
|
|
17
|
+
theDate,
|
|
18
|
+
nativeDate,
|
|
19
|
+
serializedTheDate,
|
|
20
|
+
]));
|
|
21
|
+
})
|
|
22
|
+
.exhaustive();
|
|
23
|
+
});
|
|
14
24
|
|
|
15
25
|
exports.dateTransformer = dateTransformer;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const dateTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const dateTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { DP } from '@duplojs/utils';
|
|
2
|
-
import { factory
|
|
1
|
+
import { DP, P } from '@duplojs/utils';
|
|
2
|
+
import { factory } from 'typescript';
|
|
3
3
|
import { createTransformer } from '../create.mjs';
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
const theDate = factory.createTypeReferenceNode(factory.createIdentifier("TheDate"));
|
|
6
|
+
const serializedTheDate = factory.createTypeReferenceNode(factory.createIdentifier("SerializedTheDate"));
|
|
7
|
+
const nativeDate = factory.createTypeReferenceNode(factory.createIdentifier("Date"), undefined);
|
|
8
|
+
const dateTransformer = createTransformer(DP.dateKind.has, (__schema, { mode, success, addImport, }) => {
|
|
9
|
+
addImport("@duplojs/utils/date", "TheDate");
|
|
10
|
+
return P.match(mode)
|
|
11
|
+
.with("out", () => success(theDate))
|
|
12
|
+
.with("in", () => {
|
|
13
|
+
addImport("@duplojs/utils/date", "SerializedTheDate");
|
|
14
|
+
return success(factory.createUnionTypeNode([
|
|
15
|
+
theDate,
|
|
16
|
+
nativeDate,
|
|
17
|
+
serializedTheDate,
|
|
18
|
+
]));
|
|
19
|
+
})
|
|
20
|
+
.exhaustive();
|
|
21
|
+
});
|
|
12
22
|
|
|
13
23
|
export { dateTransformer };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const emptyTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const emptyTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var serverUtils = require('@duplojs/server-utils');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
var create = require('../create.cjs');
|
|
7
|
+
|
|
8
|
+
const fileTransformer = create.createTransformer(serverUtils.SDP.fileKind.has, (schema, { success, addImport, }) => {
|
|
9
|
+
addImport("@duplojs/server-utils/file", "FileInterface");
|
|
10
|
+
return utils.pipe("FileInterface", typescript.factory.createIdentifier, typescript.factory.createTypeReferenceNode, success);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
exports.fileTransformer = fileTransformer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const fileTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { pipe } from '@duplojs/utils';
|
|
2
|
+
import { SDP } from '@duplojs/server-utils';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
import { createTransformer } from '../create.mjs';
|
|
5
|
+
|
|
6
|
+
const fileTransformer = createTransformer(SDP.fileKind.has, (schema, { success, addImport, }) => {
|
|
7
|
+
addImport("@duplojs/server-utils/file", "FileInterface");
|
|
8
|
+
return pipe("FileInterface", factory.createIdentifier, factory.createTypeReferenceNode, success);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export { fileTransformer };
|
|
@@ -22,6 +22,7 @@ var union = require('./union.cjs');
|
|
|
22
22
|
var unknown = require('./unknown.cjs');
|
|
23
23
|
var date = require('./date.cjs');
|
|
24
24
|
var time = require('./time.cjs');
|
|
25
|
+
var file = require('./file.cjs');
|
|
25
26
|
|
|
26
27
|
const defaultTransformers = [
|
|
27
28
|
array.arrayTransformer,
|
|
@@ -46,6 +47,7 @@ const defaultTransformers = [
|
|
|
46
47
|
unknown.unknownTransformer,
|
|
47
48
|
date.dateTransformer,
|
|
48
49
|
time.timeTransformer,
|
|
50
|
+
file.fileTransformer,
|
|
49
51
|
];
|
|
50
52
|
|
|
51
53
|
exports.arrayTransformer = array.arrayTransformer;
|
|
@@ -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("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither, (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither];
|
|
@@ -20,6 +20,7 @@ import { unionTransformer } from './union.mjs';
|
|
|
20
20
|
import { unknownTransformer } from './unknown.mjs';
|
|
21
21
|
import { dateTransformer } from './date.mjs';
|
|
22
22
|
import { timeTransformer } from './time.mjs';
|
|
23
|
+
import { fileTransformer } from './file.mjs';
|
|
23
24
|
|
|
24
25
|
const defaultTransformers = [
|
|
25
26
|
arrayTransformer,
|
|
@@ -44,6 +45,7 @@ const defaultTransformers = [
|
|
|
44
45
|
unknownTransformer,
|
|
45
46
|
dateTransformer,
|
|
46
47
|
timeTransformer,
|
|
48
|
+
fileTransformer,
|
|
47
49
|
];
|
|
48
50
|
|
|
49
51
|
export { arrayTransformer, bigIntTransformer, booleanTransformer, dateTransformer, defaultTransformers, emptyTransformer, lazyTransformer, literalTransformer, nilTransformer, nullableTransformer, numberTransformer, objectTransformer, optionalTransformer, pipeTransformer, recordTransformer, recoverTransformer, stringTransformer, templateLiteralTransformer, timeTransformer, transformTransformer, tupleTransformer, unionTransformer, unknownTransformer };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const lazyTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const lazyTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const literalTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const literalTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const nilTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const nilTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -10,10 +10,19 @@ const nullableTransformer = create.createTransformer(utils.DP.nullableKind.has,
|
|
|
10
10
|
return innerResult;
|
|
11
11
|
}
|
|
12
12
|
const innerType = utils.unwrap(innerResult);
|
|
13
|
-
return utils.pipe(
|
|
13
|
+
return utils.pipe({
|
|
14
|
+
mode,
|
|
15
|
+
coalescingValue: schema.definition.coalescingValue,
|
|
16
|
+
}, (value) => utils.P.match(value)
|
|
17
|
+
.with(utils.P.union({ mode: "in" }, {
|
|
18
|
+
mode: "out",
|
|
19
|
+
coalescingValue: undefined,
|
|
20
|
+
}), () => utils.pipe(typescript.factory.createNull(), typescript.factory.createLiteralTypeNode, (value) => typescript.factory.createUnionTypeNode([
|
|
14
21
|
innerType,
|
|
15
22
|
value,
|
|
16
|
-
])))
|
|
23
|
+
])))
|
|
24
|
+
.with({ mode: "out" }, () => innerType)
|
|
25
|
+
.exhaustive(), success);
|
|
17
26
|
});
|
|
18
27
|
|
|
19
28
|
exports.nullableTransformer = nullableTransformer;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const nullableTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const nullableTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -8,10 +8,19 @@ const nullableTransformer = createTransformer(DP.nullableKind.has, (schema, { tr
|
|
|
8
8
|
return innerResult;
|
|
9
9
|
}
|
|
10
10
|
const innerType = unwrap(innerResult);
|
|
11
|
-
return pipe(
|
|
11
|
+
return pipe({
|
|
12
|
+
mode,
|
|
13
|
+
coalescingValue: schema.definition.coalescingValue,
|
|
14
|
+
}, (value) => P.match(value)
|
|
15
|
+
.with(P.union({ mode: "in" }, {
|
|
16
|
+
mode: "out",
|
|
17
|
+
coalescingValue: undefined,
|
|
18
|
+
}), () => pipe(factory.createNull(), factory.createLiteralTypeNode, (value) => factory.createUnionTypeNode([
|
|
12
19
|
innerType,
|
|
13
20
|
value,
|
|
14
|
-
])))
|
|
21
|
+
])))
|
|
22
|
+
.with({ mode: "out" }, () => innerType)
|
|
23
|
+
.exhaustive(), success);
|
|
15
24
|
});
|
|
16
25
|
|
|
17
26
|
export { nullableTransformer };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const numberTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const numberTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -3,17 +3,9 @@
|
|
|
3
3
|
var utils = require('@duplojs/utils');
|
|
4
4
|
var typescript = require('typescript');
|
|
5
5
|
var create = require('../create.cjs');
|
|
6
|
+
var includesUndefinedTypeNode = require('../includesUndefinedTypeNode.cjs');
|
|
6
7
|
|
|
7
|
-
function includesUndefinedTypeNode(typeNode) {
|
|
8
|
-
if (typeNode.kind === typescript.SyntaxKind.UndefinedKeyword) {
|
|
9
|
-
return true;
|
|
10
|
-
}
|
|
11
|
-
if (typescript.isUnionTypeNode(typeNode)) {
|
|
12
|
-
return typeNode.types.some((subTypeNode) => includesUndefinedTypeNode(subTypeNode));
|
|
13
|
-
}
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
8
|
const regexIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
17
|
-
const objectTransformer = create.createTransformer(utils.DP.objectKind.has, (schema, { transformer, success, }) => utils.pipe(schema.definition.shape, utils.O.entries, utils.A.reduce(utils.A.reduceFrom([]), ({ element: [key, value], lastValue, next, exit }) => utils.pipe(transformer(value), utils.when(utils.E.isLeft, exit), utils.E.whenIsRight((typeNode) => utils.pipe(includesUndefinedTypeNode(typeNode), utils.P.match(true, () => typescript.factory.createToken(typescript.SyntaxKind.QuestionToken)), utils.P.match(false, () => undefined), utils.P.exhaustive, (optional) => utils.pipe(key, utils.whenElse(utils.S.test(regexIdentifier), typescript.factory.createIdentifier, typescript.factory.createStringLiteral), (propertyName) => typescript.factory.createPropertySignature(undefined, propertyName, optional, typeNode), (typeElement) => utils.A.push(lastValue, typeElement), next))))), utils.when(utils.isType("array"), utils.innerPipe(typescript.factory.createTypeLiteralNode, success))));
|
|
9
|
+
const objectTransformer = create.createTransformer(utils.DP.objectKind.has, (schema, { transformer, success, }) => utils.pipe(schema.definition.shape, utils.O.entries, utils.A.reduce(utils.A.reduceFrom([]), ({ element: [key, value], lastValue, next, exit }) => utils.pipe(transformer(value), utils.when(utils.E.isLeft, exit), utils.E.whenIsRight((typeNode) => utils.pipe(includesUndefinedTypeNode.includesUndefinedTypeNode(typeNode), utils.P.match(true, () => typescript.factory.createToken(typescript.SyntaxKind.QuestionToken)), utils.P.match(false, () => undefined), utils.P.exhaustive, (optional) => utils.pipe(key, utils.whenElse(utils.S.test(regexIdentifier), typescript.factory.createIdentifier, typescript.factory.createStringLiteral), (propertyName) => typescript.factory.createPropertySignature(undefined, propertyName, optional, typeNode), (typeElement) => utils.A.push(lastValue, typeElement), next))))), utils.when(utils.isType("array"), utils.innerPipe(typescript.factory.createTypeLiteralNode, success))));
|
|
18
10
|
|
|
19
11
|
exports.objectTransformer = objectTransformer;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const objectTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const objectTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { DP, pipe, O, A, when, E, P, whenElse, S, isType, innerPipe } from '@duplojs/utils';
|
|
2
|
-
import {
|
|
2
|
+
import { factory, SyntaxKind } from 'typescript';
|
|
3
3
|
import { createTransformer } from '../create.mjs';
|
|
4
|
+
import { includesUndefinedTypeNode } from '../includesUndefinedTypeNode.mjs';
|
|
4
5
|
|
|
5
|
-
function includesUndefinedTypeNode(typeNode) {
|
|
6
|
-
if (typeNode.kind === SyntaxKind.UndefinedKeyword) {
|
|
7
|
-
return true;
|
|
8
|
-
}
|
|
9
|
-
if (isUnionTypeNode(typeNode)) {
|
|
10
|
-
return typeNode.types.some((subTypeNode) => includesUndefinedTypeNode(subTypeNode));
|
|
11
|
-
}
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
6
|
const regexIdentifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
15
7
|
const objectTransformer = createTransformer(DP.objectKind.has, (schema, { transformer, success, }) => pipe(schema.definition.shape, O.entries, A.reduce(A.reduceFrom([]), ({ element: [key, value], lastValue, next, exit }) => pipe(transformer(value), when(E.isLeft, exit), E.whenIsRight((typeNode) => pipe(includesUndefinedTypeNode(typeNode), P.match(true, () => factory.createToken(SyntaxKind.QuestionToken)), P.match(false, () => undefined), P.exhaustive, (optional) => pipe(key, whenElse(S.test(regexIdentifier), factory.createIdentifier, factory.createStringLiteral), (propertyName) => factory.createPropertySignature(undefined, propertyName, optional, typeNode), (typeElement) => A.push(lastValue, typeElement), next))))), when(isType("array"), innerPipe(factory.createTypeLiteralNode, success))));
|
|
16
8
|
|
|
@@ -4,9 +4,18 @@ var utils = require('@duplojs/utils');
|
|
|
4
4
|
var typescript = require('typescript');
|
|
5
5
|
var create = require('../create.cjs');
|
|
6
6
|
|
|
7
|
-
const optionalTransformer = create.createTransformer(utils.DP.optionalKind.has, (schema, { transformer, mode, success, }) => utils.pipe(schema.definition.inner, transformer, utils.E.whenIsRight((innerType) => utils.pipe(
|
|
7
|
+
const optionalTransformer = create.createTransformer(utils.DP.optionalKind.has, (schema, { transformer, mode, success, }) => utils.pipe(schema.definition.inner, transformer, utils.E.whenIsRight((innerType) => utils.pipe({
|
|
8
|
+
mode,
|
|
9
|
+
coalescingValue: schema.definition.coalescingValue,
|
|
10
|
+
}, (value) => utils.P.match(value)
|
|
11
|
+
.with(utils.P.union({ mode: "in" }, {
|
|
12
|
+
mode: "out",
|
|
13
|
+
coalescingValue: undefined,
|
|
14
|
+
}), () => typescript.factory.createUnionTypeNode([
|
|
8
15
|
innerType,
|
|
9
16
|
typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UndefinedKeyword),
|
|
10
|
-
]))
|
|
17
|
+
]))
|
|
18
|
+
.with({ mode: "out" }, () => innerType)
|
|
19
|
+
.exhaustive(), success))));
|
|
11
20
|
|
|
12
21
|
exports.optionalTransformer = optionalTransformer;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const optionalTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const optionalTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -2,9 +2,18 @@ import { DP, pipe, E, P } from '@duplojs/utils';
|
|
|
2
2
|
import { factory, SyntaxKind } from 'typescript';
|
|
3
3
|
import { createTransformer } from '../create.mjs';
|
|
4
4
|
|
|
5
|
-
const optionalTransformer = createTransformer(DP.optionalKind.has, (schema, { transformer, mode, success, }) => pipe(schema.definition.inner, transformer, E.whenIsRight((innerType) => pipe(
|
|
5
|
+
const optionalTransformer = createTransformer(DP.optionalKind.has, (schema, { transformer, mode, success, }) => pipe(schema.definition.inner, transformer, E.whenIsRight((innerType) => pipe({
|
|
6
|
+
mode,
|
|
7
|
+
coalescingValue: schema.definition.coalescingValue,
|
|
8
|
+
}, (value) => P.match(value)
|
|
9
|
+
.with(P.union({ mode: "in" }, {
|
|
10
|
+
mode: "out",
|
|
11
|
+
coalescingValue: undefined,
|
|
12
|
+
}), () => factory.createUnionTypeNode([
|
|
6
13
|
innerType,
|
|
7
14
|
factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword),
|
|
8
|
-
]))
|
|
15
|
+
]))
|
|
16
|
+
.with({ mode: "out" }, () => innerType)
|
|
17
|
+
.exhaustive(), success))));
|
|
9
18
|
|
|
10
19
|
export { optionalTransformer };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const pipeTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const pipeTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var utils = require('@duplojs/utils');
|
|
4
4
|
var typescript = require('typescript');
|
|
5
5
|
var create = require('../create.cjs');
|
|
6
|
+
var includesUndefinedTypeNode = require('../includesUndefinedTypeNode.cjs');
|
|
6
7
|
|
|
7
8
|
const recordTransformer = create.createTransformer(utils.DP.recordKind.has, ({ definition: { key, value } }, { transformer, success, }) => {
|
|
8
9
|
const keyResult = transformer(key);
|
|
@@ -15,7 +16,7 @@ const recordTransformer = create.createTransformer(utils.DP.recordKind.has, ({ d
|
|
|
15
16
|
}
|
|
16
17
|
const keyType = utils.unwrap(keyResult);
|
|
17
18
|
const valueType = utils.unwrap(valueResult);
|
|
18
|
-
const recordType = typescript.factory.createTypeReferenceNode("Record", [keyType, valueType]);
|
|
19
|
+
const recordType = utils.pipe(typescript.factory.createTypeReferenceNode("Record", [keyType, valueType]), utils.when(() => includesUndefinedTypeNode.includesUndefinedTypeNode(valueType), (recodeTypeNode) => typescript.factory.createTypeReferenceNode("Partial", [recodeTypeNode])));
|
|
19
20
|
return success(recordType);
|
|
20
21
|
});
|
|
21
22
|
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const recordTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const recordTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { DP, E, unwrap } from '@duplojs/utils';
|
|
1
|
+
import { DP, E, unwrap, pipe, when } from '@duplojs/utils';
|
|
2
2
|
import { factory } from 'typescript';
|
|
3
3
|
import { createTransformer } from '../create.mjs';
|
|
4
|
+
import { includesUndefinedTypeNode } from '../includesUndefinedTypeNode.mjs';
|
|
4
5
|
|
|
5
6
|
const recordTransformer = createTransformer(DP.recordKind.has, ({ definition: { key, value } }, { transformer, success, }) => {
|
|
6
7
|
const keyResult = transformer(key);
|
|
@@ -13,7 +14,7 @@ const recordTransformer = createTransformer(DP.recordKind.has, ({ definition: {
|
|
|
13
14
|
}
|
|
14
15
|
const keyType = unwrap(keyResult);
|
|
15
16
|
const valueType = unwrap(valueResult);
|
|
16
|
-
const recordType = factory.createTypeReferenceNode("Record", [keyType, valueType]);
|
|
17
|
+
const recordType = pipe(factory.createTypeReferenceNode("Record", [keyType, valueType]), when(() => includesUndefinedTypeNode(valueType), (recodeTypeNode) => factory.createTypeReferenceNode("Partial", [recodeTypeNode])));
|
|
17
18
|
return success(recordType);
|
|
18
19
|
});
|
|
19
20
|
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const recoverTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const recoverTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const stringTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const stringTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const templateLiteralTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const templateLiteralTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -4,12 +4,22 @@ var utils = require('@duplojs/utils');
|
|
|
4
4
|
var typescript = require('typescript');
|
|
5
5
|
var create = require('../create.cjs');
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
const theTime = typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("TheTime"));
|
|
8
|
+
const serializedTheTime = typescript.factory.createTypeReferenceNode(typescript.factory.createIdentifier("SerializedTheTime"));
|
|
9
|
+
const number = typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.NumberKeyword);
|
|
10
|
+
const timeTransformer = create.createTransformer(utils.DP.timeKind.has, (__schema, { mode, success, addImport, }) => {
|
|
11
|
+
addImport("@duplojs/utils/date", "TheTime");
|
|
12
|
+
return utils.P.match(mode)
|
|
13
|
+
.with("out", () => success(theTime))
|
|
14
|
+
.with("in", () => {
|
|
15
|
+
addImport("@duplojs/utils/date", "SerializedTheTime");
|
|
16
|
+
return success(typescript.factory.createUnionTypeNode([
|
|
17
|
+
serializedTheTime,
|
|
18
|
+
number,
|
|
19
|
+
theTime,
|
|
20
|
+
]));
|
|
21
|
+
})
|
|
22
|
+
.exhaustive();
|
|
23
|
+
});
|
|
14
24
|
|
|
15
25
|
exports.timeTransformer = timeTransformer;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const timeTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const timeTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { DP } from '@duplojs/utils';
|
|
1
|
+
import { DP, P } from '@duplojs/utils';
|
|
2
2
|
import { factory, SyntaxKind } from 'typescript';
|
|
3
3
|
import { createTransformer } from '../create.mjs';
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
const theTime = factory.createTypeReferenceNode(factory.createIdentifier("TheTime"));
|
|
6
|
+
const serializedTheTime = factory.createTypeReferenceNode(factory.createIdentifier("SerializedTheTime"));
|
|
7
|
+
const number = factory.createKeywordTypeNode(SyntaxKind.NumberKeyword);
|
|
8
|
+
const timeTransformer = createTransformer(DP.timeKind.has, (__schema, { mode, success, addImport, }) => {
|
|
9
|
+
addImport("@duplojs/utils/date", "TheTime");
|
|
10
|
+
return P.match(mode)
|
|
11
|
+
.with("out", () => success(theTime))
|
|
12
|
+
.with("in", () => {
|
|
13
|
+
addImport("@duplojs/utils/date", "SerializedTheTime");
|
|
14
|
+
return success(factory.createUnionTypeNode([
|
|
15
|
+
serializedTheTime,
|
|
16
|
+
number,
|
|
17
|
+
theTime,
|
|
18
|
+
]));
|
|
19
|
+
})
|
|
20
|
+
.exhaustive();
|
|
21
|
+
});
|
|
12
22
|
|
|
13
23
|
export { timeTransformer };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const transformTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const transformTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const tupleTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const tupleTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const unionTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const unionTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const unknownTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
1
|
+
export declare const unknownTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { DP } from "@duplojs/utils";
|
|
2
|
+
import type { MapContext, MapImportType } from "./create";
|
|
3
3
|
export type TransformerHookAction = "stop" | "next";
|
|
4
4
|
export interface TransformerHookOutput {
|
|
5
5
|
schema: DP.DataParsers;
|
|
@@ -8,6 +8,7 @@ export interface TransformerHookOutput {
|
|
|
8
8
|
export interface TransformerHookParams {
|
|
9
9
|
schema: DP.DataParsers;
|
|
10
10
|
context: MapContext;
|
|
11
|
+
importType: MapImportType;
|
|
11
12
|
output(action: TransformerHookAction, schema: DP.DataParsers): TransformerHookOutput;
|
|
12
13
|
}
|
|
13
14
|
export type TransformerHook = (params: TransformerHookParams) => TransformerHookOutput;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var typescript = require('typescript');
|
|
5
|
+
|
|
6
|
+
function importTypesTransformer(importTypes) {
|
|
7
|
+
return utils.pipe(importTypes, utils.G.map(([path, types]) => typescript.factory.createImportDeclaration(undefined, typescript.factory.createImportClause(typescript.SyntaxKind.TypeKeyword, undefined, typescript.factory.createNamedImports(utils.A.map(types, (type) => typescript.factory.createImportSpecifier(false, undefined, typescript.factory.createIdentifier(type))))), typescript.factory.createStringLiteral(path), undefined)));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
exports.importTypesTransformer = importTypesTransformer;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { pipe, G, A } from '@duplojs/utils';
|
|
2
|
+
import { factory, SyntaxKind } from 'typescript';
|
|
3
|
+
|
|
4
|
+
function importTypesTransformer(importTypes) {
|
|
5
|
+
return pipe(importTypes, G.map(([path, types]) => factory.createImportDeclaration(undefined, factory.createImportClause(SyntaxKind.TypeKeyword, undefined, factory.createNamedImports(A.map(types, (type) => factory.createImportSpecifier(false, undefined, factory.createIdentifier(type))))), factory.createStringLiteral(path), undefined)));
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export { importTypesTransformer };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var typescript = require('typescript');
|
|
5
|
+
|
|
6
|
+
function includesUndefinedTypeNode(typeNode) {
|
|
7
|
+
if (typeNode.kind === typescript.SyntaxKind.UndefinedKeyword) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
if (typescript.isUnionTypeNode(typeNode)) {
|
|
11
|
+
return utils.A.some(typeNode.types, (subTypeNode) => includesUndefinedTypeNode(subTypeNode));
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
exports.includesUndefinedTypeNode = includesUndefinedTypeNode;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { A } from '@duplojs/utils';
|
|
2
|
+
import { SyntaxKind, isUnionTypeNode } from 'typescript';
|
|
3
|
+
|
|
4
|
+
function includesUndefinedTypeNode(typeNode) {
|
|
5
|
+
if (typeNode.kind === SyntaxKind.UndefinedKeyword) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
if (isUnionTypeNode(typeNode)) {
|
|
9
|
+
return A.some(typeNode.types, (subTypeNode) => includesUndefinedTypeNode(subTypeNode));
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { includesUndefinedTypeNode };
|
|
@@ -4,9 +4,11 @@ var create = require('./create.cjs');
|
|
|
4
4
|
var transformer = require('./transformer.cjs');
|
|
5
5
|
require('./hook.cjs');
|
|
6
6
|
var index = require('./defaults/index.cjs');
|
|
7
|
+
var includesUndefinedTypeNode = require('./includesUndefinedTypeNode.cjs');
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
exports.createTransformer = create.createTransformer;
|
|
11
12
|
exports.transformer = transformer.transformer;
|
|
12
13
|
exports.defaultTransformers = index.defaultTransformers;
|
|
14
|
+
exports.includesUndefinedTypeNode = includesUndefinedTypeNode.includesUndefinedTypeNode;
|