hekireki 0.0.1 → 0.0.3

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 (64) hide show
  1. package/README.md +1 -1
  2. package/dist/common/format/index.js +6 -6
  3. package/dist/common/helper/get-camel-case-schema-name-helper.d.ts +3 -1
  4. package/dist/common/helper/get-camel-case-schema-name-helper.js +2 -2
  5. package/dist/common/helper/get-pascal-case-schema-name-helper.d.ts +3 -1
  6. package/dist/common/helper/get-pascal-case-schema-name-helper.js +2 -2
  7. package/dist/common/helper/get-variable-name-helper.d.ts +4 -1
  8. package/dist/common/helper/get-variable-name-helper.js +3 -3
  9. package/dist/common/helper/get-variable-schema-name-helper.d.ts +4 -1
  10. package/dist/common/helper/get-variable-schema-name-helper.js +7 -3
  11. package/dist/common/helper/group-by-model-helper.d.ts +3 -1
  12. package/dist/common/helper/group-by-model-helper.js +7 -7
  13. package/dist/common/text/capitalize.js +1 -1
  14. package/dist/common/text/decapitalize.js +1 -1
  15. package/dist/common/type/index.d.ts +8 -8
  16. package/dist/common/validator/is-fields-validation.d.ts +9 -7
  17. package/dist/common/validator/is-fields-validation.js +1 -3
  18. package/dist/generator/mermaid/generator/generate-er-content.js +14 -8
  19. package/dist/generator/mermaid/generator/generate-model-fields.js +21 -16
  20. package/dist/generator/mermaid/generator/generate-model-info.js +5 -5
  21. package/dist/generator/mermaid/generator/generate-relation-line.js +5 -5
  22. package/dist/generator/mermaid/index.d.ts +2 -2
  23. package/dist/generator/mermaid/index.js +52 -52
  24. package/dist/generator/mermaid/output/index.js +17 -13
  25. package/dist/generator/mermaid/type/index.d.ts +30 -6
  26. package/dist/generator/mermaid/validator/exclude-many-to-one-relations.d.ts +3 -1
  27. package/dist/generator/mermaid/validator/exclude-many-to-one-relations.js +1 -1
  28. package/dist/generator/mermaid/validator/extract-relations.js +15 -13
  29. package/dist/generator/mermaid/validator/is-relation.js +25 -25
  30. package/dist/generator/mermaid/validator/parse-relation.js +17 -16
  31. package/dist/generator/mermaid/validator/remove-duplicate-relations.d.ts +3 -1
  32. package/dist/generator/mermaid/validator/remove-duplicate-relations.js +1 -1
  33. package/dist/generator/valibot/generator/generate-valibot-infer-input.d.ts +4 -1
  34. package/dist/generator/valibot/generator/generate-valibot-infer-input.js +10 -3
  35. package/dist/generator/valibot/generator/generate-valibot-properties.d.ts +10 -7
  36. package/dist/generator/valibot/generator/generate-valibot-properties.js +21 -15
  37. package/dist/generator/valibot/generator/generate-valibot-schema.d.ts +5 -1
  38. package/dist/generator/valibot/generator/generate-valibot-schema.js +6 -2
  39. package/dist/generator/valibot/generator/generate-valibot-schemas.d.ts +10 -7
  40. package/dist/generator/valibot/generator/generate-valibot-schemas.js +14 -7
  41. package/dist/generator/valibot/generator/generate-valibot.d.ts +4 -1
  42. package/dist/generator/valibot/generator/generate-valibot.js +51 -36
  43. package/dist/generator/valibot/index.d.ts +6 -6
  44. package/dist/generator/valibot/index.js +46 -40
  45. package/dist/generator/valibot/validator/is-valibot-documentation.d.ts +3 -1
  46. package/dist/generator/valibot/validator/is-valibot-documentation.js +8 -7
  47. package/dist/generator/valibot/validator/is-valibot-validation.d.ts +3 -1
  48. package/dist/generator/valibot/validator/is-valibot-validation.js +3 -4
  49. package/dist/generator/zod/generator/generate-zod-infer.d.ts +4 -1
  50. package/dist/generator/zod/generator/generate-zod-infer.js +10 -3
  51. package/dist/generator/zod/generator/generate-zod-properties.d.ts +10 -7
  52. package/dist/generator/zod/generator/generate-zod-properties.js +21 -15
  53. package/dist/generator/zod/generator/generate-zod-schema.d.ts +5 -1
  54. package/dist/generator/zod/generator/generate-zod-schema.js +6 -2
  55. package/dist/generator/zod/generator/generate-zod-schemas.d.ts +10 -7
  56. package/dist/generator/zod/generator/generate-zod-schemas.js +14 -7
  57. package/dist/generator/zod/generator/generate-zod.d.ts +4 -1
  58. package/dist/generator/zod/generator/generate-zod.js +51 -36
  59. package/dist/generator/zod/index.d.ts +6 -6
  60. package/dist/generator/zod/index.js +46 -40
  61. package/dist/generator/zod/validator/is-zod-documentation.d.ts +3 -1
  62. package/dist/generator/zod/validator/is-zod-documentation.js +8 -7
  63. package/dist/generator/zod/validator/is-zod-validation.js +3 -4
  64. package/package.json +2 -2
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Hekireki
2
2
 
3
- [Hekireki](https://www.npmjs.com/package/hekireki) is a tool that generates validation schemas for Zod and Valibot, as well as ER diagrams, from [Prisma](https://www.prisma.io/) schemas annotated with comments.
3
+ **[Hekireki](https://www.npmjs.com/package/hekireki)** is a tool that generates validation schemas for Zod and Valibot, as well as ER diagrams, from [Prisma](https://www.prisma.io/) schemas annotated with comments.
4
4
 
5
5
  ## Features
6
6
 
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatCode = formatCode;
4
4
  const prettier_1 = require("prettier");
5
5
  async function formatCode(code) {
6
- return await (0, prettier_1.format)(code, {
7
- parser: "typescript",
8
- printWidth: 100,
9
- singleQuote: true,
10
- semi: false,
11
- });
6
+ return await (0, prettier_1.format)(code, {
7
+ parser: "typescript",
8
+ printWidth: 100,
9
+ singleQuote: true,
10
+ semi: false,
11
+ });
12
12
  }
@@ -4,4 +4,6 @@
4
4
  * @param schemaName - The original schema name.
5
5
  * @returns The camelCase schema name.
6
6
  */
7
- export declare function getCamelCaseSchemaNameHelper(schemaName: string): string;
7
+ export declare function getCamelCaseSchemaNameHelper(
8
+ schemaName: string,
9
+ ): string;
@@ -9,6 +9,6 @@ const decapitalize_1 = require("../text/decapitalize");
9
9
  * @returns The camelCase schema name.
10
10
  */
11
11
  function getCamelCaseSchemaNameHelper(schemaName) {
12
- const decapitalizedSchemaName = (0, decapitalize_1.decapitalize)(schemaName);
13
- return `${decapitalizedSchemaName}Schema`;
12
+ const decapitalizedSchemaName = (0, decapitalize_1.decapitalize)(schemaName);
13
+ return `${decapitalizedSchemaName}Schema`;
14
14
  }
@@ -5,4 +5,6 @@
5
5
  * @param schemaName - The original schema name.
6
6
  * @returns The PascalCase schema name.
7
7
  */
8
- export declare function getPascalCaseSchemaNameHelper(schemaName: string): string;
8
+ export declare function getPascalCaseSchemaNameHelper(
9
+ schemaName: string,
10
+ ): string;
@@ -10,6 +10,6 @@ const capitalize_1 = require("../text/capitalize");
10
10
  * @returns The PascalCase schema name.
11
11
  */
12
12
  function getPascalCaseSchemaNameHelper(schemaName) {
13
- const capitalizedSchemaName = (0, capitalize_1.capitalize)(schemaName);
14
- return `${capitalizedSchemaName}Schema`;
13
+ const capitalizedSchemaName = (0, capitalize_1.capitalize)(schemaName);
14
+ return `${capitalizedSchemaName}Schema`;
15
15
  }
@@ -6,4 +6,7 @@ import type { Config } from "../../generator/zod";
6
6
  * @param config - The configuration.
7
7
  * @returns The variable name.
8
8
  */
9
- export declare function getVariableNameHelper(name: string, config: Config): string;
9
+ export declare function getVariableNameHelper(
10
+ name: string,
11
+ config: Config,
12
+ ): string;
@@ -11,7 +11,7 @@ const decapitalize_1 = require("../text/decapitalize");
11
11
  * @returns The variable name.
12
12
  */
13
13
  function getVariableNameHelper(name, config) {
14
- return config.typeName === "camelCase"
15
- ? (0, decapitalize_1.decapitalize)(name)
16
- : (0, capitalize_1.capitalize)(name);
14
+ return config.typeName === "camelCase"
15
+ ? (0, decapitalize_1.decapitalize)(name)
16
+ : (0, capitalize_1.capitalize)(name);
17
17
  }
@@ -6,4 +6,7 @@ import type { Config } from "../../generator/zod";
6
6
  * @param config - The configuration.
7
7
  * @returns The variable schema name.
8
8
  */
9
- export declare function getVariableSchemaNameHelper(name: string, config: Config): string;
9
+ export declare function getVariableSchemaNameHelper(
10
+ name: string,
11
+ config: Config,
12
+ ): string;
@@ -11,7 +11,11 @@ const get_pascal_case_schema_name_helper_1 = require("./get-pascal-case-schema-n
11
11
  * @returns The variable schema name.
12
12
  */
13
13
  function getVariableSchemaNameHelper(name, config) {
14
- return config.schemaName === "camelCase"
15
- ? (0, get_camel_case_schema_name_helper_1.getCamelCaseSchemaNameHelper)(name)
16
- : (0, get_pascal_case_schema_name_helper_1.getPascalCaseSchemaNameHelper)(name);
14
+ return config.schemaName === "camelCase"
15
+ ? (0, get_camel_case_schema_name_helper_1.getCamelCaseSchemaNameHelper)(
16
+ name,
17
+ )
18
+ : (0, get_pascal_case_schema_name_helper_1.getPascalCaseSchemaNameHelper)(
19
+ name,
20
+ );
17
21
  }
@@ -5,4 +5,6 @@ import type { GroupedFields, ValidField } from "../type";
5
5
  * @param validFields - The array of valid fields.
6
6
  * @returns The grouped fields.
7
7
  */
8
- export declare function groupByModelHelper(validFields: ValidField[]): GroupedFields;
8
+ export declare function groupByModelHelper(
9
+ validFields: ValidField[],
10
+ ): GroupedFields;
@@ -8,11 +8,11 @@ exports.groupByModelHelper = groupByModelHelper;
8
8
  * @returns The grouped fields.
9
9
  */
10
10
  function groupByModelHelper(validFields) {
11
- return validFields.reduce((acc, field) => {
12
- if (!acc[field.modelName]) {
13
- acc[field.modelName] = [];
14
- }
15
- acc[field.modelName].push(field);
16
- return acc;
17
- }, {});
11
+ return validFields.reduce((acc, field) => {
12
+ if (!acc[field.modelName]) {
13
+ acc[field.modelName] = [];
14
+ }
15
+ acc[field.modelName].push(field);
16
+ return acc;
17
+ }, {});
18
18
  }
@@ -19,5 +19,5 @@ exports.capitalize = capitalize;
19
19
  * - Commonly used for generating type names and class names
20
20
  */
21
21
  function capitalize(str) {
22
- return `${str.charAt(0).toUpperCase()}${str.slice(1)}`;
22
+ return `${str.charAt(0).toUpperCase()}${str.slice(1)}`;
23
23
  }
@@ -18,5 +18,5 @@ exports.decapitalize = decapitalize;
18
18
  * - Returns an empty string if the input is empty
19
19
  */
20
20
  function decapitalize(str) {
21
- return `${str.charAt(0).toLowerCase()}${str.slice(1)}`;
21
+ return `${str.charAt(0).toLowerCase()}${str.slice(1)}`;
22
22
  }
@@ -1,16 +1,16 @@
1
1
  import type { DMMF } from "@prisma/generator-helper";
2
2
  export type Field = {
3
- documentation: string;
4
- modelName: string;
5
- fieldName: string;
6
- comment: string[];
7
- validation: string | null;
3
+ documentation: string;
4
+ modelName: string;
5
+ fieldName: string;
6
+ comment: string[];
7
+ validation: string | null;
8
8
  };
9
9
  export type ValidField = Required<Field>;
10
10
  export type GroupedFields = Record<string, Field[]>;
11
11
  export type Model = Readonly<DMMF.Model>;
12
12
  export type ModelInfo = {
13
- documentation: string;
14
- name: string;
15
- fields: Model["fields"];
13
+ documentation: string;
14
+ name: string;
15
+ fields: Model["fields"];
16
16
  };
@@ -4,10 +4,12 @@ import type { ReadonlyDeep } from "@prisma/generator-helper";
4
4
  * @param modelFields - The model fields
5
5
  * @returns The fields validation
6
6
  */
7
- export declare function isFieldsValidation(modelFields: {
8
- documentation: ReadonlyDeep<string | undefined>;
9
- modelName: string;
10
- fieldName: string;
11
- comment: string[];
12
- validation: string | null;
13
- }[][]): Required<import("../type").Field>[];
7
+ export declare function isFieldsValidation(
8
+ modelFields: {
9
+ documentation: ReadonlyDeep<string | undefined>;
10
+ modelName: string;
11
+ fieldName: string;
12
+ comment: string[];
13
+ validation: string | null;
14
+ }[][],
15
+ ): Required<import("../type").Field>[];
@@ -7,7 +7,5 @@ exports.isFieldsValidation = isFieldsValidation;
7
7
  * @returns The fields validation
8
8
  */
9
9
  function isFieldsValidation(modelFields) {
10
- return modelFields
11
- .flat()
12
- .filter((field) => field.validation !== null);
10
+ return modelFields.flat().filter((field) => field.validation !== null);
13
11
  }
@@ -12,12 +12,18 @@ const remove_duplicate_relations_1 = require("../validator/remove-duplicate-rela
12
12
  * @returns ER content
13
13
  */
14
14
  function generateERContent(models) {
15
- // extract all relations
16
- const allRelations = models.flatMap(extract_relations_1.extractRelations);
17
- // remove duplicate relations
18
- const uniqueRelations = (0, remove_duplicate_relations_1.removeDuplicateRelations)(allRelations);
19
- // collect all model info
20
- const modelInfos = models.flatMap(generate_model_info_1.generateModelInfo);
21
- // build ER diagram
22
- return [...__1.ER_HEADER, ...uniqueRelations, ...modelInfos, ...__1.ER_FOOTER];
15
+ // extract all relations
16
+ const allRelations = models.flatMap(extract_relations_1.extractRelations);
17
+ // remove duplicate relations
18
+ const uniqueRelations = (0,
19
+ remove_duplicate_relations_1.removeDuplicateRelations)(allRelations);
20
+ // collect all model info
21
+ const modelInfos = models.flatMap(generate_model_info_1.generateModelInfo);
22
+ // build ER diagram
23
+ return [
24
+ ...__1.ER_HEADER,
25
+ ...uniqueRelations,
26
+ ...modelInfos,
27
+ ...__1.ER_FOOTER,
28
+ ];
23
29
  }
@@ -10,20 +10,25 @@ const VALIBOT_ANNOTATION = "@v.";
10
10
  * @returns
11
11
  */
12
12
  function generateModelFields(model) {
13
- return model.fields
14
- .map((field) => {
15
- if (field.relationName) {
16
- return null;
17
- }
18
- const commentPart = field.documentation
19
- ? field.documentation
20
- .split("\n")
21
- .filter((line) => !(line.includes(ZOD_ANNOTATION) ||
22
- line.includes(VALIBOT_ANNOTATION)))
23
- .join("\n")
24
- .trim()
25
- : "";
26
- return ` ${field.type} ${field.name} ${commentPart ? `"${commentPart}"` : ""}`;
27
- })
28
- .filter((field) => field !== null);
13
+ return model.fields
14
+ .map((field) => {
15
+ if (field.relationName) {
16
+ return null;
17
+ }
18
+ const commentPart = field.documentation
19
+ ? field.documentation
20
+ .split("\n")
21
+ .filter(
22
+ (line) =>
23
+ !(
24
+ line.includes(ZOD_ANNOTATION) ||
25
+ line.includes(VALIBOT_ANNOTATION)
26
+ ),
27
+ )
28
+ .join("\n")
29
+ .trim()
30
+ : "";
31
+ return ` ${field.type} ${field.name} ${commentPart ? `"${commentPart}"` : ""}`;
32
+ })
33
+ .filter((field) => field !== null);
29
34
  }
@@ -9,9 +9,9 @@ const generate_model_fields_1 = require("./generate-model-fields");
9
9
  * @returns
10
10
  */
11
11
  function generateModelInfo(model) {
12
- return [
13
- ` ${model.name} {`,
14
- ...(0, generate_model_fields_1.generateModelFields)(model),
15
- " }",
16
- ];
12
+ return [
13
+ ` ${model.name} {`,
14
+ ...(0, generate_model_fields_1.generateModelFields)(model),
15
+ " }",
16
+ ];
17
17
  }
@@ -9,9 +9,9 @@ const __1 = require("..");
9
9
  * @returns string
10
10
  */
11
11
  function generateRelationLine(relation) {
12
- const cardinality = __1.CARDINALITY_MAP[relation.type];
13
- if (!cardinality) {
14
- throw new Error(`Unknown relation type: ${relation.type}`);
15
- }
16
- return ` ${relation.fromModel} ${cardinality} ${relation.toModel} : "(${relation.fromField}) - (${relation.toField})"`;
12
+ const cardinality = __1.CARDINALITY_MAP[relation.type];
13
+ if (!cardinality) {
14
+ throw new Error(`Unknown relation type: ${relation.type}`);
15
+ }
16
+ return ` ${relation.fromModel} ${cardinality} ${relation.toModel} : "(${relation.fromField}) - (${relation.toField})"`;
17
17
  }
@@ -1,8 +1,8 @@
1
1
  import type { GeneratorOptions } from "@prisma/generator-helper";
2
2
  import type { RelationType } from "./type";
3
3
  export type Config = {
4
- output?: string;
5
- file?: string | string[];
4
+ output?: string;
5
+ file?: string | string[];
6
6
  };
7
7
  export declare const CARDINALITY_MAP: Record<RelationType, string>;
8
8
  export declare const ER_HEADER: readonly ["```mermaid", "erDiagram"];
@@ -6,43 +6,43 @@ const output_1 = require("./output");
6
6
  const generator_helper_1 = require("@prisma/generator-helper");
7
7
  const generate_er_content_1 = require("./generator/generate-er-content");
8
8
  const DEFAULT_CONFIG = {
9
- output: "./mermaid-er",
10
- file: "ER.md",
9
+ output: "./mermaid-er",
10
+ file: "ER.md",
11
11
  };
12
12
  exports.CARDINALITY_MAP = {
13
- // Required Relationships
14
- // Both sides required (one-to-one)
15
- "one-to-one": "||--||", // 1 --- 1
16
- // One side singular, the other multiple
17
- "one-to-many": "||--o{", // 1 --- * (also known as one-to-zero-many)
18
- "many-to-one": "}o--||", // * --- 1
19
- // Both sides multiple (many-to-many)
20
- "many-to-many": "}o--o{", // * --- *
21
- // One side required, one side optional (0..1)
22
- "one-to-zero-one": "||--o|", // 1 --- 0..1
23
- "zero-one-to-one": "o|--||", // 0..1 --- 1
24
- // Both sides optional singular (0..1 on both sides)
25
- "zero-to-one": "o|--o|", // 0..1 --- 0..1
26
- "zero-to-zero-one": "o|--o|", // Alias for zero-to-one
27
- // One side optional singular, the other multiple
28
- "zero-to-many": "o|--o{", // 0 --- *
29
- "zero-one-to-many": "o|--o{", // 0..1 --- *
30
- "many-to-zero-one": "}o--o|", // * --- 0..1
31
- // Optional Relationships (using dotted lines)
32
- "one-to-one-optional": "||..||", // 1..1
33
- "one-to-many-optional": "||..o{", // 1..*
34
- "many-to-one-optional": "}o..||", // *..1
35
- "many-to-many-optional": "}o..o{", // *..*
36
- "one-to-zero-one-optional": "||..o|", // 1..0..1
37
- "zero-one-to-one-optional": "o|..||", // 0..1..1
38
- "zero-to-one-optional": "o|..o|", // 0..1 (both sides optional singular)
39
- "zero-to-many-optional": "o|..o{", // 0..* (optional multiple)
40
- "zero-one-to-many-optional": "o|..o{", // 0..1 --- * (optional)
41
- "many-to-zero-one-optional": "}o..o|", // *..0..1
42
- // Nuanced Patterns (Aliases)
43
- "many-to-zero-many": "}o..o{", // * --- 0..* (equivalent to many-to-many-optional)
44
- "zero-many-to-many": "o{..}o", // 0..* --- * (left side optional multiple, right side required multiple)
45
- "zero-many-to-zero-many": "o{..o{", // both sides optional multiple
13
+ // Required Relationships
14
+ // Both sides required (one-to-one)
15
+ "one-to-one": "||--||", // 1 --- 1
16
+ // One side singular, the other multiple
17
+ "one-to-many": "||--o{", // 1 --- * (also known as one-to-zero-many)
18
+ "many-to-one": "}o--||", // * --- 1
19
+ // Both sides multiple (many-to-many)
20
+ "many-to-many": "}o--o{", // * --- *
21
+ // One side required, one side optional (0..1)
22
+ "one-to-zero-one": "||--o|", // 1 --- 0..1
23
+ "zero-one-to-one": "o|--||", // 0..1 --- 1
24
+ // Both sides optional singular (0..1 on both sides)
25
+ "zero-to-one": "o|--o|", // 0..1 --- 0..1
26
+ "zero-to-zero-one": "o|--o|", // Alias for zero-to-one
27
+ // One side optional singular, the other multiple
28
+ "zero-to-many": "o|--o{", // 0 --- *
29
+ "zero-one-to-many": "o|--o{", // 0..1 --- *
30
+ "many-to-zero-one": "}o--o|", // * --- 0..1
31
+ // Optional Relationships (using dotted lines)
32
+ "one-to-one-optional": "||..||", // 1..1
33
+ "one-to-many-optional": "||..o{", // 1..*
34
+ "many-to-one-optional": "}o..||", // *..1
35
+ "many-to-many-optional": "}o..o{", // *..*
36
+ "one-to-zero-one-optional": "||..o|", // 1..0..1
37
+ "zero-one-to-one-optional": "o|..||", // 0..1..1
38
+ "zero-to-one-optional": "o|..o|", // 0..1 (both sides optional singular)
39
+ "zero-to-many-optional": "o|..o{", // 0..* (optional multiple)
40
+ "zero-one-to-many-optional": "o|..o{", // 0..1 --- * (optional)
41
+ "many-to-zero-one-optional": "}o..o|", // *..0..1
42
+ // Nuanced Patterns (Aliases)
43
+ "many-to-zero-many": "}o..o{", // * --- 0..* (equivalent to many-to-many-optional)
44
+ "zero-many-to-many": "o{..}o", // 0..* --- * (left side optional multiple, right side required multiple)
45
+ "zero-many-to-zero-many": "o{..o{", // both sides optional multiple
46
46
  };
47
47
  // ER diagram header
48
48
  exports.ER_HEADER = ["```mermaid", "erDiagram"];
@@ -50,24 +50,24 @@ exports.ER_HEADER = ["```mermaid", "erDiagram"];
50
50
  exports.ER_FOOTER = ["```"];
51
51
  // main function
52
52
  async function main(options) {
53
- const config = {
54
- output: options.generator.output?.value ?? DEFAULT_CONFIG.output,
55
- file: options.generator.config?.file ?? DEFAULT_CONFIG.file,
56
- };
57
- const models = options.dmmf.datamodel.models;
58
- const content = (0, generate_er_content_1.generateERContent)(models);
59
- if (!config.output) {
60
- throw new Error("output is required");
61
- }
62
- (0, output_1.OutputFile)(content, config);
53
+ const config = {
54
+ output: options.generator.output?.value ?? DEFAULT_CONFIG.output,
55
+ file: options.generator.config?.file ?? DEFAULT_CONFIG.file,
56
+ };
57
+ const models = options.dmmf.datamodel.models;
58
+ const content = (0, generate_er_content_1.generateERContent)(models);
59
+ if (!config.output) {
60
+ throw new Error("output is required");
61
+ }
62
+ (0, output_1.OutputFile)(content, config);
63
63
  }
64
64
  // prisma generator handler
65
65
  (0, generator_helper_1.generatorHandler)({
66
- onManifest() {
67
- return {
68
- defaultOutput: "./mermaid-er",
69
- prettyName: "ekireki-ER",
70
- };
71
- },
72
- onGenerate: main,
66
+ onManifest() {
67
+ return {
68
+ defaultOutput: "./mermaid-er",
69
+ prettyName: "ekireki-ER",
70
+ };
71
+ },
72
+ onGenerate: main,
73
73
  });
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
2
+ var __importDefault =
3
+ (this && this.__importDefault) ||
4
+ function (mod) {
5
+ return mod && mod.__esModule ? mod : { default: mod };
6
+ };
5
7
  Object.defineProperty(exports, "__esModule", { value: true });
6
8
  exports.OutputFile = OutputFile;
7
9
  const node_fs_1 = __importDefault(require("node:fs"));
@@ -11,14 +13,16 @@ const node_fs_1 = __importDefault(require("node:fs"));
11
13
  * @param config - The configuration
12
14
  */
13
15
  function OutputFile(content, config) {
14
- const outputDir = config.output;
15
- if (!outputDir) {
16
- throw new Error("output is required");
17
- }
18
- if (!node_fs_1.default.existsSync(outputDir)) {
19
- node_fs_1.default.mkdirSync(outputDir, { recursive: true });
20
- }
21
- const file = config.file ?? "ER.md";
22
- const filePath = `${outputDir}/${file}`;
23
- node_fs_1.default.writeFileSync(filePath, content.join("\n"), { encoding: "utf-8" });
16
+ const outputDir = config.output;
17
+ if (!outputDir) {
18
+ throw new Error("output is required");
19
+ }
20
+ if (!node_fs_1.default.existsSync(outputDir)) {
21
+ node_fs_1.default.mkdirSync(outputDir, { recursive: true });
22
+ }
23
+ const file = config.file ?? "ER.md";
24
+ const filePath = `${outputDir}/${file}`;
25
+ node_fs_1.default.writeFileSync(filePath, content.join("\n"), {
26
+ encoding: "utf-8",
27
+ });
24
28
  }
@@ -1,11 +1,35 @@
1
1
  import type { DMMF } from "@prisma/generator-helper";
2
- export type RelationType = "one-to-one" | "one-to-many" | "many-to-one" | "many-to-many" | "one-to-zero-one" | "zero-one-to-one" | "zero-to-one" | "zero-to-zero-one" | "zero-to-many" | "zero-one-to-many" | "many-to-zero-one" | "one-to-one-optional" | "one-to-many-optional" | "many-to-one-optional" | "many-to-many-optional" | "one-to-zero-one-optional" | "zero-one-to-one-optional" | "zero-to-one-optional" | "zero-to-many-optional" | "zero-one-to-many-optional" | "many-to-zero-one-optional" | "many-to-zero-many" | "zero-many-to-many" | "zero-many-to-zero-many";
2
+ export type RelationType =
3
+ | "one-to-one"
4
+ | "one-to-many"
5
+ | "many-to-one"
6
+ | "many-to-many"
7
+ | "one-to-zero-one"
8
+ | "zero-one-to-one"
9
+ | "zero-to-one"
10
+ | "zero-to-zero-one"
11
+ | "zero-to-many"
12
+ | "zero-one-to-many"
13
+ | "many-to-zero-one"
14
+ | "one-to-one-optional"
15
+ | "one-to-many-optional"
16
+ | "many-to-one-optional"
17
+ | "many-to-many-optional"
18
+ | "one-to-zero-one-optional"
19
+ | "zero-one-to-one-optional"
20
+ | "zero-to-one-optional"
21
+ | "zero-to-many-optional"
22
+ | "zero-one-to-many-optional"
23
+ | "many-to-zero-one-optional"
24
+ | "many-to-zero-many"
25
+ | "zero-many-to-many"
26
+ | "zero-many-to-zero-many";
3
27
  export type Relation = {
4
- fromModel: string;
5
- toModel: string;
6
- fromField: string;
7
- toField: string;
8
- type: RelationType;
28
+ fromModel: string;
29
+ toModel: string;
30
+ fromField: string;
31
+ toField: string;
32
+ type: RelationType;
9
33
  };
10
34
  export type Model = Readonly<DMMF.Model>;
11
35
  export type ERContent = readonly string[];
@@ -4,4 +4,6 @@
4
4
  * @param relations
5
5
  * @returns
6
6
  */
7
- export declare function excludeManyToOneRelations(relations: readonly string[]): readonly string[];
7
+ export declare function excludeManyToOneRelations(
8
+ relations: readonly string[],
9
+ ): readonly string[];
@@ -8,5 +8,5 @@ exports.excludeManyToOneRelations = excludeManyToOneRelations;
8
8
  * @returns
9
9
  */
10
10
  function excludeManyToOneRelations(relations) {
11
- return [...new Set(relations)].filter((r) => !r.includes("many-to-one"));
11
+ return [...new Set(relations)].filter((r) => !r.includes("many-to-one"));
12
12
  }
@@ -10,17 +10,19 @@ const parse_relation_1 = require("./parse-relation");
10
10
  * @returns
11
11
  */
12
12
  function extractRelations(model) {
13
- const relations = [];
14
- // @r annotation
15
- if (model.documentation) {
16
- const annotationRelations = model.documentation
17
- .split("\n")
18
- .map((line) => {
19
- const relation = (0, parse_relation_1.parseRelation)(line);
20
- return relation ? (0, generate_relation_line_1.generateRelationLine)(relation) : null;
21
- })
22
- .filter((line) => line !== null);
23
- relations.push(...annotationRelations);
24
- }
25
- return relations;
13
+ const relations = [];
14
+ // @r annotation
15
+ if (model.documentation) {
16
+ const annotationRelations = model.documentation
17
+ .split("\n")
18
+ .map((line) => {
19
+ const relation = (0, parse_relation_1.parseRelation)(line);
20
+ return relation
21
+ ? (0, generate_relation_line_1.generateRelationLine)(relation)
22
+ : null;
23
+ })
24
+ .filter((line) => line !== null);
25
+ relations.push(...annotationRelations);
26
+ }
27
+ return relations;
26
28
  }