@nestledjs/api 0.2.0 → 1.0.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestledjs/api",
3
- "version": "0.2.0",
3
+ "version": "1.0.0",
4
4
  "generators": "./generators.json",
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -25,6 +25,6 @@
25
25
  "pg": "^8.13.0"
26
26
  },
27
27
  "peerDependencies": {
28
- "@nestledjs/utils": "0.1.4"
28
+ "@nestledjs/utils": "0.2.0"
29
29
  }
30
30
  }
@@ -3,6 +3,16 @@ import { join } from 'path'
3
3
  import { execSync } from 'child_process'
4
4
  import { getDMMF } from '@prisma/internals'
5
5
 
6
+ function extractQuotedStrings(input: string): string[] {
7
+ const values: string[] = []
8
+ const regex = /['"`]([^'"`]+)['"`]/g
9
+ let match: RegExpExecArray | null
10
+ while ((match = regex.exec(input)) !== null) {
11
+ values.push(match[1])
12
+ }
13
+ return values
14
+ }
15
+
6
16
  // Find project root and get schema path from package.json
7
17
  function findProjectRoot(startDir: string): string {
8
18
  try {
@@ -20,24 +30,37 @@ function findProjectRoot(startDir: string): string {
20
30
  }
21
31
  }
22
32
 
23
- // Determine the correct prisma import path based on package.json configuration
33
+ // Determine the correct prisma import path based on configuration
24
34
  function getPrismaImportPath(): string {
25
35
  try {
26
36
  const projectRoot = findProjectRoot(__dirname)
27
- const packageJsonPath = join(projectRoot, 'package.json')
28
- const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'))
29
-
30
- const schemaPathSetting = packageJson.prisma?.schema || ''
37
+ const cfgCandidates = ['prisma.config.ts']
38
+ let schemaPathSetting = ''
39
+ for (const cfg of cfgCandidates) {
40
+ const configPath = join(projectRoot, cfg)
41
+ if (existsSync(configPath)) {
42
+ const content = readFileSync(configPath, 'utf-8')
43
+ const joinMatch = content.match(/schema\s*:\s*path\.join\(([^)]+)\)/)
44
+ if (joinMatch && joinMatch[1]) {
45
+ const parts = extractQuotedStrings(joinMatch[1])
46
+ if (parts.length) schemaPathSetting = parts.join('/')
47
+ }
48
+ if (!schemaPathSetting) {
49
+ const strMatch = content.match(/schema\s*:\s*['"`]([^'"`]+)['"`]/)
50
+ if (strMatch && strMatch[1]) schemaPathSetting = strMatch[1]
51
+ }
52
+ if (schemaPathSetting) break
53
+ }
54
+ }
55
+ if (!schemaPathSetting) {
56
+ const packageJsonPath = join(projectRoot, 'package.json')
57
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'))
58
+ schemaPathSetting = packageJson.prisma?.schema || ''
59
+ }
31
60
 
32
- // Updated logic: if the schema path includes 'libs/api/prisma' (or similar new structure)
33
- if (
34
- schemaPathSetting.includes('libs/api/prisma') ||
35
- schemaPathSetting.includes('prisma/src/lib')
36
- ) {
61
+ if (schemaPathSetting.includes('libs/api/prisma') || schemaPathSetting.includes('prisma/src/lib')) {
37
62
  return '@<%= npmScope %>/api/prisma'
38
63
  }
39
-
40
- // Fallback to the original path if not explicitly the new structure
41
64
  return '@<%= npmScope %>/api/core/data-access'
42
65
  } catch (error) {
43
66
  console.error('Error determining Prisma import path:', error)
@@ -46,20 +69,34 @@ function getPrismaImportPath(): string {
46
69
  }
47
70
  }
48
71
 
49
- // Get schema directory path from package.json
72
+ // Get schema directory path from configuration
50
73
  function getPrismaSchemaDir(): string {
51
74
  // Renamed
52
75
  try {
53
76
  const projectRoot = findProjectRoot(__dirname)
77
+ const cfgCandidates = ['prisma.config.ts']
78
+ for (const cfg of cfgCandidates) {
79
+ const configPath = join(projectRoot, cfg)
80
+ if (existsSync(configPath)) {
81
+ const content = readFileSync(configPath, 'utf-8')
82
+ const joinMatch = content.match(/schema\s*:\s*path\.join\(([^)]+)\)/)
83
+ if (joinMatch && joinMatch[1]) {
84
+ const parts = extractQuotedStrings(joinMatch[1])
85
+ if (parts.length) return join(projectRoot, parts.join('/'))
86
+ }
87
+ const strMatch = content.match(/schema\s*:\s*['"`]([^'"`]+)['"`]/)
88
+ if (strMatch && strMatch[1]) {
89
+ return join(projectRoot, strMatch[1])
90
+ }
91
+ }
92
+ }
93
+ // Fallback to old package.json field if config not found
54
94
  const packageJsonPath = join(projectRoot, 'package.json')
55
95
  const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'))
56
-
57
- if (!packageJson.prisma?.schema) {
58
- throw new Error('prisma.schema path not found in package.json')
96
+ if (packageJson.prisma?.schema) {
97
+ return join(projectRoot, packageJson.prisma.schema)
59
98
  }
60
-
61
- // Join the project root with the schema path (which should be a directory)
62
- return join(projectRoot, packageJson.prisma.schema)
99
+ throw new Error('Prisma schema path not found in config')
63
100
  } catch (error) {
64
101
  console.error('Error getting Prisma schema directory path:', error)
65
102
  // Fallback to the old directory path for backward compatibility
@@ -0,0 +1,12 @@
1
+ import 'dotenv/config'
2
+ import * as path from 'node:path'
3
+ import { defineConfig } from 'prisma/config'
4
+
5
+ export default defineConfig({
6
+ schema: path.join('libs', 'api', 'prisma', 'src', 'lib', 'schemas'),
7
+ migrations: {
8
+ seed: 'ts-node --project libs/api/prisma/tsconfig.lib.json libs/api/prisma/src/lib/seed/seed.ts',
9
+ },
10
+ })
11
+
12
+
@@ -8,13 +8,26 @@ function generateLibraries(tree_1) {
8
8
  return tslib_1.__awaiter(this, arguments, void 0, function* (tree, options = {}) {
9
9
  const templateRootPath = (0, devkit_1.joinPathFragments)(__dirname, './files');
10
10
  const overwrite = options.overwrite === true;
11
- // Update package.json
11
+ // Create prisma.config.ts at workspace root via template (idempotent)
12
+ if (!tree.exists('prisma.config.ts')) {
13
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(templateRootPath, 'config'), '.', { tmpl: '' });
14
+ // Ensure rename from template path to root file name if needed
15
+ if (!tree.exists('prisma.config.ts') && tree.exists('./prisma.config.ts__tmpl__')) {
16
+ tree.rename('./prisma.config.ts__tmpl__', 'prisma.config.ts');
17
+ }
18
+ }
19
+ // Update package.json scripts (remove deprecated prisma.schema field if present)
12
20
  (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
13
- // Add prisma schema path
14
- json.prisma = {
15
- schema: 'libs/api/prisma/src/lib/schemas',
16
- seed: 'ts-node --project libs/api/core/models/tsconfig.lib.json libs/api/prisma/src/lib/seed/seed.ts',
17
- };
21
+ var _a;
22
+ if ((_a = json.prisma) === null || _a === void 0 ? void 0 : _a.schema) {
23
+ delete json.prisma.schema;
24
+ }
25
+ if (!json.prisma) {
26
+ json.prisma = {};
27
+ }
28
+ if (!json.prisma.seed) {
29
+ json.prisma.seed = 'ts-node --project libs/api/prisma/tsconfig.lib.json libs/api/prisma/src/lib/seed/seed.ts';
30
+ }
18
31
  // Add GraphQL model generation script for the 'core' library
19
32
  if (!json.scripts) {
20
33
  json.scripts = {};
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../generators/api/src/prisma/generator.ts"],"names":[],"mappings":";;AAIA,oCA6DC;;AAjED,uCAAkG;AAClG,4CAAsD;AAGtD,SAA8B,iBAAiB;iEAAC,IAAU,EAAE,UAAoC,EAAE;QAChG,MAAM,gBAAgB,GAAG,IAAA,0BAAiB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAChE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,IAAI,CAAA;QAE5C,sBAAsB;QACtB,IAAA,mBAAU,EAAC,IAAI,EAAE,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;YACxC,yBAAyB;YACzB,IAAI,CAAC,MAAM,GAAG;gBACZ,MAAM,EAAE,iCAAiC;gBACzC,IAAI,EAAE,+FAA+F;aACtG,CAAA;YACD,6DAA6D;YAC7D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;YACnB,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;oBAC7B,0GAA0G,CAAA;YAC9G,CAAC;YAED,0DAA0D;YAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,2CAA2C,CAAA;YAC5E,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,qBAAqB,CAAA;YACxD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,oBAAoB,CAAA;YACtD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,sBAAsB,CAAA;YAC1D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,oDAAoD,CAAA;YACvF,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;oBACzB,0FAA0F,CAAA;YAC9F,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,2BAA2B,CAAA;YAC7D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,+CAA+C,CAAA;YAChF,CAAC;YACD,+EAA+E;YAC/E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;oBACvB,uHAAuH,CAAA;YAC3H,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,MAAM,IAAA,2BAAmB,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,CAAC,CAAA;QAEhF,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAA;QAEvB,OAAO,GAAG,EAAE;YACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC;CAAA"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../generators/api/src/prisma/generator.ts"],"names":[],"mappings":"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"}