@duplojs/data-parser-tools 0.2.4 → 0.2.6

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 (70) hide show
  1. package/README.md +167 -2
  2. package/dist/toJsonSchema/override.cjs +14 -0
  3. package/dist/toJsonSchema/override.d.ts +8 -1
  4. package/dist/toJsonSchema/override.mjs +14 -0
  5. package/dist/toJsonSchema/render.cjs +11 -12
  6. package/dist/toJsonSchema/render.d.ts +8 -8
  7. package/dist/toJsonSchema/render.mjs +11 -12
  8. package/dist/toJsonSchema/transformer/create.d.ts +9 -7
  9. package/dist/toJsonSchema/transformer/defaults/date.cjs +1 -2
  10. package/dist/toJsonSchema/transformer/defaults/date.mjs +1 -2
  11. package/dist/toJsonSchema/transformer/defaults/file.cjs +17 -0
  12. package/dist/toJsonSchema/transformer/defaults/file.d.ts +5 -0
  13. package/dist/toJsonSchema/transformer/defaults/file.mjs +15 -0
  14. package/dist/toJsonSchema/transformer/defaults/index.cjs +2 -0
  15. package/dist/toJsonSchema/transformer/defaults/index.d.ts +1 -1
  16. package/dist/toJsonSchema/transformer/defaults/index.mjs +2 -0
  17. package/dist/toJsonSchema/transformer/defaults/literal.cjs +4 -4
  18. package/dist/toJsonSchema/transformer/defaults/literal.mjs +4 -4
  19. package/dist/toJsonSchema/transformer/defaults/time.cjs +1 -1
  20. package/dist/toJsonSchema/transformer/defaults/time.mjs +1 -1
  21. package/dist/toJsonSchema/transformer/transformer.cjs +6 -3
  22. package/dist/toJsonSchema/transformer/transformer.d.ts +4 -4
  23. package/dist/toJsonSchema/transformer/transformer.mjs +7 -4
  24. package/dist/toTypescript/override.cjs +14 -0
  25. package/dist/toTypescript/override.d.ts +9 -1
  26. package/dist/toTypescript/override.mjs +14 -0
  27. package/dist/toTypescript/render.cjs +7 -1
  28. package/dist/toTypescript/render.d.ts +6 -6
  29. package/dist/toTypescript/render.mjs +7 -1
  30. package/dist/toTypescript/transformer/create.d.ts +10 -5
  31. package/dist/toTypescript/transformer/defaults/array.d.ts +1 -2
  32. package/dist/toTypescript/transformer/defaults/bigint.d.ts +1 -2
  33. package/dist/toTypescript/transformer/defaults/boolean.d.ts +1 -2
  34. package/dist/toTypescript/transformer/defaults/date.cjs +17 -7
  35. package/dist/toTypescript/transformer/defaults/date.d.ts +1 -2
  36. package/dist/toTypescript/transformer/defaults/date.mjs +19 -9
  37. package/dist/toTypescript/transformer/defaults/empty.d.ts +1 -2
  38. package/dist/toTypescript/transformer/defaults/file.cjs +13 -0
  39. package/dist/toTypescript/transformer/defaults/file.d.ts +1 -0
  40. package/dist/toTypescript/transformer/defaults/file.mjs +11 -0
  41. package/dist/toTypescript/transformer/defaults/index.cjs +2 -0
  42. package/dist/toTypescript/transformer/defaults/index.d.ts +1 -1
  43. package/dist/toTypescript/transformer/defaults/index.mjs +2 -0
  44. package/dist/toTypescript/transformer/defaults/lazy.d.ts +1 -2
  45. package/dist/toTypescript/transformer/defaults/literal.d.ts +1 -2
  46. package/dist/toTypescript/transformer/defaults/nil.d.ts +1 -2
  47. package/dist/toTypescript/transformer/defaults/nullable.d.ts +1 -2
  48. package/dist/toTypescript/transformer/defaults/number.d.ts +1 -2
  49. package/dist/toTypescript/transformer/defaults/object.d.ts +1 -2
  50. package/dist/toTypescript/transformer/defaults/optional.d.ts +1 -2
  51. package/dist/toTypescript/transformer/defaults/pipe.d.ts +1 -2
  52. package/dist/toTypescript/transformer/defaults/record.d.ts +1 -2
  53. package/dist/toTypescript/transformer/defaults/recover.d.ts +1 -2
  54. package/dist/toTypescript/transformer/defaults/string.d.ts +1 -2
  55. package/dist/toTypescript/transformer/defaults/templateLiteral.d.ts +1 -2
  56. package/dist/toTypescript/transformer/defaults/time.cjs +17 -7
  57. package/dist/toTypescript/transformer/defaults/time.d.ts +1 -2
  58. package/dist/toTypescript/transformer/defaults/time.mjs +18 -8
  59. package/dist/toTypescript/transformer/defaults/transform.d.ts +1 -2
  60. package/dist/toTypescript/transformer/defaults/tuple.d.ts +1 -2
  61. package/dist/toTypescript/transformer/defaults/union.d.ts +1 -2
  62. package/dist/toTypescript/transformer/defaults/unknown.d.ts +1 -2
  63. package/dist/toTypescript/transformer/hook.d.ts +3 -2
  64. package/dist/toTypescript/transformer/importTypesTransformer.cjs +10 -0
  65. package/dist/toTypescript/transformer/importTypesTransformer.d.ts +2 -0
  66. package/dist/toTypescript/transformer/importTypesTransformer.mjs +8 -0
  67. package/dist/toTypescript/transformer/transformer.cjs +11 -0
  68. package/dist/toTypescript/transformer/transformer.d.ts +4 -3
  69. package/dist/toTypescript/transformer/transformer.mjs +12 -1
  70. package/package.json +3 -2
@@ -1,2 +1 @@
1
- import { DP } from "@duplojs/utils";
2
- export declare const unknownTransformer: (schema: DP.DataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
1
+ export declare const unknownTransformer: (schema: import("..").SupportedDataParsers, params: import("..").TransformerParams) => import("..").MaybeTransformerEither;
@@ -1,5 +1,5 @@
1
- import { type DP } from "@duplojs/utils";
2
- import { type MapContext } from "./create";
1
+ import type { DP } from "@duplojs/utils";
2
+ import type { MapContext, MapImportType } from "./create";
3
3
  export type TransformerHookAction = "stop" | "next";
4
4
  export interface TransformerHookOutput {
5
5
  schema: DP.DataParsers;
@@ -8,6 +8,7 @@ export interface TransformerHookOutput {
8
8
  export interface TransformerHookParams {
9
9
  schema: DP.DataParsers;
10
10
  context: MapContext;
11
+ importType: MapImportType;
11
12
  output(action: TransformerHookAction, schema: DP.DataParsers): TransformerHookOutput;
12
13
  }
13
14
  export type TransformerHook = (params: TransformerHookParams) => TransformerHookOutput;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var utils = require('@duplojs/utils');
4
+ var typescript = require('typescript');
5
+
6
+ function importTypesTransformer(importTypes) {
7
+ return utils.pipe(importTypes, utils.G.map(([path, types]) => typescript.factory.createImportDeclaration(undefined, typescript.factory.createImportClause(typescript.SyntaxKind.TypeKeyword, undefined, typescript.factory.createNamedImports(utils.A.map(types, (type) => typescript.factory.createImportSpecifier(false, undefined, typescript.factory.createIdentifier(type))))), typescript.factory.createStringLiteral(path), undefined)));
8
+ }
9
+
10
+ exports.importTypesTransformer = importTypesTransformer;
@@ -0,0 +1,2 @@
1
+ import type { MapImportType } from "./create";
2
+ export declare function importTypesTransformer(importTypes: MapImportType): Generator<import("typescript").ImportDeclaration, unknown, unknown>;
@@ -0,0 +1,8 @@
1
+ import { pipe, G, A } from '@duplojs/utils';
2
+ import { factory, SyntaxKind } from 'typescript';
3
+
4
+ function importTypesTransformer(importTypes) {
5
+ return pipe(importTypes, G.map(([path, types]) => factory.createImportDeclaration(undefined, factory.createImportClause(SyntaxKind.TypeKeyword, undefined, factory.createNamedImports(A.map(types, (type) => factory.createImportSpecifier(false, undefined, factory.createIdentifier(type))))), factory.createStringLiteral(path), undefined)));
6
+ }
7
+
8
+ export { importTypesTransformer };
@@ -4,10 +4,14 @@ 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
+ }
7
10
  const currentSchema = utils.A.reduce(params.hooks, utils.A.reduceFrom(schema), ({ element: hook, lastValue, next, exit }) => {
8
11
  const result = hook({
9
12
  schema: lastValue,
10
13
  context: params.context,
14
+ importType: params.importType,
11
15
  output: (action, schema) => ({
12
16
  schema,
13
17
  action,
@@ -41,6 +45,13 @@ function transformer(schema, params) {
41
45
  buildError() {
42
46
  return utils.E.left("buildDataParserError");
43
47
  },
48
+ importType: params.importType,
49
+ addImport(path, typeName) {
50
+ const types = params.importType.get(path) ?? [];
51
+ if (!utils.A.includes(types, typeName)) {
52
+ params.importType.set(path, utils.A.push(types, typeName));
53
+ }
54
+ },
44
55
  };
45
56
  const result = utils.A.reduce(params.transformers, utils.A.reduceFrom(utils.E.left("dataParserNotSupport", currentSchema)), ({ element: functionBuilder, lastValue, next, exit, }) => {
46
57
  const result = functionBuilder(currentSchema, functionParams);
@@ -1,11 +1,12 @@
1
1
  import { type DP } from "@duplojs/utils";
2
- import { type MapContext, type DataParserNotSupportedEither, type createTransformer, type TransformerMode, type DataParserErrorEither } from "./create";
3
- import { type TransformerHook } from "./hook";
2
+ import type { MapContext, DataParserNotSupportedEither, createTransformer, TransformerMode, DataParserErrorEither, MapImportType, SupportedDataParsers } from "./create";
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: DP.DataParser[];
9
+ readonly recursiveDataParsers: SupportedDataParsers[];
10
+ readonly importType: MapImportType;
10
11
  }
11
12
  export declare function transformer(schema: DP.DataParser, params: TransformerFunctionParams): import("./create").TransformerSuccessEither | DataParserNotSupportedEither | DataParserErrorEither;
@@ -1,11 +1,15 @@
1
- import { A, E, whenElse, justReturn, unwrap } from '@duplojs/utils';
1
+ import { E, A, whenElse, justReturn, unwrap } from '@duplojs/utils';
2
2
  import { factory, SyntaxKind } from 'typescript';
3
3
 
4
4
  function transformer(schema, params) {
5
+ if (schema.definition.overrideTypeNode?.[params.mode]) {
6
+ return E.right("buildSuccess", schema.definition.overrideTypeNode[params.mode]);
7
+ }
5
8
  const currentSchema = A.reduce(params.hooks, A.reduceFrom(schema), ({ element: hook, lastValue, next, exit }) => {
6
9
  const result = hook({
7
10
  schema: lastValue,
8
11
  context: params.context,
12
+ importType: params.importType,
9
13
  output: (action, schema) => ({
10
14
  schema,
11
15
  action,
@@ -39,6 +43,13 @@ function transformer(schema, params) {
39
43
  buildError() {
40
44
  return E.left("buildDataParserError");
41
45
  },
46
+ importType: params.importType,
47
+ addImport(path, typeName) {
48
+ const types = params.importType.get(path) ?? [];
49
+ if (!A.includes(types, typeName)) {
50
+ params.importType.set(path, A.push(types, typeName));
51
+ }
52
+ },
42
53
  };
43
54
  const result = A.reduce(params.transformers, A.reduceFrom(E.left("dataParserNotSupport", currentSchema)), ({ element: functionBuilder, lastValue, next, exit, }) => {
44
55
  const result = functionBuilder(currentSchema, functionParams);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duplojs/data-parser-tools",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "license": "MIT",
5
5
  "author": "duplojs",
6
6
  "contributors": [
@@ -71,7 +71,8 @@
71
71
  "vitest": "3.2.4"
72
72
  },
73
73
  "peerDependencies": {
74
- "@duplojs/utils": ">=1.4.36 <2.0.0"
74
+ "@duplojs/utils": ">=1.5.1 <2.0.0",
75
+ "@duplojs/server-utils": ">=0.1.4 < 1.0.0"
75
76
  },
76
77
  "dependencies": {
77
78
  "typescript": "5.9.2"