hekireki 0.0.4 → 0.0.5

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 (63) hide show
  1. package/dist/common/format/index.js +6 -6
  2. package/dist/common/helper/get-camel-case-schema-name-helper.d.ts +1 -3
  3. package/dist/common/helper/get-camel-case-schema-name-helper.js +2 -2
  4. package/dist/common/helper/get-pascal-case-schema-name-helper.d.ts +1 -3
  5. package/dist/common/helper/get-pascal-case-schema-name-helper.js +2 -2
  6. package/dist/common/helper/get-variable-name-helper.d.ts +1 -4
  7. package/dist/common/helper/get-variable-name-helper.js +3 -3
  8. package/dist/common/helper/get-variable-schema-name-helper.d.ts +1 -4
  9. package/dist/common/helper/get-variable-schema-name-helper.js +3 -7
  10. package/dist/common/helper/group-by-model-helper.d.ts +1 -3
  11. package/dist/common/helper/group-by-model-helper.js +7 -7
  12. package/dist/common/text/capitalize.js +1 -1
  13. package/dist/common/text/decapitalize.js +1 -1
  14. package/dist/common/type/index.d.ts +8 -8
  15. package/dist/common/validator/is-fields-validation.d.ts +7 -9
  16. package/dist/common/validator/is-fields-validation.js +3 -1
  17. package/dist/generator/mermaid/generator/generate-er-content.js +8 -14
  18. package/dist/generator/mermaid/generator/generate-model-fields.js +16 -21
  19. package/dist/generator/mermaid/generator/generate-model-info.js +5 -5
  20. package/dist/generator/mermaid/generator/generate-relation-line.js +5 -5
  21. package/dist/generator/mermaid/index.d.ts +3 -2
  22. package/dist/generator/mermaid/index.js +53 -52
  23. package/dist/generator/mermaid/output/index.js +13 -17
  24. package/dist/generator/mermaid/type/index.d.ts +6 -30
  25. package/dist/generator/mermaid/validator/exclude-many-to-one-relations.d.ts +1 -3
  26. package/dist/generator/mermaid/validator/exclude-many-to-one-relations.js +1 -1
  27. package/dist/generator/mermaid/validator/extract-relations.js +13 -15
  28. package/dist/generator/mermaid/validator/is-relation.js +25 -25
  29. package/dist/generator/mermaid/validator/parse-relation.js +16 -17
  30. package/dist/generator/mermaid/validator/remove-duplicate-relations.d.ts +1 -3
  31. package/dist/generator/mermaid/validator/remove-duplicate-relations.js +1 -1
  32. package/dist/generator/valibot/generator/generate-valibot-infer-input.d.ts +1 -4
  33. package/dist/generator/valibot/generator/generate-valibot-infer-input.js +3 -10
  34. package/dist/generator/valibot/generator/generate-valibot-properties.d.ts +7 -10
  35. package/dist/generator/valibot/generator/generate-valibot-properties.js +15 -21
  36. package/dist/generator/valibot/generator/generate-valibot-schema.d.ts +1 -5
  37. package/dist/generator/valibot/generator/generate-valibot-schema.js +2 -6
  38. package/dist/generator/valibot/generator/generate-valibot-schemas.d.ts +7 -10
  39. package/dist/generator/valibot/generator/generate-valibot-schemas.js +7 -14
  40. package/dist/generator/valibot/generator/generate-valibot.d.ts +1 -4
  41. package/dist/generator/valibot/generator/generate-valibot.js +36 -51
  42. package/dist/generator/valibot/index.d.ts +7 -6
  43. package/dist/generator/valibot/index.js +41 -46
  44. package/dist/generator/valibot/validator/is-valibot-documentation.d.ts +1 -3
  45. package/dist/generator/valibot/validator/is-valibot-documentation.js +7 -8
  46. package/dist/generator/valibot/validator/is-valibot-validation.d.ts +1 -3
  47. package/dist/generator/valibot/validator/is-valibot-validation.js +4 -3
  48. package/dist/generator/zod/generator/generate-zod-infer.d.ts +1 -4
  49. package/dist/generator/zod/generator/generate-zod-infer.js +3 -10
  50. package/dist/generator/zod/generator/generate-zod-properties.d.ts +7 -10
  51. package/dist/generator/zod/generator/generate-zod-properties.js +15 -21
  52. package/dist/generator/zod/generator/generate-zod-schema.d.ts +1 -5
  53. package/dist/generator/zod/generator/generate-zod-schema.js +2 -6
  54. package/dist/generator/zod/generator/generate-zod-schemas.d.ts +7 -10
  55. package/dist/generator/zod/generator/generate-zod-schemas.js +7 -14
  56. package/dist/generator/zod/generator/generate-zod.d.ts +1 -4
  57. package/dist/generator/zod/generator/generate-zod.js +36 -51
  58. package/dist/generator/zod/index.d.ts +7 -6
  59. package/dist/generator/zod/index.js +41 -46
  60. package/dist/generator/zod/validator/is-zod-documentation.d.ts +1 -3
  61. package/dist/generator/zod/validator/is-zod-documentation.js +7 -8
  62. package/dist/generator/zod/validator/is-zod-validation.js +4 -3
  63. package/package.json +2 -2
@@ -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
  }
@@ -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,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,43 @@ 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
+ // Both sides required (one-to-one)
16
+ "one-to-one": "||--||", // 1 --- 1
17
+ // One side singular, the other multiple
18
+ "one-to-many": "||--o{", // 1 --- * (also known as one-to-zero-many)
19
+ "many-to-one": "}o--||", // * --- 1
20
+ // Both sides multiple (many-to-many)
21
+ "many-to-many": "}o--o{", // * --- *
22
+ // One side required, one side optional (0..1)
23
+ "one-to-zero-one": "||--o|", // 1 --- 0..1
24
+ "zero-one-to-one": "o|--||", // 0..1 --- 1
25
+ // Both sides optional singular (0..1 on both sides)
26
+ "zero-to-one": "o|--o|", // 0..1 --- 0..1
27
+ "zero-to-zero-one": "o|--o|", // Alias for zero-to-one
28
+ // One side optional singular, the other multiple
29
+ "zero-to-many": "o|--o{", // 0 --- *
30
+ "zero-one-to-many": "o|--o{", // 0..1 --- *
31
+ "many-to-zero-one": "}o--o|", // * --- 0..1
32
+ // Optional Relationships (using dotted lines)
33
+ "one-to-one-optional": "||..||", // 1..1
34
+ "one-to-many-optional": "||..o{", // 1..*
35
+ "many-to-one-optional": "}o..||", // *..1
36
+ "many-to-many-optional": "}o..o{", // *..*
37
+ "one-to-zero-one-optional": "||..o|", // 1..0..1
38
+ "zero-one-to-one-optional": "o|..||", // 0..1..1
39
+ "zero-to-one-optional": "o|..o|", // 0..1 (both sides optional singular)
40
+ "zero-to-many-optional": "o|..o{", // 0..* (optional multiple)
41
+ "zero-one-to-many-optional": "o|..o{", // 0..1 --- * (optional)
42
+ "many-to-zero-one-optional": "}o..o|", // *..0..1
43
+ // Nuanced Patterns (Aliases)
44
+ "many-to-zero-many": "}o..o{", // * --- 0..* (equivalent to many-to-many-optional)
45
+ "zero-many-to-many": "o{..}o", // 0..* --- * (left side optional multiple, right side required multiple)
46
+ "zero-many-to-zero-many": "o{..o{", // both sides optional multiple
46
47
  };
47
48
  // ER diagram header
48
49
  exports.ER_HEADER = ["```mermaid", "erDiagram"];
@@ -50,24 +51,24 @@ exports.ER_HEADER = ["```mermaid", "erDiagram"];
50
51
  exports.ER_FOOTER = ["```"];
51
52
  // main function
52
53
  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);
54
+ const config = {
55
+ output: options.generator.output?.value ?? DEFAULT_CONFIG.output,
56
+ file: options.generator.config?.file ?? DEFAULT_CONFIG.file,
57
+ };
58
+ const models = options.dmmf.datamodel.models;
59
+ const content = (0, generate_er_content_1.generateERContent)(models);
60
+ if (!config.output) {
61
+ throw new Error("output is required");
62
+ }
63
+ (0, output_1.OutputFile)(content, config);
63
64
  }
64
65
  // prisma generator handler
65
66
  (0, generator_helper_1.generatorHandler)({
66
- onManifest() {
67
- return {
68
- defaultOutput: "./mermaid-er",
69
- prettyName: "ekireki-ER",
70
- };
71
- },
72
- onGenerate: main,
67
+ onManifest() {
68
+ return {
69
+ defaultOutput: "./mermaid-er",
70
+ prettyName: "ekireki-ER",
71
+ };
72
+ },
73
+ onGenerate: main,
73
74
  });
@@ -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
  }
@@ -10,19 +10,17 @@ 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
21
- ? (0, generate_relation_line_1.generateRelationLine)(relation)
22
- : null;
23
- })
24
- .filter((line) => line !== null);
25
- relations.push(...annotationRelations);
26
- }
27
- 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 ? (0, generate_relation_line_1.generateRelationLine)(relation) : null;
21
+ })
22
+ .filter((line) => line !== null);
23
+ relations.push(...annotationRelations);
24
+ }
25
+ return relations;
28
26
  }