hekireki 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 (84) hide show
  1. package/README.md +20 -6
  2. package/dist/generator/ecto/generator/ecto.js +61 -25
  3. package/dist/generator/mermaid-er/generator/er-content.d.ts +8 -2
  4. package/dist/generator/mermaid-er/generator/er-content.js +8 -6
  5. package/dist/generator/mermaid-er/generator/index.d.ts +1 -1
  6. package/dist/generator/mermaid-er/generator/index.js +1 -1
  7. package/dist/generator/mermaid-er/generator/model-fields.d.ts +4 -3
  8. package/dist/generator/mermaid-er/generator/model-fields.js +4 -3
  9. package/dist/generator/mermaid-er/generator/model-info.d.ts +6 -5
  10. package/dist/generator/mermaid-er/generator/model-info.js +4 -3
  11. package/dist/generator/mermaid-er/generator/relation-line.d.ts +11 -5
  12. package/dist/generator/mermaid-er/generator/relation-line.js +5 -4
  13. package/dist/generator/mermaid-er/helper/build-relation-line.d.ts +9 -0
  14. package/dist/generator/mermaid-er/{relationship → helper}/build-relation-line.js +9 -1
  15. package/dist/generator/mermaid-er/helper/extract-relations.d.ts +8 -0
  16. package/dist/generator/mermaid-er/{validator → helper}/extract-relations.js +5 -5
  17. package/dist/generator/mermaid-er/index.js +1 -1
  18. package/dist/generator/mermaid-er/utils/index.d.ts +34 -0
  19. package/dist/generator/mermaid-er/utils/index.js +48 -0
  20. package/dist/generator/valibot/generator/index.d.ts +0 -2
  21. package/dist/generator/valibot/generator/index.js +0 -2
  22. package/dist/generator/valibot/generator/schemas.js +1 -1
  23. package/dist/generator/valibot/generator/valibot.d.ts +2 -2
  24. package/dist/generator/valibot/generator/valibot.js +4 -12
  25. package/dist/generator/valibot/index.js +1 -1
  26. package/dist/generator/valibot/utils/index.d.ts +42 -0
  27. package/dist/generator/valibot/utils/index.js +61 -0
  28. package/dist/generator/zod/generator/index.d.ts +1 -3
  29. package/dist/generator/zod/generator/index.js +1 -3
  30. package/dist/generator/zod/generator/schemas.js +2 -1
  31. package/dist/generator/zod/generator/zod.d.ts +2 -2
  32. package/dist/generator/zod/generator/zod.js +8 -16
  33. package/dist/generator/zod/index.js +1 -1
  34. package/dist/generator/zod/utils/index.d.ts +42 -0
  35. package/dist/generator/zod/utils/index.js +61 -0
  36. package/dist/shared/utils/index.d.ts +52 -3
  37. package/dist/shared/utils/index.js +42 -3
  38. package/package.json +6 -6
  39. package/dist/generator/mermaid-er/relationship/build-relation-line.d.ts +0 -9
  40. package/dist/generator/mermaid-er/types.d.ts +0 -10
  41. package/dist/generator/mermaid-er/types.js +0 -1
  42. package/dist/generator/mermaid-er/validator/exclude-many-to-one-relations.d.ts +0 -7
  43. package/dist/generator/mermaid-er/validator/exclude-many-to-one-relations.js +0 -9
  44. package/dist/generator/mermaid-er/validator/extract-relations.d.ts +0 -7
  45. package/dist/generator/mermaid-er/validator/index.d.ts +0 -5
  46. package/dist/generator/mermaid-er/validator/index.js +0 -5
  47. package/dist/generator/mermaid-er/validator/is-relationship.d.ts +0 -7
  48. package/dist/generator/mermaid-er/validator/is-relationship.js +0 -8
  49. package/dist/generator/mermaid-er/validator/parse-relation.d.ts +0 -8
  50. package/dist/generator/mermaid-er/validator/parse-relation.js +0 -21
  51. package/dist/generator/mermaid-er/validator/remove-duplicate-relations.d.ts +0 -6
  52. package/dist/generator/mermaid-er/validator/remove-duplicate-relations.js +0 -8
  53. package/dist/generator/valibot/generator/infer-input.d.ts +0 -7
  54. package/dist/generator/valibot/generator/infer-input.js +0 -9
  55. package/dist/generator/valibot/generator/properties.d.ts +0 -7
  56. package/dist/generator/valibot/generator/properties.js +0 -15
  57. package/dist/generator/valibot/validator/index.d.ts +0 -2
  58. package/dist/generator/valibot/validator/index.js +0 -2
  59. package/dist/generator/valibot/validator/is-valibot-document.d.ts +0 -1
  60. package/dist/generator/valibot/validator/is-valibot-document.js +0 -10
  61. package/dist/generator/valibot/validator/is-valibot.d.ts +0 -6
  62. package/dist/generator/valibot/validator/is-valibot.js +0 -11
  63. package/dist/generator/zod/generator/infer.d.ts +0 -7
  64. package/dist/generator/zod/generator/infer.js +0 -9
  65. package/dist/generator/zod/generator/properties.d.ts +0 -13
  66. package/dist/generator/zod/generator/properties.js +0 -21
  67. package/dist/generator/zod/validator/index.d.ts +0 -2
  68. package/dist/generator/zod/validator/index.js +0 -2
  69. package/dist/generator/zod/validator/is-zod-document.d.ts +0 -6
  70. package/dist/generator/zod/validator/is-zod-document.js +0 -15
  71. package/dist/generator/zod/validator/is-zod.d.ts +0 -6
  72. package/dist/generator/zod/validator/is-zod.js +0 -11
  73. package/dist/shared/helper/group-by-model.d.ts +0 -8
  74. package/dist/shared/helper/group-by-model.js +0 -15
  75. package/dist/shared/types.d.ts +0 -16
  76. package/dist/shared/types.js +0 -1
  77. package/dist/shared/utils/capitalize.d.ts +0 -16
  78. package/dist/shared/utils/capitalize.js +0 -18
  79. package/dist/shared/utils/decapitalize.d.ts +0 -15
  80. package/dist/shared/utils/decapitalize.js +0 -17
  81. package/dist/shared/utils/snake-case.d.ts +0 -1
  82. package/dist/shared/utils/snake-case.js +0 -3
  83. package/dist/shared/validator/is-fields.d.ts +0 -12
  84. package/dist/shared/validator/is-fields.js +0 -8
@@ -1,5 +1,3 @@
1
- export { infer } from './infer.js';
2
- export { schemas } from './schemas.js';
3
- export { properties } from './properties.js';
4
1
  export { schema } from './schema.js';
2
+ export { schemas } from './schemas.js';
5
3
  export { zod } from './zod.js';
@@ -1,5 +1,3 @@
1
- export { infer } from './infer.js';
2
- export { schemas } from './schemas.js';
3
- export { properties } from './properties.js';
4
1
  export { schema } from './schema.js';
2
+ export { schemas } from './schemas.js';
5
3
  export { zod } from './zod.js';
@@ -1,4 +1,5 @@
1
- import { properties, schema } from './index.js';
1
+ import { properties } from '../utils/index.js';
2
+ import { schema } from './index.js';
2
3
  /**
3
4
  * Generate Zod schemas
4
5
  * @param modelFields - The fields of the model
@@ -1,4 +1,4 @@
1
- import type { Model } from '../../../shared/types.js';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
2
  /**
3
3
  * Generate Zod schemas and types
4
4
  * @param models - The models to generate the Zod schemas and types for
@@ -6,4 +6,4 @@ import type { Model } from '../../../shared/types.js';
6
6
  * @param comment - Whether to include comments in the generated code
7
7
  * @returns The generated Zod schemas and types
8
8
  */
9
- export declare function zod(models: readonly Model[], type: boolean, comment: boolean, zodVersion?: string | string[]): string;
9
+ export declare function zod(models: readonly Readonly<DMMF.Model>[], type: boolean, comment: boolean, zodVersion?: string | string[]): string;
@@ -1,10 +1,6 @@
1
- import { isZod, isZodDocument } from '../validator/index.js';
2
- import { isFields } from '../../../shared/validator/is-fields.js';
3
- import { groupByModel } from '../../../shared/helper/group-by-model.js';
4
- import { infer, schemas } from './index.js';
5
- const ZODV4_IMPORT = `import { z } from 'zod/v4'\n`;
6
- const ZODV4_MINI_IMPORT = `import { z } from 'zod/v4-mini'\n`;
7
- const ZOD_OPENAPI_HONO_IMPORT = `import { z } from '@hono/zod-openapi'\n`;
1
+ import { groupByModel, isFields } from '../../../shared/utils/index.js';
2
+ import { infer, isZod, isZodDocument } from '../utils/index.js';
3
+ import { schemas } from './schemas.js';
8
4
  /**
9
5
  * Generate Zod schemas and types
10
6
  * @param models - The models to generate the Zod schemas and types for
@@ -30,21 +26,17 @@ export function zod(models, type, comment, zodVersion) {
30
26
  }));
31
27
  return fields;
32
28
  });
33
- // null exclude
34
- const validFields = isFields(modelFields);
35
- // group by model
36
- const groupedByModel = groupByModel(validFields);
37
- const zods = Object.values(groupedByModel).map((fields) => {
29
+ const zods = Object.values(groupByModel(isFields(modelFields))).map((fields) => {
38
30
  return {
39
31
  generateZodSchema: schemas(fields, comment),
40
32
  generateZodInfer: type ? infer(fields[0].modelName) : '',
41
33
  };
42
34
  });
43
- const importStatement = zodVersion === 'v4-mini'
44
- ? ZODV4_MINI_IMPORT
35
+ const importStatement = zodVersion === 'mini'
36
+ ? `import * as z from 'zod/mini'`
45
37
  : zodVersion === '@hono/zod-openapi'
46
- ? ZOD_OPENAPI_HONO_IMPORT
47
- : ZODV4_IMPORT;
38
+ ? `import { z } from '@hono/zod-openapi'`
39
+ : `import * as z from 'zod'`;
48
40
  return [
49
41
  importStatement,
50
42
  '',
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { zod } from './generator/zod.js';
3
2
  import fsp from 'node:fs/promises';
4
3
  import pkg from '@prisma/generator-helper';
5
4
  import { fmt } from '../../shared/format/index.js';
5
+ import { zod } from './generator/zod.js';
6
6
  const { generatorHandler } = pkg;
7
7
  export async function main(options) {
8
8
  const output = options.generator.output?.value ?? './zod';
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Generates a `z.infer` type for the specified model.
3
+ *
4
+ * @param modelName - The name of the model.
5
+ * @returns The generated TypeScript type definition line using Zod.
6
+ */
7
+ export declare function infer(modelName: string): string;
8
+ /**
9
+ * Generates Zod property definitions from model fields.
10
+ *
11
+ * Filters out fields without validation, removes documentation lines
12
+ * that include @relation, @v, or @z, and optionally includes doc comments.
13
+ *
14
+ * @param modelFields - The list of model fields with documentation and validation info.
15
+ * @param comment - Whether to include JSDoc comments for each field.
16
+ * @returns A string containing formatted Zod property definitions.
17
+ */
18
+ export declare function properties(modelFields: {
19
+ documentation: string;
20
+ modelName: string;
21
+ fieldName: string;
22
+ validation: string | null;
23
+ comment: string[];
24
+ }[], comment: boolean): string;
25
+ /**
26
+ * Parses documentation and removes Zod validation lines.
27
+ *
28
+ * Lines containing "@z." are excluded from the result.
29
+ *
30
+ * @param documentation - The documentation string to parse.
31
+ * @returns An array of non-Zod documentation lines.
32
+ */
33
+ export declare function isZodDocument(documentation?: string): string[];
34
+ /**
35
+ * Extracts the Zod validation expression from documentation.
36
+ *
37
+ * Searches for a line starting with "@z." and returns the expression part.
38
+ *
39
+ * @param documentation - The documentation string to parse.
40
+ * @returns The Zod validation string without the "@z." prefix, or null if not found.
41
+ */
42
+ export declare function isZod(documentation?: string): string | null;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Generates a `z.infer` type for the specified model.
3
+ *
4
+ * @param modelName - The name of the model.
5
+ * @returns The generated TypeScript type definition line using Zod.
6
+ */
7
+ export function infer(modelName) {
8
+ return `export type ${modelName} = z.infer<typeof ${modelName}Schema>`;
9
+ }
10
+ /**
11
+ * Generates Zod property definitions from model fields.
12
+ *
13
+ * Filters out fields without validation, removes documentation lines
14
+ * that include @relation, @v, or @z, and optionally includes doc comments.
15
+ *
16
+ * @param modelFields - The list of model fields with documentation and validation info.
17
+ * @param comment - Whether to include JSDoc comments for each field.
18
+ * @returns A string containing formatted Zod property definitions.
19
+ */
20
+ export function properties(modelFields, comment) {
21
+ const fields = modelFields
22
+ .filter((field) => field.validation)
23
+ .map((field) => {
24
+ const cleanDoc = field.comment
25
+ .filter((line) => !(line.includes('@relation') || line.includes('@v') || line.includes('@z')))
26
+ .join('\n')
27
+ .trim();
28
+ const docComment = comment && cleanDoc ? ` /**\n * ${cleanDoc}\n */\n` : '';
29
+ return `${docComment} ${field.fieldName}: z.${field.validation}`;
30
+ })
31
+ .join(',\n');
32
+ return fields;
33
+ }
34
+ /**
35
+ * Parses documentation and removes Zod validation lines.
36
+ *
37
+ * Lines containing "@z." are excluded from the result.
38
+ *
39
+ * @param documentation - The documentation string to parse.
40
+ * @returns An array of non-Zod documentation lines.
41
+ */
42
+ export function isZodDocument(documentation) {
43
+ return (documentation
44
+ ?.split('\n')
45
+ .map((line) => line.trim())
46
+ .filter((line) => line && !line.includes('@z.')) ?? []);
47
+ }
48
+ /**
49
+ * Extracts the Zod validation expression from documentation.
50
+ *
51
+ * Searches for a line starting with "@z." and returns the expression part.
52
+ *
53
+ * @param documentation - The documentation string to parse.
54
+ * @returns The Zod validation string without the "@z." prefix, or null if not found.
55
+ */
56
+ export function isZod(documentation) {
57
+ if (!documentation)
58
+ return null;
59
+ const match = documentation.match(/@z\.(.+?)(?:\n|$)/);
60
+ return match ? match[1].trim() : null;
61
+ }
@@ -1,3 +1,52 @@
1
- export { capitalize } from './capitalize.js';
2
- export { decapitalize } from './decapitalize.js';
3
- export { snakeCase } from './snake-case.js';
1
+ /**
2
+ * Capitalize the first letter of a string.
3
+ *
4
+ * @param str - The input string.
5
+ * @returns A new string with the first letter capitalized.
6
+ */
7
+ export declare function capitalize(str: string): string;
8
+ /**
9
+ * Convert a camelCase or PascalCase string to snake_case.
10
+ *
11
+ * @param name - The input string in camelCase or PascalCase.
12
+ * @returns The converted string in snake_case.
13
+ */
14
+ export declare function snakeCase(name: string): string;
15
+ /**
16
+ * Group valid fields by their model name.
17
+ *
18
+ * @param validFields - An array of field objects with validation metadata.
19
+ * @returns An object mapping each model name to its corresponding array of fields.
20
+ */
21
+ export declare function groupByModel(validFields: Required<{
22
+ documentation: string;
23
+ modelName: string;
24
+ fieldName: string;
25
+ comment: string[];
26
+ validation: string | null;
27
+ }>[]): Record<string, {
28
+ documentation: string;
29
+ modelName: string;
30
+ fieldName: string;
31
+ comment: string[];
32
+ validation: string | null;
33
+ }[]>;
34
+ /**
35
+ * Extract fields with validation from a nested array of model fields.
36
+ *
37
+ * @param modelFields - A nested array of model field definitions.
38
+ * @returns A flat array of fields that include a non-null `validation` property.
39
+ */
40
+ export declare function isFields(modelFields: {
41
+ documentation: string | undefined;
42
+ modelName: string;
43
+ fieldName: string;
44
+ comment: string[];
45
+ validation: string | null;
46
+ }[][]): Required<{
47
+ documentation: string;
48
+ modelName: string;
49
+ fieldName: string;
50
+ comment: string[];
51
+ validation: string | null;
52
+ }>[];
@@ -1,3 +1,42 @@
1
- export { capitalize } from './capitalize.js';
2
- export { decapitalize } from './decapitalize.js';
3
- export { snakeCase } from './snake-case.js';
1
+ /**
2
+ * Capitalize the first letter of a string.
3
+ *
4
+ * @param str - The input string.
5
+ * @returns A new string with the first letter capitalized.
6
+ */
7
+ export function capitalize(str) {
8
+ return `${str.charAt(0).toUpperCase()}${str.slice(1)}`;
9
+ }
10
+ /**
11
+ * Convert a camelCase or PascalCase string to snake_case.
12
+ *
13
+ * @param name - The input string in camelCase or PascalCase.
14
+ * @returns The converted string in snake_case.
15
+ */
16
+ export function snakeCase(name) {
17
+ return `${name.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase()}`;
18
+ }
19
+ /**
20
+ * Group valid fields by their model name.
21
+ *
22
+ * @param validFields - An array of field objects with validation metadata.
23
+ * @returns An object mapping each model name to its corresponding array of fields.
24
+ */
25
+ export function groupByModel(validFields) {
26
+ return validFields.reduce((acc, field) => {
27
+ if (!acc[field.modelName]) {
28
+ acc[field.modelName] = [];
29
+ }
30
+ acc[field.modelName].push(field);
31
+ return acc;
32
+ }, {});
33
+ }
34
+ /**
35
+ * Extract fields with validation from a nested array of model fields.
36
+ *
37
+ * @param modelFields - A nested array of model field definitions.
38
+ * @returns A flat array of fields that include a non-null `validation` property.
39
+ */
40
+ export function isFields(modelFields) {
41
+ return modelFields.flat().filter((field) => field.validation !== null);
42
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hekireki",
3
3
  "type": "module",
4
- "version": "0.2.6",
4
+ "version": "0.2.8",
5
5
  "license": "MIT",
6
6
  "description": "Hekireki is a tool that generates validation schemas for Zod and Valibot, as well as ER diagrams, from Prisma schemas annotated with comments.",
7
7
  "keywords": [
@@ -42,6 +42,10 @@
42
42
  "coverage": "vitest run --coverage",
43
43
  "release": "npm pkg fix && pnpm build && npm publish"
44
44
  },
45
+ "dependencies": {
46
+ "@prisma/generator-helper": "^6.10.1",
47
+ "prettier": "^3.6.2"
48
+ },
45
49
  "devDependencies": {
46
50
  "@prisma/client": "^6.10.1",
47
51
  "@types/node": "^22.15.34",
@@ -50,10 +54,6 @@
50
54
  "tsx": "^4.20.3",
51
55
  "valibot": "1.1.0",
52
56
  "vitest": "^3.2.4",
53
- "zod": "^3.25.76"
54
- },
55
- "dependencies": {
56
- "@prisma/generator-helper": "^6.10.1",
57
- "prettier": "^3.6.2"
57
+ "zod": "^4.0.5"
58
58
  }
59
59
  }
@@ -1,9 +0,0 @@
1
- declare const RELATIONSHIPS: {
2
- readonly 'zero-one': "|o";
3
- readonly one: "||";
4
- readonly 'zero-many': "}o";
5
- readonly many: "}|";
6
- };
7
- export type Relationship = keyof typeof RELATIONSHIPS;
8
- export declare function buildRelationLine(input: string): string;
9
- export {};
@@ -1,10 +0,0 @@
1
- import type { DMMF } from '@prisma/generator-helper';
2
- export type Relation = {
3
- fromModel: string;
4
- toModel: string;
5
- fromField: string;
6
- toField: string;
7
- type: string;
8
- };
9
- export type Model = Readonly<DMMF.Model>;
10
- export type ERContent = readonly string[];
@@ -1 +0,0 @@
1
- export {};
@@ -1,7 +0,0 @@
1
- /**
2
- * exclude many-to-one relations
3
- * @function excludeManyToOneRelations
4
- * @param relations
5
- * @returns
6
- */
7
- export declare function excludeManyToOneRelations(relations: readonly string[]): readonly string[];
@@ -1,9 +0,0 @@
1
- /**
2
- * exclude many-to-one relations
3
- * @function excludeManyToOneRelations
4
- * @param relations
5
- * @returns
6
- */
7
- export function excludeManyToOneRelations(relations) {
8
- return [...new Set(relations)].filter((r) => !r.includes('many-to-one'));
9
- }
@@ -1,7 +0,0 @@
1
- import type { Model } from '../types.js';
2
- /**
3
- * extract relations from model
4
- * @param { Model } model
5
- * @returns { readonly string[] }
6
- */
7
- export declare function extractRelations(model: Model): readonly string[];
@@ -1,5 +0,0 @@
1
- export { excludeManyToOneRelations } from './exclude-many-to-one-relations.js';
2
- export { extractRelations } from './extract-relations.js';
3
- export { isRelationship } from './is-relationship.js';
4
- export { parseRelation } from './parse-relation.js';
5
- export { removeDuplicateRelations } from './remove-duplicate-relations.js';
@@ -1,5 +0,0 @@
1
- export { excludeManyToOneRelations } from './exclude-many-to-one-relations.js';
2
- export { extractRelations } from './extract-relations.js';
3
- export { isRelationship } from './is-relationship.js';
4
- export { parseRelation } from './parse-relation.js';
5
- export { removeDuplicateRelations } from './remove-duplicate-relations.js';
@@ -1,7 +0,0 @@
1
- import type { Relationship } from '../relationship/build-relation-line.js';
2
- /**
3
- * isRelationship
4
- * @param { string } key
5
- * @returns { key is Relationship }
6
- */
7
- export declare function isRelationship(key: string): key is Relationship;
@@ -1,8 +0,0 @@
1
- /**
2
- * isRelationship
3
- * @param { string } key
4
- * @returns { key is Relationship }
5
- */
6
- export function isRelationship(key) {
7
- return ['zero-one', 'one', 'zero-many', 'many'].includes(key);
8
- }
@@ -1,8 +0,0 @@
1
- import type { Relation } from '../types.js';
2
- /**
3
- * parse relation
4
- * @function parseRelation
5
- * @param line
6
- * @returns
7
- */
8
- export declare function parseRelation(line: string): Relation | null;
@@ -1,21 +0,0 @@
1
- /**
2
- * parse relation
3
- * @function parseRelation
4
- * @param line
5
- * @returns
6
- */
7
- export function parseRelation(line) {
8
- const relationRegex = /^@relation\s+(\w+)\.(\w+)\s+(\w+)\.(\w+)\s+(\w+-to-\w+)$/;
9
- const match = line.trim().match(relationRegex);
10
- if (!match) {
11
- return null;
12
- }
13
- const [, fromModel, fromField, toModel, toField, relationType] = match;
14
- return {
15
- fromModel,
16
- fromField,
17
- toModel,
18
- toField,
19
- type: relationType,
20
- };
21
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * remove duplicate relations
3
- * @param { readonly string[] } relations
4
- * @returns { readonly string[] }
5
- */
6
- export declare function removeDuplicateRelations(relations: readonly string[]): readonly string[];
@@ -1,8 +0,0 @@
1
- /**
2
- * remove duplicate relations
3
- * @param { readonly string[] } relations
4
- * @returns { readonly string[] }
5
- */
6
- export function removeDuplicateRelations(relations) {
7
- return [...new Set(relations)];
8
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Generate the infer input type for the model
3
- * @param modelName - The name of the model
4
- * @param config - The configuration for the generator
5
- * @returns The generated infer input type
6
- */
7
- export declare function inferInput(modelName: string): string;
@@ -1,9 +0,0 @@
1
- /**
2
- * Generate the infer input type for the model
3
- * @param modelName - The name of the model
4
- * @param config - The configuration for the generator
5
- * @returns The generated infer input type
6
- */
7
- export function inferInput(modelName) {
8
- return `export type ${modelName} = v.InferInput<typeof ${modelName}Schema>`;
9
- }
@@ -1,7 +0,0 @@
1
- export declare function properties(modelFields: {
2
- documentation: string;
3
- modelName: string;
4
- fieldName: string;
5
- validation: string | null;
6
- comment: string[];
7
- }[], comment: boolean): string;
@@ -1,15 +0,0 @@
1
- export function properties(modelFields, comment) {
2
- const fields = modelFields
3
- .filter((field) => field.validation)
4
- .map((field) => {
5
- // @relation, @v, @z exclude
6
- const cleanDoc = field.comment
7
- .filter((line) => !(line.includes('@relation') || line.includes('@v') || line.includes('@z')))
8
- .join('\n')
9
- .trim();
10
- const docComment = comment && cleanDoc ? ` /**\n * ${cleanDoc}\n */\n` : '';
11
- return `${docComment} ${field.fieldName}: v.${field.validation}`;
12
- })
13
- .join(',\n');
14
- return fields;
15
- }
@@ -1,2 +0,0 @@
1
- export { isValibotDocument } from './is-valibot-document.js';
2
- export { isValibot } from './is-valibot.js';
@@ -1,2 +0,0 @@
1
- export { isValibotDocument } from './is-valibot-document.js';
2
- export { isValibot } from './is-valibot.js';
@@ -1 +0,0 @@
1
- export declare function isValibotDocument(documentation?: string): string[];
@@ -1,10 +0,0 @@
1
- const VALIDATION_PATTERNS = ['@v.'];
2
- export function isValibotDocument(documentation) {
3
- if (!documentation)
4
- return [];
5
- return documentation
6
- .split('\n')
7
- .filter((line) => !VALIDATION_PATTERNS.some((pattern) => line.includes(pattern)))
8
- .map((line) => line.trim())
9
- .filter(Boolean);
10
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Check if the documentation is a Valibot validation
3
- * @param documentation
4
- * @returns string | null
5
- */
6
- export declare function isValibot(documentation?: string): string | null;
@@ -1,11 +0,0 @@
1
- /**
2
- * Check if the documentation is a Valibot validation
3
- * @param documentation
4
- * @returns string | null
5
- */
6
- export function isValibot(documentation) {
7
- if (!documentation)
8
- return null;
9
- const match = documentation.match(/@v\.(.+?)(?:\n|$)/);
10
- return match ? match[1].trim() : null;
11
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Generate Zod infer
3
- * @param modelName - The name of the model
4
- * @param config - The configuration for the generator
5
- * @returns The generated Zod infer
6
- */
7
- export declare function infer(modelName: string): string;
@@ -1,9 +0,0 @@
1
- /**
2
- * Generate Zod infer
3
- * @param modelName - The name of the model
4
- * @param config - The configuration for the generator
5
- * @returns The generated Zod infer
6
- */
7
- export function infer(modelName) {
8
- return `export type ${modelName} = z.infer<typeof ${modelName}Schema>`;
9
- }
@@ -1,13 +0,0 @@
1
- /**
2
- * Generate Zod properties
3
- * @param modelFields - The fields of the model
4
- * @param config - The configuration for the generator
5
- * @returns The generated Zod properties
6
- */
7
- export declare function properties(modelFields: {
8
- documentation: string;
9
- modelName: string;
10
- fieldName: string;
11
- validation: string | null;
12
- comment: string[];
13
- }[], comment: boolean): string;
@@ -1,21 +0,0 @@
1
- /**
2
- * Generate Zod properties
3
- * @param modelFields - The fields of the model
4
- * @param config - The configuration for the generator
5
- * @returns The generated Zod properties
6
- */
7
- export function properties(modelFields, comment) {
8
- const fields = modelFields
9
- .filter((field) => field.validation)
10
- .map((field) => {
11
- // @relation, @v, @z exclude
12
- const cleanDoc = field.comment
13
- .filter((line) => !(line.includes('@relation') || line.includes('@v') || line.includes('@z')))
14
- .join('\n')
15
- .trim();
16
- const docComment = comment && cleanDoc ? ` /**\n * ${cleanDoc}\n */\n` : '';
17
- return `${docComment} ${field.fieldName}: z.${field.validation}`;
18
- })
19
- .join(',\n');
20
- return fields;
21
- }
@@ -1,2 +0,0 @@
1
- export { isZod } from './is-zod.js';
2
- export { isZodDocument } from './is-zod-document.js';
@@ -1,2 +0,0 @@
1
- export { isZod } from './is-zod.js';
2
- export { isZodDocument } from './is-zod-document.js';
@@ -1,6 +0,0 @@
1
- /**
2
- * Is Zod documentation
3
- * @param documentation - The documentation of the field
4
- * @returns The Zod documentation
5
- */
6
- export declare function isZodDocument(documentation?: string): string[];
@@ -1,15 +0,0 @@
1
- const VALIDATION_PATTERNS = ['@z.'];
2
- /**
3
- * Is Zod documentation
4
- * @param documentation - The documentation of the field
5
- * @returns The Zod documentation
6
- */
7
- export function isZodDocument(documentation) {
8
- if (!documentation)
9
- return [];
10
- return documentation
11
- .split('\n')
12
- .filter((line) => !VALIDATION_PATTERNS.some((pattern) => line.includes(pattern)))
13
- .map((line) => line.trim())
14
- .filter(Boolean);
15
- }