zenstack 1.0.0-beta.2 → 1.0.0-beta.21
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 +16 -8
- package/cli/cli-util.js +1 -1
- package/cli/cli-util.js.map +1 -1
- package/cli/config.d.ts +1 -10
- package/cli/config.js +2 -7
- package/cli/config.js.map +1 -1
- package/cli/plugin-runner.d.ts +2 -1
- package/cli/plugin-runner.js +101 -47
- package/cli/plugin-runner.js.map +1 -1
- package/language-server/constants.d.ts +0 -4
- package/language-server/constants.js +1 -14
- package/language-server/constants.js.map +1 -1
- package/language-server/utils.d.ts +1 -10
- package/language-server/utils.js +1 -20
- package/language-server/utils.js.map +1 -1
- package/language-server/validator/attribute-application-validator.d.ts +15 -0
- package/language-server/validator/attribute-application-validator.js +246 -0
- package/language-server/validator/attribute-application-validator.js.map +1 -0
- package/language-server/validator/attribute-validator.d.ts +1 -1
- package/language-server/validator/attribute-validator.js +4 -1
- package/language-server/validator/attribute-validator.js.map +1 -1
- package/language-server/validator/datamodel-validator.js +13 -9
- package/language-server/validator/datamodel-validator.js.map +1 -1
- package/language-server/validator/enum-validator.js +3 -6
- package/language-server/validator/enum-validator.js.map +1 -1
- package/language-server/validator/expression-validator.js +70 -1
- package/language-server/validator/expression-validator.js.map +1 -1
- package/language-server/validator/function-decl-validator.d.ts +9 -0
- package/language-server/validator/function-decl-validator.js +13 -0
- package/language-server/validator/function-decl-validator.js.map +1 -0
- package/language-server/validator/function-invocation-validator.js +34 -9
- package/language-server/validator/function-invocation-validator.js.map +1 -1
- package/language-server/validator/utils.d.ts +2 -3
- package/language-server/validator/utils.js +3 -119
- package/language-server/validator/utils.js.map +1 -1
- package/language-server/validator/zmodel-validator.d.ts +2 -1
- package/language-server/validator/zmodel-validator.js +8 -3
- package/language-server/validator/zmodel-validator.js.map +1 -1
- package/language-server/zmodel-linker.d.ts +1 -0
- package/language-server/zmodel-linker.js +76 -26
- package/language-server/zmodel-linker.js.map +1 -1
- package/package.json +9 -16
- package/plugins/access-policy/expression-writer.d.ts +5 -0
- package/plugins/access-policy/expression-writer.js +154 -74
- package/plugins/access-policy/expression-writer.js.map +1 -1
- package/plugins/access-policy/policy-guard-generator.d.ts +8 -1
- package/plugins/access-policy/policy-guard-generator.js +296 -75
- package/plugins/access-policy/policy-guard-generator.js.map +1 -1
- package/plugins/model-meta/index.js +69 -5
- package/plugins/model-meta/index.js.map +1 -1
- package/plugins/plugin-utils.d.ts +4 -0
- package/plugins/plugin-utils.js +16 -1
- package/plugins/plugin-utils.js.map +1 -1
- package/plugins/prisma/prisma-builder.d.ts +3 -1
- package/plugins/prisma/prisma-builder.js +17 -16
- package/plugins/prisma/prisma-builder.js.map +1 -1
- package/plugins/prisma/schema-generator.d.ts +1 -3
- package/plugins/prisma/schema-generator.js +61 -84
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/prisma/zmodel-code-generator.js +4 -2
- package/plugins/prisma/zmodel-code-generator.js.map +1 -1
- package/plugins/zod/generator.js +148 -19
- package/plugins/zod/generator.js.map +1 -1
- package/plugins/zod/index.d.ts +1 -1
- package/plugins/zod/transformer.d.ts +6 -5
- package/plugins/zod/transformer.js +172 -108
- package/plugins/zod/transformer.js.map +1 -1
- package/plugins/zod/types.d.ts +4 -1
- package/plugins/zod/utils/schema-gen.d.ts +3 -0
- package/plugins/zod/utils/schema-gen.js +188 -0
- package/plugins/zod/utils/schema-gen.js.map +1 -0
- package/res/stdlib.zmodel +121 -32
- package/telemetry.d.ts +1 -0
- package/telemetry.js +3 -1
- package/telemetry.js.map +1 -1
- package/utils/ast-utils.d.ts +1 -14
- package/utils/ast-utils.js +2 -72
- package/utils/ast-utils.js.map +1 -1
- package/utils/pkg-utils.js +1 -1
- package/utils/pkg-utils.js.map +1 -1
- package/utils/typescript-expression-transformer.d.ts +53 -0
- package/utils/typescript-expression-transformer.js +312 -0
- package/utils/typescript-expression-transformer.js.map +1 -0
- package/utils/version-utils.js +7 -2
- package/utils/version-utils.js.map +1 -1
- package/plugins/access-policy/typescript-expression-transformer.d.ts +0 -28
- package/plugins/access-policy/typescript-expression-transformer.js +0 -180
- package/plugins/access-policy/typescript-expression-transformer.js.map +0 -1
- package/plugins/access-policy/utils.d.ts +0 -5
- package/plugins/access-policy/utils.js +0 -14
- package/plugins/access-policy/utils.js.map +0 -1
- package/plugins/access-policy/zod-schema-generator.d.ts +0 -12
- package/plugins/access-policy/zod-schema-generator.js +0 -160
- package/plugins/access-policy/zod-schema-generator.js.map +0 -1
|
@@ -57,6 +57,7 @@ function generateModelMetadata(dataModels, writer) {
|
|
|
57
57
|
var _a;
|
|
58
58
|
for (const f of model.fields) {
|
|
59
59
|
const backlink = getBackLink(f);
|
|
60
|
+
const fkMapping = generateForeignKeyMapping(f);
|
|
60
61
|
writer.write(`${f.name}: {
|
|
61
62
|
name: "${f.name}",
|
|
62
63
|
type: "${f.type.reference
|
|
@@ -69,7 +70,8 @@ function generateModelMetadata(dataModels, writer) {
|
|
|
69
70
|
isOptional: ${f.type.optional},
|
|
70
71
|
attributes: ${JSON.stringify(getFieldAttributes(f))},
|
|
71
72
|
backLink: ${backlink ? "'" + backlink.name + "'" : 'undefined'},
|
|
72
|
-
isRelationOwner: ${isRelationOwner(f)},
|
|
73
|
+
isRelationOwner: ${isRelationOwner(f, backlink)},
|
|
74
|
+
foreignKeyMapping: ${fkMapping ? JSON.stringify(fkMapping) : 'undefined'}
|
|
73
75
|
},`);
|
|
74
76
|
}
|
|
75
77
|
});
|
|
@@ -129,11 +131,23 @@ function getFieldAttributes(field) {
|
|
|
129
131
|
.map((attr) => {
|
|
130
132
|
const args = [];
|
|
131
133
|
for (const arg of attr.args) {
|
|
132
|
-
if (
|
|
134
|
+
if ((0, ast_1.isNumberLiteral)(arg.value)) {
|
|
135
|
+
let v = parseInt(arg.value.value);
|
|
136
|
+
if (isNaN(v)) {
|
|
137
|
+
v = parseFloat(arg.value.value);
|
|
138
|
+
}
|
|
139
|
+
if (isNaN(v)) {
|
|
140
|
+
throw new Error(`Invalid number literal: ${arg.value.value}`);
|
|
141
|
+
}
|
|
142
|
+
args.push({ name: arg.name, value: v });
|
|
143
|
+
}
|
|
144
|
+
else if ((0, ast_1.isStringLiteral)(arg.value) || (0, ast_1.isBooleanLiteral)(arg.value)) {
|
|
145
|
+
args.push({ name: arg.name, value: arg.value.value });
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
133
148
|
// attributes with non-literal args are skipped
|
|
134
149
|
return undefined;
|
|
135
150
|
}
|
|
136
|
-
args.push({ name: arg.name, value: arg.value.value });
|
|
137
151
|
}
|
|
138
152
|
return { name: (0, sdk_1.resolved)(attr.decl).name, args };
|
|
139
153
|
})
|
|
@@ -141,6 +155,7 @@ function getFieldAttributes(field) {
|
|
|
141
155
|
}
|
|
142
156
|
function getUniqueConstraints(model) {
|
|
143
157
|
const constraints = [];
|
|
158
|
+
// model-level constraints
|
|
144
159
|
for (const attr of model.attributes.filter((attr) => { var _a, _b; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@unique' || ((_b = attr.decl.ref) === null || _b === void 0 ? void 0 : _b.name) === '@@id'; })) {
|
|
145
160
|
const argsMap = (0, sdk_1.getAttributeArgs)(attr);
|
|
146
161
|
if (argsMap.fields) {
|
|
@@ -153,9 +168,58 @@ function getUniqueConstraints(model) {
|
|
|
153
168
|
constraints.push({ name: constraintName, fields: fieldNames });
|
|
154
169
|
}
|
|
155
170
|
}
|
|
171
|
+
// field-level constraints
|
|
172
|
+
for (const field of model.fields) {
|
|
173
|
+
if ((0, sdk_1.hasAttribute)(field, '@id') || (0, sdk_1.hasAttribute)(field, '@unique')) {
|
|
174
|
+
constraints.push({ name: field.name, fields: [field.name] });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
156
177
|
return constraints;
|
|
157
178
|
}
|
|
158
|
-
function isRelationOwner(field) {
|
|
159
|
-
|
|
179
|
+
function isRelationOwner(field, backLink) {
|
|
180
|
+
var _a;
|
|
181
|
+
if (!(0, ast_1.isDataModel)((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref)) {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
if (!backLink) {
|
|
185
|
+
// CHECKME: can this really happen?
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
if (!(0, sdk_1.hasAttribute)(field, '@relation') && !(0, sdk_1.hasAttribute)(backLink, '@relation')) {
|
|
189
|
+
// if neither side has `@relation` attribute, it's an implicit many-to-many relation,
|
|
190
|
+
// both sides are owners
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
return holdsForeignKey(field);
|
|
194
|
+
}
|
|
195
|
+
function holdsForeignKey(field) {
|
|
196
|
+
const relation = field.attributes.find((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@relation'; });
|
|
197
|
+
if (!relation) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
const fields = (0, sdk_1.getAttributeArg)(relation, 'fields');
|
|
201
|
+
return !!fields;
|
|
202
|
+
}
|
|
203
|
+
function generateForeignKeyMapping(field) {
|
|
204
|
+
const relation = field.attributes.find((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@relation'; });
|
|
205
|
+
if (!relation) {
|
|
206
|
+
return undefined;
|
|
207
|
+
}
|
|
208
|
+
const fields = (0, sdk_1.getAttributeArg)(relation, 'fields');
|
|
209
|
+
const references = (0, sdk_1.getAttributeArg)(relation, 'references');
|
|
210
|
+
if (!(0, ast_1.isArrayExpr)(fields) || !(0, ast_1.isArrayExpr)(references) || fields.items.length !== references.items.length) {
|
|
211
|
+
return undefined;
|
|
212
|
+
}
|
|
213
|
+
const fieldNames = fields.items.map((item) => ((0, ast_1.isReferenceExpr)(item) ? item.target.$refText : undefined));
|
|
214
|
+
const referenceNames = references.items.map((item) => ((0, ast_1.isReferenceExpr)(item) ? item.target.$refText : undefined));
|
|
215
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
216
|
+
const result = {};
|
|
217
|
+
referenceNames.forEach((name, i) => {
|
|
218
|
+
if (name) {
|
|
219
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
220
|
+
result[name] = fieldNames[i];
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
return result;
|
|
160
224
|
}
|
|
161
225
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/model-meta/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/model-meta/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,10 @@ export declare const ALL_OPERATION_KINDS: PolicyOperationKind[];
|
|
|
4
4
|
* Gets the nearest "node_modules" folder by walking up from start path.
|
|
5
5
|
*/
|
|
6
6
|
export declare function getNodeModulesFolder(startPath?: string): string | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Ensure the default output folder is initialized.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ensureDefaultOutputFolder(): void;
|
|
7
11
|
/**
|
|
8
12
|
* Gets the default node_modules/.zenstack output folder for plugins.
|
|
9
13
|
* @returns
|
package/plugins/plugin-utils.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getDefaultOutputFolder = exports.getNodeModulesFolder = exports.ALL_OPERATION_KINDS = void 0;
|
|
6
|
+
exports.getDefaultOutputFolder = exports.ensureDefaultOutputFolder = exports.getNodeModulesFolder = exports.ALL_OPERATION_KINDS = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
exports.ALL_OPERATION_KINDS = ['create', 'update', 'postUpdate', 'read', 'delete'];
|
|
@@ -27,6 +27,17 @@ function getNodeModulesFolder(startPath) {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
exports.getNodeModulesFolder = getNodeModulesFolder;
|
|
30
|
+
/**
|
|
31
|
+
* Ensure the default output folder is initialized.
|
|
32
|
+
*/
|
|
33
|
+
function ensureDefaultOutputFolder() {
|
|
34
|
+
const output = getDefaultOutputFolder();
|
|
35
|
+
if (output && !fs_1.default.existsSync(output)) {
|
|
36
|
+
fs_1.default.mkdirSync(output, { recursive: true });
|
|
37
|
+
fs_1.default.writeFileSync(path_1.default.join(output, 'package.json'), JSON.stringify({ name: '.zenstack', version: '1.0.0' }));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.ensureDefaultOutputFolder = ensureDefaultOutputFolder;
|
|
30
41
|
/**
|
|
31
42
|
* Gets the default node_modules/.zenstack output folder for plugins.
|
|
32
43
|
* @returns
|
|
@@ -34,6 +45,10 @@ exports.getNodeModulesFolder = getNodeModulesFolder;
|
|
|
34
45
|
function getDefaultOutputFolder() {
|
|
35
46
|
// Find the real runtime module path, it might be a symlink in pnpm
|
|
36
47
|
let runtimeModulePath = require.resolve('@zenstackhq/runtime');
|
|
48
|
+
if (process.env.ZENSTACK_TEST === '1') {
|
|
49
|
+
// handling the case when running as tests, resolve relative to CWD
|
|
50
|
+
runtimeModulePath = path_1.default.resolve(path_1.default.join(process.cwd(), 'node_modules', '@zenstackhq', 'runtime'));
|
|
51
|
+
}
|
|
37
52
|
if (runtimeModulePath) {
|
|
38
53
|
// start with the parent folder of @zenstackhq, supposed to be a node_modules folder
|
|
39
54
|
while (!runtimeModulePath.endsWith('@zenstackhq') && runtimeModulePath !== '/') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-utils.js","sourceRoot":"","sources":["../../src/plugins/plugin-utils.ts"],"names":[],"mappings":";;;;;;AACA,4CAAoB;AACpB,gDAAwB;AAEX,QAAA,mBAAmB,GAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE/G;;GAEG;AACH,SAAgB,oBAAoB,CAAC,SAAkB;IACnD,SAAS,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,IAAI,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;QACpC,OAAO,SAAS,CAAC;KACpB;SAAM,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE;QAC5D,OAAO,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;KAC/C;SAAM,IAAI,SAAS,KAAK,GAAG,EAAE;QAC1B,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;KACvC;SAAM;QACH,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAZD,oDAYC;AAED;;;GAGG;AACH,SAAgB,sBAAsB;IAClC,mEAAmE;IACnE,IAAI,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-utils.js","sourceRoot":"","sources":["../../src/plugins/plugin-utils.ts"],"names":[],"mappings":";;;;;;AACA,4CAAoB;AACpB,gDAAwB;AAEX,QAAA,mBAAmB,GAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE/G;;GAEG;AACH,SAAgB,oBAAoB,CAAC,SAAkB;IACnD,SAAS,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,IAAI,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;QACpC,OAAO,SAAS,CAAC;KACpB;SAAM,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE;QAC5D,OAAO,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;KAC/C;SAAM,IAAI,SAAS,KAAK,GAAG,EAAE;QAC1B,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;KACvC;SAAM;QACH,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAZD,oDAYC;AAED;;GAEG;AACH,SAAgB,yBAAyB;IACrC,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,IAAI,MAAM,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAClC,YAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,YAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;KAChH;AACL,CAAC;AAND,8DAMC;AAED;;;GAGG;AACH,SAAgB,sBAAsB;IAClC,mEAAmE;IACnE,IAAI,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE/D,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,EAAE;QACnC,mEAAmE;QACnE,iBAAiB,GAAG,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;KACxG;IAED,IAAI,iBAAiB,EAAE;QACnB,oFAAoF;QACpF,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,iBAAiB,KAAK,GAAG,EAAE;YAC5E,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;SAC1D;QACD,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;KAC1D;IACD,MAAM,aAAa,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,OAAO,aAAa,CAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAlBD,wDAkBC"}
|
|
@@ -16,6 +16,7 @@ export declare class PrismaModel {
|
|
|
16
16
|
addDataSource(name: string, provider: string, url: DataSourceUrl, directUrl?: DataSourceUrl, shadowDatabaseUrl?: DataSourceUrl, restFields?: SimpleField[]): DataSource;
|
|
17
17
|
addGenerator(name: string, fields: SimpleField[]): Generator;
|
|
18
18
|
addModel(name: string): Model;
|
|
19
|
+
addView(name: string): Model;
|
|
19
20
|
addEnum(name: string): Enum;
|
|
20
21
|
toString(): string;
|
|
21
22
|
}
|
|
@@ -57,8 +58,9 @@ export declare class FieldDeclaration extends DeclarationBase {
|
|
|
57
58
|
}
|
|
58
59
|
export declare class Model extends ContainerDeclaration {
|
|
59
60
|
name: string;
|
|
61
|
+
isView: boolean;
|
|
60
62
|
fields: ModelField[];
|
|
61
|
-
constructor(name: string, documentations?: string[]);
|
|
63
|
+
constructor(name: string, isView: boolean, documentations?: string[]);
|
|
62
64
|
addField(name: string, type: ModelFieldType | string, attributes?: (FieldAttribute | PassThroughAttribute)[], documentations?: string[]): ModelField;
|
|
63
65
|
addAttribute(name: string, args?: AttributeArg[]): ContainerAttribute;
|
|
64
66
|
toString(): string;
|
|
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.EnumField = exports.Enum = exports.FunctionCallArg = exports.FunctionCall = exports.FieldReferenceArg = exports.FieldReference = exports.AttributeArgValue = exports.AttributeArg = exports.PassThroughAttribute = exports.ContainerAttribute = exports.FieldAttribute = exports.ModelField = exports.ModelFieldType = exports.Model = exports.FieldDeclaration = exports.ContainerDeclaration = exports.DeclarationBase = exports.Generator = exports.DataSourceUrl = exports.DataSource = exports.PrismaModel = void 0;
|
|
7
|
-
const sdk_1 = require("@zenstackhq/sdk");
|
|
8
7
|
const indent_string_1 = __importDefault(require("./indent-string"));
|
|
9
8
|
/**
|
|
10
9
|
* Prisma schema builder
|
|
@@ -27,7 +26,12 @@ class PrismaModel {
|
|
|
27
26
|
return generator;
|
|
28
27
|
}
|
|
29
28
|
addModel(name) {
|
|
30
|
-
const model = new Model(name);
|
|
29
|
+
const model = new Model(name, false);
|
|
30
|
+
this.models.push(model);
|
|
31
|
+
return model;
|
|
32
|
+
}
|
|
33
|
+
addView(name) {
|
|
34
|
+
const model = new Model(name, true);
|
|
31
35
|
this.models.push(model);
|
|
32
36
|
return model;
|
|
33
37
|
}
|
|
@@ -116,9 +120,10 @@ class FieldDeclaration extends DeclarationBase {
|
|
|
116
120
|
}
|
|
117
121
|
exports.FieldDeclaration = FieldDeclaration;
|
|
118
122
|
class Model extends ContainerDeclaration {
|
|
119
|
-
constructor(name, documentations = []) {
|
|
123
|
+
constructor(name, isView, documentations = []) {
|
|
120
124
|
super(documentations);
|
|
121
125
|
this.name = name;
|
|
126
|
+
this.isView = isView;
|
|
122
127
|
this.fields = [];
|
|
123
128
|
}
|
|
124
129
|
addField(name, type, attributes = [], documentations = []) {
|
|
@@ -132,20 +137,15 @@ class Model extends ContainerDeclaration {
|
|
|
132
137
|
return attr;
|
|
133
138
|
}
|
|
134
139
|
toString() {
|
|
135
|
-
const auxiliaryFields = this.fields.filter((f) => sdk_1.AUXILIARY_FIELDS.includes(f.name));
|
|
136
140
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
137
|
-
const result = this.fields
|
|
138
|
-
if (
|
|
139
|
-
// Add a blank line before the
|
|
140
|
-
result.push(''
|
|
141
|
-
if (this.attributes.length > 0) {
|
|
142
|
-
// Add a blank line before the attributes
|
|
143
|
-
result.push('');
|
|
144
|
-
}
|
|
141
|
+
const result = [...this.fields];
|
|
142
|
+
if (this.attributes.length > 0) {
|
|
143
|
+
// Add a blank line before the attributes
|
|
144
|
+
result.push('');
|
|
145
145
|
}
|
|
146
146
|
result.push(...this.attributes);
|
|
147
147
|
return (super.toString() +
|
|
148
|
-
|
|
148
|
+
`${this.isView ? 'view' : 'model'} ${this.name} {\n` +
|
|
149
149
|
(0, indent_string_1.default)(result.map((d) => d.toString()).join('\n')) +
|
|
150
150
|
`\n}`);
|
|
151
151
|
}
|
|
@@ -232,8 +232,8 @@ class AttributeArgValue {
|
|
|
232
232
|
throw new Error('Value must be string');
|
|
233
233
|
break;
|
|
234
234
|
case 'Number':
|
|
235
|
-
if (typeof value !== 'number')
|
|
236
|
-
throw new Error('Value must be number');
|
|
235
|
+
if (typeof value !== 'number' && typeof value !== 'string')
|
|
236
|
+
throw new Error('Value must be number or string');
|
|
237
237
|
break;
|
|
238
238
|
case 'Boolean':
|
|
239
239
|
if (typeof value !== 'boolean')
|
|
@@ -256,7 +256,8 @@ class AttributeArgValue {
|
|
|
256
256
|
toString() {
|
|
257
257
|
switch (this.type) {
|
|
258
258
|
case 'String':
|
|
259
|
-
|
|
259
|
+
// use JSON.stringify to escape quotes
|
|
260
|
+
return JSON.stringify(this.value);
|
|
260
261
|
case 'Number':
|
|
261
262
|
return this.value.toString();
|
|
262
263
|
case 'FieldReference': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-builder.js","sourceRoot":"","sources":["../../../src/plugins/prisma/prisma-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prisma-builder.js","sourceRoot":"","sources":["../../../src/plugins/prisma/prisma-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,12 @@ import { FunctionCall as PrismaFunctionCall } from './prisma-builder';
|
|
|
7
7
|
export default class PrismaSchemaGenerator {
|
|
8
8
|
private zModelGenerator;
|
|
9
9
|
private readonly PRELUDE;
|
|
10
|
-
generate(model: Model, options: PluginOptions,
|
|
10
|
+
generate(model: Model, options: PluginOptions, _config?: Record<string, string>): Promise<string[]>;
|
|
11
11
|
private trackPrismaSchemaError;
|
|
12
12
|
private generateDataSource;
|
|
13
13
|
private extractDataSourceUrl;
|
|
14
14
|
private generateGenerator;
|
|
15
15
|
private generateModel;
|
|
16
|
-
private shouldGenerateAuxFields;
|
|
17
16
|
private isPrismaAttribute;
|
|
18
17
|
private getUnsupportedFieldType;
|
|
19
18
|
private generateModelField;
|
|
@@ -24,5 +23,4 @@ export default class PrismaSchemaGenerator {
|
|
|
24
23
|
private generateContainerAttribute;
|
|
25
24
|
private generateEnum;
|
|
26
25
|
private generateEnumField;
|
|
27
|
-
private isStringLiteral;
|
|
28
26
|
}
|
|
@@ -12,12 +12,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const internals_1 = require("@prisma/internals");
|
|
16
15
|
const ast_1 = require("@zenstackhq/language/ast");
|
|
16
|
+
const ts_pattern_1 = require("ts-pattern");
|
|
17
|
+
const runtime_1 = require("@zenstackhq/runtime");
|
|
17
18
|
const sdk_1 = require("@zenstackhq/sdk");
|
|
18
19
|
const fs_1 = __importDefault(require("fs"));
|
|
19
20
|
const promises_1 = require("fs/promises");
|
|
20
21
|
const path_1 = __importDefault(require("path"));
|
|
22
|
+
const semver_1 = __importDefault(require("semver"));
|
|
21
23
|
const strip_color_1 = __importDefault(require("strip-color"));
|
|
22
24
|
const _1 = require(".");
|
|
23
25
|
const utils_1 = require("../../language-server/validator/utils");
|
|
@@ -40,11 +42,15 @@ class PrismaSchemaGenerator {
|
|
|
40
42
|
|
|
41
43
|
`;
|
|
42
44
|
}
|
|
43
|
-
generate(model, options,
|
|
45
|
+
generate(model, options, _config) {
|
|
44
46
|
var _a;
|
|
45
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
const prisma = new prisma_builder_1.PrismaModel();
|
|
47
48
|
const warnings = [];
|
|
49
|
+
const prismaVersion = (0, sdk_1.getPrismaVersion)();
|
|
50
|
+
if (prismaVersion && semver_1.default.lt(prismaVersion, runtime_1.PRISMA_MINIMUM_VERSION)) {
|
|
51
|
+
warnings.push(`ZenStack requires Prisma version "${runtime_1.PRISMA_MINIMUM_VERSION}" or higher. Detected version is "${prismaVersion}".`);
|
|
52
|
+
}
|
|
53
|
+
const prisma = new prisma_builder_1.PrismaModel();
|
|
48
54
|
for (const decl of model.declarations) {
|
|
49
55
|
switch (decl.$type) {
|
|
50
56
|
case ast_1.DataSource:
|
|
@@ -54,7 +60,7 @@ class PrismaSchemaGenerator {
|
|
|
54
60
|
this.generateEnum(prisma, decl);
|
|
55
61
|
break;
|
|
56
62
|
case ast_1.DataModel:
|
|
57
|
-
this.generateModel(prisma, decl
|
|
63
|
+
this.generateModel(prisma, decl);
|
|
58
64
|
break;
|
|
59
65
|
case ast_1.GeneratorDecl:
|
|
60
66
|
this.generateGenerator(prisma, decl);
|
|
@@ -80,10 +86,17 @@ class PrismaSchemaGenerator {
|
|
|
80
86
|
if (generateClient) {
|
|
81
87
|
try {
|
|
82
88
|
// run 'prisma generate'
|
|
83
|
-
yield (0, exec_utils_1.execSync)(`npx prisma generate --schema ${outFile}
|
|
89
|
+
yield (0, exec_utils_1.execSync)(`npx prisma generate --schema ${outFile}`, 'ignore');
|
|
84
90
|
}
|
|
85
91
|
catch (_c) {
|
|
86
92
|
yield this.trackPrismaSchemaError(outFile);
|
|
93
|
+
try {
|
|
94
|
+
// run 'prisma generate' again with output to the console
|
|
95
|
+
yield (0, exec_utils_1.execSync)(`npx prisma generate --schema ${outFile}`);
|
|
96
|
+
}
|
|
97
|
+
catch (_d) {
|
|
98
|
+
// noop
|
|
99
|
+
}
|
|
87
100
|
throw new sdk_1.PluginError(_1.name, `Failed to run "prisma generate"`);
|
|
88
101
|
}
|
|
89
102
|
}
|
|
@@ -93,7 +106,7 @@ class PrismaSchemaGenerator {
|
|
|
93
106
|
trackPrismaSchemaError(schema) {
|
|
94
107
|
return __awaiter(this, void 0, void 0, function* () {
|
|
95
108
|
try {
|
|
96
|
-
yield (0,
|
|
109
|
+
yield (0, sdk_1.getDMMF)({ datamodel: fs_1.default.readFileSync(schema, 'utf-8') });
|
|
97
110
|
}
|
|
98
111
|
catch (err) {
|
|
99
112
|
if (err instanceof Error) {
|
|
@@ -112,7 +125,7 @@ class PrismaSchemaGenerator {
|
|
|
112
125
|
for (const f of dataSource.fields) {
|
|
113
126
|
switch (f.name) {
|
|
114
127
|
case 'provider': {
|
|
115
|
-
if (
|
|
128
|
+
if ((0, ast_1.isStringLiteral)(f.value)) {
|
|
116
129
|
provider = f.value.value;
|
|
117
130
|
}
|
|
118
131
|
else {
|
|
@@ -167,13 +180,13 @@ class PrismaSchemaGenerator {
|
|
|
167
180
|
}
|
|
168
181
|
extractDataSourceUrl(fieldValue) {
|
|
169
182
|
var _a;
|
|
170
|
-
if (
|
|
183
|
+
if ((0, ast_1.isStringLiteral)(fieldValue)) {
|
|
171
184
|
return new prisma_builder_1.DataSourceUrl(fieldValue.value, false);
|
|
172
185
|
}
|
|
173
186
|
else if ((0, ast_1.isInvocationExpr)(fieldValue) &&
|
|
174
187
|
((_a = fieldValue.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'env' &&
|
|
175
188
|
fieldValue.args.length === 1 &&
|
|
176
|
-
|
|
189
|
+
(0, ast_1.isStringLiteral)(fieldValue.args[0].value)) {
|
|
177
190
|
return new prisma_builder_1.DataSourceUrl(fieldValue.args[0].value.value, true);
|
|
178
191
|
}
|
|
179
192
|
else {
|
|
@@ -181,45 +194,46 @@ class PrismaSchemaGenerator {
|
|
|
181
194
|
}
|
|
182
195
|
}
|
|
183
196
|
generateGenerator(prisma, decl) {
|
|
184
|
-
|
|
197
|
+
var _a, _b;
|
|
198
|
+
const generator = prisma.addGenerator(decl.name, decl.fields.map((f) => {
|
|
185
199
|
const value = (0, ast_1.isArrayExpr)(f.value) ? (0, sdk_1.getLiteralArray)(f.value) : (0, sdk_1.getLiteral)(f.value);
|
|
186
200
|
return { name: f.name, value };
|
|
187
201
|
}));
|
|
202
|
+
// deal with configuring PrismaClient preview features
|
|
203
|
+
const provider = generator.fields.find((f) => f.name === 'provider');
|
|
204
|
+
if ((provider === null || provider === void 0 ? void 0 : provider.value) === 'prisma-client-js') {
|
|
205
|
+
const prismaVersion = (0, sdk_1.getPrismaVersion)();
|
|
206
|
+
if (prismaVersion) {
|
|
207
|
+
const previewFeatures = (_b = (_a = generator.fields.find((f) => f.name === 'previewFeatures')) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : [];
|
|
208
|
+
if (!Array.isArray(previewFeatures)) {
|
|
209
|
+
throw new sdk_1.PluginError(_1.name, 'option "previewFeatures" must be an array');
|
|
210
|
+
}
|
|
211
|
+
if (semver_1.default.lt(prismaVersion, '5.0.0')) {
|
|
212
|
+
// extendedWhereUnique feature is opt-in pre V5
|
|
213
|
+
if (!previewFeatures.includes('extendedWhereUnique')) {
|
|
214
|
+
previewFeatures.push('extendedWhereUnique');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (semver_1.default.lt(prismaVersion, '5.0.0')) {
|
|
218
|
+
// fieldReference feature is opt-in pre V5
|
|
219
|
+
if (!previewFeatures.includes('fieldReference')) {
|
|
220
|
+
previewFeatures.push('fieldReference');
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (previewFeatures.length > 0) {
|
|
224
|
+
const curr = generator.fields.find((f) => f.name === 'previewFeatures');
|
|
225
|
+
if (!curr) {
|
|
226
|
+
generator.fields.push({ name: 'previewFeatures', value: previewFeatures });
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
188
231
|
}
|
|
189
|
-
generateModel(prisma, decl
|
|
190
|
-
const model = prisma.addModel(decl.name);
|
|
232
|
+
generateModel(prisma, decl) {
|
|
233
|
+
const model = decl.isView ? prisma.addView(decl.name) : prisma.addModel(decl.name);
|
|
191
234
|
for (const field of decl.fields) {
|
|
192
235
|
this.generateModelField(model, field);
|
|
193
236
|
}
|
|
194
|
-
if (this.shouldGenerateAuxFields(decl)) {
|
|
195
|
-
// generate auxiliary fields for policy check
|
|
196
|
-
// add an "zenstack_guard" field for dealing with boolean conditions
|
|
197
|
-
const guardField = model.addField(sdk_1.GUARD_FIELD_NAME, 'Boolean', [
|
|
198
|
-
new prisma_builder_1.FieldAttribute('@default', [
|
|
199
|
-
new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('Boolean', true)),
|
|
200
|
-
]),
|
|
201
|
-
]);
|
|
202
|
-
if ((config === null || config === void 0 ? void 0 : config.guardFieldName) && (config === null || config === void 0 ? void 0 : config.guardFieldName) !== sdk_1.GUARD_FIELD_NAME) {
|
|
203
|
-
// generate a @map to rename field in the database
|
|
204
|
-
guardField.addAttribute('@map', [
|
|
205
|
-
new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('String', config.guardFieldName)),
|
|
206
|
-
]);
|
|
207
|
-
}
|
|
208
|
-
// add an "zenstack_transaction" field for tracking records created/updated with nested writes
|
|
209
|
-
const transactionField = model.addField(sdk_1.TRANSACTION_FIELD_NAME, 'String?');
|
|
210
|
-
// create an index for "zenstack_transaction" field
|
|
211
|
-
model.addAttribute('@@index', [
|
|
212
|
-
new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('Array', [
|
|
213
|
-
new prisma_builder_1.AttributeArgValue('FieldReference', sdk_1.TRANSACTION_FIELD_NAME),
|
|
214
|
-
])),
|
|
215
|
-
]);
|
|
216
|
-
if ((config === null || config === void 0 ? void 0 : config.transactionFieldName) && (config === null || config === void 0 ? void 0 : config.transactionFieldName) !== sdk_1.TRANSACTION_FIELD_NAME) {
|
|
217
|
-
// generate a @map to rename field in the database
|
|
218
|
-
transactionField.addAttribute('@map', [
|
|
219
|
-
new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('String', config.transactionFieldName)),
|
|
220
|
-
]);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
237
|
for (const attr of decl.attributes.filter((attr) => this.isPrismaAttribute(attr))) {
|
|
224
238
|
this.generateContainerAttribute(model, attr);
|
|
225
239
|
}
|
|
@@ -229,36 +243,6 @@ class PrismaSchemaGenerator {
|
|
|
229
243
|
// user defined comments pass-through
|
|
230
244
|
decl.comments.forEach((c) => model.addComment(c));
|
|
231
245
|
}
|
|
232
|
-
shouldGenerateAuxFields(decl) {
|
|
233
|
-
var _a;
|
|
234
|
-
const { allowAll, denyAll, hasFieldValidation } = (0, sdk_1.analyzePolicies)(decl);
|
|
235
|
-
if (!allowAll && !denyAll) {
|
|
236
|
-
// has policy conditions
|
|
237
|
-
return true;
|
|
238
|
-
}
|
|
239
|
-
if (hasFieldValidation) {
|
|
240
|
-
return true;
|
|
241
|
-
}
|
|
242
|
-
// check if the model is related by other models, if so
|
|
243
|
-
// aux fields are needed for nested queries
|
|
244
|
-
const root = decl.$container;
|
|
245
|
-
for (const model of (0, sdk_1.getDataModels)(root)) {
|
|
246
|
-
if (model === decl) {
|
|
247
|
-
continue;
|
|
248
|
-
}
|
|
249
|
-
for (const field of model.fields) {
|
|
250
|
-
if (((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) === decl) {
|
|
251
|
-
// found a relation with policies
|
|
252
|
-
const otherPolicies = (0, sdk_1.analyzePolicies)(model);
|
|
253
|
-
if ((!otherPolicies.allowAll && !otherPolicies.denyAll) || otherPolicies.hasFieldValidation) {
|
|
254
|
-
// the relating side has policies
|
|
255
|
-
return true;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
return false;
|
|
261
|
-
}
|
|
262
246
|
isPrismaAttribute(attr) {
|
|
263
247
|
if (!attr.decl.ref) {
|
|
264
248
|
return false;
|
|
@@ -319,16 +303,12 @@ class PrismaSchemaGenerator {
|
|
|
319
303
|
}
|
|
320
304
|
makeAttributeArgValue(node) {
|
|
321
305
|
if ((0, ast_1.isLiteralExpr)(node)) {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
return new prisma_builder_1.AttributeArgValue('Boolean', node.value);
|
|
329
|
-
default:
|
|
330
|
-
throw new sdk_1.PluginError(_1.name, `Unexpected literal type: ${typeof node.value}`);
|
|
331
|
-
}
|
|
306
|
+
const argType = (0, ts_pattern_1.match)(node.$type)
|
|
307
|
+
.with(ast_1.StringLiteral, () => 'String')
|
|
308
|
+
.with(ast_1.NumberLiteral, () => 'Number')
|
|
309
|
+
.with(ast_1.BooleanLiteral, () => 'Boolean')
|
|
310
|
+
.exhaustive();
|
|
311
|
+
return new prisma_builder_1.AttributeArgValue(argType, node.value);
|
|
332
312
|
}
|
|
333
313
|
else if ((0, ast_1.isArrayExpr)(node)) {
|
|
334
314
|
return new prisma_builder_1.AttributeArgValue('Array', new Array(...node.items.map((item) => this.makeAttributeArgValue(item))));
|
|
@@ -386,9 +366,6 @@ class PrismaSchemaGenerator {
|
|
|
386
366
|
const documentations = nonPrismaAttributes.map((attr) => '/// ' + this.zModelGenerator.generateAttribute(attr));
|
|
387
367
|
_enum.addField(field.name, attributes, documentations);
|
|
388
368
|
}
|
|
389
|
-
isStringLiteral(node) {
|
|
390
|
-
return (0, ast_1.isLiteralExpr)(node) && typeof node.value === 'string';
|
|
391
|
-
}
|
|
392
369
|
}
|
|
393
370
|
exports.default = PrismaSchemaGenerator;
|
|
394
371
|
//# sourceMappingURL=schema-generator.js.map
|