zenstack 1.0.0-alpha.22 → 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 -186
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/prisma/zmodel-code-generator.d.ts +2 -1
- package/plugins/prisma/zmodel-code-generator.js +109 -105
- 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,174 +1,158 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.ZodSchemaGenerator = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
5
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
6
|
+
const change_case_1 = require("change-case");
|
|
7
|
+
const ast_utils_1 = require("../../utils/ast-utils");
|
|
11
8
|
/**
|
|
12
9
|
* Writes Zod schema for data models.
|
|
13
10
|
*/
|
|
14
11
|
class ZodSchemaGenerator {
|
|
15
|
-
|
|
16
|
-
writer.inlineBlock(() => {
|
|
17
|
-
models.forEach(model => {
|
|
18
|
-
const fields = model.fields.filter(field => {
|
|
19
|
-
var _field$type$reference;
|
|
20
|
-
return !_sdk.AUXILIARY_FIELDS.includes(field.name) &&
|
|
21
|
-
// scalar fields only
|
|
22
|
-
!(0, _ast.isDataModelField)((_field$type$reference = field.type.reference) === null || _field$type$reference === void 0 ? void 0 : _field$type$reference.ref) && this.hasValidationAttributes(field);
|
|
23
|
-
});
|
|
24
|
-
if (fields.length === 0) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
writer.write(`${(0, _changeCase.camelCase)(model.name)}: z.object(`);
|
|
12
|
+
generate(writer, models) {
|
|
28
13
|
writer.inlineBlock(() => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
14
|
+
models.forEach((model) => {
|
|
15
|
+
const fields = model.fields.filter((field) => {
|
|
16
|
+
var _a;
|
|
17
|
+
return !sdk_1.AUXILIARY_FIELDS.includes(field.name) &&
|
|
18
|
+
// scalar fields only
|
|
19
|
+
!(0, ast_1.isDataModelField)((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) &&
|
|
20
|
+
this.hasValidationAttributes(field);
|
|
21
|
+
});
|
|
22
|
+
if (fields.length === 0) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
writer.write(`${(0, change_case_1.camelCase)(model.name)}: z.object(`);
|
|
26
|
+
writer.inlineBlock(() => {
|
|
27
|
+
fields.forEach((field) => {
|
|
28
|
+
writer.writeLine(`${field.name}: ${this.makeFieldValidator(field)},`);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
writer.writeLine(').partial(),');
|
|
32
|
+
});
|
|
32
33
|
});
|
|
33
|
-
writer.writeLine(').partial(),');
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
hasValidationAttributes(field) {
|
|
38
|
-
return field.attributes.some(attr => _astUtils.VALIDATION_ATTRIBUTES.includes(attr.decl.$refText));
|
|
39
|
-
}
|
|
40
|
-
makeFieldValidator(field) {
|
|
41
|
-
let schema = this.makeZodSchema(field);
|
|
42
|
-
// translate field constraint attributes to zod schema
|
|
43
|
-
for (const attr of field.attributes) {
|
|
44
|
-
var _attr$decl$ref;
|
|
45
|
-
switch ((_attr$decl$ref = attr.decl.ref) === null || _attr$decl$ref === void 0 ? void 0 : _attr$decl$ref.name) {
|
|
46
|
-
case '@length':
|
|
47
|
-
{
|
|
48
|
-
const min = this.getAttrLiteralArg(attr, 'min');
|
|
49
|
-
if (min) {
|
|
50
|
-
schema += `.min(${min})`;
|
|
51
|
-
}
|
|
52
|
-
const max = this.getAttrLiteralArg(attr, 'max');
|
|
53
|
-
if (max) {
|
|
54
|
-
schema += `.max(${max})`;
|
|
55
|
-
}
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
case '@regex':
|
|
59
|
-
{
|
|
60
|
-
const expr = this.getAttrLiteralArg(attr, 'regex');
|
|
61
|
-
if (expr) {
|
|
62
|
-
schema += `.regex(/${expr}/)`;
|
|
63
|
-
}
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
case '@startsWith':
|
|
67
|
-
{
|
|
68
|
-
const text = this.getAttrLiteralArg(attr, 'text');
|
|
69
|
-
if (text) {
|
|
70
|
-
schema += `.startsWith(${JSON.stringify(text)})`;
|
|
71
|
-
}
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
case '@endsWith':
|
|
75
|
-
{
|
|
76
|
-
const text = this.getAttrLiteralArg(attr, 'text');
|
|
77
|
-
if (text) {
|
|
78
|
-
schema += `.endsWith(${JSON.stringify(text)})`;
|
|
79
|
-
}
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
case '@email':
|
|
83
|
-
{
|
|
84
|
-
schema += `.email()`;
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
case '@url':
|
|
88
|
-
{
|
|
89
|
-
schema += `.url()`;
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
case '@datetime':
|
|
93
|
-
{
|
|
94
|
-
schema += `.datetime({ offset: true })`;
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
case '@gt':
|
|
98
|
-
{
|
|
99
|
-
const value = this.getAttrLiteralArg(attr, 'value');
|
|
100
|
-
if (value !== undefined) {
|
|
101
|
-
schema += `.gt(${value})`;
|
|
102
|
-
}
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
case '@gte':
|
|
106
|
-
{
|
|
107
|
-
const value = this.getAttrLiteralArg(attr, 'value');
|
|
108
|
-
if (value !== undefined) {
|
|
109
|
-
schema += `.gte(${value})`;
|
|
110
|
-
}
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
case '@lt':
|
|
114
|
-
{
|
|
115
|
-
const value = this.getAttrLiteralArg(attr, 'value');
|
|
116
|
-
if (value !== undefined) {
|
|
117
|
-
schema += `.lt(${value})`;
|
|
118
|
-
}
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
case '@lte':
|
|
122
|
-
{
|
|
123
|
-
const value = this.getAttrLiteralArg(attr, 'value');
|
|
124
|
-
if (value !== undefined) {
|
|
125
|
-
schema += `.lte(${value})`;
|
|
126
|
-
}
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
34
|
}
|
|
131
|
-
|
|
132
|
-
|
|
35
|
+
hasValidationAttributes(field) {
|
|
36
|
+
return field.attributes.some((attr) => ast_utils_1.VALIDATION_ATTRIBUTES.includes(attr.decl.$refText));
|
|
37
|
+
}
|
|
38
|
+
makeFieldValidator(field) {
|
|
39
|
+
var _a;
|
|
40
|
+
let schema = this.makeZodSchema(field);
|
|
41
|
+
// translate field constraint attributes to zod schema
|
|
42
|
+
for (const attr of field.attributes) {
|
|
43
|
+
switch ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) {
|
|
44
|
+
case '@length': {
|
|
45
|
+
const min = this.getAttrLiteralArg(attr, 'min');
|
|
46
|
+
if (min) {
|
|
47
|
+
schema += `.min(${min})`;
|
|
48
|
+
}
|
|
49
|
+
const max = this.getAttrLiteralArg(attr, 'max');
|
|
50
|
+
if (max) {
|
|
51
|
+
schema += `.max(${max})`;
|
|
52
|
+
}
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case '@regex': {
|
|
56
|
+
const expr = this.getAttrLiteralArg(attr, 'regex');
|
|
57
|
+
if (expr) {
|
|
58
|
+
schema += `.regex(/${expr}/)`;
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
case '@startsWith': {
|
|
63
|
+
const text = this.getAttrLiteralArg(attr, 'text');
|
|
64
|
+
if (text) {
|
|
65
|
+
schema += `.startsWith(${JSON.stringify(text)})`;
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
case '@endsWith': {
|
|
70
|
+
const text = this.getAttrLiteralArg(attr, 'text');
|
|
71
|
+
if (text) {
|
|
72
|
+
schema += `.endsWith(${JSON.stringify(text)})`;
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case '@email': {
|
|
77
|
+
schema += `.email()`;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case '@url': {
|
|
81
|
+
schema += `.url()`;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case '@datetime': {
|
|
85
|
+
schema += `.datetime({ offset: true })`;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
case '@gt': {
|
|
89
|
+
const value = this.getAttrLiteralArg(attr, 'value');
|
|
90
|
+
if (value !== undefined) {
|
|
91
|
+
schema += `.gt(${value})`;
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case '@gte': {
|
|
96
|
+
const value = this.getAttrLiteralArg(attr, 'value');
|
|
97
|
+
if (value !== undefined) {
|
|
98
|
+
schema += `.gte(${value})`;
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
case '@lt': {
|
|
103
|
+
const value = this.getAttrLiteralArg(attr, 'value');
|
|
104
|
+
if (value !== undefined) {
|
|
105
|
+
schema += `.lt(${value})`;
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
case '@lte': {
|
|
110
|
+
const value = this.getAttrLiteralArg(attr, 'value');
|
|
111
|
+
if (value !== undefined) {
|
|
112
|
+
schema += `.lte(${value})`;
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (field.type.optional) {
|
|
119
|
+
schema += '.nullable()';
|
|
120
|
+
}
|
|
121
|
+
return schema;
|
|
133
122
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
123
|
+
makeZodSchema(field) {
|
|
124
|
+
let schema;
|
|
125
|
+
switch (field.type.type) {
|
|
126
|
+
case 'Int':
|
|
127
|
+
case 'Float':
|
|
128
|
+
case 'Decimal':
|
|
129
|
+
schema = 'z.number()';
|
|
130
|
+
break;
|
|
131
|
+
case 'BigInt':
|
|
132
|
+
schema = 'z.bigint()';
|
|
133
|
+
break;
|
|
134
|
+
case 'String':
|
|
135
|
+
schema = 'z.string()';
|
|
136
|
+
break;
|
|
137
|
+
case 'Boolean':
|
|
138
|
+
schema = 'z.boolean()';
|
|
139
|
+
break;
|
|
140
|
+
case 'DateTime':
|
|
141
|
+
schema = 'z.date()';
|
|
142
|
+
break;
|
|
143
|
+
default:
|
|
144
|
+
schema = 'z.any()';
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
if (field.type.array) {
|
|
148
|
+
schema = `z.array(${schema})`;
|
|
149
|
+
}
|
|
150
|
+
return schema;
|
|
159
151
|
}
|
|
160
|
-
|
|
161
|
-
|
|
152
|
+
getAttrLiteralArg(attr, paramName) {
|
|
153
|
+
const arg = attr.args.find((arg) => { var _a; return ((_a = arg.$resolvedParam) === null || _a === void 0 ? void 0 : _a.name) === paramName; });
|
|
154
|
+
return arg && (0, sdk_1.getLiteral)(arg.value);
|
|
162
155
|
}
|
|
163
|
-
return schema;
|
|
164
|
-
}
|
|
165
|
-
getAttrLiteralArg(attr, paramName) {
|
|
166
|
-
const arg = attr.args.find(arg => {
|
|
167
|
-
var _arg$$resolvedParam;
|
|
168
|
-
return ((_arg$$resolvedParam = arg.$resolvedParam) === null || _arg$$resolvedParam === void 0 ? void 0 : _arg$$resolvedParam.name) === paramName;
|
|
169
|
-
});
|
|
170
|
-
return arg && (0, _sdk.getLiteral)(arg.value);
|
|
171
|
-
}
|
|
172
156
|
}
|
|
173
157
|
exports.ZodSchemaGenerator = ZodSchemaGenerator;
|
|
174
158
|
//# sourceMappingURL=zod-schema-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-schema-generator.js","names":["ZodSchemaGenerator","generate","writer","models","inlineBlock","forEach","model","fields","filter","field","AUXILIARY_FIELDS","includes","name","isDataModelField","type","reference","ref","hasValidationAttributes","length","write","camelCase","writeLine","makeFieldValidator","attributes","some","attr","VALIDATION_ATTRIBUTES","decl","$refText","schema","makeZodSchema","min","getAttrLiteralArg","max","expr","text","JSON","stringify","value","undefined","optional","array","paramName","arg","args","find","$resolvedParam","getLiteral"],"sources":["../../../src/plugins/access-policy/zod-schema-generator.ts"],"sourcesContent":["import { DataModel, DataModelField, DataModelFieldAttribute, isDataModelField } from '@zenstackhq/language/ast';\nimport { AUXILIARY_FIELDS, getLiteral } from '@zenstackhq/sdk';\nimport { camelCase } from 'change-case';\nimport { CodeBlockWriter } from 'ts-morph';\nimport { VALIDATION_ATTRIBUTES } from '../../utils/ast-utils';\n\n/**\n * Writes Zod schema for data models.\n */\nexport class ZodSchemaGenerator {\n generate(writer: CodeBlockWriter, models: DataModel[]) {\n writer.inlineBlock(() => {\n models.forEach((model) => {\n const fields = model.fields.filter(\n (field) =>\n !AUXILIARY_FIELDS.includes(field.name) &&\n // scalar fields only\n !isDataModelField(field.type.reference?.ref) &&\n this.hasValidationAttributes(field)\n );\n\n if (fields.length === 0) {\n return;\n }\n\n writer.write(`${camelCase(model.name)}: z.object(`);\n writer.inlineBlock(() => {\n fields.forEach((field) => {\n writer.writeLine(`${field.name}: ${this.makeFieldValidator(field)},`);\n });\n });\n writer.writeLine(').partial(),');\n });\n });\n }\n\n private hasValidationAttributes(field: DataModelField) {\n return field.attributes.some((attr) => VALIDATION_ATTRIBUTES.includes(attr.decl.$refText));\n }\n\n private makeFieldValidator(field: DataModelField) {\n let schema = this.makeZodSchema(field);\n // translate field constraint attributes to zod schema\n for (const attr of field.attributes) {\n switch (attr.decl.ref?.name) {\n case '@length': {\n const min = this.getAttrLiteralArg<number>(attr, 'min');\n if (min) {\n schema += `.min(${min})`;\n }\n const max = this.getAttrLiteralArg<number>(attr, 'max');\n if (max) {\n schema += `.max(${max})`;\n }\n break;\n }\n case '@regex': {\n const expr = this.getAttrLiteralArg<string>(attr, 'regex');\n if (expr) {\n schema += `.regex(/${expr}/)`;\n }\n break;\n }\n case '@startsWith': {\n const text = this.getAttrLiteralArg<string>(attr, 'text');\n if (text) {\n schema += `.startsWith(${JSON.stringify(text)})`;\n }\n break;\n }\n case '@endsWith': {\n const text = this.getAttrLiteralArg<string>(attr, 'text');\n if (text) {\n schema += `.endsWith(${JSON.stringify(text)})`;\n }\n break;\n }\n case '@email': {\n schema += `.email()`;\n break;\n }\n case '@url': {\n schema += `.url()`;\n break;\n }\n case '@datetime': {\n schema += `.datetime({ offset: true })`;\n break;\n }\n case '@gt': {\n const value = this.getAttrLiteralArg<number>(attr, 'value');\n if (value !== undefined) {\n schema += `.gt(${value})`;\n }\n break;\n }\n case '@gte': {\n const value = this.getAttrLiteralArg<number>(attr, 'value');\n if (value !== undefined) {\n schema += `.gte(${value})`;\n }\n break;\n }\n case '@lt': {\n const value = this.getAttrLiteralArg<number>(attr, 'value');\n if (value !== undefined) {\n schema += `.lt(${value})`;\n }\n break;\n }\n case '@lte': {\n const value = this.getAttrLiteralArg<number>(attr, 'value');\n if (value !== undefined) {\n schema += `.lte(${value})`;\n }\n break;\n }\n }\n }\n\n if (field.type.optional) {\n schema += '.nullable()';\n }\n\n return schema;\n }\n\n private makeZodSchema(field: DataModelField) {\n let schema: string;\n switch (field.type.type) {\n case 'Int':\n case 'Float':\n case 'Decimal':\n schema = 'z.number()';\n break;\n case 'BigInt':\n schema = 'z.bigint()';\n break;\n case 'String':\n schema = 'z.string()';\n break;\n case 'Boolean':\n schema = 'z.boolean()';\n break;\n case 'DateTime':\n schema = 'z.date()';\n break;\n default:\n schema = 'z.any()';\n break;\n }\n\n if (field.type.array) {\n schema = `z.array(${schema})`;\n }\n\n return schema;\n }\n\n private getAttrLiteralArg<T extends string | number>(attr: DataModelFieldAttribute, paramName: string) {\n const arg = attr.args.find((arg) => arg.$resolvedParam?.name === paramName);\n return arg && getLiteral<T>(arg.value);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zod-schema-generator.js","sourceRoot":"","sources":["../../../src/plugins/access-policy/zod-schema-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,130 +1,125 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
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 });
|
|
7
15
|
exports.name = void 0;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
sf.addStatements('export default metadata;');
|
|
39
|
-
sf.formatText();
|
|
40
|
-
await project.save();
|
|
41
|
-
await project.emit();
|
|
16
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
17
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
18
|
+
const change_case_1 = require("change-case");
|
|
19
|
+
const path_1 = __importDefault(require("path"));
|
|
20
|
+
const ts_morph_1 = require("ts-morph");
|
|
21
|
+
const plugin_utils_1 = require("../plugin-utils");
|
|
22
|
+
exports.name = 'Model Metadata';
|
|
23
|
+
function run(model, options) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const output = options.output ? options.output : (0, plugin_utils_1.getDefaultOutputFolder)();
|
|
26
|
+
if (!output) {
|
|
27
|
+
console.error(`Unable to determine output path, not running plugin ${exports.name}`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const dataModels = model.declarations.filter((d) => (0, ast_1.isDataModel)(d));
|
|
31
|
+
const project = new ts_morph_1.Project();
|
|
32
|
+
if (!options.output) {
|
|
33
|
+
(0, plugin_utils_1.ensureNodeModuleFolder)(output);
|
|
34
|
+
}
|
|
35
|
+
const sf = project.createSourceFile(path_1.default.join(output, 'model-meta.ts'), undefined, { overwrite: true });
|
|
36
|
+
sf.addVariableStatement({
|
|
37
|
+
declarationKind: ts_morph_1.VariableDeclarationKind.Const,
|
|
38
|
+
declarations: [{ name: 'metadata', initializer: (writer) => generateModelMetadata(dataModels, writer) }],
|
|
39
|
+
});
|
|
40
|
+
sf.addStatements('export default metadata;');
|
|
41
|
+
sf.formatText();
|
|
42
|
+
yield project.save();
|
|
43
|
+
yield project.emit();
|
|
44
|
+
});
|
|
42
45
|
}
|
|
46
|
+
exports.default = run;
|
|
43
47
|
function generateModelMetadata(dataModels, writer) {
|
|
44
|
-
writer.block(() => {
|
|
45
|
-
writer.write('fields:');
|
|
46
48
|
writer.block(() => {
|
|
47
|
-
|
|
48
|
-
writer.write(`${(0, _changeCase.camelCase)(model.name)}:`);
|
|
49
|
+
writer.write('fields:');
|
|
49
50
|
writer.block(() => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
for (const model of dataModels) {
|
|
52
|
+
writer.write(`${(0, change_case_1.camelCase)(model.name)}:`);
|
|
53
|
+
writer.block(() => {
|
|
54
|
+
var _a;
|
|
55
|
+
for (const f of model.fields) {
|
|
56
|
+
const backlink = getBackLink(f);
|
|
57
|
+
writer.write(`${f.name}: {
|
|
54
58
|
name: "${f.name}",
|
|
55
|
-
type: "${f.type.reference
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
type: "${f.type.reference
|
|
60
|
+
? f.type.reference.$refText
|
|
61
|
+
: // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
62
|
+
f.type.type}",
|
|
58
63
|
isId: ${isIdField(f)},
|
|
59
|
-
isDataModel: ${(0,
|
|
64
|
+
isDataModel: ${(0, ast_1.isDataModel)((_a = f.type.reference) === null || _a === void 0 ? void 0 : _a.ref)},
|
|
60
65
|
isArray: ${f.type.array},
|
|
61
66
|
isOptional: ${f.type.optional},
|
|
62
67
|
attributes: ${JSON.stringify(getFieldAttributes(f))},
|
|
63
68
|
backLink: ${backlink ? "'" + backlink + "'" : 'undefined'}
|
|
64
69
|
},`);
|
|
65
|
-
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
writer.write(',');
|
|
73
|
+
}
|
|
66
74
|
});
|
|
67
75
|
writer.write(',');
|
|
68
|
-
}
|
|
69
76
|
});
|
|
70
|
-
writer.write(',');
|
|
71
|
-
});
|
|
72
77
|
}
|
|
73
78
|
function getBackLink(field) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
var _a, _b, _c;
|
|
80
|
+
if (!((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) || !(0, ast_1.isDataModel)((_b = field.type.reference) === null || _b === void 0 ? void 0 : _b.ref)) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
const relName = getRelationName(field);
|
|
84
|
+
const sourceModel = field.$container;
|
|
85
|
+
const targetModel = field.type.reference.ref;
|
|
86
|
+
for (const otherField of targetModel.fields) {
|
|
87
|
+
if (((_c = otherField.type.reference) === null || _c === void 0 ? void 0 : _c.ref) === sourceModel) {
|
|
88
|
+
if (relName) {
|
|
89
|
+
const otherRelName = getRelationName(otherField);
|
|
90
|
+
if (relName === otherRelName) {
|
|
91
|
+
return otherField.name;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return otherField.name;
|
|
96
|
+
}
|
|
88
97
|
}
|
|
89
|
-
} else {
|
|
90
|
-
return otherField.name;
|
|
91
|
-
}
|
|
92
98
|
}
|
|
93
|
-
|
|
94
|
-
return undefined;
|
|
99
|
+
return undefined;
|
|
95
100
|
}
|
|
96
101
|
function getRelationName(field) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
return
|
|
101
|
-
});
|
|
102
|
-
const relName = relAttr && ((_relAttr$args = relAttr.args) === null || _relAttr$args === void 0 ? void 0 : _relAttr$args[0]) && (0, _sdk.getLiteral)((_relAttr$args2 = relAttr.args) === null || _relAttr$args2 === void 0 ? void 0 : _relAttr$args2[0].value);
|
|
103
|
-
return relName;
|
|
102
|
+
var _a, _b;
|
|
103
|
+
const relAttr = field.attributes.find((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === 'relation'; });
|
|
104
|
+
const relName = relAttr && ((_a = relAttr.args) === null || _a === void 0 ? void 0 : _a[0]) && (0, sdk_1.getLiteral)((_b = relAttr.args) === null || _b === void 0 ? void 0 : _b[0].value);
|
|
105
|
+
return relName;
|
|
104
106
|
}
|
|
105
107
|
function getFieldAttributes(field) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
name: (0, _sdk.resolved)(attr.decl).name,
|
|
120
|
-
args
|
|
121
|
-
};
|
|
122
|
-
}).filter(d => !!d);
|
|
108
|
+
return field.attributes
|
|
109
|
+
.map((attr) => {
|
|
110
|
+
const args = [];
|
|
111
|
+
for (const arg of attr.args) {
|
|
112
|
+
if (!(0, ast_1.isLiteralExpr)(arg.value)) {
|
|
113
|
+
// attributes with non-literal args are skipped
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
args.push({ name: arg.name, value: arg.value.value });
|
|
117
|
+
}
|
|
118
|
+
return { name: (0, sdk_1.resolved)(attr.decl).name, args };
|
|
119
|
+
})
|
|
120
|
+
.filter((d) => !!d);
|
|
123
121
|
}
|
|
124
122
|
function isIdField(field) {
|
|
125
|
-
|
|
126
|
-
var _attr$decl$ref2;
|
|
127
|
-
return ((_attr$decl$ref2 = attr.decl.ref) === null || _attr$decl$ref2 === void 0 ? void 0 : _attr$decl$ref2.name) === '@id';
|
|
128
|
-
});
|
|
123
|
+
return field.attributes.some((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@id'; });
|
|
129
124
|
}
|
|
130
125
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/model-meta/index.ts"],"names":[],"mappings":"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"}
|