@lexmata/prisma-ent-generator 0.3.0 → 0.3.1

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.
package/README.md CHANGED
@@ -7,7 +7,7 @@ Define your data model once in Prisma and generate fully working Ent schemas —
7
7
  ## Features
8
8
 
9
9
  - **Full Ent install** — generates `generate.go`, `entc.go`, and `schema/*.go` so you can immediately run `go generate ./ent`
10
- - **Environment variable toggle** — controlled by `GENERATE_ENT`; skips when unset or `false`, runs when set to `true`
10
+ - **Environment variable toggle** — controlled by `isEnabled = env("GENERATE_ENT")` in the generator config; skips when unset or `false`, runs when `true`
11
11
  - **Scalar type mapping** — `String`, `Int`, `BigInt`, `Float`, `Decimal`, `Boolean`, `DateTime`, `Json`, `Bytes`
12
12
  - **Enum support** — Prisma enums map to inline `field.Enum(...).Values(...)` with defaults
13
13
  - **Relationship edges** — O2O, O2M, and M2M relations are translated to `edge.To` / `edge.From` with correct ownership, `.Ref()`, `.Unique()`, and `.Required()`
@@ -32,8 +32,9 @@ pnpm add @lexmata/prisma-ent-generator
32
32
 
33
33
  ```prisma
34
34
  generator ent {
35
- provider = "@lexmata/prisma-ent-generator"
36
- output = "./ent"
35
+ provider = "@lexmata/prisma-ent-generator"
36
+ output = "./ent"
37
+ isEnabled = env("GENERATE_ENT")
37
38
  }
38
39
  ```
39
40
 
@@ -43,12 +44,14 @@ generator ent {
43
44
  GENERATE_ENT=true npx prisma generate
44
45
  ```
45
46
 
46
- Without `GENERATE_ENT=true`, the generator prints a skip message and produces no output:
47
+ When `isEnabled` resolves to anything other than `"true"`, the generator prints a skip message and produces no output:
47
48
 
48
49
  ```
49
- prisma-ent-generator: Skipping — set GENERATE_ENT=true to enable.
50
+ prisma-ent-generator: Skipping — set isEnabled = env("GENERATE_ENT") to "true" in your generator config.
50
51
  ```
51
52
 
53
+ You can use any environment variable name you like — just change the `env()` argument accordingly.
54
+
52
55
  ### 3. Run Ent code generation
53
56
 
54
57
  ```bash
@@ -1,9 +1,19 @@
1
1
  import type { GeneratorOptions } from '@prisma/generator-helper';
2
2
  /**
3
- * Check whether the generator is enabled via the GENERATE_ENT environment variable.
4
- * Defaults to disabled if the variable is absent or not set to "true".
3
+ * Check whether the generator is enabled via the `isEnabled` config property
4
+ * in the Prisma generator block.
5
+ *
6
+ * The property should reference an environment variable using Prisma's `env()`:
7
+ *
8
+ * generator ent {
9
+ * isEnabled = env("GENERATE_ENT")
10
+ * }
11
+ *
12
+ * Prisma resolves the env var and passes the value through
13
+ * `options.generator.config.isEnabled`. Returns true only when the
14
+ * resolved value is "true" (case-insensitive).
5
15
  */
6
- export declare function isEnabled(): boolean;
16
+ export declare function isEnabled(configValue?: string): boolean;
7
17
  /**
8
18
  * Main generator function — receives the full Prisma DMMF and generator config,
9
19
  * then writes a complete Go Ent installation to the output directory.
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAWvE;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDvE"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAKvE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DvE"}
package/dist/generator.js CHANGED
@@ -11,16 +11,21 @@ const schema_1 = require("./helpers/schema");
11
11
  const entfiles_1 = require("./helpers/entfiles");
12
12
  const utils_1 = require("./utils");
13
13
  /**
14
- * The environment variable that controls whether the generator runs.
15
- * Set to "true" to enable generation; any other value or absence disables it.
16
- */
17
- const ENV_VAR = 'GENERATE_ENT';
18
- /**
19
- * Check whether the generator is enabled via the GENERATE_ENT environment variable.
20
- * Defaults to disabled if the variable is absent or not set to "true".
14
+ * Check whether the generator is enabled via the `isEnabled` config property
15
+ * in the Prisma generator block.
16
+ *
17
+ * The property should reference an environment variable using Prisma's `env()`:
18
+ *
19
+ * generator ent {
20
+ * isEnabled = env("GENERATE_ENT")
21
+ * }
22
+ *
23
+ * Prisma resolves the env var and passes the value through
24
+ * `options.generator.config.isEnabled`. Returns true only when the
25
+ * resolved value is "true" (case-insensitive).
21
26
  */
22
- function isEnabled() {
23
- return process.env[ENV_VAR]?.toLowerCase() === 'true';
27
+ function isEnabled(configValue) {
28
+ return configValue?.toLowerCase() === 'true';
24
29
  }
25
30
  /**
26
31
  * Main generator function — receives the full Prisma DMMF and generator config,
@@ -36,8 +41,10 @@ function isEnabled() {
36
41
  * ...
37
42
  */
38
43
  async function generate(options) {
39
- if (!isEnabled()) {
40
- console.log(`prisma-ent-generator: Skipping set ${ENV_VAR}=true to enable.`);
44
+ const isEnabledValue = options.generator.config.isEnabled;
45
+ const configValue = Array.isArray(isEnabledValue) ? isEnabledValue[0] : isEnabledValue;
46
+ if (!isEnabled(configValue)) {
47
+ console.log('prisma-ent-generator: Skipping — set isEnabled = env("GENERATE_ENT") to "true" in your generator config.');
41
48
  return;
42
49
  }
43
50
  const outputDir = options.generator.output?.value;
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lexmata/prisma-ent-generator",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Prisma generator that produces Go Ent schema files from your Prisma schema",
5
5
  "license": "MIT",
6
6
  "author": {