@zenstackhq/sdk 1.10.0 → 2.0.0-alpha.2

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/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { generate as generateModelMeta } from './model-meta-generator';
4
4
  export * from './policy';
5
5
  export * from './prisma';
6
6
  export * from './types';
7
+ export * from './typescript-expression-transformer';
7
8
  export * from './utils';
8
9
  export * from './validation';
9
10
  export * from './zmodel-code-generator';
package/index.js CHANGED
@@ -22,6 +22,7 @@ Object.defineProperty(exports, "generateModelMeta", { enumerable: true, get: fun
22
22
  __exportStar(require("./policy"), exports);
23
23
  __exportStar(require("./prisma"), exports);
24
24
  __exportStar(require("./types"), exports);
25
+ __exportStar(require("./typescript-expression-transformer"), exports);
25
26
  __exportStar(require("./utils"), exports);
26
27
  __exportStar(require("./validation"), exports);
27
28
  __exportStar(require("./zmodel-code-generator"), exports);
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,8CAA4B;AAC5B,+DAAuE;AAA9D,yHAAA,QAAQ,OAAqB;AACtC,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB;AACxB,+CAA6B;AAC7B,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,8CAA4B;AAC5B,+DAAuE;AAA9D,yHAAA,QAAQ,OAAqB;AACtC,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AACxB,sEAAoD;AACpD,0CAAwB;AACxB,+CAA6B;AAC7B,0DAAwC"}
@@ -1,9 +1,20 @@
1
1
  import { DataModel } from '@zenstackhq/language/ast';
2
- import { Project } from 'ts-morph';
2
+ import { Project, SourceFile } from 'ts-morph';
3
+ /**
4
+ * Options for generating model metadata
5
+ */
3
6
  export type ModelMetaGeneratorOptions = {
7
+ /**
8
+ * Output directory
9
+ */
4
10
  output: string;
5
- compile: boolean;
6
- preserveTsFiles: boolean;
11
+ /**
12
+ * Whether to generate all attributes
13
+ */
7
14
  generateAttributes: boolean;
15
+ /**
16
+ * Whether to preserve the pre-compilation TypeScript files
17
+ */
18
+ preserveTsFiles?: boolean;
8
19
  };
9
- export declare function generate(project: Project, models: DataModel[], options: ModelMetaGeneratorOptions): Promise<void>;
20
+ export declare function generate(project: Project, models: DataModel[], options: ModelMetaGeneratorOptions): Promise<SourceFile>;
@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.generate = void 0;
13
13
  const ast_1 = require("@zenstackhq/language/ast");
14
+ const langium_1 = require("langium");
14
15
  const lower_case_first_1 = require("lower-case-first");
15
16
  const ts_morph_1 = require("ts-morph");
16
17
  const _1 = require(".");
@@ -20,126 +21,189 @@ function generate(project, models, options) {
20
21
  sf.addStatements('/* eslint-disable */');
21
22
  sf.addVariableStatement({
22
23
  declarationKind: ts_morph_1.VariableDeclarationKind.Const,
23
- declarations: [{ name: 'metadata', initializer: (writer) => generateModelMetadata(models, writer, options) }],
24
+ declarations: [
25
+ { name: 'metadata', initializer: (writer) => generateModelMetadata(models, sf, writer, options) },
26
+ ],
24
27
  });
25
28
  sf.addStatements('export default metadata;');
26
- if (!options.compile || options.preserveTsFiles) {
27
- // save ts files
28
- yield (0, _1.saveProject)(project);
29
- }
30
- if (options.compile) {
31
- yield (0, _1.emitProject)(project);
29
+ if (options.preserveTsFiles) {
30
+ yield sf.save();
32
31
  }
32
+ return sf;
33
33
  });
34
34
  }
35
35
  exports.generate = generate;
36
- function generateModelMetadata(dataModels, writer, options) {
36
+ function generateModelMetadata(dataModels, sourceFile, writer, options) {
37
37
  writer.block(() => {
38
- writer.write('fields:');
39
- writer.block(() => {
40
- for (const model of dataModels) {
41
- writer.write(`${(0, lower_case_first_1.lowerCaseFirst)(model.name)}:`);
42
- writer.block(() => {
43
- var _a;
44
- for (const f of model.fields) {
45
- const backlink = getBackLink(f);
46
- const fkMapping = generateForeignKeyMapping(f);
47
- writer.write(`${f.name}: {
48
- name: "${f.name}",
49
- type: "${f.type.reference
50
- ? f.type.reference.$refText
51
- : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
52
- f.type.type}",`);
53
- if ((0, _1.isIdField)(f)) {
54
- writer.write(`
55
- isId: true,`);
56
- }
57
- if ((0, ast_1.isDataModel)((_a = f.type.reference) === null || _a === void 0 ? void 0 : _a.ref)) {
58
- writer.write(`
59
- isDataModel: true,`);
60
- }
61
- if (f.type.array) {
62
- writer.write(`
63
- isArray: true,`);
64
- }
65
- if (f.type.optional) {
66
- writer.write(`
67
- isOptional: true,`);
68
- }
69
- if (options.generateAttributes) {
70
- const attrs = getFieldAttributes(f);
71
- if (attrs.length > 0) {
72
- writer.write(`
73
- attributes: ${JSON.stringify(attrs)},`);
74
- }
75
- }
76
- else {
77
- // only include essential attributes
78
- const attrs = getFieldAttributes(f).filter((attr) => ['@default', '@updatedAt'].includes(attr.name));
79
- if (attrs.length > 0) {
80
- writer.write(`
81
- attributes: ${JSON.stringify(attrs)},`);
82
- }
83
- }
84
- if (backlink) {
85
- writer.write(`
86
- backLink: '${backlink.name}',`);
87
- }
88
- if (isRelationOwner(f, backlink)) {
89
- writer.write(`
90
- isRelationOwner: true,`);
91
- }
92
- if ((0, _1.isForeignKeyField)(f)) {
93
- writer.write(`
94
- isForeignKey: true,`);
95
- }
96
- if (fkMapping && Object.keys(fkMapping).length > 0) {
97
- writer.write(`
98
- foreignKeyMapping: ${JSON.stringify(fkMapping)},`);
99
- }
100
- if (isAutoIncrement(f)) {
101
- writer.write(`
102
- isAutoIncrement: true,`);
103
- }
104
- writer.write(`
105
- },`);
106
- }
107
- });
108
- writer.write(',');
38
+ writeModels(sourceFile, writer, dataModels, options);
39
+ writeDeleteCascade(writer, dataModels);
40
+ writeAuthModel(writer, dataModels);
41
+ });
42
+ }
43
+ function writeModels(sourceFile, writer, dataModels, options) {
44
+ writer.write('models:');
45
+ writer.block(() => {
46
+ for (const model of dataModels) {
47
+ writer.write(`${(0, lower_case_first_1.lowerCaseFirst)(model.name)}:`);
48
+ writer.block(() => {
49
+ writer.write(`name: '${model.name}',`);
50
+ writeBaseTypes(writer, model);
51
+ writeFields(sourceFile, writer, model, options);
52
+ writeUniqueConstraints(writer, model);
53
+ if (options.generateAttributes) {
54
+ writeModelAttributes(writer, model);
55
+ }
56
+ writeDiscriminator(writer, model);
57
+ });
58
+ writer.writeLine(',');
59
+ }
60
+ });
61
+ writer.writeLine(',');
62
+ }
63
+ function writeBaseTypes(writer, model) {
64
+ if (model.superTypes.length > 0) {
65
+ writer.write('baseTypes: [');
66
+ writer.write(model.superTypes.map((t) => { var _a; return `'${(_a = t.ref) === null || _a === void 0 ? void 0 : _a.name}'`; }).join(', '));
67
+ writer.write('],');
68
+ }
69
+ }
70
+ function writeAuthModel(writer, dataModels) {
71
+ const authModel = (0, _1.getAuthModel)(dataModels);
72
+ if (authModel) {
73
+ writer.writeLine(`authModel: '${authModel.name}'`);
74
+ }
75
+ }
76
+ function writeDeleteCascade(writer, dataModels) {
77
+ writer.write('deleteCascade:');
78
+ writer.block(() => {
79
+ for (const model of dataModels) {
80
+ const cascades = getDeleteCascades(model);
81
+ if (cascades.length > 0) {
82
+ writer.writeLine(`${(0, lower_case_first_1.lowerCaseFirst)(model.name)}: [${cascades.map((n) => `'${n}'`).join(', ')}],`);
109
83
  }
110
- });
111
- writer.write(',');
84
+ }
85
+ });
86
+ writer.writeLine(',');
87
+ }
88
+ function writeUniqueConstraints(writer, model) {
89
+ const constraints = getUniqueConstraints(model);
90
+ if (constraints.length > 0) {
112
91
  writer.write('uniqueConstraints:');
113
92
  writer.block(() => {
114
- for (const model of dataModels) {
115
- writer.write(`${(0, lower_case_first_1.lowerCaseFirst)(model.name)}:`);
116
- writer.block(() => {
117
- for (const constraint of getUniqueConstraints(model)) {
118
- writer.write(`${constraint.name}: {
119
- name: "${constraint.name}",
120
- fields: ${JSON.stringify(constraint.fields)}
121
- },`);
122
- }
123
- });
124
- writer.write(',');
93
+ for (const constraint of constraints) {
94
+ writer.write(`${constraint.name}: {
95
+ name: "${constraint.name}",
96
+ fields: ${JSON.stringify(constraint.fields)}
97
+ },`);
125
98
  }
126
99
  });
127
100
  writer.write(',');
128
- writer.write('deleteCascade:');
129
- writer.block(() => {
130
- for (const model of dataModels) {
131
- const cascades = getDeleteCascades(model);
132
- if (cascades.length > 0) {
133
- writer.writeLine(`${(0, lower_case_first_1.lowerCaseFirst)(model.name)}: [${cascades.map((n) => `'${n}'`).join(', ')}],`);
101
+ }
102
+ }
103
+ function writeModelAttributes(writer, model) {
104
+ const attrs = getAttributes(model);
105
+ if (attrs.length > 0) {
106
+ writer.write(`
107
+ attributes: ${JSON.stringify(attrs)},`);
108
+ }
109
+ }
110
+ function writeDiscriminator(writer, model) {
111
+ const delegateAttr = (0, _1.getAttribute)(model, '@@delegate');
112
+ if (!delegateAttr) {
113
+ return;
114
+ }
115
+ const discriminator = (0, _1.getAttributeArg)(delegateAttr, 'discriminator');
116
+ if (!discriminator) {
117
+ return;
118
+ }
119
+ if (discriminator) {
120
+ writer.write(`discriminator: ${JSON.stringify(discriminator.target.$refText)},`);
121
+ }
122
+ }
123
+ function writeFields(sourceFile, writer, model, options) {
124
+ writer.write('fields:');
125
+ writer.block(() => {
126
+ var _a;
127
+ for (const f of model.fields) {
128
+ const backlink = getBackLink(f);
129
+ const fkMapping = generateForeignKeyMapping(f);
130
+ writer.write(`${f.name}: {`);
131
+ writer.write(`
132
+ name: "${f.name}",
133
+ type: "${f.type.reference
134
+ ? f.type.reference.$refText
135
+ : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
136
+ f.type.type}",`);
137
+ if ((0, _1.isIdField)(f)) {
138
+ writer.write(`
139
+ isId: true,`);
140
+ }
141
+ if ((0, ast_1.isDataModel)((_a = f.type.reference) === null || _a === void 0 ? void 0 : _a.ref)) {
142
+ writer.write(`
143
+ isDataModel: true,`);
144
+ }
145
+ if (f.type.array) {
146
+ writer.write(`
147
+ isArray: true,`);
148
+ }
149
+ if (f.type.optional) {
150
+ writer.write(`
151
+ isOptional: true,`);
152
+ }
153
+ if (options.generateAttributes) {
154
+ const attrs = getAttributes(f);
155
+ if (attrs.length > 0) {
156
+ writer.write(`
157
+ attributes: ${JSON.stringify(attrs)},`);
134
158
  }
135
159
  }
136
- });
137
- writer.write(',');
138
- const authModel = (0, _1.getAuthModel)(dataModels);
139
- if (authModel) {
140
- writer.writeLine(`authModel: '${authModel.name}'`);
160
+ else {
161
+ // only include essential attributes
162
+ const attrs = getAttributes(f).filter((attr) => ['@default', '@updatedAt'].includes(attr.name));
163
+ if (attrs.length > 0) {
164
+ writer.write(`
165
+ attributes: ${JSON.stringify(attrs)},`);
166
+ }
167
+ }
168
+ if (backlink) {
169
+ writer.write(`
170
+ backLink: '${backlink.name}',`);
171
+ }
172
+ if (isRelationOwner(f, backlink)) {
173
+ writer.write(`
174
+ isRelationOwner: true,`);
175
+ }
176
+ if ((0, _1.isForeignKeyField)(f)) {
177
+ writer.write(`
178
+ isForeignKey: true,`);
179
+ const relationField = (0, _1.getRelationField)(f);
180
+ if (relationField) {
181
+ writer.write(`
182
+ relationField: '${relationField.name}',`);
183
+ }
184
+ }
185
+ if (fkMapping && Object.keys(fkMapping).length > 0) {
186
+ writer.write(`
187
+ foreignKeyMapping: ${JSON.stringify(fkMapping)},`);
188
+ }
189
+ const defaultValueProvider = generateDefaultValueProvider(f, sourceFile);
190
+ if (defaultValueProvider) {
191
+ writer.write(`
192
+ defaultValueProvider: ${defaultValueProvider},`);
193
+ }
194
+ if (f.$inheritedFrom && (0, _1.isDelegateModel)(f.$inheritedFrom) && !(0, _1.isIdField)(f)) {
195
+ writer.write(`
196
+ inheritedFrom: ${JSON.stringify(f.$inheritedFrom.name)},`);
197
+ }
198
+ if (isAutoIncrement(f)) {
199
+ writer.write(`
200
+ isAutoIncrement: true,`);
201
+ }
202
+ writer.write(`
203
+ },`);
141
204
  }
142
205
  });
206
+ writer.write(',');
143
207
  }
144
208
  function getBackLink(field) {
145
209
  var _a, _b, _c;
@@ -165,13 +229,14 @@ function getBackLink(field) {
165
229
  return undefined;
166
230
  }
167
231
  function getRelationName(field) {
168
- var _a, _b;
169
- const relAttr = field.attributes.find((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === 'relation'; });
170
- const relName = relAttr && ((_a = relAttr.args) === null || _a === void 0 ? void 0 : _a[0]) && (0, _1.getLiteral)((_b = relAttr.args) === null || _b === void 0 ? void 0 : _b[0].value);
171
- return relName;
232
+ const relAttr = (0, _1.getAttribute)(field, '@relation');
233
+ if (!relAttr) {
234
+ return undefined;
235
+ }
236
+ return (0, _1.getAttributeArgLiteral)(relAttr, 'name');
172
237
  }
173
- function getFieldAttributes(field) {
174
- return field.attributes
238
+ function getAttributes(target) {
239
+ return target.attributes
175
240
  .map((attr) => {
176
241
  const args = [];
177
242
  for (const arg of attr.args) {
@@ -255,7 +320,6 @@ function generateForeignKeyMapping(field) {
255
320
  }
256
321
  const fieldNames = fields.items.map((item) => ((0, ast_1.isReferenceExpr)(item) ? item.target.$refText : undefined));
257
322
  const referenceNames = references.items.map((item) => ((0, ast_1.isReferenceExpr)(item) ? item.target.$refText : undefined));
258
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
259
323
  const result = {};
260
324
  referenceNames.forEach((name, i) => {
261
325
  if (name) {
@@ -290,6 +354,35 @@ function getDeleteCascades(model) {
290
354
  })
291
355
  .map((m) => m.name);
292
356
  }
357
+ function generateDefaultValueProvider(field, sourceFile) {
358
+ var _a;
359
+ const defaultAttr = (0, _1.getAttribute)(field, '@default');
360
+ if (!defaultAttr) {
361
+ return undefined;
362
+ }
363
+ const expr = (_a = defaultAttr.args[0]) === null || _a === void 0 ? void 0 : _a.value;
364
+ if (!expr) {
365
+ return undefined;
366
+ }
367
+ // find `auth()` in default value expression
368
+ const hasAuth = (0, langium_1.streamAst)(expr).some(_1.isAuthInvocation);
369
+ if (!hasAuth) {
370
+ return undefined;
371
+ }
372
+ // generates a provider function like:
373
+ // function $default$Model$field(user: any) { ... }
374
+ const func = sourceFile.addFunction({
375
+ name: `$default$${field.$container.name}$${field.name}`,
376
+ parameters: [{ name: 'user', type: 'any' }],
377
+ returnType: 'unknown',
378
+ statements: (writer) => {
379
+ const tsWriter = new _1.TypeScriptExpressionTransformer({ context: _1.ExpressionContext.DefaultValue });
380
+ const code = tsWriter.transform(expr, false);
381
+ writer.write(`return ${code};`);
382
+ },
383
+ });
384
+ return func.getName();
385
+ }
293
386
  function isAutoIncrement(field) {
294
387
  var _a;
295
388
  const defaultAttr = (0, _1.getAttribute)(field, '@default');
@@ -1 +1 @@
1
- {"version":3,"file":"model-meta-generator.js","sourceRoot":"","sources":["../src/model-meta-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-meta-generator.js","sourceRoot":"","sources":["../src/model-meta-generator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zenstackhq/sdk",
3
- "version": "1.10.0",
3
+ "version": "2.0.0-alpha.2",
4
4
  "description": "ZenStack plugin development SDK",
5
5
  "main": "index.js",
6
6
  "publishConfig": {
@@ -14,13 +14,15 @@
14
14
  "@prisma/generator-helper": "^5.0.0",
15
15
  "@prisma/internals": "^4.16.0",
16
16
  "@prisma/internals-v5": "npm:@prisma/internals@^5.0.0",
17
+ "langium": "1.3.1",
17
18
  "lower-case-first": "^2.0.2",
18
19
  "prettier": "^2.8.3 || 3.x",
19
20
  "semver": "^7.5.2",
20
21
  "ts-morph": "^16.0.0",
22
+ "ts-pattern": "^4.3.0",
21
23
  "upper-case-first": "^2.0.2",
22
- "@zenstackhq/language": "1.10.0",
23
- "@zenstackhq/runtime": "1.10.0"
24
+ "@zenstackhq/language": "2.0.0-alpha.2",
25
+ "@zenstackhq/runtime": "2.0.0-alpha.2"
24
26
  },
25
27
  "devDependencies": {
26
28
  "@types/semver": "^7.3.13"
package/prisma.d.ts CHANGED
@@ -1,10 +1,9 @@
1
1
  import type { DMMF } from '@prisma/generator-helper';
2
- import { Model } from './ast';
3
- export { getPrismaVersion } from '@zenstackhq/runtime';
2
+ import type { PluginOptions } from './types';
4
3
  /**
5
- * Given a ZModel and an import context directory, compute the import spec for the Prisma Client.
4
+ * Given an import context directory and plugin options, compute the import spec for the Prisma Client.
6
5
  */
7
- export declare function getPrismaClientImportSpec(model: Model, importingFromDir: string): any;
6
+ export declare function getPrismaClientImportSpec(importingFromDir: string, options: PluginOptions): string;
8
7
  export type GetDMMFOptions = {
9
8
  datamodel?: string;
10
9
  cwd?: string;
@@ -17,3 +16,7 @@ export type GetDMMFOptions = {
17
16
  * Loads Prisma DMMF with appropriate version
18
17
  */
19
18
  export declare function getDMMF(options: GetDMMFOptions, defaultPrismaVersion?: string): Promise<DMMF.Document>;
19
+ /**
20
+ * Gets the installed Prisma's version
21
+ */
22
+ export declare function getPrismaVersion(): string | undefined;
package/prisma.js CHANGED
@@ -27,57 +27,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  return (mod && mod.__esModule) ? mod : { "default": mod };
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.getDMMF = exports.getPrismaClientImportSpec = exports.getPrismaVersion = void 0;
31
- const runtime_1 = require("@zenstackhq/runtime");
30
+ exports.getPrismaVersion = exports.getDMMF = exports.getPrismaClientImportSpec = void 0;
32
31
  const path_1 = __importDefault(require("path"));
33
32
  const semver = __importStar(require("semver"));
34
- const ast_1 = require("./ast");
35
- const utils_1 = require("./utils");
36
- // reexport
37
- var runtime_2 = require("@zenstackhq/runtime");
38
- Object.defineProperty(exports, "getPrismaVersion", { enumerable: true, get: function () { return runtime_2.getPrismaVersion; } });
33
+ const constants_1 = require("./constants");
39
34
  /**
40
- * Given a ZModel and an import context directory, compute the import spec for the Prisma Client.
35
+ * Given an import context directory and plugin options, compute the import spec for the Prisma Client.
41
36
  */
42
- function getPrismaClientImportSpec(model, importingFromDir) {
43
- var _a;
44
- const generator = model.declarations.find((d) => (0, ast_1.isGeneratorDecl)(d) &&
45
- d.fields.some((f) => f.name === 'provider' && (0, utils_1.getLiteral)(f.value) === 'prisma-client-js'));
46
- const clientOutputField = generator === null || generator === void 0 ? void 0 : generator.fields.find((f) => f.name === 'output');
47
- const clientOutput = (0, utils_1.getLiteral)(clientOutputField === null || clientOutputField === void 0 ? void 0 : clientOutputField.value);
48
- if (!clientOutput) {
49
- // no user-declared Prisma Client output location
37
+ function getPrismaClientImportSpec(importingFromDir, options) {
38
+ if (!options.prismaClientPath || options.prismaClientPath === '@prisma/client') {
50
39
  return '@prisma/client';
51
40
  }
52
- if (path_1.default.isAbsolute(clientOutput)) {
53
- // absolute path
54
- return clientOutput;
41
+ if (options.prismaClientPath.startsWith(constants_1.RUNTIME_PACKAGE)) {
42
+ return options.prismaClientPath;
55
43
  }
56
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
57
- const zmodelDir = path_1.default.dirname(model.$document.uri.fsPath);
58
- // compute prisma schema absolute output path
59
- let prismaSchemaOutputDir = path_1.default.resolve(zmodelDir, './prisma');
60
- const prismaPlugin = model.declarations.find((d) => (0, ast_1.isPlugin)(d) && d.fields.some((f) => f.name === 'provider' && (0, utils_1.getLiteral)(f.value) === '@core/prisma'));
61
- if (prismaPlugin) {
62
- const output = (0, utils_1.getLiteral)((_a = prismaPlugin.fields.find((f) => f.name === 'output')) === null || _a === void 0 ? void 0 : _a.value);
63
- if (output) {
64
- if (path_1.default.isAbsolute(output)) {
65
- // absolute prisma schema output path
66
- prismaSchemaOutputDir = path_1.default.dirname(output);
67
- }
68
- else {
69
- prismaSchemaOutputDir = path_1.default.dirname(path_1.default.resolve(zmodelDir, output));
70
- }
71
- }
44
+ if (path_1.default.isAbsolute(options.prismaClientPath)) {
45
+ // absolute path
46
+ return options.prismaClientPath;
72
47
  }
73
- // resolve the prisma client output path, which is relative to the prisma schema
74
- const resolvedPrismaClientOutput = path_1.default.resolve(prismaSchemaOutputDir, clientOutput);
75
- // DEBUG:
76
- // console.log('PRISMA SCHEMA PATH:', prismaSchemaOutputDir);
77
- // console.log('PRISMA CLIENT PATH:', resolvedPrismaClientOutput);
78
- // console.log('IMPORTING PATH:', importingFromDir);
48
+ // resolve absolute path based on the zmodel file location
49
+ const resolvedPrismaClientOutput = path_1.default.resolve(path_1.default.dirname(options.schemaPath), options.prismaClientPath);
50
+ // translate to path relative to the importing context directory
51
+ let result = path_1.default.relative(importingFromDir, resolvedPrismaClientOutput);
52
+ // remove leading `node_modules` (which may be provided by the user)
53
+ result = result.replace(/^([./\\]*)?node_modules\//, '');
79
54
  // compute prisma client absolute output dir relative to the importing file
80
- return normalizePath(path_1.default.relative(importingFromDir, resolvedPrismaClientOutput));
55
+ return normalizePath(result);
81
56
  }
82
57
  exports.getPrismaClientImportSpec = getPrismaClientImportSpec;
83
58
  function normalizePath(p) {
@@ -88,7 +63,7 @@ function normalizePath(p) {
88
63
  */
89
64
  function getDMMF(options, defaultPrismaVersion) {
90
65
  var _a;
91
- const prismaVersion = (_a = (0, runtime_1.getPrismaVersion)()) !== null && _a !== void 0 ? _a : defaultPrismaVersion;
66
+ const prismaVersion = (_a = getPrismaVersion()) !== null && _a !== void 0 ? _a : defaultPrismaVersion;
92
67
  if (prismaVersion && semver.gte(prismaVersion, '5.0.0')) {
93
68
  const _getDMMF = require('@prisma/internals-v5').getDMMF;
94
69
  return _getDMMF(options);
@@ -99,4 +74,30 @@ function getDMMF(options, defaultPrismaVersion) {
99
74
  }
100
75
  }
101
76
  exports.getDMMF = getDMMF;
77
+ /**
78
+ * Gets the installed Prisma's version
79
+ */
80
+ function getPrismaVersion() {
81
+ if (process.env.ZENSTACK_TEST === '1') {
82
+ // test environment
83
+ try {
84
+ return require(path_1.default.resolve('./node_modules/@prisma/client/package.json')).version;
85
+ }
86
+ catch (_a) {
87
+ return undefined;
88
+ }
89
+ }
90
+ try {
91
+ return require('@prisma/client/package.json').version;
92
+ }
93
+ catch (_b) {
94
+ try {
95
+ return require('prisma/package.json').version;
96
+ }
97
+ catch (_c) {
98
+ return undefined;
99
+ }
100
+ }
101
+ }
102
+ exports.getPrismaVersion = getPrismaVersion;
102
103
  //# sourceMappingURL=prisma.js.map