@duplojs/data-parser-tools 0.2.7 → 0.2.8

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.
@@ -29,6 +29,7 @@ var union = require('./transformer/defaults/union.cjs');
29
29
  var unknown = require('./transformer/defaults/unknown.cjs');
30
30
  var date = require('./transformer/defaults/date.cjs');
31
31
  var time = require('./transformer/defaults/time.cjs');
32
+ var file = require('./transformer/defaults/file.cjs');
32
33
  var includesUndefinedTypeNode = require('./transformer/includesUndefinedTypeNode.cjs');
33
34
 
34
35
 
@@ -61,4 +62,5 @@ exports.unionTransformer = union.unionTransformer;
61
62
  exports.unknownTransformer = unknown.unknownTransformer;
62
63
  exports.dateTransformer = date.dateTransformer;
63
64
  exports.timeTransformer = time.timeTransformer;
65
+ exports.fileTransformer = file.fileTransformer;
64
66
  exports.includesUndefinedTypeNode = includesUndefinedTypeNode.includesUndefinedTypeNode;
@@ -27,4 +27,5 @@ export { unionTransformer } from './transformer/defaults/union.mjs';
27
27
  export { unknownTransformer } from './transformer/defaults/unknown.mjs';
28
28
  export { dateTransformer } from './transformer/defaults/date.mjs';
29
29
  export { timeTransformer } from './transformer/defaults/time.mjs';
30
+ export { fileTransformer } from './transformer/defaults/file.mjs';
30
31
  export { includesUndefinedTypeNode } from './transformer/includesUndefinedTypeNode.mjs';
@@ -43,7 +43,7 @@ function render(schema, params) {
43
43
  return utils.pipe([
44
44
  ...importTypesTransformer.importTypesTransformer(importType),
45
45
  ...context.values(),
46
- ], utils.G.map((value) => printer.printNode(typescript.EmitHint.Unspecified, value, sourceFile)), utils.A.from, utils.A.join("\n\n"), utils.S.trim);
46
+ ], utils.A.map((value) => printer.printNode(typescript.EmitHint.Unspecified, value, sourceFile)), utils.A.join("\n\n"), utils.S.trim);
47
47
  }
48
48
 
49
49
  exports.DataParserToTypescriptRenderError = DataParserToTypescriptRenderError;
@@ -1,4 +1,4 @@
1
- import { kindHeritage, E, DP, unwrap, pipe, G, A, S } from '@duplojs/utils';
1
+ import { kindHeritage, E, DP, unwrap, pipe, 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';
@@ -41,7 +41,7 @@ function render(schema, params) {
41
41
  return pipe([
42
42
  ...importTypesTransformer(importType),
43
43
  ...context.values(),
44
- ], G.map((value) => printer.printNode(EmitHint.Unspecified, value, sourceFile)), A.from, A.join("\n\n"), S.trim);
44
+ ], A.map((value) => printer.printNode(EmitHint.Unspecified, value, sourceFile)), A.join("\n\n"), S.trim);
45
45
  }
46
46
 
47
47
  export { DataParserToTypescriptRenderError, render };
@@ -72,4 +72,5 @@ exports.unionTransformer = union.unionTransformer;
72
72
  exports.unknownTransformer = unknown.unknownTransformer;
73
73
  exports.dateTransformer = date.dateTransformer;
74
74
  exports.timeTransformer = time.timeTransformer;
75
+ exports.fileTransformer = file.fileTransformer;
75
76
  exports.defaultTransformers = defaultTransformers;
@@ -20,4 +20,5 @@ export * from "./union";
20
20
  export * from "./unknown";
21
21
  export * from "./date";
22
22
  export * from "./time";
23
+ export * from "./file";
23
24
  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];
@@ -48,4 +48,4 @@ const defaultTransformers = [
48
48
  fileTransformer,
49
49
  ];
50
50
 
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 };
51
+ export { arrayTransformer, bigIntTransformer, booleanTransformer, dateTransformer, defaultTransformers, emptyTransformer, fileTransformer, lazyTransformer, literalTransformer, nilTransformer, nullableTransformer, numberTransformer, objectTransformer, optionalTransformer, pipeTransformer, recordTransformer, recoverTransformer, stringTransformer, templateLiteralTransformer, timeTransformer, transformTransformer, tupleTransformer, unionTransformer, unknownTransformer };
@@ -11,6 +11,6 @@ const literalTransformer = create.createTransformer(utils.DP.literalKind.has, (s
11
11
  .when(utils.isType("bigint"), (value) => typescript.factory.createLiteralTypeNode(typescript.factory.createBigIntLiteral(`${value}n`)))
12
12
  .when(utils.isType("undefined"), () => typescript.factory.createKeywordTypeNode(typescript.SyntaxKind.UndefinedKeyword))
13
13
  .when(utils.isType("null"), () => typescript.factory.createLiteralTypeNode(typescript.factory.createNull()))
14
- .exhaustive()), typescript.factory.createUnionTypeNode, success));
14
+ .exhaustive()), utils.P.when(utils.A.lengthEqual(1), utils.A.at(0)), utils.P.otherwise(typescript.factory.createUnionTypeNode), success));
15
15
 
16
16
  exports.literalTransformer = literalTransformer;
@@ -9,6 +9,6 @@ const literalTransformer = createTransformer(DP.literalKind.has, (schema, { succ
9
9
  .when(isType("bigint"), (value) => factory.createLiteralTypeNode(factory.createBigIntLiteral(`${value}n`)))
10
10
  .when(isType("undefined"), () => factory.createKeywordTypeNode(SyntaxKind.UndefinedKeyword))
11
11
  .when(isType("null"), () => factory.createLiteralTypeNode(factory.createNull()))
12
- .exhaustive()), factory.createUnionTypeNode, success));
12
+ .exhaustive()), P.when(A.lengthEqual(1), A.at(0)), P.otherwise(factory.createUnionTypeNode), success));
13
13
 
14
14
  export { literalTransformer };
@@ -16,7 +16,7 @@ const nullableTransformer = create.createTransformer(utils.DP.nullableKind.has,
16
16
  }, (value) => utils.P.match(value)
17
17
  .with(utils.P.union({ mode: "in" }, {
18
18
  mode: "out",
19
- coalescingValue: undefined,
19
+ coalescingValue: null,
20
20
  }), () => utils.pipe(typescript.factory.createNull(), typescript.factory.createLiteralTypeNode, (value) => typescript.factory.createUnionTypeNode([
21
21
  innerType,
22
22
  value,
@@ -14,7 +14,7 @@ const nullableTransformer = createTransformer(DP.nullableKind.has, (schema, { tr
14
14
  }, (value) => P.match(value)
15
15
  .with(P.union({ mode: "in" }, {
16
16
  mode: "out",
17
- coalescingValue: undefined,
17
+ coalescingValue: null,
18
18
  }), () => pipe(factory.createNull(), factory.createLiteralTypeNode, (value) => factory.createUnionTypeNode([
19
19
  innerType,
20
20
  value,
@@ -25,11 +25,15 @@ function transformer(schema, params) {
25
25
  if (currentDeclaration) {
26
26
  return utils.E.right("buildSuccess", typescript.factory.createTypeReferenceNode(currentDeclaration.name));
27
27
  }
28
- const currentIdentifier = utils.whenElse(params.recursiveDataParsers, utils.A.includes(currentSchema), () => {
28
+ const currentIdentifier = utils.justExec(() => {
29
+ if (!utils.A.includes(params.recursiveDataParsers, currentSchema)
30
+ && !currentSchema.definition.identifier) {
31
+ return undefined;
32
+ }
29
33
  const identifier = currentSchema.definition.identifier ?? `RecursiveType${params.context.size}`;
30
34
  params.context.set(currentSchema, typescript.factory.createTypeAliasDeclaration([typescript.factory.createToken(typescript.SyntaxKind.ExportKeyword)], typescript.factory.createIdentifier(identifier), undefined, typescript.factory.createTypeReferenceNode(identifier)));
31
35
  return identifier;
32
- }, utils.justReturn(currentSchema.definition.identifier));
36
+ });
33
37
  const functionParams = {
34
38
  success(result) {
35
39
  return utils.E.right("buildSuccess", result);
@@ -1,4 +1,4 @@
1
- import { A, E, whenElse, justReturn, unwrap } from '@duplojs/utils';
1
+ import { A, E, justExec, unwrap } from '@duplojs/utils';
2
2
  import { factory, SyntaxKind } from 'typescript';
3
3
 
4
4
  function transformer(schema, params) {
@@ -23,11 +23,15 @@ function transformer(schema, params) {
23
23
  if (currentDeclaration) {
24
24
  return E.right("buildSuccess", factory.createTypeReferenceNode(currentDeclaration.name));
25
25
  }
26
- const currentIdentifier = whenElse(params.recursiveDataParsers, A.includes(currentSchema), () => {
26
+ const currentIdentifier = justExec(() => {
27
+ if (!A.includes(params.recursiveDataParsers, currentSchema)
28
+ && !currentSchema.definition.identifier) {
29
+ return undefined;
30
+ }
27
31
  const identifier = currentSchema.definition.identifier ?? `RecursiveType${params.context.size}`;
28
32
  params.context.set(currentSchema, factory.createTypeAliasDeclaration([factory.createToken(SyntaxKind.ExportKeyword)], factory.createIdentifier(identifier), undefined, factory.createTypeReferenceNode(identifier)));
29
33
  return identifier;
30
- }, justReturn(currentSchema.definition.identifier));
34
+ });
31
35
  const functionParams = {
32
36
  success(result) {
33
37
  return E.right("buildSuccess", result);
@@ -26,7 +26,17 @@ function getRecursiveDataParser(schema) {
26
26
  utils.DP.recoverKind,
27
27
  utils.DP.transformKind,
28
28
  ]), (dataParser) => void countDataParser(dataParser.definition.inner))
29
- .when(utils.DP.lazyKind.has, (dataParser) => void countDataParser(dataParser.definition.getter.value))
29
+ .when(utils.DP.lazyKind.has, (dataParser) => {
30
+ const count = (countMap.get(dataParser) ?? 0) + 1;
31
+ countMap.set(dataParser, count);
32
+ if (count > 1) {
33
+ return;
34
+ }
35
+ countDataParser(dataParser.definition.getter.value);
36
+ if (countMap.get(dataParser) === 1) {
37
+ countMap.delete(dataParser);
38
+ }
39
+ })
30
40
  .when(utils.DP.pipeKind.has, (dataParser) => {
31
41
  countDataParser(dataParser.definition.input);
32
42
  countDataParser(dataParser.definition.output);
@@ -24,7 +24,17 @@ function getRecursiveDataParser(schema) {
24
24
  DP.recoverKind,
25
25
  DP.transformKind,
26
26
  ]), (dataParser) => void countDataParser(dataParser.definition.inner))
27
- .when(DP.lazyKind.has, (dataParser) => void countDataParser(dataParser.definition.getter.value))
27
+ .when(DP.lazyKind.has, (dataParser) => {
28
+ const count = (countMap.get(dataParser) ?? 0) + 1;
29
+ countMap.set(dataParser, count);
30
+ if (count > 1) {
31
+ return;
32
+ }
33
+ countDataParser(dataParser.definition.getter.value);
34
+ if (countMap.get(dataParser) === 1) {
35
+ countMap.delete(dataParser);
36
+ }
37
+ })
28
38
  .when(DP.pipeKind.has, (dataParser) => {
29
39
  countDataParser(dataParser.definition.input);
30
40
  countDataParser(dataParser.definition.output);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duplojs/data-parser-tools",
3
- "version": "0.2.7",
3
+ "version": "0.2.8",
4
4
  "license": "MIT",
5
5
  "author": "duplojs",
6
6
  "contributors": [
@@ -71,7 +71,7 @@
71
71
  "vitest": "3.2.4"
72
72
  },
73
73
  "peerDependencies": {
74
- "@duplojs/utils": ">=1.5.3 <2.0.0",
74
+ "@duplojs/utils": ">=1.5.6 <2.0.0",
75
75
  "@duplojs/server-utils": ">=0.1.4 < 1.0.0"
76
76
  },
77
77
  "dependencies": {