hekireki 0.0.4 → 0.0.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 (67) hide show
  1. package/README.md +4 -4
  2. package/dist/common/format/index.js +6 -6
  3. package/dist/common/helper/get-camel-case-schema-name-helper.d.ts +1 -3
  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 +1 -3
  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 +1 -4
  8. package/dist/common/helper/get-variable-name-helper.js +3 -3
  9. package/dist/common/helper/get-variable-schema-name-helper.d.ts +1 -4
  10. package/dist/common/helper/get-variable-schema-name-helper.js +3 -7
  11. package/dist/common/helper/group-by-model-helper.d.ts +1 -3
  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 +7 -9
  17. package/dist/common/validator/is-fields-validation.js +3 -1
  18. package/dist/generator/mermaid/generator/generate-er-content.js +8 -14
  19. package/dist/generator/mermaid/generator/generate-model-fields.js +16 -21
  20. package/dist/generator/mermaid/generator/generate-model-info.js +5 -5
  21. package/dist/generator/mermaid/generator/generate-relation-line.d.ts +2 -3
  22. package/dist/generator/mermaid/generator/generate-relation-line.js +7 -8
  23. package/dist/generator/mermaid/index.d.ts +3 -2
  24. package/dist/generator/mermaid/index.js +47 -52
  25. package/dist/generator/mermaid/output/index.js +13 -17
  26. package/dist/generator/mermaid/type/index.d.ts +6 -30
  27. package/dist/generator/mermaid/validator/exclude-many-to-one-relations.d.ts +1 -3
  28. package/dist/generator/mermaid/validator/exclude-many-to-one-relations.js +1 -1
  29. package/dist/generator/mermaid/validator/extract-relations.d.ts +2 -3
  30. package/dist/generator/mermaid/validator/extract-relations.js +15 -18
  31. package/dist/generator/mermaid/validator/is-relation.d.ts +5 -0
  32. package/dist/generator/mermaid/validator/is-relation.js +30 -25
  33. package/dist/generator/mermaid/validator/parse-relation.js +16 -17
  34. package/dist/generator/mermaid/validator/remove-duplicate-relations.d.ts +3 -6
  35. package/dist/generator/mermaid/validator/remove-duplicate-relations.js +3 -4
  36. package/dist/generator/valibot/generator/generate-valibot-infer-input.d.ts +1 -4
  37. package/dist/generator/valibot/generator/generate-valibot-infer-input.js +3 -10
  38. package/dist/generator/valibot/generator/generate-valibot-properties.d.ts +7 -10
  39. package/dist/generator/valibot/generator/generate-valibot-properties.js +15 -21
  40. package/dist/generator/valibot/generator/generate-valibot-schema.d.ts +1 -5
  41. package/dist/generator/valibot/generator/generate-valibot-schema.js +2 -6
  42. package/dist/generator/valibot/generator/generate-valibot-schemas.d.ts +7 -10
  43. package/dist/generator/valibot/generator/generate-valibot-schemas.js +7 -14
  44. package/dist/generator/valibot/generator/generate-valibot.d.ts +1 -4
  45. package/dist/generator/valibot/generator/generate-valibot.js +36 -51
  46. package/dist/generator/valibot/index.d.ts +7 -6
  47. package/dist/generator/valibot/index.js +41 -46
  48. package/dist/generator/valibot/validator/is-valibot-documentation.d.ts +1 -3
  49. package/dist/generator/valibot/validator/is-valibot-documentation.js +7 -8
  50. package/dist/generator/valibot/validator/is-valibot-validation.d.ts +1 -3
  51. package/dist/generator/valibot/validator/is-valibot-validation.js +4 -3
  52. package/dist/generator/zod/generator/generate-zod-infer.d.ts +1 -4
  53. package/dist/generator/zod/generator/generate-zod-infer.js +3 -10
  54. package/dist/generator/zod/generator/generate-zod-properties.d.ts +7 -10
  55. package/dist/generator/zod/generator/generate-zod-properties.js +15 -21
  56. package/dist/generator/zod/generator/generate-zod-schema.d.ts +1 -5
  57. package/dist/generator/zod/generator/generate-zod-schema.js +2 -6
  58. package/dist/generator/zod/generator/generate-zod-schemas.d.ts +7 -10
  59. package/dist/generator/zod/generator/generate-zod-schemas.js +7 -14
  60. package/dist/generator/zod/generator/generate-zod.d.ts +1 -4
  61. package/dist/generator/zod/generator/generate-zod.js +36 -51
  62. package/dist/generator/zod/index.d.ts +7 -6
  63. package/dist/generator/zod/index.js +41 -46
  64. package/dist/generator/zod/validator/is-zod-documentation.d.ts +1 -3
  65. package/dist/generator/zod/validator/is-zod-documentation.js +7 -8
  66. package/dist/generator/zod/validator/is-zod-validation.js +4 -3
  67. package/package.json +2 -2
package/README.md CHANGED
@@ -129,7 +129,7 @@ model Like {
129
129
 
130
130
  ## Generate
131
131
 
132
- ### Zod
132
+ ## Zod
133
133
 
134
134
  ```ts
135
135
  import { z } from 'zod'
@@ -294,9 +294,9 @@ export type Like = v.InferInput<typeof LikeSchema>
294
294
 
295
295
  ```mermaid
296
296
  erDiagram
297
- User ||--o{ Post : "(id) - (userId)"
298
- Post ||--o{ Like : "(id) - (postId)"
299
- User ||--o{ Like : "(id) - (userId)"
297
+ User ||--|{ Post : "(id) - (userId)"
298
+ Post ||--|{ Like : "(id) - (postId)"
299
+ User ||--|{ Like : "(id) - (userId)"
300
300
  User {
301
301
  String id "Unique identifier for the user."
302
302
  String username "Username of the user."
@@ -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,6 +4,4 @@
4
4
  * @param schemaName - The original schema name.
5
5
  * @returns The camelCase schema name.
6
6
  */
7
- export declare function getCamelCaseSchemaNameHelper(
8
- schemaName: string,
9
- ): string;
7
+ export declare function getCamelCaseSchemaNameHelper(schemaName: string): 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,6 +5,4 @@
5
5
  * @param schemaName - The original schema name.
6
6
  * @returns The PascalCase schema name.
7
7
  */
8
- export declare function getPascalCaseSchemaNameHelper(
9
- schemaName: string,
10
- ): string;
8
+ export declare function getPascalCaseSchemaNameHelper(schemaName: string): 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,7 +6,4 @@ 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(
10
- name: string,
11
- config: Config,
12
- ): string;
9
+ export declare function getVariableNameHelper(name: string, config: Config): 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,7 +6,4 @@ 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(
10
- name: string,
11
- config: Config,
12
- ): string;
9
+ export declare function getVariableSchemaNameHelper(name: string, config: Config): string;
@@ -11,11 +11,7 @@ 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)(
16
- name,
17
- )
18
- : (0, get_pascal_case_schema_name_helper_1.getPascalCaseSchemaNameHelper)(
19
- name,
20
- );
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);
21
17
  }
@@ -5,6 +5,4 @@ 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(
9
- validFields: ValidField[],
10
- ): GroupedFields;
8
+ export declare function groupByModelHelper(validFields: ValidField[]): 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,12 +4,10 @@ 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(
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
+ 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,5 +7,7 @@ exports.isFieldsValidation = isFieldsValidation;
7
7
  * @returns The fields validation
8
8
  */
9
9
  function isFieldsValidation(modelFields) {
10
- return modelFields.flat().filter((field) => field.validation !== null);
10
+ return modelFields
11
+ .flat()
12
+ .filter((field) => field.validation !== null);
11
13
  }
@@ -12,18 +12,12 @@ 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,
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
- ];
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];
29
23
  }
@@ -10,25 +10,20 @@ 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(
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);
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);
34
29
  }
@@ -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
  }
@@ -1,8 +1,7 @@
1
1
  import type { Relation } from "../type";
2
2
  /**
3
3
  * generate relation line
4
- * @function generateRelationLine
5
- * @param relation
6
- * @returns string
4
+ * @param { Relation } relation
5
+ * @returns { string } relation line
7
6
  */
8
7
  export declare function generateRelationLine(relation: Relation): string;
@@ -4,14 +4,13 @@ exports.generateRelationLine = generateRelationLine;
4
4
  const __1 = require("..");
5
5
  /**
6
6
  * generate relation line
7
- * @function generateRelationLine
8
- * @param relation
9
- * @returns string
7
+ * @param { Relation } relation
8
+ * @returns { string } relation line
10
9
  */
11
10
  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})"`;
11
+ const cardinality = __1.CARDINALITY_MAP[relation.type];
12
+ if (!cardinality) {
13
+ throw new Error(`Unknown relation type: ${relation.type}`);
14
+ }
15
+ return ` ${relation.fromModel} ${cardinality} ${relation.toModel} : "(${relation.fromField}) - (${relation.toField})"`;
17
16
  }
@@ -1,8 +1,9 @@
1
+ #!/usr/bin/env node
1
2
  import type { GeneratorOptions } from "@prisma/generator-helper";
2
3
  import type { RelationType } from "./type";
3
4
  export type Config = {
4
- output?: string;
5
- file?: string | string[];
5
+ output?: string;
6
+ file?: string | string[];
6
7
  };
7
8
  export declare const CARDINALITY_MAP: Record<RelationType, string>;
8
9
  export declare const ER_HEADER: readonly ["```mermaid", "erDiagram"];
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  "use strict";
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.ER_FOOTER = exports.ER_HEADER = exports.CARDINALITY_MAP = void 0;
@@ -6,43 +7,37 @@ const output_1 = require("./output");
6
7
  const generator_helper_1 = require("@prisma/generator-helper");
7
8
  const generate_er_content_1 = require("./generator/generate-er-content");
8
9
  const DEFAULT_CONFIG = {
9
- output: "./mermaid-er",
10
- file: "ER.md",
10
+ output: "./mermaid-er",
11
+ file: "ER.md",
11
12
  };
12
13
  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
14
+ // Required Relationships
15
+ "one-to-one": "||--||", // 1 --- 1
16
+ "one-to-many": "||--|{", // 1 --- 0..*
17
+ "many-to-one": "}|--||", // * --- 1
18
+ "many-to-many": "}|--|{", // * --- *
19
+ "one-to-zero-one": "||--o|", // 1 --- 0..1
20
+ "zero-one-to-one": "o|--||", // 0..1 --- 1
21
+ "zero-to-one": "o|--o|", // 0..1 --- 0..1
22
+ "zero-to-zero-one": "o|--o|", // Alias for zero-to-one
23
+ "zero-to-many": "o|--o{", // 0..1 --- 0..*
24
+ "zero-one-to-many": "o|--o{", // 0..1 --- *
25
+ "many-to-zero-one": "}|--o|", // * --- 0..1
26
+ // Optional Relationships (dotted lines)
27
+ "one-to-one-optional": "||..||", // 1 --- 1 optional
28
+ "one-to-many-optional": "||..o{", // 1 --- 0..* optional
29
+ "many-to-one-optional": "}|..||", // * --- 1 optional
30
+ "many-to-many-optional": "}|..o{", // * --- 0..* optional
31
+ "one-to-zero-one-optional": "||..o|", // 1 --- 0..1 optional
32
+ "zero-one-to-one-optional": "o|..||", // 0..1 --- 1 optional
33
+ "zero-to-one-optional": "o|..o|", // 0..1 --- 0..1 optional
34
+ "zero-to-many-optional": "o|..o{", // 0..1 --- 0..* optional
35
+ "zero-one-to-many-optional": "o|..o{", // 0..1 --- * optional
36
+ "many-to-zero-one-optional": "}|..o|", // * --- 0..1 optional
37
+ // Nuanced Patterns (Aliases)
38
+ "many-to-zero-many": "}|..o{", // * --- 0..*
39
+ "zero-many-to-many": "o{--|{", // 0..* --- *
40
+ "zero-many-to-zero-many": "o{--o{", // 0..* --- 0..*
46
41
  };
47
42
  // ER diagram header
48
43
  exports.ER_HEADER = ["```mermaid", "erDiagram"];
@@ -50,24 +45,24 @@ exports.ER_HEADER = ["```mermaid", "erDiagram"];
50
45
  exports.ER_FOOTER = ["```"];
51
46
  // main function
52
47
  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);
48
+ const config = {
49
+ output: options.generator.output?.value ?? DEFAULT_CONFIG.output,
50
+ file: options.generator.config?.file ?? DEFAULT_CONFIG.file,
51
+ };
52
+ const models = options.dmmf.datamodel.models;
53
+ const content = (0, generate_er_content_1.generateERContent)(models);
54
+ if (!config.output) {
55
+ throw new Error("output is required");
56
+ }
57
+ (0, output_1.OutputFile)(content, config);
63
58
  }
64
59
  // prisma generator handler
65
60
  (0, generator_helper_1.generatorHandler)({
66
- onManifest() {
67
- return {
68
- defaultOutput: "./mermaid-er",
69
- prettyName: "ekireki-ER",
70
- };
71
- },
72
- onGenerate: main,
61
+ onManifest() {
62
+ return {
63
+ defaultOutput: "./mermaid-er",
64
+ prettyName: "ekireki-ER",
65
+ };
66
+ },
67
+ onGenerate: main,
73
68
  });
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __importDefault =
3
- (this && this.__importDefault) ||
4
- function (mod) {
5
- return mod && mod.__esModule ? mod : { default: mod };
6
- };
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
7
5
  Object.defineProperty(exports, "__esModule", { value: true });
8
6
  exports.OutputFile = OutputFile;
9
7
  const node_fs_1 = __importDefault(require("node:fs"));
@@ -13,16 +11,14 @@ const node_fs_1 = __importDefault(require("node:fs"));
13
11
  * @param config - The configuration
14
12
  */
15
13
  function OutputFile(content, config) {
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
- });
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" });
28
24
  }
@@ -1,35 +1,11 @@
1
1
  import type { DMMF } from "@prisma/generator-helper";
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";
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";
27
3
  export type Relation = {
28
- fromModel: string;
29
- toModel: string;
30
- fromField: string;
31
- toField: string;
32
- type: RelationType;
4
+ fromModel: string;
5
+ toModel: string;
6
+ fromField: string;
7
+ toField: string;
8
+ type: RelationType;
33
9
  };
34
10
  export type Model = Readonly<DMMF.Model>;
35
11
  export type ERContent = readonly string[];
@@ -4,6 +4,4 @@
4
4
  * @param relations
5
5
  * @returns
6
6
  */
7
- export declare function excludeManyToOneRelations(
8
- relations: readonly string[],
9
- ): readonly string[];
7
+ export declare function excludeManyToOneRelations(relations: readonly string[]): 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
  }
@@ -1,8 +1,7 @@
1
1
  import type { Model } from "../type";
2
2
  /**
3
3
  * extract relations from model
4
- * @function extractRelations
5
- * @param model
6
- * @returns
4
+ * @param { Model } model
5
+ * @returns { readonly string[] }
7
6
  */
8
7
  export declare function extractRelations(model: Model): readonly string[];