zenstack 1.0.0-alpha.23 → 1.0.0-alpha.24
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 +79 -9
- package/cli/cli-error.js +3 -5
- package/cli/cli-error.js.map +1 -1
- package/cli/cli-util.js +123 -105
- package/cli/cli-util.js.map +1 -1
- package/cli/index.js +105 -63
- package/cli/index.js.map +1 -1
- package/cli/plugin-runner.js +130 -127
- package/cli/plugin-runner.js.map +1 -1
- package/language-server/constants.js +5 -13
- package/language-server/constants.js.map +1 -1
- package/language-server/main.js +8 -15
- package/language-server/main.js.map +1 -1
- package/language-server/types.js +3 -1
- package/language-server/types.js.map +1 -1
- package/language-server/utils.js +13 -16
- package/language-server/utils.js.map +1 -1
- package/language-server/validator/attribute-validator.js +3 -7
- package/language-server/validator/attribute-validator.js.map +1 -1
- package/language-server/validator/datamodel-validator.js +293 -347
- package/language-server/validator/datamodel-validator.js.map +1 -1
- package/language-server/validator/datasource-validator.js +61 -71
- package/language-server/validator/datasource-validator.js.map +1 -1
- package/language-server/validator/enum-validator.js +6 -10
- package/language-server/validator/enum-validator.js.map +1 -1
- package/language-server/validator/expression-validator.js +25 -31
- package/language-server/validator/expression-validator.js.map +1 -1
- package/language-server/validator/schema-validator.js +18 -25
- package/language-server/validator/schema-validator.js.map +1 -1
- package/language-server/validator/utils.js +86 -85
- package/language-server/validator/utils.js.map +1 -1
- package/language-server/validator/zmodel-validator.js +55 -58
- package/language-server/validator/zmodel-validator.js.map +1 -1
- package/language-server/zmodel-formatter.js +40 -21
- package/language-server/zmodel-formatter.js.map +1 -1
- package/language-server/zmodel-linker.js +328 -331
- package/language-server/zmodel-linker.js.map +1 -1
- package/language-server/zmodel-module.js +50 -59
- package/language-server/zmodel-module.js.map +1 -1
- package/language-server/zmodel-scope.js +35 -25
- package/language-server/zmodel-scope.js.map +1 -1
- package/language-server/zmodel-workspace-manager.js +30 -18
- package/language-server/zmodel-workspace-manager.js.map +1 -1
- package/package.json +8 -12
- package/plugins/access-policy/expression-writer.js +301 -292
- package/plugins/access-policy/expression-writer.js.map +1 -1
- package/plugins/access-policy/index.js +20 -11
- package/plugins/access-policy/index.js.map +1 -1
- package/plugins/access-policy/policy-guard-generator.js +327 -321
- package/plugins/access-policy/policy-guard-generator.js.map +1 -1
- package/plugins/access-policy/typescript-expression-transformer.js +94 -95
- package/plugins/access-policy/typescript-expression-transformer.js.map +1 -1
- package/plugins/access-policy/utils.js +7 -9
- package/plugins/access-policy/utils.js.map +1 -1
- package/plugins/access-policy/zod-schema-generator.js +143 -159
- package/plugins/access-policy/zod-schema-generator.js.map +1 -1
- package/plugins/model-meta/index.js +97 -102
- package/plugins/model-meta/index.js.map +1 -1
- package/plugins/plugin-utils.js +34 -40
- package/plugins/plugin-utils.js.map +1 -1
- package/plugins/prisma/indent-string.js +4 -8
- package/plugins/prisma/indent-string.js.map +1 -1
- package/plugins/prisma/index.js +20 -11
- package/plugins/prisma/index.js.map +1 -1
- package/plugins/prisma/prisma-builder.js +235 -213
- package/plugins/prisma/prisma-builder.js.map +1 -1
- package/plugins/prisma/schema-generator.js +205 -192
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/prisma/zmodel-code-generator.js +109 -114
- package/plugins/prisma/zmodel-code-generator.js.map +1 -1
- package/telemetry.js +107 -90
- package/telemetry.js.map +1 -1
- package/types.js +3 -1
- package/types.js.map +1 -1
- package/utils/ast-utils.js +67 -67
- package/utils/ast-utils.js.map +1 -1
- package/utils/exec-utils.js +6 -15
- package/utils/exec-utils.js.map +1 -1
- package/utils/pkg-utils.js +38 -35
- package/utils/pkg-utils.js.map +1 -1
- package/utils/version-utils.js +9 -10
- package/utils/version-utils.js.map +1 -1
- package/global.d.js +0 -1
- package/global.d.js.map +0 -1
|
@@ -1,218 +1,231 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
16
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
17
|
+
const fs_1 = __importDefault(require("fs"));
|
|
18
|
+
const promises_1 = require("fs/promises");
|
|
19
|
+
const path_1 = __importDefault(require("path"));
|
|
20
|
+
const ast_utils_1 = require("../../utils/ast-utils");
|
|
21
|
+
const exec_utils_1 = require("../../utils/exec-utils");
|
|
22
|
+
const zmodel_code_generator_1 = __importDefault(require("./zmodel-code-generator"));
|
|
23
|
+
const prisma_builder_1 = require("./prisma-builder");
|
|
17
24
|
/**
|
|
18
25
|
* Generates Prisma schema file
|
|
19
26
|
*/
|
|
20
27
|
class PrismaSchemaGenerator {
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
constructor() {
|
|
29
|
+
this.zModelGenerator = new zmodel_code_generator_1.default();
|
|
30
|
+
this.PRELUDE = `//////////////////////////////////////////////////////////////////////////////////////////////
|
|
23
31
|
// DO NOT MODIFY THIS FILE //
|
|
24
32
|
// This file is automatically generated by ZenStack CLI and should not be manually updated. //
|
|
25
33
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
|
26
34
|
|
|
27
35
|
`;
|
|
28
|
-
async generate(model, options) {
|
|
29
|
-
const prisma = new _prismaBuilder.PrismaModel();
|
|
30
|
-
for (const decl of model.declarations) {
|
|
31
|
-
switch (decl.$type) {
|
|
32
|
-
case _ast.DataSource:
|
|
33
|
-
this.generateDataSource(prisma, decl);
|
|
34
|
-
break;
|
|
35
|
-
case _ast.Enum:
|
|
36
|
-
this.generateEnum(prisma, decl);
|
|
37
|
-
break;
|
|
38
|
-
case _ast.DataModel:
|
|
39
|
-
this.generateModel(prisma, decl);
|
|
40
|
-
break;
|
|
41
|
-
case _ast.GeneratorDecl:
|
|
42
|
-
this.generateGenerator(prisma, decl);
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
const outFile = options.output ?? './prisma/schema.prisma';
|
|
47
|
-
if (!_fs.default.existsSync(_path.default.dirname(outFile))) {
|
|
48
|
-
_fs.default.mkdirSync(_path.default.dirname(outFile), {
|
|
49
|
-
recursive: true
|
|
50
|
-
});
|
|
51
36
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
37
|
+
generate(model, options) {
|
|
38
|
+
var _a;
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
const prisma = new prisma_builder_1.PrismaModel();
|
|
41
|
+
for (const decl of model.declarations) {
|
|
42
|
+
switch (decl.$type) {
|
|
43
|
+
case ast_1.DataSource:
|
|
44
|
+
this.generateDataSource(prisma, decl);
|
|
45
|
+
break;
|
|
46
|
+
case ast_1.Enum:
|
|
47
|
+
this.generateEnum(prisma, decl);
|
|
48
|
+
break;
|
|
49
|
+
case ast_1.DataModel:
|
|
50
|
+
this.generateModel(prisma, decl);
|
|
51
|
+
break;
|
|
52
|
+
case ast_1.GeneratorDecl:
|
|
53
|
+
this.generateGenerator(prisma, decl);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
69
56
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
{
|
|
74
|
-
const r = this.extractDataSourceUrl(f.value);
|
|
75
|
-
if (!r) {
|
|
76
|
-
throw new _sdk.PluginError('Invalid value for datasource url');
|
|
57
|
+
const outFile = (_a = options.output) !== null && _a !== void 0 ? _a : './prisma/schema.prisma';
|
|
58
|
+
if (!fs_1.default.existsSync(path_1.default.dirname(outFile))) {
|
|
59
|
+
fs_1.default.mkdirSync(path_1.default.dirname(outFile), { recursive: true });
|
|
77
60
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
61
|
+
yield (0, promises_1.writeFile)(outFile, this.PRELUDE + prisma.toString());
|
|
62
|
+
// run 'prisma generate'
|
|
63
|
+
yield (0, exec_utils_1.execSync)(`npx prisma generate --schema ${outFile}`);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
generateDataSource(prisma, dataSource) {
|
|
67
|
+
let provider = undefined;
|
|
68
|
+
let url = undefined;
|
|
69
|
+
let shadowDatabaseUrl = undefined;
|
|
70
|
+
for (const f of dataSource.fields) {
|
|
71
|
+
switch (f.name) {
|
|
72
|
+
case 'provider': {
|
|
73
|
+
if (this.isStringLiteral(f.value)) {
|
|
74
|
+
provider = f.value.value;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
throw new sdk_1.PluginError('Datasource provider must be set to a string');
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case 'url': {
|
|
82
|
+
const r = this.extractDataSourceUrl(f.value);
|
|
83
|
+
if (!r) {
|
|
84
|
+
throw new sdk_1.PluginError('Invalid value for datasource url');
|
|
85
|
+
}
|
|
86
|
+
url = r;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
case 'shadowDatabaseUrl': {
|
|
90
|
+
const r = this.extractDataSourceUrl(f.value);
|
|
91
|
+
if (!r) {
|
|
92
|
+
throw new sdk_1.PluginError('Invalid value for datasource url');
|
|
93
|
+
}
|
|
94
|
+
shadowDatabaseUrl = r;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
86
97
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
98
|
+
}
|
|
99
|
+
if (!provider) {
|
|
100
|
+
throw new sdk_1.PluginError('Datasource is missing "provider" field');
|
|
101
|
+
}
|
|
102
|
+
if (!url) {
|
|
103
|
+
throw new sdk_1.PluginError('Datasource is missing "url" field');
|
|
104
|
+
}
|
|
105
|
+
prisma.addDataSource(dataSource.name, provider, url, shadowDatabaseUrl);
|
|
91
106
|
}
|
|
92
|
-
|
|
93
|
-
|
|
107
|
+
extractDataSourceUrl(fieldValue) {
|
|
108
|
+
var _a;
|
|
109
|
+
if (this.isStringLiteral(fieldValue)) {
|
|
110
|
+
return new prisma_builder_1.DataSourceUrl(fieldValue.value, false);
|
|
111
|
+
}
|
|
112
|
+
else if ((0, ast_1.isInvocationExpr)(fieldValue) &&
|
|
113
|
+
((_a = fieldValue.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'env' &&
|
|
114
|
+
fieldValue.args.length === 1 &&
|
|
115
|
+
this.isStringLiteral(fieldValue.args[0].value)) {
|
|
116
|
+
return new prisma_builder_1.DataSourceUrl(fieldValue.args[0].value.value, true);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
94
121
|
}
|
|
95
|
-
|
|
96
|
-
|
|
122
|
+
generateGenerator(prisma, decl) {
|
|
123
|
+
prisma.addGenerator(decl.name, decl.fields.map((f) => {
|
|
124
|
+
const value = (0, ast_1.isArrayExpr)(f.value) ? (0, sdk_1.getLiteralArray)(f.value) : (0, sdk_1.getLiteral)(f.value);
|
|
125
|
+
return { name: f.name, value };
|
|
126
|
+
}));
|
|
97
127
|
}
|
|
98
|
-
prisma
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
128
|
+
generateModel(prisma, decl) {
|
|
129
|
+
const model = prisma.addModel(decl.name);
|
|
130
|
+
for (const field of decl.fields) {
|
|
131
|
+
this.generateModelField(model, field);
|
|
132
|
+
}
|
|
133
|
+
const { allowAll, denyAll, hasFieldValidation } = (0, ast_utils_1.analyzePolicies)(decl);
|
|
134
|
+
if ((!allowAll && !denyAll) || hasFieldValidation) {
|
|
135
|
+
// generate auxiliary fields for policy check
|
|
136
|
+
// add an "zenstack_guard" field for dealing with pure auth() related conditions
|
|
137
|
+
model.addField(sdk_1.GUARD_FIELD_NAME, 'Boolean', [
|
|
138
|
+
new prisma_builder_1.FieldAttribute('@default', [
|
|
139
|
+
new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('Boolean', true)),
|
|
140
|
+
]),
|
|
141
|
+
]);
|
|
142
|
+
// add an "zenstack_transaction" field for tracking records created/updated with nested writes
|
|
143
|
+
model.addField(sdk_1.TRANSACTION_FIELD_NAME, 'String?');
|
|
144
|
+
// create an index for "zenstack_transaction" field
|
|
145
|
+
model.addAttribute('@@index', [
|
|
146
|
+
new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('Array', [
|
|
147
|
+
new prisma_builder_1.AttributeArgValue('FieldReference', sdk_1.TRANSACTION_FIELD_NAME),
|
|
148
|
+
])),
|
|
149
|
+
]);
|
|
150
|
+
}
|
|
151
|
+
for (const attr of decl.attributes.filter((attr) => attr.decl.ref && this.isPrismaAttribute(attr.decl.ref))) {
|
|
152
|
+
this.generateModelAttribute(model, attr);
|
|
153
|
+
}
|
|
154
|
+
decl.attributes
|
|
155
|
+
.filter((attr) => attr.decl.ref && !this.isPrismaAttribute(attr.decl.ref))
|
|
156
|
+
.forEach((attr) => model.addComment('/// ' + this.zModelGenerator.generateAttribute(attr)));
|
|
157
|
+
// user defined comments pass-through
|
|
158
|
+
decl.comments.forEach((c) => model.addComment(c));
|
|
108
159
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
prisma.addGenerator(decl.name, decl.fields.map(f => {
|
|
112
|
-
const value = (0, _ast.isArrayExpr)(f.value) ? (0, _sdk.getLiteralArray)(f.value) : (0, _sdk.getLiteral)(f.value);
|
|
113
|
-
return {
|
|
114
|
-
name: f.name,
|
|
115
|
-
value
|
|
116
|
-
};
|
|
117
|
-
}));
|
|
118
|
-
}
|
|
119
|
-
generateModel(prisma, decl) {
|
|
120
|
-
const model = prisma.addModel(decl.name);
|
|
121
|
-
for (const field of decl.fields) {
|
|
122
|
-
this.generateModelField(model, field);
|
|
160
|
+
isPrismaAttribute(attr) {
|
|
161
|
+
return !!attr.attributes.find((a) => { var _a; return ((_a = a.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@@prisma'; });
|
|
123
162
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
model.addAttribute('@@index', [new _prismaBuilder.AttributeArg(undefined, new _prismaBuilder.AttributeArgValue('Array', [new _prismaBuilder.AttributeArgValue('FieldReference', _sdk.TRANSACTION_FIELD_NAME)]))]);
|
|
163
|
+
generateModelField(model, field) {
|
|
164
|
+
var _a, _b;
|
|
165
|
+
const fieldType = field.type.type || ((_b = (_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) === null || _b === void 0 ? void 0 : _b.name);
|
|
166
|
+
if (!fieldType) {
|
|
167
|
+
throw new sdk_1.PluginError(`Field type is not resolved: ${field.$container.name}.${field.name}`);
|
|
168
|
+
}
|
|
169
|
+
const type = new prisma_builder_1.ModelFieldType(fieldType, field.type.array, field.type.optional);
|
|
170
|
+
const attributes = field.attributes
|
|
171
|
+
.filter((attr) => attr.decl.ref && this.isPrismaAttribute(attr.decl.ref))
|
|
172
|
+
.map((attr) => this.makeFieldAttribute(attr));
|
|
173
|
+
const nonPrismaAttributes = field.attributes.filter((attr) => !attr.decl.ref || !this.isPrismaAttribute(attr.decl.ref));
|
|
174
|
+
const documentations = nonPrismaAttributes.map((attr) => '/// ' + this.zModelGenerator.generateAttribute(attr));
|
|
175
|
+
const result = model.addField(field.name, type, attributes, documentations);
|
|
176
|
+
// user defined comments pass-through
|
|
177
|
+
field.comments.forEach((c) => result.addComment(c));
|
|
140
178
|
}
|
|
141
|
-
|
|
142
|
-
|
|
179
|
+
makeFieldAttribute(attr) {
|
|
180
|
+
return new prisma_builder_1.FieldAttribute((0, sdk_1.resolved)(attr.decl).name, attr.args.map((arg) => this.makeAttributeArg(arg)));
|
|
143
181
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
// user defined comments pass-through
|
|
147
|
-
decl.comments.forEach(c => model.addComment(c));
|
|
148
|
-
}
|
|
149
|
-
isPrismaAttribute(attr) {
|
|
150
|
-
return !!attr.attributes.find(a => {
|
|
151
|
-
var _a$decl$ref;
|
|
152
|
-
return ((_a$decl$ref = a.decl.ref) === null || _a$decl$ref === void 0 ? void 0 : _a$decl$ref.name) === '@@@prisma';
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
generateModelField(model, field) {
|
|
156
|
-
var _field$type$reference, _field$type$reference2;
|
|
157
|
-
const fieldType = field.type.type || ((_field$type$reference = field.type.reference) === null || _field$type$reference === void 0 ? void 0 : (_field$type$reference2 = _field$type$reference.ref) === null || _field$type$reference2 === void 0 ? void 0 : _field$type$reference2.name);
|
|
158
|
-
if (!fieldType) {
|
|
159
|
-
throw new _sdk.PluginError(`Field type is not resolved: ${field.$container.name}.${field.name}`);
|
|
182
|
+
makeAttributeArg(arg) {
|
|
183
|
+
return new prisma_builder_1.AttributeArg(arg.name, this.makeAttributeArgValue(arg.value));
|
|
160
184
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
|
|
185
|
+
makeAttributeArgValue(node) {
|
|
186
|
+
if ((0, ast_1.isLiteralExpr)(node)) {
|
|
187
|
+
switch (typeof node.value) {
|
|
188
|
+
case 'string':
|
|
189
|
+
return new prisma_builder_1.AttributeArgValue('String', node.value);
|
|
190
|
+
case 'number':
|
|
191
|
+
return new prisma_builder_1.AttributeArgValue('Number', node.value);
|
|
192
|
+
case 'boolean':
|
|
193
|
+
return new prisma_builder_1.AttributeArgValue('Boolean', node.value);
|
|
194
|
+
default:
|
|
195
|
+
throw new sdk_1.PluginError(`Unexpected literal type: ${typeof node.value}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else if ((0, ast_1.isArrayExpr)(node)) {
|
|
199
|
+
return new prisma_builder_1.AttributeArgValue('Array', new Array(...node.items.map((item) => this.makeAttributeArgValue(item))));
|
|
200
|
+
}
|
|
201
|
+
else if ((0, ast_1.isReferenceExpr)(node)) {
|
|
202
|
+
return new prisma_builder_1.AttributeArgValue('FieldReference', new prisma_builder_1.FieldReference((0, sdk_1.resolved)(node.target).name, node.args.map((arg) => new prisma_builder_1.FieldReferenceArg(arg.name, arg.value))));
|
|
203
|
+
}
|
|
204
|
+
else if ((0, ast_1.isInvocationExpr)(node)) {
|
|
205
|
+
// invocation
|
|
206
|
+
return new prisma_builder_1.AttributeArgValue('FunctionCall', this.makeFunctionCall(node));
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
throw new sdk_1.PluginError(`Unsupported attribute argument expression type: ${node.$type}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
makeFunctionCall(node) {
|
|
213
|
+
return new prisma_builder_1.FunctionCall((0, sdk_1.resolved)(node.function).name, node.args.map((arg) => {
|
|
214
|
+
if (!(0, ast_1.isLiteralExpr)(arg.value)) {
|
|
215
|
+
throw new sdk_1.PluginError('Function call argument must be literal');
|
|
216
|
+
}
|
|
217
|
+
return new prisma_builder_1.FunctionCallArg(arg.name, arg.value.value);
|
|
218
|
+
}));
|
|
219
|
+
}
|
|
220
|
+
generateModelAttribute(model, attr) {
|
|
221
|
+
model.attributes.push(new prisma_builder_1.ModelAttribute((0, sdk_1.resolved)(attr.decl).name, attr.args.map((arg) => this.makeAttributeArg(arg))));
|
|
222
|
+
}
|
|
223
|
+
generateEnum(prisma, decl) {
|
|
224
|
+
prisma.addEnum(decl.name, decl.fields.map((f) => f.name));
|
|
225
|
+
}
|
|
226
|
+
isStringLiteral(node) {
|
|
227
|
+
return (0, ast_1.isLiteralExpr)(node) && typeof node.value === 'string';
|
|
197
228
|
}
|
|
198
|
-
}
|
|
199
|
-
makeFunctionCall(node) {
|
|
200
|
-
return new _prismaBuilder.FunctionCall((0, _sdk.resolved)(node.function).name, node.args.map(arg => {
|
|
201
|
-
if (!(0, _ast.isLiteralExpr)(arg.value)) {
|
|
202
|
-
throw new _sdk.PluginError('Function call argument must be literal');
|
|
203
|
-
}
|
|
204
|
-
return new _prismaBuilder.FunctionCallArg(arg.name, arg.value.value);
|
|
205
|
-
}));
|
|
206
|
-
}
|
|
207
|
-
generateModelAttribute(model, attr) {
|
|
208
|
-
model.attributes.push(new _prismaBuilder.ModelAttribute((0, _sdk.resolved)(attr.decl).name, attr.args.map(arg => this.makeAttributeArg(arg))));
|
|
209
|
-
}
|
|
210
|
-
generateEnum(prisma, decl) {
|
|
211
|
-
prisma.addEnum(decl.name, decl.fields.map(f => f.name));
|
|
212
|
-
}
|
|
213
|
-
isStringLiteral(node) {
|
|
214
|
-
return (0, _ast.isLiteralExpr)(node) && typeof node.value === 'string';
|
|
215
|
-
}
|
|
216
229
|
}
|
|
217
230
|
exports.default = PrismaSchemaGenerator;
|
|
218
231
|
//# sourceMappingURL=schema-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-generator.js","names":["PrismaSchemaGenerator","zModelGenerator","ZModelCodeGenerator","PRELUDE","generate","model","options","prisma","PrismaModel","decl","declarations","$type","DataSource","generateDataSource","Enum","generateEnum","DataModel","generateModel","GeneratorDecl","generateGenerator","outFile","output","fs","existsSync","path","dirname","mkdirSync","recursive","writeFile","toString","execSync","dataSource","provider","undefined","url","shadowDatabaseUrl","f","fields","name","isStringLiteral","value","PluginError","r","extractDataSourceUrl","addDataSource","fieldValue","PrismaDataSourceUrl","isInvocationExpr","function","ref","args","length","addGenerator","map","isArrayExpr","getLiteralArray","getLiteral","addModel","field","generateModelField","allowAll","denyAll","hasFieldValidation","analyzePolicies","addField","GUARD_FIELD_NAME","PrismaFieldAttribute","PrismaAttributeArg","PrismaAttributeArgValue","TRANSACTION_FIELD_NAME","addAttribute","attr","attributes","filter","isPrismaAttribute","generateModelAttribute","forEach","addComment","generateAttribute","comments","c","find","a","fieldType","type","reference","$container","ModelFieldType","array","optional","makeFieldAttribute","nonPrismaAttributes","documentations","result","resolved","arg","makeAttributeArg","makeAttributeArgValue","node","isLiteralExpr","Array","items","item","isReferenceExpr","PrismaFieldReference","target","PrismaFieldReferenceArg","makeFunctionCall","PrismaFunctionCall","PrismaFunctionCallArg","push","PrismaModelAttribute","addEnum"],"sources":["../../../src/plugins/prisma/schema-generator.ts"],"sourcesContent":["import {\n AstNode,\n Attribute,\n AttributeArg,\n DataModel,\n DataModelAttribute,\n DataModelField,\n DataModelFieldAttribute,\n DataSource,\n Enum,\n Expression,\n GeneratorDecl,\n InvocationExpr,\n LiteralExpr,\n Model,\n isArrayExpr,\n isInvocationExpr,\n isLiteralExpr,\n isReferenceExpr,\n} from '@zenstackhq/language/ast';\nimport {\n GUARD_FIELD_NAME,\n PluginError,\n PluginOptions,\n TRANSACTION_FIELD_NAME,\n getLiteral,\n getLiteralArray,\n resolved,\n} from '@zenstackhq/sdk';\nimport fs from 'fs';\nimport { writeFile } from 'fs/promises';\nimport path from 'path';\nimport { analyzePolicies } from '../../utils/ast-utils';\nimport { execSync } from '../../utils/exec-utils';\nimport ZModelCodeGenerator from './zmodel-code-generator';\nimport {\n ModelFieldType,\n AttributeArg as PrismaAttributeArg,\n AttributeArgValue as PrismaAttributeArgValue,\n Model as PrismaDataModel,\n DataSourceUrl as PrismaDataSourceUrl,\n FieldAttribute as PrismaFieldAttribute,\n FieldReference as PrismaFieldReference,\n FieldReferenceArg as PrismaFieldReferenceArg,\n FunctionCall as PrismaFunctionCall,\n FunctionCallArg as PrismaFunctionCallArg,\n PrismaModel,\n ModelAttribute as PrismaModelAttribute,\n} from './prisma-builder';\n\n/**\n * Generates Prisma schema file\n */\nexport default class PrismaSchemaGenerator {\n private zModelGenerator: ZModelCodeGenerator = new ZModelCodeGenerator();\n\n private readonly PRELUDE = `//////////////////////////////////////////////////////////////////////////////////////////////\n// DO NOT MODIFY THIS FILE //\n// This file is automatically generated by ZenStack CLI and should not be manually updated. //\n//////////////////////////////////////////////////////////////////////////////////////////////\n\n`;\n\n async generate(model: Model, options: PluginOptions) {\n const prisma = new PrismaModel();\n\n for (const decl of model.declarations) {\n switch (decl.$type) {\n case DataSource:\n this.generateDataSource(prisma, decl as DataSource);\n break;\n\n case Enum:\n this.generateEnum(prisma, decl as Enum);\n break;\n\n case DataModel:\n this.generateModel(prisma, decl as DataModel);\n break;\n\n case GeneratorDecl:\n this.generateGenerator(prisma, decl as GeneratorDecl);\n break;\n }\n }\n\n const outFile = (options.output as string) ?? './prisma/schema.prisma';\n if (!fs.existsSync(path.dirname(outFile))) {\n fs.mkdirSync(path.dirname(outFile), { recursive: true });\n }\n await writeFile(outFile, this.PRELUDE + prisma.toString());\n\n // run 'prisma generate'\n await execSync(`npx prisma generate --schema ${outFile}`);\n }\n\n private generateDataSource(prisma: PrismaModel, dataSource: DataSource) {\n let provider: string | undefined = undefined;\n let url: PrismaDataSourceUrl | undefined = undefined;\n let shadowDatabaseUrl: PrismaDataSourceUrl | undefined = undefined;\n\n for (const f of dataSource.fields) {\n switch (f.name) {\n case 'provider': {\n if (this.isStringLiteral(f.value)) {\n provider = f.value.value as string;\n } else {\n throw new PluginError('Datasource provider must be set to a string');\n }\n break;\n }\n\n case 'url': {\n const r = this.extractDataSourceUrl(f.value);\n if (!r) {\n throw new PluginError('Invalid value for datasource url');\n }\n url = r;\n break;\n }\n\n case 'shadowDatabaseUrl': {\n const r = this.extractDataSourceUrl(f.value);\n if (!r) {\n throw new PluginError('Invalid value for datasource url');\n }\n shadowDatabaseUrl = r;\n break;\n }\n }\n }\n\n if (!provider) {\n throw new PluginError('Datasource is missing \"provider\" field');\n }\n if (!url) {\n throw new PluginError('Datasource is missing \"url\" field');\n }\n\n prisma.addDataSource(dataSource.name, provider, url, shadowDatabaseUrl);\n }\n\n private extractDataSourceUrl(fieldValue: LiteralExpr | InvocationExpr) {\n if (this.isStringLiteral(fieldValue)) {\n return new PrismaDataSourceUrl(fieldValue.value as string, false);\n } else if (\n isInvocationExpr(fieldValue) &&\n fieldValue.function.ref?.name === 'env' &&\n fieldValue.args.length === 1 &&\n this.isStringLiteral(fieldValue.args[0].value)\n ) {\n return new PrismaDataSourceUrl(fieldValue.args[0].value.value as string, true);\n } else {\n return null;\n }\n }\n\n private generateGenerator(prisma: PrismaModel, decl: GeneratorDecl) {\n prisma.addGenerator(\n decl.name,\n decl.fields.map((f) => {\n const value = isArrayExpr(f.value) ? getLiteralArray(f.value) : getLiteral(f.value);\n return { name: f.name, value };\n })\n );\n }\n\n private generateModel(prisma: PrismaModel, decl: DataModel) {\n const model = prisma.addModel(decl.name);\n for (const field of decl.fields) {\n this.generateModelField(model, field);\n }\n\n const { allowAll, denyAll, hasFieldValidation } = analyzePolicies(decl);\n\n if ((!allowAll && !denyAll) || hasFieldValidation) {\n // generate auxiliary fields for policy check\n\n // add an \"zenstack_guard\" field for dealing with pure auth() related conditions\n model.addField(GUARD_FIELD_NAME, 'Boolean', [\n new PrismaFieldAttribute('@default', [\n new PrismaAttributeArg(undefined, new PrismaAttributeArgValue('Boolean', true)),\n ]),\n ]);\n\n // add an \"zenstack_transaction\" field for tracking records created/updated with nested writes\n model.addField(TRANSACTION_FIELD_NAME, 'String?');\n\n // create an index for \"zenstack_transaction\" field\n model.addAttribute('@@index', [\n new PrismaAttributeArg(\n undefined,\n new PrismaAttributeArgValue('Array', [\n new PrismaAttributeArgValue('FieldReference', TRANSACTION_FIELD_NAME),\n ])\n ),\n ]);\n }\n\n for (const attr of decl.attributes.filter((attr) => attr.decl.ref && this.isPrismaAttribute(attr.decl.ref))) {\n this.generateModelAttribute(model, attr);\n }\n\n decl.attributes\n .filter((attr) => attr.decl.ref && !this.isPrismaAttribute(attr.decl.ref))\n .forEach((attr) => model.addComment('/// ' + this.zModelGenerator.generateAttribute(attr)));\n\n // user defined comments pass-through\n decl.comments.forEach((c) => model.addComment(c));\n }\n\n private isPrismaAttribute(attr: Attribute) {\n return !!attr.attributes.find((a) => a.decl.ref?.name === '@@@prisma');\n }\n\n private generateModelField(model: PrismaDataModel, field: DataModelField) {\n const fieldType = field.type.type || field.type.reference?.ref?.name;\n if (!fieldType) {\n throw new PluginError(`Field type is not resolved: ${field.$container.name}.${field.name}`);\n }\n\n const type = new ModelFieldType(fieldType, field.type.array, field.type.optional);\n\n const attributes = field.attributes\n .filter((attr) => attr.decl.ref && this.isPrismaAttribute(attr.decl.ref))\n .map((attr) => this.makeFieldAttribute(attr));\n\n const nonPrismaAttributes = field.attributes.filter(\n (attr) => !attr.decl.ref || !this.isPrismaAttribute(attr.decl.ref)\n );\n\n const documentations = nonPrismaAttributes.map((attr) => '/// ' + this.zModelGenerator.generateAttribute(attr));\n\n const result = model.addField(field.name, type, attributes, documentations);\n\n // user defined comments pass-through\n field.comments.forEach((c) => result.addComment(c));\n }\n\n private makeFieldAttribute(attr: DataModelFieldAttribute) {\n return new PrismaFieldAttribute(\n resolved(attr.decl).name,\n attr.args.map((arg) => this.makeAttributeArg(arg))\n );\n }\n\n private makeAttributeArg(arg: AttributeArg): PrismaAttributeArg {\n return new PrismaAttributeArg(arg.name, this.makeAttributeArgValue(arg.value));\n }\n\n private makeAttributeArgValue(node: Expression): PrismaAttributeArgValue {\n if (isLiteralExpr(node)) {\n switch (typeof node.value) {\n case 'string':\n return new PrismaAttributeArgValue('String', node.value);\n case 'number':\n return new PrismaAttributeArgValue('Number', node.value);\n case 'boolean':\n return new PrismaAttributeArgValue('Boolean', node.value);\n default:\n throw new PluginError(`Unexpected literal type: ${typeof node.value}`);\n }\n } else if (isArrayExpr(node)) {\n return new PrismaAttributeArgValue(\n 'Array',\n new Array(...node.items.map((item) => this.makeAttributeArgValue(item)))\n );\n } else if (isReferenceExpr(node)) {\n return new PrismaAttributeArgValue(\n 'FieldReference',\n new PrismaFieldReference(\n resolved(node.target).name,\n node.args.map((arg) => new PrismaFieldReferenceArg(arg.name, arg.value))\n )\n );\n } else if (isInvocationExpr(node)) {\n // invocation\n return new PrismaAttributeArgValue('FunctionCall', this.makeFunctionCall(node));\n } else {\n throw new PluginError(`Unsupported attribute argument expression type: ${node.$type}`);\n }\n }\n\n makeFunctionCall(node: InvocationExpr): PrismaFunctionCall {\n return new PrismaFunctionCall(\n resolved(node.function).name,\n node.args.map((arg) => {\n if (!isLiteralExpr(arg.value)) {\n throw new PluginError('Function call argument must be literal');\n }\n return new PrismaFunctionCallArg(arg.name, arg.value.value);\n })\n );\n }\n\n private generateModelAttribute(model: PrismaDataModel, attr: DataModelAttribute) {\n model.attributes.push(\n new PrismaModelAttribute(\n resolved(attr.decl).name,\n attr.args.map((arg) => this.makeAttributeArg(arg))\n )\n );\n }\n\n private generateEnum(prisma: PrismaModel, decl: Enum) {\n prisma.addEnum(\n decl.name,\n decl.fields.map((f) => f.name)\n );\n }\n\n private isStringLiteral(node: AstNode): node is LiteralExpr {\n return isLiteralExpr(node) && typeof node.value === 'string';\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../../src/plugins/prisma/schema-generator.ts"],"names":[],"mappings":"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"}
|