@duplojs/data-parser-tools 0.2.8 → 0.3.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.
@@ -2,16 +2,16 @@
2
2
 
3
3
  var dataParser = require('@duplojs/utils/dataParser');
4
4
 
5
- dataParser.dataParserInit.overrideHandler.setMethod("setIdentifier", (schema, identifier) => {
5
+ dataParser.dataParserBaseInit.overrideHandler.setMethod("setIdentifier", (schema, identifier) => {
6
6
  schema.definition.identifier = identifier;
7
7
  return schema;
8
8
  });
9
- dataParser.dataParserInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) => {
9
+ dataParser.dataParserBaseInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) => {
10
10
  const newSchema = schema.clone();
11
11
  newSchema.setIdentifier(identifier);
12
12
  return newSchema;
13
13
  });
14
- dataParser.dataParserInit.overrideHandler.setMethod("setOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
14
+ dataParser.dataParserBaseInit.overrideHandler.setMethod("setOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
15
15
  if (overrideTransformer) {
16
16
  schema.definition.overrideJsonSchemaTransformer = typeof overrideTransformer === "function"
17
17
  ? overrideTransformer
@@ -22,7 +22,7 @@ dataParser.dataParserInit.overrideHandler.setMethod("setOverrideJsonSchemaTransf
22
22
  }
23
23
  return schema;
24
24
  });
25
- dataParser.dataParserInit.overrideHandler.setMethod("addOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
25
+ dataParser.dataParserBaseInit.overrideHandler.setMethod("addOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
26
26
  const newSchema = schema.clone();
27
27
  newSchema.setOverrideJsonSchemaTransformer(overrideTransformer);
28
28
  return newSchema;
@@ -1,6 +1,6 @@
1
1
  import { type TransformerBuildFunction, type TransformerSuccess } from "./transformer/create";
2
2
  declare module "@duplojs/utils/dataParser" {
3
- interface DataParser {
3
+ interface DataParserBase {
4
4
  /**
5
5
  * @deprecated this method mutated the dataParser by adding an identifier
6
6
  */
@@ -1,15 +1,15 @@
1
- import { dataParserInit } from '@duplojs/utils/dataParser';
1
+ import { dataParserBaseInit } from '@duplojs/utils/dataParser';
2
2
 
3
- dataParserInit.overrideHandler.setMethod("setIdentifier", (schema, identifier) => {
3
+ dataParserBaseInit.overrideHandler.setMethod("setIdentifier", (schema, identifier) => {
4
4
  schema.definition.identifier = identifier;
5
5
  return schema;
6
6
  });
7
- dataParserInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) => {
7
+ dataParserBaseInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) => {
8
8
  const newSchema = schema.clone();
9
9
  newSchema.setIdentifier(identifier);
10
10
  return newSchema;
11
11
  });
12
- dataParserInit.overrideHandler.setMethod("setOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
12
+ dataParserBaseInit.overrideHandler.setMethod("setOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
13
13
  if (overrideTransformer) {
14
14
  schema.definition.overrideJsonSchemaTransformer = typeof overrideTransformer === "function"
15
15
  ? overrideTransformer
@@ -20,7 +20,7 @@ dataParserInit.overrideHandler.setMethod("setOverrideJsonSchemaTransformer", (sc
20
20
  }
21
21
  return schema;
22
22
  });
23
- dataParserInit.overrideHandler.setMethod("addOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
23
+ dataParserBaseInit.overrideHandler.setMethod("addOverrideJsonSchemaTransformer", (schema, overrideTransformer) => {
24
24
  const newSchema = schema.clone();
25
25
  newSchema.setOverrideJsonSchemaTransformer(overrideTransformer);
26
26
  return newSchema;
@@ -3,7 +3,7 @@
3
3
  var utils = require('@duplojs/utils');
4
4
  var create = require('../create.cjs');
5
5
 
6
- const recordTransformer = create.createTransformer(utils.DP.recordKind.has, ({ definition: { key, value, requireKey } }, { transformer, success, }) => {
6
+ const recordTransformer = create.createTransformer(utils.DP.recordKind.has, ({ definition: { key, value, baseData } }, { transformer, success, }) => {
7
7
  const keyResult = transformer(key);
8
8
  if (utils.E.isLeft(keyResult)) {
9
9
  return keyResult;
@@ -14,7 +14,8 @@ const recordTransformer = create.createTransformer(utils.DP.recordKind.has, ({ d
14
14
  }
15
15
  const keySchema = utils.unwrap(keyResult).schema;
16
16
  const valueSchema = utils.unwrap(valueResult).schema;
17
- if (requireKey) {
17
+ const requireKey = utils.O.keys(baseData);
18
+ if (utils.A.minElements(requireKey, 1)) {
18
19
  const properties = utils.A.reduce(requireKey, utils.A.reduceFrom({}), ({ element, lastValue, nextWithObject }) => nextWithObject(lastValue, { [element]: valueSchema }));
19
20
  return success({
20
21
  type: "object",
@@ -23,7 +24,6 @@ const recordTransformer = create.createTransformer(utils.DP.recordKind.has, ({ d
23
24
  additionalProperties: false,
24
25
  propertyNames: { enum: requireKey },
25
26
  minProperties: requireKey.length,
26
- maxProperties: requireKey.length,
27
27
  });
28
28
  }
29
29
  return success({
@@ -1,7 +1,7 @@
1
- import { DP, E, unwrap, A } from '@duplojs/utils';
1
+ import { DP, E, unwrap, O, A } from '@duplojs/utils';
2
2
  import { createTransformer } from '../create.mjs';
3
3
 
4
- const recordTransformer = createTransformer(DP.recordKind.has, ({ definition: { key, value, requireKey } }, { transformer, success, }) => {
4
+ const recordTransformer = createTransformer(DP.recordKind.has, ({ definition: { key, value, baseData } }, { transformer, success, }) => {
5
5
  const keyResult = transformer(key);
6
6
  if (E.isLeft(keyResult)) {
7
7
  return keyResult;
@@ -12,7 +12,8 @@ const recordTransformer = createTransformer(DP.recordKind.has, ({ definition: {
12
12
  }
13
13
  const keySchema = unwrap(keyResult).schema;
14
14
  const valueSchema = unwrap(valueResult).schema;
15
- if (requireKey) {
15
+ const requireKey = O.keys(baseData);
16
+ if (A.minElements(requireKey, 1)) {
16
17
  const properties = A.reduce(requireKey, A.reduceFrom({}), ({ element, lastValue, nextWithObject }) => nextWithObject(lastValue, { [element]: valueSchema }));
17
18
  return success({
18
19
  type: "object",
@@ -21,7 +22,6 @@ const recordTransformer = createTransformer(DP.recordKind.has, ({ definition: {
21
22
  additionalProperties: false,
22
23
  propertyNames: { enum: requireKey },
23
24
  minProperties: requireKey.length,
24
- maxProperties: requireKey.length,
25
25
  });
26
26
  }
27
27
  return success({
@@ -7,11 +7,11 @@ const stringTransformer = create.createTransformer(utils.DP.stringKind.has, (sch
7
7
  const definition = utils.A.reduce(schema.definition.checkers, utils.A.reduceFrom({ type: "string" }), ({ element: checker, lastValue, nextWithObject, next }) => utils.P.match(checker)
8
8
  .when(utils.DP.checkerStringMinKind.has, ({ definition }) => nextWithObject(lastValue, { minLength: definition.min }))
9
9
  .when(utils.DP.checkerStringMaxKind.has, ({ definition }) => nextWithObject(lastValue, { maxLength: definition.max }))
10
- .when(utils.DP.checkerStringRegexKind.has, ({ definition }) => nextWithObject(lastValue, { pattern: definition.regex.source }))
10
+ .when(utils.DP.checkerRegexKind.has, ({ definition }) => nextWithObject(lastValue, { pattern: definition.regex.source }))
11
11
  .when(utils.DP.checkerUrlKind.has, () => nextWithObject(lastValue, { format: "uri" }))
12
12
  .when(utils.DP.checkerEmailKind.has, ({ definition }) => nextWithObject(lastValue, {
13
13
  format: "email",
14
- pattern: lastValue.pattern ?? definition.pattern.source,
14
+ pattern: lastValue.pattern ?? definition.regex.source,
15
15
  }))
16
16
  .otherwise(() => next(lastValue)));
17
17
  if (schema.definition.coerce && mode === "in") {
@@ -5,11 +5,11 @@ const stringTransformer = createTransformer(DP.stringKind.has, (schema, { succes
5
5
  const definition = A.reduce(schema.definition.checkers, A.reduceFrom({ type: "string" }), ({ element: checker, lastValue, nextWithObject, next }) => P.match(checker)
6
6
  .when(DP.checkerStringMinKind.has, ({ definition }) => nextWithObject(lastValue, { minLength: definition.min }))
7
7
  .when(DP.checkerStringMaxKind.has, ({ definition }) => nextWithObject(lastValue, { maxLength: definition.max }))
8
- .when(DP.checkerStringRegexKind.has, ({ definition }) => nextWithObject(lastValue, { pattern: definition.regex.source }))
8
+ .when(DP.checkerRegexKind.has, ({ definition }) => nextWithObject(lastValue, { pattern: definition.regex.source }))
9
9
  .when(DP.checkerUrlKind.has, () => nextWithObject(lastValue, { format: "uri" }))
10
10
  .when(DP.checkerEmailKind.has, ({ definition }) => nextWithObject(lastValue, {
11
11
  format: "email",
12
- pattern: lastValue.pattern ?? definition.pattern.source,
12
+ pattern: lastValue.pattern ?? definition.regex.source,
13
13
  }))
14
14
  .otherwise(() => next(lastValue)));
15
15
  if (schema.definition.coerce && mode === "in") {
@@ -5,7 +5,7 @@ var create = require('../create.cjs');
5
5
 
6
6
  const templateLiteralTransformer = create.createTransformer(utils.DP.templateLiteralKind.has, (schema, { success, transformer, }) => {
7
7
  const result = utils.DP.findRecordRequiredKeyOnTemplateLiteralPart(schema.definition.template);
8
- if (result) {
8
+ if (utils.A.minElements(result, 1)) {
9
9
  return transformer(utils.DP.literal(result));
10
10
  }
11
11
  return success({
@@ -1,9 +1,9 @@
1
- import { DP } from '@duplojs/utils';
1
+ import { DP, A } from '@duplojs/utils';
2
2
  import { createTransformer } from '../create.mjs';
3
3
 
4
4
  const templateLiteralTransformer = createTransformer(DP.templateLiteralKind.has, (schema, { success, transformer, }) => {
5
5
  const result = DP.findRecordRequiredKeyOnTemplateLiteralPart(schema.definition.template);
6
- if (result) {
6
+ if (A.minElements(result, 1)) {
7
7
  return transformer(DP.literal(result));
8
8
  }
9
9
  return success({
@@ -36,14 +36,18 @@ function transformer(schema, params) {
36
36
  isOptional: currentDeclaration.isOptional,
37
37
  });
38
38
  }
39
- const currentIdentifier = utils.whenElse(params.recursiveDataParsers, utils.A.includes(currentSchema), () => {
39
+ const currentIdentifier = utils.justExec(() => {
40
+ if (!utils.A.includes(params.recursiveDataParsers, currentSchema)
41
+ && !currentSchema.definition.identifier) {
42
+ return undefined;
43
+ }
40
44
  const identifier = currentSchema.definition.identifier ?? `RecursiveType${params.context.size}`;
41
45
  params.context.set(currentSchema, {
42
46
  name: identifier,
43
47
  isOptional: false,
44
48
  });
45
49
  return identifier;
46
- }, utils.justReturn(currentSchema.definition.identifier));
50
+ });
47
51
  const functionParams = {
48
52
  success(result, isOptional = false) {
49
53
  return utils.E.right("buildSuccess", {
@@ -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
 
3
3
  function buildRef(name, version) {
4
4
  if (version === "openApi3"
@@ -34,14 +34,18 @@ function transformer(schema, params) {
34
34
  isOptional: currentDeclaration.isOptional,
35
35
  });
36
36
  }
37
- const currentIdentifier = whenElse(params.recursiveDataParsers, A.includes(currentSchema), () => {
37
+ const currentIdentifier = justExec(() => {
38
+ if (!A.includes(params.recursiveDataParsers, currentSchema)
39
+ && !currentSchema.definition.identifier) {
40
+ return undefined;
41
+ }
38
42
  const identifier = currentSchema.definition.identifier ?? `RecursiveType${params.context.size}`;
39
43
  params.context.set(currentSchema, {
40
44
  name: identifier,
41
45
  isOptional: false,
42
46
  });
43
47
  return identifier;
44
- }, justReturn(currentSchema.definition.identifier));
48
+ });
45
49
  const functionParams = {
46
50
  success(result, isOptional = false) {
47
51
  return E.right("buildSuccess", {
@@ -2,16 +2,16 @@
2
2
 
3
3
  var dataParser = require('@duplojs/utils/dataParser');
4
4
 
5
- dataParser.dataParserInit.overrideHandler.setMethod("setIdentifier", (schema, identifier) => {
5
+ dataParser.dataParserBaseInit.overrideHandler.setMethod("setIdentifier", (schema, identifier) => {
6
6
  schema.definition.identifier = identifier;
7
7
  return schema;
8
8
  });
9
- dataParser.dataParserInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) => {
9
+ dataParser.dataParserBaseInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) => {
10
10
  const newSchema = schema.clone();
11
11
  newSchema.setIdentifier(identifier);
12
12
  return newSchema;
13
13
  });
14
- dataParser.dataParserInit.overrideHandler.setMethod("setOverrideTypescriptTransformer", (schema, overrideTransformer) => {
14
+ dataParser.dataParserBaseInit.overrideHandler.setMethod("setOverrideTypescriptTransformer", (schema, overrideTransformer) => {
15
15
  if (overrideTransformer) {
16
16
  schema.definition.overrideTypescriptTransformer = typeof overrideTransformer === "function"
17
17
  ? overrideTransformer
@@ -22,7 +22,7 @@ dataParser.dataParserInit.overrideHandler.setMethod("setOverrideTypescriptTransf
22
22
  }
23
23
  return schema;
24
24
  });
25
- dataParser.dataParserInit.overrideHandler.setMethod("addOverrideTypescriptTransformer", (schema, overrideTypeNode) => {
25
+ dataParser.dataParserBaseInit.overrideHandler.setMethod("addOverrideTypescriptTransformer", (schema, overrideTypeNode) => {
26
26
  const newSchema = schema.clone();
27
27
  newSchema.setOverrideTypescriptTransformer(overrideTypeNode);
28
28
  return newSchema;
@@ -1,7 +1,7 @@
1
1
  import { type TypeNode } from "typescript";
2
2
  import { type TransformerBuildFunction } from "./transformer";
3
3
  declare module "@duplojs/utils/dataParser" {
4
- interface DataParser {
4
+ interface DataParserBase {
5
5
  /**
6
6
  * @deprecated this method mutated the dataParser by adding an identifier
7
7
  */
@@ -1,15 +1,15 @@
1
- import { dataParserInit } from '@duplojs/utils/dataParser';
1
+ import { dataParserBaseInit } from '@duplojs/utils/dataParser';
2
2
 
3
- dataParserInit.overrideHandler.setMethod("setIdentifier", (schema, identifier) => {
3
+ dataParserBaseInit.overrideHandler.setMethod("setIdentifier", (schema, identifier) => {
4
4
  schema.definition.identifier = identifier;
5
5
  return schema;
6
6
  });
7
- dataParserInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) => {
7
+ dataParserBaseInit.overrideHandler.setMethod("addIdentifier", (schema, identifier) => {
8
8
  const newSchema = schema.clone();
9
9
  newSchema.setIdentifier(identifier);
10
10
  return newSchema;
11
11
  });
12
- dataParserInit.overrideHandler.setMethod("setOverrideTypescriptTransformer", (schema, overrideTransformer) => {
12
+ dataParserBaseInit.overrideHandler.setMethod("setOverrideTypescriptTransformer", (schema, overrideTransformer) => {
13
13
  if (overrideTransformer) {
14
14
  schema.definition.overrideTypescriptTransformer = typeof overrideTransformer === "function"
15
15
  ? overrideTransformer
@@ -20,7 +20,7 @@ dataParserInit.overrideHandler.setMethod("setOverrideTypescriptTransformer", (sc
20
20
  }
21
21
  return schema;
22
22
  });
23
- dataParserInit.overrideHandler.setMethod("addOverrideTypescriptTransformer", (schema, overrideTypeNode) => {
23
+ dataParserBaseInit.overrideHandler.setMethod("addOverrideTypescriptTransformer", (schema, overrideTypeNode) => {
24
24
  const newSchema = schema.clone();
25
25
  newSchema.setOverrideTypescriptTransformer(overrideTypeNode);
26
26
  return newSchema;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duplojs/data-parser-tools",
3
- "version": "0.2.8",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
5
  "author": "duplojs",
6
6
  "contributors": [
@@ -71,8 +71,8 @@
71
71
  "vitest": "3.2.4"
72
72
  },
73
73
  "peerDependencies": {
74
- "@duplojs/utils": ">=1.5.6 <2.0.0",
75
- "@duplojs/server-utils": ">=0.1.4 < 1.0.0"
74
+ "@duplojs/utils": ">=1.8.1 <2.0.0",
75
+ "@duplojs/server-utils": ">=0.3.0 < 1.0.0"
76
76
  },
77
77
  "dependencies": {
78
78
  "typescript": "5.9.2"