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