@duplojs/data-parser-tools 0.2.9 → 0.4.0
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 +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +2 -0
- package/dist/toDataParser/buildContext.cjs +63 -0
- package/dist/toDataParser/buildContext.d.ts +27 -0
- package/dist/toDataParser/buildContext.mjs +61 -0
- package/dist/toDataParser/checkerTransformer/create.cjs +11 -0
- package/dist/toDataParser/checkerTransformer/create.d.ts +20 -0
- package/dist/toDataParser/checkerTransformer/create.mjs +9 -0
- package/dist/toDataParser/checkerTransformer/defaults/array/index.cjs +9 -0
- package/dist/toDataParser/checkerTransformer/defaults/array/index.d.ts +2 -0
- package/dist/toDataParser/checkerTransformer/defaults/array/index.mjs +2 -0
- package/dist/toDataParser/checkerTransformer/defaults/array/max.cjs +15 -0
- package/dist/toDataParser/checkerTransformer/defaults/array/max.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/array/max.mjs +13 -0
- package/dist/toDataParser/checkerTransformer/defaults/array/min.cjs +15 -0
- package/dist/toDataParser/checkerTransformer/defaults/array/min.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/array/min.mjs +13 -0
- package/dist/toDataParser/checkerTransformer/defaults/bigint/index.cjs +9 -0
- package/dist/toDataParser/checkerTransformer/defaults/bigint/index.d.ts +2 -0
- package/dist/toDataParser/checkerTransformer/defaults/bigint/index.mjs +2 -0
- package/dist/toDataParser/checkerTransformer/defaults/bigint/max.cjs +15 -0
- package/dist/toDataParser/checkerTransformer/defaults/bigint/max.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/bigint/max.mjs +13 -0
- package/dist/toDataParser/checkerTransformer/defaults/bigint/min.cjs +15 -0
- package/dist/toDataParser/checkerTransformer/defaults/bigint/min.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/bigint/min.mjs +13 -0
- package/dist/toDataParser/checkerTransformer/defaults/index.cjs +60 -0
- package/dist/toDataParser/checkerTransformer/defaults/index.d.ts +4 -0
- package/dist/toDataParser/checkerTransformer/defaults/index.mjs +47 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/index.cjs +11 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/index.d.ts +3 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/index.mjs +3 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/int.cjs +12 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/int.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/int.mjs +10 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/max.cjs +19 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/max.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/max.mjs +17 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/min.cjs +19 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/min.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/number/min.mjs +17 -0
- package/dist/toDataParser/checkerTransformer/defaults/refine.cjs +32 -0
- package/dist/toDataParser/checkerTransformer/defaults/refine.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/refine.mjs +30 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/email.cjs +12 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/email.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/email.mjs +10 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/index.cjs +17 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/index.d.ts +6 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/index.mjs +6 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/max.cjs +15 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/max.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/max.mjs +13 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/min.cjs +15 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/min.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/min.mjs +13 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/regex.cjs +16 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/regex.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/regex.mjs +14 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/url.cjs +22 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/url.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/url.mjs +20 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/uuid.cjs +12 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/uuid.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/string/uuid.mjs +10 -0
- package/dist/toDataParser/checkerTransformer/defaults/time/index.cjs +9 -0
- package/dist/toDataParser/checkerTransformer/defaults/time/index.d.ts +2 -0
- package/dist/toDataParser/checkerTransformer/defaults/time/index.mjs +2 -0
- package/dist/toDataParser/checkerTransformer/defaults/time/max.cjs +19 -0
- package/dist/toDataParser/checkerTransformer/defaults/time/max.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/time/max.mjs +17 -0
- package/dist/toDataParser/checkerTransformer/defaults/time/min.cjs +19 -0
- package/dist/toDataParser/checkerTransformer/defaults/time/min.d.ts +1 -0
- package/dist/toDataParser/checkerTransformer/defaults/time/min.mjs +17 -0
- package/dist/toDataParser/checkerTransformer/index.cjs +12 -0
- package/dist/toDataParser/checkerTransformer/index.d.ts +3 -0
- package/dist/toDataParser/checkerTransformer/index.mjs +3 -0
- package/dist/toDataParser/checkerTransformer/transformer.cjs +47 -0
- package/dist/toDataParser/checkerTransformer/transformer.d.ts +10 -0
- package/dist/toDataParser/checkerTransformer/transformer.mjs +44 -0
- package/dist/toDataParser/dataParserTransformer/create.cjs +11 -0
- package/dist/toDataParser/dataParserTransformer/create.d.ts +34 -0
- package/dist/toDataParser/dataParserTransformer/create.mjs +9 -0
- package/dist/toDataParser/dataParserTransformer/createIdentifier.cjs +9 -0
- package/dist/toDataParser/dataParserTransformer/createIdentifier.d.ts +1 -0
- package/dist/toDataParser/dataParserTransformer/createIdentifier.mjs +7 -0
- package/dist/toDataParser/dataParserTransformer/defaults/array.cjs +22 -0
- package/dist/toDataParser/dataParserTransformer/defaults/array.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/array.mjs +20 -0
- package/dist/toDataParser/dataParserTransformer/defaults/bigint.cjs +19 -0
- package/dist/toDataParser/dataParserTransformer/defaults/bigint.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/bigint.mjs +17 -0
- package/dist/toDataParser/dataParserTransformer/defaults/boolean.cjs +19 -0
- package/dist/toDataParser/dataParserTransformer/defaults/boolean.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/boolean.mjs +17 -0
- package/dist/toDataParser/dataParserTransformer/defaults/date.cjs +19 -0
- package/dist/toDataParser/dataParserTransformer/defaults/date.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/date.mjs +17 -0
- package/dist/toDataParser/dataParserTransformer/defaults/empty.cjs +19 -0
- package/dist/toDataParser/dataParserTransformer/defaults/empty.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/empty.mjs +17 -0
- package/dist/toDataParser/dataParserTransformer/defaults/file.cjs +44 -0
- package/dist/toDataParser/dataParserTransformer/defaults/file.d.ts +1 -0
- package/dist/toDataParser/dataParserTransformer/defaults/file.mjs +42 -0
- package/dist/toDataParser/dataParserTransformer/defaults/index.cjs +76 -0
- package/dist/toDataParser/dataParserTransformer/defaults/index.d.ts +24 -0
- package/dist/toDataParser/dataParserTransformer/defaults/index.mjs +51 -0
- package/dist/toDataParser/dataParserTransformer/defaults/lazy.cjs +22 -0
- package/dist/toDataParser/dataParserTransformer/defaults/lazy.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/lazy.mjs +20 -0
- package/dist/toDataParser/dataParserTransformer/defaults/literal.cjs +28 -0
- package/dist/toDataParser/dataParserTransformer/defaults/literal.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/literal.mjs +26 -0
- package/dist/toDataParser/dataParserTransformer/defaults/nil.cjs +19 -0
- package/dist/toDataParser/dataParserTransformer/defaults/nil.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/nil.mjs +17 -0
- package/dist/toDataParser/dataParserTransformer/defaults/nullable.cjs +22 -0
- package/dist/toDataParser/dataParserTransformer/defaults/nullable.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/nullable.mjs +20 -0
- package/dist/toDataParser/dataParserTransformer/defaults/number.cjs +19 -0
- package/dist/toDataParser/dataParserTransformer/defaults/number.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/number.mjs +17 -0
- package/dist/toDataParser/dataParserTransformer/defaults/object.cjs +22 -0
- package/dist/toDataParser/dataParserTransformer/defaults/object.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/object.mjs +20 -0
- package/dist/toDataParser/dataParserTransformer/defaults/optional.cjs +22 -0
- package/dist/toDataParser/dataParserTransformer/defaults/optional.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/optional.mjs +20 -0
- package/dist/toDataParser/dataParserTransformer/defaults/pipe.cjs +27 -0
- package/dist/toDataParser/dataParserTransformer/defaults/pipe.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/pipe.mjs +25 -0
- package/dist/toDataParser/dataParserTransformer/defaults/record.cjs +27 -0
- package/dist/toDataParser/dataParserTransformer/defaults/record.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/record.mjs +25 -0
- package/dist/toDataParser/dataParserTransformer/defaults/recover.cjs +8 -0
- package/dist/toDataParser/dataParserTransformer/defaults/recover.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/recover.mjs +6 -0
- package/dist/toDataParser/dataParserTransformer/defaults/string.cjs +15 -0
- package/dist/toDataParser/dataParserTransformer/defaults/string.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/string.mjs +13 -0
- package/dist/toDataParser/dataParserTransformer/defaults/templateLiteral.cjs +41 -0
- package/dist/toDataParser/dataParserTransformer/defaults/templateLiteral.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/templateLiteral.mjs +39 -0
- package/dist/toDataParser/dataParserTransformer/defaults/time.cjs +19 -0
- package/dist/toDataParser/dataParserTransformer/defaults/time.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/time.mjs +17 -0
- package/dist/toDataParser/dataParserTransformer/defaults/transform.cjs +40 -0
- package/dist/toDataParser/dataParserTransformer/defaults/transform.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/transform.mjs +38 -0
- package/dist/toDataParser/dataParserTransformer/defaults/tuple.cjs +36 -0
- package/dist/toDataParser/dataParserTransformer/defaults/tuple.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/tuple.mjs +34 -0
- package/dist/toDataParser/dataParserTransformer/defaults/union.cjs +28 -0
- package/dist/toDataParser/dataParserTransformer/defaults/union.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/union.mjs +26 -0
- package/dist/toDataParser/dataParserTransformer/defaults/unknown.cjs +15 -0
- package/dist/toDataParser/dataParserTransformer/defaults/unknown.d.ts +2 -0
- package/dist/toDataParser/dataParserTransformer/defaults/unknown.mjs +13 -0
- package/dist/toDataParser/dataParserTransformer/getDefinitionDataParser.cjs +36 -0
- package/dist/toDataParser/dataParserTransformer/getDefinitionDataParser.d.ts +14 -0
- package/dist/toDataParser/dataParserTransformer/getDefinitionDataParser.mjs +34 -0
- package/dist/toDataParser/dataParserTransformer/hook.cjs +2 -0
- package/dist/toDataParser/dataParserTransformer/hook.d.ts +15 -0
- package/dist/toDataParser/dataParserTransformer/hook.mjs +1 -0
- package/dist/toDataParser/dataParserTransformer/index.cjs +16 -0
- package/dist/toDataParser/dataParserTransformer/index.d.ts +6 -0
- package/dist/toDataParser/dataParserTransformer/index.mjs +6 -0
- package/dist/toDataParser/dataParserTransformer/transformer.cjs +129 -0
- package/dist/toDataParser/dataParserTransformer/transformer.d.ts +23 -0
- package/dist/toDataParser/dataParserTransformer/transformer.mjs +127 -0
- package/dist/toDataParser/index.cjs +103 -0
- package/dist/toDataParser/index.d.ts +7 -0
- package/dist/toDataParser/index.mjs +49 -0
- package/dist/toDataParser/kind.cjs +9 -0
- package/dist/toDataParser/kind.d.ts +6 -0
- package/dist/toDataParser/kind.mjs +7 -0
- package/dist/toDataParser/override.cjs +29 -0
- package/dist/toDataParser/override.d.ts +20 -0
- package/dist/toDataParser/override.mjs +27 -0
- package/dist/toDataParser/printer.cjs +23 -0
- package/dist/toDataParser/printer.d.ts +2 -0
- package/dist/toDataParser/printer.mjs +21 -0
- package/dist/toDataParser/render.cjs +50 -0
- package/dist/toDataParser/render.d.ts +19 -0
- package/dist/toDataParser/render.mjs +46 -0
- package/dist/toJsonSchema/override.cjs +4 -4
- package/dist/toJsonSchema/override.d.ts +1 -1
- package/dist/toJsonSchema/override.mjs +5 -5
- package/dist/toJsonSchema/transformer/defaults/string.cjs +2 -2
- package/dist/toJsonSchema/transformer/defaults/string.mjs +2 -2
- package/dist/toTypescript/buildContext.cjs +37 -0
- package/dist/toTypescript/buildContext.d.ts +15 -0
- package/dist/toTypescript/buildContext.mjs +35 -0
- package/dist/toTypescript/index.cjs +10 -0
- package/dist/toTypescript/index.d.ts +2 -0
- package/dist/toTypescript/index.mjs +5 -0
- package/dist/toTypescript/override.cjs +4 -4
- package/dist/toTypescript/override.d.ts +1 -1
- package/dist/toTypescript/override.mjs +5 -5
- package/dist/toTypescript/printer.cjs +17 -0
- package/dist/toTypescript/printer.d.ts +2 -0
- package/dist/toTypescript/printer.mjs +15 -0
- package/dist/toTypescript/render.cjs +8 -26
- package/dist/toTypescript/render.d.ts +5 -12
- package/dist/toTypescript/render.mjs +9 -27
- package/dist/toTypescript/transformer/addImport.cjs +21 -0
- package/dist/toTypescript/transformer/addImport.d.ts +2 -0
- package/dist/toTypescript/transformer/addImport.mjs +19 -0
- package/dist/toTypescript/transformer/create.d.ts +7 -3
- package/dist/toTypescript/transformer/createIdentifier.cjs +9 -0
- package/dist/toTypescript/transformer/createIdentifier.d.ts +1 -0
- package/dist/toTypescript/transformer/createIdentifier.mjs +7 -0
- package/dist/toTypescript/transformer/createImportDeclaration.cjs +17 -0
- package/dist/toTypescript/transformer/createImportDeclaration.d.ts +3 -0
- package/dist/toTypescript/transformer/createImportDeclaration.mjs +15 -0
- package/dist/toTypescript/transformer/hook.d.ts +2 -2
- package/dist/toTypescript/transformer/index.cjs +6 -0
- package/dist/toTypescript/transformer/index.d.ts +3 -0
- package/dist/toTypescript/transformer/index.mjs +3 -0
- package/dist/toTypescript/transformer/transformer.cjs +8 -9
- package/dist/toTypescript/transformer/transformer.d.ts +2 -2
- package/dist/toTypescript/transformer/transformer.mjs +8 -9
- package/package.json +8 -3
- package/dist/toTypescript/transformer/importTypesTransformer.cjs +0 -10
- package/dist/toTypescript/transformer/importTypesTransformer.d.ts +0 -2
- package/dist/toTypescript/transformer/importTypesTransformer.mjs +0 -8
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DP, E, A, P, isType, pipeCall, pipe } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const literalTransformer = createTransformer(DP.literalKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, }) => {
|
|
6
|
+
const definition = getDefinition();
|
|
7
|
+
if (E.isLeft(definition)) {
|
|
8
|
+
return definition;
|
|
9
|
+
}
|
|
10
|
+
const values = A.map(dataParser.definition.value, (element) => P.match(element)
|
|
11
|
+
.when(isType("string"), factory.createStringLiteral)
|
|
12
|
+
.when(isType("bigint"), (value) => factory.createBigIntLiteral(`${value.toString()}n`))
|
|
13
|
+
.when(isType("number"), pipeCall(factory.createNumericLiteral))
|
|
14
|
+
.when(isType("boolean"), (value) => value
|
|
15
|
+
? factory.createTrue()
|
|
16
|
+
: factory.createFalse())
|
|
17
|
+
.when(isType("null"), () => factory.createNull())
|
|
18
|
+
.when(isType("undefined"), () => factory.createIdentifier("undefined"))
|
|
19
|
+
.exhaustive());
|
|
20
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("literal")), undefined, [
|
|
21
|
+
factory.createArrayLiteralExpression(values, A.minElements(values, 4)),
|
|
22
|
+
...definition,
|
|
23
|
+
]), success);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export { literalTransformer };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const nilTransformer = create.createTransformer(utils.DP.nilKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, }) => {
|
|
8
|
+
const definition = getDefinition(dataParser.definition.coerce
|
|
9
|
+
? [
|
|
10
|
+
typescript.factory.createPropertyAssignment(typescript.factory.createIdentifier("coerce"), typescript.factory.createTrue()),
|
|
11
|
+
]
|
|
12
|
+
: undefined);
|
|
13
|
+
if (utils.E.isLeft(definition)) {
|
|
14
|
+
return definition;
|
|
15
|
+
}
|
|
16
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("nil")), undefined, definition), success);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
exports.nilTransformer = nilTransformer;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DP, E, pipe } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const nilTransformer = createTransformer(DP.nilKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, }) => {
|
|
6
|
+
const definition = getDefinition(dataParser.definition.coerce
|
|
7
|
+
? [
|
|
8
|
+
factory.createPropertyAssignment(factory.createIdentifier("coerce"), factory.createTrue()),
|
|
9
|
+
]
|
|
10
|
+
: undefined);
|
|
11
|
+
if (E.isLeft(definition)) {
|
|
12
|
+
return definition;
|
|
13
|
+
}
|
|
14
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("nil")), undefined, definition), success);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export { nilTransformer };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const nullableTransformer = create.createTransformer(utils.DP.nullableKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
8
|
+
const inner = transformer(dataParser.definition.inner);
|
|
9
|
+
if (utils.E.isLeft(inner)) {
|
|
10
|
+
return inner;
|
|
11
|
+
}
|
|
12
|
+
const definition = getDefinition();
|
|
13
|
+
if (utils.E.isLeft(definition)) {
|
|
14
|
+
return definition;
|
|
15
|
+
}
|
|
16
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("nullable")), undefined, [
|
|
17
|
+
utils.unwrap(inner),
|
|
18
|
+
...definition,
|
|
19
|
+
]), success);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
exports.nullableTransformer = nullableTransformer;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DP, E, pipe, unwrap } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const nullableTransformer = createTransformer(DP.nullableKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
6
|
+
const inner = transformer(dataParser.definition.inner);
|
|
7
|
+
if (E.isLeft(inner)) {
|
|
8
|
+
return inner;
|
|
9
|
+
}
|
|
10
|
+
const definition = getDefinition();
|
|
11
|
+
if (E.isLeft(definition)) {
|
|
12
|
+
return definition;
|
|
13
|
+
}
|
|
14
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("nullable")), undefined, [
|
|
15
|
+
unwrap(inner),
|
|
16
|
+
...definition,
|
|
17
|
+
]), success);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export { nullableTransformer };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const numberTransformer = create.createTransformer(utils.DP.numberKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, }) => {
|
|
8
|
+
const definition = getDefinition(dataParser.definition.coerce
|
|
9
|
+
? [
|
|
10
|
+
typescript.factory.createPropertyAssignment(typescript.factory.createIdentifier("coerce"), typescript.factory.createTrue()),
|
|
11
|
+
]
|
|
12
|
+
: undefined);
|
|
13
|
+
if (utils.E.isLeft(definition)) {
|
|
14
|
+
return definition;
|
|
15
|
+
}
|
|
16
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("number")), undefined, definition), success);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
exports.numberTransformer = numberTransformer;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DP, E, pipe } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const numberTransformer = createTransformer(DP.numberKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, }) => {
|
|
6
|
+
const definition = getDefinition(dataParser.definition.coerce
|
|
7
|
+
? [
|
|
8
|
+
factory.createPropertyAssignment(factory.createIdentifier("coerce"), factory.createTrue()),
|
|
9
|
+
]
|
|
10
|
+
: undefined);
|
|
11
|
+
if (E.isLeft(definition)) {
|
|
12
|
+
return definition;
|
|
13
|
+
}
|
|
14
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("number")), undefined, definition), success);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export { numberTransformer };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const objectTransformer = create.createTransformer(utils.DP.objectKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
8
|
+
const shape = utils.pipe(dataParser.definition.shape, utils.O.entries, utils.A.reduce(utils.A.reduceFrom([]), ({ element: [identifier, parser], lastValue, nextPush, exit }) => utils.pipe(parser, transformer, utils.when(utils.E.isLeft, exit), utils.E.whenIsRight((result) => nextPush(lastValue, typescript.factory.createPropertyAssignment(typescript.factory.createIdentifier(identifier), result))))));
|
|
9
|
+
if (utils.E.isLeft(shape)) {
|
|
10
|
+
return shape;
|
|
11
|
+
}
|
|
12
|
+
const definition = getDefinition();
|
|
13
|
+
if (utils.E.isLeft(definition)) {
|
|
14
|
+
return definition;
|
|
15
|
+
}
|
|
16
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("object")), undefined, [
|
|
17
|
+
typescript.factory.createObjectLiteralExpression(shape, true),
|
|
18
|
+
...definition,
|
|
19
|
+
]), success);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
exports.objectTransformer = objectTransformer;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DP, pipe, O, A, when, E } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const objectTransformer = createTransformer(DP.objectKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
6
|
+
const shape = pipe(dataParser.definition.shape, O.entries, A.reduce(A.reduceFrom([]), ({ element: [identifier, parser], lastValue, nextPush, exit }) => pipe(parser, transformer, when(E.isLeft, exit), E.whenIsRight((result) => nextPush(lastValue, factory.createPropertyAssignment(factory.createIdentifier(identifier), result))))));
|
|
7
|
+
if (E.isLeft(shape)) {
|
|
8
|
+
return shape;
|
|
9
|
+
}
|
|
10
|
+
const definition = getDefinition();
|
|
11
|
+
if (E.isLeft(definition)) {
|
|
12
|
+
return definition;
|
|
13
|
+
}
|
|
14
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("object")), undefined, [
|
|
15
|
+
factory.createObjectLiteralExpression(shape, true),
|
|
16
|
+
...definition,
|
|
17
|
+
]), success);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export { objectTransformer };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const optionalTransformer = create.createTransformer(utils.DP.optionalKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
8
|
+
const inner = transformer(dataParser.definition.inner);
|
|
9
|
+
if (utils.E.isLeft(inner)) {
|
|
10
|
+
return inner;
|
|
11
|
+
}
|
|
12
|
+
const definition = getDefinition();
|
|
13
|
+
if (utils.E.isLeft(definition)) {
|
|
14
|
+
return definition;
|
|
15
|
+
}
|
|
16
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("optional")), undefined, [
|
|
17
|
+
utils.unwrap(inner),
|
|
18
|
+
...definition,
|
|
19
|
+
]), success);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
exports.optionalTransformer = optionalTransformer;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DP, E, pipe, unwrap } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const optionalTransformer = createTransformer(DP.optionalKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
6
|
+
const inner = transformer(dataParser.definition.inner);
|
|
7
|
+
if (E.isLeft(inner)) {
|
|
8
|
+
return inner;
|
|
9
|
+
}
|
|
10
|
+
const definition = getDefinition();
|
|
11
|
+
if (E.isLeft(definition)) {
|
|
12
|
+
return definition;
|
|
13
|
+
}
|
|
14
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("optional")), undefined, [
|
|
15
|
+
unwrap(inner),
|
|
16
|
+
...definition,
|
|
17
|
+
]), success);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export { optionalTransformer };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const pipeTransformer = create.createTransformer(utils.DP.pipeKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
8
|
+
const input = transformer(dataParser.definition.input);
|
|
9
|
+
if (utils.E.isLeft(input)) {
|
|
10
|
+
return input;
|
|
11
|
+
}
|
|
12
|
+
const output = transformer(dataParser.definition.output);
|
|
13
|
+
if (utils.E.isLeft(output)) {
|
|
14
|
+
return output;
|
|
15
|
+
}
|
|
16
|
+
const definition = getDefinition();
|
|
17
|
+
if (utils.E.isLeft(definition)) {
|
|
18
|
+
return definition;
|
|
19
|
+
}
|
|
20
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("pipe")), undefined, [
|
|
21
|
+
utils.unwrap(input),
|
|
22
|
+
utils.unwrap(output),
|
|
23
|
+
...definition,
|
|
24
|
+
]), success);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
exports.pipeTransformer = pipeTransformer;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DP, E, pipe, unwrap } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const pipeTransformer = createTransformer(DP.pipeKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
6
|
+
const input = transformer(dataParser.definition.input);
|
|
7
|
+
if (E.isLeft(input)) {
|
|
8
|
+
return input;
|
|
9
|
+
}
|
|
10
|
+
const output = transformer(dataParser.definition.output);
|
|
11
|
+
if (E.isLeft(output)) {
|
|
12
|
+
return output;
|
|
13
|
+
}
|
|
14
|
+
const definition = getDefinition();
|
|
15
|
+
if (E.isLeft(definition)) {
|
|
16
|
+
return definition;
|
|
17
|
+
}
|
|
18
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("pipe")), undefined, [
|
|
19
|
+
unwrap(input),
|
|
20
|
+
unwrap(output),
|
|
21
|
+
...definition,
|
|
22
|
+
]), success);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export { pipeTransformer };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const recordTransformer = create.createTransformer(utils.DP.recordKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
8
|
+
const key = transformer(dataParser.definition.key);
|
|
9
|
+
if (utils.E.isLeft(key)) {
|
|
10
|
+
return key;
|
|
11
|
+
}
|
|
12
|
+
const value = transformer(dataParser.definition.value);
|
|
13
|
+
if (utils.E.isLeft(value)) {
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
const definition = getDefinition();
|
|
17
|
+
if (utils.E.isLeft(definition)) {
|
|
18
|
+
return definition;
|
|
19
|
+
}
|
|
20
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("record")), undefined, [
|
|
21
|
+
utils.unwrap(key),
|
|
22
|
+
utils.unwrap(value),
|
|
23
|
+
...definition,
|
|
24
|
+
]), success);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
exports.recordTransformer = recordTransformer;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DP, E, pipe, unwrap } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const recordTransformer = createTransformer(DP.recordKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
6
|
+
const key = transformer(dataParser.definition.key);
|
|
7
|
+
if (E.isLeft(key)) {
|
|
8
|
+
return key;
|
|
9
|
+
}
|
|
10
|
+
const value = transformer(dataParser.definition.value);
|
|
11
|
+
if (E.isLeft(value)) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
const definition = getDefinition();
|
|
15
|
+
if (E.isLeft(definition)) {
|
|
16
|
+
return definition;
|
|
17
|
+
}
|
|
18
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("record")), undefined, [
|
|
19
|
+
unwrap(key),
|
|
20
|
+
unwrap(value),
|
|
21
|
+
...definition,
|
|
22
|
+
]), success);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export { recordTransformer };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
|
|
6
|
+
const recoverTransformer = create.createTransformer(utils.DP.recoverKind.has, (dataParser, { transformer, }) => transformer(dataParser.definition.inner));
|
|
7
|
+
|
|
8
|
+
exports.recoverTransformer = recoverTransformer;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DP } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
|
|
4
|
+
const recoverTransformer = createTransformer(DP.recoverKind.has, (dataParser, { transformer, }) => transformer(dataParser.definition.inner));
|
|
5
|
+
|
|
6
|
+
export { recoverTransformer };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const stringTransformer = create.createTransformer(utils.DP.stringKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, }) => {
|
|
8
|
+
const definition = getDefinition();
|
|
9
|
+
if (utils.E.isLeft(definition)) {
|
|
10
|
+
return definition;
|
|
11
|
+
}
|
|
12
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("string")), undefined, definition), success);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
exports.stringTransformer = stringTransformer;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DP, E, pipe } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const stringTransformer = createTransformer(DP.stringKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, }) => {
|
|
6
|
+
const definition = getDefinition();
|
|
7
|
+
if (E.isLeft(definition)) {
|
|
8
|
+
return definition;
|
|
9
|
+
}
|
|
10
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("string")), undefined, definition), success);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
export { stringTransformer };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const templateLiteralTransformer = create.createTransformer(utils.DP.templateLiteralKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
8
|
+
const parts = utils.A.reduce(dataParser.definition.template, utils.A.reduceFrom([]), ({ element, lastValue, nextPush, exit }) => {
|
|
9
|
+
if (utils.DP.dataParserKind.has(element)) {
|
|
10
|
+
const transformResult = transformer(element);
|
|
11
|
+
if (utils.E.isLeft(transformResult)) {
|
|
12
|
+
return exit(transformResult);
|
|
13
|
+
}
|
|
14
|
+
return nextPush(lastValue, utils.unwrap(transformResult));
|
|
15
|
+
}
|
|
16
|
+
const result = utils.P.match(element)
|
|
17
|
+
.when(utils.isType("bigint"), (value) => typescript.factory.createBigIntLiteral(`${value.toString()}n`))
|
|
18
|
+
.when(utils.isType("boolean"), (value) => value
|
|
19
|
+
? typescript.factory.createTrue()
|
|
20
|
+
: typescript.factory.createFalse())
|
|
21
|
+
.when(utils.isType("string"), utils.pipeCall(typescript.factory.createStringLiteral))
|
|
22
|
+
.when(utils.isType("number"), utils.pipeCall(typescript.factory.createNumericLiteral))
|
|
23
|
+
.when(utils.isType("null"), () => typescript.factory.createNull())
|
|
24
|
+
.when(utils.isType("undefined"), () => typescript.factory.createIdentifier("undefined"))
|
|
25
|
+
.exhaustive();
|
|
26
|
+
return nextPush(lastValue, result);
|
|
27
|
+
});
|
|
28
|
+
if (utils.E.isLeft(parts)) {
|
|
29
|
+
return parts;
|
|
30
|
+
}
|
|
31
|
+
const definition = getDefinition();
|
|
32
|
+
if (utils.E.isLeft(definition)) {
|
|
33
|
+
return definition;
|
|
34
|
+
}
|
|
35
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("templateLiteral")), undefined, [
|
|
36
|
+
typescript.factory.createArrayLiteralExpression(parts, utils.A.minElements(parts, 4)),
|
|
37
|
+
...definition,
|
|
38
|
+
]), success);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
exports.templateLiteralTransformer = templateLiteralTransformer;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { DP, A, E, unwrap, P, isType, pipeCall, pipe } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const templateLiteralTransformer = createTransformer(DP.templateLiteralKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, }) => {
|
|
6
|
+
const parts = A.reduce(dataParser.definition.template, A.reduceFrom([]), ({ element, lastValue, nextPush, exit }) => {
|
|
7
|
+
if (DP.dataParserKind.has(element)) {
|
|
8
|
+
const transformResult = transformer(element);
|
|
9
|
+
if (E.isLeft(transformResult)) {
|
|
10
|
+
return exit(transformResult);
|
|
11
|
+
}
|
|
12
|
+
return nextPush(lastValue, unwrap(transformResult));
|
|
13
|
+
}
|
|
14
|
+
const result = P.match(element)
|
|
15
|
+
.when(isType("bigint"), (value) => factory.createBigIntLiteral(`${value.toString()}n`))
|
|
16
|
+
.when(isType("boolean"), (value) => value
|
|
17
|
+
? factory.createTrue()
|
|
18
|
+
: factory.createFalse())
|
|
19
|
+
.when(isType("string"), pipeCall(factory.createStringLiteral))
|
|
20
|
+
.when(isType("number"), pipeCall(factory.createNumericLiteral))
|
|
21
|
+
.when(isType("null"), () => factory.createNull())
|
|
22
|
+
.when(isType("undefined"), () => factory.createIdentifier("undefined"))
|
|
23
|
+
.exhaustive();
|
|
24
|
+
return nextPush(lastValue, result);
|
|
25
|
+
});
|
|
26
|
+
if (E.isLeft(parts)) {
|
|
27
|
+
return parts;
|
|
28
|
+
}
|
|
29
|
+
const definition = getDefinition();
|
|
30
|
+
if (E.isLeft(definition)) {
|
|
31
|
+
return definition;
|
|
32
|
+
}
|
|
33
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("templateLiteral")), undefined, [
|
|
34
|
+
factory.createArrayLiteralExpression(parts, A.minElements(parts, 4)),
|
|
35
|
+
...definition,
|
|
36
|
+
]), success);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export { templateLiteralTransformer };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const timeTransformer = create.createTransformer(utils.DP.timeKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, }) => {
|
|
8
|
+
const definition = getDefinition(dataParser.definition.coerce
|
|
9
|
+
? [
|
|
10
|
+
typescript.factory.createPropertyAssignment(typescript.factory.createIdentifier("coerce"), typescript.factory.createTrue()),
|
|
11
|
+
]
|
|
12
|
+
: undefined);
|
|
13
|
+
if (utils.E.isLeft(definition)) {
|
|
14
|
+
return definition;
|
|
15
|
+
}
|
|
16
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("time")), undefined, definition), success);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
exports.timeTransformer = timeTransformer;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DP, E, pipe } from '@duplojs/utils';
|
|
2
|
+
import { createTransformer } from '../create.mjs';
|
|
3
|
+
import { factory } from 'typescript';
|
|
4
|
+
|
|
5
|
+
const timeTransformer = createTransformer(DP.timeKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, }) => {
|
|
6
|
+
const definition = getDefinition(dataParser.definition.coerce
|
|
7
|
+
? [
|
|
8
|
+
factory.createPropertyAssignment(factory.createIdentifier("coerce"), factory.createTrue()),
|
|
9
|
+
]
|
|
10
|
+
: undefined);
|
|
11
|
+
if (E.isLeft(definition)) {
|
|
12
|
+
return definition;
|
|
13
|
+
}
|
|
14
|
+
return pipe(factory.createCallExpression(factory.createPropertyAccessExpression(dependencyIdentifier, factory.createIdentifier("time")), undefined, definition), success);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export { timeTransformer };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var utils = require('@duplojs/utils');
|
|
4
|
+
var create = require('../create.cjs');
|
|
5
|
+
var typescript = require('typescript');
|
|
6
|
+
|
|
7
|
+
const transformTransformer = create.createTransformer(utils.DP.transformKind.has, (dataParser, { success, dependencyIdentifier, getDefinition, transformer, buildError, }) => {
|
|
8
|
+
const inner = transformer(dataParser.definition.inner);
|
|
9
|
+
if (utils.E.isLeft(inner)) {
|
|
10
|
+
return inner;
|
|
11
|
+
}
|
|
12
|
+
const theFunction = dataParser.definition.theFunction.toString();
|
|
13
|
+
if (theFunction.includes("[native code]")) {
|
|
14
|
+
return buildError();
|
|
15
|
+
}
|
|
16
|
+
const sourceFile = typescript.createSourceFile("refine-function.ts", `(${theFunction})`, typescript.ScriptTarget.Latest, false);
|
|
17
|
+
const statement = sourceFile.statements[0];
|
|
18
|
+
if (!statement || !typescript.isExpressionStatement(statement)) {
|
|
19
|
+
return buildError();
|
|
20
|
+
}
|
|
21
|
+
const functionExpression = typescript.isParenthesizedExpression(statement.expression)
|
|
22
|
+
? statement.expression.expression
|
|
23
|
+
: undefined;
|
|
24
|
+
if (!functionExpression
|
|
25
|
+
|| (!typescript.isFunctionExpression(functionExpression)
|
|
26
|
+
&& !typescript.isArrowFunction(functionExpression))) {
|
|
27
|
+
return buildError();
|
|
28
|
+
}
|
|
29
|
+
const definition = getDefinition();
|
|
30
|
+
if (utils.E.isLeft(definition)) {
|
|
31
|
+
return definition;
|
|
32
|
+
}
|
|
33
|
+
return utils.pipe(typescript.factory.createCallExpression(typescript.factory.createPropertyAccessExpression(dependencyIdentifier, typescript.factory.createIdentifier("transform")), undefined, [
|
|
34
|
+
utils.unwrap(inner),
|
|
35
|
+
functionExpression,
|
|
36
|
+
...definition,
|
|
37
|
+
]), success);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
exports.transformTransformer = transformTransformer;
|